양자내성 · KEM
NIST FIPS 203
종단 간 왕복 검사
ML-KEM-768 왕복
키 생성, 캡슐화, 역캡슐화를 한 그래프로 구성한다. 양쪽 공유 비밀이 같으면 true를 출력한다.
개요 및 암호학적 배경
NIST FIPS 203 ML-KEM-768 같은 키 캡슐화 메커니즘(KEM)에서는 두 당사자가 세 가지 연산으로 키를 설정합니다. Alice가 ML-KEM.KeyGen()을 실행해 1,184바이트 캡슐화(공개) 키 ek와 2,400바이트 역캡슐화(비밀) 키 dk를 만들고 ek를 Bob에게 보냅니다. Bob은 새 난수로 ML-KEM.Encaps(ek)를 실행해 1,088바이트 암호문 c와 32바이트 공유 비밀 KBob을 만듭니다. 마지막으로 Alice가 ML-KEM.Decaps(dk, c)로 32바이트 공유 비밀 KAlice를 복원합니다.
이 워크플로우는 세 양자내성 노드를 한 캔버스에 연결하고, 두 32바이트 공유 비밀을 Value Comparator(==)에 넣습니다. 난수를 쓰는 실행마다 KBob = KAlice가 성립함(SharedSecretsMatch = true)을 보여 줍니다. 매번 새 키쌍을 쓰므로 고정 시험 벡터 대조가 아니라 연산 사슬이 일관되는지 확인하는 용도입니다.
파이프라인 배선 구조와 단계별 흐름
ML-KEM KeyGen (ek 1184B, dk 2400B)
──►
ML-KEM Encaps (c 1088B, K_enc 32B)
──►
ML-KEM Decaps (K_dec 32B)
──►
Value Comparator (== → true)
- 키쌍 생성(
ML-KEM KeyGen (FIPS 203)): 실행할 때마다 새 ML-KEM-768 키쌍을 만듭니다.publicKey(ek)는ML-KEM Encapsulate로,secretKey(dk)는ML-KEM Decapsulate로 보냅니다. - 캡슐화(
ML-KEM Encapsulate):publicKey에 대해 새 32바이트 공유 비밀을 캡슐화합니다.ciphertext(c)는ML-KEM Decapsulate로,sharedSecret은Value Comparator의 포트a로 보냅니다. - 역캡슐화와 동일성 검사(
ML-KEM Decapsulate→Value Comparator):secretKey로ciphertext를 역캡슐화하고, 복원한sharedSecret을Value Comparator의 포트b로 보냅니다. 비교기가true를Workflow Output으로 출력합니다.
노드 구성 및 설정
| 노드 | 역할과 주요 매개변수 | 개수 |
|---|---|---|
| Workflow Input | 워크플로우 입구 노드(외부 인자 불필요) | 1 |
| ML-KEM KeyGen (FIPS 203) | variant = 768. 새 ek(1,184 B)와 dk(2,400 B) 생성 | 1 |
| ML-KEM Encapsulate | variant = 768. 1,088바이트 암호문과 32바이트 공유 비밀 생성 | 1 |
| ML-KEM Decapsulate | variant = 768. 암호문과 dk로 32바이트 공유 비밀 복원 | 1 |
| Value Comparator | operator = "==". 캡슐화한 비밀과 역캡슐화한 비밀 비교 | 1 |
| Workflow Output | 불리언 판정 SharedSecretsMatch 출력 | 1 |
입출력 명세 및 시험 벡터 검증
검증 출처: Randomized (FIPS 203 ML-KEM-768 round trip); only the boolean verdict is compared
무작위 왕복 실행이므로 고정 출력은 없고 불리언 판정(공유 비밀 일치)만 비교합니다.
기대 출력
| 이름 | 타입 | Value |
|---|---|---|
SharedSecretsMatch | bool | true |