
PoC en Python para CVE-2026-23006, que demuestra un canal lateral de longitud de texto cifrado Kyber que filtra bits de la clave secreta mediante análisis estadístico de salidas de longitud 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.")
Una implementación defectuosa del mecanismo de encapsulamiento de claves de Kyber produce textos cifrados de diferentes longitudes dependiendo de un bit secreto en el secreto compartido. Un atacante que mida la longitud de múltiples textos cifrados puede recuperar el bit mediante análisis estadístico.
Ejecute la simulación:
python kyber_length_leak.py
Observe dos grupos de longitudes distintos.