Giải thuật chữ ký số [13] (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, đượ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ư FIPS 186-2.
Giải thuật chữ ký số gồm ba giải thuật chính là :
- Giải thuật tạo khóa bằng việc lựa chọn khóa bí mật gần ngẫu nhiên nhất từ
một tập có thể của các khóa bí mật. Giải thuật cho ra khóa bí mật và khóa công khai tương ứng.
- Giải thuật ký, đưa vào thông báo và khóa bí mật, tạo ra chữ ký.
- Giải thuật xác thực chữ ký: đưa vào thông báo, khóa công khai và chữ ký,
19
Hình 11 Quá trình ký và xác thực chữ ký số
Hai thuật toán đầu là bắt buộc. Đầu tiên, một chữ ký được tạo ra từ một thông báo cố định và khóa riêng cố định nên xác minh tính xác thực của thông báo bằng cách sử dụng khóa công khai tương ứng. Thứ hai, không thể thực hiện việc tính toán để tạo ra một chữ ký hợp lệ cho bên không có khóa riêng.
Trong hệ thống gán nhãn thời gian đơn giản [4], chữ ký số được TSA sử dụng để ký vào chứng nhận mà nó gửi cho người dùng. Nhờ việc sử dụng chữ ký số, người dùng có thể xác định được chứng nhận là do TSA cấp .
Trong thực tế, Electronic Time-Stamping (e-TS) [10] và e-timestamp [11] của Digistamp Inc là sự kết hợp giữa kỹ thuật băm và kiến trúc khóa công khai (Public Key Infastructure – PKI). Như hình dưới, client sử dụng hàm băm SHA-256 để tạo ra dấu văn tay (fingerprint) và gửi nó đến TSA. Digistamp sử dụng chương trình tạo timestamp bảo mật để thêm thời gian và ký vào bản ghi sử dụng khóa bí mật của nó. Đề án này có thể trả lời rõ ràng cho câu hỏi “ai” và “cái gì” của quá trình xác thực nhưng câu trả lời “khi nào” không được chấp nhận vì phụ thuộc vào mức độ bảo mật của khóa.
20
Hình 12 Sử dụng chữ ký số trong hệ thống e-timestamp
Giao thức liên kết có thể giải quyết vấn đề này bằng việc kiểm tra chắc chắn rằng một yêu cầu nhãn thời gian đã được liên kết với các nhãn khác đến trước và sau nó, do đó yêu cầu hay thậm chí là fingerprint gửi đến từ client được nối và được băm với đối tượng bên cạnh nó theo thứ tự mà các yêu cầu đến.