Lược đồ RSA-Schnorr dựa trên hai bài toán khó là bài toán IFP của RSA và DLP của Schnorr. Để phá vỡ lược đồ chữ ký này yêu cầu giải quyết đồng thời hai bài toán khó là tính toán logarit rời rạc trên Zp và phân tích thừa số n. Lược đồ ký, kiểm tra chữ ký và xác thực lô lần lượt là thuật toán 2.5, 2.6, 2.7.
Thuật toán 2.5:Thuật toán tạo chữ ký RSA-Schnorr
Input: Dữ liệu m∈M Output: Chữ ký σ ∈S 1 t ∈R (0, n) 2 r =gt mod p 3 s= (t−H(m||r)x)d mod n 4 return (r, s)
Thuật toán 2.6:Thuật toán kiểm tra chữ ký RSA-Schnorr
Input: (m,(r, s))∈M ×S
Output: "Accept" nếu chữ ký là hợp lệ và "Reject" trong trường hợp ngược lại
1 a=se mod n
2 r′=gayH(m||r) modp
3 if (r=r′) then return "Accept" 4 else return "Reject"
Mệnh đề 2.3 Chữ ký σ(r, s) tương ứng với dữ liệu m được ký bởi thuật toán 2.5 là chữ ký số hợp lệ.
Chứng minh.
Tính: a = se mod n = (t−H(m||r)x)ed mod n = (t−H(m||r)x) mod n (do ed = 1 mod φ(n)).
Thuật toán 2.7: Thuật toán V(σi) RSA-Schnorr xác thực k chữ ký
σi(ri, si) cho k dữ liệu mi, i= 1,2, ..., k, được ký bởi cùng một người ký
Input: Dữ liệu mi, k chữ ký σi(ri, si), 1≤i≤k
Output: "Accept" nếu k chữ ký là hợp lệ và "Reject" trong trường hợp ngược lại
1 ai =sei mod n 2 u=Pki=1aimodp
3 v =Pki=1H(mi||ri) modp
4 if (Qk
i=1ri =guyvmodp) (2.12) then return "Accept" 5 else return "Reject"
Ta có: r = gtmod p= ga+H(m||r)x modp= gagH(m||r)x modp = gayH(m||r)mod p= r′
Do đó chữ ký σ(r, s) là chữ ký hợp lệ.
Mệnh đề 2.4 Các chữ ký (σ1, σ2, ..., σk) được ký bởi thuật toán 2.5 là k chữ ký số hợp lệ thì biểu thức (2.12) đúng.
Chứng minh. Theo thuật toán 2.6, để xác định k chữ ký σi(ri, si) là đúng thì từng chữ ký phải thoả mãn biểu thức: r = gayH(m||r) mod p. Trong đó: a = se mod n. Do đó: r1 = ga1yH(m1||r1) modp r2 = ga2yH(m2||r2) modp ... rk = gakyH(mk||rk) modp (2.13) Từ (2.13), suy ra: Qk i=1ri = ga1yH(m1||r1)· · ·gakyH(mk||rk) modp = ga1+···+akyH(m1||r1)+···+H(mk||rk) modp = gPki=1aiyPik=1H(mi||ri)modp