비대칭키 + KDF · 포트 이름
RFC 7748 + RFC 5869
스스로 설명하는 그래프
포트 이름을 붙인 X25519 + HKDF
같은 세션키 유도에서 두 노드의 고정 포트에 역할 이름을 붙였다.
개요 및 암호학적 배경
키 합의를 키 유도로 이어 붙일 때 두 노드의 포트 이름을 바꿔 두면, 균일하지 않은 원시 ECDH 출력과 균일한 HKDF 세션키 사이의 보안 경계가 캔버스에서 바로 드러납니다. 이 워크플로우는 X25519 + HKDF와 기능이 같지만, 포트 이름을 바꾸고 두 노드에 Markdown 메모를 붙였습니다.
구체적으로 X25519 Key Exchange (ECDH)의 출력(포트 ID sharedSecret)과 HKDF Key Derivation의 입력(포트 ID ikm)에 모두 표시 이름 Raw Shared Secret을 붙였고, HKDF의 okm 출력은 Session Key로 바꿨습니다.
파이프라인 배선 구조와 역할 포트 매핑
Workflow Input
──►
X25519 ECDH (Raw Shared Secret)
──►
HKDF (Raw Shared Secret → Session Key)
──►
Workflow Output
- X25519 포트 이름:
privateKey→Local Private Key,peerPublicKey→Peer Public Key,sharedSecret→Raw Shared Secret. - HKDF 포트 이름:
ikm→Raw Shared Secret,info→Context Info,okm→Session Key.
노드 구성 및 설정
| 노드 | 역할과 이름을 바꾼 포트 | 개수 |
|---|---|---|
| Workflow Input | PrivateKey, PeerPublicKey, Salt, Info 공급 | 1 |
| X25519 Key Exchange (ECDH) | Raw Shared Secret(포트 ID sharedSecret) 출력 | 1 |
| HKDF Key Derivation | hashAlgorithm = "SHA-256", keyLength = 32. Session Key(포트 ID okm) 출력 | 1 |
| Workflow Output | 32바이트 SessionKey 수집 | 1 |
입출력 명세 및 시험 벡터 검증
검증 출처: RFC 7748 §6.1 shared secret; HKDF-SHA-256 output cross-checked with Node.js crypto.hkdfSync
X25519 공유 비밀은 RFC 7748로, HKDF-SHA-256 출력은 Node.js의 hkdfSync와 교차 검증했습니다.
입력
| 이름 | 타입 | 값 (Hex) |
|---|---|---|
PrivateKey | bytes (32 B) | 77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a |
PeerPublicKey | bytes (32 B) | de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f |
Salt | bytes (13 B) | 000102030405060708090a0b0c |
Info | bytes (22 B) | 6e6f646563727970746f2073657373696f6e206b6579 |
기대 출력
| 이름 | 타입 | 값 (Hex) |
|---|---|---|
SessionKey | bytes (32 B) | 7d87f69eef5eee6ad11c518723db4f5f8708a99c84e9a3589df85d62d7b14c9b |