비대칭키 · ECDH Curve25519 RFC 7748 §6.1 검증됨

X25519 키 합의

한쪽 개인키와 상대 공개키로 공유 비밀을 계산하며 RFC 7748로 검증했다.

앱에서 열기 .ncw 내려받기

개요 및 암호학적 배경

X25519(IETF RFC 7748)는 소수체 2255 − 19 위의 몽고메리 곡선 Curve25519(y2 = x3 + 486662x2 + x)에 기반한 타원곡선 디피-헬만(ECDH) 함수입니다. 상수 시간 몽고메리 래더로 실행하도록 설계되었고 트위스트 공격과 잘못된 곡선 공격에 면역이며, 공개키는 32바이트 리틀엔디언 u 좌표, 개인키는 32바이트 클램핑된 스칼라를 씁니다.

이 워크플로우는 RFC 7748 §6.1을 재현합니다. Alice의 32바이트 개인키 a와 Bob의 32바이트 공개키 B로 32바이트 공유 비밀 K = X25519(a, B)를 계산합니다. 실제 프로토콜에서는 이 원시 공유 비밀을 반드시 HKDF 같은 키 유도 함수에 통과시켜야 합니다(X25519 + HKDF 참고).

파이프라인 배선 구조와 단계별 흐름

Workflow Input (PrivateKey 32B, PeerPublicKey 32B) ──► X25519 Key Exchange (ECDH) ──► Workflow Output (SharedSecret 32B)
  1. 키 재료 입력(Workflow Input): Alice의 32바이트 PrivateKey와 Bob의 32바이트 PeerPublicKey를 공급합니다.
  2. 스칼라 곱셈(X25519 Key Exchange (ECDH)): 개인키 스칼라를 클램핑(비트 0, 1, 2, 255를 지우고 비트 254를 세움)한 뒤 GF(2255 − 19) 위에서 몽고메리 래더를 계산합니다. 공유 비밀이 전부 0이 되는 저차수 점은 거부합니다.
  3. 공유 비밀 출력(Workflow Output): 32바이트 공유 비밀 K를 내보냅니다.

노드 구성 및 설정

노드역할과 주요 매개변수개수
Workflow InputPrivateKey(32 B)와 PeerPublicKey(32 B) 공급1
X25519 Key Exchange (ECDH)RFC 7748 Curve25519 스칼라 곱셈 계산1
Workflow Output32바이트 SharedSecret 수집1

노드 레퍼런스 →

입출력 명세 및 시험 벡터 검증

검증 출처: RFC 7748 §6.1 (Alice private key, Bob public key)

입력

이름타입값 (Hex)
PrivateKeybytes (32 B)77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a
PeerPublicKeybytes (32 B)de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f

기대 출력

이름타입값 (Hex)
SharedSecretbytes (32 B)4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742