Среди нововведений очередной версии операционной системы Apple OS X (начиная с 2012 года она официально называется именно так, а не Mac OS X) 10.9, получившей название Mavericks, есть полезная функция, названная «Связкой ключей iCloud». Суть её заключается в возможности синхронизации логинов и паролей в браузере Safari, данных кредитных карт и беспроводных сетей между устройствами под управлением OS X и iOS 7, которые объединены общей учётной записью облачного сервиса iCloud. Кроме того, «Связка ключей» способна синхронизировать данные почтовых аккаунтов, контактов, календарей и текстовых сообщений, а также аккаунтов социальных сетей Facebook, Twitter и LinkedIn и других интернет-сервисов между компьютерами с OS X Mavericks.
Ничего революционного в самой этой функции нет: существует огромное количество облачных сервисов, обеспечивающих наряду с хранением обычных данных и сохранение паролей для синхронизации с разными устройствами клиента. Есть и способы прямой синхронизации паролей без сохранения их на «облаке»: такая опция предусмотрена, к примеру, в программе 1Password, где данные передаются через Wi-Fi, но здесь возникают обоснованные сомнения в безопасности таких операций.
Между тем в справочном файле Apple по использованию «Связки ключей» (его русского перевода пока нет) говорится о том, что эту функцию можно применять без сохранения данных в «облаке». Вот цитата из «часто задаваемых вопросов»:
«Можно ли настроить “Связку ключей iCloud” таким образом, чтобы мои данные не резервировались в “облаке”»?
«Да. При настройке “Связки ключей iCloud” вы можете пропустить стадию создания кода безопасности iCloud. В этом случае данные вашей “связки ключей” будут храниться только локально на вашем устройстве и обновляться только между одобренными вами устройствами. Важно: если вы не будете создавать код безопасности iCloud, Apple не сможет восстановить вашу “Связку ключей iCloud”».
Журналист авторитетного интернет-издания Ars Technica Джон Бродкин, специализирующийся в том числе и на средствах безопасности, решил проверить это утверждение, проведя нехитрый эксперимент, а мы, в свою очередь, повторили его самостоятельно.
При настройке функции «Связка ключей iCloud» вам предлагается четыре опции. Вариант по умолчанию — простой четырёхзначный код безопасности, который, скорее всего, и будет использоваться в большинстве случаев. Для получения «Связки ключей» с серверов Apple на каждом новом устройстве, помимо ввода основного пароля к iCloud, нужно будет ввести этот код. Такое короткое число легко запомнить, но если вы всё-таки его забудете, то авторизовать новое устройство можно будет с другого авторизованного гаджета.
Второй вариант — ввести придуманный самостоятельно длинный 32-значный код; третий — 24-значный код, сгенерированный случайным образом. Очень неплохие по современным меркам опции с точки зрения взломоустойчивости, но безнадёжно чудовищные, если вы попытаетесь их запомнить.
Наконец, четвёртый вариант, который нас и интересует, — это вообще не создавать код безопасности: теперь его нельзя будет забыть или перехватить. Предполагается, что при этом данные «Связки ключей» будут храниться только на локальной машине, а не на серверах Apple.
Итак, повторяем эксперимент Джона Бродкина. Создаём на настольном компьютере iMac «Связку ключей» без кода безопасности. Теперь, чтобы получить к ней доступ с планшета iPad с той же учётной записью iCloud, нам нужно разрешение с десктопа: появляется соответствующий запрос, вводим пароль iCloud, после чего процедура сопряжения завершения.
На этот момент список сохранённых паролей на iPad пуст (см. Safari/Пароли и автозаполнение/Сохранённые пароли). Теперь переводим iPad в «Авиарежим», полностью отключив его от интернета и сотовых сетей. Открываем на десктопе сайт, требующий парольного входа. Как и положено, «Связка ключей iCloud» предлагает сохранить этот пароль. Соглашаемся и отключаем десктоп от интернета.
Поскольку, судя по описанию Apple, пароли должны храниться лишь на локальной машине, они никак не могут быть переданы на другое устройство, если оно выключено или не имеет работающих средств связи. Ждём несколько минут и отключаем «Авиарежим» на iPad. О чудо! Через пару секунд мы видим в списке наш сохранённый пароль, в том время как десктоп всё ещё отключён от интернета.
Как и Джон Бродкин, мы снова и снова повторяли эксперимент, при котором ни разу десктоп и планшет не были подключены к интернету или локальной сети одновременно. При этом все вводимые пароли исправно синхронизировались — как при вводе на iMac, так и при вводе на iPad. Желающие могут и сами проделать этот нехитрый опыт.
Собственно говоря, что и требовалось доказать: «Связка ключей iCloud» работает точно так же, как и любой другой аналогичный облачный сервис. Вряд ли можно сомневаться в том, что информация всё-таки сохраняется на серверах iCloud, хотя в Apple почему-то утверждают иначе. Да, возможно, время хранения в этом режиме каким-то образом ограничено и при этом не поддерживается функция восстановления, но данные определённо приходят адресату из интернета, причём они лежат на сервере и терпеливо дожидаются, пока не будут доступны другие устройства с общей учётной записью iCloud.
Конечно, ни в описании «Связки ключей iCloud», ни в каких-либо из диалоговых окон не говорилось о том, что в этом режиме данные будут синхронизироваться без участия «облака»: тогда теряется весь смысл даже названия этой функции. Так что речь идёт, скорее всего, о некорректном описании услуги, а не о каком-то злонамеренном введении в заблуждение.
Судя по всему, единственной принципиальной разницей между режимами с защитой кодами безопасности и беспарольным режимом можно считать отсутствие резервирования данных «Связки ключей» и последующей возможности их восстановления. Бэкап, в свою очередь, позволяет восстановить всю информацию, даже если у вас нет ни одного физического устройства, соотнесённого с соответствующей учётной записью iCloud: вы можете взять любой новый аппарат и ввести данные аккаунта и код безопасности «Связки ключей».
Что касается безопасности и конфиденциальности самого сервиса «Связка ключей iCloud», то, судя по официальным данным, «для хранения и передачи паролей и данных кредитных карт применяется шифрование по 256-разрядному алгоритму AES. Кроме того, используются асимметричная криптография на основе эллиптических кривых и маскировка ключей key wrapping». При этом через серверы iCloud проходят только зашифрованные данные «Связки ключей», а сами ключи шифрования, при помощи которых можно расшифровать их, создаются лишь на самом клиентском устройстве. Здесь снова повторяется знакомое утверждение, что в случае отключения восстановления «Связка ключей iСloud» будет «синхронизироваться между доверенными устройствами, но зашифрованные данные не будут храниться на сервере Apple и не смогут быть восстановлены в случае утраты всех устройств».
И всё-таки: если данные не хранятся на серверах iCloud, то как же они синхронизируются? Объяснение может быть неожиданным. Всё, что передаётся по интернету, где-то хранится, хотя бы в памяти. Возможно, дело даже не в некорректном описании, а в волшебных представлениях о технике у людей, которые читают это описание. Хорошо известны истории о том, как запуск законно купленной программы интерпретировался как копирование — ведь при загрузке создаётся копия в памяти — и затем преследовался по антипиратским законам. Очень может быть, что это тот же самый случай, вид сбоку. Чтобы никто не придрался, это описание пришлось бы писать юридическим языком с тысячей оговорок, только и всего.
И всё-таки?