Có hai biến thể của ECDSA: ngẫu nhiên hoặc xác định. Việc tính toán một chữ ký liên quan đến một số $k$ điều này không bao giờ được lặp lại đối với các thông báo riêng biệt có cùng khóa. Có hai cách để thực hiện điều đó: tạo $k$ ngẫu nhiên, hoặc tạo ra $k$ một cách xác định từ khóa và thông điệp. (Tôi đang bỏ qua chi tiết ở đây, chỉ tập trung vào những gì liên quan đến câu hỏi này.) Hai biến thể tạo ra các chữ ký tương thích: không thể biết biến thể nào được sử dụng để tạo ra một chữ ký nhất định. (Tất nhiên bạn có thể biết bằng cách yêu cầu một người triển khai ký hai lần vào cùng một thông điệp và so sánh các kết quả đầu ra.)
Định nghĩa ban đầu của ECDSA chỉ xem xét biến thể ngẫu nhiên và đây là biến thể duy nhất mà NIST cho phép, kể từ FIPS 186-4 (xem §6.3 và §6.4). RFC 6979 là một đặc điểm kỹ thuật cho biến thể xác định.
Các vectơ kiểm tra NIST đã được tạo bằng ECDSA ngẫu nhiên. Hệ quả của việc sử dụng thuật toán ngẫu nhiên là bạn không thể có các bài kiểm tra đã biết trước câu trả lời cho nó. Mỗi khi bạn chạy phép tính chữ ký, bạn sẽ nhận được một kết quả khác. Tất cả những gì bạn có thể làm để kiểm tra là kiểm tra xem đầu ra của phép tính chữ ký có phải là một chữ ký hợp lệ hay không, chứ không phải đó là một chuỗi byte cụ thể.
mbedtls_ecdsa_sign_det_ext
thực hiện ECDSA xác định. Bạn có thể sử dụng các bài kiểm tra câu trả lời đã biết cho ECDSA xác định. Nhưng NIST không cung cấp các vectơ thử nghiệm cho nó vì NIST không chuẩn hóa ECDSA xác định.
Nếu bạn kéo dài điều này ra một chút, bạn có thể nói rằng có thể có các bài kiểm tra câu trả lời đã biết nếu bạn chỉ định đầy đủ cách thuật toán sử dụng đầu ra của trình tạo ngẫu nhiên. Nhưng sau đó, về mặt lý thuyết, bạn hiện đang thử nghiệm một thuật toán xác định đang sử dụng một số đầu vào mà trong thế giới thực được cho là đến từ một trình tạo ngẫu nhiên. Và như một vấn đề thực tế, trong quá trình triển khai thực tế, không phải lúc nào cũng có thể hoán đổi trình tạo ngẫu nhiên để thử nghiệm. Và trong bất kỳ trường hợp nào, FIPS 184-4 cho phép một số thay đổi trong cách tiêu thụ đầu ra của trình tạo ngẫu nhiên khi tạo $k$ cho một chữ ký ECDSA.