it-консалтинг и аутсорсинг
что мы делаем контакты блог

Как работает безопасность iMessage

Федор Костылев 21.06.2016

iMessage icon

Миллионы людей используют iMessage ежедневно, но немногие догадываются, что происходит за кулисами и через что проходит сообщение при отправке.

В этой статье мы рассмотрим один, ключевой, элемент безопасности iMessage – работу end-to-end шифрования. Если вы хотите погрузиться с головой в детали – вам будет интересна официальная 64-страничная документация iOS Security.

Как работает отправка классических SMS-сообщений – очевидно. Сообщение покидает телефон, отправляется к оператору и оттуда попадает получателю. С iMessage все сложнее. Особенности процесса таковы, что когда вы добавляете новое iMessage-устройство и получаете об этом оповещение – оно не приходит от Apple. Ваши iPhone, iPad и Mac узнают о новоприбывшем сами.

Ассиметричное шифрование и односторонние функции

Rubeus Hagrid
Хагрид, хранитель приватных ключей

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

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

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

Как это работает

iMessage schematic

Теперь, когда мы знаем, зачем нужны пары ключей, мы можем взглянуть на работу iMessage. Итак, вот упрощенный процесс отправки сообщений:

  • Каждый раз, когда к вашему iCloud-аккаунту добавляется устройство, оно создает собственную пару ключей. Приватный остается на месте, а публичный отправляется на сервер Apple.
  • Когда вы отправляете кому-либо сообщение, iMessage использует номер телефона или адрес получателя, чтобы найти публичные ключи всех его устройств на серверах Apple.
  • Получив эти ключи, копии сообщения шифруются отдельно для каждого устройства получателя и отправляются на сервер iMessage.
  • Наконец, служба Apple Push Notifications (APN) отправляет эти сообщения на соответствующие устройства.
  • Отправленные вами сообщения таким же образом шифруются и распространяются между вашими устройствами.

Мы многое упростили, но самое главное в следующем:

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

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

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

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

Вот так и работает один из самых популярных мессенджеров на планете. Согласно Electronic Frontier Foundation, это один из наиболее безопасных сервисов сообщений. Это не значит, что iMessage идеален, но он внушительно защищен системами, невидимыми для рядового пользователя, и активно используется на около миллиарде устройств.