Consumer Secretの保護を考えてた

狙われないようにマイナーなクライアント作る・使えばいいと思う。*1
ユーザーが自分でConsumer Secret用意すればいいじゃんとは結構真面目に思ってます。自分のマシンまでやって来られたら意味がありませんが、それならそれで普通にウイルスとして対策を練れそうですし。

  • 難読化
    • HMAC-SHA1のルーチンに埋め込む
      • トークンを埋め込んだ計算ルーチンをダウンロードさせる?
      • 固定値とxorしただけの鍵を持っている必要があるから微妙
      • SHA1計算に埋め込むことができたらもう少し・・・??
  • HMAC-SHA1計算ルーチンへアクセスさせない
    • メモリ上の該当コードを他のプロセスから参照・呼び出しさせない
    • カーネルあたりでなんとかしてくれれば・・・
    • 今度はそのコードの取得or生成部分が狙われる
  • 鍵を持たない
    • APIプロキシを立てて、OAuthはプロキシとTwitterの間で使う
      • プロキシとのやりとりをOAuth1.0aよりマシな物にすればあり
      • オーバーヘッド
    • ハードウェアで処理
      • ICチップ付きクレジットカードか

色々考えてみたけどどれも既出なんだろうな。

You should do your best to protect secrets but at the end, a highly motivated hacker can always get to it in an installed app. So it's the value of the secret vs. difficulty of extraction.

http://stackoverflow.com/questions/7121966/should-i-obfuscate-oauth-consumer-secret-stored-by-android-app

*1:Githubで公開とかしてたらそろそろ機械的に回収されてもおかしくないなーと思うので、その場合流れ弾でも当たりそうですが