Chuẩn chữ ký số (Digital Signature Standard-DSS) đƣợc đề xuất năm 1991 và đƣợc chấp nhận vào năm 1994 để sử dụng trong một số lĩnh vực giao dịch ở Mỹ [3]. DSS dựa vào lƣợc đồ chữ ký ElGamal với một vài sửa đổi.
Để bảo đảm an toàn, số nguyờn tố p cần phải đủ lớn, tối thiểu từ 512 bit trở lờn. Tuy nhiờn, chữ ký theo lƣợc đồ ElGamal cú độ dài gấp đụi p tớnh theo số bit,
mà trong một số ứng dụng cú dựng cỏc thẻ thụng minh (smart card) lại mong muốn cú chữ ký ngắn nờn giải phỏp sửa đổi là: lấy độ dài p là một bội số của 64 bit (từ
512 đến 1024 bit), trong chữ ký (, ), cỏc số , cú độ dài biểu diến ngắn, chẳng hạn là 160 bit, khi đú độ dài của chữ ký là 320 bit. Điều này đƣợc thực hiện bằng cỏch dựng một nhúm con cyclic Zq
* của Zp
* thay cho chớnh bản thõn Zp
* , do đú mọi tớnh toỏn vẫn đƣợc thực hiện trong Zp* nhƣng cỏc dữ liệu và thành phần dữ liệu lại thuộc Zq*
.
Sơ đồ DSS đƣợc mụ tả nhƣ sau:
Giả sử p là số nguyờn tố 512 bit sao cho bài toỏn logarit rời rạc trong Zp là khú, q là một ƣớc nguyờn tố của p-1, q cú độ dài 160 bit. Giả sử Zp*
là một căn bậc q của 1 mod p. Đặt P = Zq*, A = Zq* Zq* và định nghĩa:
K = {(p, q, , a, ) : a Zq
*
, a
mod p}
Với K = (p, q, , a, ), khúa bớ mật là K' =a, khúa cụng khai là K''= (p, q, ,
). Cho x Zp* , ta chọn một số ngẫu nhiờn bớ mật k, 0 ≤ k ≤q-1, ta định nghĩa chữ
ký số sigK'(x, k) = (,) , trong đú = (k
mod p) mod q, = (x + a) k-1 mod q. Kiểm thử lại chữ ký số verK''(x, , ) là đỳng khi và chỉ khi: (e1e2 mod p)
mod q = , trong đú e1 = x-1
mod q, e2 = -1
mod q. Chỳ ý rằng phải cú 0 mod q để cú đƣợc -1
mod q trong kiểm thử.