Frage

Ich überprüfe einen Teil des Codes mithilfe der PHP McRypt -Bibliothek, um einige binäre Daten mithilfe der Blowfish -Chiffre zu verschlüsseln. Grundsätzlich erzeugt es einen Blowfish -Deskriptor in der MCRYPT_MODE_CBC Modus und ruft dann das auf mcrypt_generic_init Funktion mit dem iv Parameter entspricht immer '12345678'.

Vereinfachte Codeextraktion:

$cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
mcrypt_generic_init($cipher, $key, '12345678');

Dokumentation für die McRypt-Generic-Init Funktion sagt folgt:

Die IV sollte normalerweise die Größe der Algorithmenblockgröße haben, aber Sie müssen die Größe erhalten, indem Sie mcRypt_enc_get_iv_size () aufrufen. IV wird in EZB ignoriert. IV muss in CFB-, CBC-, Stream-, NOFB- und OFB -Modi existieren. Es muss zufällig und einzigartig sein (aber nicht geheim). Die gleiche IV muss zur Verschlüsselung/Entschlüsselung verwendet werden. Wenn Sie es nicht verwenden möchten, sollten Sie es auf Nullen einstellen, dies wird jedoch nicht empfohlen.

Meine Fragen sind:

Wofür wird dieser Parameter verwendet? Verwendet einen solchen Wert der iv Parameter eine Schwäche? Ich bin mir nicht sicher, weil es gesagt wird, dass es nicht geheim sein muss, also kann ein Angreifer es irgendwie erhalten. Wenn es sich nicht um eine Schwäche handelt und ein solcher Wert dieses Parameters vollkommen in Ordnung ist, warum wird dann nicht empfohlen? Wäre es wesentlich besser, eine Pseudo -Zufallszeichenfolge anstelle von '12345678' zu harten?

War es hilfreich?

Lösung

Es ist der Initialisierungsvektor:

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

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