CyberGlossary

暗号

ペッパー

別称: サーバーサイド鍵, ペッパーシークレット

定義

ハッシュ計算前に各パスワードへ加算するサーバー側秘密で、データベースとは別の場所に保管し、ハッシュ流出後のオフライン解析を抑制する。

ペッパー(pepper)は、ハッシュ関数や KDF にパスワードを渡す前に、ユーザーごとのソルトに加えて適用されるアプリケーション共通の長い秘密(通常 32 バイト以上)です。ソルトと異なり、ペッパーは認証情報データベースの外側(設定ファイル、環境変数、HSM など)に保管されるため、ハッシュテーブルだけを入手した攻撃者がオフラインで容易に解析できないようにします。一般的な実装では、まずアプリ側で HMAC(pepper, password) を計算し、その結果を Argon2id に渡す方式や、KDF の入力に秘密素材としてペッパーを混ぜる方式が採られます。あくまで多層防御であり、強力な KDF、ソルト、レート制限の代替にはなりませんが、データベースのみが漏えいした際の解析コストを大きく引き上げます。

  • アプリ側で HMAC-SHA-256(pepper, password) を計算し、その値を Argon2id でハッシュする。
  • ペッパーを HSM に保管し、アプリが直接持ち出せないようにする。

関連用語