2009-05-02 2 views
-2

좋습니다. 따라서 해시의 모든 문제점은 사용자가 15 자 이상의 암호를 입력하지 않아야한다는 것입니다. 대부분은 4-8자를 사용하여 공격자가 무지개 테이블로 쉽게 깨지도록 만듭니다.궁극 해시 보호 - 개념 토론

해결 방법, 사용자 소금을 사용하여 해시 입력을 더 복잡하고 50ch 이상으로 만들면 테이블을 생성 할 수 없게됩니다 (크기가 큰 문자열의 경우 큰 방법). 또한 각 사용자에 대해 새 테이블을 만들어야합니다. 문제 : DB를 다운로드하면 사용자 소금을 얻을 수 있으므로 충분히주의를 기울이면 다시 사각형으로 돌아갑니다.

해결책 "사이트"후추와 사용자 소금을 사용하면 DB를 얻더라도 설정 파일을 알아야합니다. 문제점 : DB에 들어갈 수 있다면 파일 시스템에 들어가서 사이트 후추를 발견 할 수 있습니다.

이렇게 알려진 모든 것 - 공격자가 귀하의 사이트에 들어가서 모든 것을 얻는다고 가정합니다. 이제 어떻게하니?

토론의이 시점에서, 대부분의 사람들은 "누가이 시점에서 걱정합니까?"라고 대답합니다. 그러나 그것은 "나는 다음에 무엇을해야할지 모르기 때문에 그다지 중요하지 않다"고 말하는 것이 싼 방법 일뿐입니다. 슬프게도, 그 밖의 모든 곳에서 나는이 질문에 답장을했다. 대부분의 프로그래머들은 매우 중요한 부분을 놓치고 있음을 보여줍니다.

귀하의 사이트가 사이트의 다른 95 %와 비슷하고 사용자 데이터 (또는 완전히 차단 된 액세스)와 같은 이미지가 스쿼트에 가치가없는 이미지를 만들 수 있습니다. 침입자는 "Bob"이 은행 사이트에서와 같은 방식으로 사이트에서 동일한 암호를 사용한다는 것을 알고 있기 때문에 사용자 "Bob"중 하나를 상대로 발생합니다. 그는 또한 밥이 거기에서 자신의 생명을 구할 수 있음을 알고 있습니다. 이제 공격자가 해시 사이트를 해킹 할 수 있다면 나머지는 케이크 조각이됩니다.

여기 내 질문입니다 - 어떻게 추적 가능한 경로없이 암호의 길이를 연장합니까? 또는 해싱 프로세스를 어떻게 복잡하게 만들어 적시에 복제 할 수 있습니까? 내가 알아 낸 유일한 점은 해시를 수천 번 다시 해시하고 최종 무지개 표를 만드는 데 소요되는 시간을 1,000 배로 늘릴 수 있다는 것입니다. 이는 공격자가 테이블을 만들 때 동일한 경로를 따라야하기 때문입니다.

다른 아이디어?

+1

이것은 여러 번 이미 논의되었습니다. 비밀 번호 소금에 대한 다른 스레드를 참조하십시오. –

+2

간단한 해결책 : 더 긴 암호를 요구하십시오. – jalf

+0

필요한 비밀번호 길이가 너무 길어서 사용자에게 물어볼 수 없습니다. 기호가 다른 15 자 이상이 필요합니다. 대부분의 사이트는 강력한 8 자의 암호를 얻을 수있어서 운이 좋았습니다. – Xeoncross

답변

2

"내가 생각해 낸 유일한 점은 해시를 수천 번 해시로 다시 해쉬하고 최종 무지개 표를 만드는 데 걸리는 시간을 1,000 배로 늘릴 수 있다는 것입니다."

정확히 Blowfish 기반의 BCrypt 해시가 무엇에 관한 것이 아닌가요? brute force cracking (그리고 무지개 테이블 생성)이 취소 할 수 있도록 해시를 계산하는 데 걸리는 시간이 증가합니까?

에 대해 자세히 적응 비용 해싱 알고리즘 "우리는 적응 비용 (...) 두 알고리즘 을 제시": http://www.usenix.org/events/usenix99/provos.html

+0

보낸 BCrypt 링크는 해시가 아닌 파일 암호화 용입니다. 그러나 BCrypt 메서드는 해싱 알고리즘에서도 사용할 수 있습니다. 문제는 레인보우 테이블을 MD5만큼 쉽게 Bcrypt를 사용하여 생성 할 수 있다는 것입니다. 당신이 말하는 것은 사실 인 BCrypt 알고리즘을 깨는 것이 더 어렵다는 사실입니다.하지만 우리는 그것을 해체하려고하지 않습니다. 단지 무지개 창을 만들기 쉽습니다. – Xeoncross

+1

Blowfish에는 비싼 키 설정이 있습니다. 이는 BCrypt의 기본 구성 요소로 사용됩니다. BCypt는 계산 상으로 비싼 설계입니다. 따라서 해시 테이블을 만드는 작업은 MD5 해시 테이블을 만드는 것보다 훨씬 더 많은 시간이 걸립니다. – Jacco

+0

예, BCrypt가 자연스럽게 작성하는 데 더 많은 시간이 걸리는보다 복잡한 알고리즘임을 이미 알고 있다고 가정합니다. SHA512가 BCrypt보다 오래 걸리는 것처럼. 그러나 이러한 모든 알고리즘은 여전히 ​​매우 빠르고 PC는 매분마다 수천에서 수십만 개의 해시를 생성 할 수 있습니다. 즉, 어떤 알고리즘을 선택했는지 결정해야합니다. 즉, 무지개 테이블을 만드는 것은 공격자가 사용자를 원하면 큰 문제가되지 않습니다. 암호. – Xeoncross

1

방법 "고추"아이디어를 복용하고 구현하는 방법에 대한 암호를 해싱하기 위해 별도의 서버에 설치하고 가능한 한 간단하고 안전한 서비스를 제외하고는 잠겨 있습니다. 악용을 막기 위해 속도 제한을 적용 할 수도 있습니다. 공격자에게이 서버에 대한 액세스 권한을 얻거나 후추 엔지니어링, 사용자 지정 RNG 및 일반 텍스트 확장 알고리즘을 리버스 엔지니어링하여 극복 할 수있는 하나의 장애물을 부여합니다.이에

물론

그들이 잠시 동안 사용자 활동에 evesdrop 단지 수있는 모든에 액세스 할 수있는 경우 ...

+0

그건 실제로 좋은 생각입니다. +1 – Zifre

+0

예, 이것은 이전에 언급되었습니다. 시스템에 더 많은 레이어를 추가할수록 좋습니다. 그러나 대부분의 사람들에게이 구현의 타당성에 대해서는 확신 할 수 없습니다. 저는 많은 사람들이 가르쳐서 사용할 수있는 개념을 찾고 있습니다. 또한 귀하가 옳습니다. 모든 사람들이 액세스 할 수 있다면 서버에 보낸 POST 데이터를 모니터하고 일반 텍스트 암호를 얻을 수 있습니다. – Xeoncross

+0

시스템에 레이어를 추가하면 실수를 저지르는 변화가 커지고 새로운 보안 구멍이 생깁니다. – Jacco

1

좋아 ... uhmm, 내 의견 :

  • 당신은 할 수 없습니다 원래 암호를 다시 해시에서 가져옵니다. 나는 해시를 가지고 있는데 해시에 맞는 암호를 찾을 수 있지만이 암호를 사용하는 다른 사이트에 로그인 할 수는 없습니다. 모두 소금을 사용한다고 가정하고 가정합니다. 실제 문제는 없습니다.
  • 누군가가 DB를 얻거나 설정을 얻는 사이트를 얻는다면 어쨌든 망 쳤어.
  • 관리자 또는 다른 수퍼 계정의 경우 두 번째 평균 확인, 즉 특정 IP 범위에 대한 로그인 제한, 클라이언트 측 SSL 인증서 사용 등을 구현하십시오.
  • 일반 사용자에게는 많은 기회가 없습니다. 당신이 그들의 암호로하는 모든 일은 어떤 설정이나 데이터베이스에 저장 될 필요가 있습니다. 그래서 사이트를 가지고 있다면, 나는 당신의 마술 뱀 기름도 가지고 있습니다.
  • 강력한 비밀번호 제한이 항상 작동하지는 않습니다. 일부 사이트에서는 비밀번호에 숫자가 있어야하므로 대부분의 사용자는 일반적인 비밀번호에 1을 더합니다.

그래서 여기에서 달성하고자하는 것이 확실하지 않습니까? 사용자 암호 앞에 소금을 추가하고 두 번째 인증 수단으로 관리자 계정을 보호하는 것이 가장 좋은 방법 인 것으로 나타났습니다. 사용자가 적절한 암호를 선택하지 않고 강제로 실행할 수 없기 때문입니다.

+0

처음부터 시작하여 포인트 커버하기. 첫째, 암호를 사용하여 로그인 할 수 없다는 생각이 들지 않았습니다. 나는 당신이 그것을 재고해야한다고 생각합니다. 둘째로, 나는 다시 사이트가 휴지통에 처하게 될지 걱정하지 않습니다. 사용자를 보호하려고합니다. 셋째, 이러한 예방 조치는 사용자 로그인과 관련이 있습니다. 이는 우리가 논의하는 것이 아닙니다. 우리는 당신의 해시, 소금 및 후추를 얻는 공격자에 대해 이야기하고 있습니다. 그런 다음 뱅크 오브 아메리카를 방문하고 일치하는 암호 해시로 첫 번째 시도에서 Bob으로 로그인하십시오. 네, 더 좋은 방법을 찾으려면이 주제의 요점입니다. – Xeoncross

+0

다섯째, 영숫자 + 기호 암호보다 짧고 쉬운 암호를 입력하는 사람들은 다시 문제가됩니다. 우리는 해결책을 찾아야합니다. – Xeoncross

+0

사람들이 귀하의 사이트에 로그인 할 수 없다는 말은 아닙니다. 이미 모든 것을 가지고 있기 때문에 더 이상 중요하지 않을 수도 있습니다. 그리고 나는 뱅크 오브 아메리카가 중요한 행동 (보통 자금을 이체하는 두 번째 비밀 번호 인)에 대해 인증의 적절한 제 2의 평균을 가질 것이라고 기대할 것이다. 소금기가있는 해시보다 데이터의 보안을 유지하면서 사이트 및 데이터베이스의 완전한 도난을 견뎌야하는 경우 많은 대안을 볼 수 없습니다. –

6

솔루션, 해시 입력이 더 복잡하게 사용자의 소금을 사용하고 50chars 이상 그렇게 그들은 이 ( 문자열 크기에 큰하는 방법) 테이블을 생성 할 수 없을 것이다. 또한 사용자 각각에 대해 새 테이블을 만들어야합니다. 문제 : db 을 다운로드하면 사용자 소금을 얻을 수 있으므로 으로 충분하면 으로 돌아갑니다.

이러한 추론은 그릇된 것입니다.

레인보우 테이블 (일반 사전 공격의 특정 구현)은 시간 공간을 제공합니다. 그러나 사전 (무지개 또는 기타)을 생성하는 데는 많은 시간이 필요합니다. 다중 해시에 대해 사용될 수있는 경우에만 가치가 있습니다. 소금이 이것을 막습니다. 소금은 비밀이 될 필요가 없으며 주어진 암호에 대해 예측할 수 없어야합니다. 이것은 특정 소금에 대해 생성 된 사전을 공격자가 무시할 가능성을 최소화합니다.

+0

참고 : http://stackoverflow.com/questions/348109/is-double-hashing-a-password-less-secure-than-just-hashing-it-once/348140#348140 – erickson

+0

나는 두려워하고 있습니다. 부정확하다. 내가 소금을 가지고 있다면 0-12chars의 무지개 표를 생성하고 각자 소금을 첨가하면된다. 사용자 해시가 금이갔습니다. – Xeoncross

+1

추측 할 필요가 없습니다. 왜 증명하지 그래? "erickson"을 소금으로 사용하고, 암호를 추가하고, SHA-1의 한 반복을 사용하십시오. 예를 들어, 암호가 ABCDEFGHIJKL이면 다음 명령을 사용할 수 있습니다.'echo -n 'ericksonABCDEFGHIJKL'| hashs "9c1121a99b6b5afeaa02684093f4c766f94212d2"를 생성합니다.암호 "erickson"과 함께 SHA-1 해시 "0c67c6eb301bb6df94af524f98305cb2648d25eb"을 생성하는 비밀 암호를 선택했습니다. 72 시간 이내에 올바른 해시를 생성하는 비밀번호를 찾을 수 있다면 일주일 동안 내 글을 upvote 할 것입니다. – erickson

-1

나는 누군가가 해결책을 가지기를 바랬지 만 슬프게도 내가 처음 질문을 올렸을 때 나는 더 나아지지 않았다. 할 수있는 일은 없지만 무지개 테이블 (또는 무차별 대입) 해시 생성의 전체 프로세스 속도를 늦추려면 시간 소모적 인 알고리즘이나 1,000의 시간을 다시 해쉬하는 것이 필요합니다.