
Обеспечение безопасности и контакты для восстановления доступа
Пользователи могут добавлять до пяти людей, которым они доверяют, в качестве контактов для восстановления доступа. Эти контакты помогут восстановить доступ к учетной записи и данным iCloud, в том числе всем данным, которые защищены сквозным шифрованием, независимо от того, включена ли Расширенная защита данных. Ни Apple, ни контакт для восстановления доступа сами по себе не обладают информацией, необходимой для восстановления пользовательских данных iCloud, защищенных сквозным шифрованием.
Функционирование контактов для восстановления доступа обеспечивает полную конфиденциальность данных. Apple не знает, кого пользователь назначил контактами для восстановления доступа. Серверы Apple получают информацию о контакте для восстановления доступа только в ходе попытки восстановления, после того как пользователь запросит помощь и соответствующий контакт начнет процесс восстановления. После восстановления эта информация не сохраняется.
Процесс обеспечения безопасности с помощью контактов для восстановления доступа
Когда пользователь настраивает контакт для восстановления доступа, генерируется ключ, связанный с контактом. Этот ключ обеспечивает защиту для доступа к пользовательским данным iCloud, в том числе данным CloudKit, которые защищены сквозным шифрованием. Затем генерируется случайный 256-битный ключ AES, который используется для шифрования ключа и создания пакета контакта для восстановления доступа. Зашифрованный пакет предоставляется контакту для восстановления данных, а случайный ключ AES хранится в Apple. Ни ключ AES, ни пакет по отдельности не предоставляют никакой информации о базовом ключе. Восстановление исходного ключа и доступ к пользовательским данным iCloud возможны только после того, как на устройстве пользователя будут успешно получены и объединены обе части ключа: пакет от контакта для восстановления доступа и ключ AES от Apple.
При настройке контакта для восстановления доступа устройство пользователя обменивается данными с серверами Apple, чтобы выгрузить ту часть данных ключа, которая будет храниться у Apple (упомянутый выше ключ AES). Затем устройство создает защищенный сквозным шифрованием контейнер CloudKit с контактом для восстановления доступа и использует этот контейнер для отправки той части ключа, которая необходима контакту для восстановления доступа (пакет контакта для восстановления доступа шифруется с помощью ключа AES). Секретный код авторизации, созданный Apple, также передается контакту для восстановления доступа. Его можно будет использовать для восстановления учетной записи и сброса пароля учетной записи. Обмен данными, необходимый, чтобы пригласить контакты для восстановления доступа и получить от них одобрение запроса, происходит через взаимно-аутентифицированный канал IDS. Контакт для восстановления доступа автоматически сохраняет полученные данные в своей Связке ключей iCloud. Apple не может получить доступ ни к содержимому контейнера CloudKit, ни к Связке ключей iCloud, в которых хранятся эти данные. При обмене данными серверы Apple могут прочитать только анонимный идентификатор контакта для восстановления доступа.
Позднее, если пользователю потребуется восстановить доступ к своей учетной записи и данным iCloud, пользователь может запросить помощь у контакта для восстановления доступа. В этот момент на устройстве контакта для восстановления доступа генерируется код восстановления. Контакт для восстановления доступа передает этот код пользователю не в электронном виде (например, сообщает лично или по телефону). Затем пользователь вводит этот код восстановления на своем устройстве, чтобы установить безопасное соединение между устройствами по протоколу SPAKE2+, содержимое которого Apple не может прочитать. За организацию этого процесса отвечают серверы Apple, но Apple не может запустить процесс восстановления.
После установления безопасного соединения и выполнения всех необходимых проверок безопасности устройство контакта для восстановления доступа возвращает свою часть данных ключа и ранее предоставленный секретный код авторизации пользователю, запросившему восстановление. Пользователь передает этот секретный код авторизации на серверы Apple, которые разрешают ему получить доступ к данным ключа, хранящимся у Apple. Предоставив секретный код для авторизации, также можно сбросить пароль учетной записи, чтобы восстановить доступ к ней.
Наконец, устройство пользователя объединяет данные ключа, полученные от Apple и от контакта для восстановления доступа, а затем использует их, чтобы расшифровать и восстановить данные iCloud.
Определенные меры безопасности, в том числе проверка активности учетной записи пользователя, не позволяют контакту для восстановления доступа запустить процесс восстановления без согласия пользователя. Если учетная запись активна, контакту для восстановления доступа также потребуется указать недавний код‑пароль устройства или код безопасности iCloud.