2010-01-14 3 views
9

나는 두 개의 서로 다른 솔트 문자열, 즉 모든 사용자에 대해 동일한 코드에 저장되어 있고 다른 하나는 각 사용자가 고유 한 값을 가지고있는 데이터베이스에 저장된 다른 사용자 문자열을 해싱 할 생각이다.암호 해싱을위한 이중 소금?

단순히 데이터베이스에 값을 저장하는 것보다 효과적일까요?

어떤 조언, 의견이 appreiated.

감사합니다.

+0

mathoverflow가 목적이 아닙니다. 목적은이 사이트와 매우 다릅니다. –

+0

@jldupont : 보안 측면은 매우 컴퓨터 과학입니다. :). – kennytm

답변

19

전혀 효과가없는 경우 효과가 미미합니다. 정적 인 하드 코딩 된 소금은 해싱 알고리즘을 변경하는 것으로 만 볼 수 있습니다. 해시 알고리즘은 매번 똑같은 방식으로 발생하기 때문에 알고리즘의 일부로 간주 될 수 있습니다.

그러나 소금의 목적은 오프라인 균열 (무지개 테이블 포함)을보다 리소스 집약적으로 만들기 위해 비밀번호의 (최소) 강도를 확장하는 것과 유사한 임의성을 만드는 것입니다 (무지개 테이블 크래킹은 더 많은 CPU 시간을 필요로하며 무지개 표는 모든 문자열에 대해 모든 염을 필요로합니다).

정적 소금이 알려지지 않은 경우에만이 값을 얻을 수 있습니다. 알 수없는 알고리즘과 동일합니다. 바이너리 또는 소스를 공격자가 사용할 수있는 경우 리버스 엔지니어링에서 알고리즘과 하드 코딩 된 소금을 보여줍니다.

그리고이 문제가 상장 경우, 당신은 아마 완벽하지 아무것도 당신의 제품이 이미 옳은 일을 수행하고 추가 단계는 단지 쓸모없는 경우에도 완전히 파손 된 것으로 생각 많은 보안 매니아에서 플랙 처리해야합니다

.

물론, 정적 인 소금 - 하위 호환성을 유지 보수하는 문제와 해시 코드 주변의 버그를 수정해야 할 수도 있습니다.

정적 키 (또는 소금)의 이점은 비용이 들지 않습니다. 항상 열쇠와 소금을 역동적으로 만드십시오.

+0

정말 고맙습니다. – Dan