Samstag, 31. Juli 2010


Topthema

Donnerstag, 21. September 2006 | Topthema

About Security #73: Kryptographie — Anwendungen von DES

(Link zum Artikel: http://www.entwickler.de/php/kolumnen/031412)

Praktische Anwendungen des DES-Algorithmus sind das Thema dieser Folge. Obwohl DES, wie in About Security #71 erwähnt, inzwischen unsicher ist, wird es weiterhin verwendet, meist in Form des noch sicheren 3DES-Verfahrens.

DES beim Einloggen

Ein leicht abgeändertes Verfahren wird für die Verschlüsselung von Unix-Passwörtern durch die Library-Funktion crypt(3) genutzt. Derartige Passwörter werden z.B. auch in den .htaccess-Dateien des Apache-Webservers verwendet. Die Abänderung des DES-Verfahrens besteht in einer schlüsselabhängigen Eingangspermutation mit 2^12 = 4096möglichen Permutationen. Diese soll verhindern, dass Standard-DES-Hardware zum Knacken der Passwörter verwendet werden kann.

N E U ! Security aktuell
Täglich aktuelle Security-Infos!

Allerdings wird nicht das Passwort selbst verschlüsselt, sondern das Passwort als Schlüssel für die Verschlüsselung einer festen Zeichenkette verwendet. Der Aufruf erfolgt durch crypt(Passwort, salt).

Die traditionelle Implementierung verwendet nur die ersten acht Zeichen des Passworts, aus deren jeweils niedrigsten 7 Bit der 56-Bit-DES-Schlüssel gebildet wird. salt, das "Salz in der Suppe", ist eine zwei Zeichen lange Zeichenkette, durch die die Eingangspermutation bestimmt wird. Mit Passwort und salt-Wert wird ein traditionell nur aus Nullen bestehender Block 25 Mal (dies dient nur der Verlangsamung) verschlüsselt und das Ergebnis als so genannter Hash-Wert (siehe About Security #102) zusammen mit dem salt-Wert in druckbarer Form gespeichert.

Neues Passwort eintragen
Neues Passwort eintragen

HTML{ -->

Neues Passwort eintragen
Neues Passwort eintragen

Soll später das Passwort geprüft werden, wird crypt(3) mit dem eingegebenen Passwort und dem gespeicherten salt-Wert aufgerufen und das Ergebnis der Berechnung mit dem gespeicherten Hash-Wert verglichen. Stimmen beide überein, wird davon ausgegangen, dass auch die Passwörter übereinstimmen.

Gegebenes Passwort prüfen
Gegebenes Passwort prüfen

HTML{ -->

Gegebenes Passwort prüfen
Gegebenes Passwort prüfen

Aufgrund des inzwischen möglichen Brechens von DES wurde die Funktion erweitert, sodass inzwischen je nach Implementierung zusätzliche Algorithmen zur Berechnung des Hash-Werts zur Verfügung stehen, die über spezielle salt-Werte ausgewählt werden.

crypt(3) kann in den meisten Programmiersprachen verwendet werden. Die Funktion darf nicht mit dem Unix-Befehl crypt(1) verwechselt werden, ein kryptographisch unbrauchbares Ver- und Entschlüsselungsprogramm.

About Security: Die komplette Serie
DES beim Onlinebanking

HBCI, das Homebanking Computer Interface, und seine Weiterentwicklung FinTS (Financial Transaction Services) verwenden 3DES im Rahmen des so genannten DES-DES-Verfahrens (DDV) zusammen mit Chipkarten (HBCI 2.2 Dokumentation (PDF), FinTS 4.0 Dokumentation (PDF)).

Elektronische Signatur
Für die Berechnung der elektronischen Signatur wird die Hash-Funktion RIPEMD-160 (siehe About Security #102 ff.) verwendet. Deren Ergebnis wird für die verwendete Chipkarte passend formatiert und daraus mit dem 3DES-Verfahren mit zwei Schlüsseln mit dem Signierschlüssel des Benutzers die elektronische Signatur berechnet.

Verschlüsselung
Jede Nachricht wird mit einem separaten Einmalschlüssel (einer vom Sender gewählten Zufallszahl) mit dem 3DES-Verfahren mit zwei Schlüsseln in der Betriebsart CBC (Blockchiffre mit Blockverkettung) verschlüsselt. Der für die Verschlüsselung verwendete Einmalschlüssel wird dann mit dem auf der Chipkarte gespeicherten individuellen Schlüssel des Kunden mit dem 3DES-Verfahren mit zwei Schlüsseln in der Betriebsart ECB (Elektronisches Codebuch) verschlüsselt.

DES am Geldautomaten

DES wurde bis 1997 zur Berechnung der PIN für EC-Karten verwendet. Aus der vierten bis achten Ziffer der Bankleitzahl, der zehn Ziffern langen Kontonummer des Kunden und einer einstelligen Kartenfolgenummer wurde eine 16-stellige Zahl gebildet. Die Kartenfolgenummer wurde bei der Ausgabe einer neuen Karte erhöht und sorgte dafür, dass sich für jede neue Karte eine neue PIN ergab. Durch Umwandlung der Ziffern der 16-stelligen Zahl in ihre 4-Bit-Binärwerte (BCD, Binary Coded Decimal) entstand ein 64-Bit-Wert. Dieser wurde mit einem geheimen, nur der jeweiligen ausgebenden Bank bekannten Institutsschlüssel mit DES verschlüsselt. Der sich ergebende 64-Bit-Schlüsseltext wurde als 16-stelliger Hexadezimalwert betrachtet. Die dritte bis sechste Hexadezimalzahl wurde für die PIN verwendet und in Dezimalzahlen umgewandelt. Die hexadezimalen Werte A bis F wurden in 0 bis 5 abgebildet. Als weitere Einschränkung wurde gefordert, dass an erster Stelle keine 0 stehen darf. Diese wurde ggf. in eine 1 umgewandelt. Mehr Infos gibt es hier (PDF).

PIN-Berechnung bis 1997
PIN-Berechnung bis 1997

HTML{ -->

PIN-Berechnung bis 1997
PIN-Berechnung bis 1997
DES beim Browsen

DES und 3DES werden vom Secure-Sockets-Layer- (SSL-)Protokoll und seinem Nachfolger Transport Layer Security (TLS) (definiert in RFC 4346) verwendet, mit dem z.B. HTTPS-Verbindungen gesichert werden. Beim Verbindungsaufbau wird immer der jeweils stärkste bei beiden Kommunikationspartnern zur Verfügung stehende Algorithmus ausgewählt. Daher kann davon ausgegangen werden, dass DES nur noch selten verwendet wird, da stärkere Alternativen zur Verfügung stehen. Freie Implementierungen von SSL und TLS, die auch weitere Krypto-Funktionen enthalten, sind OpenSSL und GnuTLS.

In der nächsten Folge wird der offizielle Nachfolger von DES vorgestellt: AES.

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers

About Security – Übersicht zum aktuellen Thema "Kryptographie – DES"

Kommentare

Folgende Links könnten Sie auch interessieren