2012年7月4日水曜日

簡単に作れる個人情報収集マシーン -ONMITSU-

admob をやっているおかげで、自作アプリの利用者がどの程度利用しているのかは大雑把には把握できる。国や言語で統計情報がでてくるので。ただ、今後に活かしていくにはもっと詳細な情報がほしいわけです。別に国や言語や電話のキャリア、電話番号などはいらない。自作アプリの詳細な進行状況(どこでつまづいて放置されているのか?)を知りたいわけです。

拙作ではtextファイル形式でゲーム状況を自動セーブするようにしてあるので、その自動セーブデータをサーバーに送信するようにしたい。そこまでは技術的にできました。ただ、単一ファイルの上書きを繰り返すことになるので、ユーザー別にファイルを1個1個作って管理できるようにしたい。そのためには、何らかの識別様式が必要となってくるわけです。

当初は面倒なので us とか jp とか ru とか uk とか de なんかの国コードを取得して同じ国は一つの人物として識別しようかと考えていた。どうせ厳密にわける必要はないし、アメリカ以外の国で同時期に2人以上がアクティブインストールしているケースは珍しいので、情報収集の手段としてはその程度の識別で問題ないと考えていた。実際に PHP で国判定、言語判定などを行うソースはネット上に出回っているのでそれらを利用するのも手だな、と思っていたわけです。

ただついでに送信元、Android Java サイドでそういう識別を行ってみるためにはどうすればいいのかも調べてみたら、TelephonyManagerクラスというものを用いれば電話番号、デバイスID、SIMの国コード...など、なんていうかかなりプライベート情報を取得できるみたいです。ただし、これを使うには READ_PHONE_STATE というパーミッションが必要らしい。電話状態の読み取り? みたいな訳になるのか。

ただ文献ではパーミッションが必要とのことだが、パーミッションなしで試しても以下の結果がでてきた。

電話番号だとかNTT Docomo だとかシリアルナンバー(端末個別の番号)などが楽勝ででてきます。 これがパーミッションなしで取得できる?

アプリのパーミッションはダウロード時、あるいは”設定”>”アプリケーション管理” などによって確認する機会がある。android のアプリは安全のために手枷、足枷をされているのが基本状態だとイメージしてほしい。その枷(かせ)をはずすための作業がパーミッションの追加という具合だ。例えばナビゲーション関連のアプリなら利用者の現在位置を知るために GPS を使うだろうが、この場合は詳細な位置情報 ACCESS_FINE_LOCATION を掲げる必要がある。パーミッションを知れば、それがどういうアプリなのか推測できる...かもしれない(できないっちゃ、できない)。

INTERNET
READ_PHONE_STATE

上記二つは
admob 広告を成立させるためには必須
残念!!!
READ_PHONE_STATE がないと↑画像下側の赤文字警告文がでてくる(むろん広告はでてこない)。

admob を取り入れているアプリは、少なくともTelephonyManagerクラス相当の個人情報が収集される危険性があるということだ。ここはもう、製作者の良心に委ねるしかない...。と締めくくるとありがちなので、モス少し突っ込んで考えてみよう。逆に、個人情報収集したい側の思考に立つならば、
もっと欲しい
もっと欲しい
位置情報も欲しい
電話帳の中身欲しい
と、なるわけで、本気で抜く気ならアプリ利用者本人の電話番号だけじゃ飽き足らないのは明白。確かに電話番号や国や利用キャリアが判明するだけでは...ちょっと使い道がない。アプリ単体の利用統計を取るには便利だが...。つまり、抜く気ムンムンなアプリにはもっといろいろなパーミッションが付いているはず...。

0 件のコメント:

コメントを投稿