Библиотека Jose реализует работу с JSON Web Tokens (JWT), JSON Web Signature (JWS), JSON Web Encryption (JWE) и JSON Web Keys (JWK) в соответствии со спецификациями JOSE (JSON Object Signing and Encryption). Одним из ключевых аспектов её использования является корректный выбор криптографического алгоритма и типа ключа.
В экосистеме Jose алгоритмы делятся на несколько категорий:
Тип ключа напрямую определяет, какие алгоритмы могут быть использованы. Ошибочный выбор приводит либо к ошибке выполнения, либо к криптографически небезопасной конфигурации.
В контексте Jose используются следующие основные типы ключей:
1. Symmetric key (oct)
2. RSA key pair
3. EC (Elliptic Curve) key pair
4. OKP (Octet Key Pair)
| Алгоритм | Тип ключа | Поддерживаемые операции | Особенности |
|---|---|---|---|
| HS256 | oct (симметричный) | Подпись / проверка одним секретом | Быстрый, но требует безопасного хранения общего секрета |
| HS384 | oct (симметричный) | Подпись / проверка одним секретом | Увеличенная длина хэша |
| HS512 | oct (симметричный) | Подпись / проверка одним секретом | Максимальная стойкость среди HMAC |
| RS256 | RSA | Подпись (private), проверка (public) | Широко используется, поддерживается везде |
| RS384 | RSA | Подпись / проверка | Более длинный хэш SHA-384 |
| RS512 | RSA | Подпись / проверка | Повышенная криптостойкость |
| PS256 | RSA-PSS | Подпись / проверка | Более современный и безопасный вариант RSA |
| PS384 | RSA-PSS | Подпись / проверка | Усиленная версия PSS |
| PS512 | RSA-PSS | Подпись / проверка | Максимальная стойкость RSA-PSS |
| ES256 | EC (P-256) | Подпись / проверка | Компактные подписи, высокая эффективность |
| ES384 | EC (P-384) | Подпись / проверка | Повышенная криптостойкость |
| ES512 | EC (P-521) | Подпись / проверка | Максимальная стойкость EC |
| EdDSA | OKP (Ed25519 / Ed448) | Подпись / проверка | Современный стандарт, высокая скорость и безопасность |
Алгоритмы HS256, HS384 и HS512 требуют единого секрета:
HMAC(K, m) = H((K opad) H((K ipad) m))
Использование таких алгоритмов оправдано в доверенной среде, где отсутствует необходимость распределения публичных ключей.
RS256, RS384 и RS512 используют классическую схему с асимметричной криптографией:
RSA требует большего размера ключей (2048 бит минимум, часто 3072 или 4096).
Преимущество — широкая совместимость с системами, включая устаревшие.
PS256, PS384 и PS512 являются улучшенной версией RSA:
В Jose они требуют RSA ключей, но отличаются схемой подписи.
ES256, ES384, ES512 используют EC ключи:
E = kG
где:
EC алгоритмы часто используются в мобильных и высоконагруженных системах.
EdDSA — современный стандарт подписи:
Jose поддерживает EdDSA как предпочтительный вариант для новых систем.
Некоторые ограничения, которые важно учитывать:
Несовместимость проявляется на этапе выполнения:
alg not supportedinvalid key typeinvalid algorithm/key combinationПри проектировании системы на Jose выбор обычно определяется требованиями:
Каждый из вариантов требует строгого соответствия типа ключа и алгоритма, иначе криптографическая модель теряет корректность.