トップページ | 利用規定
  CGIとセキュリティ

(株)友林堂
(株)友林堂


セキュリティにはいろいろありますが、ここでは、知っておきたいパスワードの基礎知識を説明します。 是非あなたのシステムの安全向上にお役立てください。

現状と心構え

インターネットはその仕組み上、自由で匿名性の高いネットワークであることから、 その安全性やセキュリティには問題があります。 ページを見せているだけであればそれ以上の心配は特にありませんが、 電子掲示板やチャットなど、外部からのアクセス(書込等)を受けるような仕組みを利用する場合は、 いかなるトラブルの可能性を知った上で利用しなければなりません。

リスクの可能性

ひとえにトラブルといってもいろいろあります。 誹謗中傷や不適切な言動を投稿されたりする単純なものから、 パスワードを盗まれたり解読されたり、 CGIプログラムの盲点を突いたクラッキング(破壊行為)などの技術的な行為と、 多種に及ぶでしょう。

解決法はあるか

多種多様なトラブルの原因の中から、 ここではCGIに関係するような技術的なセキュリティに関することを、マメ知識としてご紹介します。 リスクをできるだけ最小限に抑えるためにも、あなたのできる範囲で結構ですので、 いくつかの知識を心得ておいてください。


破られやすいパスワードを使わない

パスワードはダイヤルアップ用、電子メール用、電子掲示板用など、いろいろところで使われます。 まず、ダイヤルアップや電子メールやFTPなどの、特に安全性が必要なパスワードと同じものを、 電子掲示板などの記事削除用等のパスワードに用いないことが重要です。

暗号化されたパスワードは解読できないことはありません。 また、解読用のプログラムを使わなくても、推測だけで見つけられてしまうことも少なくありません。 あなたは単純な、またはそれに準ずるパスワードを使っていませんか?

主な解読プログラムは、総当たり照合や単純なパスワードの検討を行いながら解読していきます。 ただ、パスワードの作り方によって高速なCPUを使ってもとても時間がかかります。 よいパスワードの作り方を教えることは破ってくださいと言っているようなものですので、 悪いパスワードを指摘することで、あなたは独自の方法でパスワードを作ることができるでしょう。 次に当てはまらないようにパスワードを作成しましょう。

  • 変更する場合、元のパスワードに似すぎている.
  • 6文字以内の短いパスワードである. (8文字以上推奨)
  • 辞書に存在する単語を使っている (例 bog cat house).
  • 単語を単に組み合わせているだけである (例 dog&cat 59634649).
  • 誕生日などの日付で構成されている (例 19980101 S500815).
  • 英字だけや数字だけで構成されている.
  • ユーザIDや自分の名前やドメイン・ローカルホスト名が含まれている.
  • 自動車や電話等のナンバーを使っている (例 12-34 3354-1234).
  • 連続や反転した文字を使っている. (例 abcdef aabbcc abccba)
  • キーボードの隣り合った文字を使っている (例 asdfgh wertyu).
  • 記号が入っていない. (できれば記号を散りばめると良い)

※ ちょっとコラム

電子掲示板のパスワードやアクセス制限パスワード等は秘密鍵方式といって、 1つのパスワードを使って暗号化されています。 この方法はCGIプログラムにもよく利用されて手軽で処理しやすいものですが、 高度なセキュリティを必要とするシステムではあまり用いられません。 SSLPGP等は公開鍵方式といって、 自分は相手の公開鍵(公開されているパスワード)+自分の秘密鍵(公開しないパスワード)を使って暗号化したものを、 相手は自分(こちら)の公開鍵+相手(自身)の秘密鍵で読するものです。 この方法はかなり強力な暗号(解読できないわけではありませんが、 世界最速のスーパーコンピュータを使って24時間フル稼働しても解読に何年もかかるそうで、 時間量的に安全な方法と呼ばれています。特にPGPはその発表に関して、暗号が武器のひとつであることから、 アメリカ国防省といろいろあったもので、興味があれば文献を探してみると面白いです。) ですが、お互いに同じ暗号ソフトを用いるなどの手間がかかります。 一部のクレジットカード会社では、これらの強力と思われるシステムも難色を示しているところもあります。 カード番号の受け渡しを通信で行う場合にインターネット経由のものを許可しないところも少なくありません。 特に日本のカード会社各社は特に慎重なようで、電話やFAXでやっと認可されることが多いようです。

パスワードは変更をこまめに

ちょっとコラムでも書きましたが、暗号方式によってその強度は異なりますが、 時間をかけることで解読不可能ではありません。 これを逆手にとれば、解読開始したパスワードを変更してしまうことが、 解読する側から見ると嫌なことになります。 パスワードは定期的に変更することが重要といわれるのは、このことが理由です。

電子メールを信用しない

多くの方が電子メールは封書で手紙を書くような感覚で送信されているようですが、 インターネット上を電送されるデータとして、WWWと何ら変わりはありません。 最近はスクランブル(暗号化)する機能を持つメーラーもありますが、 殆どの方は通常のメールソフトを利用しているでしょう。 簡単に言うと葉書で手紙を書くのと同じで、 輸送中に手にすることができる人が中身を読むことは簡単なことです。 電子メールであっても、クレジットカード番号や重要情報は用いないことが肝心です。 これは、フォームから送信されるメールも同様です。

※ ちょっとコラム

パスワード破りに関することを主に説明してきましたが、トラブルの原因はこればかりではありません。 例えば、電子メールで送られてきた暗号文は本当に本人からのデータでしょうか? 例えば、表示されていた公開鍵は本当に本人のものでしょうか? 内容の改ざんや「なりすまし」といったことも問題になってきます。 身近なところでは、掲示板に記入されたEメールは本当に本人のものでしょうか? 勝手に他人を装うことはとても簡単です。 そこで、例えばフォームデコードサービスの利用登録ではその場で登録せず、 一旦記入されたEメール宛てに登録の意志の確認をする意味で、パスワードを送信しています。 少なくとも他人のEメールでは、簡単には自分でそのメールを受け取ることができないわけですから。 もっと高度なシステムでは、電子署名という手段もあります。 一般人は通常はそこまで重要な情報をやりとりをしているわけではないので、 手紙を毎回書留めで郵送しないのと同じで、妥協の元に利用しているのです。

パスワードファイルを見られないようにする

推測以外でパスワードを解読するには、暗号化されたデータが必要になります。 いままで簡易BBSやその他のシステムで、データファイルがWWWから直接閲覧できる場合に、 暗号化されてはいるもののパスワードが見えてしまっていました。 当サイトのプログラムはホームユースで手軽に利用できるものとして公開されており、 万が一パスワードを破られても、 記事を勝手に削除される程度(重要なシステムに比べればということ)の甚大な被害を被るものではないものとして設計されています。 利用目的から言って、慎重さのあまり設置や利用が難しくなることを憂慮したからです。 ただ、その中でも比較的容易にできることで安全性が高まることはよいことだと思い、 利用頻度が高い掲示板やパスワード管理ツール関係から徐々に、設置方法の見直しを行っています。

例えば、簡易BBSのデータファイルは今まで minibbs.dat としていました。 しかしこのファイルをWWWから直接見ることも可能でした。 もし設置しているサーバにWWWから見えない場所が存在するならば、 そこにデータを移動することで見られないようにすることができます。 また、WWWから見えない場所が確保できないサーバでは、 データファイルの拡張子をCGIの拡張子の .cgi にすることでサーバエラーを誘引することで、 中身が見えないようにするなどの工夫をすることができます。

プログラムへの応用

ネットワーク上に出回っている簡単な暗号解読ツールを使っても、 悪いパスワードは比較的簡単に解読されてしまうことがあります。 ただ、これらのソフトはその仕組みが固定されていることが多く、 CGIプログラム自体で特有の手法で暗号化 (ただし、そのCGIプログラムで独自に暗号化したものは、 他と互換性を持たなくなります)することで、 解読できない、または解読を非常に困難にすることができます。

暗号化するには、crypt()が利用されます。 これを複数回コールするだけでも、私たちのようにホームユースで使う分にはかなり有効のようです。 プログラミングの技術がある方は、 参考プログラムをみて組み込んでみるのもいいでしょう。 (実行例) 実際には、パスワードの文字数チェック(最低6文字以上)を必ず入れることが重要です。

※ ちょっとコラム

主にUNIXのCGIプログラムで利用できるcrypt()で実行される暗号は、 スタンダードDESとFreBSDのMD5があります。 (この他にもあると思いますが、私は体験したことがありません。) MD5の方はあまり見かけませんが、暗号化したものをみると、頭が$1$から始まることでわかります。 標準DESよりもMD5の方が強力で、例えば、非常に悪いパスワードとして"10"(たった2桁で数字だけ)を、 それぞれの環境で暗号化したものを解読ソフトにかけた場合、 標準DESは約1分で解読されてしまいましたが、MD5の方は30分経過時点でも解読されませんでした。 さらに、標準DESは8文字を超える部分は無視されるようですが、 MD5はそれよりも長いパスワードを認証できるようです。

なお、解読ソフトをここで紹介することは敢えてしないことにします。 利用しているパスワードが果たしてどのくらい安全かを善意でクラッキングすることはいいでしょうが、 第三者のパスワードを悪意をもってクラッキングしようという人へきっかけを提供してしまわないとも言えないからです。 ご了承ください。


Powered by CGI RESCUE(R)