2009-05-18 5 views
7

소금 베스트 프랙티스에 대해 couplegreat 토론이 있었으며 각 암호마다 다른 소금을 생성하여 데이터베이스의 암호와 함께 저장하는 것이 압도적 인 권장 사항 인 것 같습니다.데이터베이스 대신 코드에 소금 저장

그러나 소금의 목적을 올바르게 이해하면 무지개 공격으로 위험에 노출 될 가능성을 줄이는 것입니다. 그래서 데이터베이스에 저장함으로써 각 사용자마다 그것을 바꿀 수 있다고 생각합니다. 그러나 소금이 데이터베이스 근처에 없다면 어떻게 될까요? 코드에 단일 salt 값을 저장하면 (웹 서버에서 컴파일 된 dll에 있음) 공격자가 데이터베이스에 액세스하는 경우 동일한 목적을 수행하지 않겠습니까? 좀 더 안전 해 보일 것 같습니다.

답변

15

소금의 목적은 암호 당 무지개 표를 재생성해야한다는 것입니다. 단일 소금을 사용하는 경우 해커/크래커는 무지개 표를 한 번만 재생성해야하며 모든 비밀번호가 있습니다. 그러나 사용자 당 무작위로 생성하는 경우 사용자 당 하나씩 생성해야합니다. 해커 부분에 훨씬 더 비쌉니다. 이것이 평범한 텍스트로 소금을 저장할 수있는 이유입니다. 해커가 여러 개가있는 한 그것을 알고 있는지 여부는 중요하지 않습니다.

보안이 좋지 않아서 Microsoft가 그 사실을 알게되었습니다.

+2

두 가지 작업을 수행하거나 둘 다 수행하여 데이터베이스에 dup을 저장하거나 데이터베이스에서 세 번째 소금과 dup 인 네 번째 소금을 사용하여 둘 다 수행하십시오. D – Malfist

8

... 공격자가 DLL에 액세스 할 수있을 때까지.

16

소금의 가치는 각 사용자마다 다릅니다. 또한 비교를 위해 해시 된 값을 다시 만들 때이 고유하지 않은 값을 검색 할 수 있어야합니다.

모든 암호에 사용하는 단일 소금 값을 저장하면 처음에는 염분 값을 크게 줄입니다.

1

내가 염에서 배운 교훈은 다음과 같습니다 분할과 정복 (보안) 다른 답변에 추가

7

, 그것은 공격자가 그 암호를 알아내는 것과 같은 방식으로 소금을 알아낼 수 있음을 주목할 가치가있다 : 알려진 암호 (자신의 암호)가 주어지면 가능한 소금에 대해 무차별 공격을 할 수 있습니다.

+0

Great 포인트, 고마워. – ern