ハッシュ、HMAC、暗号化、JWTの確認はブラウザーで安全に調べられます。入力データを外部へ送信せず、用途に合うアルゴリズムを選ぶことが重要です。
ハッシュ関数は任意の長さの入力から固定長のダイジェストを生成します。同じバイト列は同じ結果になりますが、改行の違いだけでも結果は変わります。ハッシュ生成ツールでチェックサムやテストデータを比較できます。
MD5は128ビット、16進数では32文字、SHA-1は160ビットです。どちらにも既知の衝突攻撃があるため、新しい署名や攻撃者を想定した完全性確認には使いません。MD5は偶発的な変更を見つける用途では残っています。
SHA-256とSHA-512はSHA-2系列で、256ビットと512ビットを出力します。SHA-512は64ビット環境で高速な場合がありますが、実装によります。高速ハッシュ単体でパスワードを保存せず、ソルト付きのArgon2id、scrypt、適切に設定したbcryptなどを使います。
HMACはハッシュ関数と共有秘密鍵を組み合わせます。正しい値は内容の完全性と鍵を知っていることを示しますが、公的な身元証明ではありません。HMAC生成ツールで開発時の計算を確認できます。
AWS Signature Version 4はHMAC-SHA256、派生鍵、正規化したリクエストを使います。メソッド、パス、ヘッダー、本文のハッシュを指定された手順で処理する必要があり、本文だけをハッシュしてもAWS署名にはなりません。
GitHubは X-Hub-Signature-256、Stripeは Stripe-Signature でWebhook署名を送ります。Stripeの計算にはタイムスタンプも含まれます。元のリクエストバイト列を検証し、定時間比較とリプレイ対策を適用してください。JWT HS256もHMAC-SHA256を使います。
AESは同じ秘密鍵で暗号化と復号をする共通鍵方式です。鍵長だけでなくモードも重要です。AES-GCMは認証タグを持ち、同じ鍵でnonceを再利用してはいけません。AESツールでテストケースを確認できます。
RSAは公開鍵と秘密鍵を使います。入力サイズの制約と処理コストがあるため、大きなファイルではなく、ランダムな共通鍵を暗号化するのが一般的です。実際のデータはAESで処理します。
パディングなしのRSAは使わないでください。RSAツールはRSA-OAEPを使います。相互運用時はハッシュ設定と鍵形式を合わせます。RSA-OAEPによる暗号化とRSA署名は別の処理です。秘密鍵と復号済みデータは適切に保護します。
コンパクトJWS形式の署名付きJWTは、ヘッダー、ペイロード、署名という三つのBase64url部分をドットで区切ります。{"alg":"HS256","typ":"JWT"} はHMAC-SHA256、RS256はSHA-256を使うRSA署名を示します。
ペイロードには対象の sub、発行者の iss、受信者の aud、有効期限の exp、発行時刻の iat などが含まれます。JWTデコーダーで読めますが、デコードは署名検証でもトークンを受理できる証明でもありません。
サーバー側で許可アルゴリズムを固定し、署名、発行者、受信者、有効期限を検証します。トークンの alg を無条件に信用したり、誤って none を許可したりしないでください。JWS署名はペイロードを暗号化しないため、機密性が必要ならJWEなどの仕組みが必要です。
いいえ。SHA-256 は高速な汎用ハッシュのため、パスワードを総当たりしやすくなります。代わりに bcrypt、scrypt、Argon2 を使ってください。これらは意図的に遅く、メモリを多く消費するよう設計されています。パスワードジェネレーターは強力なパスワードを生成しますが、保存はサーバー側で bcrypt/Argon2 を使うべきです。
エンコード(Base64 など)は互換性のためにデータを変換するもので、鍵なしで元に戻せます。暗号化(AES など)は機密性を守るもので、正しい鍵がなければ元に戻せません。Base64 をセキュリティ対策として使ってはいけません。
JWTデコーダーでexpを確認し、現在のUnix時刻と比較します。期限が切れていなくても署名が有効とは限りません。サーバーで署名、発行者、受信者も検証してください。
はい、crypto.getRandomValues() を使う場合は安全です。パスワードジェネレーターはこれを使っています。これはブラウザーの CSPRNG で、オペレーティングシステムが鍵生成に使うのと同じエントロピー源です。
新規のアプリケーションにはすべて AES-256 を使いましょう。AES-128 も既知の攻撃に対しては技術的に安全ですが、AES-256 はより大きな安全マージンを提供します。最新のハードウェアではパフォーマンスの差はごくわずかです。