0Pricing
Cryptology Academy · レッスン

パスワードに単純なSHA-256が使えない理由

レインボーテーブル、ブルートフォースの速度、ソルトについて理解します。

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

ようこそ

パスワードを安全に保存することは、セキュリティ分野で最も誤解されているテーマの1つです。このレッスンでは、SHA-256のような高速ハッシュがパスワードに対してなぜ致命的なほど不適切なのかを理解します。

データベースが漏えいすると何が起きるか

データベース侵害は絶えず発生しています。2024年には、RockYou2024によって100億件のパスワードが漏えいしました。ユーザーのパスワードが復元可能な状態で保存されていれば、攻撃者に復元されてしまいます。

単純なSHA-256による保存

悪い例: hashed = sha256(password) store(username, hashed) 問題点:(1) sha256は非常に高速です。(2) 同じパスワードは同じハッシュになります(saltがありません)。(3) 一般的なパスワード用のレインボーテーブルが存在します。

レインボーテーブル攻撃

レインボーテーブルは、数百万件の一般的なパスワードについて、ハッシュからパスワードへの対応を事前計算したものです。SHA-256('password')は常に同じハッシュになります。テーブルを検索すれば、ほとんどのパスワードを瞬時に復元できます。

Saltの役割

Salt = ハッシュ化する前にパスワードの先頭へ追加するランダムなバイト列です。 hash = sha256(salt + password) ユーザーごとに一意のsaltを使用します。レインボーテーブルは役に立たなくなり、攻撃者はユーザーごとに個別に総当たり攻撃を行う必要があります。

しかし、Saltだけでは不十分です

最新のGPUは、1秒間に100億件のSHA-256ハッシュを計算できます。一意のsaltを使用していても、漏えいしたハッシュを持つ攻撃者は、8文字のパスワードを数分で総当たりできます。

速度の問題

SHA-256は、ファイルの完全性確認やTLSなどのために高速に動作するよう設計されています。パスワードのハッシュ化では、速度は敵です。総当たり攻撃に耐える、意図的に低速なアルゴリズムが必要です。

キー・ストレッチング

キー・ストレッチングでは、ハッシュ関数を何千回も繰り返します:for i in range(100000): h = sha256(h)。これにより攻撃者と防御側の両方の処理が遅くなりますが、ハードウェアの優位性は依然として攻撃者側にあります。

メモリハード関数

最新のパスワードハッシュ関数は、CPUサイクルだけでなく大量のRAMを必要とします。GPUは、CPUと比べてコアごとに使用できるRAMが限られています。Argon2のメモリハード性により、GPUやASICの優位性を無効化できます。

よくある間違い

避けるべき方法: - sha256(password) - sha256(salt + password) without iteration - md5(password) (or any MD5) - Encrypting passwords (can be decrypted) - sha256(sha256(password)) (still fast)

代わりに何を使うべきか

使用するもの:bcrypt(最も広く導入されています)、Argon2id(OWASP推奨、メモリハード)、PBKDF2-SHA256(FIPS準拠で許容可能)。いずれも意図的に低速で、設計上saltを使用します。

クイックチェック

saltを使用していても、SHA-256がパスワードのハッシュ化に適さないのはなぜですか?

まとめ

SHA-256はパスワードには不適切です。次はbcryptについて学びます。bcryptはハッシュ化を意図的に遅くし、ハードウェアによる攻撃に耐えるアルゴリズムです。

よくある質問

「パスワードに単純なSHA-256が使えない理由」レッスンは無料ですか?

はい。「パスワードに単純なSHA-256が使えない理由」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。

「パスワードに単純なSHA-256が使えない理由」で何を学びますか?

レインボーテーブル、ブルートフォースの速度、ソルトについて理解します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「パスワードに単純なSHA-256が使えない理由」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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