
Demonstriert die Ausnutzung der AES-GCM-Nonce-Wiederverwendung, indem Chiffretexte mit derselben Nonce gesammelt werden, was zu GHASH-Schlüsselleckage, Nachrichtenfälschung und Schlüsselwiederherstellung in verwundbaren Anwendungen führt.
# aes_gcm_nonce_reuse_sim.py - Simulated encryption oracle with fixed nonce
from Crypto.Cipher import AES
import os
key = os.urandom(16)
nonce = b'\x00' * 12 # ALWAYS SAME NONCE
def encrypt(plaintext):
cipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
ct, tag = cipher.encrypt_and_digest(plaintext)
return ct, tag
# Vulnerable: attacker can obtain many ciphertexts with same nonce
ct1, tag1 = encrypt(b"Secret message 1")
ct2, tag2 = encrypt(b"Secret message 2")
print("Ciphertexts collected. Nonce reuse allows key recovery and forgery.")
Eine Anwendung verwendet AES‑GCM-Verschlüsselung mit einer festen Nonce (oder wiederholt eine Nonce). Dadurch kann ein Angreifer, der mehrere Chiffretexte unter derselben Nonce beobachtet, den Authentifizierungsschlüssel wiederherstellen, beliebige Nachrichten fälschen und möglicherweise den Verschlüsselungsschlüssel wiederherstellen.
Führen Sie die Simulation aus, um die Gefahr zu sehen:
pip install pycryptodome
python aes_gcm_nonce_reuse_sim.py
Das Programm gibt aus, dass Chiffretexte mit derselben Nonce erzeugt wurden, und hebt damit die Schwachstelle hervor.