Перейти к содержимому
ecdsa.com

HS256

Алгоритм JWS HMAC с SHA-256 (RFC 7518, § 3.2), в котором издатель и проверяющая сторона используют один общий секретный ключ длиной не менее 256 бит, поэтому любой, кто может проверить токен, может и выпустить его.
Другие написанияHS256HMAC-SHA256 JWTHS512

Это единственный алгоритм JWS, помеченный в JWA как обязательный для реализации (Required), и алгоритм по умолчанию во многих руководствах и фреймворках. 32-байтовый тег вычисляется над header.payload с общим секретом; при проверке тег вычисляется заново и сравнивается за постоянное время.

Главная проблема — слабые секреты: RFC 7518 требует ключей не короче длины хеша (256 бит), но токены, подписанные коротким или словарным секретом вроде secret, можно взломать офлайн по одному-единственному токену (hashcat в режиме 16500, jwt_tool), после чего атакующий выпускает любые токены. Используйте 32 случайных байта или больше, но никогда не пароль, и проверяйте секрет инструментом проверки секретов JWT.

HS256 подходит, когда один и тот же сервис и выпускает, и проверяет токены. Для внешних проверяющих сторон, микросервисов или публичных клиентов используйте асимметричный алгоритм, чтобы у проверяющих сторон был только открытый ключ, и жёстко закрепите алгоритм за каждым ключом, чтобы избежать путаницы с RS256.

Стандарты и ссылки

Все термины