# XTS-AES

XTS-AES ist ein Betriebsmodus für Blockchiffre für den Einsatzzweck der Festplattenverschlüsselung. Er wurde im Jahr 2008 von der IEEE als IEEE-Standard 1619 veröffentlicht.
Je nach Quelle steht XTS für „XEX Tweakable Block Cipher with Ciphertext Stealing“, „XEX encryption mode with tweak and ciphertext stealing“ oder „XEX-based tweaked-codebook mode with ciphertext stealing“, und AES steht für die Blockchiffre Advanced Encryption Standard.

## Konzept

XTS-AES basiert auf dem von Phillip Rogaway eingeführten XEX-Modus (XOR-Encrypt-XOR). Dieser verwendet einen Tweak als zusätzliche Eingabe für die Blockchiffre, der die Abbildung des Klartexts auf den Geheimtext verändert. Bei XTS-AES kann wie beim ECB-Modus ein Block unabhängig von anderen Blöcken ver- und entschlüsselt werden, was von Vorteil für eine Festplattenverschlüsselung ist, die einen wahlfreien Zugriff ermöglicht. Durch die Verwendung unterschiedlicher Tweaks wird allerdings die fundamentale Schwäche des ECB-Modus umgangen, da identische Klartextblöcke nicht auf identische Geheimtextblöcke abgebildet werden.

### Tweak

Als Tweak wird eine fortlaufende Nummer verwendet, die sich implizit aus der Adressierung von Datenblöcken des Datenträgers ergibt, beispielsweise der LBA-Adresse. Eine solche Dateneinheit kann größer sein als die 128 Bit Blocklänge, mit der AES arbeitet. Deswegen wird der Tweak zusätzlich mit einem Indexparameter verknüpft, der sich ähnlich wie beim Counter Mode aus der Sequenz der 128-Bit-Blöcke innerhalb einer Dateneinheit ergibt. Somit ist sichergestellt, dass derselbe Klartext an unterschiedlichen Positionen einen unterschiedlichen Geheimtext ergibt, aber an derselben Position denselben Geheimtext. Da sich die Parameter aus der Speicherposition berechnen lassen, brauchen keine Metadaten wie Nonce oder Initialisierungsvektor gespeichert werden.

### Ciphertext-Stealing

Wenn die Länge einer Dateneinheit auf dem Datenträger kein Vielfaches von 128 Bit darstellt, ist eine besondere Behandlung der letzten zwei Klartextblöcke erforderlich. XTS-AES wendet eine Technik namens Ciphertext-Stealing an. Hierbei wird der letzte Klartextblock mit einem Teil des Geheimtexts des vorletzten Blocks aufgefüllt, bevor er verschlüsselt wird. Ausgegeben werden der partielle Geheimtext des vorletzten Blocks (gekürzt um den Teil, der „entwendet“ wurde) und der ganze Geheimtext des letzten Blocks. Die Ausgabereihenfolge dieser beiden Blöcke wird vertauscht.
Der Vorteil dieses Verfahrens ist, dass kein Padding erforderlich ist, bei dem der Geheimtext länger als der Klartext werden würde. Bei XTS-AES ist der Geheimtext exakt so lang wie der Klartext, sodass keine Änderung an der Anordnung der Daten auf dem Datenträger erforderlich ist.

## Verschlüsselung

Die Verschlüsselung erfolgt bei XTS-AES nach folgendem Schema:
Parameter und Operatoren:
* Key1: Schlüssel für die eigentliche Datenverschlüsselung
* Key2: Schlüssel für die Erzeugung des Tweak
* i: Sequentielle Nummer der Dateneinheit auf dem Datenträger
* α: primitives Element in einem Galoiskörper $\operatorname {GF} (2^{128})$
* ⊗: Multiplikation in $\operatorname {GF} (2^{128})$
* ⊕: bitweises XOR

## Sicherheit

Das NIST billigt die Nutzung von XTS-AES mit der Anforderung, nicht mehr als 2$^{20}$ 128-Bit-Blöcke (entspricht 16 MB) pro Dateneinheit zu verschlüsseln. Betriebssysteme verwenden Cluster üblicherweise in der Größenordnung von wenigen Kilobytes. Laut dem BSI biete XTS-AES „relativ gute Sicherheitseigenschaften und gute Effizienz“ für das Anwendungsszenario der Festplattenverschlüsselung, sofern ein Angreifer nicht mehrere Abbilder der Festplatte zu verschiedenen Zeitpunkten analysieren kann.
XTS-AES bietet keine Authentifizierung der verschlüsselten Daten und fällt somit nicht in die Kategorie von Authenticated Encryption.

## Verbreitung

XTS-AES wird von gängiger Festplattenverschlüsselungssoftware wie BitLocker, dm-crypt, FileVault, TrueCrypt oder VeraCrypt unterstützt.