In diesem Protokoll müssen Benutzer authentifiziert werden. Sie können dies mit Passwörtern, Dateien mit privaten RSA-Schlüsseln, Hardwaregeräten wie Ledger Nano S und Ledger Nano X usw. tun.
Einige Authentifizierungsmittel sind sicherer als andere: Die Verwendung eines Hardwaregeräts, das einen privaten Schlüssel speichert, ohne dass dieser jemals extrahiert werden kann, ist sicherer als das Speichern des privaten Schlüssels in einer Datei. Leider ist die Verwendung der sichersten Modelle auch schmerzhafter. Benutzer, die ihre Schlüssel auf einem Gerät haben, müssen das Gerät bei sich tragen, müssen ihren PIN-Code jedes Mal eingeben, wenn sie eine SSH-Sitzung starten usw. Dies macht es ziemlich schwierig, sicherere Methoden als Passwörter und Dateien für Anwendungsfälle zu empfehlen, in denen … Die Sicherheit des Zugangs steht nicht im Vordergrund.
Die Frage ist also: Ist es möglich, das Authentifizierungsmaterial sicherer zu speichern als in einer Datei (die von Malware gestohlen werden kann), ohne das Benutzererlebnis zu beeinträchtigen?
Und die Antwort lautet: Ja, mit einem TPM!
Ein bisschen Geschichte
Seit geraumer Zeit gibt es in Computern die Möglichkeit, einen Sicherheitschip direkt einzubetten. Dieser Chip mit dem Namen Trusted Platform Module (TPM) bietet viele Funktionen, einschließlich der Möglichkeit, private Schlüssel zu schützen, die in der Public-Key-Kryptografie verwendet werden.
Da es in Computer integriert ist, ist es nicht erforderlich, ein Gerät an den Computer anzuschließen, um es zu verwenden. Dies gilt daher als weniger sicher als ein Hardwaregerät, das an einem anderen Ort als dem Computer gespeichert werden kann (dies ermöglicht die Durchsetzung des Grundsatzes, dass, solange das Gerät nicht mit dem Computer verbunden ist, keine Malware die darin gespeicherten Geheimnisse nutzen kann).
TPM ist also nicht die „beste Sicherheit“, aber es ist immer noch viel sicherer als die Verwendung von Dateien wie z $HOME/.ssh/id_rsa
um private Schlüssel zu speichern.
Wie kann TPM mit OpenSSH unter Linux verwendet werden? Mit einem Projekt namens tpm2-pkcs11
Befolgen Sie dabei die Anweisungen, die seit vielen Jahren auf vielen Websites verfügbar sind, darunter auch auf der offizielle Dokumentation aus seinem Code-Repository.
Was gibt es Neues? Diese Software ist nun endlich in Ubuntu und Debian verpackt, wodurch sie endlich für die meisten Linux-Benutzer verfügbar ist!
Genauer gesagt hier eine Zeitleiste:
- Im Jahr 2014 wurden die wesentlichen Spezifikationen für TPM 2.0 veröffentlicht. Um mit einem TPM aus der Software heraus zu interagieren, gab es einen Standardisierungsaufwand und es wurden zwei inkompatible Software-Stacks erstellt: der von der Trusted Computing Group (TCG), genannt TPM-Software-Stack (TSS) und das von IBM, auch genannt TPM-Software-Stack.
- Im Jahr 2018 wurde das Projekt
tpm2-pkcs11
wurde erstellt, um mithilfe des TSS von TCG eine PKCS#11-Schnittstelle zu einem TPM 2.0 bereitzustellen. PKCS # 11 ist ein Standard, der eine benannte Anwendungsprogrammierschnittstelle (API) definiert Kryptoki um Token zu verwenden, die kryptografische Schlüssel speichern. Da OpenSSH die Verwendung einer PKCS#11-Schnittstelle zur Durchführung der Benutzerauthentifizierung unterstützte, ermöglichte dies die Verwendung von TPM zum Speichern der für die SSH-Authentifizierung verwendeten Schlüssel. - Im Februar 2019,
tpm2-pkcs11
wurde hinzugefügt Fedora 29. - Im September 2019 wurde CentOS 8 mit diesem Paket veröffentlicht.
- Im April 2020,
tpm2-pkcs11
wurde hinzugefügt Debian sid. Leider war das Programm nicht enthaltentpm2_ptool
Dies ist notwendig, um Schlüssel einfach erstellen zu können. Dieses Problem wurde in gemeldet Debian-Fehler #968310. - Im Januar 2021 wurde Debians Paket veröffentlicht fixiert (und der Betreuer hat meine Hilfe anerkannt!).
- Im April 2021 wurde Ubuntu 21.04 Hirsute Nilpferd wurde mit entlassen das Fixpaket.
- Im August 2021, Debian 11 Bullseye wurde mit entlassen das Fixpaket
tpm2-pkcs11
ist auf Debian, Ubuntu und mehreren anderen aufgeführten Linux-Distributionen verfügbar Repologie.
Verwendung von tpm2-pkcs11
Unter Debian 11 sind hier die Schritte zum Generieren und Verwenden eines neuen SSH-Schlüssels, der sicher vom TPM gespeichert wird:
- Befehl installieren
tpm2_ptool
und Bibliotheklibtpm2_pkcs11.so.1
, die von zwei Paketen bereitgestellt werden:
2. Überprüfen Sie, ob das System ein TPM 2.0 verwenden kann. Wenn eine der folgenden Prüfungen fehlschlägt, kann dies bedeuten, dass das System über kein TPM verfügt, über ein TPM 1.2 verfügt oder über ein TPM 2.0 verfügt, das in den BIOS-Einstellungen deaktiviert ist:
3. Fügen Sie den aktuellen Benutzer der Gruppe hinzu, die auf das TPM-Gerät zugreifen kann /dev/tpmrm0
. Unter Debian und Ubuntu müssen Benutzer einer Gruppe mit dem Namen „ tss
(Dank der Konfiguration bereitgestellt von tpm-udev
Paket). Der folgende Befehl fügt den aktuellen Benutzer dieser Gruppe hinzu:
Initialisieren Sie einen Benutzerspeicher, geschützt durch ein Passwort und a SOPIN und erstellen Sie einen Schlüssel, zum Beispiel einen Elliptic Curve-Schlüssel auf der Kurve mit dem Namen „NIST P-256“ (auch bekannt als „secp256r1“):
4. Das Akronym SOPIN Mittel Persönliche Identifikationsnummer des Sicherheitsbeamten und ist ein Konzept aus der Spezifikation von PKCS#11. In einfachen Anwendungsfällen kann es als „Wiederherstellungspasswort“ angesehen werden, das es ermöglicht, das Passwort zu ändern, wenn es beispielsweise verloren gegangen ist.
5. Zeigen Sie den öffentlichen Schlüssel dieses neuen Schlüssels an:
6. Konfigurieren Sie den neuen öffentlichen Schlüssel auf einem Server, indem Sie ihn beispielsweise einschreiben $HOME/.ssh/authorized_keys
oder in den Kontoeinstellungen von GitHub oder an jedem anderen Ort, an dem öffentliche SSH-Schlüssel verwendet werden.
7. Konfigurieren Sie den zu verwendenden SSH-Client tpm2-pkcs11
um eine Verbindung zum Server herzustellen, beispielsweise indem Sie dies eingeben $HOME/.ssh/config
(Kundenseite):
Stellen Sie eine Verbindung zum Server her (Hinweis: Der vorherige Schritt kann übersprungen werden:
Zukünftige Arbeit
Im vorherigen Abschnitt wurde beschrieben, wie Sie einen neuen Schlüssel im TPM erstellen. Während dies die Verwendung eines TPM zum Schutz der SSH-Authentifizierung ermöglicht, sind zwei Funktionen erforderlich, um dies zu einer echten Alternative zur Verwendung von Dateien zum Speichern privater Schlüssel zu machen:
- Funktion Nr. 1: Importieren vorhandener SSH-Schlüssel in ein TPM, anstatt neue zu erstellen (was einen reibungslosen Übergang zum TPM-Speicher ermöglicht und die Schlüssel sichert, falls der Computer kaputt geht oder verloren geht usw.).
- Funktion Nr. 2: Verwendung von SSH-Schlüsseln ohne Passwort, wie z. B. ungeschützten privaten Schlüsseldateien (diese Funktion ist sicherer als Schlüsseldateien, da der geschützte Schlüssel nicht aus dem TPM extrahiert werden kann).
Ich habe beide Funktionen implementiert tpm2-pkcs11
und übermittelte sie in Pull Requests #681 und #695. Feature Nr. 1 wurde auch im Mai während des wöchentlichen Online-Calls von vorgestellt tpm.dev-Community und die Aufzeichnung ist verfügbar auf https://developers.tpm.dev/posts/14389750.
Beide Funktionen werden daher wahrscheinlich in einer zukünftigen Version von verfügbar sein tpm2-pkcs11
.
Übrigens für neugierige Leser, die das Innere von verstehen wollen tpm2-pkcs11
, ich habe auf der SSTIC 2021-Konferenz einen Artikel darüber veröffentlicht, mit dem Namen Schutz der SSH-Authentifizierung mit TPM 2.0 (Artikel auf Englisch, Präsentation auf Französisch). Darüber hinaus könnte der Abschnitt „Emulation eines TPM 2.0“ dieses Artikels für Leser interessant sein, die Dinge ausprobieren möchten, ohne ein echtes TPM zu berühren.
(Illustration: Rainer Knäpper, Freie Kunstlizenz)
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoAiStream. Web3-Datenintelligenz. Wissen verstärkt. Hier zugreifen.
- Die Zukunft prägen mit Adryenn Ashley. Hier zugreifen.
- Kaufen und verkaufen Sie Anteile an PRE-IPO-Unternehmen mit PREIPO®. Hier zugreifen.
- Quelle: https://www.ledger.com/blog/ssh-with-tpm
- :hast
- :Ist
- :nicht
- :Wo
- $UP
- 1
- 11
- 13
- 14
- 15%
- 2014
- 2018
- 2019
- 2020
- 2021
- 30
- 8
- 80
- a
- Fähigkeit
- Fähig
- Über uns
- Zugang
- Konto
- anerkannt
- hinzufügen
- hinzugefügt
- Fügt
- Anwalt
- ebenfalls
- Alternative
- an
- und
- beantworten
- jedem
- Bienen
- Anwendung
- April
- SIND
- Kunst
- Artikel
- AS
- At
- AUGUST
- authentifiziert
- Authentifizierung
- verfügbar
- Unterstützung
- BE
- werden
- war
- beide
- Gebrochen
- Fehler
- aber
- by
- rufen Sie uns an!
- CAN
- kann keine
- tragen
- Häuser
- Fälle
- CGI
- Ändern
- aus der Ferne überprüfen
- Schecks
- Chip
- Auftraggeber
- Code
- Computer
- Computer
- Computing
- konzept
- Konferenz
- Konfiguration
- Vernetz Dich
- Sie
- betrachtet
- könnte
- erstellen
- erstellt
- Erstellen
- kryptographisch
- Geheimschrift
- neugierig
- Strom
- Kurve
- Definiert
- entworfen
- Entwickler
- Gerät
- Geräte
- DID
- anders
- schwer
- Direkt
- behindert
- Display
- Ausschüttungen
- do
- Dokumentation
- die
- im
- leicht
- Anstrengung
- Elliptisch
- einbetten
- eingebettet
- freigegeben
- ermöglicht
- Durchsetzung
- Englisch
- etc
- ÜBERHAUPT
- Jedes
- Beispiel
- vorhandenen
- ERFAHRUNGEN
- Extrakt
- scheitert
- Merkmal
- Eigenschaften
- Februar
- Reichen Sie das
- Mappen
- Endlich
- fixiert
- Folgende
- Aussichten für
- Frei
- Französisch
- für
- Zukunft
- erzeugen
- GitHub
- Gruppe an
- Hardware
- Hardwaregerät
- Hardwaregeräte
- Haben
- hier
- Ultraschall
- Hilfe
- HTML
- http
- HTTPS
- i
- IBM
- Login
- if
- umgesetzt
- Einfuhr
- in
- Einschließlich
- unvereinbar
- initiieren
- beantragen müssen
- Anleitung
- interagieren
- interessiert
- Schnittstelle
- in
- Problem
- IT
- SEINE
- Januar
- Januar 2021
- jpg
- Wesentliche
- Tasten
- bekannt
- Ledger
- Ledger Nano
- Ledger Nano S
- Ledger Nano X
- weniger
- Gefällt mir
- wahrscheinlich
- linux
- Gelistet
- Standorte
- verloren
- Main
- um
- MACHT
- Making
- Malware
- viele
- Ihres Materials
- max-width
- Kann..
- bedeuten
- Mittel
- Modulen
- mehr
- Zudem zeigt
- vor allem warme
- viel
- my
- Namens
- nano
- notwendig,
- Need
- erforderlich
- Neu
- News
- nicht
- jetzt an
- of
- Offizier
- on
- EINEM
- Einsen
- Online
- or
- Auftrag
- Andere
- Anders
- Paket
- verpackt
- Pakete
- schmerzhaft
- Passwort
- Passwörter
- ausführen
- persönliche
- Ort
- Plattform
- Plato
- Datenintelligenz von Plato
- PlatoData
- Stecker
- möglich
- genau
- presentation
- vorgeführt
- früher
- Prinzip
- Prioritätsliste
- privat
- Private Key
- Private Schlüssel
- Programmierung
- Projekt
- Risiken zu minimieren
- geschützt
- Schutz
- Protokoll
- die
- vorausgesetzt
- bietet
- Öffentlichkeit
- public Key
- öffentliche Schlüssel
- veröffentlicht
- Frage
- Leser
- echt
- Einspielung vor
- Release
- freigegeben
- Berichtet
- falls angefordert
- rsa
- s
- Abschnitt
- Verbindung
- sicher
- Sicherheitdienst
- gesehen
- September
- Sitzung
- Einstellungen
- mehrere
- Seite
- Einfacher
- So
- Software
- einige
- Spezifikation
- Spezifikationen
- Stacks
- Standard
- Schritt
- Shritte
- Immer noch
- gestohlen
- Lagerung
- speichern
- gelagert
- eingereicht
- so
- Unterstützte
- System
- als
- dank
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- Das Wochenblatt
- ihr
- Sie
- Dort.
- deswegen
- vom Nutzer definierten
- fehlen uns die Worte.
- Zeit
- Timeline
- zu
- Tokens
- rührend
- Übergang
- vertraut
- versuchen
- XNUMX
- tippe
- Ubuntu
- verstehen
- Unglücklicherweise
- -
- benutzt
- Mitglied
- Benutzererfahrung
- Nutzer
- Verwendung von
- wollen
- wurde
- Weg..
- Wege
- Webseiten
- wöchentlich
- waren
- wann
- welche
- während
- WHO
- mit
- ohne
- Schreiben
- X
- Jahr
- ja
- Zephyrnet