Рейтинг:0

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

флаг in

Подписание открытого и закрытого ключей обычно работает следующим образом:

  1. Я объявляю свой публичный ключ.
  2. Я шифрую что-то своим закрытым ключом.
  3. Если людям удалось расшифровать (2) с помощью (1), то (2) принадлежит владельцу (1).
  4. Затем люди могут зашифровать данные для меня, используя открытый ключ в (1).

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

Подписание хеш-функции:

  1. Я шифрую какое-то стандартное сообщение, например. 0, используя случайно сгенерированный ключ $k_r$. Например. $c_1 = enc(\text{`0`}, k_1)$.
  2. Я отправляю $c_1$ людям вместе с моими обычными сообщениями.
  3. Получатели не узнают, является ли (2) мной, пока я не отправлю другое сообщение и вместе с ним не передам им $k_1$ который может расшифровать $c_1$ принести 0 назад. Наряду с этим, я отправлю новый $c_2$.

Не уверен, что существует проблема курицы и яйца. Например. на подписывающей стороне, где люди обмениваются своими открытыми и закрытыми ключами, они могут вместо этого обмениваться своими зашифрованными 0 сообщения (т. $c_1$ в этом примере).

Но что мне непонятно, так это то, как такая штука может работать для других случаев, например, для метода подписи платежей или транзакций. Например. представьте, если бы биткойн-адреса были подписями хеширования/симметричного шифрования, такими как $c_1$, $c_2$и т. д. вместо открытых ключей.

Я вижу, что для хеширования/симметричной подписи требуется дополнительная уборка (например, иметь копию последней $c_i$). Но если такое домашнее хозяйство разрешено, есть ли причина, по которой оно не может заменить открытые и закрытые ключи для всех задач?

Рейтинг:3
флаг my

Подписание открытого и закрытого ключей обычно работает следующим образом.

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

Однако это не относится к вашему реальному вопросу:

Подписание хеш-функции

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

Под чем обычно понимается Лэмпорт:

  • Мы выбираем $к$ хешировать прообразы $c_1, c_2, ..., c_k$, и хешировать каждый из них, и публиковать результат каждого хеширования $H(c_1), H(c_2), ..., H(c_k)$ как открытый ключ

  • Когда мы получаем сообщение для подписи, мы преобразуем сообщение в серию значений. $b_1, b_2, ..., b_n$ (каждое значение между $1$ и $к$) — это преобразование выполняется таким образом, что трудно найти второе сообщение, которое преобразуется в серию битов, состоящую исключительно из значений внутри $b_1, b_2, ..., b_n$).

  • Подпись состоит из выявленных прообразов $c_{b_1}, c_{b_2}, ..., c_{b_n}$

  • Верификатор может взять сообщение и преобразовать его в ряд значений. $b_1, b_2, ..., b_n$, и убедитесь, что каждый из прообразов в подписи хешируется со значением в открытом ключе.

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

Тем не менее, ваш вопрос действительно был:

Я вижу, что хеширование/симметричное подписание требует дополнительной уборки.

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

Во многих других контекстах это не работает. Однако существует ряд модификаций подписей на основе хэшей, которые не имеют этих ограничений:

  • Подписи на основе хэшей с отслеживанием состояния (такие как СУО и XMSS); они работают так же, как Лампорт, за исключением того, что открытый ключ может подписывать большое количество различных сообщений (и мы можем сделать это «большое число» больше, чем количество сообщений, которые мы когда-либо увидим). У них есть требование, чтобы подписывающая сторона отслеживала состояние (которое меняется с каждой подписью).

  • Подписи без сохранения состояния на основе хэшей (такие как Сфинки+); это устраняет необходимость отслеживать какое-либо состояние во время подписания и поэтому действует так же, как любой другой алгоритм подписи.

И если вы предполагаете, что подписи на основе RSA и хеширования — единственные варианты в таблице, то это не так. Существуют также различные схемы на основе решетки, многомерные схемы, схемы на основе доказательства с нулевым разглашением (Picnic) — существует множество различных вариантов.

caveman avatar
флаг in
Большое спасибо. Не уверен, что это связано, но есть идеи, почему у нас нет таких криптовалют, которые полностью избавляются от публично-частной/асимметричной подписи в пользу таких альтернатив на основе хэшей?
poncho avatar
флаг my
@caveman: я ни о ком конкретно не слышал; однако вы были бы удивлены, узнав, как много я не знаю о криптовалютах...
флаг my
Jon
@caveman Capitalisk https://capitalisk.com/ использует подписи Lamport OTS с деревьями подписей Merkle, чтобы разрешить несколько подписей.

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

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