เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ · ตัวถอดรหัส JWT
RFC 7519 และ JOSE ครอบครัว: JWT, JWS, JWE, JWK และ JWA อธิบาย
· พื้นหลัง
jwt การเข้ารหัส มาตรฐาน
JWT เป็นหนึ่งในกลุ่มข้อกำหนดจากคณะทำงาน IETF JOSE โพสต์นี้อธิบายว่า RFC แต่ละตัวให้คำจำกัดความว่าอะไร เข้ากันได้อย่างไร และเหตุใด JWT จึงเป็น JWS
ตัวย่อห้าตัว หนึ่งโทเค็น — เหตุใดเอกสารจึงกล่าวถึง JWS และ JWE เมื่อคุณถามเกี่ยวกับ JWT เท่านั้น
เอกสารโทเค็นจะย้ายไปอยู่ระหว่าง JWT, JWS, JWE, JWK และ JWA เนื่องจากเอกสารเหล่านี้อธิบายเลเยอร์ต่างๆ ของระบบนิเวศเดียวกัน ความสับสนเริ่มต้นขึ้นเมื่อมีการใช้ “JWT” เป็นการจดชวเลขสำหรับโทเค็นที่ลงนามสามส่วนทุกอัน การแยกการอ้างสิทธิ์ออกจากเอนเวโลปและการแสดงคีย์ทำให้การนำไปปฏิบัติง่ายขึ้นในการให้เหตุผล
ตัวถอดรหัสของ ToolAcre ตั้งใจให้แคบกว่าตระกูล มันจัดการอินพุตรูป JWS สามส่วนซึ่งมีสองส่วนที่ถอดรหัสแรกเป็นวัตถุ JSON โดยจะตรวจจับอินพุตและหยุดขนาดกะทัดรัดที่เข้ารหัสห้าส่วน เนื่องจากการอ่านไซเฟอร์เท็กซ์โดยไม่มีคีย์ผู้รับจะไม่สามารถถอดรหัสสิ่งเดียวกันได้
เอกสาร JOSE กำหนดรูปแบบที่เกี่ยวข้อง พื้นที่เก็บข้อมูลนี้ไม่ได้สร้างไทม์ไลน์ของกลุ่มทำงาน
ข้อมูลจำเพาะที่เกี่ยวข้องมาจากงาน IETF JOSE แต่แหล่งที่มาของพื้นที่เก็บข้อมูลไม่ได้สร้างไทม์ไลน์ขององค์กรโดยละเอียดที่ร้องขอโดยโครงร่าง บทความนี้จึงหลีกเลี่ยงการประดิษฐ์วันที่หรือประวัติกระบวนการ และมุ่งเน้นไปที่ความสัมพันธ์ของรูปแบบที่สามารถสังเกตได้ในเครื่องมือและแผน
คำถามเชิงปฏิบัติคือเลเยอร์ใดเป็นเจ้าของการตัดสินใจแต่ละครั้ง ชื่อการอ้างสิทธิ์อธิบายถึงคำชี้แจงของแอปพลิเคชัน ลายเซ็นปกป้องเนื้อหาที่เข้ารหัส การเข้ารหัสปกป้องเนื้อหา ออบเจ็กต์คีย์ JSON แสดงถึงข้อมูลคีย์ และการดำเนินการของชื่อตัวระบุอัลกอริทึม ไม่มีคำย่อใดมาแทนที่คำย่ออื่น ๆ
JWS (RFC 7515) — การลงนามเนื้อหาโดยพลการและการใช้การทำให้เป็นอนุกรมแบบกะทัดรัดที่ JWT ใช้
JWS อธิบายเนื้อหาที่ลงนามหรือ MAC ที่มีการป้องกัน รูปแบบกะทัดรัดมีสามส่วน: ส่วนหัวที่มีการป้องกัน เพย์โหลด และลายเซ็น อินพุตการลงนามใช้สองส่วนที่เข้ารหัสแรกที่เชื่อมต่อกันด้วยจุด โดยทั่วไปแล้ว JWT จะเดินทางในซองนี้ ซึ่งเป็นรูปแบบ ToolAcre แยกและตรวจสอบ
ส่วนหัวและเพย์โหลดอาจถอดรหัสเป็น JSON ในขณะที่ลายเซ็นเป็นไบต์แทนที่จะเป็นวัตถุที่สาม ToolAcre รายงานการมีอยู่และขนาดของลายเซ็น แต่มักจะทำเครื่องหมายว่าไม่ได้รับการยืนยัน ดังนั้นจึงสามารถแสดงโครงสร้าง JWS โดยไม่ต้องอ้างสิทธิ์ผลลัพธ์การเข้ารหัสใดๆ
JWE (RFC 7516) — การเข้ารหัสเนื้อหา โดยมีการทำให้เป็นอนุกรมห้าส่วน
JWE อธิบายเนื้อหาที่เข้ารหัส รูปแบบกะทัดรัดมีห้าส่วนที่แสดงถึงส่วนหัวที่ได้รับการป้องกัน วัสดุคีย์ที่เข้ารหัส ค่าเริ่มต้น ข้อความไซเฟอร์เท็กซ์ และแท็กการตรวจสอบสิทธิ์ จุดสี่จุดจึงเป็นเบาะแสทางโครงสร้างที่แข็งแกร่งที่ตัวถอดรหัส JWT สามส่วนได้รับซองจดหมายที่แตกต่างกัน
ToolAcre ส่งข้อผิดพลาด JWE เฉพาะ และอธิบายว่าเนื้อหาไม่สามารถอ่านได้หากไม่มีคีย์ถอดรหัส จะไม่ถือว่าไซเฟอร์เท็กซ์มีรูปแบบไม่ถูกต้อง JSON หรือพยายามแสดงไบต์แบบสุ่ม การเข้ารหัสและการลงนามยังสามารถประกอบได้ แต่การประมวลผลที่ซ้อนกันอยู่นอกเส้นทางนี้
JWK และ JWA (RFC 7517 และ 7518) — แทนคีย์เป็น JSON และตั้งชื่ออัลกอริทึม
JWK ให้การเป็นตัวแทน JSON สำหรับข้อมูลคีย์การเข้ารหัส ในขณะที่ JWA ตั้งชื่อตัวระบุอัลกอริทึมและพารามิเตอร์ที่เกี่ยวข้องที่ใช้ใน JOSE การมีอยู่ของพวกมันไม่ได้หมายความว่าโทเค็นอาจเลือกคีย์หรืออัลกอริธึมที่เชื่อถือได้ของตัวเอง ผู้ตรวจสอบจะต้องจำกัดทั้งจากผู้ออกและนโยบายการสมัคร
หมายเหตุอัลกอริทึม ToolAcre อธิบายเฉพาะชุดป้ายกำกับจำนวนจำกัดที่มีอยู่ในแหล่งที่มาและเรียกสิ่งอื่นที่ไม่รู้จัก เป็นคำอธิบาย ไม่ใช่การนำไปปฏิบัติ ตัวถอดรหัสจะไม่นำเข้า JWK หรือดำเนินการอัลกอริทึมจาก JWA ซึ่งจะทำให้ขอบเขตการตรวจสอบชัดเจน
JWT (RFC 7519) — รูปแบบการเรียกร้องที่ดำเนินการบน JWS หรือ JWE
JWT กำหนดวัตถุการเรียกร้องและชื่อที่จดทะเบียน เช่น ผู้ออก หัวข้อ ผู้ชม และวันที่ที่เป็นตัวเลข การอ้างสิทธิ์เหล่านั้นสามารถดำเนินการในโครงสร้าง JOSE ที่ลงนามหรือเข้ารหัสแล้ว เลเยอร์เพย์โหลดจึงตอบว่า "ข้อความใดที่แสดง" ในขณะที่ซองจดหมายจะตอบว่าไบต์เหล่านั้นได้รับการป้องกันหรือปกปิดอย่างไร
ToolAcre คาดว่าเพย์โหลดที่ถอดรหัสแล้วจะเป็นออบเจ็กต์ JSON และแสดงรายการการอ้างสิทธิ์ อาร์เรย์ ตัวเลข หรือค่าว่างถูกปฏิเสธสำหรับเครื่องมือนี้ แม้แต่วัตถุที่มีรูปร่างดีก็ยังไม่น่าเชื่อถือจนกว่าซองจดหมายที่เกี่ยวข้องจะได้รับการประมวลผลโดยผู้ตรวจสอบหรือผู้รับที่กำหนดค่าไว้
สิ่งนี้ไม่ครอบคลุม — โปรไฟล์ในภายหลัง เช่น RFC 8725 แนวทางปฏิบัติที่ดีที่สุด และ RFC 9068 โทเค็นการเข้าถึง ซึ่งมีโพสต์ของตัวเอง
เอกสารแนวทางปฏิบัติที่ดีที่สุดและโปรไฟล์ในภายหลังสามารถจำกัดวิธีการใช้กลไกทั่วไปเหล่านี้ให้แคบลงได้ พวกเขาสมควรได้รับการดูแลแยกกัน เนื่องจากรูปแบบพื้นฐานไม่มีนโยบายผู้ออกเฉพาะแอปพลิเคชัน ผู้ชม หรือโทเค็น บทความนี้ไม่ได้อ้างว่าตัวถอดรหัสใช้โปรไฟล์ดังกล่าว
เมื่อตรวจสอบระบบ ให้จดโปรไฟล์ที่ชัดเจน ขอบเขตที่คาดหวัง อัลกอริธึมที่ยอมรับ แหล่งที่มาของคีย์ และกฎการอ้างสิทธิ์ รายการดังกล่าวจะป้องกันไม่ให้ความคุ้นเคยของคำย่อกลายเป็นข้อสันนิษฐานเกี่ยวกับความเข้ากันได้หรือความปลอดภัย
ประเด็นสำคัญ: JWT คือการอ้างสิทธิ์ JWS คือซองจดหมาย — ตัวถอดรหัส ToolAcre JWT อ่านรูปแบบย่อ JWS และแสดงส่วนหัว JWT และการอ้างสิทธิ์ภายใน
JWT ตั้งชื่อเลเยอร์การอ้างสิทธิ์ JWS และ JWE จัดเตรียมซองป้องกัน JWK แสดงถึงข้อมูลสำคัญ JWA ตั้งชื่อตัวเลือกอัลกอริทึม ToolAcre อ่านรูปร่างที่มีลายเซ็นสามส่วนทั่วไป และแสดงส่วนหัวและการอ้างสิทธิ์ในขณะที่ปฏิเสธที่จะตรวจสอบหรือถอดรหัส
ใช้แผนที่นั้นเพื่อถามคำถามถัดไปที่ถูกต้อง JSON ที่อ่านได้ ระบุชั้นการอ้างสิทธิ์ สามหรือห้าส่วนระบุตระกูลซองจดหมายที่เป็นไปได้ ความน่าเชื่อถือยังคงขึ้นอยู่กับการเข้ารหัสและนโยบายที่กำหนดค่าโดยอิสระ ไม่ใช่ขึ้นอยู่กับตัวถอดรหัสที่จดจำตัวย่อ