Thuật toán chữ ký số (Nguyễn Hữu Bình)

Một phần của tài liệu bảo mật trong thương mại điện tử (Trang 57)

C =E K1 (D K2 (E K1 (M )))

2.3.2Thuật toán chữ ký số (Nguyễn Hữu Bình)

Tiêu chuẩn mã hóa nâng cao

2.3.2Thuật toán chữ ký số (Nguyễn Hữu Bình)

DSA và RSA là 2 thuật toán tạo ra chữ ký số và tạo được sự tin cậy cho chữ ký số.DSA thuộc về họ những thuật toán chữ ký,cùng với nhóm thuật toán tự nhiên của ElGamal và các thuật toán khác,đó là cơ sở trên discrete logarithm problem:

Tạo khoá

 Chọn số nguyên tố 160 bit q.

 Chọn 1 số nguyên tố L bit p, sao cho p=qz+1 với số nguyên z nào đó, 512 ≤ L

≤ 1024, L chia hết cho 64.

Chú ý: Trong FIPS-186-2, giả sử L luôn bằng 1024.

 Chọn x ngẫu nhiên, thoả mãn 0 < x < q.

 Tính giá trị y = gx mod p. Khóa của người ký gồm có 2 số:

x số nguyên ngẫu nhiên,0< x<q(khóa bí mật);

y=gxmod p(khóa công khai).

 Tạo 1 số ngẫu nhiên với mỗi thông điệp, giá trị k thỏa mãn 0 < k < q

 Tính r = (gk mod p) mod q

 Tính s = (k-1(h(m) + x*r)) mod q, ở đây h(m) là hàm băm áp dụng cho thông điệpm

 Tính toán lại chữ ký trong trường hợp không chắc chắn khi r=0 hoặc s=0

 Chữ ký là (r,s)

Giải thuật Euclid mở rộng có thể được sử dụng để tính toán biểu thức k-1 mod q.

Xác nhận

 Loại bỏ chữ ký nếu hoặc 0< r <q hoặc 0< s <q không thỏa mãn.

 Tính w = (s)-1 mod q

 Tính u1 = (h(m)*w) mod q

 Tính u2 = (r*w) mod q

 Tính v = ((gu1*yu2) mod p) mod q

 Chữ ký là có hiệu lực nếu v = r

Sự đúng đắn của giải thuật

Lược đồ ký số là đúng đắn có ý nghĩa khi người xác nhận luôn chấp nhận các chữ ký thật. Điều này có thể được chỉ ra như sau:

Từ g = hz mod p suy ra gq ≡ hqz ≡ hp-1 ≡ 1 (mod p) bởi định lý Fermat nhỏ. Bởi vì g>1 và q là số nguyên tố suy ra g có bậc q. Người ký tính s=k-1(h(m)+xr)mod q Như vậy k=h(m)s-1+xrs-1 = h(m)w+xrw (mod q) Bởi vì g có bậc q chúng ta có: gk=gh(m)wgxrw = gh(m)wyrw = gu1yu2(modp)

Cuối cùng, tính đúng đắn của DSA suy ra từ:

r= (gk modp)mod q=(gu1yu2mod p)mod q=v

Với số mũ lớn của q,kết quả sẽ tiến gần tới 1.Bởi vậy g được xem như là sinh ra từ q modul p.Bởi vì g được sử dụng để sinh ra 1 trong các khóa bí mật của

DSA,nó cần phải có khả năng tạo ra 1 tập khóa lớn có giá trị;nói cách khác người nào đó có thể đoán trước được khóa bí mật.Do đó ,p phải lớn mới tốt. (adsbygoogle = window.adsbygoogle || []).push({});

Mỗi khi chữ ký được sinh ra,1 thông số k được them vào,0<k<q,là chọn ngẫu nhiên.Nó được giữ bí mật.DSA và các thuật toán chữ ký số tương tự khác sử dụng 1 số ngẫu nhiên cho chữ ký sinh ra có nhiều kẻ chống đối,từ khi họ có thể sử dụng thông tin mã bí mật để chọn thẩm định. Nếu v=r chữ ký chắc chắn.Ta biết điều đó từ việc sinh chữ của ký nó.

Một phần của tài liệu bảo mật trong thương mại điện tử (Trang 57)