it-swarm-eu.dev

Sicurezza della chiave privata protetta da passphrase

Se un attaccante ottiene una chiave privata che è stata creata senza passphrase, ovviamente ottiene l'accesso a tutto ciò che è protetto con quella chiave. Quanto sono sicure le chiavi private impostate con una passphrase? Se un utente malintenzionato ruba una chiave protetta da passphrase, quanto è difficile comprometterla? In altre parole, una chiave privata con una buona passphrase è sicura anche se vi si accede da un utente malintenzionato?

45
jrdioko

Con OpenSSL, OpenSSH e GPG/PGP l'algoritmo di wrapping sarà abbastanza forte da non doverti preoccupare (e se hai bisogno di preoccupartene, allora hai problemi più grandi, e questa è l'ultima delle tue preoccupazioni) .

Come qualsiasi password o passphrase, dipende dalla forza della passphrase. Una passphrase di 40 caratteri è difficile da forzare come una chiave a 256 bit (poiché ASCII utilizza solo 7 bit). Qui si applicano le stesse regole per le password complesse:

  • Casuale è meglio
  • Più a lungo è più forte
24
bahamat

Una volta che un blocco crittografato di dati è nelle mani di un utente malintenzionato, non è mai sicuro per sempre - è una questione di quanto tempo e quali mezzi sono disponibili per rompilo.

Ecco cose da considerare:

  • forza dell'algoritmo di wrapping - Sono disposto a credere a bahamat su OpenSSL, OpenSSH e GPG/PGP - questi sono componenti abbastanza ben controllati.

  • dimensione dello spazio chiave - cioè - dimensione e complessità della password - si applicano i costi tipici dell'ipotesi della forza bruta. Da notare che alcune forme di memorizzazione delle chiavi limitano i tipi di caratteri che possono essere utilizzati in una password - ad esempio, JKS (il Java Key Store) ha eliminato alcuni caratteri speciali, riducendo il potenziale dimensione dello spazio chiave. Diffidare anche dei sistemi che ritagliano la dimensione chiave per un certo numero di caratteri.

  • costo del tentativo quanto è computazionalmente costoso tentare di scartare la chiave? Ciò rallenterà il tentativo di forza bruta.

  • quale algoritmo? - dipende da come viene archiviato il file sicuro - è ovvio quale algoritmo è stato utilizzato per la crittografia?

  • è disponibile un testo cifrato con cui confrontare? come farà l'aggressore a sapere che ha successo - qual è il suo meccanismo di test? Uno degli elementi più potenti di acquisizione di un archivio chiavi è che l'attaccante potrebbe essere in grado di testare i suoi tentativi senza ulteriore rilevamento da parte del sistema che memorizza la chiave.

  • quante risorse sono a disposizione dell'attaccante? - generalmente l'analisi delle minacce comporta l'analisi delle risorse dell'attaccante. Ha 1 computer? Una banca di computer? E l'intera rete virale di potenza della CPU rubata a sua disposizione? Dipende dal fatto che tu stia parlando del kiddie di 13 anni della porta accanto o di una nazione canaglia.

  • quanto tempo prima che la chiave venga cambiata? & quanto tempo devono rimanere protetti i dati? - se l'attaccante impiega più tempo a decifrare l'archivio delle password rispetto all'utilità dei dati all'interno il negozio, quindi il negozio è considerato abbastanza sicuro

15
bethlakshmi

Secondo Martin Kleppmann :

la protezione della chiave privata [default OpenSSH] ha due punti deboli:

  • L'algoritmo digest è codificato per essere MD5, il che significa che senza cambiare il formato, non è possibile eseguire l'aggiornamento a un'altra funzione hash (ad esempio SHA-1). Questo potrebbe essere un problema se MD5 risulta non essere abbastanza buono.
  • La funzione hash viene applicata una sola volta --- non c'è allungamento. Questo è un problema perché MD5 e AES sono entrambi veloci da calcolare, e quindi una passphrase breve è abbastanza facile da rompere con la forza bruta.

Se la tua chiave SSH privata finisce nelle mani sbagliate [e se era protetta da passphrase usando le impostazioni OpenSSH predefinite e se] la tua passphrase è una parola del dizionario, probabilmente può essere [decrittografata] in pochi secondi. ... Ma ci sono buone notizie: puoi passare a un formato di chiave privata più sicuro e tutto continua a funzionare!

Continua poi a spiegare come utilizzare "PKCS # 8" secondo RFC 5208 per ottenere una chiave privata crittografata in modo più sicuro:

$ mv test_rsa_key test_rsa_key.old
$ openssl pkcs8 -topk8 -v2 des3 \
    -in test_rsa_key.old -passin 'pass:super secret passphrase' \
    -out test_rsa_key -passout 'pass:super secret passphrase'
7
sampablokuper

La crittografia della chiave privata OpenSSH è vulnerabile?

La protezione di una chiave privata con una passphrase deve essere eseguita con attenzione, come di solito accade nelle questioni crittografiche. Generalmente l'approccio è di crittografare la chiave privata con un algoritmo simmetrico utilizzando una chiave derivata dalla passphrase tramite una funzione di derivazione della chiave. Un classico esempio di una funzione di derivazione della chiave adatta è PBKDF2 da RFC 2898 - PKCS # 5: specifica di crittografia basata su password versione 2.0 .

Secondo la presentazione scrypt di Colin Percival , "OpenSSH utilizza MD5 come funzione di derivazione chiave per passphrase su file chiave". Dal contesto sembra che stia dicendo che non usano sali o iterazioni, il che è spaventoso dato la velocità con cui la forza bruta è in questi giorni. Esistono diversi formati che OpenSSH utilizza per archiviare le chiavi private, quindi mi piacerebbe sapere qualche dettaglio in più ed esattamente quali versioni sono interessate, ma suona come un grido lontano da PBKDF2 o dall'altro ripetuto , tecniche salate che esistono dal 1978 .

Vedo un riferimento che afferma che PGP e GPG usano tecniche di iterazione/stiramento quando proteggono una chiave privata memorizzata in un file, ma ancora non conosco ancora i dettagli.

4
nealmcb