スポンサーリンク

【応用情報技術者試験】ペッパー

ペッパー(pepper)は、パスワードの保存処理へ追加する秘密の値です。ソルトと併用し、ハッシュ値を保存するデータベースだけが漏洩した場合への防御を重ねます。値は安全な乱数で生成し、秘密として管理します。

ソルトとの違いを整理

項目ソルトペッパー
主な使い方パスワードごとに個別の値複数のパスワードに共通する秘密値
秘密性秘密でなくてよい秘密であることが重要
保管場所通常はハッシュ値と一緒ハッシュ値のDBとは別に管理

個別の値で事前計算表の使い回しを難しくする仕組みは、ソルトの記事で確認できます。

DBと分離する理由

ハッシュ値・ソルトだけが漏洩し、ペッパーが漏洩していない状況を想定します。攻撃者は保存値の照合に必要な秘密を持たないため、推測が難しくなります。DBとペッパーの両方が侵害されれば、この追加の防御効果は失われます。

保管と計算方法

ペッパーは秘密管理サービスやHSMなどで管理し、ソースコードやハッシュ値と同じDBへ埋め込みません。単に「アプリの中に置けば安全」とは限らず、読み取り権限や漏洩経路を考えます。

計算前の入力へ秘密値を組み込む方式や、ハッシュ計算後に秘密鍵を使うHMACなどの方式があります。「必ず文字列の末尾に付ける」と限定せず、採用する方式・ライブラリに従います。

変更・漏洩時の運用も必要

ペッパーを変えると、以前の値で作った保存情報の扱いも変わります。元のパスワードを復元できないため、方式に応じて再ログイン時の移行やパスワード再設定などを計画します。ペッパーは、適切なパスワード保存方式やソルトの代わりにはなりません。

確認問題

ペッパーをパスワードハッシュと同じDBに保存した場合、DBだけの漏洩に対する追加防御は保てるでしょうか?

解答・解説を見る

保てません。ハッシュ値と秘密値が一緒に漏洩するためです。ペッパーはDBと分離して秘密管理し、ソルトや適切な保存方式と組み合わせます。

パスワード攻撃と対策をnoteで復習

関連noteではソルト・ハッシュ関数・パスワード攻撃を解説しています。ペッパーとの違いを理解した後に、土台となる用語と攻撃への対策を復習できます。

無料note:ソルト・ハッシュとセキュリティ用語を学ぶ

ほかの分野は資格・目的別のnote教材ナビから選べます。

参考資料

OWASP:Password Storage Cheat Sheet

コメント