2012-08-27 2 views
6

나는 오랫동안 내 암호를 해싱하기 위해 PHPass를 사용 해왔다. 나는 암호를 적절하게 해시하기 위해 내가 완전히 이해하지 못하는 (또는 무시하는) 것들이 있다는 것을 인정한다. 그래서 나는 그것에 대해 찾을 수있는 모든 정보를 검토하고 있었다.적절한 염분 사용 및 PHPass 사용

검토 PHPass 문서, 나는이에 steped했습니다

실제 해시 외에, phpass 투명 새로운 암호 나 암호가 해시되는 임의의 염을 생성

하고, 해시 유형 인코딩, 소금, 암호 확장 반복은 "해시 인코딩 문자열"로 반환됩니다. phpass가 저장된 해시에 대해 암호 또는 암호 구를 인증하면 해시 유형 식별자, 소금 및 "해시 인코딩 문자열"의 반복 횟수를 유사하게 추출하여 사용합니다. 따라서 염수와 스트레칭을 염려 할 필요가 없습니다. - phpass가이를 처리합니다.

나는 나를 괴롭힌 문장을 굵게 표시했습니다.
나는 항상 소금이 약간 은밀해야한다는 점에서 비록 공격자에게 알려서는 안된다는 점에서 항상 그렇습니다. 따라서 올바르게 이해되면, PHPass는 동일한 해시에 사용 된 소금을 저장하므로 암호를 비교하고 유효한지 확인하는 데 사용할 수 있습니다.
내 질문은

  1. 안전한가요? 해시가 손상되면 공격자는 암호 해시에 사용되는 소금을 가지고 있습니다 ... 여기에 내가 놓친 것이 있습니다.
  2. 나는 소금에 절인 암호에 관하여 진짜로 자유롭게 여기에서있다? 정말로 PHPass에 의지 할 수 있습니까?
+0

. 이것은 '심층 방어'의 주요 원칙이다. 그러나 _phpass_가 이미 소금을 추가하면 다른 레이어가 추가되지 않습니다. – Leri

+0

1.) 어떤 종류의 보안에 대해 알고 있습니까? 더 구체적으로 만들 수 있습니까? - 2) 예 또는 아니오로 몇 분의 1 초 내에 다음 질문을 자신있게 대답 할 수 있습니까? "Phpass는 소금을 사용합니까?" - 확실하고 신속하게 대답 할 수있는 방법과 대답을 말해보세요. – hakre

+0

@hakra 나는 암호와 함께 소금을 저장하는 행위를 언급하고있다. 나는 항상 다른 장소 (예 : DB 필드 읽기)에 저장하는 것이 더 좋았지 만. –

답변

1

소금의 목적은 이 아니며, 비밀로 설정해야합니다. 그 목적은 각 해시 입력에 고유 한 구성 요소를 추가하는 것이므로 동일한 해시에 동일한 암호가 해시되지 않으므로 각 해시를 개별적으로 시도해야하기 때문에 무차별 대입 프로세스를 더욱 어렵고 시간이 오래 걸립니다.

염분이 비밀이라면 다소 안전 할 수 있지만 실제로는 응용 프로그램에 소금이 필요하므로 암호가 액세스 할 수있는 곳에 저장해야합니다. 잘. 따라서 실제로는 공격자가 암호 해시를 얻는 경우 일반적으로 어쨌든 소금을 얻을 수 있습니다.

1

정확하게 이해하면 염분은 주로 미리 계산 된 해시/무지개 표 공격을 저지하기 위해 사용됩니다. 사용되는 해쉬가 생성되어서 (예를 들어, PHPass에서 하드 코딩되지 않은) 합리적으로 전역 적으로 고유 한 것이면, 괜찮습니다.

3

소금이 비밀 대신, 염 각각에 고유 한 해시 결과가 인스턴스를 사용 확인하여가 '작동'으로 의미하지 않는다
약간의 배경. 이것은 계산 된 해시마다 다른 임의의 소금 값을 선택하여 수행됩니다.

염의 의도는 알려지지 않았지만 손상되지 않습니다. 공격자는 각 해시를 별도로 공격해야합니다. 따라서 암호와 함께 소금을 저장할 수 있습니다.

그럼, 안전한가요?
예! PHPass (모범 사례에 따르면)는 강력한 무작위 소금을 생성합니다. 그것은 잘 검토되고 양질의 도서관입니다.관심의

링크 : 보안에 또 하나 개의 레이어를 추가 salt``추가로
How to securely hash passwords?
How to store salt?
Password Hashing add salt + pepper or is salt enough?
Salt Generation and open source software