はやみずです

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

メールによる返信