Như đã chỉ ra trong các nhận xét bên dưới câu hỏi, RSA thường không được sử dụng làm phép lũy thừa mô-đun của khóa đối xứng. Thay vào đó, khóa được mã hóa bằng phần đệm PKCS#1 v1.5 hoặc - tốt nhất là - OAEP hoặc bí mật được chia sẻ với giá trị ngẫu nhiên trong phạm vi $\big[0, N\big)$ được sử dụng cho lũy thừa mô-đun. Trong trường hợp sau, một khóa thực tế được lấy bằng KDF (hàm dẫn xuất khóa), đôi khi còn được gọi đơn giản là "PRF" (xem ví dụ: TLS 1.2). Điều này được gọi là RSA-KEM.
Về cơ bản, có hai cách để tránh giả mạo khóa thông qua cuộc tấn công trung gian (MitM):
- thiết lập niềm tin vào khóa công khai RSA;
- xác minh bí mật được chia sẻ và/hoặc khóa dẫn xuất.
Nếu bạn chia sẻ trước và tin cậy khóa công khai của cặp khóa tĩnh thì bạn sẽ có một trao đổi khóa tĩnh, tức là khóa chung được tin cậy, nhưng bạn sẽ không cung cấp bảo mật chuyển tiếp. Điều đó có nghĩa là mọi khóa đối xứng tiếp theo đều có thể được tính toán nếu kẻ thù biết được khóa riêng.
Độ tin cậy của khóa công khai có thể được thiết lập theo nhiều cách khác nhau. Đối với cặp khóa tĩnh, khóa chung có thể được tin cậy bằng PKI. Nếu bạn cần tin tưởng một khóa công khai tạm thời, người nhận có thể ký nó bằng một khóa riêng là một phần của cặp khóa Là đáng tin cậy.
Một cách khác là xác minh khóa phiên đã thiết lập sau đó. Điều đó có thể được thực hiện một cách rõ ràng hoặc ngầm.
Khi xác minh rõ ràng bí mật được chia sẻ, bên giải mã khóa sẽ sử dụng nó để tạo MAC trên dữ liệu tĩnh được cả hai bên biết và gửi MAC. Bên đó bây giờ có thể chắc chắn rằng khóa đối xứng phù hợp đã được thiết lập.
Trong xác minh ẩn, khóa được sử dụng đơn giản để gửi đi gửi lại các tin nhắn đã được xác thực. Việc xác minh xác thực của các gói này chỉ ra rằng khóa phù hợp đã được thiết lập.
Tất nhiên, chỉ bên có khóa công khai được tin cậy mới được xác thực. Tương tự, nếu bất kỳ MAC nào được xác minh, thì điều đó chỉ cho thấy rằng bên giữ khóa riêng đã có thể giải mã. Vì vậy, nếu bạn cần xác thực của bên còn lại thì điều đó cần được xử lý riêng.
Trong TLS, điều này được thực hiện bằng cách yêu cầu bên kia tạo một chữ ký có thể được xác minh. Điều này cũng yêu cầu khóa công khai của cặp khóa đó phải được tin cậy trước; cuối cùng, bạn cần luôn thiết lập niềm tin vào một thứ gì đó trước khi có thể xác thực bên đó.
Xác thực ứng dụng khách TLS hầu như không được sử dụng. Thay vào đó, nó được thay thế bằng các khung xác thực hoặc xác thực dựa trên mật khẩu. Hoặc danh tính của khách hàng hoàn toàn không được thiết lập - cho đến khi việc mua hàng được thực hiện.
Lưu ý rằng việc xác thực các khóa được thiết lập bằng cách sử dụng thiết lập khóa RSA không khác với xác thực các khóa bằng Diffie-Hellman chẳng hạn - mặc dù với cái sau có hai cặp khóa cần xem xét. Cuối cùng, các loại kỹ thuật tương tự có thể được sử dụng.