今回は、この記事(英文)の要約です。
サーバー側におけるパスワードの保存方法
サーバー側ではパスワードを、暗号化またはハッシュ値で保存しています。
- 暗号化:復号可能なもの。
- ハッシュ値:復号できない。保存方法としてはこちらの方が一般的
攻撃者は何らかの方法でハッシュ値を取得して、パスワード攻撃を開始します。
ハッシュ値とは元の文字列を一定のアルゴリズム(ハッシュ関数)によって処理した後に生成される別な文字列です。
元の文字数が何文字であろうともハッシュ値は同じ文字数になります。
ハッシュ値を元に戻すことはできません。
また元の文字列が同じなら必ず同じハッシュ値になりますが、互いに違う文字列が偶然同じハッシュ値になることもありえます。(この現象を ” 衝突 ” と言います。実際には ” 衝突 ” は滅多にありませんが)
パスワード攻撃方法TOP5
ブルートフォース攻撃
文字、数字、記号の全ての組み合わせを順に試していきます。いつかは必ずパスワードを割り出すことができますが、(運にもよりますが)多くは非常に長い時間がかかることが欠点です。
パスワード割り出しまでの時間の目安(MD5ハッシュ関数の場合)
- 文字数 大文字小文字 記号あり
- 8文字 22分 8時間
- 9文字 19時間 3週間
- 10文字 1ヶ月 5年
- 11文字 5年 500年
- 12文字 300年 34,000年
パスワードの設定で「8文字以上入れなさい」とか「記号を入れなさい」とかは、このあたりの数字が根拠になっているようですね。これを見ると10文字以上が安全ですね。
レインボーテーブル
ハッシュのアルゴリズムを用いて事前に多数のパスワードのハッシュ値を求めて表を作っておき、この表とターゲットのハッシュ値を比較する方法。
対抗手段としてはパスワードソルティング(任意の文字列とパスワードを同時にハッシュ化)やハッシュ値の前後にランダムな値を付加してハッシュ値を偽装する方法があります。
辞書攻撃
人間が考えつきそうなフレーズを集めて辞書ファイルにしておき、これを総当たりで試す方法。
以前は90日毎にパスワード変更が推奨されていましたが、変更する側の立場に立つとどうしても覚えやすい(=辞書に載りやすい)パスワードになってしまいます。
最近では定期パスワード変更は求められない方向性にあるようです。(その代わり文字数を増やす)
マルコフ連鎖攻撃は、フレーズに統計学的な重みを付加して、フレーズの組み合わせを計算して総当たりします。
クレデンシャルスタッフィング
同じパスワードを使い回すユーザーに対し、1つのサイトでのそのユーザーのパスワードが判明した場合に、他のサイトでも片っ端からそのパスワードを試す方法。
脆弱なパスワードハッシュを悪用
パスワードのハッシュ化に古いアルゴリズムを使用している場合は脆弱になるのでクラックされる危険が高くなります。
パスワードクラッキングツール3つ
パスワード攻撃には多くのツールがありますが有名なもの3つ挙げられています
- John The Ripper
- HashCat
- Ophcrack
(以下は省略します)
まとめ
パスワード攻撃で頻用される手法は以下の5つ
- ブルートフォース攻撃
- レインボーテーブル
- 辞書攻撃
- クレデンシャルスタッフィング
- 脆弱なパスワードハッシュを悪用
パスワードは単純に長い方が安全であり、コンピューターの性能が上がるにつれ ” 安全な長さ ” が長くなる傾向があります。
コメント