2016-06-05 10 views
0

Ich möchte effizienter einen zufälligen Schlüssel und eine zufällige IV für die Verschlüsselung generieren. Aber ist es praktikabel und sicher, den Zufallsschlüssel als IV zu verwenden?Können wir den Schlüssel als IV für AES verwenden?

+1

Ich stimme, diese Frage als off-topic zu schließen, weil es nicht um Programmierung geht. Es ist auch ein Cross-Site-Duplikat von [Probleme mit der Verwendung von AES-Schlüssel als IV im CBC-Modus] (http://crypto.stackexchange.com/questions/16161/problems-with-using-aes-key-asi-iv- In-CBC-Modus). –

Antwort

1

Sie könnten, aber es wäre nicht sicher.

Die übliche Praxis besteht darin, eine kryptografisch sichere zufällige Byte-Sequenz für die iv zu verwenden und den iv den verschlüsselten Daten voranzustellen. Dies ermöglicht, dass die Entschlüsselungsfunktion dasselbe hat.

Durch die Verwendung einer zufälligen iv, wenn die gleiche Nachricht mit dem gleichen Schlüssel verschlüsselt wird der Chiffre Text anders sein, usia der Schlüssel wird den gleichen Chiffre Text erlauben. Wenn Sie den gleichen verschlüsselten Text haben, können Sie wichtige Informationen preisgeben.

Handelseffizienz für Sicherheit ist keine gute Idee, und wenn es nicht bewiesen ist, dass die zusätzliche Effizienz durch Benchmark-Tests benötigt wird, ist dies eine vorzeitige Optimierung.

Donald Knuth:

Das eigentliche Problem ist, dass Programmierer über Effizienz viel zu viel Zeit damit verbracht haben wir Gedanken an den falschen Stellen und zu den falschen Zeiten; vorzeitige Optimierung ist die Wurzel allen Übels (oder zumindest des größten Teils davon) in der Programmierung.

0

Sie verdoppeln Ihr Sicherheitsproblem. Ein gewöhnlicher IV kann mit der ihm üblicherweise vorangestellten Chiffretext-Nachricht versandt werden. Wenn Ihre IV der gleiche wie der Schlüssel ist, dann müssen Sie die IV so sicher wie den Schlüssel halten, was bedeutet, dass Sie nicht wie gewohnt vorgehen können. Sie müssen einen "IV-Austausch" -Prozess zu Ihrem "Schlüsselaustausch" -Prozess hinzufügen.

All das ist zusätzliche Arbeit. Einfacher ein Standard-CSPRNG zu verwenden, um Ihre IV zu produzieren und vorzuziehen.

+0

True, aber es fehlt der Punkt einer IV, die die Verwendung eines einzelnen Schlüssels für viele verschiedene Nachrichten ermöglicht. Mit Schlüssel = IV müssen Sie jede Nachricht aus Sicherheitsgründen in einen neuen Schlüssel ändern. Ein IV ist nur gut für eine Nachricht; Ein Schlüssel kann für viele Nachrichten verwendet werden, solange sie nicht zu groß sind. – rossum

+0

Ja und das ist nicht die Botschaft der Antwort. Die Antwort ist, etwas geheim zu halten, wenn es tatsächlich nichts Zusätzliches gibt. – zaph