Verschlüsselung, Signaturen und Zertifikate

Transcription

Verschlüsselung, Signaturen und Zertifikate
Verschlüsselung, Signaturen und Zertifikate
1) Einführung
Wenn eine Benutzerin Alice eine Nachricht sicher übertragen will, müssen folgende
Bedingungen erfüllt sein:
a) Niemand soll Alices Nachricht lesen können
Wenn Alice einen Geldbetrag mit Telebanking überweisen will, will sie verständlicherweise
diese Transaktion niemandem zugänglich machen, sie will also ihre Nachricht verschlüsseln,
entweder mit einer symmetrischen oder asymmetrischen Methode.
b) Niemand soll Alices Nachricht verändern können
Darüber hinaus will Alice auch, dass ihre Nachricht während des Weges zur Bank auch nicht
verändert wird, oder eine eventuelle Veränderung bemerkt wird. Dazu wird ein Message
digest (ein Hash Code) der Nachricht mitgeliefert. Bei einer Veränderung der Nachricht
stimmen die Hashcodes nicht mehr überein. c) Der Empfänger soll sicher sein, dass die Nachricht auch von Alice kommt
Ein Teil der Nachricht wird mit dem privaten Schlüssel von Alice verschlüsselt. Damit kann
jeder, der Alices öffentlichen Schlüssel besitzt, die Nachricht lesen, aber es ist sichergestellt,
dass die Nachricht von Alice stammt. Dies versteht man unter digitaler Signatur.
d) Alice will sicherstellen, auch wirklich mit dem Empfänger zu kommunizieren
Stammt der öffentliche Schlüssel der Bank wirklich von der Bank ? Um dies sicherzustellen,
wird der öffentliche Schlüssel durch eine Certificate Authority (CA) zertifiziert. Eine CA
assoziiert den öffentlichen Schlüssel mit einem Host oder einer anderen Entität. Diese
Überprüfung übernimmt der Browser, der die namhaften CA's kennt.
Bildquelle: xkcd.com
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
1/20
2) Verschlüsselung
2.1) Einfache Verschlüsselungsmethoden
Der Cäsar Chiffre ist eine sehr einfache Methode der Verschlüsselung, bei der der n­te Buchstabe aus dem Alphabet durch den (n+k)­ten ersetzt wurde. Bei k=1 wird also aus dem Wort
GEHEIM HFIFJN
das Wort
Wenn man nun den Wert von k nicht kannte und den Text entschlüsseln wollte, musste man bei einem Wert von k= 26 genau 26 Möglichkeiten durchprobieren um die Verschlüsselung zu knacken. Die Verschlüsselung hatte also eine Schlüssellänge von 26.
Wird nun die Zuordnung nicht über eine Formel, sondern über eine willkürliche Tabelle vorgegeben, so erhöht sich die Schlüssellänge enorm:
unverschlüsselt:
verschlüsselt:
A X
B
J
C
R
D
K
E
G
F
I
.....
....
Mit dem Leerzeichen ergeben sich also bei 27 Zeichen 27! (etwa 10 28 ) Möglichkeiten, den
Text zu verschlüsseln. Die Schlüssellänge, d.i. die Anzahl der Schlüssel, also die Anzahl der
möglichen Zuordnungen von einem Alphabet zum anderen, ist somit auf 27 ! gewachsen. Dass
diese Zuordnungen trotzdem relativ leicht zu entschlüsseln sind, liegt an den Eigenschaften
der deutschen Sprache, wo z.B: der Buchstabe e am häufigsten vorkommt. Somit kann nun
im verschlüsselten Text der am häufigsten vorkommenden Buchstaben durch e ersetzt
werden. Ein weiterer Hinweis ergibt sich aus der Tatsache, dass gewisse Buchstabenfolgen
wie zB „qx“ nicht auftreten. Diese Hinweise erlauben es einem Kryptoanalytiker einen nach
dieser Methode verschlüsselten Text relativ leicht zu entziffern.
2.2 Symmetrische Verschlüsselung
Eine symmetrische Verschlüsselung basiert auf einem öffentlichen Algorithmus und einem
geheimen Schlüssel wobei die Offenlegung des Algorithmus die Sicherheit des Verfahrens
gewährleisten soll. Bei einem symmetrischen Verfahren besitzen beide
Kommunikationspartner denselben Schlüssel.
Geheimer Text
Geheimer Text
Verschlüsselung
Entschlüsselung
Verschlüsselter Text
Verschluesselung.odt
­­­­­­­­­­­­>
Geändert 10/10/16
Verschlüsselter Text
© WR Seite
2/20
Die Sicherheit der Verschlüsselung hängt bei den gängigen Verfahren nur von der
Schlüssellänge ab. Eine Schlüssellänge von 40 Bit erzeugt 2 hoch 40 , also etwa 10 hoch 11
mögliche Schlüssel. Dauert ein brute force Angriff pro Schlüssel eine Mikrosekunde, so würde
ein Test aller Schlüssel etwa 12 Tage benötigen – ein paralleler Angriff von mehreren
Angreifern könnte diese Dauer auf wenige Minuten reduzieren.
Ein 128 Bit langer Schlüssel würde die Dauer eines solchen Angriffs auf 10 hoch 26 Jahre
verlängern.
Bekannte symmetrische Verschlüsselungsverfahren sind:
DES (Data Encryption Standard) 1977 in den USA zum Standard erklärt, 1999 konnte ein 56
Bit langer Schlüssel in 22 Stunden geknackt werden. Wird nun nicht mehr als sicher
angesehen. Das Problem liegt aber nicht am Algorithmus, sondern an der kurzen
Schlüssellänge.
3DES verwendet einer 168 Bit langen Schlüssel und ist ein häufig eingesetzter Schlüssel in
Ipsec basierten VPN Lösungen.
IDEA ist ein patentierter Algorithmus mit 128 Bit Länge, der als einer der sichersten gilt, in
Open Source Anwendungen jedoch wegen eventueller Patentstreitigkeiten nicht eingesetzt
wird.
RC4/RC5/RC6 sind von Ron Rivest entwickelte Algorithmen die schnell und sicher sind, mit
einer variablen Schlüssellänge bis 2048 Bit
Blowfish und Twofish sind von Bruce Schneier entwickelte Algorithmen, die frei von
Patenten und in der Public Domain sind und deshalb gerne in Open Source Umgebungen
eingesetzt werden. Sehr sicher und schnell.
AES (Advanced Encryption Standard) 1997 wurde ein Wettbewerb für einen neuen
Verschlüsselungsstandard ausgeschrieben, bei dem MARS, RC6, Rijndel, Serpent und Twofish
ins Finale gelangten. Der Algorithmus Rijndel der 2 Belgier Daemen und Rijmen konnte den
Wettbewerb gewinnen. Der Algorithmus unterliegt keinen Einschränkungen und ist weltweit
verfügbar. In letzter Zeit tauchten Zweifel an der Qualität dieser Verschlüsselung auf.
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
3/20
Bildquelle: xkcd.com
2.3 Asymmetrische Verschlüsselung
Die asymmetrische Verschlüsselung (Public Key Kryptographie) benötigt zwei verschiedene
Schlüssel, einen öffentlichen (public key) und einen privaten (private key).
Jeder Benutzer besitzt einen eigenen public und private key: Wenn Alice an Bob eine
Nachricht senden möchte, verschlüsselt sie die Nachricht mit Bobs public key, die nur mit
Bobs private key entziffert werden kann. Der öffentliche Schlüssel kann über ein beliebiges
Medium verteilt werden, den privaten Schlüssel darf jedoch nur Bob kennen.
Geheimer Text
von Alice
Entschlüsselter Text
von Alice
Verschlüsselung mit
Bobs public key
Entschlüsselung mit
Bobs private key
Verschlüsselter Text
­­­­­­­­­­­­­­­­­­­­­­>
Verschlüsselter Text
Umgekehrt kann dieses Verfahren zur digitalen Signatur eingesetzt werden: Alice möchte
sicherstellen, dass Bob die Nachricht auch abgesandt hat (und nicht ein anderer). Dazu
verschlüsselt Bob die Nachricht mit seinem privaten key, sendet die Nachricht an Alice, die
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
4/20
diese mit Bobs öffentlichem Key entschlüsselt. Die Entschlüsselung ist nur dann erfolgreich,
wenn die Nachricht auf dem Weg nicht verändert wurde und mit Bobs private key
verschlüsselt wurde. Die asymmetrischen Verfahren weisen Lücken in ihrem Algorithmus auf, die die
Angriffsdauer bei brute force Attacken wesentlich verringern. Es ist bereits gelungen einen
512 Bit langen Schlüssel zu knacken. Schlüssellängen von 768 sollten nur noch eingesetzt
werden, wenn die Vertraulichkeit von Informationen nur wenige Stunden gesichert sein muss.
Viele Anwendungen generieren daher automatisch alle Stunden einen neuen key.
Bekannte asymmetrische Verschlüsselungsverfahren sind:
RSA wurde von Rivest, Shamir und Adleman entwickelt, ist etwa 1000 Mal langsamer als
DES, und ist heute der Standard für öffentliche Kryptographie.
DAS (Digital Signature Algorithm), gilt ab einer Länge von 1024 Bits als sicher, ist jedoch für
manche Anwendungen (Smart Card) patentiert.
Das Diffie­Hellmann Verfahren löst das Problem wie bei einer symmetrischen
Verschlüsselung der symmetrische Schlüssel sicher erzeugt wird und beiden
Kommunikationspartnern bekannt gemacht wird.. Mit Hilfe der asymmetrischen
Verschlüsselung können sich beide Kommunikationspartner den symmetrischen Schlüssel
berechnen, mit dem der Hauptteil der Daten übertragen werden soll. Es ist nicht notwendig
dass der symmetrische Schlüssel übertragen wird.
Das Verfahren von ElGamal ist dem Diffie­Hellman Algorithmus sehr ähnlich.
ECC (Elliptic Curve Cryptography) ist zur Zeit die neueste Verschlüsselungsmethode die um einiges sicherer als das RSA Verfahren ist. Sie wird in den neuen Betriebsystemen und Software verwendet, aber auch in den Chips der Reisepässe.
2.4) Hybridverfahren
Da asymmetrische Verfahren nicht nur wegen ihrer Schlüssellänge von 1024 oder 2048 Bit
wesentlich aufwändiger sind als symmetrische Verfahren, werden symmetrische und
asymmetrische Verfahren miteinander verbunden.
Beispiel: Alice ermittelt einen symmetrischen Schlüssel, der die Nachricht kodiert. Dieser
symmetrische Schlüssel mit dem public key von Bob verschlüsselt und an die mit dem
symmetrischen Schlüssel kodierte Nachricht angehängt. Bob entziffert nun mit seinem
private key den symmetrischen Schlüssel um dann damit die Nachricht zu entschlüsseln.
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
5/20
Sender
Empfänger
Symmetrischer Schlüssel mit Bobs public key kodiert
Bob entziffert den symmetrischen Schlüssel mit seinem private key ...
Nachricht mit symmetrischen Schlüssel kodiert
... und entschlüsselt mit dem symmetrischen Schlüssel die Nachricht
3) Message Digest
Andere Namen: Hashcode, Kompressfunktion, Fingerabruck, kryptographische Prüfsumme
Will man sicherstellen, dass die Nachricht während des Transports nicht verändert wird, wird
von der Nachricht ein Hashcode erzeugt, der dem Empfänger mitgesandt wird. Eine
Veränderung der Nachricht resultiert in einen anderen Hashcode. Die wesentliche
Eigenschaft der Hashfunktionen ist es, dass keine 2 verschiedene Nachrichten gefunden
werden können, die denselben Hashcode erzeugen. Eine Hashfunktion erzeugt aus einer Eingabe einen eindeutigen Funktionswert, aus dem die
Eingabe nicht wieder berechnet werden kann. Für die Verschlüsselung eines Passwortes wird
ein Hashfunktionswert erstellt, der in der Passwortdatei abgespeichert wird. Nur dasselbe
Passwort erzeugt denselben Hashfunktionswert. Der MD5 und SHA Algorithmus sind
bekannte Verfahren. MD5 erzeugt einen 128 Bit langen Hash und wird von Linux und auch
Windows zur Verschlüsselung der Passwörter verwendet. Mit diesem Verfahren kann auch
geprüft werden, ob eine Datei während des Transports verändert wurde, indem der Hashcode
der Datei mitgeliefert wird. Der Empfänger kann nun mit einen Programm (in Linux:
md5sum) den Hashcode der Datei selbst berechnen und mit dem mitgelieferten vergleichen.
Jede Veränderung der Datei erzeugt einen komplett anderen Hashcode. Die Hashfunktionen
arbeiten mit Modulooperationen, logischen Operationen (AND, OR ...) und mit
Shiftoperationen.
Beispiel:
Die Datei enthält folgenden Satz:
Frank fährt mit dem Taxi quer durch Bayern
Der Befehl md5sum Datei
liefert als Hashcode
246c5cf7f9cd8ccc351ec11518a82dc
Verändert man die Datei zu
Franz fährt mit dem Taxi quer durch Bayern
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
6/20
so liefert der Hashcode 0982e89400f2638cfd621d1387cf1b52
4) Zertifikate
Die Voraussetzung für eine korrekte Funktionsweise von Verschlüsselungen ist die gesicherte
Verteilung der Schlüssel, da sichergestellt werden muss, dass ein Schlüssel auch zu der
entsprechenden Person gehört, Bob also sich sicher sein kann, dass er mit Alice
kommuniziert. Ein Zertifikat ist also eine digitale Urkunde, die die Identität des Inhabers
bestätigt.
Zertifikate werden von einer unabhängigen Zertifizierungsstelle (Certification Authority, CA)
unterzeichnet. Die CA verbürgt sich mit ihrer Unterschrift für die Korrektheit der im
Zertifikat aufgeführten Daten. Sie überprüft also insbesondere die Echtheit der bei der
Beantragung des Zertifikats vorgelegten Adress­ und Firmendaten. Durch das Zertifikat kann
verhindert werden, dass eine fremde Person einen gefälschten Schlüssel verwendet, um sich
als eine andere Person auszugeben.
Technisch gesehen erfolgt das Unterschreiben eines Zertifikats so, dass eine spezielle
Zusammenfassung (kryptographischer Hashwert) der in der Zertifikatsanforderung
enthaltenen Daten berechnet wird. Dieser Wert wird mit dem privaten Schlüssel der CA
verschlüsselt. Mit dem öffentlichen Schlüssel der CA kann man diese Daten nun jederzeit
wieder entschlüsseln. Dadurch werden die Daten natürlich nicht geschützt, da der öffentliche
Schlüssel der CA frei verfügbar ist. Aber allein die Tatsache, dass man sie mit dem
öffentlichen Schlüssel genau dieser CA entschlüsseln kann, bestätigt die Herkunft der Daten. Der Browser berechnet nach Erhalt eines solchen Zertifikats selber den Hashwert und
entschlüsselt den von der CA gelieferten Wert. Wenn beide identisch sind, ist bewiesen, dass
das Zertifikat unverfälscht von der CA zum Browser gelangt ist; den Daten kann vertraut
werden. Nun kann der Browser die Informationen aus dem Zertifikat lesen und verwenden.
Der öffentliche Schlüssel des Webservers, der für die weitere SSL­Kommunikation benötigt
wird, wird durch das Zertifikat authentisiert.
(Natürlich muss der öffentliche Schlüssel der CA dem Webbrowser auf irgendeine sichere
Weise bekannt geworden sein – im einfachsten Fall, indem der Schlüssel einfach mit dem
Webbrowser mitgeliefert wurde.)
Mittlerweile existieren mehrere Standards, mit denen der Aufbau eines Zertifikats festgelegt
wird.
Offizielle und selbst erstellte Zertifikate "Offizielle" Zertifikate sind Zertifikate, die von den unabhängigen CAs vergeben werden,
deren öffentliche Schlüssel mit den gängigen Browsern mitgeliefert werden. Alternativ
können Zertifikate auch selbst erstellt werden; allerdings müssen SSL­Verbindungen, die
nicht von offiziellen Zertifizierungsstellen bescheinigt werden, vom Anwender im Browser
ausdrücklich akzeptiert werden. Genauer: Dies muss immer dann geschehen, wenn der
öffentliche Schlüssel des Zertifikatherausgebers nicht im Browser gespeichert ist. Verschluesselung.odt
Geändert 10/10/16
© WR Seite
7/20
Ist dies der Fall, kann es vorkommen, dass der Anwender der Browser­Meldung – also dem
selbsterstellten Zertifikat – nicht traut und die SSL­Verbindung nicht akzeptiert. Woher soll
er auch wissen, dass das Zertifikat echt ist, und dass es nicht bei der Übertragung durch
einen Angreifer verfälscht wurde? Es gibt ohne weiteres keinen sicheren Weg, auf dem das
selbsterstellte Zertifikat beim Nutzer installiert werden kann. Darüber hinaus wird der sehr
technische Dialog, den Webbrowser in diesem Fall zur Installation eines Zertifikats anbieten,
viele Benutzer abschrecken.
Technischer Ablauf der Zertifizierrung
Bekannte Zertifizierungsstellen sind z.B Verschluesselung.odt
www.verisign.com
www.thawte.com
Geändert 10/10/16
© WR Seite
8/20
Apache und SSL
SSL (Secure Sockets Layer) wurde von Netscape entwickelt und im Jahre 1995 im Netscape
Navigator implementiert, wodurch es rasche Verbreitung fand und zum de facto Standard
wurde. SSL ist ein Verschlüsselungsprotokoll, mit dem eine sichere Übertragung von Daten
im Internet möglich ist.
SSL verwendet asymmetrische Verschlüsselung zur Authentisierung und für das so genannte
Handshake und symmetrische Schlüssel für die restliche Kommunikation. Außerdem ist ein
Zertifikat nötig, das die Identität des Besitzers des öffentlichen Schlüssels garantiert. Eine
SSL­Verbindung kommt dann durch eine Kommunikation zwischen dem Server und dem
Client zustande. TLS baut auf dem SSL Verfahren auf und ist heute der Nachfolger von SSL.
Mit SSL/TLS gibt es 3 Möglichkeiten der Verbindung:
●
Keine Verschlüsselung ●
Nur der Server überträgt ein Zertifikat, das vom Client akzeptiert werden muss. Der Client ist sich der Identität des Servers sicher, weil dieser ihm ein Zertifikat geschickt hat, das der Client bei einer öffentlichen Zertifizierungsstelle überprüfen kann. Der Server kann sich jedoch über die Identität des Clients nicht versichern: der Client hat kein Zertifikat geschickt.
Dies ist eine häufige Vorgangsweise, weil beim Client keine zusätzlichen Einstellungen
oder Konfigurationen notwendig sind.
●
Server und Client tauschen Zertifikate aus, womit beide Partner authentisiert sind und die Identität bekannt ist.
Im Schichtenmodell ist SSL/TLS zwischen Transportschicht und der
Anwendungsschicht angesiedelt
http://www.teialehrbuch.de/Kostenlose-Kurse/Apache/pics/schichtenmodell.gif
SSL kann nicht nur das HTT Protokoll sichern sondern auch andere Anwendungen, denen auch
andere Portnummern zugeordnet sind:
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
9/20
Protokoll
HTTP
https
smtp
smtps
ftp
ftps
Portnummer
80
443
25
465
20/21
930
Abkürzung
Web
verschlüsselt
Mail
Mail verschlüsselt
File Transfer Protokoll
FTP verschlüsselt
Im Firefox zeigt ein kleines Icon in der Statusleiste eine verschlüsselten Verbindung an, ansonsten
ist der Datentransfer vollkommen transparent.
Stark vereinfacht lässt sich ein SSL Handshake in wenigen Schritten darstellen: Nachdem der Client
eine Anfrage gestellt hat, sendet der Server sein Zertifikat, (das den öffentlichen Schlüssel enthält)
das der Client versucht zu authentisieren und gibt eine Warnmeldung aus, falls ihm dies nicht
gelingt. Mit dem öffentlichen Schlüssel des Servers werden nun die Daten, die zum Aufbau eines
geheimen symmetrischen Schlüssels führen, verschlüsselt. Die Besonderheit von SSL liegt darin,
dass der symmetrische Schlüssel, mit dem die Daten anschließend übertragen werden, nicht
übertragen wird, sondern Client und Server in der Lage sind, diesen für sich selbst zu generieren.
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
10/20
Beispiel einer RSA Verschlüsselung
Berechnung eines Schlüssels
1. Wähle zufällig und zwei Primzahlen p<>q, und berechne das Produkt N=p.q .
2. Berechne φ(n)=(p-1)(q-1) , wobei φ die Eulersche Funktion genannt wird.
3. Wähle eine Zahl e, für die gilt 1 < e < φ(N), die teilerfremd zu φ(N) ist.
4. Berechne die Zahl d so, dass das Produkt ed kongruent bezüglich des Modulus φ(N) ist,
dass also e . d ≡ 1 mod φ(N) gilt.
Der öffentliche Schlüssel (public key) besteht dann aus


N, dem Primzahlprodukt sowie
e, dem öffentlichen Exponenten.
Der private Schlüssel (private key) besteht aus


d, dem privaten Exponenten sowie
N, welches allerdings bereits durch den öffentlichen Schlüssel bekannt ist.
p, q und φ(N) werden nicht mehr benötigt und sollten nach der Schlüsselerstellung auf sichere
Weise gelöscht werden.
Ein Zahlenbeispiel:
1. Wir wählen p = 11 und q = 13 für die beiden Primzahlen. Deren Produkt berechnet sich zu
N = pq = 143.
2. Die Eulersche φ-Funktion nimmt damit den Wert an:
φ(N)=φ(143)=(p-1)(q-1)=120
3. Die Zahl e muss zu 120 teilerfremd sein. Wir wählen e = 23. Damit bilden e = 23 und N =
143 den öffentlichen Schlüssel.
4. Berechnung der Inversen zu e: Es gilt
ed ≡ 1 mod φ(N)
Mit dem erweiterten euklidischen Algorithmus berechnet man den privaten Schlüssel d = 47.
Oder man nimmt Calc/Excel und berechnet diejenige Zahl, die sich aus einem Vielfachen
von 23 zusammensetzt und die, dividiert durch 120, den Rest 1 ergibt
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
11/20
Verschlüsseln von Nachrichten
Um eine Nachricht K zu verschlüsseln, verwendet der Absender die Formel
C ≡ Ke
mod N
und erhält so aus dem Klartext K den Geheimtext C.
Beispiel
Es soll die Zahl 7 verschlüsselt werden.
Der Nachrichtenabsender benutzt den veröffentlichten Schlüssel N = 143, e = 23 und rechnet
C ≡ 723
723
mod 143 =
mod 143
710 mod 143
.713 mod 143 = 2
Dabei wendet man nach jedem Rechenschritt auf die zu handhabenden Zahlen die Modulooperation
(kurz: mod) an, um die Ergebnisse möglichst „klein“ zu halten.
Aus dem Klartext 7 ist somit der Geheimtext 2 geworden.
Entschlüsseln von Nachrichten (Decodierung)
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
12/20
Der Geheimtext C wird nun errechnet mit der Formel
K ≡ Cd
mod N
mit dem nur ihm bekannten Wert d sowie N.
K ≡ 247
mod 143
= 7
Aus C = 2 wird also wieder K = 7.
Übung:
Verschluesselung.odt
Gegeben: p=7, q=11, e=17
Man verschlüssele die Zahl 5 und entschlüssele das Ergebnis
Geändert 10/10/16
© WR Seite
13/20
Vollständiges Beispiel
Vorarbeiten
Die oben genannten Schritte sollen nun an einem vollständigen Beispiel erläutert werden. Um einen
Text zu verschlüsseln, müssen zunächst Buchstaben in Zahlen umgewandelt werden. Dazu
verwendet man in der Praxis zum Beispiel den ASCII Code. Hier sei willkürlich die folgende
Zuordnung gewählt:
A=01 B=02 C=03 usw. (00 = Leerzeichen)
Darüber hinaus sei angenommen, dass jeweils drei Zeichen zu einer Zahl zusammengefasst werden.
Die Buchstabenfolge AXT wird also zu 012420. Die kleinste zu verschlüsselnde Zahl ist dann
000000 (drei Leerzeichen), die größte 262626 (ZZZ). Der Modulus N=pq muss also größer 262626
sein.
Klartext: W I K I P E D I A
Kodierung: 230911 091605 040901
Schlüsselerzeugung
Zunächst werden geheim zwei Primzahlen gewählt, beispielsweise p = 307 und q = 859. Damit
ergibt sich:
N=p.q=263713
φ(N) = (p – 1) . (q -1 ) = 262548
e = 1721
zufällig, teilerfremd zu φ(N)
d = 1373
das multiplikative Inverse zu e mod φ(N) mit Hilfe des
Öffentlicher Schlüssel: e = 1721 und N = 263713
Geheimer Schlüssel: d = 1373 und N = 263713
Verschlüsselung
Cn
C1
C1
C2
C2
C3
C3
=
=
=
=
=
=
=
Kne mod N
für n=1,2,3(,...)
1721
230911
mod 263713
001715
0916051721 mod 263713
184304
0409011721 mod 263713
219983
Entschlüsselung
Kn
K1
K1
K2
K2
=
=
=
=
=
Cnd mod N
für n=1,2,3(,...)
0017151373 mod 263713
230911
1843041373 mod 263713
091605
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
14/20
K3 = 2199831373 mod 263713
K3 = 040901
Signatur (Verschlüsselung mit dem geheimen Schlüssel)
Cn
C1
C1
C2
C2
C3
C3
=
=
=
=
=
=
=
Knd mod N
2309111373 mod 263713
219611
0916051373 mod 263713
121243
0409011373 mod 263713
138570
Verifikation (Entschlüsselung mit dem öffentlichen Schlüssel)
Kn
K1
K1
K2
K2
K3
K3
=
=
=
=
=
=
=
Cne mod N
2196111721 mod 263713
230911
1212431721 mod 263713
091605
1385701721 mod 263713
040901
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
15/20
Nicht fertig ...
Implementierung in Linux
Es gibt mehrere Open Source Tools, die die Protokolle SSL/TLS implementieren.
Openssl ist das Programmpaket in Linux, das die Verschlüsselungen mit Secure
Sockets Layer (SSL) und Transport Layer Security (TLS) ermöglicht. Dieses Protokoll
ist zwischen der Transportschicht und den Anwendungsprotokollen angesiedelt und
wird vom Webserver und vom Mailserver verwendet.
Openssh ist ein weiteres Paket zur sicheren Datenübertragung
Im Paket openssh­clients befinden sich die tools scp, ssh, sftp, slogin
Im Paket openssh­server befindet sich der ssh Server
Im Paket openssh befinden sich von den beiden obigen Paketen benötigte Dateien Die VPN Software Openvpn verwendet zur Verschlüsselung das OpenSSL Paket.
Praktische Beispiele und Übungen:
●
Wie versende ich nun verschlüsselte Mails, wie kann ich verschlüsselte Mails entziffern ?
●
Wie kommuniziere ich verschlüsselt mit einem Webserver ?
●
Woher kennt der Browser die öffentlichen Schlüssel der Zertifizierungsstelle ? ●
Wie kann ich mit FTP Dateien verschlüsselt übertragen ?
●
Wie kann ich mich unter Verwendung von Schlüsseln ohne Passwort einloggen ?
Beispiel 1 ssh:
Bei ssh (secure shell), das seinen unverschüsselten Vorgänget telnet abgelöst hat, wird zwischen den Kommunikationspartnern der öffentliche Schlüssel ausgetauscht.
Der Befehl ssh­keygen ­t rsa
erzeugt einen öffentlichen und privaten Schlüssel, der öffentliche wird in
~/.ssh/id_rsa.pub, der private in ~/.ssh/id_rsa abgespeichert; der private Schlüssel
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
16/20
kann mit einem Passwort (passphrase) geschützt werden.
Gleichzeitig wird ein Fingerprint des public keys erzeugt, der vor dem Austausch der
Schlüssel gesendet wird; beim ersten Mal wird man gefragt ob dieser Fingerprint
akzeptiert werden soll. Der Fingerprint ist die kryptographische Prüfsumme eines
Keys.
Will man nun sich am entfernten PC einloggen ohne immer das Passwort eingeben zu müssen, so muss als Benutzer franz der Key erzeugt werden und der öffentliche Schlüssel auf den remote host transportiert werden:
ssh­keygen ­t rsa
ssh­copy­id ­i ~/.ssh/id_rsa.pub [email protected]
Fingerprint:
34:b4:0a:7e:10:7b:04:3d:44:92:00:88:7d:af:f4:76
Privater Schlüssel, Datei id_rsa
­­­­­BEGIN RSA PRIVATE KEY­­­­­
Proc­Type: 4,ENCRYPTED
DEK­Info: DES­EDE3­CBC,517C107787693AA7
/9FsZ8K4ALTs/xTXD7IKkGqHlQUOmNBx9Uhx5PTXxE55uLLZFz5BiSDhb+9zSFt/s
IiE52YjUxni3JJ7QAlU0nWre9xPZQDzUtI6kmM00mK/G/0PVy8/ZpC58xx1iLI1h
rk/OvCrhRsZmUr7yCT2Jtuf6fouzfFuwmF8oMevAjd4OjLlybVxcz2IuJw7TDR2lL
nW+DPaEe4sDzjFccYLnQfQGLoRJUxdr3JcTNFdouZv/hwbTPXJ6fjWXgQXn2b08kQl
adbWG8wKHecECI4b2KbMrt8SB4XIbPk68EPZVhyNkGECv4i46Bd0SNJMMLzoKLp3
wsBTvAMTA9ZZdE9zpb/Dk6aJYUbXOz9e71ogvrsefysw68To5V+XFTUMwETnGDshu
W+RWgH/HGqRCFhWIEWIPb5EcR2XtaW6e9z5TP+OfbLf7GTlSz5LWeLoBVp8uGYfi
RfDVDIXqFv/4IAWzl/Uy0ZpRvtwv8Td/HCdS1GKitMSg3dl2gWfgPAlMFH1/1OBP0
jUWWyOIPTlvCqCrqNcFROFlSUC02lI9YKd+xLtfjBfejlWOy95xDssSf6uEJPA6z
13BUIbNgV5CgjyyKxeUQFxq3IzglAdMZBJCT7Nroc1a/7zTxItFk8FYPytYAwhCkO
jM8rdJfOvsLNAE4YYE5Xh7YMWfLyuUNCtv7P4GvkuVt/0/eQKkl4+rAXsyO5vnXF
HB0nVZONxmBfHmtU5Fh1mZ/qO7/gH9woPguNlD0v89mWXrHhN4uxQLBLizHK10SP
QL7KXTfZFJ91Sg8ouxC3Stlql6SGDI8ody+3H2tjvMk=
­­­­­END RSA PRIVATE KEY­­­­­
Öffentlicher Schlüssel, Datei id_rsa.pub
ssh­rsa AAAAB3NzaC1yct2EAAAAjBIwAAAIEAxEIiXRPNxiJ/ZBWAEgqd4q6VtAyv6Cv/CRpmAbsAHFNiEBX
zJxUaWHOHhwXCfVtGxfSkILqUh0Ww6LV/0mqjjfjb7LKs7gO9SlHFJBJjz5CKJFgnKwc2DAHvezPmG
605f2R1QrBdWjohOIdBVx5jivEKHGAspINPI2pv6U2fnzr1s= [email protected]
Die Datei ~/.ssh/autorized_keys enthält die public keys derjenigen Hosts, mit denen
man sich bereits einmal verbunden hat und deren Key man akzeptiert hat. Ändert
sich dieser Key gibt der SSH Server eine Warnung (Man in the Middle attack) aus.
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
17/20
Beispiel der Datei authorized_keys:
sshrsaAAAAB3NzaC1yc2EAAAABIwAAAQEA0r1ivdAN03jaKFDSxfkQN9XfOCyMixhnbftXGAyCWk2
XJdb0yBem0SrgdfdoBKrlFUEeOEzkGsBr1TYqgZj73XaXIexEIOBnrb2gMdL2wnsa62+mzYA/CYucAlD
mta1FhYCzeMS1kVFTARdadYB/eok9d91QvI0gByv2N3sUssEW45AkMurZ/PWbyF4UsC49d17jX6fjnIi
KQBulP0XmgHZwkh0fQT20wvB7j8cnX0BS4zCjoJNp3DnLDOxgBiPe2cCDAOHsylZp6JuIFmx9LZIuhk
akLLjxw7Iwzn5T9xDQOL1ye80uq9XkQOEzi3RFB53Z35Essk6UdcMT/[email protected]
Beispiel 2 FTP
Soll eine verschlüsselte Übertragung im File Transfer Protokoll mit TLS (Transaction Layer
Security) ermöglicht werden, muss der Server ein Zertifikat erzeugen, das die Clients
akzeptieren müssen. Diese Zertifikate werden von CA's (Certification Authorities) gekauft und
sind den Clients, die Verschlüsselung ermöglichen bekannt. Das Zertifikat wird in /etc/pki/tls/certs folgend erzeugt:
cd /etc/pki/tls/certs
make vsftpd.pem
Damit wird ein rsa private key sowie ein self signed Zertifikat erzeugt
In der Konfigurationsdatei des FTP Servers /etc/vsftpd/vsftpd.conf sind folgende Zeilen in hinzuzufügen:
#
SSL wird eingeschaltet
ssl_enable=YES
# Passwörter müssen nicht verschlüsselt sein, cleartext weiterhin möglich force_local_logins_ssl=NO
# Auch beim Datentransfer ist unverschlüsselter Transfer möglich
force_local_data_ssl=NO
#
Alle Versionen von TLS sind erlaubt
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
# Zertifikat des Servers rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
Mit diesen Einstellungen wird eine verschlüsselte Übertragung ermöglicht aber nicht erzwungen.
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
18/20
sftp [email protected]
ermöglicht nun bereits verschlüsselten Transfer ohne Konfiguration. Dieser Client besitzt aber einen reduzierten Befehlssatz und wird daher selten verwendet.
ncftp ­u franz 172.16.25.9
ncftp ist ein ftp Client, der keine Verschlüsselung beherrscht, geht nun auch, ist aber nicht verschlüsselt
lftp ­u franz 172.16.25.9
Bei Verwendung des komfortablen lftp Clients kann eine verschlüsselte Übertragung auch
erzwungen werden, indem in der Konfigurationsdatei /etc/lftp.conf folgende Anweisungen
hinzugefügt werden:
set ftp: ssl­force YES
set ftp: ssl­protect­data YES
Will man serverseitig nur verschlüsselte Passwörter und Datenübertragung erlauben, so sind die Anweisungen in vsftpd.conf force_local_logins_ssl=YES
force_local_data_ssl=YES
zu setzen, ncftp geht dann nicht mehr, sftp schon.
Beispiel 3 Webserver apache:
Beim Apache Webserver wird das Paket openssl verwendet, das Zertifikat besteht aus einem öffentlichen und einem privaten Schüssel:
Erzeugen eines Zertifikats:
cd /etc/httpd/conf/keys
openssl req ­new ­x509 ­ keyout secure.key ­ out secure.crt
Das Zertifikat verlangt nach einer Passphrase
Dann wird in der Konfiguratonsdatei des Webservers /etc/httpd/conf/httpd.conf die Adresse secure.bulme.at verschlüsselt angeboten:
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
19/20
<VirtualHost secure.bulme.at>
ServerAdmin [email protected]
DocumentRoot /home/httpd/secure
ServerName secure.bulme.at
SSLEngine on
SSLCertificateFile /etc/httpd/conf/keys/secure.crt
SSLCertificateKeyFile /etc/httpd/conf/keys/secure.key
ErrorLog /var/log/httpd/secure­error.log
CustomLog /var/log/httpd/secure­access.log common
</VirtualHost>
Beim Neustart des servers wird man immer nach der Passphrase gefragt, was durch die Befehle
openssl rsa ­in secure.key ­out secure.key.new
mv secure.key.new secure.key
umgangen werden kann, denn dadurch wird die passphrase in den neuen key geschrieben!
Verwendete Quellen: www.teialehrbuch.de
. www.wikipedia.de, www.at­mix.de
Verschluesselung.odt
Geändert 10/10/16
© WR Seite
20/20