it-swarm-eu.dev

Vor- und Nachteile von Stream gegenüber Blockchiffren

Verschlüsselungsalgorithmen wie Blowfish, AES, RC4, DES und Seal sind in einer von zwei Kategorien von Chiffren implementiert. Was sind die Vor- und Nachteile der Art der Chiffren?

66
Eric Warriner

Während beide symmetrische Chiffren sind, basieren Stream-Chiffren darauf, einen "unendlichen" kryptografischen Schlüsselstrom zu erzeugen und diesen zu verwenden, um jeweils ein Bit oder Byte zu verschlüsseln (ähnlich dem einmaligen Pad), während Blockchiffren mit größeren Datenblöcken arbeiten (dh Blöcke) gleichzeitig, wobei häufig Blöcke für zusätzliche Sicherheit kombiniert werden (z. B. AES im CBC-Modus).

  • Stream-Chiffren sind normalerweise schneller als Block-Chiffren, aber das hat seinen eigenen Preis.
  • Blockchiffren benötigen normalerweise mehr Speicher, da sie mit größeren Datenblöcken arbeiten und häufig von früheren Blöcken "übertragen" werden, während Stream-Chiffren nur mit wenigen Bits gleichzeitig arbeiten und daher einen relativ geringen Speicherbedarf haben (und daher billiger sind) Implementierung in begrenzten Szenarien wie eingebetteten Geräten, Firmware und insbesondere Hardware).
  • Stream-Chiffren sind schwieriger korrekt zu implementieren und aufgrund der Verwendung anfällig für Schwachstellen. Da die Prinzipien dem One-Time-Pad ähneln, gelten für den Keystream sehr strenge Anforderungen. Auf der anderen Seite ist dies normalerweise der schwierige Teil und kann auf z. eine externe Box.
  • Da Blockchiffren jeweils einen ganzen Block verschlüsseln (und darüber hinaus "Feedback" -Modi haben, die am meisten empfohlen werden), sind sie anfälliger für Übertragungsrauschen. Wenn Sie also einen Teil der Daten durcheinander bringen, ist der Rest wahrscheinlich der Rest nicht behebbar. Während bei Stream-Chiffren Bytes ohne Verbindung zu anderen Datenblöcken (in den meisten Chiffren/Modi) einzeln verschlüsselt werden und häufig Unterbrechungen in der Leitung unterstützen.
  • Außerdem bieten Stream-Chiffren keinen Integritätsschutz oder keine Authentifizierung, wohingegen einige Block-Chiffren (je nach Modus) zusätzlich zur Vertraulichkeit einen Integritätsschutz bieten können.
  • Aus all diesen Gründen eignen sich Stream-Chiffren normalerweise am besten für Fälle, in denen die Datenmenge entweder unbekannt oder kontinuierlich ist - beispielsweise bei Netzwerk-Streams. Blockchiffren hingegen oder nützlicher, wenn die Datenmenge bereits bekannt ist - z. B. eine Datei, Datenfelder oder Anforderungs-/Antwortprotokolle wie HTTP, bei denen die Länge der Gesamtnachricht bereits am bekannt ist Anfang.
48
AviD

Eine Blockverschlüsselung ist ein vielseitiger Algorithmus, der eine schlüsselabhängige Permutation von Werten implementiert, die Sequenzen einer festen Anzahl von Bits sind (als "Blöcke" bezeichnet). Es kann für verschiedene Rollen in vielen Arten von kryptografischen Protokollen verwendet werden. Eine solche Rolle ist die Massenverschlüsselung langer Datenströme. Um so etwas zu erreichen, muss die Blockverschlüsselung mit einem geeigneten Betriebsmodus (auch als "Verkettungsmodus" bezeichnet) verwendet werden, wobei der traditionelle Modus CBC und der trendigere neuere Modus CTR ist.

Eine Stream-Verschlüsselung ist ein spezialisierter Algorithmus zum Zweck der Massenverschlüsselung langer Datenströme. Die Idee ist, dass es durch den Verlust der Vielseitigkeit der Blockverschlüsselung möglich wäre, einen effizienteren Algorithmus zu erstellen (d. H. Etwas, das Daten verschlüsselt schneller).

Sowohl Blockchiffren mit einem Stream-orientierten Verschlüsselungsmodus als auch Stream-Chiffren können auf Sicherheitsprobleme stoßen, wenn derselbe Schlüssel zweimal für zwei unterschiedliche Streams verwendet wird, ohne dass ein geeigneter, eindeutiger/zufälliger Wert vorhanden ist Initialisierungsvektor. Für die CBC-Verschlüsselung muss die IV für jede neue Nachricht eine neue, gleichmäßig zufällige Folge von Bits sein, die dieselbe Größe wie ein Block haben. Gute Stream-Chiffren akzeptieren auch eine IV. Eine traditionelle Stream-Chiffre namens RC4 ist IV-frei (ihre Spezifikation gibt nicht an, wo oder wie eine IV eingefügt werden könnte), was zu viel Chaos führte und dem Konzept der Stream-Chiffren einen schlechten Namen gab.

Neuere, sicherere (und schnellere) Stream-Chiffren finden Sie im eSTREAM-Portfolio . Diese Algorithmen wurden von vielen Kryptographen ziemlich gründlich analysiert und gelten als "ziemlich sicher".

Eine Stream-Verschlüsselung kann durch Verschlüsseln einer langen Folge von Bytes mit dem Wert Null in einen Pseudozufallszahlengenerator umgewandelt werden. Tatsächlich arbeiten viele (aber nicht alle) Stream-Chiffren intern als PRNG und erzeugen eine lange Folge von schlüsselabhängigen pseudozufälligen Bytes, die anschließend (durch bitweises XOR) mit den zu verschlüsselnden (oder zu entschlüsselnden) Daten kombiniert werden Das Verschlüsseln von Null-Bytes entspricht dann dem Weglassen von XOR insgesamt. Daher werden Stream-Chiffren häufig als benutzerdefiniertes PRNG verwendet.

26
Thomas Pornin

Ein Vorteil von Stream-Chiffren, die zuvor nicht erwähnt wurden, besteht darin, dass sie nicht aufgefüllt werden müssen (Block-Chiffren arbeiten mit vollständigen Blöcken. Wenn Sie also nicht über genügend Daten verfügen, müssen Sie irgendwie weitere generieren). Und Überraschung (nicht wirklich, Kryptographie ist das Gebiet, in dem Murphy überall ist), Padding kann falsch gemacht werden, wie zum Beispiel in Practical Padding Oracle Attacks .

Auch die Sicherheit von Blockchiffren hängt ziemlich stark von ihrer Funktionsweise ab. Manchmal wird hier und da immer noch die EZB verwendet, und sie ist nicht viel besser als gar keine Krypto.

Grundsätzlich kann man nicht sagen, dass eines besser ist als das andere. Man muss sich ein komplettes Kryptosystem ansehen, um ein Sicherheitsurteil zu fällen.

9
Bruno Rohée

Stream-Chiffren krypten die Klartextdaten mit einem zufälligen Bitstrom (normalerweise mit einem XOR, da dies leicht rückgängig gemacht werden kann). Wenn Sie 128-Bit-Daten haben, verwenden Sie einen 128-Bit-Psedurandom-Strem ( Ihren Schlüssel) zu verschlüsseln.

Blockchiffren krypten die Klartextdaten blockweise mit derselben Transformation (basierend auf dem Schlüssel). Sie haben also Ihre 128-Bit-Daten, die Chiffre zerlegt sie in Blöcke (wie 4 Blöcke mit 32 Bit) und wendet dieselbe Transformation auf jeden Block an, der 4 verschlüsselte Blöcke erhält, die zusammen das endgültige Kryptogramm bilden.

Aus diesem Grund sind Block Cyphers natürlich sicherer, aber in Bezug auf die damit verbundene Hardwarekomplexität teuer zu verwenden. Stream-Chiffren sind schneller und "billig", können aber bei falscher Implementierung anfällig für Sicherheitsprobleme sein.

1
gbr