AES (Advanced Encryption Standard) ist ein symmetrischer Blockverschlüsselungsalgorithmus, der 2001 vom National Institute of Standards and Technology (NIST) als offizieller Standard übernommen wurde. AES löste das veraltete DES ab und ist seitdem der am weitesten verbreitete Verschlüsselungsalgorithmus der Welt, der von Bankensystemen bis zu mobilen Anwendungen eingesetzt wird. Laut NIST (2023) bietet AES eine Sicherheit, die 2^256 Operationen für einen 256-Bit-Schlüssel entspricht, was es gegen moderne Brute-Force-Angriffe unverwundbar macht. NIST FIPS 197, 2023
Wichtige Punkte
AES (Advanced Encryption Standard) ist eine symmetrische Blockchiffre, die von den belgischen Kryptographen Joan Daemen und Vincent Rijmen unter dem Namen Rijndael entwickelt wurde. Im Jahr 2001 wählte NIST Rijndael nach fünf Jahren öffentlicher Tests und Analyse zum Gewinner des Wettbewerbs für einen neuen US-Verschlüsselungsstandard. AES arbeitet mit Datenblöcken fester Größe (128 Bit) und unterstützt drei Schlüssellängen: 128, 192 und 256 Bit. Die Anzahl der Transformationsrunden hängt von der Schlüssellänge ab: 10 Runden für 128 Bit, 12 für 192 Bit und 14 für 256 Bit. Jede Runde umfasst vier Operationen: SubBytes (nichtlineare Byte-Substitution via S-Box), ShiftRows (zyklisches Verschieben von Zeilen), MixColumns (Spaltenmischung) und AddRoundKey (XOR mit dem Rundenschlüssel).
Die Entwicklung von AES begann 1997, als NIST einen Wettbewerb zur Ablösung von DES ausrief, dessen 56-Bit-Schlüssel 1998 mit dem speziellen Gerät Deep Crack in 22 Stunden geknackt wurde. Fünfzehn Algorithmen aus verschiedenen Ländern nahmen teil, darunter Serpent (Großbritannien), Twofish (USA) und RC6 (USA). Bis zum Finale 1999 blieben 5 Kandidaten übrig. Rijndael gewann aufgrund seiner Kombination aus hoher Geschwindigkeit auf allen Plattformen (von 8-Bit-Mikrocontrollern bis zu 64-Bit-Servern), Resistenz gegen Kryptoanalyse und kompakter Hardware-Implementierung. Seit 2006 wird AES zur Verschlüsselung von als SECRET und TOP SECRET eingestuften Daten in US-Regierungssystemen verwendet. Heute ist AES in alle wichtigen Protokolle eingebettet: TLS 1.2/1.3, IPsec, SSH, Wi-Fi WPA2/WPA3 und Bluetooth BR/EDR.
AES verarbeitet Daten in Blöcken von 128 Bit (16 Byte), die als 4x4-Byte-Matrix namens State organisiert sind. Jede Verschlüsselungsrunde führt eine Folge deterministischer Transformationen durch, die gemeinsam einen Lawineneffekt erzeugen: Die Änderung eines Bits der Eingabedaten ändert etwa 50% der Ausgabebits. Dieser Effekt macht AES resistent gegen differentielle und lineare Kryptoanalyse — die primären Methoden zum Brechen von Blockchiffren.
Der Prozess beginnt mit AddRoundKey — XOR-Verknüpfung des Anfangsschlüssels mit dem State. Dann werden Runden ausgeführt: SubBytes ersetzt jedes State-Byte durch einen Wert aus der S-Box (Substitutionstabelle). ShiftRows verschiebt die zweite Zeile zyklisch um 1 Position, die dritte um 2, die vierte um 3 — dies gewährleistet die Durchmischung zwischen den Spalten. MixColumns multipliziert jede State-Spalte mit einer festen Matrix im Galois-Feld GF(2^8) und erzeugt eine Abhängigkeit jedes Ausgabebytes von allen vier Eingabebytes der Spalte. AddRoundKey XOR-verknüpft mit dem nächsten Rundenschlüssel, der durch Key Expansion aus dem ursprünglichen Schlüssel abgeleitet wird. Die letzte Runde enthält keine MixColumns-Operation. Die Entschlüsselung verwendet die inversen Operationen InvSubBytes, InvShiftRows, InvMixColumns und AddRoundKey in umgekehrter Reihenfolge. Für mobile Entwickler ist es nicht erforderlich, die interne Struktur von AES zu verstehen — es reicht zu wissen, wie man die integrierten APIs der Plattform mit korrekten Parametern aufruft.
Das Hauptmerkmal von AES, das seine kryptografische Stärke sicherstellt, ist der Lawineneffekt. Die Änderung eines Bits im Klartext oder Schlüssel führt zur Änderung von etwa 50% der Chiffretextbits, wodurch AES äußerst resistent gegen differentielle und lineare Kryptoanalyse wird. Die Kombination von SubBytes (Nichtlinearität via S-Box) und MixColumns (Diffusion via Galois-Feld-Multiplikation) erzeugt eine mathematische Komplexität, bei der selbst die Kenntnis eines Teils des Chiffretexts keine schnellere Schlüsselwiederherstellung als Brute-Force erlaubt. Laut NIST-Analyse (2018) reduziert der beste bekannte Angriff auf AES-128 — der Biclique-Angriff — die effektive Schlüssellänge nur um 2 Bit (auf 126,2 Bit), was dem Angreifer keinen praktischen Vorteil bietet. Für AES-256 existieren keine praktisch durchführbaren Angriffe, die über Brute-Force hinausgehen.
AES unterstützt drei Schlüsselgrößen, die jeweils einer bestimmten kryptografischen Stärke entsprechen. Die Wahl der Schlüsselgröße beeinflusst Sicherheit, Leistung und Geräteressourcenanforderungen.
| Schlüsselgröße | Anzahl der Runden | Sicherheitsstufe | Anwendung |
|---|---|---|---|
| AES-128 | 10 | 128 Bit | Kommerzielle Anwendungen, TLS |
| AES-192 | 12 | 192 Bit | Regierungssysteme (SECRET) |
| AES-256 | 14 | 256 Bit | TOP SECRET, Finanzsektor |
Praktische Regel: Für mobile Anwendungen standardmäßig AES-256 verwenden. Der Leistungsunterschied zwischen AES-128 und AES-256 auf modernen Geräten mit AES-NI-Unterstützung beträgt nicht mehr als 10–15%, aber die Sicherheitsstufe verdoppelt sich. Laut Quantenanalyse (Grassl et al., 2016) würde das Knacken von AES-128 2^77 Quantenoperationen über Grovers Algorithmus erfordern, während AES-256 2^149 benötigen würde, was AES-256 für die nächsten 20–30 Jahre resistent gegen Quantenangriffe macht. Selbst AES-128 bietet ausreichenden Schutz für die überwältigende Mehrheit kommerzieller Szenarien: Das Brute-Forcen eines 128-Bit-Schlüssels würde nach Bruce Schneiers Schätzung mehr Energie erfordern, als im Universum existiert. Allerdings verlangen Sicherheitsstandards (GDPR, HIPAA, PCI DSS) oft explizit AES-256, daher sollten Produktionsprojekte die maximale Schlüssellänge verwenden.
AES als Blockchiffre verschlüsselt Blöcke fester Größe (128 Bit). Zur Verschlüsselung von Daten beliebiger Länge werden Betriebsmodi verwendet. Die Modusauswahl beeinflusst die Sicherheit kritisch: Der falsche Modus kann die Stärke von AES zunichtemachen.
Verwenden Sie für mobile Projekte AES-256-GCM mit einer 12-Byte-Nonce. GCM löst zwei Probleme gleichzeitig: Datenverschlüsselung und Authentifizierung, wodurch Padding-Oracle- und Chosen-Ciphertext-Angriffe verhindert werden. Android Keystore und iOS CryptoKit unterstützen AES-GCM nativ ohne zusätzliche kryptografische Primitive. Bei der Arbeit mit GCM ist es kritisch, die Nonce niemals mit demselben Schlüssel wiederzuverwenden — dies zerstört die Verschlüsselungssicherheit vollständig. Generieren Sie für jede Verschlüsselung eine neue zufällige Nonce und speichern Sie sie zusammen mit dem Chiffretext.
Sehen wir uns ein Beispiel für eine sichere AES-256-GCM-Implementierung auf Android mit Jetpack Security an. Der folgende Code zeigt den vollständigen Zyklus: Erstellen eines AES-256-Schlüssels über MasterKey, Ver- und Entschlüsseln einer Zeichenfolge mit zusätzlichen authentifizierten Daten (AAD).
import androidx.security.crypto.MasterKey
import androidx.security.crypto.EncryptedSharedPreferences
val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
val securePrefs = EncryptedSharedPreferences.create(
context,
"secure_prefs",
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
fun storeSecureData(key: String, value: String) {
securePrefs.edit().putString(key, value).apply()
}
fun readSecureData(key: String): String? {
return securePrefs.getString(key, null)
}
Das Hauptmerkmal dieser Lösung ist, dass AES-256-GCM auf zwei Ebenen verwendet wird: zur Verschlüsselung von Schlüssel-Wert-Paaren (PrefValueEncryptionScheme) und zum Schutz der Schlüsselnamen selbst (PrefKeyEncryptionScheme verwendet AES-256-SIV, resistent gegen Nonce-Wiederverwendung). MasterKey wird mit dem AES-256-GCM-Algorithmus generiert und im Android Keystore gespeichert, der auf Geräten mit Trusted Execution Environment hardwaregeschützt ist. Auf Geräten ohne Hardwareunterstützung (TEE) wird der Schlüssel über Bouncy Castle verschlüsselt, was immer noch sicherer ist als die Speicherung in SharedPreferences.
Zur direkten Verschlüsselung großer Datenmengen (z. B. Bilder oder Dateien) verwenden Sie AES-256-GCM über EncryptedFile aus AndroidX Security. Für den Schlüsselexport (z. B. für Backups) verwenden Sie eine zusätzliche Verschlüsselung mit einem Benutzerpasswort über PBKDF2 mit 100000+ Iterationen.
Auf iOS werden AES-Operationen über das CryptoKit-Framework (Swift 5.0+) organisiert. Ein AES-256-Schlüssel wird über SymmetricKey(size: .bits256) erstellt und in der Secure Enclave gespeichert — einem Hardware-Kryptoprozessor, der von der Haupt-CPU und dem Betriebssystem isoliert ist. CryptoKit bietet zwei AES-Implementierungen: AES.GCM (empfohlen) und AES.CBC (für Abwärtskompatibilität mit Legacy-Formaten). Die Verschlüsselung erfolgt über die seal()-Methode, die Daten, Schlüssel und Nonce (12 Byte) entgegennimmt und AES.GCM.SealedBox zurückgibt — eine Struktur, die Chiffretext und Authentifizierungstag enthält. Die Entschlüsselung erfolgt über open(). Apple empfiehlt dringend, CommonCrypto nicht direkt zu verwenden: CryptoKit wählt automatisch optimale Parameter, schützt vor Seitenkanalangriffen und nutzt AES-NI-Hardwarebeschleunigung auf Apple-Silicon-Prozessoren. Auf Geräten mit Secure Enclave verlassen Schlüssel niemals das Hardwaremodul, was Diebstahl selbst bei vollständiger Kompromittierung der Anwendung verhindert. Zur Schlüsselserialisierung verwenden Sie die withUnsafeBytes-Methode, gefolgt von der Speicherung in der Keychain über SecItemAdd mit dem Attribut kSecAttrAccessible = kSecAttrAccessibleWhenUnlockedThisDeviceOnly.
Häufig gestellte Fragen
AES ist ein Algorithmus, der lesbare Daten mithilfe eines geheimen Schlüssels in einen unlesbaren Satz von Bytes umwandelt. Derselbe Schlüssel wird benötigt, um die Daten in ihre ursprüngliche Form zurückzuversetzen. AES ist so zuverlässig, dass es zur Verschlüsselung geheimer Dokumente der US-Regierung verwendet wird.
AES-128 verwendet einen 128-Bit-Schlüssel und führt 10 Verschlüsselungsrunden durch. AES-256 verwendet einen 256-Bit-Schlüssel und 14 Runden, was es 2^128-mal schwieriger zu knacken macht. Für mobile Anwendungen wird AES-256 aufgrund des minimalen Leistungsunterschieds empfohlen.
AES-256-GCM ist der sicherste und empfohlene Modus. GCM bietet authentifizierte Verschlüsselung (Verschlüsselung + Integritätsprüfung). Der ECB-Modus ist verboten, CBC erfordert ein separates MAC. GCM ist der De-facto-Standard für mobile Anwendungen.
Theoretisch kann AES durch Brute-Force geknackt werden, aber für AES-256 wären 2^256 Versuche erforderlich — mehr als die Anzahl der Atome im beobachtbaren Universum. Es existieren keine praktischen Angriffe auf AES-256. Seitenkanalangriffe (Spectre, Meltdown) brechen AES nicht, sondern stehlen Schlüssel aus dem Speicher, daher ist die Hardwarespeicherung von Schlüsseln kritisch.
Verwenden Sie die Bibliothek AndroidX Security: MasterKey.Builder mit KeyScheme.AES256_GCM erstellt einen geschützten Schlüssel im Android Keystore, und EncryptedSharedPreferences verschlüsselt automatisch alle Daten über AES-256-GCM. Keine manuelle Kryptografie — die API ist standardmäßig sicher, ohne Risiko von Entwicklerfehlern.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch