อัลกอริทึมเข้ารหัส Rivest-Shamir-Adleman (RSA) เป็นอัลกอริทึมเข้ารหัสแบบอสมิตร (Asymmetric Encryption) ที่ใช้กันอย่างแพร่หลายในผลิตภัณฑ์และบริการต่างๆ การเข้ารหัสแบบอสมิตรต้องการคู่คีย์ที่เชื่อมโยงกันทางคณิตศาสตร์ เพื่อเข้ารหัสและถอดรหัสข้อมูล
สร้างคีย์ส่วนตัวและคีย์สาธารณะ คีย์สาธารณะให้เข้าถึงได้ทุกคน ส่วนคีย์ส่วนตัวเป็นความลับที่รู้จักเฉพาะผู้สร้างคู่คีย์ ด้วย RSA คีย์ส่วนตัวหรือคีย์สาธารณะก็สามารถเข้ารหัสข้อมูลได้ ในขณะที่อีกคีย์หนึ่งถอดรหัส นี่คือเหตุผลที่ RSA เป็นอัลกอริทึมเข้ารหัสแบบอสมิตรที่ใช้กันทั่วไป
ตัวเลือกในการเข้ารหัสด้วยคีย์สาธารณะหรือคีย์ส่วนตัว ทำให้ RSA รองรับบริการหลากหลาย:
1. เข้ารหัสด้วยคีย์สาธารณะ (สำหรับความลับ)
หากใช้คีย์สาธารณะเข้ารหัส คีย์ส่วนตัวจะต้องใช้ถอดรหัส เหมาะสำหรับส่งข้อมูลละเอียดอ่อนผ่านเครือข่ายหรืออินเทอร์เน็ต ผู้รับส่งคีย์สาธารณะให้ผู้ส่ง ผู้ส่งเข้ารหัสข้อมูลด้วยคีย์สาธารณะและส่งให้ผู้รับ เนื่องจากคีย์สาธารณะเข้ารหัส เฉพาะเจ้าของคีย์ส่วนตัวจึงถอดรหัสข้อมูลละเอียดอ่อนได้ ดังนั้นเฉพาะผู้รับที่ตั้งใจไว้จึงอ่านได้ แม้ข้อมูลถูกขโมยระหว่างทาง
2. เข้ารหัสด้วยคีย์ส่วนตัว (สำหรับการยืนยันตัวตน)
ผู้ส่งเข้ารหัสข้อมูลด้วยคีย์ส่วนตัวของตน เเล่ส่งข้อมูลเข้ารหัสพร้อมคีย์สาธารณะไปยังผู้รับ ผู้รับถอดรหัสด้วยคีย์สาธารณะของผู้ส่ง เพื่อยืนยันว่าผู้ส่งเป็นผู้ที่แท้จริง ด้วยวิธีนี้ ข้อมูลอาจถูกขโมยและอ่านได้ระหว่างทาง แต่เป้าหมายหลักคือการยืนยันตัวตนผู้ส่ง
หากข้อมูลถูกขโมยและแก้ไขระหว่างทาง คีย์สาธารณะจะถอดรหัสข้อความใหม่ไม่ได้ ผู้รับจึงรู้ว่าข้อมูลถูกเปลี่ยนแปลง
รายละเอียดเทคนิค
คีย์สาธารณะและคีย์ส่วนตัวสร้างจากสองจำนวน หนึ่งเป็นผลคูณของจำนวนเฉพาะขนาดใหญ่สองจำนวน ทั้งสองคีย์ใช้จำนวนเฉพาะคู่เดียวกันคำนวณค่า คีย์ RSA มักมีความยาว 1024 หรือ 2048 บิต ทำให้ยากมากต่อการแยกตัวประกอบ แม้คีย์ 1024 บิตเชื่อว่าจะแตกได้ในอนาคตใกล้
RSA ใช้ร่วมกับ Transport Layer Security (TLS) เพื่อรักษาความปลอดภัยการเชื่อมต่อระหว่างสองฝ่าย มีผลิตภัณฑ์และอัลกอริทึมดังอื่นๆ เช่น Pretty Good Privacy (PGP) ใช้ RSA ไม่ว่าจะเป็นปัจจุบันหรือในอดีต
Virtual Private Networks (VPNs), บริการอีเมล, เว็บเบราว์เซอร์ และช่องทางการสื่อสารอื่นๆ ได้ใช้ RSA เช่นกัน VPN สามารถใช้ TLS ทำ Handshake ระหว่างสองฝ่ายในการแลกเปลี่ยนข้อมูล