0Pricing
Cryptology Academy · บทเรียน

HS256 กับ RS256: JWT แบบสมมาตรกับแบบอสมมาตร

เลือกอัลกอริทึมการลงนามที่เหมาะสมสำหรับระบบพิสูจน์ตัวตนของคุณ

HS256 กับ RS256: JWT แบบสมมาตรกับแบบอสมมาตร เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

ตระกูลอัลกอริทึม

การลงลายเซ็น JWT ใช้อัลกอริทึมแบบสมมาตร (HMAC) หรือแบบอสมมาตร (RSA, ECDSA) HS256 = HMAC-SHA256 RS256 = RSA-PKCS1v1.5-SHA256 ES256 = ECDSA-P256-SHA256 การเลือกนี้มีผลต่อการแจกจ่ายคีย์และรูปแบบความเชื่อถือ

HS256: HMAC แบบสมมาตร

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

กรณีใช้งาน HS256

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

RS256: RSA แบบอสมมาตร

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

กรณีใช้งาน RS256

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

ES256: ทางเลือกแบบ ECDSA

ES256 ใช้ ECDSA บน P-256 ลายเซ็นมีขนาด 64 ไบต์ เทียบกับ 256 ไบต์ของ RS256 สำหรับคีย์ขนาด 2048 บิต การตรวจสอบเร็วกว่า RS256 ประมาณ 10 เท่า เหมาะเมื่อแบนด์วิดท์หรือความเร็วในการตรวจสอบมีความสำคัญ เช่น API บนมือถือและอินเทอร์เน็ตของสรรพสิ่ง

การหมุนเวียนคีย์

สำหรับ RS256/ES256 ให้หมุนเวียนกุญแจโดยเผยแพร่กุญแจใหม่ (kid ใหม่) ไปยัง JWKS ลงลายเซ็นโทเค็นใหม่ด้วยกุญแจใหม่ เปิดช่วงผ่อนผันให้โทเค็นเก่าหมดอายุ แล้วจึงนำกุญแจเก่าออก การหมุนเวียนแบบ HMAC ต้องแจกจ่ายคีย์ลับใหม่อีกครั้ง

การเปรียบเทียบประสิทธิภาพ

การตรวจสอบ HS256: ประมาณ 1 µs การตรวจสอบ RS256: ประมาณ 100 µs (2048 บิต) การตรวจสอบ ES256: ประมาณ 50 µs (P-256) HS256 เร็วที่สุด แต่ต้องแบ่งปันคีย์ลับ ES256 สร้างสมดุลระหว่างความปลอดภัยและประสิทธิภาพได้ดีที่สุดสำหรับระบบแบบกระจาย

ดูตัวอย่างการโจมตีส่วนหัว alg

ช่องโหว่ร้ายแรง: หากผู้ตรวจสอบเชื่อถือส่วนหัว alg โดยไม่ตรวจสอบ ผู้โจมตีสามารถเปลี่ยน alg จาก RS256 เป็น HS256 และลงลายเซ็นโทเค็นด้วยกุญแจสาธารณะของเซิร์ฟเวอร์ (ซึ่งเปิดเผยต่อสาธารณะ) โดยใช้กุญแจนั้นเป็นคีย์ลับ HMAC วิธีแก้: อย่าเชื่อถือส่วนหัว alg เด็ดขาด

การเลือกอัลกอริทึม

การตัดสินใจ: บริการเดียว → HS256 บริการหลายตัว/ไมโครเซอร์วิส → RS256 หรือ ES256 แอปมือถือปริมาณสูง → ES256 หากไม่แน่ใจ ให้ใช้ ES256 (P-256) หรือ RS256 ที่ใช้กุญแจขนาดอย่างน้อย 2048 บิต อย่าใช้ RS512 กับเส้นทางที่ไวต่อประสิทธิภาพ

ไลบรารีและมาตรฐาน

ใช้ PyJWT (Python), jose (Node.js) หรือ auth0/java-jwt กำหนดอัลกอริทึมที่คาดหวังไว้เสมอในการเรียกใช้การตรวจสอบ: jwt.decode(token, secret, algorithms=["HS256"]). อย่าส่ง algorithms=None หรือเว้นพารามิเตอร์นี้

ตรวจสอบความเข้าใจ

เหตุใดจึงนิยมใช้ RS256 มากกว่า HS256 ในสถาปัตยกรรมไมโครเซอร์วิส

สรุปทบทวน

HS256 เป็นแบบสมมาตร (ใช้คีย์ลับร่วมกัน) ส่วน RS256/ES256 เป็นแบบอสมมาตร (ใช้กุญแจส่วนตัวลงลายเซ็น ใช้กุญแจสาธารณะตรวจสอบ) ใช้อัลกอริทึมแบบอสมมาตรสำหรับระบบที่มีหลายฝ่าย ต่อไป: การใช้ประโยชน์จากช่องโหว่ JWT

คำถามที่พบบ่อย

บทเรียน “HS256 กับ RS256: JWT แบบสมมาตรกับแบบอสมมาตร” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “HS256 กับ RS256: JWT แบบสมมาตรกับแบบอสมมาตร” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “HS256 กับ RS256: JWT แบบสมมาตรกับแบบอสมมาตร”

เลือกอัลกอริทึมการลงนามที่เหมาะสมสำหรับระบบพิสูจน์ตัวตนของคุณ คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “HS256 กับ RS256: JWT แบบสมมาตรกับแบบอสมมาตร” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โครงสร้าง JWT: ส่วนหัว ข้อมูลบรรจุ และลายมือชื่อ
  2. HS256 กับ RS256: JWT แบบสมมาตรกับแบบอสมมาตร
  3. ช่องโหว่ JWT: alg=none และความสับสนของคีย์
  4. แนวทางปฏิบัติที่ดีที่สุดในการใช้งาน JWT อย่างปลอดภัย
← กลับไปที่ Cryptology Academy