
, %username%!
, TLS . , , SSH.
IoT, TLS . , , , HTTP. P2P
Noise Protocol Framework. , , . Trevor Perrin, Signal, Noise WhatsApp. , .
, , TLS , - . DEF CON 25, . .
NoiseSocket,
Noise Protocol Framework.
, Noise Framework Diffie-Hellman.
, .
, , , David Wong , .
HandshakeState .
SymmetricState DH DH. DH , ( , ), - .
SymmetricStat , ,
, .. .
CipherState AEAD + nonce (), .
Noise , ,
, Noise_XX, ,
:
Noise_XX(s, rs):
-> e
<- e, ee, s, es
-> s, se
Noise_XX
. .
(s, rs) , (
s) . , .
r remote.
. . . , , .
. , .
e s . , .
Noise . Perfect Forward Secrecy. TLS 1.3 - ciphersuites.
Diffie-Hellman . , , :
ee,
es,
se,
ss. , DH, .
ee, , , DH .
, XX , . . , (, XX) . , , 0-RTT .
handshake . , , , , 64 . Noise . , 2 , .
, DH, . , . , , nonce .
Noise Protocol , . DH, AEAD . e Noise .
DH: Curve25519, Curve448,
AEAD: AES-GCM, ChachaPoly1305,
Hash: Blake2, SHA2
, RSA . , , , , .
NoiseSocket
, . security , , . , . .
PoC Go - 2017 . Noise, . ,
Noise Mailing List , .
, Noise? :
- Negotiation data
- Padding
- Processing rules
Negotiation data
, . , . :
6 , Noise , .
Padding
, , . , . 2 , . , , .
Processing rules
, , , .
Why?
Virgil PKI , .
NGINX NoiseSocket, .
, , NoiseSocket? .
Go HTTP , DialTLS Listen , , TLS.
Go , .
, , , , TLS!
- , . Tor, i2p, bitcoin, , NoiseSocket .
SSH, VPN, openssl, Libsodium Nacl.
, , 30, 20 NoiseSocket. , , .
TLS 1.3, handshake roundtrips 8-9 , Noise, 25519.
- , , .
-, ed25519 , Noise 25519 .
, Noise, IK ( 0-RTT)
WireGuard VPN, .
NoiseSocket , - , TLS. .
Noise Socket:
http://noiseprotocol.org/specs/noisesocket.html
Github:
https://github.com/noisesocket/spec
Noise Protocol Framework:
http://noiseprotocol.org/noise.html
https://habrahabr.ru/post/334506/