§

Bcrypt 생성기

§

Bcrypt 해시 생성

10 (1,024 rounds)

Bcrypt는 1999년 Provos와 Mazières에 의해 처음 소개된 이후 미국 웹 개발에서 표준 비밀번호 해싱 방식으로 자리잡았습니다. NIST SP 800-63B는 비밀번호 저장에 메모리 하드 해싱을 권장하며, OWASP는 bcrypt를 Argon2id와 함께 선호 옵션으로 제시합니다. Rails는 has_secure_password를 통해 bcrypt를 기본 탑재하고, Django는 플러그형 백엔드로 지원하며, Node.js 개발자는 bcryptjs 라이브러리를 사용합니다. 비용 계수는 단일 해시에 걸리는 시간을 제어합니다——비용이 두 배가 되면 작업량도 두 배가 됩니다. 대부분의 앱은 비용 10(1,024라운드)을 기준으로 사용하며, 금융 또는 관리 시스템은 종종 12(4,096라운드)를 사용합니다. 이 도구는 JavaScript를 사용하여 브라우저 내에서 완전히 실행되므로 비밀번호가 기기를 떠나지 않습니다.

bcrypt란 무엇인가요?

Bcrypt는 Niels Provos와 David Mazières가 Blowfish 암호를 기반으로 설계한 비밀번호 해싱 함수입니다. MD5나 SHA-256과 같은 빠른 다이제스트와 달리 bcrypt는 의도적으로 느리고 계산 비용이 많이 들도록 설계되었습니다——이로 인해 도난당한 비밀번호 해시에 대한 무차별 대입 공격이 비현실적이 됩니다. Bcrypt는 비밀번호마다 자동으로 무작위 솔트를 생성하므로 동일한 비밀번호라도 다른 해시가 생성됩니다.

bcrypt는 어떻게 작동하나요?

Bcrypt 알고리즘은 브라우저 내에서 완전히 실행됩니다. 단계별 과정은 다음과 같습니다:

  1. 비밀번호가 UTF-8 바이트로 인코딩되어 bcrypt 키 스케줄에 입력되며, 비밀번호와 솔트를 사용하여 Blowfish 암호의 4,184바이트 P-배열과 S-박스를 초기화합니다.
  2. 무작위 128비트 솔트가 생성됩니다. 솔트는 키 스케줄에 혼합되어 각 고유 솔트가 동일한 비밀번호에 대해서도 완전히 다른 해시를 생성하도록 합니다.
  3. 키 스케줄은 2^cost 라운드(예: 비용 10의 경우 2^10 = 1,024회 반복) 실행됩니다. 각 반복은 솔트와 P-배열 항목을 다시 암호화하여 비용이 증가함에 따라 계산이 비례적으로 느려집니다.
  4. 최종 출력은 $2b$<cost>$<salt><hash> 형식의 60자 문자열입니다. cost는 0으로 채워지고(예: 10), salt는 22자의 Base64, hash는 31자의 Base64입니다.
  5. 확인의 경우, 후보 비밀번호와 저장된 해시에서 추출한 솔트를 사용하여 동일한 알고리즘이 다시 실행됩니다. 파생된 해시가 저장된 해시와 일치하면 비밀번호가 올바른 것입니다.

어떤 비용 계수를 사용해야 하나요?

비용 계수는 반복 횟수의 로그입니다——비용 10은 2^10 = 1,024라운드, 비용 12는 4,096라운드를 의미합니다. 보안 요구 사항과 하드웨어에 따라 선택하세요:

  • 비용 4-6(16-64라운드) — 개발 및 테스트 전용. 프로덕션에는 너무 빠르며 최소한의 보호만 제공합니다.
  • 비용 8(256라운드) — 중요하지 않은 애플리케이션의 최소 기준. 최신 하드웨어에서 약 6ms.
  • 비용 10(1,024라운드) — 현재 권장 기준. 약 25ms 소요. 대부분의 웹 애플리케이션에 적합합니다.
  • 비용 12(4,096라운드) — 관리 포털, 금융 시스템 및 고보안 앱에 권장. 약 100ms 소요.
  • 비용 14(16,384라운드) — 높은 보안. 약 400ms 소요. 마스터 비밀번호, 암호화 키 또는 로그인 지연이 허용되는 경우에 사용.

이 bcrypt 생성기를 사용해야 하는 이유

  • 개인정보 보호 — 모든 비밀번호는 브라우저에서 로컬로 해싱되며 데이터가 기기를 떠나지 않습니다.
  • 이중 모드 — 페이지 전환 없이 새 해시 생성과 기존 해시 확인을 나란히 수행할 수 있습니다.
  • 조정 가능한 비용 계수 — 작업 계수를 4(빠름)에서 15(매우 느림)까지 조정하여 애플리케이션의 보안 요구에 맞출 수 있습니다.
  • 표준 호환 — 표준 $2b$ 형식의 해시를 생성하여 모든 주요 언어와 프레임워크와 호환됩니다.

bcrypt의 일반적인 용도는 무엇인가요?

Bcrypt는 업계 전반에서 비밀번호 저장 및 확인에 널리 사용됩니다:

  • 웹 애플리케이션 사용자 인증 — 사용자 비밀번호 해시를 데이터베이스에 저장하여 일반 텍스트 비밀번호가 절대 저장되지 않도록 합니다.
  • API 키 해싱 — API 시크릿을 저장하기 전에 해싱하여 데이터베이스 침해가 유효한 자격 증명을 유출하지 않도록 합니다.
  • 마이그레이션 감사 — 이전 시스템의 레거시 비밀번호 해시가 인증 계층 업그레이드 후에도 사용자를 인증할 수 있는지 확인합니다.

bcrypt 해시는 어떻게 생겼나요?

비용 계수 10으로 비밀번호 hunter2를 해싱하면 $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy와 같은 문자열이 생성됩니다. 형식은 다음과 같습니다: $2b$(알고리즘 버전), 10(비용 계수), $, 그리고 22자의 솔트와 31자의 해시(모두 Base64 인코딩). 동일한 비밀번호로 실행할 때마다 무작위 솔트 때문에 다른 해시가 생성됩니다.

이 bcrypt 생성기는 순수 JavaScript 구현을 사용하여 브라우저 내에서 완전히 실행됩니다. 저장하기 전에 비밀번호를 해싱하고, 기존 해시를 확인하며, 보안 요구 사항에 맞게 비용 계수를 조정할 수 있습니다——서버에 단일 바이트도 보내지 않고 모두 가능합니다.