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?
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?
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 bei größeren arbeiten Datenblöcke (dh Blöcke) gleichzeitig, wobei häufig Blöcke für zusätzliche Sicherheit kombiniert werden (z. B. AES im CBC-Modus).
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 dies 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 durch den Verlust der Vielseitigkeit der Blockverschlüsselung ein effizienterer Algorithmus erstellt werden kann (dh etwas, das Daten schneller >) verschlüsselt.
Beide Blockchiffren Bei einem Stream-orientierten Verschlüsselungsmodus und Stream-Chiffren können Sicherheitsprobleme auftreten, wenn derselbe Schlüssel zweimal für zwei unterschiedliche Streams verwendet wird, ohne dass ein geeigneter, eindeutig / zufällig genug Initialisierungsvektor vorhanden ist. 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 (in ihrer Spezifikation ist nicht angegeben, 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 konvertiert 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 des XOR insgesamt. Daher werden Stream-Chiffren häufig als benutzerdefiniertes PRNG verwendet.
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 mehr generieren). Und Überraschung (nicht wirklich, Kryptographie ist das Gebiet, in dem Murphy überall ist), das Auffüllen kann falsch gemacht werden, wie zum Beispiel in Praktisches Auffüllen von Oracle-Angriffen.
Auch Sicherheit von Blockchiffren Es 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 eine besser ist als die andere. Man muss sich ein komplettes Kryptosystem ansehen, um ein Sicherheitsurteil zu fällen.
Stream-Chiffren krypten die Klartextdaten mit einem zufälligen Bitstrom (normalerweise mit einem XOR, da sie leicht umgekehrt werden können). Wenn Sie über 128-Bit-Daten verfügen, verwenden Sie zum Verschlüsseln einen 128-Bit-Psedurandom-Strem (Ihren Schlüssel).
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 Bits) und wendet dieselbe Transformation auf jeden Block an, der 4 verschlüsselte Blöcke erhält, die zusammen das endgültige Kryptogramm bilden.
Of Aus diesem Grund sind Block-Chiffren sicherer, aber in Bezug auf die damit verbundene Hardwarekomplexität teuer. Stream-Chiffren sind schneller und "billig", können jedoch bei falscher Implementierung für Sicherheitsprobleme anfällig sein.
Daten (das zu verschlüsselnde Material) kommen normalerweise in Streams. Um es zu verschlüsseln, müssen wir eine Stream-Verschlüsselung verwenden, dh einen Verschlüsselungsalgorithmus, der für die Verwendung in einem Datenstrom geeignet ist. Ein Stream ist eine Folge von Bits (oder Bytes) beliebiger, variierender oder nicht spezifizierter Länge.
Die besten Chiffren, die wir bisher erfunden haben, sind normalerweise Blockchiffren. Eine Blockverschlüsselung kann einen einzelnen Datenblock fester Größe verschlüsseln. und nach den Beweisen um uns herum ist es anscheinend einfacher, gute Blockchiffren zu erstellen als Streamchiffren.
Gute Nachrichten. Durch die Verwendung einer bestimmten Blockverschlüsselung in bestimmten Mustern (eine "Betriebsart") und mit Hilfe bestimmter Auffüllstrategien können wir jede Blockverschlüsselung in eine Stream-Verschlüsselung umwandeln! Das heißt, wir können die besseren Chiffren, die Blockchiffren sind, verwenden, um alle Daten zu verschlüsseln, von denen der Großteil in Streams vorliegt.