Продвинутый гид по шифрованию: AES, RSA, ECC и постквантовая криптография

Это всеобъемлющее руководство исследует продвинутые концепции шифрования, алгоритмы и протоколы, используемые в современных системах безопасной коммуникации. Идеально подходит для разработчиков и специалистов по безопасности.

Примечание: Это руководство предполагает знакомство с базовыми концепциями шифрования. Для начинающих начни с нашего Руководства по безопасности для новичков.

Алгоритмы симметричного шифрования

AES (Advanced Encryption Standard)

Золотой стандарт для симметричного шифрования, принятый правительством США в 2001 году.

Ключевые особенности

  • Размеры ключей: 128, 192 или 256 бит
  • Размер блока: 128 бит
  • Раунды: 10, 12 или 14 в зависимости от размера ключа
  • Производительность: Высоко оптимизирован, доступно аппаратное ускорение

Распространённые режимы

  • GCM (Galois/Counter Mode): Аутентифицированное шифрование, рекомендуется для большинства случаев
  • CBC (Cipher Block Chaining): Традиционный режим, требует отдельный MAC
  • CTR (Counter): Распараллеливаемый, используется в некоторых протоколах

ChaCha20

Современный потоковый шифр, разработанный Дэниелом Дж. Бернстайном, становится всё более популярным как альтернатива AES.

Преимущества

  • Быстрее, чем AES на устройствах без аппаратного ускорения
  • Реализация с постоянным временем (устойчива к атакам по времени)
  • Простой дизайн, проще реализовать безопасно
  • Используется с Poly1305 для аутентифицированного шифрования

Асимметричное шифрование

RSA (Rivest-Shamir-Adleman)

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

Ключевые соображения

  • Минимальный размер ключа: 2048 бит (4096 бит рекомендуется для долгосрочной безопасности)
  • Производительность: Вычислительно затратно по сравнению с симметричным шифрованием
  • Схемы дополнения: Используй OAEP для шифрования, PSS для подписей
  • Квантовая угроза: Уязвим для квантовых компьютеров (алгоритм Шора)

Elliptic Curve Cryptography (ECC)

Более эффективная альтернатива RSA с эквивалентной безопасностью при меньших размерах ключей.

Популярные кривые

  • Curve25519: Разработана для обмена ключами ECDH, широко принята
  • Ed25519: Для цифровых подписей, используется в SSH, GPG
  • P-256 (secp256r1): Стандарт NIST, широко поддерживается
  • P-384, P-521: Более высокие уровни безопасности

Преимущества перед RSA

  • 256-битный ECC ≈ 3072-битная безопасность RSA
  • Более быстрые вычисления
  • Меньшие ключи и подписи
  • Меньшие требования к пропускной способности и хранению

Протоколы обмена ключами

Diffie-Hellman (DH)

Позволяет двум сторонам установить общий секрет через незащищённый канал.

Варианты

  • Классический DH: Оригинальная реализация
  • ECDH: Версия на эллиптических кривых (более эффективная)
  • X25519: Современный ECDH, использующий Curve25519

Perfect Forward Secrecy (PFS)

Гарантирует, что прошлые коммуникации остаются безопасными, даже если долгосрочные ключи скомпрометированы.

Реализация

  • Генерируй эфемерные пары ключей для каждой сессии
  • Уничтожай ключи сессии после использования
  • Используется в TLS 1.3, Signal Protocol и т.д.

Хеш-функции

Семейство SHA-2

  • SHA-256: 256-битный вывод, широко используется
  • SHA-384, SHA-512: Более высокие уровни безопасности
  • Применения: Цифровые подписи, проверка сертификатов, хеширование паролей (с правильными техниками)

SHA-3 (Keccak)

  • Другая конструкция, чем SHA-2 (губчатая функция)
  • Устойчив к атакам расширения длины
  • Подходит для приложений, требующих высоких запасов безопасности

BLAKE2/BLAKE3

  • Быстрее, чем SHA-2 и SHA-3
  • Криптографически безопасны
  • BLAKE3: Высоко распараллеливаемый, отличен для больших данных

Функции формирования ключей (KDF)

PBKDF2 (Password-Based Key Derivation Function 2)

  • Назначение: Формирование криптографических ключей из паролей
  • Итерации: Минимум 100 000 (рекомендация OWASP)
  • Случай использования: Хранение паролей, формирование ключей

Argon2

Победитель конкурса Password Hashing Competition (2015), рекомендуется для новых приложений.

Варианты

  • Argon2id: Гибридный (рекомендуется для большинства случаев)
  • Argon2i: Оптимизирован против атак по сторонним каналам
  • Argon2d: Максимальная устойчивость к атакам на GPU

scrypt

  • Функция, требовательная к памяти (устойчива к аппаратным атакам)
  • Используется в Litecoin, Tarsnap
  • Хороший баланс безопасности и совместимости

Коды аутентификации сообщений (MAC)

HMAC (Hash-based MAC)

  • Комбинирует хеш-функцию с секретным ключом
  • Обеспечивает аутентификацию и целостность
  • Распространённые: HMAC-SHA256, HMAC-SHA512

Poly1305

  • Одноразовый аутентификатор
  • Используется с ChaCha20 для аутентифицированного шифрования
  • Быстрый и с постоянным временем

Аутентифицированное шифрование

Почему это важно

Одно шифрование не гарантирует целостность. Атакующий может изменить шифротекст без обнаружения. Аутентифицированное шифрование решает эту проблему.

AEAD (Authenticated Encryption with Associated Data)

  • AES-GCM: Наиболее широко поддерживается
  • ChaCha20-Poly1305: Лучше на мобильных устройствах
  • AES-CCM: Используется в некоторых беспроводных протоколах

Цифровые подписи

RSA-подписи

  • Дополнение: Используй PSS (Probabilistic Signature Scheme)
  • Хеш-функция: SHA-256 или выше
  • Размер ключа: Минимум 2048 бит

ECDSA (Elliptic Curve Digital Signature Algorithm)

  • Меньшие подписи, чем RSA
  • Требует аккуратной генерации nonce (слабый RNG = скомпрометированный ключ)
  • Рекомендуется детерминированный вариант (RFC 6979)

Ed25519

  • Детерминированный (не требует RNG)
  • Быстрая генерация и проверка подписи
  • Малые подписи (64 байта)
  • Устойчив к атакам по сторонним каналам

Современные протоколы

Signal Protocol

Современный протокол сквозного шифрования, используемый в Signal, WhatsApp, Facebook Messenger.

Ключевые особенности

  • Double Ratchet: Непрерывно обновляет ключи
  • Perfect Forward Secrecy: Прошлые сообщения остаются безопасными
  • Post-Compromise Security: Восстанавливается после компрометации ключа
  • Асинхронный: Работает, даже когда получатель не в сети

TLS 1.3

Последняя версия протокола Transport Layer Security.

Улучшения

  • Удалены слабые алгоритмы и наборы шифров
  • Всегда обеспечивает прямую секретность
  • Более быстрое рукопожатие (1-RTT, опция 0-RTT)
  • Зашифрованное Server Hello

Noise Protocol Framework

Современный фреймворк криптографических протоколов для построения безопасных систем коммуникации.

Применения

  • WireGuard VPN
  • Lightning Network
  • I2P messaging

Постквантовая криптография

Угроза

Квантовые компьютеры могут взломать RSA и ECC, используя алгоритм Шора. Симметричные алгоритмы затронуты меньше, но требуют больших ключей.

Постквантовые кандидаты NIST

  • Kyber: Инкапсуляция ключей на основе решёток
  • Dilithium: Цифровые подписи на основе решёток
  • SPHINCS+: Подписи на основе хеш-функций

Стратегия перехода

  • Гибридный подход: Комбинируй классические и постквантовые алгоритмы
  • Увеличь размеры симметричных ключей до 256 бит
  • Следи за процессом стандартизации NIST
  • Планируй гибкость алгоритмов

Лучшие практики реализации

Не создавай свою криптографию

Используй проверенные, рецензированные библиотеки:

  • libsodium: Высокоуровневая, простая в использовании
  • OpenSSL: Всеобъемлющая, широко поддерживается
  • BoringSSL: Форк OpenSSL от Google
  • Ring: Библиотека криптографии для Rust

Управление ключами

  • Используй аппаратные модули безопасности (HSM) для критичных ключей
  • Внедри политики ротации ключей
  • Никогда не вшивай ключи в исходный код
  • Используй формирование ключей для разных целей
  • Безопасно удаляй ключи из памяти после использования

Безопасная генерация случайных чисел

  • Используй криптографически безопасный генератор случайных чисел (CSPRNG)
  • Никогда не используй стандартные функции rand()
  • Генераторы случайных чисел ОС: /dev/urandom (Linux), CryptGenRandom (Windows)
  • Специфичные для языка: crypto.randomBytes (Node.js), модуль secrets (Python)

Предотвращение атак по времени

  • Используй сравнение с постоянным временем для секретов
  • Избегай ветвлений на основе секретных данных
  • Будь осторожен с атаками по времени кеша
  • Используй библиотеки, разработанные с устойчивостью к атакам по времени

Тестирование и валидация

Аудиты безопасности

  • Регулярное тестирование на проникновение
  • Ревью кода экспертами по безопасности
  • Сторонние аудиты безопасности
  • Программы bug bounty

Соответствие стандартам

  • FIPS 140-2/3: Стандарт правительства США
  • Common Criteria: Международная сертификация безопасности
  • PCI DSS: Требования индустрии платёжных карт

Ресурсы для дальнейшего обучения

Книги

  • "Cryptography Engineering" от Ferguson, Schneier и Kohno
  • "Serious Cryptography" от Jean-Philippe Aumasson
  • "Applied Cryptography" от Bruce Schneier

Онлайн-ресурсы

  • Cryptopals Crypto Challenges
  • Курсы по криптографии от Stanford (Coursera)
  • IACR ePrint Archive
  • Crypto Stack Exchange
Посмотри шифрование в действии: SecretNote использует шифрование AES-256-GCM с безопасным формированием ключей для защиты твоих сообщений. Попробуй прямо сейчас!