0

나는 유지하기 위해 응용 프로그램을 상속 난 그냥 발견하는로부터 반환 된 JSON, 사용자가 로그인이 성공적으로 로그인이 포함 된 경우 :소금 및 암호화 된 암호를 모두 제공하는 보안 위험은 무엇입니까?

    DB를
  • 사용자 이름
  • 의 사용자 레코드의
  • 기본 키
  • 암호화 된 비밀번호
  • 암호의 소금

소금과 암호화 된 비밀번호를 가진 것은 일반적으로 소금의 목적을 무효화 것으로 보인다.

이제 폭력 또는 조회 테이블 공격을 크래킹 접근 방식으로 다시 사용할 수 있습니다.

이 문제를 해결하고 그 이상의 위협이 있습니까?

+0

"암호화 된 비밀번호"가 무슨 의미인지는 분명하지 않습니다. 해시 된 (또는 확장 될 수있는) 비밀번호를 의미합니까? 또는 실제로 키로 암호화되어 있습니까? 암호를 다시 일반 텍스트로 해독 할 수 있습니까? –

+0

@RobNapier 안녕하세요. Rob. 암호화 된 암호로 해시 (암호 + 소금) = 해시 된 결과를 의미합니다. – aero

답변

4

가장 큰 것은 아니지만 일반적으로 소금을 공개하는 것이 좋습니다. 당신은 비밀로 유지 될 pepper을 생각하고 있습니다.

소금에 절인 해시는 무차별 공격을 막기위한 것이 아닙니다. rainbow attack을 방지하기위한 것입니다. 해시 알고리즘에 입력 값에 소금을 포함 시키면 해커가 가능한 모든 소금에 대한 찾아보기 테이블을 만들지 않는 한 조회 테이블을 사전 계산할 수 없게됩니다.

+1

귀하의 통찰력과 유익한 답변을 주셔서 감사합니다. 나는 "후추"에 대해 들어 보지 못했고 내가 처음 읽었을 때 농담을하고 있다고 생각했습니다. – aero

2

내 의견으로는, 암호를 잊어 버리는 것과 같은 것이 아니더라도 프론트 엔드가 전혀 필요하지 않으며 암호를 얻는 침입자에 대한 정보를 제공한다는 것입니다! 즉, 공격자가 해당 정보를 얻는다면 가능한 모든 암호 조합을 해당 소금과 연결하거나 (또는 ​​해당 암호로 암호 사전을 해싱하여) 철저한 검색이 필요하지만 오프라인으로 사용할 수있는 자원을 제공하고 있음을 의미합니다. 공격하고, 이제 그는 그가 지루해지기 전까지는 원하는만큼의 다른 암호를 시도하거나 실제 암호를 얻습니다.

다른 사람이 다른 암호로 인증하려고 시도하는 공격자와 같다고 생각할 수도 있지만, 가장 큰 차이점은 온라인 공격에서 로그인 시도 횟수를 제한 할 수 있으므로 해당 공격을 차단할 수 없다는 것입니다. 그는 원하는만큼 시도 할 수 있지만 오프라인 공격에서는 원하는만큼 암호를 시도 할 수 있습니다.

이 모든 것이 전체 개체 대신 부울을 보내는 것으로 피할 수 있으며 거대한 리팩터링이 필요하지 않은 것처럼 고정되어 있어야한다고 생각합니다. 또한 그가 최악의 시나리오에서 정보를 사용하여 무엇을하는지 살펴 봅니다. 암호를 해시를 검색하여 쿠키 또는 로컬 저장소에 저장하여 사용자를 계속 인증합니다.

+0

@aero - 실제로 암호 해시를 전송하는 것이 의미가있는 상황을 찾기가 어렵습니다. 아주 좋은 이유없이이 작업을 수행해서는 안됩니다. – martinstoeckli

+0

감사합니다. 에스테반. 이는 공격자에게 암호를 오프라인으로 크랙 할 수있는 기회를 제공하는 좋은 점입니다. – aero

1

salt & 해시가 POST에서 로그인 처리기에만 사용할 수있는 경우 여기의 피해는 매우 제한적입니다.

데이터를 반환하는 일부 웹 메서드 (/currentUser/getDetails)가 있으면 사이트의 다른 곳에서 XSS (Cross-Site Scripting) 취약점이 발생할 위험이 있습니다. 공격자는 XSS를 통해이 방법을 호출 한 다음 오프라인 크래킹을 위해 해쉬 된 암호와 소금을 검색 할 수 있습니다.

또 다른 위험은 JSON 응답이 output anti-caching headers이 아니면 동일한 컴퓨터의 다른 사용자가 암호 해시를 검색 할 수 있다는 것입니다.

비밀번호 해시가 bcrypt 또는 pbkdf2와 같은 보안 알고리즘을 사용하는 형식이 아닌 Hash(Password+Salt) 형식임을 염려합니다.

+0

감사합니다 SilverlightFox, "출력 방지 캐싱 헤더"에 대한 좋은 고려 사항이며 XSS 취약점으로 인해 현재 JSON이 보안에 대한 더 나쁜 위협을 초래할 수 있습니다. – aero

관련 문제