Secret Ninja Blog

Support Engineering Director してます

Android OSにおけるプライバシー保護機能

iOS 14.5から追加されたAppTrackingTransparency(ATT)、iOS15から追加されたSafariでのIPアドレス保護機能やAppleのメールアプリでのメールプライバシー保護機能、アプリケーションのプライバシーレポートなど、iOSにおけるユーザトラッキングに対してのプライバシー保護機能が強化されている。

日本ではiOSのシェア率(66.8%)が高いためiOSの機能については話題になっているが、Androidについてはあまり情報が出ていないように思う。その一方で、Android OSの普及も年々進んできており、iOSの機能強化に対して、Android OSがどのようにプライバシー保護機能を強化しているかについて調査した。

調査対象の主なAnrdoidのバージョン

  • Android R 11 2020年9月8日リリース
  • Android S 12 2021年10月4日リリース

前提

Android OSはiOSと異なりOEM前提で作られています。そのため、Andoidにおけるプライバシー機能とはSDKなどを対象としていることが多い。

ATTなどと同様にアプリ利用状況をトラッキングが今後どうなっていくか、という観点での調査であり、実機での挙動チェックなどはしておらず、あくまでもドキュメントなどのソースベースで書いている。

広告IDの拒否機能

2021年後半から2022年の初めにかけて段階的に、ユーザーが広告IDを使ったカスタマイズ設定をオプトアウトすると、広告ID が削除されて利用できなる。アクセスしようとすると、ID の代わりにゼロの文字列が返されるようになる。従来はオプトアウトをしても、データ分析や不正防止目的でID自体の取得が可能だったが、今回のリリースからは広告ID自体がゼロづめの文字に更新されるようになっている。

参考:

app set IDの導入

Google Playを使ってアプリをインストールする際に広告IDが拒否されている場合、ユーザ認証がないアプリでの分析やアドフラウド防止をすることが難しくなる。そこで、新たにapp set IDと呼ばれる新しい識別子がAndroid 12から導入された。

app set IDは、Google App Store経由でインストールされたアプリに対して下記の特徴の識別子が発行される。

  • Google Play Developerアカウント毎にアプリ横断で同一の識別子が発行される。
  • 13ヶ月間 app set IDへのAPIアクセスがない場合に自動でリセットされる
  • Google Play Developerアカウントに関連した全てのアプリがデバイスからアンインストールされたときにリセットされる
  • IDの形式は、UUIDフォーマット(8-4-4-4-12)で生成される。
  • app set IDは広告ターゲティング目的には利用できない

参考: Identify developer-owned apps  |  Android Developers

Privacy Dashboard

iOSにも同様の機能があるが、各種権限がどのアプリに利用されているかの履歴を参照することができる。エンドユーザに対してどんな権限を何のために使っているのか、という点については透明性を持って公開していく必要がある。

https://play-lh.googleusercontent.com/nLB-jiTqKWMBtp4ltqIIPccgoX6q4jF0xrcxlz1KUIb8NTjPAA-fPt4RMuQPugB4iYM=w720-h310-rw

参考:

Data Access Auditing API

Android 11以降で利用できるAPIで、データへのアクセス監査を行うことで、予期しないデータアクセスの可能性を特定できるようになる。具体的には種々のデータや権限アクセスを行うコードに、タグを付与できるようになり、アプリのログからそのタグを参照できるようになる。そのため、アプリ内のどのロジック部分がイベントを呼び出したのかを特定できるようになる。 つまり、Privacy Dashboardで意図しない権限利用が無いようにこのAPIを使ってチェックができるようになる。

参考:

位置情報の利用許可モデルの変更

アプリにて位置情報の利用許可をする際に、おおよその位置か正確な位置かのどちらを提供するかを選べるようになった。

おおよその位置の場合には現在の場所から100メーター程度の誤差を持って位置情報がアプリに使われるようになる。ナビゲーションアプリ以外で位置情報をアプリに許可するようなケースで有効である。iOSでもIPアドレス保護機能などが入ってきているが、今後、位置情報を使って建物やイベント会場への入場をチェックしたいようなケースでは、チェックの厳密さを緩くしていく必要があり、なんらかのチェックイン機能を持たせるなどの工夫の必要がある。

https://developer.android.google.cn/about/versions/12/images/approximate-location-full-prompt.svg?hl=ja

参考: おおよその位置情報  |  Android 12  |  Android Developers

App hibernation

バックグラウンドで起動しているアプリのキャッシュなどをクリーンアップする際に使われる機能。Android 11/12からはすでに付与された権限情報や通知も過去2週間使われていないアプリについてはリセットされるようになる。つまり、ユーザが久しぶりに起動した際に権限の許可をユーザに選択させる必要が出てくる。頻繁に使われないアプリについては、定期的にユーザとインタラクションをする機能を持たせるのが望ましいし、ユーザがアプリを定期的に起動したくなる仕掛けを作っていく必要がある。

参考:

子供向けアプリのプライバシー強化

子供向けアプリに関してのプライバシー機能についてはより多くの制約が課されており、広告IDの使用にも制限がかかっている。例として下記がある。

  • 子供または年齢が不明なユーザーの場合、Android 広告 ID(AAID)、SIM のシリアル、ビルドのシリアル、BSSID、MAC、SSID、IMEI、IMSI の送信を行ってはなりません。
  • 子供だけを対象としているアプリの場合、位置情報をリクエスト、収集、使用、送信してはなりません。

参考:

おわりに

個人的なイメージで、AndroidはiOSよりも無法地帯というイメージがあったが、Android12のアップデートを見ていると、Appleと同様にGoogleがプライバシーに関して力を入れてきていることがわかる。

今後、iOSとAndroidの両方で、ユーザの許可なく広告IDを使ってパーソナライズしていく、ということはできなくなっていき、ユーザといかに関係性を作るために、アプリにてユーザ登録をしてもらい、ユーザから許諾を得て適切なマーケティング活動を行なっていくということが必要不可欠になっていくだろう。また、iOS / Androidの仕組みが独自な形に進化してきているので、それぞれのアプリで諸々気にしないといけないことが今後増えていきそうな気配を感じる。