Новое приложение Beeper Mini позволяет пользователям Android отправлять тексты, которые на iPhone отображаются в виде синих пузырьков. Мы поговорили с 16-летним школьником, который написал код, чтобы сделать это возможным.

Эрик Мигиковски уже давно является сторонником открытого программного обеспечения. Этот энергичный канадский системный инженер наиболее известен тем, что создал и очень успешно провел краудфандинг культовых смарт-часов Pebble. Это было еще до появления Apple Watch, но Мигиковский с самого начала четко обозначил одну особенность: практически любой мог создать приложение для смарт-часов Pebble благодаря набору средств разработки программного обеспечения с открытым исходным кодом. В 2015 году Pebble потерпела сокрушительное поражение от Apple и в 2016 году была приобретена компанией Fitbit, но некоторое время группа разработчиков, называющая себя Rebble, поддерживала программное обеспечение часов в виде проекта с открытым исходным кодом.

Несколько лет назад, когда Мигиковский переживал пандемию и обдумывал новые идеи, работая партнером в Y Combinator, он был одержим тем, что назвал "отсутствием инноваций в чатах". Приложения для чата становились все более изолированными; отправлял ли кто-то сообщение с синим пузырьком (iPhone) или с зеленым пузырьком (Android), стало собственным символом статуса и олицетворением подхода Apple к программному обеспечению, основанному на "закрытом саду". Мигиковский считал, что потребителям нужен мост между ними. Как Trillian, сказал он, из начала 2000-х, но для мобильной эры.

Вот Beeper, новейшее приложение от Мигиковского и соучредителя Брэда Мюррея. Если пользователь телефона на базе Android возьмет за привычку открывать приложение Beeper и использовать его вместо стандартного приложения для обмена сообщениями, Beeper устранит разрыв между "синим пузырем" и "зеленым пузырем". Используя технический метод, который, по словам Мигиковского, является безопасным и поддерживает сквозное шифрование, приложение Beeper Mini, если оно доступно на телефоне Android, создает чат, который превращает зеленые пузырьки в синие на iPhone партнера по переписке. Это также означает, что даже в групповых сообщениях, где одни люди пользуются iPhone, а другие - Android, Beeper Mini поддерживает все функции насыщенного текста - возвраты, фотографии, видео, - которые обычно возникают между двумя пользователями одной и той же системы обмена сообщениями.

Сегодня распространяется ограниченная версия Beeper Mini для телефонов Android. Ее стоимость составляет $2 в месяц.

По словам Мигиковского, в перспективе Beeper будет поддерживать обмен сообщениями с помощью других протоколов и приложений, таких как RCS, WhatsApp или Signal. Текущая "мини-версия" призвана показать, что Beeper может делать между iOS и Android, и продемонстрировать сообществу разработчиков с открытым исходным кодом, как команде Beeper удалось собрать все это вместе. (Beeper выкладывает всю свою методику на GitHub и приглашает исследователей безопасности разобрать ее на части.)

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

В компании Beeper, которая привлекла $16 млн финансирования от Y Combinator и Automattic, работают 25 инженеров, распределенных по США. Однако всего несколько месяцев назад команда Beeper встретилась с одним кодером, который в корне изменил принцип работы приложения, что Мигиковский называет "прорывом".

Code Push

Первоначальные планы Мигиковского по созданию Beeper в значительной степени зависели от внешних серверов Mac mini. За последние три года стартап приобрел несколько сотен крошечных настольных ПК и использовал их в качестве ретранслятора между инфраструктурой обмена сообщениями Beeper и инфраструктурой обмена сообщениями Apple.

"Мы сделали это потому, что это был единственный сквозной способ отправки и получения сообщений iMessage между телефонами Android и iPhone", - говорит Мигиковский.

Это было дорого. В какой-то момент Beeper запускала бета-версию своего приложения на более чем 700 серверах Mac mini. Кроме того, это было не слишком безопасно и не очень конфиденциально, - продолжает Мигиковский, - потому что у нас должен был быть физический Mac, который выступал бы в качестве точки ретрансляции. Мы бы предпочли, чтобы все работало в самом клиентском приложении Beeper. Но для этого клиенту Beeper пришлось бы научиться общаться с протоколом iMessage."

В начале августа Мигиковский получил сообщение в Discord от пользователя JJTech0130. JJTech0139, которого зовут Джеймс Гилл, сообщил, что только что выпустил проект по кодированию под названием Pypush - смесь "Python", языка кодирования, и "push-уведомлений". Гилл заявил, что он "переделал iMessage" и подумал, что Мигиковскому это может быть интересно. Менее чем через 10 минут Мигиковский ответил: "Вот дерьмо! Это работает?"

"Да, работает", - ответил Гилл, добавив эмодзи с оттопыренным языком. Гилл работал над проектом Pypush в перерывах между занятиями робототехникой в средней школе и подработками в McDonald's в Вифлееме, штат Пенсильвания. Ему 16 лет.

Раньше в этом году Гилл был заинтригован тем, как работает служба push-уведомлений Apple и как эти двунаправленные уведомления могут дать некоторые подсказки для взлома Messages.

Для начала ему нужно было лучше понять, как работает Apple ID, поэтому он проанализировал, как Apple Music работает на компьютере с Windows. Он обратил внимание на трафик и на то, как устройство, не принадлежащее Apple, регистрируется на серверах Apple. Затем он отметил, как компьютер под управлением macOS регистрируется в iMessage, и проверил этот трафик. Затем он воспроизвел все это на Python.

Он начал собирать доказательство концепции, в которой рассматривались различные передачи данных между Apple ID, службой push-уведомлений и технологиями обмена сообщениями.

"Теоретически iMessage использует открытые ключи шифрования, потому что именно так работает сквозное шифрование", - говорит Гилл. (Гилл прав, поскольку асимметричное шифрование или криптография с открытым ключом основывается на паре открытых и закрытых ключей; один используется для шифрования сообщения, а другой - для его расшифровки). "Pypush фактически выяснил, как мы можем опубликовать эти ключи на сервере ключей Apple и как вы можете получить ключи с сервера ключей Apple", - говорит Гилл.

"Его доказательство концепции демонстрирует, что на любом компьютере с Python вы можете войти в iMessage, отправлять и получать сообщения", - говорит Мигиковский. Он был настолько впечатлен Гиллом, что предложил ему контракт на неполный рабочий день в Beeper. Мать Гилла, Эрин Гилл, говорит, что они с мужем были слегка обеспокоены способностью Гилла распоряжаться своим временем, когда он учился в средней школе, но он достаточно хорошо справлялся со своей подработкой в "Макдоналдсе", и они сказали ему "дерзай". Его отец - компьютерный инженер, и он помог ему с деталями контракта. "Я художник, и я почти ничего не понимала из того, что он мне говорил, кроме того, что он был в восторге от этого", - говорит Эрин Гилл.

Мигиковский и команда быстро взяли концепцию Гилла, переписали ее и добавили новые функции: поддержку обмена фото и видео, динамику группового чата и даже статус набора текста при подготовке сообщения. За последние три месяца команда объединила все эти функции в Beeper. Оригинальное приложение компании, Beeper Cloud, по-прежнему использует серверы Mac mini, но новое Beeper Mini работает полностью в клиенте приложения.

Цветные войны

Мигиковский настаивает, что не спешит с выпуском BeeperMini только потому, что другие новички недавно пытались взломать Apple Messages, или потому, что Apple недавно согласилась на новый стандарт обмена сообщениями, поддерживаемый Google, который может сделать войны между синими и зелеными пузырями менее острыми.

"Мы планировали запустить его за две недели до того, как Nothing попробовала это сделать, но решили повременить", - говорит Мигиковский.

Он имеет в виду производителя Android-телефонов Nothing, который в прошлом месяце заявил, что один из его телефонов, Nothing 2, будет включать чат-приложение на базе сервиса под названием Sunbird, поддерживающего Apple Messaging. (Apple ясно дала понять, что считает Apple Messaging на телефонах Android плохим решением, которое в конечном итоге ослабит стратегию Apple по блокировке). Странно, но приложение требовало от пользователей передавать свои Apple ID и пароли, что побудило бывшего редактора TechCrunch Мэтью Панзарино написать в Твиттере: "Мне плевать на преимущества, но давать третьей стороне свой пароль от Apple ID - глупо. Не делайте этого."

Вскоре после того, как Nothing сделала это заявление, технологи назвали чат-приложение "крайне небезопасным": учетные данные отправляются по HTTP в открытом виде и не поддерживают сквозное шифрование. Спустя 24 часа приложение Sunbird было "поставлено на паузу" в Google Play Store.

Как напоминание о том, что Кремниевая долина - это одновременно глобальный центр технологий и изолированное сообщество, человек, который первым назвал приложение Nothing небезопасным, является основателем Texts.com, который принадлежит Automattic (создателю WordPress), которая является инвестором... Beeper. Beeper утверждает, что укрепила собственную безопасность, и что Beeper Mini совсем не похож на ... Nothing.

По словам Мигиковского и Гилла, Beeper Mini полностью зашифрован от конца до конца. Ни Beeper, ни Apple не видят ваших сообщений. Он подключается непосредственно к серверам Apple и не использует систему ретрансляции. Ключи шифрования никогда не покидают устройство пользователя.

При первой установке приложение запрашивает доступ к списку контактов пользователя и просит разрешения на отправку SMS, но не требует от пользователя сообщать свой Apple ID. Пользователь может отказаться от предоставления своего Apple ID, что позволит отправлять и получать сообщения с его адреса электронной почты, а также передавать сообщения на устройства Apple, такие как iPad и Mac. Но приложение по-прежнему работает в режиме "телефон-телефон", если вы не сообщаете свой Apple ID.

Мигиковский не скрывает, что Beeper Mini повышает безопасность и конфиденциальность пользователей iPhone. Ведь сейчас, когда пользователь iPhone отправляет сообщение другу, который работает на Android, оно отправляется в виде незашифрованного SMS. Все изменится, когда Apple добавит поддержку зашифрованных сообщений RCS в следующем году, но до тех пор Beeper позиционируется как более безопасная альтернатива текущему стандарту SMS для iPhone и Android.

Конечно, большой вопрос в том, как Apple отреагирует на запуск Beeper Mini. Мигиковский, похоже, не беспокоится, когда его спрашивают об этом семью разными способами до воскресенья. Он отмечает, что обратный инжиниринг с целью обеспечения совместимости защищен законом об авторском праве в цифровую эпоху.

Кроме того, по его словам, все основные части программного обеспечения, которое Beeper создала для взаимодействия с другими чат-приложениями, доступны на странице компании на GitHub. Любой может с ними ознакомиться. Даже Apple. В этом и заключается прелесть открытого исходного кода, говорит он.