Рейтинг:3

Цифровые подписи с помощью пары ключей Curve25519

флаг it

У меня есть пара открытых/закрытых ключей Curve25519, используемая Wireguard.

Как я могу использовать эту пару ключей для создания/проверки цифровых подписей?

Предпочтительно, я хотел бы использовать EdDSA/Ed25519 но я изо всех сил пытаюсь получить пару ключей Ed25519 из ключей Curve25519, используемых Wireguard.

Maarten Bodewes avatar
флаг in
Вы должны иметь возможность просто выполнить вывод открытого ключа, используя заданное значение закрытого ключа для EdDSA. В конце концов, закрытый ключ — это всего лишь один вектор, и его умножение на базовую точку правой кривой должно дать вам открытый ключ. Я не думаю, что есть какие-то различия с.р.т.закрытый ключ (это не просто случайный диапазон, там есть некоторые хитрости) между Curve25519 и Ed25519, но кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь.
флаг it
Спасибо за предложение. К сожалению, это не позволит мне использовать ранее обменянные открытые ключи Curve25519.
Maarten Bodewes avatar
флаг in
Я предложил награду. Обратите внимание, что отрицательные ответы также должны быть приняты, если они убедительны (достаточно).
Рейтинг:1
флаг uz

Я не думаю, что возможно сделать то, что вы просите, из-за того, как ключи генерируются для использования в ECDH по сравнению с Ed25519.

Рассмотрим пару ключей Wireguard (ск1, ПК1). Обратите внимание, что ск1 всего 32 случайных байта с соответствующими установленными/очищенными битами (источник) и что ПК1 происходит от ск1 типичным образом ECDH (источник).

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

Так что вы мог получить закрытый ключ ск2 от ск1 и использовать ск2 для создания подписей Ed25519. Но судя по обсуждению в комментариях, похоже, что вы хотите проверить эти подписи без доступа к ск1 (предположительно на другом конце туннеля Wireguard, который имеет только ПК1). И поскольку вы не можете вывести ск1 от ПК1, вы не можете вычислить SHA512 (ск1) от ПК1. Поэтому вы не можете вывести ПК2 от ПК1 в одиночестве.

флаг it
Спасибо, Эрик Д!. Это ответ на мой вопрос :) Знаете ли вы какой-нибудь DSA, который мог бы использовать мой существующий ключевой материал?
Eric D avatar
флаг uz
К сожалению, я не знаю никакого способа безопасного использования существующих ключей для цифровых подписей с учетом этих ограничений, но я довольно новичок в этом деле, поэтому могут быть методы, о которых я не знаю.
Eric D avatar
флаг uz
@SteffenVogel, я только что наткнулся на это и не полностью переварил это, но подумал, что это может вас заинтересовать. Если я правильно понимаю статью, Signal использует ключи X25519/Curve25519 для подписей в своей схеме подписи «XEdDSA»: https://signal.org/docs/specifications/xeddsa/
флаг it
Спасибо, XEdDSA кажется тем, что я ищу :)

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

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