WWDC20のプライバシーセッションBuild trust through better privacyについて紹介していきたいと思います。
概要を知りたい人はKeyNoteをご覧ください
この記事でわかる事
- AppleがこれからPrivacyについてどのようにアプローチしていきたいかがわかる
- iOS14で修正しないといけなさそうな箇所がわかる
目次
iOSのエンジニアが知っておきたいPrivacy Pillars
Privacyのアプローチとして4本の柱があります。
- オンデバイス処理
- データの最小化
- セキュリティ保護
- 透明性とコントロール
オンデバイス処理
データをサーバーにアップロードする事なく可能な限りデバイス上で処理を行う
データの最小化
ユーザーから取得するデータを最小限にする
セキュリティ保護
プライバシーをしっかりと保護するセキュリティ
透明性とコントロール
アプリが扱うユーザーに関する情報を明らかにする事、ユーザーがコントロールできるようにする
iOSのエンジニアが知っておきたいPrivacy:オンデバイス処理

データをサーバーにアップロードする事なく可能な限りデバイス上で処理を行う
- CoreMLを活用し、デバイス上でモデルデータを構築、トレーニング
- Federated Learningを提供し、ユーザーデータは送信せずモデルデータを更新分を送信するようにする
- QuickTypeおよびSiriの音声認識モデルの改善
- HomeKitに顔認識機能の追加
iOSのエンジニアが知っておきたいPrivacy:データの最小化

アクセス出来るデータを最小限にしましょうという話
- 写真
- 位置情報
- 連絡先
写真
写真ライブラリーアクセス許可で「全ての写真」が対象になっていたのを
「選んだ写真」のみ対象を許可にする選択肢を追加

PHPickerは、UIImagePickerControllerに代わる新しいフレームワークであり、
写真へのアクセスを完全に要求しないようにすることができる。
検索機能と複数選択機能を備えており、ユーザーに写真ライブラリへのアクセスを許可する必要はありません。 PHPickerはアプリとは別のプロセスで実行されますが、その上にレンダリングされます。
アプリがピッカーに直接アクセスしたり、ピッカーのコンテンツのスクリーンショットを撮ったりすることはできません。
位置

- アプリに提供する位置情報を「正確」と「おおよそ」で選択ができる
- 許可ダイアログに位置を正確にするかのコントロールを表示
- NSLocationDefaultAccuracyReducedキーでおおよその位置をデフォルトにできる
連絡先
- QuickTypeはデバイス上の連絡先データベースから連絡先の詳細を提案するので、アプリがユーザーの連絡先へのアクセスを要求する必要はない
- 提案の手がかりはtextContentTypeからもらえる
iOSのエンジニアが知っておきたいPrivacy:セキュリティ保護
DNS
DNS問い合わせは機密性も信頼性もサポートしておらず、読み取られたり変更されたりする可能性がある
iOS14とmacOS Big Surで暗号化プロトコル(DoT,DoH)をサポートする

TLS

- TLSセッションの確立の際SNI(ServerNameIndicator)はプレーンテキストdさ
→ TLSハンドシェイクをさらに暗号化する方法を標準化して、第三者がトラフィックを盗聴できないようにしている
iOSのエンジニアが知っておきたいPrivacy:透明性とコントロール
AppStoreの透明性

- 2020年秋からアプリはAppStoreに送信する際にアプリがユーザーデータをどのように使用するかを説明するアンケートに記入する必要がある
- アナリティクスや広告SDKなどのサードパーティのコードを使用している場合も、それらが収集するデータを使用方法を宣言する必要がある
- 入力した情報はStoreページに表示される
Intelligent Tracking Prevention

- ITPがどのように保護しているか確認できるようになった
- ツールバーにこのサイトで阻止したトラッカーが見れる
- 全サイトの過去30日間の阻止した履歴が見れる
ペーストボード

- アプリを跨いでペーストボード情報を参照すると ペースト先アプリ名 pasted from ペースト元アプリ名 の通知が画面上部に表示される
- プログラムでもユーザー操作で行っても表示される
記録インジケータ

- カメラまたはマイクが記録している最中にステータスバーにインジケータが表示され、ユーザーは記録している事を把握できる
- コントロールセンターにカメラまたはマイクを現在利用しているアプリ、または最近使用したアプリも表示されるようになる
App Tracking Transparency

- アプリのトラッキング防止機能
- トラッキングする前にダイアログでユーザーの許可が必要
- 許可を得ていないとIDFAが利用できない(値が0になる)
- iOS14ビルドでなくても、iOS14で0が帰ってくる
- 許可を求めるにはApp Tracking Transparency Frameworkを使い、説明をinfo.plistのNSUserTrackingUsageDescriptionキーに設定する
- IDFAをキャッシュまたは保存してはいけない
- 追跡許可は「設定->Privacy->Tracking」の「Allow Apps to Request to Track」でON / OFF可能
ローカルネットワークアクセス

- アプリがローカルネットワークに接続するには、ダイアログでユーザーの許可が必要になる
- アプリにどのBonjourサービスが必要なのかをinfo.plistに記述の必要がある
プライベートWi-Fiアドレス

- iOS8でMACアドレスのランダム化が導入
→ Wi-Fiに接続していないユーザーがMACアドレスから追跡されるのを防ぐ
→ ネットワークに接続すると、物理的なWi-Fiアドレスは変更されないため、接続の痕跡が残ってしまう - iOS14で「プライベートWi-Fiアドレス」が導入
→ ネットワークごとにMACアドレスを変更
→ 24時間ごとに再生成
→ 設定で ON / OFFは切り替え可能 - 「設定->Wi-Fi->アクセスポイント」「Use Private Address」で ON / OFF、「Wi-Fi Address」でアドレスを確認できる
Nearby Interaction Network

- ウルトラワイドバンドの範囲を利用できるNearby Interaction Frameworkを導入
- Bluetoothまたがネットワークアクセスの要求はいらないが、「セッションベース」でのアクセスを要求する
- 許可はフォアグランドの間だけ利用できる
App Clips

- AppClipsからフルAppにアップグレードしない場合、iOSは未使用のAppClipsをクリーンアップして、痕跡を残さない
- AppClipsではダイアログなしで位置情報アクセスを許可できる仕組みがある
Safari Web Extensions

- Safari Web ExtensionsがアクセスできるWebサイトを制御できる
- Safari Web Extensions
→ Safari14の新機能
→ Chrome,FireFox,Edgeブラウザーで一般的に利用されているJavaScript APIとファイル形式によるカスタム機能が追加できるようになる
→ Safari Web ExtensionsはmacOS11 以降とSafsri14がインストールされたmac OS 10.14.Xで利用できる
Update for mac OS apps

- iOSのテクノロジーとプライバシーがmacOSで使えるようになる
- BlueToothアクセス制御
- CaTalystを使用してアプリを構築する場合、「限定された写真ライブラリー」「HomeKit」「メディア,AppMusicへのアクセス」「CNCopyCurrentNetworkへのアクセス」が利用できる
- iOSと同様にデータが必要な理由をユーザーが理解できるように、ダイアログで説明しなければならない
SKAdNetworkの大幅改善

- 今までインストール計測など追跡に使用していたのをSKAdNetworkを通せってことかな