HomeKitの通信のセキュリティ
HomeKitは、ホームオートメーションのインフラストラクチャで、iCloudとiOS/iPadOS/macOSのセキュリティ機能を使用して個人データを保護しながら同期できます。個人データはAppleに開示されません。
HomeKitの識別情報とセキュリティは、Ed25519公開/秘密鍵ペアに基づいています。Ed25519鍵ペアは、HomeKitのユーザごとにiOS/iPadOS/macOSデバイス上で生成され、それがそのユーザのHomeKit識別情報となります。この鍵ペアを使用して、iOS/iPadOS/macOSデバイス間およびiOS/iPadOS/macOSデバイスとアクセサリ間の通信が認証されます。
これらの鍵はキーチェーンに保存され、暗号化されたキーチェーンのバックアップにのみ含められます。また、iCloudキーチェーンが利用可能な場合は、それを通じてデバイス間で最新の状態に保たれます。HomePodとApple TVは、「タップして設定」プロセスまたは設定モードを使用して鍵を受け取ります(下記参照)。Apple Watchには、ペアリングされたiPhoneからApple Identity Service(IDS)を使用して鍵が共有されます。
HomeKit対応アクセサリ間の通信
HomeKit対応アクセサリは、iOS/iPadOS/macOSデバイスとの通信に使用する固有のEd25519鍵ペアを生成します。アクセサリが工場出荷時の設定に復元されると、新しい鍵ペアが生成されます。
iOS/iPadOS/macOSデバイスとHomeKit対応アクセサリ間の接続を確立するため、アクセサリメーカーから提供された8桁のコードをユーザがiOS/iPadOSデバイスに入力して、Secure Remote Password(3072ビット)プロトコルによる鍵の交換を行うと、HKDF-SHA512から導出された鍵を用いたChaCha20-Poly1305 AEADによって鍵が暗号化されます。アクセサリのMFi証明書も設定中に検証されます。MFiチップを搭載していないアクセサリの場合、iOS 11.3以降ではソフトウェア認証のサポートを組み込むことができます。
使用時にiOS/iPadOS/macOSデバイスとHomeKit対応アクセサリが通信する場合は、上記のプロセスで交換された鍵を使用して互いに認証します。各セッションはStation-to-Stationプロトコルを使用して確立され、セッションごとのCurve25519鍵に基づく、HKDF-SHA512から導出された鍵で暗号化されます。これは、IPベースとBluetooth Low Energy(BLE)の両方のアクセサリに適用されます。
ブロードキャスト通知をサポートするBLEデバイスの場合、ペアリングされたiOS/iPadOS/macOSデバイスが、安全なセッションでブロードキャスト暗号鍵を用いてアクセサリをプロビジョニングします。この鍵はBLEアドバタイズを使用して通知される、アクセサリの状態変化に関するデータの暗号化にも使用されます。ブロードキャスト暗号鍵はHKDF-SHA512から導出された鍵であり、データはChaCha20-Poly1305 AEADアルゴリズムで暗号化されます。このブロードキャスト暗号鍵はiOS/iPadOS/macOSデバイスによって定期的に変更され、iCloud経由でほかのデバイスへとアップデートされます(「HomeKitデータのセキュリティ」セクションを参照)。
HomeKitとSiri
Siriを使って、アクセサリに対するクエリや制御、シーンの起動を行うことができます。Siriがコマンドを認識できるように、部屋、アクセサリ、シーンの名前を提供する必要がありますが、Siriに提供されるのはホームの構成に関する最低限の情報で、個人も特定されません。Siriに送られた音声は特定のアクセサリまたはコマンドを示す場合がありますが、このようなデータがHomeKitなどのAppleのその他の機能に関連付けられることはありません。
Siri対応HomeKitアクセサリ
ユーザはSiri対応アクセサリで「ホーム」Appを使用して、Siriなどの新しい機能や、タイマー、アラーム、インターコム、ドアベルなどのその他のHomePodの機能を有効にできます。これらの機能が有効になると、アクセサリは、これらのApple機能をホストするローカルネットワーク上のペアリングされたHomePodと連係します。デバイス間のオーディオの交換は、HomeKitとAirPlayの両方のプロトコルを使用して、暗号化されたチャンネル上で行われます。
「“Hey Siri”を聞き取る」がオンになっている場合は、アクセサリはローカルで実行されるトリガーフレーズ検知エンジンを使用して「Hey Siri」フレーズを聞き取ります。このエンジンがフレーズを検知すると、ペアリングされたHomePodにオーディオフレームがHomeKitを使用して直接送信されます。HomePodはオーディオを再度チェックし、フレーズにトリガーフレーズが含まれないと判断した場合はオーディオセッションをキャンセルする場合があります。
「タッチして起動」がオンになっている場合は、ユーザはアクセサリにある専用のボタンを押すことでSiriと会話を始めることができます。オーディオフレームはペアリングされたHomePodに直接送信されます。
Siriの呼び出しに成功したことが検知されると、HomePodはオーディオをSiriのサーバに送信し、HomePod自体をユーザが呼び出した場合にHomePodが適用するのと同じセキュリティ、プライバシー、暗号化保護を使用して、ユーザの意図を実現します。Siriがオーディオで返事をすると、Siriの応答はAirPlayオーディオチャンネルを通じてアクセサリに送信されます。一部のSiriリクエストには、ユーザからの追加の情報が必要です(ユーザがさらにオプションを聞きたいか質問するなど)。その場合、アクセサリはユーザに質問するという指示を受け取り、追加のオーディオがHomePodにストリーミングされます。
アクセサリには、聞き取り中であることをユーザに視覚的に示すものが必要です(LEDインジケータなど)。オーディオストリームへのアクセスを除いて、アクセサリにはSiriリクエストの意図は知らされず、アクセサリ上にユーザデータは保存されません。