web-dev-qa-db-ger.com

Gibt es einen Unterschied zwischen der aes-128-cbc- und der aes-128-Verschlüsselung?

Ich möchte wissen, ob es einen Unterschied zwischen diesen beiden Verschlüsselungsmethoden gibt? Ich habe diese noch nie benutzt. Mein Client bat mich, die AES-128-Verschlüsselung zu verwenden, aber wenn ich sie google, werden mir "aes-128-cbc", "aes-128-ctr", "aes-256-cbc" oder "aes-256-ctr" angezeigt "also möchte ich wissen, welche ich verwenden soll, wie AES-128?

referenzlink: hier muss ich die Verschlüsselungsmethode senden

9
Umair Malik

3 Dinge:

  • AES: Advanced Encryption Standard. Dies ist der Name des Verschlüsselungsalgorithmus (symmetrische Verschlüsselung). Andere symmetrische Verschlüsselungsalgorithmen sind: DES, 3-DES usw.
  • 128: Dies bezieht sich wahrscheinlich auf die Schlüsselgröße. Die AES-Verschlüsselung verwendet 3 Schlüsselgrößen (128 Bit, 192 Bit und 256 Bit). Die Blockgröße in AES beträgt ebenfalls 128 Bit.
  • CBC: Dies ist der von Ihnen gewünschte Verschlüsselungsmodus. Es gibt eine Reihe von Verschlüsselungsmodi, die davon abhängen, wie schnell der Algorithmus arbeiten soll, wie parallel er ist und wie hoch die Sicherheit ist. Einige Modi sind CBC (Cipher Block Chaining), EZB (Elektronisches Codebuch), CFB (Cipher Feed Back), CTR (Zähler) usw.

Ihr Client hat Sie nun aufgefordert, mit AES-128 zu verschlüsseln. Daher sollten Sie die AES-Verschlüsselung mit einer Schlüsselgröße von 128 Bit verwenden. Jeder Modus, den Sie verwenden können, wird von Ihnen bevorzugt. Ich würde CBC vorziehen.

24
vish4071

Nur ein kurzer Hinweis zu CBC vs. EZB. Wenn Sie mit ECB verschlüsseln, werden alle 128 Bit (abhängig von der Blockgröße) der Daten mit demselben Schlüssel verschlüsselt. Wenn sich im Klartext Muster befinden, ist der resultierende verschlüsselte Text auch vorhersagbar, unabhängig davon, wie gut der Verschlüsselungsalgorithmus ist.

EZB:

Plain text: aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa
            ---------------- ---------------- ----------------
Encrypted:  bdefjakjapqeiowp bdefjakjapqeiowp bdefjakjapqeiowp

Wenn Sie CBC verwenden, wird der erste Block mit dem IV (Initialisierungsvektor) XOR-verknüpft und mit dem Schlüssel verschlüsselt. Der zweite Block wird mit dem ersten Block XOR-verknüpft und dann mit dem Schlüssel, dem dritten mit dem zweiten verschlüsselt. Die resultierende Chiffre ist dann weniger anfällig für die Frequenzanalyse .  CBC Encryption mode

Dieses Bild stammt aus Wikimedia Commons, dem Archiv für freie Medien.

Der Nachteil ist, dass Sie die Verschlüsselung/Entschlüsselung nicht parallelisieren können, da Sie das Ergebnis des vorherigen Blocks benötigen, sodass es langsamer sein kann. In der Praxis macht es jedoch keinen wirklichen Unterschied.

15
Vincent

Wenn Sie sich den Link ansehen, den Sie mit aufgenommen haben, werden verschiedene Modi akzeptiert, einschließlich CBC. Verwenden Sie AES-128-CBC, es sei denn, Sie haben einen bestimmten Grund, es nicht zu verwenden. Der CBC-Modus ist ein guter Allzweckmodus. Sie müssen auch die Verwendung von Padding (verwenden Sie PKCS # 5 oder PKCS # 7 (je nachdem, was Ihr System erlaubt) verwenden) und einen Initialisierungsvektor (IV) verstehen, damit der CBC-Modus ordnungsgemäß funktioniert.

Verwenden Sie nicht den ECB-Modus, da dies unsicher ist und Informationen verliert.

3
rossum

Hier aes-128-cbc und aes-128. aes steht für Advanced Encryption Service, 128 ist die Bitrate und CBC ist der Verschlüsselungsmodus.

Dies wird jedoch nur in OPEN SSL-Formaten angegeben und verwendet. Vor <Open SSL> verwendete PHP mcrypt_encrypt, der nicht ordnungsgemäß entworfen wurde (ältere Versionen von PHP) .aes-128 kann auch als rijndael bezeichnet werden, während mcrypt verwendet wird.

0
Raghu Veera