2002年7月のご挨拶

更新日:2002/7/1

 パスワードの安全性

パスワードの安全性

 スワードの安全性について、取り上げます。
 マイクロソフト・ワードをはじめ、ファイルにパスワードを設定して、一定のセキュリティを確保できるソフトウェアがあります。
  これらに設定するパスワードについて、どのような注意が必要かを考えましょう。

 具体的に取り上げるものは、アクロバット形式のpdfファイルですが、原理的には、他の製品やサービスにおけるパスワードについても同様に考えられるでしょう。
  バージョン5のpdfファイルには、2種類のパスワードを設定できます。
 文書を開く権限を与える「ユーザーパスワード」と管理者の権限を与える「オーナーパスワード」です。
  PDFファイルは、RC4方式の暗号を採用しています。
 バージョン5より40ビットの他に128ビットの暗号も採用されています。
 40ビットの方は、バージョン4以下との互換性を保つために利用することができます。

  パスワードは、他人が文書をみだりに開けないために設定します。
 しかし、自分で設定したパスワードを忘れてしまい、文書が開けなくなったことはないでしょうか?
  私は、「一太郎」で以前、その経験があります。その際は、思いつく限りの文字列を入力して、なんとか開くことができました。
 これに懲りて、みだりにパスワードを設定しないようにしています。

  一方、世の中には、このような事態に対処するためにパスワード解除ソフトを販売しているところがあります。
 例えば、次のようなところです。http://www.crackpassword.com/
 このページを見るとマイクロソフトのOfficeやアウトルックエクスプレス等の製品について、パスワードを解除するためのユーティリティソフトを販売しています。

  ここでは、このうちのPDFファイルのパスワード解除製品を入手しましたので、その結果をご報告しましょう。
 製品名は、「Advanced PDF Password Recovery Pro」という製品です。価格は、60米ドルでした。
  結論的に言えば、ユーザーパスワードが設定されていないPDFファイルは、オーナーパスワードの設定の有無、暗号強度40ビット・128ビットの如何にかかわらず、いずれも解除することができました。

  一方、ユーザーパスワードが設定されている場合は、パスワードの桁数と複雑さにより妥当な時間の範囲で解読できるかどうかが分かれます。
  注意深い読者の方は、私が「解除」と「解読」とを使い分けていることにお気づきでしょう。
 この「APDFPR Pro」は、ユーザーパスワードが未設定でオーナーパスワードのみが設定されているPDFファイルのセキュリティを解除することができますが、これは、オーナーパスワードを解読している訳ではないようです。
 ソフトウェアは、「なんらかの方法」により、オーナーパスワードを解除してしまうように見えます。
  一方、ユーザーパスワードが設定されている場合は、APDFPR Proは、パスワードの解読を試みます。
 換言すれば、PDFファイルの場合は、ユーザーパスワードを設定することが肝要です。
  なお、誤解の無いように記しますが、アクロバットを利用している限りにおいては、ユーザーパスワードとオーナーパスワードは、それぞれの意味を持っており、その役割を果たします。

  さて、APDFPR Proが提供しているパスワード解読手段は、次のとおりです。
 1.総当たり攻撃(brute-force)・・指定した桁数の範囲で設定されている文字種について総当たり的に試す、
 2.辞書攻撃(dictionary)・・半角英数で記載された単語の辞書を元にした攻撃、
 3.マスキング(Mask)・・パスワードの一部の文字列が明らかな場合に使用できる攻撃、
  このうち、基本となる手段は、総当たり攻撃です。
 解読に要する時間は、「場合の数」とパソコンの能力及び台数によります。
 場合の数は、パスワードの桁数をKとして、各文字種の個数をn(m)(ここでmは、文字種の種類)としたとき、N=(n(1)+n(2)+・・)^Kとなります。(^は、べき乗を表します)
  例えば、文字種として、0~9の数字のみを使用している場合は、N=10^Kとなります。

  まず、暗号強度40ビットの場合について、調べた結果を以下にまとめてみました。
 使用したパソコンは、1台でCPUは、Celeron700Mhzです。

  上表で「9」というのが数字のみで構成されたパスワードの総当たりによる攻撃で解読に要する最大時間です。
 これで見ると数字のみの場合は、13桁以上を使用しないと危険であることが分かります。8桁では、10分で解読されています。

  これが「A」(英字大文字または小文字)、「Aa」(英大文字と小文字の混在)と文字種が多くなるとともに解読時間が増えてきて、英大文字、英小文字及び数字を混在させると、8桁でほぼ十分な強度に到達することが分かります。
 先ほどの式と比較すれば、例えば、9桁の数字のみと英文字の場合、要する時間の比率は、(347*24/1.5)=5552です。
 一方、先ほどの式では、アルファベットの個数を26文字として、場合の数の比率は、(26/10)^9=5430となり、ほぼ一致しています。
  以下に場合の数を数字のみの場合と比較した比率表を示します。

  一方、暗号強度が128ビットの場合は、以下のようになります。

  128ビットにすることにより、パスワードの桁数が1~2桁程度増えたのと同様の効果があることが分かります。
 例えば、数字のみの場合、9桁では、その解読時間の比率は、(38/1.5)=25倍、増加しています。
  128ビットの暗号強度を使用する場合は、前述の条件(数字+英大文字、小文字の混在)では、6桁でほぼ十分なものとなります。

  なお、総当たりによる解読では、最初のうちに解けてしまう場合もあり得ますので、上記は、あくまで最大の解読時間について検討した結果です。
  また、パソコンの台数を増やされると段階的に安全性は、減少します。
 例えば、100台に分散して計算されると1年間(十分安全と判断しました)は、数日に縮まってしまいます。

  次に辞書攻撃について、調べてみました。同ソフトには、小さな英単語の辞書が添付されています。
 単語数は、約26000余りです。辞書ファイルは、拡張子がdicの普通のテキストファイルです。
 この単語について、辞書攻撃を行うに要する時間は、小文字のみが瞬時、小文字大文字混在が約2分30秒です。

  日本語の(ローマ字)辞書は、添付されていませんので、自作しました。
 ○太郎の辞書ユーティリティでひらがなの単語を出力させることができます。
 それは、単語の他に品詞等の3つの部分から成り立っています。
 これらを例えば、アクセスのテーブルに読み込み、ひらがな以外の部分を切り捨てます。
  そののち、ひらがな→ローマ字に変換します。
 そのため、私は、ひらがな単語からなるテキストファイルを(ヘボン式の)ローマ字ファイルに変換するプログラムを「Basic/98 for Windows」で作成しました。
  これにより約13万語からなる辞書ができました。この辞書の利用に要する時間は、小文字のみで1秒、大文字小文字の混在する場合で3時間程度を要します。(以上、いずれも40ビットの暗号強度の場合です)
  下記に128ビットの場合を含めて、結果を記します。

  上記を見ると、いずれも辞書攻撃は、短時間で終結します。
 辞書に掲載されている言葉をパスワードに利用する危険性は、これを見ると明らかでしょう。
  上記の辞書には、名詞、固有名詞、固有組織名等を採用してあります。
 手間さえいとわなければ、形容詞などを取り入れることにより更に語数を増やすことができます。
  このようによく知られた単語をパスワードに利用することは危険ですが、覚えやすいという意味では、ことばを利用する方法も捨てがたいものです。
  その場合は、その単語に無関係な数字や英字を文字間に追加してください。
 このようなクラッキングツールを使われても、解読しにくくなり、安全性が高まります。
  例えば、「hiroshima」ではなくて「hir31oshim02a」のようにです。

  ただ、このように複雑なパスワードを使用すると、冒頭に書きました「忘れる」という問題に戻ってきます。
  複雑なパスワードを設定して、忘れてしまうと、このようなツールでも解除できなくなります。まさに、「矛盾」ですね。
  となると、やはり、なんらかの形でメモしておくしかないでしょう。
 パスワードを管理するソフトも種々ありますが、FDやCD-Rに書き込んで、必要な際に参照するというのが、最も安全なように思えます。

  なお、上記のようなクラッキングツールを使用する際は、著作権に注意してください。本稿は、このようなツールを利用者が著作権を有しない文書について使用することをお勧めするものではありません。
  本文の目的は、より安全なパスワードを考えることです。ツールは、自己責任においてご利用下さい。


 ※PDFファイルで「印刷すると黒くなる」という問題が生ずることがあります。
  これは、メニューで「ツールからPDFコンサルタント」の「検出してすべて削除」を実行すると、
  解除できる場合があります。

  では、今月は、ここまで。
 皆様、お元気でお過ごし下さい。また、来月、お会いしましょう。

前回のご挨拶に戻る今月のご挨拶に戻る次回のご挨拶に進む