• public-key
  • private-key
  • asymmetric-cryptography
  • symmetric-cryptography

กุญแจสาธารณะ กุญแจส่วนตัว และการเข้ารหัสแบบอสมมาตร

ในบทความนี้ เราได้แนะนำแนวคิดเกี่ยวกับกุญแจสาธารณะ กุญแจส่วนตัว และหลักการของการเข้ารหัสแบบอสมมาตร เราได้เปรียบเทียบข้อดีและข้อเสียของมันกับการเข้ารหัสแบบสมมาตร รวมถึงความแตกต่างในสถานการณ์การใช้งานของพวกมัน

Darcy Ye
Darcy Ye
Developer

คุณอาจเคยได้ยินเกี่ยวกับกุญแจส่วนตัวและกุญแจสาธารณะในหลายบริบท แต่คุณรู้จริง ๆ หรือไม่ว่าพวกมันคืออะไร?

การเข้ารหัสแบบอสมมาตร vs การเข้ารหัสแบบสมมาตร

กุญแจส่วนตัวและกุญแจสาธารณะเป็นแนวคิดในทางการเข้ารหัสแบบอสมมาตร (รู้จักกันอีกชื่อหนึ่งว่าการเข้ารหัสกุญแจสาธารณะ หรือ PKC)

การเข้ารหัสแบบอสมมาตรหมายถึงวิธีการเข้ารหัสหรือการลงนามข้อมูลโดยใช้กุญแจกุญแจที่แตกต่างกันสองชิ้น (กุญแจส่วนตัว + กุญแจสาธารณะ) ซึ่งสอดคล้องกับการต้องการถอดรหัสหรือการตรวจสอบลายเซ็น กุญแจสาธารณะสามารถมองเห็นได้โดยใครก็ได้ ในขณะที่กุญแจส่วนตัวมีอยู่เฉพาะต่อผู้ถือครองกุญแจ คุณสามารถบอกได้ง่าย ๆ จากชื่อของกุญแจ

ในทำนองเดียวกัน คุณอาจสามารถเดาได้ว่าการเข้ารหัสแบบสมมาตรหมายถึงวิธีการเข้ารหัสและถอดรหัสข้อมูลโดยใช้กุญแจเดียวกัน

เราจึงใช้การบันทึกอย่างง่ายเพื่อแสดงกระบวนการเข้ารหัส/ถอดรหัสของการเข้ารหัสทั้งแบบสมมาตรและอสมมาตร

การเข้ารหัสและการถอดรหัส

สำคัญที่ต้องทราบว่าฟังก์ชันการเข้ารหัส/ถอดรหัสในอัลกอริทึมการเข้ารหัสแบบสมมาตรและอสมมาตรนั้นแตกต่างกันและมักใช้กับอัลกอริทึมที่แตกต่างกัน อัลกอริทึมการเข้ารหัสแบบสมมาตรที่พบได้บ่อยประกอบด้วย DES, AES, RC2, RC4 และอื่น ๆ ในขณะที่อัลกอริทึมการเข้ารหัสแบบอสมมาตรที่พบได้บ่อยประกอบด้วย RSA และ EC

Logto ใช้อัลกอริทึม EC สำหรับการเข้ารหัสและการถอดรหัสข้อมูลในการส่งข้อมูลเพราะมีประสิทธิภาพและปลอดภัยยิ่งกว่า RSA คุณสามารถอ่าน โพสต์นี้ สำหรับรายละเอียดเพิ่มเติม Logto จะสนับสนุน RSA ในรุ่นถัดไปเพื่อความเข้ากันได้ดียิ่งขึ้นกับบางระบบที่เก่า

ทำไมถึงใช้การเข้ารหัสแบบอสมมาตร?

การเข้ารหัสแบบอสมมาตรแก้ไขปัญหาการกระจายกุญแจในการเข้ารหัสแบบสมมาตร

เนื่องจากการเข้ารหัสแบบสมมาตรใช้กุญแจเดียว การแจกจ่ายกุญแจผ่านการเชื่อมต่อเครือข่ายที่ไม่ปลอดภัยอาจเสี่ยงต่อการเปิดเผยกุญแจต่อบุคคลที่เป็นมัลลิชัส คนที่ไม่ประสงค์ดีอาจใช้กุญแจที่ถูกขโมยเพื่อเข้าถึงข้อมูลใด ๆ ที่เข้ารหัสด้วยกุญแจนั้น ซึ่งเป็นภัยคุกคามต่อความปลอดภัยที่สำคัญ

สองกรณีการใช้งานทั่วไปของการเข้ารหัสแบบอสมมาตร

การส่งข้อมูลที่เข้ารหัส

ผู้ส่งสามารถใช้กุญแจสาธารณะของผู้รับเพื่อเข้ารหัสข้อมูล และผู้รับใช้กุญแจส่วนตัวของตนเองในการถอดรหัสข้อมูล

เนื่องจากกุญแจสาธารณะมีอยู่ให้หลายคนใช้ได้ตามทฤษฎี ในสถานการณ์ที่อุดมคติ ผู้รับสามารถรับข้อมูลที่เข้ารหัสจากผู้ส่งหลาย ๆ คนได้ นอกจากนี้ ผู้ส่งหลายคนไม่สามารถรู้ได้ว่าผู้ส่งคนอื่น ๆ ได้ส่งข้อมูลแบบใดบ้างเนื่องจากมีเพียงผู้รับ (ผู้ถือครองกุญแจส่วนตัว) เท่านั้นที่สามารถถอดรหัสและกู้ข้อมูลได้

กุญแจสาธารณะและกุญแจส่วนตัวมักถูกสร้างขึ้นพร้อมกัน สิ่งที่เรากล่าวถึงข้างต้นคือการสร้างกุญแจส่วนตัวและกุญแจสาธารณะของฝ่ายหนึ่ง จากนั้นทำการแจกจ่ายกุญแจสาธารณะของฝ่ายนั้นให้กับผู้ใช้ของพวกเขา หากคุณต้องการให้การสื่อสารระหว่างทั้งสองฝ่ายปลอดภัย ทั้งสองฝ่ายจะต้องสร้างกุญแจส่วนตัวและกุญแจสาธารณะของพวกเขาเอง จากนั้นทำการแลกเปลี่ยนกุญแจสาธารณะระหว่างกัน วิธีนี้ทั้งสองฝ่ายจะมีกุญแจสาธารณะของกันและกัน และพวกเขาสามารถใช้กุญแจส่วนตัวของตนเองและกุญแจสาธารณะของคู่ของพวกเขาสำหรับการเข้ารหัสและถอดรหัส

การใช้ลายเซ็นเพื่อความเชื่อถือในข้อมูล

ในทางการเข้ารหัสแบบอสมมาตร ฝ่ายที่ถือครองกุญแจส่วนตัวสามารถลงนามในข้อมูลที่พวกเขาส่งได้ ต่อจากนั้นผู้รับที่มีกุญแจสาธารณะสามารถตรวจสอบความสอดคล้องของข้อมูลและลายเซ็นเมื่อได้รับข้อมูล เพื่อให้แน่ใจว่าข้อมูลไม่ได้ถูกแก้ไขระหว่างการส่ง

การใช้การบันทึกที่เรากำหนดไว้ในส่วนก่อนหน้านี้ การลงนามและการตรวจสอบลายเซ็นสามารถแสดงได้ดังนี้:

การลงชื่อและการตรวจสอบ

การตรวจสอบลายเซ็นดิจิตอลพิสูจน์ว่าฝ่ายที่สร้างลายเซ็นรู้ว่ากุญแจส่วนตัวที่สอดคล้องคืออะไร

คุณอาจพบว่ากรณีการใช้สองแบบที่กล่าวถึงข้างต้นคุ้นเคยมาก ในชีวิตประจำวันของเรา บริการเกือบทั้งหมดที่มีสถาปัตยกรรมเซิร์ฟเวอร์-ไคลเอนต์ใช้การเข้ารหัสแบบอสมมาตรเพื่อรับรองความปลอดภัยของข้อมูล

ในฐานะกรอบการเฝ้าติดตามตัวตนผู้ใช้ที่เติบโตอย่างรวดเร็ว Logto ก็ใช้ PKC อย่างกว้างขวางเพื่อให้ความปลอดภัยข้อมูลของผู้ใช้ หลังจากที่ผู้ใช้ดำเนินการเข้าสู่ระบบเสร็จสมบูรณ์ Logto จะออกโทเค็นการเข้าถึงให้กับผู้เพื่อมอบสิทธิ์ให้พวกเขาเข้าถึงแหล่งข้อมูลที่จำเป็น Logto ได้เผยแพร่กุญแจสาธารณะเพื่อใช้ในการตรวจสอบว่าโทเค็นการเข้าถึงนั้นออกโดย Logto จริง ๆ และไม่ได้ถูกแก้ไขโดยผู้ประสงค์ร้าย

ข้อกลับของการเข้ารหัสแบบอสมมาตร

โดยทั่วไป ความยาวของกุญแจสำหรับการเข้ารหัสแบบสมมาตรคือ 128 หรือ 256 บิต ในขณะที่ความยาวของกุญแจสำหรับการเข้ารหัสแบบอสมมาตรสามารถถึง 4,096 บิต นี่เป็นเพราะกุญแจส่วนตัวและกุญแจสาธารณะมีความสัมพันธ์กันทางคณิตศาสตร์และเป็นคู่กุญแจที่มีความเป็นเอกลักษณ์ ในทางทฤษฎี การรู้กุญแจสาธารณะทำให้สามารถคำนวณค่าของกุญแจส่วนตัวได้ แต่เนื่องจากความซับซ้อนของอัลกอริทึมที่เกี่ยวข้อง มันมักจะต้องใช้เวลาจำนวนมาก ในการทำให้การ "แก้ไข" กุญแจส่วนตัว "เป็นไปไม่ได้" การใช้ความยาวกุญแจที่ยาวขึ้นเป็นวิธีที่ตรงไปตรงมา

สิ่งที่ได้เรียนรู้

การเข้ารหัสแบบอสมมาตรใช้ทรัพยากรการคำนวณและเวลามากกว่าการเข้ารหัสแบบสมมาตรในระหว่างการคำนวณต่อการอภิปรายในส่วนที่ผ่านมา ในแอปพลิเคชันที่มีการสื่อสารบ่อยครั้ง การใช้การเข้ารหัสแบบอสมมาตรอย่างกว้างขวางอาจส่งผลกระทบต่อประสิทธิภาพและประสบการณ์ของผู้ใช้

ในสถานการณ์ทางธุรกิจ การเข้ารหัสแบบสมมาตรและอสมมติรบ่อยครั้งถูกใช้ร่วมกันเพื่อสร้างสมดุลระหว่างประสิทธิภาพและความปลอดภัยของข้อมูล เมื่อสร้างบริการของคุณเอง คุณสามารถพิจารณาความต้องการด้านความปลอดภัยของข้อมูลในแต่ละขั้นตอนและเลือกอัลกอริทึมการเข้ารหัสที่เหมาะสมตามนั้น