• security
  • encryption
  • jwt
  • asymmetric
  • ec
  • rsa
  • public key
  • private key
  • token
  • signature

การแนะนำอัลกอริทึมการเซ็นชื่อ EC และ RSA ใน JWT

เรียนรู้พื้นฐานเกี่ยวกับการเข้ารหัสแบบอสมมาตร และเข้าใจข้อดีและข้อเสียของอัลกอริทึมการเซ็นชื่อ JWT ที่ได้รับความนิยมสองแบบ - EC และ RSA

Charles
Charles
Developer

ภูมิหลัง

ในโลกดิจิทัล การค้นหาความปลอดภัยในการส่งข้อมูลที่ดีขึ้นยังคงมีอยู่อย่างต่อเนื่อง ปัจจุบัน JSON Web Tokens (JWT) ได้รับการยอมรับอย่างกว้างขวางและมีบทบาทสำคัญใน OAuth 2.0 และ OIDC แต่เซิร์ฟเวอร์การอนุญาตตรวจสอบและเชื่อถือโทเค็น JWT ที่ส่งมาจากไคลเอนต์ได้อย่างไร โทเค็นออกและเซ็นชื่อโดยผู้ออกได้อย่างไร ในโพสต์บล็อกนี้ เราจะพูดถึงการเข้ารหัสแบบอสมมาตรและพิจารณาข้อดีและข้อเสียของอัลกอริทึมการเซ็นชื่อที่แตกต่างกันที่ Logto ใช้ในโทเค็น JWT

ความเข้าใจเกี่ยวกับการเข้ารหัสแบบอสมมาตร

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

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

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

อัลกอริทึมการเข้ารหัสแบบอสมมาตร: RSA เปรียบเทียบกับ EC

อัลกอริทึม RSA (Rivest-Shamir-Adelman) และ EC (Elliptic Curve) เป็นอัลกอริทึม 'ฟังก์ชันทางคณิตศาสตร์' ที่ใช้กันมากที่สุดสองในแบบอสมมาตร ในฐานะนักพัฒนาเรามักจะถูกเสนอทางเพื่อเลือกระหว่างอัลกอริทึมเหล่านี้เมื่อจัดการกับกรอบการรับรองและ JWT ของมัน แต่ทางเลือกของคุณจะเป็นอะไร? ลองมาดูข้อดีและข้อเสียของแต่ละแบบกัน

อัลกอริทึมการเซ็นชื่อ RSA

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

อัลกอริทึมการเซ็นชื่อ EC

  • ข้อดี:
    1. ประสิทธิภาพ: EC ให้ประสิทธิภาพที่เหนือกว่า RSA ทำให้เหมาะสมสำหรับแอปพลิเคชันที่มีข้อจำกัดด้านทรัพยากรหรือโหลดการส่งข้อมูลสูง
    2. ขนาดกุญแจที่กระทัดรัด: กุญแจ EC มีขนาดสั้นกว่ากุญแจ RSA มากในขณะที่ให้ระดับความปลอดภัยเท่าเทียมกัน ส่งผลให้ความต้องการด้านการเก็บข้อมูลและเครือข่ายลดลง และเร่งการดำเนินการเข้ารหัสให้เร็วขึ้น
    3. ความปลอดภัย: EC ได้รับการยกย่องว่าสำหรับความปลอดภัยที่แข็งแรง พร้อมกับคณิตศาสตร์อันซับซ้อนเบื้องหลังโค้งเอลลิปติคซึ่งทำให้ยากที่จะถูกโจมตีด้วยแรง
  • ข้อเสีย:
    1. การสนับสนุนที่จำกัด: ระบบและไลบรารีเก่า ๆ บางระบบอาจขาดการสนับสนุน EC อย่างครอบคลุม ซึ่งอาจทำให้เกิดปัญหาความเข้ากันได้ ตัวอย่างเช่น Cloudflare Zero Trust ไม่สนับสนุนโทเค็น EC
    2. ความซับซ้อน: การใช้งาน EC อาจซับซ้อนกว่าเนื่องจากความซับซ้อนในเชิงคณิตศาสตร์ที่เกี่ยวข้อง

การเลือกอัลกอริทึมการเซ็นชื่อ JWT ของ Logto

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

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

ในการอัปเดตครั้งถัดไป Logto Cloud จะเปิดตัวฟีเจอร์ “การผัดเวียนกุญแจส่วนตัว” ที่ช่วยให้คุณสร้าง OIDC กุญแจส่วนตัวใหม่และกุญแจคุกกี้ในผู้เช่าได้ (กุญแจส่วนตัวใช้เพื่อเซ็นชื่อโทเค็น JWT ของคุณและกุญแจคุกกี้ใช้เพื่อเซ็นชื่อคุกกี้)

ภาพหน้าจอ UI สำหรับหมุนกุญแจ OIDC ในคอนโซล

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

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

เนื่องจากการตั้งค่านี้อยู่ในหน้าการตั้งค่าของผู้เช่า UI จะไม่สามารถใช้งานได้สำหรับผู้ใช้ OSS ไม่ต้องกังวล คุณยังคงสามารถทำสิ่งนี้ได้โดยการอัปเกรดเป็นเวอร์ชันล่าสุดและรันคำสั่ง CLI ต่อไปนี้ในไดเรกทอรีรากของ Logto

สรุป

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

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