Алгоритмы подписи: полный список поддерживаемых

Библиотека Jsrsasign реализует единый криптографический слой поверх JavaScript, предоставляя интерфейсы для создания и проверки цифровых подписей, JWT/JWS, X.509 сертификатов и PKI-операций. Центральным компонентом является модуль KJUR.crypto.Signature, который абстрагирует множество алгоритмов через строковые идентификаторы.

Поддержка алгоритмов охватывает несколько семейств: RSA (PKCS#1 v1.5 и PSS), ECDSA, HMAC и ограниченно EdDSA, а также специальное значение none.


RSA PKCS#1 v1.5 (классическая схема RSA)

Самый распространённый класс алгоритмов подписи в Jsrsasign основан на RSA с PKCS#1 v1.5 padding. Эти алгоритмы используются как в низкоуровневых API, так и в JWS.

Поддерживаемые варианты:

  • SHA1withRSA
  • SHA224withRSA
  • SHA256withRSA
  • SHA384withRSA
  • SHA512withRSA
  • MD5withRSA (устаревший, используется только в совместимых сценариях)

Особенности реализации:

  • Хеширование выполняется перед подписью
  • Подпись формируется через RSA private key
  • Совместимость с большинством PKI-инфраструктур
  • Широко используется в JWT (RS256, RS384, RS512)

Соответствие JWS:

JWS alg Jsrsasign
RS256 SHA256withRSA
RS384 SHA384withRSA
RS512 SHA512withRSA

RSA-PSS (Probabilistic Signature Scheme)

RSA-PSS обеспечивает более современную модель подписи с рандомизированным паддингом, повышая криптостойкость по сравнению с PKCS#1 v1.5.

Поддерживаемые алгоритмы:

  • SHA256withRSAandMGF1
  • SHA384withRSAandMGF1
  • SHA512withRSAandMGF1

Характеристики:

  • Использует MGF1 (Mask Generation Function)
  • Включает соль (salt) в процесс подписи
  • Требует строгого соответствия параметров при верификации

Соответствие JWS:

JWS alg Jsrsasign
PS256 SHA256withRSAandMGF1
PS384 SHA384withRSAandMGF1
PS512 SHA512withRSAandMGF1

ECDSA (Elliptic Curve Digital Signature Algorithm)

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

Поддерживаемые кривые и хеши:

  • SHA256withECDSA (кривая P-256)
  • SHA384withECDSA (P-384)
  • SHA512withECDSA (P-521)

Особенности:

  • Основан на эллиптических кривых NIST
  • Требует корректной сериализации DER-подписи
  • Широко применяется в мобильных и Web3-системах

Соответствие JWS:

JWS alg Jsrsasign
ES256 SHA256withECDSA
ES384 SHA384withECDSA
ES512 SHA512withECDSA

HMAC (симметричная подпись)

HMAC-алгоритмы используются в JWT для сценариев с общим секретом.

Поддерживаемые варианты:

  • HmacSHA256
  • HmacSHA384
  • HmacSHA512

Характеристики:

  • Используется симметричный ключ
  • Основан на SHA-x хеш-функциях
  • Не требует PKI-инфраструктуры
  • Быстрая генерация и проверка

Соответствие JWS:

JWS alg Jsrsasign
HS256 HmacSHA256
HS384 HmacSHA384
HS512 HmacSHA512

EdDSA (Ed25519 / Ed448)

Поддержка EdDSA в Jsrsasign присутствует в ограниченном виде и зависит от версии библиотеки.

Возможные обозначения:

  • Ed25519
  • Ed448

Особенности:

  • Современная схема на основе кривых Edwards
  • Высокая скорость и устойчивость к атакам через побочные каналы
  • Компактные ключи и подписи фиксированной длины
  • В некоторых конфигурациях реализуется через внешние криптографические backend-слои

Ограничения:

  • Поддержка может быть неполной в старых версиях Jsrsasign
  • Часто используется через JWA/JWS-обёртки, а не напрямую через Signature

Специальный алгоритм none

Алгоритм none используется в JWS как отсутствие подписи.

Особенности:

  • Подпись отсутствует полностью
  • Используется только в тестовых или специфических сценариях
  • Проверка подписи фактически отключена

Соответствие JWS:

JWS alg Jsrsasign
none none

Внутренние идентификаторы KJUR.crypto.Signature

Помимо JWS-совместимых обозначений, Jsrsasign использует внутренние строки:

RSA:

  • SHA1withRSA
  • SHA256withRSA
  • SHA384withRSA
  • SHA512withRSA
  • MD5withRSA

RSA-PSS:

  • SHA256withRSAandMGF1
  • SHA384withRSAandMGF1
  • SHA512withRSAandMGF1

ECDSA:

  • SHA256withECDSA
  • SHA384withECDSA
  • SHA512withECDSA

HMAC:

  • HmacSHA256
  • HmacSHA384
  • HmacSHA512

Особенности выбора алгоритмов

RSA PKCS#1 v1.5

  • Максимальная совместимость
  • Подходит для интеграции с устаревшими системами

RSA-PSS

  • Рекомендуемый вариант для новых систем RSA
  • Повышенная криптостойкость

ECDSA

  • Оптимален для мобильных и Web-приложений
  • Меньшие ключи при высокой безопасности

HMAC

  • Используется при отсутствии PKI
  • Подходит для внутренних API и сервисов

EdDSA

  • Современная криптография с высокой скоростью
  • Ограниченная совместимость в некоторых версиях Jsrsasign

Структура алгоритмов в контексте JWS

Jsrsasign тесно интегрирован со спецификацией JSON Web Signature, где алгоритмы определяются через параметр alg.

Основные группы:

  • HSxxx → HMAC
  • RSxxx → RSA PKCS#1 v1.5
  • PSxxx → RSA-PSS
  • ESxxx → ECDSA
  • none → отсутствие подписи

Эта классификация напрямую отображается на внутренние реализации KJUR.crypto.Signature.


Совместимость и ограничения

  • Не все алгоритмы доступны во всех сборках Jsrsasign
  • ECDSA требует корректной поддержки эллиптических кривых в окружении
  • RSA-PSS требует строгой синхронизации параметров salt length
  • MD5-based алгоритмы считаются криптографически устаревшими
  • EdDSA зависит от версии и конфигурации сборки