見出し画像

パスワード破りの基本

お疲れ様です。Y研究員です。他の研究員がライフイベントで忙しいので、ペースを上げて書いてみます。

先日の『フォーク爆弾』が人気だったので、今回もスクラッチでコンピューターの怪しい部分(セキュリティ)を紹介します。がんばって大げさに書くとサイバーセキュリティ入門ですが、気持ち的には年齢関係なく気軽に作って楽しめれば良いなと思っています。

パスワードは面倒

さて今回のテーマはパスワードです。長くしろとか、文字をいろいろ混ぜろとか言われますが、正直面倒ですよね。さらに厄介なのが3ヶ月毎に変えないといけないルールです。(話は脱線しますが、システム的には過去数回分しか記憶してないので、変更する日に3回とか5回とか変えてから最初のに戻す、という裏技はあります。。。)

もし真面目にやりたかったら、パスワードを保存するソフト(パスワードマネージャー)を導入してください。サイト毎にランダムに生成したパスワードを設定します。たとえ流出しても、慌てずに1箇所のパスワードを変更して対応完了です。自分はKeePassXを使ってます。

簡単なパスワードを破る実験

実際に弱いパスワードがどれくらい簡単に破れるか、実験します。今回もスクラッチを使います。

3桁の暗証番号として999を設定して、0から総当りで試しました。結果は約33秒かかりました。

画像2

次は1桁増やして9999を試します。結果は165秒でした。攻撃対象の数字は10倍ですが、かかった時間は5倍だけでした。

画像1

つまり4桁の暗証番号を破るのに、最大で3分かかりました。もうちょっと早くできるかなと思いましたが、少し遅いですね。スクラッチだからでしょうか。。。

Pythonでやってみる

意外に遅かったのでPythonでやり直します。雑に書きました。

画像3

4桁の暗証番号で、結果は。。。

画像4

0.6 msecでした。最大で1ミリ秒(1秒の千分の一)もかかりません。次に8桁でやってみます。(暗証番号を99999999にします)

画像5

結果は約4秒でした。 すこしグダりましたが、文字数を多くすれば安全にできると体感できました。

で、実際にどうなの?

普通は何回もパスワードを間違い続けると止められるので、総当りは簡単にできません。なので実際の攻撃は流出したパスワードを使いまわしたり、パスワードの破片みたいなもの(ハッシュ値)からパスワードを予測したりします。

長くなりました

お疲れ様でした。今回はパスワード破りの基本を実験しました。コンピューターのセキュリティは少し怪しいけど、楽しい部分もあるのでまた書きたいと思います。

では、また!

無料のプログラミングクラブCoderDojoを運営するにあたり寄付を受け付けています。お金は会場費・Wifiの費用・教科書に使用します。