왜 SHA-256 혼자 암호 저장에 적합

파일 체크섬과 서버 측 암호 저장은 다른 문제를 해결합니다. 암호 저장은 또한 각 따로따로 비싼 추측해야 합니다.

3 분 읽음Time needed: Reading; 구현은 별도의 리뷰를 필요로 합니다.
이 가이드에서

Hashing은 암호화되지 않습니다 : 해당 암호 작업이 없습니다. 절대로, 데이터베이스 누출 후 공격자는 해시 추측하고 응용 프로그램의 로그인 속도 제한을 통과하지 않고 도난 기록과 비교할 수 있습니다.

SHA의 속도는 단점이 있습니다.

SHA-256은 무결성 검사 및 많은 암호화 응용 프로그램에 유용합니다. 그것의 속도는 암호 저장을 위해 바람직하지 않습니다. 소금에 추가 SHA256(salt + password) 충분히 비싼 추측하지 않습니다. 소금과 computational 비용은 다른 목적을 봉사합니다.

credential 형식 또는 정규적인 해시의 반복을 발명하지 마십시오. 유지된 암호 해싱 라이브러리를 사용합니다.

전용 암호 해싱 기능 선택

OWASP는 새로운 시스템에 대한 Argon2id를 선호하며, 사용할 수 없을 때 scrypt와 함께합니다. PBKDF2는 특정 준수 요구 사항을 제공합니다. Bcrypt는 레거시 시스템에 대한 관련이 있지만 입력 길이를 포함하여 제한이 있습니다.

생성 및 검증, 소금 발생 및 매개 변수 저장을위한 라이브러리 기능을 사용합니다. 대상 서버의 현재 지도 및 측정에서 비용 매개변수를 선택하십시오. 동시 로그인 및 자원 제한의 계정 : 비용이 많이 들지 않아 서비스 부족을 만들 수 없습니다. 제한되는 온라인 비율은 필요합니다.

소금과 후추를 견딜

소금은 무작위이고 각 기록에 독특합니다; 그것은 비밀이 아닙니다. 알고리즘 식별자 및 검증 매개 변수를 저장하고, 종종 라이브러리의 인코딩된 레코드 내에서.

Pepper는 암호 데이터베이스 밖에서 유지되는 옵션 비밀입니다. 그것은 일부 breach 시나리오에 도움이 될 수 있지만 교체 및 키 관리를 준수합니다. 그것은 소금과 적당한 해시 함수를 대체합니다.

성공적인 검증 후 업그레이드 기록

성공적인 로그인에서, 먼저 이전 레코드를 확인 한 다음 매개 변수가 나올 경우 제출 된 암호를 다시 해시합니다. 기존 hashes에서 전체 데이터베이스를 마이그레이션할 수 있는 원래 암호를 복구 할 수 없습니다. Inactive 계정은 별도의 재설정 또는 마이그레이션 정책이 필요합니다. Rehashing은 이전 누출을 사용하지 않습니다.

배포하기 전에, incorrect 암호를 테스트, 레거시 마이그레이션, 길이 제한 및 부하. 절대로 테스트 암호를 기록하거나 분석에 보냅니다.