I denne protokol skal brugere være godkendt. De kan gøre dette med adgangskoder, filer, der indeholder private RSA-nøgler, hardwareenheder som Ledger Nano S og Ledger Nano X osv.
Nogle godkendelsesmidler er mere sikre end andre: at bruge en hardwareenhed, der er designet til at gemme en privat nøgle uden at gøre det muligt nogensinde at udpakke den, er mere sikkert end at gemme den private nøgle i en fil. Desværre er de mest sikre også mere smertefulde at bruge. Brugere, der har deres nøgler på en enhed, skal have enheden med sig, skal indtaste deres PIN-kode, hver gang de starter en SSH-session osv. Dette gør det ret vanskeligt at anbefale måder, der er mere sikre end adgangskoder og filer til brugssager, hvor sikkerheden ved adgangen er ikke prioriteret.
Så spørgsmålet er: er det muligt at gemme godkendelsesmaterialet mere sikkert end i en fil (som kan blive stjålet af noget malware), uden at ændre brugeroplevelsen?
Og svaret er: ja, ved at bruge en TPM!
Noget historie
I et stykke tid har computere været i stand til direkte at indlejre en sikkerhedschip. Denne chip, kaldet Trusted Platform Module (TPM), giver mange funktioner, herunder evnen til at beskytte private nøgler, der bruges i kryptografi med offentlige nøgler.
Da det er indlejret i computere, er det ikke nødvendigt at tilslutte en enhed til computeren for at bruge den. Dette anses derfor for at være mindre sikkert end en hardwareenhed, der kan opbevares et andet sted end computeren (dette gør det muligt at håndhæve princippet om, at selvom enheden ikke er forbundet til computeren, kan ingen malware bruge de hemmeligheder, der er gemt i den).
Så TPM er ikke den “bedste sikkerhed”, men den er stadig meget mere sikker end at bruge filer som f.eks $HOME/.ssh/id_rsa
at gemme private nøgler.
Hvordan kan TPM bruges med OpenSSH på Linux? Med et projekt ved navn tpm2-pkcs11
, efter instruktioner, der er tilgængelige på mange websteder i mange år, herunder på officiel dokumentation fra dets kodelager.
Hvad er nyhederne? Denne software er nu endelig pakket i Ubuntu og Debian, hvilket gør den endelig tilgængelig for de fleste Linux-brugere!
Mere præcist er her en tidslinje:
- I 2014 blev hovedspecifikationerne for TPM 2.0 offentliggjort. For at interagere med en TPM fra softwaren var der en standardiseringsindsats, og to inkompatible softwarestabler blev oprettet: den fra Trusted Computing Group (TCG), kaldet TPM Software Stack (TSS), og den fra IBM, også kaldet TPM-softwarestak.
- I 2018 er projektet
tpm2-pkcs11
blev oprettet for at give en PKCS#11-grænseflade til en TPM 2.0 ved hjælp af TCG's TSS. PKCS # 11 er en standard, som definerer et Application Programming Interface (API) navngivet Cryptoki at bruge tokens til lagring af kryptografiske nøgler. Da OpenSSH understøttede ved hjælp af en PKCS#11-grænseflade til at udføre brugergodkendelse, gjorde dette brug af TPM til at gemme nøglerne, der blev brugt til SSH-godkendelse. - I februar 2019,
tpm2-pkcs11
blev føjet til Fedora 29. - I september 2019 blev CentOS 8 udgivet med denne pakke.
- I april 2020,
tpm2-pkcs11
blev føjet til Debian side. Desværre indeholdt den ikke programmettpm2_ptool
hvilket er nødvendigt for nemt at skabe nøgler. Dette problem blev rapporteret i Debian-fejl #968310. - I januar 2021 var Debians pakke fast (og vedligeholderen anerkendte min hjælp!).
- I april 2021, Ubuntu 21.04 Hirsute flodhest blev frigivet med den faste pakke.
- I august 2021, Debian 11 Bullseye blev frigivet med den faste pakke
Nu tpm2-pkcs11
er tilgængelig på Debian, Ubuntu og flere andre Linux-distributioner på listen Repologi.
Brug af tpm2-pkcs11
På Debian 11 er her trinene til at generere og bruge en ny SSH-nøgle, der er opbevaret sikkert af TPM:
- Installer kommando
tpm2_ptool
og biblioteklibtpm2_pkcs11.so.1
, som leveres af to pakker:
2. Tjek, at systemet kan bruge en TPM 2.0. Hvis en af følgende kontroller mislykkes, kan det betyde, at systemet ikke har en TPM, eller har en TPM 1.2 eller har en TPM 2.0, som er deaktiveret i BIOS-indstillingerne:
3. Tilføj den aktuelle bruger til den gruppe, der kan få adgang til TPM-enheden /dev/tpmrm0
. På Debian og Ubuntu skal brugerne tilhøre en gruppe ved navn tss
(takket være konfiguration leveret af tpm-udev
pakke). Følgende kommando tilføjer den aktuelle bruger til denne gruppe:
Initialiser en brugerbutik, beskyttet af en adgangskode og en SOPIN og opret en nøgle, for eksempel en elliptisk kurvetast på kurven med navnet "NIST P-256" (også kendt som "secp256r1"):
4. Akronymet SOPIN midler Sikkerhedsofficerens personlige identifikationsnummer og er et koncept fra PKCS#11's specifikation. I simple brugstilfælde kan det ses som en "gendannelsesadgangskode", som gør det muligt at ændre adgangskoden, når den for eksempel er gået tabt.
5. Vis den offentlige nøgle for denne nye nøgle:
6. Konfigurer den nye offentlige nøgle på en server, for eksempel ved at skrive den ind $HOME/.ssh/authorized_keys
eller i GitHubs kontoindstillinger eller på et hvilket som helst andet sted, hvor offentlige SSH-nøgler bruges.
7. Konfigurer den SSH-klient, der skal bruges tpm2-pkcs11
at oprette forbindelse til serveren, fx ved at skrive dette ind $HOME/.ssh/config
(kundesiden):
Opret forbindelse til serveren (NB det forrige trin kan springes over:
Fremtidigt arbejde
Det forrige afsnit præsenterede, hvordan man opretter en ny nøgle i TPM. Selvom dette gør det muligt at bruge en TPM til at beskytte SSH-godkendelse, er der to funktioner, der er nødvendige for at gøre dette til et reelt alternativ til at bruge filer til at gemme private nøgler:
- Funktion #1: import af eksisterende SSH-nøgler til en TPM i stedet for at skabe nye (hvilket muliggør glidende overgang til TPM-lager, sikkerhedskopiering af nøglerne, hvis computeren går i stykker eller går tabt osv.).
- Funktion #2: brug af SSH-nøgler uden adgangskode, som ubeskyttede private nøglefiler (denne funktion er mere sikker end nøglefiler, da den beskyttede nøgle ikke kan udtrækkes fra TPM).
Jeg implementerede begge funktioner i tpm2-pkcs11
og indsendte dem i Pull Requests #681 , #695. Feature #1 blev også præsenteret i maj under det ugentlige online-opkald af tpm.dev-fællesskabet og optagelsen er tilgængelig på https://developers.tpm.dev/posts/14389750.
Så begge funktioner vil sandsynligvis blive tilgængelige i en fremtidig udgivelse af tpm2-pkcs11
.
I øvrigt for nysgerrige læsere, der gerne vil forstå det indre af tpm2-pkcs11
, jeg udgav en artikel om dem på SSTIC 2021-konferencen, ved navn Beskyttelse af SSH-godkendelse med TPM 2.0 (artikel på engelsk, præsentation på fransk). Desuden kunne læsere, der ønsker at prøve ting uden at røre en rigtig TPM, være interesseret i afsnittet "Emulering af en TPM 2.0" i denne artikel.
(Illustration: Rainer Knäpper, gratis kunstlicens)
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- PlatoAiStream. Web3 Data Intelligence. Viden forstærket. Adgang her.
- Udmøntning af fremtiden med Adryenn Ashley. Adgang her.
- Køb og sælg aktier i PRE-IPO-virksomheder med PREIPO®. Adgang her.
- Kilde: https://www.ledger.com/blog/ssh-with-tpm
- :har
- :er
- :ikke
- :hvor
- $OP
- 1
- 11
- 13
- 14
- 15 %
- 2014
- 2018
- 2019
- 2020
- 2021
- 30
- 8
- 80
- a
- evne
- I stand
- Om
- adgang
- Konto
- erkendte
- tilføje
- tilføjet
- Tilføjer
- fortaler
- også
- alternativ
- an
- ,
- besvare
- enhver
- api
- Anvendelse
- april
- ER
- Kunst
- artikel
- AS
- At
- AUGUST
- autentificeret
- Godkendelse
- til rådighed
- opbakning
- BE
- bliver
- været
- både
- Broken
- Bug
- men
- by
- ringe
- CAN
- kan ikke
- bære
- tilfælde
- tilfælde
- CGI
- skiftende
- kontrollere
- Kontrol
- chip
- kunde
- kode
- computer
- computere
- computing
- Konceptet
- Konference
- Konfiguration
- Tilslut
- tilsluttet
- betragtes
- kunne
- skabe
- oprettet
- Oprettelse af
- kryptografisk
- kryptografi
- nysgerrig
- Nuværende
- skøger
- definerer
- konstrueret
- dev
- enhed
- Enheder
- DID
- forskellige
- svært
- direkte
- deaktiveret
- Skærm
- Distributioner
- do
- dokumentation
- gør
- i løbet af
- nemt
- indsats
- Elliptisk
- Integrer
- indlejret
- aktiveret
- muliggør
- håndhæve
- Engelsk
- etc.
- NOGENSINDE
- Hver
- eksempel
- eksisterende
- erfaring
- ekstrakt
- mislykkes
- Feature
- Funktionalitet
- februar
- File (Felt)
- Filer
- Endelig
- fast
- efter
- Til
- Gratis
- Fransk
- fra
- fremtiden
- generere
- GitHub
- gruppe
- Hardware
- hardwareenhed
- hardwareenheder
- Have
- link.
- Hvordan
- How To
- HTML
- http
- HTTPS
- i
- IBM
- Identifikation
- if
- implementeret
- importere
- in
- Herunder
- uforenelige
- indlede
- i stedet
- anvisninger
- interagere
- interesseret
- grænseflade
- ind
- spørgsmål
- IT
- ITS
- januar
- Januar 2021
- jpg
- Nøgle
- nøgler
- kendt
- Ledger
- Ledger Nano
- Ledger Nano S
- Ledger Nano X
- mindre
- ligesom
- Sandsynlig
- linux
- Børsnoterede
- placering
- tabte
- Main
- lave
- maerker
- Making
- malware
- mange
- materiale
- max-bredde
- Kan..
- betyde
- midler
- modul
- mere
- Desuden
- mest
- meget
- my
- Som hedder
- nano
- nødvendig
- Behov
- behov
- Ny
- nyheder
- ingen
- nu
- of
- Officer
- on
- ONE
- dem
- online
- or
- ordrer
- Andet
- Andre
- pakke
- emballeret
- pakker
- smertefulde
- Adgangskode
- Nulstilling/ændring af adgangskoder
- udføre
- personale
- Place
- perron
- plato
- Platon Data Intelligence
- PlatoData
- stik
- mulig
- præcist
- præsentation
- forelagt
- tidligere
- princippet
- prioritet
- private
- private nøgle
- Private nøgler
- Programmering
- projekt
- beskytte
- beskyttet
- beskyttelse
- protokol
- give
- forudsat
- giver
- offentlige
- offentlig nøgle
- offentlige nøgler
- offentliggjort
- spørgsmål
- læsere
- ægte
- optagelse
- frigive
- frigivet
- rapporteret
- påkrævet
- rsa
- s
- Sektion
- sikker
- sikkert
- sikkerhed
- set
- september
- Session
- indstillinger
- flere
- side
- Simpelt
- So
- Software
- nogle
- specifikation
- specifikationer
- Stakke
- standard
- Trin
- Steps
- Stadig
- stjålet
- opbevaring
- butik
- opbevaret
- indsendt
- sådan
- Understøttet
- systemet
- end
- tak
- at
- Den ugentlige
- deres
- Them
- Der.
- derfor
- de
- ting
- denne
- tid
- tidslinje
- til
- Tokens
- rører
- overgang
- betroet
- prøv
- to
- typen
- Ubuntu
- forstå
- desværre
- brug
- anvendte
- Bruger
- Brugererfaring
- brugere
- ved brug af
- ønsker
- var
- Vej..
- måder
- websites
- ugentlig
- var
- hvornår
- som
- mens
- WHO
- med
- uden
- skrivning
- X
- år
- Ja
- zephyrnet