Каков источник энтропии для Crypto.getRandomValues? - PullRequest
1 голос
/ 13 мая 2019

Я работаю над большим веб-приложением, которое использует forge.js для генерации закрытых ключей RSA на стороне клиента.Насколько я читаю документацию Forge - https://github.com/digitalbazaar/forge#rsa - IT использует webcrypto API из браузера для генерации ключа RSA / предоставления случайных чисел.

У меня также есть куча тестов selenium2, которые проверяют различные сценарии (связанных с генерацией RSA).Я наблюдаю частое время ожидания теста, когда тесты выполняются в среде докера.Моя докерская среда использует Ubuntu.Тесты выполняются на Firefox 64 с использованием selenium2 3.11

. После некоторого анализа я пришел к выводу, что таймауты тестирования вызваны медленной генерацией RSA-ключей.Конечно, анализ не является пуленепробиваемым, поскольку проблема воспроизводится в горячем режиме на компьютере разработчика.

Из анализа похожих проблем в Java я знаю, что это может быть вызвано использованием источника энтропии блокировки - / dev /случайный вместо / dev / urandom.Итак, мои вопросы:

  • что является источником энтропии в webcrypto (Firefox 64, webcrypto, docker)
  • можно ли изменить источник энтропии?

1 Ответ

0 голосов
/ 14 мая 2019

Нельзя выбрать источник энтропии для Web Crypto.

В общем, задержка генерации ключей RSA-ключей заключается в проверке первичности, а не в случайности.

Вместо использования forge для генерации ключа RSA, используйте Web Crypto напрямую - https://github.com/diafygi/webcrypto-examples#rsassa-pkcs1-v1_5---generatekey

Если вам нужно создать ключ в Node в Javascript-совместимом интерфейсе, посмотрите: https://github.com/PeculiarVentures/webcrypto

...