Chương 2 .MỘT SỐ LOẠI CHỮKÝ ĐẶC BIỆT
2.1. CHỮKÝ MÙ RSA
Chữ ký mù đƣợc David Chaum giới thiệu vào năm 1983, nó là một loại chữ kýsố, trong đó nội dung của thông điệp cần đƣợc ký bị “che” đi trƣớc khi nó đƣợc ký.
Chữ ký thu đƣợc có thể đƣợc xác thực nhƣ là đối với chữ ký số thông thƣờng. Chữ ký mù thƣờng đƣợc dùng trong các vấn đề đòi hỏi sự nặc danh nhƣ trong các ứng dụng tiền điện tử, bỏ phiếu điện tử,….
Chữ ký mù là chữ ký mà ngƣời ký không biết mình đang ký trên nội dung gì. Vì vậy mà ngƣời tagọi là “mù”.Làmđƣợc nhƣ vậy vì nội dung X trƣớc khi đƣa cho ngƣời ký đã đƣợc làm mù thành X‟. Ngƣời ký ký trên X‟ chứ không phải ký trên X.
Ví dụ: Alice cần Bob ký cho một chữ ký trên nội dung X, Alice không đƣa X cho Bob ký mà làm mù X thành X‟. Sau đó Alice đƣa X‟ cho Bob ký. Sau khi nhận đƣợc chữ ký trên X‟, A xóa mù để thu đƣợc chữ ký trên X. Nhƣ vậy Alice vẫn có chữ ký Bob của trên X mà Bob không hề biết thông tin gì về X.
2.1.2. Sơ đồ chữ ký RSA 1/. Sơ đồ 1/. Sơ đồ
- Tạo cặp khóa (bí mật, công khai) (a, b) :
Chọn bí mật 2 số nguyên tố lớn p, q, tínhn = p * q, công khai n, đặt P= A= Zn
Tính bí mật (n) = (p-1).(q-1). Chọn khóa công khai b <(n), nguyên tố cùng nhau với (n).
Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a*b 1(mod (n)).
Tập cặp khóa (bí mật, công khai) K = {(a, b)/ a, b Zn , a*b 1 (mod (n))}. - Ký: Chữ ký trên x P là y = Sigk (x) = xa (mod n), y A.
2/. Ví dụ
- Tạo cặp khóa (bí mật, công khai) (a, b):
Chọn bí mật số nguyên tố p = 13, q = 23, tính n = p * q = 13*23 = 299, công khai n.
Đặt P = A = Zn . Tính bí mật (n) = (p-1).(q-1) = 12 * 22 = 264 Chọn khóa công khai b = 23<(n), nguyên tố với (n).
Khóa bí mật a = 23, là phần tử nghịch đảo của b theo mod (n): a * b 1 (mod (n)).
- Ký số: Chữ ký trên x = 12là:
y = Sig k (x) = xa (mod n)=1223 (mod 299) = 416, y A.
- Kiểm tra chữ ký: Verk (x, y) = đúng x=ya(mod n)12= 41623 (mod 299).
2.1.3. Sơ đồ chữ ký mù RSA 1/. Sơ đồ 1/. Sơ đồ
Mục đích là Alicecần có đƣợc chữ ký của Bob trên văn bản x theo sơ đồ chữ ký RSA nhƣng không để cho Bob biết giá trị x thực sự. Chữ ký đó là giá trị xamod n. Lúc này Alice và Bob phải thực hiện một số bƣớc sau:
- Alice làm mù x (che x) thành u: u = Blind(x) = x.rb(mod n), với n và b đƣợc lấy từ khóa công khai của Bob, r là ngẫu nhiênZn và r nguyên tố cùng nhau với n. (r phải nguyên tố cùng nhau với n để tồn tại phần tử nghịch đảo r-1 mod n).
- Alice gửi u cho Bob, Bob ký trên u, đƣợc chữ ký là v = Sig(u) sau đó gửi lại cho A:
v = Sig(Blind(x)) = Sig(x*rb(mod n)) = xa. (rb)a(mod n) - Alice xóa mù trên v, sẽ nhận đƣợc chữ ký trên x
z = Unblind(v) = v/r mod n = xa.(rb)a /r(mod n) = xa.r/r mod n = xa mod n
Nhƣ vậy Alice đã nhận đƣợc chữ ký của Bob: xa mod n, mà Bob không biết nội dung của văn bản x. Bởi vì nội dung của thông điệp x đã đƣợc làm mù thành u thông qua việc nhân với rb, cho dù b là số công khai lấy từ Bob, nhƣng r là số ngẫu nhiên mà Bob khó có thể biết đƣợc.Sau khi Bob ký xong, Alice xóa mù (nhân với r-1) chữ ký trên u để nhận đƣợc chữ ký của Bob trên x. [6]
2/. Ví dụ minh họa
Sơ đồ chữ ký mù RSA với K = (n, p, q, r, b, a) trong đó: p = 113, q = 23, n = p * q = 2599
(n) = ( p -1 ) * (q – 1 ) = 2464
Chọn khóa công khai b = 23<(n), nguyên tố cùng nhau với (n). Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a =1607. Giả sử thông điệp cần ký là x = 1607.
-Alice chọn số ngẫu nhiên r = 13 nguyên tố cùng nhau với n. Alice che dấu định danh x bằng bí danh u:u = Blind(x) = x.rb(mod n) = 1067 *1323(mod 2599) =2164629.
- Alice gửi bí danh u cho Bob, nhận đƣợc chữ ký v:
v = Sig(u) = x a .(rb)a= uamod n = 216462923 ( mod 2599 ) = 2261.
- Sau khi nhận đƣợc v, Alicetiến hành xóa mù trên v sẽ nhận đƣợc chữ ký trên định danhx:
Unblind(v) = v/r mod n = xa.(rb)a /r(mod n) = xa mod n = 160723 ( mod 2599) =2573.