QLOOKアクセス解析

The ruin of ruinz

技術的なメモとか

OAuth、xAuthの問題点

OAuthってユーザにとってセキュアだし、とってもクールだね!と思っていたのですが、デスクトップアプリケーションがConsumerとなる場合、問題があるということが巷で話題になっていました。

何が問題なの?

ConsumerはService Providerにリクエストを送る時、Consumer KeyとConsumer Secretというパラメータを用いて、Consumerであるという証明をService Providerに行います。この情報さえ分かってしまえば、そのConsumerとしてなりすまして動作するアプリケーションを作れてしまいます。

暗号化すればいいんじゃないの?

Consumerがウェブアプリケーションである場合、ユーザからは完全にConsumer KeyとConsumer Secretが隠蔽されていますが、デスクトップアプリケーションの場合そうはいきません。何らかの形でConsumer KeyとConsumer Secretを取得し、Service Providerにリクエストを投げかけなければいけません。仮に暗号化して格納していても、少なくとも、リクエスト時にはこのペアのパラメータは平文化しなければならないので、その時点で完全に無防備な状態になります。

じゃあ、どうすればいいの?

外部サーバにConsumer KeyとConsumer Secretを格納し、そこを経由してリクエストを送る外無いと考えていますが、サーバのコストがかかることを考えると非常に面倒です。また、外部サーバを経由しなければならないのでユーザにとってのリスクが大きくなります。xAuthを使うとすれば、ユーザのIDとパスワードの平文がそのサーバを経由することになります。経由するサーバの情報を書き換えられた場合、そのユーザ情報を盗まれてしまう危険性があります。

結局、Consumerなりすましは防止できないの?

現在、有効な手段は見当たりませんし、思いつきません。Service Provider上のクライアントアプリケーション名表示の信頼性はあまり無いのが現状です。どうにかならんかなあ。

name:
text: