Meine Abteilung bei der Arbeit wird von den Kräften benötigt, eine Verschlüsselungsbibliothek zu verwenden, die von einer anderen Abteilung geschrieben wurde. Das Problem ist, dass die Verschlüsselungsbibliothek ihr AES fest codiert hat Zählermodus-Initialisierungsvektor (Nur-Nullen). (Im Grunde nahm die andere Abteilung die Bouncycastle-Bibliothek und wickelte ihren eigenen kaputten Code darum herum.) Wir haben die Probleme mit diesem Code für die Befugnisse dokumentiert, so dass wir, wenn das Management nicht beschließt, eine kaputte Verschlüsselungsbibliothek verwenden .AES Counter-Modus - Verschlüsselungsbibliothek hat seinen Initialisierungsvektor fest codiert
Ich frage mich, ob wir einen richtigen Initialisierungsvektor vortäuschen könnten, indem wir eine eindeutige IV dem Klartext voranstellen und dann die ersten sechzehn Bytes Klartext nach der Entschlüsselung abschneiden, z.
ciphertext = encrypt(++sixteenByteCounter + plaintext)
plaintext = decrypt(ciphertext).subArray(16, ciphertext.length)
Das scheint mir gut, aber ich bin kaum ein Kryptographie-Experte
Nein, nichts abzuschneiden wird nichts nützen :). IV wird für Verkettungsmodi verwendet und nimmt an der Verschlüsselung teil. –
@ EugeneMayevski'EldoSCorp Eine IV wird üblicherweise auch als Anfangswert für die Nonce-Verschlüsselung im Zählermodus verwendet. Und ich denke, es ging darum, mehr Sicherheit zu bekommen, indem man einen Wert vorlegt und den entschlüsselten Klartext nicht abschneidet. –
Es wird dir nichts nützen. Das oberste 96-Bit des Zählers MUSS für jede Nachricht eindeutig sein, andernfalls wird ein einfacher Xor zwischen Nachrichten Ihre Daten gefährden. Hinzufügen von Junk zu verschlüsselt werden hier nicht helfen. Die Implementierung muss geändert werden. –