그들은 디스크에 암호화되어 있습니까? 방법? 예를 들어, 누군가 라이브 CD로 부팅하고 하드 디스크를 마운트하는 경우 안전합니까?
암호화 키는 어떻게 생성됩니까? Windows와 Linux가 다른가요?
그들은 디스크에 암호화되어 있습니까? 방법? 예를 들어, 누군가 라이브 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
암호가 암호화 된 데이터 덩어리임을 알 수 있습니다. 새 비밀번호를 암호화하는 대략적인 알고리즘은 다음과 같습니다.
그리고 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가이 모든 것을 처리하기 때문입니다. 결국 :
따라서 누군가가 귀하의 비밀번호를 아는 유일한 방법은 귀하의 비밀번호를 아는 것입니다.
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
비밀번호 는 암호화 되어 SQLite 데이터베이스에 저장됩니다.
여기서 중요한 부분은
CryptProtectData
데이터 암호화를위한 Windows API 함수입니다. 이 기능으로 암호화 된 데이터는 매우 견고합니다. 처음에는이를 암호화 한 동일한 시스템 및 동일한 사용자 만 암호를 해독 할 수 있습니다.
CryptProtectData
에서는 Windows 자격 증명 (암호가 아닌 다른 데이터)을 키로 사용합니다. AFAIK는 인증서, 네트워크 자격 증명 및 모든 것을 보호하는 데 사용되는 것과 동일한 기능입니다.
Encryptor::EncryptString
아무것도하지 않습니다 . 그놈 키링 및 KDE 월렛을 사용하기위한 코드가있는 것 같습니다.
그것들은 "암호화"되지만 뒤집을 수있는 암호화입니다. Chrome은 원래 비밀번호를 저장된 사이트로 전송해야하므로 Chrome에서 비밀번호를 해독하여 사용할 수 있다면 다른 사람도 사용할 수 있습니다. 비밀번호 저장은 100 % 안전하지 않습니다.
CryptProtectData
Windows API이며 Windows는 실제로 모든 암호화 및 검색을 수행하며 암호화 키는 사용자 계정 및 시스템에 따라 다릅니다.
Chrome은 비밀번호를 암호화하여 SQLite DB에 저장하지만 ChromePass ( http://www.nirsoft.net/utils/chromepass.html ) 또는 SecurePassword Kit ( http : // www.getsecurepassword.com/ )