Vor- und Nachteile von Stream gegenüber Blockchiffren

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

Antwort

Während beide symmetrische Chiffren sind, basieren Stream-Chiffren auf Erzeugen eines „unendlichen“ kryptografischen Schlüsselstroms und Verschlüsseln von jeweils einem Bit oder Byte (ähnlich dem einmaligen Pad), während Blockchiffren jeweils mit größeren Datenblöcken (dh Blöcken) arbeiten und häufig Blöcke kombinieren für zusätzliche Sicherheit (zB AES im CBC-Modus).

  • Stream-Chiffren sind normalerweise schneller als Block-Chiffren, aber das hat seinen eigenen Preis.
  • Block-Chiffren benötigen normalerweise mehr Speicher, da sie mit größeren Datenblöcken arbeiten und haben oft „Übertragungen“ von vorherigen Blöcken, wohingegen Stream-Chiffren, da sie jeweils nur mit wenigen Bits arbeiten, einen relativ geringen Speicherbedarf haben (und daher in begrenzten Szenarien wie eingebetteten Geräten, Firmware und insbesondere Hardware billiger zu implementieren sind). .
  • Stream-Chiffren sind schwieriger korrekt zu implementieren und aufgrund der Verwendung anfällig für Schwachstellen. Da die Prinzipien dem One-Time-Pad ähneln, stellt der Keystream sehr strenge Anforderungen. s ist 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 einen Teil des Blocks durcheinander bringen Daten, der Rest ist wahrscheinlich nicht wiederherstellbar. 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.
  • Stream-Chiffren bieten auch 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 den oben genannten Gründen Stream-Chiffren eignen sich normalerweise am besten für Fälle, in denen die Datenmenge entweder unbekannt oder kontinuierlich ist – beispielsweise bei Netzwerk-Streams. Blockchiffren hingegen sind nützlicher, wenn die Datenmenge bereits bekannt ist, z. B. eine Datei, Datenfelder oder Anforderungs- / Antwortprotokolle, z. B. HTTP, bei denen die Länge der Gesamtnachricht bereits bekannt ist Anfang.

Kommentare

  • Das zweite Aufzählungszeichen ist nicht korrekt. Der Speicherunterschied aufgrund der Übertragung von “ “ von früheren Blöcken ist vernachlässigbar und viel geringer als der Speicherunterschied von Algorithmus zu Algorithmus ( Vergleichen Sie beispielsweise RC4 mit seinen 256 Bytes des internen Zustands mit AES mit 0 Bytes des internen Zustands in einigen Implementierungen. Die letzte Kugel macht falsche Unterscheidungen und ist ein schlechter Rat.
  • @ D.W. Die zweite Kugel war “ im Allgemeinen „, wie dies normalerweise der Fall ist (aber ich akzeptiere, dass es nicht genau ist).
  • @DW Haben Sie eine Grundlage für Ihren Kommentar zur letzten Kugel? Wo ist die falsche Unterscheidung und warum ist dies ein schlechter Rat?
  • Ja, ich habe eine Grundlage für meinen Kommentar zum letzten Punkt. Es scheint nur auf der ganzen Linie verwirrt. Blockchiffren eignen sich gut zum Streamen von Daten. siehe z. B. CBC-Modus, CTR-Modus usw. für verschiedene Betriebsmodi, die mit Streaming-Daten gut funktionieren. Blockchiffren sind nicht auf Fälle beschränkt, in denen die Datenmenge im Voraus bekannt ist. Ich ‚ kenne keinen Grund, Stream-Chiffren besser als Block-Chiffren für Streaming-Daten zu betrachten (trotz des Namens).
  • D.W. ist richtig: Das Wort ‚ Stream ‚ in Stream Cipher gibt an, dass es einen Schlüsselstrom gibt – einen Stream von Bits, der mit Klartext kombiniert wird Produziere den Chiffretext. Es spiegelt nicht die Klartextkomposition wider. Offensichtlich ist dies ein Detail, das Entwickler und Ingenieure oft verwirrt, mit denen letzteres normalerweise impliziert wird. Blockchiffren können verwendet werden, um Streaming-Klartext einwandfrei zu manipulieren. Ebenfalls oft verwirrend ist, dass Blockchiffren als Stream-Chiffre mit einer geeigneten Betriebsart und bei atomarer Blockgröße (z. B. 1 Byte) verwendet werden können.

Antwort

Eine Blockverschlüsselung ist ein vielseitiger Algorithmus, der einen Schlüssel implementiert. abhängige Permutation von Werten, 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 ist und der Der trendigere neuere Modus ist CTR.

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 herkömmliche Stream-Chiffre mit dem Namen 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 a ergab Schlechter Name für das Konzept der Stream-Chiffren.

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 in einen Pseudozufallszahlengenerator konvertiert werden durch Verschlüsseln einer langen Folge von Bytes mit dem Wert Null. 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.

Kommentare

  • Sie haben vergessen zu erwähnen, welche im Allgemeinen sicherer ist (Stream vs. Block).
  • Ich habe es nicht vergessen, weil die Behauptung keinen allgemeinen Sinn ergibt. Sowohl Block- als auch Stream-Chiffren können eine angemessene Sicherheit bieten, wenn sie ordnungsgemäß angewendet werden und ‚ keine strukturellen Schwächen aufweisen.
  • “ die Vielseitigkeit der Blockverschlüsselung “ Ich habe Probleme mit diesem Teil. Was macht eine Blockverschlüsselung von Natur aus vielseitiger? Blockchiffren können verwendet werden, um entweder beide Streams (z. B. TLS) oder paketierte Daten (z. B. ESP) und dieselben für Stream-Chiffren (z. B. TLS oder DTLS) zu verschlüsseln und zu authentifizieren. Es gibt Fälle, in denen eine Stream-Verschlüsselung “ natürlicher “ (z. B. Audio verschlüsseln) oder eine Blockverschlüsselung eher natürlich “ (z. B. Verschlüsselung von Datenträgern), aber ich sehe ‚ keine große Lücke in vernünftigen Anwendungen für beide.

Antwort

Ein Vorteil von Stream-Chiffren, die zuvor nicht erwähnt wurden, ist, dass sie nicht „Keine Auffüllung erforderlich (Blockchiffren arbeiten mit vollständigen Blöcken. Wenn Sie also nicht über genügend Daten verfügen, müssen Sie irgendwie mehr Daten generieren). Und Überraschung (nicht wirklich, Kryptographie ist das Feld, in dem Murphy überall ist), Auffüllung kann durchgeführt werden falsch, wie zum Beispiel in Praktisches Auffüllen von Oracle-Angriffen dargestellt.

Auch die Sicherheit von Blockchiffren hängt ziemlich stark von ihrer Funktionsweise ab sehe immer noch, dass die EZB hier und da manchmal verwendet wird und es ist nicht viel besser als keine Krypto a t all.

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.

Kommentare

  • zu Ihrem ersten Absatz: Es gibt Betriebsmodi für Blockchiffren, die ‚ nicht aufgefüllt werden müssen, z. B. CTR-Modus. Dies ist also kein Vorteil, der nur für das Streaming von Chiffren gilt. Aber +1 zu Ihrem letzten Absatz – gut gesagt!
  • Nun, ich ‚ würde sagen, CTR und OFB sind Konstruktionen, um eine Stream-Verschlüsselung aus einer Blockverschlüsselung zu erstellen. Das ‚ ist eine weitere großartige Sache mit Blockchiffren. Sie können leicht als Bausteine für andere Dinge verwendet werden, sei es Stream-Chiffren oder Einweg-Hashes. Stream-Chiffren sind nicht so vielseitig.
  • Sie haben vergessen zu erwähnen, welche im Allgemeinen sicherer ist (Stream gegen Block).
  • Keine ist von Natur aus sicherer, es ‚ ist wirklich so, wie Sie sie verwenden.

Antwort

Stream-Chiffren krypten die Klartextdaten mit einem zufälligen Bitstrom (normalerweise mit einem XOR, weil es leicht umgekehrt werden kann). 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 Bit) 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 zu verwenden. Stream-Chiffren sind schneller und „billiger“, können jedoch bei falscher Implementierung für Sicherheitsprobleme anfällig sein.

Kommentare

  • Der letzte Absatz enthält eine Reihe von sachlichen Fehlern. Blockchiffren sind im Allgemeinen weder sicherer noch notwendigerweise schlechter in der Hardware. Stream-Chiffren sind nicht unbedingt schneller oder billiger.
  • @DW: Ungeachtet dessen sind Stream-Chiffren normalerweise schneller oder billiger als Block-Chiffren, da ‚ s the deal: Ein weniger vielseitiger Algorithmus, der gegen eine verbesserte Leistung eingetauscht wird. Eine Stream-Verschlüsselung, die langsamer und teurer als AES / CTR ist, wird überhaupt nicht verwendet.
  • Sie haben vergessen zu erwähnen, welche im Allgemeinen sicherer ist (Stream vs. Block).

Antwort

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 die meisten in Streams vorliegen.

Kommentare

  • Der zweite Satz scheint irreführend. Sie können Streaming-Daten mithilfe einer Blockverschlüsselung verschlüsseln, indem Sie eine Reihe von Standardbetriebsmodi verwenden: z. B. CBC-Modus, CTR-Modus usw. AES-CBC ist immer noch eine Blockverschlüsselung. Tatsächlich unterstützt fast jede Standardbetriebsart für Blockchiffren bereits das Streaming von Daten. Darüber hinaus ist eine Blockverschlüsselung ohne einen Betriebsmodus nicht sicher, sodass ‚ nicht wie ein Betriebsmodus eine optionale Sache ist, die Sie nur benötigen, wenn Sie Streaming-Daten verschlüsseln möchten .

Schreibe einen Kommentar

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