Руководство по генерации пары ключей RSA: шифрование открытым ключом и подпись закрытым ключом

Кодирование

Что такое пара ключей RSA

RSA — это алгоритм асимметричного шифрования, использующий пару ключей:

Ключ Назначение Распространение
Открытый ключ Шифровать / Проверять подпись Можно свободно распространять
Закрытый ключ Расшифровывать / Подписывать Хранить только у себя

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


Выбор длины ключа

Длина Уровень безопасности Сценарий использования
1024-бит ❌ Небезопасно Устаревшие системы
2048-бит ✅ Базовая безопасность Повседневное использование
3072-бит ✅ Повышенная безопасность Умеренно конфиденциальные данные
4096-бит ✅ Высокая безопасность Высококонфиденциальные данные / долгосрочные ключи

Генерация 4096-битного ключа занимает в 4-8× больше времени, чем 2048-битного. Шифрование/расшифровка также медленнее. Выбирайте исходя из своих потребностей.


Генерация пары ключей: пошагово

Шаг 1: Откройте инструмент пары ключей RSA

Перейдите к инструменту пары ключей RSA и выберите длину ключа (рекомендуется 2048 или 4096).

Шаг 2: Сгенерируйте пару ключей

Нажмите «Сгенерировать пару ключей». Инструмент автоматически создаст:

  • Открытый ключ: текст в формате PEM, начинающийся с -----BEGIN PUBLIC KEY-----
  • Закрытый ключ: текст в формате PEM, начинающийся с -----BEGIN PRIVATE KEY-----

Шаг 3: Сохраните ключи

Открытый ключ  → Отправьте всем, кому нужно зашифровать для вас данные
Закрытый ключ → Храните надёжно, никогда не утечьте (не коммитьте в Git!)

Формат PEM

PEM — это текст ключа в кодировке Base64. Распространённые форматы:

-----BEGIN PUBLIC KEY-----      ← Открытый ключ PKCS#8
MIIBIjANBgkqhkiG9w0BAQEFAAOC...
-----END PUBLIC KEY-----

-----BEGIN RSA PRIVATE KEY-----  ← Закрытый ключ PKCS#1
MIIEpAIBAAKCAQEA0d7...
-----END RSA PRIVATE KEY-----

-----BEGIN PRIVATE KEY-----      ← Закрытый ключ PKCS#8
MIIEvgIBADANBgkqhkiG9w0BAQEF...
-----END PRIVATE KEY-----

PKCS#8 — универсальный формат; PKCS#1 — специфичен для RSA. Большинство современных систем предпочитают PKCS#8.


Шифрование открытым ключом + Расшифровка закрытым ключом

Используя инструмент шифрования/расшифровки RSA:

  1. Вставьте открытый текст в поле ввода
  2. Выберите «Шифровать открытым ключом»
  3. Вставьте открытый ключ получателя
  4. Нажмите зашифровать, чтобы получить шифротекст
  5. Получатель расшифровывает своим закрытым ключом для восстановления оригинала

Подпись закрытым ключом + Проверка открытым ключом

Подпись доказывает «это сообщение действительно от меня»:

  1. В инструменте шифрования/расшифровки RSA выберите «Подписать закрытым ключом»
  2. Введите сообщение и свой закрытый ключ
  3. Сгенерируйте значение подписи
  4. Другие проверяют подпись вашим открытым ключом, подтверждая, что сообщение не было изменено

RSA vs AES: когда использовать

Сценарий Рекомендация Причина
Шифрование больших файлов AES RSA слишком медленный для больших объёмов данных
Обмен ключами RSA Зашифровать ключ AES открытым ключом
Цифровые подписи RSA Асимметричная природа идеально подходит
JWT-токены RSA Сервер подписывает закрытым ключом, клиенты проверяют открытым

На практике они часто комбинируются: RSA передаёт ключ AES, AES шифрует сами данные (гибридное шифрование).


Распространённые проблемы

Проблема Причина Решение
Ошибка расшифровки Несоответствие ключей Убедитесь, что открытый и закрытый ключи из одной пары
Ошибка «данные слишком длинные» RSA имеет ограничение длины Используйте AES или шифруйте по сегментам
Ошибка разбора формата Отсутствуют заголовки PEM Проверьте, что скопировали полный ключ
Медленная генерация 4096-битный ключ Это нормально; сначала попробуйте 2048-бит

Итоги

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

#RSA#密钥对#非对称加密#公钥#私钥