プログラマでありたい

おっさんになっても、プログラマでありつづけたい

金融機関の口座集約アプリの危険性について


 先日、銀行口座の口座集約のとあるiOSアプリの記事について、危険だよなぁと何気なく呟いたら中の人からリプを貰いました。Twitterで呟いているのですが、文字だけでは解りにくいのでまとめてみます。ただ、そのアプリ固有の問題ではなく、構造的な問題なのでアプリ名は開示しません。(安全なので安心ですという論調は、どうかと思いますが。。。)

口座集約アプリの構造



 口座集約のアプリは、アカウント・アグリゲーション(Account aggregation)サービスと言われています。サービスの実体は、複数の銀行の口座情報とID,Passwordを預かり、代行でログインして結果のhtmlを解析(スクレイピング)して利用明細や残高を集約するものです。口座とID,Password情報、解析エンジンをどこに置くかで、クライアント型とサーバ型に分類されます。


サーバ型アプリケーション
 まずサーバ型アプリケーションですが、口座情報、ID,Passwordをサーバに預けます。そして、サーバから各銀行にアクセスして講座情報を引き出し、サーバ内で解析して結果を集約します。ASPのような形式で、提供されていることが多いです。メリットとしては、それぞれの銀行サイトのHTMLの変更に対しても、サーバ側のプログラム修正だけで済むので素早く対応出来ます。デメリットというか構造的な問題点は、サーバに全ての情報が集まるのでサービスの事業主体の信頼性が全てということになります。概念的には、預金通帳と印鑑を預けるのと非常に似ています。(※実際には振込等は第2パスワード等が求められるので、ID,Passだけでは参照しか出来ないというのが多いですが。)iOSアプリであたかもクライアント型に見えるものもありますが、解析の主体はサーバだとサーバ型と分類されます。


クライアント型アプリケーション
 クライアント型アプリケーションは、講座情報、ID,Passwordは全てローカルのアプリにあります。また解析エンジン等もローカル側のアプリにあるので、アプリ提供者側はクライアント側の情報には一切触れません。利用者側としては、重要な情報をサービス側に預ける必要がないので、比較的安心して利用できます。一方で銀行サイトのHTMLが変更になった場合は、スクレイピングエンジンの変更をアプリの更新という形で行う必要があるので、それなりのタイムラグが予想されます。また、アプリ内の挙動はほぼブラックボックスなので、例えばID,Password等を他のサイトに送っていたとしても、ほぼ知るすべはありません。Android等の審査がないタイプのストアであれば悪意のあるアプリが配布される懸念もあります。代表的なアプリとしては、かつてMicrosoft Moneyの中にアグリゲーション・サービスも含まれていました。(既に販売は終了しています。)

どうすれば良いのか?



 じゃぁどうすれば良いのでしょう?私は割とお手上げで、サービスとして難しいと思っています。例えば銀行側が積極的に対応して、OpenIDのような認証の仕組みとAPIを提供すれば解決します。しかし、銀行側にはメリットはありません。開発・運用コストの問題や、そもそも銀行は自分のサイトに来てほしいという動機があるのに、来なくする為のサービスを支援する理由がありません。
 クライアント型アプリは比較的安全そうに見えますが、サービスの提供者側としては継続課金が難しく、アプリの更新コストも非常に掛かるので難しいと思います。となるとサーバ型しか残りません。実際、現在のサービスの主流はサーバ型です。
 サーバ型の選択ポイントは、とにかくサービス主体の信頼性です。ID,Passwordも暗号化して保存していると言っても、サービスの性格上可逆暗号化で保存することになります。そうすると、生のID,Passwordを預けているのと、(利用者側から見ると)何ら変わりありません。ですのでセキュリティポリシーの他に、いざ何かあった時に耐えられるだけの経営体力があるところではないと危険だと思います。そうなると、信託銀行のような組織が向いているのですが、信託銀行としては特にサービス展開するメリットないので、まずやらないでしょう。
 間違いないのは、自力で開発して運用することです。しかし、そんなスキルとそれに費やす暇がある人は、殆どいないでしょう。やるのであれば、オープンソースで多人数で保守するかですね。しかしまぁ、望み薄のような気がします。

まとめ



 ということで、正直難しいなぁというのが口座集約アプリです。そもそも何でこのようなエントリーを上げたかというと、身の回りで急速に口座集約アプリを使う人が増えてきて、ちゃんとリスク考えているのかなぁという心配で書いてみました。一方で、口座集約アプリは便利ですので、安全に使える方式があれば良いですね。最新の業界事情等は知りませんので、間違っている所があればツッコミお願いします。

Spidering hacks―ウェブ情報ラクラク取得テクニック101選

Spidering hacks―ウェブ情報ラクラク取得テクニック101選

Rubyによるクローラー開発技法  巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法  巡回・解析機能の実装と21の運用例


See Also:
オープンソースのRubyのWebクローラー"Anemone"を使ってみる