Frage

Ist es empfehlenswert, dass ich eine Initialisierungsvektor verwenden zum Verschlüsseln / Entschlüsseln meine Daten? Wird es Dinge sicherer machen? Ist es eines dieser Dinge, die auf einem von Fall zu Fall bewertet werden müssen?

Um dies zu in tatsächlichen Kontext zu setzen, die Win32 Cryptography-Funktion, CryptSetKeyParam ermöglicht die Einstellung eines Initialisierungsvektor auf einen Schlüssel vor der Verschlüsselung / Entschlüsselung. Andere API auch dies ermöglichen.

Was wird allgemein empfohlen, und warum?

War es hilfreich?

Lösung

Eine IV ist von wesentlicher Bedeutung, wenn der gleiche Schlüssel jemals verwendet werden könne, mehr als eine Nachricht zu verschlüsseln.

Der Grund ist, weil unter den meisten Verschlüsselungsmodi, zwei Nachrichten mit dem gleichen Schlüssel verschlüsselt wurden, können zusammen analysiert werden. In einer einfachen Stromchiffre, zum Beispiel, ein XOR-Verknüpfung zwei Chiffriertexte mit den gleichen Schlüsseln Ergebnisse in der XOR der beiden Nachrichten verschlüsselten, aus denen die Klar leicht Techniken mit traditionellen cryptanalysis extrahiert werden.

Eine schwache IV ist Teil dessen, was gemacht WEP zerbrechlich.

Ein IV mischt im Grunde einige einzigartigen, nicht-geheimen Daten in den Schlüssel mit dem gleichen Schlüssel zu verhindern, je zweimal verwendet wird.

Andere Tipps

In den meisten Fällen sollten Sie IV verwenden. Da IV zufällig jedes Mal erzeugt wird, wenn Sie zweimal dieselben Daten zu verschlüsseln, verschlüsselte Nachrichten unterschiedlich sein werden und wird es unmöglich sein, für die Beobachter zu sagen, ob diese beiden Nachrichten identisch sind.

Nehmen Sie einen guten Blick auf ein Bild (siehe unten) von CBC-Modus. Sie werden schnell erkennen, dass ein Angreifer die IV zu wissen, wie der Angreifer ist es, einen vorherigen Block von zu wissen, Chiffretext (und ja, sie schon viel davon wissen).

Hier ist, was ich sagen: Die meisten der „Probleme“ mit IV = 0 sind die allgemeinen Probleme mit Blockverschlüsselungsmodus, wenn Sie nicht Datenintegrität sicherzustellen. Sie müssen wirklich Integrität gewährleisten.

Hier ist, was ich tun: Verwenden Sie eine starke Prüfsumme (Hash-Verschlüsselungs oder HMAC) und voranstellen, um sie Ihren Klartext vor der Verschlüsselung. Es ist Ihr bekannter erster Block von verschlüsseltem Text:. Es ist die IV der gleichen Sache, ohne die Prüfsumme, und Sie müssen die Prüfsumme für eine Million weitere Gründe

Schließlich:. Jede Analogie zwischen CBC und Stromchiffren ist nicht sehr aufschlussreich IMHO

Schauen Sie einfach auf das Bild des CBC-Modus, ich glaube, Sie werden angenehm überrascht sein.

Hier ist ein Bild:

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

Link-Text

fand ich die Zuschreibung von HTTP Digest Auth ( RFC 2617 ) sehr hilfreich bei der die Verwendung und die Notwendigkeit, das Verständnis für IVs / Nonces.

Wenn die gleiche Taste mehrmals für mehrere verschiedene Geheimnisse Muster verwendet wird, in den verschlüsselten Ergebnisse entstehen könnte. Die IV, die Pseudo-Zufall sein sollte und nur einmal mit jedem Schlüssel verwendet wird, ist es das Ergebnis zu verschleiern. Sie sollten nie zweimal die gleichen IV mit dem gleichen Schlüssel verwenden, dass der Zweck es besiegen würde.

Um müssen sich nicht die Mühe Spur der IV halten die einfachste Sache zu vorangestellt ist, oder es anhängen, zu dem resultierenden verschlüsselten Geheimnis. Auf diese Weise müssen Sie denken nicht viel darüber. Sie werden dann immer wissen, dass die ersten oder letzten N Bits ist die IV.

Wenn das Geheimnis zu entschlüsseln Sie nur die IV aufgeteilt, und es dann mit der Taste zusammen das Geheimnis zu entschlüsseln.

  

Ist es eines dieser Dinge, die von Fall zu Fall beurteilt werden müssen,   Basis?

Ja, es ist. Lesen Sie immer auf dem Spiel Chiffre Sie verwenden und wie sie ihre Eingaben erwartet aussehen. Einige Chiffren verwenden IVs nicht aber erfordern Salze sicher. IVs können unterschiedlich lang sein. Der Modus der Chiffre kann ändern, was die IV für verwendet wird (wenn es überhaupt verwendet wird) und, als Folge, welche Eigenschaften braucht es sicher (random, einzigartig, inkrementelle?) Zu sein.

Es wird allgemein empfohlen, weil die meisten Menschen mit AES-256 oder ähnlichen Blockchiffren in einem Modus ‚Cipher Block Chaining‘ genannt verwendet werden. Das ist eine gute, vernünftige Standard-Go-to für viele technische Anwendungen und es braucht man eine geeignete (nicht wiederholenden) IV zu haben. In diesem Fall ist es nicht optional.

Die IV ermöglicht Klartext solche verschlüsselt wird, dass der verschlüsselte Text härter ist für einen Angreifer zu entschlüsseln. Jedes Bit IV nutzen Sie die Möglichkeiten des verschlüsselten Textes von einem bestimmten Klartext verdoppeln.

Zum Beispiel, lassen Sie uns verschlüsseln ‚Hallo Welt‘ long eine IV ein Zeichen. Die IV wird zufällig zu sein, ‚X‘ ausgewählt. Der Text, der dann verschlüsselt wird, ist dann ‚xhello Welt‘, die, sagen wir, ‚asdfghjkl‘ yeilds. Wenn wir es wieder verschlüsseln, zuerst einen neuen IV erzeugen - sagen wir ‚b‘ diesmal - und verschlüsselt wie normal (also die Verschlüsselung ‚bhello Welt‘). Dieses Mal bekommen wir 'qwertyuio'.

Der Punkt ist, dass der Angreifer nicht weiß, was die IV ist und daher alle möglichen IV für einen gegebenen Klartext berechnen muss den passenden Chiffretext zu finden. Auf diese Weise wirkt die IV wie ein noreferrer"> Passwort Salz rel="nofollow

Wenn Sie also eine zufällige IV haben verwendet, um den Klartext zu verschlüsseln, wie entschlüsseln Sie es? Einfach. Übergeben Sie die IV (im Klartext) zusammen mit Ihrem verschlüsselten Text. über unser erstes Beispiel verwendet wird, würde der endgültige Chiffretext ‚xasdfghjkl‘ (IV + Chiffretext) sein.

Ja, sollten Sie eine IV verwenden, aber sicher sein, es richtig zu wählen. Verwenden Sie eine gute Zufallsquelle zu machen. Nicht immer die gleichen IV zweimal verwenden. Und nie verwenden eine Konstante IV.

Der Wikipedia-Artikel über Initialisierungsvektoren einen allgemeinen Überblick bietet.

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