ดูเหมือนจะไม่ง่ายเลยที่จะป้องกันการจัดเรียงชิ้นส่วนใหม่ตามลำดับที่แตกต่างกัน
ขึ้นอยู่กับ; คุณยังไม่ได้ระบุการดำเนินการเพื่อรวมแฮช ณ จุดนี้
แน่นอนว่าฟังก์ชันแฮชการเข้ารหัสใด ๆ มีค่าแตกต่างกันหากดำเนินการ $H(x|y)$ แทน $H(y|x)$ ที่ไหน $x \neq y$ และขนาดของ $x$ และ $y$ เหมือนกัน หากไม่เป็นไปตามเป้าหมายการต้านทานการชนกันของแฮช
ดูเหมือนจะไม่ง่ายเลยที่จะป้องกันการจัดเรียงชิ้นส่วนใหม่ตามลำดับที่แตกต่างกัน
แน่นอนว่ามี เพียงใช้ HMAC ซึ่งใช้แฮชการเข้ารหัสด้วย SHA-256 หรือ SHA-512
ตอนนี้ เห็นได้ชัดว่า xor ที่ตรงไปตรงมาของลายเซ็นแยกส่วนเป็นลายเซ็นที่สมบูรณ์แบบของข้อความทั้งหมด
จริงหรือ หากคุณบอกว่าเป็นที่ประจักษ์แล้วคุณต้องให้ หลักฐาน.
สมมติว่าคุณมีลายเซ็นของสามข้อความประกอบด้วยข้อความย่อย $A$ และ $B$: $M_1=(A,B)$, $M_2=(A,B')$ และ $M_3=(A',B)$. ตอนนี้ถ้าคุณ XOR ลายเซ็นร่วมกัน คุณจะได้รับค่าเดียวกับสำหรับ $M_4=(A', B')$:
$$S_1 = เครื่องหมาย(1, A) \oเครื่องหมายบวก(2, B)$$
$$S_2 = เครื่องหมาย(1, A) \oเครื่องหมายบวก(2, B')$$
$$S_3 = เครื่องหมาย(1, A') \oเครื่องหมายบวก(2, B)$$
$$S_4 = เครื่องหมาย(1, A') \oเครื่องหมายบวก(2, B') = S_1 \oplus S_2 \oplus S_3$$
XOR เป็นปฏิบัติการที่อันตราย สิ่งที่คุณมักจะตามมาคือ ต้นเมิร์กเคิล โดยใช้แฮชเข้ารหัส
โปรดทราบว่าก่อนอื่น คุณสามารถทำการแฮชการเข้ารหัสบนข้อความ และดำเนินการ HMAC บนแฮชที่เชื่อมต่อกัน ซึ่งอาจปลอดภัยกว่าการใช้ลายเซ็นบนส่วนต่างๆ โดยเฉพาะอย่างยิ่งหากเอาต์พุตของฟังก์ชันลายเซ็นมีขนาดเล็ก