Counter Mode
# Counter Mode

Counter Mode (CTR) ist eine Betriebsart, in der Blockchiffren betrieben werden können, um daraus eine Stromchiffre zu erzeugen. Hierbei wird ein erzeugter Geheimtextblock mittels XOR-Operation mit dem Klartext kombiniert.

## Allgemeines

Die Besonderheit des Counter Mode im Vergleich zu anderen Betriebsarten, stellt die Tatsache dar, dass der Initialisierungsvektor hier aus einer für jedes Chiffrat neu zu wählenden Zufallszahl (Nonce) verknüpft mit einem Zähler besteht, der mit jedem weiteren Block hochgezählt wird. Die Verknüpfung kann z. B. durch Konkatenation (Anhängen), Addition oder XOR erfolgen.

## Verschlüsselung

Zur Verschlüsselung wird ein Initialisierungsvektor $ctr_{i}$ mit dem Schlüssel $K$ verschlüsselt und so ein Zwischenschlüssel produziert. Dieser wird im Anschluss mittels einer XOR-Operation mit dem Klartext kombiniert. Daraus entsteht der Geheimtext.

    $C_{i}=P_{i}\oplus E_{K}(ctr_{i})$

## Entschlüsselung

Zur Entschlüsselung wird wieder derselbe Zähler $ctr_{i}$ mit dem Schlüssel $K$ verschlüsselt, um den gleichen Zwischenschlüssel zu erhalten. Dieser wird nun mittels einer XOR-Operation auf den Geheimtext angewendet, so dass der Klartext wiedergewonnen wird.

    $P_{i}=C_{i}\oplus E_{K}(ctr_{i})$

## Vorteile

Counter Mode ist wie Output Feedback Mode ein Betriebsmodus, der es erlaubt, eine Blockchiffre als Stromchiffre zu betreiben. Die Vorteile des OFB-Modus gegenüber Cipher Block Chaining Mode, Cipher Feedback Mode und anderen Modi, welche klartextabhängige Daten für den nächsten Block weiterverwenden, kommen auch hier zum Tragen:

* Bitfehler bei der Übertragung ergeben Fehler bei nur den entsprechenden Bits des Klartextes (anstatt einen ganzen Block bzw. eventuell sogar einen weiteren Block unbrauchbar zu machen)
* Verschlüsselung und Entschlüsselung sind identisch, daher können hier auch Einwegfunktionen verwendet werden
* Der Schlüsselstrom kann vorausberechnet werden.

Im Gegensatz zum OFB-Modus aber hängt der Schlüssel für einen Block nicht vom Schlüssel für den vorherigen Block ab, daher:

* hat man hier wahlfreien Zugriff auf jeden verschlüsselten Block und
* sämtliche Ver- und Entschlüsselungsoperationen können parallel durchgeführt werden.

## Anwendungsgebiete

* In ZIP-Archiven in Kombination mit AES.
* In TLS 1.2 in Kombination mit AES (als Bestandteil im Betriebsmodus GCM).
* In Off-the-Record Messaging in Kombination mit AES.
* In der Payload Verschlüsselung im Bluetooth Link Layer (AES-CTR).
