Androidにおけるセキュリティ設計と動作(後編)
2012年3月9日(金)
- ANDROID_ID
- ANDROID_IDは、64ビットの16進文字列として表示されるAndroid端末ごとに一意な値であり、端末を工場出荷状態にするとリセットされ、新しい値が割り当てられます。Android 2.2(Froyo)以前は、100%信頼できる値ではありませんでした。また、大手メーカー製の一部の端末にはすべて同じANDROID_IDを返すというバグがあるので注意してください。
リスト3-13 ANDROID_IDの取得
String android_id = android.provider.Settings.Secure.getString( getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); Log.v(TAG, "ANDROID_ID=" + android_id);
リスト3-14 出力例
10-24 14:25:53.823: V/Activity(11900): ANDROID_ID=d53d1d733aa1c9c1
ここでは、アンドロイドで使用可能な固有識別子について説明しました。これらの値は携帯電話でのみ取得可能であったり、値の有効期限が異なったりします。デバイスを識別する情報が必要なのか、ユーザを識別する情報が必要なのかに応じて、アプリケーションで使用すべきIDの種類が異なるでしょう。これらの値を使用するにあたっては、それぞれの値の特性を理解し、アプリケーションの要件を満たすかどうかについて十分に検討してください。
3.6 まとめ
アンドロイドOSが持っているセキュリティを維持するための仕組みについてまとめてみます。
- 1. セキュリティ機能を構成する要素
-
- 証明書
- ユーザID
- パーミッション
- ファイルのアクセス許可
- 2. 証明書
-
- アプリケーションの作者を識別するだけではなく、パーミッションの一部としても使用される。
- アンドロイドアプリの開発時は、自己証明書を使用することで問題ないが、証明書の管理は厳重に行う必要がある。
- 証明書が一致しない場合、アンドロイドマーケットでアプリケーションの更新を行うことはできない。
- 証明書が一致しない場合、端末上でアプリケーションをバージョンアップすることはできない。
- 3. ユーザID
-
- アプリケーションは固有のユーザIDを持つ。
- アプリケーションはOSや他のアプリケーションにアクセスできない。
- 4. パーミッション
-
- 自分以外の機能やデータにアクセスする場合はパーミッションを宣言する。
- パーミッションは静的であり、基本的に、実行時に追加または変更することはできない。
- パーミッションは自分で作成することもできる。
- 5. ファイルのアクセス許可
-
- アンドロイドOSはアプリケーションが作成したデータに標準のアクセス許可を付与する。
- アプリケーションは独自のファイルアクセス許可でファイルを作成することもできる。
- 6. 固有識別子
- 識別子として使用できる情報は次のとおり:
-
- UUID
アプリケーション内で生成、管理する。アプリケーションがアンインストールされた場合や端末初期化された場合は再生成が必要。値の生成に対して特にパーミッションは必要ない。 - IMEI
端末メーカーが端末に設定する値であり、電話機能を持つ端末でのみ取得可能。端末と1:1に対応する値であり、端末を初期化しても値は変わらない。このため、他のサービスでも利用されていた場合、行動追跡に結び付く可能性がある。
値の取得にはREAD_PHONE_STATEパーミッションが必要。ユーザが変わっても値が変わらないので、ユーザ識別子としては問題があり、識別子として使用することは推奨されない。 - 電話番号、IMSI、ICCID
SIMカードに設定されている情報であり、電話機能を持つ端末でのみ取得可能。値の取得にはREAD_PHONE_STATEパーミッションが必要。IMEIと同じ理由により、識別子として使用することは推奨されない。 - MACアドレス
WiFiやBluetoothのハードウェアから取得する。端末と1:1に対応する値であり、端末を初期化しても変わらない。該当ハードウェアを搭載しない端末からは値を取得できない。 - シリアル番号
アンドロイドOS 2.3以降で対応。端末と1:1に対応する値であり、端末を初期化しても変わらない。電話機能を持たない端末で取得でき、電話機能を持つ端末の場合は固定値などが取得される。値の取得には特にパーミッションは必要ない。 - ANDROID_ID
OSが用意する情報。端末を初期化したときに値が生成される。端末と1:1に対応する値であり、アンドロイドOS 2.2以前は取得した値を信用できない。値の取得に対して特にパーミッションは必要ない。
- UUID
この記事のもとになった書籍
Android Security 安全なアプリケーションを作成するために
システムの脆弱性を突くスパイウェアの手法を学び、ユーザの個人情報や企業データを情報漏洩のリスクから守る。セキュリティ対策チェックシートや用語集も収録! アンドロイドアプリの開発者が知っておくべき実践ノウハウが満載の一冊です。Android 4.0:Ice Cream Sandwich(APIレベル14)に関する最新情報にも対応!
タオソフトウェア株式会社 著
価格:3,360円 (本体 3,200円+税)
発売日:2012年01月06日発売
ISBN:978-4-8443-3134-6
発行:インプレスジャパン
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。