EMZETT.
Login

Öffentlicher Schlüssel

Öffentlicher Schlüssel Bild: Stern, Public domain, Wikimedia Commons

Kurz: Der Teil eines asymmetrischen Schlüsselpaars, der frei verteilt werden kann und zum Verschlüsseln von Nachrichten oder Prüfen von Signaturen dient. Synonym: Public Key.

Genauer: Anders als bei symmetrischer Verschlüsselung muss der öffentliche Schlüssel nicht geheim gehalten werden — im Gegenteil, er wird bewusst veröffentlicht (z. B. in einem Zertifikat). Was mit dem öffentlichen Schlüssel verschlüsselt wurde, kann nur mit dem zugehörigen privaten Schlüssel entschlüsselt werden, und umgekehrt lässt sich eine mit dem privaten Schlüssel erstellte Signatur mit dem öffentlichen Schlüssel prüfen.

Im Detail

Ein öffentlicher Schlüssel im OpenSSH-Format sieht so aus (aus Datei id_ed25519.pub):

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGx8... nutzer@rechner

Diese Zeile kann bedenkenlos überall geteilt werden — z. B. in ein GitHub-Profil eingetragen oder auf einen Server kopiert. Sie allein ermöglicht KEINEN Zugriff auf irgendetwas — ein Angreifer, der nur den öffentlichen Schlüssel kennt, kann damit weder eine Verbindung aufbauen noch verschlüsselte Nachrichten lesen, sondern höchstens neue Nachrichten AN den Besitzer des passenden privaten Schlüssels verschlüsseln oder dessen Signaturen verifizieren.

Öffentliche Schlüssel werden typischerweise in einem von zwei Kontexten sichtbar: eingebettet in ein Zertifikat (das zusätzlich Identität und eine vertrauenswürdige Signatur mitliefert, z. B. bei TLS) oder “roh”, ohne weitere Beglaubigung, wie bei SSH-Schlüsseln — dort verlässt man sich beim ersten Verbindungsaufbau meist auf “Trust on First Use” (der Fingerabdruck wird beim ersten Kontakt gespeichert und bei jeder weiteren Verbindung verglichen, statt eine vollständige Zertifikatskette zu prüfen).

Das Verteilungsproblem, das öffentliche Schlüssel lösen

Vor der Erfindung asymmetrischer Kryptografie (siehe Asymmetrische Verschlüsselung) mussten zwei Parteien, die verschlüsselt kommunizieren wollten, zunächst auf einem bereits sicheren Weg einen gemeinsamen geheimen Schlüssel austauschen — ein Henne-Ei-Problem, wenn noch gar kein sicherer Kanal existiert. Der öffentliche Schlüssel löst dieses Problem elegant, weil er per Definition NICHT geheim sein muss: Man kann ihn über einen völlig unsicheren, öffentlich einsehbaren Kanal (E-Mail, Website, sogar laut vorgelesen am Telefon) übertragen, ohne dass ein Mithörer damit irgendetwas anfangen könnte außer selbst verschlüsselte Nachrichten AN den rechtmäßigen Empfänger zu senden.

Trust on First Use im Detail

Das “Trust on First Use”-Prinzip (TOFU), das SSH standardmäßig nutzt, hat eine bekannte Schwachstelle: Beim allerersten Verbindungsaufbau zu einem Server hat der Client keine unabhängige Möglichkeit zu prüfen, ob der präsentierte öffentliche Schlüssel wirklich vom echten Server stammt oder von einem Angreifer untergeschoben wurde (Man-in-the-Middle bei der ersten Verbindung). SSH-Clients zeigen deshalb bei der ersten Verbindung eine Warnung mit dem Fingerprint des Schlüssels an und fragen explizit nach Bestätigung — sicherheitsbewusste Administratoren vergleichen diesen Fingerprint über einen unabhängigen Kanal (z. B. eine interne Dokumentation), statt ihn blind zu akzeptieren. Bei ALLEN weiteren Verbindungen prüft SSH automatisch, ob sich der Schlüssel seit dem ersten Kontakt geändert hat — eine plötzliche Änderung löst eine deutliche Warnung aus, weil das entweder auf einen legitimen Server-Neuaufbau oder auf einen aktiven Angriff hindeuten kann.

Schlüssellängen und Algorithmen im Vergleich

Je nach verwendetem Algorithmus unterscheidet sich die typische Größe eines öffentlichen Schlüssels erheblich: Ein RSA-Schlüssel mit 4096 Bit ist deutlich länger und langsamer zu verarbeiten als ein moderner Ed25519-Schlüssel (elliptische Kurven, feste 256 Bit), der bei vergleichbarer Sicherheit erheblich kompakter ist — ein Grund, warum ssh-keygen -t ed25519 heute gegenüber dem älteren RSA-Standard empfohlen wird, sowohl für schnellere Verbindungsaufbauten als auch für kürzere, leichter handhabbare Schlüsseldateien.

Siehe auch: Public Key, Private Key, Asymmetrische Verschlüsselung