Chrome은 비밀번호를 어떻게 저장하나요? 예를 들어,

그들은 디스크에 암호화되어 있습니까? 방법? 예를 들어, 누군가 라이브 CD로 부팅하고 하드 디스크를 마운트하는 경우 안전합니까?

암호화 키는 어떻게 생성됩니까? Windows와 Linux가 다른가요?



답변

Chrome에서 비밀번호를 암호화하는 데 사용되는 키에 대해 특히 궁금한 것 같습니다.

정답은:

모든 비밀번호는 다른 임의의 키로 암호화됩니다.

그런 다음 암호화 된 비밀번호는 SQLite 데이터베이스 파일에 저장됩니다.

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

SQLite Database Browser 또는 SQLite Maestro 와 같은 것을 사용 하여 볼 수 있습니다. 내 Login Data파일 의 스 니펫은 다음과 같습니다 .

origin_url                                username_value               password_value
========================================  ==============               ========================
http://thepiratebay.org/register          JolineBlomqvist@example.com  01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA

암호가 암호화 된 데이터 덩어리임을 알 수 있습니다. 새 비밀번호를 암호화하는 대략적인 알고리즘은 다음과 같습니다.

  • 새로운 랜덤 세션 키를 생성
  • 세션 키로 비밀번호를 암호화
  • 사용자의 RSA 공개 키로 세션 키를 암호화
  • 암호화 된 데이터에 대한 메시지 인증 코드 (HMAC) 생성
  • 암호화 된 세션 키, 암호화 된 암호 및 MAC을 연결

그리고 Chrome은 해당 얼룩을 SQLite 데이터베이스에 저장합니다.

그러나 귀하의 질문에 대답하기 위해 : 암호화 키는 어디에서 왔습니까?

각 비밀번호는 무작위로 생성 된 다른 키로 암호화됩니다.

기술적 세부 사항

물론 나는 기술적 세부 사항을 생략했다. Chrome은 비밀번호 자체를 암호화하지 않습니다. Chrome에는 암호화에 사용되는 마스터 키가 없습니다. Chrome은 암호화를 수행하지 않습니다. Windows는 않습니다.

CryptProtectData원하는 임의의 데이터를 암호화하는 데 사용되는 Windows 기능이 있습니다 . 그것을 호출하는 세부 사항은 덜 중요합니다. 그러나 프로그래밍 언어로 다소 해독 할 수있는 의사 언어를 발명하면 Chrome은 다음을 호출합니다.

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

암호는 다음과 같습니다.

  • 평문 :correct battery horse staple
  • 암호화 :01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA

비밀번호를 입력 할 필요가 없었 음을 알 수 있습니다. Windows가이 모든 것을 처리하기 때문입니다. 결국 :

  • 비밀번호를 암호화하기 위해 임의의 비밀번호가 생성됩니다.
  • 해당 비밀번호는 임의의 비밀번호로 암호화됩니다.
  • 해당 비밀번호는 Windows 비밀번호로 암호화됩니다.

따라서 누군가가 귀하의 비밀번호를 아는 유일한 방법은 귀하의 비밀번호를 아는 것입니다.


답변

비밀번호 는 암호화 되어 SQLite 데이터베이스에 저장됩니다.

여기서 중요한 부분은 CryptProtectData데이터 암호화를위한 Windows API 함수입니다. 이 기능으로 암호화 된 데이터는 매우 견고합니다. 처음에는이를 암호화 한 동일한 시스템 및 동일한 사용자 만 암호를 해독 할 수 있습니다.


답변

그것들은 “암호화”되지만 뒤집을 수있는 암호화입니다. Chrome은 원래 비밀번호를 저장된 사이트로 전송해야하므로 Chrome에서 비밀번호를 해독하여 사용할 수 있다면 다른 사람도 사용할 수 있습니다. 비밀번호 저장은 100 % 안전하지 않습니다.


답변

Chrome은 비밀번호를 암호화하여 SQLite DB에 저장하지만 ChromePass ( http://www.nirsoft.net/utils/chromepass.html ) 또는 SecurePassword Kit ( http : // www.getsecurepassword.com/ )


답변

Mac에서 Windows의 CryptProtectData 기능과 동등한 기능은 OS X 키 체인의 “Chrome Safe Storage”에 대한 비밀번호에 액세스하는 것입니다.