Какие из этих кривых Safe ECC доступны в Bouncy Castle?

Я пытаюсь выяснить, какие "безопасные" кривые ECC поддерживаются в Bouncy Castle. Я нашел несколько кривых в пространстве имен Org.BouncyCastle.Asn1, но их трудно найти, и я уверен, что некоторые из них я пропустил.

Существуют ли какие-либо из следующих кривых в Bouncy Castle? (должен ли я их использовать?)

  • M-221
  • E-222
  • Кривая1174
  • Кривая25519
  • E-382
  • M-383
  • Кривая383187
  • Кривая41417
  • Ed448-Златовласка
  • M-511
  • E-521

person halfbit    schedule 17.03.2014    source источник
comment
Связанный crypto.stackexchange.com/q/15066/371   -  person halfbit    schedule 27.02.2015


Ответы (2)


Я нашел (очевидно) полный список поддерживаемых кривых ECC. от Надувного замка. Кажется, он соответствует именованным кривым, определенным в кодовая база.

Ни одно из имен кривых не совпадает с именами, которые вы указали.

Однако ничто не мешает вам отследить1 и использовать параметры, определяющие любую из перечисленных вами кривых, для определения ECParameterSpec ... или ECNamedCurveParameterSpec.


1 — параметры указаны в статье, на которую вы ссылаетесь. По словам @mentalurg, привести их в правильную форму непросто. Тем не менее, это проект с открытым исходным кодом, поэтому, если вам это небезразлично, ничто не мешает вам выполнить работу и отправить патч. Или, если у вас нет времени, спонсируйте их, чтобы они сделали работу за вас.

person Stephen C    schedule 17.03.2014
comment
Если конечно математическое определение не отличается от того, что реализовано в Bouncy. - person Maarten Bodewes; 17.03.2014

@Stephen C: «отслеживание и использование параметров, определяющих любую из кривых» - неправильно. Параметры (A и B) доступны только для формы Вейерштрасса. Для форм Эдвардса или Монгомери необходимо выполнить (подверженное ошибкам) ​​преобразование координат в форму Вейерштрасса, вызвать шифрование, а затем преобразовать результаты обратно в исходную систему координат.

Помимо ошибок преобразования, производительность такой преобразованной кривой может быть не оптимальной.

Как в собственной реализации Java, так и в Bouncy Castle отсутствует прямая поддержка форм кривых, отличных от Weierstrass. И в этом проблема.

person mentallurg    schedule 04.01.2015
comment
Само преобразование координат не подвержено ошибкам. Трудно реализовать скалярное умножение в форме Вейерштрасса — теряется большинство преимуществ безопасной кривой. - person CodesInChaos; 04.01.2015
comment
Bouncy Castle — это проект с открытым исходным кодом. Если вы считаете, что поддержка других форм параметров / других кривых оправдана ... было бы более конструктивно написать код самостоятельно и отправить им патч. Или спонсируйте проект, чтобы реализовать его для вас! - person Stephen C; 28.02.2015
comment
@Стивен С: Конечно. Если вы считаете, что это более конструктивно, просто сделайте это, и, пожалуйста, сообщите нам, когда он будет готов. - person mentallurg; 01.03.2015
comment
@mentallurg - Кажется, ты думаешь, что меня это волнует. Мой совет для тех, кто действительно заботится об этом. Кто-то, кто на самом деле хочет, чтобы Bouncy Castle реализовал эти кривые. Но, конечно же, нытье об этом на StackOverflow НЕ решит проблему. - person Stephen C; 02.03.2015