パスワードストレージのチートシート
パスワードストレージのチートシート とは、OWASPの「Password Storage Cheat Sheet」 Last revision (mm/dd/yy): 07/18/2015 です。
読み方
- パスワードストレージ
- ぱすわーどすとれーじ
- 有鍵
- ゆうけん
- Keyed function
- きーど ふぁんくしょん
目次
概要
パスワードストレージのチートシートは、パスワードを安全に保存するためのルールをまとめたものです。もし、IDシステムを開発し、ログインのシステムを設計・開発するときに、パスワードを保存しなければならなくなります。その時に、パスワードを平文のまま保存するわけにはいきません。パスワードを保護するために、暗号が必要になります。
導入
ガイダンス
クレデンシャルのキャラクタセットや最大の長さを制限しない
SQL Injection(SQLインジェクション), XSS(Cross-site scripting,クロスサイトスクリプティング), コマンドインジェクション(command-injection)やそのほかの形式のインジェクション攻撃を防ぐため、無効化のために、いくつもの組織が「特殊文字のタイプ」(1)や「システムによって受け付けるクレデンシャルの長さ」(2)を制限しています。
クレデンシャルのストレージのエントリに、短い、もしくは、長さのないもの、キャラクタセット、エンコーディングの制限を適応してはなりません。 インジェクションリスクを取り除くために、エンコーディングエスケープ、マスキング、outright omission(完全な省略)やその他のベストプラクティスを適応し続けます。、
適度な長いパスワード長は、160です。非常に長いパスワードポリシーは、場合によっては、DOSの結果につながります。
暗号上、強度のあるクレデンシャル固有のソルトを利用する
ソルトは、固定長で、暗号学的に強度があるランダムな値です。クレデンシャルデータをソルトに加え、保護関数(protective function)の入力として使用します。以下のようにソルトを追加した保護された形式で格納します。
[保護された形式] = [ソルト] + protect([protection func], [ソルト] + [credential]);
これらは、適切に実装されたクレデンシャル固有のソルトのためのプラクティスです。
- 保存されているクレデンシャルのそれぞれに対して、ユニークなソルトを生成します(ユーザごとやシステムごとではなく)。
- 暗号学的に強度のあるランダムなデータを利用します
- ストレージが許可するなら、32ビットか64ビットのソルトを利用します(実際のサイズは、保護関数に依存します)
- スキームセキュリティは、隠すこと、分割、あるいはその逆の曖昧なソルトに依存しません。
ソルトは、2つの目的に務めます。「2つのまったく同一のクレデンシャルの漏えいから保護された形式を防止する」(1)、「クレデンシャルの複雑さに頼らない保護関数への入力される引数のエントロピー」。2つ目の目的は、個々ののクレデンシャルに対して事前に計算したルックアップ攻撃、と、扱いにくい人口へのタイムベース攻撃です。
攻撃者に実行不可能な検証を負わせる
適応性のある一方向関数の効力
ワークファクター(仕事因子)
Keyed 関数(有鍵)の効力
結果としておこる侵害を想定したパスワードストレージのデザイン
リファレンス
関連項目
ツイート