Шифрование RSA открытым ключом

Зашифруйте короткое сообщение открытым ключом RSA (PEM): RSA-OAEP SHA-256, OAEP SHA-1 или PKCS#1 v1.5. Тестовая пара ключей создаётся в один клик. Только локально.

Рекомендуемое дополнение — OAEP. MGF1 использует ту же хеш-функцию, как в Web Crypto и openssl pkeyutl -pkeyopt rsa_oaep_md.

RSA шифрует только короткие данные: для 2048-битного ключа не более 190 байт (OAEP SHA-256), 214 байт (OAEP SHA-1) или 245 байт (PKCS#1 v1.5). Длинные данные шифруйте AES, а RSA — только ключ AES.

Шифрование RSA рандомизировано: один и тот же текст дважды даёт разные шифротексты, и оба корректно расшифровываются.

Работает полностью в вашем браузере. Ваши данные никуда не загружаются.

Что такое Шифрование RSA?

Шифрует короткое сообщение или симметричный ключ открытым ключом RSA в формате PEM (SPKI BEGIN PUBLIC KEY, PKCS#1 BEGIN RSA PUBLIC KEY, сертификат X.509 или закрытый ключ, из которого берётся открытая часть). Расшифровать результат может только владелец соответствующего закрытого ключа.

Как пользоваться Шифрование RSA

  1. Вставьте Открытый ключ (PEM) получателя или нажмите Сгенерировать тестовую пару ключей (2048 бит), чтобы попробовать.
  2. Выберите Дополнение: рекомендуется RSA-OAEP (SHA-256); ориентируйтесь на то, что ожидает принимающий код.
  3. Введите Открытый текст (или переключите кодировку ввода на Hex, чтобы шифровать сырые байты, например ключ AES).
  4. Нажмите Зашифровать и скопируйте шифротекст в Base64 или Hex.

Пример

Ввод
"Hello RSA" with a 2048-bit public key, RSA-OAEP (SHA-256), Base64 output
Вывод
A 344-character Base64 string (256 bytes) that changes on every run

RSA-OAEP рандомизирован, поэтому фиксированного результата нет; расшифровка закрытым ключом вернёт "Hello RSA".

Когда использовать Шифрование RSA

Используйте RSA для шифрования небольших секретов — пароля, токена или случайно сгенерированного ключа AES — для того, чей открытый ключ у вас есть. Не применяйте его для больших данных: шифруйте данные AES, а RSA — только ключ AES (гибридное шифрование), либо используйте PGP. Предпочитайте OAEP; PKCS#1 v1.5 нужен лишь если этого требует устаревшая система.

Как работает Шифрование RSA

Шифрование RSA вычисляет c = mᵉ mod n для дополненного сообщения. OAEP (PKCS#1 v2.2) маскирует сообщение через MGF1 с SHA-256 или SHA-1 и случайными байтами затравки; PKCS#1 v1.5 добавляет в начало случайное ненулевое дополнение. Дополнение случайно, поэтому два шифрования одного текста дают разные шифротексты. Длина шифротекста равна длине модуля (256 байт для 2048-битных ключей). Максимальный размер сообщения — k − 2·hLen − 2 байт для OAEP и k − 11 для v1.5 (190, 214 и 245 байт для 2048-битного ключа). Ключи разбираются, а шифрование выполняется через node-forge; результаты совместимы с OpenSSL, Web Crypto и Node.js.

Распространенные Случаи Использования

  • Зашифровать сеансовый ключ AES для тестов гибридного шифрования
  • Проверить, что ваш сервер расшифрует шифротекст OAEP-SHA256 из браузера
  • Отправить короткий секрет тому, кто передал вам свой открытый ключ
  • Получить тестовые данные PKCS#1 v1.5 для устаревшего API
  • Разобраться, как ограничения на размер сообщения RSA зависят от длины ключа и дополнения

Примечание по Безопасности

Ключи и сообщения обрабатываются только в вашем браузере. Не вставляйте рабочие закрытые ключи на сайты, которые вы не контролируете, — создайте тестовую пару ключей.

Часто Задаваемые Вопросы

Почему моё сообщение слишком длинное?

RSA может зашифровать всего несколько сотен байт. С 2048-битным ключом OAEP SHA-256 допускает 190 байт. Длинные данные шифруйте AES, а RSA используйте только для ключа AES.

Какое дополнение выбрать?

RSA-OAEP с SHA-256 для новых систем (Web Crypto RSA-OAEP с hash: 'SHA-256', OpenSSL pkeyutl -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256). OAEP SHA-1 — значение по умолчанию во многих старых библиотеках (Java RSA/ECB/OAEPWithSHA-1AndMGF1Padding). PKCS#1 v1.5 — только для совместимости со старыми системами.

Почему шифротекст каждый раз меняется?

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

Можно ли шифровать закрытым ключом?

Можно вставить закрытый ключ — для шифрования используется его открытая половина. «Шифрование закрытым ключом» в смысле подписи — другая операция, и здесь она не предлагается.

Другие категории