Ich habe einen zufälligen 256-Bit-symmetrischen Schlüssel in einer Datei generiert, um einige Daten mit der OpenSSL-Befehlszeile zu verschlüsseln, die ich später programmgesteuert mithilfe der OpenSSL-Bibliothek entschlüsseln muss. Ich habe keinen Erfolg, und ich denke, das Problem könnte in dem Initialisierungsvektor liegen, den ich verwende (oder nicht verwende).Wie lautet die Standard-IV bei der Verschlüsselung mit der aes_256_cbc-Chiffre?
ich verschlüsseln die Daten mit diesem Befehl:
/usr/bin/openssl enc -aes-256-cbc -salt -in input_filename -out output_filename -pass file:keyfile
ich den folgenden Aufruf bin mit der Entschlüsselung der Daten zu initialisieren:
EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), nullptr, keyfile.data(), nullptr))
keyfile
ist ein vector<unsigned char>
, die die 32 Bytes hält des Schlüssels. Meine Frage bezieht sich auf diesen letzten Parameter. Es soll ein Initialisierungsvektor für den Verschlüsselungsalgorithmus sein. Ich habe beim Verschlüsseln keine IV angegeben, daher muss ein Standard verwendet worden sein.
Bedeutet das Übergeben von nullptr für diesen Parameter "den Standard verwenden"? Ist der Standardwert null und dem ersten Verschlüsselungsblock wird nichts hinzugefügt?
Ich sollte erwähnen, dass ich aus der Befehlszeile entschlüsseln kann, ohne eine IV zu liefern.
Würde die Verwendung von IV (oder einem festen Standardwert) die Stärke der Verschlüsselung nicht ernsthaft untergraben? Nach meinem Verständnis besteht der Zweck der IV darin, sicherzustellen, dass der identische Klartext keinen identischen Chiffretext erzeugt. Es muss also ein IV sein, es muss nicht geheim sein, es muss nur für alles, was Sie verschlüsseln, einzigartig sein. Nicht einen (oder einen festen) zu verwenden klingt wie eine sehr schlechte Idee. –
Ich bin kein Kryptograf, noch spiele ich einen im Fernsehen, deshalb bin ich wirklich nicht qualifiziert zu antworten (daher warum das obige nur ein Kommentar war).Als Nicht-Experte würde ich raten, dass, solange der Schlüssel jedes Mal einzigartig ist, es wahrscheinlich in Ordnung ist, aber dann als Pragmatiker, der weiß, dass er zu wenig über Verschlüsselung weiß, würde ich wahrscheinlich auch einen zufälligen IV verwenden. trotzdem * und speichern Sie es zusammen mit den verschlüsselten Daten. –
Ich habe einige Informationen darüber gefunden: [Antwort auf crypto.stackexchange.com In Bezug auf die Verwendung der gleichen IV mit verschiedenen Schlüsseln für jeden Klartext.] (Http://crypto.stackexchange.com/questions/8600/why-shouldi-i- use-an-initialization-vector-iv-wenn-ich-habe-eindeutige-keys) – Steve