Kann CBC-Chiffretext entschlüsselt werden, wenn der Schlüssel bekannt ist, der IV nicht?

  • Nehmen wir an, es gibt im CBC-Modus (d. h. mit einem Schlüssel und einem Initialisierungsvektor) eine mit AES verschlüsselte Binärdatei. Wenn der Schlüssel bekannt ist, aber IV nicht, ist es dann einfach, die Datei vollständig zu entschlüsseln?

    Wie schwer ist das?

    06 November 2011
    cmcculloh
1 answer
  • Im CBC-Modus (Cipher Block Chaining) wird vor der Verschlüsselung jeder Block mit dem Chiffretext des vorherigen Blocks XOR-verknüpft, um die Eingabe für die Blockverschlüsselung zu randomisieren (und zu vermeiden, dass derselbe Block zweimal mit dem Block verschlüsselt wird) Dieselbe Taste, da dies dieselbe Ausgabe ergibt und dem Angreifer etwas über den Klartext mitteilt). Da der erste Block keinen vorherigen Block hat, wird hier stattdessen der Initialisierungsvektor verwendet.

    Beim Entschlüsseln wenden wir die Blockverschlüsselung auf jeden Chiffretextblock an und dann XOR das Ergebnis mit dem vorherigen Chiffretextblock (oder dem Initialisierungsvektor für den ersten Block).

    Da alle Geheimtextblöcke bekannt sind und wir den Schlüssel haben, können wir alles andere als den ersten Block zuverlässig entschlüsseln, auch wenn kein oder ein falscher Initialisierungsvektor angegeben wird.

    Für den ersten Block haben wir tatsächlich keine Informationen ohne den Initialisierungsvektor, außer dass er die gleiche Länge wie jeder andere Block hat (16 Bytes für AES): Alle 16 Bytes Es ist Klartext zu erreichen, indem Sie die Armatur IV angeben. Glücklicherweise (oder abhängig von Ihrem Standpunkt) sind die ersten Bytes in vielen Dateiformaten fest vorgegeben (oder fast fest oder können basierend auf dem Rest der Datei erraten werden).

    Im CBC-Modus bietet ein geheimer Initialisierungsvektor so gut wie keinen Schutz, wenn der Schlüssel dem Angreifer bekannt ist.

    Dies trifft im Allgemeinen zu: Protokolle verlassen sich auf das key ist geheim, während ein Initialisierungsvektor normalerweise öffentlich sein kann und oft sogar zusammen mit dem Geheimtext übertragen wird.

    Im CTR-Modus hilft ein geheimer Initialisierungsvektor (dort als "nonce" bezeichnet) tatsächlich etwas mehr, um den Klartext geheim zu halten - aber wenn der Angreifer sogar einen Klartextblock erraten kann (und den entsprechenden Chiffretextblock hat), kann er (gegeben) den Schlüssel) berechnen Sie den entsprechenden Zählerwert und daraus die Nonce. Lassen Sie nicht zu, dass der Angreifer den Schlüssel hat.

    06 November 2011
    cmcculloh