4 May

Прямая передача файлов между устройствами по WebRTC

GlobalSign corporate blogInformation SecurityCryptographyOpen sourceSoftware


Новый сервис WebWormHole работает как портал, через который файлы передаются с компьютера на другой. Нажимаете кнопку New Wormhole — и получаете код для входа. Человек с другой стороны вводит такой же код или URL — и между вами устанавливается эфемерный туннель, по которому напрямую передаются файлы. Очень просто и эффективно. Исходный код на Github.

Для установки портала между устройствами необязательно открывать браузер. Клиент на Go запускается из командной строки и генерирует одноразовый код в консоли.

Установка:

$ go get -u webwormhole.io/cmd/ww

Передача:

$ cat hello.txt
hello, world
$ ww send hello.txt
8-enlist-decadence

Получатель на другой стороне эфемерного тоннеля вводит одноразовый код в консоли — и получает файл.

$ ww receive 8-enlist-decadence
$ cat hello.txt
hello, world

Автор программы Сальман Альджаммаз (Salmān Aljammāz) предупреждает, что клиент находится в ранней разработке, использует экспериментальные криптографические библиотеки, поэтому может глючить и работать не во всех браузерах. Программа также не прошла аудит безопасности, так что может работать неправильно и небезопасно.

Автор позаимствовал идею и название у программы Magic Wormhole, которая тоже устанавливает пиринговое соединение и передаёт файлы между компьютерами.


Magic Wormhole

Отличие в том, что WebWormHole использует WebRTC, что позволяет пробить файрволы и NAT, а также запускать передачу из браузера.

Каждый тоннель защищается одноразовым паролем и PAKE — это специфический способ обмена ключами с проверкой подлинности пароля для установки зашифрованного соединения. При этом сам пароль не передаётся по сети ни в каком виде.

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


SPAKE2

В WebWormHole для выработки общего ключа шифрования происходит обмен описаниями сессий с отпечатками сертификатов DTLS, которые использует WebRTC для шифрования соединений.

Передача файлов через пиринговый тоннель быстрее и безопаснее, чем по почте, FTP или другими способами. По удобству и безопасности эти способы сравниваются в таблице из презентации Magic Wormhole:

Ввод отправителем Ввод получателем Физическая близость Прослушка
Электронная почта ~30 симв. провайдеры, центры сертификации, интернет
Загрузка на FTP/HTTP ~60 симв. сервер, провайдеры, центры сертификации, интернет
Dropbox ~60 симв. Dropbox, центры сертификации
+сервис сокращения ссылок ~20 симв. сервис сокращения ссылок, случайный перебор, Dropbox, центры сертификации
USB-накопитель Х
SSH/scp ~740 симв. публичный ключ никто
magic wormhole ~20 симв. никто
Примечание. С момента составления этой таблицы в далёком 2016 году были запущены удобные сервисы для передачи файлов типа Firefox Send (есть консольный клиент) и File.pizza

Кроме питоновского Magic Wormhole, есть и другие клиенты для установления прямых соединений по WebRTC между компьютерами:


В качестве бонуса:

  • rtc-ssh: WebRTC-обёртка для SSH-соединений

По каналу WebRTC можно установить видеосвязь между устройствами, передавать голос, файлы и т. д.

Что касается механизма обмена ключами PAKE, то он полезен и в разных областях. Например, позволяет реализовать аутентификацию на сайте без передачи пароля на сервер.
Tags:GlobalSignпередача файловWebRTCэкспериментыPAKEобмен ключамиMagic WormholeWebWormHole
Hubs: GlobalSign corporate blog Information Security Cryptography Open source Software
+19
7.4k 94
Comments 5