Một số lược đồ chữ ký khác (DSA, EL Gamal)

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (Trang 54 - 59)

4. Nội dung luận văn

2.3.4. Một số lược đồ chữ ký khác (DSA, EL Gamal)

2.3.4.1 Lược đồ chữ ký ELGamal

Phương pháp chữ ký điện tử ElGamal được giới thiệu vào năm 1985[5][9]. Sau đó, Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST) đã sửa đổi bổ sung phương pháp này thành chuẩn chữ ký điện tử (Digital Signature Standard –

DSS). Khác với phương pháp RSA có thể áp dụng trong mã hóa khóa công cộng và chữ ký điện tử, phương pháp ElGamal được xây dựng chỉ nhằm giải quyết bài toán chữ ký điện tử.

Thuật toán sinh khóa cho lƣợc đồ chữ ký ELGamal

Mỗi cá thể trong hệ thống tạo một khóa công khai và một khóa riêng tương ứng. Mỗi cá thể A thực hiện các bước sau:

(a) Tạo số nguyên tố lớn p và chọn αZp.

(b) Chọn số nguyên a, 1≤ a p – 2. (c) Tính y = αa

mod p. Khóa công khai (p, α, y). Khóa bí mật là a.

Thuật toán sinh chữ ký

Cá thể A ký lên thông điệp m, A thực hiện:

(a) Chọn số nguyên k, 1≤ k p – 2, với gcd (k, p-1) = 1. (b) Tính r = αk mod p.

(c) Tính k-1 mod (p - 1).

(d) Tính s = k-1{h(m) – a*r} mod (p - 1). (e) Chữ ký của A lên thông điệp m là (r, s).

Thuật toán chứng thực chữ ký

Cá thể B thực hiện các bước sau để chứng thực chữ ký (r, s) lên m có phải là của A không.

(a) Xác nhận khóa công khai của A là (p, α, β).

(b) Kiểm tra r, 1≤ rp – 1, nếu không đúng thì từ chối chữ ký của A. (c) Tính v1 = yr.rs mod p.

(d) Tính h(m) và v2 = αh(m)

mod p.

(e) Nếu v1 = v2 thì chấp nhận chữ ký là của A.

Ví dụ:

Giả sử A cần ký lên thông điệp m có giá trị băm h(m) = 1463 để gửi cho B, sau đó B chứng thực xem chữ ký đó có phải là của A không.

Tạo khóa

1. Chọn số nguyên tố p = 2357 và α = 2 Z2357. 2. Chọn a = 1751, 1≤ a p – 2.

3. Tính y = αa mod p = 21751 mod 2357 = 1185. Khóa công khai của A là (p, α, y) = (2357, 2, 1185). Khóa bí mật của A là a = 1751.

Tạo chữ ký

Giả sử thông điệp m sau khi dùng một thuật toán băm (MD5, SHA-1,…) được giá trị băm là h(m) = 1463 sau đó:

1. Chọn k = 1529, 1≤ k p – 2. 2. Tính r = αk mod p = 21529 mod 2357 = 1490. 3. Tính k-1 mod (p - 1) = 245. 4. Tính s = k-1{h(m) – a*r} mod (p - 1) = 245{1463 - 1751*1490} mod 2356 = 1777.

Vậy chữ ký s của A lên thông điệp m là (1490, 1777) và gửi đến B.

Chứng thực chữ ký

Để chứng thực chữ ký (1490, 1777) đúng là của A không thì B thực hiện: 1. Tính v1 = yr. rs mod p

= 11851490 . 14901777 mod 2357 = 1072. 2. Tính v2 = 21463 mod 2357 = 1072.

Kết luận chữ ký (1490, 1777) đúng là của A. 2.3.4.2. Lược đồ chữ ký DSA

Tháng 8 năm 1991, Viện tiêu chuẩn và công nghệ quốc gia Mỹ (NIST) đã đề xuất giải thuật chữ ký điện tử DSA (Digital Signature Algorithm) [9][10]. DSA trở thành tiêu chuẩn xử lý thông tin liên ban (FIPS) và được gọi là “chuẩn chữ ký điện tử” (DSS) [16], và DSS nhanh chóng trở thành tiêu chuẩn chữ ký đầu tiên của một số quốc gia. Lược đồ chữ ký DSA thuộc loại lược đồ chữ ký kèm theo bản rõ.

Thuật toán sinh khóa cho lƣợc đồ chữ ký DSA

Mỗi cá thể trong hệ thống tạo một khóa công khai và một khóa riêng tương ứng. Mỗi cá thể A thực hiện các bước sau:

(1) Chọn số nguyên tố p, 2L – 1< p < 2L với 512 < L < 1024.

(2) Chọn số nguyên tố q, 2159 ≤ q ≤ 2160 sao cho q là ước nguyên tố của (p - 1), nghĩa là q có độ dài 160 bit.

(3) Chọn phần tử g với gZp, tính α = g(p – 1)/q mod p. (4) Chọn ngẫu nhiên số nguyên a sao cho 1 ≤ aq – 1. (5) Tính y = αa

mod p.

Khóa công khoá của A là (p, q, a, y), khóa riêng là a.  Thuật toán sinh chữ ký DSA

Cá thể A ký lên thông điệp m. Bất kỳ cá thể B nào cũng có thể kiểm tra chữ ký này bằng khóa công khai của A. A thực hiện các bước sau:

(1) Chọn số nguyên k, 0 < k <q.

(2) Tính r = (αk mod p) mod q.

(3) Tính k-1 mod q.

(4) Tính s = k-1{h(m) – a*r} mod q.

(5) Chữ ký của A lên thông điệp m là (r, s).  Thuật toán chứng thực chữ ký DSA

B thực hiện các bước sau:

(1) Xác nhận khóa công khai của A là (p, q, α, y).

(2) Nếu 0 < r < q và 0 < s < q; không đúng thì chối bỏ chữ ký A. (3) Tính w = s-1 mod qh(m). (4) Tính u1 = w.h(m) mod qu2 = r.w mod q. (5) Tính v = (u1. u2 y mod p) mod q. Chấp nhận chữ ký nếu v = r.

Ví dụ:

Giả sử A ký lên thông điệp m có giá trị băm là h(m) = 6 sau đó gửi đến B và B chứng thực xem chữ ký đó có phải của A không. Các quá trình thực hiện như sau:

Quá trình tạo khóa

A tạo ra cặp khóa: khóa công khai dùng để chứng thực, khóa bí mật dùng để . (1) Giả sử chọn số nguyên tố p = 23.

(2) Chọn q = 11, sao cho q là ước nguyên (p - 1). Trong trường hợp này (p - 1)/q = 2.

(3) Chọn g = 5 Zp, tính α = g2 mod p = 2. (4) Chọn số nguyên a = 3, 1 ≤ a ≤ 10. (5) Tính y = αa

mod p = 23 mod 23 = 8.

Khóa công khai (23, 11, 2, 8), khóa bí mật là a = 3.

Ký lên thông điệp m

A dùng khóa bí mật của mình ký lên thông điệp m, A thực hiện: (1) Chọn số nguyên k = 7.

(2) Tính r = (27 mod 23) mod 11 = 2. (3) Tính k-1 mod q = 7-1 mod 11 = 8. (4) Tính s = 8(6 +3*2) mod 11 = 8.

(5) Chữ ký của A lên thông điệp m là (2, 8).

Chứng thực chữ ký

Một cá thể B bất kỳ có thể kiểm tra chữ ký (2, 8) có phải là của A không, khi đó B thực hiện:

(1) Xác nhận khóa công khai của A là (23, 11, 2, 8). (2) Kiểm tra r = 2, 0 < r < 11và s = 8, 0 < s < 11. (3) Tính w = s-1 mod q = 8-1 mod 11 = 7.

(4) Tính u1 = 7*6 mod 11 = 9 và u2 = 2*7 mod 11 = 3. (5) Tính v = (29*83 mod 23) mod 11 = 2

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (Trang 54 - 59)

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

(76 trang)