Прямая передача файлов между устройствами по WebRTC
Новый сервис WebWormHole работает как портал, через который файлы передаются с компьютера на другой. Нажимаете кнопку New Wormhole — и получаете код для входа. Человек с другой стороны вводит такой же код или URL — и между вами устанавливается эфемерный туннель, по которому напрямую передаются файлы. Очень просто и эффективно. Исходный код на Github.
Для установки портала между устройствами необязательно открывать браузер. Клиент на Go запускается из командной строки и генерирует одноразовый код в консоли.
Получатель на другой стороне эфемерного тоннеля вводит одноразовый код в консоли — и получает файл.
Автор программы Сальман Альджаммаз (Salmān Aljammāz) предупреждает, что клиент находится в ранней разработке, использует экспериментальные криптографические библиотеки, поэтому может глючить и работать не во всех браузерах. Программа также не прошла аудит безопасности, так что может работать неправильно и небезопасно.
Автор позаимствовал идею и название у программы Magic Wormhole, которая тоже устанавливает пиринговое соединение и передаёт файлы между компьютерами.
Magic Wormhole
Отличие в том, что WebWormHole использует WebRTC, что позволяет пробить файрволы и NAT, а также запускать передачу из браузера.
Каждый тоннель защищается одноразовым паролем и PAKE — это специфический способ обмена ключами с проверкой подлинности пароля для установки зашифрованного соединения. При этом сам пароль не передаётся по сети ни в каком виде.
Проверка осуществляется примерно как в доказательстве с нулевым разглашением, в котором получатель может убедиться в достоверности какого-либо утверждения, не имея при этом никакой другой информации от отправителя.
SPAKE2
В WebWormHole для выработки общего ключа шифрования происходит обмен описаниями сессий с отпечатками сертификатов DTLS, которые использует WebRTC для шифрования соединений.
Передача файлов через пиринговый тоннель быстрее и безопаснее, чем по почте, FTP или другими способами. По удобству и безопасности эти способы сравниваются в таблице из презентации Magic Wormhole:
Примечание. С момента составления этой таблицы в далёком 2016 году были запущены удобные сервисы для передачи файлов типа Firefox Send (есть консольный клиент) и File.pizza
Кроме питоновского Magic Wormhole, есть и другие клиенты для установления прямых соединений по WebRTC между компьютерами:
Что касается механизма обмена ключами PAKE, то он полезен и в разных областях. Например, позволяет реализовать аутентификацию на сайте без передачи пароля на сервер.
The codes are short and human-pronounceable, using a phonetically-distinct wordlist. The receiving side offers tab-completion on the codewords, so usually only a few characters must be typed. Wormhole codes are single-use and do not need to be memorized.
Example¶
Installation¶
The easiest way to install magic-wormhole is to use a packaged version from your operating system. If there is none, or you want to participate in development, you can install from source.
MacOS / OS-X¶
Linux (Debian/Ubuntu)В¶
Magic-wormhole is available with apt in Debian 9 “stretch”, Ubuntu 17.04 “zesty”, and later versions:
Linux (Fedora)В¶
Linux (openSUSE)В¶
Linux (Snap package)В¶
Many linux distributions (including Ubuntu) can install “Snap” packages. Magic-wormhole is available through a third-party package (published by the “snapcrafters” group):
Install from Source¶
/.local/bin/wormhole ) like this:
or put it into a virtualenv, like this:
You can then run venv/bin/wormhole without first activating the virtualenv, so e.g. you could make a symlink from
On Debian/Ubuntu systems, you may need to install some support libraries first:
Copying files onto a USB stick requires physical proximity, and is uncomfortable for transferring long-term secrets because flash memory is hard to erase. Copying files with ssh/scp is fine, but requires previous arrangements and an account on the target machine, and how do you bootstrap the account? Copying files through email first requires transcribing an email address in the opposite direction, and is even worse for secrets, because email is unencrypted. Copying files through encrypted email requires bootstrapping a GPG key as well as an email address. Copying files through Dropbox is not secure against the Dropbox server and results in a large URL that must be transcribed. Using a URL shortener adds an extra step, reveals the full URL to the shortening service, and leaves a short URL that can be guessed by outsiders.
Many common use cases start with a human-mediated communication channel, such as IRC, IM, email, a phone call, or a face-to-face conversation. Some of these are basically secret, or are “secret enough” to last until the code is delivered and used. If this does not feel strong enough, users can turn on additional verification that doesn’t depend upon the secrecy of the channel.
The notion of a “magic wormhole” comes from the image of two distant wizards speaking the same enchanted phrase at the same time, and causing a mystical connection to pop into existence between them. The wizards then throw books into the wormhole and they fall out the other side. Transferring files securely should be that easy.
Design¶
The wormhole tool uses PAKE “Password-Authenticated Key Exchange”, a family of cryptographic algorithms that uses a short low-entropy password to establish a strong high-entropy shared key. This key can then be used to encrypt data. wormhole uses the SPAKE2 algorithm, due to Abdalla and Pointcheval1.
PAKE effectively trades off interaction against offline attacks. The only way for a network attacker to learn the shared key is to perform a man-in-the-middle attack during the initial connection attempt, and to correctly guess the code being used by both sides. Their chance of doing this is inversely proportional to the entropy of the wormhole code. The default is to use a 16-bit code (use –code-length= to change this), so for each use of the tool, an attacker gets a 1-in-65536 chance of success. As such, users can expect to see many error messages before the attacker has a reasonable chance of success.
Timing¶
The program does not have any built-in timeouts, however it is expected that both clients will be run within an hour or so of each other. This makes the tool most useful for people who are having a real-time conversation already, and want to graduate to a secure connection. Both clients must be left running until the transfer has finished.
Relays¶
The protocol includes provisions to deliver notices and error messages to clients: if either relay must be shut down, these channels will be used to provide information about alternatives.
CLI tool¶
Both commands accept additional arguments to influence their behavior:
Library¶
The wormhole module makes it possible for other applications to use these code-protected channels. This includes Twisted support, and (in the future) will include blocking/synchronous support too. See docs/api.md for details.
Development¶
To set up Magic Wormhole for development, you will first need to install virtualenv.
Once you’ve done that, git clone the repo, cd into the root of the repository, and run:
Now your virtualenv has been activated. You’ll want to re-run source venv/bin/activate for every new terminal session you open.
To install Magic Wormhole and its development dependencies into your virtualenv, run:
While the virtualenv is active, running wormhole will get you the development version.
Running Tests¶
Within your virtualenv, the command-line program trial will run the test suite:
This tests the entire wormhole package. If you want to run only the tests for a specific module, or even just a specific test, you can specify it instead via Python’s standard dotted import notation, e.g.:
Developers can also just clone the source tree and run tox to run the unit tests on all supported (and installed) versions of python: 2.7, 3.4, 3.5, and 3.6.
Troubleshooting¶
Every so often, you might get a traceback with the following kind of error:
Other¶
License, Compatibility¶
This library is released under the MIT license, see LICENSE for details.
Magic Wormhole – простой и безопасный способ отправки файлов из командной строки Linux
Magic Wormhole – это простая и бесплатная утилита, которая помогает пользователям отправлять файлы с компьютера на другой компьютер в любой точке мира.
Это быстрый и безопасный способ отправки файлов пользователям Linux и MacOS.
Даже новички могут легко отправлять файлы, так как не требуются какие-либо технические знания и предлагается очень простой синтаксис.
Если вы хотите отправить файл через Интернет кому-либо, либо вам нужно отправить электронное письмо или загрузить его в любой облачный сервис.
Если вы им не доверяете и хотите отправить файл напрямую кому-то без посредников, что делать?
Вы просто открываете терминал и вводите команду wormhole, затем отправляете команду и, наконец, добавляете файл, который вы хотите отправить.
Он создает человеческий читаемый код, который должен быть получен при получении файла в конечной точке.
Мы можем отправлять текст, файлы и папки через wormhole.
Две конечные точки идентифицируются с использованием идентичных «wormhole codes»: в общем, отправляющая машина генерирует и отображает код, который затем должен быть введен в принимающий компьютер.
Он использует SPAKE2 – это протокол обмена ключами аутентификации с паролем (PAKE), который позволяет сторонам использовать один и тот же пароль для согласования и аутентификации общего ключа или ключа сеанса («обмен ключами»). Это криптографический алгоритм, который использует короткий пароль с низкой энтропией, чтобы установить общий ключ с высокой энтропией.
Программа не имеет встроенных тайм-аутов, однако ожидается, что оба клиента будут работать через час.
Оба пользователя получают уведомление в терминале во время и после завершения передачи файлов.
Как установить Wormhole в Linux
Его можно установить через пакет pip во все основные дистрибутивы Linux.
Чтобы установить Wormhole, убедитесь, что в вашей системе есть пакеты python и python-pip как предварительные условия.
pip – это модуль python в комплекте с setuptools, это один из рекомендуемых инструментов для установки пакетов Python в Linux.
Для Debian / Ubuntu используйте команду apt-command или apt для установки pip.
Для RHEL / CentOS используйте команду YUM для установки pip.
Для Fedora используйте команду dnf для установки pip.
Для Arch Linux используйте команду pacman для установки pip.
Для openSUSE используйте команду Zypper для установки pip.
Для установки Wormhole запустите следующую команду pip.
Кроме того, вы можете установить пакет Wormhole из официального дистрибутива дистрибутива в системы Debian, Ubuntu, LinuxMint и Arch.
Для систем Debian 9 (Stretch) и Ubuntu 17.04+.
Системы на основе Arch Linux, позволяют помощникам AUR либо yaourt, либо пакету установить Wormhole.
Как использовать Wormhole
Просто выполните следующую команду для отправки файла.
Чтобы получить файл, просто запустите следующую команду и введите код.
После успешного получения оба получат подтверждение.
Wormhole is a Fast, Secure Way to Send Files to Other Users Through the CLI
Next time you a file you want to send to a friend but don’t fancy the hassle of using Dropbox, try Wormhole.
It’s a fast, free and secure way to send files to Linux and macOS users.
For such a small python app it is truly cosmic: you just open a wormhole on your desktop in a Terminal and send a file through it. Then someone on another computer, anywhere else in the world, can open a wormhole on their end, punch in a code, and receive it.
Naturally you wouldn’t be sending files to yourself, but someone else
What’s especially neat (I don’t know if you can see it in the screenshot) is that the Wormhole codes you share actually make some sort sense. Yup, there’s no indecipherable car crash of ASCII characters here but rather short, human-pronounceable, simple-to-enter codes based on a string of numbers and some legible words.
Wormhole codes are single-use only, so once it’s used successfully (or not) it’s done with.
You can send text, files and even folders (they will be zipped up) using Wormhole.
How Secure Is It?
That’s a good question, and one that the Wormhole Github page answers both admirably and at length.
“The wormhole tool uses PAKE “Password-Authenticated Key Exchange” [that] can then be used to encrypt data. wormhole uses the SPAKE2 algorithm.”
And to send and receive the file”
“The wormhole library requires a “Rendezvous Server”: a simple WebSocket-based relay that delivers messages from one client to another. This allows the wormhole codes to omit IP addresses and port numbers. The URL of a public server is baked into the library for use as a default, and will be freely available until volume or abuse makes it infeasible to support.
The file-transfer commands use a “Transit Relay”, which is another simple server that glues together two inbound TCP connections and transfers data on each to the other. The wormhole send file mode shares the IP addresses of each client with the other (inside the encrypted message), and both clients first attempt to connect directly. If this fails, they fall back to using the transit relay.”
Still don’t understand? Perhaps this talk from PyCon 2016 will help clarify what’s going on:
Install Wormhole on Ubuntu
You can install Wormhole from the Ubuntu Software app on Ubuntu 16.04 LTS and above. Just search out ‘wormhole’ or click this button:
If you’re using a different Snap supported Linux distribution you can install the app from the command line like so:
After a quick 12MB download you’ll be ready-set to fling files, folders and whatever else you fancy through the wormhole, like you’re a less cheesy John Crichton!
To send a file run:
Pass on the generated code to you intended recipient.
Then they, to receive the file, will run:
You both get notification(s) in your terminal during and after the file transfer is complete, or if there are any errors.
For more information on how to use Wormhole to send files you can check out the official project page on Github.
Thanks Popey
Home » Apps » Wormhole is a Fast, Secure Way to Send Files to Other Users Through the CLI
The codes are short and human-pronounceable, using a phonetically-distinct wordlist. The receiving side offers tab-completion on the codewords, so usually only a few characters must be typed. Wormhole codes are single-use and do not need to be memorized.
For complete documentation, please see https://magic-wormhole.readthedocs.io or the docs/ subdirectory.
This program uses two servers, whose source code is kept in separate repositories: the mailbox server, and the transit relay.
Magic-Wormhole is released under the MIT license, see the LICENSE file for details.
This library is compatible with Python 3.6 and higher (tested against 3.6, 3.7, 3.8, and 3.9). It also still works with Python 2.7 and 3.5, although these are no longer supported by upstream libraries like Cryptography, so it may stop working at any time.
Magic Wormhole packages are included in many operating systems.
To install it without an OS package, follow the Installation docs.