Что jsrsasign поддерживает, а что нет

Библиотека jsrsasign ориентирована на прикладную криптографию в JavaScript и реализует широкий набор алгоритмов, достаточный для работы с цифровыми подписями, сертификатами и токенами.

Хэш-функции

Поддерживается набор классических криптографических хэшей:

  • SHA-1
  • SHA-256
  • SHA-384
  • SHA-512
  • RIPEMD-160

Основной упор сделан на SHA-2 семейство, поскольку SHA-1 считается устаревшим и используется преимущественно для совместимости с легаси-системами.

Хэш-функции применяются в:

  • формировании цифровых подписей
  • JWT (JWS)
  • вычислении отпечатков сертификатов (fingerprint)
  • PKCS#1 схемах подписи

Симметричное шифрование

jsrsasign поддерживает базовые симметричные алгоритмы:

  • AES (128/192/256)
  • Triple DES (3DES)

Режимы работы включают CBC и ECB, при этом ECB считается небезопасным и используется только для совместимости с устаревшими протоколами.

Важно учитывать, что библиотека не ориентирована на высокоуровневое шифрование данных в приложениях — симметричная криптография здесь вспомогательная.


Асимметричная криптография

Основной функциональный блок библиотеки.

RSA

Поддерживаются:

  • генерация и обработка ключей RSA
  • подпись и проверка подписи
  • шифрование и расшифрование (PKCS#1 v1.5)
  • работа с PEM и DER форматами
  • PKCS#8 и PKCS#1 представления ключей

RSA является центральным алгоритмом для большинства сценариев использования jsrsasign, включая JWT и X.509.

ECDSA

Поддержка эллиптических кривых:

  • secp256r1 (P-256)
  • secp384r1 (P-384)
  • secp521r1 (P-521)

ECDSA используется для компактных и быстрых подписей, особенно в мобильных и веб-средах.


Поддержка JWT (JSON Web Token)

Одна из наиболее развитых частей библиотеки.

Реализованы стандарты:

  • JWS (JSON Web Signature)
  • JWE (частично, ограниченно)
  • JWT (RFC 7519)

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

  • HS256 / HS384 / HS512
  • RS256 / RS384 / RS512
  • ES256 / ES384 / ES512

Возможности включают:

  • создание токенов
  • верификацию подписи
  • декодирование payload без проверки
  • работу с заголовками JWT

JWT-часть часто используется как самостоятельный модуль внутри jsrsasign.


X.509 сертификаты

Библиотека предоставляет полный набор инструментов для работы с сертификатами X.509:

  • парсинг сертификатов (PEM/DER)
  • извлечение полей (subject, issuer, validity)
  • проверка подписи сертификата
  • работа с цепочками сертификатов (частично)
  • генерация самоподписанных сертификатов
  • управление расширениями (extensions)

Также поддерживаются:

  • CSR (Certificate Signing Request)
  • генерация запросов на сертификаты
  • PKCS#10 структура

Форматы данных

jsrsasign поддерживает множество стандартных криптографических форматов:

  • PEM (Base64 с заголовками)
  • DER (бинарный ASN.1)
  • PKCS#1 (RSA ключи)
  • PKCS#8 (универсальные ключи)
  • PKCS#10 (CSR)
  • JWK (JSON Web Key)

Преобразование между форматами является одной из сильных сторон библиотеки, особенно при интеграции с внешними API и сервисами.


ASN.1 парсинг

Встроен базовый ASN.1 парсер:

  • чтение структур сертификатов
  • разбор ключей
  • декодирование сложных бинарных структур

ASN.1 реализация не является полноценной заменой специализированных парсеров, но покрывает все нужды X.509 и PKI-операций.


Генерация случайных значений

Поддерживается генерация:

  • криптографически случайных чисел
  • RSA ключевых пар
  • случайных байтов

В зависимости от окружения может использоваться:

  • Web Crypto API (в браузере)
  • встроенные JS fallback-реализации

Ограничения и отсутствующие возможности

Отсутствие полноценной high-performance криптографии

jsrsasign не оптимизирован под высоконагруженные серверные сценарии. Реализация в чистом JavaScript ограничивает:

  • скорость RSA операций
  • работу с большими объёмами данных
  • параллельные криптографические вычисления

Нет поддержки современного постквантового криптостека

Отсутствуют:

  • lattice-based алгоритмы
  • CRYSTALS-Kyber
  • CRYSTALS-Dilithium
  • Falcon
  • SPHINCS+

Библиотека ориентирована на классическую PKI-модель.


Ограниченная реализация JWE

В отличие от JWS/JWT, шифрование JWT:

  • поддерживается частично
  • не покрывает весь спектр RFC 7516
  • ограничено сценариями совместимости

Отсутствие полноценного TLS/SSL стека

jsrsasign не реализует:

  • TLS протокол
  • HTTPS соединения
  • управление сертификатами на уровне сетевого слоя

Библиотека работает только с криптографическими примитивами и структурами данных.


Нет строгих гарантий constant-time выполнения

В отличие от специализированных криптографических библиотек на C/Go/Rust:

  • отсутствует строгая защита от timing-атаки во всех операциях
  • некоторые алгоритмы реализованы через высокоуровневый JavaScript

Это ограничивает применение в высокозащищённых системах.


Ограниченная потоковая обработка

Отсутствуют:

  • streaming encryption
  • обработка больших файлов по частям

Операции выполняются над целыми буферами данных.


Нет встроенного протокольного уровня

Библиотека не реализует:

  • OAuth сервер/клиент
  • SAML обработку на уровне протокола
  • OpenID Connect flow

Поддержка ограничивается криптографией, используемой в этих протоколах.


Архитектурные особенности, влияющие на возможности

jsrsasign построена как:

  • монолитная JavaScript-библиотека
  • набор модулей без жёсткой изоляции слоёв
  • реализация, ориентированная на совместимость с браузером

Это приводит к следующим особенностям:

  • высокая переносимость между средами
  • зависимость от JavaScript runtime
  • отсутствие нативных ускорителей

Практическое позиционирование функциональности

Функционально библиотека занимает промежуточную нишу:

  • выше уровня простых crypto API браузера
  • ниже уровня специализированных криптографических SDK

Она оптимально подходит для:

  • JWT в веб-приложениях
  • работы с X.509 сертификатами
  • интеграции с PKI инфраструктурой
  • образовательных и прикладных криптографических задач

При этом она не предназначена для:

  • построения защищённых коммуникационных протоколов
  • высокопроизводительных серверных криптосервисов
  • современных постквантовых систем безопасности