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 nte 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 DiffieHellmann 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 DiffieHellman 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 SSLKommunikation 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 SSLVerbindungen, 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 BrowserMeldung – also dem selbsterstellten Zertifikat – nicht traut und die SSLVerbindung 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 SSLVerbindung 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 opensshclients befinden sich die tools scp, ssh, sftp, slogin Im Paket opensshserver 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 sshkeygen 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: sshkeygen t rsa sshcopyid i ~/.ssh/id_rsa.pub franz@172.16.25.9 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 ProcType: 4,ENCRYPTED DEKInfo: DESEDE3CBC,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 sshrsa AAAAB3NzaC1yct2EAAAAjBIwAAAIEAxEIiXRPNxiJ/ZBWAEgqd4q6VtAyv6Cv/CRpmAbsAHFNiEBX zJxUaWHOHhwXCfVtGxfSkILqUh0Ww6LV/0mqjjfjb7LKs7gO9SlHFJBJjz5CKJFgnKwc2DAHvezPmG 605f2R1QrBdWjohOIdBVx5jivEKHGAspINPI2pv6U2fnzr1s= root@pc9.5aheti.at 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/Gyw==franzd@pc9.5aheti.at 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 franz@172.16.25.9 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: sslforce YES set ftp: sslprotectdata 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 harald@bulme.at 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/secureerror.log CustomLog /var/log/httpd/secureaccess.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.atmix.de Verschluesselung.odt Geändert 10/10/16 © WR Seite 20/20