やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

パスワード・クラックの手口について調べる

 どんな手口があるか知れば、対策を立てることができる。

免責

 私は素人なので内容は保証できない。

情報源

パスワード・クラックとは?

コンピュータ・システムで保存あるいは伝達されるデータからパスワードを割り出すクラッキング手法をいう。

漏洩する経路

 パスワードはユーザ本人だけが知りうるものであるべき。もし自分以外の何者かにパスワードを知られてしまうと「なりすまし」されてしまう。

 パスワードはサービス提供側(S)とユーザ側(U)の二者が持っている。Sはサービスを実装したシステムのデータベースにある。Uは紙のメモ、電子メモ、パスワード管理ツール、ブラウザなどにある。

 自分以外の人物(たとえばSの社員や第三者(T))がパスワードを盗むには、Sのサーバや、Uのコンピュータにアクセスする方法がある。どちらもネットワークを介して侵入する。物理的に近づけるならサーバやコンピュータを直接操作することでも可能。

手口

  1. 復号化
  2. 事前計算
  3. 類推

 ユーザが以下のような対策をとると、クラッカーは突破する手口を編み出す。

対策 突破
暗号化 復号化
ハッシュ化 事前計算
パスワード作成 類推

1. 復号化

 パスワードは平文で保存していると見られたときに即漏洩する。そこで暗号化して保存する。しかし、暗号化したパスワードは復号化できるもの。

 以下の2つがわかれば復号化されてしまう。

 暗号化アルゴリズムは、リバースエンジニアリングなどで解析することで判明する。

2. 事前計算

 一度暗号化したら復号化できないようにすればいい。そこでハッシュ化である。

ハッシュ関数

 MD5、SHA-512のようなハッシュ関数を用いる。パスワードをハッシュ関数にかけると、ランダムな文字の羅列になる。

  • 目視してもパスワードを読み解けない
  • ハッシュ関数とハッシュ化テキストが揃っても逆算して平文化できない(一方向性)
平文 MD5
password 5f4dcc3b5aa765d61d8327deb882cf99

 また、md5sumコマンドでもMD5でハッシュ化できる。/tmp/md5.md5ファイルにpasswordを入力して保存し、以下コマンドを実行する。

$ md5sum /tmp/md5.md5
5f4dcc3b5aa765d61d8327deb882cf99  /tmp/md5.md5

事前計算

 ハッシュ化したパスワードを解析する手口がある。

 考えてみればわかる。誰でも簡単にハッシュ化できるのだから、予めハッシュ化したテキストの辞書を作ればいい。

  1. 予めパスワードに使われやすい単語の辞書を用意する
  2. 1をハッシュ化して紐付ける
  3. ハッシュ化されたパスワードを盗む
  4. 3を2と比較して平文化する
  5. ログイン画面で4のパスワードを使う(アカウントハック)

 解析できるかどうかを決めるポイントが2点ある。

  • A 平文のときに類推されやすいパスワードを使っているか
  • B ハッシュ化されたパスワードを盗めるか

 Aは平文の時点で類推不能なランダム値にすればいい。ただし、ランダム値さえ全パターンを網羅される。パスワードの桁数を増やして解析に膨大な時間がかかるようにすれば安全性が高まる。

 Bはパスワードを保存している媒体の管理方法が問題の本質。ここでは述べない。

3. 類推

 類推・辞書・総当りによる攻撃。

  • 総当り
    • 使える文字種と桁数で作れる全パターンでログインを試す
  • 類推しやすい
    • 人間が使いやすい
      • 辞書にある
      • 固有名詞
      • 世界で誰かが一度でも使った
    • 特定の個人が使いやすい
      • 個人情報
      • 氏名、生年月日など
    • 特定の個人が使った

 つまり、以下をすべて満たすようなパスワードが有効と考える。

  • A 桁数を増やす(総当り対策)
  • B 平文で意味不明なテキストの羅列(類推対策)
  • C 使い回さない(強衝突耐性)

A 桁数を増やす(総当り対策)

 パスワードは結局のところ、バイナリ配列パターン。コンピュータの計算力を用いれば、全パターンを網羅することが可能。

 桁数が多いほど試行回数が必要。自分やクラッカーが生きている間に完了しなければいい。そもそもサーバ側で回数制限などの対策がされているだろう。

 よって、ユーザはパスワードの桁数を増やせば、総当り攻撃からまぬがれる確率があがる。

B 平文で意味不明なテキストの羅列(類推対策)

 ユーザに関連するテキストをパスワードに使用すると類推される。たとえばTwitter, Facebook, Blogなどで自ら発信した情報から類推する攻撃がある。

 また、ユーザに無関係であっても、辞書や固有名詞などこの世のどこかで一度でも存在したテキスなら危ない。

 平文ですでに意味のない羅列なら類推対策できる。

C 使い回さない

 パスワードがどこかで漏れて、それを別サービスでも使い回しているなら、クラックされるアカウントが増える。せっかくA,Bの対策をしていても使い回していたらクラックされる。

 1アカウント1パスワードとし、決して使い回さない。