Библиотека поддерживает набор стандартных хеш-алгоритмов,
используемых в современных протоколах безопасности, цифровых подписях и
токенах.
SHA-1
Алгоритм исторически применялся в X.509 сертификатах и ранних версиях
TLS. Несмотря на известные криптографические слабости (коллизии), он до
сих пор встречается в совместимых системах.
SHA-2 семейство
Основной современный стандарт:
- SHA-224
- SHA-256
- SHA-384
- SHA-512
На практике наиболее распространён SHA-256, особенно в JWT, TLS и
PKI-инфраструктуре.
В контексте Jsrsasign хеши используются в:
- формировании цифровых подписей (RSA/ECDSA)
- вычислении отпечатков сертификатов
- HMAC-подписях
SHA-3 (ограниченная
поддержка)
В некоторых конфигурациях доступна поддержка SHA-3 (Keccak), однако в
большинстве сценариев библиотека ориентируется на SHA-2 как
индустриальный стандарт.
MD5
Поддерживается исключительно для совместимости. Использование в
криптографических задачах считается небезопасным, но алгоритм
встречается в устаревших системах и контрольных суммах.
Алгоритмы симметричного HMAC
HMAC используется для аутентификации сообщений и проверки целостности
данных.
Поддерживаемые варианты:
- HMAC-SHA1
- HMAC-SHA256
- HMAC-SHA384
- HMAC-SHA512
Особенности реализации
HMAC в Jsrsasign опирается на стандарт RFC 2104 и применяется в:
- JWT (подпись HS256, HS384, HS512)
- API-аутентификации
- проверке целостности сообщений
Ключевым свойством является использование секретного ключа,
одинакового на стороне генерации и верификации.
Ассиметричные алгоритмы RSA
RSA является одним из базовых алгоритмов библиотеки и реализован в
полном соответствии с PKCS#1.
Поддерживаемые режимы RSA:
- RSASSA-PKCS1-v1_5 (классический режим подписи)
- RSA-PSS (современный рекомендованный стандарт)
- RSA-OAEP (шифрование)
Размеры ключей
Поддерживаются ключи:
- 1024 бит (устаревший минимум)
- 2048 бит (стандарт де-факто)
- 3072 и 4096 бит (повышенная стойкость)
Хеш-функции в RSA
RSA подписи комбинируются с SHA-256 и выше, формируя схемы:
- RS256 (RSA + SHA-256)
- RS384
- RS512
Криптография на
эллиптических кривых (ECC)
ECC является более современным и эффективным подходом по сравнению с
RSA при меньшей длине ключа.
Основные кривые:
- P-256 (secp256r1)
- P-384
- P-521
Алгоритмы ECDSA
ECDSA используется для цифровых подписей:
- ES256 (ECDSA + SHA-256)
- ES384
- ES512
Особенности ECC в Jsrsasign
- компактные ключи
- высокая производительность
- широкое использование в JWT и мобильных системах
DSA (Digital Signature
Algorithm)
Поддержка DSA присутствует в целях совместимости с устаревшими
системами.
Характеристики:
- основан на дискретном логарифме
- требует фиксированных параметров p, q, g
- используется реже из-за ограничений безопасности и гибкости
JWT и JOSE стандарты
Библиотека реализует полный стек работы с JSON Web Token и связанными
стандартами JOSE.
Поддерживаемые алгоритмы JWT:
HMAC
RSA
ECDSA
Структура JWT
JWT состоит из трёх частей:
Подпись формируется на основе выбранного алгоритма и секретного или
приватного ключа.
PKI и X.509 сертификаты
Одной из ключевых возможностей является работа с инфраструктурой
открытых ключей.
Поддерживаемые стандарты:
- X.509 v1/v3 сертификаты
- CRL (Certificate Revocation List)
- CSR (Certificate Signing Request)
Форматы представления:
- PEM (Base64 с заголовками)
- DER (бинарный формат)
Основные операции:
- парсинг сертификатов
- извлечение публичных ключей
- проверка цепочек доверия (частично)
- генерация CSR
PKCS стандарты
Поддержка семейства PKCS обеспечивает совместимость с промышленными
криптосистемами.
PKCS#1
Определяет RSA криптографию:
- формат ключей
- схемы подписи
- шифрование RSA-OAEP
PKCS#5
Используется для:
- деривации ключей (PBKDF2)
- шифрования приватных ключей паролем
PKCS#8
Стандарт для хранения приватных ключей:
- унифицированный формат
- поддержка RSA и EC ключей
PKCS#10
CSR формат для запроса сертификата.
ASN.1 и DER кодирование
Jsrsasign активно использует ASN.1 для работы с криптографическими
структурами.
ASN.1
Абстрактное описание структур данных:
- последовательности (SEQUENCE)
- целые числа (INTEGER)
- битовые строки (BIT STRING)
DER (Distinguished Encoding
Rules)
Строго бинарная сериализация ASN.1:
- используется в сертификатах
- обеспечивает детерминированное кодирование
- критически важно для подписи данных
Алгоритмы шифрования
Хотя библиотека ориентирована на подписи и PKI, присутствует
поддержка шифрования.
RSA-OAEP
Современный стандарт RSA-шифрования:
- использует SHA-1 или SHA-2 в маскировании
- устойчив к атакам на старые схемы PKCS#1 v1.5
AES (в ограниченных
сценариях)
Используется в связке с PKCS#5:
Поддержка Web Crypto
совместимости
Jsrsasign частично совместим с Web Cryptography API:
- импорт ключей
- экспорт ключей
- использование внешних ключевых материалов
Однако библиотека сохраняет собственную реализацию криптографических
примитивов для кросс-платформенности.
Форматы ключей и их
совместимость
PEM
Текстовый формат:
- —–BEGIN PUBLIC KEY—–
- —–BEGIN PRIVATE KEY—–
Используется для обмена между системами.
DER
Бинарный формат, часто используется в браузерах и низкоуровневых
системах.
JWK (JSON Web Key)
JSON-формат ключей:
- применяется в современных API
- используется в OAuth2 и OpenID Connect
Криптографические
подписи и их комбинации
Подпись в Jsrsasign всегда определяется комбинацией:
- алгоритма (RSA, ECDSA, HMAC)
- хеш-функции (SHA-256 и выше)
- формата данных (JWT, PKCS#7, raw message)
Типовые комбинации:
- RS256 = RSA + SHA-256
- ES256 = ECDSA + SHA-256
- HS256 = HMAC + SHA-256
Совместимость с
индустриальными стандартами
Библиотека ориентируется на RFC и стандарты:
- RFC 7515 (JWS)
- RFC 7519 (JWT)
- RFC 3447 (PKCS#1)
- RFC 5208 (PKCS#8)
- RFC 2986 (PKCS#10)
- RFC 5280 (X.509)
Эта совместимость позволяет использовать Jsrsasign в:
- серверной аутентификации
- микросервисной архитектуре
- мобильных приложениях
- браузерной криптографии