Chuẩn chữ ký điện tử (Digital Signature Standard)

Một phần của tài liệu VN DH hanghai GT an toan bao mat thong tin (Trang 115 - 117)

1. Chƣ̃ ký điện tƣ̉

1.4.Chuẩn chữ ký điện tử (Digital Signature Standard)

1.4.1. Thuật toán chữ ký điện tử (Digital Signature Algorithm)

Tháng 8/1991, NIST đã đƣa ra thuật toán chữ ký điện tử (DSA) là cơ sở cho chuẩn chữ ký điện tử. Đây là một biến thể của thuật toán ElGammal.

1) Chọn một số nguyên tố q với 2159 < q < 2160.

2) Chọn t sao cho 0 ≤ t ≤ 8 và chọn một số nguyên tố p, trong đó 2511+64t < p < 2512+64tvà q phải chia hết (p-1) (hay q là một ước nguyên tố của p-1).

3) Bây giờ, tạo ra một số α duy nhất cho q trong trường Zp*.

- Chọn một giá trị g Zp* và tính α = g(p-1)/q mod p.

- Nếu α = 1 thì quay lại bước trên. (chọn lại giá trị g cho phù hợp) 4) Chọn một số nguyên ngẫu nhiên a để 1 ≤ a ≤ q-1.

5) Tính y = αa mod p.

6) Như vậy , khoá để ký là (p, q, α, y) được công khai và a là khoá bí mật.

1.4.2. Chuẩn chữ ký điện tử

Chuẩn chữ ký điện tử (DSS) đƣợc sửa đổi từ hệ chữ ký ElGammal. Nó đƣợc công bố tại hội nghị Tiêu chuẩn xử lý thông tin Liên Bang (FIPS) vào 19/05/1994 và trở thành chuẩn vào 01/12/1994. DSS sử dụng một khoá công khai để kiểm tra tính toàn vẹn của dữ liệu nhận đƣợc và đồng nhất với dữ liệu của ngƣời gửi. DSS cũng có thể sử dụng bởi ngƣời thứ ba để xác định tính xác thực của chữ ký và dữ liệu trong nó. Đầu tiên chúng ta hãy tìm hiểu động cơ của sự thay đổi này, sau đó sẽ tìm hiểu thuật toán của DSS.

Trong rất nhiều trƣờng hợp, một bức điện có thể đƣợc mã hoá và giải mã một lần, vì vậy nó đáp ứng cho việc sử dụng của bất kỳ hệ thống bảo mật nào đƣợc biết là an toàn lúc bức điện đƣợc mã hoá. Nói cách khác, một bức điện đƣợc ký đảm nhiệm chức năng nhƣ một văn bản hợp pháp, chẳng hạn nhƣ các bản hợp đồng, vì vậy nó cũng giống nhƣ việc cần thiết để xác minh chữ ký sau rất nhiều năm bức điện đƣợc ký. Điều này rất quan trọng cho việc phòng ngừa về độ an toàn của chữ ký đƣợc đƣa ra bởi một hệ thống bảo mật. Vì hệ chữ ký ElGammal không đảm nhận đƣợc điều này, việc thực hiện này cần một giá trị lớn modulo p. Tất nhiên p nên có ít nhất 512-bit, và nhiều ngƣời cho rằng độ dài của p nên là 1024-bit nhằm chống lại việc giả mạo trong tƣơng lai.

Tuy nhiên, ngay cả một thuật toán modulo 512-bit dùng để ký cũng phải thực hiện việc tính toán đến 1024-bit. Cho ứng dụng tiềm năng này, có rất nhiều card thông minh đƣợc đƣa ra, nhằm thực hiện một chữ ký ngắn hơn nhƣ mong muốn. DSS đã sửa đổi hệ chữ ký ElGammal cho phù hợp theo cách này một cách khéo léo, để mỗi 160-bit bức điện đƣợc ký sử dụng một chữ ký 320-bit, nhƣng việc tính toán đƣợc thực hiện với 512-bit modulo p. Cách này đƣợc thực hiện nhờ việc chia nhỏ Zp* thành các trƣờng có kích thƣớc 2160. Việc thay đổi này sẽ làm thay đổi giá trị :

 = (x + α)k-1 mod(p - 1).

Điều này cũng làm cho giá trị kiểm tra cũng thay đổi:

αxβ ≡  (mod p). (1.4.2.1)

Nếu UCLN(x + α, p - 1) = 1 thì sẽ tồn tại -1 mod (p - 1), do đó (6.1) sẽ biến đổi thành: 1 1      x ≡  (mod p). (1.4.2.2)

Đây chính là sự đổi mới của DSS. Chúng ta cho q là một số nguyên tố 160-bit sao cho q | (p-1), và α là một số thứ q của 1 mod p, thì β và  cũng là số thứ q của 1 mod p. Do đó α, β và  có thể đƣợc tối giản trong modulo p mà không ảnh hƣởng gì đến việc xác minh chữ ký. Sơ đồ thuật toán nhƣ sau:

Cho p là một số nguyên tố 512-bit trong trường logarit rời rạc Zp; q là một số nguyên tố 160-bit và q chia hết (p-1). Cho α Zp*; P = Zp*, A = Zq*Zq, và định nghĩa:

K = {(p, q, α, a, β) : β ≡ αa

(mod p)}

trong đó giá trị p, q, α và β là công khai, còn a là bí mật.

Với K = (p, α, a, β) và chọn một số ngẫu nhiên k (1 ≤ k ≤ q-1), định nghĩa: sigK(x, k) = (, )

trong đó: = (αk mod p) mod q = (x + a*)k-1 mod q.

Với x Zp* và ,  Zq, việc xác minh được thực hiên bằng cách tính: e1 = x-1 mod q

e2 = -1 mod q

ver(x, , ) = TRUE (e1e2mod p) mod q = . [5]

Chú ý rằng, với DSS thì  0 (mod q) vì giá trị: -1 mod q cần cho việc xác minh chữ ký (điều này cũng tƣơng tự nhƣ việc yêu cầu UCLN(, p-1) = 1 để (1.4.2.1) → (1.4.2.2)). Khi B tính một giá trị  ≡ 0 (mod q) trong thuật toán ký, anh ta nên bỏ nó đi và chọn một số ngẫu nhiên k mới.

Ví dụ:

Chúng ta chọn q = 101 và p = 78*q + 1 = 7879 và g = 3 là một nguyên tố trong Z7879. Vì vậy , ta có thể tính:

α = 378 mod 7879 = 170. (adsbygoogle = window.adsbygoogle || []).push({});

Chọn a = 75, do đó: β = αa mod 7879 = 4567.

Bây giờ, B muốn ký một bức điện x = 1234, anh ta chọn một số ngẫu nhiên k = 50. Vì vậy :

Tiếp đó:  = (17050 mod 7879) mod 101 = 2518 mod 101 = 94

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

Cặp chữ ký (94, 97) cho bức điện 1234 đƣợc xác thƣc nhƣ sau:

-1 = 97-1 mod 101 = 25 e1 = 1234*25 mod 101 = 45 e2 = 94*25 mod 101 = 27

(17045456727 mod 7879) mod 101 = 2518 mod 101 = 94.

Kể từ khi DSS đƣợc đề xuất vào năm 1991, đã có nhiều phê bình đƣa ra. Chẳng hạn nhƣ kích cỡ của moduloe p bị cố định 512-bit, điều mà nhiều ngƣời không muốn. Vì vậy, NIST đã thay đổi chuẩn này để có thể thay đổi kích thƣớc moduloe (chia bởi 64) thành một dãy từ 512 đến 1024-bit.

Ngoài ra, một sự phê bình khác về DSS là chữ ký đƣợc tạo ra nhanh hơn so với việc xác minh nó. Trái ngƣợc với hệ chữ ký RSA thì việc xác minh công khai là rất nhanh chóng (mà ta biết trong thƣơng mại điện tử việc xác minh là rất quan trọng và đòi hỏi thời gian thực hiện phải nhanh chóng).

Một phần của tài liệu VN DH hanghai GT an toan bao mat thong tin (Trang 115 - 117)