SSブログ

Python CGI で作る「秘密鍵・公開鍵」発行システムの構想 [プログラム三昧]このエントリーを含むはてなブックマーク#

アクセス・カウンタを作ろうと、ログ・ファイルを作成するところまで、たどり着きました。 でも、ログ・ファイルをそのまま公開するのは危なそうです。

お見せしたいのは、やまやまなれど

ログファイル版アクセス記録を作成しました。 そこで、みなさまに、どんな情報が収集できたかお見せしたいのですが、どうも公開すると差し障りのありそうな内容になってしまいそうです。 特に HTTP_REFERRER には、検索エンジンに与えたキーワードが含まれているので、「○○○社が○○○というキーワードで検索をかけてきて、○○○という情報に興味を示した。」という事までわかってしまいます。 場合によっては、「売れる情報」です。

そのため、すべての情報を公開するようなまねはしません。 ただ、このアクセス・カウンタを使ってみたいと思われる方もいらっしゃると思いますので、公開できる情報だけ表示するシステムを考えてみました。

需要1 : ログを見てみたいだけ

興味だけで、どんなログが表示されるか見たい方むけには、見に来た方に関連した情報だけをお出しします。 具体的には、「見に来た方のIPアドレス」と「アクセス記録のIPアドレス」が一致する情報だけ抜き出して表示するページを考えています。 もっとも、「抜き出す」作業が必要なので、データベース版を作った後の話ですが。 当アクセス記録に参加している BLOG に出たり入ったりして、記録のされ方を確認することが出来ます。 あっ、出たほうは記録に残らないか。

この方法にも、問題点が無いわけではありません。 それは、一般的なプロバイダでは DHCP (Dynamic Host Configuration Protocol) を使っているので、「見に来た方のIPアドレス」は決して固定では無いという事です。 そのため、ネットワークが物理的に近い人のアクセス記録がたまたま見えてしまう可能性もあります。 また、LANにゲートウェイを設置している企業などの場合にも、大域IPアドレスが数個に限定されると思いますので、社内の多くの端末からのアクセス記録が見えてしまいます。

まあ、DHCPがコロコロ変更される状況は、そうそう起こらないだろうし、社内からのアクセス記録が社内の他の人に見えると困るという状況(それはそれで、別の問題がありそう。)も考えにくいと思います。 データベース版を作成したら、最初にこのタイプのアクセス記録表示ページを作成しようと思っていますので、懸念のある方は、あらかじめお知らせください。

需要2 : 自分のWEBページ(BLOG)のアクセス記録を取りたい

このアクセス・カウンタの本来の目的は、こっちです。 もちろん、自前のレンタル・サーバを用意すれば、やりたい放題ですが、そこまでコストをかけずに、"noritan.org"のデータベースを共同利用する方法もあります。 この場合、「見に来た人がオーナになっているWEBページに関連する情報だけ提供する」というのが、正しい姿だと思います。 いくつかアクセス記録参照の際の問題点を考えました。

  1. アクセス記録を参照する方法

    あるWEBページのアクセス記録を参照する場合を考えます。 性善説に基づけば、「WEBのホスト名(と上位ディレクトリ)を入れてね。」だけで済むのですが、最近のインターネットは善人ばかりじゃないらしいので、この方法は使えません。

    そこで、WEBページのオーナしか知らないアクセス・キー(秘密鍵と名づけます)を指定してアクセス記録を参照するようにします。 秘密鍵は、アクセス記録参照ページの URL に query を入れるだけで十分でしょう。 盗聴までは、考えないことにします。

  2. 秘密鍵を発行する方法

    秘密鍵を発行する時、それほど、重いセキュリティが必要だとも思えないので、「あなたのWEBページに対応する秘密鍵は、コレです。」というメールを送れば十分です。 この方法は、簡単なのですが、「メール・アドレスの受け渡しをどうするか」「メール・アドレスが本人のものなのか」という問題が解決できません。

    そこで、「秘密鍵発行ページ」を用意し、秘密鍵を発行すると同時に"noritan.org"の鍵サーバに登録する作業を自動で行います。 これで、WEBページのオーナしか知らない秘密鍵ができました。

  3. WEBページのオーナであることを証明する方法

    WEBページのオーナが秘密鍵を受け取ることが出来ましたが、これだけでは、秘密鍵をどのWEBページに紐付けすればよいかが判断できません。 「秘密鍵発行ページ」で「WEBのホスト名(と上位ディレクトリ)を入れてね。」とやってしまうと、誰でも他人のWEBページのアクセス記録を見ることが出来ます。

    「私が持っている秘密鍵はコレです。」という記事をWEBページに貼ってもらうと、簡単に確認できますが、秘密鍵を公開してしまうことになるので、意味がありません。 そこで、「秘密鍵発行ページ」で「秘密鍵」と同時に「公開鍵」を発行し、「公開鍵」の方をWEBページに貼ってもらいます。 「秘密鍵」と「公開鍵」を対にして鍵サーバに登録すれば、WEBページのオーナが持っている「秘密鍵」がどれなのかを判断することが出来ます。

  4. 他人が「公開鍵」を貼るのを防ぐ方法

    「公開鍵」をWEBページに貼る方法には、欠点があります。 それは、『WEBページに貼られた「公開鍵」を別のWEBページにコピーすることができる。』ということです。

    こういった場合、「本物は誰だ!!」と問われても、判断できません。 そこで、「公開鍵」を貼ると同時に当BLOGのコメントまたはトラックバックで「ここに貼りました。」と通知してもらいます。 これなら、もし、別の人が「公開鍵」をコピーしたとしても、コメントまたはトラックバックの到着順から本物を見分けることが出来ます。 つまり、「早い者勝ち」システムです。

    もっとも、「公開鍵」をコピーした人は、「秘密鍵」を持っていないため、情報にアクセスすることはできません。 コピーした人に嫌がらせ以外の利益は無いはずなので、こういう事件は発生しないと思います。

  5. 「秘密鍵」と「WEBページ」の紐付け方法

    ここは、手動で行います。 当BLOGオーナがコメントまたはトラックバックを確認して、紐付け情報を鍵サーバに登録します。 ここだけは、自動化しない方がきっと無難でしょう。

というわけで、人間も大いに介在するシステムが出来上がりました。

アクセス記録を参照するまでの手順

DataBaseKeyProvider.png

色々と問題点を並べましたが、すべて解決できそうなので、システム全体のおさらいです。


  • ユーザが「鍵発行ページ」から鍵の発行を申請をする (1)
  • 自動的に「公開鍵」と「秘密鍵」が鍵サーバに登録される (2)
  • ユーザが表示された「公開鍵」と「秘密鍵」をメモする (3)
  • ユーザが紐付けを希望するWEBページに「公開鍵」を記入し公開する (4)
  • ユーザがDBオーナに「公開鍵」の公開をコメントまたはトラックバックで通知する (5)
  • DBオーナが鍵サーバに「WEBページ情報」を登録する (6)
  • ユーザが「秘密鍵」を使ってアクセス記録を参照する (7)
  • アクセス記録参照ページが「秘密鍵」を認証し記録を表示する (8)

これ以外に「ユーザが自身のWEBページにJavaScriptを仕込む」というステップがありますが、これはいつでもかまいません。

以上の手順で安全にアクセス記録を参照できるようになると思います。 抜けは、ありませんかね。

参考文献

昔、この本で読んだエキスが少しは入っていると思う。

暗号技術大全

暗号技術大全

  • 作者: ブルース・シュナイアー
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 2003/05/31
  • メディア: 単行本

nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。