2005年05月31日
秘密鍵プロキシのインフラ化
先日まかまかさんと話して、いろいろFOAF/SNS/OpenID周りとかについて意見交換したんだけど、いろいろOpenIDの抱える根源的な危険の問題とか示唆してもらいました。
この手のサーバ間のやり取りによる分散型の認証システムって、原理的に完全にセキュアなもんにするのは難しいみたいですね...。
みんながルールを守ってくれると言う性善説の元だとうまくいくけど、誰のどんな要求でも認証の結果を返す悪意ある(あるいは管理されていない)認証サーバが混ざるだけで、何でもリレーするSMTPサーバ、誰でも串を通せるプロキシサーバのはた迷惑さと同じで、誰でも自由に認証されてしまってSpamの温床になってしまう危険性がある。
実際私がOpenIDの動作原理確認のためにまかまかさんのサンプルを使わせてもらって建てたテストサーバは、テストだったのでなんでも認証にしてました(既に削除)が、こういう認証サーバの存在が世間に広まってしまうだけで、捨てサイトのURLさえ用意すれば誰でも認証できてしまいます。
それを回避するには、そういう危険なオレオレOpenIDサーバでの認証を拒否するしかなくなってしまい、しかしてまたしてもMT-Blacklistみたいに危険サーバのリストを作って共有して...とまさにいたちごっこ。
とはいえ、これはOpenIDの問題と言うより、分散したサーバ間のやり取りだけで認証しようとするシステムにおいて原理的に避けようのない危険性のようなので、解決するには認証サーバを分散ではなくTypeKeyのようにある程度は信頼できるところのものだけに絞るか、或いは各ユーザのブラウザの方に秘密鍵を持たせるしか方法がない、というもののようです。
認証サーバを分散でなくすのは、そもそも「分散じゃないのが問題」というところからOpenIDも始まってるようにそれはそれで問題もあるし、かと言って各ユーザのブラウザが直接秘密鍵を持っちゃうっていうのは、そりゃブラウザーサーバ間の認証は完璧にできるようになるけど、秘密鍵という取り扱いの難しいデータが、セキュリティ意識もへったくれもない一市井ユーザの無管理PC内に光臨してくるのは、それはそれで問題ありあり。
というわけで、いろいろ問題あるのは承知しながらも、現状ではサーバ間やりとりでの認証しか解はないような気がするし、それならFOAF認証のバックエンドにもOpenID、もしくはその拡張版を使うのも一時的には仕方ないかなと。
でも、将来的には何とかしないといけないわけで。
そう考えた時、秘密鍵をユーザが管理するから危険なわけで、ブラウザとサーバの間でプロキシ的に動作して、ユーザに代わって秘密鍵を管理する機関があればいいんじゃないかというのを思いついた。
あるサーバへの認証が必要な時だけ、ユーザ/サーバ間の間に立って、ユーザの秘密鍵でユーザを認証するサービス。

こういうのを、どんなユーザでも何らかのプロバイダ経由でインターネットに繋がるわけなので、メールBOXやWebスペースなんかと同様にインターネットに繋がるためのインフラサービスとしてユーザに提供していけば、安全な個人認証が出来るのではと考えた。
秘密鍵自体はパスワードで暗号化しておいて、認証時にhttpsでパスワードを入力してもらって鍵に復号する、という形にしておけば、さらに安全度アップだと思う。
そして、こういう認証を行うプロキシ自体は、TypeKeyのようにSixApart一社、というような集中はさせないけど、でもISPやその他の事業者がサービスとして設置したところのみ、オレオレは許さない、という形で信頼できるところを管理すればいいんじゃないかと思う。
まあ、飽くまで将来的な話だけれども。
![[ここギコ!]](http://kokogiko.net/logo.png)



・国連人権委、アイヌ・琉球文化の保護を日本に勧告(ほるほる)
・3Dどきゅめんと…って何?点字文書?(building2008)
・3Dどきゅめんと…って何?点字文書?(building2008)
・Vodafone 3GのUserAgent問題:その後(Igroktectonick)
・GoogleMapsと連動したいならPostGISの他にmysqlという選択肢も出てきた あとジオメディアサミット関西も(okumula)
・人員がクラスタ化できている職場と言うのはうらやましい そろそろ限界です(「ま」のつく人)
・もうAmazonクレジットカードは使いません...楽天カード一本で。(名無し)
・ジオメディア忘年会 新年会から始まり東京1、2、関西と続いたジオメディア2008の締めくくり(ぴかぴか)
・GoogleMapsと連動したいならPostGISの他にmysqlという選択肢も出てきた あとジオメディアサミット関西も(kokogiko)