Eine Einführung in die Grundlagen der Kryptographie kann immer noch ziemlich viel sein. Dieser Artikel ist in mehrere Abschnitte unterteilt. Dieser erste Abschnitt ist eine Übersicht, damit du siehst, wohin die Reise geht. Du kennst vielleicht einige der Teile und möchtest es überspringen – gut so – aber wenn dies Dein erster Blick auf dieses wichtige Werkzeug der Informationssicherheit ist, wird es sicher helfen, wenn Du diesen Wegweiser von Anfang an liest.
Begrifflichkeit
Wir müssen zuerst die Begriffe festlegen, damit alles andere Sinn gibt. Dann schauen wir uns die sehr offensichtlichen Grundlagen der Verschlüsselung und Entschlüsselung an. Dann gehen wir weiter und betrachten die nicht so offensichtliche Frage der Initialisierungsvektoren. Also, jetzt geht es los und der Sprung ins Wasser beginnt mit der nächsten Überschrift.
Chiffren (Symbol, Zeichencode)
Es gibt sowohl symmetrische als auch asymmetrische Chiffren, die Unterscheidung ist wichtig. Es gibt viele nützliche Anwendungen der asymmetrischen Kryptographie, daher schauen wir mal, wie sie funktioniert. Details, wie die Funktionsweise von Diffie-Hellman, RSA und Spezialisierungen wie Quantenschlüsselverteilung oder QKD und identitätsbasierte Verschlüsselung, gehe ich hier nicht im Detail ein.
Einmalige Pads/ Blöcke
Das einzige völlig sichere Kryptosystem ist ein Einmal Pad, das auf einem wirklich zufälligen Schlüssel basiert. Die Stream-Chiffren-Familie emuliert eine geschwächte Version, und es gibt Möglichkeiten, wie du versuchen kannst, Deinen eigenen Einmal Pad-Schlüsselgenerator auf leicht verfügbarer – handelsüblicher – Hardware zu erstellen.
Schwer zu verstehen? Ja, ich weiss – in einfachen Worten und nur grundsätzlich erklärt. Ein Objekt, das verschlüsselt wird, wird in seine kleinstmöglichen Elemente zerlegt. Jedes Element wird mit einem eigenen Schlüssel verschlüsselt. Der Schlüssel ist aus einer sehr, sehr, großen Menge zufällig gewählt und wird sofort nach einmaliger Verwendung weggeworfen.
Chiffrierstärke
Sobald Du vor einer großen Auswahl an Chiffren stehst, möchtest Du sofort wissen, wie stark sie sind, damit Du die beste Wahl für Deinen Anwendungsfall und Bedarf treffen kannst. Das sind dann die Fragen wie die Schlüssellänge und die Unterschiede zwischen symmetrischen und asymmetrischen Chiffren.
Diffie-Hellman (kurzfristige/flüchtige Schlüssel & PFS)
Manchmal musst Du ein gemeinsames Geheimnis in einer unsicheren Umgebung aushandeln. Das Internet ist zum Beispiel so eine Umgebung. Diffie-Hellman Schlüsselverhandlung löst dieses Problem. Sobald Du einfach und sicher neue Schlüssel mit deinem Kommunikationspartner aushandeln kannst, solltet Ihr beide Eure Sitzungsschlüssel kurzlebig machen, was zu Perfect Forward Secrecy (vgl. PFS) führen kann, und manchmal musst Du auch einen Schlüssel sicher unter vielen Menschen teilen.
Hash-Funktionen
Kryptografische Hash-Funktionen sind ein weiterer sehr wichtiger Bereich der Kryptographie. Du musst wissen, was sie sind, und Dich vielleicht auch mit einigen aktuelle Ereignisse aus der Welt der Hash-Funktionen beschäftigen. Wirklich! Mache ich auch immer wieder.
Public-Key-Infrastruktur
Hash-Funktionen werden verwendet, um die Datenintegrität zu schützen und Nachrichtenquellen in digitalen Signaturen, Hashed Message Authentication Codes (HMACs) und digitalen Zertifikaten zu authentifizieren. Diese sind erforderlich, um Dinge wie sichere Verbindungen zu Webservern herzustellen. All das ist am Aufbau einer Public-Key-Infrastruktur beteiligt und notwendig.
Kulturelle Kryptographie
Schließlich gibt es einige Aspekte der kulturellen Kryptologie, darunter kryptografischer Nerdcore-Rap und kryptologische Kombinatorik in den Werken von Edgar Allen Poe, Clarke und Borges.
Wohin als nächstes?
Wenn all das nicht ausreicht, habe ich eine Leseliste erstellt, für mehr Detailinformationen und echtes Grundlagenwissen. Die schicke ich gerne bei Bedarf zu.
Wenn Du bereit bist, dann lerne Kryptographie besser kennen – sie hilft uns allen!
„This Arte of Cypheringe, hath for Relative, an Art of Discypheringe; by supposition unprofitable; but, as things are, of great use. For suppose that Cyphars were well managed, there bee Multitudes of them which exclude the Discypherer. But the rawness and unskillfulnesse of Secretaries, and Clerks, in the Courts of Princes, is such that many times the greatest matters are committed to futile and weake Cyphers.„
Roger Bacon, De Augmentis Scientiarium, 1623, London
„The man is insane who writes a secret in any other way than one which will conceal it from the vulgar and make it intelligible only with difficulty even to scientific men and earnest students.“
Roger Bacon, Epistle on the Nullity of Magic, eighth chapter
Wenn Kryptographie verboten ist, dann …
Jraa Xelcgbtencuvr ireobgra vfg, qnaa …
— Viele Menschen – Verwendung der rot13-Substitutionschiffre.
Grundbegriffe
Um überhaupt dieses Thema zu behandeln sind einige grundlegende Definitionen notwendig, um die Grundlagen zu verstehen
Klartext (Plaintext, Cleartext) | Das ist die ursprüngliche, originale, Nachricht. Das kann sein ein einfacher Text, ein Bild, eine komprimierte Archivdatei, oder was es auch immer gilt zu schützen. Jegliche Form von digitalisierten Inhalt kann eine Ausgangsbasis – Klartext – darstellen. |
Verschlüsselter Text (Ciphertext) | Die verschlüsselte Form des obigen Klartext schaut aus, wie eine Abfolge aus zufällig zusammengewürfelten Buchstaben-, Zahlen- und Zeichenkombinationen. In der Informationstheorie ein logarithmisches Maß für die Überführbarkeit von Information zu einer konkreten Nachricht. Je höher die Entropie, desto geringer der Nachrichtengehalt. Je besser die Verschlüsselung, desto höher deren Entropie und desto geringer der Nachrichtengehalt. Man kann also vom verschlüsselten Inhalt nicht auf den unverschlüsselten schliessen. Die Schwierigkeit der Entschlüsselung steigt mit der Entropie der verschlüsselten Nachricht. |
Verschlüsselungsverfahren (cipher) | Das ist das Verfahren – Algorithmus, dass eingesetzt wird, um Klartext zu verschlüsseln und auch wieder zu entschlüsseln. |
Schlüssel (key) | Ein Schlüssel wird benötigt, um ein Verschlüsselungsverfahren durchzuführen. Mit einem Schlüssel kann eine Nachricht verschlüsselt, signiert und auch entschlüsselt werden. Die Möglichkeiten wofür ein Schlüssel eingesetzt werden kann, hängt vom eingesetzten Verfahren ab. Wichtig ist die Integrität, Verfügbarkeit und Vertraulichkeit eines Schlüssels durchgehend gewährleisten zu können. |
Schwierigkeitsgrad der Verschlüsselung (computationally difficult) | Eine Verschlüsselung, ohne den dazugehörigen Schlüssel, zu brechen ist theoretisch (fast) immer möglich. In der Praxis mangelt es aber vor allem an den Faktoren Zeit und Ressourcen, um solch einen Angriff erfolgreich auszuführen. |
Chiffren – Ver- & Entschlüsselung
Um die Vertraulichkeit sensibler Daten zu schützen, müssen wir diese Daten verschlüsseln. Sinnvoll ist es diese Daten vor dem Speichern oder dem Übertragen zu verschlüsseln. Chiffren sind die Algorithmen (d.h. die detaillierten Methoden, Vorgehensweisen, Kochrezepte), die für die Arbeit verwendet werden. Früher mit Bleistift und Papier, dann wurden sie elektromechanisch, und jetzt sind es Computerprogramme. Eine Chiffre funktioniert immer auf die gleiche allgemeine Weise, aber ein Schlüssel ändert die Details, so dass jede Datei oder Nachricht auf ihre eigene einzigartige Weise geschützt werden kann. Hier verwenden wir Sv (vgl.: Schlüssel Verschlüsselung) zum Verschlüsseln und dann Se (vgl.: Schlüssel Entschlüsselung) zum Entschlüsseln.
Der Prozess beginnt mit dem Klartext (vgl. Tk), der geschützt werden soll. Der Klartext war am Anfang der Geschichte der Kryptographie auf (sehr) einfachen Text beschränkt. Mit der Erstellung der elektrischen Maschinenkryptografie beschränkte sich der Klartext oft darauf, in einem sehr eingeschränkten Alphabet ausgedrückt zu werden – keine Ziffern, nur Buchstaben, manchmal mit relativ unbenötigten Zeichen und ohne Unterschied zwischen Groß- und Kleinbuchstaben. Das Klartextalphabet war in der Regel eingeschränkter als der Morse-Code oder eine andere Arten, die zur Übertragung des Chiffriertextes verwendet werden und wurden.
Einmal-Pads/ Blöcke
Die einzige Möglichkeit, perfekte Sicherheit beim Verschlüsseln zu erreichen, ist die Verwendung eines Einmal-Pads. Es ist sehr unpraktisch, weil sehr arbeitsintensiv, so dass Du wahrscheinlich selten genug Motivation haben wirst, dir die Mühe zu machen, es zu verwenden. Und wenn Du es nicht richtig anwendest, kann es sogar leicht gebrochen werden. Aber ein einmaliges Pad ist die einzige unzerbrechliche, unknackbare, Chiffre. Alle anderen Methoden, was als algorithmische Kryptographie bezeichnet wird, sind taktisch. Du bist nur sicher, bis zu dem Zeitpunkt, ab dem Dein Gegner genug Zeit hat, seine Ressourcen einzusetzen, um Deinen Schlüssel zu finden. Such nach angewandter Kryptographie für die Analyse und wie lange das Lösen auf verschiedenen Systemen dauert.
Praktisch wurde das zum Beispiel in der Kommunikation zwischen den Vereinigten Staaten und Groß Britannien im Zweiten Weltkrieg eingesetzt. Da aber auch nur zwischen President Roosevelt und Premier Minister Sir Churchill.
In etwa hat das so funktioniert, dass über die Sprachaufnahme ein zufälliges Rauschen gelegt worden ist. Diese vermischte Aufnahme wurde dann gesendet. Der Empfänger konnte nach dem herausfiltern des Rauschens wieder die Sprachnachricht im Klartext hören. Das idente Rauschen wurde auf Schellackplatten auf beiden Seiten vorgehalten. Das Rauschen entspricht dem privaten Schlüssel. Beide Seite verfügen über den selben privaten Schlüssel. Man spricht hier auch von einer symmetrischen Verschlüsselung.
Verschlüsselungsstärke
Wir wollen die Vertraulichkeit einiger Daten schützen, das bedeutet, dass wir sie verschlüsseln müssen. Aber welche Chiffre, welches Verfahren, sollten wir wählen? Wie wählt man eine Chiffre aus, die stark genug ist, um für den Zweck die Vertraulichkeit zu gewährleisten. Sicherheit hängt nicht nur von der Auswahl der Chiffre ab, wir müssen auch vorsichtig sein, wie wir sie verwenden und wie wir die Schlüssel generieren und verwalten.
Ein Chiffrieralgorithmus ist stark, wenn:
- Angesichts einiger Paare von Klartext und entsprechendem verschlüsselten Text kann ein Angreifer nur den verwendeten Schlüssel erraten, vor allem wenn er eine Kopie des Algorithmus hat. Die Kenntnis eines starken Algorithmus bietet dem Angreifer keinen Vorteil.
- Du kannst nicht Schrittweise einem Schlüssel suchen. Wie man es so oft in Film und Fernsehen sieht, es ist leider falsch, dass man einen wie bei einem Fahrradschloss, eine Stelle nach der anderen errät. Es gibt keinen „Fortschrittsbalken“ in der Form. Ein sicherer Algorithmus lässt nicht auf die Teilmenge der erratenden Schlüsselelemente schliessen. Solange der Schlüssel nicht zur Gänze entspricht wird nur zufällig erscheinender Inhalt angezeigt.
- Eine geringfügige Änderung des Klartextes oder der Tonart führt zu einer drastischen Änderung des verschlüsselten Textes. Das wird als Konfusion bezeichnet. Die drastische Änderung ist nicht lokalisiert, sondern über den resultierenden verschlüsselten Text verteilt. Das wird Diffusion genannt.
Beachten bitte, dass jede dieser Funktionen die anderen bedingt. Für eine starke asymmetrische Kryptographie gibt es eine zusätzliche Funktion:
- Bei einer Kopie des Algorithmus und eines der Schlüssel im Paar kann ein Angreifer nur den anderen Schlüssel erraten.
Diffie-Hellman Schlüsselaustausch
Wenn Du und Dein Kommunikationspartner keinen sicheren Kommunikationskanal habt, wie könnt Ihr Euch dann sicher auf einen gemeinsamen geheimen Schlüssel für die symmetrische Kryptographie einigen? Diffie-Hellman-Schlüsselaustausch rettet Euren Tag! Es ist wirklich ein wichtiges und allgemein anerkanntes Verfahren, um Schlüssel untereinander nicht austauschen zu müssen, aber die Integrität und Vertraulichkeit der Information zu gewährleisten. Diffie und Hellman versuchten, ein praktisches System für asymmetrische Kryptographie zu entwickeln. Rivest, Shamir und Adelman entwickelten ihre asymmetrische RSA-Chiffre etwa zur gleichen Zeit. Diffie und Hellmans Leistung war für die symmetrische Kryptographie äußerst nützlich. Die symmetrische Chiffre ElGamal, die im folgenden Jahrzehnt entworfen wurde, löste schließlich das ursprüngliche Problem, an dem Diffie und Hellman gearbeitet hatten.
Eigenschaften einer Hash Funktion
Ganz einfach ausgedrückt, ist eine Hash-Funktion eine Messung, um Änderungen an Daten zu erkennen oder festzustellen. Damit lässen sich auch Dateien vergleichen, ob sie identisch sind oder nicht. Hash-Funktionen sind quasi Detektivsicherheitswerkzeuge, sich verschleiern, oder verschlüsseln den Inhalt nicht. Hashing-Funktionen in der Kryptographie haben einige spezifische Eigenschaften. Während seit mehreren Jahren sicherere Algorithmen verfügbar sind, verwenden viele Unternehmen weiterhin schwächere Funktionen.
Die Ausgabe einer beliebigen Hash-Funktion hat immer die gleiche Länge, unabhängig von der Länge der Eingabezeichenfolge. Informell angegeben, ist ein kryptographisch starker Hash einer, für den eine sehr geringfügige Änderung der Eingabe eine drastische Änderung in der gesamten Ausgabe verursacht, und das bedeutet, dass Du nicht nach Eingabezeichenfolgen suchen kannst, die einen bestimmten Hashwert erzeugt.
Ein guter kryptografischer Hash hat diese vier Eigenschaften, wobei „undurchführbar“ bedeutet, „fast sicher über die Fähigkeit jedes Gegners hinaus, der davon abgehalten werden muss, das System zu kompromittieren, solange die Sicherheit wichtig ist“:
1: Es ist einfach, den Hash-Wert für jede Nachricht zu berechnen.
2: Es ist nicht machbar, eine Nachricht zu finden, die einen bestimmten Hash hat.
3: Es ist unmöglich, eine Nachricht zu ändern, ohne ihren Hash zu ändern.
4: Es ist unmöglich, zwei verschiedene Nachrichten mit demselben Hash zu finden.
Digitale Signature, Digitale Zertifikate und HMAC
Digitale Signaturen
Wir müssen in der Lage sein, sowohl die Integrität als auch die Herkunft der Daten zu überprüfen. Das heißt, für eine E-Mail-Nachricht oder ein Datenarchiv oder Programm, das auf einem Server gespeichert ist, müssen wir mit hoher Sicherheit nachweisen, dass die Daten genau in ihrer ursprünglichen Form vorliegen und dass sie aus der ursprünglichen Quelle stammen. Mit anderen Worten, genau diese Nachricht kam von diesem Absender oder dieser Quelle. Diese Kombination bietet eine Nichtablehnung, bei der der Absender nicht überzeugend leugnen kann, diese Nachricht gesendet zu haben. Die Technik wird als digitale Signatur bezeichnet, da sie eine viel vertrauenswürdigere Signaturmethode bietet als die Untersuchung von Tintenkritzeln, und sie wird von einem Computerprogramm ausgeführt, das zwei kryptografische Komponenten kombiniert.
Wenn Du eine Nachricht und ihren Hash sendest, beweisen Du nur, dass Du weisst, wie man einen Hash berechnet!
Senden Du aber stattdessen die Nachricht und das Ergebnis der Verschlüsselung ihres Hashs mit Ihrem privaten Schlüssel. Dieses Ergebnis wird als digitale Signatur bezeichnet. Die digitale Signatur ist:
E( H(Nachricht), Sprivate )
Jeder kann den Hash der empfangenen Nachricht berechnen. Du kannst auch Ihren öffentlichen Schlüssel verwenden, um die digitale Signatur zu entschlüsseln. Dann vergleichst Du diese beiden Ergebnisse. Wenn die beiden identisch sind, bist Du der Absender, und die Nachricht wurde nicht geändert.
Überprüfen digitaler Signaturen mit PGP Werkzeugen
Ich verwende GnuPG und GPG Suite. Beide können von der Befehlszeile aus verwendet werden, wo der Befehl gpg so ziemlich alles kann. (Beachten bitte, dass der Befehl abhängig von der Distribution vielleicht auch gpg2 sein kann.) Das GnuPG-Paket fungiert als Plug-in für Apple Mail zum Beispiel.
Eines von vier Dingen muss passieren, wenn Du versuchst, eine digital signierte Nachricht oder Datendatei zu überprüfen:
1: Die Nachricht wurde mit einem vertrauenswürdigen Schlüssel signiert, und die Signatur konnte überprüft werden. Das ist es, was Du sehen willst!
2: Die Signatur konnte überprüft werden, aber der Schlüssel ist nicht vertrauenswürdig. Du hast den öffentlichen Schlüssel des Unterzeichners in Deinem Schlüsselring, aber Du hast Dich noch nicht entschieden, der Gültigkeit dieses Schlüssels zu vertrauen. In dem Sinne, dass Du sagen kannst: „Ich bin mir ziemlich sicher, dass dieser Schlüssel dieser Person oder Gruppe gehört.“
Du musst das beheben. Das Problem ist, wie entscheidest Du, ob dieser Schlüssel wirklich dieser Person oder Organisation gehört? Wenn Du den Schlüssel von eingeschweißten Medien erhalten hast, die Du gekauft hast (z. B. Red Hat Enterprise Linux-Installationsmedien), wäre es sinnvoll zu glauben, dass die Schlüssel auf den Medien wirklich den Leuten gehören, die Dir die Medien geschickt haben.
Heutzutage wollen Unternehmen jedoch Geld sparen, indem Sie Daten herunterladen lassen, anstatt Medien zu versenden. Du könntest also den Fingerabdruck (einen Hash) des Schlüssels überprüfen, den Sie – der Hersteller – haben:
$ gpg –fingerprint keyID
Oder:
$ gpg –Fingerabdruck SignersName
Du kannst Sie dann am Telefon anrufen und dem Hersteller diesen Fingerabdruck vorlesen, damit sie überprüfen können, ob das, was Du hast, wirklich der Hersteller Schlüssel ist.
Oder Du kannst einen vertrauenswürdigen Dritten fragen.Es liegt vor allem an Dir zu entscheiden, ob und wem die glauben sollst.
Es ist schwierig, sich für die Gültigkeit eines Schlüssels zu entscheiden – dies ist das schwierigste Problem im Bereich der digitalen Signaturen und der Kryptographie mit öffentlichen Schlüsseln, dass es zu lösen gilt.
3: Die Signatur konnte nicht überprüft werden, da Du nicht über den erforderlichen öffentlichen Schlüssel verfügst.Du hast keine Ahnung, ob die Daten gültig sein könnten oder nicht, da Du nicht über den öffentlichen Schlüssel verfügst, der zur Beantwortung dieser Frage erforderlich ist. Es ist an der Zeit, sich die Server mit öffentlichen Schlüsseln anzusehen, und wenn das nicht funktioniert, frage vielleicht Google.
Sobald Du diesen öffentlichen Schlüssel in Deinen Schlüsselbund importiert hast, wird Dein Problem unmittelbar zu Fall #3…
4: Die Unterschrift ist ungültig! Das ist das schlimmstmögliche Ergebnis!
Etwas Schlimmes ist passiert! Vielleicht war es bösartig. Vielleicht war es unschuldig (zum Beispiel siehst Du Dir eine E-Mail-Nachricht an, die über ein Lotus Notes-Gateway ging. Dieser hat unmotiviert beschlossen, den Zeilenenden zusätzliche Leerzeichen hinzuzufügen und die Nachricht anderweitig neu zu formatieren). Was auch immer die Ursache ist, etwas hat die Daten geändert, nachdem die digitale Signatur erstellt wurde.
Hashed Message Authentication Code (HMAC)
Absender und Empfänger teilen sich einen geheimen Schlüssel. HMAC wird als Hash (Nachricht + Schlüssel) gebildet.
Der Absender überträgt Nachricht und HMAC.
Der Empfänger führt einen entsprechenden Hash-Vorgang (received+key) durch, um die Nachrichtenintegrität und die Absenderauthentifizierung zu überprüfen.
Beachten, dass eine digitale Signatur einen Hash der gesamten Nachricht erfordert, gefolgt von einer Verschlüsselung des Hashs. Wenn Du nur eine große Nachricht sendest, überwältigt die für den Hash erforderliche Arbeit die Arbeit für die Verschlüsselung, und es gibt keinen wirklichen Rechenvorteil für einen HMAC.
Ein HMAC erfordert nur einen Hash. Wenn Du eine große Anzahl kleiner Nachrichten sendest, hat ein HMAC einen Rechenvorteil.
Signiere also elektronische E-Mail-Nachrichten und Archive digital, die von Webservern heruntergeladen werden sollen, wenn Du sie nur ab und zu sendest oder erstellst. Verwende aber HMAC innerhalb von IPsec, um alle IP-Datagramme in einem schnellen Strom von Netzwerkverkehr zu überprüfen. (Ja, ist holprig, aber der Knoten im Hirn ist schon da…)