Sicurezza della chiave privata protetta da passphrase

43

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

    
posta jrdioko 08.07.2011 - 18:33
fonte

4 risposte

22

Con OpenSSL, OpenSSH e GPG / PGP l'algoritmo di avvolgimento sarà abbastanza strong da non doverti preoccupare (e se hai bisogno di preoccuparti, allora hai problemi più grandi, e questo è il minimo le tue preoccupazioni).

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

  • Casuale è meglio
  • Più è più strong
risposta data 09.07.2011 - 20:44
fonte
15

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 craccarlo.

Ecco alcune 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.

  • dimensioni dello spazio chiave - ad es. - dimensioni e complessità della password - si applicano i costi tipici di ipotesi di forza bruta. Si noti che alcune forme di memorizzazione delle chiavi limitano i tipi di caratteri che possono essere utilizzati in una password: ad esempio, JKS (Java Key Store) ha eliminato alcuni caratteri speciali, riducendo le dimensioni potenziali dello spazio delle chiavi. Fai attenzione anche ai sistemi che ritagliano le dimensioni della chiave per un determinato numero di caratteri.

  • costo del tentativo quanto è costoso dal punto di vista computazionale tentare di scartare la chiave? Questo rallenterà il tentativo di forza bruta.

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

  • c'è un testo cifrato con cui confrontarlo? come saprà l'attaccante che ha avuto successo? qual è il suo meccanismo di test? Uno degli elementi più potenti di acquisizione di un keystore è che l'attacker può essere in grado di testare i suoi tentativi senza ulteriori rilevamenti dal sistema che memorizza la chiave.

  • quante risorse sono a disposizione dell'aggressore? - generalmente l'analisi delle minacce implica 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 se stai parlando del kiddie script di 13 anni o di una nazione canaglia.

  • per quanto tempo fino alla modifica della chiave? & per quanto tempo i dati devono essere protetti? - se l'hacker impiega più tempo a decifrare l'archivio delle password rispetto all'utilità dei dati all'interno del negozio, allora il negozio è considerato sicuro sufficiente

risposta data 11.07.2011 - 22:00
fonte
7

Secondo Martin Kleppmann :

the [default OpenSSH] private key protection has two weaknesses:

  • The digest algorithm is hard-coded to be MD5, which means that without changing the format, it's not possible to upgrade to another hash function (e.g. SHA-1). This could be a problem if MD5 turns out not to be good enough.
  • The hash function is only applied once --- there is no stretching. This is a problem because MD5 and AES are both fast to compute, and thus a short passphrase is quite easy to break with brute force.

If your private SSH key ever gets into the wrong hands [and if it was passphrase-protected using the default OpenSSH settings and if] your passphrase is a dictionary word, it can probably be [decrypted] in a matter of seconds. ... But there is good news: you can upgrade to a more secure private key format, and everything continues to work!

Quindi prosegue spiegando come utilizzare "PKCS # 8" come da RFC 5208 per ottenere una chiave privata crittografata più sicura:

$ 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'
    
risposta data 28.04.2013 - 02:15
fonte
4

La crittografia della chiave privata di OpenSSH è vulnerabile?

La protezione di una chiave privata con una passphrase deve essere eseguita con attenzione, come di solito accade nelle criptografie. Generalmente l'approccio consiste nel 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 funzione di derivazione della chiave adatta è PBKDF2 da RFC 2898 - PKCS # 5: Cryptography Specification Password 2.0 Version .

Secondo la presentazione di scrypt , di Colin Percival "OpenSSH utilizza MD5 come funzione di derivazione chiave per passphrase sui file chiave ". Dal contesto sembra che stia dicendo che non usano sali o iterazioni, il che è spaventoso considerando la forza bruta veloce in questi giorni. Ci sono alcuni formati diversi che OpenSSH usa per memorizzare chiavi private, quindi mi piacerebbe conoscere altri dettagli e esattamente quali versioni sono interessate, ma sembra molto diverso da PBKDF2 o l'altro tecniche iterate e salate che esistono dal 1978 .

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

    
risposta data 12.07.2011 - 07:36
fonte

Leggi altre domande sui tag