Tambourine作業メモ

主にスキル習得のためにやった作業のメモ。他人には基本的に無用のものです。

パスワード管理アプリを作りたい

某ゲーム会社さんが盛大に個人情報をまき散らしたのがきっかけで、いろいろなサービスへのログインパスワードをちゃんと管理する必要を感じた。

今は、それほど重要でないサービスは3種類ぐらいのパスワードのどれかを使い、重要なサービスのパスワードはテキストファイルに書いて自分のPC上においてある。あまりよろしくない。セキュリティ的にもよろしくないし、なにより、HDD のクラッシュや犬リセット的な何かで重要情報に二度とアクセス出来なくなるかもしれない。

それを考えると重要な情報はネットワーク上に置きたい。当然、暗号化しておいておかなければいけない。復号化プログラムもネットワーク上に置いておくべきだろう。安価なサービスだとネットワーク経路を暗号化することはできないから、復号化はローカルで行われるべきだ。

となれば、Javascript で暗号化/複合化するWebアプリケーションを作るのが良いだろう。サーバサイドでは暗号化された情報をそのまま保持するようにすればよい。そうすれば経路の暗号化は必須ではなくなる。

ただし、この実装には穴がある。経路でJavascriptプログラムをすり替えられるリスクがあるのだ。しかし、個人でこっそり使うサービスとしては許容できるリスクだと考えた。

習作の意味で、このアプリは以下のような実装とする。

  • アプリケーションは1つのHTMLファイルと1つのJSファイルに集約する
  • サーバとのデータのやりとりはJSON/AJAXで行う
  • データを提供するサーバサイドスクリプトRubyで実装する
  • クライアントスクリプトJavascript/jQueryで実装する