ML-KEM-768 역캡슐화
2400바이트 역캡슐화 키로 암호문을 풀어 공유 비밀을 얻고 독립 구현의 시험 벡터와 대조한다.
개요 및 암호학적 배경
ML-KEM(Module-Lattice-Based Key-Encapsulation Mechanism)은 CRYSTALS-Kyber에서 나온 NIST FIPS 203 표준으로, 쇼어(Shor) 알고리즘을 돌리는 양자 컴퓨터에 대비한 대표적인 양자내성 키 설정 표준입니다. 매개변수 집합 ML-KEM-768은 Rq = ℤ3329[X]/(X256+1) 위의 계수 k = 3 다항식 행렬을 사용하며 NIST 보안 범주 3(대략 AES-192 수준)을 목표로 합니다.
난수를 쓰는 캡슐화(ML-KEM.Encaps)와 달리 역캡슐화(ML-KEM.Decaps)는 완전히 결정적입니다. 2,400바이트 역캡슐화 키 dk = dkPKE ‖ ek ‖ H(ek) ‖ z와 1,088바이트 암호문 c를 받아 후보 메시지 m'을 복호화하고, 후지사키-오카모토(FO) 변환에 따라 (K', c') = Encaps(ek, m')로 다시 캡슐화합니다. 그다음 상수 시간으로 c = c'인지 비교해 32바이트 공유 비밀 K를 돌려줍니다. 암호문이 변조되었으면 z에서 유도한 의사난수 값을 돌려주는 암묵적 거부(implicit rejection)가 동작합니다.
파이프라인 배선 구조와 단계별 흐름
- 키와 암호문 입력(
Workflow Input): 2,400바이트 전체Decapsulation Key와 1,088바이트Ciphertext를 공급합니다. - FO 변환 역캡슐화(
ML-KEM Decapsulate):variant = 768로 설정합니다. K-PKE 복호화, SHA3-256 / SHA3-512 해싱, FO 재암호화 검증을 차례로 실행합니다. - 공유 비밀 출력(
Workflow Output): 32바이트(256비트)Shared Secret을 내보냅니다.
노드 구성 및 설정
| 노드 | 역할과 주요 매개변수 | 개수 |
|---|---|---|
| Workflow Input | Decapsulation Key(2,400 B)와 Ciphertext(1,088 B) 공급 | 1 |
| ML-KEM Decapsulate | variant = 768(ML-KEM-768)로 설정 | 1 |
| Workflow Output | 32바이트 Shared Secret 수집 | 1 |
입출력 명세 및 시험 벡터 검증
검증 출처: C2SP CCTV ML-KEM intermediate/ML-KEM-768.txt (dk, c, K). The vectors follow the FIPS 203 draft key generation; Decaps is the same as the final standard.
시험 벡터는 FIPS 203 초안의 키 생성 방식을 따르며, 역캡슐화(Decaps)는 최종 표준과 같습니다.
입력
| 이름 | 타입 | Value Summary (Full Vector Embedded in .ncw) |
|---|---|---|
Decapsulation Key | bytes (2,400 B) | 3261790e9484c6453502778de5faccecc56d94fbbb3d6a039d03ceb70b254f2a…7e03e57f0600da8 (4,800 hex chars) |
Ciphertext | bytes (1,088 B) | afb72488670b7d47769ee04d7479303a40b8b9d395eccdae13519e11f68df029…7f9feea416e410b (2,176 hex chars) |
기대 출력
| 이름 | 타입 | 값 (Hex) |
|---|---|---|
Shared Secret | bytes (32 B) | 4b4eba37eff0315dc6009dcffb4dfbbb680f8f2ebde8715fa3d6daf70256a2d9 |