Nu pare ușor să te protejezi de rearanjarea pieselor într-o ordine diferită.
Depinde; nu ați specificat operația de combinare a hashurilor în acest moment.
Cu siguranță, orice funcție hash criptografică are o valoare diferită dacă funcționează $H(x|y)$ în loc de $H(y|x)$ Unde $x \neq y$ iar dimensiunea de $x$ și $y$ sunt identice. Dacă nu, obiectivele de rezistență la coliziune ale hashului nu sunt îndeplinite.
Nu pare ușor să te protejezi de rearanjarea pieselor într-o ordine diferită.
Sigur că există, utilizați doar HMAC, care se bazează pe un hash criptografic cu SHA-256 sau SHA-512.
Acum, este evident că xorul simplu al semnăturilor pe bucăți este o semnătură perfectă a întregului mesaj.
Într-adevăr? Dacă spuneți că este evident, atunci trebuie să furnizați dovezi.
Spuneți că aveți semnătura a trei mesaje formate din sub-mesaje $A$ și $B$: $M_1=(A,B)$, $M_2=(A,B')$ și $M_3=(A',B)$. Acum, dacă XOR semnăturile împreună, obțineți aceeași valoare ca și pentru $M_4=(A’, B’)$:
$$S_1 = Sign(1, A) \oplus Sign(2, B)$$
$$S_2 = Sign(1, A) \oplus Sign(2, B')$$
$$S_3 = Sign(1, A') \oplus Sign(2, B)$$
$$S_4 = Semn(1, A') \oplus Sign(2, B') = S_1 \oplus S_2 \oplus S_3$$
XOR este o operațiune periculoasă. Ceea ce căutați în general este a Arborele Merkle folosind hashuri criptografice.
Rețineți că puteți efectua mai întâi un hash criptografic peste mesaje și un HMAC peste hashurile concatenate. Acest lucru ar putea fi mai sigur decât efectuarea unei semnături peste diferitele părți, mai ales dacă rezultatul funcției de semnătură este mic.