Chuẩn chữ ký số

Một phần của tài liệu Nghiên cứu giải pháp xây dựng và phát triển chữ ký số dùng trong các cơ quan tỉnh Thái Nguyên (Trang 32 - 35)

2.3 CHỮ KÝ SỐ DÙNG MẬT MÃ KHĨA CƠNG KHAI

2.3.3Chuẩn chữ ký 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 của Hoa Kỳ. DSS dựa vào sơ đồ chữ ký ElGamal, với một vài sửa đổi. Trƣớc hết ta sẽ nêu ra những thay đổi của nó so với sơ đồ ElGamal và sau đó sẽ mơ tả cách thực hiện nó. Trong nhiều tình huống, thơng điệp có thể mã và giải mã chỉ một lần nên nó phù hợp cho việc dùng với hệ mật bất kỳ (An toàn tại thời điểm đƣợc mã). Song trên thực tế, nhiều khi một bức điện đƣợc dùng làm một tài liệu đối chứng, chẳng hạn nhƣ bản hợp đồng hay một bức thƣ và vì thế cần xác minh chữ ký sau nhiều năm kể từ lúc bức điện đƣợc ký Bởi vậy, điều quan trọng là có phƣơng án dự phịng liên quan đến sự an toàn của sơ đồ ký khi đối mặt với hệ thống mã. Vì sơ đồ ELGamal khơng an tồn hơn bài tốn rời rạc nên cần dùng modulo p lớn. Chắc chắn p cần ít nhất là 512 bít và nhiều ngƣời nhất trí là p nên lấy p=1024 bit để có độ an tồn tốt.

Tuy nhiên, khi chỉ lấy modulo p=512 thì chữ ký sẽ có 1024 bit. Đối với nhiều ứng dụng thẻ thơng minh thì cần lại có chữ ký ngắn hơn. DSS cải tiến sơ đồ ELGamal theo hƣớng sao cho một bức điện 160 bít đƣợc ký bằng chữ ký 302 bit, song p = 512 bit. Khi đó hệ thống làm việc trong nhóm con Zn*.

Sự thay đổi đầu tiên là thay dấu “ -‟‟ bằng dấu “ +‟‟ trong định nghĩa , vì thế:  =( x+ )k-1

mod (p-1) và thay đổi theo điều kiện xác minh nhƣ sau :

x    (mod p)

Nếu UCLN (x + , p -1) = 1 thì -1

mod (p-1) tồn tại và ta có thể thay đổi điều kiện trên nhƣ sau:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Đây là thay đổi chủ yếu trong DSS. Giả sử q là nguyên tố 160 bit sao cho p/(q-1) và  là căn bậc q của một modulo p. Dễ dàng xây dựng một 

nhƣ vậy: cho 0 là phần tử nguyên thủy của Zp và định nghĩa  = 0(p-1)/ q

mod p.

Khi đó  và  cũng sẽ là căn bậc q của 1, vì thế các số mũ bất kỳ của , 

và  có thể rút gọn theo modulo q mà không ảnh hƣởng đến điều kiện xác minh.

Thuật toán chữ ký số DSA

Thuật toán chữ ký số DSA (Digital Signature Algorithm) đƣợc đề nghị bởi NIST vào tháng 8/1991 để sử dụng trong chuẩn chữ ký số DSS (Digital Signature Standard), đƣợc chỉ ra trong FIPS 186, đƣợc chấp nhận năm 1993. Một sửa đổi nhỏ đƣợc đƣa ra năm 1996 trong FIPS 186-1, chuẩn đƣợc mở rộng hơn năm 2000, đƣợc xem nhƣ xem nhƣ FIPS 186-2. Việc tạo khóa gồm hai bƣớc. Bƣớc thứ nhất là lựa chọn các tham số cho thuật toán đƣợc chia sẻ giữa các ngƣời sử dụng khác nhau trong cùng hệ thống:

Chọn một hàm băm mã hóa ℋ. Trong DSS chuẩn ℋ luôn là SHA-1,

nhƣng các hàm băm tốt hơn trong nhóm SHA cũng đang đƣợc sử dụng. Đôi khi đầu ra của một thuật tốn băm mới hơn bị rút ngắn kích thƣớc so với các thuật tốn băm mới cũ để tƣơng tích với cặp khóa hiện có.

Chọn kích thƣớc khóa L. Đây là thƣớc đo chính quyết định sức mạnh mã hóa của khóa. DSS chuẩn ràng buộc L là bội số của 64 và 512≤L≤1024. Sau đó, FIPS 186-2 xác định L luôn là 1024. Không lâu sau, NIST 800-57 đề nghị độ dài khóa là 2048 (hoặc 3072) để thời gian an toàn đến năm 2010 (hoặc 2030), sử dụng tƣơng ứng với các giá trị băm và q dài hơn. Bản thảo FIPS 186-3 cũng tính đến các hàm băm sau này và các khóa dài hơn.

Chọn một số nguyên tố q cùng số bit với đầu ra của ℋ.

Chọn một số nguyên tố p độ dài L bit sao cho p-1 là bội của q. Tức là p=qz-1 với số nguyên z nào đó.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Chọn g = h mod p với h bất kỳ (1< h <p-1), và chọn lại nếu kết quả là 1. Hầu hết cách chọn h đều nhận đƣợc g có thể sử dụng, thơng thƣờng chọn h = 2.

Các tham số thuật tốn (p,q,g) có thể chia sẻ giữa những ngƣời khác nhau trong hệ thống. Bƣớc thứ hai tính các khóa bí mật và khóa cơng khai của từng ngƣời.

Chọn x ngẫu nhiên sao cho 0< x <q. Tính y = gx mod p.

Khóa cơng khai là (p,q,g,y), khóa bí mật là x.

Phiên bản FIPS 186-3 sắp tới sử dụng SHA-224/256/384/512 là các hàm băm, kích thƣớc của q là 224 (hoặc 256 bit), và L bằng 2048 (hoặc 3072).

* Để ký một thông điệp m, người ký thực hiện các bước sau:

Phát sinh một số ngẫu nhiêu k (0 < k <q) cho mỗi thông điệp. - Tính r = (gk mod p) mod q.

- Tính s = k1(ℋ(m) + xr)) mod q.

Tính tốn lại chữ ký trong trƣờng hợp khơng chắc chắn r =0 hoặc s =0. Chữ ký là (r,s).

* Để xác nhận chữ ký, người nhận thực hiện các bước sau: (adsbygoogle = window.adsbygoogle || []).push({});

Loại bỏ chữ ký nếu 0< r <q hoặc 0 < s <q khơng thỏa mãn. - Tính w= s1 mod q.

- Tính u1= (ℋ(m)×w) mod q. - Tính u2= (r×w) mod q. - Tính v= ( (gu1

×yu2 )mod p) mod q Chữ ký có hiệu lực nếu v= r.

* Tính đúng đắn của giải thuật được chứng minh như sau:

Đầu tiên, nếu g = h(p1)/q

mod p suy ra gp=hp1−1=1 (mod p) theo định lý Fermat nhỏ. Bởi vì g>1 và q là số nguyên tố nên g có bậc q.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Ngƣời ký tính s = k1(ℋ(m) + xr)) mod q. Nhƣ vậy k=ℋ(m)s1 +xrs1=ℋ(m)w+xrw (mod q). Bởi vì g có bậc q nên ta có: gk=gH(m)w.gxrw=gH(m)wyrw=gu1yu2 (mod p). Cuối cùng, tính đúng đắn của DSA suy ra từ: r= (gk mod p) mod q= (gu1

yu2 mod p) mod q=v.

Phƣơng pháp DSA đã giải quyết vấn đề này bằng cách sử dụng chữ ký 320 bit cho văn bản 160 bit với các phép tính đƣợc thực hiện trên tập con có 2160 phần tử với p là số nguyên tố 512 bit [9][10].

Một phần của tài liệu Nghiên cứu giải pháp xây dựng và phát triển chữ ký số dùng trong các cơ quan tỉnh Thái Nguyên (Trang 32 - 35)