結局どんなIDを使うといいのか考えてみた -その1-

某アプリの炎上騒動から最近「READ_PHONE_STATE」を要求する Android アプリへの風当たりが強くなってきましたね。

携帯電話の製造番号に当たる「IMEI」をユーザ識別情報として使うと、ユーザが端末を買い換えるまでその値を変える事が出来ない。ANDROID_IDなんてものもあるが、コイツもファクトリーリセットしないと変更できないという厄介な値で、気軽に変更するというにはユーザにとって敷居が高い。

トレーサビリティ高いIDは使っちゃ駄目だんだよ君ィ!

とか、まぁそんな感じの議論をよく目にします。

じゃあさ、と。じゃあ、何を使えば良いんですか?と。

「ユーザが変えたいタイミングで簡単に変えられつつ、複数のアプリで共有できる個体識別用のID」ってどんなんですか?と。

そんな疑問を持ち、ついカッとなってプロトタイプを作ってみました。
題して「ID管理君(仮名)」

【ID削除状態】

【ID生成状態】

ボタン1つで自分の識別IDを再生成したり、削除してしまったり出来ます。パッケージ名と生成時刻を頭にくっつけてUUID生成しときゃ、ちょっとやそっとじゃ被らないハズ、という安易な発想。

コイツが管理するIDは、Intentを経由して他のアプリで取得が可能。
その際に、ユーザがアプリに対してIDを渡すかドウか?を判断出来ます。


もらえると、こんな感じ。


ザッと作ったダケなので、現状はセキュリティとかあんまり真面目に考えて作りこんではいなくて、例えばRoot取られたりすると余裕で改竄されちゃったりします。ユーザの入力するパスワードをベースにして動的に鍵を作り、そいつで暗号化/復号をするようにしようかなー、とか考えてるところです。ID要求元の認証とか、どんなレベルでやるべきなのか?とか未だ答えが出てないところも沢山。

てかね。。作りつつも未だに良くワカランのですよ。

こういう風に複数アプリ間で共有可能なIDが使えるようになればそれで良いんでしょうかね?
どうなの?実際。。。


そんな議論の叩き台にならんかなぁ、、なんて思いブログにしてみた次第。


そんでわ。