해시 및 염분에 대한 필요성을 이해하고 있지만 전체 해시가 안전 할 때 같은 (잠재적으로 손상된) 데이터베이스에 어떻게 소금을 저장하는지 이해하지 못합니다. 예를 들어 내가 공부하는 책은 무작위로 정수를 생성하고 RNGCryptoServiceProvider를 사용하여 바이트 []를 생성하여 각 사용자 (고유 한 사용자)의 고유 한 해시를 생성하도록 지시합니다. 모든 것이 훌륭하지만 로그인시 사용자의 암호를 확인하려면 데이터베이스 (또는 다른 파일)에서 고유 한 소금을 읽어야합니다. 이것은 소금을 저장하는 안전한 방법입니까?동일한 데이터베이스의 해시 된 암호에 대한 소금을 저장하는 이유는 무엇입니까?
답변
소금에 접근해도 공격자가 쉽게 해싱 할 수 없으므로 보안이 유지됩니다. 암호, 소금 및 해시가 주어지면 트리플이 맞는지 신속하게 확인할 수 있습니다. 그러나 소금에 대한 지식을 사용하여 암호를 얻을 수 없습니다.
소금이 첫 번째로 필요한 이유는 동일한 암호가 동일한 해시를 생성하지 않도록하는 것입니다. 소금이 없으면 공격자는 "무지개 테이블"을 해시하고 인코딩 된 사전에 대해 해시를 검사 할 수 있습니다.
소금은 미리 만들어진 테이블에서 해시를 찾아서 해킹을 방지합니다. 침입자가 소금을 알고 있으면이 공격 경로에서 암호를 사용하는 데 도움이되지 않습니다. 여전히 암호를 무차별 공격해야합니다.
감사합니다. 나는 염분을 이해합니다. 같은 데이터베이스에 소금을 저장하는 것이 안전할까요? –
@field_b 나는 왜 그것이 안전하다고 대답했다고 생각한다. – wRAR
소금을 맺으면 손상된 데이터베이스에 대해 오프라인 공격을 수행하는 것이 어려워집니다. 적어도 (소금에 절인 암호에 적용 할 수 없습니다 (무지개 테이블이라고도 함) 일반적인 암호를 기반으로 해시
- 미리 계산 된 목록 : 결국 모든 암호를 해독 할 충분한 자원을 가진 공격자는 소금에 절인 두 가지 방법을 어렵게하는 동안 모든 소금을 고려하지 않고)
- 소금에 절인 암호를 하나 크랙하면 다른 암호 (예 : 두 개의 암호가 동일한 지 여부)에 대한 정보가 제공되지 않습니다.
어려움이 증가하면 손상된 데이터베이스의 효과를 발견하고 완화하는 데 더 많은 시간이 소요됩니다.
해시와 소금을 분리하여 보안 성을 약간 높일 수 있습니다. 소금이없는 공격자는 소금을 무력화시켜야하기 때문입니다. 그러나 실제로이 분리를 달성하는 것은 어렵고 성가 시며 공격자는 해당 수준의 액세스 권한을 가진 경우 암호와 함께 소금을 얻을 가능성이 큽니다.
사용자마다 다른 소금을 사용한다는 것은 단일 사용자에 대해서만 일치하는 해시를 강요하는 데 모든 리소스를 소비해야한다는 것을 의미합니다. 따라서 반드시 "안전"하지는 않지만 오히려 전체 데이터베이스를 해독하는 것은 매우 어렵습니다 (불가능합니다). 심지어 하나라도 해킹하려는 노력이 터무니없는 경우.
레코드 당 소금을 글로벌 소금과 결합 할 수 있으므로 데이터베이스가 손상된 경우에도 여전히 실용적인 무차별 공격의 한 요소가 될 수 있습니다.
나는 모두와 함께 갈 말할 것 - 결국 다치게 할 수 없어 ...
하면 나쁜 사람이야 상상, 당신은 암호 데이터베이스에 액세스 할 수 있습니다. 거기에 많은 정보가 있습니다. 상황은 이미 충분히 나쁩니다. 나머지 우리에게 좋은 소식은 결국 이것은 입니다. 데이터입니다. 당신이 무엇 정말 살고, 살아있는 시스템에 액세스하고, 그 시스템이 원하는대로 할 수있는 능력 ... 특히 당신이 누군지 알고있는 경우.
다음은 트릭입니다. 액세스를 얻으려면 실제 개의 암호를 실제로 검색 할 필요가 없습니다. 같은 해시가되는 일부 텍스트 값을 찾아야합니다. 더 나쁜 것은 결과를 무차별 공격 할 필요가 없다는 것입니다. 필요한 해시를 생성 할 텍스트를 빠르게 찾을 수있는 유용한 테이블이 있습니다.
소금의 목적은 이러한 사전 계산 된 테이블에 주름을 추가하는 것입니다. 특정 해시를 생성 할 수있는 값을 가질 수 있지만 미리 계산 된 "무지개 테이블"은 소금을 고려하지 않습니다. 소금이 해시를 완전히 바꿉니다. 이제는 개별 암호를 무차별 적으로 사용하고 시스템 설계자가 수년이 걸릴 수있는 우수한 암호화 알고리즘을 사용하는 경우 다시 돌아 왔습니다.
* 해싱 * 프로세스는 쉽게 되돌릴 수 없습니다. 그것은 소금에 관련이 없습니다. – nneonneo
아마 그 종류의 공격이 어떻게 작동하는지 완전히 이해하지 못했을 것입니다. 그러나 DB가 공격자의 손에 들어가면 그는 소금과 해쉬 된 소금에 절인 암호를 가지게 될 것입니다. 암호로 암호를 얻을 수 없습니까? – Jigzat