Sicherheit des AES-Counter-Modus vs. CBC-Modus

Evgeni Vaknin 09/05/2017. 1 answers, 401 views
aes cbc ctr nonce

Damit AES-CBC sicher ist, muss die IV, die verwendet wird, für jedes Paket zufällig ausgewählt werden. Wenn die IV vorhersehbar ist, ist die Verschlüsselung nicht CPA-sicher. Gilt das auch für den AES-CTR-Modus? das heißt, für den AES-CTR-Modus muss der erste Zähler zufällig sein oder es kann ein Nonce sein? Vielen Dank

1 Answers


Patrick K 07/31/2017.

Voraussetzung für die AES-CTR-Eingangsblöcke ist, dass sie während der Lebensdauer eines Schlüssels unique sein müssen. In den meisten Fällen wird eine zufällige 96-Bit-Nonce mit einem 32-Bit-Zähler verwendet, der bei 0 beginnt. Wenn derselbe Eingabeblock für AES-CTR zweimal auftritt, ist AES-CTR nicht mehr CPA-sicher. In diesem Fall kann dies auf einen Counter-Overflow nach $ 2 ^ {32} $ Blöcken oder auf kollidierende zufällig ausgewählte 96bit Nonces zurückzuführen sein (Geburtstagsparadox: 50% Chance nach $ \ sqrt {2 ^ {96}} $ Nachrichten. Betrachten Sie den folgenden Fall:

Zwei verschiedene 1-Block-Nachrichten $ P $ und $ P '$ werden unter dem gleichen Schlüssel $ K $ (der vorher verhandelt werden könnte) und mit demselben Nonce $ N $ gesendet. Der Angreifer weiß, dass die zugehörigen Chiffretexte $ C $ und $ C '$ berechnet wurden, indem sie mit dem Schlüsselstrom (der auf der Nonce und dem Zähler basiert) XORing wurden:

$ C = P \ oplus E_K (N, 0) $

$ C '= P' \ oplus E_K (N, 0) $

Dann kann der Angreifer einfach die Chiffretexte sortieren

$ C \ oplus C '= P \ oplus E_K (N, 0) \ oplus P' \ oplus E_K (N, 0) = P \ oplus P '$

und er erhält die "Entfernung" zwischen den beiden Klartexten. Aufgrund von Redundanzen in der englischen Sprache könnte er möglicherweise $ P $ und $ P '$ ermitteln.

Dieses Problem wird auch als "Zweifach-Pad" bezeichnet. Sobald der gleiche Schlüsselstrom mit dem Klartext XOR-verknüpft ist, geraten wir in Schwierigkeiten. Daher ist es wichtig, dass die Eingabe für die AES-Verschlüsselung während der Lebensdauer eines Schlüssels einmalig ist. Es muss nicht unvorhersehbar sein, einfach einzigartig.

5 comments
Evgeni Vaknin 07/31/2017
Mit der Aussage "2 ^ 32 messages" meine ich 2 ^ 32 Blöcke à 16 Byte in AES? Wenn ja, als 2 ^ 32 Blöcke Zeit ist 2 ^ 32 * 128 Bits, die in 10 Gbps ist, etwa 1 Minute ... so dass jede 1 Minute ein Schlüsselaustausch-Algorithmus ausgeführt werden muss, um einen neuen Schlüssel und Nonce einzurichten ?
1 Patrick K 07/31/2017
Ja, du hast Recht. Ich habe die Antwort bearbeitet. Wenn Sie eine statische Nonce haben, müssten Sie in diesem Fall jede Minute einen Schlüsselaustausch durchführen. Aber da die Nonce normalerweise mit jeder Nachricht geändert wird, sind Sie auf Nachrichten mit einer maximalen Länge von $ 2 ^ {32} \ cdot128 $ Bits beschränkt. Die maximale Anzahl von Nachrichten, die unter einem bestimmten Schlüssel gesendet werden können, ist durch das Geburtstagsparadoxon begrenzt. Wenn die 96-Bit-Nonce für jede Nachricht einheitlich zufällig ausgewählt wird, beträgt die Wahrscheinlichkeit einer Nonce-Kollision $ \ approx 0.5q ^ 2/2 ^ {96} $ für q-Nachrichten. Wenn Sie möchten, dass dieser Begriff höchstens 1% beträgt, ist Ihr $ q_ {max} = 4 \ cdot10 ^ {13} $.
Evgeni Vaknin 07/31/2017
Was passiert, wenn ich kein zufälliges Nonce benutze, sondern einen zufälligen Wert für den Nonce-Anfangswert verwende und dann jedes Paket inkrementiere? Nehmen wir beispielsweise an, dass jedes Paket weniger als 256 AES-Blöcke (jeweils 128 Bit) enthält und der Zähler für das AES-CTR aus 120 Bits besteht, die zufällig beim Schlüsselaustausch initialisiert werden, und innerhalb des Pakets 8 Bits counter wird verwendet, um die 128-Bit-Blöcke zu zählen. Und jedes neue Paket, (weiter im nächsten Kommentar)
Evgeni Vaknin 07/31/2017
Ich inkrementiere die Nonce um 1 und lösche den 8-Bit-Zähler. In diesem Fall ist das Geburtstagsparadox nicht relevant, da eine Kollision unmöglich ist (vorausgesetzt, ich ersetze den Schlüssel, bevor der 120-Bit-Zähler der Nonce abgelaufen ist)
1 Patrick K 08/01/2017
Ja, wenn Sie irgendwie sicherstellen, dass Sie nie das gleiche (Eingabe-Block, Schlüssel) Paar für die Schlüsselstrom-Generation verwenden, dann ist alles in Ordnung. (natürlich unter der Annahme, dass der Schlüssel geheim gehalten wird und einheitlich aus dem Zufallsprinzip ausgewählt wird)

Related questions

Hot questions

Language

Popular Tags