2012-02-14 4 views
1

나는이 주제가 백만 번 논의되었습니다. 그러나 그것은 나에게 새로운 것이고, 실제로 그것에 대해 읽거나 읽을 수있게되면 실제로 일어나는 일이나 일어날 일을 이해할 수 있습니다.암호, 소금, 해시, DB : 백만 시간 동안

사용자의 암호가 해시 된 저장소에 사용자 별 소금을 추가하므로 저장된 암호 해시가 hash (password + perusersalt)와 같습니다. 이렇게하면 다른 사용자의 동일한 비밀번호가 DB에 다른 문자열로 저장됩니다. 시원한. 하지만 누군가 DB에 침입하여 해시 된 암호를 찾는 것에 대해 걱정하지 않습니다. 나는 사용자 이름과 암호 조합에 대해 내 서버에 질의를하는 사람에 대해 걱정하고 있습니다. 이 경우 사용자 이름과 암호의 올바른 조합으로 로그인에 성공할 수 있기 때문에 소금에 절인 해시 된 암호 저장은 쓸모가 없습니다. 권리?

이 시나리오에서 소금이 거의 쓸모가 없다는 인상하에 나는 맞습니까? 서버는 인터페이스에서 사용자 이름과 암호 만 허용하기 때문에 (염분이 전송되지 않음) 정상적인 사전 공격이 가능합니다. 맞습니까?

그래서 소금은 DB에 액세스 할 수있는 사용자로부터 비밀 번호를 난독 화 (반대 레인보우 테이블 조회 만 가능) 할 수 있습니다. 흠.

관련 정보 : 내 웹 앱은 일반 암호를 전송하지 않습니다. 암호는 이미 해쉬 된 클라이언트 측으로, 누군가가 도난당한 암호에 대한 책임을 완전히 배제하기 위해 사용되며, 모든 것이 SSL을 사용합니다.

사용자 이름과 비밀번호의 올바른 조합이 물론 로그인에 성공해야하기 때문에 보안 수준을 최대한 높이는 것이 중요합니까?

내 머리에 엉망진창을 정리해 주셔서 감사합니다.

답변

2

당신은 무차별 공격에 대한 가정하에 정확합니다. 사용자가 간단한 암호를 가지고 있다면 소금과 해시는 별 문제가되지 않습니다. 사전 공격은 "암호"를 추측하고 침입자를 허용합니다. 사용자로부터 보안 암호를 요구 한 다음 단방향 암호화 (소금으로 암호 해시)를 수행하고 사용자가하는 것처럼 SSL을 사용해야합니다.

+1

웹 프론트 엔드를 제어하는 ​​경우 인위적으로 분당 시도 할 수있는 암호의 양을 제한하고 일부 잘못된 시도 후에 속도 저하를 시도한 후 hotmail과 같은 다른 사이트에서 사용하는 보안 문자 이미지를 추가 할 수 있습니다. – David

+0

RDBMS 솔루션에 따라 방정식의 웹 측면을 제어하지 않아도 일반적으로이를 제어 할 수 있지만 새 DB로 전환하기로 결정하면 이식성이 떨어질 가능성이 있습니다. –

+0

또한 bcrypt를 사용할 수도 있습니다. bcrypt는 느린 속도로 서버 속도에 관계없이 느린 속도로 진행되도록 설계되었습니다. –

0

"비밀번호는 해시 된 클라이언트 측 [...]에서 [...] ... 도난당한 비밀번호에 대한 책임을 거부하며 모든 것이 SSL을 사용합니다."

클라이언트가 해시 (비밀번호 + 소금)를 전송합니까?

이 디자인을 사용하면 클라이언트는 성공적으로 로그인하기 위해 암호가 필요하지 않으며 해시 만 필요합니다. 따라서 실제 비밀번호 (해시)의 누출에 대한 책임은 사용자에게 있습니다.

+0

클라이언트는 소금이없는 해시 된 암호를 전송합니다. 소금은 DB에 저장된 것과 관련이 없습니다.전송은 SSL로 보안됩니다. 책임을 거부한다는 것은 같은 암호를 사용하는 동일한 사용자의 내 해시 된 암호 계정을 다른 곳에서 열 수 없으며 사용자에게 서비스를 제공하고 개인 정보를 늘릴 수 있음을 의미합니다. 결코받은 적이 없어서 사용자의 암호를 잘못 사용했다고 비난받을 수는 없습니다. 그들. 이것은 내 시스템에 대한 보안 증가가 아니며 (감소 없음), 매우 시원합니다. – Yanone

+0

쿨러 : 클라이언트에 하드 고정 된 길이가 고정 된 소금을 사용하면 클라이언트가 이미 해시 (hardwiredsalt + plainpassword)를 전송할 때 쉽게 사용할 수있는 레인보우 테이블이 실패합니다. 물론 내 프로젝트에서 사용 된 해싱 방법은 자바 스크립트 (이 경우 SHA-256)에 표시되며, 동일한 방법을 사용하여 우연히 다른 사이트와의 해시 충돌을 방지합니다. – Yanone