pbkdf2는 어떻게 작동하나요?

pbkdf2는 어떻게 작동하나요?

grub을 사용하여 비밀번호로 보호하려고 하는데 grub2-mkpasswd-pbkdf2centos 7에서 작동하지만 이에 대해 이해할 수 없습니다.

이 명령을 사용할 때마다 1234와 같은 고유 문자열에 대해 다른 해시 비밀번호가 제공됩니다.

결과는 다음과 같습니다

grub.pbkdf2.sha512.10000.5A9xxx
grub.pbkdf2.sha512.10000.E18xxx

내 질문은 다음과 같습니다

이러한 해시된 비밀번호가 10_unix 파일에 복사되고 grub이 업데이트되면 이 두 개의 해시된 비밀번호는 어떻게 작동하며 로그인 프로세스는 내 일반 비밀번호를 10_unix 파일의 해시된 텍스트와 어떻게 비교합니까?

내 말은, 고유한 문자열의 결과가 사용할 때마다 동일한 md5()와는 다른 것 같습니다.

답변1

PBKDF2소금에 절인비밀번호 해싱은 비밀번호 외에도 해시 함수가 비밀번호를 설정하거나 변경할 때 무작위로 생성되는 다른 문자열(소금)을 입력으로 사용함을 의미합니다. 여기서의 아이디어는 솔트도 필요하기 때문에 공격자가 일반 비밀번호에 해당하는 해시를 미리 계산할 수 없다는 것입니다. 또한 여러 계정에 동일한 비밀번호가 있는 경우 해시가 무작위이므로 명확하지 않습니다. 솔트는 비밀번호 해시의 일부로 저장되며, 일반 텍스트 비밀번호와 해시된 비밀번호를 비교하기 위해 해시에서 사용할 올바른 솔트를 읽습니다.

MD5 또는 SHA-256과 같은 "원래" 암호화 해시 함수와 비교하여 PBKDF2는 또한반복적 인즉, 기본 해시를 루프에서 여러 번(적어도 수천 번) 실행한다는 의미입니다. 이것은 단지 해시를 만드는 것입니다느리게계산을 수행하면 무차별 대입을 통해 해시와 일치하는 비밀번호를 추측하는 비용이 증가합니다.

이 경우 grub해시 형식은 다음과 같습니다.

grub.pbkdf2.sha512.[반복].[소금].[해시시]

시스템에서 사용하는 비밀번호 해시( /etc/shadow, 참조토굴매뉴얼 페이지)도 올바른 비밀번호 해시처럼 반복되고 솔트됩니다.

PBKDF2는 CPU 집약적이며 많은 메모리를 사용하지 않습니다. 이는 GPU에서의 컴퓨팅이 상대적으로 저렴하다는 것을 의미합니다. bcrypt(1999), scrypt(2009) 및 Argon2(2015)와 같은 최신 알고리즘도 이를 고려하며 일반적으로 새로운 구현에서는 Argon2를 사용하는 것이 좋습니다.

비밀번호 해싱에 대한 자세한 내용은 다음을 참조하세요. 비밀번호를 안전하게 해시하는 방법은 무엇입니까?그리고 2018년에 비밀번호 저장에 권장되는 해시(bcrypt, scrypt, Argon2)는 무엇입니까?안전에 대해. SE.

관련 정보