Authentifizierung und Verschlüsselung basieren in SSH auf dem asymmetrischen System der öffentlichen und privaten Schlüssel. Ver- und Entschlüsselung werden mit verschiedenen Schlüsseln durchgeführt. Dabei ist es nicht möglich, den Schlüssel für die Entschlüsselung von demjenigen für die Verschlüsselung herzuleiten. Zu diesem Zweck generiert der Benutzer ein Schlüsselpaar, das aus einem öffentlichen und einem privaten Schlüssel besteht. Der öffentliche Schlüssel ist zur Weitergabe an andere Benutzer gedacht, wohingegen der private Schlüssel vom Benutzer nicht weitergegeben wird.
Die beiden Schlüssel werden auf folgende Art benutzt:
Authentifizierung
Bei der Anmeldung eines Benutzers an einem remote System erzeugt dieses System eine Zufallszahl, verschlüsselt sie mit dem öffentlichen Schlüssel des Benutzers und sendet sie an das lokale System zurück. Zur Entschlüsselung dieser kodierten Zufallszahl ist der passende private Schlüssel erforderlich; das entschlüsselte Datum wird nun an das remote System zurückgeschickt und dort geprüft, dadurch authentisiert sich der Besitzer dieses privaten Schlüssels.
Mit dem privaten Schlüssel können Signaturen (z.B. für eine digitale Unterschrift) erzeugt werden. Eine mit einem privaten Schlüssel erzeugte Signatur kann von niemandem nachgemacht werden, der diesen Schlüssel nicht besitzt.
Jeder, der den dazugehörigen öffentlichen Schlüssel besitzt, kann verifizieren, dass eine Signatur echt ist.
Verschlüsselung
Der öffentliche Schlüssel kann auch dazu benutzt werden, eine Nachricht an jemanden, der den dazugehörigen privaten Schlüssel besitzt, zu verschlüsseln.
Nur derjenige, der den dazugehörigen privaten Schlüssel besitzt, kann eine solche Nachricht entschlüsseln.
Da der öffentliche Schlüssel nur zum Verschlüsseln einer Nachricht dient, muss – im Gegensatz zum privaten Schlüssel – nicht allzu sehr darauf geachtet werden, dass er nicht in falsche Hände gerät.
Generierung der Schlüssel
Es gibt verschiedene Algorithmen zur Erzeugung solcher Schlüsselpaare; die bekanntesten sind RSA und DSA. Unter Linux werden sie über einen Aufruf des Kommandos ssh-keygen
(siehe http://www.openssh.com) erzeugt. Es kann nur mit RSA-Schlüsseln der Version 2 gearbeitet werden. Die minimale Schlüssellänge beträgt 512 Bits. Generell werden 1024 Bits als ausreichend erachtet. Die erzeugten Schlüssel werden im lokalen Dateisystem abgespeichert:
Die RSA Authentisierungs-Identität wird in der Datei $HOME/.ssh/id_rsa
sowie der öffentliche RSA-Schlüssel in der Datei $HOME/.ssh/id_rsa.pub
abgelegt.
Die DSA Authentisierungs-Identität wird in der Datei $HOME/.ssh/id_dsa
sowie der öffentliche DSA-Schlüssel in der Datei $HOME/.ssh/id_dsa.pub
abgelegt.
Die Generierung der Schlüsselpaare kann auch mittels eines GUI-gestützten Tools erfolgen. Im Abschnitt „PuTTY mit PuTTYgen und Pageant" wird hierfür der Schlüsselgenerator von PuTTY beschrieben.
Verteilung der öffentlichen Schlüssel an die Kommunikationspartner
Im nächsten Konfigurationsschritt muss der Benutzer den öffentlichen Schlüssel in die Datei $HOME/.ssh/authorized_keys
auf allen entfernten Systemen bringen, mit denen er kommunizieren will. Dies kann man z.B. erreichen, indem die lokale Identity-Datei für den öffentlichen Schlüssel zu den entfernten Systemen kopiert wird und ihr Inhalt dort an die Datei $HOME/.ssh/authorized_keys
angehängt wird.
Passphrasen
Der private Schlüssel darf nicht in die falschen Hände geraten. Zu diesem Zweck gibt es einige Schutzmechanismen in SSH. Das Programm ssh
bringt eine Warnung, falls die lokale Identity-Datei von jemand anderem als dem Eigentümer lesbar ist. Bei der Generierung eines Schlüsselpaares kann eine Passphrase vereinbart werden. Diese Passphrase dient zur Ver- und Entschlüsselung des privaten Schlüssels beim Schreiben in die bzw. Lesen aus der Identity-Datei.
Es wird empfohlen, den privaten Schlüssel mit einer Passphrase zu schützen.
Eine Passphrase ist eine Erweiterung des Passworts. Sie kann eine Folge von Worten, Zahlen, Leerzeichen, Interpunktionen oder sonstigen beliebigen Zeichen sein. Gute Passphrasen sind 10 bis 30 Zeichen lang und enthalten eine nicht leicht erratbare Folge von Groß- und Kleinbuchstaben, Zahlen sowie nicht-alphanumerischen Zeichen.
Eine Passphrase wird im Rahmen des Authentifizierungsverfahrens – anders als ein Passwort – nicht an den entfernten Rechner übertragen.
Es gibt keine Möglichkeit, eine verlorene Passphrase wiederzugewinnen. Wenn sie verloren gegangen ist, muss ein neues Schlüsselpaar generiert und sein öffentlicher Schlüssel an die Kommunikationspartner verteilt werden.