HTTP Digest 認証を使う
Digest 認証はサーバーの nonce と組み合わせて資格情報をハッシュし、HTTPS なしでのパスワード露出を防ぎます。チャレンジ・レスポンスの流れと MD5 の使われ方を学びましょう。
- 1
Digest 認証では、まずサーバーがチャレンジ (nonce、realm) を送ります。クライアントは MD5(username:realm:password) と MD5(method:uri) を計算し、MD5(ha1:nonce:ha2) を送ります。サーバーは再計算して検証します。パスワードは平文で送られませんが、MD5 は弱いため、Digest 認証は廃れた方式です。HTTPS + Bearer トークンを使ってください。
- 2 HMAC ジェネレーター →
ダイジェスト計算に使う HMAC を生成します。Digest 認証が使うのは MD5 (HMAC ではありません) ですが、概念は似ています。メッセージに鍵を絡めたハッシュです。HMAC のほうが安全であり、現代の認証方式にはこちらを使います。
- 3 ハッシュ計算ツール →
Digest 認証の構成要素の MD5 ハッシュを計算します: HA1 = MD5(username:realm:password)、HA2 = MD5(method:uri)、response = MD5(HA1:nonce:HA2)。注意: MD5 は暗号学的に破られています。レガシーの Digest 認証との互換のためだけに使い、新しいシステムには使わないでください。
よくある質問
- Digest 認証は安全ですか?
- HTTP 上の Basic 認証よりはましです (パスワードが平文で送られない)。しかし、破られた MD5 に依存しています。中間者攻撃 (MITM) から守らず、機密性も提供しません。現代の認証には HTTPS + Bearer トークンを使ってください。Digest 認証はレガシー互換のためだけに残されています。
- Digest 認証が廃れたのはなぜですか?
- サーバー側に HA1 (パスワードの MD5) を保存する必要があり、レインボーテーブル攻撃に対して脆弱です。現代のパスワードハッシュ (bcrypt、scrypt) にも対応していません。正しく実装するのも複雑です (nonce 管理、qop、opaque)。HTTPS があれば、Digest 認証のパスワード保護は冗長になります。
このタスクを解決するワークフロー
コンテンツのハッシュと Base64 エンコード
入力のハッシュを計算し、コンパクトな転送のためにハッシュダイジェストを Base64 としてエンコードする。 パイプライン
テキストのハッシュと整合性検証
入力テキストのハッシュを計算し、期待されるハッシュと比較して整合性を検証する。 パイプライン
テキストのハッシュと CRC32 チェックサム検証
データ整合性検証のために、暗号学的 SHA-256 ハッシュと CRC32 チェックサムの両方を計算する。 パイプライン
HMAC 署名後に Base64 エンコード
HMAC 署名を生成し、API 認証ヘッダーのために Base64 エンコードする。 パイプライン
HMAC 署名と検証
メッセージの HMAC 署名を生成し、期待される署名と照合して検証する。 パイプライン
API リクエスト文字列の HMAC 署名
API 呼び出しを認証するために、リクエストペイロードの HMAC-SHA256 署名を生成する。 パイプライン
MD5 ハッシュ後に Base58 エンコード
MD5 ハッシュを計算し、コンパクトな表現のために Base58 としてエンコードする。 パイプライン
マルチハッシュ速度比較
入力をハッシュし、複数のハッシュアルゴリズムをベンチマークして速度と出力を比較する。 パイプライン
パスワード生成とハッシュ
ランダムパスワードを生成し、安全な保存のためにハッシュする。 パイプライン
SHA3-256 ハッシュと CRC32 チェックサム
SHA3-256 ハッシュを計算し、二重整合性検証のために CRC32 チェックサムを計算する。 パイプライン
SHA-512 ハッシュ後に Hex エンコード
SHA-512 ハッシュを計算し、可読性のために Hex としてエンコードする。 パイプライン
テキスト反転とハッシュ
テキストを反転し、その後反転結果の SHA-256 ハッシュを計算する。 パイプライン
テキストスクランブルとハッシュ
テキストをスクランブルし、その後スクランブル結果をハッシュする。 パイプライン