Рейтинг:1

Разделяйте, подписывайте и объединяйте

флаг cn

У меня есть устройство, которое подписывает (симметрично) очень короткие сообщения, а я хотел бы подписывать длинные.

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

Защититься от перестановки фрагментов в другом порядке не так-то просто (хеширование всей последовательности последовательностей не считается легкий в моем случае).

Однако устройство покрывает подписью не только само сообщение, но и текущий индекс подписываемых им сообщений. Теперь очевидно, что прямое исключающее ИЛИ кусочных подписей является идеальной подписью всего сообщения.

Кто-нибудь сталкивался с подобным в теории или на практике?

Maarten Bodewes avatar
флаг in
Итак, в комментарии под моим вопросом вы говорите, что подписи больших сообщений имеют префикс счетчика. Тем не менее, вы говорите, что вы выполняете операцию XOR подписи над меньшими сообщениями, чтобы получить эту подпись, поэтому для меня это не имеет смысла. Пожалуйста, включите формальное описание вашей схемы.
Рейтинг:1
флаг in

Кажется непростым защититься от перестановки частей в другом порядке.

Это зависит; на данный момент вы не указали операцию объединения хэшей.

Конечно, любая криптографическая хеш-функция имеет другое значение, если она выполняет $ Н (х | у) $ вместо $ Н (у | х) $ куда $x \neq у$ и размер $х$ и $у$ идентичны. Если нет, цели защиты от столкновений хэша не достигнуты.

Кажется непростым защититься от перестановки частей в другом порядке.

Конечно, есть, просто используйте HMAC, основанный на криптографическом хеше с SHA-256 или SHA-512.

Теперь очевидно, что прямое исключающее ИЛИ кусочных подписей является идеальной подписью всего сообщения.

Действительно? Если вы говорите, что это очевидно, вам нужно предоставить доказательство.

Скажите, что у вас есть подпись трех сообщений, состоящих из подсообщений $А$ и $В$: $M_1=(А,Б)$, $M_2=(А,В')$ и $M_3=(А',В)$. Теперь, если вы XOR подписи вместе, вы получите то же значение, что и для $M_4=(А', Б')$:

$$S_1 = Знак(1, A) \oплюс Знак(2, B)$$ $$S_2 = Знак(1, A) \oплюс Знак(2, B')$$ $$S_3 = Знак(1, A') \oплюс Знак(2, B)$$ $$S_4 = Sign(1, A') \oplus Sign(2, B') = S_1 \oplus S_2 \oplus S_3$$

XOR — опасная операция. То, что вам обычно нужно, это Дерево Меркла с помощью криптографических хэшей.

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

uk-ny avatar
флаг cn
Нет, если $S_1 = Sig(A,B)$, $S_2 = Sig(A,B')$ и $S_3 = Sig(A',B)$, то $S_1 \oplus S_2 \oplus S_3$ определяется не означает подпись $(A', B')$. Фактически, в моей ситуации $S_1 = Sig(1,A,B)$, $S_2 = Sig(2,A,B')$ и $S_3 = Sig(3,A',B)$, но это не имеет отношения к вашему комментарию.
Maarten Bodewes avatar
флаг in
Пожалуйста, запишите вашу схему формально, тогда мы сможем создать ответы по теме. Как это описано в настоящее время, я не понимаю, почему мой ответ не работает. Просто сказать, что это не так, не аргумент.

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

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