■ はじめに
パスワードについて、掘り下げてみる
目次
【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