In dit protocol moeten gebruikers worden geverifieerd. Ze kunnen dit doen met wachtwoorden, bestanden met privé RSA-sleutels, hardwareapparaten zoals Ledger Nano S en Ledger Nano X, enz.
Sommige authenticatiemiddelen zijn veiliger dan andere: het gebruik van een hardwareapparaat dat is ontworpen om een privésleutel op te slaan zonder het mogelijk te maken deze ooit uit te pakken, is veiliger dan het opslaan van de privésleutel in een bestand. Helaas zijn de veiligste ook pijnlijker in het gebruik. Gebruikers die hun sleutels op een apparaat hebben, moeten het apparaat bij zich dragen, moeten hun pincode invoeren telkens wanneer ze een SSH-sessie starten, enz. Dit maakt het behoorlijk moeilijk om manieren te bepleiten die veiliger zijn dan wachtwoorden en bestanden voor gevallen waarin de veiligheid van de toegang is niet de prioriteit.
De vraag is dus: is het mogelijk om het authenticatiemateriaal veiliger op te slaan dan in een bestand (dat door sommige malware kan worden gestolen), zonder de gebruikerservaring te veranderen?
En het antwoord is: ja, met behulp van een TPM!
Een beetje geschiedenis
Sinds geruime tijd kunnen computers rechtstreeks een beveiligingschip inbouwen. Deze chip, genaamd Trusted Platform Module (TPM), biedt vele functies, waaronder de mogelijkheid om privésleutels te beschermen die worden gebruikt in cryptografie met openbare sleutels.
Omdat het is ingebed in computers, is het niet nodig om een apparaat op de computer aan te sluiten om het te gebruiken. Dit wordt daarom als minder veilig beschouwd dan een hardwareapparaat dat op een andere plaats dan de computer kan worden opgeslagen (hierdoor kan het principe worden afgedwongen dat hoewel het apparaat niet op de computer is aangesloten, geen malware de daarin opgeslagen geheimen kan gebruiken).
TPM is dus niet de "beste beveiliging", maar het is nog steeds veel veiliger dan het gebruik van bestanden zoals $HOME/.ssh/id_rsa
privésleutels op te slaan.
Hoe kan TPM worden gebruikt met OpenSSH op Linux? Met een project genaamd tpm2-pkcs11
, volgens de instructies die al vele jaren op veel websites beschikbaar zijn, ook op de officiële documentatie uit de coderepository.
Wat is het nieuws? Deze software is nu eindelijk verpakt in Ubuntu en Debian, waardoor het eindelijk beschikbaar is voor de meeste Linux-gebruikers!
Meer precies is hier een tijdlijn:
- In 2014 zijn de belangrijkste specificaties voor TPM 2.0 gepubliceerd. Om te communiceren met een TPM van de software, was er een standaardisatie-inspanning en werden twee incompatibele softwarestacks gemaakt: die van de Trusted Computing Group (TCG), genaamd TPM-softwarestack (TSS), en die van IBM, ook wel genoemd TPM Software-stack.
- 2018, het project
tpm2-pkcs11
is gemaakt om een PKCS # 11-interface te bieden voor een TPM 2.0, met behulp van TCG's TSS. PKCS # 11 is een standaard die een Application Programming Interface (API) met de naam definieert Cryptoki om tokens te gebruiken die cryptografische sleutels opslaan. Omdat OpenSSH het gebruik van een PKCS # 11-interface ondersteunde om gebruikersauthenticatie uit te voeren, maakte dit het gebruik van TPM mogelijk om de sleutels op te slaan die worden gebruikt voor SSH-authenticatie. - In februari 2019,
tpm2-pkcs11
werd toegevoegd aan Fedora 29. - In september 2019 is CentOS 8 uitgebracht met dit pakket.
- In april 2020,
tpm2-pkcs11
werd toegevoegd aan Debian sid. Helaas stond het programma er niet bijtpm2_ptool
wat nodig is om eenvoudig sleutels te maken. Dit probleem is gemeld in Debian-bug #968310. - In januari 2021 was het pakket van Debian vast (en de beheerder erkende mijn hulp!).
- In april 2021 verschijnt Ubuntu 21.04 Hirsute nijlpaard werd uitgebracht met het vaste pakket.
- In augustus 2021, Debian 11 Bullseye werd uitgebracht met het vaste pakket
Nu tpm2-pkcs11
is beschikbaar op Debian, Ubuntu en verschillende andere Linux-distributies die worden vermeld op Repologie.
Gebruik tpm2-pkcs11
Op Debian 11 volgen hier de stappen om een nieuwe SSH-sleutel te genereren en te gebruiken die veilig is opgeslagen door de TPM:
- Opdracht installeren
tpm2_ptool
en bibliotheeklibtpm2_pkcs11.so.1
, die worden geleverd door twee pakketten:
2. Controleer of het systeem een TPM 2.0 kan gebruiken. Als een van de volgende controles mislukt, kan dit betekenen dat het systeem geen TPM heeft, of een TPM 1.2 heeft, of een TPM 2.0 heeft die is uitgeschakeld in de BIOS-instellingen:
3. Voeg de huidige gebruiker toe aan de groep die toegang heeft tot het TPM-apparaat /dev/tpmrm0
. Op Debian en Ubuntu moeten gebruikers tot een groep behoren met de naam tss
(dankzij de configuratie geleverd door tpm-udev
pakket). De volgende opdracht voegt de huidige gebruiker toe aan deze groep:
Initialiseer een gebruikersarchief, beveiligd met een wachtwoord en een SOPIN en maak een sleutel, bijvoorbeeld een Elliptic Curve-sleutel op de curve met de naam "NIST P-256" (ook bekend als "secp256r1"):
4. Het acroniem SOPIN middel Persoonlijk identificatienummer van de beveiligingsbeambte en is een concept uit de specificatie van PKCS#11. In eenvoudige gebruikssituaties kan het worden gezien als een "herstelwachtwoord" waarmee het wachtwoord kan worden gewijzigd wanneer het bijvoorbeeld verloren is gegaan.
5. Geef de openbare sleutel van deze nieuwe sleutel weer:
6. Configureer de nieuwe publieke sleutel in een server, bijvoorbeeld door deze in te schrijven $HOME/.ssh/authorized_keys
of in de accountinstellingen van GitHub of op een andere locatie waar openbare SSH-sleutels worden gebruikt.
7. Configureer de te gebruiken SSH-client tpm2-pkcs11
om verbinding te maken met de server, bijvoorbeeld door dit in te schrijven $HOME/.ssh/config
(kant van de cliënt):
Maak verbinding met de server (NB de vorige stap kan worden overgeslagen:
Toekomstwerk
In de vorige sectie is beschreven hoe u een nieuwe sleutel in de TPM kunt maken. Hoewel dit het gebruik van een TPM mogelijk maakt om SSH-authenticatie te beschermen, zijn er twee functies die nodig zijn om dit een echt alternatief te maken voor het gebruik van bestanden om privésleutels op te slaan:
- Functie #1: bestaande SSH-sleutels importeren in een TPM in plaats van nieuwe te maken (wat een soepele overgang naar TPM-opslag mogelijk maakt, een back-up van de sleutels maakt, voor het geval de computer kapot gaat of verloren gaat, enz.).
- Functie #2: SSH-sleutels gebruiken zonder wachtwoord, zoals onbeveiligde privésleutelbestanden (deze functie is veiliger dan sleutelbestanden omdat de beveiligde sleutel niet kan worden geëxtraheerd uit de TPM).
Ik heb beide functies erin geïmplementeerd tpm2-pkcs11
en diende ze in Pull Requests in #681 en #695. Feature #1 werd in mei ook gepresenteerd tijdens de wekelijkse online call van tpm.dev-gemeenschap en de opname is beschikbaar op https://developers.tpm.dev/posts/14389750.
Beide functies zullen dus waarschijnlijk beschikbaar komen in een toekomstige versie van tpm2-pkcs11
.
Trouwens, voor nieuwsgierige lezers die de binnenkant van willen begrijpen tpm2-pkcs11
, publiceerde ik een artikel over hen op de SSTIC 2021-conferentie, genaamd SSH-authenticatie beschermen met TPM 2.0 (artikel in het Engels, presentatie in het Frans). Bovendien kunnen lezers die dingen willen proberen zonder een echte TPM aan te raken, geïnteresseerd zijn in de sectie "Een TPM 2.0 emuleren" van dit artikel.
(Illustratie: Rainer Knäpper, gratis kunstlicentie)
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- PlatoAiStream. Web3 gegevensintelligentie. Kennis versterkt. Toegang hier.
- De toekomst slaan met Adryenn Ashley. Toegang hier.
- Koop en verkoop aandelen in PRE-IPO-bedrijven met PREIPO®. Toegang hier.
- Bron: https://www.ledger.com/blog/ssh-with-tpm
- : heeft
- :is
- :niet
- :waar
- $UP
- 1
- 11
- 13
- 14
- 15%
- 2014
- 2018
- 2019
- 2020
- 2021
- 30
- 8
- 80
- a
- vermogen
- in staat
- Over
- toegang
- Account
- erkend
- toevoegen
- toegevoegd
- Voegt
- advocaat
- ook
- alternatief
- an
- en
- beantwoorden
- elke
- api
- Aanvraag
- April
- ZIJN
- Kunst
- dit artikel
- AS
- At
- Augustus
- geverifieerd
- authenticatie
- Beschikbaar
- steun
- BE
- worden
- geweest
- zowel
- Kapot
- Bug
- maar
- by
- Bellen
- CAN
- kan niet
- dragen
- geval
- gevallen
- CGI
- veranderende
- controle
- Controles
- spaander
- klant
- code
- computer
- computers
- computergebruik
- concept
- Conferentie
- Configuratie
- Verbinden
- gekoppeld blijven
- beschouwd
- kon
- en je merk te creëren
- aangemaakt
- Wij creëren
- cryptografische
- geheimschrift
- nieuwsgierig
- Actueel
- curve
- definieert
- ontworpen
- Dev
- apparaat
- systemen
- DEED
- anders
- moeilijk
- direct
- invalide
- Display
- Uitkeringen
- do
- documentatie
- doet
- gedurende
- gemakkelijk
- inspanning
- Elliptische
- insluiten
- ingebed
- ingeschakeld
- maakt
- afdwingen
- Engels
- etc
- OOIT
- Alle
- voorbeeld
- bestaand
- ervaring
- extract
- mislukt
- Kenmerk
- Voordelen
- Februari
- Dien in
- Bestanden
- Tot slot
- vast
- volgend
- Voor
- Gratis
- Frans
- oppompen van
- toekomst
- voortbrengen
- GitHub
- Groep
- Hardware
- hardware apparaat
- hardware-apparaten
- Hebben
- hier
- Hoe
- How To
- HTML
- http
- HTTPS
- i
- IBM
- Identificatie
- if
- geïmplementeerd
- importeren
- in
- Inclusief
- onverenigbaar
- beginnen
- verkrijgen in plaats daarvan
- instructies
- interactie
- geïnteresseerd
- Interface
- in
- kwestie
- IT
- HAAR
- Januari
- Januari 2021
- jpg
- sleutel
- toetsen
- bekend
- Grootboek
- Ledger Nano
- Ledger Nano S
- Ledger Nano X
- minder
- als
- Waarschijnlijk
- linux
- opgesomd
- plaats
- verloren
- Hoofd
- maken
- MERKEN
- maken
- malware
- veel
- materiaal
- max-width
- Mei..
- gemiddelde
- middel
- module
- meer
- Bovendien
- meest
- veel
- my
- Genoemd
- nano
- noodzakelijk
- Noodzaak
- nodig
- New
- nieuws
- geen
- nu
- of
- Officier
- on
- EEN
- degenen
- online.
- or
- bestellen
- Overige
- Overig
- pakket
- verpakt
- Paketten
- pijnlijk
- Wachtwoord
- wachtwoorden
- uitvoeren
- persoonlijk
- plaats
- platform
- Plato
- Plato gegevensintelligentie
- PlatoData
- stekker
- mogelijk
- Precies
- presentatie
- gepresenteerd
- vorig
- principe
- prioriteit
- privaat
- private Key
- Privésleutels
- Programming
- project
- beschermen
- beschermd
- beschermen
- protocol
- zorgen voor
- mits
- biedt
- publiek
- public Key
- openbare sleutels
- gepubliceerde
- vraag
- lezers
- vast
- opname
- los
- uitgebracht
- gemeld
- nodig
- rsa
- s
- sectie
- beveiligen
- vast
- veiligheid
- gezien
- September
- Sessie
- settings
- verscheidene
- kant
- Eenvoudig
- So
- Software
- sommige
- specificatie
- specificaties
- Stacks
- standaard
- Stap voor
- Stappen
- Still
- gestolen
- mediaopslag
- shop
- opgeslagen
- ingediend
- dergelijk
- ondersteunde
- system
- neem contact
- bedankt
- dat
- De
- De wekelijkse
- hun
- Ze
- Er.
- daarom
- ze
- spullen
- dit
- niet de tijd of
- tijdlijn
- naar
- tokens
- aandoenlijk
- overgang
- vertrouwde
- proberen
- twee
- type dan:
- Ubuntu
- begrijpen
- helaas
- .
- gebruikt
- Gebruiker
- Gebruikerservaring
- gebruikers
- gebruik
- willen
- was
- Manier..
- manieren
- websites
- per week
- waren
- wanneer
- welke
- en
- WIE
- Met
- zonder
- het schrijven van
- X
- jaar
- ja
- zephyrnet