ANSÂ X9.31:1988 Chữ ký số sử dụng khóa công khai có thể đảo ngược
Mật mã cho ngành dịch vụ tài chính (rDSA) (theo tên trên bản sao của tôi đã mua vào thế kỷ trước) bắt đầu từ
Tiêu chuẩn này, được điều chỉnh từ ISO/IEC 9796-2 và ISO/IEC 14888-3, xác định phương pháp tạo và xác minh chữ ký số (chữ ký) để bảo vệ thông điệp và dữ liệu tài chính bằng hệ thống mã hóa khóa công khai có thể đảo ngược mà không cần khôi phục thông báo. Ngoài ra, Tiêu chuẩn rDSA này cung cấp các tiêu chí để tạo khóa công khai và khóa riêng theo yêu cầu của thuật toán và các biện pháp kiểm soát thủ tục cần thiết để sử dụng thuật toán một cách an toàn.
Sơ đồ chữ ký vẫn được tham chiếu (không được mô tả) trong FIPS 186-4. Khi được khởi tạo bằng SHA-1, RSA và $n$ của $8k$-bit, một tin nhắn $m$ được đệm như $8k-1$-chút
$$R\gets\mathtt{6B}\,\mathtt{BB}\,\mathtt{BB}\ldots\mathtt{BB}\,\mathtt{BA}\mathbin\|\operatorname{SHA-1}( m)\|\mathtt{33}\,\mathtt{CC}$$
sau đó chữ ký là $k$-byte biểu diễn big-endian của$$\Sigma\gets\min((R^d\bmod n),n-(R^d\bmod n))$$
Xác minh tương đương với việc kiểm tra chữ ký là $k$-byte và mã hóa trong biểu diễn big-endian một số nguyên $\Sigma'$ với $0\le\Sigma'<n/2$, tin học $R'\gets{\Sigma'}^e\bmod n$, tin học $R$ từ $m$ như trên, sau đó kiểm tra $R'$ là một trong những $R$ hoặc $n-R$ (nghĩ rằng đó không hoàn toàn là cách tiêu chuẩn đưa ra).
Tiêu chuẩn đó không bắt được nhiều như RSASSA-PKCS1-v1_5, sử dụng phần đệm hơi khác, không sử dụng $\min$ lừa, và loại bỏ các điều khoản cho thậm chí $e$ (không được mô tả ở trên để đơn giản hóa).
Sơ đồ tạo khóa bây giờ về cơ bản được thay thế bằng FIPSÂ 186-4 phụ lục B3.
Ngoài ra còn có "Phụ lục A: Tạo số ngẫu nhiên" thường được tham khảo. Nó chính thức bị chôn vùi bởi FIPSÂ 186-4:
ANS X9.31 chứa một phụ lục về tạo số ngẫu nhiên. Tuy nhiên, việc triển khai ANS X9.31 sẽ sử dụng các phương pháp tạo số ngẫu nhiên đã được phê duyệt.
Không rõ ràng từ phần nội dung của câu hỏi rằng nó có liên quan đến những gì được hỏi. Nếu có, xin vui lòng cho biết phần phụ nào trong bình luận. Nếu điều đó không được biết, hãy quên nó đi và sử dụng/dev/urandom hoặc tương đương cục bộ.