パスワード、ハッシュ、Base64は役割が違う

ランダムなパスワード、ファイルのハッシュ、Base64の文字列はどれも複雑に見えます。しかし用途は異なり、取り違えると秘密を露出させる恐れがあります。

パスワードは秘密だが符号化は秘密にしない

推測しやすい名前や日付ではなく、長く予測困難なパスワードを選びます。信頼できるパスワード管理ソフトは生成・保存に役立ちます。公開された例を実際のパスワードにしないでください。

Base64は秘密鍵なしで戻せるテキスト表現です。RFC 4648も機密性を与えないと説明しています。符号化したパスワードは、デコードする人にそのまま知られます。

参考資料: NCSC — Three Random Words · IETF RFC 4648 — Base Encodings and Security Considerations

ハッシュは何を証明するか

SHA-256は一定長のダイジェストを作ります。信頼できる参照値との比較は内容の一致確認に役立ちますが、ファイルの安全性や作者の信頼性は認証しません。

ファイルとハッシュが同じ侵害された場所から届けば、両方が置き換わっている可能性があります。計算の正しさと同じくらい参照元が重要です。

参考資料: MDN — SubtleCrypto digest()

高速なハッシュだけではパスワード保存にならない

汎用SHA-256だけでは完全な保存設計ではありません。OWASPは適切な保護を備えた専用のパスワードハッシュ処理を推奨します。単なる文字変換ではなく認証システムの設計です。

JWTを読むことも署名検証やアクセスの有効性確認ではありません。符号化されて見えるからといって本物の認証情報をサポート文面へ貼らないでください。

参考資料: OWASP — Password Storage Cheat Sheet · IETF RFC 7519 — Validating JWTs

秘密を含まない例

TestはBase64でVGVzdA==になり、戻すとTestです。どちらにも秘密が不要なので、機密内容を隠す方法にはなりません。

Testの後に改行を付けるとハッシュ対象のバイトが変わります。ダイジェストの違いを計算ミスと判断する前に、文字コードと改行を確認してください。

ほかの関連ツール

参考資料