
ECDHE 및 PSK 키 교환, AEAD 암호, 연결 ID, 세션 재개, 0-RTT, Encrypted Client Hello를 지원하는 DTLS 1.2 및 1.3의 네이티브 Go 구현입니다.
Go 프로그래밍 언어로 구현된 네이티브 DTLS 1.2 및 DTLS 1.3 구현입니다.
장기적인 목표는 전문적인 보안 검토와, 어쩌면 표준 라이브러리(stdlib)에 포함되는 것입니다.
Pion DTLS는 DTLS 1.2와 DTLS 1.3을 지원합니다. 기여와 버그 수정을 환영합니다.
psk_ke 및 psk_dhe_ke를 지원하는 DTLS 1.3 외부 PSK, SHA-256 및 SHA-384 지원Resume을 통한 DTLS 1.2 및 DTLS 1.3 연결 상태 직렬화 및 복원WithECH로 구성되는 DTLS 1.3 암호화된 클라이언트 헬로(ECH) (RFC 9849)Conn.AddPath, Path.Probe, Path.Switch를 사용한 DTLS 1.3 로컬 경로 프로빙 및 마이그레이션Conn.UpdateKeys를 사용한 DTLS 1.3 트래픽 키 업데이트이 라이브러리는 기본적으로 DTLS 1.2 및 DTLS 1.3을 활성화하며, DTLS 1.3을 우선합니다.
연결을 DTLS 1.2로 제한하려면 WithMaxVersion(protocol.Version1_2)를 사용하고,
DTLS 1.3을 요구하려면 WithMinVersion(protocol.Version1_3)을 사용하세요.
127.0.0.1:4444에서 수신 대기하는 DTLS 서버의 경우
go run examples/listen/selfsign/main.go
127.0.0.1:4444에 연결하는 DTLS 클라이언트의 경우
go run examples/dial/selfsign/main.go
Pion DTLS는 자기 자신 및 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
DTLS 1.3은 선택적 0-RTT 조기 데이터와 함께 세션 티켓 재개를 지원합니다.
재개는 psk_dhe_ke(임시 ECDHE를 사용하는 PSK)만 허용합니다.
재개 예제는 인증서로 인증된
첫 연결, 암호화된 세션 저장, 그리고 재개 및 선택적 조기 데이터를 사용하는
후속 연결을 보여줍니다. 실행 방법과 0-RTT를 위한 세션 저장소의
일회용 Claim 요구 사항은 해당 README를 참조하세요.
State/Resume API는 새로운 핸드셰이크 없이 설정된 DTLS 1.3
연결을 복원하는 것도 지원합니다. Resume을 참조하세요.
DTLS 1.3은 SHA-256 또는 SHA-384를 사용하는 psk_ke(PSK 전용) 및 psk_dhe_ke
(임시 ECDHE를 사용하는 PSK) 방식의 외부 PSK를 지원합니다. 클라이언트는
핸드셰이크마다 여러 PSK ID를 제공하여 서버가 선택하도록 할 수 있습니다.
PSK 예제는 기본적으로 DTLS 1.3을 사용하며, TLS_AES_128_GCM_SHA256을 사용합니다.
go run examples/listen/psk/main.go
go run examples/dial/psk/main.go
DTLS 1.2를 TLS_PSK_WITH_AES_128_CCM_8과 함께 사용하려면 두 곳 모두에 -dtls12를 전달하세요:
go run examples/listen/psk/main.go -dtls12
go run examples/dial/psk/main.go -dtls12
이 OpenSSL DTLS 1.2 명령을 사용할 때는 -dtls12 옵션과 함께 Pion 예제를 실행하세요.
// Use with examples/dial/psk/main.go -dtls12
openssl s_server -dtls1_2 -accept 4444 -nocert -psk abc123 -cipher PSK-AES128-CCM8
// Use with examples/listen/psk/main.go -dtls12
openssl s_client -dtls1_2 -connect 127.0.0.1:4444 -psk abc123 -cipher PSK-AES128-CCM8
Pion은 Discord에서 활발한 커뮤니티를 운영하고 있습니다.
프로젝트 업데이트와 중요한 WebRTC 소식을 확인하려면 Pion Bluesky 또는 Pion Twitter를 팔로우하세요.
우리는 언제나 여러분의 프로젝트를 지원할 준비가 되어 있습니다. 만들고 싶은 것이 있다면 언제든 연락해 주세요! 상업적 지원이 필요하거나 공개적인 방법을 사용하고 싶지 않다면 [email protected]로 연락하실 수 있습니다.
이 프로젝트를 가능하게 만드는 놀라운 사람들의 그룹에 참여하려면 기여 위키를 확인하세요.