Криптография ECC действительно быстра по сравнению с другими асимметричными примитивами, такими как RSA и стандартный DH.Однако генерация параметров домена для кривой очень медленная;думаю, что часы даже для небольших размеров.Поэтому обычно параметры кривой выбираются из набора известных именованных кривых.Большинство известных кривых находятся на веб-сайте безопасных кривых проф. Даниэля Бернштейна и Тани Ланге.
Обычно кривая, используемая в протоколе, всегда является специфическим типом, напримеркривые над F (p) называются простыми кривыми.Затем выбирается один набор параметров домена, например, стандартизированные кривые NIST.И, наконец, набор параметров домена устанавливается.Обычно это выполняется по имени (например, просто NIST P-256) или по идентификатору (например, 1.2.840.10045.3.1.7 или {iso (1) member-body (2) us (840) ansi-x962 (10045) кривых (3) prime (1) prime256v1 (7)} полностью).
Для Node.JS вы выбрали параметры (включая кривую и базовую точку) перед тем, как сгенерировать пару ключей для этих параметров.:
const alice = crypto.createECDH('secp521r1');
const aliceKey = alice.generateKeys();
первый из них уже устанавливает все параметры домена 6/7.Генерация ключа затем просто генерирует случайное секретное значение s
для личного ключа.После умножения на базовую точку G
вы получите общую точку W
, которая завершает набор параметров для выполнения криптографии на основе EC.