資産管理ツールに「データを預けない」という選択
資産額は漏れて困る情報です。預けなければ漏れない、という設計について。
資産額は、漏れて困る情報
資産管理ツールに入力するのは、 どの銘柄をいくら持っているかという情報です。 合計すれば、その人の金融資産の規模がそのまま分かります。
これが漏れると何が起きるか。詐欺や勧誘の標的になります。 「資産を持っている人のリスト」は、その種の相手にとって価値の高い情報です。
クレジットカード番号なら再発行できますが、 資産額という事実は変更できません。一度漏れたら取り消せません。
預けなければ、サーバー由来の経路は消える
情報漏洩を防ぐ方法はいくつもあります。暗号化、アクセス制御、監査。 どれも有効ですが、いずれも「預かっている」ことが前提です。
預かっている限り、次のような経路で漏れる可能性が残ります。
- サーバーへの侵入
- データベースの設定ミス(公開状態での放置)
- バックアップの流出
- 内部の人間による持ち出し
- 運営会社の売却・倒産に伴うデータの移転
最後の項目は見落とされがちです。 サービスが他社に売却されれば、データも一緒に移ります。 預けた相手が、ずっと同じ相手とは限りません。
これらをまとめて消す方法が 1 つあります。最初から預からないことです。
ただし「預けなければ絶対に漏れない」わけではありません。 端末そのものがマルウェアに感染していれば読まれますし、 ブラウザの拡張機能、共有端末での閲覧、端末のバックアップ、 画面の覗き見といった経路は残ります。消えるのはサーバー側に起因する経路です。
ブラウザの中に保存するという方法
Web ブラウザには、データを端末内に保存する仕組みが備わっています。 IndexedDB や localStorage と呼ばれるものです。
ここに保存したデータが、保存しただけで自動的にどこかへ送られることはありません。
ただし、正確に書いておくべきことがあります。 これらの保存領域は、同じサイトから配信された JavaScript であれば読み取れます。 つまり「保存しただけでは送られない」ことと「運営者が絶対に読めない」ことは別です。
運営者が読み取って送信するコードを配信すれば、技術的には可能です。 第三者のスクリプトを読み込んでいる場合も同様です。 結局のところ、配信されているコードが信用できるかどうかに帰着します。 このあと述べる「確かめる方法」が意味を持つのは、そのためです。
それでも相場は取得できる
「サーバーと通信しないなら、株価はどうやって取るのか」という疑問が出ます。
ここが要点です。送るのは銘柄コードだけで、 保有数や取得単価は送りません。相場は誰にとっても同じ値なので、これで足ります。
ただし、サーバー側に伝わるのは銘柄コードだけではありません。 どんな通信でも、接続元の IP アドレス、時刻、ブラウザの種類は相手に届きます。 また、珍しい銘柄を問い合わせればその銘柄に関心があること自体は推測できます。 分からないのは「何株持っているか」「いくらで買ったか」「合計でいくらか」です。
預けないことの制約
この設計には、正直に言えば不便な点があります。
1. 端末を変えるとデータが無い
PC で入力したデータは、スマートフォンには入っていません。 サーバーに置いていないので当然です。
2. ブラウザのデータを消すと失われる
「閲覧履歴とデータを削除」でまとめて消すと、保有データも一緒に消えます。
消えるのはそれだけではありません。ブラウザの保存領域は、 既定では「できる範囲で保持する」扱いです。 端末の空き容量が不足したときに整理されることがあり、 一定期間そのサイトを開かないと片付けられる仕様のブラウザもあります。 プライベートブラウズを終了したときや、サイトのドメインが変わったときも読めなくなります。
3. 復旧を運営に頼めない
運営側にデータが無いので、「消えたので戻してください」と言われても対応できません。
制約への対処
書き出しておく
最も確実な備えです。ファイルとして書き出して保存しておけば、 ブラウザのデータが消えても読み込み直せます。
これは同時に、乗り換えの自由も意味します。 データが手元のファイルとして持ち出せるなら、 別のツールに移ることも、表計算で開くこともできます。
端末間の共有は、暗号化してから預ける
複数の端末で同じデータを見たい場合、何らかの形で受け渡しが必要です。
ここで採れる方法が 2 つあります。
- そのまま預ける … 運営が中身を読める。最初の問題に戻る
- 端末側で暗号化してから預ける … 運営が預かるのは意味の読めない塊だけ。 鍵は端末内で作られ、サーバーには送られない
暗号化と鍵の扱いが正しく作られていて、鍵が運営側に渡らない限り、 預かっている側は中身を読めません。 万一サーバーから流出しても、暗号文だけが出ていくことになります。
ただし鍵を失うと自分でも読めなくなります。 これは弱点ではなく、そういう仕組みであることの裏返しです。
なお、この方式でも「配信されているコードが信用できるか」という前提は残ります。 暗号化するのもブラウザ上の JavaScript だからです。
「見られない」ことは確かめられるか
利用者から見て、運営が本当にデータを受け取っていないかは、 外からは確かめにくいものです。
ただし、ある程度まで確認する方法はあります。 ブラウザの開発者ツールで通信の中身を見ることです。 どこへ、何を送っているかを自分の目で見られます。
もっとも、これですべてを証明できるわけではありません。 そのとき見た通信が確認できるだけで、あとから配信されるコードが 同じである保証はありません。ブラウザの拡張機能が何をしているかも、そこには映りません。
それでも、「送っていない」と書いてあることと、 実際に通信を開いて確かめられることは違います。 確かめようと思えば確かめられる作りになっているかは、 判断材料のひとつになります。
まとめ
- 資産額は漏れても変更できない種類の情報
- 暗号化やアクセス制御は有効だが、いずれも「預かっている」ことが前提
- サービスの売却・倒産でも、預けたデータは移転する
- 預けなければサーバー側に起因する経路は消える。ただし端末やブラウザ側のリスクは残る
- ブラウザの保存領域は同じサイトの JavaScript から読める。 「自動送信されない」ことと「運営者が読めない」ことは別
- 相場の取得で送るのは銘柄コードだけ。ただし IP アドレスや時刻は相手に伝わる
- 備えは書き出し。端末間の共有は端末側で暗号化してから預ける
ほかの記事
- 家族の資産を合算して見ると、何が分かるのか 世帯の資産配分は、一人ひとりの口座を見ているだけでは分かりません。合算と個別を切り替える意味を考えます。
- ドル建て資産の円換算 — 取得為替を固定する意味 円で見た損益には、株価の動きと為替の動きが混ざります。取得時のレートを記録しないと、この二つが分離できません。
- 米ドル建債券の評価額は、どう計算されるのか 額面・単価・利率という独特の考え方を、株式と同じ画面で扱うために整理します。