Кажется непростым защититься от перестановки частей в другом порядке.
Это зависит; на данный момент вы не указали операцию объединения хэшей.
Конечно, любая криптографическая хеш-функция имеет другое значение, если она выполняет $ Н (х | у) $ вместо $ Н (у | х) $ куда $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 для конкатенированных хэшей. Это может быть более безопасным, чем выполнение подписи для различных частей, особенно если вывод функции подписи невелик.