[Перевод] Как защитить связку ключей iCloud от АНБ
Компания 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 (храните его в сервисе по управлению паролями, таком как 1Password или LastPass, продублируйте пароль на бумаге — четко и разборчиво! — и держите в безопасном месте), дешифровать связку ключей iCloud будет невозможно, она будет защищена даже если сами-знаете-кто получит копию.
Весь процесс впечатляет, его возможности могут удовлетворить самых параноидально настроенных граждан — то, что в Apple так много думают и делают для обеспечения безопасности нашей информации, конечно, обнадеживает.