암호화폐 비밀번호 발전기
브라우저에서 즉시 안전한 bcrypt 비밀번호 해시를 생성하세요. 비용 요소와 클라이언트측 해시 비밀번호를 선택하세요. 완전히 비공개이며 무료입니다.
브라우저에서 즉시 안전한 bcrypt 비밀번호 해시를 생성하세요. 비용 요소와 클라이언트측 해시 비밀번호를 선택하세요. 완전히 비공개이며 무료입니다.
bcrypt는 1999년 Niels Provos와 David Mazières가 설계한 비밀번호 해싱 기능으로, Blowfish 암호에서 파생되었습니다. SHA-256과 같은 범용 해시 기능과 달리 bcrypt는 의도적으로 느리며 비용 매개변수를 통해 구성 가능하게 느립니다. 이는 정확히 비밀번호 해셔에 필요한 속성입니다. 더 빠른 해시 기능을 사용하면 공격자가 초당 더 많은 후보를 무차별 대입할 수 있습니다. 느린 것은 그들을 제한합니다.
bcrypt는 또한 비밀번호별 솔트를 자동으로 통합하여 미리 계산된 레인보우 테이블을 기반으로 하는 전체 공격 클래스를 제거합니다. 솔트 및 비용 매개변수는 bcrypt 출력의 일부로 저장되므로 확인에는 저장된 해시와 후보 비밀번호만 필요하며 별도의 솔트 관리는 필요하지 않습니다. 이러한 속도 저하, 솔트 및 자체 포함 형식의 조합으로 인해 bcrypt는 20년 동안 기본 비밀번호 해시였으며 오늘날에도 강력한 선택이 되었습니다.
현대적인 대안이 존재합니다. Argon2는 2015년 비밀번호 해싱 대회에서 우승했으며 시간 경도 외에 메모리 경도도 제공합니다. scrypt는 유사한 속성을 제공합니다. 새로운 디자인의 경우 Argon2id를 선택하는 것이 좋습니다. bcrypt는 특히 Argon2를 사용할 수 없는 환경에서 수용 가능하며 널리 배포됩니다.
비밀번호를 일반 텍스트로 저장하는 것은 잘못된 행위입니다. SHA-256과 같은 빠른 해시로 저장하는 것이 더 나을 수 없습니다. 최신 GPU는 초당 수십억 개의 SHA-256 해시를 계산하므로 몇 시간 내에 일반적인 비밀번호에 대한 무차별 대입 공격이 가능합니다. bcrypt의 고의적인 느린 속도는 경제성을 변화시킵니다. 비용 요소가 12인 경우 공격자는 후보 비밀번호당 약 250ms를 소비하므로 모든 중요 비밀번호에 대해 무차별 대입 공격을 실행하는 것은 불가능합니다.
bcrypt의 자동 비밀번호별 솔트는 레인보우 테이블 공격도 물리칩니다. 동일한 비밀번호를 사용하는 두 명의 사용자는 소금이 다르기 때문에 서로 다른 bcrypt 해시를 생성합니다. 비밀번호 데이터베이스가 손상되더라도 공격자는 일반적인 비밀번호나 미리 계산된 테이블 적중을 빠르게 식별할 수 없습니다.
비밀번호를 입력하고 비용을 선택한 후 해시를 가져옵니다.
bcrypt는 수정된 Blowfish 암호의 키 설정 단계를 2^cost 횟수만큼 반복하여 사용합니다. 비용 요소는 대수적입니다. 즉, 비용 12는 비용 11보다 2배 느리고 비용 10보다 4배 느립니다. 이러한 로그 확장을 통해 관리자는 시스템을 재설계하지 않고도 하드웨어가 향상됨에 따라 시간이 지남에 따라 비용을 늘릴 수 있습니다.
출력 형식은 $version$cost$saltAndHash입니다. 여기서 saltAndHash는 사용자 정의 알파벳으로 base64로 인코딩됩니다. 버전은 일반적으로 $2b$(랩어라운드 버그가 수정된 최신 변형) 또는 $2y$(PHP 관련, 이에 상응하는 버전)입니다. 솔트는 16바이트입니다. 해시는 24바이트입니다. 함께 53자의 custom-base64로 인코딩됩니다.
최대 입력 길이는 72바이트입니다(Blowfish 키 길이 제한). 더 긴 비밀번호는 자동으로 잘립니다. 이는 오랫동안 지속되어 온 bcrypt 문제입니다. 모범 사례는 암호 길이를 72바이트로 제한하거나 SHA-256으로 사전 해시하여 bcrypt 전에 길이를 정규화하는 것입니다.