Frage

http://en.wikipedia.org/wiki/cmac

http://www.rfc-archive.org/getrfc.php?rfc=4493

Es gibt zwei Schlüssel K1 und K2. Gibt es noch andere Gründe, da sich die Nachrichten von 10^127 (1 und 127 Nullen) unterscheiden.

Wenn die Nachricht eine Länge hat (und die Länge auch eine CMAC-ED-Whit-Nachricht), gibt es dann Sicherheitsschwächen mit nur einem zufällig generierten k?

War es hilfreich?

Lösung

Ich glaube nicht, dass es mit bekannten Plaintext-Angriffen zu tun hat, und ich bin mit symmetrischen Chiffren nicht einverstanden, die für sie anfällig sind. Eine der Bedingungen für eine sichere Verschlüsselung ist, dass sie unter KPA, CPA (gewählte Angriffe) und CCA (gewählte Ciphertext-Angriffe) sicher ist.

Es sei denn, ich verstehe Ihre Frage nicht, ja, Sie brauchen immer noch beide Subkeys. K2 wird verwendet, wenn ein Block kein vollständiger Block ist. . K1 und K2 werden nicht zufällig generiert, sondern von K. sind ein Grund, warum Sie diese Subkeys nicht generieren möchten?

Es gibt eine Reihe von Schwächen in Authentifizierungscodes, die auf Verkettungsmodi basieren. CBC-MAC war nachweislich nur für Meldungen fester Größen sicher. Die Sicherheit schlägt bei Nachrichten mit variabler Länge vollständig fehl, bei denen der letzte Block gepolstert ist.

Sie können das XCBC -Papier lesen, um zu sehen, wie der Angriff funktioniert:

"Beachten Sie als einfaches Beispiel, dass der Gegner sofort den CBC-Mac für die Zwei-Block-Nachricht x || (x ^ T) seitdem weiß, dass der CBC-Mac einer Ein-Block-Nachricht x say t = CBCEK (x) weiß, seitdem der CBC-Mac sofort Dies ist wieder einmal T. "

[1] http://www.cs.ucdavis.edu/~rogaway/papers/3k.pdf

Andere Tipps

Zuallererst gibt es wirklich nur einen Schlüssel K In AES -CMAC - es ist das einzige, das Sie generieren müssen, um Ihre letzte Frage zu beantworten, und das wird in der Spezifikation explizit angegeben:

Der Algorithmus der Unterschlüsselerzeugung, generate_subkey (), nimmt einen geheimen Schlüssel k, was genau der Schlüssel für AES-128 ist.

Ihre andere Frage - warum müssen wir generieren K1 und K2 aus K - ist ein bisschen schwieriger zu beantworten, aber es gibt tatsächlich eine sehr einfache Erklärung: Um Unklarheiten in der Nachrichtenauthentifizierung zu beseitigen.

Um zu veranschaulichen, nehmen wir die Binärschlüssel aus dem Wiki -Artikel: K1 = 0101 und K2 = 0111. Jetzt spielen wir mit der Nachricht M = 0101 011. Weil M besteht nicht aus vollen Blöcken (drei Bits anstelle von vier), wir müssen es padeln. Jetzt haben wir M' = 0101 0111.

Um den Mac für diese Nachricht zu generieren, müssen wir nur unsere Schlüssel in:

M'  = 0101 0111
K1  = 0101
K2  =      0111
MAC = 0000 0000

Wenn wir benutzt hätten K1 In beiden Fällen haben wir dann das folgende Verfahren:

M'  = 0101 0111
K1  = 0101
K1  =      0101
MAC = 0000 0010

Das ist alles in Ordnung und gut, aber beobachten Sie, was passiert, wenn wir versuchen, einen Mac für zu generieren M'' = 0101 0111 (dh eine ungepasste Nachricht M'' identisch mit der gepolsterten Nachricht M').

M'' = 0101 0111
K1  = 0101
K1  =      0101
MAC = 0000 0010

Wir haben den gleichen Mac aus zwei verschiedenen Nachrichten generiert! Die Verwendung des zweiten Schlüssels (mit einigen zahlentheoretischen Eigenschaften, die verhindern, dass er problematisch "ähnlich" ist wie K1) verhindert eine solche Mehrdeutigkeit.

Ich nehme an, symmetrische Chiffren sind anfällig für Know-Plaintext-Angriffe, zumindest waren sie in der Vergangenheit. Und da Sie einen Teil des Klartextes (das Polstermuster) durchführen, möchten Sie keine Informationen über Ihren Schlüssel austreten. Wenn Sie auf diese Weise einige Bits des Schlüssels extrahieren können, können Sie den letzten Block brutal angreifen, aber alle anderen Blöcke bleiben sicher (zumindest unter diesem KP-Angriff), da sie über K1 verschlüsselt wurden.

Um das gleiche Problem zu überwinden, arbeiten blockbasierte Chiffren normalerweise in verschiedenen Modi, siehe:http://en.wikipedia.org/wiki/block_cipher_modes_of_operation. Ich weiß nicht, warum diese offensichtliche Lösung bei der Gestaltung von CMAC nicht berücksichtigt wurde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top