ตามที่ระบุไว้ในความคิดเห็นด้านล่างคำถาม โดยทั่วไปแล้ว RSA จะไม่ถูกใช้เป็นการยกกำลังแบบโมดูลาร์ของคีย์สมมาตร แทน คีย์ถูกเข้ารหัสโดยใช้การเติม PKCS#1 v1.5 หรือ - โดยเฉพาะอย่างยิ่ง - OAEP หรือความลับที่ใช้ร่วมกันที่มีค่าสุ่มในช่วง $\big[0, N\big)$ ใช้สำหรับการยกกำลังแบบโมดูลาร์ ในกรณีหลัง คีย์จริงจะได้รับมาโดยใช้ KDF (ฟังก์ชันการสืบทอดคีย์) บางครั้งเรียกง่ายๆ ว่า "PRF" (ดูเช่น TLS 1.2) สิ่งนี้เรียกว่า RSA-KEM
โดยพื้นฐานแล้วมีสองวิธีที่สามารถหลีกเลี่ยงการโจมตีคีย์ผ่านการโจมตีแบบแทรกคนกลาง (MitM) ได้:
- สร้างความเชื่อถือในคีย์สาธารณะ RSA;
- การตรวจสอบความลับที่ใช้ร่วมกันและ/หรือคีย์ที่ได้รับ
หากคุณแชร์ล่วงหน้าและเชื่อถือคีย์สาธารณะของคู่คีย์แบบคงที่ คุณจะต้องมีการแลกเปลี่ยนคีย์แบบคงที่ นั่นคือคีย์สาธารณะนั้นเชื่อถือได้ แต่คุณจะไม่ให้การรักษาความปลอดภัยแบบส่งต่อ นั่นหมายความว่าสามารถคำนวณคีย์สมมาตรทุกคีย์ที่ตามมาได้หากฝ่ายตรงข้ามรู้จักคีย์ส่วนตัว
ความน่าเชื่อถือของรหัสสาธารณะสามารถสร้างขึ้นได้หลายวิธี สำหรับคู่คีย์คงที่ คีย์สาธารณะสามารถเชื่อถือได้โดยใช้ PKI หากคุณต้องการเชื่อถือคีย์สาธารณะชั่วคราว ผู้รับสามารถลงนามด้วยคีย์ส่วนตัวซึ่งเป็นส่วนหนึ่งของคู่คีย์ที่ เป็น ที่เชื่อถือ.
อีกวิธีหนึ่งคือการตรวจสอบคีย์เซสชันที่สร้างขึ้นในภายหลัง ซึ่งสามารถทำได้ทั้งโดยชัดแจ้งหรือโดยปริยาย
ในการตรวจสอบความลับที่ใช้ร่วมกันอย่างชัดแจ้ง ฝ่ายที่ถอดรหัสคีย์จะใช้รหัสนั้นเพื่อสร้าง MAC บนข้อมูลคงที่ที่ทั้งสองฝ่ายรู้จักและส่ง MAC ขณะนี้ฝ่ายนั้นสามารถมั่นใจได้ว่ามีการสร้างคีย์สมมาตรที่ถูกต้องแล้ว
ในการยืนยันโดยปริยาย คีย์จะใช้เพื่อส่งข้อความที่ผ่านการรับรองความถูกต้องกลับไปกลับมา การตรวจสอบความถูกต้องของแพ็คเกจเหล่านี้ระบุว่ามีการสร้างรหัสที่ถูกต้องแล้ว
แน่นอน เฉพาะฝ่ายที่คีย์สาธารณะเชื่อถือได้เท่านั้นที่ได้รับการรับรองความถูกต้อง ในทำนองเดียวกัน หาก MAC ใด ๆ ได้รับการตรวจสอบ แสดงว่าฝ่ายที่ถือคีย์ส่วนตัวสามารถถอดรหัสได้เท่านั้น ดังนั้นหากคุณต้องการการรับรองความถูกต้องของฝ่ายที่เหลือ คุณต้องจัดการแยกต่างหาก
ใน TLS ทำได้โดยการให้อีกฝ่ายสร้างลายเซ็นที่สามารถตรวจสอบได้ นอกจากนี้ยังกำหนดให้คีย์สาธารณะของคู่คีย์นั้นเชื่อถือได้ล่วงหน้า ในท้ายที่สุด คุณจำเป็นต้องสร้างความเชื่อถือในบางสิ่งเสมอก่อนที่คุณจะสามารถรับรองความถูกต้องของปาร์ตี้ได้
การรับรองความถูกต้องของไคลเอ็นต์ TLS แทบจะไม่เคยใช้เลย แต่จะถูกแทนที่ด้วยกรอบการรับรองความถูกต้องหรือการพิสูจน์ตัวตนด้วยรหัสผ่าน หรือไม่ระบุตัวตนของลูกค้าเลย - จนกว่าจะทำการซื้อ
โปรดทราบว่าการรับรองความถูกต้องของคีย์ที่สร้างโดยใช้การสร้างคีย์ RSA นั้นไม่แตกต่างจากการสร้างคีย์ด้วย ตัวอย่างเช่น Diffie-Hellman แม้ว่าจะมีคู่คีย์สองคู่ที่ต้องพิจารณาสำหรับคีย์หลัง ในที่สุดก็สามารถใช้เทคนิคแบบเดียวกันได้