Sono crittografati su disco? Come? Sono sicuri, ad esempio, nel caso in cui qualcuno si avvii da un Live CD e monti il disco rigido?
Come viene generata la chiave di crittografia? È diverso in Windows e Linux?
Sono crittografati su disco? Come? Sono sicuri, ad esempio, nel caso in cui qualcuno si avvii da un Live CD e monti il disco rigido?
Come viene generata la chiave di crittografia? È diverso in Windows e Linux?
Risposte:
Sembra che tu sia curioso in particolare della chiave utilizzata per crittografare le password in Chrome.
La risposta è:
Ogni password è crittografata con una chiave casuale diversa.
E quindi la password crittografata viene archiviata nel file di database SQLite:
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
È possibile utilizzare qualcosa come SQLite Database Browser o SQLite Maestro per visualizzarlo. Ecco uno snippet dal mio Login Data
file:
origin_url username_value password_value
======================================== ============== ========================
http://thepiratebay.org/register JolineBlomqvist@example.com 01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA
Noterai che la password è un BLOB crittografato di dati. L'algoritmo approssimativo per crittografare una nuova password è:
E Chrome salva quel BLOB nel suo database SQLite.
Ma per rispondere alla tua domanda: da dove viene la chiave di crittografia?
Ogni password è crittografata con una diversa chiave generata casualmente
Naturalmente ho lasciato fuori i dettagli tecnici. Chrome non crittografa le tue password. Chrome non ha una chiave master utilizzata per crittografare nulla. Chrome non esegue la crittografia. Windows lo fa.
C'è una funzione di Windows CryptProtectData
, che viene utilizzata per crittografare qualsiasi dato arbitrario che ti piace. I dettagli della sua chiamata sono meno importanti. Ma se invento uno pseudo-linguaggio che in qualche modo può essere decifrabile come qualsiasi lingua di programmazione, Chrome chiama:
CryptProtectData(
{ cbData: 28, pbData: "correct battery horse staple" },
"The password for superuser.com and all the glee therein",
null, //optional entropy
null, //reserved
null, //prompt options
0, //flags
{ cbData: pbData: }); //where the encrypted data will go
Quindi la password:
correct battery horse staple
01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA
Noterai che non ho mai avuto bisogno di fornire una password. Questo perché Windows si occupa di tutto ciò. Alla fine:
Quindi l'unico modo per qualcuno di conoscere la tua password è se conoscono la tua password.
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
Le password sono crittografate e archiviate in un database SQLite:
Il pezzo importante qui è
CryptProtectData
, che è una funzione API di Windows per la crittografia dei dati. I dati crittografati con questa funzione sono piuttosto solidi. Può essere decrittografato solo sullo stesso computer e dallo stesso utente che lo ha crittografato in primo luogo.
CryptProtectData
utilizza le credenziali di Windows (non la password, ma alcuni altri dati) come chiave. AFAIK, è la stessa funzione utilizzata per proteggere i certificati, le credenziali di rete e tutto il resto.
Encryptor::EncryptString
non fa nulla . Sembra che ci sia un codice per usare GNOME Keyring e KDE Wallet.
Sono "crittografati" ma è una crittografia reversibile. Chrome deve inviare la password non elaborata al sito per cui è stata archiviata, quindi se Chrome può decrittografarla e utilizzarla, così possono fare anche altre persone. La memorizzazione delle password non è mai sicura al 100%.
CryptProtectData
è un'API di Windows, Windows esegue effettivamente tutta la crittografia e il recupero, la chiave di crittografia dipende dall'account utente e dal sistema.
Google Chrome crittografa le password e le archivia in SQLite DB ma possono essere facilmente visualizzate con le speciali applicazioni di recupero password come ChromePass ( http://www.nirsoft.net/utils/chromepass.html ) o SecurePassword Kit ( http: // www.getsecurepassword.com/ )
Su Mac, l'equivalente della funzione CryptProtectData in Windows è accedere alla password per "Chrome Safe Storage" nel portachiavi di OS X.