Спецпроекты

DropOnce

Передача файла по ссылке и QR, которые сгорают: по локальной сети, через туннель, через релей или напрямую между приложениями с шифрованием X25519 и ChaCha20-Poly1305.

Тип
Передача файлов
Стек
Go · Wails · React
Код
Открыт на GitHub
Год
2026

Ящик с одноразовым ключом

Файл лежит в ящике, ссылка — ключ с часами и счётчиком. Ключ открывает ящик, пока не вышло время и не кончились скачивания, а потом ломается.

Бородка ключа и копия файла, идущая по жёлобуЯщик, замок, рычаг маршрута и счётчик на ключеЧетыре жёлоба: сеть, туннель, релей, прямой каналDropOnce передаёт файл по ссылке и QR-коду, которые сгорают. Ящик с файлом — приложение, ключ — ссылка: 32 случайных байта, в базе лежит только их хеш. Пути явные: локальная сеть напрямую с компьютера, туннель CloudPub, релей, куда файл загружается, и прямой канал между двумя приложениями с шифрованием X25519 и ChaCha20-Poly1305. Ссылка перестаёт работать по сроку, по отмене или после заданного числа скачиваний; счётчик резервируется атомарно, поэтому два одновременных запроса не превысят лимит. Здесь лимит один скачивание, срок демонстрационный — 60 секунд.

Четыре пути

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

Ссылка, которая сгорает

Ссылка — 32 случайных байта, в базе хранится только её хеш. Она перестаёт работать по сроку, по отмене или после заданного числа скачиваний. Счётчик резервируется атомарно, поэтому два одновременных запроса не превысят лимит, а оборванная загрузка возвращает резерв.

Технически

  • Прямой канал: X25519, HKDF-SHA256, ChaCha20-Poly1305, счётчики против повтора кадров.
  • Несколько файлов собираются в один временный ZIP.
  • Локальный режим слушает только выбранный частный адрес.
  • Релей до 50 ГБ, файл удаляется после последнего скачивания.
Код на GitHub

Обсудим ваш проект?

Обсудить проект