Verschlüsselung mit "konstantem" Initialisierungsvektor wird als schädlich betrachtet

  • Ich versuche, die volle Begründung für die obige Aussage zu erhalten. Nachdem ich hier die Artikel gelesen und bei Wikipedia verstanden habe, ist mir klar, dass die Verwendung einer IV nur einmal eine gute Praxis ist.

    Für Stream-Chiffren wird die Sicherheit aufgrund von

     Cipher1 xor Cipher2 = Plain1 xor Plain2
     

    beeinträchtigt Bei Blockchiffren, die dieselbe IV verwenden, wird der ECB-Modus abgebaut.

    Aber gibt es einen echten Angriff wie bei der Stream-Chiffre (oder trifft auch die Stream-Chipher-Argumentation zu?)? Z.B. Wenn ich zwei (kurze) Nachrichten habe, erstelle ein einzelnes IV, verschlüssele beide mit AES und speichere die drei Werte für die spätere Entschlüsselung - was ist ein konkreter Angriff?

    Ein konkretes Beispiel aus eine fiktive Implementierung von "Preferences Vault". Wenn Sie ein XML wie

     <vault>
        <items>
            <item iv="" name="f2e342435" value="2034b324">
            </item>
                    ...
        </items>
    </vault>
     

    haben, wobei iv der Initialisierungsvektor für die Verschlüsselung der Namen- und Werteigenschaften ist, würde dies hinzugefügt jede Schwachstelle im Vergleich zu zwei ivs (immer unter Annahme von AES).

    09 May 2012
    cmcculloh
3 answers
  • Bei Blockchiffrieren hängt es von der verwendeten Betriebsart ab - niemand verwendet nur eine einfache Blockverschlüsselung für irgendetwas, zumindest nicht, wenn alle ihre Nachrichten kürzer sind als ein einzelner Verschlüsselungsblock (normalerweise 8 oder 16 Bytes).

    • ECB-Modus , der lediglich dazu führt, die Nachricht in Blöcke zu zerhacken und jeden Block durch die Chiffre zu füttern, verwendet keine IV. Wie Sie richtig bemerken, ist es auch unsicher: Es verliert Informationen über doppelte Blöcke im Klartext.

    • OFB und CTR verwandeln die Blockverschlüsselung in eine synchrone Stromverschlüsselung. Daher haben sie die gleichen Sicherheitsprobleme wie andere Stream-Chiffren: Wenn dieselbe Kombination aus Schlüssel und IV für zwei Nachrichten verwendet wird, kann ein Gegner, der beide erfasst, den Unterschied ausmachen, um den Schlüsselstrom zu eliminieren, wobei nur der Unterschied zwischen den beiden Klartexten übrig bleibt reicht oft aus, um zumindest Teile von beiden wieder herzustellen. Es wird noch schlimmer, wenn sie mehr als zwei Nachrichten mit derselben Taste + IV erfassen können.

    • Die CBC und CFB -Modi sind gegenüber einfacher IV-Wiederverwendung etwas widerstandsfähiger. Wie bei allen anderen gängigen Betriebsmodi werden jedoch durch Verwenden desselben Schlüssels + IV zum Verschlüsseln zweier Nachrichten, die ein gemeinsames Präfix (aus einem oder mehreren Blöcken) verwenden, die Anwesenheit und Länge dieses Präfixes angezeigt, da die Chiffratexte bis auf die identisch sind Punkt, an dem der erste Klartextunterschied auftritt. CFB

    10 May 2012
    Ilmari Karonen
  • Wie Jack bereits erwähnt hat, benötigen Sie einen eindeutigen Schlüssel & amp; Jedes Mal, wenn Sie Daten verschlüsseln, ein IV-Paar In symmetrischen Chiffren sollten Sie Ihr Geheimnis (den Schlüssel) nicht oft ändern, da dies mit der anderen Partei geteilt werden muss. (bei allen Problemen mit dem Schlüsselaustausch)

    Wenn Sie die IV nicht bei jeder Sitzung ändern, unterliegen Ihre Daten mehr Angriffen, z. B. einer statistischen Kryptoanalyse, die enden könnte B. beim Ermitteln des Schlüssels. Nehmen Sie an, dass die verschlüsselten Daten immer denselben Kopf haben. Wenn Sie dasselbe Paar (IV, Schlüssel) verwenden, wird der Beginn der verschlüsselten Nachrichten immer derselbe sein. Dies ist ein großer Hinweis auf eine Kryptoanalyse.

    09 May 2012
    sergico
  • Solange die Kombination aus Verschlüsselungsschlüssel und IV eindeutig ist, sollten Sie sicher sein. Wenn dieselbe Kombination ein paar Mal verwendet wird, erhöhen Sie das Risiko einer Exposition, obwohl das Risiko möglicherweise geringer ist als bei Stream-Chiffren, da der Kontext weniger zu schätzen ist (im Gegensatz zu einer einzelnen verschlüsselten Sitzung).

    In Ihrem Vault-Beispiel ist die Verwendung des IV als Salt für jeden Datensatz zum Verschlüsseln von zwei verschiedenen Werten (und zum Sichern des Verschlüsselungsschlüssels) gut genug, es sei denn, eine vernünftige Wahrscheinlichkeit besteht, dass jemand den Klartext eines Werts kennt.

    Außerdem gehe ich davon aus, dass Sie für jede "Zeile" in Ihrer Vault-Datei eine andere IV haben.

    Ich halte es für wünschenswert, zu sehen, ob ich mehr erfahren kann:)

    10 May 2012
    Jack