Отправка сообщений через iMessage — популярный способ связи между устройствами iOS и компьютерами Mac. Десятки миллионов сообщений ежедневно обрабатываются серверами Apple, и по мере роста продаж устройств Apple растет и популярность iMessage. Но задумывались ли вы когда-нибудь о том, как ваши сообщения защищены от потенциальных злоумышленников?
Apple недавно выпустила документы описание безопасности iOS. В нем хорошо описаны механизмы безопасности, используемые в iOS — система, шифрование и защита данных, безопасность приложений, сетевая связь, интернет-сервисы и безопасность устройств. Если вы немного разбираетесь в безопасности и не имеете проблем с английским, iMessage вы можете найти на странице номер 20. Если нет, то я постараюсь максимально понятно описать принцип безопасности iMessage.
В основе отправки сообщений лежит их шифрование. Для обывателя это часто связано с процедурой, когда вы шифруете сообщение ключом, а получатель этим ключом его расшифровывает. Такой ключ называется симметричным. Критическим моментом в этом процессе является передача ключа получателю. Если злоумышленник заполучит его, он сможет просто расшифровать ваши сообщения и выдать себя за получателя. Для упрощения представьте себе ящик с замком, к которому подходит только один ключ, и с помощью этого ключа можно вставлять и вынимать содержимое ящика.
К счастью, существует асимметричная криптография с использованием двух ключей — открытого и закрытого. Принцип заключается в том, что каждый может знать ваш открытый ключ, но, конечно, только вы знаете свой закрытый ключ. Если кто-то захочет отправить вам сообщение, он зашифрует его вашим открытым ключом. Зашифрованное сообщение можно будет расшифровать только с помощью вашего закрытого ключа. Если еще раз представить почтовый ящик в упрощенном виде, то на этот раз у него будет два замка. С помощью открытого ключа любой может разблокировать его для вставки контента, но выбрать его можете только вы с вашим закрытым ключом. Для верности добавлю, что сообщение, зашифрованное открытым ключом, невозможно расшифровать этим открытым ключом.
Как работает безопасность в iMessage:
- Когда iMessage активирован, на устройстве генерируются две пары ключей — 1280b RSA для шифрования данных и 256b ECDSA для проверки того, что данные не были подделаны в процессе.
- Два открытых ключа отправляются в службу каталогов Apple (IDS). Разумеется, два закрытых ключа остаются только на устройстве.
- В IDS открытые ключи связаны с вашим номером телефона, адресом электронной почты и адресом устройства в службе push-уведомлений Apple (APN).
- Если кто-то захочет отправить вам сообщение, его устройство узнает ваш открытый ключ (или несколько открытых ключей при использовании iMessage на нескольких устройствах) и адреса APN ваших устройств в IDS.
- Он шифрует сообщение с помощью 128b AES и подписывает его своим секретным ключом. Если сообщение должно быть доставлено вам на несколько устройств, оно хранится и шифруется на серверах Apple отдельно для каждого из них.
- Некоторые данные, например временные метки, вообще не шифруются.
- Все общение осуществляется через TLS.
- Более длинные сообщения и вложения шифруются случайным ключом в iCloud. Каждый такой объект имеет свой URI (адрес чего-либо на сервере).
- Как только сообщение будет доставлено на все ваши устройства, оно будет удалено. Если он не доставлен хотя бы на одно из ваших устройств, он остается на серверах на 7 дней, а затем удаляется.
Это описание может показаться вам сложным, но если вы посмотрите на картинку выше, то наверняка поймете принцип. Преимущество такой системы безопасности в том, что атаковать ее снаружи можно только грубой силой. Ну, пока, потому что злоумышленники становятся умнее.
Потенциальная угроза исходит от самой Apple. Это связано с тем, что он управляет всей инфраструктурой ключей, поэтому теоретически он может присвоить вашей учетной записи другое устройство (еще одну пару открытого и закрытого ключей), например, по решению суда, на котором входящие сообщения могут быть расшифрованы. Однако здесь Apple заявила, что не делает и не будет делать ничего подобного.
И перед кем это зашифровано? Будет ли обычного SSL недостаточно, сообщение отправляется в Apple, а Apple затем снова отправляет сообщение через SSL? У Apple в любом случае есть возможность подслушивать сообщения, так зачем же весь этот шум вокруг нее? В любом случае речь идет всего лишь о том, чтобы третья сторона не могла подслушать сообщение, и для этого достаточно SSL.
Если мы считаем, что Apple не отправляет приватные ключи, то и он их читать не будет. И вообще, SSL — это всего лишь реализация асимметричного шифрования при соединении клиент-сервер.
Таким образом, мы отправляем сообщение в 2-кратном зашифрованном виде через SSL, и Apple может его прочитать, или в 2-кратном незашифрованном виде, при этом мы заранее запрашиваем открытые ключи и используем тот же шифр, что и в случае с SSL, и даже Apple теоретически не будет их читать.
И почему данные зашифрованы даже в Apple? Потому что какой-то сотрудник обязательно будет иметь к ним доступ. Ему изменила девушка, поэтому он начал скачивать ее сообщения — они просачиваются, и у Apple проблемы.
Забавный крик..