
PoC Python pour CVE-2026-23006, démontrant un canal auxiliaire basé sur la longueur des textes chiffrés Kyber qui divulgue des bits de la clé secrète par analyse statistique des sorties de longueur variable.
# 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.")
Une implémentation défectueuse du mécanisme d'encapsulation de clé Kyber produit des textes chiffrés de longueurs différentes selon un bit secret du secret partagé. Un attaquant mesurant la longueur de plusieurs textes chiffrés peut récupérer le bit par analyse statistique.
Exécutez la simulation :
python kyber_length_leak.py
Observez deux groupes de longueurs distincts.