Crypt

Werbung
Projekt Crypt
Einfache kryptografische Verfahren
zum selber programmieren.
von Torsten Zuther
Inhalt Seite 1
1. Einfache klassische Verfahren
1.1.
Cäsarverfahren – altes Prinzip
modernisiert
1.2. Multiplikationsverfahren
1.3. Tausch-Chiffre
1.4. Lineare Schieberegister
1.5. Vigenére-Chiffre
1.6. Aufblähen-Algorithmus
1.7. XOR-Verschlüsselung
Inhalt Seite 2
2. Schwer invertierbare Verfahren
2.1. Das RSA-Verfahren
2.2. Der Data Encryption Standard(DES)
1.1. Cäsar modernisiert
 Idee von Cäsar:
(Verschiebung des Alphabets um s Einheiten)
Index
Alphabet
Chiffriertes
Alphabet (s = 4)
1
A
E
2
B
F
…
…
…
26
Z
D
1.1. Cäsar modernisiert
 Beispiel:
Schlüssel = 11
aus „CAESAR“ wird „NLPDC“
1.1. Cäsar modernisiert
 Das Alphabet hier besteht aus 256 Zeichen
(ASCII-Zeichensatz).
 0 < s < 256
 255 Schlüssel
1.1. Cäsar modernisiert
Beispiel (s = 46):
1.2. Multiplikationsverfahren
 Starke Verwandtschaft mit dem
Cäsarverfahren
Jedes Zeichen wird im Modul 256 mit t
multipliziert. (t ist der Schlüssel)
K = 44 (Klartext)
M = 256 (das Modul, der ASCII-Zeichensatz)
T = 11 (t, der Multiplikator oder der
Schlüssel)
1.2. Multiplikationsverfahren
 Beispiel:
Verschlüsselung:
(K * t) mod m = (44 * 11) mod 256 = 484 mod 256
C (Ciphertext)= 228
Entschlüsselung:
(modulare Inverse von t ausrechen – mit dem
euklidischen Algorithmus)
(C * inv t) mod m = (228 * 163) mod 256
= K = 37164 mod 256 = 44
1.3. Tausch-Chiffre
 Kapselt Cäsar- und Multiplikationsverfahren
Verschlüsselung:
c = [(k + s) * t] mod m
Entschlüsselung:
k = [(c * inv t) – s] mod m
1.4. Lineare Schieberegister
 Besteht aus n Bits (Zellen) und einem
Index m (die markierte Zelle)
Beispiel: 0 0 1 1 1 0 1 1
m=4
n
Register wird 2 – 1 mal nach rechts
verschoben
1.4. Lineare Schieberegister
0
0
0
0
1
...
0
0
0
0
0
...
1
0
0
0
0
...
1
1
0
0
0
...
Schlüssel = 11011...
1
1
1
0
0
...
0
1
1
1
0
...
1
0
1
1
1
...
1
1
0
1
1
...
1.4. Lineare Schieberegister
 Beispiel
Klartext = 01101111; Schlüssel = 11101100
Verschlüsselt = Klartext xor Schlüssel
 01101111
++11101100
10000011  Ciphertext
1.5. Vigenére-Chiffre
 Ähnlich dem Cäsarverfahren, aber mit mehreren
versch. Schlüsseln zu einem Passwort
zusammengefügt:
Klartext = "CAESAR"
Passwort = "TEST"
Verschlüsselung:
C
A
T(s=20)
E(s=5)
E
S
A
R
S(s=19) T(s=20) T(s=20) E(s=5)
1.5. Vigenére-Chiffre
 Garantiert 100%ige Sicherheit, wenn
Passwortlänge = Klartextlänge
 Keine Häufigkeitenanalyse
 One-Time-Pad
1.6. Aufblähen-Algorithmus
 Klartext = "Test" = c0 + c1 + c2 + c3
Verschlüsseln durch Verwirbelung
 Ciphertext = c1 + R0 + c0 + c3 + R1 + c
(Vertauschen von je zwei Zeichen und
Einfügen eines Zufallszeichens in deren
Mitte)
1.7. XOR-Verschlüsselung
 Einfachstes symmetrisches Verfahren
 Schwacher Schutz
Jedes Klartextzeichen wird XOR mit dem
Schlüssel verknüpft.
Entschlüsseln = Verschlüsseln
2.1. Das RSA-Verfahren
 Beruht auf dem Problem der
Primfaktorenzerlegung, das bei großen
Zahlen (>512 Bit) enormen Rechenaufwand
verursacht.
 Asymmetrisches Verfahren
 3 Schlüssel (2 öffentliche, 1 geheimer):
öffentlich: das Modul n, der Encryptor e
geheim : der Decryptor d
2.1. Das RSA-Verfahren
Zunächst Schlüsselerzeugung
p und q (beide prim) bilden das Modul n:
n=p*q
e ist teilerfremd zu (p-1)*(q-1), d.h.
GgT(e,[p-1]*[q-1]) = 1
 d = die Inverse von e im Modul (p-1)*(q-1)




2.1. Das RSA-Verfahren
 Nun kann verschlüsselt werden (Beispiel):
p = 17; q = 31
n = p * q = 527
e muss teilerfremd zu (p-1) * (q-1) sein
 z.B. e = 7
 d = inv e (im Modul (17-1)*(31-1) = 480)
d = 343
2.1. Das RSA-Verfahren
 Klartext = 2
c = 2^e mod n = 2 ^ 7 mod 527
= 128 mod 527 = 128
2.1. Das RSA-Verfahren
Entschlüsseln
Klar = 128^d mod n = 128^343 mod 527
= 128256 * 12864 * 12816 * 1284 *
1282* 1281 mod 527
= 35 * 256 * 35 * 101 * 47 * 128 mod 527
= 2 mod 527 = 2
2.1. Das RSA-Verfahren
 Angriffsmöglichkeiten:
BruteForce-Attacke (aussichtslos)
Primfaktorzerlegung von n um auf d zu
schließen (bei n >= 1000 Bits aussichtslos)
2.2. Der Data Encryption Standard
(DES)
 64 Bit Daten werden mit einem 64 Bit
Schlüssel verschlüsselt (bzw. 56 Bit)
 Symmetrisches Verfahren
 Grafische Darstellung (nächste Seite)
Beispiel Permutationstabelle:
type
TPTab = array[1..64] of Byte;
const
IPTab: TPTab =(58,50,42,34,26,18,10,02,60,52,44,36,28,20,12,04,
62,54,46,38,30,22,14,06,64,56,48,40,32,24,16,08,
57,49,41,33,25,17,09,01,59,51,43,35,27,19,11,03,
61,53,45,37,29,21,13,05,63,55,47,39,31,23,15,07);
Beispiel Sbox:
type
SBox
= array[0..3,0..15]
of Byte;
const
S1: SBox =((14,04,13,01,02,15,11,08,03,10,06,12,05,09,00,07),
(00,15,07,04,14,02,13,01,10,06,12,11,09,05,03,08),
(04,01,14,08,13,06,02,11,15,12,09,07,03,10,05,00),
(15,12,08,02,04,09,01,07,05,11,03,14,10,00,06,13));
{
BEISPIEL:
Input : 6 Bits: "101011"
Output : 4 Bits: Zeile 11b = 3; Spalte 0101b = 5
}
Quellen:
http://goethe.ira.uka.de/seminare/dzs/ec/des2.png
http://dud.inf.tu-dresden.de/~pfitza/DSuKrypt.pdf
Lehr- und Übungsbuch Mathematik für Informatiker (Prof. Dr.
Aulenbacher, Prof. Dr. Meyer, Dipl.-Math. Wabel-Frenk, Prof. Dr.
Wenisch; Fachbuchverlag Leipzig)
ENDE
Herunterladen