Как работают RSA ключи: от математических формул до практики в OpenSSL

RSA ключи Криптография и безопасность

Любой инженер, настраивающий SSH-доступ к серверу, выпускающий SSL/TLS-сертификат для веб-сайта или подписывающий коммит в Git, сталкивается с асимметричной криптографией. Историческим стандартом в этой области остается алгоритм RSA (Rivest–Shamir–Adleman).

Несмотря на активный запуск алгоритмов на эллиптических кривых, RSA ключи сохраняют колоссальную долю инфраструктурного рынка. Разберемся, какая математическая идея лежит в основе RSA, как формируются публичный и приватный ключи, зачем нужны схемы дополнения и как безопасно работать с ключами в консоли Linux.

Содержание
  1. Что такое RSA ключи и как устроена асимметричная криптография
  2. В чем разница между симметричным и асимметричным шифрованием
  3. Анатомия пары ключей: из чего состоят публичный и приватный ключ
  4. Математический фундамент RSA: от простых чисел до модуля
  5. Генерация простых чисел p и q и вычисление модуля n
  6. Роль функции Эйлера \phi(n)и выбор открытой экспоненты e
  7. Вычисление секретной экспоненты d через расширенный алгоритм Евклида
  8. Практическая механика: шифрование, расшифровка и ЭЦП
  9. Формулы шифрования и расшифровки на понятном примере
  10. Разбор на компактных числах (учебный пример)
  11. Как устроена цифровая подпись (ЭЦП) на базе RSA
  12. Зачем необходимы схемы набивки (Padding): PKCS#1 v1.5 vs OAEP/PSS
  13. В чем опасность сырого RSA:
  14. Сравнение RSA с алгоритмами на эллиптических кривых (ECC, Ed25519)
  15. Длина ключа и криптографическая стойкость (RSA vs ECC)
  16. Нагрузка на процессоры, скорость работы и размеры подписей
  17. Безопасность RSA: уязвимости и квантовая угроза
  18. Актуальные длины ключей: почему RSA-1024 забанен, а RSA-2048 под вопросом
  19. Атаки по побочным каналам и квантовый алгоритм Шора (PQC)
  20. 1. Атаки по побочным каналам (Side-Channel Attacks)
  21. 2. Квантовая угроза и алгоритм Шора
  22. Шпаргалка по OpenSSL: генерация, проверка и управление RSA-ключами
  23. Создание защищенной пары RSA-4096 с шифрованием AES-256
  24. Извлечение публичного ключа и анализ структуры в формате PEM
  25. Выводы

Что такое RSA ключи и как устроена асимметричная криптография

В классических системах защищенной связи долгое время доминировало симметричное шифрование. В нем отправитель и получатель используют один и тот же секретный ключ. Главный изъян такой схемы — «проблема распределения ключей»: как передать секретный ключ собеседнику по открытому каналу так, чтобы его не перехватил злоумышленник?

Асимметричная криптография решает эту задачу с помощью пары математически связанных ключей:

  • Открытый ключ (Public Key): доступен абсолютно всем. Используется для зашифрования данных или проверки цифровой подписи.
  • Закрытый ключ (Private Key): хранится у владельца. Используется для расшифровки данных или создания цифровой подписи.

Пример шифрования

Важное свойство: Данные, зашифрованные открытым ключом, невозможно расшифровать этим же открытым ключом. Операция расшифровки выполнима исключительно владельцем соответствующего закрытого ключа.

В чем разница между симметричным и асимметричным шифрованием

На практике асимметричные и симметричные алгоритмы не конкурируют, а дополняют друг друга в рамках гибридного шифрования:

Критерий Симметричное шифрование (AES-256) Асимметричное шифрование (RSA-4096)
Количество ключей 1 секретный ключ Пары: Публичный + Приватный
Скорость работы Очень высокая (аппаратное ускорение AES-NI) Медленная (требует ресурсоемких математических операций)
Максимальный размер данных Не ограничен Ограничен размером модуля nминус служебный паддинг
Основное назначение Шифрование больших объемов (файлы, трафик) Обмен ключами, цифровая подпись (ЭЦП), аутентификация

При установке безопасного соединения TLS 1.3 или SSH асимметричный алгоритм RSA используется только на этапе рукопожатия (Handshake) и аутентификации. После согласования разового сессионного ключа вся дальнейшая передача данных переводится на быстрый симметричный алгоритм AES-256-GCM.

Именно эта гибридная схема применяется при поднятии классических VPN-туннелей (OpenVPN или IPsec). И именно по сигнатурам этих публичных рукопожатий системы DPI (глубокого анализа трафика) сегодня успешно распознают и блокируют VPN-соединения. Если ваша задача — не защита корпоративного канала, а автоматизация, парсинг или мультиаккаунтинг, использование инфраструктуры с тяжелой криптографией только навредит. В нашем техническом разборе разницы между VPN и прокси мы наглядно разобрали, когда шифрование критично, а когда маршрутизацию выгоднее делегировать на прикладной уровень (L7) без криптографического оверхеда.

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

С точки зрения математики RSA ключ — это не случайный набор байтов, а сфокусированная группа больших целых чисел с заданной математической связью.

Согласно международному стандарту RFC 8017 (PKCS #1 v2.2), ключи содержат следующие компоненты:

  1. Публичный ключ (Public Key):
    • n— модуль RSA (произведение двух простых чисел p и q).
    • e— открытая экспонента (шифрующая экспонента).
  2. Приватный ключ (Private Key):
    • n— модуль RSA.
    • d— секретная экспонента (расшифровывающая экспонента).
    • pи q— исходные секретные простые числа.
    • Дополнительные элементы для ускорения вычислений по Китайской теореме об остатках (CRT): dP, dQ, qInv.

Файлы ключей в формате .pem представляют собой структуру ASN.1, закодированную в бинарный DER и переведенную в Base64 с текстовыми заголовками -----BEGIN RSA PRIVATE KEY-----.

Математический фундамент RSA: от простых чисел до модуля

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

Задача факторизации

 

Генерация простых чисел p и q и вычисление модуля n

Процесс создания пары RSA ключей начинается с работы генератора псевдослучайных чисел криптографического качества (CSPRNG).

  1. Выбираются два больших простых числа p и q одинаковой битовой длины (например, по 2048 бит для получения ключа RSA-4096).
  2. Числа проверяются на простоту вероятностным тестом Миллера — Рабина.
  3. Вычисляется модуль n:
    n = p \times q

Битовая длина модуля n определят номинальный размер ключа (2048, 3072 или 4096 бит). Число n публикуется открыто в составе публичного ключа.

Роль функции Эйлера \phi(n) и выбор открытой экспоненты e

Для расчета секретной экспоненты необходимо узнать значение функции Эйлера \phi(n). Функция Эйлера показывает количество целых чисел на отрезке от 1до n, взаимно простых с n.

Так как pи q— простые числа, функция Эйлера для модуля n рассчитывается по простой формуле:

\phi(n) = (p - 1) \times (q - 1)

⚠️ Критический момент: Вычислить \phi(n) можно только в том случае, если известны значения pи q. Зная только публичный модуль n, найти \phi(n) без факторизации невозможно.

Далее выбирается открытая экспонента e. Число e должно удовлетворять двум условиям:

  1. 1 < e < \phi(n)
  2. \gcd(e, \phi(n)) = 1(числа e и \phi(n) обязаны быть взаимно простыми).

В современных системах значение e фиксировано и почти всегда равно 65537 (0x10001в шестнадцатеричной системе). Это число является 4-м простым числом Ферма (2^{16} + 1). Оно содержит всего два установленных бита в двоичной записи (10000000000000001), что позволяет вычислить возведение в степень с минимальным количеством операций умножения.

Вычисление секретной экспоненты d через расширенный алгоритм Евклида

Секретная экспонента $d$ является мультипликативно обратным числом к e по модулю \phi(n). Это означает, что остаток от деления произведения d \cdot eна \phi(n) должен быть равен 1:

(d \times e) \equiv 1 \pmod{\phi(n)}

Для нахождения d применяется расширенный алгоритм Евклида. Рассчитанное число d держится в тайне и сохраняется внутри приватного ключа. После завершения расчетов исходные числа pи q либо удаляются из памяти, либо сохраняются в зашифрованном файле закрытого ключа для применения CRT-ускорения.

Практическая механика: шифрование, расшифровка и ЭЦП

Все операции в RSA выполняются в рамках модульной арифметики над целыми числами. Любой файл или текстовое сообщение перед шифрованием преобразуется в целое число M, причем 0 \le M < n.

Формулы шифрования и расшифровки на понятном примере

Основой алгоритма является Малая теорема Ферма и ее обобщение Эйлером.

Формулы базовых операций выглядят следующим образом:

  • Шифрование (открытым ключом):
    C = M^e \pmod n(где M— исходное сообщение, C— получившийся шифртекст)
  • Расшифровка (закрытым ключом):
    M = C^d \pmod n

Разбор на компактных числах (учебный пример)

Проследим математику RSA шаг за шагом на маленьких простых числах.

  1. Генерация ключей:
    • Возьмем простые числа p = 61и q = 53.
    • Вычисляем модуль: n = 61 \times 53 = 3233.
    • Вычисляем функцию Эйлера: \phi(n) = (61 - 1) \times (53 - 1) = 60 \times 52 = 3120.
    • Выбираем открытую экспоненту e = 17(проверим: \gcd(17, 3120) = 1).
    • Рассчитываем секретную экспоненту d: (d \times 17) \equiv 1 \pmod{3120}. Используя расширенный алгоритм Евклида, получаем d = 2753.
    • Публичный ключ: (n = 3233, e = 17).
    • Приватный ключ: (n = 3233, d = 2753).
  2. Процесс шифрования:
    • Пусть наше сообщение — это символ ASCII 'A', код которого M = 65.
    • Вычисляем шифртекст C:
      C = 65^{17} \pmod{3233} = 2790
    • Отправитель передает зашифрованное число 2790 по открытой сети.
  3. Процесс расшифровки:
    • Получатель берет шифртекст C = 2790и свой приватный ключ d = 2753:
      M = 2790^{2753} \pmod{3233} = 65
    • Число 65 переводится обратно в символ 'A'. Данные успешно восстановлены.

Процесс шифрования

 

Как устроена цифровая подпись (ЭЦП) на базе RSA

Электронная цифровая подпись (ЭЦП) решает задачу подтверждения авторства и неизменности документа. В случае подписи математические роли ключей меняются местами:

  1. Создание подписи (Владелец приватного ключа):
    • Вычисляется хеш-сумма документа H = \text{SHA-256}(\text{Document}).
    • Хеш-сумма зашифровывается приватным ключом d:
      S = H^d \pmod n
    • Значение Sприкрепляется к документу в качестве цифровой подписи.
  2. Проверка подписи (Любой обладатель публичного ключа):
    • Извлекается полученная подпись S и расшифровывается публичным ключом e:
      H_{\text{extracted}} = S^e \pmod n
    • Локально пересчитывается хеш полученного документа: H_{\text{real}} = \text{SHA-256}(\text{Document}).
    • Если H_{\text{extracted}} == H_{\text{real}}, подпись признается валидной. Это доказывает, что документ не изменялся в пути и был подписан владельцем конкретного приватного ключа.

Как устроена ЭЦП

Зачем необходимы схемы набивки (Padding): PKCS#1 v1.5 vs OAEP/PSS

Применять «сырой» RSA (Raw / Textbook RSA) в реальных продуктах категорически запрещено из соображений безопасности.

В чем опасность сырого RSA:

  • Детерминированность: Одно и то же сообщение Mвсегда дает один и тот же шифртекст C. Злоумышленник может составить словарь частых команд и сопоставлять шифровки.
  • Мультипликативные свойства: Произведение шифртекстов равно шифртексту произведения исходных сообщений: (M_1^e \pmod n) \cdot (M_2^e \pmod n) = (M_1 \cdot M_2)^e \pmod n.
  • Уязвимость к атакам на малые сообщения: Если M^e < n, то модуль не срабатывает, и для извлечения M достаточно извлечь обычный корень степени e из числа C.

Для решения этих проблем исходный блок данных перед возведением в степень обрабатывается специальными схемами дополнения, которые дополняют данные случайным шумом (энтропией).

Пример шифрования

  1. PKCS#1 v1.5: Исторический формат дополнения. При шифровании уязвим к адаптивным атакам на основе подобранного шифртекста (атака Блейхенбахера). По современным стандартам RFC 8017 объявлен устаревшим для задач зашифрования.
  2. RSA-OAEP (Optimal Asymmetric Encryption Padding): Совершенный стандарт набивки для шифрования. Добавляет случайную метку и использует две маскирующие функции на базе хешей. Обеспечивает стойкость к атакам типа IND-CCA2 (неразличимость зашифрованных текстов).
  3. RSA-PSS (Probabilistic Signature Scheme): Вероятностная схема набивки для создания цифровых подписей. Предотвращает подделку подписей даже при частичном взломе хеш-функции.

Сравнение RSA с алгоритмами на эллиптических кривых (ECC, Ed25519)

В современной криптографической практике у алгоритма RSA появился серьезный конкурент — криптография на эллиптических кривых (ECC).

Длина ключа и криптографическая стойкость (RSA vs ECC)

Стойкость асимметричных ключей измеряется в «битах эквивалентной симметричной стойкости». Для компенсации новых методов математического анализа размер модуля RSA приходится увеличивать нелинейно.

Согласно руководству по управлению ключами NIST SP 800-57 Part 1 Rev. 5:

Уровень эквивалентной стойкости Длина ключа RSA (биты) Длина ключа ECC / Ed25519 (биты) Состояние в 2026 году
80 бит 1024 бит 160 бит ❌ Небезопасно, забанено везде
112 бит 2048 бит 224 бит ⚠️ Минимально допустимо, вывод из эксплуатации
128 бит 3072 бит 256 бит (Ed25519) Стандарт
192 бит 7680 бит 384 бит Высокий уровень безопасности
256 бит 15360 бит 521 бит Максимальный уровень

Ключ Ed25519 размером всего 256 бит обеспечивает устойчивость к взлому, аналогичную гигантскому RSA ключу размером 3072 бит.

Нагрузка на процессоры, скорость работы и размеры подписей

Сравнение производительности RSA-4096 и Ed25519 показывает заметный разрыв в эффективности ресурсов:

  • Размер открытого ключа: Публичный ключ Ed25519 занимает всего 32 байта (напротив ~550 байт у RSA-4096 в формате PEM). Это экономит сетевой трафик при массовом обмене ключами.
  • Скорость генерации подписи: Эллиптическая кривая Ed25519 обгоняет RSA-4096 по скорости создания цифровой подписи на CPU примерно в 20–30 раз.
  • Единственный плюс RSA: Шифрование открытым ключом RSA (e=65537) происходит быстрее, чем в ECC, так как требует всего 17 операций умножения по модулю. Однако расшифровка закрытым ключом RSA оказывается медленнее ECC.

Цена перехода с RSA-2048 на RSA-4096: Из-за кубической сложности модульной арифметики (O(k^3)) увеличение длины ключа в 2 раза приводит к снижению производительности не в 2, а в 6–8 раз для тяжелых операций с закрытым ключом (расшифровка трафика и формирование ЭЦП). Например, если сервер выполняет ~1500 подписей/сек на RSA-2048, то при переходе на RSA-4096 эта цифра падает до ~200–250 подписей/сек на то же ядро CPU. Операции с открытым ключом (e=65537) замедляются скромнее — примерно в 2–3 раза.

Безопасность RSA: уязвимости и квантовая угроза

Актуальные длины ключей: почему RSA-1024 забанен, а RSA-2048 под вопросом

Метод общего поля просеивания (GNFS) является самым быстрым классическим алгоритмом для факторизации больших чисел. За счет роста вычислительных мощностей GPU-кластеров факторизация модулей размером 1024 бит стала доступна коммерческим структурам.

  • RSA-1024: Полностью скомпрометирован. Запрещен регуляторами (включая ФСТЭК России и NIST) еще в 2013 году.
  • RSA-2048: Находится на нижней грани допустимого. Регуляторы рекомендуют отказываться от использования RSA-2048 в новых продуктах.
  • RSA-4096: Текущий безопасный стандарт для RSA. Обеспечивает адекватную защиту для систем, требующих длительного сохранения конфиденциальности.

ℹ️ В инфраструктурных требованиях РФ асимметричная криптография регламентируется стандартом ГОСТ Р 34.10-2012, который изначально построен на эллиптических кривых (длина ключа 256 или 512 бит) под контролем ФСБ России.

Атаки по побочным каналам и квантовый алгоритм Шора (PQC)

Безопасность RSA подвержена рискам с двух сторон:

1. Атаки по побочным каналам (Side-Channel Attacks)

Если программа выполняющих возведение в степень по модулю M^d \pmod nтратит разное время на обработку битов 0 и 1 в приватном ключе d, злоумышленник с микросекундным секундомером (Timing Attack) может пошагово восстановить закрытый ключ. Для защиты от таких атак современные библиотеки (OpenSSL) используют алгоритмы с постоянным временем выполнения и технологию «слепой подписи».

2. Квантовая угроза и алгоритм Шора

На классическом компьютере сложность факторизации nсубэкспоненциальна. Однако на достаточно мощном квантовом компьютере будет запущен алгоритм Шора, снижающий сложность взлома RSA до полиномиальной O((\log n)^3).

Для факторизации RSA-2048 квантовому компьютеру потребуется порядка 4000 стабильных (логических) кубитов. В рамках перехода на Постквантовую криптографию (PQC) институтом NIST уже утверждены первые стандарты алгоритмов, устойчивых к квантовому взлому:

  • ML-KEM (CRYSTALS-Kyber) — для инкапсуляции ключей.
  • ML-DSA (CRYSTALS-Dilithium) — для цифровых подписей.

Шпаргалка по OpenSSL: генерация, проверка и управление RSA-ключами

Практическая работа с RSA ключами в средах Linux и macOS осуществляется с помощью консольного инструментарии OpenSSL.

Создание защищенной пары RSA-4096 с шифрованием AES-256

Для генерации приватного ключа RSA длиной 4096 бит, защищенного паролем по алгоритму AES-256, выполните следующую команду:

openssl genpkey -algorithm RSA \

  -out private.pem \

  -pkeyopt rsa_keygen_bits:4096 \

  -aes256

В процессе выполнения система запросит ввод парольной фразы. Приватный ключ будет записан в файл private.pem в защищенном формате PKCS#8.

Извлечение публичного ключа и анализ структуры в формате PEM

Чтобы извлечь парный публичный ключ из ранее созданного приватного ключа, примените утилиту pkey:

openssl pkey -in private.pem -pubout -out public.pem

Для детального аудита параметров математического модуля nи экспоненты eбез вывода самого приватного ключа в Base64 используют текстовый дамп ASN.1 структуры:

openssl pkey -in private.pem -text -noout

В выводе терминала отобразятся шестнадцатеричные значения составных элементов:

RSA Private-Key: (4096 bit, 2 primes)

modulus:

    00:b4:1f:8e:...

publicExponent: 65537 (0x10001)

privateExponent:

    3a:88:12:f1:...

prime1: ...

prime2: ...

exponent1: ...

exponent2: ...

coefficient: ...

Выводы

  1. RSA держится на математической сложности факторизации произведения двух больших простых чисел n = p \times q.
  2. Открытый ключ (n, e)отвечает за шифрование и проверку подписи, а закрытый ключ (n, d)— за расшифровку и создание подписи.
  3. Использование сырого RSA опасно. В системах необходимо использовать современную набивку OAEP для шифрования и PSS для цифровых подписей по спецификации RFC 8017.
  4. В 2026 году минимальным стандартом безопасности для RSA является длина ключа 4096 бит.
  5. Для новых проектов приоритетным выбором становятся алгоритмы на эллиптических кривых (Ed25519 / ECC), а в долгосрочной перспективе — замена инфраструктуры на постквантовые стандарты.
Оцените статью
autoparse.tech
Добавить комментарий