0Pricing
Cryptology Academy · レッスン

bcrypt:アルゴリズムとコスト係数

bcryptの内部動作、ワークファクター、適切なコスト調整について学びます。

「bcrypt:アルゴリズムとコスト係数」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。

ようこそ

bcryptは、低速でハードウェア攻撃に強くなるよう、1999年に特別に設計されたパスワードハッシュアルゴリズムです。現在も、最も広く導入されているパスワードハッシュアルゴリズムです。

bcryptの起源

Niels ProvosとDavid Mazièresによって設計され、Blowfish暗号を基にしています。「b」はBlowfishを表します。重要な着想は、Blowfishの高コストな鍵セットアップを利用して、意図的に処理を遅くすることでした。

bcryptのハッシュ形式

$2b$12$saltsaltsaltsaltsaltsalthashhashhashhashhashhash $2b$:アルゴリズムのバージョン 12:コスト係数(反復回数のlog2) salt:Base64文字22文字(16バイト) hash:Base64文字31文字(24バイト)

コスト係数

Cost 12 = 2^12 = 4096回の反復です。Cost 13 = 8192回の反復です。値を1増やすごとに計算時間は2倍になります。使用するハードウェアでハッシュ化に約100~300ミリ秒かかるよう調整してください。攻撃者の速度も同じ割合で変化します。

Pythonでのbcrypt

import bcrypt password = b'my_password' salt = bcrypt.gensalt(rounds=12) # generates random salt hashed = bcrypt.hashpw(password, salt) # Verify: bcrypt.checkpw(password, hashed) # True

組み込みのSalt

bcryptは常にsaltを自動的に生成して保存します。gensalt()は暗号学的に安全なランダム16バイトsaltを生成します。saltを別途管理する必要はありません。ハッシュ文字列に埋め込まれているためです。

bcryptの72文字制限

bcryptは入力を72バイトで切り捨てます。72文字を超えるパスワードは、最初の72バイト以降が無視されるため、同一のものとして扱われます。回避策として、bcryptの前にSHA-512で事前ハッシュ化する方法があります(ただし、方法の妥当性を検証してください)。

パスワード検証の流れ

ログイン: 1. ユーザーがパスワードを送信します 2. DBから保存済みのハッシュを取得します 3. bcrypt.checkpw(submitted, stored_hash)を実行します 4. checkpwが保存済みハッシュからソルトを取り出し、再計算します 5. TrueまたはFalseを返します 生のパスワードは決して保存しないでください。

ベンチマーク

bcryptのコスト12: - コンシューマー向けCPU:約150ms/ハッシュ - GPU(RTX 4090):約50,000ハッシュ/秒(SHA-256は10B) bcryptのコスト12により、攻撃者の優位性は10億倍から約300倍に低下します。

コスト係数の推奨値

OWASP 2024:bcryptのコスト係数は10以上。推奨値は12です。毎年確認し、ハードウェアの性能が向上したら係数を引き上げてください。オンライン再ハッシュを実装し、ログイン時に必要に応じて検証と更新を行います。

bcryptの制限

bcryptの弱点は、メモリハードではないことです。攻撃者は、bcrypt向けに最適化されたカスタムASICを使用できます。新しいアプリケーションでは、メモリハードでASIC耐性を持つArgon2idを優先してください。

クイックチェック

bcryptハッシュにおけるコスト係数12は何を意味しますか?

まとめ

bcryptは堅牢ですが、メモリハードではありません。次は、設定可能なメモリ要件を備えた、パスワードハッシュ化の現代的な代表であるArgon2を学びます。

よくある質問

「bcrypt:アルゴリズムとコスト係数」レッスンは無料ですか?

はい。「bcrypt:アルゴリズムとコスト係数」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。

「bcrypt:アルゴリズムとコスト係数」で何を学びますか?

bcryptの内部動作、ワークファクター、適切なコスト調整について学びます。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cryptology Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「bcrypt:アルゴリズムとコスト係数」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCryptology Academyレッスンでコードを書いて実行できますか?

はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. パスワードに単純なSHA-256が使えない理由
  2. bcrypt:アルゴリズムとコスト係数
  3. Argon2:メモリハードなパスワードハッシュ
  4. PBKDF2と適切なアルゴリズムの選び方
← Cryptology Academyに戻る