【セキュリティ】パスワード について

■ はじめに

パスワードについて、掘り下げてみる

目次

【1】セキュリティ攻撃
 1)ブルートフォース攻撃(総当たり攻撃) 
 2)レインボー攻撃(Rainbow Attack)
【2】攻撃に対する対策
 1)ソルト(Salt)
 2)ストレッチング

【1】セキュリティ攻撃

1)ブルートフォース攻撃(総当たり攻撃) 
2)レインボー攻撃

1)ブルートフォース攻撃(総当たり攻撃)

 * 総当たり的にハッシュ値を計算することで
 パスワードを推察する

2)レインボー攻撃(Rainbow Attack)

* あらかじめハッシュ値と任意の文字列の対応表(レインボーテーブル)を
 作っておき、その対応表と突き合わせることで、
 ハッシュ値から元の値(パスワード)を推察する
 => 別名「Rainbow Table Attack」
 => 以下のサイトの表がイメージ付きやすいかも、、、

https://www.ne.senshu-u.ac.jp/~proj28-19/tobe/goku-main/goku_rainbow-attack.html

参考文献
https://wa3.i-3-i.info/word17537.html
https://qiita.com/psyashes/items/91131e4662cd45f669b8

理解度チェック:応用情報技術者平成31年春期 午前問38
https://www.ap-siken.com/kakomon/31_haru/q38.html

【2】攻撃に対する対策

1)ソルト(Salt)
2)ストレッチング
 => 結局、「ソルト+ハッシュ+ストレッチング」で
  対策をするのがいいらしい
 => Python での実装なら、以下の関連記事を参照のこと。

Python ~ ハッシュ / hashlib ~
https://dk521123.hatenablog.com/entry/2020/05/03/010502

1)ソルト(Salt)

 * ハッシュ値を計算する前にパスワードの前後に
 付け加える短い文字列

【効果】

 * 同じパスワードを付けていても、
 ハッシュ値は異なるようにできる
 * ハッシュ値の元となる文字列を長くすることにより、
 レインボー攻撃を防止

【条件】

 * ユーザーごとに異なるソルトを使う
 * ある程度の長さ(20文字程度以上)を確保する

2)ストレッチング

 * ハッシュ値の計算を何回も繰り返すこと

参考文献

http://www.atmarkit.co.jp/ait/articles/1110/06/news154_3.html

関連記事

Python ~ ハッシュ / hashlib ~
https://dk521123.hatenablog.com/entry/2020/05/03/010502