Trong ví dụ này, Alice là ngƣời ký, Bob là ngƣời cần xin chữ ký.
1/. Chuẩn bị các tham số
Alice chuẩn bị các tham số cho việc ký
- Chọn số nguyên tố p = 59747 = 2 * q + 1, q = 29873 cũng là số nguyên tố - G là nhóm nhân con của 𝑍𝑝∗ cấp q. Chọn phần tử sinh của nhóm G là g = 3. - Đặt P = A = G, K = {(p, g, a, h ): a ∈ 𝑍𝑞∗, h ≡ 𝑔𝑎 mod p }
Chọn a = 11, h = 311mod 59747 = 57653
2/. Thuật toán ký
Dùng khóa bí mật sk = a để ký lên x = 229
Chữ ký thu đƣợc là y = sigsk (x) = xa mod p = 22911mod 59747 = 30179.
3/. Giao thức kiểm thử chữ ký
Dùng khóa công khai pk = ( p, g, h ) = ( 59747, 3, 57653 ) - Bob chọn ngẫu nhiên 𝑒1 = 11, 𝑒2 = 15 ∈ 𝑍𝑞∗
- Bob tính c = 𝑦𝑒1𝑒2mod p = 30179115765315mod 59747 = 55601
- Alice tính d = 𝑐𝑎−1 mod q𝑚𝑜𝑑 𝑝 = 5560111−1mod 29873𝑚𝑜𝑑 59747 = 43319
- Bob kiểm tra điều kiện 𝑑 ≡ 𝑥𝑒1g𝑒2𝑚𝑜𝑑 𝑝
Có 𝑥𝑒1g𝑒2𝑚𝑜𝑑 𝑝 = 22911315mod 59747 = 43319 ≡ 43319 mod 59747
Bob kết luận chữ ký là đúng.
4/. Giao thức chối bỏ chữ ký
Giả sử Bob gửi tài liệu x = 229, với chữ ký y = 30178
- Bob chọn ngẫu nhiên 𝑒1 = 11, 𝑒2 = 15 ∈ 𝑍𝑞∗
- Bob tính c = 𝑦𝑒1𝑒2 mod p = 30178115765315 𝑚𝑜𝑑 59747 = 19071
- Alice tính d = 𝑐𝑎−1mod q𝑚𝑜𝑑 𝑝 = 1907111−1mod 29873𝑚𝑜𝑑 59747 = 33692
- Bob kiểm tra điều kiện 𝑑 ≡ 𝑥𝑒1g𝑒2𝑚𝑜𝑑 𝑝
Có 𝑥𝑒1α𝑒2𝑚𝑜𝑑 𝑝 = 22911315mod 59747 = 43319 ≠ 33692 mod 59747
39 - Bob chọn ngẫu nhiên 𝑓1 = 17, 𝑓2 = 19 ∈ 𝑍𝑞∗
- Bob tính C = 𝑦𝑓1𝑓2 mod p = 30178175765319mod 59747 = 9217 và gửi cho Alice
- Alice tính D = 𝐶𝑎−1mod q𝑚𝑜𝑑 𝑝 = 921711−1mod 29873𝑚𝑜𝑑 59747 = 33028 và gửi cho Bob
- Bob kiểm tra 𝐷 ≢ 𝑥f1g𝑓2𝑚𝑜𝑑 𝑝 - Bob kiểm tra:
(𝒅𝒈−𝒆𝟐)𝒇𝟏 ≡ (𝑫𝒈−𝒇𝟐)𝒆𝟏 𝒎𝒐𝒅 𝒑
Có (𝒅𝒈−𝒆𝟐)𝒇𝟏mod p = (33692 * 3-15)17 (mod 59747) = 40635
(𝑫𝒈−𝒇𝟐)𝒆𝟏 ( mod p ) = (33028 * 3-19)11 ( mod 59747 ) = 40635
(𝒅𝒈−𝒆𝟐)𝒇𝟏 ≡ (𝑫𝒈−𝒇𝟐)𝒆𝟏 𝒎𝒐𝒅 𝒑
Bob kết luận chữ ký là giả mạo
Ví dụ này đƣợc trình bày với mục đích minh họa, nên chỉ sử dụng các số nguyên tố p, q nhỏ. Trong thực tế ứng dụng, để đảm bảo an toàn, ngƣời ta dùng các số p, q rất lớn, chẳng hạn các số có biểu diễn nhị phân cỡ 512 bits. Khi đó ta có q ≥ 2512 tức là 1/q ≤ 2−512, một xác suất rất bé, có thể bỏ qua; và vì vậy, các yêu cầu đối với các giao thức kiểm thử và giao thức chối bỏ nhƣ trong phần đặt vấn đề có thể xem nhƣ là đƣợc thỏa mãn.