Was ist Kryptographie Kryptographie Die Wissenschaft, mit mathematischen Methoden Informationen zu verschlüsseln und zu entschlüsseln. Eine Methode des sicheren Senden von Informationen über unsichere Verbindungen. Kryptoanalyse Die Wissenschaft der Analyse und des Brechens von sicherer Kommunikation. Kryptologie ist die Kombination von beiden.
Bruce Schneider There are two kinds of cryptography in this world: cryptography that will stop your kid sister from reading your files, and cryptography that will stop major governments from reading your files. Bruce Schneider Experte für Kryptographie und Computersicherheit
Wozu wird Kryptografie benötigt Privatsphäre Halte Deine Kommunikation vertraulich. (secret) Integrität Halte deine Kommunikation sicher. (secure) Authentizität Kenne deinen Kommunikationspartner. Nachweisbarkeit Der Sender darf die Nachricht nicht abstreiten können.
Grundlagen Kryptographie Symmetrische Verschlüsselung Der selbe Schlüssel (Key) wird zum Verschlüsseln und Entschlüsseln verwendet. Beispiele: DES, AES, IDEA Asymmetrische Verschlüsselung Es gibt unterschiedliche Schlüssel für Verschlüsselung und Entschlüsselung. Sie wird auch Public Key Verschlüsselung genannt. Beispiele: RSA, Diffie-Hellmann, ElGamal
Bits, Bytes und Schlüssellängen Was ist besser? 128 Bit Schlüssel 1024 Bit Schlüssel 2048, 4096 Bit Schlüssel Antwort: weder noch Symmetrische Verschlüsselung ist viel schneller als asymmetrische Verschlüsselung. Asymmetrische Verschlüsselung erleichtert Kommunikation mit unbekannten Teilnehmern
Wie funktioniert Verschlüsselung? Symmetrische Verschlüsselung Schlüssel Schlüssel Ursprungstext Verschlüsselung Verschlüsselter Text Entschlüsselung Ursprünglicher Text Der Ball ist rund und ein Spiel da uert 90 Minuten Fp4dgviF saa4vopd 1 tzhzbs 0vtfumSQ u6oombkd yvwvz8zy Der Ball ist rund und ein Spiel da uert 90 Minuten
Wie funktioniert Verschlüsselung? Asymmetrische Verschlüsselung Schlüssel Verschlüsselung Schlüssel Entschlüsselung Ursprungstext Verschlüsselung Verschlüsselter Text Entschlüsselung Ursprünglicher Text Der Ball ist rund und ein Spiel da uert 90 Minuten Fp4dgviF saa4vopd 1 tzhzbs 0vtfumSQ u6oombkd yvwvz8zy Der Ball ist rund und ein Spiel da uert 90 Minuten
Ist das wirklich sicher? Symmetrische Verschlüsselung Im Idealfall müssen ohne Kenntnis des Schlüssels alle Kombinationen durchprobiert werden. Bei einem 128 bit Key sind dies 2^128 Kombinationen: 340.282.366.920.938.463.463.374.607.431.768.211.456 Asymmetrische Verschlüsselung Du weißt es (noch) nicht, aber es gibt angeblich schlaue Leute die dies denken.
Nicht Sicher?!? Was ist los? Asymmetrische Algorithmen gehen von Voraussetzungen aus, die nicht bewiesen sind: Faktorisierung großer Zahlen Berechnung Diskreter Logarithmen Die ist vergleichbar mit dem P vs. NP Problem in der Informatik Rucksackproblem Problem des Handlungsreisenden
Public Key Algorithmus Diffie-Hellman Schlüsselaustausch Erster veröffentlichter public Key Algorithmus (1976) Whitfield Diffie und Martin Hellman Erzeugen eines gemeinsamen geheimen Schlüssels Alice und Bob wählen eine große Primzahl n und eine weitere Zahl g Alice wählt eine große Zufallszahl a und gibt Bob X = g^a mod n. Bob wählt eine große Zufallszahl b und gibt Alice Y = g^b mod n. Alice berechnet k = Y^a mod n. Bob berechnet k = X^b mod n. k und k sind identisch (g^ab mod n) und können nicht von jemanden berechnet werden, der diesen Austausch beobachtet!
Erzeugen eines geheimen gemeinsamen Schlüssels (1/5) Alice (oder Bob) wählt eine große Primzahl n=2.147.483.647 und eine weitere Zahl g=22 und gibt sie Bob. *) * ) In der Praxis werden sehr große Zahlen verwendet.
Erzeugen eines geheimen gemeinsamen Schlüssels (2/5) Alice wählt eine große Zufallszahl a=16 und gibt Bob X=g^a mod n. X=22^16 mod 2.147.483.647 X=3.416.505.507
Erzeugen eines geheimen gemeinsamen Schlüssels (3/5) Bob wählt eine große Zufallszahl b=15 und gibt Alice Y=g^b mod n. Y=1.092.673.892
Erzeugen eines geheimen gemeinsamen Schlüssels (4/5) Alice berechnet ihren Schlüssel k=y^a mod n. k=1.092.673.892^16 mod 2.147.483.647 k=1.578.895.505
Erzeugen eines geheimen gemeinsamen Schlüssels (5/5) Bob berechnet seinen Schlüssel k'=x^b mod n. K'=416.505.507^15 mod 2.147.483.647 k'=1.578.895.505
Public Key Algorithmus RSA (Rivest, Shamir, und Adleman) (1977) Wähle zwei große zufällige Primzahlen p und q. Berechne n = p * q Wähle eine Zahl e so, dass sie zwischen 1 und p * q liegt und e Teilerfremd (relativ prim) zu (p-1) *(q-1) ist. Berechne d aus : d=e^-1 mod ( (p-1) * (q-1) ) e und n sind der öffentliche Schlüssel Um zu verschlüsseln, berechne c = m^e mod n. d ist der private Schlüssel. Um zu entschlüsseln, berechne m = c^d mod n.
Was ist OpenPGP/GnuPG Pretty Good Privacy Verschlüsselungsprogramm von Phil Zimmermann 1991. OpenPGP Standard für verschlüsselte/signierte Nachrichten RFC 2440, November 1998 Gnu Privacy Guard Eine Implementierung von OpenPGP. Frei von patentierten Algorithmen.
Was kann PGP/GnuPG Verschlüsseln / Entschlüsseln von Nachrichten/E-Mails von Dateien Signieren (Digitale Unterschrift) Schlüsselmanagement Erzeugen von privaten und öffentlichen Schlüsseln Verwalten von Schlüssellisten Schlüssel beglaubigen Schlüssel sperren / zurückziehen
Verschlüsselung PGP verwendet verschiedene Formen der Verschlüsselung, um unterschiedliche Teile einer Nachricht zu verschlüsseln Schnelle symmetrische Verschlüsselung um Nachrichten zu verschlüsseln Asymmetrische Verschlüsselung zur Verteilung der Sitzungs-Schlüssel (session key) Zusätzlich Kompression der Nachrichten, auch um Kryptoanalyse zu erschweren. (Redundanz)
Verschlüsselung
Verschlüsselung Um eine Datei zu verschlüsseln werden folgende Attribute benötigt: Ein Empfänger (kann man auch selber sein) Wahl ob binär oder ASCII verschlüsselt werden soll Name der Ausgabedatei Name der Eingabedatei gpg r [UID] a o [outname] e [file] Das funktioniert auch mit Datenströmen
Entschlüsselung Einfache Entschlüsselung durch Angabe der passenden Option gpg d [file] Es wird nach einer Passphrase gefragt.
Signatur / Digitale Unterschrift Integrität Nachricht enthält einen Hash-Wert Der Hash-Wert wird mit dem privaten Schlüssel verschlüsselt Nachricht kann nochmal mit einem weiteren Hash-Wert versehen werden (Test auf Veränderung) Authentizität Hash-Wert kann mit dem öffentlichen Schlüssel entschlüsselt werden Dieses setzt voraus, das der private Schlüssel zur Verschlüsselung verwendet wurde. Es ist nicht nötig, das der Nachrichtentext verschlüsselt ist. Wie?!?
Signatur / Digitale Unterschrift Die Signatur kann mit einer Verschlüsselung kombiniert werden. Die Signatur kann integriert oder getrennt erzeugt werden. gpg a sign [file] gpg a detach sign [file] Getrennte Signaturen sind zum Beispiel zum Signieren von Binärdateien geeignet.
Schlüsselmanagemet Sitzungsschlüssel (session keys) Werden bei Bedarf erzeugt Werden nur einmal verwendet!!! Benötigen einen sehr guten Zufallszahlengenerator Asymmetrische Schlüssel GPG ermöglicht Erzeugung und Verwaltung der Schlüssel Öffentliche Schlüssel können veröffentlicht werden.
Web of Trust (WoT) Woher weiß man, welchen Schlüsseln man vertrauen kann? Man selber kann nur eine begrenzte Anzahl von Schlüssel prüfen PGP erlaubt das signieren anderer Schlüssel Dies kann man nach Prüfung eines Schlüssels machen Man kann Schlüssel akzeptieren von Personen, die man nie getroffen hat. Wenn Alice dem Bob vertraut und Bob dem Charles vertraut, dann kann Alice ebenso Charles vertrauen.
Web of Trust (WoT)
GPG Schlüsselerzeugung gpg gen key Erzeugen seine öffentliche/privaten Schlüsselpaares. RSA Patent: Verwendung von DH/EiGamal (Diskreter Logarithmus) Wahl der Schlüssellänge (mindestens 1024 bits) Benutzerdaten (Name, E-Mail) Passphrase
Schüsselanulierung Nach der Schlüsselerzeugung ein Widerrufszertifikat erzeugen! Bei Verlust der Passphrase kann der eigene öffentliche Schlüssel widerrufen werden. gpg gen revoke [UID] Es wird die Passphrase benötigt
Schlüsselfunktionen Auflisten von Schlüsseln und Signaturen gpg list keys gpg list sigs gpg fingerprint Import von Schlüsseln gpg import [filename] Export von Schlüsseln gpg export [UID] Voreinstellung ist binär. Mit der Option -a wird ASCII Ausgabe ermöglicht.
Schlüsselserver Schlüssel können via E-mail oder über Webserver verteilt werden, aber es gibt auch einen besseren Möglichkeit: PGP und GnuPG unterstützen Key-Server. Senden gpg keyserver [ks] send key [UID] Empfangen gpg keyserver [ks] recv key [UID] In der Konfigurationsdatei können Key-Server voreingestellt werden, welche von gpg automatisch für neue Schlüssel verwendet werden.
Key-Signing Signiere einen Schlüssel nur, wenn Du absolut sicher bist!!! Signiere mit der edit-key Option Anschließend kann interaktiv der Schlüssel unterschrieben (sign), zurückgezogen (revoke), entfernt (delete) oder in ein anderes Vertrauensverhältnis (change trust) etc. gesetzt werden. gpg edit key [UID] >sign Anschließend den neu signierten Schlüssel auf einen Schlüsselserver hochladen.
Zusammenfassung GPG ist ein Werkzeug zur Verbesserung der sicheren Kommunikation GPG bleibt weiter in Entwicklung Die Benutzerschnittstellen sind verbesserungswürdig. Die Hemmschwelle zur Nutzung ist noch zu hoch. GPG sollte standardmäßig verwendet werden.
Geschafft: ENDE dieser Präsentation. Normalerweise steht hier Danke für Ihre Aufmerksamkeit Aber die Arbeit fängt jetzt erst an. Komm vorbei, mach mit! Rudolf Lörcks @rfc2460 rudolf.loercks@piratenpartei-nrw.de