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



    Новый сервис 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, то он полезен и в разных областях. Например, позволяет реализовать аутентификацию на сайте без передачи пароля на сервер.
    GlobalSign
    Компания

    Комментарии 5

      +1
      Позволяет пробивать NAT это сильное заявление. Только вот реальности не соответвует.
      Телефон — телефон на любых типичных операторах и тарифах не сработает.
      Телефон — стационарный домашний как правило тоже не сработает.
        0
        Пробовал написать свой коммуникатор на WebRTC, действительно, мобильники не соединяются без TURN-сервера, а есть нужен TURN — то это уже никакой не P2P. Так и забросил проект в недоделанном виде.
        0
        Уже года три как пользуюсь instant.io
          0
          Пользуюсь justbeamit.com.
          Прямая передача файлов. Создается одноразовая ссылка.
            0

            Ещё я начинал nodertc, но webrtc оказалось настолько сложным, что у меня просто нет времени. Думаю продолжить на связке webrtc over quic, чтоб не доводить до ума dtls и sctp.

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

            Самое читаемое