개발자 도구 · SHA 해시 계산기
비밀번호를 일반 SHA-256 해시로 저장하면 안 되는 이유
· 그것이 중요한 이유
비밀번호 보안 암호화
SHA-256는 빠르도록 설계되었으며 이는 정확히 암호에 원하지 않는 것입니다. 이 게시물에서는 속도가 문제인 이유와 비밀번호 해싱 기능의 차이점에 대해 설명합니다.
SHA-256는 비밀번호 저장소가 아닙니다. 빠른 해싱입니다. 일반 SHA-256은 공격자에게 동일한 추측 속도를 제공하므로 강력한 암호화 알고리즘임에도 불구하고 부적합합니다.
개발자는 로그인 시스템을 구현하고 비밀번호를 SHA-256 해시로 저장합니다. 알고리즘은 암호화가 강력하며 애플리케이션은 솔트를 적용하지 않아 코드를 단순하게 유지합니다. 사용자가 로그인하면 애플리케이션은 제출물을 해시하고 저장된 값과 비교합니다. 이 디자인은 단순하면서도 우아하며 비밀번호 저장에는 전혀 적합하지 않습니다. 이는 이론적인 문제가 아닙니다. 이는 인증 시스템에서 가장 흔히 발생하는 심각한 실수입니다. 공격자가 훔친 데이터로 무엇을 할 수 있는지 고려할 때까지 디자인은 방어 가능해 보입니다.
결함은 SHA-256이 약하다는 것이 아닙니다. SHA-256은 보안 커뮤니티의 신뢰를 받으며 무결성 검사 및 콘텐츠 주소 지정을 위해 업계 전반에서 사용되는 강력한 암호화 알고리즘입니다. 결점은 SHA-256가 빠르며 빠르다는 것은 암호에 필요한 것과 정반대라는 것입니다. 비밀번호 해시는 단순한 암호화 기본 요소가 아닙니다. 이는 특정 문제, 즉 추측에 대한 방어를 위해 설계된 특정 종류의 도구입니다. 속도는 체크섬의 특징입니다. 암호에서는 재앙입니다.
빠른 것이 SHA-256의 핵심입니다. 무결성 검사에는 속도가 필요하며 공격자는 추측할 때와 동일한 속도를 얻습니다.
SHA-256 비밀번호 해시의 데이터베이스가 손상된 경우 공격자는 해시를 되돌릴 필요가 없습니다. 공격자는 "password", "123456", "hello" 등과 같은 일반적인 비밀번호 사전을 구축합니다. 각 후보는 계산적으로 간단한 작업인 SHA-256로 해시되고 도난당한 데이터베이스와 비교하여 확인됩니다. 공격자는 로그인 서비스에서 사용하는 것과 동일한 빠른 기본 요소를 사용하여 후보 SHA-256 값을 계산한 다음 속도 제한 없이 오프라인에서 각 결과를 비교할 수 있습니다. 정확한 속도는 하드웨어 및 구현에 따라 다르므로 이 문서에서는 의도적으로 초당 추측이나 침해 시간 주장을 하지 않습니다.
속도가 전체 문제입니다. SHA-256는 속도가 빠릅니다. 그것이 디자인 의도입니다. 다운로드 체크섬을 확인하고, 콘텐츠 주소를 계산하고, 기다리지 않고 머클 트리를 구축할 수 있습니다. 이러한 애플리케이션에서는 속도가 특징입니다. 비밀번호의 경우 속도는 재앙입니다. 비밀번호 데이터베이스가 도난당하고 SHA-256로 해시되면 공격자는 검증을 위해 합법적인 서버와 동일한 추측 속도를 갖게 됩니다. 이러한 대칭성은 비밀번호 보안을 깨뜨립니다. 합법적인 서버와 공격자 모두 빠른 범용 다이제스트의 이점을 얻습니다. 공격자만이 애플리케이션의 로그인 제어 없이 오프라인으로 반복할 수 있습니다.
사전 및 레인보우 테이블 — 솔트되지 않은 해시에 대한 사전 계산 및 솔트가 변경하는 사항
미리 계산된 사전이 실용적이 되는 곳입니다. 공격자는 하루 동안 가장 일반적인 수천 개의 비밀번호, Name1990과 같은 일반적인 패턴 또는 여러 언어로 된 전체 사전에 대해 SHA-256 해시를 계산할 수 있습니다. 결과 테이블을 레인보우 테이블이라고 합니다. 미리 계산된 테이블에 대해 도난당한 SHA-256 해시를 즉시 조회할 수 있습니다. 미리 계산된 테이블이 없더라도 GPU 가속 해싱을 사용하면 10억 개의 추측을 계산하는 것이 쉽지 않습니다. 공격자가 계산하는 데 드는 비용이 너무 낮아 취약한 비밀번호라도 몇 분 안에 무너집니다.
ToolAcre SHA 해시 계산기는 이 속도를 직접적으로 보여줍니다. 짧은 텍스트를 붙여넣고 SHA-256 버튼을 클릭하면 결과가 즉시 나타납니다. 해시 계산기에서 여러분이 존경하는 속성인 그 즉각적인 결과는 일반 SHA-256을 비밀번호로 방어할 수 없게 만드는 정확한 속성입니다. 공격자는 모든 추측에 대해 동일한 즉각적인 결과를 얻습니다. 체크섬 및 무결성 검사의 경우 그 속도는 완벽합니다. 비밀번호의 경우 보안에 치명적입니다.
비밀번호 해싱 기능이 추가하는 것 — bcrypt, scrypt, Argon2 및 PBKDF2의 작업 요소, 메모리 경도 및 사용자별 솔트
솔트는 해싱 전 비밀번호에 추가되는 임의의 값이므로 사용자마다 솔트가 다릅니다. 두 명의 사용자가 동일한 비밀번호를 사용하더라도 서로 다른 값으로 해시됩니다. 이는 미리 계산된 레인보우 테이블을 깨뜨립니다. 공격자는 각 솔트에 대해 독립적으로 테이블을 계산해야 합니다. 독립적으로 생성된 사용자별 솔트를 사용하면 하나의 미리 계산된 테이블이 더 이상 모든 계정에 변경되지 않고 적용됩니다. 그러나 솔트는 사전에 공격하는 대신 공격 중에만 공격자가 테이블을 계산하도록 강요합니다. 해싱이 여전히 빠르면 공격자는 더 많은 테이블을 병렬로 계산하고 빠른 프리미티브를 사용하여 각 계정을 계속 추측합니다. 소금은 필요하지만 충분하지는 않습니다. 이는 피해자 간의 사전 재사용을 방지하지만 공격자의 핵심 작업인 추측을 늦추지는 않습니다. 해싱 속도는 여전히 추측 속도입니다.
실제 예 — 일반 비밀번호의 SHA-256이 얼마나 빨리 인식되는지와 정성적으로 설명된 조정된 비밀번호 해시를 비교합니다.
비밀번호 해싱 기능은 다른 접근 방식을 취합니다. Bcrypt, scrypt, Argon2id 및 PBKDF2는 비밀번호 확인을 위해 특별히 제작되었습니다. 여기에는 모두 작업 요소(해싱을 의도적으로 비용이 많이 드는 매개변수)가 포함되어 있습니다. Argon2는 가장 현대적입니다. CPU 시간과 메모리 소비를 모두 조정합니다. Bcrypt는 각 증분에 따라 작업을 두 배로 늘리는 조정 가능한 비용 요소를 사용합니다. 이들 모두에는 소금 생성 기능이 내장되어 있습니다. 이러한 도구는 공격자 모델을 염두에 두고 설계되었습니다. 작업 요소가 중요합니다.
비밀번호 해싱 기능은 모든 검증에 구성된 비용을 일부로 만듭니다. 후보를 테스트하려는 공격자는 추측할 때마다 해당 비용을 지불해야 합니다. 배포 간에 구체적인 타이밍을 안전하게 복사할 수 없기 때문에 매개변수 섹션에서는 하드웨어의 실제 생산 클래스에 대한 벤치마킹이 필요합니다. 이러한 비대칭성이 비밀번호 해싱을 작동시키는 이유입니다. 작업 요소는 "공격자 이점"에서 "수비자 이점"으로 이동합니다.
레거시 SHA-256 테이블 마이그레이션 — 기존 해시를 래핑하고 다음 로그인 시 다시 해싱
이 저장소에는 특정 비밀번호 기능이나 공격자에 대한 벤치마크가 포함되어 있지 않기 때문에 작업된 비교는 정성적으로 유지됩니다. 공통 비밀번호는 매번 즉시 동일한 일반 SHA-256을 생성하므로 기존 사전 항목이 이를 동일하게 식별할 수 있습니다. 조정된 비밀번호 기록에는 고유한 솔트 및 비용 매개변수가 포함되어 있으며 각 후보에 대해 구성된 작업이 필요합니다.
이러한 대조는 초당 유망한 추측 없이 설계 오류를 설정합니다. 하드웨어, 구현 및 선택된 매개변수가 타이밍을 결정합니다. 방어 가능한 결론은 불변입니다. 범용 다이제스트에는 조정 가능한 작업 요소나 메모리 비용이 없지만 비밀번호 해싱 기능은 이러한 비용을 부과하기 위해 특별히 선택됩니다.
여기서 다루지 않는 내용 — 하드웨어 및 위협 모델에 따라 특정 비밀번호 해시에 대한 매개변수 선택
매개변수 선택은 의도적으로 이 계산기와 이 문서 외부에 있습니다. 올바른 설정은 서버 대기 시간 예산, 사용 가능한 메모리, 동시성 및 현재 위협 모델에 따라 달라지므로 관련 없는 배포에서 고정 값을 복사하면 안전 제어가 민속으로 전환됩니다. 프로덕션급 하드웨어에서 선택한 비밀번호 기능을 벤치마킹하고 용량 변경에 따라 다시 검토하십시오.
ToolAcre는 해당 연습을 수행할 수 없습니다. 해당 패널은 텍스트와 SHA 식별자를 허용한 다음 일반 다이제스트를 반환합니다. 솔트 필드, 메모리 설정, 반복 제어 또는 비밀번호 기록 형식을 노출하지 않습니다. 이러한 부재는 텍스트 상자에 비밀번호를 반복적으로 해싱하여 해결할 수 있는 누락된 기능이 아니라 유용한 경계 신호입니다.
요점: 즉각적인 결과는 경고입니다. ToolAcre SHA 해시 계산기는 SHA-256이 얼마나 빠른지 보여줍니다. 이것이 바로 사용자의 비밀번호를 보관해서는 안 되는 이유입니다.
비밀번호를 일반 SHA-256로 저장해 온 레거시 시스템은 모든 사용자가 즉시 재설정하지 않고도 앞으로 마이그레이션할 수 있습니다. 기술은 이전 해시를 "래핑"하는 것입니다. SHA-256 값을 가져와 Argon2로 다시 해시합니다. 사용자가 다음 로그인할 때 시스템은 이전 SHA-256가 일치하는지 확인합니다. 그렇다면 해당 결과에 대해 Argon2를 계산하고 래핑된 버전을 저장합니다. 다음에 사용자가 로그인하면 시스템은 Argon2에 대해 직접 확인합니다. 마이그레이션은 일반적인 로그인 흐름 중에 투명하게 발생합니다.
이 래핑 접근 방식은 손상된 이전 비밀번호가 이제 작업 요소에 의해 보호되도록 보장합니다. SHA-256 해시의 이전 데이터베이스를 사용하는 공격자는 더 이상 해시를 크랙할 수 없습니다. Argon2의 비용이 포함된 래핑된 버전을 공격해야 합니다. 마이그레이션은 일반적인 로그인 흐름 중에 사용자에게 투명하게 발생합니다. 각 로그인은 사용자 경험을 방해하지 않고 해시를 강화할 수 있는 기회를 만듭니다. 올바른 작업 요소를 선택하는 것은 하드웨어와 위협 모델에 따라 다릅니다. Argon2 기본값은 합리적입니다. 웹 서비스에 대한 19 반복, 512 MB 메모리 및 1 병렬 처리입니다.