{"id":584,"date":"2024-02-19T17:03:46","date_gmt":"2024-02-19T16:03:46","guid":{"rendered":"https:\/\/bsod.wtf\/?post_type=guide&p=584"},"modified":"2024-03-10T18:30:15","modified_gmt":"2024-03-10T17:30:15","slug":"public-key-authentifizierung","status":"publish","type":"guide","link":"https:\/\/bsod.wtf\/guide\/public-key-authentifizierung\/","title":{"rendered":"Public-Key-Authentifizierung: Wie funktioniert das?"},"content":{"rendered":"\n
Die Public-Key-Authentifizierung gilt derzeit als eine der sichersten Methoden f\u00fcr den Login in ein System. Sie ist weitverbreitet in der Welt von SSH und ersetzt damit \u2013 in gewisser Weise \u2013 das Passwort. Im Gegensatz zu letztgenannten meldest du dich mit einem Schl\u00fcssel an. Aber wie funktioniert das Ganze?<\/p>\n\n\n\n
F\u00fcr die Public-Key-Authentifizierung werden zwei Schl\u00fcssel ben\u00f6tigt, ein Public Key und ein Private Key. Stell dir das System wie eine Haust\u00fcr vor, wobei die Haust\u00fcr dein SSH-Server ist. Um hineinzukommen, ben\u00f6tigst du einen Schl\u00fcssel, den nur du besitzt. Das w\u00e4re der Private Key. Diesen steckst du in das Schloss \u2013 das w\u00e4re der Public Key. Er hat seinen Namen nicht von ungef\u00e4hr: Er ist \u201epublic\u201c, also \u00f6ffentlich. Klar, denn das Schloss an deiner T\u00fcr kann ja auch jeder sehen, der vor der T\u00fcr steht.<\/p>\n\n\n\n
Auf dem Server ist es so \u00e4hnlich. Du ben\u00f6tigst beide Schl\u00fcssel. Den Public Key hinterlegst du auf dem Server, den Private Key h\u00e4ltst du unter Verschluss, auf deinem eigenen Computer. Du musst daf\u00fcr sorgen, dass Unbefugte niemals Zugriff darauf haben! Andernfalls k\u00f6nnen sie einfach in den Server hineinspazieren. Denn wer den Schl\u00fcssel hat, kann die T\u00fcr \u00f6ffnen.<\/p>\n\n\n\n
Die dahinterliegende Technik nennt sich \u201easymmetrisches Kryptosystem\u201c. Das Verfahren an sich ist ziemlich mathematisch, deshalb gibt es hier \u201ealles, was du wissen musst\u201c.<\/p>\n\n\n\n
Du m\u00f6chtest dich in deinen SSH-Server einloggen. Daf\u00fcr verwendest du einen SSH-Client. Das System funktioniert so, dass sich der Server eine Nachricht ausdenkt und diese mit dem hinterlegten Public Key verschl\u00fcsselt. Die verschl\u00fcsselte Nachricht sendet er an den Client. Dieser kann dank des Private Keys die Nachricht entschl\u00fcsseln und entsprechend darauf reagieren. Da die Antwort des Clients zur verschl\u00fcsselten Nachricht des Servers passt, kann der SSH-Server daraus schlussfolgern, dass du den privaten Schl\u00fcssel besitzt und damit offensichtlich zugangsberechtigt bist.<\/p>\n\n\n\n
In der Mathematik nennt man den Mechanismus, der hier zum Einsatz kommt, eine \u201eFallt\u00fcr- oder Einwegfunktion<\/a>\u201c. Diese zeichnet sich dadurch aus, dass eine Funktion leicht zu berechnen, aber ohne Kenntnis eines Geheimnisses nicht umkehrbar ist. Die Beschreibung der Funktion ist der \u00f6ffentliche Schl\u00fcssel, das Geheimnis ist der private Schl\u00fcssel.<\/p>\n\n\n\n Damit das Ganze funktioniert und sicher ist, muss definitionsgem\u00e4\u00df klar sein, dass es keinen Weg gibt, aus dem \u00f6ffentlichen Schl\u00fcssel den privaten zu berechnen. Nat\u00fcrlich ist nichts tats\u00e4chlich unm\u00f6glich: Gen\u00fcgend Rechenleistung vorausgesetzt, l\u00e4sst sich nat\u00fcrlich der Private Key aus dem Public Key erzeugen. Strenggenommen handelt es sich auch nicht um eine Berechnung, sondern um das stumpfe Durchprobieren aller m\u00f6glichen Kombinationen (\u201eBruteforce\u201c), bis der richtige Wert gefunden ist. Dem kann man jedoch mit einem hinreichend langen Schl\u00fcssel entgegenwirken, sodass die Prozedur derart viel Rechenleistung und vor allem trotzdem Zeit in Anspruch nimmt, dass das Unterfangen nicht praktikabel ist.<\/p>\n\n\n\n Der Vollst\u00e4ndigkeit halber sei noch erw\u00e4hnt, dass die Funktionsweise \u201edie beste, die wir haben\u201c ist. Es ist mathematisch bisher nicht bewiesen, ob die verwendeten Algorithmen den Anforderungen an Einwegfunktionen entsprechen. Es gibt momentan nicht den Beweis, dass es \u00fcberhaupt<\/em> derlei Funktionen gibt. Was es jedoch gibt, ist die bislang erfolglose Suche nach einer Umkehrung des Algorithmus sowie zahllose \u00dcberlegungen, warum es \u201ewahrscheinlich\u201c keine Umkehrung gibt.<\/p>\n\n\n\n Wie so h\u00e4ufig in der Kryptografie geht es in dem Thema weniger darum, ob<\/em> das Verfahren wirklich sicher ist, sondern viel mehr, wann<\/em> es geknackt werden kann. Momentan gilt es noch als sicher, denn wenn die Schl\u00fcssel korrekt erzeugt wurden, ist kein Weg bekannt, der schneller zu einer Umkehrung f\u00fchrt als Bruteforce.<\/p>\n\n\n\n F\u00fcr eine Zugangskontrolle, wie in einem SSH-Server, ist dies gut genug<\/em>. Wenn es ein Angreifer wirklich<\/em> darauf anlegen will, an die verschl\u00fcsselten Inhalte zu kommen, h\u00e4tte er die M\u00f6glichkeit, den Datenverkehr in seiner verschl\u00fcsselten Form aufzuzeichnen. Dann h\u00e4tte er gewisserma\u00dfen beliebig viel Zeit zum Entschl\u00fcsseln. Da dies mit einem hinreichend sicheren Schl\u00fcssel und momentan verf\u00fcgbarer Rechenleistung aktuell Jahre (oder Jahrzehnte) dauert, ist der Fall in der Praxis weitestgehend irrelevant. Denn auch wenn es einem Angreifer gelingen sollte, die Informationen aus der Kommunikation mit dem SSH-Server zu entschl\u00fcsseln, sind die Informationen bedeutungslos. Der Angreifer k\u00f6nnte zwar nachvollziehen, ob und wann du deine Linux-Distribution aktualisiert hast, aber bis die Entschl\u00fcsselung erfolgreich war, existiert der Server vermutlich schon gar nicht mehr. Es ist also dennoch nicht m\u00f6glich, dass der Angreifer Zugriff auf deinen Server erlangt.<\/p>\n\n\n\n Neben der Zugangskontrolle f\u00fcr einen SSH-Server findet der beschriebene Mechanismus noch in weiteren Bereichen der IT Anwendung. Am weitesten verbreitet ist dabei vermutlich die \u00dcbertragungsverschl\u00fcsselung bei Webseiten \u00fcber HTTPS. Auch in E-Mails l\u00e4sst sich das Ganze verwenden; die Stichw\u00f6rter sind hier OpenPGP und S\/MIME.<\/p>\n","protected":false},"excerpt":{"rendered":" Die Public-Key-Authentifizierung gilt derzeit als eine der sichersten Methoden f\u00fcr den Login in ein System. Sie ist weitverbreitet in der Welt von SSH und ersetzt damit \u2013 in gewisser Weise \u2013 das Passwort. Im Gegensatz zu letztgenannten meldest du dich mit einem Schl\u00fcssel an. Aber wie funktioniert das Ganze? Public Key und Private Key F\u00fcr … Weiterlesen …<\/a><\/p>\n","protected":false},"author":1,"featured_media":641,"comment_status":"open","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"tags":[25,24,23],"guide-category":[18,17],"class_list":["post-584","guide","type-guide","status-publish","has-post-thumbnail","hentry","tag-private-key","tag-public-key","tag-ssh","guide-category-administration","guide-category-linux"],"acf":[],"yoast_head":"\nBewiesen ist nichts \u2013 aber ziemlich wahrscheinlich<\/h2>\n\n\n\n
Die Frage ist nicht, ob es geknackt wird \u2013 sondern wann<\/h3>\n\n\n\n
Wo wird das Verfahren noch eingesetzt?<\/h2>\n\n\n\n