กุญแจสาธารณะ กุญแจส่วนตัว และการเข้ารหัสแบบอสมมาตร
ในบทความนี้ เราได้แนะนำแนวคิดเกี่ยวกับกุญแจสาธารณะ กุญแจส่วนตัว และหลักการของการเข้ารหัสแบบอสมมาตร เราได้เปรียบเทียบข้อดีและข้อเสียของมันกับการเข้ารหัสแบบสมมาตร รวมถึงความแตกต่างในสถานการณ์การใช้งานของพวกมัน
คุณอาจเคยได้ยินเกี่ยวกับกุญแจส่วนตัวและกุญแจสาธารณะในหลายบริบท แต่คุณรู้จริง ๆ หรือไม่ว่าพวกมันคืออะไร?
การเข้ารหัสแบบอสมมาตร vs การเข้ารหัสแบบสมมาตร
กุญแจส่วนตัวและกุญแจสาธารณะเป็นแนวคิดในทางการเข้ารหัสแบบอสมมาตร (รู้จักกันอีกชื่อหนึ่งว่าการเข้ารหัสกุญแจสาธารณะ หรือ PKC)
การเข้ารหัสแบบอสมมาตรหมายถึงวิธีการเข้ารหัสหรือการลงนามข้อมูลโดยใช้กุญแจกุญแจที่แตกต่างกันสองชิ้น (กุญแจส่วนตัว + กุญแจสาธารณะ) ซึ่งสอดคล้องกับการต้องการถอดรหัสหรือการตรวจสอบลายเซ็น กุญแจสาธารณะสามารถมองเห็นได้โดยใครก็ได ้ ในขณะที่กุญแจส่วนตัวมีอยู่เฉพาะต่อผู้ถือครองกุญแจ คุณสามารถบอกได้ง่าย ๆ จากชื่อของกุญแจ
ในทำนองเดียวกัน คุณอาจสามารถเดาได้ว่าการเข้ารหัสแบบสมมาตรหมายถึงวิธีการเข้ารหัสและถอดรหัสข้อมูลโดยใช้กุญแจเดียวกัน
เราจึงใช้การบันทึกอย่างง่ายเพื่อแสดงกระบวนการเข้ารหัส/ถอดรหัสของการเข้ารหัสทั้งแบบสมมาตรและอสมมาตร
สำคัญที่ต้องทราบว่าฟังก์ชันการเข้ารหัส/ถอดรหัสในอัลกอริทึมการเข้ารหัสแบบสมมาตรและอสมมาตรนั้นแตกต่างกันและมักใช้กับอัลกอริทึมที่แตกต่างกัน อัลกอริทึมการเข้ารหัสแบบสมมาตรที่พบได้บ่อยประกอบด้วย DES, AES, RC2, RC4 และอื่น ๆ ในขณะที่อัลกอริทึมการเข้ารหัสแบบอสมมาตรที่พบได้บ่อยประกอบด้วย RSA และ EC
Logto ใช้อัลกอริทึม EC สำหรับการเข้ารหัสและการถอดรหั สข้อมูลในการส่งข้อมูลเพราะมีประสิทธิภาพและปลอดภัยยิ่งกว่า RSA คุณสามารถอ่าน โพสต์นี้ สำหรับรายละเอียดเพิ่มเติม Logto จะสนับสนุน RSA ในรุ่นถัดไปเพื่อความเข้ากันได้ดียิ่งขึ้นกับบางระบบที่เก่า
ทำไมถึงใช้การเข้ารหัสแบบอสมมาตร?
การเข้ารหัสแบบอสมมาตรแก้ไขปัญหาการกระจายกุญแจในการเข้ารหัสแบบสมมาตร
เนื่องจากการเข้ารหัสแบบสมมาตรใช้กุญแจเดียว การแจกจ่ายกุญแจผ่านการเชื่อมต่อเครือข่ายที่ไม่ปลอดภัยอาจเสี่ยงต่อการเปิดเผยกุญแจต่อบุคคลที่เป็นมัลลิชัส คนที่ไม่ประสงค์ดีอาจใช้กุญแจที่ถูกขโมยเพื่อเข้าถึงข้อมูลใด ๆ ที่เข้ารหัสด้ วยกุญแจนั้น ซึ่งเป็นภัยคุกคามต่อความปลอดภัยที่สำคัญ
สองกรณีการใช้งานทั่วไปของการเข้ารหัสแบบอสมมาตร
การส่งข้อมูลที่เข้ารหัส
ผู้ส่งสามารถใช้กุญแจสาธารณะของผู้รับเพื่อเข้ารหัสข้อมูล และผู้รับใช้กุญแจส่วนตัวของตนเองในการถอดรหัสข้อมูล
เนื่องจากกุญแจสาธารณะมีอยู่ให้หลายคนใช้ได้ตามทฤษฎี ในสถานการณ์ที่อุดมคติ ผู้รับสามารถรับข้อมูลที่เข้ารหัสจากผู้ส่งหลาย ๆ คนได้ นอกจากนี้ ผู้ส่งหลายคนไม่สามารถรู้ได้ว่าผู้ส่งคนอื ่น ๆ ได้ส่งข้อมูลแบบใดบ้างเนื่องจากมีเพียงผู้รับ (ผู้ถือครองกุญแจส่วนตัว) เท่านั้นที่สามารถถอดรหัสและกู้ข้อมูลได้
กุญแจสาธารณะและกุญแจส่วนตัวมักถูกสร้างขึ้นพร้อมกัน สิ่งที่เรากล่าวถึงข้างต้นคือการสร้างกุญแจส่วนตัวและกุญแจสาธารณะของฝ่ายหนึ่ง จากนั้นทำการแจกจ่ายกุญแจสาธารณะของฝ่ายนั้นให้กับผู้ใช้ของพวกเขา หากคุณต้องการให้การสื่อสารระหว่างทั้งสองฝ่ายปลอดภัย ทั้งสองฝ่ายจะต้องสร้างกุญแจส่วนตัวและกุญแจสาธารณะของพวกเขาเอง จากนั้นทำการแลกเปลี่ยนกุญแจสาธารณะระหว่างกัน วิธีนี้ทั้งสองฝ่ายจะมีกุญแจสาธารณะของกันและกัน และพวกเขาสามารถใช้กุญแจส่วนตัวของตนเองและกุญแจสาธารณะของคู่ของพวกเขาสำหรับการเข้ารหัสและถอดรหัส
การใช้ลายเซ็นเพื่อความเชื่อถือในข้อมูล
ในทางการเข้ารหัสแบบอสมมาตร ฝ่ายที่ถือครองกุญแจส่วนตัวสามารถลงนามในข้อมูลที่พวกเขาส่งได้ ต่อจากนั้นผู้รับที่มีกุญแจสาธารณะสามารถตรวจสอบความสอดคล้องของข้อมูลและลายเซ็นเมื่อได้รับข้อมูล เพื่อให้แน่ใจว่าข้อมูลไม่ได้ถูกแก้ไขระหว่างการส่ง
การใช้การบันทึกที่เรากำหนดไว้ในส่วนก่อนหน้านี้ การลงนามและการตรวจสอบลายเซ็นสามารถแสดงได้ดังนี้:
การตรวจสอบลายเซ็นดิจิตอลพิสูจน์ว่าฝ่ายที่สร้างลายเซ็นรู้ว่ากุญแจส่วนตัวที่สอดคล้องคืออะไร
คุณอาจพบว่ากรณีการใช้สองแบบที่กล่าวถึงข้างต้นคุ้นเคยมาก ในชีวิตประจำวันของเรา บริการเกือบทั้งหมดที่มีสถาปัตยกรรมเซิร์ฟเวอร์-ไคลเอนต์ใช้การเข้ารหัสแบบอสมมาตรเพื่อรับรองความปลอดภัยของข้อมูล
ในฐานะกรอบการเฝ้าติดตามตัวตนผู้ใช้ที่เติบโตอย่างรวดเร็ว Logto ก็ใช้ PKC อย่างกว้างขวางเพื่อให้ความปลอดภัยข้อมูลของผู้ใช้ หลังจากที่ผู้ใช้ดำเนินการเข้าสู่ระบบเสร็จสมบูรณ์ Logto จะออกโทเค็นการเข้าถึงให้กับผู้เพื่อมอบสิทธิ์ให้พวกเขาเข้าถึงแหล่งข้อมูลที่จำเป็น Logto ได้เผยแพร่กุญแจสาธารณะเพื่อใช้ในการตรวจสอบว่าโทเค็นการเข้าถึงนั้นออกโดย Logto จริง ๆ และไม่ได้ถูกแก้ไขโดยผู้ประสงค์ร้าย
ข้อกลับของการเข้ารหัสแบบอสมมาตร
โดยทั่วไป ความยาวของกุญแจสำหรับการเข้ารหัสแบบสมมาตรคือ 128 หรือ 256 บิต ในขณะที่ความยาวของกุญแจสำหรับการเข้ารหัสแบบอสมมาตรสามารถถึง 4,096 บิต นี่เป็นเพราะกุญแจส่วนตัวและกุญแจสาธารณะมีความสัมพันธ์กันทางคณิตศาสตร์และเป็นคู่กุญแจที่มีความเป็นเอกลักษณ์ ในทางทฤษฎี การรู้กุญแจสาธารณะทำให้สามารถคำนวณค่าของกุญแจส่วนตัวได้ แต่เนื่องจากความซับซ้อนของอัลกอริทึมที่เกี่ยวข้อง มันมักจะต้องใช้เวลาจำนวนมาก ในการทำให้การ "แก้ไข" กุญแจส่วนตัว "เป็นไปไม่ได้" การใช้ความยาวกุญแจที่ยาวขึ้นเป็นวิธีที่ตรงไปตรงมา
สิ่งที่ได้เรียนรู้
การเข้ารหัสแบบอสมมาตรใช้ทรั พยากรการคำนวณและเวลามากกว่าการเข้ารหัสแบบสมมาตรในระหว่างการคำนวณต่อการอภิปรายในส่วนที่ผ่านมา ในแอปพลิเคชันที่มีการสื่อสารบ่อยครั้ง การใช้การเข้ารหัสแบบอสมมาตรอย่างกว้างขวางอาจส่งผลกระทบต่อประสิทธิภาพและประสบการณ์ของผู้ใช้
ในสถานการณ์ทางธุรกิจ การเข้ารหัสแบบสมมาตรและอสมมติรบ่อยครั้งถูกใช้ร่วมกันเพื่อสร้างสมดุลระหว่างประสิทธิภาพและความปลอดภัยของข้อมูล เมื่อสร้างบริการของคุณเอง คุณสามารถพิจารณาความต้องการด้านความปลอดภัยของข้อมูลในแต่ละขั้นตอนและเลือกอัลกอริทึมการเข้ารหัสที่เหมาะสมตามนั้น