615 Stimmen

Wie wählt man einen AES-Verschlüsselungsmodus (CBC ECB CTR OCB CFB)?

Welche von ihnen werden unter welchen Umständen bevorzugt?

Ich würde gerne die Liste der Bewertungskriterien für die verschiedenen Modi sehen und vielleicht eine Diskussion über die Anwendbarkeit der einzelnen Kriterien.

Zum Beispiel, Ich denke, eines der Kriterien ist die "Größe des Codes" für die Ver- und Entschlüsselung, was für eingebettete Systeme mit Mikrocode, wie 802.11-Netzwerkadapter, wichtig ist. WENN der für die Implementierung von CBC erforderliche Code viel kleiner ist als der für CTR (ich weiß nicht, ob das stimmt, es ist nur ein Beispiel), dann könnte ich verstehen, warum der Modus mit dem kleineren Code bevorzugt wird. Aber wenn ich eine Anwendung schreibe, die auf einem Server läuft, und die AES-Bibliothek, die ich verwende, implementiert ohnehin sowohl CBC als auch CTR, dann ist dieses Kriterium irrelevant.

Sehen Sie, was ich mit "Liste der Bewertungskriterien und Anwendbarkeit der einzelnen Kriterien" meine?

Das hat nicht wirklich etwas mit Programmierung zu tun, sondern mit Algorithmen.

10voto

Mark Lakata Punkte 18998

Sie sollten sich bei der Auswahl danach richten, was allgemein verfügbar ist. Ich hatte dieselbe Frage und hier sind die Ergebnisse meiner begrenzten Recherche.

Hardware-Einschränkungen

STM32L (low energy ARM cores) from ST Micro support ECB, CBC,CTR GCM
CC2541 (Bluetooth Low Energy) from TI supports ECB, CBC, CFB, OFB, CTR, and CBC-MAC

Grenzen der offenen Quelle

Original rijndael-api source  - ECB, CBC, CFB1
OpenSSL - command line CBC, CFB, CFB1, CFB8, ECB, OFB
OpenSSL - C/C++ API    CBC, CFB, CFB1, CFB8, ECB, OFB and CTR
EFAES lib [1] - ECB, CBC, PCBC, OFB, CFB, CRT ([sic] CTR mispelled)  
OpenAES [2] - ECB, CBC 

[1] http://www.codeproject.com/Articles/57478/A-Fast-and-Easy-to-Use-AES-Library

[2] https://openaes.googlecode.com/files/OpenAES-0.8.0.zip

-4voto

chris166 Punkte 4781

Ich kenne einen Aspekt: Obwohl CBC durch die Änderung der IV für jeden Block eine bessere Sicherheit bietet, ist es nicht auf verschlüsselte Inhalte anwendbar, auf die zufällig zugegriffen wird (wie eine verschlüsselte Festplatte).

Verwenden Sie also CBC (und die anderen sequentiellen Modi) für sequentielle Datenströme und ECB für den wahlfreien Zugriff.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X