Устройство системы

Как работает подключение по ID

Постоянный ID нужен, чтобы стороны нашли друг друга без настройки роутера и без знания IP-адреса.

Схема подключения по ID Владелец и клиент по отдельности связываются с хабом: владелец сообщает свой адрес, клиент спрашивает его по ID. Затем клиент и владелец соединяются напрямую по TLS 1.3. Если прямой путь невозможен, тот же шифрованный поток идёт через хаб, который пересылает только шифртекст. Хабhub.usbshare.ruВладелецID 123-456-789Клиентвводит ID12344
  1. 1. Владелец сообщает хабу, что он в сети, и свои адреса.
  2. 2. Клиент спрашивает хаб, где владелец с этим ID.
  3. 3. Клиент соединяется с владельцем напрямую: TLS 1.3, ключ сверяется по отпечатку.
  4. 4. Если напрямую не вышло, тот же зашифрованный поток идёт через хаб. Хаб пересылает только шифртекст.

Что такое ID

Это девять цифр вида 123-456-789, которые хаб выдаёт владельцу при первой регистрации. ID привязан к ключу владельца: подтвердить его может только тот, у кого есть этот ключ.

Что происходит при подключении

  1. Включённая раздача периодически сообщает хабу, что владелец в сети, и свои адреса.
  2. Клиент вводит ID. Хаб отвечает, в сети ли владелец, и отдаёт его адреса и отпечаток ключа.
  3. Клиент параллельно пробует эти адреса: сначала адреса в локальной сети, затем публичный. Время ожидания на попытку 2,5 с.
  4. Если за 3 с прямое соединение не получилось, включается запасной путь через сервер. Побеждает тот путь, который сработал первым, остальные закрываются.
  5. Удачный путь запоминается: в следующий раз клиент начнёт с него.

Прямое соединение и запасной путь

Прямое соединение предпочтительно: данные идут между двумя компьютерами без посредников. Запасной путь нужен, когда напрямую не пробиться, например из-за сетевых ограничений. Тогда хаб пересылает байты между сторонами, но с ограничением скорости и числа одновременных сессий. Поэтому для тяжёлых передач стоит добиваться прямого соединения.

Что хаб не видит

Между клиентом и владельцем всегда устанавливается сквозное шифрование TLS 1.3 с проверкой отпечатка ключа. Хаб в этом разговоре не участник: при запасном пути через него идёт тот же шифрованный поток, и он видит лишь шифртекст. Ни содержимое файлов, ни обмен с токеном, ни PIN-коды, ни чат хаб прочитать не может.

Хаб знает: ID, отпечаток ключа, время последней активности и IP-адрес (см. политику конфиденциальности).

Защита от перебора

Если ID не существует или владелец не в сети, хаб отвечает одинаково, поэтому перебором нельзя узнать, какие ID заняты. Запросы поиска ограничены по частоте. Даже зная ID, подключиться без выданного владельцем доступа нельзя.

Нужен только адрес и порт, без хаба? Так тоже можно: см. инструкцию. Для доступа из интернета по адресу порт придётся пробросить.