После скандала с тотальной прослушкой пользователей в рамках программы PRISM крупнейшие интернет-компании вынуждены оправдываться. Большинство ограничилось стандартными заявлениями, но компания Apple пошла дальше. Она заявила, что вообще не имеет возможности читать текстовые сообщения iMessage и FaceTime, потому что они «защищены end-to-end криптографией, так что никто кроме получателя и отправителя не может увидеть или прочитать их» (см. официальное заявление Apple’s Commitment to Customer Privacy).
Специалист по информационной безопасности Мэтью Грин (Matthew Green) решил разобраться, потому что все это выглядит слишком хорошо, чтобы быть правдой.
Он напоминает, что для сообщений iMessage действует резервное копирование в iCloud. Это бесплатный бэкап для сервисов Apple, который активирован у многих пользователей.
Если предположить, что Apple не врет и действительно не имеет возможности читать сообщения, которые хранятся в резервном хранилище iCloud, то это возможно только в двух случаях:
- Бэкапы iMessage зашифрованы пользовательским ключом, который привязан к устройству и не покидает его.
- Бэкапы iMessage зашифрованы паролем пользователя.
К сожалению, ни один из этих вариантов не подтверждается в случае с Apple. Чтобы убедиться в этом, достаточно осуществить простой эксперимент: после потери устройства сменить пароль через сервис iForgot (для этого нужно ответить на несколько вопросов и предоставить резервный email), затем пойти в магазин и купить новый телефон.
Если вы сможете восстановить старые сообщения iMessage из бэкапа iCloud, значит, то же самое может сделать и компания Apple, и АНБ и кто угодно другой. Так вот, Мэтью Грин успешно проделал этот простой эксперимент в минувшие выходные.
Никто не говорит, что Apple не используют криптографию. Но явно копия «секретного ключа» хранится еще где-то на всякий случай, ну или сообщения в iCloud действительно хранятся в открытом виде.
Даже если пользователь не хранит резервную копию сообщений в облаке, шифрование P2P-коммуникаций в Apple реализовано довольно примитивно и тоже не защищено от прослушки. Для шифрования канала с конкретным пользователем нам нужен публичный ключ этого пользователя, который устройство получает из открытой директории. Но к каждому аккаунту iMessage можно привязывать любое количество открытых ключей (для каждого устройства), так что потенциальный злоумышленник со стороны Apple может скомпрометировать защищенное соединение, сгенерировав еще один открытый ключ. На практике у пользователя нет возможности проверить аутентичность такого ключа, то есть он должен фундаментально доверять компании Apple, что она действительно соединяет его с верным адресатом.
В любом случае, даже без проведения такой атаки у Apple все равно остается информация обо всех контактах и разговорах, которые ведет пользователь: это ценные метаданные, которые сами по себе интересны для разведчиков.