Appleプラットフォームのセキュリティ

到着確認のセキュリティ
到着確認を使って、ユーザの対応するデバイスがあらかじめ決められた目的地に到着していない場合に通知が届く連絡先を選択できます。到着確認を開始する相手の連絡先を選択すると、目的地などセッションに関する詳細情報を記載したiMessageがその連絡先に送信されます。また、開始側のユーザのデバイスはアクセストークンと到着確認の暗号鍵を生成します。到着確認の暗号鍵は別のiMessageで送信されますが、このメッセージはただちに配信されるのではなく、iMessageサーバに保管されます。このメッセージはユーザと指定した連絡先との間のエンドツーエンドで暗号化されるので、Appleがその内容を入手することはできません。
開始側のユーザのデバイスが目的地に向けて進んでいる間、デバイスはiMessageサーバにハートビートメッセージを定期的に送信します。このメッセージにより、到着確認の暗号鍵メッセージが配信されるまでの期限が延長されます。デバイスの電源が切れるか接続が失われた場合は、期限切れになった時点で、iMessageサーバは暗号鍵を含むiMessageを自動的に連絡先に配信します。到着確認の暗号鍵メッセージは、デバイスが目的地に向かって進んでいない場合にも配信されることがあります。この状況で配信される場合には、アクセストークンがメッセージに含まれます。
到着確認セッションの実行中には、開始側ユーザのデバイスは関連の到着確認データ(例えば、位置情報とバッテリー残量)を定期的に取得し、到着確認の鍵で暗号化して、iCloudにアップロードします。Appleは到着確認の鍵にアクセスできず、アップロードされたデータにもアクセスできません。
到着確認セッションを終了するには、ユーザ認証が必要です。ユーザがセッションをキャンセルすると、暗号化されたデータと到着確認の暗号鍵を含むiMessageがサーバから安全に削除されます。
到着確認デバイスが予定通りに目的地に到着しない場合、または設定されたタイマーが期限切れになった場合は、到着確認の暗号鍵を含むiMessageが選択された連絡先に届きます。この処理が行われる状況としては、以下の2つが考えられます:
接続が失われたあと: この場合、指定された連絡先にはアクセストークンがなく、連絡先のデバイスは2回目のチェックを実行して、前回のハートビートから十分な時間が経過したかどうかを判定します。連絡先のデバイスは暗号化された到着確認データをサーバに要求し、サーバは3回目のチェックを実行して、前回のハートビートから十分な時間が経過したかどうかをさらに確認します。十分な時間が経過していれば、サーバは連絡先に暗号化された到着確認データを提供し、連絡先は到着確認の鍵を使用してそのデータを復号できます。
ユーザが目的地に向かって進んでいないとユーザのデバイスが判定したあと: この場合は、メッセージが表示されたときにユーザが到着確認をキャンセルしたり延長したりしない限り、指定された連絡先にアクセストークンと到着確認の暗号鍵の両方が提供されます。連絡先のデバイスは、アクセストークンをサーバに提供することによって、暗号化された到着確認データをダウンロードしたあとに到着確認の鍵を使ってデータを復号できます。