Создание пары ключей RSA в JavaScript

Недавно я нашел эту библиотеку JavaScript RSA: http://www.ohdave.com/rsa/. Однако для этого требуется, чтобы ключ был предварительно сгенерирован. Вот мои вопросы/вопросы:

  • Я хотел бы создать пару ключей RSA в JavaScript (так что мне не нужно менять код каждый раз, когда я хочу новую пару ключей.)

  • Пока я понимаю, как это можно использовать для отправки защищенных данных, если я не ошибаюсь, эта библиотека не может использоваться для того, чтобы клиент мог получать защищенные данные с сервера (поскольку публичные и частные показатели и модуль, передаются текстовым текстом с сервера). Я ошибаюсь?

Мне бы хотелось обсудить это. Я не эксперт по безопасности, но я довольно уверенно понимаю асимметричное шифрование.

Ответ 1

Для создания ключевой пары требуется сильный генератор случайных чисел (я не думаю, что у вас его есть в JavaScript), и довольно много вычислений (для тестирования примитивов). Затем, когда у вас есть ваша пара, когда вы передаете свой открытый ключ на другую сторону, есть возможность для атаки "человек-в-середине", так как нет проверки целостности передачи открытого ключа.

Вы получите безопасную передачу тому, у кого есть закрытый ключ. С вашего вопроса неясно, является ли это клиент или сервер. Вы можете инициализировать общий секрет, имея того, кто имеет только открытый ключ, генерирует общий секрет, шифрует его и передает его тому, у кого есть открытый ключ.

Вы можете получить аналогичный набор функций (зависимость от генератора случайных чисел, уязвимость к MITM, способность создавать общий секрет для использования в качестве ключа сеанса), но с гораздо меньшим количеством вычислений, вместо этого вместо обмена ключами Diffie-Hellman.

Вероятно, вам лучше понять, как настроить SSL на вашем сервере.