Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

crypto channel: TLS 1.3 #9

Closed
daviddias opened this issue Dec 17, 2015 · 8 comments
Closed

crypto channel: TLS 1.3 #9

daviddias opened this issue Dec 17, 2015 · 8 comments
Labels
exp/wizard Extensive knowledge (implications, ramifications) required help wanted Seeking public contribution on this issue kind/stale status/ready Ready to be worked

Comments

@daviddias
Copy link
Member

Transport Layer Security (TLS) is a protocol that ensures privacy between communicating applications and their users on the Internet. When a server and client communicate, TLS ensures that no third party may eavesdrop or tamper with any message. TLS is the successor to the Secure Sockets Layer (SSL).

Currently go-libp2p implements secio, an in house baked crypto channel library. However, IPFS will be moving to TLS eventually, which means that libp2p must offer it as a crypto channel upgrade to a connection.

Our current endeavour is to have a TLS library that is compatible and exposes an connection interface, so that we can upgrade any connection to another peer on demand. forge is a full JavaScript implementation of TLS made by the folks at Digital Bazaar.

@daviddias daviddias added the help wanted Seeking public contribution on this issue label Dec 17, 2015
@daviddias daviddias added the status/deferred Conscious decision to pause or backlog label Dec 5, 2016
@daviddias daviddias added the exp/wizard Extensive knowledge (implications, ramifications) required label Jul 9, 2017
@mkg20001
Copy link
Member

mkg20001 commented Nov 6, 2017

How does this look? https://github.com/mkg20001/libp2p-tls
I had to add some "magic" to make the peers determine which peer is going to be the tls-server/client randomly.
Currently it's using nodeJS native "tls" module which is openssl based.
Browser support using forge is planned

@dignifiedquire
Copy link
Member

@mkg20001 I that is probably TLS 1.2. I believe the goal of moving to TLS was only to do so with 1.3.

@mkg20001
Copy link
Member

mkg20001 commented Nov 6, 2017

@dignifiedquire ipfs/specs#29 (comment) . Here it says both will get implemented

@mkg20001
Copy link
Member

mkg20001 commented Nov 6, 2017

Btw, the "magic" thing is just a 7/8 bytes protocol buffers packet with a random integer (the peer which randomly chooses the highest number is determined to be the server)

@dignifiedquire
Copy link
Member

@mkg20001 thanks I didn't remember that and cool that you are implementing it :)

@daviddias daviddias added status/ready Ready to be worked and removed status/deferred Conscious decision to pause or backlog labels Feb 5, 2018
@daviddias daviddias changed the title crypto channel: tls crypto channel: TLS 1.3 Feb 5, 2018
@daviddias
Copy link
Member Author

@mafintosh I believe you mentioned you had an implementation of TLS 1.3, did I get that right?

@straiforos
Copy link

ipns://blog.ipfs.io/2020-08-07-deprecating-secio/

Just released more relevant info regarding TLS 1.3 support.

@p-shahi
Copy link
Member

p-shahi commented May 30, 2023

@p-shahi p-shahi closed this as completed May 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
exp/wizard Extensive knowledge (implications, ramifications) required help wanted Seeking public contribution on this issue kind/stale status/ready Ready to be worked
Projects
None yet
Development

No branches or pull requests

5 participants