การเข้ารหัสแบบอสมมาตร (Asymmetric Key Cryptography) บางตำราอาจใช้คำว่า Asymmetric Key Encryption หรือ Public Encryption หรือใช้คำว่า Public Key Infrastructure (PKI) หรือ Public-Key Cryptography อย่างไรก็ตามการเข้ารหัสแบบนี้ถูกคิดค้นโดย Whit Diffie และ Marty Hellman ตั้งแต่ปี 1976 โดยถูกสร้างมาเพื่อเป็นทางเลือกในการส่งข้อมูลที่เป็นความลับ เพราะการเข้ารหัสแบบสมมาตร (ใช้กุญแจดอกเดียว) จะมีปัญหาเรื่องการถูกดักจับ key และปัญหาเกี่ยวกับการจัดการ Key ที่มีอยู่เป็นจำนวนมากเมื่อใช้ในระบบใหญ่ การเข้ารหัสแบบอสมมาตรจะใช้ Key สองอัน โดยหากเราเข้ารหัสด้วย Key อันหนึ่งจะต้องถอดรหัสด้วย Key อีกอันหนึ่งที่เหลือ ตัวอย่างเช่น
หากเข้ารหัสด้วย Key1 จะต้องถอดรหัสด้วย Key2 เท่านั้น
หากเข้ารหัสด้วย Key2 จะต้องถอดรหัสด้วย Key1 เท่านั้น
หากเข้ารหัสด้วย Key1 แล้วถอดรหัสด้วย Key1 จะไม่สามารถถอดรหัสได้
หากเข้ารหัสด้วย Key2 แล้วถอดรหัสด้วย Key2 จะไม่สามารถถอดรหัสได้
การประยุกต์ใช้งานทำได้โดย เก็บ Key อันหนึ่งไว้กับตัวเองเรียกว่า Private Key ส่วนอีก Key หนึ่ง สามารถแจกจ่ายให้ผู้อื่นได้ ดังนั้น Key นี้จะถูกเรียกว่า Public Key เมื่อผู้อื่นต้องการส่งข้อมูลที่เป็นความลับมายังเจ้าของ Key จะต้องเข้ารหัสข้อมูลนั้นด้วย Public Key ของผู้รับ ดังนั้นจึงทำให้ผู้ที่มี Private Key เท่านั้นที่จะถอดรหัสข้อมูลได้ ส่วนการส่งข้อมูลที่เข้ารหัสด้วย Private Key ไปยังผู้อื่น ผู้ใดก็ตามที่มี Public Key (ซึ่งมีอยู่หลายคน) จะสามารถถอดรหัสข้อมูลได้
ตัวอย่างที่ 1
1. สร้าง Private Key และ Public Key ของผู้ใช้ A ขึ้นมา เรียกว่า PvK-A และ PbK-A 1 ตามลำดับ
2. ผู้ใช้ A แจกจ่าย Public Key ของตน (PbK-A) ไปให้กับผู้ใช้ และผู้ใช้ C
3. ผู้ใช้ B สามารถส่งข้อมูลลับ มายังผู้ใช้ A ได้ โดยเข้ารหัสข้อมูลด้วย Pbk-A ซึ่งทำให้
ผู้ใช้ A ถอดรหัสได้เพราะมี PvK-A (เนื่องจากข้อมูลเข้ารหัสด้วย PbK-A จึงต้องถอดด้วย PvK-A ซึ่งผู้ใช้ A มีคีย์นี้)
ผู้ใช้ C ถึงแม้ดักจับ Cipher Text ของผู้ใช้ B ได้ แต่ก็ไม่สามารถถอดรหัสได้ เพราะไม่มี PvK-A (เนื่องจาก Private Key จะถูกเก็บไว้ที่เจ้าของเท่านั้น)
4. ผู้ใช้ C สามารถส่งข้อมูลลับมายังผู้ใช้ A ได้ โดยเข้ารหัสข้อมูลด้วย PbK-A ซึ่งทำให้ผู้ใช้ A ถอดรหัสได้ แต่ผู้ใช้
อื่นถอดรหัสไม่ได้
5. ผู้ใช้ A ต้องการส่งข้อมูลที่ “ไม่เป็นความลับ” ไปให้ผู้ใช้ B โดยเข้ารหัสข้อมูลด้วย PvK-A ซึ่งทำให้
ผู้ใช้ B สามารถถอดรหัสข้อมูลได้โดยใช้ PbK-A และมั่นใจได้ว่าเป็นข้อมูลนี้มาจาก A เนื่องจากข้อมูลที่ถอดด้วย PbK-A ได้จะต้องถูกเข้ารหัสด้วย PvK-A ซึ่งผู้ที่มีคีย์นี้มีอยู่คนเดียวเท่านั้นคือผู้ใช้ A
ผู้ใช้ C ดักจับ Cipher Text ได้ ก็จะสามารถถอดรหัสข้อมูลได้โดยใช้ PbK-A แต่เนื่องจากข้อมูลนี้เป็นข้อมูลที่ “ไม่เป็นความลับ” จึงไม่ได้เกิดปัญหาอะไร
NOTE : การเข้ารหัสโดยใช้ Private Key ของผู้ส่ง สามารถยืนยันตัวผู้ส่งได้
ตัวอย่างที่ 2
1. สร้าง Private Key และ Public Key ของผู้ใช้ A ขึ้นมา เรียกว่า PvK-A และ PbK- A ตามลำดับ
2. สร้าง Private Key และ Public Key ของผู้ใช้ B ขึ้นมา เรียกว่า PvK-B และ PbK-B ตามลำดับ
3. หาก A ต้องการจะส่งข้อมูลที่เป็นความลับไปยัง B จะต้องเข้ารหัสข้อมูลด้วย PbK-B ซึ่ง B จะเป็นคนเดียวที่
สามารถถอดรหัสได้ เพราะมี PvK-B
4. หาก B ต้องการจะส่งข้อมูลที่เป็นความลับไปยัง A จะต้องเข้ารหัสข้อมูลด้วย PbK-A ซึ่ง A จะเป็นคนเดียวที่
สามารถถอดรหัสได้ เพราะมี PvK-A
5. A เข้ารหัสข้อมูลด้วย PvK-A ส่งไปยัง B เมื่อ B ได้รับและถอดรหัสด้วย PbK-A ออกมาได้จึงมั่นใจได้ว่าข้อมูล
ถูกส่งมาจาก A (เพราะหากถอดรหัสด้วย PbK-A แสดงว่าข้อมูลนี้จะต้องถูกเข้ารหัสด้วย PvK-A)
6. B เข้ารหัสข้อมูลด้วย PvK-B ส่งไปยัง A เมื่อ A ได้รับและถอดรหัสด้วย PbK-B ออกมาได้จึงมั่นใจได้ว่าข้อมูล
ถูกส่งมาจาก B (เพราะหากถอดรหัสด้วย PbK-B แสดงว่าข้อมูลนี้จะต้องถูกเข้ารหัสด้วย PvK-B)
อัลกอริทึมที่ใช้ในการเข้ารหัสแบบอสมมาตร (Asymmetric Key Cryptography) ที่เป็นที่นิยม ได้แก่ RSA และ ECC
หัวข้อที่ผ่านเราได้ศึกษาการเข้ารหัสที่ใช้กุญแจดอกเดียว (ไม่ว่าจะเป็นการเข้ารหัสด้วยอัลกอริทึม DES หรือ AES) การเข้ารหัสโดยใช้กุญแจดอกเดียวเรียกว่า “การเข้ารหัสแบบสมมาตร” (Symmetric Key Cryptography) เนื่องจากใช้ Key ตัวเดียวกันในการเข้ารหัสและถอดรหัส นอกจาก DES และ AES แล้วอัลกอริทึมในการเข้ารหัสแบบสมมาตรอย่างอื่นก็มี เช่น Blowfish และ IDEA แต่อาจจะไม่เป็นที่นิยมมากนัก การเข้ารหัสแบบสมมาตรถึงแม้จะใช้อัลกอริทึมที่แข็งแกร่งอย่าง AES และใช้ Key ที่มีความยามตั้งแต่ 128 บิต ขึ้นไปแล้วก็ยังมีข้อด้อยอยู่ ตัวอย่างเช่น
การส่ง Key ไปยังผู้รับเพื่อใช้ในการถอดรหัส หาก Key ถูกดักจับได้แล้วการเข้ารหัสก็ จะ ไม่มีความหมายอะไรเลยเพราะผู้ดักฟังที่ดักจับได้ Key ไป ก็สามารถที่จะดักจับ Cipher Text แล้วถอดรหัสได้
หากมีจำนวนผู้ใช้มากขึ้น ซึ่งผู้ใช้แต่ละคู่จะต้องใช้คีย์ที่แตกต่างจากคู่สื่อสารอื่นจะทำให้จำนวนคีย์ที่ต้องใช้ทั้งหมดมีจำนวนมาก เช่น ผู้ใช้ N คนจะต้องใช้คีย์ทั้งหมดเท่ากับ Nx(N-1)/2
ด้วยข้อจำกัดเกี่ยวกับเรื่องการบริหารจัดการคีย์นี้ จึงได้มีการคิดขึ้น “การเข้ารหัสแบบอสมมาตร” ขึ้นมาซึ่งภาษาอังกฤษเรียกว่า Asymmetric Key Cryptography