In questo protocollo, gli utenti devono essere autenticati. Possono farlo con password, file contenenti chiavi RSA private, dispositivi hardware come Ledger Nano S e Ledger Nano X, ecc.
Alcuni mezzi di autenticazione sono più sicuri di altri: l'utilizzo di un dispositivo hardware progettato per memorizzare una chiave privata senza che sia mai possibile estrarla è più sicuro rispetto all'archiviazione della chiave privata in un file. Purtroppo quelli più sicuri sono anche più dolorosi da usare. Gli utenti che hanno le proprie chiavi su un dispositivo devono portare con sé il dispositivo, devono digitare il proprio codice PIN ogni volta che avviano una sessione SSH, ecc. la sicurezza dell'accesso non è la priorità.
Quindi la domanda è: è possibile archiviare il materiale di autenticazione in modo più sicuro rispetto a un file (che può essere rubato da alcuni malware), senza modificare l'esperienza dell'utente?
E la risposta è: sì, utilizzando un TPM!
Un po 'di storia
Per un po' di tempo, i computer sono stati in grado di incorporare direttamente un chip di sicurezza. Questo chip, denominato Trusted Platform Module (TPM), offre molte funzionalità tra cui la capacità di proteggere le chiavi private utilizzate nella crittografia a chiave pubblica.
Poiché è incorporato nei computer, non è necessario collegare un dispositivo al computer per utilizzarlo. Questo è quindi considerato meno sicuro di un dispositivo hardware che può essere archiviato in un luogo diverso dal computer (questo consente di far rispettare il principio che mentre il dispositivo non è connesso al computer, nessun malware può utilizzare i segreti in esso memorizzati).
Quindi TPM non è la "migliore sicurezza", ma è comunque molto più sicuro rispetto all'utilizzo di file come $HOME/.ssh/id_rsa
per memorizzare le chiavi private.
In che modo è possibile utilizzare TPM con OpenSSH su Linux? Con un progetto chiamato tpm2-pkcs11
, seguendo le istruzioni disponibili su molti siti Web per molti anni, incluso il documentazione ufficiale dal suo repository di codice.
Ora, qual è la novità? Questo software è ora finalmente impacchettato in Ubuntu e Debian, il che lo rende finalmente disponibile per la maggior parte degli utenti Linux!
Più precisamente ecco una timeline:
- Nel 2014 sono state pubblicate le specifiche principali per TPM 2.0. Per interagire con un TPM dal software, c'è stato uno sforzo di standardizzazione e sono stati creati due stack software incompatibili: quello del Trusted Computing Group (TCG), chiamato Stack software TPM (TSS), e quello di IBM, chiamato anche Stack software TPM.
- Nel 2018 il progetto
tpm2-pkcs11
è stato creato per fornire un'interfaccia PKCS#11 a un TPM 2.0, utilizzando il TSS di TCG. PKCS # 11 è uno standard che definisce un'API (Application Programming Interface) denominata Criptoki per utilizzare i token che memorizzano le chiavi crittografiche. Poiché OpenSSH supportava l'utilizzo di un'interfaccia PKCS#11 per eseguire l'autenticazione dell'utente, ciò consentiva l'utilizzo di TPM per archiviare le chiavi utilizzate per l'autenticazione SSH. - Nel febbraio 2019,
tpm2-pkcs11
è stato aggiunto a Fedora 29. - A settembre 2019, CentOS 8 è stato rilasciato con questo pacchetto.
- Ad aprile 2020,
tpm2-pkcs11
è stato aggiunto a Debian sid. Purtroppo non conteneva il programmatpm2_ptool
necessario per creare facilmente le chiavi. Questo problema è stato segnalato in Errore Debian n. 968310. - Nel gennaio 2021, il pacchetto di Debian era fisso (e il manutentore ha riconosciuto il mio aiuto!).
- Nell'aprile 2021, Ubuntu 21.04 Ippopotamo irsuto è stato rilasciato con il pacchetto fisso.
- Nell'agosto 2021, Debian 11 Bullseye è stato rilasciato con il pacchetto fisso
Adesso tpm2-pkcs11
è disponibile su Debian, Ubuntu e molte altre distribuzioni Linux elencate su Repologia.
Utilizzando tpm2-pkcs11
Su Debian 11, ecco i passaggi per generare e utilizzare una nuova chiave SSH archiviata in modo sicuro dal TPM:
- comando Installa
tpm2_ptool
e bibliotecalibtpm2_pkcs11.so.1
, forniti da due pacchetti:
2. Verificare che il sistema possa utilizzare un TPM 2.0. Se uno dei seguenti controlli ha esito negativo, potrebbe significare che il sistema non dispone di un TPM o dispone di un TPM 1.2 oppure dispone di un TPM 2.0 che è disabilitato nelle impostazioni del BIOS:
3. Aggiungere l'utente corrente al gruppo che può accedere al dispositivo TPM /dev/tpmrm0
. Su Debian e Ubuntu, gli utenti devono appartenere a un gruppo denominato tss
(grazie alla configurazione fornita da tpm-udev
pacchetto). Il seguente comando aggiunge l'utente corrente a questo gruppo:
Inizializza un archivio utenti, protetto da password e a SOPINO e creare una chiave, ad esempio una chiave curva ellittica sulla curva denominata "NIST P-256" (nota anche come "secp256r1"):
4. L'acronimo SOPINO si intende Numero di identificazione personale del responsabile della sicurezza ed è un concetto della specifica di PKCS#11. In casi d'uso semplici, può essere vista come una "password di ripristino" che consente di modificare la password quando, ad esempio, è stata persa.
5. Visualizza la chiave pubblica di questa nuova chiave:
6. Configurare la nuova chiave pubblica in un server, ad esempio scrivendola $HOME/.ssh/authorized_keys
o nelle impostazioni dell'account di GitHub o in qualsiasi altro luogo in cui vengono utilizzate le chiavi pubbliche SSH.
7. Configurare il client SSH da utilizzare tpm2-pkcs11
per connettersi al server, ad esempio scrivendo questo in $HOME/.ssh/config
(dalla parte del cliente):
Connettiti al server (NB il passaggio precedente può essere saltato:
Lavoro futuro
Nella sezione precedente è stato illustrato come creare una nuova chiave nel TPM. Sebbene ciò consenta di utilizzare un TPM per proteggere l'autenticazione SSH, ci sono due funzionalità necessarie per renderlo una vera alternativa all'utilizzo di file per archiviare le chiavi private:
- Caratteristica n. 1: importazione di chiavi SSH esistenti in un TPM invece di crearne di nuove (che consente una transizione graduale all'archiviazione TPM, il backup delle chiavi, in caso di guasto o smarrimento del computer, ecc.).
- Caratteristica n. 2: utilizzo di chiavi SSH senza password, come file di chiavi private non protette (questa funzione è più sicura dei file di chiavi poiché la chiave protetta non può essere estratta dal TPM).
Ho implementato entrambe le funzionalità in tpm2-pkcs11
e li ha inviati in richieste pull #681 ed #695. Anche il Feature #1 è stato presentato a maggio durante la call online settimanale di comunità tpm.dev e la registrazione è disponibile su https://developers.tpm.dev/posts/14389750.
Quindi è probabile che entrambe le funzionalità diventino disponibili in una versione futura di tpm2-pkcs11
.
A proposito, per i lettori curiosi che vogliono capire l'interno di tpm2-pkcs11
, ho pubblicato un articolo su di loro alla conferenza SSTIC 2021, denominata Protezione dell'autenticazione SSH con TPM 2.0 (articolo in inglese, presentazione in francese). Inoltre i lettori che vogliono provare le cose senza toccare un vero TPM potrebbero essere interessati alla sezione "Emulazione di un TPM 2.0" di questo articolo.
(Illustrazione: Rainer Knäpper, licenza d'arte libera)
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoAiStream. Intelligenza dei dati Web3. Conoscenza amplificata. Accedi qui.
- Coniare il futuro con Adryenn Ashley. Accedi qui.
- Acquista e vendi azioni in società PRE-IPO con PREIPO®. Accedi qui.
- Fonte: https://www.ledger.com/blog/ssh-with-tpm
- :ha
- :È
- :non
- :Dove
- $ SU
- 1
- 11
- 13
- 14
- 15%
- 2014
- 2018
- 2019
- 2020
- 2021
- 30
- 8
- 80
- a
- capacità
- capace
- Chi siamo
- accesso
- Il mio account
- riconosciuto
- aggiungere
- aggiunto
- Aggiunge
- avvocato
- anche
- alternativa
- an
- ed
- rispondere
- in qualsiasi
- api
- Applicazioni
- Aprile
- SONO
- Arte
- articolo
- AS
- At
- AGOSTO
- autenticato
- Autenticazione
- disponibile
- sostegno
- BE
- diventare
- stato
- entrambi
- Rotto
- Insetto
- ma
- by
- chiamata
- Materiale
- non può
- trasportare
- Custodie
- casi
- CGI
- cambiando
- dai un'occhiata
- Controlli
- patata fritta
- cliente
- codice
- computer
- computer
- informatica
- concetto
- Convegno
- Configurazione
- Connettiti
- collegato
- considerato
- potuto
- creare
- creato
- Creazione
- crittografico
- crittografia
- curioso
- Corrente
- curva
- definisce
- progettato
- Dev
- dispositivo
- dispositivi
- DID
- diverso
- difficile
- direttamente
- disabile
- Dsiplay
- distribuzioni
- do
- documentazione
- effettua
- durante
- facilmente
- sforzo
- Ellittico
- incastrare
- incorporato
- abilitato
- Abilita
- far rispettare
- Inglese
- eccetera
- EVER
- Ogni
- esempio
- esistente
- esperienza
- estratto
- fallisce
- caratteristica
- Caratteristiche
- Febbraio
- Compila il
- File
- Infine
- fisso
- i seguenti
- Nel
- Gratis
- Francese
- da
- futuro
- generare
- GitHub
- Gruppo
- Hardware
- dispositivo hardware
- dispositivi hardware
- Avere
- qui
- Come
- Tutorial
- HTML
- http
- HTTPS
- i
- IBM
- Identificazione
- if
- implementato
- importazione
- in
- Compreso
- incompatibile
- avviare
- invece
- istruzioni
- interagire
- interessato
- Interfaccia
- ai miglioramenti
- problema
- IT
- SUO
- Gennaio
- Gennaio 2021
- jpg
- Le
- Tasti
- conosciuto
- Ledger
- Ledger Nano
- Ledger Nano S
- Ledger Nano X
- meno
- piace
- probabile
- linux
- elencati
- località
- perso
- Principale
- make
- FA
- Fare
- il malware
- molti
- materiale
- max-width
- Maggio..
- significare
- si intende
- modulo
- Scopri di più
- Inoltre
- maggior parte
- molti
- my
- Detto
- nano
- necessaria
- Bisogno
- di applicazione
- New
- notizie
- no
- adesso
- of
- Responsabile
- on
- ONE
- quelli
- online
- or
- minimo
- Altro
- Altri
- pacchetto
- confezionati
- Packages
- doloroso
- Password
- Le password
- eseguire
- cronologia
- posto
- piattaforma
- Platone
- Platone Data Intelligence
- PlatoneDati
- spina
- possibile
- precisamente
- presentazione
- presentata
- precedente
- principio
- priorità
- un bagno
- chiave privata
- Chiavi private
- Programmazione
- progetto
- protegge
- protetta
- proteggere
- protocollo
- fornire
- purché
- fornisce
- la percezione
- chiave pubblica
- chiavi pubbliche
- pubblicato
- domanda
- lettori
- di rose
- registrazione
- rilasciare
- rilasciato
- Segnalati
- necessario
- rsa
- s
- Sezione
- sicuro
- in modo sicuro
- problemi di
- visto
- Settembre
- Sessione
- impostazioni
- alcuni
- lato
- Un'espansione
- So
- Software
- alcuni
- specificazione
- Specifiche tecniche
- Stacks
- Standard
- step
- Passi
- Ancora
- rubare
- conservazione
- Tornare al suo account
- memorizzati
- presentata
- tale
- supportato
- sistema
- di
- Grazie
- che
- I
- Il settimanale
- loro
- Li
- Là.
- perciò
- di
- cose
- questo
- tempo
- time line
- a
- Tokens
- toccante
- transizione
- di fiducia
- prova
- seconda
- Digitare
- Ubuntu
- capire
- purtroppo
- uso
- utilizzato
- Utente
- Esperienza da Utente
- utenti
- utilizzando
- volere
- Prima
- Modo..
- modi
- siti web
- settimanale
- sono stati
- quando
- quale
- while
- OMS
- con
- senza
- scrittura
- X
- anni
- sì
- zefiro