パスワードクラッキング(超初級)
まえがき
SLP KBIT Advent Calendar 2015 - Adventar用の記事です!
年を経るに連れて下級生の参加が減ってる気がする...
____ ) 簡単な内容でいいからみんな書くんだお /⌒ ⌒\ ) /( ●) (●) \ )/⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y丶 / ::::::⌒(__人__)⌒::::: \ | |r┬-| | \ `ー'´ / ノ \ /´ ヽ カ | l l||l 从人 l||l l||l 从人 l||l カ タ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. タ ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ┌┬┬┐┌┬┬┬┐┌┬┬┬┐┌┬┬┬┐ ,. - ''"| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ρ ̄`l  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ ̄ ̄
とりあえず自分の知ってる知識でがんばって書きます。 間違ってたらごめんね
パスワードの保存方法
みんなパスワードってどういう形式で保存されてるか知っますか? パスワードは、原則的にはハッシュという形式で保存されています。 そもそもハッシュとはなんぞやって人は以下を参照。 知ってる人は飛ばしてね。
暗号とハッシュ
ハッシュ化は、暗号化と似ていて、データの機密性を向上させるものです。 しかし、そこには決定的な違いが有ります。
- 暗号化は、復号化して、元のデータを得ることができる
- ハッシュ化は、元のデータを復元することが出来ない
暗号化は、内容が重要で、相手にデータの内容が見える必要があるが、第3者に見られたくない時に利用されます。
主に、セキュアな通信などで用いられます。
しかし、ハッシュ化は、内容は重要ではなく、データが一致するかどうかだけ確かめる必要があるが、元のデータはバレてはならない時に利用されます。
主に、パスワード管理に用いられます。
パスワードとハッシュ
ユーザのパスワードを管理する場合、データベースにそのままパスワードを保存していると、なんらかの形でパスワードデータが漏洩した場合、そのユーザとパスワードを用いて、容易に不正アクセスすることが可能となります。
しかし、パスワードをハッシュとして保存していると、パスワードデータが漏洩しても、そこにはハッシュ値しか書かれていないため、元のパスワードを復元することができません。
パスワードへの攻撃
パスワードへの攻撃手法としては、ネットワークを介して攻撃をする「オンライン攻撃」とパスワードのハッシュファイルを手に入れてから攻撃をする「オフライン攻撃」があります。
総当たり攻撃
読んで時のごとく、パスワードの候補となる文字列を順番に全て試していく方法です。 時間はかかりますが、全ての組み合わせを実行することができるため、確実にパスワードを突破することが出来ます。 5文字以内なら数分程度で解けますが、10文字ともなると数年単位の時間がかかります
辞書式攻撃
これもまた字の如く、辞書を用いた攻撃です。
パスワードに登録されやすい単語を辞書ファイルとして保存しておき、それを用いて攻撃を行う手法です。
総当りと比較すると、確実性には欠けますが、英単語や"hoge"なんかのパスワードだと、ほぼ一瞬で突破することが出来ます。
サーバへユーザ登録する際に、「辞書に乗っている単語です」と怒られた人は多いのではないでしょうか
類推攻撃
またまた字のごとく、パスワードを類推する攻撃手法です。 アカウントやメールアドレス、生年月日など、ユーザが公開している情報を元にパスワードを推測し、攻撃する手法です
まとめ
パスワードをきちんと管理しましょうという意味をきちんと理解できるようになったでしょうか
パスワードはできるだけ長く、文字種も多くしたほうが安全というのは常識ですが、なぜそうなのかも説明できるとなお良いですね。
また、今回紹介した攻撃手法は、擬似的なものであればC言語などでも実装できるので、ぜひ書いてみて、その処理速度を比較してみても
面白いかもしれません。
このままアドベントカレンダーに空きがあるようならするかもしれませんw