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

Một phần của tài liệu Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử (Trang 36 - 42)

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 công khai 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 Trusted Public Directory – TPD

Mỗi thành viên có thể ký một thông điệp bằng một khóa bí mật trong danh sách của anh ta, và người nhận có thể kiểm tra chữ ký bằng một khóa công khai tương ứng từ danh sách khóa công khai. Mỗi khóa 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 tất cả các danh sách khóa bí mật, vì thế trong trường hợp cần thiết, Z có thể biết được ai đã tạo ra chữ ký đó. Để làm được điều này Z phải “mở” chữ ký.

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.

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 bằng việc sử dụng các khóa công khai mù. Lấy g là phần tử sinh của nhóm nhân Z*

p với p là một số nguyên tố. Thành viên thứ I lấy khóa bí mật của mình là si và tính gsi mod p rồi gửi cho Z, Z có một danh sách các khóa công khai khác nhau này cùng với tên của các thành viên. Mỗi tuần Z đưa cho thành viên I một số ngẫu nhiên ri ∈ {1,2,..., p−1} và công bố danh sách tất cả các khóa công khai mù là ( )si ri

g . Trong suốt tuần này thành viên I sẽ sử dụng siri mod (p-1) làm khóa bí mật.

Ưu điểm của việc cải biên này là Z không thể giả mạo chữ ký, và mỗi thành viên sẽ có một “ khóa bí mật thực sự ”. Nếu ri chẳng may bị lộ thì vẫn không có một thông tin nào về khóa bí mật si bị lộ.

Trong một cải biên khác, không cần phải có người ủy quyền tin cậy, mỗi người dùng gửi một (hoặc nhiều hơn ) các khóa công khai tới một danh sách công khai sẽ là khóa công khai của nhóm. Nhưng 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.

3.3.2. Sơđồ ch ký nhóm th hai

Z chọn hai số nguyên tố lớn p, q khác nhau và một hàm một chiều 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 φ ={[ ] [ ]N ,K, 2 N −1}, và tính v = ∏si, và công bố N, v và f. Nếu thành viên I muốn ký thông điệp m, chữ ký của anh ta sẽ là (f( )m )si mod N.

Z 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. Trong trường hợp có xảy ra tranh cãi sau đó, người nhận có

thể sử dụng giao thức xác nhận hoặc giao thức chống chối bỏ yêu cầu bên gửi phải chứng minh rằng chữ ký không phải của bên gửi.

3.3.2.1. Giao thc xác nhn

Người ký P sẽ phải chứng minh rằng S là chữ ký của anh ta trên thông điệp m với V mà không để lộ thông tin nào về khóa bí mật s của anh ta, việc này sẽ được giải quyết bởi giao thức 1, chúng ta sẽ phải tính toán các blob an toàn B .

Ta coi bản thu gọn của thông điệp là m.

Giao thức xác nhận 1

Nếu giao thức này được lặp lại k lần, V sẽ tin rằng s ∈ Ω; nhưng V sẽ không nhận được gì hơn ngoài sự thật là s ∈Ω;

Giao thức 1

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

2. V chọn ngẫu nhiên b ∈ (0, 1) và gửi cho P 3. P gửi lại cho V trong trường hợp

b = 0:r và mở các blob

b = 1:~z là (c + r) hoặc (c + r - β) và tương ứng z1 hoặc z2 (gọi là z~) 4. V kiểm tra trong trường hợp :

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

r

m~≡ z~S (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ý S 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ý S trên thông điệp m không phải là chữ ký của P.

Blob B có thểđược tính bằng cách sau: Z chọn các phần tử sinh gp và hq của * p Z và * q Z và tính g ≡ ⎩ ⎨ ⎧ q l p gp mod mod và h ≡ ⎩ ⎨ ⎧ q h p l q mod mod sử dụng CRT Để tính B(y) thì P chọn r1, r2∈ (1, …, N) và tính B(y) = ygr1hr2mod N Khóa bí mật của P : s Công khai : N, m, S, Ω; m, s ∈ Z* N, Ω ={[ ] [ ]N ,K, 2 N −1}⊂ N Chứng minh với V : ms ≡ S (mod N) và s ∈Ω

Trong giao thức này, chúng ta tạo một giao thức xác nhận, vì P muốn chứng minh cho người nhận V rằng P đưa cho một V chữ ký có giá trị S. Trường hợp này được giải quyết như sau :

Giao thức xác nhận 2

Giao thức 2

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

2. Chứng minh rằng s|v như sau:

Giao thức 2

3.3.2.2. Giao thc chi b

Nếu P muốn chứng minh cho V rằng S không phải là chứ ký của anh ta trên thông điệp m, trường hợp này sẽđược giải quyết như sau:

Giao thức chói bỏ Khóa bí mật của P : s

Công khai : N, m, S, Ω; m, s ∈ Z*

N, Ω ={[ ] [ ]N ,K, 2 N −1}⊂ N

Chứng minh với V : ms ≡ S (mod N) và s ∈Ω và s|v (s là ước của v)

P V a ≡ Sr Chọn r ∈ (1,…, N) b ≡ av/s B(b) Kiểm tra a r

Mởblob Kiểm tra blob và b≡mvr

Khóa bí mật của P : s

Công khai : N, m, S, Ω; m, s ∈ Z*

N

Z công bố (g,h ) được sinh trong nhóm Z*

N (cách tính g, h 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 và công khai

2 1 2 1 ~ , ~ gaha h gbhb g ≡ ≡ với g, h là các phần tử sinh của Zp* và Z* q), cùng đó là một thư mục công khai tin cậy chứa ( tên thành viên, g~s,h~s). Lấy l là một hằng số rất nhỏ để việc tìm kiếm toàn diện trên (0, …, 1) là khả thi. Chú ý rằng nếu S ≡ ms, thì p không thể tính a từ ( s )a

S

m / , vì khi đó ( s )a

S

m / = 1. Khi đó anh ta sẽ phải đoán a.

Giao thức 3

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ỏ do chính tác giả David Chaum sáng tác để 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 với

V .

Z công bố g~và g~si(mod N), S-1i (mod ϕ(N)) tương ứng từng thành viên. Giao thức 4 sẽ giải quyết vấn đề chối bỏ chữ ký như sau :

Giao thức 4

Bước 1 : V chọn ngẫu nhiên 2 số nguyên x1, x2∈Ф, tính x1( )~s x2

g S c= mod N, sau đó gửi cho P Bước 2 : P tính ( )−1 = c s d mod N, gửi d cho V

Bước 3 : V thửđiều kiện dmx1g~x2mod N. Nếu đúng thì tiếp tục bước 4. Nếu sai thì chữ ký đúng là của P P V a~ ~r2 h g m ≡ Sr Chọn r1, r2∈ (1,…, N) và a ∈ (0, …, 1) a( )~s r1( )~s r2 h g S Tính a từ ( s )a S m / B(b) Bằng cách kiểm tra Toàn bộ các số r1, r2

Bước 4 : V chọn ngẫu nhiên 2 số nguyên tố x’ 1, x’ 2∈Ф tính c'=Sx1' ( )g~s x'2 mod N, sau đó gửi c’ cho P . Bước 5 : P tính ( ) 1 ' '= c s

d mod N, sau đó gửi d’ cho V

Bước 6 : V thử điều kiện d’ ≠ mx'1g~x'2mod N. Nếu đúng thì tiếp tục bước 7. Nếu sai thì chữ ký đúng là của P . Bước 7 : V kiểm tra ( ) ( ' )1 2 ' 1 2 ~ ~ x x d'g x x g d − ≡ − mod N ? Nếu đồng dư thức đùng thì kết luận chữ ký không phải là của P. 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ười quản lý nhóm thực hiện như sau : Z chọn p = 101, q = 113, N = pq = 11413, ϕ(N) = (p-1)(q-1) = 11200, Z chọ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 Z*p và Z *q. Chọn a1 = 3, a2 = 7, b1 = 11, b2 = 13. Tính g~= ga1ha2mod N = 3456 và ~ b1 b2 h g h= mod 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ông khai này sẽ được người nhận thông điệp dùng để xác minh có đúng hay không.

Khóa công khai của nhóm là N = 11413

v = szsi=3916191121461

™ 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 ta thự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 blob : g = 1922, h = 4748, chọn r1 = 5,r2 = 7. B(z1) = 4016.19225.47487 mod 11413 = 8712 B(z2) = 2429.19225.47487 mod 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ứ 3 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, g~ = 1299,g~s= 4528 (mod N) (công khai), 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 ≡ 1234412996(mod 11413)? →6038 ≡ 694 Bước 7 : V kiểm tra ( ) ( ) ( ) ( ) ⎪⎩ ⎪ ⎨ ⎧ = = − − 2682 mod 1299 . 5172 2682 mod 1299 . 6038 4 5 3 6 N N do đó chữ ký không phải là của P ™ Một vài nhận xét đối với sơđồ chữ ký nhóm thứ hai

Nếu tất cả thành viên của nhóm có âm mưu loại một người thì khóa bí mật của người này sẽ bị lộ. Việc này có thể dễ dàng được giải quyết khi Z là một thành viên của nhóm, khi đó Z sẽ tính v = szsi , trong đó sz là một khóa bí mật mà chỉ Z mới biết.

Độ dài của khóa công khai v tuyến tính với số thành viên của nhóm, do đó việc tăng một số lũy thừa của v sẽ là một lần tuyến tính số thành viên của nhóm.

3.3.3. Sơđồ ch ký nhóm th ba

Chúng ta giả sử rằng có một thư mục công khai tin cậy trong đó các modulo RSA của mỗi thành viên được liệt kê ( số mũ RSA công khai không cần trong sơđồ này)

Khóa bí mật của thành viên thứ I sẽ là thừa số của modulo RSA của anht a Ni= piqi. trong suốt quá trình cài đặt, Z chọn một số modulo RSA N độc lập với tất cả các Ni

của các thành viên. Lấy M là một số nguyên công khai sao cho pi∈Ф= [ ] [ ]

{ M ,..., 2 M −1} và qi> 4 M (đối với mọi i). nếu thành viên i muốn ký thông điệp m, anh ta chọn ngẫu nhiên một bộ Γ người ( bao gồm cả anh ta ), chữ ký của anh ta sẽ là :

( ) (f m )pi

,

Γ mod N

Và anh ta sẽ phải đưa ra một chứng cớ không tiết lộ thông tin rằng sử dụng thừa số pi ∈ Ф và pi là một ước số của modulo RSA của các người trong Γ. Điều này có thể được giải quyết bằng Giao thức 2 ( với Ω = Ф). Nếu một thành viên muốn chối bỏ một chữ ký, anh ta có thể sử dụng Giao thức 3.

3.3.3.1. Vn đề “ m ” ch

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à do thà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ành viê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ếu sử 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.

3.3.3.2. Nhn xét

Các sơđồ chữ ký nhóm của D.Chaum đều dựa trên hệ mã RSA và việc tính logarit rờ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ý).

Trong các sơđồ thì số người trong nhóm là cố định, riêng trong sơđồ thứ ba, khi một người muốn ký một văn bản mà không muốn lộ tên anh ta thì đồng thời anh ta tạo một nhóm người (các khóa công khai lấy từ thư mục công khai tin cậy) và anh ta sẽ chứng minh rằng anh ta thuộc nhóm người này.

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.

Một phần của tài liệu Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử (Trang 36 - 42)