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

Симметричное и асимметричное шифрование: ключевые различия

Симметричное и асимметричное шифрование простым языком. Поймите, как каждое работает и как они комбинируются в современной передаче.

Симметричное шифрование использует один ключ и для шифрования, и для расшифровки — это, например, AES-256-GCM, шифр, защищающий ваши файлы при передаче. Асимметричное шифрование использует пару ключей: публичный, доступный всем, и приватный, который держите только вы, — применяется в алгоритмах RSA-4096 и Curve25519. Симметричное шифрование быстрое (гигабайты в секунду на современных процессорах), но требует, чтобы обе стороны использовали один секрет. Асимметричное решает проблему обмена ключами, но в 1000 раз медленнее. Каждый современный сервис передачи файлов — HexaTransfer, Tresorit, Proton Drive, SwissTransfer — использует оба: асимметричное для обмена симметричным ключом, затем симметричное для шифрования самого файла.

Мир одного ключа: симметричное шифрование

Симметричные шифры используют один и тот же ключ в обоих направлениях. Если я шифрую файл ключом K, вам нужен ключ K для расшифровки. Основные симметричные алгоритмы, актуальные сегодня:

  • AES (Rijndael) с ключами 128, 192 или 256 бит, стандартизирован в FIPS 197.
  • ChaCha20 с 256-битными ключами, предпочтителен на устройствах без аппаратного ускорения AES-NI.
  • 3DES — выведен из употребления NIST в 2023 году, не используйте.

Главное преимущество — скорость. AES-256-GCM работает примерно на 3–5 ГБ/с на ядро с Intel AES-NI, а ChaCha20-Poly1305 даёт 1,5–3 ГБ/с на процессорах ARM для телефонов. Шифрование файла в 10 ГБ занимает секунды.

Проблема: как передать ключ другому человеку? Отправить по email — значит уничтожить смысл шифрования. Это и есть проблема распределения ключей — и именно для её решения существует асимметричное шифрование.

Мир двух ключей: асимметричное шифрование

Изобретено Диффи и Хеллманом в 1976 году и реализовано Ривестом, Шамиром и Адлеманом как RSA в 1977 году. У каждого пользователя — пара ключей: публичный, опубликованный открыто, и приватный, хранимый в секрете. Всё зашифрованное публичным ключом может расшифровать только приватный — и наоборот.

Если вы хотите отправить мне секретный файл, зашифруйте его моим публичным ключом. Открыть его сможет только мой приватный ключ — и мне не нужно было ничем секретным делиться с вами. Проблема распределения ключей решена.

Актуальные асимметричные алгоритмы:

  • RSA-2048 или RSA-4096 — медленный, но повсеместно поддерживаемый, используется в TLS-сертификатах.
  • Эллиптические кривые (ECDH, ECDSA) — P-256, P-384 или Curve25519 — меньшие ключи, быстрее. 256-битный EC-ключ соответствует безопасности 3072-битного RSA.
  • Ed25519 — современный стандарт для подписей, используется в SSH и Signal.

Почему асимметричное шифрование слишком медленно для файлов

Асимметричная математика требовательна к ресурсам. RSA-4096 шифрует примерно 100–500 операций в секунду на современном процессоре. Каждая операция обрабатывает около 470 байт (размер блока RSA за вычетом отступа). Это порядка 200 КБ/с — примерно в 50 000 раз медленнее AES-256-GCM.

Шифрование файла в 10 ГБ через RSA заняло бы около 14 часов. С AES-256-GCM — около 3 секунд. Эта асимметрия скорости и объясняет, почему никто не шифрует файлы напрямую через RSA.

Гибридное шифрование: реальный подход

Любой протокол, которому нужны и безопасность, и скорость, сочетает оба вида. TLS 1.3, PGP, Signal, Age и каждый достоверный сервис передачи файлов используют эту схему:

  1. Отправитель генерирует случайный 256-битный AES-ключ («ключ сессии» или «ключ файла»).
  2. Файл шифруется с помощью AES-256-GCM этим ключом.
  3. Сам AES-ключ шифруется публичным ключом получателя (RSA-OAEP или ECIES).
  4. Шифротекст и зашифрованный ключ передаются получателю.
  5. Получатель расшифровывает AES-ключ своим приватным ключом, затем использует его для расшифровки файла.

Вы платите асимметричную стоимость один раз на получателя — за 256-битный ключ. Основной файл обрабатывается симметрично на полной скорости. Лучшее от обоих миров.

Различия между сервисами передачи файлов

Браузерные сервисы передачи сталкиваются с особой проблемой: у получателя может не быть пары ключей. Он просто кликает по ссылке. Три схемы решают это:

  • Только симметричное по ссылке (SwissTransfer, HexaTransfer, преемники Firefox Send). Случайный AES-256-ключ генерируется в браузере отправителя, встраивается в фрагмент URL, и браузер получателя читает его из фрагмента. Асимметричная криптография не нужна — фрагмент и есть канал.
  • Асимметричное между аккаунтами (Tresorit, Proton Drive). У каждого пользователя — пара ключей RSA или ECC, сгенерированная при регистрации. Файлы, зашифрованные для конкретного получателя, используют его публичный ключ.
  • Гибридное с паролем (многие сервисы). Фрагмент URL содержит соль; пользователь вводит пароль; PBKDF2 или Argon2id получает симметричный ключ. Асимметричный компонент отсутствует, но пароль служит общим секретом.

Подход с ссылкой — самый простой и работает для получателей без аккаунтов. Асимметричное с привязкой к аккаунту надёжнее: утечка ссылки не раскрывает ключ. Выбирайте исходя из своей модели угроз.

Цифровые подписи: вторая задача асимметричного шифрования

Асимметричное шифрование делает то, что симметричное не может: доказывает авторство. Если я подписываю файл своим приватным ключом, любой, у кого есть мой публичный ключ, может проверить подпись и убедиться, что файл не был изменён с момента подписания. Симметричное шифрование обеспечивает аутентификацию (HMAC, тег GCM), но только между сторонами, уже разделяющими общий секрет.

Алгоритмы подписей в использовании:

  • RSA-PSS с SHA-256 — устаревший, но широко поддерживаемый.
  • ECDSA на P-256 или P-384 — одобрен NIST, используется в федеральных системах США.
  • Ed25519 — быстрый, детерминированный, устойчивый к плохим генераторам случайных чисел. Современный выбор.

Дистрибутивы ПО (apt, Homebrew, образы Docker) используют подписи Ed25519 или RSA для защиты от атак на цепочку поставок. Сервисы передачи файлов обычно не предоставляют подписи напрямую, но тег аутентификации GCM в AES-256-GCM обеспечивает целостность в рамках одного шифрования.

Размеры ключей и уровни безопасности

Таблица эквивалентной безопасности против классических компьютеров:

  • 128-битное симметричное = RSA-3072 = EC-256 (P-256 или Curve25519)
  • 192-битное симметричное = RSA-7680 = EC-384 (P-384)
  • 256-битное симметричное = RSA-15360 = EC-512 (P-521)

Текущие рекомендации NIST для новых систем: минимум 112-битная безопасность — RSA-2048 или P-256. Федеральные агентства используют 128-битный уровень (RSA-3072, P-384) как минимум до 2030 года.

Против будущих квантовых компьютеров симметричные ключи теряют примерно половину стойкости (алгоритм Гровера), тогда как RSA и ECC полностью взламываются (алгоритм Шора). NIST стандартизировал постквантовые замены в 2024 году: ML-KEM (бывший Kyber) для обмена ключами и ML-DSA (бывший Dilithium) для подписей. Переход идёт, но медленно.

Когда что использовать

Практическое руководство:

  • Шифруете файл для себя (резервная копия, архив): симметричный AES-256-GCM с надёжным паролем через Argon2id. Асимметричное не нужно.
  • Отправляете файл одному известному получателю: гибридное — AES-256-GCM для файла, обёртка публичным ключом для ключа сессии.
  • Отправляете нескольким получателям: шифруйте файл один раз AES, затем оборачивайте ключ отдельно публичным ключом каждого получателя. Добавляет примерно 300 байт на получателя.
  • Доказываете авторство: подпись Ed25519 над шифротекстом.
  • Одноразовый обмен через ссылку: симметричное с ключом во фрагменте URL.

Всё вместе

Для чувствительных передач сегодня — прагматичный стек: AES-256-GCM для массового шифрования, X25519 ECDH для обмена ключами, если у получателей есть идентичности, PBKDF2 или Argon2id для ключей на основе пароля и TLS 1.3 как транспортный уровень. Именно эту комбинацию развёртывают современные аудированные сервисы.

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

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

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

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