Без Elligator мы внезапно сможем увидеть что при дешифровании получили не случайный непонятный шум, а как бы 25519 точку на кривой
Зная, что может использоваться Elligator, мы этот шум превратим в точку автоматически. Это просто еще одно преобразование, которое нужно принимать во внимание. Чем оно лучше шифрования по известному ключу?
Теперь, после того как я сам реализовал Elligator, у меня возник вопрос: А нафига он нам нужен? Почему, например, не шифровать открытый ключ каким то быстрым шифром с известным ключом (по сути, ксорить с заранее выбранной псевдослучайной последовательностью)? Проще же, и быстрее, судя по объему вычислений
Я был не прав, эллигатор все правильно генерит именно для Curve25519 (а я смотрел на ключи для ed25519) Меня просто смутило, что код лежит в файле d25519/extra25519/extra25519.go и все методы используются от Ed25519 (edwards25519.FeMul(&t0, &t0, &u) ...)
Так что, всё гуд, я спокоен )
1) Я имел в виду, что если обернуть Elligator, то получившийся ключ будет не таким же, как если бы мы получали его из закрытого обычным способом и это довольно странно.
2) Curve25519 от Ed25519 отличается форматом кривой, при этом тот код, который вы привели, работает для Ed25519, а не для Curve25519. Вы это учитываете у себя в коде?
Портировал код Elligator на c#, даже тесты проходят. Правда беспокоит пара моментов:
1) Открытый ключ, полученный при помощи Elligator, не такой же как при обычном преобразовании ed25519
2) ed25519 вроде как для подписи, а нам нужно согласование ключей
Ясно, просто я кагбэ больше на c# и немного офигеваю от объема кода, который надо переносить. А тестовые вектора не подскажете где лежат? Интересно допилить
Зная, что может использоваться Elligator, мы этот шум превратим в точку автоматически. Это просто еще одно преобразование, которое нужно принимать во внимание. Чем оно лучше шифрования по известному ключу?
Так что, всё гуд, я спокоен )
2) Curve25519 от Ed25519 отличается форматом кривой, при этом тот код, который вы привели, работает для Ed25519, а не для Curve25519. Вы это учитываете у себя в коде?
1) Открытый ключ, полученный при помощи Elligator, не такой же как при обычном преобразовании ed25519
2) ed25519 вроде как для подписи, а нам нужно согласование ключей