Wichtige Algorithmen


... [ Seminar WWW und Java ] ... [ Thema Verschlüsselung im Internet ] ... [ Kryptographie mit Java ] ...


Übersicht: Wichtige Algorithmen


Einleitung

Rechtliche Vorschriften

Die Verwendung kryptographischer Algorithmen unterliegt in einigen Ländern rechtlichen Vorschriften.
Zum einen sind einige Algorithmen urheberrechtlich geschützt. Ihre Verwendung bedarf der ausdrücklichen Zustimmung des Patentinhabers.
In der Praxis erheblich relevanter sind jedoch Ex- und Importbeschränkungen der Implementierungen, sowie Gesetze, die die Verschlüsselung von Daten allgemein verbieten.
So verbieten beispielsweise die USA den Export von Implementierungen 'starker' Verschlüsselungsalgorithmen, da sie als schwere Waffen angesehen werden. In Frankreich bedarf die Verschlüsselung von Daten staatlicher Zustimmung.

Sicherheit

Die Sicherheit eines Algorithmus hängt davon ab, wie schwer ein Algorithmus zu knacken (also eine verschlüsselte Nachricht zu entschlüsseln bzw. eine Signatur zu reproduzieren) ist. Diese Sicherheit des Algorithmus muß jedoch im Verhältnis zum Wert der verschlüsselten Daten gesehen werden. Wenn der zu betreibende Aufwand zu Entschlüsseln von Daten deutlich höher liegt als der Wert der Daten, kann eine relative Sicherheit unterstellt werden. Diese relative Sicherheit ist jedoch einem schnellen Wandel unterzogen, denn erstens wird Rechenleistung rasend schnell günstiger, und zweitens ist es denkbar, daß durch Fortschritte in der Kryptoanalyse Algorithmen, die heute noch als relativ sicher gelten, schon morgen mit relativ geringem Rechenaufwand geknackt werden können.


Symmetrische Algorithmen

Digital Encryption Standard (DES)

DES ist der Standard-Verschlüsselungsalgorithmus. Er wurde ursprünglich von IBM entwickelt, anschliessend von der US-Amerikanischen 'National Security Agency' (NSA) leicht modifiziert und 1974 veröffentlicht. Trotz seines Alters zählt der DES zu den besseren Algorithmen, d.h. Der erfolgversprechendste Versuch, eine Nachricht zu entschlüsseln ist der sog. Brute-Force-Angriff. Hierbei werden alle möglichen Schlüssel nacheinander ausprobiert, und überprüft, ob die Entschlüsselung ein sinnvolles Ergebnis hat. Die Schlüssellänge des DES beträgt 56 Bit, so daß es 256 möglich Schlüssel gibt. Solche Brute-Force-Angriffe lassen sich jedoch herrlich parallelisieren, weshalb die relativ kurze Schlüssellänge mittlerweile als Schwachpunkt gilt.

TripleDES

Wie der Name schon sagt, ist TripleDES eine Weiterentwicklung des DES. Der 168-Bit lange Schlüssel wird in 3 einzelne DES Schlüssel aufgeteilt. Die zu verschlüsselnde Nachricht wird mit dem ersten Teilschlüssel mit dem DES-Algorithmus verschlüsselt, mit dem Zweiten entschlüsselt, und mit dem Dritten wieder verschlüsselt. Der Vorteil des TripleDES gegenüber dem DES liegt, wie zu erwarten war, nur in der Vergrößerung des Schlüsselraumes auf 2168 mögliche Schlüssel, was einen Brute-Force-Angriff deutlich erschwert.

IDEA

Erstmals wurde der IDEA 1990 von Xuejia Lai und Charles Massey unter dem Namen PES veröffentlicht. Nach neuen Entwicklungen auf dem Gebiet der Kryptoanalyse wurde er nochmals überarbeitet und 1992 als International Data Encryption Algorithm (IDEA) veröffentlicht. IDEA gilt, nach einigen analytischen Angriffen, als einer der sichersten symmetrischen Algorithmen überhaupt. Seine Schlüssellänge von 128 Bit bietet für die meisten Anwendungen auch eine ausreichende Sicherheit gegen Brute-Force-Angriffe.

RC4

RC4 ist hier nur wegen seiner weiten Verbreitung erwähnt. Der Algorithmus von RC4 ist zwar offiziell ein Geheimnis des Entwicklers und Patentinhabers, der RSA Data Security Inc., ein zu RC4 kompatibler Algorithmus wurde jedoch im Usenet veröffentlicht. Dies hat allerdings keinerlei Einfluß auf das Patent ! Er gilt als hochgradig resistent gegen verschiedene Arten der Kryptoanalyse. Die Schlüssellänge ist variabel, so daß auch ein Brute-Force-Attack wenig erfolgversprechend ist. Allerdings darf nur eine abgeschwächte Version dieses Algorithmus mit 40 Bit Schlüssellänge aus den USA exportiert werden. Ein Brute-Force-Attack auf eine mit 40 Bit verschlüsselte Nachricht ist mit relativ überschaubarem Aufwand durchzuführen.


Asymmetrische Algorithmen

RSA

RSA wurde Ende der 70er entwickelt, und seitdem gründlich analysiert. Vor allem deswegen gilt der Algorithmus, bei ausreichender Schlüssellänge, als sicher. (Zur Erinnerung : die Schlüssellänge sollte also von der benötigten Sicherheit abhängen). Die Sicherheit beruht auf auf der Schwierigkeit, sehr große Zahlen zu faktorisieren. Der Rechenaufwand, der benötigt wird, um große Zahlen zu faktorisieren, läßt sich recht präzise abschätzen. Da die Funktionsweise des RSA-Algorithmus recht einfach ist, sei sie hier erläutert :
Um ein Schlüsselpaar zu erzeugen, wählt man zufällig zwei sehr große Primzahlen p und q und berechnet deren Produkt n. P und q sollten möglichst gleich lang sein.
Der Chiffrierschlüssel e wird zufällig so gewählt,
daß e und (p-1)*(q-1) relativ prim zueinander sind (der ggT von e und (p-1)*(q-1) ist 1).
Der Dechiffrierschlüssel d ergibt sich aus e-1 mod ((p-1)*(q-1)). (Anmerkung : e-1 ist nicht etwa 1/e, sondern der Kehrwert von e bezüglich der modulo-Funktion. Die Berechnung erfolgt mittles des erweiterten euklidschen Algorithmus).
Der public key setzt sich aus e und n zusammen, der private key aus d und n.
Die Verschlüsselung eines Datenblocks m in einen Chiffreblock c erfolgt nach folgender Vorschrift : c=me mod n
Die Entschlüsselungsvorschrift ist m=ce mod n.

Diffie-Hellmann

Der Diffie-Hellmann-Algorithmus dient ausschließlich zum Schlüsselaustausch (präziser: zur Einigung auf einen gemeinsamen Schlüssel). Seine Sicherheit beruht auf der Schwierigkeit der Berechnung diskreter Logarithmen. Die Berechnung von Potenzen ist im Vergleich dazu recht einfach. Da auch dieser Algorithmus eher einfach ist, sei er hier kurz umrissen :
Die beiden Kommunikationspartner einigen sich auf zuerst auf eine große Primzahl n und eine Zahl g, die modulo n primitiv ist (g ist modulo n primitiv, wenn es für jedes b, 1 < b < (p-1), eine Zahl a gibt, so daß ga mod n= b ). Diese Zahlen n und g können auch unverschlüsselt übertragen werden.
Einer der Partner (A) wählt eine zufällige, große Zahl x und berechnet X=gx mod n. X wird dem Anderen zugesendet.
Der andere Partner (B) wählt seinerseits eine zufällige Zahl y und berechnet Y=gy mod n. Er sendet Y an (A).
(A) berechnet den Schlüssel k = Yx mod n
(B) berechnet k' aus Xy mod n.
Es läßt sich zeigen, daß sowohl k als auch k' gleich gxy mod n sind. Dieser Wert läßt sich aus X,Y,g und n nur durch Berechnung des diskreten Logarithmus berechnen, was sehr aufwendig ist.
Dieser Algorithmus läßt sich sehr einfach auch auf 3 oder mehr Kommunikationspartner erweitern.
Eine Schwierigkeit bei der Verwendung dieses Algorithmus liegt darin, geeignete Zahlen g und n zu ermitteln. Zwei Zahlen mit geeigneten Eigenschaften sind im 'Simple Key Management Internet Protocol' (SKIP) standardisiert.

Digital Signature Algorithm - DSA

1991 veröffentlichte das US-Amerikanische National Institute of Standards and Technology (NIST) den DSA als Standard zur Erzeugung digitaler Signaturen. Obwohl dieser Schritt anfangs Widerstände von seiten des Patentinhabers des damaligen de-Facto Standards RSA und der Lizenznehmer des RSA-Algorithmus hervorrief, hat sich der DSA sich mittlerweile als Standard neben RSA etabliert. Die Schlüssellänge beträgt maximal 1024 Bit. Zur Sicherheit des Algorithmus stellte das NSA 1992 '[...] kategorisch fest, daß die Chance für jedermann einschließlich der NSA, eine DSS-Unterschrift zu fälschen, unendlich klein ist [...]'.
DSS ist der zum Algorithmus gehörige Standard. Da der Algorithmus allerleit Parameter erfordert, sowie einen Hash-Algorithmus, wird er hier nicht genauer beschrieben.


Hash-Algorithmen

MD2, MD4 und MD5

Diese drei Algorithmen wurden von der RSA Data Security Inc. Entwickelt und als RFC's 1319,1320 und 1321 veröffentlicht. Da diese RFC's die Algorithmen sehr präzise spezifizieren, wird hier nicht weiter auf die Einzelheiten der Algorithmen eingegangen. Alle drei erzeugen zu einem Input beliebiger Länge einen 128 Bit Hash-Wert.
MD2 ist der langsamste der drei Algorithmen, aber gilt gleichzeitig auch als der Sicherste.
Im Gegensatz gilt MD4 als relativ unsicher. Mittlerweile rät auch RSA von der Benutzung ab und empfiehlt statt dessen den MD5.
MD5 ist eine verbesserte Version des MD4-Algorithmus. Es ist zwar gelungen, mit relativ geringem Aufwand zwei Datenblöcke mit gleichem Hash-Wert zu erzeugen, jedoch sind Versuche zu einem Hash-Wert einen Datenblock zu erzeugen erfolglos geblieben (Stand: 1995). Für den praktischen Einsatz gilt MD5 als ausreichend sicher, und MD5 ist entsprechend weit verbreitet.

Secure Hash Algorithm SHA

Zur Verwendung mit DSA entwickelte das NIST zusammen mit der NSA den SHA. Er liefert zu einem Input < 264 Bit einen 160 Bit Hash-Wert. Der SHA basiert auf dem MD4-Algorithmus, ist aber in einigen Punkten weiterentwickelt worden. Da die NSA den Algorithmus entwickelt hat, kann man ihn als sicher bezeichnen (die NSA veröffentlicht keine Algorithmen, ohne sie vorher selbst ausführlich getestet zu haben), obwohl der Algorithmus noch zu neu ist, als das ernstzunehmende Angriffe 'freier' Kryptologen stattgefunden hätten.


... [Seminar WWW und Java] ... [ Thema Verschlüsselung im Internet ] ... [ Wichtige Algorithmen ] ... [ Kryptographie mit Java]...