단방향 해시 함수가 실제로 단방향 일 경우 유용 할 것입니다.
두 명의 사용자가 동일한 암호를 선택하면 어떻게됩니까? 소금이 없으면 같은 해시를 얻습니다.
어째서? 사람들은 암호를 잘 선택하지 못합니다. 제한된 메모리와 자연스러운 내부 암호화 무작위성이 결여 된 이러한 생물은 짧고, 낮은 엔트로피와 무차별 적으로 강력한 암호를 선택합니다.
소금이 포함되지 않은 암호 해시를 해독하려면 Google it.
소금은 문제를 해결하는 데 도움이되지만 만병 통치약이 아닙니다. 소금을 사용하면 동일한 암호를 선택하는 두 사람이 같은 암호 해시를 얻지 못합니다. 소금은 두 사용자 모두 다른 것으로 가정합니다. 또한 소금은 rainbow table attacks을 예방하는데 도움이됩니다. 이는 암호를 해독하기위한 시간 메모리 절충입니다.
그래도 모든 문제가 해결되지는 않습니다. 데이터베이스가 공개되면 공격자가 여전히 brute force-passwords using low cost GPUs 일 수 있기 때문에 소금 + 암호화 해시로 충분하지 않습니다.
그래서 해결책은 무엇입니까? 당신은 소금을 필요로 할뿐만 아니라 천천히 진행되기 위해서는 무차별 적 강제가 필요합니다. 그래서 암호에 해시 함수를 사용하지 않고 대신 password hashing functions을 사용합니다. 어리석은 용어에 대해 나를 비난하지 마라, 나는 완전히 동의한다. 결론 : bcrypt, scrypt, argon2, pbkdf2 중에서 선택하십시오. 나는 개인적으로 bcrypt를 추천한다.
당신이 'SHA256' 해시 함수를 사용한다고 알고 있다고 상상해보십시오. 일부 사용자는 매우 약한'123' 암호를 선택했습니다. * 소금 *을 넣지 않으면, 무작위로 * 깨뜨릴 수 있습니다 : 모든 짧은 문자열 ('123' 포함)에'SHA256'을 실행하고 암호. –
암호 해시 암호 해싱은 충돌과 관련이 없습니다. 사용자 당 소금은 두 명 이상의 사용자가 동일한 암호를 갖는 경우 해당 암호 해시가 완전히 다름을 보장합니다.따라서 사용자 중 하나의 암호를 추측 한 공격자는 동일한 암호를 사용하는 다른 모든 사용자에게 자동으로 액세스하지 않습니다. –