
Implementação nativa em Go de DTLS 1.2 e 1.3 com troca de chaves ECDHE e PSK, cifras AEAD, IDs de conexão, retomada de sessão, 0-RTT e Encrypted Client Hello.
Implementação nativa de DTLS 1.2 e DTLS 1.3 na linguagem de programação Go.
Um objetivo de longo prazo é uma revisão de segurança profissional e, talvez, uma inclusão na stdlib.
O Pion DTLS oferece suporte a DTLS 1.2 e DTLS 1.3. Contribuições e correções de bugs são bem-vindas.
psk_ke e psk_dhe_ke, com suporte a SHA-256 e SHA-384ResumeWithECH (RFC 9849)Conn.AddPath, Path.Probe e Path.SwitchConn.UpdateKeysA biblioteca habilita DTLS 1.2 e DTLS 1.3 por padrão, preferindo DTLS 1.3.
Use WithMaxVersion(protocol.Version1_2) para restringir uma conexão a DTLS 1.2,
ou WithMinVersion(protocol.Version1_3) para exigir DTLS 1.3.
Para um servidor DTLS que escuta em 127.0.0.1:4444
go run examples/listen/selfsign/main.go
Para um cliente DTLS que se conecta a 127.0.0.1:4444
go run examples/dial/selfsign/main.go
O Pion DTLS pode se conectar a si mesmo e ao OpenSSL.
// Generate a certificate
openssl ecparam -out key.pem -name prime256v1 -genkey
openssl req -new -sha256 -key key.pem -out server.csr
openssl x509 -req -sha256 -days 365 -in server.csr -signkey key.pem -out cert.pem
// Use with examples/dial/selfsign/main.go
openssl s_server -dtls1_2 -cert cert.pem -key key.pem -accept 4444
// Use with examples/listen/selfsign/main.go
openssl s_client -dtls1_2 -connect 127.0.0.1:4444 -debug -cert cert.pem -key key.pem
O DTLS 1.3 suporta retomada de sessão por ticket com dados antecipados 0-RTT opcionais.
A retomada permite apenas psk_dhe_ke (PSK com ECDHE efêmero).
O exemplo de retomada demonstra uma primeira conexão autenticada por certificado, armazenamento de sessão criptografado e conexões subsequentes com retomada e dados antecipados opcionais. Consulte o README do exemplo para instruções de execução e o requisito de Claim de uso único do armazenamento de sessão para 0-RTT.
A API State/Resume também suporta a restauração de conexões DTLS 1.3 estabelecidas sem um novo handshake. Consulte Resume.
O DTLS 1.3 suporta PSKs externas com psk_ke (somente PSK) e psk_dhe_ke (PSK com ECDHE efêmero), usando SHA-256 ou SHA-384. Os clientes podem oferecer múltiplas identidades PSK por handshake para que o servidor selecione.
Os exemplos de PSK usam DTLS 1.3 por padrão, com TLS_AES_128_GCM_SHA256.