GPG 키 비밀번호를 잊어버렸습니다.
비밀번호 없이 문자열을 해독하는 데 컴퓨터를 사용하기 때문에 내 컴퓨터가 해당 정보를 어딘가에 저장한다는 것을 알고 있습니다. 예를 들면 다음과 같습니다.
$ gpg --decrypt -r [email protected] ~/.password-store/gmail.gpg
You need a passphrase to unlock the secret key for
user: "Example <[email protected]>"
2048-bit RSA key, ID 02BFF027, created 2014-10-04 (main key ID 410A4C4A)
gpg: NOTE: secret key 02BFF027 expired at Thu 4 Oct 17:30:49 2018 EDT
gpg: encrypted with 2048-bit RSA key, ID 02BFF027, created 2014-10-04
"Example <[email protected]>"
princess
위 출력은 ~/.password-store/gmail.gpg를 성공적으로 해독합니다. 내 키가 만료되었음을 알고 비밀번호가 필요하다는 것을 알고 있지만 어떻게든 문자열을 해독합니다(내 비밀번호는 "princess"가 아닙니다). , 이는 설명 목적으로만 사용됩니다.
GPG 에이전트가 비밀번호를 gpg에 전달하는 데 사용된다고 가정합니다.
다음과 같은 작업을 수행할 수 있습니까?
gpg-agent --display-passphrase 02BFF027
?
답변1
비밀번호 자체는아니요어디에나 저장되므로 표시할 수 없습니다.
그럼에도 불구하고 암호 해독 프로세스는 입력된 암호 문구와 키 링에서 읽은 솔트(nonce)의 연결에 보안 해시 알고리즘을 반복적으로 적용하여 발생합니다.
이(컴퓨팅 집약적) 프로세스는 키링을 해독하기 위해 마스터 키를 반환합니다.
비밀번호가 정확하면 메일 메시지를 해독하는 데 사용되는 키가 포함된 키링을 해독할 수 있습니다.
비밀번호가 틀리면 확인할 수 없는 잘못된 마스터 키를 얻게 되어 오류 메시지가 표시됩니다(그리고 암호화 키가 키링에서 추출되지 않았기 때문에 메일 메시지를 해독할 수 없습니다).
답변2
역사적으로 비밀번호는 시스템에 일반 텍스트로 저장되었지만 시간이 지남에 따라 시스템에서 사용자의 비밀번호를 읽지 못하도록 보호하는 추가 보호 기능이 개발되었습니다. 소금은 그러한 방법 중 하나입니다. 각 비밀번호에 대해 무작위로 새 솔트를 생성하고 암호화 해시 함수를 사용하여 이를 연결 및 처리하고 생성된 출력(원래 비밀번호 아님)을 솔트와 함께 데이터베이스에 저장합니다.
해시 값은 되돌릴 수 없습니다. 따라서 해시에서 비밀번호를 쉽게 복구할 수 없습니다. 해시는 키를 해독하는 데 사용되며, 키는 파일/메시지를 해독하는 데 사용됩니다.