Handoffのセキュリティ
AppleのHandoffは、デバイス間でも、ネイティブアプリとWebサイトの間でも安全に処理されます。大量のデータを渡す場合も同様です。
Handoffが安全に機能する仕組み
Handoffを使用すると、ユーザのiOS、iPadOS、およびmacOSデバイスが近くにあるとき、作業中のあらゆる項目を一方のデバイスから他方のデバイスに自動的に渡すことができます。これにより、ユーザはデバイスを切り替えてすぐに作業を再開できます。
Handoffに対応する別のデバイスでユーザがiCloudにサインインすると、2つのデバイスがAPNsを使用してBluetooth Low Energy(BLE)4.2のOOB(帯域外)ペアリングを確立します。個別のメッセージはiMessageのメッセージと同様の方法で暗号化されます。デバイスがペアリングされると、各デバイスで256ビットのAES対称鍵が生成され、デバイスのキーチェーンに保存されます。この鍵を使ってBLEアドバタイズメントの暗号化と認証を行います。このアドバタイズメントでは、GCMモードのAES256を使用して、iCloudでペアリングされたほかのデバイスにアクティビティの現在の状態を伝達します。このとき、リプレイ攻撃に対する防御策が講じられます。
デバイスは、新しい鍵でのアドバタイズメントを初めて受信すると、発信元のデバイスとBLE接続を確立し、アドバタイズメントの暗号鍵を交換します。この接続は、BLE 4.2の標準の暗号化によって保護され、個別のメッセージもiMessageと同様の方法で暗号化されます。特定の状況では、これらのメッセージがBLEではなくAPNsを使用して送信されます。アクティビティのペイロードは、iMessageと同じ方法で保護および転送されます。
ネイティブアプリとWebサイトの間でのHandoff
Handoffを使用すると、iOS、iPadOS、およびmacOSのネイティブアプリで、そのアプリのデベロッパが正当に制御しているドメインのWebページでのユーザアクティビティを再開できます。また、ネイティブアプリでのユーザアクティビティをWebブラウザで再開することもできます。
デベロッパが制御していないWebサイトの再開をネイティブアプリが要求できないようにするため、アプリは再開するWebドメインを正当に制御していることを示す必要があります。Webサイトのドメインの制御は、共有Web証明書のメカニズムによって確立されます。詳しくは、アプリから保存済みパスワードへのアクセスを参照してください。ユーザアクティビティのHandoffの受け入れをアプリに許可するには、アプリがドメイン名を制御していることをシステムで検証する必要があります。
WebページのHandoffは、Handoff APIを採用しているどのブラウザからも開始できます。ユーザがWebページを表示すると、そのWebページのドメイン名が、暗号化されたHandoffアドバタイズメントバイトでアドバタイズされます。このアドバタイズメントバイトは、同じユーザのほかのデバイスでのみ復号できます。
Handoffを受け取るデバイスでは、アドバタイズされたドメイン名からのHandoffをインストール済みのネイティブアプリが受け入れたことが検知され、そのネイティブアプリのアイコンがHandoffのオプションとして表示されます。そのネイティブアプリは、起動後にWebページの完全なURLとタイトルを受け取ります。それ以外の情報はブラウザからネイティブアプリに渡されません。
また、Handoffを受け取るデバイスに同じネイティブアプリがインストールされていないときのために、ネイティブアプリはフォールバックURLを指定できます。その場合は、ユーザのデフォルトブラウザがHandoffのアプリオプションとして表示されます(そのブラウザがHandoff APIを採用している場合)。Handoffが要求されるとブラウザが起動し、要求した側のアプリから提供されたフォールバックURLを開きます。このフォールバックURLには、ネイティブアプリのデベロッパが制御しているドメイン名のみに制限されるという要件はありません。
サイズが大きいデータのHandoff
一部のアプリでは、Handoffの基本機能に加え、Apple製のピアツーピアWi-Fiテクノロジーによるサイズの大きいデータの送信機能(AirDropと同様のもの)をサポートするAPIが使用されることもあります。例えば、メールアプリでは、サイズが大きい添付ファイルが含まれるメールの下書きでHandoffをサポートするために、それらのAPIが使用されます。
アプリでそれらのAPIが使用されると、2つのデバイス間で通常のHandoffとまったく同じように受け渡しが開始されます。ただし、受け取るデバイスは、Bluetooth Low Energy(BLE)を使用して最初のペイロードを受信したあとで、Wi-Fiで新しい接続を開始します。この接続は(TLSで)暗号化され、iCloudキーチェーンで共有される識別情報を経由して信頼を導出します。証明書内の識別情報がユーザの識別情報と照合されて確認されます。それ以降のペイロードデータは、転送が完了するまで、この暗号化された接続で送信されます。
ユニバーサルクリップボード
ユニバーサルクリップボードでは、Handoffを活用してユーザのクリップボードの内容をデバイス間で安全に転送できるので、1台のデバイスでコピーした内容を別のデバイスでペーストできます。クリップボードの内容はほかのHandoffデータと同様に保護され、アプリのデベロッパが共有を禁止していない限り、デフォルトでユニバーサルクリップボードと共有されます。
アプリはユーザがクリップボードの内容をそのアプリにペーストしたかどうかにかかわらず、クリップボードのデータにアクセスできます。ユニバーサルクリップボードを使用すると、このデータアクセス範囲が、ユーザのほかのデバイス(iCloudへのサインインによって決まります)のアプリに拡張されます。