Перейти к содержанию
HexaTransfer
Вернуться к блогу
Шифрование и безопасность

Двухфакторная аутентификация для файлов: дополнительный уровень защиты

Добавьте двухфакторную аутентификацию к передачам. Комбинируйте пароли с одноразовыми кодами или email-верификацией.

Двухфакторная аутентификация для файлов сочетает то, что знает получатель (пароль, выводящий AES-256-GCM ключ через PBKDF2), с тем, что у него есть (TOTP-код из Authy, магическая ссылка email или WebAuthn passkey, привязанный к устройству). Даже если атакующий перехватит пароль или URL для скачивания, он не сможет расшифровать полезную нагрузку без второго фактора. Этот паттерн нейтрализует пересылку ссылок, подстановку учётных данных и большинство атак подглядыванием, от которых не защищает однофакторный обмен на сервисах типа WeTransfer.

Почему одного пароля на ссылку недостаточно

Общедоступная ссылка для скачивания удивительно «протекает». Slack автоматически раскрывает её в предпросмотр, Gmail архивирует её на семь лет, а корпоративные прокси логируют полную строку запроса. Если пароль отправляется отдельным письмом, оба канала нередко ведут в один ящик — значит, единственная компрометация Microsoft 365 отдаёт атакующему файл. По данным реальных расследований инцидентов (Verizon DBIR 2025), 68% краж данных с использованием учётных данных были связаны с повторно используемыми паролями. Добавление второго фактора разрывает эту цепочку, поскольку seed TOTP никогда не покидает приложение-аутентификатор получателя.

Как TOTP работает со ссылкой на скачивание

Отправитель генерирует 160-битный общий секрет в кодировке base32 и QR-код (RFC 6238). Получатель сканирует его с помощью Google Authenticator, 1Password или Yubico Authenticator. Каждые 30 секунд приложение выполняет HMAC-SHA1 над секретом и Unix-временем, делённым на 30, усекая результат до шести цифр. Когда получатель вводит этот код, сервер проверяет текущее и предыдущее окно для допуска расхождения часов. Только после успешной проверки кода сервер выдаёт зашифрованный blob — ключ дешифрования по-прежнему находится на стороне клиента, производный от пароля получателя.

Email-магические ссылки как лёгкий второй фактор

Не каждый получатель установит аутентификатор. Магическая ссылка, отправленная на заранее объявленный адрес, — разумный запасной вариант. Отправитель вводит jane@hospital.org при загрузке; сервис хранит SHA-256-хэш этого адреса. Когда Жанна нажимает на ссылку для скачивания, сервис отправляет 128-битный случайный токен, действительный 10 минут. Нажатие на токен открывает страницу скачивания, где она всё равно вводит пароль файла. Поскольку токен привязан к её почтовому ящику, ссылка, пересланная коллеге, бесполезна — коллега так и не получит email-запрос.

WebAuthn и passkeys для постоянных получателей

Для команд, обменивающихся файлами еженедельно (например, аудитор, получающий доказательства PCI DSS 4.0), passkeys превосходят коды. Получатель регистрирует FIDO2-учётные данные при первом использовании; закрытый ключ находится в Secure Enclave или YubiKey 5C. Последующие скачивания требуют только касания вместо повторного ввода TOTP. Поскольку подпись включает источник, сайты-клоны, проксирующие реальную страницу скачивания, не могут воспроизвести аутентификацию. Chrome, Safari 17 и Firefox 122 поддерживают условный UI, всплывающий запрос passkey без дополнительных кликов.

Защита больших передач чанк за чанком

Архив DICOM на 10 ГБ или проект Adobe Premiere на 4 ГБ не вписываются в однократную модель скачивания. Разделяйте полезную нагрузку на чанки по 5 МБ, каждый зашифрован собственным подключом, производным из мастер-ключа через HKDF (RFC 5869). Перед выдачей любого чанка сервер проверяет свежий сессионный токен, выданный после успешного прохождения 2FA. Токен истекает, скажем, через 30 минут, чтобы поставленное на паузу скачивание не могло возобновиться спустя дни с украденной куки. Это зеркалит то, как Signal обрабатывает сегменты голосовых сообщений и как Backblaze B2 применяет серверную авторизацию к многочастным загрузкам.

Ограничение частоты, блокировки и ловушка офлайн-атаки

TOTP — всего шесть цифр, поэтому наивный эндпоинт позволяет атакующим перебрать 1 000 000 комбинаций за секунды. Применяйте экспоненциальный откат после трёх неверных попыток, блокируйте ссылку после десяти и отправляйте отправителю webhook. Не сообщайте атакующим, не прошли ли они пароль или код — возвращайте одно и то же общее сообщение об ошибке для обоих. И никогда не размещайте проверку TOTP на клиенте; передача секрета в браузер свела бы весь смысл к нулю. Проверяйте на сервере, в защищённом эндпоинте за Cloudflare Turnstile или hCaptcha.

Восстановление без ослабления модели

Классический сбой — получатель теряет телефон в течение 48-часового окна передачи. Встроенный экстренный код — 20-символьная строка base32, распечатанная при создании ссылки — даёт запасной вариант без зависимости от email. Не менее важно: всё равно истекайте передачу после скачивания, даже если второй фактор не использовался. Тогда утерянный ноутбук с экстренным кодом нельзя использовать как оружие месяц спустя. Некоторые сервисы, включая HexaTransfer, также позволяют отправителю отозвать ссылку из дашборда, уничтожая все активные сессионные токены.

Что это стоит с точки зрения пользовательского опыта

Добавление 2FA к 30-секундной передаче ощущается тяжело, поэтому настраивайте под риск. Для альбома фотографий с дня рождения — пропустите. Для .psd-файла на 500 МБ с запуском продукта — требуйте пароль. Для архива 2 ГБ данных по субъекту GDPR Статья 15 — требуйте TOTP плюс магическую ссылку. Многоуровневый UI (публичный, с паролем, с 2FA, с passkey) позволяет отправителям выбирать без чтения документации. Конкуренты вроде SwissTransfer предоставляют единый переключатель пароля; Dropbox Transfer прячет 2FA за план Teams; Smash предлагает email-верификацию, но не TOTP. Этот разрыв стоит закрыть.

Попробуйте на hexatransfer.com — бесплатно, без регистрации, до 10 ГБ.

Безопасная отправка больших файлов со сквозным шифрованием

Передавайте файлы до 10 ГБ бесплатно со сквозным шифрованием. Регистрация не требуется. Ваши файлы шифруются в браузере перед загрузкой — никто другой не может их прочитать.

Отправить файл