Những đặc điểm của chữký nhóm

Một phần của tài liệu Tìm hiểu, nghiên cứu một số Chữ ký đặc biệt dùng trong bỏ phiếu điện tử (Trang 34)

+ Chỉ có thành viên trong nhóm mới có thể ký tên vào bản thông báo đó

+ Ngƣời nhận thông điệp có thể kiểm tra xem chữ ký đó có đúng là của nhóm đó hay không, nhƣng ngƣời nhận không thể biết đƣợc ngƣời nào trong nhóm đã ký vào thông điệp đó.

+ Trong trƣờng hợp cần thiết chữ ký có thể đƣợc “mở” (có hoặc là không có sự giúp đỡ của thành viên trong nhóm) để xác định ngƣời nào đã ký vào thông điệp đó.

2.2.2.1. Hiệu quả của chữ ký nhóm

Khi đánh giá hiệu quả của một sơ đồ chữ ký nhóm ta cần quan tâm đến các thông số sau:

+ Độ lớn của khóa công khai nhóm (số bit) + Độ lớn của chữ ký trên một thông điệp (số bit)

+ Hiệu quả của các thủ tục: Setup, Join, Sign, Verify, Open

+Tính ƣu việt của chữ ký nhóm chính là khả năng cho phép những nhóm ngƣời, những tổ chức giao tiếp với nhau, mà trong đó việc xác thực các thông tin gửi cho nhau thông qua các khóa công khai của mỗi nhóm. Nhờ đó những thành viên của nhóm có thể ký nặc danh đại diện cho nhóm của mình mà không thể để lộ thông tin cá nhân của mình, và chỉ có ngƣời quản trị mới có thể xác định đƣợc ngƣời ký.

2.2.2.2. Việc đảm bảo an ninh đối với chữ ký nhóm.

+ Không thể giả mạo: Chỉ có các thành viên trong nhóm mới có thể đại diện cho nhóm ký trên thông điệp của nhóm.

+ Ngƣời ký nặc danh có thể tính toán đƣợc: Bất kỳ ai cũng có thể xác thực chữ ký một cách dễ dàng nhƣng không thể biết đƣợc ai là ngƣời ký (Trừ ngƣời quản lý nhóm và ngƣời ký).

+ Không thể chối bỏ: Một thành viên ký trên một thông điệp thì không thể chối bỏ chữ ký đó đƣợc. Ngƣời quản lý nhóm có thể xác định đƣợc ai đã ký vào thông điệp đó.

+ Không thể phân tích quan hệ: Việc phân tích xem hai chữ ký của một thành viên trong nhóm khác nhau nhƣ thế nào là khó đối với các thành viên của nhóm trừ ngƣời quản lí nhóm.

+ Ngăn chặn framing Attacks: Khi một số thành viên liên kết với nhau cũng không thể giả mạo chữ ký của thành viêc khác trong nhóm.

+ Ngăn chặn sự liên minh: Khi một số thành viên liên kết với nhau cũng không thể tạo ra một chữ ký hợp lệ mà không xác định đƣợc ngƣời ký.

2.2.3. Các sơ đồ chữ ký nhóm

2.2.3.1. Sơ đồ chữ ký nhóm thứ nhất

Do David Chaum và Van Heyst sáng tác

1/. Tạo khóa và quản lý khóa

- Z là ngƣời quản lý nhóm hoặc là ngƣời tin cậy đƣợc ủy nhiệm chọn một hệ thống khóa bí mật và đƣa cho mỗi thành viên một danh sách các khóa bí mật (các danh sách này là khác nhau) và công bố một danh sách đầy đủ các khóa công khai tƣơng ứng (theo thứ tự ngẫu nhiên) trong một thƣ mục công khai tin tƣởng (trusted public directory – TPD).Chọn p là một số nguyên tố.

- Nếu mỗi ngƣời có cùng một số lƣợng các khóa bí mật, thì chiều dài của khóa công khai của nhóm là tuyến tính với số thành viên, nhƣng số thông điệp của mỗi thành viên ký là không đổi.

- Thành viên thứ i có thể ký một thông điệp bằng một khóa bí mật sitrong danh sách khóa của anh ta. Mỗi khóasi chỉ đƣợc sử dụng một lần, nói cách khác các chữ ký đã đƣợc tạo bằng khóa này đƣợc liên kết.

- Z biết danh sách khóa bí mật của mỗi thành viên, vì thế trong trƣờng hợp cần thiết, anh ta biết đƣợc ai đã tạo ra chữ ký đó. Để làm đƣợc điều này, Zmở” một chữ ký. [6, 12]

2/. Ký số và kiểm tra chữ ký

Việc ký số và kiểm tra chữ ký hoàn toàn có thể sử dụng sơ đồ chữ ký Elgamal.

* Sơ đồ chữ ký Elgamal :

Sinh khóa (a,h):

Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là khó giải.

Chọn phần tử nguyên thủy g𝑍𝑝∗. Đặt P =𝑍𝑝∗, A = 𝑍𝑝∗ ∗ 𝑍𝑝−∗ 1.

Chọn khóa bí mật là a 𝑍𝑝∗. Tính khóa công khai h  ga mod p. Định nghĩa tập khóa: K = {(p, g, a, h): h ga mod p).

Các giá trị p, g, h đƣợc công khai, phải giữ bí mật a. (adsbygoogle = window.adsbygoogle || []).push({});

Ký số:Dùng 2 khóa ký: khóa a và khóa ngẫu nhiên bí mật r 𝑍𝑝−∗ 1

(Vì r 𝑍𝑝−∗ 1, nên nguyên tố cùng nhau với p-1, do đó tồn tại r-1 mod (p-1)). Chữ ký trên x  P là y = Sigk (x,r) = (, ), y A

Trong đó: 𝑍𝑝∗, 𝑍𝑝−1:

 =ga mod p,  = (x-a*)* r-1mod(p-1)

Kiểm tra chữ ký:

Verk (x, , ) = đúng  h * gx mod p. Nếu chữ ký đƣợc tính đúng, kiểm thử sẽ thành công vì: h* g a** g r* mod p g(a* +r* ) mod p  gx mod p.

Ví dụ:

1/. Sinh khóa :

Tạo cặp khóa bí mật công khai (a, h): Chọn số nguyên tố p =463.

Chọn phần tử nguyên thủy g=2 𝑍𝑝∗. Đặt P =𝑍𝑝∗, A = 𝑍𝑝∗∗ 𝑍𝑝−∗ 1.

Chọn khóa bí mật là a =211𝑍𝑝∗. Tính khóa công khai h  ga mod p = 2211mod463 =249.

Định nghĩa tập khóa: K = {(p, g, a, h): h ga mod p). Các giá trị p, g, h đƣợc công khai, phải giữ bí mật a.

Ký số:Dùng 2 khóa ký: khóa a và khóa ngẫu nhiên bí mật r 𝑍𝑝−∗ 1

Chọn ngẫu nhiên r= 235 (Vì r 𝑍𝑝−∗ 1, nên nguyên tố cùng nhau với p-1, do đó tồn tại r-1 mod (p-1) =235-1mod462 =289).

Chữ ký trên x=112  P là y = Sigk (x,r) = (, ), y A Trong đó: 𝑍𝑝∗, 𝑍𝑝−1:

 =ga mod p=2211mod 463= 16,

 = (x-a*)* r-1mod(p-1)= (112-211*16)*289 mod462=108

Kiểm tra chữ ký:

Verk (x, , ) = đúng  h * gx mod p. Kiểm thử :

h*= 24916* 16108 mod 463 =132. gx mod p= 2112mod463 =132.

Do hai giá trị h* mod p =gx mod p =132 nên chữ ký là đúng.

3/. Hạn chế:Một vấn đề đối với sơ đồ này là Z biết tất cả các khóa bí mật của các thành viên và có thể giả mạo chữ ký. Điều này có thể đƣợc giải quyết hai cải biên sau: sử dụng các khóa công khai “mù” hoặc có thể không sử dụng trƣởng nhóm.

+ Sử dụngkhóa công khai”.

- Chọn p là số nguyên tố, g là phần tử sinh của nhóm nhân Z*p.

Thành viên i tự chọn khóa bí mật “thực sự” của mình là si,khóa công khai “thực sự” là hi = g s i mod p.

- Trƣởng nhóm Z chỉ có danh sách các khóa công khai hi (khác nhau), tƣơng ứng với tên của các thành viên trong nhóm. Zkhông quản lý các khóa bí mật của mỗi thành viên.

- Mỗi tuần Z đƣa cho thành viên i một số ngẫu nhiên riZ*p, trong tuần này thành viên i dùng si*ri mod (p-1) làm khóa bí mật ”. (Khóa mật si đã bị che giấu bởi ri).Khóa công khai “mù” tƣơng ứng là hi -mù = g s i . r i = (gs i ) r i.

- Z “khó”giả mạo chữ ký, vì không biết khóa mật “thực sự” si (của mỗi thành viên i). Tham số ri có thể bị lộ, nhƣng si vẫn không bị lộ bí mật.

Trƣởng nhóm Zcó thể dùng ri để kiểm tra i có phải là ngƣời trong nhóm hay không.

+ Không sử dụng trưởng nhóm (adsbygoogle = window.adsbygoogle || []).push({});

- Không cần phải có nhóm trƣởng Z.

- Mỗi thành viên i trong nhóm tự tạo ra cặp khóa bí mật, công khai (si , hi). - Mỗi thành viên gửi các khóa công khai của mình vào danh sách khoá công khai của nhóm và chỉ những thành viên của nhóm mới có thể gửi các khóa công khai vào danh sách này [6, 12].

2.2.3.2. Sơ đồ chữ ký nhóm thứ hai

Do David Chaum và Van Heyst xây dựng, áp dụng theo sơ đồ chữ ký RSA.

1/. Tạo khóa và quản lý khóa

- Trƣởng nhóm Z chọn hai số nguyên tố lớn p, q khác nhau và tính N=p*q.

Z đƣa cho thành viên thứ i một khóa bí mật si,là một số nguyên tố lớn ngẫu nhiên thuộc tập hợp ={ 𝑁 ,…, 2 𝑁 -1}, và tính v = ∏si, công khai N và v.

- Thành viên i ký vào thông điệp m, chữ ký của anh ta sẽ là$ = msi mod N.

- Khi ngƣời nhận chữ ký cần xác minh ngƣời ký i là thành viên của nhóm, có khóa công khai là v. Thì ngƣời ký cần phải chứng minh cho ngƣời nhận rằng si là ƣớc của v, và si∈ mà không để lộ bất kì thông tin nào về si.

Ngƣời nhận chữ ký có thể xác minh ngƣời ký bằng giao thức xác nhận, hoặc giao thức chống chối bỏ với mỗi thành viên nhóm, mà không cần sự giúp đỡ của trƣởng nhóm Z.

2/. Giao thức xác nhậnngƣời ký

Trong giao xác nhận ngƣời ký sử dụng phƣơng pháp chứng minh không tiết lộ thông tin.

- Ngƣời ký P sẽ phải chứng minh rằng $ = m s (mod N) là chữ ký của anh ta trên thông điệp m với ngƣời nhận V mà không để lộ thông tin nào về khóa bí mật s của anh ta. Sử dụng giao thức 1 và giao thức 2.Trong hai giao thức có sử dụng tính toán Blob an toàn (B)(computationally secure blobs).

Z chọn phần tử sinh gpcủa Z*p , hq của Z*q và tính

g mod 1 mod p g p q    và h 1 mod mod q p h q    (định lý số dƣ Trung Quốc).

P chọn r1, r2 (1,…,N) và tính Blob an toàn B ($) =$.𝑔𝑟1 .ℎ𝑟2(modN).

* Giao thức 1:P chứng minh với V rằng $ = m s (mod N) là chữ ký của anh ta trên thông điệpm.

a/. P chọn r ∈ (0, …, β). Tính các blob trên z1 ≡ mr (mod N) và z2 ≡ mr-β (mod N), và gửi không theo thứ tự {B(z1), B(z2)} cho V.

b/. V chọn ngẫu nhiên b ∈ (0, 1) và gửi cho P

c/. P gửi lại cho V các thông tin ứng với 2 giá trị của bP nhận đƣợc: Nếu P nhận b= 0, thì P gửi cho V giá trị r và mở các Blob B(z1), B(z2).

Nếu P nhận b= 1, thì P gửi cho V giá trị r là (s+r) hoặc (s +r - ), và tƣơng ứnggiá trị z là z1 hoặc z2.

d/. V kiểm tra trong trƣờng hợp:

b = 0: kiểm tra r ∈( 0, …, β) và các blob của mrvà mr-β theo thứ tự nào đó b = 1: kiểm tra 𝑟 ∈ Ω và một trong các blob chứa 𝑧 và 𝑧 thỏa mãn

𝑚𝑟 𝑧 $ (mod N).

Nếu P có thể trả lời đúng cả hai yêu cầu khi V gửi b thì chữ ký $ trên thông điệp m đúng là của P. Còn nếu một trong hai câu có kết quả sai hoặc cả hai câu đều sai thì chữ ký $ trên thông điệp m không phải là chữ ký của P.

* Giao thức 2:V kiểm tra P là thành viên của nhóm: Bằng cáchkiểm tra rằng s

ước số của v.

a/. Chứng minh tồn tại s sao cho ms≡ $(mod N) và s ∈Ω bằng giao thức 1,thực hiện k lần.

b/. Chứng minh rằng s|v chi tiết trong hình 2.1:

Hình 2.1. Giao thức 2 (adsbygoogle = window.adsbygoogle || []).push({});

Trong đó: y x v / s ($ r ) v / s ((m s)r ) v / s m v r 3/. Giao thức chối bỏ

Nếu P muốn chứng minh choV rằng $ không phải là chứ ký của anh ta trên thôngđiệp m, thì P có thể sử dụng giao thức 3, và giao thức 4.

* Giao thức 3: Chứng minh: $ m s(mod N) với khóa ký ss|v.

- Trƣởng nhóm Z tính và công khai (𝑔 ,ℎ ) đƣợc sinh trong nhóm 𝑍𝑁∗(cách tính𝑔 vàℎ ) nhƣ sau:

Chọn các sốnguyên a1, a2, b1, b2 thỏa mãn gcd(a1, b1, p-1) = gcd(a2, b2, q-1) = 1, g, h là các phần tử sinh của 𝑧𝑃∗ và 𝑧𝑞∗.

𝑔 ≡𝑔𝑎1ℎ𝑎1,ℎ ≡𝑔𝑏1ℎ𝑏1

Lấy t là một hằng số rất nhỏ đểviệc tìm kiếm toàn diện trên (0, …,t) là khả thi. Chú ý rằng nếu $≡ ms, thì P khôngthể tính a từ (ms/$)a, vì khi đó (ms/$)a= 1. Khi đó anh ta sẽ phải đoán a chi tiết trong hình 2.2.

Hình 2.2. Giao thức 3

Giao thức 4:

Do chữ ký đƣợc tạo ra là chữ ký không thể chối bỏ, ta có thể sử dụng giao thức chối bỏ của sơ đồ chữ ký không thể chối bỏ của David Chaum để thƣc hiện việc chứng minh chữ ký S không phải là chữ ký của P trên thông điệp m.

- Trƣởng nhóm Z công khai𝑔 và 𝑔 𝑠𝑖(mod N), 𝑆𝑖−1 (mod (N)) tƣơng ứng từng thành viên.

+ Bƣớc 1: V chọn ngẫu nhiên 2 số nguyên x1, x2 ∈Ф, tính c = 𝑆𝑥1 𝑔 𝑠 𝑥2mod N, sau đó gửi cho P.

+ Bƣớc 2: P tính d =(𝑐)𝑠−1mod N, gửi d cho V

+ Bƣớc 3: V thử điều kiện d ≠ 𝑚𝑥1𝑔 𝑥2mod N. Nếu đúng thì tiếp tục bƣớc 4. Nếu sai thì chữ ký đúng là của P.

+ Bƣớc 4: V chọn ngẫu nhiên 2 số nguyên tố𝑥1′, 𝑥2′∈Ф tínhc' = 𝑆𝑥1′ 𝑔 𝑠 𝑥2′mod N,sau đó gửi c‟ cho P .

+ Bƣớc 5: P tính d‟= 𝑐′ 𝑠−1mod N, sau đó gửi d‟ cho V

+ Bƣớc 6: V thử điều kiện d‟ ≠ 𝑚𝑥1′𝑔 𝑥2′mod N. Nếu đúng thì tiếp tục bƣớc 7. Nếu saithì chữ ký đúng là của P.

+ Bƣớc 7: V kiểm tra dg−x2 x1′≡ d′g−x2′ x1

mod N? Nếu đồng dƣ thức đùng thì kết luậnchữ ký không phải là của P. [6, 12]

Ví dụ:

Một ví dụ về sơ đồ chữ ký nhóm dựa trên hệ mật mã RSA

+ Thành lập một nhóm có 5 thành viên, quá trình cài đặt nhóm do ngƣờiquản lý nhóm thực hiện nhƣ sau :

Z chọn p = 101, q = 113, N = p.q = 11413, (N) = (p-1)(q-1) = 11200;

Zchọn khóa bí mật của Z là Sz = 149, gp = 3, hq = 2 là các phần tử sinh của𝑍𝑝∗ và

𝑍𝑞∗

Chọn a1 = 3, a2 = 7, b1 = 11, b2 = 13.

Tính 𝑔 = 𝑔𝑎1ℎ𝑎2mod N = 3456 và ℎ = 𝑔𝑏1ℎ𝑏2mod N = 2448 Các khóa bí mật của các thành viên nhƣ sau :

s1= 107,s2 = 113, s3 = 123, s4 = 129, s5 = 137

Khóa công khai của các thành viên (là nghịch đảo của khóa bímật của các thành viên trong trƣờng mod (N)) đƣợc gửi lên TPD nhƣsau không theo thƣ tự): 5443, 2577, 3187, 8769, 10873. Các khóa côngkhai này sẽ đƣợc ngƣời nhận thông điệp dùng để xác minh có đúng haykhông.

Khóa công khai của nhóm là:N = 11413v =Sz*ΠSi=3916191121461. (adsbygoogle = window.adsbygoogle || []).push({});

* Ký văn bản:

Ký văn bản m = 1234 thì chữ ký của từng thành viên lần lƣợt là: 278, 6093, 6541, 6528, 8331

* Xác nhận chữ ký (sử dụng giao thức 1)

Thành viên 1 muốn xác nhận chữ ký S = 278 đúng là của anh ta (gọi làP) trên văn bản m = 1234 với ngƣời xác nhận (gọi là V) thì anh tathực hiện giao thức xác nhận (giao thức 1) + Bƣớc 1: P chọn β = 57, chọn r = 23. Tính z1 = 123423 mod 11413 = 4016, z2 = 123423-57 = mod 11413= (1234-1)34 mod 11413 = 951734 mod 11413 = 2429. Tính các blobs: g = 1922, h = 4748, chọn r1 = 5,r2 = 7.

B(z1)= 4016.19225.47487mod 11413 = 8712 B(z2) = 2429.19225.47487mod 11413 = 1518

+ Bƣớc 2: V chọn b = 0 hoặc b = 1 rồi gửi cho P

+ Bƣớc 3: P gửi cho V

- Nếu b = 0 thìr = 23, β = 57,mở các blob g = 1922, h = 4748,r1 = 5,r2= 7, z1 = 4016, z2 = 2429

- Nếu b = 1 thì r = 107 + 23 = 130, z = 4016

+ Bƣớc 4: V xác định

- Nếu b = 0 thì r ∈(0, …, β) và kiểm tra z1= 4016, z2= 3418 sauđó kiểm tra B(4016) = 8712 và B(3418) = 5505 theo thứ tự nào đómà P đã gửi ở bƣớc 1. Nếu kiểm tra thỏa mãn thì chữ ký làđúng.

- Nếu b = 1 thì kiểm tra 1234130≡ 4016.278 (mod 11413) ↔9387 ≡9387. Do đó chữ ký là đúng.

* Chối bỏ chữ ký (sử dụng giao thức 4).

Giả sử thành viên thứ 1 ký thôngđiệp m = 1234, chữ ký S = 278, thành viên thứ ba muốn chứng minh rằngđó không phải là chữ ký của anh ta. Khi đó ngƣời quản lý nhóm công bố: N = 11413, 𝑔 = 1299,𝑔 𝑠= 4528 (mod N),s-1= 3187(mod(N)) (cho thành viên cần phải chứng minh biết P).

+ Bƣớc 1: V chọn x1 = 3, x2 = 5. Tính c = 2783.45285 (mod N) = 6595. Gửi c cho P.

+ Bƣớc 2: P tính d = 65953187(mod N) = 5172. Rồi gửi cho V

+ Bƣớc 3: V thử 5172 ≡ 12343.12995 (mod 11413)? →5172 4285

+ Bƣớc 4: V tính c‟ = 2784.45286 (mod N) = 1236 rồi gửi c‟ cho P

+ Bƣớc 5: P tính d‟ = 12363187 (mod N) = 6038 rồi gửi cho V

+ Bƣớc 6: V thử 6038 ≡ 12344.12996(mod 11413)? →6038694

+ Bƣớc 7: V kiểm tra 6038.1299−6 3 𝑚𝑜𝑑𝑁 =2682

5172.1299−5 4 𝑚𝑜𝑑𝑁 =2682

4/. Vấn đề“ mở ” chữ ký

Trong trƣờng hợp cần thiết, ngƣời quản lý nhóm có thể xác định một chữ ký là dothành viên nào trong nhóm ký bằng cách thực hiện giao thức chối bỏ với từng thànhviên trong nhóm.

Bởi vì chữ ký, mà mỗi thành viên ký là một chữ ký không thể chối bỏ, do đó nếusử dụng giao thức chối bỏ (giao thức 3) thì một thành viên sẽ không thể phủ nhận chữký mà mình đã ký. Và khi đó ngƣời quản lý nhóm sẽ biết đƣợc chữ ký đó là của ai.

5/. Nhận xét

Các sơ đồ chữ ký nhóm của David Chaum đều dựa trên hệ mã RSA và việc tính logaritrời rạc đối với một số nguyên tố lớn là khó. Các thông tin về ngƣời ký là an toàn,không ai trong nhóm có thể biết đƣợc (tất nhiên là trừ ngƣời đã ký).

Chữ ký đƣợc tạo ra là chữ ký không thể chối bỏ.

Độ dài của khóa công khai tuyến tính với số ngƣời trong nhóm, số ngƣời trong nhóm luôn cố định.

2.2.3.3. Sơ đồ chữ ký nhóm thứ ba (adsbygoogle = window.adsbygoogle || []).push({});

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

Một phần của tài liệu Tìm hiểu, nghiên cứu một số Chữ ký đặc biệt dùng trong bỏ phiếu điện tử (Trang 34)