Ý tưởng sử dụng các cặp khóa tĩnh thực sự là dữ liệu trong quá trình trao đổi khóa được ký. Cái gì được ký không quan trọng lắm, miễn là đối thủ không thể thực hiện việc trao đổi khóa.
Để xác minh chữ ký, khóa công khai của người ký phải được đáng tin cậy. Đây là những gì bạn đang thiếu trong mô tả. Nếu người xác minh chỉ chấp nhận một khóa hoặc một bộ khóa đó thì chữ ký của đối thủ sẽ bị từ chối, xác minh chữ ký không thành công và các khóa không được thiết lập hoặc sử dụng.
Làm thế nào để đặt niềm tin vào khóa công khai sau đó trở thành vấn đề tiếp theo. Đây không phải là một phần của giao thức thỏa thuận chính. Một cách là tin tưởng một cách rõ ràng vào một khóa chung, chẳng hạn bằng cách xác minh dấu vân tay của khóa chung qua điện thoại. Cũng có thể khóa được tải lên qua một kênh đáng tin cậy; chẳng hạn, đây là thứ thường được thực hiện với các khóa công khai SSH.
Đối với TLS, niềm tin được thiết lập bằng cách tin tưởng (gốc) chứng chỉ của cơ quan cấp chứng chỉ. Sau đó, chúng chịu trách nhiệm chỉ tạo chứng chỉ cho các thực thể có thể cho thấy rằng chúng kiểm soát một miền nhất định. Cả hai chứng chỉ này đều chứa miền đó cũng như khóa chung được sử dụng để xác minh. Cấu trúc này được gọi là PKIX: Cơ sở hạ tầng khóa công khai sử dụng chứng chỉ X.509 và Danh sách thu hồi chứng chỉ.
Một số lưu ý:
- Tôi đã xóa bất kỳ đề cập nào về thỏa thuận chính hoặc thuật toán xác minh/tạo chữ ký - các thuật toán được sử dụng không quan trọng đối với câu hỏi này.
- Cũng có thể tin tưởng vào khóa công khai Diffie-Hellman (tĩnh), nhưng bạn sẽ mất chuyển tiếp bí mật - nếu khóa riêng dài hạn của cặp khóa đó bị rò rỉ thì kẻ thù có thể phát lại thỏa thuận khóa và giải mã tất cả các thông báo (và điều này cũng làm phức tạp PKI).
- Tạo chữ ký không giống như ký một tin nhắn hoặc mã băm tin nhắn và xác minh không giống như "giải mã bằng khóa chung" - khóa chung Diffie-Hellman sẽ chỉ là gửi rõ ràng cùng với chữ ký trên đó.
- Có thể có yêu cầu kiểm soát truy cập bổ sung sau khi phiên được thiết lập - đó là lý do tại sao chứng chỉ được sử dụng để tạo kết nối thường được chuyển đến back-end và được sử dụng trong một số loại hệ thống kiểm soát truy cập.