Рейтинг:1

Как keyImage связан с кольцевой подписью?

флаг cn

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

Чего я не понимаю, так это того, как этот keyImage создается и проверяется. Он каким-то образом получен из закрытого ключа и хэшируется таким образом, что его нельзя подвергнуть обратному проектированию. Но как я узнаю, что для keyImage действительно использовался закрытый ключ? Я имею в виду, что я мог бы просто использовать случайное изображение ключа, чтобы оно было уникальным.

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

baro77 avatar
флаг gd
этот вопрос кажется более подходящим для monero.stackexchange.com imho ... и тег "hash-signature" кажется неправильным
fgrieu avatar
флаг ng
«keyImage» не является стандартным криптографическим термином. Таким образом, вопрос должен быть сформулирован со ссылкой на то, что означает «keyImage» с криптографической точки зрения. Если вопрос специфичен для Monero, я могу перенести его туда (у них есть как минимум один [связанный вопрос] (https://monero.stackexchange.com/q/2883)). Однако, если вопрос касается кольцевой подписи и какого бы то ни было «keyImage» (а не особенностей Monero), его можно оставить здесь, если он будет разъяснен.
baro77 avatar
флаг gd
Я полностью согласен с @fgrieu. Я предположил, что ОП думал о вещах, связанных с криптовалютой, из-за того, что в вопросе упоминается «двойная трата». В любом случае лучше дать ему возможность однозначно прояснить
user3776738 avatar
флаг cn
Ах, хорошо, это не совсем конкретно Monero, поскольку я прошу Shadowcash или, точнее, его форк. Я не знаю, отличается ли оригинальная подпись Monero Ring от подписи Shadowcash, не говоря уже о том, что теперь они используют RingCT, но я думаю, что принцип может быть таким же. Так что да, вы (@fgrieu) можете перенести его на Monero, если считаете, что у их сообщества есть лучший ответ. Спасибо.
fgrieu avatar
флаг ng
[Здесь] (https://monerodocs.org/cryptography/asymmetric/key-image/) — попытка криптографически определить образ ключа Monero. Я откладываю миграцию, потому что очевидно, что в вопросе есть криптографическая сторона ECC, и, возможно, здесь будет лучший ответ. Я все еще думаю, что вопрос следует улучшить, добавив ссылки на определения используемых терминов.
baro77 avatar
флаг gd
@ user3776738 понял! Итак, просто комментарий, потому что я не знаю реализацию Shadowcash: в Monero ваши сомнения: «Но как я узнаю, что закрытый ключ действительно использовался для keyImage?» решается со структурой, с помощью которой проверка кольца выполняется только в том случае, если keyImage построен из privkey.... Я не знаю, как описать это словами, но, возможно, это может быть вам полезно: https://www.getmonero .org/library/RingsCheatsheet20210301.pdf (отказ от ответственности: я автор шпаргалки) PS RingCT не имеет значения
user3776738 avatar
флаг cn
@fgrieu: «Изображение ключа I является односторонней функцией закрытого ключа x ». Мои мысли таковы: каким-то образом я должен проверить это ключевое изображение, иначе оно может быть случайным. Но это односторонняя хеш-функция. Чтобы воспроизвести одностороннюю хеш-функцию, мне нужна вся информация, использованная для ее создания. Когда у меня есть доступ ко всей этой информации, я знаю закрытый ключ. Но я не должен знать закрытый ключ. Вот где я застрял.
user3776738 avatar
флаг cn
@ baro77 Я попытаюсь понять это, но мне кажется, что это китайский язык.
fgrieu avatar
флаг ng
@baro77 baro77: как насчет того, чтобы написать ответ, начиная с вашего комментария?
baro77 avatar
флаг gd
@fgrieu хорошо, я попытаюсь... просто дайте мне немного времени, потому что сейчас напряженные шахтные дни, и тема немного неудобна, чтобы ее обобщать.
Рейтинг:2
флаг gd

Надеясь удовлетворить приглашение @fgrieu в комментариях, я пытаюсь ответить, исходя из реализации Monero. Источником этих слов является шпаргалка, которую я написал https://getmonero.org/library/RingsCheatsheet20210301.pdf во время учебы https://www.getmonero.org/library/Zero-to-Monero-2-0-0.pdf

Я считаю правильным начать с неинтерактивной (в духе Fiat-Shamir) подписи Шнорра для ключей над эллиптической кривой. Давайте быстро повторим это.

скажем $(х,х)$ пара закрытый/открытый ключи, где $X\треугольникqxG$ с $G$ генераторная точка ЭК; $tx$ это транзакция/текст/все, что нам нужно подписать; Подписание $tx$ с $х$ означает возможность генерировать пару $(с,г)$ так что:

$H(tx, rG + cX)=c$

куда $Ч$ является хешем (неважно, какой именно) и $с$ и $г$ называются «вызовом» и «ответом», причем термины исходят из интерактивной схемы. $с$ получается из секретного случайного уникального $\альфа$ известна только подписывающей стороне и никогда не используется повторно в двух подписях, а вышеприведенное равенство эквивалентно:

$rG + cX = \альфа G$

(кстати, заменив, вы получите, как $с$ определено ;) )

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

$f(tx,X,r,c)$

Кольцевые подписи предназначены для поиска вариантов этой схемы с помощью приманок, сохраняя при этом только одного ФАКТИЧЕСКОГО подписывающего (с технической точки зрения: требуется много $X_i$ - скажем $n$- при проверке алгоритма, но одиночного $х$ в алгоритме подписи); и все это без согласования между заинтересованными ключевыми владельцами.

Для каждого есть вызов и ответ $X_i$, так что у нас есть $c_i$ и $r_i$, однако дела обстоят согласованный так что от $c_i$ мы можем рассчитать $с_{я+1}$, с "переполнением", когда $я=n$ (вот оно "кольцо"), итак:

$H(tx, r_{i}G + c_{i}X_{i})=c_{i+1}$ с $1 \le i \le n-1$

$H(tx, r_{n}G + c_{n}X_{n})=c_1$ с $я=n$

учитывая, что мы можем регрессировать от $c_n$ к $c_1$ вышеуказанные условия приводят к функции проверки подписи:

$f(tx, X_i, r_i, c_1)$

Но откуда берется «магия»? Как договоренность сделано, чтобы иметь $c_i$ образуя замкнутую цепочку, в которой по одному значению задачи можно вычислить все остальные (обратите внимание, что мы выбрали $c_1$ как особенный, но в этом нет ничего особенного)? Что ж, благодаря этим фактам:

  1. если мы укажем как $с_\пи$ вызов, связанный с ФАКТИЧЕСКИМ подписывающим лицом, $с_{\пи+1}$ вычисляется из случайного секрета $\альфа$ известно только ФАКТИЧЕСКОМУ подписавшемуся (это что-то напоминает? ;) );
  2. все остальные $c_i$ рассчитываются по приведенной выше цепной формуле;
  3. все $r_i$ просто случайные числа, за исключением $r_\pi$ который выбран так, чтобы позволить $с_{\пи+1}$ также уважать цепную формулу (даже если она исходит от $\альфа$)

И вот, наконец, ключевой образ $Х^*$! Часть рекламируется в транзакции для предотвращения двойных расходов, она также является частью $c_i$ исчисление, и снова $\альфа$Используется трюк с формулой /chain: и он выполняется только в том случае, если ключевое изображение $Х^*$ получается очень специфическим способом, функцией закрытого и открытого ключей ФАКТИЧЕСКОГО подписывающего лица.

Вот почему вы не можете просто выбрать случайный еще неиспользованный!

Я понимаю, что это только основная линия рассуждений, многие детали упущены, но я надеюсь, вы сможете найти их в шпаргалке с помощью этих слов-компаньонов (полагаю, для ваших нужд вас может волновать только "Неинтерактивный (Фиат) -Шамир) Шнорр", "САГ" и "бЛСАГ")

user3776738 avatar
флаг cn
Я принял ваш ответ, потому что он выглядит очень подробным, и когда-нибудь я его пойму. Хотя я не особо в этом разбираюсь, если честно. Мне нужно будет прочитать ее дюжину раз и изучить математические знания, которых мне не хватает. Может быть, когда-нибудь я задам новый вопрос, основанный на вашем ответе, если я его не получу. Спасибо.
baro77 avatar
флаг gd
если вы ищете более постепенное введение в тему, вы можете прочитать главу 2 https://www.getmonero.org/library/Zero-to-Monero-2-0-0.pdf (она далека от завершения, поскольку криптография справочники, но я думаю, что это достаточно в качестве фона для вашей проблемы); Глава 3 тоже интересная, но имхо в ней легко заблудиться. Таким образом, рецепт может быть таким: прочитайте главу 2 настолько, насколько вам нужно; затем изучите левый столбец, кольца SAG и bLSAG и их примечания в правом столбце моей шпаргалки, используя мои слова здесь, в SE, в качестве путеводителя. Желаю вам хорошей работы!

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

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