2009-08-02 3 views
3

대부분의 프로그래머와 마찬가지로 나는 암호 기술 전문가가 아니지만 기본 사항을 이해합니다. 그러나 약간의 지식은 위험한 것일 수 있습니다 (Jeff's blog post 참조). 이를 염두에두고 소금 값의 목적을 이해하지만 사용 방법을 이해하는 데 약간의 도움이 필요합니다 소금 값.암호 해독 : 추가 모범 사례

나는이 주제에 대한 다른 게시물을 읽고 각 암호에 임의의 소금 값을 사용하여 암호화하는 것이 가장 좋습니다. 이 경우 사용자 인증을 시도 할 때 어떻게 임의의 소금 값을 재현합니까? 이 시나리오에서는 사용자가 제공 한 일반 텍스트 비밀번호를 암호화하고 암호화 한 다음 데이터베이스에 저장된 비밀번호와 비교합니다. 암호를 만들 때 암호화 된 암호와 함께 임의의 소금 값을 사용자 레코드에 저장합니까? 해커가 완전한 사용자 기록을 가지고 있다면 salt 값을 쓸모 없게 만듭니다.

+1

이 질문과 동일 항목 : http://stackoverflow.com/questions/1219899/where-do-you-store-your-salt-strings –

+1

내 부분에 대한 검색이 좋지 않습니다. 대답하기로 선택한 사람들에게 감사드립니다. –

+0

security.stackexchange.com에 대한 아주 훌륭하고 완벽한 대답은 다음과 같습니다. http://security.stackexchange.com/a/17435/26272 – blo0p3r

답변

8

소금의 주요 목적은 rainbow tables의 암호 해시를 사용하지 못하도록하는 것입니다. 소금을 사용하지 않고 단순히 미리 생성 된 역방향 조회 테이블을 사용하여 해시를 찾고 즉시 어떤 암호 아마 그것을 생성했습니다.

소금을 사용하면 무지개 테이블 접근법은 암호에 대한 해시 매핑이 특정 소금에 따라 완전히 다르므로 무효입니다. 따라서 소금 값마다 무지개 표를 개별적으로 생성해야합니다. 무지개 테이블을 생성하는 것은 처음부터 무지개 테이블의 도움없이 무작위로 해시를 처리하는 데 걸릴 시간에 비례합니다.)

소금은 공격자가 특정 사용자의 항목에 대해 특정 소금을 알고 있는지 여부에 관계없이 미리 생성 된 무지개 표를 사용하지 못하도록하기 때문에 그 소금을 별도로 저장할 이유가 없습니다. 각 항목마다 고유 한 염을 사용하고 있기 때문입니다.

1

나는 보통 사용자 데이터와 동일한 테이블에 내 소금을 저장합니다. 해커가 db에 직접 액세스 할 수 있다면 어쨌든 암호를 해독 할 수 있습니다. 소금은 지연시키기위한 유일한 방법입니다. 그것은 무지개 테이블을 사용하는 것을 어느 정도 막을 것입니다.

+3

소금이 충분히 많으면 무지개 표가 전혀 상관 없으므로 각 암호에 무차별 검색이 필요합니다. 또한 해커가 DB에 직접 액세스 할 수 있다면 더 큰 문제가 생길 수 있습니다. –