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