ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
プライバシーに関する新機能
Appleでは、プライバシーは基本的人権であり、プライバシーを保護することが、あらゆることの中心にあると考えています。エンジニアリングチームにより、すべての製品やデベロッパフレームワークにおいてプライバシーがどのように確立されているのかをはじめ、信頼を構築してユーザーを保護するために、Appに取り入れることができるテクノロジーやパターンについて解説します。
リソース
関連ビデオ
WWDC22
-
ダウンロード
Justin Sugerton: Privacy EngineeringのJustinです "プライバシーに関する新機能"へ ようこそ Appleでは プライバシーは 基本的人権であると考え プライバシーを守ることが 活動の中心にあります Appを気に入ってもらい 生活の一部にしてもらいたい 優れた機能を構築することが 人々の注目を集め プライバシーを守ることで 信頼関係を保ち そして 生活の場となります どのようなデータが収集され どう使用されるか理解すると 他を選ぶのではなく みなさんのAppやサービスを 十分に活用してくれる 可能性が高くなります
Appleでは 製品を使用する 人々のために 優れた機能と 優れたプライバシーを 優先してきました それをお客様にお届けする お手伝いをしたいのです Appleでは 優れた機能と プライバシーの両立を目標に 実用的なプライバシーの柱で アプローチしています どのようにプライバシーを 組み込むかの重要なガイドです 1つ目はデータの最小化 機能を構築するのに必要な データのみを使用します 次にデバイス上での処理 その機能が機密データを 必要とする場合 サーバーと 共有しないよう デバイスの パワーを使用します 3つ目は透明性と管理 機密データを端末外に 送信する場合は 送信内容や その使用方法を理解し 管理できるようにします 最後に セキュリティ保護 転送中および そうでない時の機密データを デバイスの内外を問わず 保護します
このビデオでは Appに影響を与える プラットフォームの変更 採用すべきプライバシーを 強化する新機能 プライバシーに影響を与える 重要な新機能についてお話しします
まず Appに影響を与える プラットフォームの変更について iOS 16 と macOS Venturaに 含まれる重要な変更: デバイス名へのアクセスを制限する 新しいエンタイトルメント
コントロールセンターでの 位置情報に関連するAppの特定表示
より多くの場所で 公証されたAppの完全性を 検証する Gatekeeperの改善
ログイン時にMac Appを 起動すると追加されたことを 通知し APIも簡素化
従来のペーストボードに対し 必要となるアクセス許可 まずは デバイス名への アクセスに関する変更点 デバイスの識別を容易にするため iOSでは Apple IDに 登録されているユーザー名が デバイス名の一部として デフォルトで含まれます iOS 16 以前は UIDevice APIによりAppは ユーザーに割り当てられた デバイス名にアクセスできました この値へのAppのアクセスと ユーザーの期待度を一致させ UI Device Name APIは ユーザーがどう設定しても ユーザーが設定した名ではなく デバイスのモデルを返します
Appの中には ドキュメントが 最後に編集された場所を 明確にするなど デバイス名を利用した マルチデバイスの体験が あることは 理解しています
マルチデバイス機能を使用し AppのUIで可視化する場合 デバイス名にアクセスするための エンタイトルメントを要求できます このエンタイトルメントがあっても クラウドホスティングサービスの プロバイダ以外の第三者との デバイス名の共有は許可されていません
次に 位置情報利用の 特定に関するアップデートです
位置情報を使用する時 iOSは ステータスバーに矢印を表示
iOS 16ではコントロールセンターから 操作すると どのAppが位置情報を 使用しているか表示します 人々を驚かせないように 予期されるときのみ Appが位置情報を 使用することを確認します
さて ここからはMacの お話をしたいと思います Gatekeeperは新たにダウンロードした Appの完全性を確認します macOS Venturaでは Gatekeeperは 隔離されたAppだけでなく すべての公証されたAppの 完全性をチェックします
まず 適切に署名されている 必要があります macOS Venturaからは 公証されたAppに 有効な署名がない場合 初回起動時にGatekeeperによって ブロックされます 実行ファイルとバンドルに 署名し 変更を加えたときに 署名が有効であることを 確認する必要があります Gatekeeperは完全性チェックに加え Appが特定の方法で 変更されるのを防ぐことも できます
Appの改変で最も多いのは 更新です 同じデベロッパアカウントまたは チームによって署名された 有効なAppは 引き続き 相互に更新できます これだけで うまくいきます 他の開発チームによる Appの更新を許可したり 更新者を自分の更新者だけに 制限したりするために info-plistを更新できます 例えば こちら Unrelated AppはPal Aboutが plistを変更するだけで 更新できます
許可したいNSUpdateSecurityPolicyを 追加するだけです NSUpdateSecurityPolicyの中で "AllowProcesses"を追加し チームの識別子を署名の 識別子の配列に対応付けます この例では このポリシーは pal.aboutのチーム識別子で 署名された署名識別子 com.example.pal.aboutを 持つすべてのプロセスが Appを更新できます 同じ開発チームによって 署名されておらず NSUpdateSecurityPolicyで許可されて いないものによって Appが修正された場合 macOSが修正をブロックし 他のAppを管理したい事を ユーザーに通知します この通知をクリックすると システム設定に移動し Appの更新や他の変更を 許可することができます
macOS Venturaに対応するため Appの実行ファイルや バンドルに署名し 更新後も それらの署名が有効であるか 確認する必要があります 使用している更新を列挙し NSUpdateSecurityPolicyを採用します ポリシー外の他のAppを 変更しようとする場合 ユーザーの許可が必要である ことを忘れないでください
次は Macのログイン時の Appの起動について macOS Monterey以前では Macへのログイン時に 起動エージェントやデーモンで ログイン時にAppを実行できます メニューヘルパーの実行や ソフトウェアの更新を バックグラウンドで確認でき 複数のApp間でデータを 同期させたりすることが できるため便利です
時々 ユーザーがMacに ログインしたとき 関係のないAppが開いて 邪魔になることがあります さらに ソフトウェアがセンサーや 位置情報にアクセスもできます 何が作動しているのかが目に 見えないこともあり 起きていることが 人々にとって 明確でないこともあります そして デベロッパの方々にとっては ログイン時に どんな仕組みで起動するかは 必ずしも明確ではありません デーモン エージェント サービス管理? macOS Venturaでは よりシンプルになりました
macOS Venturaでは 新しい単一のAPIを使用して App 起動エージェント デーモンを ログイン時に起動できます デフォルトでログイン時に Appの起動が許可され ユーザーに通知されます Appが更なる権限を持つ デーモンを必要とする場合 有効にするためには 管理者の承認が必要です
通知をクリックすると設定に ログイン項目が表示され システム上で起動する Appを管理できます 上部は ログイン時に 実行するAppを制御し 下部は 他の項目を 制御します この領域では エージェント デーモン SMLoginItems ログイン時に開くように 自身を追加するAppなど ログイン時に実行できる 様々な方法を制御できます この新しいAPIの使い方を 紹介します
Service Managementフレームワーク を使えば ログイン時にリソースを 簡単に起動できます エージェントとデーモンは Appバンドル内にあるため インストーラで起動エージェントを書いたり クリーンアップスクリプトを作成する 必要がなく これはMac App Storeでも機能します SMAppService APIを 呼び出して 通知のタイミングや 設定でのアイコンの 表示を制御できます
次にペーストボードアクセスです
従来は 編集オプションでペーストを 押さずにペーストボードに アクセスした場合 通知で 知らせていました
iOS 16では 他のAppが 書き込んだペーストボードの アイテムにアクセスする際に システムが意思確認をします UIPasteboard APIを使用して ペーストボード項目の値に アクセスし続ける時 システムは モーダルプロンプトを表示します この表示を無効にする 3つの方法があります 1つ目は編集オプションメニューの 使用 2つ目はキーボードの ショートカットの使用 採用したい機能のセクションで 3つ目の選択肢の 新しいUIKitのペーストコントロールに ついてお話します
以上が知っておくべき プラットフォームに加えられる プライバシーに関する 変更点です さらに Appに プライバシーを考慮した スムーズな体験を簡単に 構築するための 新しい プライバシー拡張技術が いくつかあります
まずは UIKitの ペーストコントロールです
ペーストコントロールを Appに追加すると ペーストボードへ ボタン 1つで直観的にアクセスできます ペーストコントロールを 採用することで 編集メニューや ショートカットなどなくても ペーストが可能になります ボタンが見える形で表示され タップされたことを確認して システムがその意図を確認します Appインタフェースに合わせて ボタンを個別に調整します 角丸を変更したり 文字やアイコン 背景の色を 変更できます ただ ボタンに十分な コントラストがあり 他の要素の後ろに 隠されないようにしないと うまくいきません ペーストボタンが期待通りに 動くか必ずテストしてください
データへのアクセスを最小限に 抑えながらスムーズな体験を 実現するもう一つのツールが Media Device Discoveryです 近年のAppは 様々な ストリーミングプロトコルを使用し カスタムでのデバイスの発見や 通信ロジックを備えています
以前プロトコルでメディアを ストリーミングするには ローカルネットワークや Bluetoothに接続するための 許可が必要でした デバイスの選択を管理するために すべてのデバイスに関する知識が 不可欠なため この権限が必要です しかし これでは必要以上の 情報にアクセスすることになり フィンガープリントの 危険性があります Media Device Discoveryによって ネットワークやBluetoothアクセスの プロンプトを表示せずに 選択したデバイスにストリーミングできます ストリーミングデバイスは AirPlayと同じ様にピッカーに表示され ストリーミング先として選ばれた デバイスのみが表示されます DeviceDiscovery Extention のおかげで このようになります
このExtentionはローカルネットワークと Bluetoothを検索できるものの サンドボックス化されており スキャン結果をAppに戻せません つまり ローカルネットワークアクセスや Bluetoothにアクセスするために ネットワーク全体の確認を必要とせず 広範な許可が不必要になります 代わりに このExtensionは 見つかったアクセサリを DeviceDiscovery Extention フレームワークにのみ送信できます DeviceDiscovery Extention フレームワークは 見つかったデバイスの リストをピッカーで表示し 選択後 そのデバイスとの 通信を可能にします その他の許可は不要です
プロトコルプロバイダは DeviceDiscovery Extentionで App Extentionを作成し AVRoutePickerViewを拡張し ユーザー選択後のコールバックを 処理し ユーザーが選択した ネットワークデバイスを プロトコル内で処理します 更なる詳細はサンプルのAppと Extensionをダウンロードしてください Appデベロッパのみなさんは DeviceDiscovery Extensionの実装について ストリーミングプロトコルの プロバイダに確認してください Media Device Discoveryは 素晴らしい機能を 重要なプライバシーとともに 構築する機会となります ストリーミングに必要な データに正確に接続でき 発見は簡単で迅速 優れた ネットワークの保護を実現できます これは誰にとっても勝利と言えます Media Device Discoveryが プロンプトなしで 必要なデバイスのみに接続を 許可するように PHPicker APIは プロンプトなしで 必要な写真のみに アクセスを許可します PHPickerは Macでは macOS Ventura WatchではwatchOS 9から 使用できます MacとWatchのAppを更新し すべての写真へのアクセスを ユーザーにプロンプトすることなく 可能にするよう検討してください
次にプライベートアクセストークンですが CAPTCHAに邪魔されずに 不正を防止するための 強力なツールです
プライベートアクセストークンは CAPTCHAに代わるもので デベロッパがデバイスを追跡せずに 正規のデバイスを認識できるよう ブラインドトークンを 使用して構築されています Appleは デバイスがどの ウェブサイトでトークンを 取得したかを知らず 受け取るサーバーも トークンを送信した デバイスのIDを知りません プライベートアクセストークンは Privacy Pass IETFオープン標準の 一部で プライベートリレーユーザーの 真正性を確認するために 使用している技術と 同じものです 詳しくは 動画の 「プライベートアクセストークン によるCAPTCHAの置き換え」を ご覧ください
では パスキーについて 説明します パスワードは アカウントの 認証や個人情報の安全性を 保つのに中心的な存在ですが 重大な問題を抱えています 覚えにくいため もっとシンプルにしたり 複数のサイトで 使いまわしたりします フィッシングされる可能性も あります
パスキーはより強固な 認証ソリューションを実現し パスワード自動入力のような お馴染みのUIスタイルと 生体認証を使用します
パスキーは公開鍵暗号方式で 構築されているので サーバーが保存する値は 脆弱なものではなく もし晒されても 公開されているので 問題ありません パスキーは 対応するウェブサイトと リンクしているため フィッシングは不可能です パスキーの実装の 詳細については 「パスキーへの対応」の ビデオをご覧ください
採用するにあたり刺激的で重要な プライバシー関連の更新でした
もう一つの重要なお話は iOS 16の新しい プライバシーツール セーフティチェックです セーフティチェックは 家族や親密なパートナーからの 暴力を受けている人が 以前に 他人に 許可したアクセス権を見直し 解除できる設計です
セーフティチェックは 次のような点で役立ちます: 探す の位置情報共有を オフにし 写真 カレンダー メモの共有を停止することで データ共有を防ぎます すべてのサードパーティAppの システムプライバシー許可を 解除することで Appとの データ共有を停止します 他のiCloudデバイスのFaceTimeや iMessageから退出して メッセージや通話が手元の デバイスにのみ来るようにできます 他のiCloudデバイスから退出して 他のデバイスが 探す 写真 カレンダーから位置情報の 更新を受信できないようにする 手順が説明されています デバイスとiCloudアカウントの 両方のパスワードの 変更に役立ちます iCloudの2ファクタ認証の ための信頼できる電話番号 そして 緊急連絡先を管理し 必要に応じて変更します これらはすべて 個人の 安全が脅かされている人々が 自分のデータへの アクセス制御するのに役立ちます
セーフティチェックの 使い方は2通りあります 1つ目は緊急解除で 人や Appの接続をすぐに 解除する必要がある危機的な 状況に対応するものです
2つ目は共有とアクセスの管理で セーフティチェックの 各機能をより細かく 制御するものです
緊急リセットは 全Appと人々に 対して迅速に実行でき 他の デバイスのFaceTimeとiMessageへ の接続も無効化します その後 iCloudアカウントと 手持ちのデバイスを保護し 緊急連絡先と 信頼できるデバイスを 確認します 共有とアクセスの管理では 共有する相手を 個人個人に そしてAppごとに 確認できます これを名前や共有する情報の 種類で分類できます 特定の相手との共有を理解し 制御するための 優れたツールです また 端末にアクセスできる人が インストールした機密性の 高い権限を持つAppを 見つけることもできます
Quick Exitは セーフティチェックの すべてのフローで利用可能で 誰かに見られているかも という懸念がもしあれば フローから迅速に退出できます これを押すと ホーム画面に戻り 次に設定に入ると セーフティチェックではなく メインの設定画面に戻ります セーフティチェックは家族や 仲間から暴力を受けている 人々が 個人情報を制御 できるための支援です プライバシーとは データを 共有する時の判断だけでなく その判断をいつでも理解し 変更を可能にすることです Appleがプライバシーに 配慮した設計を示す一例です Appのプライバシーに 配慮した設計はユーザーとの 信頼関係の構築と維持に つながります iOS 16とmacOS Venturaは 多くの新技術を提供します UIデバイス名の変更や Gatekeeperの改善など 新しいプラットフォームの 更新に備えるようにしましょう Media Device Discovery UIKitペーストコントロール プライベートアクセストークン パスキーの採用を検討してください 本日は ありがとうございました みなさんが優れた機能と プライバシーを Appに取り入れられるのを 楽しみにしてます
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。