# Data Encryption Standard

Der Data Encryption Standard (DES; deutsch „Datenverschlüsselungsstandard“) ist ein weit verbreiteter symmetrischer Verschlüsselungsalgorithmus, eine sogenannte Blockchiffre.
Der DES-Algorithmus wurde als offizieller Standard für die US-Regierung (siehe FIPS 46) im Jahr 1977 bestätigt und wird seither international vielfach eingesetzt. Seine Entstehungsgeschichte hat wegen der Beteiligung der NSA am Design des Algorithmus immer wieder Anlass zu Spekulationen über seine Sicherheit gegeben. DES wurde schon kurz nach seiner Veröffentlichung aufgrund der verwendeten Schlüssellänge von nur 56 Bits als nicht ausreichend sicher erachtet.
Die Schlüssellänge kann durch Mehrfachanwendung des DES jedoch auf einfache Weise vergrößert werden. Als Triple-DES, auch als TDES, 3DES oder DESede bezeichnet, wird der DES weiterhin am häufigsten, zum Beispiel von Banken in Chipkartenanwendungen, eingesetzt, obwohl der TDES als offizieller Standard für die USA durch den Advanced Encryption Standard (AES) abgelöst wurde.

## Geschichte

Zu Beginn der 1970er-Jahre war zwar die militärische Kryptologie auf einem hohen Niveau, für nichtmilitärische Anwendungen waren jedoch kaum brauchbare Produkte verfügbar. Das National Bureau of Standards (NBS) der USA – heute National Institute of Standards and Technology (NIST) – sah Bedarf für einen einheitlichen Standard für die behördenübergreifende Verschlüsselung vertraulicher Daten. Nach Beratungen mit der NSA veröffentlichte es am 15. Mai 1973 im Federal Register eine Ausschreibung. Insbesondere sollte die Sicherheit des Algorithmus nach Kerckhoffs’ Prinzip nur von der Geheimhaltung des Schlüssels, nicht aber von der Geheimhaltung des Algorithmus abhängen. Keiner der eingereichten Kandidaten erfüllte jedoch die gestellten Bedingungen, was zu einer neuerlichen Ausschreibung am 27. August 1974 führte.
IBM lieferte einen vielversprechenden Vorschlag, der auf einer Weiterentwicklung des wenige Jahre zuvor unter der Mitarbeit von Horst Feistel entwickelten Algorithmus „Lucifer“ beruhte. Dieser Algorithmus zeichnete sich dadurch aus, dass er einfache logische Operationen auf kleinen Bitgruppen nutzte und dadurch leicht in Hardware implementierbar war. Neben Feistel selbst waren auch Walter Tuchman, Don Coppersmith, Alan Konheim, Carl Meyer, Mike Matyas, Roy Adler, Edna Grossman, Bill Notz, Lynn Smith und Bryant Tuckerman Mitglieder des IBM-Entwicklungsteams.

### Die Rolle der NSA

NBS und IBM beschlossen eine Kooperation mit Unterstützung der National Security Agency (NSA). Welchen Einfluss die NSA auf die Entwicklung des Algorithmus hatte, ist umstritten. Vor allem die Schlüssellänge von 56 Bits und das Design der für Substitution zuständigen „S-Boxen“ gab Anlass zu Spekulation über mögliche Hintertüren, die eventuell durch die NSA eingeführt wurden. Nach eigenen Angaben stärkte die NSA die S-Boxen gegen differentielle Kryptoanalyse, wollte aber gleichzeitig die Schlüssellänge auf 48 Bits beschränken, während IBM 64 Bits wollte. Als Kompromiss einigten sich NSA und IBM auf eine Schlüssellänge von 56 Bits.
Am 17. März 1975 wurde der Algorithmus im „Federal Register“ veröffentlicht. Die NBS bat zudem um öffentliche Stellungnahme. Im folgenden Jahr wurden zwei Workshops zum vorgeschlagenen Standard abgehalten. Durch die unklare Rolle der NSA zogen die Veränderungen des Algorithmus von verschiedenen Seiten Kritik auf sich, unter anderem von den Pionieren asymmetrischer Kryptosysteme Martin Hellman und Whitfield Diffie. Es wurde gemutmaßt, die NSA habe eine Hintertür eingebaut, welche das Verfahren dergestalt schwächt, dass sie damit verschlüsselte Nachrichten lesen konnte. Alan Konheim, einer der DES-Entwickler, gab an, die S-Boxen nach Washington gesendet und stark verändert wiedererhalten zu haben.
Ein nachrichtendienstliches Komitee des US-Senats untersuchte die Einflussnahme des NSA. In der nicht als Verschlusssache gehandhabten Zusammenfassung des Berichts gaben sie 1978 an:
   “In the development of DES, NSA convinced IBM that a reduced key size was sufficient; indirectly assisted in the development of the S-box structures; and certified that the final DES algorithm was, to the best of their knowledge, free from any statistical or mathematical weakness. […] NSA did not tamper with the design of the algorithm in any way. IBM invented and designed the algorithm, made all pertinent decisions regarding it, and concurred that the agreed upon key size was more than adequate for all commercial applications for which the DES was intended.”
   „Während der Entwicklung von DES überzeugte die NSA IBM davon, dass eine reduzierte Schlüssellänge ausreichend sei; half indirekt bei der Konstruktion der S-Boxen; und zertifizierte den entstehenden DES-Algorithmus als nach bestem Gewissen frei von statistischen und mathematischen Schwächen. […] Die NSA veränderte das Design des Algorithmus in keiner Weise. IBM entwarf und entwickelte diesen, traf alle sachdienlichen Entscheidungen und stimmte darin überein, dass die verkürzte Schlüssellänge mehr als adäquat für die vorgesehenen kommerziellen Verwendungen sei.“
Walter Tuchman, ein weiterer DES-Entwickler, wird mit den Worten zitiert “We developed the DES algorithm entirely within IBM using IBMers. The NSA did not dictate a single wire!” (deutsch: „Wir haben den DES-Algorithmus vollständig innerhalb von IBM unter Nutzung von IBMern entwickelt. Die NSA hat nicht ein einziges Memo diktiert!“).
Durch die Veröffentlichung der differentiellen Kryptoanalyse durch Adi Shamir und Eli Biham im Jahr 1990 wurden einige der Befürchtungen einer Hintertür aus dem Wege geräumt. DES zeigte sich durch die Gestaltung der S-Boxen deutlich widerstandsfähiger gegen diese generische Angriffsmethode, als dies bei einer zufälligen Anordnung der Fall gewesen wäre. 1994 veröffentlichte Don Coppersmith die ursprünglichen Designkriterien für die S-Boxen. Es zeigte sich, dass IBM die differentielle Kryptoanalyse bereits in den 1970er Jahren entdeckt hatte und nach Umgestaltung der S-Boxen von der NSA zur Geheimhaltung instruiert worden war.
Coppersmith erklärte “that was because [differential cryptanalysis] can be a very powerful tool, used against many schemes, and there was concern that such information in the public domain could adversely affect national security.” (deutsch: „dies geschah, da die [differentielle Kryptoanalyse] ein mächtiges Werkzeug gegen viele Verfahren sein kann und es Bedenken gab, die nationale Sicherheit könne durch eine Veröffentlichung gefährdet werden.“).
Shamir selbst kommentierte “I would say that, contrary to what some people believe, there is no evidence of tampering with the DES so that the basic design was weakened.” (deutsch: „Anders als manche glauben, sehe ich selbst keine Hinweise auf Manipulation von DES, welche das grundlegende Design geschwächt hat.“)
Die Kritik an der Länge des Schlüssels blieb jedoch bestehen und wurde durch die Begründung der NSA, 8 der 64 Schlüsselbits könnten als Paritätsbits verwendet werden, noch weiter gestützt. Es wird weithin vermutet, dass die Reduzierung der NSA die Möglichkeit eines Angriffs mit der Brute-Force-Methode schaffen sollte.
Heute gilt der DES aufgrund seiner geringen Schlüssellänge als nicht mehr sicher genug. Durch die Mehrfachanwendung des DES mit unterschiedlichen Schlüsseln wie zum Beispiel beim TDES kann die effektive Schlüssellänge erhöht werden.
Wissenschaftliche Untersuchungen haben mittlerweile erwiesen, dass DES trotz seiner Schlüssellänge von nur 56 Bits sicherer ist als der Lucifer-Algorithmus mit seinen 128 Bits.

### Standardisierung

DES wurde als Standard für alle amerikanischen Bundesbehörden zugelassen und am 15. Januar 1977 als FIPS PUB 46 publiziert; verpflichtend für sie wurde er sechs Monate später. Der Standard enthielt die Auflage, alle fünf Jahre neu bestätigt werden zu müssen. Weiterhin befasste sich die Internationale Organisation für Normung (ISO) mit dem Algorithmus unter der Bezeichnung Data Encipherment No. 1 (DEA1).
1981 wurde der DES-Algorithmus vom American National Standards Institute (ANSI) als Standard für den privaten Sektor anerkannt.
Bereits Anfang der 1990er Jahre äußerten Kryptographen erste Zweifel, ob der DES-Algorithmus noch als sicher anzusehen sei. Zum einen hatte sich die Hardware im Vergleich zu 1970 stark weiter entwickelt, zum anderen glaubte man auch Schwächen im Algorithmus zu erkennen. 1994 wurde ein theoretischer Angriff mittels linearer Kryptoanalyse publiziert. Mitte 1998 führte die Electronic Frontier Foundation (EFF) einen erfolgreichen Angriff über die Brute-Force-Methode durch. Die Gesellschaft baute hierzu eine spezielle Hardware mit insgesamt über 1800 Mikroprozessoren und konnte mit dieser einen Schlüssel in weniger als drei Tagen brechen. Die Arbeiten am Nachfolgestandard AES hatten zu diesem Zeitpunkt schon begonnen. Am 26. Mai 2002 wurde DES schließlich durch AES ersetzt.
Die Einführung von DES gilt als Auslöser einer Vielzahl kryptographischer Studien, besonders solcher, die sich mit dem Angriff auf Blockchiffrierungen befassen. Bruce Schneier schreibt in seinem Buch Angewandte Kryptographie:
   „Inoffiziell bezeichnete die NSA den DES als einen ihrer größten Fehler. Hätte die Behörde gewußt, daß die Einzelheiten herausgegeben und Softwareimplementierungen möglich wurden, hätte sie niemals zugestimmt. Mehr als alles andere revolutionierte DES die gesamte Kryptoanalyse. Jetzt gab es einen Algorithmus, den man untersuchen konnte – sogar einen, den die NSA als sicher bezeichnete.“

### Chronologie

| Datum | Datum | Ereignis |
| 15. Mai | 1973 | Das NBS veröffentlicht eine erste Ausschreibung für ein standardisiertes Verschlüsselungsverfahren |
| 27. August | 1974 | Das NBS veröffentlicht eine zweite Ausschreibung für ein standardisiertes Verschlüsselungsverfahren |
| 17. März | 1975 | DES wird im „Federal Register“ veröffentlicht |
| August | 1976 | Erster Workshop zu DES |
| September | 1976 | Zweiter Workshop, welcher die mathematischen Grundlagen von DES behandelt |
| November | 1976 | DES wird als Standard zugelassen |
| 15. Januar | 1977 | DES wird als FIPS-Standard „FIPS PUB 46“ veröffentlicht |
| Juni | 1977 | Diffie und Hellman argumentieren, dass DES per brute force geknackt werden kann |
| | 1983 | DES wird das erste Mal neu bestätigt |
| | 1986 | Videocipher II, ein auf DES basierendes Verschlüsselungssystem für Fernsehsatelliten wird von der HBO verwendet |
| 22. Januar | 1988 | DES wird als „FIPS 46-1“ revalidiert, welches FIPS PUB 46 ersetzt |
| | 1992 | Biham und Shamir publizieren den ersten theoretischen Angriff mit gegenüber der Brute-Force-Methode verminderter Komplexität: die differentielle Kryptanalyse. Dieser Angriff erfordert jedoch unrealistische 2$^{47}$ frei gewählte Klartexte. |
| 30. Dezember | 1993 | DES wird ein drittes Mal bestätigt, diesmal als „FIPS 46-2“ |
| | 1994 | Die erste experimentelle Kryptoanalyse von DES wird mittels linearer Kryptoanalyse durchgeführt (Matsui, 1994) |
| Juni | 1997 | Das DESCHALL-Projekt bricht erstmals öffentlich eine mit DES verschlüsselte Nachricht |
| Juli | 1998 | Der DES-Knacker „Deep Crack“ der Electronic Frontier Foundation bricht einen DES-Schlüssel binnen 56 Stunden |
| Januar | 1999 | Deep Crack und distributed.net brechen in einer Kooperation einen DES-Schlüssel in 22 Stunden und 15 Minuten |
| 25. Oktober | 1999 | DES wird ein viertes Mal in Gestalt des „FIPS 46-3“ bestätigt. Dieser gibt als bevorzugte Anwendung 3DES an und erlaubt DES selbst nur für den Einsatz in veralteten Systemen |
| 26. November | 2001 | Der Advanced Encryption Standard (AES) wird als „FIPS 197“ publiziert |
| 26. Mai | 2002 | Der AES tritt in Kraft |
| 26. Juli | 2004 | Im „Federal Register“ wird die Absetzung des FIPS 46-3 und verwandter Standards empfohlen |
| 19. Mai | 2005 | NIST setzt den FIPS 46-3 außer Kraft |
| März | 2006 | Der FPGA-basierte Parallelrechner COPACOBANA kostet weniger als 10.000 Dollar (Materialkosten) und bricht DES in weniger als 9 Tagen |
| Nov. | 2008 | Die Weiterentwicklung des FPGA-basierten Parallelrechners COPACOBANA, die RIVYERA, bricht DES erstmals in weniger als einem Tag |

## Funktionsweise

Bei DES handelt es sich um einen symmetrischen Algorithmus, das heißt zur Ver- und Entschlüsselung wird derselbe Schlüssel verwendet. DES funktioniert als Blockchiffre, jeder Block wird also unter Verwendung des Schlüssels einzeln chiffriert, wobei die Daten in 16 Iterationen beziehungsweise Runden von Substitutionen und Transpositionen (Permutation) nach dem Schema von Feistel „verwürfelt“ werden. Die Blockgröße beträgt 64 Bits, das heißt ein 64-Bit-Block Klartext wird in einen 64-Bit-Block Chiffretext transformiert. Auch der Schlüssel, der diese Transformation kontrolliert, besitzt 64 Bits. Jedoch stehen dem Benutzer von diesen 64 Bits nur 56 Bits zur Verfügung; die übrigen 8 Bits (jeweils ein Bit aus jedem Byte) werden zum Paritäts-Check benötigt. Die effektive Schlüssellänge beträgt daher nur 56 Bits. Die Entschlüsselung wird mit dem gleichen Algorithmus durchgeführt, wobei die einzelnen Rundenschlüssel in umgekehrter Reihenfolge verwendet werden.
Auf den 64-Bit-Block wird eine initiale Permutation angewandt. Danach wird der Block in zwei Teile aufgeteilt und jeder Teil in ein 32-Bit-Register gespeichert. Die beiden Blockhälften werden in Folge als linke und rechte Hälfte (siehe Skizze) bezeichnet. Auf die rechte Blockhälfte wird die Feistel-Funktion angewandt. Danach wird die rechte Hälfte mit der linken Hälfte XOR verknüpft und das Ergebnis im Register der nächsten Runde für die rechte Hälfte gespeichert. In das linke Register der nächsten Runde wird die ursprüngliche rechte Blockhälfte kopiert. Nach Ende der letzten Runde werden die beiden Hälften vertauscht zusammengeführt und eine finale Permutation durchgeführt. Dabei handelt es sich um die inverse Permutation zur initialen Permutation.

### Betriebsmodi

Der DES-Algorithmus beschreibt zunächst nur, wie ein Datenblock mit 64 Bits verarbeitet wird. Zur Verarbeitung einer Nachricht beliebiger Länge lässt sich der DES wie auch jede andere Blockchiffre in verschiedenen Betriebsmodi verwenden. Für bestimmte Betriebsmodi, wie zum Beispiel ECB oder CBC, ist ein Auffüllen des Klartextes auf ein Vielfaches der vollen Blocklänge notwendig (Padding). Dies geschieht, indem die Bitfolge 1000… angehängt wird.

## Die Feistel-Funktion

Die F-Funktion von DES arbeitet auf Halbblöcken zu je 32 Bits und besteht aus vier Phasen:
* Die R-Blöcke werden mittels einer geeigneten Permutation E (Expansion) auf 48 Bits Länge expandiert, indem einzelne Bits mehrfach verwendet werden.
* Das Ergebnis wird mit einem Teilschlüssel XOR-verknüpft. Für jede Runde wird hierzu nach einer festen Vorschrift ein anderer 48-Bit-Teilschlüssel aus dem Hauptschlüssel generiert.
* Die resultierenden Blöcke werden in acht 6-Bit-Stücke zerteilt und diese mittels Substitution durch S-Boxen auf eine Länge von 4 Bits komprimiert. Diese nicht-lineare Transformierung in den S-Boxen stellt das Herzstück der Sicherheit von DES dar, ohne sie wäre DES linear und trivial zu brechen.
* Die 32 Bits Ausgabe der S-Boxen werden mittels einer festen Permutation P rearrangiert.
Diese Kombination aus Permutationen und Substitutionen entspricht dem von Claude Shannon aufgestellten Prinzip der Diffusion und Konfusion.

### Die Expansion

Um den Halbblock in der Feistel-Funktion von 32 Bits auf 48 Bits zu erweitern, wird der Halbblock in 4-Bit-Gruppen aufgeteilt. Die Bits am Rand jeder 4-Bit-Gruppe werden vorn, beziehungsweise hinten an die benachbarte 4-Bit-Gruppe angehängt.

### Die Substitution

Die Substitutionsboxen (S-Boxen) beim DES sind standardisiert. Um aus den folgenden Tabellen den Ausgabewert zu erhalten, wird der Eingabewert gesplittet. So bildet das erste und letzte Bit zusammen die Zeile, und die Spalte ergibt sich aus den übrigen Bits (siehe Beispiel). Eine Änderung dieser Boxen reduziert die Sicherheit drastisch! Daher sollten die folgenden Tabellen für die Substitutionsboxen verwendet werden:
| S$_1$ | S$_1$ | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes |
| S$_1$ | S$_1$ | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
| Äußere Bits | 00 | 1110 | 0100 | 1101 | 0001 | 0010 | 1111 | 1011 | 1000 | 0011 | 1010 | 0110 | 1100 | 0101 | 1001 | 0000 | 0111 |
| Äußere Bits | 01 | 0000 | 1111 | 0111 | 0100 | 1110 | 0010 | 1101 | 0001 | 1010 | 0110 | 1100 | 1011 | 1001 | 0101 | 0011 | 1000 |
| Äußere Bits | 10 | 0100 | 0001 | 1110 | 1000 | 1101 | 0110 | 0010 | 1011 | 1111 | 1100 | 1001 | 0111 | 0011 | 1010 | 0101 | 0000 |
| Äußere Bits | 11 | 1111 | 1100 | 1000 | 0010 | 0100 | 1001 | 0001 | 0111 | 0101 | 1011 | 0011 | 1110 | 1010 | 0000 | 0110 | 1101 |
| S$_2$ | S$_2$ | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes |
| S$_2$ | S$_2$ | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
| Äußere Bits | 00 | 1111 | 0001 | 1000 | 1110 | 0110 | 1011 | 0011 | 0100 | 1001 | 0111 | 0010 | 1101 | 1100 | 0000 | 0101 | 1010 |
| Äußere Bits | 01 | 0011 | 1101 | 0100 | 0111 | 1111 | 0010 | 1000 | 1110 | 1100 | 0000 | 0001 | 1010 | 0110 | 1001 | 1011 | 0101 |
| Äußere Bits | 10 | 0000 | 1110 | 0111 | 1011 | 1010 | 0100 | 1101 | 0001 | 0101 | 1000 | 1100 | 0110 | 1001 | 0011 | 0010 | 1111 |
| Äußere Bits | 11 | 1101 | 1000 | 1010 | 0001 | 0011 | 1111 | 0100 | 0010 | 1011 | 0110 | 0111 | 1100 | 0000 | 0101 | 1110 | 1001 |
| S$_3$ | S$_3$ | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes |
| S$_3$ | S$_3$ | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
| Äußere Bits | 00 | 1010 | 0000 | 1001 | 1110 | 0110 | 0011 | 1111 | 0101 | 0001 | 1101 | 1100 | 0111 | 1011 | 0100 | 0010 | 1000 |
| Äußere Bits | 01 | 1101 | 0111 | 0000 | 1001 | 0011 | 0100 | 0110 | 1010 | 0010 | 1000 | 0101 | 1110 | 1100 | 1011 | 1111 | 0001 |
| Äußere Bits | 10 | 1101 | 0110 | 0100 | 1001 | 1000 | 1111 | 0011 | 0000 | 1011 | 0001 | 0010 | 1100 | 0101 | 1010 | 1110 | 0111 |
| Äußere Bits | 11 | 0001 | 1010 | 1101 | 0000 | 0110 | 1001 | 1000 | 0111 | 0100 | 1111 | 1110 | 0011 | 1011 | 0101 | 0010 | 1100 |
| S$_4$ | S$_4$ | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes |
| S$_4$ | S$_4$ | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
| Äußere Bits | 00 | 0111 | 1101 | 1110 | 0011 | 0000 | 0110 | 1001 | 1010 | 0001 | 0010 | 1000 | 0101 | 1011 | 1100 | 0100 | 1111 |
| Äußere Bits | 01 | 1101 | 1000 | 1011 | 0101 | 0110 | 1111 | 0000 | 0011 | 0100 | 0111 | 0010 | 1100 | 0001 | 1010 | 1110 | 1001 |
| Äußere Bits | 10 | 1010 | 0110 | 1001 | 0000 | 1100 | 1011 | 0111 | 1101 | 1111 | 0001 | 0011 | 1110 | 0101 | 0010 | 1000 | 0100 |
| Äußere Bits | 11 | 0011 | 1111 | 0000 | 0110 | 1010 | 0001 | 1101 | 1000 | 1001 | 0100 | 0101 | 1011 | 1100 | 0111 | 0010 | 1110 |
| S$_5$ | S$_5$ | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes |
| S$_5$ | S$_5$ | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
| Äußere Bits | 00 | 0010 | 1100 | 0100 | 0001 | 0111 | 1010 | 1011 | 0110 | 1000 | 0101 | 0011 | 1111 | 1101 | 0000 | 1110 | 1001 |
| Äußere Bits | 01 | 1110 | 1011 | 0010 | 1100 | 0100 | 0111 | 1101 | 0001 | 0101 | 0000 | 1111 | 1010 | 0011 | 1001 | 1000 | 0110 |
| Äußere Bits | 10 | 0100 | 0010 | 0001 | 1011 | 1010 | 1101 | 0111 | 1000 | 1111 | 1001 | 1100 | 0101 | 0110 | 0011 | 0000 | 1110 |
| Äußere Bits | 11 | 1011 | 1000 | 1100 | 0111 | 0001 | 1110 | 0010 | 1101 | 0110 | 1111 | 0000 | 1001 | 1010 | 0100 | 0101 | 0011 |
| S$_6$ | S$_6$ | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes |
| S$_6$ | S$_6$ | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
| Äußere Bits | 00 | 1100 | 0001 | 1010 | 1111 | 1001 | 0010 | 0110 | 1000 | 0000 | 1101 | 0011 | 0100 | 1110 | 0111 | 0101 | 1011 |
| Äußere Bits | 01 | 1010 | 1111 | 0100 | 0010 | 0111 | 1100 | 1001 | 0101 | 0110 | 0001 | 1101 | 1110 | 0000 | 1011 | 0011 | 1000 |
| Äußere Bits | 10 | 1001 | 1110 | 1111 | 0101 | 0010 | 1000 | 1100 | 0011 | 0111 | 0000 | 0100 | 1010 | 0001 | 1101 | 1011 | 0110 |
| Äußere Bits | 11 | 0100 | 0011 | 0010 | 1100 | 1001 | 0101 | 1111 | 1010 | 1011 | 1110 | 0001 | 0111 | 0110 | 0000 | 1000 | 1101 |
| S$_7$ | S$_7$ | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes |
| S$_7$ | S$_7$ | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
| Äußere Bits | 00 | 0100 | 1011 | 0010 | 1110 | 1111 | 0000 | 1000 | 1101 | 0011 | 1100 | 1001 | 0111 | 0101 | 1010 | 0110 | 0001 |
| Äußere Bits | 01 | 1101 | 0000 | 1011 | 0111 | 0100 | 1001 | 0001 | 1010 | 1110 | 0011 | 0101 | 1100 | 0010 | 1111 | 1000 | 0110 |
| Äußere Bits | 10 | 0001 | 0100 | 1011 | 1101 | 1100 | 0011 | 0111 | 1110 | 1010 | 1111 | 0110 | 1000 | 0000 | 0101 | 1001 | 0010 |
| Äußere Bits | 11 | 0110 | 1011 | 1101 | 1000 | 0001 | 0100 | 1010 | 0111 | 1001 | 0101 | 0000 | 1111 | 1110 | 0010 | 0011 | 1100 |
| S$_8$ | S$_8$ | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes | Mittlere 4 Bits des Eingabewertes |
| S$_8$ | S$_8$ | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
| Äußere Bits | 00 | 1101 | 0010 | 1000 | 0100 | 0110 | 1111 | 1011 | 0001 | 1010 | 1001 | 0011 | 1110 | 0101 | 0000 | 1100 | 0111 |
| Äußere Bits | 01 | 0001 | 1111 | 1101 | 1000 | 1010 | 0011 | 0111 | 0100 | 1100 | 0101 | 0110 | 1011 | 0000 | 1110 | 1001 | 0010 |
| Äußere Bits | 10 | 0111 | 1011 | 0100 | 0001 | 1001 | 1100 | 1110 | 0010 | 0000 | 0110 | 1010 | 1101 | 1111 | 0011 | 0101 | 1000 |
| Äußere Bits | 11 | 0010 | 0001 | 1110 | 0111 | 0100 | 1010 | 1000 | 1101 | 1111 | 1100 | 1001 | 0000 | 0011 | 0101 | 0110 | 1011 |

## Schwächen

Weil die Schlüssellänge nur 56 Bit beträgt, konnte DES bereits durch Brute-Force-Angriffe gebrochen werden, indem systematisch alle möglichen Schlüssel (2$^{56}$ = ca. 72 Billiarden) getestet wurden. Es gibt die Vermutung, dass diese kleine Schlüssellänge absichtlich gewählt wurde, weil die NSA bereits in den 1970er-Jahren genug Rechnerkapazität besaß, um diese Verschlüsselung zu brechen.

### Deep Crack

Die EFF baute 1998 eine etwa 250.000 Dollar teure Maschine mit dem Namen „Deep Crack“. Dieser Superrechner enthielt 1536 spezielle Krypto-Chips und konnte pro Sekunde etwa 88 Milliarden Schlüssel testen. Im Juli 1998 gelang es mit dieser Maschine, einen DES-Code in 56 Stunden zu knacken und damit die „DES Challenge II-2“ zu gewinnen, die von der Firma RSA Security ausgeschrieben worden war. 1999 gewann die gleiche Maschine die „DES Challenge III“; dazu arbeitete sie mit dem weltweiten Netzwerk von distributed.net, bestehend aus etwa 100.000 Rechnern, zusammen. Der DES-Schlüssel wurde in 22 Stunden und 15 Minuten gefunden, mehr als 245 Milliarden Schlüssel wurden pro Sekunde getestet.

### COPACOBANA

Die einzige andere öffentlich bekannte Maschine zum Brechen von DES ist COPACOBANA. Sie wurde 2006 von zwei Arbeitsgruppen an den Universitäten Bochum und Kiel gebaut. Im Gegensatz zu Deep Crack besteht eine COPACOBANA aus rekonfigurierbaren Hardware-Bausteinen, sogenannten FPGAs. 120 FPGAs vom Typ Xilinx Spartan-3-1000 sind in einer Maschine auf 20 DIMM-Modulen zusammengefasst, wobei jedes DIMM-Modul sechs FPGAs enthält. COPACOBANA kann 65 Milliarden DES-Schlüssel pro Sekunde testen, woraus sich eine durchschnittliche Suchzeit von 6,4 Tagen für eine DES-Attacke ergibt. Durch den Einsatz rekonfigurierbarer Hardware kann COPACOBANA auch zum Brechen anderer Chiffren wie A5 eingesetzt werden. Die Material- und Herstellungskosten von COPACOBANA belaufen sich auf etwa 10.000 Dollar. Der Kostenvorteil gegenüber Deep Crack um einen Faktor 25 ist ein beeindruckendes Beispiel für das Mooresche Gesetz. Hiernach wäre ein Kostenvorteil von etwa 32 = 2$^5$ zu erwarten gewesen, da acht Jahre zwischen dem Bau der beiden Maschinen verstrichen sind (das Mooresche Gesetz sagt eine Halbierung der Kosten digitaler ICs alle 1,5 Jahre voraus, so dass bei acht Jahren etwa 5 Halbierungen stattgefunden haben sollten).
Der derzeitige Rekord wurde 2008 von der Firma SciEngines GmbH (einem Spin-off der COPACOBANA-Arbeitsgruppen) aufgestellt und auf einem Workshop 2009 erneut verbessert. Mit 128 Xilinx-FPGAs lag der Durchsatz bei über 292 Milliarden Schlüsseln pro Sekunde.

### Geringfügige Schwächen

DES besitzt eine Komplement-Eigenschaft, das heißt, es gilt
    $\operatorname {DES} _{K}(m)={\overline {\operatorname {DES} _{\overline {K}}({\overline {m}})}}$ für alle Schlüssel $K$ und alle Klartexte $m$,
wobei ${\overline {x}}$ das bitweise Komplement von $x$ bezeichnet. Dadurch lässt sich mit einem Chosen-Plaintext-Angriff bei einer vollständigen Schlüsselsuche der Suchraum auf 2$^{55}$ Schlüssel halbieren.
Es existieren vier schwache Schlüssel $K$ mit der Eigenschaft, dass
    $\operatorname {DES} _{K}(\operatorname {DES} _{K}(m))=m$ für alle Klartexte $m$.
Des Weiteren gibt es sechs semi-schwache Schlüsselpaare $(K_{1},K_{2})$ mit der Eigenschaft, dass
    $\operatorname {DES} _{K_{1}}(\operatorname {DES} _{K_{2}}(m))=m$ für alle Klartexte $m$.
In der Praxis ist dies jedoch kein Problem, da die Wahrscheinlichkeit für einen (semi-)schwachen Schlüssel bei zufälliger Auswahl eines Schlüssels nur 16:2$^{56}$ beträgt. Außerdem lässt sich die Verwendung dieser Schlüssel leicht vermeiden, indem sie bei der Erzeugung explizit ignoriert werden.

## Anwendungen

Breite Anwendung findet der DES-Algorithmus bei Geldautomaten: Mit Hilfe des DES-Algorithmus und eines geheimen Schlüssels wird bereits in der Tastatur eine sogenannte PAC berechnet. Diese wird zusammen mit den Daten des Magnetstreifens (Kontonummer, Bankleitzahl, Gültigkeitszeitraum, …) zum Host des kontoführenden Instituts geschickt, dort wird die PIN entschlüsselt und verifiziert.
In der Anfangszeit der Geldautomaten wurde aus den Daten des Magnetstreifens (Kontonummer, Bankleitzahl, Gültigkeitszeitraum, …) und dem geheimen Schlüssel die PIN berechnet und das Ergebnis mit der Eingabe des Benutzers verglichen. Diese sogenannte Offline-PIN-Prüfung wird seit mehreren Jahren nicht mehr verwendet.
Bis zum heutigen Tage wird DES für die Sprachverschlüsselung von sicherheitskritischen Sprechfunkaussendungen verwendet. In Deutschland gehören zu den Anwendern diverse polizeiliche Sondereinheiten sowie die Verfassungsschutzbehörden des Bundes und der Länder. Verbreitet sind zu diesem Zweck Sprechfunkgeräte von Motorola aus den Modellreihen MX3000 und MTS2000. Die Sprache wird mittels Delta-Modulation digitalisiert und durch ein zertifiziertes Steckmodul im Inneren des Sprechfunkgerätes zur Verschlüsselung geschleust. Das Modul ist gegen Manipulationen geschützt, der Schlüssel ist nicht auslesbar und wird bei Manipulationsversuchen gelöscht. Auch bei Verwendung von Relaisstellen zur Reichweitenerhöhung ist das Konzept dergestalt, dass im Inneren der Relaisstelle das Signal nie unverschlüsselt vorliegt. Die Schlüsselverwaltung erfolgt entweder dezentral im direkten Zugriff auf das Gerät mit einem sog. key variable loader (KVL), oder über Funk zentral von einem key management centre per OTAR, „Over The Air Rekeying“. Für diese Anwendung ist auch DES nach heutigem Stand der Technik mehr als ausreichend sicher, sofern für jedes Einsatzgeschehen (bzw. regelmäßig während längerer Einsätze) die Schlüssel gewechselt werden, da das gesprochene Wort in solchen Anwendungsfällen nur aktuell für die Gegenseite von Bedeutung ist. Eine mögliche Entschlüsselung nach Stunden oder Tagen ist für den Einsatz in der Regel irrelevant, da dann bereits „alles gelaufen ist“. Sowohl der technisch relativ hohe Aufwand als auch das benötigte Fachwissen senkt zusätzlich die Wahrscheinlichkeit, dass tatsächlich versucht wird, die Funkkommunikation nachträglich zu entschlüsseln.
Die US-Exportbeschränkung für den DES mit voller 56-Bit-Schlüssellänge wurde aufgehoben.

## Ersatz-Algorithmen

Aufgrund seiner geringen Schlüssellänge war DES bald nicht mehr ausreichend sicher und es musste ein Ersatz gefunden werden.

### Triple-DES

Der erste Ersatz für DES war Triple-DES (auch 3DES oder DESede genannt). Die Idee der mehrfachen Ausführung von DES mit zwei verschiedenen Schlüsseln ist ein Verfahren, das vom DES-Mitentwickler Walter Tuchman beschrieben und analysiert wurde (siehe FIPS 46-3). Ralph Merkle und Martin Hellman schlugen nach einer weiteren Analyse 1981 die Dreifachverschlüsselung mit drei unabhängigen, voneinander verschiedenen Schlüsseln vor.
Bei der am häufigsten verwendeten Methode wird jeder Datenblock mit einem DES-Schlüssel $K_{1}$ chiffriert, dann mit $K_{2}$ dechiffriert und mit $K_{3}$ chiffriert:
    $\operatorname {3DES} _{(K_{1},K_{2},K_{3})}:=\operatorname {DES} _{K_{3}}\circ \operatorname {DES} _{K_{2}}^{-1}\circ \operatorname {DES} _{K_{1}}$
Dieses Verfahren wird auch als EDE (Encrypt-Decrypt-Encrypt) bezeichnet. Eine einfache DES-Verschlüsselung ist somit ein Spezialfall von 3DES:
    $\operatorname {3DES} _{(K,K,K)}=\operatorname {DES} _{K}$
Ein für die Verschlüsselungsstärke von 3DES wichtiges mathematisches Problem war die Frage, ob die Hintereinanderausführung von DES-Operationen die Sicherheit erhöht; dies wäre nicht der Fall, wenn DES eine Gruppe ist. Campell und Wiener fanden heraus, dass die Menge der DES-Verschlüsselungen $\operatorname {DES} _{K}$ unter Hintereinanderausführung nicht abgeschlossen ist. Das bedeutet, dass es Schlüssel $K_{1}$ und $K_{2}$ gibt, sodass $\operatorname {DES} _{K_{2}}\circ \operatorname {DES} _{K_{1}}\neq \operatorname {DES} _{K}$ für alle Schlüssel $K$. Anders ausgedrückt ist die Anzahl der Permutationen von der Form $\operatorname {DES} _{K_{2}}\circ \operatorname {DES} _{K_{1}}$ bedeutend größer als die Zahl der $\operatorname {DES} _{K}$-Permutationen. Damit lässt sich die effektive Schlüssellänge tatsächlich steigern. Dies konnte allerdings erst 1992 gezeigt werden.
Die Schlüssellänge von 3DES ist mit 168 Bits dreimal so groß wie bei DES (56 Bits), die effektive Schlüssellänge liegt aber nur bei 112 Bits. Dies ist bedingt durch die Möglichkeit eines sogenannten Meet-in-the-middle-Angriff: Ist der Angreifer im Besitz eines Paares aus Klartext und Chiffre, so kann er die Verschlüsselung von beiden Seiten angreifen. Der Klartext wird mit sämtlichen möglichen Schlüsseln für Stufe 1 verschlüsselt (2$^{56}$ Möglichkeiten). Die so entstandenen Texte werden ebenfalls jeweils mit allen möglichen Schlüsseln für Stufe 2 entschlüsselt (2$^{112}$ Möglichkeiten). Deren Ergebnisse vergleicht man mit den Ergebnissen der Entschlüsselung des Chiffretextes mit sämtlichen Schlüsseln (2$^{56}$Möglichkeiten). So müssen insgesamt nur 2$^{112}$+2$^{56}$≈2$^{112}$ Ver- bzw. Entschlüsselungen durchgeführt werden, anstatt 2$^{168}$ bei Verwendung der Brute-Force-Methode.
Aufgrund dieses Missverhältnisses zwischen Schlüssellänge und effektivem Sicherheitsniveau wird oft $K_{1}=K_{3}$ gewählt. Dies liefert für eine Schlüssellänge von 112 Bits ein theoretisches Sicherheitsniveau von 112 Bits, da kein Meet-in-the-middle-Angriff möglich ist. Es gibt jedoch weitere Angriffe, so dass 3DES mit zwei Schlüsseln vom National Institute of Standards and Technology mit einem Sicherheitsniveau von 80 Bits bewertet wird.

### AES

Durch einen Wettbewerb des NIST wurde im Oktober 2000 der Advanced Encryption Standard (AES) gewählt, um DES offiziell zu ersetzen. Das jetzt als AES bezeichnete Verschlüsselungsverfahren, das den Wettbewerb gewann, war von seinen belgischen Entwicklern Vincent Rijmen und Joan Daemen unter dem Namen Rijndael zu diesem Wettbewerb eingereicht worden.

## 3DESE – Triple DES im Bereich PPP

Die im RFC 2420 definierte Protokollerweiterung 3DESE (Triple-DES Encryption Protocol Extension) ermöglicht über PPP (Point-to-Point Protocol) die gewohnte Triple-DES-Verschlüsselung.