2014-01-06 2 views
1

의 본질적인 속성 염석 :<a href="http://en.wikipedia.org/wiki/Salt_%28cryptography%29" rel="nofollow">Salt (cryptography)</a>에 위키 백과에서 암호

새로운 소금은 무작위로 비밀번호 생성됩니다. 일반적인 설정에서 소금과 암호는 암호화 된 해시 함수로 연결되고 처리되며 그 결과 출력 (원래 암호는 아님) 은 소금으로 데이터베이스에 저장됩니다.

하지만 개별 데이터베이스가없는 경우 어떻게해야합니까? 비밀번호의 본질적인 속성 (예 : 역순)으로 소금을 칠해도 괜찮습니까? 아니면 (더 나은?) 비밀 번호의 해시와 비밀 번호를 소금? 예를 들면 :

물론이 낮은 액세스 시스템과 함께 일하고 있어요 경우,이 성능 결과가 있지만의
md5(md5("password") + "password") 

하는 어떤 취약점 표시를 염장 이런 종류의?

다시 말하지만,이 작업을 수행하는 주된 이유는 소금을 저장하는 데 많은 어려움을 덜어주는 것입니다.

답변

1

이런 종류의 소금물에 어떤 취약점이 있습니까?

예. 고유 한 소금의 주요 목적은 동일한 암호를 선택하는 사용자가 다른 암호 해시를 가지게하는 것입니다. salt가 암호의 함수로 계산되면 동일한 암호를 공유하는 사용자도 동일한 암호 해시를 공유합니다.

해시 데이터베이스를 사용하면 공격자가 여러 번 나타나는 해시를 쉽게 찾을 수 있습니다. 이러한 암호는 무차별 대입 공격에 약하고 매력적인 대상이 될 수 있습니다.

비밀번호를 저장해야하고 전용 소금을 저장할 수없는 경우 더 나은 방법은 계정과 연결된 불변 필드 (예 : 사용자 이름 또는 계정 식별자)를 소금으로 사용하는 것입니다. 이 방법은 데이터베이스에 중복 된 암호 해시를 방지합니다.

2

비밀번호의 해시와 어딘가의 소금을 저장해야하므로 (다른 경우, 인증 할 시간이되었을 때 비교할만한 것이 있다면 어떻게 될까요?) 왜 함께 저장하지 않을까요?

암호와 소금의 해시 결과를 단일 필드에 저장하는 것이 일반적입니다. 일정한 길이의 소금을 사용하거나 소금에 사용 된 문자 세트의 일부가 아닌 분리 기호 문자를 사용하여 필요할 때 따로 따로 따로 따로 만들 수 있습니다.