AES-256 Verschlüsselung/Entschlüsselung ohne IV
Entwickle ich eine Anwendung, die Kommunikation mit einem DB befindet sich auf einem VPS.
Brauche ich zum abspeichern der Informationen mit AES-256 verschlüsselt, in meiner DB.
Wenn ich richtig bin, wenn ich verschlüsseln, gibt es eine IV-parameter generiert und ist für jede Verschlüsselung. Allerdings, wenn ich entschlüsseln, ich nicht über diese parameter, da ich nur den Schlüssel und den verschlüsselten text in die DB.
Was kann ich tun, um dieses problem zu lösen?
- Verwenden Sie den gleichen Schlüssel für mehr als einen Verschlüsselungs-operation?
- Ja ich benutze den gleichen Schlüssel zum verschlüsseln alle Daten auf DB
- Der IV ist nicht ein Geheimnis Wert; Sie können speichern Sie es in den klaren neben jeder verschlüsselte Wert
- Sollten Sie die Betriebsart (wie CBC oder CTR) in Frage. Die aktuellen Antworten, die davon ausgehen, CBC, aber ich sehe keinen Hinweis in der Frage, dass es das ist, was verwendet wird.
- Wenn Sie nicht speichern kann die IV überall dann könnten Sie überlegen, ob Format-Preserving Encryption (FPE).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie speichern Sie die Initialisierungs-Vektor-irgendwo. Weil, konzeptionell, im CBC Modus IV ist die "nullte" - block Chiffretext, einige Leute speichern Sie es als Präfix, um den Chiffretext. Die meisten low-level-Entschlüsselung Bibliotheken nicht erwarten, dass diese, jedoch, so dass die Anwendung der Regel braucht, um eine wrapper, Griffe hinzufügen das Präfix nach der Verschlüsselung und entfernen Sie es, bevor die Entschlüsselung.
Idealerweise sollten Sie die Speicherung von verschlüsselten Werte mit einigen Metadaten, die angibt, die Art der Verschlüsselung, die verwendet wurde, alle Parameter, die benötigt werden, und zeigt an, welche Taste (Hinweis unten!) verwendet wird. Dies würde auch die IV für ein block-cipher, die verwendet CBC. Ein standard-format für diese ist die Cryptographic Message Syntax, oder PKCS #7. Weil es ein standard ist, werden Sie wahrscheinlich haben mehrere Optionen für eine open-source-Bibliothek zu handhaben, das format.
Indem die Metadaten, die Sie tun können, Dinge wie drehen, Schlüssel im Laufe der Zeit, oder migrieren von Daten auf neuen algorithmen. Sie müssen nicht jeden Wert verschlüsselt der gleichen Weise mit dem gleichen Schlüssel.
Hinweis: Wenn ich sage, dass die Metadaten zeigt den Schlüssel verwendet, dies bedeutet nicht, dass der Schlüssel selbst ist natürlich eingeschlossen! Für pre-shared keys, es ist nur ein label, das Ihnen sagt, welche Taste auf Ihrem großen Schlüsselbund entschlüsselt die Nutzdaten. Für die Passwort-basierte Verschlüsselung, gäbe es Informationen darüber, wie, um daraus einen richtigen Schlüssel von der stillschweigenden Passwort.
Können Sie verketten sich die IV mit der Chiffretext (die Länge ist bekannt und konstant ist), oder Sie können speichern Sie Sie nebeneinander in der DB. Der IV ist nicht geheim; nur sorgt dafür, dass der block cipher initialisiert wird anders pro-Verschlüsselung, so dass brute-forcing eine Datei Entschlüsselung nicht zu Lasten aller anderen.