Безопасность данных HomeKit
Данные HomeKit можно безопасно синхронизировать между устройствами iOS, iPadOS и macOS пользователя с помощью iCloud и связки ключей iCloud. В ходе этого процесса данные HomeKit шифруются с помощью ключей, полученных из ключей идентификации пользователя в HomeKit, а также случайного значения nonce. Эти данные обрабатываются как непрозрачный большой двоичный объект, также называемый blob. Самый последний объект сохраняется в iCloud, но не используется для каких-либо других целей. Поскольку он зашифрован с помощью ключей, доступ к которым возможен только на принадлежащих пользователю устройствах iOS, iPadOS и macOS, его содержимое недоступно при передаче и хранении в iCloud.
Данные HomeKit синхронизируются между различными пользователями одного «умного дома». Используемые при этом методы аутентификации и шифрования аналогичны методам, используемым для синхронизации между устройством iOS, iPadOS и macOS и аксессуаром HomeKit. Аутентификация выполняется на основе открытых ключей Ed25519, которыми обмениваются устройства при добавлении нового пользователя «умного дома». После добавления нового пользователя для аутентификации и шифрования всех дальнейших сеансов связи используется протокол Station-to-Station и сеансовые ключи.
Новых пользователей может добавлять тот пользователь, который изначально создал дом в HomeKit, а также другие пользователи с правами редактирования. Устройство владельца настраивает аксессуары с использованием открытого ключа нового пользователя для того, чтобы аксессуары могли аутентифицировать нового пользователя и принимать команды от него. Когда нового пользователя добавляет пользователь с правами редактирования, этот процесс делегируется домашнему центру аксессуаров.
HomeKit и Apple TV
Процесс подготовки Apple TV для использования с HomeKit выполняется автоматически, когда пользователь входит в iCloud. Необходимо, чтобы для учетной записи iCloud была включена двухфакторная аутентификация. Apple TV и устройство владельца обмениваются временными открытыми ключами Ed25519 через iCloud. Если устройство владельца и Apple TV находятся в одной локальной сети, временные ключи используются для защиты соединения по локальной сети с использованием протокола Station-to-Station и сеансовых ключей. Используемые при этом методы аутентификации и шифрования аналогичны методам, используемым для синхронизации между устройством iOS, iPadOS и macOS и аксессуаром HomeKit. Устройство владельца передает по защищенному локальному соединению пары открытых и личных ключей Ed25519 пользователя на Apple TV. Эти ключи используются для защиты соединения между Apple TV и аксессуарами HomeKit, а также между Apple TV и другими устройствами iOS, iPadOS и macOS входящими в состав дома HomeKit.
Если у пользователя только одно устройство и он не предоставил доступ к своему дому другим пользователям, передача данных HomeKit в iCloud не выполняется.
Домашние данные и приложения
Доступ приложений к данным о доме регулируется настройками конфиденциальности пользователя. Когда приложению необходимы данные о доме, пользователь получает запрос на предоставление доступа (аналогично доступу к Контактам, Фото и другим источникам данных iOS, iPadOS и macOS). Если пользователь дает разрешение, приложение получает доступ к названиям комнат, названиям аксессуаров, распределению аксессуаров по комнатам и другой информации, которая подробно описана в документации разработчика HomeKit на веб-сайте https://developer.apple.com/homekit/.
Локальное хранилище
Данные о домах, аксессуарах, сценариях и пользователях HomeKit хранятся на принадлежащих пользователю устройствах iOS, iPadOS и macOS. Сохраненные данные шифруются с помощью ключей, полученных из ключей идентификации пользователя в HomeKit, а также случайного значения nonce. Кроме того, данные HomeKit имеют класс защиты данных «Защищено до первой аутентификации пользователя». Резервные копии данных HomeKit создаются только в зашифрованном виде, поэтому, например, незашифрованные резервные копии в Finder (в macOS 10.15 и более поздних версиях) или iTunes (в macOS 10.14 и более ранних версиях), созданные при подключении через USB, не содержат данных HomeKit.