Hintergrundwissen zur Kryptografie

Im engeren Sinne beschäftigt sich Kryptografie mit dem Ver- und Entschlüsseln von Nachrichten. Das ist nur sinnvoll, wenn die geheimen Schlüssel sicher vereinbart werden können und man sicher sein kann, dass man mit dem richtigen Gegenüber kommuniziert. Dann ist aber immer noch nicht garantiert, dass die Nachricht unterwegs nicht verändert wurde.

Verschlüsselung

Die Vertraulichkeit gewährleistet man durch Ver- und Entschlüsseln. Dabei steuert ein geheimer Schlüssel (das ist eine sehr große Zahl) einen Algorithmus, die sogenannte Chiffre, der normalerweise nicht geheim ist, sondern auf breiter Basis erforscht und auf Schwachstellen analysiert sein sollte (Kryptanalyse).

Die Sicherheit eines Verschlüsselungsverfahrens hängt vor allem von zwei Faktoren ab:

  • Die verschlüsselten Daten dürfen keinerlei strukturelle Merkmale der Originaldaten aufweisen. Sie dürfen nicht von reinen Zufallszahlen unterscheidbar sein.
  • Die Schlüssellänge (in Bit gemessen) muss so groß sein, dass ein Durchprobieren unmöglich ist. Dazu kommt ein Aufschlag für den Fall, dass der vorige Faktor aufgrund von Fortschritten der Kryptanalyse nur teilweise erfüllt ist.

An der Caesar-Verschlüsselung lässt sich das gut illustrieren. Wir beschränken uns dabei auf die 26 Buchstaben A bis Z. Beim Verschlüsseln wird jeder Buchstabe durch denjenigen ersetzt, der im Alphabet n Stellen weiter rechts ist, wobei man nach Z wieder mit A anfängt usw. Bei n = 4 wird aus einem A ein E, aus einem B ein F usw. Schließlich wird aus einem Z ein D. Die Zahl n ist hier der Schlüssel. Ein Beispiel:

Klartext: EINE KLEINE ENTE SCHWIMMT AUF DEM SEE

Verschlüsselt: IMRI OPIMRI IRXI WGLAMQQX EYJ HIQ WII

Dieses Verfahren hat entsprechend den obgenannten Faktoren zwei Probleme:

  • Der verschlüsselte Text spiegelt die unterschiedliche Häufigkeit der Buchstaben des Klartexts wider. Wer errechnet, welcher Buchstabe im verschlüsselten Text am Häufigsten vorkommt, kennt sofort den Schlüssel.
  • Es gibt nur 25 verschiedene Schlüssel (Schlüssellänge 4,6 Bit), was sich leicht durchprobieren lässt.

Schlüssel und Prüfzahlen

Kryptografisch gesehen sind Schlüssel einfach nur große Zahlen. Wie lang Schlüssel heute mindestens sein sollten, hängt vom verwendeten Verfahren hab. Das Spektrum reicht etwa von 256 bis 2048 Bit (eine Zahl mit 617 Ziffern).

Damit niemand den Schlüssel erraten kann, muss er völlig zufällig gewählt werden. Da ein Computer nicht würfelt, verwendet man Faktoren, die Außenstehende nicht wissen können: Uhrzeit (die aber ungefähr erratbar ist), Dauer von Festplattenzugriffen und vieles mehr. Daraus Zufallszahlen ohne erkennbares Muster zu generieren ist alles andere als einfach und auch schon mehrfach spektakulär misslungen. 

Ist ein Schlüssel schließlich generiert, kann man ihn sich natürlich nicht merken und bei Bedarf eintippen. Gespeichert wird er je nach Schutzbedarf und Anwendung in einer geschützten (am Webserver) oder verschlüsselten Datei (am PC). In Sonderfällen benutzt man spezielle Hardware-Sicherheitsmodule dafür.


Asymmetrisches Verfahren

Will man Daten nicht für den Eigengebrauch (beispielsweise zum Ablegen auf der Festplatte), sondern zur Übermittlung an jemand anderen (etwa per E-Mail) verschlüsseln, ergibt sich ein Problem: Wie soll der*die Empfänger*in den geheimen Schlüssel erfahren?

Eine Antwort darauf geben die sogenannten asymmetrischen Verfahren oder Public-Key-Kryptosysteme. Dabei sind die Schlüssel zum Ver- und zum Entschlüsseln verschieden und lassen sich nicht auseinander berechnen. Die Umsetzung sieht so aus:

  1. Der*die Empfänger*in gibt den Schlüssel zum Verschlüsseln öffentlich bekannt (Public Key).
  2. Der*die Absender*in verschlüsselt mit dem öffentlichen Schlüssel.
  3. Die Nachricht wird transportiert.
  4. Der*die Empfänger*in entschlüsselt mit dem anderen, dem privaten Schlüssel (Private Key).

Dieser Ansatz führt zu einem neuen Problem: Wie stellt man fest, ob ein bestimmter Public Key tatsächlich der Person gehört, für die die Nachricht gedacht ist, und nicht etwa einem Spion? Für dieses Problem sind digitale Signaturen die Lösung.

Digitale Signatur

Eine zentrale Sicherheitsfrage lautet: Von wem ist eine Nachricht (von wem kommen die Daten) und wurde sie irgendwie verändert? Gelingt es, beides zu beantworten, hat man die digitale Signatur. Zu dieser gelangt man in drei Schritten: 


1. Der Hash

Zunächst benötigt man einen Weg, die Nachricht (oder die Daten) an einer Kennzahl überschaubarer Größe (etwa 256 Bit) zweifelsfrei zu erkennen. Dazu berechnet man einen sogenannten Hashwert. Das ist eine Prüfzahl, die etwa wie ein Fingerabdruck der Nachricht verwendet wird.

Das Hash-Verfahren ist so gestaltet, dass selbst kleinste Änderungen zu anderen Werten führen. Es darf auch nicht gelingen, eine zweite Nachricht zu konstruieren, die zum selben Hashwert führt.

Nehmen wir als Beispiel ein kleines Gedicht und seinen nach dem Verfahren SHA256 berechneten Hash:

Der Faelscher ist ganz arg frustriert

denn diese Nachricht ist signiert.

Ist auch ihr Inhalt nur Gewaesch,

ist sie geschuetzt durch einen Hash! 

SHA256: a921454d7418a1de8662908874d4fd7c9b7d77463381a2740632cf676a228709


2. Die Unterschrift

Um aus dem Hash eine Unterschrift zu machen, benötigt man wieder die asymmetrische Verschlüsselung – nur umgekehrt.

  1. Die*der Absender*n verschlüsselt den Hash mit dem privaten Schlüssel.
  2. Das Ergebnis wird mit oder neben der Nachricht übermittelt.
  3. Die*der Empfänger*in berechnet selbst den Hash der Nachricht.
  4. Die*der Empfänger*in entschlüsselt die Signatur mit dem öffentlichen Schlüssel der*des behaupteten Absender*in.

Stimmen die Ergebnisse überein, so sind die Daten unverfälscht und, auf den öffentlichen Schlüssel bezogen, authentisch. Noch ist allerdings nicht gesichert, wem der Schlüssel (eigentlich das Schlüsselpaar) gehört. 


3. Die Identität

Mit der Signatur einer Nachricht ist diese zwar einem Schlüssel(paar) zugeordnet, aber noch nicht dessen Eigentümer*in. Tatsächlich enthalten kryptografische Schlüssel neben dem reinen Zahlenmaterial noch weitere Angaben, insbesondere über Name, E-Mail-Adresse etc. 

Damit ist aber noch nichts bewiesen. Jede*r kann nach Belieben ein Schlüsselpaar erstellen. Daher lässt man den Schlüssel und damit die Zuordnung zur Person per digitaler Signatur bestätigen.

Technisch-organisatorische Lösungen, deren Aufgabe es ist, Vertrauen in die Zuordnung eines Schlüsselpaares zu einer Person (oder Organisation, Einheit etc.) zu erzeugen, werden Public Key Infrastructures (PKI) genannt. Es gibt zwei Arten von PKI:

  • Zentrale Zertifizierungsstellen, deren Hauptschlüssel in der Software oder dem Betriebssystem eingebaut sind (x.509 für Web-Zertifikate, S/MIME funktioniert so)
  • Ein Web of Trust, das sich durch persönliche Kontakte bildet (PGP/GnuPG)

Beide Herangehensweisen haben Vor- und Nachteile und haben schon schlimme Niederlagen erlebt.

Während das zentralistische Modell relativ leicht zu bedienen ist, muss man nolens volens staatlichen und/oder kommerziellen Zertifizierungsstellen vertrauen, die man nicht kennt.

Das Web-Of-Trust-Modell hingegen legt die Kontrolle, aber auch die volle Verantwortung in die Hände der Beteiligten, was die Sache komplex, aber recht gut nachvollziehbar macht.