HomeKitデータのセキュリティ
HomeKitデータは、iCloudとiCloudキーチェーンを使って、1人のユーザのiOS/iPadOS/macOSデバイス間で安全にアップデートできます。このプロセス中、HomeKitデータはユーザのHomeKit識別情報から導出された鍵とランダムなノンスを使用して暗号化され、不透明なBLOB(バイナリ・ラージ・オブジェクト)として処理されます。最新のBLOBがiCloudに保存されますが、それはほかのいかなる目的にも用いられません。HomeKitデータはユーザのiOS/iPadOS/macOSデバイスでのみ利用できる鍵を使って暗号化されるため、転送中やiCloudでの保管中にその内容を読み取ることはできません。
HomeKitデータは、同じホームの複数のユーザ間でも同期されます。このプロセスでは、iOS/iPadOS/macOSデバイスとHomeKitアクセサリ間で使用される認証と暗号化と同じものが使用されます。この認証は、ユーザがホームに追加されたときにデバイス間で交換されるEd25519公開鍵を用いて行われます。新しいユーザがホームに追加されると、それ以降のすべての通信が、Station-to-Stationプロトコルとセッションごとの鍵を使用して認証および暗号化されます。
新しいユーザを追加できるのは、HomeKitでそのホームを最初に作成したユーザか、編集権限のある別のユーザです。所有者のデバイスは、アクセサリが新しいユーザを認証し、新しいユーザからのコマンドを受け付けることができるように、新しいユーザの公開鍵を使ってアクセサリを構成します。編集権限のあるユーザが新しいユーザを追加した場合、このプロセスはホームハブに委任されて処理が完了します。
HomeKitとApple TV
ユーザがiCloudにサインインすると、Apple TVをHomeKitで使用するためのプロビジョニングプロセスが自動的に実行されます。iCloudアカウントでは2ファクタ認証を有効にしておく必要があります。Apple TVと所有者のデバイスは、一時的なEd25519公開鍵をiCloud経由で交換します。所有者のデバイスとApple TVが同じローカルネットワーク上にあるときにこの一時鍵が使用され、ローカルネットワーク上の接続がStation-to-Stationプロトコルとセッションごとの鍵によってセキュリティ保護されます。このプロセスでは、iOS/iPadOS/macOSデバイスとHomeKitアクセサリ間で使用される認証と暗号化と同じものが使用されます。このセキュリティ保護されたローカル接続を経由して、所有者のデバイスはApple TVにユーザのEd25519公開/秘密鍵ペアを転送します。その後はこれらの鍵を使用してApple TVとHomeKit対応アクセサリ間の通信、およびApple TVとHomeKitホームの一部であるその他のiOS/iPadOS/macOSデバイス間の通信をセキュリティ保護します。
複数のデバイスを使用していないユーザが、その他のユーザによるホームへのアクセスを許可しない場合、HomeKitデータはiCloudに送信されません。
ホームデータとApp
Appによるホームデータへのアクセスは、ユーザの「プライバシー」設定で制御されます。Appがホームデータへのアクセスを要求すると、「連絡先」や「写真」などのiOS/iPadOS/macOSデータソースの場合と同様に、ユーザにアクセスの許可が求められます。ユーザが承認すると、部屋やアクセサリの名前、各アクセサリが設置されている部屋などの情報にAppからアクセスできるようになります。詳しくは、https://developer.apple.com/homekit/(英語)にあるHomeKit開発者向けドキュメントを参照してください。
ローカル・データ・ストレージ
HomeKitはユーザのiOS/iPadOS/macOSデバイスに、ホーム、アクセサリ、シーン、およびユーザに関するデータを保存します。保存されるデータは、ユーザのHomeKit識別情報鍵から導出された鍵と、ランダムなノンスを使用して暗号化されます。さらに、HomeKitデータは、Protected Until First User Authenticationのデータ保護クラスを使用して保存されます。HomeKitデータは暗号化されたバックアップでしかバックアップされないので、例えばUSB経由でFinder(macOS 10.15以降)またはiTunes(macOS 10.14以前)に保存された暗号化されていないバックアップにはHomeKitデータは含まれません。