Theo như tôi hiểu, chữ ký một lần của Winternitz được tạo bởi:
- Tạo một mảng các khóa riêng.
- Tạo một mảng khóa công khai bằng cách băm mỗi khóa riêng X lần, X là số khả năng khác nhau của các ký tự có thể xuất hiện ở mỗi vị trí của tin nhắn (hoặc hàm băm của tin nhắn) để xác minh.
- Tạo một mảng các giá trị băm làm chữ ký bằng cách băm từng khóa riêng X trừ đi "số thứ tự của ký tự" lần.
- Xác minh chữ ký bằng cách đếm số lần mỗi giá trị băm chữ ký cần được băm để đạt được khóa công khai và diễn giải số đó được tính là số thứ tự của ký tự. Với những con số này, sau đó chúng ta có thể tạo thành tin nhắn (hoặc hàm băm của tin nhắn), sau đó sẽ chứng minh rằng tin nhắn là hợp lệ.
Do đó, ví dụ: nếu chúng ta đang ký bằng các chữ số HEX, thì X sẽ là 15, vì các ký tự sẽ chuyển từ 0 (ký tự thứ nhất, đại diện cho 0 lần lặp) sang F (ký tự thứ 16, đại diện cho 15 lần lặp). Vì vậy, tuy nhiên, số lần chúng ta cần băm chữ ký để đạt được khóa công khai, nó sẽ đại diện cho một giá trị nhất định, từ 0 lần đến 15 lần (có hiệu quả 16 khả năng). Và nếu nó không bao giờ đạt đến nó, thì nó không hợp lệ.
Phải nói rằng, tôi đã đọc được rằng điểm yếu là chữ ký có thể bị thay đổi, bởi vì, ví dụ: nếu một ký tự được ký là A, thì có đủ thông tin để băm cả B, C, D, E và F. Sau đó , theo nhiều người, bao gồm cả Trang web này, giải pháp là thực hiện tổng kiểm tra.
Và đây là nơi tôi bị mắc kẹt. Tôi cũng không hiểu cách triển khai tổng kiểm tra. Tôi đã tìm thấy một số lời giải thích, nhưng tất cả chúng đều quá kỹ thuật hoặc quá mơ hồ và không cho tôi biết chính xác, nói một cách đơn giản, cách thực hiện tổng kiểm tra đó.
Vui lòng giải thích cho tôi cách thực hiện tổng kiểm tra bằng ngôn ngữ đơn giản mà bất kỳ ai cũng có thể hiểu được.
Và, nếu có thể, hãy bình luận làm thế nào tổng kiểm tra đó không thể bị nhiễm độc. Cảm ơn bạn.