... [ Seminar WWW und Java ] ... [ Thema Verschlüsselung im Internet ] ... [ Kryptographie mit Java ] ...
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.
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.
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.
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.
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 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.
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.
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.
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.
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]...