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

Implement Noise Framework Handshakes for Mainnet #3687

Closed
rauljordan opened this issue Oct 2, 2019 · 1 comment
Closed

Implement Noise Framework Handshakes for Mainnet #3687

rauljordan opened this issue Oct 2, 2019 · 1 comment
Labels
Networking P2P related items Priority: Low Low priority item
Milestone

Comments

@rauljordan
Copy link
Contributor

This is a follow-up to #3147. The only item we are missing is to implement Noise Handshakes for the mainnet functionality of the beacon chain.

From the networking spec:

Mainnet

Noise Framework handshakes will be used for mainnet. libp2p Noise support is in the process of being standardized in the libp2p project.

Noise support will presumably include IX, IK, and XX handshake patterns, and may rely on Curve25519 keys, ChaCha20 and Poly1305 ciphers, and SHA-256 as a hash function. These aspects are being actively debated in the referenced issue (Eth 2.0 implementers are welcome to comment and contribute to the discussion).

Why are we using Noise/TLS 1.3 for mainnet?

Copied from the Noise Protocol Framework website:

Noise is a framework for building crypto protocols. Noise protocols support mutual and optional authentication, identity hiding, forward secrecy, zero round-trip encryption, and other advanced features.

Noise in itself does not specify a single handshake procedure, but provides a framework to build secure handshakes based on Diffie-Hellman key agreement with a variety of tradeoffs and guarantees.

Noise handshakes are lightweight and simple to understand, and are used in major cryptographic-centric projects like WireGuard, I2P, and Lightning. Various studies have assessed the stated security goals of several Noise handshakes with positive results.

On the other hand, TLS 1.3 is the newest, simplified iteration of TLS. Old, insecure, obsolete ciphers and algorithms have been removed, adopting Ed25519 as the sole ECDH key agreement function. Handshakes are faster, 1-RTT data is supported, and session resumption is a reality, amongst other features.

Note: TLS 1.3 is a prerequisite of the QUIC transport, although an experiment exists to integrate Noise as the QUIC crypto layer: nQUIC.

@rauljordan
Copy link
Contributor Author

#4991 this resolved this issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Networking P2P related items Priority: Low Low priority item
Projects
None yet
Development

No branches or pull requests

2 participants