the secret only between you and me

dropbox の API を使用するアプリケーションには Production status というものがある。最初にアプリケーションを登録した段階では development で、アプリケーションを登録したアカウントしか使用できない。その後 dropbox へ申請することで production に移行し、誰でも使えるようになる。

ということで申請したら、却下された。

理由は OAuth のコンシューマキーとコンシューマシークレットを plaintext で保存してんじゃねーよ! せめて難読化しろやボケが! というものであった。とてももっともな話である。

過去の記事で考察したように、ブラウザのエクステンション(javascript なのでソースを見るのは容易い)にどうやって OAuth のコンシューマキー等を含めるかは難しい。

エクステンション内ではなく、適当なサーバを用意し、その中で OAuth を用いた API の使用認可を得るようにすればコンシューマキーの置き場所について考える必要はない、が、適当なサーバが提供する REST api を真に wasavi だけが使えるようにするための認可が更に必要になる。いずれにしろエクステンションの中に何らかの鍵を含めなければならず、結局同じことだ。ならば中継サーバを使う必要性はあまりない。

ということでエクステンションに鍵を難読化した上で収めるようにしなければならないのだが、難読化や暗号化したところでデバッガを立ち上げて復号した直後にブレークポイントを張るだけで真の内容が見られるのだからあんまり意味ないよなーと思っていた。思っていたが、dropbox 側で難読化しろと言うのだから、そういう方向にしようと思う。

とりあえず難読化というか、暗号化しよう。blowfish あたりでいいだろう。

Javascript Blowfish Library
https://github.com/takezoh/blowfish.js

コンシューマキーとコンシューマシークレットを収めた json ファイルを blowfish で暗号化し、base64 してそれをエクステンション内に収める。バックグラウンドの起動時にそれを復号する。

Leave a Reply

Your email address will not be published. Required fields are marked *