
Я не хотел, чтобы WeTransfer читал мои файлы, и написал хранилище, которое не доверяет само себе
onokashino 28 минут назад Я не хотел, чтобы WeTransfer читал мои файлы, и написал хранилище, которое не доверяет само себе Средний 3 мин 1.6K Информационная безопасность * Rust * Криптография * Open source * Кейс Из...
GPT-5.6 31 Temmuz 2026'da yayınlanacak mı?
Вот важная новость с фронта ИИ: onokashino 28 минут назад Я не хотел, чтобы WeTransfer читал мои файлы, и написал хранилище, которое не доверяет само себе Средний 3 мин 1. 6K Информационная безопасность * Rust * Криптография * Open source * Кейс Из песочницы Сразу дисклеймер: я ничего не продаю. share·me, бесплатный open-source проект под AGPL, без тарифов, подписок и регистрации.
Это история про то, как обычная задача «передать человеку файл» бесила меня ровно столько раз, что в итоге я сел и написал своё. Передать файл и не отдать его половине интернетаСценарий до боли знакомый: надо скинуть коллеге пароль от сервера, или документ, или дамп базы. Открываешь варианты и тихо вздыхаешь.
Технические детали
WeTransfer и аналоги видят всё, что ты загрузил, по определению. Почта и телеграм оставляют файл лежать в плейнтексте навсегда, на всех серверах по пути. PrivateBin отличный, но это только текст, файл на пару гигабайт туда не положишь.
А хочется простого: бросил файл, получил ссылку, и сервер при этом физически не может его прочитать. В какой-то момент я перестал искать и написал share·me. Идея на салфетке: ключ кладём в ссылку, серверу не показываемБраузер генерирует случайный ключ и шифрует файл прямо у тебя на клиенте через AES-256-GCM.
А ключ отправляется вот сюда: Всё, что после #, браузер никогда не отправляет на сервер. Этого нет ни в строке запроса, ни в логах сервера, ни в access-логах прокси, который ты воткнул спереди. Ссылка несёт ключ, а сервер видит только шифротекст, включая имена файлов.
Отраслевые последствия
Вот и весь фокус, до неприличия простой. Не хочешь ключ в ссылке? Есть парольный режим: ключ выводится через Argon2id (фолбэк PBKDF2).
Неверный пароль просто не проходит серверную авторизацию, а она с rate-limit, так что офлайн-перебора нет. Нюанс, про который туториалы скромно молчат: 5 ГБ в память не положишьЛюбой гайд «зашифруй файл через WebCrypto» вызывает encrypt(весь_файл). Попробуй так с загрузкой на 5 ГБ, и вкладка ловит OOM.
Реальные файлы надо стримить. Поэтому крипто-пакет использует сегментированный AES-256-GCM STREAM: файл режется на чанки, каждый шифруется на HKDF-производном подключе со счётчиком-нонсом. Две вещи, на которых я споткнулся и которые стоит назвать вслух:Нонсы чанков должны быть детерминированными и упорядоченными.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





