tutorials.de Buch-Aktion 05/2012
  • Public Key Verfahren - SSH Login ohne Passworteingabe

    Einleitung und Theorie

    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
    Wer noch nicht mit SSH gearbeitet hat, sollte sich zuerst mit den Grundlagen vertraut machen!


    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
    Hinweis: Alle Abfragen einfach mit ENTER bestätigen, siehe Bild unten



    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
    Den Public Key installieren

    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
    Verbindung testen

    Führen Sie folgende Befehle aus:
    • exit
      Beendet die SSH Sitzung auf dem Zielserver
    • ssh (((zielserver)))
      Baut eine SSH Verbindung zu (((zielserver))) auf
    Erscheint keine Passwortabfrage, hat die Einrichtung funktioniert. Falls es nicht funktioniert hat, versuchen Sie die Tipps im nächsten Abschnitt.



    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
     


    Kommentare 3 Kommentare
    1. Avatar von RudolfG
      RudolfG -
      Hi Alex,

      eine Sache ist mir noch nicht so ganz klar bzw. kann laut meinem Verständnis nicht so wirklich sein.

      A wendet die Hashfunktion auf die Nachricht an und verschlüsselt mit seinem privaten Schlüssel den Hashwert.

      ...
      B entschlüsselt den Hashwert mit seinem öffentlichen Schlüssel
      B kann doch nicht mit seinem öffentlichen Schlüssel das entschlüsseln, was A mit seinem privaten Schlüssel verschlüsselt hat! Oder vielleicht habe ich den Teil darunter also den folgenden Block nicht richtig verstanden:

      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.
      Was genau mit ".. und nur dieser auf diesen passt" gemeint ist, habe ich noch nicht richtig verstanden.

      Ansonsten ein echt super Artikel. Vielen Dank

      Gruß
      RudolfG
    1. Avatar von Matt297
      Matt297 -
      Zitat Zitat von RudolfG Beitrag anzeigen
      B kann doch nicht mit seinem öffentlichen Schlüssel das entschlüsseln, was A mit seinem privaten Schlüssel verschlüsselt hat!
      Doch, das geht. Was mit dem öffentlichen Schlüssel verschlüsselt wird, kann nur mit dem zugehörigen privaten Schlüssel entschlüsselt werden und andersrum genauso. In der Praxis, sprich bei einer SSH-Session ist es aber so, dass wenn A B eine Nachricht senden will, A die Nachricht mit B's öffentlichem verschlüsselt und dann nur B mit seinem (hoffentlich) privatem Schlüssel entschlüsseln kann.
      Wie gesagt, es geht auch andersrum, aber der Sinn des Öffentlichen Schlüssels ist ja, dass er von jedem zugänglich sein kann ohne das die Sicherheit beeinträchtigt ist. Wenn dann A die Nachricht mit seinem privaten Schlüssel VERschlüsseln würde, könnte sie jeder theoretisch entschlüsseln.

      Ich hoffe, dass ich dir helfen konnte.
    1. Avatar von Alex Duschek
      Alex Duschek -
      Hallo,

      ich muss zugeben, der Satz ist vielleicht etwas schlecht formuliert, den sollte ich überarbeiten.

      Asymmetrische Kryptografieverfahren basieren auf dem Prinzip eines privaten und eines öffentlichen Schlüssels. Der öffentliche Schlüssel kann aus dem privaten generiert und frei verteilt werden.

      Mit einem privaten Schlüssel können Nachrichten, die mit einem öffentlichen Schlüssel verschlüsselt wurden, entschlüsselt werden => garantierte Geheimhaltung!

      Mit einem öffentlichen Schlüssel können Nachrichten, die mit einem privaten Schlüssel verschlüsselt wurden, entschlüsselt werden => der Empfänger kann sicher sein, dass der Sender authentisch ist!

      Bei Angriffen, in denen eine dritte Partei versucht, die Kommunikationswege zu infiltieren und Nachrichten zu lesen oder zu verändern, verhindert das Schema deren Erfolg.

      Dafür müssen aber 2 Annahmen als erfüllt vorausgesetzt werden:
      • Der private Schlüssel wurde nicht an Dritte weitergegeben
      • Die Verschlüsselung wurde nicht geknackt

      Ich hoffe, ich konnte etwas mehr Klarheit verschaffen
    Kommentare Kommentar schreiben

    Klicke hier, um dich anzumelden

    Wie heißt die Hauptstadt der Bundesrepublik Deutschland?