Всем знаком тот шипящий и скрипящий звук, которым обменивались модемы dial-up во время коннекта. Сегодня эти устройства до сих пор используют в удаленных регионах планеты, однако идея подключения с помощью звука находит разве что нишевые применения. Одно из них — установка соединения по WebRTC.
![Фотография: Steve Johnson. Источник: Unsplash.com Фотография: Steve Johnson. Источник: Unsplash.com](https://habrastorage.org/getpro/habr/upload_files/eba/932/8b5/eba9328b518b53bfb999e901a148f9e7.jpg)
В чем идея
Технология WebRTC позволяет двум браузерам на разных устройствах обмениваться данными без дополнительных плагинов или приложений. Чтобы установить соединение, девайсы транслируют друг другу контактную информацию — IP-адреса, порты и идентификаторы сессии. Однако в спецификации WebRTC нет конкретных требований к протоколу сигнализации, и провести подключение можно любым способом. Один энтузиаст решил использовать для этих целей звук и разработал утилиту для передачи данных в формате p2p — wave-share.
В данном случае общем случае механизм обмена IP-адресами проходит в три этапа: а) передатчик кодирует данные о сессии в звуковую последовательность и транслирует её через динамики б) приемник, находящийся в пределах слышимости, принимает сигнал и посылает ответ в аналогичном формате в) инициатор раскодирует полученную информацию и устанавливает соединение.
Для конвертации данных в аудио автор wave-share использовал частотную манипуляцию (FSK). В этом случае частота несущего сигнала меняется в зависимости от символов передаваемой последовательности. Так, утилита дробит информацию на четырехбитные фрагменты, каждому из которых соответствует звук определённой высоты (в диапазоне 4,5 кГц). Приемник и передатчик обмениваются друг с другом блоками по три байта.
Работу утилиты можно оценить на практике, так как автор подготовил демо. Однако тестовое приложение может не работать в некоторых браузерах. Что интересно, автор также оформил свой алгоритм для кодирования информации в библиотеку ggwave и передал её в open source.
Какие есть нюансы
Акустическая концепция проекта накладывает на него серьезные ограничения, и для передачи данных два устройства должны быть рядом. Кроме того, автор пока не реализовал методы коррекции ошибок, поэтому сигнализацию лучше проводить в относительно тихом помещении. В то же время девайсы должны быть подключены к одной локальной сети, так как wave-share не поддерживает работу с NAT.
К утилите проявили интерес резиденты Hacker News. В тематическом треде, где развернулась дискуссия, один из них отметил потенциальные проблемы с информационной безопасностью. Злоумышленники могут подменить звуковой сигнал и перехватить данные, если проводить сигнализацию в публичном месте. Разумеется, в контексте нишевой утилиты для передачи файлов в домашних условиях беспокоиться о таких атаках не имеет смысла. Справедливости ради также стоит заметить, что wave-share лишь концепт и пока не готов к внедрению в серьезные проекты.
Если автор (или open source сообщество) решит развивать систему дальше, возможно, он уделит отдельное внимание вопросам информационной безопасности. Уже есть механизмы, способные противостоять перехвату звуковых данных — например, коды акустической целостности (Acoustic Integrity Codes, AIC), обнаруживающие сторонние подключения.
Подобные проекты
Передавать данные между рядом стоящими устройствами также позволяет веб-приложение Ozzillate, которое является полным аналогом wave-share. Пока сложно говорить об используемых разработчиками алгоритмах, но они планируют передать все исходники в open source уже в ближайшее время. Но, разумеется, разработчики wave-share и ozzillate далеко не первые в этой области.
История помнит проекты, в которых аудиосигналы использовали не только для установления соединения, но и для непосредственной передачи данных. Еще в 1980 годах диджеи из Бристоля кодировали и транслировали по радио изображения и простые видеоигры. Они использовали специальные шумы и кассетный формат BASICODE, основанный на языке программирования BASIC.
![Фотография: Murat Onder. Источник: Unsplash.com Фотография: Murat Onder. Источник: Unsplash.com](https://habrastorage.org/getpro/habr/upload_files/9b0/eb6/c67/9b0eb6c67eac407cb9e7431c665b30e0.jpg)
С чем-то подобным в 2014 году экспериментировали в Google. Корпорация приобрела технологию SlickLogin — это аудиальный метод идентификации пользователя. Перед входом в учетную запись компьютер воспроизводил уникальный сигнал, приложение на телефоне его считывало и предоставляло доступ к аккаунту. Однако дальнейшая судьба проекта неизвестна — вероятно, он был свернут.
Но можно с уверенностью сказать, что научные изыскания в этой области продолжатся. Одним из наиболее перспективных применений технологии передачи данных с помощью звука эксперты видят в новых протоколах для устройств интернета вещей. Как ожидается, они позволят умным гаджетам общаться эффективнее.
Что почитать по теме в нашем «Мире Hi-Fi»: