Como o Google Chrome armazena senhas?

25

Eles são criptografados no disco? Como? Eles são seguros, por exemplo, no caso de alguém iniciar a partir de um Live CD e montar o disco rígido?

Como a chave de criptografia é gerada? É diferente no Windows e no Linux?

    
por Óscar 29.05.2010 / 20:31

5 respostas

20

Você parece curioso especificamente sobre a chave usada para criptografar as senhas no Chrome.

A resposta é:

Every password is encrypted with a different random key.

E a senha criptografada é armazenada no arquivo de banco de dados SQLite:

%LocalAppData%\Google\Chrome\User Data\Default\Login Data

Você pode usar algo como Navegador de banco de dados SQLite ou SQLite Maestro para visualizá-lo. Aqui está um trecho do meu arquivo Login Data :

origin_url                                username_value               password_value
========================================  ==============               ========================
http://thepiratebay.org/register          [email protected]  01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA

Você notará que a senha é um blob criptografado de dados. O algoritmo aproximado para criptografar uma nova senha é:

  • gera uma nova chave de sessão aleatória
  • criptografa a senha com a chave da sessão
  • criptografa a chave de sessão com a chave pública RSA do usuário
  • gera um Código de Autenticação de Mensagem (HMAC) para os dados criptografados
  • concatena a chave de sessão criptografada, a senha criptografada e o MAC

E o Chrome salva esse blob em seu banco de dados SQLite.

Mas, para responder à sua pergunta: De onde vem a chave de criptografia?

Each password is encrypted with a different randomly generated key

Os detalhes técnicos

Claro que deixei de fora os detalhes técnicos. O Chrome não criptografa suas próprias senhas. O Chrome não tem uma chave mestra usada para criptografar nada. O Chrome não faz a criptografia. O Windows faz.

Existe uma função do Windows, CryptProtectData , que é usada para criptografar dados arbitrários de que você gosta. Os detalhes de chamá-lo são menos importantes. Mas se eu inventar uma pseudo-linguagem que pode ser decifrável como qualquer linguagem de programação, o Chrome chama:

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

Então a senha:

  • Texto simples : correct battery horse staple
  • Criptografado : 01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA

Você notará que nunca precisei fornecer uma senha. Isso é porque o Windows cuida de tudo isso. No final:

  • uma senha aleatória é gerada para criptografar a senha
  • essa senha é criptografada com uma senha aleatória
  • essa senha é criptografada com sua senha do Windows

Assim, a única maneira de alguém saber sua senha é se ela souber sua senha.

    
por 07.08.2013 / 20:15
8

As senhas são criptografadas e armazenadas em um banco de dados SQLite:

The important piece here is CryptProtectData, which is a Windows API function for encrypting data. Data encrypted with this function is pretty solid. It can only be decrypted on the same machine and by the same user that encrypted it in the first place.

    
por 29.05.2010 / 20:37
4

Eles são "criptografados", mas são uma criptografia reversível. O Chrome precisa enviar a senha bruta para o site para o qual ela foi armazenada. Assim, se o Google Chrome puder descriptografá-la e usá-la, outras pessoas poderão usá-la. Armazenar senhas nunca é 100% seguro.

    
por 29.05.2010 / 20:35
2

O Google Chrome criptografa senhas e as armazena no SQLite DB, mas elas podem ser facilmente visualizadas com os aplicativos especiais de recuperação de senha, como o ChromePass ( link ) ou SecurePassword Kit ( link )

    
por 16.03.2013 / 11:03
1

No Mac, o equivalente à função CryptProtectData no Windows é acessar a senha do "Armazenamento Seguro do Chrome" no Keychain do OS X.

    
por 28.01.2017 / 18:32