Как создать открытый ключ x25519 из координат XZ?

Насколько я понимаю, функция DH x25519, используемая на Curve25519, использует только Xкоординаты, как я могу прочитать в определении в Википедии:

The protocol uses compressed elliptic point (only X coordinates), so it allows efficient use of the Montgomery ladder for ECDH, using only XZ coordinates.[5]

Координаты XZ [запись в базе данных] представляют xy как XZ, удовлетворяющие следующим уравнениям:

x=X/Z

согласно этой документации.

Я нашел эти уравнения в этом ответе на обмен стеками:

Я посмотрел на X25519_public_from_private функция и найдено:

    /*
     * We only need the u-coordinate of the curve25519 point.
     * The map is u=(y+1)/(1-y). Since y=Y/Z, this gives
     * u=(Z+Y)/(Z-Y).
     */

Я хотел бы знать, как создать открытый ключ из координат u,v или x,y (или X,Y). А особенно если это вообще возможно?

Например, с классическим ecdsa можно создавать общедоступные числа благодаря координатам x,y и кривой, следовательно, создавать на их основе открытый ключ.
Пример использования криптографической библиотеки Python:

public_numbers = ec.EllipticCurvePublicNumbers(x,y, curve)
public_key = public_numbers.public_key(backend)

Я бы хотел добиться того же с Curve25519.

Ссылки:
https://medium.com/@chain_66731/a-deep-dive-into-x25519-7a926e8a91c7
https://hackernoon.com/what-is-the-math-behind-elliptic-curve-cryptography-f61b25253da3
https://crypto.stackexchange.com/questions/74598/key-specifications-for-x25519-need-two-clarifications-please

0 ответов

Другие вопросы по тегам