はやみずです API呼出しのたびにconsumer secretも必要になるんですね。やっぱりconsumer keyとconsumer secretはクライアントと共に配布するしかないみたいですね。
今のところの結論としては、base64とかconsumer keyを文字列リテラルじゃな くて、出力するコードとして埋め込むなどの適当な難読化をほどこしてクライ アントと一緒に配布するしかなさそうです。 termtterでも難読化して配布する方針みたいです http://github.com/jugyo/termtter/issues/issue/118 現状のコードでは、base64エンコードして埋め込んじゃってますね。 xAuth関係でのTwitter側からのメールを引用しますが > As it seems that your code is publicly available, how would your > consumer key and secret be protected? If an application's keys are > posted publicly, it allows for external parties to hijack the > application's API access and interact with the API on behalf of every > user who has authorized that application. ということなので、この忠告に素直に従うことができるのはクローズドソース でバイナリを実行ファイルとして配布しているクライアントだけに思われます。 まあ、バイナリに暗号化して埋め込まれたconsumer secretにしたって、本気で 解読されたらどうしようもないので本質的にはどうしようもないんですが。 状況から考えて、「現実的に実現可能で、本質的に安全」な方法な今のところ 無いように思われます。なので、とりあえず適当に難読化した状態でconsumer keyとconsumer secretをtwittering-mode.elと一緒に配布して、何か問題が起 きたらそのとき考える、という妥協案でどうでしょう? ---- Yuto Hayamizu Master's degree student at Kitsuregawa Laboratory Department of Information and Communication Engineering Graduate School of Information Science and Technology University of Tokyo From: Tadashi MATSUO <t...@mymail.twin.jp> Subject: Re: [twmode-users] OAuthについて Date: Thu, 03 Jun 2010 00:45:21 +0900 (JST) > 松尾です。 > >> OAuth実装どうもありがとうございます。OAuthについて一つ提案というか相談 >> なのですが、consumer keyをtwittering-mode自体に埋め込まずにOAuthを行う >> 方法として、request token取得までを代替わりするCGIをtwmode.sf.netに設置 >> するというのはどうでしょう? OAuthのプロセスを完全にはまだ理解できていな >> いので、間違ったことを言っているかもしれませんが。 > > この方法でconsumer secretを隠すには全てのリクエストをそのCGI > 経由で行う必要があるので負荷の意味で難しそうです。 > > OAuthでは一般のリクエスト時にも署名を付ける必要があるのですが > このときに使う鍵がconsumer secretとaccess token secretを単純に > &でつないだ文字列なので(http://oauth.net/core/1.0a/#anchor15) > 署名をローカルで行う限り、ローカル側でconsumer secretを持って > いなければいけません。(少なくともメモリ上には) > > twittering-mode.elにconsumer secretを入れないとしても、どこかから > 取得する必要はあるのでこれを完全に秘密にするのは難しいと思います。 > > consumer keyとconsumer secretだけCGIから取得すれば一応 > twittering-mode.elには載せないですみますがHTTPでアクセスすれば > 取得できる状況では全く秘密でもなんでもないでしょうし…。 > 配布側でconsumer情報を制御できるという意味ではこちらの方が > (Twitterにとって)望ましいのかもしれませんが、悪用が防げないのに > 「制御できる」ともいえないですよね…。 > > どうしたものでしょうか。 > > P.S. > 実際のところ、access tokenに関してconsumer secretも使って認証を > 受けているのに、リクエスト時の署名にさらにconsumer secretを直接 > 使う設計自体が面倒臭さの原因になってるような気がします。 > consumer secretとaccess token secretで作られるhashと、 > access token secretの組み合わせで鍵を作っても問題なさそうに > 思うんですが…。 > (いかにも思い付きそうなことなのでどこかに穴があるのかな) > > --- > 松尾 直志 <t...@mymail.twin.jp> > > ------------------------------------------------------------------------------ > > _______________________________________________ > twmode-users mailing list > twmode-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/twmode-users ------------------------------------------------------------------------------ _______________________________________________ twmode-users mailing list twmode-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/twmode-users