Шифрование в iCloud
Шифрование данных в iCloud тесно связано с моделью защиты данных, начиная с программных сред CloudKit и интерфейсов API, которые позволяют приложениям и системному ПО хранить пользовательские данные в iCloud и поддерживать актуальность всех данных на различных устройствах и в интернете.
Шифрование в CloudKit
CloudKit — это программная среда, с помощью которой разработчики приложений могут хранить в iCloud данные типа «ключ-значение», структурированные данные и ресурсы (крупные массивы данных, хранящиеся отдельно от базы данных, например изображения или видео). CloudKit поддерживает как открытые, так и личные базы данных, объединенные в контейнеры. К личным базам данных предоставляется глобальный доступ, обычно они используются общими ресурсами и не шифруются. В личных базах данных хранятся данные iCloud каждого пользователя.
CloudKit использует иерархию ключей, которая соответствует структуре данных. Личная база данных каждого контейнера защищена иерархией ключей с корнем в ассиметричном ключе, который называется ключом службы CloudKit. Эти ключи уникальны для каждого пользователя iCloud и генерируются на их доверенных устройствах. Когда данные записываются в CloudKit, ключи всех записей генерируются на доверенном устройстве пользователя и привязываются к соответствующей иерархии ключей перед выгрузкой любых данных.
Многие службы Apple, перечисленные в статье Обзор системы защиты данных в iCloud, используют сквозное шифрование с помощью ключа службы CloudKit, который защищен аналогично синхронизации Связки ключей iCloud. Для этих контейнеров CloudKit ключи служб доступны только на доверенных устройствах пользователя и недоступны для Apple и любых третьих сторон. Эти ключи синхронизируются между устройствами пользователя, даже если пользователь решит не синхронизировать свои пароли, ключи входа и другие данные с помощью Связки ключей iCloud. В случае утери устройства пользователь может восстановить данные своей Связки ключей iCloud, используя Безопасное восстановление Связки ключей iCloud, контакты для восстановления доступа или ключ восстановления учетной записи.
Управление ключами шифрования
Безопасность защищенных данных в CloudKit основана на надежности соответствующих ключей шифрования. Ключи служб CloudKit разделены на две категории: защищенные сквозным шифрованием и доступные после аутентификации.
Ключи служб, защищенные сквозным шифрованием. Для служб iCloud, защищенных сквозным шифрованием, соответствующие частные ключи служб CloudKit никогда не становятся доступны для серверов Apple. Пары ключей служб, в том числе частные ключи, создаются локально на доверенном устройстве пользователя и передаются на другие устройства пользователя в соответствии с нормами безопасности Связки ключей iCloud. Восстановление Связки ключей iCloud и процессы синхронизации выполняются через серверы Apple, однако эти серверы не могут получить доступ к любым данным в связке ключей пользователя благодаря ее шифрованию. В наихудшем сценарии потери доступа к Связке ключей iCloud и всем механизмам ее восстановления данные в CloudKit, защищенные сквозным шифрованием, окажутся потеряны. Apple не может помочь в восстановлении этих данных.
Ключи служб, доступные после аутентификации. Для других служб, таких как Фото и iCloud Drive, ключи служб хранятся в аппаратных модулях системы безопасности iCloud, находящихся в центрах обработки данных Apple, и к ним могут получать доступ некоторые службы Apple. Когда пользователь входит в iCloud на новом устройстве и аутентифицирует свой Apple ID, серверы Apple могут получать доступ к этим ключам без дальнейших действий пользователя. Например, после входа на сайт iCloud.com пользователь может сразу просматривать свои фото онлайн. Эти ключи служб являются ключами, доступными после аутентификации.