I denne protokollen må brukere være autentisert. De kan gjøre dette med passord, filer som inneholder private RSA-nøkler, maskinvareenheter som Ledger Nano S og Ledger Nano X, etc.
Noen autentiseringsmetoder er sikrere enn andre: å bruke en maskinvareenhet designet for å lagre en privat nøkkel uten å gjøre det mulig å trekke den ut noen gang, er sikrere enn å lagre den private nøkkelen i en fil. Dessverre er de sikreste også mer smertefulle å bruke. Brukere som har nøklene sine på en enhet, må ha med seg enheten, må skrive inn PIN-koden hver gang de starter en SSH-økt, osv. Dette gjør det ganske vanskelig å foreslå måter som er sikrere enn passord og filer for brukssaker der sikkerheten til tilgangen er ikke prioritet.
Så spørsmålet er: er det mulig å lagre autentiseringsmaterialet sikrere enn i en fil (som kan bli stjålet av noe skadelig programvare), uten å endre brukeropplevelsen?
Og svaret er: ja, ved å bruke en TPM!
Noe historie
I ganske lang tid har datamaskiner vært i stand til å bygge inn en sikkerhetsbrikke direkte. Denne brikken, kalt Trusted Platform Module (TPM), gir mange funksjoner, inkludert muligheten til å beskytte private nøkler som brukes i offentlig nøkkelkryptering.
Siden den er innebygd i datamaskiner, er det ikke nødvendig å koble en enhet til datamaskinen for å bruke den. Dette anses derfor som mindre sikkert enn en maskinvareenhet som kan lagres et annet sted enn datamaskinen (dette gjør det mulig å håndheve prinsippet om at selv om enheten ikke er koblet til datamaskinen, kan ingen skadelig programvare bruke hemmelighetene som er lagret i den).
Så TPM er ikke den "beste sikkerheten", men den er fortsatt mye sikrere enn å bruke filer som f.eks $HOME/.ssh/id_rsa
for å lagre private nøkler.
Hvordan kan TPM brukes med OpenSSH på Linux? Med et prosjekt som heter tpm2-pkcs11
, etter instruksjoner tilgjengelig på mange nettsteder i mange år, inkludert på offisiell dokumentasjon fra kodelageret.
Nå, hva er nyhetene? Denne programvaren er nå endelig pakket i Ubuntu og Debian, noe som gjør den endelig tilgjengelig for de fleste Linux-brukere!
Mer presist her er en tidslinje:
- I 2014 ble hovedspesifikasjonene for TPM 2.0 publisert. For å samhandle med en TPM fra programvaren ble det standardiseringstiltak, og to inkompatible programvarestabler ble opprettet: den fra Trusted Computing Group (TCG), kalt TPM-programvarestabel (TSS), og den fra IBM, også kalt TPM-programvarestabel.
- I 2018 ble prosjektet
tpm2-pkcs11
ble opprettet for å gi et PKCS#11-grensesnitt til en TPM 2.0, ved å bruke TCGs TSS. PKCS # 11 er en standard som definerer et Application Programming Interface (API) kalt Cryptoki å bruke tokens som lagrer kryptografiske nøkler. Ettersom OpenSSH støttet å bruke et PKCS#11-grensesnitt for å utføre brukerautentisering, muliggjorde dette bruk av TPM for å lagre nøklene som ble brukt for SSH-autentisering. - I februar 2019,
tpm2-pkcs11
ble lagt til Fedora 29. - I september 2019 ble CentOS 8 utgitt med denne pakken.
- I april 2020,
tpm2-pkcs11
ble lagt til Debians side. Dessverre inneholdt den ikke programmettpm2_ptool
som er nødvendig for enkelt å lage nøkler. Dette problemet ble rapportert i Debian-feil #968310. - I januar 2021 var Debians pakke fikset (og vedlikeholderen erkjente min hjelp!).
- I april 2021, Ubuntu 21.04 Hirsute flodhest ble løslatt med den faste pakken.
- I august 2021, Debian 11 Bullseye ble løslatt med den faste pakken
Nå tpm2-pkcs11
er tilgjengelig på Debian, Ubuntu og flere andre Linux-distribusjoner oppført på Repologi.
Bruker tpm2-pkcs11
På Debian 11, her er trinnene for å generere og bruke en ny SSH-nøkkel lagret sikkert av TPM:
- Installer kommando
tpm2_ptool
og biblioteklibtpm2_pkcs11.so.1
, som leveres av to pakker:
2. Sjekk at systemet kan bruke en TPM 2.0. Hvis en av følgende kontroller mislykkes, kan det bety at systemet ikke har en TPM, eller har en TPM 1.2, eller har en TPM 2.0 som er deaktivert i BIOS-innstillingene:
3. Legg til gjeldende bruker i gruppen som har tilgang til TPM-enheten /dev/tpmrm0
. På Debian og Ubuntu må brukere tilhøre en gruppe som heter tss
(takket være konfigurasjonen levert av tpm-udev
pakke). Følgende kommando legger den gjeldende brukeren til denne gruppen:
Initialiser en brukerbutikk, beskyttet av et passord og en SOPIN og lag en nøkkel, for eksempel en elliptisk kurvetast på kurven kalt "NIST P-256" (også kjent som "secp256r1"):
4. Akronymet SOPIN midler Sikkerhetsoffisers personlige identifikasjonsnummer og er et konsept fra PKCS#11s spesifikasjon. I enkle brukstilfeller kan det sees på som et "gjenopprettingspassord" som gjør det mulig å endre passordet når det for eksempel har gått tapt.
5. Vis den offentlige nøkkelen til denne nye nøkkelen:
6. Konfigurer den nye offentlige nøkkelen i en server, for eksempel ved å skrive den inn $HOME/.ssh/authorized_keys
eller i GitHubs kontoinnstillinger eller på andre steder der offentlige SSH-nøkler brukes.
7. Konfigurer SSH-klienten som skal brukes tpm2-pkcs11
for å koble til serveren, for eksempel ved å skrive dette inn $HOME/.ssh/config
(klient side):
Koble til serveren (NB det forrige trinnet kan hoppes over:
Fremtidig arbeid
Den forrige delen presenterte hvordan du oppretter en ny nøkkel i TPM. Selv om dette gjør det mulig å bruke en TPM for å beskytte SSH-autentisering, er det to funksjoner som er nødvendige for å gjøre dette til et reelt alternativ til å bruke filer til å lagre private nøkler:
- Funksjon #1: importere eksisterende SSH-nøkler til en TPM i stedet for å lage nye (som muliggjør jevn overgang til TPM-lagring, sikkerhetskopiering av nøklene, i tilfelle datamaskinen blir ødelagt eller tapt, etc.).
- Funksjon #2: bruk av SSH-nøkler uten passord, som ubeskyttede private nøkkelfiler (denne funksjonen er sikrere enn nøkkelfiler ettersom den beskyttede nøkkelen ikke kan trekkes ut fra TPM).
Jeg implementerte begge funksjonene i tpm2-pkcs11
og sendte dem inn i Pull Requests #681 og #695. Funksjon #1 ble også presentert i mai under den ukentlige nettoppkallingen til tpm.dev-fellesskapet og opptaket er tilgjengelig på https://developers.tpm.dev/posts/14389750.
Så begge funksjonene vil sannsynligvis bli tilgjengelige i en fremtidig utgivelse av tpm2-pkcs11
.
Forresten, for nysgjerrige lesere som ønsker å forstå det indre av tpm2-pkcs11
, publiserte jeg en artikkel om dem på SSTIC 2021-konferansen, kalt Beskytte SSH-autentisering med TPM 2.0 (artikkel på engelsk, presentasjon på fransk). Lesere som ønsker å prøve ting uten å berøre en ekte TPM kan dessuten være interessert i avsnittet "Emulering av en TPM 2.0" i denne artikkelen.
(Illustrasjon: Rainer Knäpper, gratis kunstlisens)
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- PlatoAiStream. Web3 Data Intelligence. Kunnskap forsterket. Tilgang her.
- Minting the Future med Adryenn Ashley. Tilgang her.
- Kjøp og selg aksjer i PRE-IPO-selskaper med PREIPO®. Tilgang her.
- kilde: https://www.ledger.com/blog/ssh-with-tpm
- : har
- :er
- :ikke
- :hvor
- $OPP
- 1
- 11
- 13
- 14
- 15%
- 2014
- 2018
- 2019
- 2020
- 2021
- 30
- 8
- 80
- a
- evne
- I stand
- Om oss
- adgang
- Logg inn
- erkjente
- legge til
- la til
- Legger
- advokat
- også
- alternativ
- an
- og
- besvare
- noen
- api
- Søknad
- April
- ER
- Kunst
- Artikkel
- AS
- At
- August
- autentisert
- Autentisering
- tilgjengelig
- backing
- BE
- bli
- vært
- både
- Brutt
- Bug
- men
- by
- ring
- CAN
- kan ikke
- bære
- saken
- saker
- CGI
- endring
- sjekk
- Sjekker
- chip
- kunde
- kode
- datamaskin
- datamaskiner
- databehandling
- konsept
- Konferanse
- Konfigurasjon
- Koble
- tilkoblet
- ansett
- kunne
- skape
- opprettet
- Opprette
- kryptografisk
- kryptografi
- nysgjerrig
- Gjeldende
- skjøger
- definerer
- designet
- dev
- enhet
- Enheter
- gJORDE
- forskjellig
- vanskelig
- direkte
- deaktivert
- Vise
- Distribusjoner
- do
- dokumentasjon
- gjør
- under
- lett
- innsats
- Elliptic
- embed
- innebygd
- aktivert
- muliggjør
- håndheving
- Engelsk
- etc
- NOEN GANG
- Hver
- eksempel
- eksisterende
- erfaring
- trekke ut
- mislykkes
- Trekk
- Egenskaper
- Februar
- filet
- Filer
- Endelig
- fikset
- etter
- Til
- Gratis
- Fransk
- fra
- framtid
- generere
- GitHub
- Gruppe
- maskinvare
- maskinvareenhet
- maskinvareenheter
- Ha
- her.
- Hvordan
- Hvordan
- HTML
- http
- HTTPS
- i
- IBM
- Identifikasjon
- if
- implementert
- importere
- in
- Inkludert
- uforenlig
- initiere
- i stedet
- instruksjoner
- samhandle
- interessert
- Interface
- inn
- utstedelse
- IT
- DET ER
- Januar
- januar 2021
- jpg
- nøkkel
- nøkler
- kjent
- Ledger
- Ledger Nano
- Ledger Nano S
- Hovedbok Nano X
- mindre
- i likhet med
- Sannsynlig
- linux
- oppført
- plassering
- tapte
- Hoved
- gjøre
- GJØR AT
- Making
- malware
- mange
- materiale
- max bredde
- Kan..
- bety
- midler
- moduler
- mer
- Videre
- mest
- mye
- my
- oppkalt
- nano
- nødvendig
- Trenger
- nødvendig
- Ny
- nyheter
- Nei.
- nå
- of
- Offiser
- on
- ONE
- seg
- på nett
- or
- rekkefølge
- Annen
- andre
- pakke
- pakket
- pakker
- smertefullt
- Passord
- passord
- utføre
- personlig
- Sted
- plattform
- plato
- Platon Data Intelligence
- PlatonData
- støpsel
- mulig
- nettopp
- presentasjon
- presentert
- forrige
- prinsipp
- prioritet
- privat
- private Key
- Private nøkler
- Programmering
- prosjekt
- beskytte
- beskyttet
- beskytte
- protokollen
- gi
- forutsatt
- gir
- offentlig
- offentlig Key
- offentlige nøkler
- publisert
- spørsmål
- lesere
- ekte
- innspilling
- slipp
- utgitt
- rapportert
- påkrevd
- rsa
- s
- Seksjon
- sikre
- sikkert
- sikkerhet
- sett
- September
- Session
- innstillinger
- flere
- side
- Enkelt
- So
- Software
- noen
- spesifikasjon
- spesifikasjoner
- Stabler
- Standard
- Trinn
- Steps
- Still
- stjålet
- lagring
- oppbevare
- lagret
- innsendt
- slik
- Støttes
- system
- enn
- Takk
- Det
- De
- Ukebladet
- deres
- Dem
- Der.
- derfor
- de
- ting
- denne
- tid
- tidslinje
- til
- tokens
- berøre
- overgang
- klarert
- prøve
- to
- typen
- Ubuntu
- forstå
- dessverre
- bruke
- brukt
- Bruker
- Brukererfaring
- Brukere
- ved hjelp av
- ønsker
- var
- Vei..
- måter
- nettsteder
- ukentlig
- var
- når
- hvilken
- mens
- HVEM
- med
- uten
- skriving
- X
- år
- ja
- zephyrnet