Die Public Key Infrastructure (PKI) ist ein Framework, das asymmetrische Verschlüsselung verwendet, um sichere Kommunikation zu ermöglichen. Bei der asymmetrischen Verschlüsselung gibt es zwei Schlüssel: einen privaten Schlüssel (Private Key), der geheim bleibt, und einen öffentlichen Schlüssel (Public Key), der frei zugänglich ist. Nachrichten, die mit dem Public Key verschlüsselt werden, können nur mit dem Private Key entschlüsselt werden und umgekehrt.
PKI bietet Integrität, Vertraulichkeit und Authentifizierung, indem sie es ermöglicht, Nachrichten sicher zu signieren und zu verschlüsseln.
GitLab nutzt ein Public Key-basiertes Authentifizierungssystem, um sichere Zugriffe auf das Repository zu ermöglichen. Benutzer generieren ein Schlüsselpaar (Public und Private Key) und hinterlegen den Public Key in ihrem GitLab-Account. Wenn sich der Benutzer verbindet, wird der Public Key gegen den hinterlegten Schlüssel abgeglichen, und nur der Besitzer des passenden Private Keys erhält Zugang.
Die Erstellung eines Key-Pairs kann mit Tools wie
ssh-keygen
erfolgen. Hier wird ein Public-Private-Key-Pair
generiert:
ssh-keygen -t rsa -b 4096
Der Public Key wird in GitLab hochgeladen, während der Private Key sicher auf dem System bleibt. Der SSH Agent kann verwendet werden, um den Private Key für eine Sitzung im Speicher zu behalten und sich automatisch bei Systemen anzumelden.
Base64-Encoding wird verwendet, um binäre Daten in Text umzuwandeln, der sicher übertragen und in Textform gespeichert werden kann. Dies ist besonders nützlich für das Clipboard und Protokolle, die nur textbasierte Daten akzeptieren. Das PEM-Format (Privacy-Enhanced Mail) nutzt Base64-Encoding und spezielle Header, um Schlüssel und Zertifikate in einer plattformunabhängigen Form zu speichern.
Da Base64-Encoding textbasiert ist, können Public Keys einfach über das Clipboard kopiert und in GitLab eingefügt werden. GitLab bietet in den Benutzereinstellungen eine einfache Möglichkeit, den Public Key zu hinterlegen, um ihn für SSH-Authentifizierungen zu verwenden.