CHỮ KÝ SỐ DSS.

Một phần của tài liệu Nghiên cứu độ an toàn của sơ đồ chữ ký số (Trang 68)

Chƣơng 2: ĐỘ AN TOÀN CỦA SƠ ĐỒ CHỮ KÝ SỐ

2.3. CHỮ KÝ SỐ DSS.

2.3.1. Sơ đồ.

Chuẩn chữ ký số DSS đƣợc đề xuất từ năm 1991 và đƣợc chấp nhận vào cuối năm 1994 để sử dụng trong một số lĩnh vực giao dịch điện tử tại Hoa Kỳ. DSS dựa vào sơ đồ chữ ký ElGamal.

Để đảm bảo an toàn, số nguyên tố p cần phải đủ lớn, biểu diễn nhị phân của p phải có từ 512 bit trở lên (cụ thể từ 512 đến 1024 bit, số bit là một bội của 64).

Tuy nhiên, độ dài chữ ký theo sơ đồ ElGamal là gấp đôi số bit của p, mà trong nhiều ứng dụng ngƣời ta lại mong muốn có chữ ký độ dài ngắn, nên giải pháp sửa đổi đƣợc đề xuất là: trong khi vẫn dùng p lớn với độ dài biểu diễn 512 bit trở lên, thì sẽ

Điều này đƣợc thực hiện bằng cách dùng một nhóm con cyclic Zq* của Zp* thay cho chính bản thân Zp*, do đó mọi tính toán vẫn đƣợc thực hiện nhƣ trong Zp* nhƣng các dữ liệu và thành phần của chữ ký lại thuộc Zq*.

Sơ đồ chuẩn chữ ký số DSS :

Chọn p là số nguyên tố lớn với độ dài biểu diễn  512 bit, sao cho bài toán tính logarit rời rạc trong Zp là khó, q là ƣớc số nguyên tố của p-1, có độ dài biểu diễn cỡ 160 bit. Gọi  Z*

p là căn bậc q của 1 theo mod p.

Đặt P = Z*p; A = Zq* x Zq*. Chọn a  Zq* và tính  a (mod p).

Xác định khoá K = (K‟, K‟‟), trong đó khoá bí mật K‟ = a, và khoá công khai K‟‟ = (p, q, , ).

Với x  P = Z*p, chọn số ngẫu nhiên k (0  k  q - 1).

Thuật toán ký nhƣ sau:

Sigk‟ (x, k) = (, ), trong đó

 = (k mod p) modq và  = (x + a)k-1 mod q

Thuật toán kiểm thử chữ ký nhƣ sau:

verK‟‟(x, (, )) = đúng  (e1.e2 mod p) mod q = , trong đó e1 = x.-1 mod q và e2 = .-1 mod q.

Chú ý rằng phải có   0 mod q, để có thể tính đƣợc -1mod q dùng trong thuật toán kiểm thử.

Vì vậy nếu chọn k mà   0 mod q, thì phải chọn số k khác để có đƣợc  0 mod q.

- Số nguyên tố lớn p, q.

- Tập khoá K = (p, q, , a, ).

Đầu ra: Chữ ký sigk(x, k)=(, ) có đúng không?

Kiểm thử chữ ký verk(x, , )= đúng nếu thoả mãn điều kiện (e1e2 mod p) mod q = 

Chƣơng trình ký trên ký tự C và kiểm tra chữ ký.

Readln(q); q là ƣớc nguyên tố của (p-1) Readln(p); Readln(a); Readln(); :=Mu_To(, a, p); Readln(k);  1 k  q-1 Readln(c); Nhập ký tự C Procedure KY_DSS; Begin x:=ord(c) – 64; := Mu_To(, k, p) mod q;

Writeln(, ); Chữ ký sigk(x, k) = (, ) End; Procedure KT_DSS; Begin Readln(, ); e1:=Nghich_dao()*x mod q. e2:=Nghich_dao()* mod q.

If ((Mu_To(, e1, p) * Mu_To(, e2, p))mod p) mod q= Then Xác nhận chữ ký là hợp lệ Else Xác nhận chữ ký là không hợp lệ End; Ví dụ: Giả sử q = 101, p = 78q + 1 = 7879.

Có 3 phần tử nguyên thuỷ trong Z7879, nên có thể lấy  = 378 mod 7879 = 170.

Chọn a = 75, khi đó:

 = a (mod p) = 17075 mod 7879 = 4576.

Nếu muốn ký bản tin x = 1234, thì chọn k ngẫu nhiên k=50. k-1 modq = 50-1mod 101 = 99.

 = (k mod p) mod q

= (7050 mod 7879) mod 101 = 2518 mod 101 = 94.  = (x + a)k-1mod q

= (1234 + 75 * 94) 99 mod 101 = 97.

* Chữ ký (94, 97) trên x = 1234 đƣợc xác minh bằng việc tính: -1 = -1 mod q = 97-1 mod 101 = 25.

e1 = 1234*25 mod 101 = 45. e2 = 94*25 mod 101 = 27. Ta có:

(e1.e2 mod p)mod q = (17045 * 457627 mod 7879) mod 101 = 2518 mod 101 = 94 = .

 Chữ ký hợp lệ.

2.3.2. Độ an toàn.

+ Việc giữ bí mật khoá a (dùng để tạo chữ ký) là có ý nghĩa quyết định đối với việc bảo đảm tính an toàn của chữ ký.

+ Nếu không có a, phải tính a thông qua α, β, p công khai bằng cách tính logα β mod p. Đây là bài toán “khó”.

Chuẩn chữ ký số DSS là phiên bản cải tiến của sơ đồ chữ ký Elgamal. Sự khác biệt của DSS với lƣợc đồ Elgamal là:

Tuy nhiên lấy p = 512 thì chữ ký là 1024 bit. Đối với những ứng dụng thẻ thông minh lại cần chữ ký ngắn hơn.

DSS cải tiến sơ đồ Elgamal theo hƣớng sao cho chữ ký có độ dài tổng cộng là 320 bit, nhƣng vẫn dùng p = 512 bit. Khi đó hệ thống làm việc trong nhóm con của Z-

p* có kích thƣớc 2160. Độ an toàn của hệ thống dựa trên độ khó của việc tìm các logarit rời rạc trong nhóm con của Zp*.

Khi DSS ra đời đã có những chỉ trích về mặt kỹ thuật, chủ yếu là về kích thƣớc module p bị cố định là 512 bit. Nhiều ngƣời thích cỡ của p là không cố định.

Đáp ứng cầu này NIST đã chọn tiêu chuẩn cho phép có nhiều cỡ module, nghĩa là cỡ module bất kỳ chia hết cho 64 từ 512  1024 bit.

Một phàn nàn khác về DSS là chữ ký đƣợc tạo ra nhanh hơn việc kiểm thử. Trong khi đó, nếu dùng lƣợc đồ chữ ký RSA với số mũ nhỏ (ví dụ = 3) thì có thể kiểm thử nhanh hơn nhiều so với việc lập chữ ký. Điều này dẫn đến hai vấn đề ứng dụng:

- Thông điệp chỉ đƣợc ký một lần, song lại cần kiểm tra chữ ký nhiều lần. Điều này gợi ý là cần có thuật toán kiểm tra nhanh hơn.

- Kiểu máy tính nào có thể dùng để ký và kiểm tra chữ ký.

Nhiều ứng dụng, chẳng hạn thẻ thông minh có khả năng xử lý hạn chế, lại liên lạc với máy tính mạnh hơn, có những tình huống cần thẻ thông minh tạo chữ ký, trong tình huống khác lại cần thẻ thông minh kiểm tra chữ ký.

Do đó đƣa ra một giải pháp xác định là khó khăn.

Sự đáp ứng của NIST đối với yêu cầu về số lần tạo chữ ký trên số lần kiểm tra chữ ký, thực ra không có vấn đề gì ngoài yêu cầu về tốc độ, miễn là cả hai thực hiện đủ nhanh.

Một phần của tài liệu Nghiên cứu độ an toàn của sơ đồ chữ ký số (Trang 68)

Tải bản đầy đủ (PDF)

(82 trang)