양자내성 · KEM NIST FIPS 203 (ML-KEM-768) C2SP CCTV 벡터 검증됨

ML-KEM-768 역캡슐화

2400바이트 역캡슐화 키로 암호문을 풀어 공유 비밀을 얻고 독립 구현의 시험 벡터와 대조한다.

앱에서 열기 .ncw 내려받기

개요 및 암호학적 배경

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 (Decapsulation Key 2400B, Ciphertext 1088B) ──► ML-KEM Decapsulate (variant = 768) ──► Workflow Output (Shared Secret 32B)
  1. 키와 암호문 입력(Workflow Input): 2,400바이트 전체 Decapsulation Key와 1,088바이트 Ciphertext를 공급합니다.
  2. FO 변환 역캡슐화(ML-KEM Decapsulate): variant = 768로 설정합니다. K-PKE 복호화, SHA3-256 / SHA3-512 해싱, FO 재암호화 검증을 차례로 실행합니다.
  3. 공유 비밀 출력(Workflow Output): 32바이트(256비트) Shared Secret을 내보냅니다.

노드 구성 및 설정

노드역할과 주요 매개변수개수
Workflow InputDecapsulation Key(2,400 B)와 Ciphertext(1,088 B) 공급1
ML-KEM Decapsulatevariant = 768(ML-KEM-768)로 설정1
Workflow Output32바이트 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 Keybytes (2,400 B)3261790e9484c6453502778de5faccecc56d94fbbb3d6a039d03ceb70b254f2a…7e03e57f0600da8 (4,800 hex chars)
Ciphertextbytes (1,088 B)afb72488670b7d47769ee04d7479303a40b8b9d395eccdae13519e11f68df029…7f9feea416e410b (2,176 hex chars)

기대 출력

이름타입값 (Hex)
Shared Secretbytes (32 B)4b4eba37eff0315dc6009dcffb4dfbbb680f8f2ebde8715fa3d6daf70256a2d9