2010-11-29 2 views
2

사회 보장 번호의 해시에 대해 사전 이미지 공격을 실행하는 데 드는 비용에 대해 질문했습니다. The excellent answer 사회 보장 번호의 유형이 366,000,000 개의 해시 만 가지고 있으므로 이미지가 쉽게 손상 될 수 있습니다.제한된 값 집합에 대해 사전 이미지 공격 방지

내 질문은 이제 전 이미지 공격을 피할 수 있는지 여부입니다. 제 시나리오는 여러 고객이 사회 보장 번호를 중앙 서버에 저장해야한다는 것입니다. 해싱은 클라이언트간에 일관성이 있어야합니다. 클라이언트는 온라인 웹 서비스와 통신 할 수 있습니다.

답변

1

문제는 암호를 사용할 때 수행해야하는 것과 비슷합니다. 암호는 인간의 두뇌에 적합하므로 추측하기가 어렵지 않습니다.

사용이 반복
  • /각 공격자에 대한 더 비싼 "추측"할 해싱 반복 :

    낮은 엔트로피 비밀을 사용하는 경우 위험을 완화하기 위해 두 개의 보완적인 방법을있다.

  • 염분을 사용하여 비용 분담을 방지하십시오. 공격자는 공격받은 모든 암호/SSN에 대해 전체 사전 검색 공격을 지불해야합니다. 해싱은 고가하게

한 방법은 궁극적으로 고객의 컴퓨팅 파워에 따라 (가능한 한 큰 N와, 상기 데이터의 N 복사 병합을 해시이며 사용자의 인내). 예를 들어, (더미) SSN "123456789"의 경우 H (123456789123456789123456789 ... 123456789)을 사용하십시오. 너는 n을 수백만으로 계산할 것이다. 기본 PC에서 SHA-256은 초당 백 메가 바이트를 쉽게 처리 할 수 ​​있습니다.

소금은 데이터를 따라 해시 (SSN)에 사용되는 공용 데이터 조각이며 각 사용자마다 다릅니다. 소금은 비밀로 할 필요는 없지만 재사용해서는 안됩니다. SSN은 영구적 인 경향이 있으므로 (개인이 평생 동안 고유 한 SSN을 가짐) 사용자 이름을 소금으로 사용할 수 있습니다 (암호와 대조되는데, 사용자가 암호를 변경할 수 있으며 모든 사람에게 새로운 소금을 사용해야합니다. 새 비밀번호). 따라서 사용자 Bob Smith가 SSN 123456789를 사용하는 경우 프로세스가 충분히 느려지도록 충분한 수의 반복을 사용하여 H ("Bob Smith 123456789 Bob Smith 123456789 Bob Smith 123456789 ... Smith 123456789")을 사용하게됩니다.

새로 설치하지 않은 컴퓨터에서 사용자가 1 초 동안 기다릴 수 있도록 (사용자가 더 기다릴 수 없도록 만들 수 있음) 가정하면, 공격자가 결정하는 것보다 더 많은 것을 시도하는 것이 어려울 것으로 예상 할 수 있습니다 초당 수백 SSN. 단일 SSN을 크래킹하는 데 드는 비용은 수 주 안에 계산되며 사용자 이름을 소금으로 사용하기 때문에 공격자는 아무런 지름길도 가지지 않습니다 (예 : 염분이 많은 테이블을 포함하여 미리 계산 된 테이블을 제압합니다) .