Типичная причина, по которой люди обычно используют заранее заданные эллиптические кривые вместо их создания, - это эффективность. Создать эллиптическую кривую несложно, но обычно сложно создать безопасный эллиптическая кривая, и, кроме того, относительно трудно убедить другую сторону в том, что кривая безопасна при ограниченной пропускной способности протокола. Веб-сайт SafeCurves объясняет многие атрибуты, которые желательны для кривой, и объясняет часть решений Curve25519.
Большинство известных эллиптических кривых также специально выбираются с точки зрения эффективности, используя простое число или форму, которая разработана так, чтобы быть максимально эффективной. Например, использование кривых с фиксированным простым числом, близким к степени двойки, значительно ускоряет определенные операции, а реализации обычно жестко закодированы, чтобы использовать преимущества конкретных простых чисел.
Кроме того, использование предварительно заданных эллиптических кривых означает, что гораздо проще писать реализации с постоянным временем. Это очень важно для онлайн-протоколов, таких как TLS, где можно продемонстрировать возможность использования реализаций с непостоянным временем. это возможное написать общие реализации эллиптических кривых с постоянным временем, но это сложно, и люди практически этого не делают.
Конечно, можно использовать фиксированные группы в не-EC Диффи-Хеллмана; Это делает TLS и SSH. Пока выбрана достаточно большая группа правильной формы, это надежно. Использование фиксированной группы также более эффективно с точки зрения пропускной способности протокола, поскольку параметры не нужно отправлять.
Также возможно генерировать случайные безопасные группы конечных полей, и это намного быстрее, чем создание безопасных эллиптических кривых, но все же достаточно медленно, чтобы обычно люди предварительно вычисляли параметры один раз, а затем использовали их в течение определенного периода времени.
Что касается RSA, повторное использование параметров обычно небезопасно. Кроме того, из соображений эффективности закрытый ключ часто включает $р$ и $q$, что немедленно скомпрометирует закрытый ключ любого, кто поделится $N$. Даже если поделиться $N$ не было проблем с безопасностью, потому что $р$ и $q$ не могут быть раскрыты, это было бы гораздо менее эффективно, чем создание новых параметров для каждого пользователя.