GCM (Galois / Counter Mode), insbesondere in Kombination mit AES, ist seit Jahren ein De-facto-Goldstandard. In einem Schritt verschlüsseln und authentifizieren, das ist einfach zu großartig, und Begriffe wie AEAD eignen sich gut, um ein Mädchen zu beeindrucken, so dass dies eine Win-Win-Situation wäre. Aber Spaß beiseite …

Ich habe Ich habe mich immer gefragt, was es so besonders macht, und je länger ich darüber nachdenke, desto weniger verstehe ich. Wenn Sie es sich ansehen, dann ist die allgemeine Magie überhaupt nicht so großartig. Oder vielleicht bin ich einfach zu dumm, um es zu verstehen (daher meine Frage).

Meine Gedanken:

Zunächst einmal ist GCM eine Form des Zählermodus . Was bedeutet, dass im Gegensatz zu z. Verkettung von Chiffrierblöcken, die Ausgabe eines Blocks hängt von genau einem Eingabeblock ab. Schlimmer noch: Sie können ein einzelnes Bit ändern und das entschlüsselte Ergebnis unterscheidet sich in genau diesem Bit. Denn wenn Sie ehrlich sind, ist eine Blockverschlüsselung im Zählermodus keine “ Blockverschlüsselung „, sondern eine (verschlüsselte) PRNG gefolgt von einer XOR-Operation. Grundsätzlich ist eine “ blockige “ Stream-Verschlüsselung. Es braucht nicht viel, um sich ein Szenario vorzustellen, in dem jemand dies missbrauchen könnte, um Nachrichten auf schädliche Weise zu ändern (z. B. “ -Transaktion ändern: +5.000 \ $ bis “ Transaktion: -5.000 \ $ „). Blockchiffren haben normalerweise die angeborene Eigenschaft, sich in vollständigen Kauderwelsch zu verwandeln Wenn Sie ein einzelnes Bit umdrehen (plus, mit Verkettung, den gesamten Rest der Nachricht). Das ist eigentlich eine ganz nette, wünschenswerte Eigenschaft, die wir ohne guten Grund einfach über Bord geworfen haben.
Sicher, mit dem Authentifikator ist der obige Angriff schwer zu erreichen, da die Manipulation entdeckt wird. Grundsätzlich behebt der Authentifikator jedoch nur das Problem, dass die Wahl des Betriebsmodus eingeführt .

GHASH ist ein MAC, der zusätzliche authentifizierte Daten unterstützt. Soweit ich das beurteilen kann, ist das eine völlige Lüge. Oder nennen Sie es “ optimistische Übertreibung „, wenn Sie so wollen. Es ist einfach eine Komprimierungsfunktion mit nicht intuitiver Mathematik (für Nicht-Mathematiker) dahinter, aber am Ende macht sie nichts anderes als eine einfache Multiplikation und wirft die Hälfte der Eingabebits mit dem Äquivalent von “ Überlauf „. Genau das kann mit profaner Mathematik in zwei Zeilen C-Code pro Block innerhalb eines Dutzend Zyklen durchgeführt werden (oder wenn Sie mit der Verwendung von 32-Bit-Multiplikationen anstelle von 64 einverstanden sind, kann dies parallel durchgeführt werden, z. B. mit AVX2). s vpmulld für zwei vollständige Blöcke in ~ 4 Zyklen).
Diejenigen, die sich noch an IDEA erinnern, werden sich daran erinnern, dass sie Additionsmod 2 und Multiplikationsmod 2 16 + verwendet haben 1 als S-Boxen, die die nette Eigenschaft hatten, reversibel zu sein (irgendwie notwendig, wenn Sie entschlüsseln möchten). Leider konnte dies nicht auf 32-Bit erweitert werden, da 2 32 +1 nicht ta ist Primzahl, daher ist nicht garantiert, dass alle Eingänge relativ prim sind, und daher haben Sie Probleme, die Operation umzukehren. Aber … das ist in unserem Fall sehr gut, wir wollen nicht Unsere Komprimierungsfunktion muss invertierbar sein! Also wirklich, “ einfach „, gewöhnliche Multiplikation sollte auch den Trick machen?

Also diese einfache, nicht spezielle, keine magische Komprimierung Die Funktion wird zufällig mit dem Schlüssel und IV initialisiert, wodurch der endgültige Ausgabeschlüssel auf die eine oder andere Weise abhängig wird Diese gewöhnliche Funktion wird effektiv zu einem MAC. Wenn Sie “ zusätzliche Daten “ haben, geben Sie diese einfach in den Hash ein, bevor Sie Ihre Daten verschlüsseln. Auch das ist nichts Besonderes.
Insgesamt ist es nichts, was Sie mit so ziemlich jeder anderen Hash-Funktion nicht erreichen könnten.

Jetzt setzt Galois / counter voraus, dass der Zählermodus verwendet wird. Der Zählermodus (und seine Ableitungen) sowie GHASH haben den Vorteil, dass Sie Blöcke parallel verschlüsseln / entschlüsseln können. Außerdem ist GHASH trivial parallelisierbar.
Ja, Leistung ! Aber seien wir ehrlich, ist dies wirklich ein Vorteil oder eher ein großer Nachteil ?

Ist es wichtig, wie lange es dauert, ein Gigabyte oder Terabyte zu entschlüsseln Nachricht, und wie gut können Sie diese Arbeit parallelisieren? Oder Anwendungen, bei denen Sie unbedingt “ “ an zufälligen Positionen suchen möchten? Nun, es gibt Anwendungen, bei denen das sicher wichtig sein kann. Die vollständige Festplattenverschlüsselung fällt mir ein. In diesem Fall möchten Sie GCM jedoch nicht verwenden, da Eingabegröße und Ausgabegröße identisch sein sollen.

Für einen ausgelasteten Server (oder VPN) ist dies von Bedeutung, oder so scheint es , aber diese können alles trotzdem parallel verarbeiten, da sie viele gleichzeitige Verbindungen haben.Ob Sie also einen Stream parallelisieren können oder nicht, spielt insgesamt keine Rolle. Was ist mit Anwendungen, bei denen nur wenige Verbindungen bestehen? Nun, normalerweise übertragen Sie keine Terabyte an Daten über ein Anmeldeterminal, und wenn Sie dies tun, ist Ihre Internetverbindung wahrscheinlich immer noch der begrenzende Faktor, da die Single-Core-Leistung selbst auf 7-8 Jahre alten Desktop-Prozessoren die GbE-Bandbreite leicht übertrifft
Okay, möglicherweise müssen Sie beim Extrahieren einer verschlüsselten 2-TB-7z-Datei auf Ihrer Festplatte 2-3 Sekunden länger warten (wenn das Erstellen von Tausenden von Verzeichniseinträgen nicht wirklich der Engpass ist, zu dem ich geneigt bin Ich glaube, das wird der Fall sein. Wie oft haben Sie das im letzten Jahr getan? Ich: null mal.

Die einzigen, für die es wirklich einen Unterschied macht, sind die “ Bösewichte „, dh genau diejenigen, die Sie nicht einfach haben möchten. Sicher genug, wenn Sie trivial parallelisieren können, werden Angriffe viel einfacher. Werfen Sie einen Raum voller dedizierter Hardware (GPUs, FPGAs, was auch immer) auf das Problem und lassen Sie es verschwinden. Keine Kommunikation zwischen Knoten erforderlich? Nun, perfekt, es kann nicht besser werden.
Ist das wirklich ein Vorteil? Ich weiß nicht, für mich sieht es nach einem großen Nachteil aus. Wenn überhaupt, möchte ich das Parallelisieren so schwierig wie möglich und nicht so einfach wie möglich machen.

Also … genug Nachdenken und auf die Frage:

Was ist das? Grundlegende Sache, die mir an GCM fehlt, die es so großartig macht, dass Sie es unbedingt verwenden sollten?

Kommentare

  • Aber nur wer sind die “ Bösewichte “ ist unmöglich zu definieren. Und das hat einen RIESIGEN Einfluss auf die Empfehlungen der Regierung und die Antworten in diesem Forum.

Antwort

TL; DR: GCM bietet hervorragende Leistung mit den besten Sicherheitseigenschaften, die wir heute von Chiffren erwarten (AEAD).

GCM verwendet CTR, um eine Stream-Verschlüsselung zu erstellen. Dies ist eine gut untersuchte Methode, die nur einen Nachteil hat: Sie benötigt unbedingt eine Authentifizierung, um ein Umdrehen der Bits zu verhindern. Vor GCM war CTR-dann-MAC die Lösung. Ein Hauptvorteil von Stream-Chiffren ist das Fehlen von Padding-Angriffen (da kein Padding erforderlich ist). Ein weiterer Vorteil ist, dass AES-CTR von den AES-NI-Anweisungen profitieren kann.

GCM ist CTR-dann-MAC mit besserer Leistung . Eine wesentliche Verbesserung gegenüber CRT-dann-MAC ist die Möglichkeit, die Ausführung von Verschlüsselung und Authentifizierung zu überlappen. Darüber hinaus hat es sich im konkreten Sicherheitsmodell als sicher erwiesen und ist nicht durch Patente belastet. Daher ist es „ein Kinderspiel, es zu verwenden.

Es hat einige Nachteile: Es ist in eingebetteter Hardware nicht effizient und es ist schwer effizient zu implementieren. Dem letzten Punkt wird durch die Verwendung von Bibliotheken entgegengewirkt, die von anderen geschrieben wurden. Dies sind jedoch Gründe, warum xchacha20-poly1305 über GCM populär wurde.

Kommentare

  • Ich würde einen weiteren Grund dafür argumentieren, warum ChaCha20 an Popularität gewonnen hat, weil es nicht AES ist. Verstehen Sie mich nicht falsch, AES. ‚ ist ein großartiger Algorithmus, aber buchstäblich alle unsere Eier in einen Korb zu legen, ist vielleicht nicht die klügste aller Ideen. Und einen anderen gut getesteten Algorithmus neben AES zu haben, ist ziemlich wertvoll.
  • @ MechMK1 Ich stimme Ihnen zu , aber ich habe nicht geschrieben, dass sie alle die Gründe für die Popularität von ChaCha20 ‚ sind, weil diese ‚ s nicht die hier gestellte Frage. Mein Punkt war t Hat GCM wird nicht als “ awesome “ betrachtet, wie das OP denkt.
  • Absolut wahr. Es ist ‚ keine goldene Gans, aber sozusagen wurde niemand wegen der Verwendung von AES-GCM gefeuert.
  • Und es ‚ ist nicht durch Patente belastet.
  • @StephenTouset Vielen Dank, ich habe meinen Beitrag so bearbeitet, dass er Ihren Kommentar enthält.

Antwort

Zunächst einmal ist GCM eine Form des Zählermodus. Was bedeutet, dass im Gegensatz zu z. Verkettung von Chiffrierblöcken, die Ausgabe eines Blocks hängt von genau einem Eingabeblock ab. Schlimmer noch: Sie können ein einzelnes Bit ändern und das entschlüsselte Ergebnis unterscheidet sich in genau diesem Bit. Denn wenn Sie ehrlich sind, ist eine Blockverschlüsselung im Zählermodus überhaupt keine „Blockverschlüsselung“, sondern eine (verschlüsselte) PRNG, gefolgt von einer XOR-Operation. Grundsätzlich eine „blockige“ Stream-Chiffre. Es braucht nicht viel, um sich ein Szenario vorzustellen, in dem jemand dies missbrauchen könnte, um Nachrichten auf schädliche Weise zu ändern (z. B. „Transaktion: +5.000 \ $“ in „Transaktion: -5.000 \ $“ ändern).

Die Nachrichtenauthentifizierung, die GCM über CTR legt, macht die Formbarkeit unwichtig.

Blockchiffren haben normalerweise die angeborene Eigenschaft, sich beim Umdrehen eines einzelnen Bits in vollständigen Kauderwelsch zu verwandeln (plus mit Verkettung den gesamten Rest der Nachricht). . Das ist eigentlich eine ganz schöne, begehrenswerte Eigenschaft, die wir ohne guten Grund über Bord geworfen haben.

Das ist sehr, sehr falsch Der CBC-Modus leidet auch unter einer Art Formbarkeitsschwäche: Wenn Sie ein Bit des Chiffretextes umdrehen, verschlüsseln Sie nur einen Block und Drehen Sie das entsprechende Bit des Netzblocks um. Und es gibt andere Formbarkeitsangriffe gegen CBC. Siehe beispielsweise den EFail-Angriff .

Im Allgemeinen ist Ihre informelle Vorstellung von Nachrichten, die sich in völligen Kauderwelsch verwandeln, nicht gut genug. Wir brauchen unbedingt Computer, um mechanisch mit einer eindeutigen „Ja / Nein“ -Antwort zu erkennen, wann eine verschlüsselte Nachricht gefälscht wurde. Es reicht nicht aus, darauf zu vertrauen, dass ein Mensch früh genug in der Schleife ist, um „Kauderwelsch“ zu erkennen.

GHASH ist ein MAC, der zusätzliche authentifizierte Daten unterstützt. Soweit ich das beurteilen kann, ist das eine völlige Lüge. Oder nennen Sie es „optimistische Übertreibung“, wenn Sie so wollen. Es ist nur eine Komprimierungsfunktion mit nicht intuitiver Mathematik (für Nicht-Mathematiker) dahinter, aber am Ende macht es nichts anderes als eine einfache Multiplikation und wirft die Hälfte der Eingabebits mit dem Äquivalent von „Überlauf“ weg. P. >

Der MAC funktioniert nicht, weil die Benutzer die Mathematik nicht verstehen. Das bedeutet, dass die Leute kein Satellitenfernsehen sehen können, weil sie es nicht tun Ich kenne keinen Kalkül. Finite-Feld-MACs sind eine seit Jahrzehnten bekannte Standardkonstruktion.

Genau das kann mit profaner Mathematik in zwei Zeilen von C durchgeführt werden Code pro Block innerhalb eines Dutzend Zyklen (oder wenn Sie mit der Verwendung von 32-Bit-Multiplikationen anstelle von 64 einverstanden sind, kann dies parallel mit AVX2s vpmulld für zwei vollständige Blöcke in ~ 4 Zyklen erfolgen).

Es gibt eine aktuelle Debatte darüber, ob MACs, die auf Galois-Feldern wie GHASH basieren, oder MACs, die auf Prime-Feldern wie Poly1305 basieren, eine praktischere Wahl sind. Vieles hängt von den Kompromissen ab Galois-Feldmultiplikationen sind in der Software ein Albtraum, aber viel einfacher als arithmetische Multiplikationen in der Hardware. Ein guter Teil der Kompromisse hängt auch von der Anfälligkeit für Seitenkanalangriffe ab, z. B. Leistungsanalyse

Es gibt jedoch keine Debatte darüber, ob entweder Galois-Felder oder Prim-Felder grundsätzlich unsicher sind nd. Die Mathematik überprüft beide.

Ja, Leistung! Aber seien wir ehrlich, ist das wirklich ein Vorteil oder eher ein großer Nachteil?

Erzählen Sie das den endlosen Paraden von Ingenieuren im Laufe der Jahrzehnte, die haben sich aus Leistungsgründen geweigert, Produkte zu verschlüsseln. Und denken Sie nicht nur an leistungsstarke PCs. Denken Sie an eingebettete Geräte und haben Sie große Angst vor dem Internet der Dinge.

Ich meine, dies ist überhaupt kein totes Problem. In den letzten Jahren gab es eine heftige Debatte und die Entwicklung einer neuartigen kryptografischen Konstruktion zur Unterstützung der Festplattenverschlüsselung auf Low-End-Android-Geräten, die beurteilt wurden nicht leistungsfähig genug für die AES-basierten Algorithmen, die Android zuvor angeboten hat.

Die einzigen, für die [Leistung] wirklich einen Unterschied macht, sind die „Bösen“, dh genau diejenigen, die Sie nicht haben möchten einfaches Leben. Sicher genug, wenn Sie trivial parallelisieren können, werden Angriffe viel einfacher. Werfen Sie einen Raum voller dedizierter Hardware (GPUs, FPGAs, was auch immer) auf das Problem und lassen Sie es wegschleifen.

Chiffren lösen dieses Problem, indem sie ausreichend große Schlüsselgrößen verwenden und nicht die Chiffren verlangsamen. Die Bedenken, die Sie ansprechen, treten in der passwortbasierten Kryptographie auf, in der Sie sich nicht befinden „Keine ausreichend entropischen geheimen Schlüssel. Symmetrische 256-Bit-Schlüssel werden für immer mehr als groß genug sein, um jeden Brute-Force-Angriff in unserem Universum zu vereiteln.

Was ist Die grundlegende Sache, die mir an GCM fehlt, macht es so großartig, dass Sie es unbedingt verwenden sollten?

Sie müssen GCM nicht unbedingt verwenden Es ist zur gleichen Zeit:

  • Fundamentall y Sound und in der Hardware sehr weit verbreitet;
  • Belastet durch eine Reihe von Nachteilen, die Sie nicht angesprochen haben, wie schlechte Softwareleistung und katastrophale Authentizitätsfehler bei Nicht-Wiederverwendung, die es in einigen praktischen Zusammenhängen häufig disqualifizieren .

Wenn Sie über Hardware mit nativer AES-GCM-Unterstützung und gut geprüfter Software verfügen, die diese nutzt, ist es unklug, sie nicht unter Ihren Top-Kandidaten zu haben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.