Năm 1997 Jan Camenish và Stadler đã đƣa ra sơ đồ chữ ký số nhóm này để khắc phục nhƣợc điểm của hai sơ đồ chữ ký nhóm của David Chaumtừ đó số thành viên trong nhóm có thể thƣờng xuyên thay đổi đƣợc.
Sơ đồ chữ ký số nhóm do Jan Camenish và Stadler gồm 5 thủ tục:
+ Setup: Sinh khóa công khai của nhóm và khóa bí mật của ngƣời quản lý nhóm
+ Join: Thủ tục tƣơng tác giữa ngƣời quản lý nhóm và một thành viên mới của nhóm để cung cấp cho thành viên này khóa bí mật và chứng nhận thành viên.
+ Sign: Thủ tục ký một thông điệp của một thành viên trong nhóm.
+ Verify: Thủ tục kiểm tra chữ ký trên một thông điệp xem có đúng là chữ ký của nhóm đó hay không.
+ Open: Là thủ tục để xác định xem chữ ký $ trên thông điệp m là của thành viên nào trong nhóm.
1/. Một số đinh nghĩa liên quan * Định nghĩa 1:
Một chữ ký dựa trên kiến thức về logarit rời rạc kép của y theo g, và a trên thông điệp m với một tham số an toàn l kí hiệu là :SKLOGLOGl 𝛼|𝑦=𝑔 𝑎𝛼 (m)
Chữ ký là một nhóm c s1 s2 sl ∈ 0,1 ∗ 𝑍𝑛∗phải thoản mãn:
c =Hl (m y g a P1 P2 Pl) Trong đó: c[i] là bit thứ i của c kể từ bên trái Pi = 𝑔 𝑎
𝑠𝑖 ↔ 𝑐 𝑖 = 0
𝑦 𝑎𝑠𝑖 ↔ 𝑐 𝑖 ≠ 0
* Định nghĩa 2
Một chữ ký dựa trên kiến thức về logarit rời rạc thành phần gốc thứ e Zn của y theo gtrên thông điệp m đƣợc ký hiệu:
SKROOTLOGl 𝛼|𝑦 = 𝑔(𝛼𝑒) (m)
Là một nhóm (c, s1, s2, ..., sl)∈ 0,1 ∗ 𝑍𝑚∗phải thoản mãn: c =Hl (m, y, g, a, P1, P2, ..., Pl)
Trong đó: c[i] là bit thứ i của c kể từ bên trái
2/. Sơ đồ chữ ký
* Setup: Ngƣời quản trị nhóm chọn tham số an toàn l rồi làm các bƣớc sau :
+Dùng hệ mật RSA, chọn ncó độ dài tối thiểu là 21 bit, n = p*q,p = P + 1, q = 2Q + 1, trong đó p, q, P, Q là các số nguyên tố.
+ Chọn khóa công khai e và khóa bí mật d
+ Một nhóm Cyclic G = <g> (G có phần tử sinh là g) + Một phần tử ngẫu nhiên a∈𝑍𝑁∗.
+ Một số mũ λ và một hằng số μ >1, μ càng lớn thì hệ thống càng antoàn * Join: Một ngƣời muốn tham gia vào nhóm thì phải thực hiện các bƣớc sau:
+ Lấy một khóa bí mật ∈{0, 1, ..., 2λ − 1} + Tính y = a (mod n)
+ Tính khóa thành viên z = gy, ngƣời này sẽ sử dụngkhóa bí mật của mình để kýz.
+ Để có đƣợc chứng nhận thành viên của nhóm, anh ta gửi (y, z) cho ngƣờiquản lý nhóm, ngƣời quản lý nhóm sẽ cấp cho anh ta chứng nhận thành viên:
v≡(y+1)d(mod n)
*Sign: Để ký một thông điệp m, anh ta làm theo các bƣớc sau : + 𝑔 = g rvới r ∈Zn
+ 𝑧 = 𝑔 𝑦(= z r)
+ V1 = SKLOGLOGl[𝛼|𝑧 =𝑔 ](m) +V2 = SKROOTLOGl[ 𝛽|𝑧 𝑔 = 𝑔 𝛽](m)
Chữ ký trên thông điệp m gồm $ = (𝑧 ,𝑔 ,V1 , V2)
*Verify:Để xác thực chữ ký $ đúng là chữ ký trên m ta phải làm các bƣớc sau : + Kiểm tra V1 thỏa mãn𝑧 𝑔 = 𝑔 𝛼+1hay không
+ Kiểm tra V2 là chữ ký dựa trên hàm logarit rời rạc của phần tử gốc thứ e. *Open: Với chữ ký $= (𝑧 ,𝑔 ,V1 , V2) trên thông điệp m, ngƣời quản lý nhóm cóthể xác định ngƣời ký bằng cách kiểm tra xem𝑧 = 𝑔 𝑦𝑝, với mọi thành viên Pcủa nhóm với yp = a (mod n) = log ggyp = log gzp và khóa thành viênzp=gyp.
Chương 3. ỨNG DỤNG MỘT SỐ LOẠI CHỮ KÝ ĐẶC BIỆTTRONG HỆ THỐNG BỎ PHIẾU TỪ XA