PBKDF2-HMAC 충돌

Oct 28 2020

주어진 키가 다이제스트 함수의 블록 크기보다 큰 SHA1, SHA256 등과 함께 사용할 때 이러한 충돌의 잘 알려진 속성을 이해하려고합니다. 이 경우 충돌 중 더 작은 충돌은 SHA1의 경우 20 자, SHA256의 경우 32 자 (16 진수 다이제스트 길이의 1/2) 크기를 가지므로 이는 공격자가 고려해야 할 PBKDF2-HMAC-SHA1을 무차별 대입하는 것을 의미합니다. 20 자 이하의 암호 따라서 SHA256을 사용하는 경우 32 이하입니까? 더 긴 암호문은 사실상 무의미합니까? 감사.

답변

3 fgrieu Oct 28 2020 at 15:02

"brute force a PBKDF2-HMAC-SHA1"은 충돌 에 관한 것이 아닙니다 (적어도 단일 해시가 표적화되거나 암호 해시 입력에 솔트 가있는 경우 ). 그것은 A의 프리 이미지 공격.

SHA-1의 해시 출력은 160 비트입니다. 이는 20 바이트입니다 (문자가 아닙니다. 이것은 다른 개념이며 문자 인코딩 이있는 이유입니다 ). 걸릴 수 있습니다$2^{160}$가치. PBKDF2-HMAC-SHA-1의 출력은 더 작거나 (자르기로) 더 크게 (본질적으로 20 바이트 결과를 집계하여) 매개 변수화 가능한 크기를 갖지만 매개 변수는 종종 20 바이트로 설정되며 우리는 다음과 같이 가정합니다. .

이것은 PBKDF2-HMAC-SHA-1을 무차별 대입하기 위해 공격자가 20 자 이하의 암호문 만 고려하면됩니까?

아니 . 해시 크기의 임의 값에 확률이 있음을 의미합니다.$2^{-160}$주어진 해시와 일치합니다. 실질적인 결과는 무작위로 시도하는 것이 절망적이라는 것입니다.

암호는 종종 약 95 자의 ASCII 하위 집합으로 제한됩니다. $2^{131.714}$20 자 이하의 암호 (대부분 정확히 20 자). PBKDF2가 PBKDF2 당 1000 개의 SHA-1 해시를 수행하도록 매개 변수화되는 경우 (이는 정의에 의해 고려 된 가장 낮은 매개 변수이며 매우 불충분 함) 이러한 암호의 절반을 해싱하려면 초과해야합니다.$2^{140}$ 해시, 끝났습니다 $2^{40}$인류의 비트 코인 채굴로 지금까지 낭비 된 것보다 (백만) 배나 더 많습니다. 그것은 옵션이 아닙니다.

암호 검색은 일반적으로 몇 자 이상의 가능한 모든 암호를 시도하지 않습니다. 일반적으로 ≈70 자 중 ≈6 (매우 강력한 공격자 만이 약간의 암호 / 키 확장 이있는 경우 10 자 조합을 모두 대상으로 할 수 있음 ). 암호 검색은 사람들이 그럴듯하게 선택할 수있는 암호를 시도하여 선택 가능성을 줄이는 것입니다.