Kryptografie allgemein
Wer öfters remote per SSH auf anderen Rechnern arbeitet, wird das Problem kennen, dass man sich jedes Mal mit seinem Passwort authentifizieren muss. Wem dieser Aufwand zu groß ist, der kann mittels des Public Key Verfahrens sich diesen Aufwand sparen.
Das Public Key Verfahren ist ein asymmetrisches Kryptografieverfahren , welches auf dem Prinzip eines öffentlichen und eines geheimen Schlüssels basiert. Folgende Grafik erläutert das generelle Verschlüsselungsprinzip:

M ist die zu versendende Nachricht
Ke ist der Schlüssel für die Verschlüsselung
E ist der Verschlüsselungsalgorithmus
C ist die verschlüsselte Nachricht
D ist der Entschlüsselungsalgorithmus
Kd ist der Schlüssel für die Entschlüsselung
M ist die versendete Nachricht
Eine Nachricht M wird mittels des Verschlüsselungsalgorithmusses E und einen Schlüssel Ke verschlüsselt. Die verschlüsselte Nachricht wird an den Empfänger übertragen. Er entschlüsselt die Nachricht mit dem Schlüssel Kd und kann auf den Inhalt zugreifen.
Unterschied asymmetrisches und symmetrisches Verfahren
Beim asymmetrischen Verfahren ist K_e≠K_d, während die beiden Schlüssel beim symmetrischen Verfahren gleich sind. Dafür müssen die Parteien jedoch zuvor sich auf einen Schlüssel einigen, während beim asymmetrischen Verfahren der öffentliche Schlüssel einfach aus dem privaten generiert und frei verteilt werden kann, da er ohne den privaten Schlüssel praktisch nutzlos ist. Für unseren Fall benötigen wir die asymmetrische Variante, da dadurch auch die Verifikation einer Partei ermöglicht wird
Kryptografiealgorithmen
Moderne Verschlüsselungsverfahren lassen sich nur mit viel Rechenpower knacken, da die Algorithmen ausgeklügelt sind und oft auf mathematischen Problemen basieren, deren Lösung aktuell noch nicht sehr effizient machbar ist (siehe RSA ). Allerdings sind die meisten dieser Verfahren öffentlich zugänglich, sodass jeder nach einer Hintertür suchen kann, um das Verfahren zu umgehen. Der Schlüssel ist der entscheidende Faktor. Seine Länge bestimmt hauptsächlich die Rechendauer und macht es für Cracker schwer, die Verschlüsselung zu knacken. Man sollte also den Schlüssel geheim halten und ihn nur über gesicherte Kanäle der anderen Partei zukommen lassen.
Authentifizierung
Was aber hat jetzt diese Verschlüsselung damit zu tun, dass wir uns ohne Passwort per SSH auf entfernten Rechnern einloggen können?
Dazu bedienen wir uns noch frei verfügbaren Einweghashfunktionen und erstellen uns mit dem asymmetrischen Verfahren eine digitale Signatur . Einweghashfunktionen haben 3 wichtige Eigenschaften, denen wir uns bedienen werden:
Aus einer Zeichenkette M lässt sich leicht deren Hashwert h ermitteln
h=H(M)
Ein berechneter Hashwert h ist mit hoher Wahrscheinlichkeit eindeutig. Haben wir also 2 identische Hashwerte h und h‘, ist die Wahrscheinlichkeit sehr hoch, dass es sich um dieselben Ausgangszeichenketten handelt.
h = H(M) ∧ h'=H(M') => M = M'
Es ist sehr schwer, aus einem berechneten Hashwert h die ursprüngliche Zeichenkette M zu bestimmen, deswegen Einweghashfunktion
Wir nehmen nun an, Partei A möchte sich gegenüber Partei B authentifizieren.
A → B: M ∥ E_Ke (H(M))
A wendet die Hashfunktion auf die Nachricht an und verschlüsselt mit seinem privaten Schlüssel den Hashwert. Der verschlüsselte Hashwert wird zusammen mit der Nachricht an B geschickt.
B: D_Kd (H(M)) ∧ h' = H(M)
B entschlüsselt den Hashwert mit seinem öffentlichen Schlüssel und berechnet aus der Nachricht einen eigenen Hashwert. Stimmen beide Werte h und h‘ überein, muss die Nachricht von A gekommen sein, da der öffentliche Schlüssel aus dem privaten Schlüssel generiert wurde und nur auf diesen passt. B weiß, dass A auch wirklich A ist!
Dieses Prinzip machen wir uns zunutze, damit unser Zielrechner uns nicht immer nach einem Passwort fragen muss und trotzdem sicher sein kann, dass der Benutzer auch wirklich derjenige ist, der er vorgibt zu sein.
Einrichten des Public Key Verfahrens
Vorbemerkungen und Einschränkungen
Das Beispiel spielt in der UNIX Umgebung. Wer unter Windows dieses Verfahren einsetzen will, sollte sich mit den PuTTY Tools vertraut machen. Um diese Anleitung umzusetzen, brauchen wir folgende Dinge:
- Einen Client-Rechner
- Einen Server-Rechner inkl. Benutzerkonto
- SSH Zugriff vom Client auf den Server
Einen SSH Key erzeugen
Um auf einem UNIX System einen SSH Key zu erzeugen, gehen Sie folgendermaßen vor (aktuelles Arbeitsverzeichnis spielt keine Rolle):
- mkdir ~/.ssh
erstellt einen versteckten Ordner ssh im Home-Verzeichnis des Benutzers - chmod 700 ~/.ssh
nur der Ersteller hat volle Schreibrechte im Verzeichnis - cd ~/.ssh
navigiert zum erstellten Verzeichnis - ssh-keygen -t rsa
erstellt ein RSA-Schlüsselpaar für die Kommunikation ohne Passwortabfrage

Den Public Key auf den Zielserver kopieren
Führen Sie folgende Befehle aus:
- scp ~/.ssh/id_rsa.pub (((zielserver))):
kopiert den Schlüssel ins Home des Benutzers auf dem Zielserver - ssh (((zielserver)))
Verbindung zum Zielserver
Führen Sie folgende Befehle auf dem Zielserver aus:
- mkdir ~/.ssh
Ordner erstellen - chmod 700 ~/.ssh
Rechte setzen - cat id_rsa.pub >> ~/.ssh/authorized_keys
Key zur Liste der erlaubten Keys hinzufügen - chmod 600 ~/.ssh/authorized_keys
Rechte der Datei beschränken - rm id_rsa.pub
Löscht den Public Key
Führen Sie folgende Befehle aus:
- exit
Beendet die SSH Sitzung auf dem Zielserver - ssh (((zielserver)))
Baut eine SSH Verbindung zu (((zielserver))) auf

Häufige Fehler
Wenn weiterhin trotz eingerichtetem Public Key Verfahren nach einem Passwort gefragt wird, gibt es mehrere Möglichkeiten, wo der Fehler versteckt liegen könnte.
Als erstes sollte man überprüfen, ob der Public Key in der Datei authorized_keys enthalten ist. Man kann jeden Schlüssel zuordnen, da die letzten Zeichen des Schlüssels den Benutzernamen und den Quellrechner enthalten.
Daneben sollte man die Datei- und Ordnerrechte überprüfen. Für den .ssh-Ordner darf nur der Besitzer volle Rechte besitzen (700) und die Datei authorized_keys muss sogar noch etwas mehr eingeschränkt werden (600). Mit dem Befehl chmod können die Rechte gesetzt werden.
Eine weitere Fehlerquelle kann der Dateiname sein. Zur Sicherheit sollte man den Standardnamen id_rsa und id_rsa.pub (bei einem RSA Schlüssel) verwenden, um diese Fehlerquelle auszuschließen.
Abschluss
Diese Anleitung gibt einen kurzen Einblick in die Grundzüge der Kryptografie und digitaler Signaturen. Daneben erklärt es dem Benutzer, wie er ein Public Key Verfahren für sich selber umsetzen und einrichten kann. Vollständigkeit sowie Fehlerfreiheit kann nicht garantiert werden.
Rückmeldungen und/oder Fragen senden Sie bitte an GKC_Alex@web.de.
Tutorial in PDF Form




Bereiche
Kategorien
Forum - Computer & Devices





tutorials.de-Systemmitteilung