Любой инженер, настраивающий SSH-доступ к серверу, выпускающий SSL/TLS-сертификат для веб-сайта или подписывающий коммит в Git, сталкивается с асимметричной криптографией. Историческим стандартом в этой области остается алгоритм RSA (Rivest–Shamir–Adleman).
Несмотря на активный запуск алгоритмов на эллиптических кривых, RSA ключи сохраняют колоссальную долю инфраструктурного рынка. Разберемся, какая математическая идея лежит в основе RSA, как формируются публичный и приватный ключи, зачем нужны схемы дополнения и как безопасно работать с ключами в консоли Linux.
- Что такое RSA ключи и как устроена асимметричная криптография
- В чем разница между симметричным и асимметричным шифрованием
- Анатомия пары ключей: из чего состоят публичный и приватный ключ
- Математический фундамент RSA: от простых чисел до модуля
- Генерация простых чисел p и q и вычисление модуля n
- Роль функции Эйлера \phi(n)и выбор открытой экспоненты e
- Вычисление секретной экспоненты d через расширенный алгоритм Евклида
- Практическая механика: шифрование, расшифровка и ЭЦП
- Формулы шифрования и расшифровки на понятном примере
- Разбор на компактных числах (учебный пример)
- Как устроена цифровая подпись (ЭЦП) на базе RSA
- Зачем необходимы схемы набивки (Padding): PKCS#1 v1.5 vs OAEP/PSS
- В чем опасность сырого RSA:
- Сравнение RSA с алгоритмами на эллиптических кривых (ECC, Ed25519)
- Длина ключа и криптографическая стойкость (RSA vs ECC)
- Нагрузка на процессоры, скорость работы и размеры подписей
- Безопасность RSA: уязвимости и квантовая угроза
- Актуальные длины ключей: почему RSA-1024 забанен, а RSA-2048 под вопросом
- Атаки по побочным каналам и квантовый алгоритм Шора (PQC)
- 1. Атаки по побочным каналам (Side-Channel Attacks)
- 2. Квантовая угроза и алгоритм Шора
- Шпаргалка по OpenSSL: генерация, проверка и управление RSA-ключами
- Создание защищенной пары RSA-4096 с шифрованием AES-256
- Извлечение публичного ключа и анализ структуры в формате PEM
- Выводы
Что такое 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), ключи содержат следующие компоненты:
- Публичный ключ (Public Key):
n— модуль RSA (произведение двух простых чиселpиq).e— открытая экспонента (шифрующая экспонента).
- Приватный ключ (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).
- Выбираются два больших простых числа
pиqодинаковой битовой длины (например, по 2048 бит для получения ключа RSA-4096). - Числа проверяются на простоту вероятностным тестом Миллера — Рабина.
- Вычисляется модуль
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 < e < \phi(n)\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 шаг за шагом на маленьких простых числах.
- Генерация ключей:
- Возьмем простые числа
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).
- Возьмем простые числа
- Процесс шифрования:
- Пусть наше сообщение — это символ
ASCII 'A', код которогоM = 65. - Вычисляем шифртекст
C:
C = 65^{17} \pmod{3233} = 2790 - Отправитель передает зашифрованное число
2790по открытой сети.
- Пусть наше сообщение — это символ
- Процесс расшифровки:
- Получатель берет шифртекст
C = 2790и свой приватный ключd = 2753:
M = 2790^{2753} \pmod{3233} = 65 - Число
65переводится обратно в символ'A'. Данные успешно восстановлены.
- Получатель берет шифртекст

Как устроена цифровая подпись (ЭЦП) на базе RSA
Электронная цифровая подпись (ЭЦП) решает задачу подтверждения авторства и неизменности документа. В случае подписи математические роли ключей меняются местами:
- Создание подписи (Владелец приватного ключа):
- Вычисляется хеш-сумма документа
H = \text{SHA-256}(\text{Document}). - Хеш-сумма зашифровывается приватным ключом
d:
S = H^d \pmod n - Значение
Sприкрепляется к документу в качестве цифровой подписи.
- Вычисляется хеш-сумма документа
- Проверка подписи (Любой обладатель публичного ключа):
- Извлекается полученная подпись
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.
Для решения этих проблем исходный блок данных перед возведением в степень обрабатывается специальными схемами дополнения, которые дополняют данные случайным шумом (энтропией).

- PKCS#1 v1.5: Исторический формат дополнения. При шифровании уязвим к адаптивным атакам на основе подобранного шифртекста (атака Блейхенбахера). По современным стандартам RFC 8017 объявлен устаревшим для задач зашифрования.
- RSA-OAEP (Optimal Asymmetric Encryption Padding): Совершенный стандарт набивки для шифрования. Добавляет случайную метку и использует две маскирующие функции на базе хешей. Обеспечивает стойкость к атакам типа IND-CCA2 (неразличимость зашифрованных текстов).
- 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: ...
Выводы
- RSA держится на математической сложности факторизации произведения двух больших простых чисел
n = p \times q. - Открытый ключ
(n, e)отвечает за шифрование и проверку подписи, а закрытый ключ(n, d)— за расшифровку и создание подписи. - Использование сырого RSA опасно. В системах необходимо использовать современную набивку OAEP для шифрования и PSS для цифровых подписей по спецификации RFC 8017.
- В 2026 году минимальным стандартом безопасности для RSA является длина ключа 4096 бит.
- Для новых проектов приоритетным выбором становятся алгоритмы на эллиптических кривых (Ed25519 / ECC), а в долгосрочной перспективе — замена инфраструктуры на постквантовые стандарты.








