|
| |
1.0 Inhaltsverzeichnis
1.0 Inhaltsverzeichnis
2.0 Einführung
2.1 Kryptoanalyse
2.2 OGR - Golomb Ruler
2.3 Steganografie
3.0 Wieso soll ich verschlüsseln?
4.0 Symmetrische Kryptoalgorithmen
4.1 Blowfish
4.2 CAST-128
4.3 Clipper
4.4 DES (Data Encryption Standart)
4.5 IDEA (International Data Encryption Standart)
4.6 ROT13 & monoalphabetische Verschlüsselungen
4.7 RC2 (Rivest Cipher 2)
4.8 RC4 (Rivest Cipher 4)
4.9 RC5 (Rivest Cipher 5)
4.10 Safer
4.11 Triple-DES (3DES)
4.12 Twofish
5.0 Assymmetrische Kryptoalgorithmen
5.1 RSA (Rivest, Shamir, Adleman)
6.0 Einwegverschlüsselungs-Algorithmen
6.1 DH/DSS
6.2 MD5 (Message Digest 5)
6.4 SHA/SHA1 (Secure Hash Algorithm)
2.0 Einführung
Die Kryptologie teilt sich in die beiden Tätigkeitsfelder
Kryptografie und Kryptoanalyse auf. Als Kryptografie bezeichnet man die
Wissenschaft von den Methoden der Ver- und Entschlüsselung von Daten.
Die Kryptoanalyse als Wissenschaft versucht bestehende kryptografische
Systeme zu brechen.
In der Verschlüsselungstechnik werden grundsätzlich drei Arten von
Daten gekannt: Als Klartext (engl. Plaintext) werden unverschlüsselte
Daten bezeichnet. Im Gegensatz dazu benennt man verschlüsselte Daten als
Schlüsseltext (engl. Ciphertext). Dazwischen wird natürlich noch ein
Schlüssel verwendet, welcher der eigentliche Verschlüsselungsalgorithmus
ist.
| Verschlüsselung |
: Schlüsseltext = Verschlüsseln ( Schlüssel;
Klartext ) |
| Entschlüsselung |
: Klartext = Entschlüsseln ( Schlüssel; Schlüsseltext ) |
| Signieren |
: Signatur = Signieren ( Geheimer Schlüssel; Text ) |
Moderne Kryptoalgorithmen basieren in der Regel auf dem
Kerckhoff-Prinzip. Das nach Auguste Kerckhoff (1835 - 1903) benannte
Prinzip besagt, dass die gesamte Sicherheit eines Algorithmus nur auf
der Geheimhaltung des Schlüssels beruhen soll, und nicht auf der
Geheimhaltung des kryptografischen Algorithmus. Der Gegensatz zu
Kerckhoff ist das Prinzip der Sicherheit durch Verschleiern: Der
Angreifer hat bei einem verschleierten System keine Ahnung, wie es
funktioniert.
2.1 Kryptoanalyse
Um den Schlüssel eines Kryptoalgorithmus zu brechen, gibt es
verschiedene Angriffsmöglichkeiten: Bei der "ciphertext only attack"
kennt der Angreifer nur den Schlüsseltext, und versucht daraus den
Schlüssel oder Plaintext zu generieren. Bei der "known plaintext
attack" kennt der Angreifer mehrere Plaintext-Ciphertext-Paare, und
versucht danach weitere zu generieren. Kann der Angreifer in der
"chosen plaintext attack" und der "chosen ciphertext attack" eigene
Klartext- bzw. Schlüsseltext-Paare generieren, dann ist dies der
aussichtsreichste Angriff. Denn dann kann durch Probieren der
geheime Schlüssel gefunden werden. Dies nennt man dann eine "brute
force attack".
2.2 OGR
Im mathematischen Sinn ist ein "Golomb Ruler" eine Menge
nichtnegativer ganzer Zahlen, wobei alle möglichen Zahlenpaare eine
unterschiedliche Differenz haben. Das kann man mit einer Messlatte
vergleichen, auf der keine zwei Paar Markierungen den gleichen
Abstand haben. Ein OGR ist dann die kürzeste mögli-che Messlatte bei
gegebener Anzahl Markierungen. Die Anwendungen dafür sind zahlreich,
z. B. in Ra-dioastronomie oder
Röntgenkristallographie.
Zur Zeit sind die OGR mit bis zu 20 Zahlen bekannt. Auch Ruler
mit mehr als 20 Zahlen sind bekannt, allerdings weis man von diesen
nicht, ob sie optimal sind. Durch Testen aller möglichen Ruler bis
zur Grösse des besten bekannten Rulers mit 21 Zahlen (und später
dann auch mehr) kann man entweder einen besseren finden oder für den
bekannten beweisen, dass er optimal ist.
2.3 Steganografie
Als erstes muss ich sagen, dass Steganografie ein Teilgebiet der
Verschlüsselung darstellt. Steganografie ist die Kunst, die Daten
einer Kommunikation in anderen Daten zu verstecken, so dass es
aussieht, als hätte nie eine Kommunikation stattgefunden. Im
Gegensatz dazu versuchen kryptografische Methoden nicht, die
Kommunikation zu verschleidern, sondern deren Inhalt für jeden
anderen, als die Ziel-Person, unleserlich zu gestalten.
Die Ursprünge dieser Technik reichen bis in die Antike zurück. Im
Mittelwalter wurden Bücher und Schriften verfasst, in welchen zum
Beispiel Sätze aus privaten Dokumenten, wie Briefen, gesammelt
wurden. Den einzelnen Sätzen wurden gewisse Bedeutungen zugewiesen,
wodurch Informationen in Briefen versteckt werden konnten. Ein
anderes Beispiel ist die Geschichte zur Zeit von Cäsar, als eine mit
der richtigen Nachricht beschriftete Steinplatte mit Wachs überzogen
wurde, um eine andere Nachricht darauf vorzutäuschen. In gewisser
Weise ist auch das Handeln von David Copperfield der Steganografie
zuzuschreiben, denn sei-ne Tricks versuchen etwas vorzugeben, was
nicht wirklich elementar ist.
Im Bereich der Telekommunikation via Internet sind MixMaster und
Onion Routing Beispiele für Steganographie. Um die Tatsache der
Kommunikation zu verbergen, wird die Netzlast zwischen Knoten
konstant gehalten. Im Datenverkehr zwischen den Netzknoten wir die
Kommunikation zwischen menschlichen Partnern verborgen. Wird eine
Traffic-Analyse durchgeführt, lässt sich nicht feststellen, wer an
wen Daten sendet. Man erkennt nur, dass Daten von einem Punkt zum
anderen fliessen.
MixMaster ist ein Programm, das dieses Prinzip auf den Versand
von E-Mails überträgt. Onion Routing ist ein Ansatz, Steganografie
auf der Ebene des Netzwerk-Standarts TCP zu implementieren. Das für
den Otto-Normalverbraucher wohl interessanteste Programm zur
Steganografie ist das Programm "Stegano", welches in der gewohnten
Umgebung unter Windows 9x Daten in anderen Daten verstecken kann.
Das Problem einer solchen Verschleierung ist, dass das Rauschen,
mit dem die Information versteckt wird, wiederum nicht als Rauschen
entdeckt werden darf. Gelingt eine Trenning von Rauschen und
Informationen, ist zumindest die Verschleierung der
Nachrichtenübermittlung aufgedeckt.
Heute ist das eigentliche Anwendungsgebiet der Steganografie der
Copyrightschutz von elektronischen Daten, wie zum Beispiel Bildern
oder Sound-Dateien. So werden zum Beispiel elektronische
Wasserzeichen (Englisch: watermarks) in ein Bild eingebettet. Das
Wasserzeichen ist im Bild mit blossem Auge nicht sichtbar. Im
Streitfall kann der Eigentümer allerdings durch ein geeignetes
Programm die versteckte Information sichtbar
machen, und dadurch die Standfestigkeit seiner meinung festigen.
Probleme ergeben sich, falls das Bild verändert wurde. Es existieren
Programme, mit denen ein Bild so verändert werden kann, dass der
Bildinhalt nur geringfügig verändert wird, und das Wasserzeichen
nicht mehr nachweisbar ist.
Im Bereich der Betriebssysteme, die nach dem Orangebook (ITSEC)
sicherheitszertifiziert wurden, besteht das Problem des "Hidden
Channel". In entsprechenden Betriebssystemen sind alle Objekte
(Dateien und Prozesse) nicht nur Benutzern und Gruppen zugeordnet,
sondern auch Sicherheitsstufen. Aufgrund der Vorgaben aus dem
Orangebook darf ein Objekt mit einer hohen Sicherheitsstufe keine
Daten an ein Objekt niedriger Sicherheitsstufe weitergeben oder
zugänglich machen. Durch die Erzeugung von sogenannten "Hidden
Channels" kann dies jedoch
umgangen werden. Ein solcher "Hidden Channel" kann zum Beispiel die
künstliche Erhöhung der Systemlast in gewissen Zeitabständen oder
Situationen sein. Zwei Prozesse, die per Definition nicht
miteinander kommunizieren dürfen, können auf diese Weise trotzdem
Informationen austauschen.
3.0 Wieso soll ich verschlüsseln?
Wenn man geschäftliche oder persönliche Informationen lieber in einem
geschlossenen Umschlag verschicke, weder die Informationen per Postkarte
an jemanden weiterzuleiten, dann ist die logische Schlussfolgerung, dass
man sich für eine Verschlüsselung des Datenverkehrs im Internet
entscheiden sollte.
Leider gelten unverschlüsselte E-Mails als absolut unsicher. Eine
E-Mail passiert viele verschiedene Rechner/Knotenpunkte auf dem Weg
durch das Internet, bis es schlussendlich einmal beim Empfänger
eintrifft. Auf jedem dieser Rechner kann die Nachricht im Klartext
gelesen werden, was keinen sonderlichen positiven Einfluss auf die
Privatsphäre der beiden kommunizierenden Parteien hat. Beide würden von
einem solchen passiven Eingriff auch nichts mitbekommen.
Sicherheitsexperten und Paranoiker gehen davon aus, dass ein Grossteil
des Datenverkehrs aufgezeichnet, und mittels Schlüsselwörtern, wie zum
Beispiel "Attentat", "Anschlag", "Bombe", oder "Mafia" untersucht wird.
Besonders die amerikanische Regierung, und die NSA (National Security
Agency) gerieten ins Zwielicht, solche Informationsschnüffler und
-Sammler zu sein.
Auserdem gestaltet sich der Aufwand, sei es nun persönlicher oder
finanzieller Natur, mittels des Verschlüsselns des Datenverkehrs als
ausgesprochen gering. Das meist eingesetzte, und von mir empfohlene
Programm ist PGP (Pretty Good Privacy), und ist als Freeware erhältlich.
Somit sind frei kopierbare Versionen im Umlauf, welche als Standart für
den Normalverbraucher, sowie auch unter den Experten angesehen wird.
Solch starke Verschlüsselungen, wie sie bei PGP möglich sind, sind in
der Schweiz durchwegs legal, und fallen unter kein Waffenexport-Verbot.
Da der darin verwendete Algorithmus keine sonderlich hohen
Hardwareanforderungen hat, ist PGP auf jedem gebräuchlichen PC
einsetzbar.
4.0 Symmetrische Kryptoalgorithmen
Die symmetrischen Kryptoalgorithmen basieren auf dem Prinzip, die
Ver- und Entschlüsselung mit dem gleichen Schlüssel durchzuführen.
4.1 Blowfish
Der Autor von Blowfish heisst Bruce Schneider, und er entwickelte
ihn im Jahre 1994. Die Blocklänge beträgt 64 Bit, und die
Schlüssellänge kann bis 448 Bit ausgeweitet werden.
Ausgehend von den ersten 8336 Stellen der hexadezimalen
Darstellung von Pi, wird aus dem Schlüssel die benötigten Grössen mt
521 Iterationen des Blowfish-Algorithmus erstellt. Damit will man
eventuellen Hintertüren vorbeugen.
4.2 CAST-128
Als Autor von CAST-128 gilt C. M. Adams. Die Blocklänge beträgt
64 Bit, und die Schlüssellänge kann zwischen 40 und 128 Bit liegen.
Der Einsatzort wird nicht nur wegen der enormen Geschwindigkeit und
dem Entfallen der Kosten hauptsächlich in PGP 5 gesehen. CAST-128
ist weltweit erhältlich und einsetzbar; Egal, ob für den privaten
oder kommerziellen Gebrauch. Genauere Informationen erhält man in
RFC2144.
CAST-128 ist ein Verfahren, welches einen Klartext in 12 oder 16
Durchgängen mittels des Feistel-Verfahrens und einer maximalen
Blockgrösse von 128 Bit verschlüsselt. Es wird ein Umkehren der
wichtigen Elemente eingesetzt, was das Verfahren immun gegen lineare
und differentielle Attacken macht. Es wird eine Mixtur aus XOR,
Additionen und Subtraktionen (modulo 2**32) in einem Durchgang
eingesetzt, wobei drei Variationen der Rundungsfunktion bis zum
Endgültigen verschlüsselten Text zum Zuge kommen. Schlussendlich
werden 8x32 S-Boxen eingesetzt, wobei die verschiedenen
Rundungsfunktionen das Minimum von 74 nonlinearen und ein Maximum
von 2 verschiedenen verteilungs Tabellen erreicht wird.
CAST-128 stellt eine Form der Verschlüsselung dar, welche
"Feister ciphers" genannt wird. Viele eingesetzte Operationen sind
ähnlich, wie die des DES (Data Encryption Standart). Die komplette
Verschlüsselung geschieht in folgenden vier Teilschritten:
Eingabe
|
: Klartext k1...k64; Schlüssel s = s1...s128.
|
Ausgabe
|
: Verschlüsselter Text c1...c64.
|
Es werden 16 Subkey-Paare {Kmi, Kri} aus K gebildet. Es wird aus
k1...k64 L0 und R0 gebildet, also der Klartext in zwei
32-Bit-Hälften gesplittet. L0 = k1...k32 und R0 = k33...k64. Es
werden i1...i16 gebildet, und Li und Ri wie folgt ergänzt, was dann
f ergibt: Li = Ri-1 Ri = Li-1 ^ f(Ri-1, Kmi, Kri) c1...c64, also R16
und L16 werden ausgetauscht, und der verschlüsselte Text ist
gegeben.
CAST-128 benutzt ein Subkey-Paar pro Prozedur, welche als
32-Bit-Quantität Km als "masking Key" und eine 5-Bit-Quantität Kr
als "rotation Key" generiert werden müssen.
Drei verschiedene Rundungs-Funktionen kommen bei CAST-128 zum
Zuge. Folgend möchte ich jene gerne kurz beschreiben, wobei D als
Daten-Eingabe zur Funktion F und Ia und Id die höchstwertigen Bytes
darstellen. Zu beachten ist, dass + und - als Addition und
Subtraktion modulo 2**32 eingesetzt werden, und ^ als bitweise
XOR-Funktion genutzt wird. Desweiteren gilt <<< als als zurkulierte
Leftshift-Operation.
Type 1:
I = ((Kmi + D) <<< Kri)
f = ((S1[Ia] ^ S2[Ib]) - S3[Ic]) + S4[Id]
Type 2:
I = ((Kmi ^ D) <<< Kri)
f = ((S1[Ia] - S2[Ib]) + S3[Ic]) ^ S4[Id]
Type 3:
I = ((Kmi - D) <<< Kri)
f = ((S1[Ia] + S2[Ib]) ^ S3[Ic]) - S4[Id]
Die Rundungen 1, 4, 7, 10, 13 und 16 benutzen die f-Funktion
Typus 1.
Die Rundungen 2, 5, 8, 11 und 14 benutzen die f-Funktion Typus 2.
Die Rundungen 3, 6, 9, 12 und 15 benutzen die f-Funktion Typus 3.
CAST-128 greift auf acht Ersatz-Boxen zurück: Die S-Boxen S1, S2,
S3 und S4 sind Rundungsfunktionen in Form von S-Boxen. S5, S6, S7
und S8 sind planmäsige S-Boxen. Schlussendlich brauchen 8 S-Boxen
total 8 Kbytes Speicher, wobei eigentlich nur 4 Kbytes währen des
effektiven Umwandlungsvorgangs von Klar- zu Schlüsseltext, oder
Umgekehrt benötigt werden.
Als 128-Bit-Schlüssel nehme ich nun
x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF, wobei x0 das höchstwertige Byte,
und xF das niederwertigste Byte repräsentiert. Z0...zF stellen
temporäre Bytes dar. Si[] gilt als S-Box i und ^ represäntiert eine
XOR-Addition.
Die Subkeys werden vom Schlüssel x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
gebildet, und gestalten sich nun wie folgt:
z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8]
z4z5z6z7 = x8x9xAxB ^ S5[z0] ^ S6[z2] ^ S7[z1] ^ S8[z3] ^ S8[xA]
z8z9zAzB = xCxDxExF ^ S5[z7] ^ S6[z6] ^ S7[z5] ^ S8[z4] ^ S5[x9]
zCzDzEzF = x4x5x6x7 ^ S5[zA] ^ S6[z9] ^ S7[zB] ^ S8[z8] ^ S6[xB]
K1 = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2]
K2 = S5[zA] ^ S6[zB] ^ S7[z5] ^ S8[z4] ^ S6[z6]
K3 = S5[zC] ^ S6[zD] ^ S7[z3] ^ S8[z2] ^ S7[z9]
K4 = S5[zE] ^ S6[zF] ^ S7[z1] ^ S8[z0] ^ S8[zC]
x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0]
x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2]
x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1]
xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3]
K5 = S5[x3] ^ S6[x2] ^ S7[xC] ^ S8[xD] ^ S5[x8]
K6 = S5[x1] ^ S6[x0] ^ S7[xE] ^ S8[xF] ^ S6[xD]
K7 = S5[x7] ^ S6[x6] ^ S7[x8] ^ S8[x9] ^ S7[x3]
K8 = S5[x5] ^ S6[x4] ^ S7[xA] ^ S8[xB] ^ S8[x7]
z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8]
z4z5z6z7 = x8x9xAxB ^ S5[z0] ^ S6[z2] ^ S7[z1] ^ S8[z3] ^ S8[xA]
z8z9zAzB = xCxDxExF ^ S5[z7] ^ S6[z6] ^ S7[z5] ^ S8[z4] ^ S5[x9]
zCzDzEzF = x4x5x6x7 ^ S5[zA] ^ S6[z9] ^ S7[zB] ^ S8[z8] ^ S6[xB]
K9 = S5[z3] ^ S6[z2] ^ S7[zC] ^ S8[zD] ^ S5[z9]
K10 = S5[z1] ^ S6[z0] ^ S7[zE] ^ S8[zF] ^ S6[zC]
K11 = S5[z7] ^ S6[z6] ^ S7[z8] ^ S8[z9] ^ S7[z2]
K12 = S5[z5] ^ S6[z4] ^ S7[zA] ^ S8[zB] ^ S8[z6]
x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0]
x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2]
x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1]
xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3]
K13 = S5[x8] ^ S6[x9] ^ S7[x7] ^ S8[x6] ^ S5[x3]
K14 = S5[xA] ^ S6[xB] ^ S7[x5] ^ S8[x4] ^ S6[x7]
K15 = S5[xC] ^ S6[xD] ^ S7[x3] ^ S8[x2] ^ S7[x8]
K16 = S5[xE] ^ S6[xF] ^ S7[x1] ^ S8[x0] ^ S8[xD]
z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8]
z4z5z6z7 = x8x9xAxB ^ S5[z0] ^ S6[z2] ^ S7[z1] ^ S8[z3] ^ S8[xA]
z8z9zAzB = xCxDxExF ^ S5[z7] ^ S6[z6] ^ S7[z5] ^ S8[z4] ^ S5[x9]
zCzDzEzF = x4x5x6x7 ^ S5[zA] ^ S6[z9] ^ S7[zB] ^ S8[z8] ^ S6[xB]
K17 = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2]
K18 = S5[zA] ^ S6[zB] ^ S7[z5] ^ S8[z4] ^ S6[z6]
K19 = S5[zC] ^ S6[zD] ^ S7[z3] ^ S8[z2] ^ S7[z9]
K20 = S5[zE] ^ S6[zF] ^ S7[z1] ^ S8[z0] ^ S8[zC]
x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0]
x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2]
x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1]
xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3]
K21 = S5[x3] ^ S6[x2] ^ S7[xC] ^ S8[xD] ^ S5[x8]
K22 = S5[x1] ^ S6[x0] ^ S7[xE] ^ S8[xF] ^ S6[xD]
K23 = S5[x7] ^ S6[x6] ^ S7[x8] ^ S8[x9] ^ S7[x3]
K24 = S5[x5] ^ S6[x4] ^ S7[xA] ^ S8[xB] ^ S8[x7]
z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8]
z4z5z6z7 = x8x9xAxB ^ S5[z0] ^ S6[z2] ^ S7[z1] ^ S8[z3] ^ S8[xA]
z8z9zAzB = xCxDxExF ^ S5[z7] ^ S6[z6] ^ S7[z5] ^ S8[z4] ^ S5[x9]
zCzDzEzF = x4x5x6x7 ^ S5[zA] ^ S6[z9] ^ S7[zB] ^ S8[z8] ^ S6[xB]
K25 = S5[z3] ^ S6[z2] ^ S7[zC] ^ S8[zD] ^ S5[z9]
K26 = S5[z1] ^ S6[z0] ^ S7[zE] ^ S8[zF] ^ S6[zC]
K27 = S5[z7] ^ S6[z6] ^ S7[z8] ^ S8[z9] ^ S7[z2]
K28 = S5[z5] ^ S6[z4] ^ S7[zA] ^ S8[zB] ^ S8[z6]
x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0]
x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2]
x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1]
xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3]
K29 = S5[x8] ^ S6[x9] ^ S7[x7] ^ S8[x6] ^ S5[x3]
K30 = S5[xA] ^ S6[xB] ^ S7[x5] ^ S8[x4] ^ S6[x7]
K31 = S5[xC] ^ S6[xD] ^ S7[x3] ^ S8[x2] ^ S7[x8]
K32 = S5[xE] ^ S6[xF] ^ S7[x1] ^ S8[x0] ^ S8[xD]
Für das Maskieren und Rotieren der Subkeys gilt folgende Regel,
wobei Km1...Km16 ein 32-Bit-maskierter Subkey, und Kr1...Kr16 den
anderen Subkey für eine Sitzung darstellt. Nur die 5 höchstwertigen
Bits werden in einem Durchgang benutzt.
for (i=1; i<=16; i++) { Kmi = Ki; Kri = K16+i; }
CAST-128 wurde so designt, dass der Schlüssel für eine Sitzung
zwischen 40 und 128 Bits gewählt werden kann. Dabei muss man jedoch
bedenken, dass der Schlüssel in 8-Bit-Teile zerlegt werden muss, und
somit nur die Schlüssellängen 40, 48, 56, 64, ..., 112, 120 und 128
Bits möglich werden. Für eine variable Schlüsselgrösse sind folgende
offiziellen Spezifikationen in RFC2144 festgehalten:
Für Schlüssellängen bis zu 80 Bits (also 40, 48, 56, 64, 72 und
80 Bits) verwendet der Algorithmus die Standartbestimmungen, jedoch
12 Durchgänge, anstatt 16. Für Schlüssellängen, die grösser als 80
Bits sind, benutzt der Algorithmus alle 16 Durchgänge. Für
Schlüssellängen, die kleiner als 128 Bits sind, werden die
niederwertigsten Positionen mit Nullen aufgefüllt.
Grob kann man nun sagen, dass CAST-128 anstandslos alle 12 oben
genannten Schlüssellängen akzeptiert, und verwerten kann. Zum
Einsatz kommen jedoch vorwiegend die Schlüssellängen von 40, 64, 80
und 128 Bits. Bei vielen Implementationen ist eine Wahl zwischen
diesen Schlüssellängen meist nicht möglich.
Falls nun eine Konfusion auf Basis von CAST-128 durchgeführt
wird, kann das Verfahren einen anderen Namen enthalten. Als Beispiel
sei eine Verschlüsselung mittels CAST-128 mit einem 40 Bit langer
Schlüssel zu nennen, welche dann den Namen CAST5-40 erhält. Wird nun
ein 128 Bit langer Schlüssel eingesetzt, wird das ganze als
CAST5-128 benannt.
Die Performance des als sicher geltenden Verfahrens kann sich
durchaus sehen lassen. Wird ein Text mit einem Schlüssel von 128 Bit
Länge ver- oder entschlüsselt, braucht man auf einem handelsüblichen
Pentium Prozessor, welcher mit 150 MHz getaktet ist, nur 3.3 MB/sek.
Das Dechiffrieren gestaltet sich relativ einfach: Denn genau wie
Chiffrieren; nur die Reihenfolge der Teilschlüssel wird umgedreht.
Trotzdem gilt dieses Verfahren als immun gegen lineare und
differentiale Kryptoanalyse, da keine schwachen oder semi-schwachen
Schlüssel existieren.
4.3 Clipper
Die amerikanische Regierung kündigte auf den Tag genau am 16.
April 1993 eine neue Initiative der Datenverschlüsselung an, die
jedermann ein grosses Masse an Sicherheit garantieren sollte. Die
damalige Regierung verabschiedete deshalb den EES (Escrowed
Encryption Standart), der gemeinsam mit dem KES (Key Escrow System)
dieses Ziel verwirklichen sollte. EES sollte das bisherige
DES-Verfahren ablösen, da das neue Verfahren einerseits als sicherer
galt, andererseits wollte man Verbrechern, die ihre Rechner zu
kryptografischen Festungen ausgebaut hatten, das Handwerk legen.
Das Wichtigste aber an dieser Initiative war aber ein
integrierter Hardware-Chip, der sogenannte Clipper-Chip, der die
eigentlichen Sicherheitsmassnahmen darstellen sollte. Die Idee war,
dass Verschlüsselungssystem für jederman implementiert werden
konnte, um ein Entschlüsseln von Dritten zu verhindern. Doch davon
ausgenommen sollten autorisierte Stellen der Regierung sein. Sie
sollte in der Lage sein, bei Verbrechensbekämpfung verschlüsselte
Nachrichten im Klartext lesen zu können, und so Verschlüsselungen
benutzende kriminellen Vereinigungen (Terroristen, Mafia,...) das
Handwerk zu legen.
Der Clipper-Chip hat aber nicht nur in Amerika Aufsehen erregt,
und da zahlreiche Proteste zur Folge waren, wurde das Projekt
vorerst offiziell wegen Geldmangels auf Eis gelegt.
4.4 DES (Data Encryption
Standart)
1975 wird DES (Data Encryption Standart) von NBS (National Buerau
of Standarts), welches heute als NIST (National Institute of
Standards and Technology) Erscheinung tritt, der NSA (National
Security Agency) und IBM (International Business Machines)
entwickelt. Dieser Algorithmus wurde vom DoD (Department of Defense)
und der der NSA (National Security Agency) 1977 zum öffentlichen
Verschlüsselungsstandart erklärt. Er wird seitdem in sehr vielen
Bereichen eingesetzt, darunter auch im Banken- und Finanzwesen. DES
(Data Encryption Standart) verwendet einen geheimen
56-Bit-Schlüssel, dessen Länge nicht variabel ist, und basiert auf
einer Blocklänge von 64 Bit. Nach jeweils 5 Jahren fand eine
Untersuchung statt, der Zahn der Zeit nicht zu arg am Algorithmus
genagt hat. Er bestand den Test in den Jahren 1987 und 1992/93, und
wurde erst 1998 durch den AES (Advanced Encryption Standart)
abgelöst.
Es gibt 4 als unsicher und ungünstig geltende Schlüssel, welche
0101010101010101, FEFEFEFEFEFEFEFE, 1F1F1F1F1F1F1F1F und
E0E0E0E0E0E0E0E0 lauten. Diese können zu einer Involution führen. Es
gibt nur 256, also 7.2x1016 verschiedene Schlüssel. Das gilt im
Zusammenhang mit heutigen technischen Hilfsmitteln als zu klein, und
somit unsicher. Ein Ausweg aus dem Problem des zu kleinen
Schlüsselraums bietet die mehrfache Chiffrierung mit verschiedenen
Schlüsseln, wenn das Verfahren keine Schlüsselgruppe bildet. DES
(Data Encryption Standart) definiert im Allgemeinen keine Gruppe.
Die Anzahl der verschiedenen Chiffrierungen, die durch mehrfache
DES-Anwendung mit verschiedenen Schlüsseln erreicht werden kann,
beträgt mindestens 102499. Man sollte die tatsächlich erreichbare
Komplexitätssteigerung mittels eines Meet-in-the-middle-Angriffs
nicht ausser Acht lassen.
DES (Data Encryption Standart) gilt als einer der meist
durchleuchtesten Standarts für Verschlüsselungen. In all den Jahren
wurden nie offensichtliche Mängel offengelegt, also kann der
Algorithmus selber als sehr sicher eingestuft werden. Doch zugleich
bleiben gewisse Zweifel, ob nicht doch Hintertüren für die NSA
existieren, da sie ja stark an der Einführung des Standarts
beigewohnt haben. Auch Frontpage von Microsoft benutzt
DES-Verschlüsselungen.
4.5 IDEA (International Data
Encryption Standart)
Dies ist der im Jahre 1990 an der ETH Zürich von Xuejia Lai und
James Massey vorgeschlagene Nachfolger des PES (Proposed
Encrypton Standart). Der erste Entwurf von IDEA (International Data
Encryption Standart) wurde PEES genannt. Genau wie der DES ist es
eine 64-Bit-Blockchiffrierung, welche aber mit einer auf 128 Bit
vergrösserten Schlüssellänge arbeitet. Durch die Reduktion der
Iterationen auf die Hälfte derer des DES und dadurch, dass es keine
Permtationsoperationen gibt, bleibt die Rechenzeit bei
gleichzeitiger Steigerung der Sicherheit unter der ihres populären
Vorgängers. Besonders interessant ist, dass keine Bitoperationen
eingesetzt werden, sondern drei verschiedene Operationen auf
16-Bit-Blöcken:
Bitweise Addition zweier Zahlen ohne Übertrag (XOR).
Addition zweier Zahlen ohne Berücksichtigung des Übertrags
über 2^16 hinaus.
Multiplikation zweier Zahlen und Bildung des Restes nach
Division durch 2^16+1. Hierbei werden 0 und 2^16
besonders behandelt: Vor Beginn der Multiplikation wird eine
0 durch 2^16 ersetzt, das Ergebnis 2^16
wiederum wird als 0 interpretiert. Daraus folgt: 0 x 0 = 1.
Der 64-Bit-Klartextblock wird in 4 16-Bit-Blöcke aufgeteilt. 8
(bis auf die Teilschlüssel) identische Runden und die
Abschluss-Transformation führen zum 64-Bit-Geheimtextblock. Der
128-Bit Schlüssel wird in 8 16-Bit Teilschlüssel aufgeteilt. Dann
wird jede dieser Ausplittungen um 25 Bitpositionen zyklisch nach
links verschoben und erneut in 8 16-Bit Teilschlüssel aufgeteilt.
Weitere zyklische Verschiebungen und Aufteilungen dieser Art
schliessen sich. Insgesamt werden 52 Teilschlüssel generiert.
Die eigentliche Verschlüsselung läuft so ab, dass ein
Klartextblock von 64 Bit Länge in vier Blöcke zu je 16 Bit
eingeteilt wird, die anschliessend dem Verfahren in Abb. 4
unterworfen werden. Dargestellt ist nur der erste Durchlauf, das
Verfahren wird achtmal angewendet.
Dechiffrieren erfolgt mit zu den Teilschlüsseln inversen
Teilschlüsseln in (wie gewohnt) umgekehrter Reihenfolge. Es gibt
eine Klasse von als schwach geltende Schlüssel. Jene sind aber in
der Praxis leicht zu vermeiden. Aus diesem Grunde gilt IDEA
(International Data Encryption Standart) als einer der stärksten
öffentlichen Krypto-Algorithmen.
IDEA (International Data Encryption Standart) unterliegt dem
Patentschutz, und gehört somit der Firma Ascom Systec. Seine grosse
Berühmtheit erlangte IDEA (International Data Encryption Standart)
dank seines Einsatzes bei PGP (Pretty Good Privacy). IDEA gilt
grundsätzlich als besseres Verfahren, weder DES, was die
differentielle Kryptoanalyse von Biham und Shamir bewies.
4.6 ROT13 - Monoalphabetische
Verschlüsselung
Die wohl bekannteste Form einer symmetrischen Verschlüsselung ist
die vom römischen Herrscher Julius Cäsar erfundene Monoalphabetische
Verschlüsselung. Dabei werden die Buchstaben im Alphabet vertauscht.
Dabei kann aus einem "a" ein "f", und aus einem "f" ein "l" werden.
Monoalphabetische Verschlüsselungen mit einer Schlüssellänge von
1 Bit werden auch noch in unserer Zeit eingesetzt. Vor allem im
Internet wird der ROT13-Algorithmus oft in Newsgroups verwendet, um
möglicherweise unerwünschte oder anstössige Nachrichten zu posten.
Dabei wird jeder Buchstabe des Alphabets mit einem Buchstaben des um
13 Zeichen verschobenen Alphabets ersetzt. Der Buchstabe "A" wird
dann durch ein "N" ersetzt, "N" wird wiederum durch "A" ersetzt und
"Z" durch "M". Viele aktuelle Leseprogramme für Newsgroups können
mit ROT13 verschlüsselte Nachrichten per Tastendruck chiffrieren
bzw. dechiffrieren.
Hier ist ein Beispiel für einen mit ROT13 verschlüsselten Text:
Klartext
|
Mit ROT13 verschlüsselt
|
Ich würde hier gerne meine anstössige Meinung
hinschreiben, möchte aber aus Höflichkeitsgründen ungern
jemand damit belästigen.
|
Vpu jüeqr uvre trear zrvar nafgöffvtr Zrvahat
uvafpuervora, zöpugr nore nhf Uösyvpuxrvgfteüaqra hatrea
wrznaq qnzvg oryäfgvtra.
|
Gerne möchte ich das Prinzip dieser Verschlüsselungstechnik in
einem Basic-Quelltext wiedergeben, damit damit hervorragend die
Vorgänge, die für das Durchführen dieser Technik darstellbar ist.
Folgend der Quelltext eines kleinen Programms, das jeden Buchstaben
eines Textes beliebiger Länge mit einem Buchstaben des um 13 Stellen
verschobenen Alphabets austauscht:
10 CLS
20 PRINT "GEBE DEN ZU CODIERENDEN TEXT EIN!"
25 INPUT K$
30 FOR I = 1 TO LEN ( K$ )
40 X$ = MID $ ( N$, I, 1 )
50 C = ASC ( X$ ) + 13
60 IF C > 255 THEN C = C - 255
70 C$ = C$ + CHR$ ( C )
80 NEXT I
90 PRINT "DIE CODIERTE NACHRICHT LAUTET:"
95 PRINT C$
Natürlich mutet der Quelltext zur Verschlüsselung noch zur
Publikation des Sources zur Entschlüsselung an. Bei jenem werden die
Buchstaben des um 13 Stellen verschobenen Alphabetes mit dem
original Alphabet ausgetauscht:
10 CLS
20 PRINT "GEBE DEN ZU ENTSCHLÜSSELNDEN TEXT EIN!"
25 INPUT V$
30 FOR I = 1 TO LEN ( V$ )
40 X$ = MID$ ( V$, I, 1 )
50 C = ASC ( X$ ) - 13
60 IF C < 0 THEN C = C + 255
70 D$ = D$ + CHR$ ( C )
80 NEXT
90 PRINT "DIE DECODIERET NACHRICHT LAUTET:"
95 PRINT D$
Leider kann sich heuter ein weit weniger vreites Spektrum an
Personen an der logischen Komplexität von Basic erfreuen, und
arbeitet mit anderen Programmiersprachen. Damit jener nicht zu
verachtenden Personengruppe keine Mussgunst zugeschrieben wird,
möchte ich noch gerne einen Quelltext für die Handhabung eines
Textes durch ein Webinterface eines HTML-Dokuments dank Java-Script
veröffentlichen. Das Script dient gleichermassen zur Ver-, wie auch
Entschlüsselung eines beliebig langen Textes:
<script LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function rot_13()
{
alert("Diese Funktion
erfordert JavaScript 1.1!")
}
// -->
</script>
<script LANGUAGE="JavaScript1.1" TYPE="text/javascript">
<!--
function rot_13(obj)
{
var keycode
= "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var text
= new String(obj.form.Text.value)
var textrot
= new String()
for(var i = 0; i <
text.length; i++)
{
var codechar = text.substring(i, i + 1)
var pos = keycode.indexOf(codechar.toUpperCase())
if(pos >= 0)
{
pos = (pos + keycode.length / 2) % keycode.length
codechar = (codechar ==
codechar.toUpperCase()) ?
keycode.substring(pos, pos + 1) :
keycode.substring(pos, pos + 1).toLowerCase()
}
textrot = textrot + codechar
}
obj.form.Text.value
= textrot
}
// -->
</script>
4.7 RC2 (Rivest Cipher 2)
Diese Verschlüsselungen wurde von Ron Rivest erdacht und in die
Tat umgesetzt. Daher bedeutet RC auch "Rivest Cipher". Sie bieten,
im Gegensatz zum DES, die Möglichkeit, eine grössere und
individuellere Sicherheit, da die Schlüssellänge frei definiert
werden darf. Irrwitzigerweise benötigt es aufgrund des
Waffenexportverbotes der Vereinigten Staaten, unter jenes auch
starke Verschlüsselungen fallen, eine Erlaubis für dessen Nutzung
ausserhalb von Amerika, durch die NSA (Natiolan Security Agency).
Es liegt zwar offiziell eine Beschränkung der Schlüssellänge auf
40 Bit vor (eigentlich 56 Bit für Zweigstellen amerikanischer
Firmen), jedoch gibt es die Möglichkeit, eine zusätzliche, bis 40
Bit lange Zeichenkette zu benutzen, die an den Schlüssel angehängt
wird. Falls diese Zeichenkette wirklich nicht von Dritten eingesehen
werden kann, ist eine Entschlüsselung praktisch mit den heutigen
technischen Hilfsmitteln sinnlos. Zudem kann der Algorithmus
mehrfach auf den zu verschlüsselten Text angewandt werden, womit die
effektive Länge des Schlüssels vergrössert wird. Wegen der
amerikanischen Exporteinschränken gewinnen diese Verfahren für
Entwickler, welche ihre Produkte aus den Staaten exportieren wollen,
immer mehr an Bedeutung.
4.8 RC4 (Rivest Cipher 4)
RC4 wurde von RSA Data Security, Inc. entwickelt, wobei das
Design des Algorithmus jedoch geheimgehalten wird. Vor einiger Zeit
jedoch tauchte ein Posting im Usenet auf, in welchem ein (wie
behauptet wurde) aquivalenter Quellecode vorgestellt wurde. Es wird
als sehr wahrscheinlich angenommen, dass der vorge-stellte
Algorithmus wirklich aquivalent zu RC4 ist. Der Algorithmus ist sehr
schnell, seine Sicherheit jedoch noch weitgehend unbekannt. RC4 ist
im Prinzip ein Pseudo-Zufallszahlengenerator, wobei die Zahlen mit
den zu verschlüsselnden Daten durch XOR verknüpft werden. Aus diesem
Grund, sollte nicht zweimal der gleiche Schlüssel für die gleichen
Daten verwendet werden.
4.9 RC5 (Rivest Cipher 5)
RC5 wurde 1995 von Ron Rivest entwickelt, und stellt
Schlüssellängen zwischen 40 und 128 Bit zur Aus-wahl.
Um einen geheimen 64-Bit-Schlüssel zu knacken, welcher mit RC5
generiert wurde, müssen 2^64 = 18.446.744.073.709.551.616
verschiedene Schlüssel ausprobiert werden. Dies ist der 8-fache
Aufwand gegenüber einem 56-Bit-Schlüssel. Ein einzelner Pentium II
400 MHz würde über eine halbe Million Jahre benötigen, um alle 2^64
Schlüssel auszuprobieren.
4.10 SAFER
Safer ist ein Byte-orientierter Block Verschlüsselungsalgorithmus
welcher erstmals auf der Crypto'95 von James L. Massey vorgestellt
wurde. Es gibt Versionen mit 64 Bit und 128 Bit Schlüsseln.
4.11 Triple-DES (Data
Encryption Standart)
Dieses von IBM Mitte der 70er Jahre entwickelte, relativ
langsame, symmetrische Verschlüsselungsverfahren ist sehr gut
bekannt, und wurde bestens auf das mögliche Bestehen von
Schwachstellen untersucht.
Triple-DES nimmt drei verschiedene Schlüssel hintereinander,
wobei mit dem zweiten entschlüsselt wird und mit dem ersten und
dritten verschlüsselt.
4.12 Twofish
Der Twofish Algorithmus wurde von dem Counterpane Team (Bruce
Schneier u.a.) entwickelt und ist ein Blockalgorithmus, welcher mit
einer Blockgröße von 128 Bit arbeitet, und mit einer Schlüsselgröße
von bis zu 256 Bit über 16 Runden zurecht kommt.
5.0 Assymmetrische Kryptoalgorithmen
Im Jahr 1976 beschrieben Whitfield Diffie und Martin E. Hellman die
Möglichkeit einen Verschlüsselungsalgorithmus zu entwickeln, der auf
zwei unterschiedlichen Schlüsseln basiert. Ein Schlüssel ist dabei
öffentlich, der andere geheim. Dabei ist eine mit einem öffentlichen
Schlüssel verschlüsselte Nachricht nur wieder mit dem dazugehörigen
privaten Schlüssel dechiffrierbar.
Das erste ktyptographische Verfahren, welches wirklich eine
assymmetrische Verschlüsselung benutzte, war RSA.
Die beiden grössten Nachteile sind die Schwierigkeit des geheimen und
möglichst versteckten Austausches des öffentlichen Schlüssels, und der
Rechenaufwand, der sich negativ auf die Geschwindigkeit einer Session
auswirkt. Normalerweise werden die öffentlichen Schlüssel während einer
Sessioen ausgetauscht, die mit einer symmetrischen
Verschlüsselungstechnik vor Blicken unberechtigter Personen geschützt
ist.
5.1 RSA (Rivest, Shamir,
Adleman)
Dieses Verfahren wurde 1977/78 von Ron Rivest (Siehe die
RC-Algorithmen!), Adi Shamir und Len Adleman am MIT entwickelt, und
gilt seitdem als der einzige allgemein anerkannte und implementierte
Ansatz für die Public-Key-Verschlüsselung. RSA wurde patentiert bis
ins Jahre 2000, jedoch noch innerhalb der USA. Es ist frei
erwerbbar. Der Name dieser Methode wurde jeweils aus den
Anfangsbuchstaben der Nachnamen dessen Erfinder erzeugt. RSA
verwendet für die Schlüsselerzeugung zwei möglichst hohe Primzahlen,
aus deren Produkt sich ein privater und öffentlicher Schlüssel
ableiten lässt.
RSA gilt als das wohl berühmteste asymmetrische
Verschlüsselungsverfahren. Dessen Name wurde durch die
Anfangsbuchstaben der drei Entwickler Rivest, Shamir und Adleman
gebildet. Als RSA 1977 das erste mal der Öffentlichkeit präsentiert
wurde, war es das erste öffentlich bekannte
Verschlüsselungsverfahren, welches die 1967 von Diffie und Hellman
publizierte Idee eines öffentlichen Schlüssels tatsächlich einsetzen
konnte.
RSA basiert auf Rechnungen der ganzen Zahlen modulo ab, wobei p
und q zwei Primzahlen sein müssen. Modulo-Operationen funktieren,
indem mit dem Rest einer Divisionen gerechnet wird, also mit dem
Rest von p und q. Wenn nun zum Beispiel pq = 15 ist, dann sind
folgende Terme korrekt:
2 + 5 = 7
2 * 5 = 10
4 * 5 = 5
4 * 4 = 1
1 / 4 = 4
Von besonderem Interesse sind hier die Exponentialfunktionen:
5 ^ 2 = 10
4 ^ 7 = 4
Es ist bis heute kein Verfahren bekannt, diese Rechen-Operationen
umzukehren. Somit ist also die Auflö-sung von p ^ 5 = 12 nicht
möglich mit mathematischen Möglichkeiten zu lösen.
Weiterhin ist p ^ {phi (x)} ~= 1 (mod x) eine sehr interessante
Beziehung, welche schon Euler bekannt war. Das ~=-Zeichen zeigt an,
dass die oben erwähnte Modulo-Operation durchgeführt wird, und zwar
mod x. phi (x) ist die Eulersche Phi-Funktion. Für uns wichtig ist
jedoch nur, dass für die Primzahlen p und q phi (pq) = (p - 1)(q -
1) gilt:
a ^ {phi (abq)} ~= 1 (mod ab)
a ^ {(k * phi (ab))} ~= 1 (mod ab)
a ^ {(k * phi (ab) + 1)} ~= a (mod ab)
Wenn wir nun zwei Zahlen d und e einführen, von denen wir
verlangen, dass de = k * phi (pq) + 1 gelten soll (k sei eine
beliebige ganze Zahl, ungleich null), dann erhalten wir (ab sofort
alle Rechnungen modulo pq):
a ^ de = a
a ^ d = b
b ^ e = a
Hierbei reicht jedoch die Kenntnis von b und d nicht aus, um a zu
berechnen. RSA basiert nun darauf, dass als öffentlicher Schlüssel
nun d fungiert, und das Produkt pq veröffentlich werden, und die
Nachricht a damit vershlüsselt wird. Die verschlüsselte Nachricht b
kann dann bedenkenlos versendet werden, da sie ohne e nicht
entschlüsselt werden kann.
Der Verschlüsselungsablauf von RSA funktioniert wir folgt:
Man wählt zwei verschiedene, möglichst grosse Primzahlen p,
q.
Dann bildet man ihr Produkt n = p q. Weil p und q prim sind,
ist PHI(n) = (p-1) (q-1).
Es müssen zwei Zahlen e und d gefunden werden, für welche e
d == 1 (mod PHI(n)) gilt. Man wählt zuerst d so, dass d relativ
prim zu PHI(n) ist. Ideal ist eine Primzahl d > max(p,q) und d <
PHI(n)-1. Um e zu finden, muss man eine Lösung mit ganzzahligen
x und y für die Gleichung x d + y PHI(n) = 1 fin-den. Es gilt x
d == 1 (mod PHI(n)). Setzt man e = x mod PHI(n), dann ist auch e
d == 1 (mod PHI(n)).
e und d sind die Schlüssel, n der sogenannte Modul. Die
Verschlüsselungsfunktion ist E(x) = xe mod n, die
Entschlüsselungsfunktion ist D(x) = xd mod n. Da bei den
Funktionen E(x) und D(x) modulo n ge-rechnet wird, muss x < n
sein. Jede Nachricht X muss so in Blöcke x1, x2, ... unterteilt
werden, dass x1, x2, ... < n sind.
Um das Verfahren möglichst sicher zu machen, müssen folgende
Regeln befolgt werden, damit die Faktorisierung von n = p q
schwierig genug ist:
p q sollen grösser sein als 10100. Es ist sinnvoll, eine
möglichst grosse Zahl d, mit d < PHI(n)-1, zu wählen, damit d
nicht so schnell ermittelt werden kann.
p und q sollen in der Länge um einige Stellen variieren.
(p-1) und (q-1) sollen grosse Primfaktoren enthalten.
Der kleinste gemeinsame Teiler von (p-1) und (q-1) sollte
möglichst klein sein.
1993 schätzte man, dass für die Zerlegung der 130-stelligen Zahl
114'381'625'757'888'867'669'235'779'976'146'612'010'128'296'721'242'362'562'561'842'935'706'935'245'733'897'830'597'123'563'958'705'058'989'075'147'599'290'026'879'543'541
in ihre zwei Primzahlen Millionen von Jahren dahinscheiden müssten.
Tatsächlich gelang es einer Gruppe von über 600 Akademikern und
Hacker, die sich über das Internet koordinierten, bereits ein Jahr
später die Auflösung. Mathematiker neh-men heute an, dass bei einer
Verlängerung des Schlüssels auf 250 Stellen mit einer Zerlegung
nicht einmal in einer Million Jahren zu rechnen sein könne.
Die Angriffsmöglichkeiten auf RSA bestehen nun darin, aus a und b
e zu berechnen. Dies gilt jedoch mo-mentan als unrealistisch zu
durchführendes Unterfangen. Desweiteren kann man aus pq und d
versuchen e zu berechnen. Dazu muss pq in seine Faktoren zerlegen,
was ebenfalls nach heutigem technischen Stand nicht in annehmbarer
Zeit durchführbar ist. Einer andere Attacke wird die Durchführung
ermöglicht, sobald eine verschlüsselte Nachricht an verschiedene
Empfänger geschickt wird. Dies wird jedoch nur möglich, wenn a an
mehrere Empfänger verschlüsselt wird, wobei dasselbe d verwendet
wurde. Dazu muss man dann seine mathematischen Fähigkeiten aus dem
Ärmel schütteln. Dieser Fehler kann im Gebrauch mit PGP (Pretty Good
Privacy) nicht passieren, da beim Verschlüsseln einer Nachricht für
viele verschiedene Empfänger der IDEA-Schlüssel jedesmal mit einer
neuen Zufallszahl berechnet wird.
Public-Key-Verschlüsselungen stellen trotz Knackbarkeit der
Schlüssel ein relativ hohes Masse an Sicher-heit dar, da erstens der
öffentliche Schlüssel über ungesicherte Datenleitungen weitergegeben
werden kann, und zweitens bei längeren Verbindungen der
RSA-Schlüssel nach einer vorgegebenen Zeitspanne geändert werden
kann. Ein Entschlüsseln einer Kommunikation ist somit nach einer
gewissen Zeit sinnlos.
6.0
Einwegverschlüsselungs-Algorithmen
Einwegverschlüsselungen werden für das Signieren von Nachrichten
und das Erstellen von codierten Passwörtern, zum Beispiel auch unter
UNIX/Linux, genutzt. Dabei wird ein Hash-Wert aus der
unverschlüsselten Eingabe errechnet
6.1 DH/DSS
Das Diffie-Hellman-Verfahren wurde vom NIST (National
Institute of Standarts and Technology) zusammen mit der NSA
(National Security Agency) entwickelt und wurde nocht nicht
sonderlich gut erforscht. Das Patent liegt bei der US-Regierung,
die Nutzung des Verfahrens ist jedoch kostenlos.
6.2 MD5 (Message Digest 5)
MD aus dem Jahre 1991 bedeutet ausgeschrieben Message-Digest,
und stellt ein Verfahren zur Erzeugung von digitalen
Unterschriften (Hash-Werten) dar. Er gilt als Nachfolger von MD2
und MD4, wobei all jene von Ron Rivest entwickelt wurden. Er
wird in RFC 1321 definiert.
Dieser Algorithmus akzeptiert als Eingabe eine Botschaft
beliebiger Länge,und erzeugt davon eine Art Fingerabdruck, oder
eine Botschaftsverarbeitung von 128 Bit Länge als Ausgabe. Die
Chancen, dass aus zwei unterschiedlichen Texten ein identischer
Fingerabdruck generiert werden kann, ist beinahe unendlich, aber
nicht auszuschliessen.
Den Boer und Bosselaers wurden fündig, was Schwachstellen
anbelangt. Van Oorschot und Wiener liessen dazu genauere
Abschätzungen verlauten.
Als Zusatz zu MD5 gibt es "Noiz", ein Softwarepaket zur
Akkumulation zum Erstellen von kryptographisch-starken
Zufallszahlen.
6.3 SHA/SHA1 (Secure Hash
Algorithm)
Ein zum Signieren gedachter Secure Hash Algorithm, welcher
vom NIST und der NSA entwickelt wurde. SH1 ist der verbesserte
Nachfolger vom im Jahre 1994 erschienenen SHA. Er ist relativ
langsam, gilt jedoch als sicherer, als MD5.
Siehe auch Algebra, Algorithmus, Arithmetik, Brute-Force, Kryptoanalyse,
Kryptografie, Kryptologie, Mathematik, PGP, Trigonometrie, Verschlüsselung
Dieser Text ist unverfälscht frei kopierbar!
| |
Einführung (Ruef) |
|
Ihr Name: Besucher (nicht angemeldet).
Online: 5 aktive User.
|
|
Anmelden | Abmelden |
|
|
Benachrichtigen bei Änderungen: |
|
|
|
|
Antivirus-Infos: |
|
|