DSA là thành phần trọng tâm của chữ ký số DSS, có chức năng tạo ra chữ ký từ các thông tin như mã băm của thông tin gốc, khoá riêng của người ký, khoá công khai của nhóm và một số ngẫu nhiên k. DSA được xây dựng dựa trên phép toán logarit rời rạc, được tóm tắt như sau:
- Tạo các thành phần khoá công khai (public key components):
- p: một số nguyên tố thoả 2L-1 < p < 2L với 512 < L < 1024 và L là bội số của 64.
- q: một số nguyên tố chia hết (p – 1) thỏa điều kiện 2159 < q < 2160 (q dài 160 bit)
g: một số nguyên có giá trị = (h(p -1)/q
mod p), trong đó h là một số nguyên thoả điều kiện 1 < h < p – 1 và (h(p-1)/q
mod p) > 1 - Tạo khoá riêng của người dùng:
x: một số nguyên ngẫu nhiên lớn hơn 0 và nhỏ hơn q - Tạo khoá công khai của người dùng:
y: là một số nguyên có giá trị = (gx
mod p) - Tạo số bí mật cho từng bản tin:
k: một số nguyên được chọn ngẫu nhiên lớn với 0 < k < q - Tạo chữ ký: r = (gk mod p) mod q s = [k-1 (H(M) + xr)] mod q -Kiểm chứng chữ ký: w = (s’)-1 mod q u1 = [H(M')w] mod q u2 = (r')w mod q v = [(gu1 yu2) mod p] mod q
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
Với độ phức tạp của phép tóan logarit rời rạc, rất khó có thể xác định được k khi biết r hoặc xác định được x khi biết s.