ストレッチング(Stretching)は、パスワードのハッシュ値を総当り攻撃(ブルートフォース攻撃)などから推測されないようにするための技術です。具体的には、パスワードのハッシュ値を何度も繰り返し計算することで、攻撃者が元のパスワードを推測するのを困難にします。
特徴
- 繰り返し計算: ストレッチングでは、パスワードのハッシュ値を数千回から数万回繰り返し計算します。これにより、攻撃者がハッシュ値から元のパスワードを推測するのが非常に困難になります。
- サーバー負荷: 繰り返し計算するため、サーバーの負荷が増加しますが、その分セキュリティが向上します。
- ソルト(Salt)との併用: ストレッチングは、ソルト(ランダムな文字列)と併用されることが多く、これによりさらにセキュリティが強化されます。
事例
例えば、ユーザー認証システムでストレッチングを使用する場合、以下の手順が一般的です:
- パスワードの入力: ユーザーがパスワードを入力します。
- ハッシュ化: パスワードにソルトを追加し、ハッシュ化します。
- 繰り返し計算: ハッシュ値を数千回から数万回繰り返し計算します。
- 保存: 最終的なハッシュ値をデータベースに保存します。
メリット
- セキュリティの向上: ストレッチングにより、総当り攻撃や辞書攻撃に対する耐性が向上します。
- データ漏洩の防止: ハッシュ値が盗まれても、元のパスワードを推測するのが非常に困難になります。
- 簡便性: ストレッチングは既存のハッシュ化プロセスに追加するだけで実装できるため、比較的簡単に導入できます。
デメリット
- サーバー負荷の増加: 繰り返し計算により、サーバーの負荷が増加します。
- 処理時間の延長: 認証プロセスに時間がかかるため、ユーザー体験に影響を与える可能性があります。
- 設定の複雑さ: 適切な回数やソルトの設定が必要であり、これを誤るとセキュリティが低下する可能性があります。