Рейтинг:0

Как сделать контрольную сумму WOTS

флаг us

Насколько я понимаю, одноразовую подпись Винтерница делают:

  1. Создание массива закрытых ключей.
  2. Создание массива открытых ключей путем хеширования каждого закрытого ключа X раз, где X — это количество различных возможных символов, которые могут появиться в каждой позиции сообщения (или хеша сообщения) для проверки.
  3. Создание массива хэшей в качестве подписи путем хеширования каждого закрытого ключа X минус «порядковый номер символа» раз.
  4. Проверка подписи путем подсчета количества хеширования каждого из хэшей подписи для достижения открытого ключа и интерпретация этого подсчета как порядкового номера символа. Затем с помощью этих чисел мы можем сформировать сообщение (или хэш сообщения), которое затем продемонстрирует, что сообщение было действительным.

Следовательно, например, если мы подписываем шестнадцатеричными цифрами, X будет равно 15, поскольку символы будут идти от 0 (1-й символ, представляющий 0 итераций) до F (16-й символ, представляющий 15 итераций). Таким образом, сколько бы раз нам ни нужно было хешировать подпись, чтобы получить открытый ключ, она будет представлять определенное значение, от 0 до 15 раз (что дает фактически 16 возможностей). А если оно никогда не достигает его, то оно недействительно.

Сказав это, я прочитал, что слабость заключается в том, что подпись может быть изменена, потому что, например, если один подписанный символ - это A, то информации достаточно для хеширования также B, C, D, E и F. Тогда , по мнению многих, в том числе этот сайт, решение состоит в том, чтобы сделать контрольную сумму.

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

Пожалуйста, объясните мне, как сделать контрольную сумму простым языком, который может понять каждый.

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

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

Пожалуйста, объясните мне, как сделать контрольную сумму простым языком, который может понять каждый.

На самом деле это «обратная контрольная сумма»; когда вы подписываете символ X, вы также добавляете значение 15-X к контрольной сумме; например, если вы подписываете A, вы добавляете 5 к контрольной сумме (поскольку A+5=F, по крайней мере, в шестнадцатеричном формате). Затем вы берете эту сумму и подписываете ее.

Например, если значение, которое вы подписываете, состоит из 4 символов A, 4, F, 0, то вы суммируете инверсии (F-A)+(F-4)+(F-F)+(F-0)=1F, и поэтому включите два символа 1, F в подпись.

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

Например, если злоумышленник попытался подделать 4 символа B, 4, F, 0, обратная контрольная сумма, которую получит проверяющий, будет 1E, злоумышленник не сможет сгенерировать WOTS, действительный для «E» (учитывая, что он знает только значение для 'F')

algo avatar
флаг us
Большое тебе спасибо. Моей первой мыслью было, что тогда почему бы им не модифицировать еще и другой символ, чтобы компенсировать потерю в перевернутой контрольной сумме, поэтому, вместо перехода от A4F0 к B4F0, перейти к B3F0, чтобы уравновесить его, но потом я понял, что это было бы невозможно «понизиться», так как у них нет закрытого ключа, они могут только увеличиваться.
algo avatar
флаг us
Таким образом, получается, что всякий раз, когда символ увеличивается, значение контрольной суммы уменьшается, а также символы не могут быть уменьшены.
algo avatar
флаг us
У меня только вопрос, как это они не смогли перепутать еще и контрольную сумму? Например, контрольная сумма в вашем примере была такой: A4F0 1F Если злоумышленник изменит символ сообщения, а также какой-либо символ в контрольной сумме... B4F0 1Е Однако похоже, что контрольная сумма 1F действительно не может быть изменена на 1E, поскольку символы не могут быть уменьшены, поэтому, похоже, это причина, по которой контрольная сумма должна быть инвертирована... Это правильно? Потому что у меня все еще есть небольшое подозрение по поводу возни с контрольной суммой.
poncho avatar
флаг my
@algo: да, это правильно; идея состоит в том, что злоумышленник не может напрямую возиться с контрольной суммой; он может возиться только с хешем (и на его основе вычисляется контрольная сумма). И если он где-то увеличивает какой-то символ, он должен уменьшить какой-то другой символ, а поскольку он не знает прообраза этого элемента WOTS, он не может этого сделать.

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

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