Khác biệt giữa bản sửa đổi của “Giải thuật ký số”

Bách khoa toàn thư mở Wikipedia
Nội dung được xóa Nội dung được thêm vào
Dòng 21: Dòng 21:
* 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ạ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'' = (''g''<sup>''k''</sup> mod ''p'') mod ''q''
* Tính ''r'' = (''g''<sup>''k''</sup> mod ''p'') mod ''q''
* Tính ''s'' = (''k''<sup>-1</sup>(SHA-1(''m'') + ''x''*''r'')) mod ''q'', ở đây SHA-1(''m'') là [[SHA-1]] [[cryptographic hash function|hash function]] áp dụng cho thông điệp ''m''
* Tính ''s'' = (''k''<sup>-1</sup>(SHA-1(''m'') + ''x''*''r'')) mod ''q'', ở đây SHA-1(''m'') là [[SHA-1]] [[cryptographic hash function|Hàm băm]] áp dụng cho thông điệp ''m''
* 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
* 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'')
* Chữ ký là (''r'',''s'')

Phiên bản lúc 07:17, ngày 20 tháng 3 năm 2007

Giải thuật ký số (Digital Signature Algorithm, viết tắt DSA) là chuẩn của chính phủ Mỹ hoặc FIPS cho các chữ ký số. Giải thuật này được đề nghị bởi Viện các tiêu chuẩn và công nghệ quốc gia (NIST) vào tháng 8/1991 để sử dụng trong chuẩn chữ ký số (DSS), được chỉ ra trong FIPS 186 [1], được chấp nhận năm 1993. Một sửa đổi nhỏ được đưa ra năm 1996 trong FIPS 186-1 [2], chuẩn được mở rộng hơn năm 2000, được xem như FIPS 186-2 [3]

Tạo khoá

  • Chọn số nguyên tố 160 bit q.
  • Chọn 1 số nguyên tố L bit, 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 h, với 1 < h < p - 1 sao cho g = hz mod p > 1. (z = (p-1) / q.)
  • Chọn x ngẫu nhiên, thoả mãn 0 < x < q.
  • Tính giá trị y = gx mod p.
  • Khoá chính là (p, q, g, y). Khoá riêng là x.

Chú ý (p, q, g) có thể dùng chung bởi nhiều người dùng trong hệ thống, nếu muốn. FIPS 186-3 sử dụng [SHA]-224/256/384/512 như hàm băm, q với kích thước 224, 256, 384, và 512 bit, L nhận giá trị 2048, 3072, 7680, và 15360 tương ứng. Có các giải thuật hiệu quả để tính toán các biểu thức mũ và lấy phần dư khi chia cho số nguyên tố lớn hz mod p và gx mod p.

Hầu hết các số h đều thoả mãn yêu cầu, vì vậy giá trị 2 thông thường được sử dụng.

  • 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(SHA-1(m) + x*r)) mod q, ở đây SHA-1(m) là SHA-1 Hàm băm áp dụng cho thông điệp m
  • 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 extended Euclidean algorithm có thể được sử dụng để tính toán biểu thức k-1 mod q.

Xác nhận

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

Xem thêm

Liên kết ngoài