2013-04-01 3 views
3

해시 및 염분에 대한 필요성을 이해하고 있지만 전체 해시가 안전 할 때 같은 (잠재적으로 손상된) 데이터베이스에 어떻게 소금을 저장하는지 이해하지 못합니다. 예를 들어 내가 공부하는 책은 무작위로 정수를 생성하고 RNGCryptoServiceProvider를 사용하여 바이트 []를 생성하여 각 사용자 (고유 한 사용자)의 고유 한 해시를 생성하도록 지시합니다. 모든 것이 훌륭하지만 로그인시 사용자의 암호를 확인하려면 데이터베이스 (또는 다른 파일)에서 고유 한 소금을 읽어야합니다. 이것은 소금을 저장하는 안전한 방법입니까?동일한 데이터베이스의 해시 된 암호에 대한 소금을 저장하는 이유는 무엇입니까?

답변

3

소금에 접근해도 공격자가 쉽게 해싱 할 수 없으므로 보안이 유지됩니다. 암호, 소금 및 해시가 주어지면 트리플이 맞는지 신속하게 확인할 수 있습니다. 그러나 소금에 대한 지식을 사용하여 암호를 얻을 수 없습니다.

소금이 첫 번째로 필요한 이유는 동일한 암호가 동일한 해시를 생성하지 않도록하는 것입니다. 소금이 없으면 공격자는 "무지개 테이블"을 해시하고 인코딩 된 사전에 대해 해시를 검사 할 수 있습니다.

+0

* 해싱 * 프로세스는 쉽게 되돌릴 수 없습니다. 그것은 소금에 관련이 없습니다. – nneonneo

+0

아마 그 종류의 공격이 어떻게 작동하는지 완전히 이해하지 못했을 것입니다. 그러나 DB가 공격자의 손에 들어가면 그는 소금과 해쉬 된 소금에 절인 암호를 가지게 될 것입니다. 암호로 암호를 얻을 수 없습니까? – Jigzat

1

소금은 미리 만들어진 테이블에서 해시를 찾아서 해킹을 방지합니다. 침입자가 소금을 알고 있으면이 공격 경로에서 암호를 사용하는 데 도움이되지 않습니다. 여전히 암호를 무차별 공격해야합니다.

+0

감사합니다. 나는 염분을 이해합니다. 같은 데이터베이스에 소금을 저장하는 것이 안전할까요? –

+0

@field_b 나는 왜 그것이 안전하다고 대답했다고 생각한다. – wRAR

3

소금을 맺으면 손상된 데이터베이스에 대해 오프라인 공격을 수행하는 것이 어려워집니다. 적어도 (소금에 절인 암호에 적용 할 수 없습니다 (무지개 테이블이라고도 함) 일반적인 암호를 기반으로 해시

  • 미리 계산 된 목록 : 결국 모든 암호를 해독 할 충분한 자원을 가진 공격자는 소금에 절인 두 가지 방법을 어렵게하는 동안 모든 소금을 고려하지 않고)
  • 소금에 절인 암호를 하나 크랙하면 다른 암호 (예 : 두 개의 암호가 동일한 지 여부)에 대한 정보가 제공되지 않습니다.

어려움이 증가하면 손상된 데이터베이스의 효과를 발견하고 완화하는 데 더 많은 시간이 소요됩니다.

해시와 소금을 분리하여 보안 성을 약간 높일 수 있습니다. 소금이없는 공격자는 소금을 무력화시켜야하기 때문입니다. 그러나 실제로이 분리를 달성하는 것은 어렵고 성가 시며 공격자는 해당 수준의 액세스 권한을 가진 경우 암호와 함께 소금을 얻을 가능성이 큽니다.

0

사용자마다 다른 소금을 사용한다는 것은 단일 사용자에 대해서만 일치하는 해시를 강요하는 데 모든 리소스를 소비해야한다는 것을 의미합니다. 따라서 반드시 "안전"하지는 않지만 오히려 전체 데이터베이스를 해독하는 것은 매우 어렵습니다 (불가능합니다). 심지어 하나라도 해킹하려는 노력이 터무니없는 경우.

레코드 당 소금을 글로벌 소금과 결합 할 수 있으므로 데이터베이스가 손상된 경우에도 여전히 실용적인 무차별 공격의 한 요소가 될 수 있습니다.

나는 모두와 함께 갈 말할 것 - 결국 다치게 할 수 없어 ...

4

하면 나쁜 사람이야 상상, 당신은 암호 데이터베이스에 액세스 할 수 있습니다. 거기에 많은 정보가 있습니다. 상황은 이미 충분히 나쁩니다. 나머지 우리에게 좋은 소식은 결국 이것은 입니다. 데이터입니다. 당신이 무엇 정말 살고, 살아있는 시스템에 액세스하고, 그 시스템이 원하는대로 할 수있는 능력 ... 특히 당신이 누군지 알고있는 경우.

다음은 트릭입니다. 액세스를 얻으려면 실제 개의 암호를 실제로 검색 할 필요가 없습니다. 같은 해시가되는 일부 텍스트 값을 찾아야합니다. 더 나쁜 것은 결과를 무차별 공격 할 필요가 없다는 것입니다. 필요한 해시를 생성 할 텍스트를 빠르게 찾을 수있는 유용한 테이블이 있습니다.

소금의 목적은 이러한 사전 계산 된 테이블에 주름을 추가하는 것입니다. 특정 해시를 생성 할 수있는 값을 가질 수 있지만 미리 계산 된 "무지개 테이블"은 소금을 고려하지 않습니다. 소금이 해시를 완전히 바꿉니다. 이제는 개별 암호를 무차별 적으로 사용하고 시스템 설계자가 수년이 걸릴 수있는 우수한 암호화 알고리즘을 사용하는 경우 다시 돌아 왔습니다.