SHA-256 とは?
SHA-256(Secure Hash Algorithm 256-bit)は SHA-2 ファミリーの暗号ハッシュ関数で、任意の長さの入力を受け取り固定の 256 ビット(32 バイト)ダイジェストを生成します。出力が入力について何も明かさない一方向関数として設計されています。
別名: SHA-2, Secure Hash Algorithm
暗号ハッシュ関数は 3 つの特性を満たす必要があります。原像耐性(ハッシュが与えられても元の入力を見つけることは計算上不可能)、第 2 原像耐性(入力が与えられても同じハッシュを持つ別の入力を見つけることは計算上不可能)、衝突耐性(同じハッシュを生成する 2 つの異なる入力を見つけることは計算上不可能)。SHA-256 はすべての 3 つを満たし、2001 年に NIST が発表して以来破られていません。
SHA-256 は入力サイズに関わらず 256 ビットの出力を生成します。1 文字のハッシュ化と 1 ギガバイトのファイルのハッシュ化は、どちらも 32 バイトのダイジェストを生成します。アバランシュ効果により、入力の 1 ビットを変えるだけで検出可能なパターンなしに完全に異なるハッシュが生成されます。これにより SHA-256 は完全性検証に有用です。ファイルのハッシュを保存し、後でファイルを再ハッシュして変更されていないことを確認できます。
SHA-256 は暗号アルゴリズムではありません。ハッシュ化は対応する復号のない一方向操作です。多くの暗号構成のビルディングブロックとして使用されます。メッセージ認証のための HMAC-SHA256、鍵導出のための PBKDF2-SHA256、証明書フィンガープリント、ブロックチェーンのプルーフオブワーク、デジタル署名方式などです。プロトコルとプラットフォームをまたいだ広範な採用により、現代の暗号学で最も重要なプリミティブの一つです。
Vaulted における SHA-256 の使われ方
SHA-256 は Vaulted の鍵導出プロセスの基礎となるハッシュ関数です。パスフレーズを使ってシークレットを保護する場合、PBKDF2 は HMAC-SHA256 を反復的に(100,000 ラウンド)適用して、パスフレーズとランダムソルトからラッピング鍵を導出します。SHA-256 はまた、ステータスページトークンを生成する HMAC 計算で使用されるハッシュ関数でもあり、シークレット作成者のみがシークレットのステータスページにアクセスできることを保証します。