ICloud Keychain в Mavericks – удобно, но не безопасно

OS X Mavericks принесла нам нечто под название iCloud Keychain (Связка ключей iCloud). Это облачный сейф с паролями от ваших любимых сайтов, которые автоматически синхронизируются между Mac, iPhone и iPad через общий . На практике iCloud Keychain это действительно удобная и бесплатная альтернатива популярному . Но можно ли доверять ему свои пароли? И да и нет.

Настройка iCloud Keychain

Любопытные наверняка уже разобрались, как все работает и сами настроили синхронизацию. Проблемы могли возникнуть только у жителей Украины, Белоруссии или других стран, чей номер телефона нельзя ввести во время настройки. К счастью, есть хитрый способ обойти это ситуацию. Но перед тем как начать, убедитесь, что у вас стоит и iOS 7.0.3+.

1. Обойти отправку кода подтверждения на мобильный телефон можно, начав настройку не с Mac, а с iPhone/iPad . Для этого зайдите в Настройки → iCloud и активируйте там Связку ключей . Вам предложат использовать ваш пароль на iPhone/iPad в качестве кода безопасности для iCloud. Нажмите Создать другой код и затем выберите Дополнительные параметры .

2. Теперь выберите пункт Не создавать код безопасности и подтвердите своё решение. Это грозит лишь тем, что если вы потеряете Mac, iPhone и iPad то не сможете получить доступ к своим паролям в iCloud. Не беда, у нас же есть бэкапы? ;)

Дело в том, что без этого кода ваши пароли не попадут в iCloud, а будут просто синхронизироваться между авторизированными устройствами. Во всяком случае, так утверждает Apple у себя на сайте. А вот Джон Бродкин (Jon Brodkin) с Ars Technica доказал небольшим экспериментом, что это не так. Пароли все же где-то хранятся в iCloud, но восстановить их оттуда без кода не получится.

3. Окей, теперь откройте Системные настройки → iCloud на Maс и активируйте Связку ключей . Mac предложит отправить запрос на первое активированное устройство. Соглашайтесь.



4. Через мгновение на ваш iPhone придет запрос на разрешение вашему Mac использовать iCloud Keychain. Здесь нужно ввести пароль от iCloud. Каждая следующая активация будет отправлять запрос на предыдущее устройство. Такая себе карусель.



5. Чтобы автозаполнение паролей заработало в мобильном Safari, зайдите в Настройки → Safari → Пароли и автозаполнение и включите Имена и пароли . В меню Сохраненные пароли можно посмотреть список всего, что есть в Связке ключей.



Со скучной частью мы закончили. Теперь отправляйтесь в мобильный Safari и наслаждайтесь автозаполнением паролей.

Безопасность iCloud Keychain

Теперь посмотрим, насколько безопасен iCloud Keychain. Оказывается, здесь полный караул! Если вы ранее активировали автозаполнение на iOS, то любой, кто возьмёт в руки телефон, может свободно залогинитьься под вашими аккаунтами из Safari. Да, так же происходит и на Mac, но незаметно «пошарить» на компьютере и телефоне - разные вещи.

Ещё опаснее, когда в вашем телефоне нет кода на разблокировку. В этом случае, любой желающий увидит все пароли в настройках Safari. Оказывается, они хранятся в открытом виде.



Да, многие ставят пароль на включение iPhone, но подсмотреть его через плечо - раз плюнуть. Этот четырёхзначный код легко узнает любой смышлёный официант, просмотрев записи с камер наблюдений вашего любимого кафе.

Проблема с паролем на телефоне частично отсутствует разве что у владельцев iPhone 5S с их сенсором отпечатков пальцев. Если подсмотреть пароль легко, то вот так заморачиваться будут не многие:

Возможно, скоро Apple также разрешит создавать произвольный пароль (отличный от кода разблокировки) для доступа к мобильной Связке ключей. Это тоже сделает Связку ключей безопаснее. Если вы думаете, что для этого и предназначен код безопасности , от которого мы отказались выше, то это не так. Код безопасности нужен лишь при «вытягивании» паролей из iCloud.

Учитывая все вышесказанное, на Связку ключей iCloud можно «берегись», особенно при неправильной настройке. Пока же iCloud Keychain даёт злоумышленникам дополнительное пространство для маневра.

Как я использую iCloud Keychain

Разумеется, я не храню никакие пароли в iCloud Keychain. Все мои пароли надёжно спрятаны в и . Да, это не так удобно, но . При таком раскладе потеря телефона или планшета уже не грозит потерей очень важной информации. Даже если вор знает мой код разблокировки.

В то же время, iCloud Keychain у меня включён. Включён он потому, что кроме всего прочего, синхронизирует пароли от беспроводных сетей. Например, когда вы пришли в кафе и подключились к WiFi с Mac, то ваши iPad и iPhone подключатся к нему автоматически. Очень удобно!

От остальных паролей я избавился. Для этого зайдите в Связку ключей на Mac и удалите все, что считаете нужным. В идеале, ваш список паролей в настройках Safari на iOS должен остаться пустым. Разумеется, перед этим вы должны сохранить все важное в 1Password.



Если пароли сразу не пропадут с мобильных устройств, то выключите и снова включите Связку ключей в настройках iCloud Mac и обновление «протолкнётся» на все устройства.

Чтобы там больше ничего не появлялось, научитесь игнорировать предложения OS X и iOS сохранять что-либо в Связку ключей из Safari. Для большей надёжности можете и там и там отключить опции автозаполнения паролей.

Для меня единственная польза iCloud Keychain лишь в синхронизации паролей от беспроводных точек доступа. В остальном я отдаю предпочтение .

Твитнуть

Продвинутым пользователям устройств от Apple известна функция «Связка ключей iCloud », значительно упрощающая работу с паролями и другими личными данными на устрйоствах под управлением iOS и macOS. В этом материале мы подробно расскажем о процессе настройки сервиса, а также ответим на часто возникающие вопросы.

Вконтакте

Что такое «Связка ключей» и зачем это нужно?

«Связка ключей» представляет собой менеджер паролей для iPhone, iPod Touch, iPad и компьютеров Mac, где хранятся учетные данные для входа на сайты через браузер Safari, информация платежных карт, а также сведения о сетях Wi-Fi со всех одобренных гаджетов под управлением iOS 7.0.3, OS X Mavericks 10.9 и более новых выпусков «яблочных» ОС.

Кроме того, в «Связке ключей iCloud » для Mac также хранятся данные учетных записей, используемых в стандартных приложениях, таких как «Календарь », «Контакты », «Почта » и «Сообщения ». Когда пользователь заходит в соцсеть или открывает сайт, на котором зарегистрирован, сервис автоматически добавляет данные учетных записей на все связанные устройства.

«Связка ключей» работает во всех странах?

Да. «Связку ключей » можно настроить и пользоваться в любой стране на любом совместимом устройстве. Однако в некоторых странах сервис работает без возможности использования «Кода безопасности iCloud » (подробнее ниже).

Например, при настройке «Связки ключей » в России и Украине пользователь может (при необходимости) защитить личные данные при помощи «Кода безопасности iCloud » (настройка при помощи SMS), тем самым сохраняя все данные сервиса на серверах Apple (более подробно об этом читайте ниже).

В то же время пользователи Беларуси и Казахстана не смогут использовать «Код безопасности iCloud «. Функция «» в этих странах не поддерживается официально), но пользоваться сервисом можно и без него (без настройки при помощи SMS). В этом случае пользовательские данные будут храниться лишь на самих устройствах (без синхронизации с серверами Apple).

Перечень стран, в которых доступно использование «Связки ключей» с «Кодом безопасности iCloud» (с поддержкой SMS для настройки)


Как настроить «Связку ключей» на Mac, iPhone или iPad?

На iPhone или iPad:

После установки обновления мобильной операционной системы Ассистент настройки предлагает настроить «Связку ключей iCloud ». Если вы этого не сделали сразу, не волнуйтесь, настроить функцию можно в любое удобное для вас время. Для этого:

  • На iOS 10.3 и выше откройте приложение «Настройки », выберите свое имя (в самом верху) и войдите в раздел iCloud (на девайсах под управлением более ранней версии iOS данный раздел находится по пути: «Настройки » -> iCloud).


  • Перейдите в раздел «Связка ключей».

  • Активируйте переключатель «Связка ключей iCloud». Введите пароль от учетной записи и следуйте дальнейшим инструкциям на дисплее.

На компьютерах Mac:

  • Откройте меню Apple (), выберите пункт «Системные настройки ».
  • Выберите раздел iCloud и активируйте переключатель «Связка ключей iCloud », после чего следует ввести Apple ID и пароль и следовать появившейся инструкции.



Добавление дополнительных устройств

Если вы хотите добавить дополнительные устройства, «Связку ключей iCloud » нужно включить на каждом из них. При активации функции на новом девайсе каждое устройство, где она настроена, получит запрос на подтверждение.

Например, при включении Связки ключей в iPhone на экране Mac , использующем ту же учетную запись Apple ID (iCloud), появится такое сообщение:


Нажмите «Продолжить», после чего откроются настройки iCloud, где необходимо ввести пароль Apple ID и тем самым разрешив устройству использовать Связку ключей .


Обратная процедура — включаем Связку ключей на Mac — уведомление приходит на iPhone.


После подтверждения информация на новом гаджете будет обновляться автоматически, если устройство находится в Интернете.

При настройке «Связки ключей» просят создать код безопасности. Что это такое?

Код безопасности представляет собой набор из шести цифр или комбинации цифр и букв, использующийся для идентификации пользователя и доступа к другим возможностям «Связка ключей iCloud ». К примеру, если вы потеряли устройства, с помощью кода можно восстановить сохраненные в ней данные.









Для получения кода безопасности необходимо получение SMS на номер телефона, зарегистрированного в стране, где «» поддерживается официально (список стран выше).

Код безопасности позволяет активировать «Связку ключей iCloud » без необходимости получения одобрения с других устройств, однако для этого должна быть включена . Просто включите переключатель как описано выше и введите пароль и код безопасности, автоматически отображающийся на доверенных гаджетах.

Может ли техподдержка Apple восстановить код безопасности iCloud для «Связки ключей»?

Постарайтесь хорошенько запомнить код или записать в безопасном месте, поскольку, если вы его забудете, техподдержка Apple не сможет помочь Вам в восстановлении кода . Кроме того, необходимо помнить, что число неправильных попыток ввода кода ограничено, и после превышения лимита доступ к «Связке ключей iCloud » будет заблокирован. В таком случае нужно обратиться в техподдержку Apple и после удачной идентификации личности пользователю будут предоставлены дополнительные попытки ввода кода. Если и в этом случае будет указана неверная комбинацию, Apple навсегда сотрет «Связку ключей iCloud » со своих серверов (естественно, при этом все личные данные будут утеряны).

Можно ли настроить «Связку ключей» без кода безопасности (без номера телефона с поддержкой SMS)?

Можно. Установка кода безопасности при настройке функции вовсе необязательна. Но в таком случае ваши данные будут храниться не на сервере, а на самих устройствах. Такой подход предполагает больший контроль пользователя над своими данными, однако у него есть существенный минус – Apple не сможет оказать помощь в восстановлении «Связки ключей iCloud ».

Если вдруг для вашей страны (полный список стран размещен выше) возможность настроить «Связку ключей iCloud » по SMS отсутствует, не беспокойтесь, вы все равно сможете подключить функцию. Для этого при настройке (инструкция по настройке выше) сервиса на iOS-устройствах не выбирать параметр «Подтвердить с кодом » в меню «Дополнения «:

На компьютерах Mac необходимо перейти в раздел «Дополнительные параметры » и выбрать пункт «Не создавать код безопасности «.


Повторимся, что в этом случае «Связка ключей iCloud » будет храниться только на устройстве, а не на сервере Apple, и обновляться только на одобренных гаджетах. Завершите настройку, следуя открывшейся на экране инструкции.

Безопасное хранение паролей и их синхронизация между устройствами - задача непростая. Около года назад Apple представила миру iCloud Keychain, свое централизованного хранилище паролей в OS X и iOS. Давай попробуем разобраться, где и как хранятся пароли пользователей, какие потенциальные риски это несет и имеет ли Apple техническую возможность получить доступ к расшифрованным данным, хранящимся на ее серверах. Компания утверждает, что такой доступ невозможен, но, чтобы это подтвердить или опровергнуть, необходимо разобраться, как работает iCloud Keychain.

iCloud 101

На самом деле iCloud - это не один сервис, это общее маркетинговое название для целого ряда облачных сервисов от Apple. Это и синхронизация настроек, документов и фотографий, и Find My Phone для поиска потерянных или похищенных устройств, и iCloud Backup для резервного копирования в облако, и теперь вот iCloud Keychain для безопасной синхронизации паролей и номеров кредитных карт между устройствами на базе iOS и OS X.

Каждая служба iCloud расположена на собственном домене третьего уровня, таком как pXX-keyvalueservice.icloud.com, где XX - номер группы серверов, отвечающих за обработку запросов текущего пользователя; для различных Apple ID этот номер может быть разным; более новые учетные записи обычно имеют большее значение этого счетчика.

Код безопасности iCloud

Прежде чем погружаться в анализ iCloud Keychain, обратим внимание на то, каким образом эта служба конфигурируется. При включении iCloud Keychain пользователю предлагается придумать и ввести код безопасности iCloud (iCloud Security Code, далее - iCSC). По умолчанию форма ввода позволяет использовать четырехзначный цифровой код, но, перейдя по ссылке «Дополнительные параметры», все же можно использовать более сложный код или вовсе позволить устройству сгенерировать стойкий случайный код.

Теперь мы знаем, что данные в iCloud Keychain защищены с помощью iCSC. Ну что же, попробуем разобраться, как именно эта защита реализована!

Перехват трафика или man-in-the-middle

Первым шагом при анализе сетевых сервисов зачастую является получение доступа к сетевому трафику между клиентом и сервером. В случае с iCloud для нас есть две новости: плохая и хорошая. Плохая состоит в том, что весь (ну или по крайней мере подавляющая его часть) трафик защищен TLS/SSL, то есть он зашифрован и обычной пассивной атакой «прочитать» его не удастся. Хорошая же новость заключается в том, что Apple сделала всем желающим поисследовать iCloud подарок и не использует фиксацию сертификата (certificate pinning), что позволяет достаточно просто организовать атаку «человек посередине» (man-in-the-middle) и расшифровывать перехваченный трафик. Для этого достаточно:

  1. Поместить подопытное iOS-устройство в одну Wi-Fi-сеть с компьютером, осуществляющим перехват.
  1. Установить на компьютере перехватывающий прокси-сервер (такой как Burp, Charles Proxy или любой аналогичный).
  1. Импортировать на iOS-устройство TLS/SSL-сертификат установленного прокси-сервера (подробности в справке конкретного прокси).
  1. В настройках Wi-Fi-сети на iOS-устройстве (Настройки → Wi-Fi → Имя сети → HTTP Прокси) указать IP-адрес перехватывающего компьютера в Wi-Fi-сети и порт, на котором слушает прокси-сервер.

Если все сделано правильно, то весь трафик между устройством и iCloud’ом будет как на ладони. И из перехвата этого трафика будет отчетливо видно, что iCloud Keychain построен на базе двух сервисов iCloud: com.apple.Dataclass.KeyValue и com.apple.Dataclass.KeychainSync - и при первоначальном, и при повторном включениях на других устройствах iOS обменивается данными с этими сервисами.

Первый сервис не нов и был в числе первых возможностей iCloud; он широко используется приложениями для синхронизации настроек. Второй же является новым и разработан, очевидно, специально для iCloud Keychain (хотя его функционал теоретически позволяет использовать его и для других целей). Рассмотрим эти сервисы подробнее.

com.apple.Dataclass.KeyValue

Как было отмечено выше, это один из сервисов, используемых iCloud Keychain. Многие существующие приложения используют его для синхронизации небольших объемов данных (настройки, закладки и тому подобное). Каждая сохраняемая этой службой запись ассоциируется с идентификатором приложения (Bundle ID) и именем хранилища (store). Соответственно, для получения сохраненных данных от сервиса также необходимо предоставить эти идентификаторы. В рамках iCloud Keychain данный сервис используется для синхронизации записей Keychain в зашифрованном виде. Достаточно подробно этот процесс описан в документе iOS Security в разделах Keychain syncing и How keychain syncing works.

Синхронизация Keychain

Когда пользователь впервые включает iCloud Keychain, устройство создает «круг доверия» (circle of trust) и ключи синхронизации (syncing identity, состоит из открытого и закрытого ключей) для текущего устройства. Открытый ключ этой пары помещается в «круг доверия», и этот «круг» дважды подписывается: сперва закрытым ключом синхронизации устройства, а затем асимметричным ключом (основанным на эллиптической криптографии), полученным из пароля пользователя на iCloud. Также в «круге» сохраняются параметры для вычисления ключа из пароля, такие как соль и количество итераций.

Подписанный «круг» сохраняется в Key/Value-хранилище. Он не может быть прочитан без знания пользовательского пароля iCloud и не может быть изменен без знания закрытого ключа одного из устройств, добавленных в «круг».

Когда пользователь включает iCloud Keychain на другом устройстве, это устройство обращается к Key/Value-хранилищу в iCloud и замечает, что у пользователя уже есть «круг доверия» и что новое устройство в него не входит. Устройство генерирует ключи синхронизации и квитанцию для запроса членства в «круге». Квитанция содержит открытый ключ синхронизации устройства и подписана ключом, полученным из пользовательского пароля iCloud с использованием параметров генерации ключа, полученных из Key/Value-хранилища. Подписанная квитанция затем помещается в Key/Value-хранилище.

Первое устройство видит новую квитанцию и показывает пользователю сообщение о том, что новое устройство запрашивает добавление в «круг доверия». Пользователь вводит пароль iCloud, и подпись квитанции проверяется на корректность. Это доказывает, что пользователь, генерировавший запрос на добавление устройства, ввел верный пароль при создании квитанции.

После того как пользователь подтвердит добавление устройства к «кругу», первое устройство добавляет открытый ключ синхронизации нового устройства в «круг» и вновь дважды подписывает его при помощи своего закрытого ключа синхронизации и при помощи ключа, полученного из пароля iCloud-пользователя. Новый «круг» сохраняется в iCloud, и новое устройство аналогичным образом подписывает его.

Как работает синхронизация Keychain

Теперь в «круге доверия» два устройства, и каждое из них знает открытые ключи синхронизации других устройств. Они начинают обмениваться записями Keychain через Key/Value-хранилище iCloud. В случае если одна и та же запись присутствует на обоих устройствах, то приоритет будет отдан имеющей более позднее время модификации. Если время модификации записи в iCloud и на устройстве совпадают, то запись не синхронизируется. Каждая синхронизируемая запись зашифровывается специально для целевого устройства; она не может быть расшифрована другими устройствами или Apple. Кроме того, запись не хранится в iCloud постоянно - она перезаписывается новыми синхронизируемыми записями.

Этот процесс повторяется для каждого нового устройства, добавляемого в «круг доверия». Например, если к «кругу» добавляется третье устройство, то запрос подтверждения будет показан на двух других устройствах. Пользователь может подтвердить добавление на любом из них. По мере добавления новых устройств каждое устройство из «круга» синхронизируется с новыми, чтобы убедиться, что набор записей на всех устройствах одинаков.

Необходимо заметить, что синхронизируется не весь Keychain. Некоторые записи привязаны к устройству (например, учетные записи VPN) и не должны покидать устройство. Синхронизируются только записи, имеющие атрибут kSecAttrSynchronizable. Apple установила этот атрибут для пользовательских данных Safari (включая имена пользователей, пароли и номера кредитных карт) и для паролей Wi-Fi.

Кроме того, по умолчанию записи сторонних приложений также не синхронизируются. Для их синхронизации разработчики должны явным образом установить атрибут kSecAttrSynchronizable при добавлении записи в Keychain.

iCloud Keychain оперирует двумя хранилищами:

  • com.apple.security.cloudkeychainproxy3
- Bundle ID: com.apple.security.cloudkeychainproxy3;
  • com.apple.sbd3
- Bundle ID: com.apple.sbd (SBD - акроним Secure Backup Daemon).

Первое хранилище предположительно используется для поддержания списка доверенных устройств (устройств в «круге доверия», между которыми разрешена синхронизация паролей), для добавления новых устройств в этот список и для синхронизации записей между устройствами (в соответствии с механизмом, описанным выше).

Второе же хранилище предназначено для резервного копирования и восстановления записей Keychain на новые устройства (например, когда в «круге доверия» нет других устройств) и содержит зашифрованные записи Keychain и сопутствующую информацию.


Таким образом, записи Keychain хранятся в обычном Key/Value-хранилище (com.apple.securebackup.record). Эти записи зашифрованы с помощью набора ключей, хранящегося там же (BackupKeybag). Но этот набор ключей защищен паролем. Откуда берется этот пароль? Что это за служба депонирования паролей Apple? Далее постараемся разобраться.

apple.Dataclass.KeychainSync

Это новый сервис, возник он относительно недавно: впервые его поддержка появилась в бета-версиях iOS 7, затем она отсутствовала в iOS 7.0–7.0.2 и была вновь добавлена в iOS 7.0.3, вышедшей одновременно с релизом OS X Mavericks. Это и есть упомянутая выше служба депонирования паролей (адрес службы - pXX-escrowproxy.icloud.com).

Служба предназначена для безопасного хранения пользовательских секретов и позволяет пользователю после успешной аутентификации восстановить эти секреты. Для успешной аутентификации необходимо следующее:

  • токен аутентификации iCloud, получаемый в обмен на Apple ID и пароль при первичной аутентификации в iCloud (стандартный способ аутентификации для большинства сервисов iCloud);
  • код безопасности iCloud (iCSC);
  • шестизначный цифровой код, передаваемый серверами Apple на номер сотового телефона, ассоциированный с пользователем.

В теории все выглядит хорошо, но, чтобы определить, совпадает ли теория с практикой, нам потребуется провести аудит программы-клиента службы депонирования. В ОС iOS и OS X эта программа носит название com.apple.lakitu . Описание процесса ее реверсинга и аудита выходит за рамки статьи, поэтому сразу переходим к результатам.

Доступные команды

Аудит com.apple.lakitu позволяет определить список команд, реализуемых службой депонирования. На соответствующем скриншоте представлены команды и их описание. Особо хотелось бы остановиться на последней команде - с ее помощью возможно изменить номер телефона, ассоциированный с текущей учетной записью. Наличие этой команды делает многофакторную аутентификацию, используемую при восстановлении iCloud Keychain (пароль Apple ID + iCSC + устройство), заметно менее надежной, так как позволяет исключить один из факторов. Интересно и то, что пользовательский интерфейс iOS не позволяет выполнить эту команду - в нем просто нет такой опции (по крайней мере я ее не нашел).

Особенность данной команды, отличающая ее от всех прочих, в том, что она требует аутентификации с паролем Apple ID и не будет работать, если для аутентификации используется токен iCloud (прочие команды работают при аутентификации по токену). Это служит дополнительной защитой данной команды и показывает, что проектировщики системы предприняли шаги для повышения ее безопасности. Тем не менее не до конца ясно, зачем эта команда вообще присутствует в системе.


Восстановление депонированных данных

Для получения депонированных данных выполняется следующий протокол:

  1. Клиент запрашивает список депонированных записей (/get_records).
  1. Клиент запрашивает ассоциированный телефонный номер, на который сервером будет направлен код подтверждения (/get_sms_targets).
  1. Клиент инициирует генерацию и доставку кода подтверждения (/generate_sms_challenge).
  1. После того как пользователь ввел iCSC и код подтверждения из SMS, клиент инициирует попытку аутентификации с использованием протокола SRP-6a (/srp_init).
  1. После получения ответа от сервера клиент производит вычисления, предписанные протоколом SRP-6a, и запрашивает депонированные данные (/recover).
  1. В случае если клиент успешно аутентифицировался, сервер возвращает депонированные данные, предварительно зашифровав их на ключе, выработанном в процессе работы протокола SRP-6a (если протокол отработал успешно, то и сервер, и клиент вычислили этот общий ключ).

Важно отметить, что номер телефона, полученный на шаге 2, используется исключительно для нужд пользовательского интерфейса, то есть чтобы показать пользователю номер, на который будет отправлен код подтверждения, и на шаге 3 клиент не передает серверу номер, на который следует отправлять код подтверждения.


Secure Remote Password

На шаге 4 клиент начинает выполнение протокола SRP-6a. Протокол SRP (Secure Remote Password) - это протокол парольной аутентификации, защищенный от прослушивания и man-in-the-middle атак. Таким образом, например, при использовании этого протокола невозможно перехватить хеш пароля и затем пытаться восстановить его, просто потому, что никакой хеш не передается.

Apple использует наиболее совершенный вариант протокола, SRP-6a. Этот вариант предписывает разрывать соединение при неудачной аутентификации. Кроме того, Apple позволяет лишь десять неудачных попыток аутентификации для данного сервиса, после чего все последующие попытки блокируются.

Подробное описание протокола SRP и его математических основ выходит за рамки статьи, но для полноты изложения ниже представлен частный вариант, используемый службой com.apple.Dataclass.KeychainSync .


В качестве хеш-функции H используется SHA-256 , а в качестве группы (N , g) - 2048-битная группа из RFC 5054 «Using the Secure Remote Password (SRP) Protocol for TLS Authentication». Протокол выполняется следующим образом:

  1. Устройство генерирует случайное значение a , вычисляет A=g^a mod N , где N и g - параметры 2048-битной группы из RFC 5054 , и отправляет на сервер сообщение, содержащее идентификатор пользователя ID , вычисленное значение A и код подтверждения из SMS. В качестве идентификатора пользователя используется значение DsID - уникальный числовой идентификатор пользователя.
  2. Получив сообщение, сервер генерирует случайное значение b и вычисляет B=k*v + g^b mod N , где k - множитель, определенный в SRP-6a как k=H(N, g) , v=g^H(Salt, iCSC) mod N - верификатор пароля, хранящийся на сервере (аналог хеша пароля), Salt - случайная соль, сгенерированная при создании учетной записи. Сервер отправляет клиенту сообщение, содержащее B и Salt .
  3. Путем несложных математических преобразований клиент и сервер вычисляют общий сессионный ключ K . На этом первая часть протокола - выработка ключа - завершена, и теперь клиент и сервер должны убедиться, что они получили одно и то же значение K .
  4. Клиент вычисляет M=H(H(N) XOR H(g) | H(ID) | Salt | A | B | K) , доказательство того, что он знает K , и отправляет на сервер M и код подтверждения из SMS. Сервер также вычисляет M и сравнивает полученное от клиента и вычисленное значения; если они не совпадают, то сервер прекращает выполнение протокола и разрывает соединение.
  5. Сервер доказывает клиенту знание K путем вычисления и отправки H(A, M, K) . Теперь оба участника протокола не только выработали общий ключ, но и убедились, что этот ключ одинаков у обоих участников. В случае со службой депонирования сервер также возвращает случайный вектор инициализации IV и депонированную запись, зашифрованную на общем ключе K с использованием алгоритма AES в режиме CBC .

Использование SRP для дополнительной защиты пользовательских данных, на мой взгляд, существенно улучшает безопасность системы от внешних атак хотя бы потому, что позволяет эффективно противостоять попыткам перебора iCSC: за одно подключение к сервису можно попробовать только один пароль. После нескольких неудачных попыток учетная запись (в рамках работы со службой депонирования) переводится в состояние soft lock и временно блокируется, а после десяти неудачных попыток учетная запись блокируется окончательно и дальнейшая работа со службой депонирования возможна только после сброса iCSC для учетной записи.

В то же время использование SRP никак не защищает от внутренних угроз. Депонированный пароль хранится на серверах Apple, соответственно, можно предположить, что Apple может при необходимости получить к нему доступ. В таком случае, если пароль не был защищен (например, зашифрован) до депонирования, это может привести к полной компрометации записей Keychain, сохраненных в iCloud, так как депонированный пароль позволит расшифровать ключи шифрования, а они - записи Keychain (обрати внимание на com.apple.Dataclass.KeyValue).

Однако в документе «iOS Security» Apple утверждает, что для хранения депонированных записей используются специализированные аппаратные модули безопасности (Hardware Security Module, HSM) и что доступ к депонированным данным невозможен.

Безопасность депонирования

iCloud предоставляет защищенную инфраструктуру для депонирования Keychain, обеспечивающую восстановление Keychain только авторизованными пользователями и устройствами. Кластеры HSM защищают депонированные записи. Каждый кластер имеет собственный ключ шифрования, использующийся для защиты записей.

Для восстановления Keychain пользователь должен аутентифицироваться, используя имя пользователя и пароль iCloud, и ответить на присланное SMS. Когда это выполнено, пользователь должен ввести код безопасности iCloud (iCSC). Кластер HSM проверяет корректность iCSC, используя протокол SRP; при этом iCSC не передается на серверы Apple. Каждый узел кластера, независимо от других, проверяет, не превысил ли пользователь максимально допустимое количество попыток получения данных. Если на большей части узлов проверка завершается успешно, то кластер расшифровывает депонированную запись и возвращает ее пользователю.

Далее устройство использует iCSC, чтобы расшифровать депонированную запись и получить пароль, использованный для шифрования записей Keychain. При помощи этого пароля Keychain, полученная из Key/Value-хранилища, расшифровывается и восстанавливается на устройство. Допускается лишь десять попыток аутентификации и получения депонированных данных. После нескольких неудачных попыток запись блокируется, и пользователь должен обратиться в службу поддержки для разблокировки. После десятой неудачной попытки кластер HSM уничтожает депонированную запись. Это обеспечивает защиту от брутфорс-атак, направленных на получение записи.

К сожалению, проверить, используются ли HSM на самом деле, не представляется возможным. Если все действительно так и HSM не позволяют прочитать хранящиеся в них данные, то можно утверждать, что данные iCloud Keychain защищены и от внутренних угроз. Но, повторюсь, к сожалению, доказать или опровергнуть использование HSM и невозможность чтения данных из них нельзя.

Остается еще один способ защиты данных от внутренней угрозы - защита депонируемых данных на устройстве перед передачей на серверы Apple. Из описания Apple следует (и реверсинг это подтверждает), что такая защита применяется - депонируемый пароль предварительно зашифровывается при помощи iCSC. Очевидно, что в этом случае уровень безопасности (от внутренней угрозы) напрямую зависит от сложности iCSC и четырехсимвольный iCSC, используемый по умолчанию, не обеспечивает достаточной защиты.

Итак, мы выяснили, как работают отдельные элементы системы, и теперь самое время посмотреть на систему целиком.

Putting it all Together

На схеме представлена работа iCloud Keychain в части депонирования и восстановления записей Keychain. Система работает следующим образом:

  1. Устройство генерирует набор случайных ключей (в терминологии Apple - keybag) для шифрования записей Keychain.
  2. Устройство зашифровывает записи Keychain (имеющие установленный атрибут kSecAttrSynchronizable) с помощью набора ключей, сгенерированного на предыдущем шаге, и сохраняет зашифрованные записи в Key/Value-хранилище com.apple.sbd3 (ключ com.apple.securebackup.record).
  3. Устройство генерирует случайный пароль, состоящий из шести групп по четыре символа (энтропия такого пароля - около 124 бит), зашифровывает набор ключей, сгенерированный на шаге 1, при помощи этого пароля и сохраняет зашифрованный набор ключей в Key/Value-хранилище com.apple.sbd3 (ключ BackupKeybag).
  4. Устройство зашифровывает случайный пароль, сгенерированный на предыдущем шаге, с помощью ключа, полученного из кода безопасности iCloud пользователя, и депонирует зашифрованный пароль службе com.apple.Dataclass.KeychainSync .

При настройке iCloud Keychain пользователь может применять сложный или случайный iCSC вместо предлагаемого по умолчанию четырехзначного кода. В случае использования сложного кода механизм работы системы депонирования не меняется; отличие лишь в том, что ключ для шифрования случайного пароля будет вычислен не из четырехзначного iCSC, а из более сложного, введенного пользователем.

При случайном коде подсистема депонирования пароля не используется вообще. При этом случайный пароль, сгенерированный системой, и является iCSC, и задача пользователя его запомнить и безопасно хранить. Записи Keychain все так же зашифровываются и сохраняются в Key/Value-хранилище com.apple.sbd3 , но служба com.apple.Dataclass.KeychainSync не используется.


Выводы

Можно смело утверждать, что с технической точки зрения (то есть social engineering не рассматриваем) и по отношению к внешним угрозам (то есть не Apple) безопасность службы депонирования iCloud Keychain находится на достаточном уровне: благодаря использованию протокола SRP даже при компрометации пароля iCloud злоумышленник не сможет получить доступ к записям Keychain, так как для этого дополнительно необходим код безопасности iCloud, а перебор этого кода существенно затруднен.

В то же время, используя другой механизм iCloud Keychain - синхронизацию паролей, злоумышленник, скомпрометировавший пароль iCloud и имеющий непродолжительный физический доступ к одному из устройств пользователя, может полностью скомпрометировать и iCloud Keychain: для этого достаточно добавить устройство злоумышленника в «круг доверия» устройств пользователя, а для этого достаточно знать пароль iCloud и иметь кратковременный доступ к устройству пользователя, чтобы подтвердить запрос на добавление нового устройства к «кругу».

Если же рассматривать защиту от внутренних угроз (то есть Apple или кто-либо с доступом к серверам Apple), то в этом случае безопасность службы депонирования выглядит не так радужно. Утверждения Apple об использовании HSM и невозможности чтения данных из них не имеют неопровержимых доказательств, а криптографическая защита депонируемых данных завязана на код безопасности iCloud, при настройках по умолчанию является крайне слабой и позволяет любому, кто в состоянии извлечь с серверов (или из HSM) Apple депонированные записи, практически моментально восстановить четырехзначный код безопасности iCloud.

В случае использования сложного алфавитно-цифрового кода эта атака становится сложнее, так как возрастает количество возможных паролей. Если же iCloud Keychain сконфигурирован использовать случайный код, то служба депонирования вообще не привлекается, что фактически делает этот вектор атаки невозможным.

Максимальный уровень безопасности (не считая полного отключения iCloud Keychain, конечно) обеспечивается при использовании случайного кода - и не столько потому, что такой код сложнее подобрать, сколько потому, что при этом не задействована подсистема депонирования паролей, а следовательно, уменьшается и attack surface. Но удобство этого варианта, конечно, оставляет желать лучшего.

С каждой новой версией OS X и iOS обе системы все больше интегрируются в iCloud. Трендом этого года стала замена таких популярных менеджеров паролей, как 1Password и LastPass при помощи решения от Apple. Речь конечно же об iCloud Keychain или же Связке ключей iCloud . О первичной настройке и дальнейшем использовании, а также определенных перспективах и некоторых подводных камнях мы и поговорим в рамках данной статьи.

Как водится, начнем с подготовительного этапа. Для начала работы с iCloud Keychain нам понадобится компьютер под управлением финальной версии OS X Mavericks или мобильное устройство с iOS 7.0.3 на борту. Или оба сразу. Если с этим проблем нет, то можно приступать к переводу своих паролей в облако. Думаю, в рамках данного материала не имеет смысла рассуждать о целесообразности подобного действия. Во-первых, это личное решение каждого, доверять или нет свои пароли и, возможно, банковские карты, облачному сервису Apple. Во-вторых, сама компания в нескольких предупреждениях обещает, что пароли хранятся в зашифрованном виде и никто в Apple не имеет к ним доступа. Если решились продолжать, значит поверили на слово.

Чтобы включить связку ключей iCloud на компьютере под управлением OS X Mavericks необходимо проделать следующие действия:

  • Открываем системные настройки и там находм иконку iCloud.

  • Ставим флажок напротив связки ключей.

  • Далее возможны два варианта. Если вы используете пароль при входе в свою учетную запись на Mac, то данный этап можно пропустить. Если нет, то можно либо установить такой пароль, либо не ломать собственные привычки и ответить «не сейчас».

  • Теперь необходимо ввести пароль Apple ID.

  • Затем наступает заключительны этап, но он как раз и является наиболее усложненным. Система предложит ввести четырехзначный цифровой код для защиты паролей в облаке. Он понадобится, например, если вы захотите активировать связку ключей iCloud на другом компьютере или iOS-устройстве. Но есть и альтернативные варианты Они будут доступны после нажатия кнопки «Дополнительно».

  • На этом моменте остановимся подробнее. Всего существует четыре варианта защиты паролей в iCloud Keychain. Первый описан выше и представляет собой четырехзначный цифровой код. Второй предлагает ввести более длинный и сложный код, который уже может состоять не только из цифр, но также из букв и символов. Если вы не доверяете сами себе или не можете придумать ничего достаточно сложного, то можно запросить подобный код у Apple – это третий вариант. Наконец, последний вариант – не использовать код безопасности. Однако он не настолько опасен, как может показаться на первый взгляд.


    Хотя вы и не используете код безопасности, который по-хорошему должен вводиться на каждом устройстве при активации функции iCloud Keychain в рамках вашей учетной записи, просто так облачное хранилище паролей включить не удастся. Проще всего систему объяснить на примере. Вы хотите подключить связку ключей на iPad. До этого она была у вас активирована лишь на маке. Не беда. При включении функции на планшете, необходимо ввести пароль Apple ID, а затем подтвердить добавление нового устройства на компьютере, снова введя пароль Apple ID. Получается этакая круговая порука, когда без участия уже подключенного к системе устройства, не удастся добавить новое. По-моему, вполне безопасно и нет нужды запоминать лишний пароль. Мы ведь используем связку ключей, чтобы наоборот ничего не запоминать.


    Выше была описана активация iCloud Keychain на компьютере под управлением OS X Mavericks. Точно так же выглядит эта процедура на мобильном устройстве на базе iOS. За исключением пары моментов. Необходимый переключатель находится по адресу Настройки – iCloud – Связка ключей. Если вы используете iCloud Keychain по четвертом методу, то есть без каких-либо паролей, то весь процесс пройдет аналогичным образом. Иначе обладателей мобильных устройств из некоторых стран ждет неприятный сюрприз.


    Дело в том, что iOS 7 затребует номер телефона, на который можно отправлять SMS-сообщения. Они будут содержать идентификационный код, который необходимо будет вводить при использовании кода безопасности, созданного вами ранее. Жители России на этот счет могут не беспокоиться – страна есть в списке и указать номер не составит труда. Иная ситуация ждет пользователей из Беларуси и Украины. Их стран в списке нет и номер ввести не удастся. В этом случае пока есть одно решение, которое действительно решает проблему – активация связки ключей при помощи OS X. Только так удастся миновать невозможность ввода номера в iOS 7.


    Итак, на этом процесс активации связки ключей iCloud закончен, можно приступать к работе. Но сможет ли решение от Apple потягаться с известными менеджерами паролей сторонних разработчиков. Связка ключей исправно запоминает ваши логины и пароли к сайтам, номера и данные кредитных карт, кроме кода безопасности, разумеется. Автоматическое заполнение тоже работает прекрасно, но… Есть такая группа сайтов, которые отправляют браузерам настойчивую просьбу не сохранять пароль, якобы заботясь о безопасности пользователей. Чем это черевато для пользователей iCloud Keychain? Safari можно заставить сохранять и такие пароли, используя настройки, но при этом обязательным условием будет установка пароля на доступ к вашей учетной записи на маке или пароля на iOS-устойстве. Готовы ли пойти на такое, если раньше паролями не пользовались? Сомневаюсь.

    Далее, связка ключей iCloud работает только в Safari. Если вы работаете исключительно в экосистеме Apple и пользуетесь фирменным браузером, то проблем нет. Все будет идеально работать, настоящий Apple-Way. Но вот с другими браузерами возникают проблемы, потому что они пока никак не поддерживаются. Так или иначе, но для iOS это наиболее удобное решение, если вы, конечно, используете Safari.

    Еще раз повторюсь: логины и пароли от сайтов, данные кредитных карт, пароли Wi-Fi, введенные один раз на одном устройстве и сохраненные в iCloud, будут впоследствии доступны на всех остальных устройствах. Были в кафе с iPhone и подключались Wi-Fi, попросив пароль у официанта. В следующий раз вы придете с маком и он сам подключится, потому что уже знает пароль. Для пользователей, использующих в работе исключительно технику Apple, связка ключей iCloud идеальное решение. К сожалению, выход за пределы экосистемы не сулит ничего хорошего. При этом несколько портит общую картину несколько чрезмерная паранойя со стороны Apple, заставляющая активировать пароли для доступа к устройствам или привязывать номер телефона. Но все это ради безопасности, на которую все мы рассчитываем, доверяя свои пароли и данные облачному хранению.

    По материалам: www.iphones.ru

    • Перевод

    Компания Apple выпустила серьезное обновление к своей официальной документации по безопасности iOS для ИТ-профессионалов. Оно содержит намного больше информации по безопасности iOS, чем компания когда-либо разглашала общественности ранее, включая расширенное описание Touch ID, защиты данных, безопасности сетей, безопасности приложений и почти всех связанных с безопасностью функций, опций и protective controls.

    Впервые мы получили расширенное описание безопасности iCloud. Для профессионалов в вопросах безопасности, к которым я отношусь, это сродни тому, чтобы проснуться и увидеть мешок золота на клавиатуре. Помимо одного из наиболее впечатляющих отчетов по безопасности из когда-либо мне доступных, Apple снабдила документацию информацией о том, как сделать невозможным доступ к связке ключей iCloud таких организаций, как АНБ.

    Документация невероятно информативная, уровень детализации иногда доходит до описания того, какие особенности конкретных алгоритмов шифрования используются в указанных security controls. Я, по всей вероятности, буду изучать ее несколько месяцев, однако прямо сейчас стоит обратить внимание на одну секцию, которая содержит крайне ценную и важную информацию, которая объясняет, почему АНБ не может шпионить за вами, используя ваши пароли из связки ключей iCloud.

    Базовая информация о связке ключей iCloud – связка ключей имеет три важные особенности, а именно, способности:

    • Создавать сильные, составленные случайным образом пароли для веб-сайтов прямо внутри Safari
    • Синхронизировать вашу связку ключей (то есть хранимые в ней пароли) на разных устройствах
    • Создавать и хранить резервную копию связки ключей на серверах Apple
    Хотя сильные, подобранные случайным образом пароли играют критически важную роль в вашей цифровой жизни, если бы вы потеряли их, то лишились бы доступа буквально ко всему. Поэтому в интересах Apple обеспечить последовательную синхронизацию этих паролей и их максимальную защиту от потери, как для вас, так и для Apple.

    Это значит, что Apple нужно хранить резервную копию вашей связки ключей. В свете недавно появившейся боязни оказаться «под колпаком» государственной слежки, перспектива доверить ключи от вашей цифровой жизни крупной компании становится пугающей.

    Apple использует пусть и похожие, но все же несколько иные методы обеспечения безопасности для защиты как синхронизации, так и временного хранения и восстановления (из резервной копии) связки ключей. По словам самой компании:

    Компания Apple спроектировала iCloud Keychain и Keychain Recovery, что позволяет защищать пароли пользователей в следующих условиях:

    • Когда скомпрометирован аккаунт пользователя в iCloud
    • Когда iCloud скомпрометирован под воздействием внешней атаки или действий сотрудников компании
    • Когда доступ к аккаунту пользователя получают третьи лица
    Secure Sync – когда вы синхронизируете свою связку ключей, Apple на самом деле не создает мастер-копию в iCloud. Первое устройство, которое входит в «круг доверия» (такое, как iPhone), создает синхронизирующийся идентификатор, используя парные открытый и закрытый ключи (это называется асимметричной криптографией , которая широко распространена и хорошо изучена). Генерируется пара ключей, открытый ключ подписывается с помощью закрытого ключа, полученного из пароля iCloud. Подписанный круг доверия помещается в iCloud, но ваш закрытый ключ остается на вашем устройстве.

    К этому моменту у iCloud уже есть открытый ключ с вашего устройства, зашифрованный вашим паролем от iCloud и подписанный (так, чтобы никто не мог подделать или изменить его) закрытым ключом с вашего устройства, однако ваша связка ключей находится не в iCloud.

    Когда подтверждается наличие нового устройства, тот же процесс происходит на нем и подтвержденный открытый ключ подписывается и добавляется в круг доверия на каждом устройстве и в iCloud (с использованием еще большего количества процедур шифрования). Это связано с уведомлениями, которые отправляются на устройства, уже находящиеся в круге доверия, и с увеличением количества криптографических подписей, для того, чтобы убедиться, что никто другой не может обойти процедуру и зарегистрировать собственное устройство.

    Когда пароли добавлены или изменены, Apple синхронизирует только отдельные элементы связки ключей с другими устройствами, которым нужны обновления, по одному в единицу времени. Другими словами, каждый элемент связки ключей посылается на каждое устройство, которому он необходим, при этом элемент связки ключей зашифрован так, что только это конкретное устройство может его прочесть, и только один элемент связки ключей проходит через iCloud в единицу времени.

    Чтобы прочесть его, атакующему понадобится скомпрометировать одновременно ключ устройства-получателя и ваш пароль в iCloud. Или изменить архитектуру всего процесса так, чтобы пользователь об этом ничего не узнал. Даже злонамеренным сотрудникам Apple понадобилось бы скомпрометировать фундаментальную архитектуру iCloud в нескольких местах для тайного доступа к элементам вашей связки ключей. Даже заполучив ваше имя пользователя и пароль от iCloud, атакующий не сможет получить доступ к вашей связке ключей: ему понадобится устройство, находящееся в круге доверия, чтобы одобрить вхождение в круг еще одного девайса, кроме того, ему необходимо будет сделать так, чтобы вы не заметили уведомлений о новом устройстве, которые придут на все ваши девайсы из круга доверия.

    Технически Apple может нарушить процедуры по злому умыслу или под давлением серьезной госструктуры, но все окажется не так-то просто: компания не сможет обойтись без внесения изменений в архитектуру (в части уведомлений и подтверждения устройств), кроме того теперь, когда детали процесса обнародованы, компании в таких условиях не удастся избежать юридической ответственности.

    Secure Recovery – в отличие от синхронизации, во время которой в единицу времени задействован только один элемент из связки ключей, iCloud Keychain Recovery создает резервную копию всей связки ключей на iCloud.

    Apple создала безопасный эскроу-сервис для работы над этим сложным процессом в условиях соблюдения повышенного уровня безопасности. Ваша цепочка ключей зашифрована сильным ключом и хранится в iCloud. Сильный ключ, необходимый для дешифровки, затем сам шифруется с помощью нового кода безопасности iCloud Security Code и открытого ключа специального аппарата шифрования, известного как HSM (Hardware Security Module, аппаратный модуль безопасности). В рамках работы в качестве аналитика по вопросам безопасности я много писал о модулях HSM – это прочные, высокобезопасные устройства, которые используются в банках, правительственных учреждениях и крупных корпорациях для управления шифрованием и ключами.

    Это все довольно запутанно, но если упростить, то суть будет в следующем: только модуль HSM может прочесть ключ, зашифрованный с помощью iCloud Security Code, но поскольку модуль не содержит iCloud Security Code, он не может прочесть реальный ключ, использующийся для защиты связки ключей. Если все условия выполнены, HSM (а точнее кластер модулей HSM, на случай, если один из них выйдет из строя) выдаст ключ, который затем будет дешифрован с помощью iCloud Security Code. Только после этого ключ может быть использован, чтобы получить доступ к вашей цепочке ключей.

    Не расстраиваетесь, если вам это показалось слишком сложным. Мне потребовалось время, чтобы все это уложить в голове, несмотря на четкую и понятную документацию от Apple и тот факт, что я зарабатываю на жизнь в том числе и консультируя HSM-вендоров.

    В процессе восстановления потребуется еще и ваш номер телефона, поскольку в этом случае Apple присылает вам текстовое сообщение, на которое вы должны ответить. Кроме того, вам понадобятся ваш логин и пароль от iCloud для запроса восстановления и ваш iCloud Security Code для разблокировки ключей. Это три компонента, которые необходимы для доступа к связке ключей. Если кто-то попытается скомпрометировать ваш аккаунт и несколько раз потерпит неудачу, аккаунт будет заблокирован и разблокировать его можно будет только по звонку в службу поддержки Apple. Если после этого произойдет еще 10 попыток неудачного доступа, HSM уничтожит вашу эскроу-запись, навсегда скрывая доступ к вашим ключам.

    Из соображений безопасности Apple уничтожила карты доступа администраторов к HSM и настроила модули на удаление всех ключей при обнаружении несанкционированного доступа. Все пользователи должны получить уведомление о повторной регистрации прежде, чем потеряют все свои ключи, а повторная регистрация переместит их в другой HSM-кластер.

    Как я уже упоминал, в мою работу входит консультирование крупных компаний и вендоров продуктов, обеспечивающих безопасность. Я редко сталкивают с таким уровнем обеспечения безопасности, и особенно редко – с уничтожением смарт-карт администраторов, необходимых для доступа к HSM.

    АНБ-непробиваемый сервис Keychain Recovery – несмотря на все это, существует вероятность того, что Apple может по приказу правоохранительных органов изменить процесс или скомпрометировать HSM-модули и использовать это для доступа к связкам ключей и всем хранимым в системе паролям. Однако, благодаря уничтожению карт доступа администраторов, это приведет только к перерегистрации пользователей.

    Причина, по которой используются HSM-модули, заключается в том, что ни четырехзначное значение iCloud Security Code (по умолчанию), ни длинный пользовательский код (вторая опция) недостаточно хороши для генерации криптографически сильного ключа, потому, что в них недостаточно энтропии. Компания Apple была обеспокоена тем, что кто-либо мог угадать ваш iCloud Security Code, а HSM-модули и эскроу-процесс могут этому противостоять.

    Поэтому Apple добавила третью опцию, чтобы позволить вашему устройству генерировать криптографически безопасный iCloud Security Code. Если вы выберете эту опцию при установке кода безопасности iCloud в процессе активации связки ключей iCloud (Настройки > iCloud > Связка ключей, активируйте связку ключей, а затем следуйте шагам со скриншотов), iCloud Keychain Recovery задействует совершенно другой процесс для защиты вашей связки ключей.


    В этом случае ваше устройство будет генерировать абсолютно случайный код безопасности iCloud Security Code, который будет содержать так много энтропии, что вам не понадобятся модули HSM, поскольку его теоретически невозможно взломать методом грубой силы, используя текущие технику и технологии (а также технику и технологии, появление которых прогнозируется в ближайшем будущем). Выберите эту опцию, и исходный созданный случайным образом ключ, защищающий вашу связку ключей, будет зашифрован с помощью ключа, сгенерированного с использованием этого случайного кода безопасности iCloud Security Code – он не отсылается в Apple и не может быть перехвачен.

    Без этого сгенерированного случайным образом кода безопасности iCloud Security Code (храните его в сервисе по управлению паролями, таком как