Достаточно ли безопасны 512-битные ключи (пара открытых закрытых ключей) для JWT (NodeJS) - PullRequest
0 голосов
/ 06 сентября 2018

Я реорганизовал нашу структуру подписи и проверки JWT, чтобы сделать ее более безопасной.Я использовал эту статью в качестве отправной точки (и принял предложение использовать алгоритм RS256 в отличие от алгоритма HS256): https://medium.com/@siddharthac6/json-web-token-jwt-the-right-way-of-implementing-with-node-js-65b8915d550e, и он рекомендует использовать 512-битные ключи, говоря

«Почти невозможно выполнить грубый поиск по 256-битному ключу»

Но, когда я ищу скрипт openssl для генерации этого токена, я попадаю на страницу, которая по умолчанию равна 4096битовый ключ: https://gist.github.com/ygotthilf/baa58da5c3dd1f69fae9 с одним пользователем, цитирующим RSA, который говорит:

RSA утверждает, что [...] 2048-битных ключей достаточно до 2030 года.

Такое ощущение, что есть противоречивая информация.По сути, мой вопрос заключается в том, какой алгоритм jwt и размер ключа следует использовать для корпоративного приложения, и достаточно ли ключей RS256 + 512 бит (на что я переключился)?Я немного понимаю компромисс между безопасностью и скоростью, но меня смущает, почему 512-битные ключи предлагаются в средней статье, но даже не упомянуты в этом скрипте github, а RSA говорит, что даже 2048-битные ключи могут быть устаревшими к 2030 году.

Спасибо.

1 Ответ

0 голосов
/ 07 сентября 2018

В криптографии и, следовательно, для алгоритмов подписи и шифрования, определенных спецификациями JWS / JWE, у нас может быть два типа ключей:

  • Симметричный (= общий секрет)
  • Асимметричный (= пара открытого / секретного ключей)

Алгоритм HS256 использует симметричные ключи, и для этого типа ключа текущая рекомендация состоит в том, чтобы использовать как минимум 256-битные ключи.

Алгоритм RS256 использует асимметричные пары ключей RSA. Рекомендуемый минимальный размер - 2048 бит.

В сообщении, которое вы упомянули, мы можем прочитать

«с каждым удвоением длины ключа RSA расшифровка происходит как минимум в 6 раз медленнее. »

Это правда, однако, как правило, ключи используются в течение длительного периода времени (например, 2 недели), а вычисление / проверка подписи с помощью ключа 2048 бит занимает ок. 250 мксек.

Так что, если вы не работаете, ключ RSA 512 бит - плохая идея . Полезную информацию вы найдете в Рекомендации по управлению ключами из NIST на страницах 53 и 54.

...