Рейтинг:2

Транспортировка с Ed25519 по X25519

флаг ru

С использованием

montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p

можно транспортировать точку кривой Эдвардса (Эд25519 открытый ключ) к кривой Монтгомери. Есть ли побочные эффекты, если Эд25519 открытый ключ недействителен, например, в случае атаки небольшой подгруппы или неправильной кривой?

И если да, то какое решение было бы лучшим, чтобы справиться с этим должным образом?

kelalaka avatar
флаг in
Почему вы хотите преобразовать? Вы хотите использовать один и тот же ключ для ed25519 и DHKE X25519? Они [бирационально эквивалентны] (https://ed25519.cr.yp.to/ed25519-20110926.pdf), вы спрашиваете [проверка 25519 точек] (https://crypto.stackexchange.com/q/87709/18298) или [обмен ключами X22519] (https://crypto.stackexchange.com/a/68129/18298)?
FooBar avatar
флаг ru
Моя цель — создать общий секрет с использованием x25519 ECDH, но существующий протокол использует общие ключи ed25519. Так что, чтобы быть немного запутанным, оба.
kelalaka avatar
флаг in
О каком протоколе вы говорите? X25519 предназначен для ECDH. Тот, кто использует Ed25529 для ECDH, использует его неправильно. См. libsodium..
FooBar avatar
флаг ru
не общедоступный протокол, это внутренний этап инициализации нашего соединения. План состоит в том, чтобы создать общий секрет с использованием открытого ключа ed25519, переносимого по кривой Монтгомери. Конечно ECDH на ed25519 не цель.
kelalaka avatar
флаг in
Лучше сгенерируйте единый случайный ключ и используйте KDF, например HKDF, имеет два разных ключа. Это лучше, чем использовать один ключ для обоих. Один пропал, все пропало!
kelalaka avatar
флаг in
И преобразование $$x = \frac{u}{v}\sqrt{-486664}, \quad y = \frac{u - 1}{u + 1}$$ и использование XEd25519, используемого Signal, использует Curve25519?
FooBar avatar
флаг ru
я вижу вашу точку зрения. До сих пор я видел несколько реализаций, которые делают x25519 ECDH с использованием пары ключей ed25519, которая пересекает точку кривой Эдвардса в кривую Монтгомери. Это плохая практика?
kelalaka avatar
флаг in
Будьте осторожны, в сигнале используется [двойной храповик для ECHE](https://dspace.cvut.cz/bitstream/handle/10467/76230/F8-DP-2018-Rubin-Jan-thesis.pdf?sequence=-1) так что можно иметь эфемерные ключи.
knaccc avatar
флаг es
Есть ли причина, по которой вы не можете просто создать свежую временную пару ключей X25519 для каждого ECDH и попросить каждую сторону подписать открытый ключ X25519 своим ключом Ed25519? Это обеспечило бы прямую секретность. И если есть веская причина иметь долгосрочные ключи для ECDH, есть ли причина, по которой люди не могут предоставить другим открытый ключ Ed25519 и открытый ключ X25519? Они всего 32 байта каждый.
kelalaka avatar
флаг in
@knaccc да, именно так. Я увидел твой комментарий сейчас.
Рейтинг:3
флаг in

Кривая25519 и Эд25519

А Кривая Монтгомери определено над полем $К$ определяется как; $$M_{A,B}: Bv^2 = u^3 + Au^2 + u$$ для некоторых $А,В\в К$ и с $B(A^2-4) \neq 0$.

Кривая25519 использует премьер $q = 2^{255} – 19$ чтобы сформировать конечное поле $\mathbb{F}_q$ и сначала определен для ECDH, а затем назван X25519. Уравнение Монтгомери $$v^2 = и^3+486662 и^2+и$$ с $486664$ это квадрат в $\mathbb{Z}_p$, т. е. это квадратичный вычет (QR). $u = 9$ выбрал в качестве отправной точки. Форма Вейерштрасса (одна нужна для SageMath)

$$y^2 = x^3 + A x + B $$

Эта кривая «Кривая 25519» бирационально эквивалентный над $\mathbb{Z}_p$ к кривой Эдвардса Эд25519 $$x^2 + y^2 = 1 + (121665/121666)x^2y^2$$ с;

$$x = \frac{\sqrt{486664}u}{v}, \quad y = \frac{(u = 1)}{(u + 1)}$$

Обратная операция;

$$u = \frac{(y + 1)}{(1 - y)}, \quad v = \frac{\sqrt{486664}u}{x}$$

Форма Эдварда имеет изоморфную кривую

$$-x^2 + y^2 = 1 - (121665/121666)x^2y^2$$ поскольку $-1$ QR в $\mathbb Z_p$


Вопросы

montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p можно перенести точку кривой Эдвардса (публичный ключ ed25519) на кривую Монтгомери.

Да, как указано выше, от Монтгомери до Эдвардса. $$u = \frac{(y + 1)}{(1 - y)}$$

Есть ли побочные эффекты, если открытый ключ ed25519 недействителен, например, в случае атаки небольшой подгруппы или неправильной кривой?

Ключ Edward25519 можно преобразовать в Curve25519, и если секретный ключ уже создан с помощью законная ответственность пользователя

  • Предполагается, что законные пользователи генерируют независимые единые случайные секретные ключи. Пользователь может, например, сгенерировать 32 одинаковых случайных байта, очистить биты 0, 1, 2 первого байта, очистить бит 7 последнего байта и установить бит 6 последнего байта.

В определении набора нам нужны секретные ключи X25519 как

$$\{n: n \in 2^{254} +8\{0,1,2,\dots,2^{251}-1 \}\},$$ другими словами, выберите однородное случайное число между $[0,2^{251}-1]$ умножьте это на $8$ чем добавить $2^{254}$.

Порядок базовой точки (с прямым порядком байтов);

edd3f55c1a631258d69cf7a2def9de14000000000000000000000000000000010

Поляна $0,1,2$ убеждается, что

  • мы не входим в небольшую группу, для которой злоумышленник использует DHKE и максимально раскрывает информацию $\lceil log_2 ч\rceil$ биты (кофактор $ч=8$ в Curve25519).

  • и очистить 7 и набор 6 против возможной атаки по времени.

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

0x8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7

тогда в этом нет необходимости, поскольку бирациональная эквивалентность будет давать точки, которые имеют немалый порядок, если законный пользователь уже использовал правила.

При бирациональной эквивалентности Curve25519 и edwards25519 каждый открытый ключ X25519 соответствует двум возможным открытым ключам Ed25519). X25519 использует только $х$ координата (откуда идет название) и Эд25519 использует координаты точек. Когда у нас есть только $х$ координата точки, возможны две точки $(х,у)$ и $(х,-у)$ кроме $у=0$.

И если да, то какое решение было бы лучшим, чтобы справиться с этим должным образом?

Нет никакой опасности Проверка точек.


Некоторые дополнительные

Использование того же ключа

Я не могу прямо сказать, что это небезопасно, однако наше общее правило — не использовать один и тот же ключ для разных целей. Пока вы не докажете, что нет никакой опасности удержаться от использования одного и того же ключа для разных целей.

Возможно, было бы лучше иметь один единый случайный 256-битный ключ и получить два ключа с расширением HKDF для X25519 и Ed25519.

X25519

Помните, что открытый ключ фиксирован, и когда вы выполняете DHKE, это означает, что у вас статический статический DHKE. Это не имеет прямой секретности. Лучше то, что делает протокол Signal; двойной храповик и вы можете подписать новый открытый ключ с помощью Ed25519.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.