ไทย

เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ · ตัวถอดรหัส JWT

JWT เพย์โหลดไม่ได้เข้ารหัส: ใครก็ตามที่มีโทเค็นสามารถอ่านได้

· เหตุใดจึงสำคัญ

jwt ความเป็นส่วนตัว ความปลอดภัย

เพย์โหลด JWT ที่เข้ารหัสจะเปิดขึ้นเป็น JSON ที่อ่านได้
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

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

ดูเหมือนมีการเข้ารหัส — ความเข้าใจผิดที่ทำให้ข้อมูลส่วนบุคคลอยู่ในโทเค็น

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

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

ลงนามแล้ว ไม่ได้ปิดผนึก: JWS ที่ถูกต้องสามารถปกป้องความสมบูรณ์ ไม่ใช่การรักษาความลับของเพย์โหลด

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

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

สิ่งที่ตัวถอดรหัสแสดงให้เห็น - ทุกการอ้างสิทธิ์ในรูปแบบธรรมดา JSON โดยไม่ต้องใช้รหัส

สำหรับส่วนหัวและเพย์โหลด ToolAcre แปล base64url คืนค่าช่องว่างภายใน กู้คืนไบต์เป็น UTF-8 และแยกวิเคราะห์วัตถุ JSON ไม่มีความลับเข้าร่วม ตารางการอ้างสิทธิ์จะแสดงค่าสตริงโดยตรงและค่าที่มีโครงสร้างเป็นข้อความ JSON พร้อมคำอธิบายสำหรับชื่อที่ลงทะเบียน เช่น `sub`, `aud` และ `exp`

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

โทเค็นรั่วไหลที่ไหน — บันทึก, URL, ส่วนหัวผู้อ้างอิง, ประวัติเบราว์เซอร์ และสคริปต์บุคคลที่สาม

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

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

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

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

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

ตัวอย่างการทำงาน — ถอดรหัสโทเค็นตัวอย่างและแสดงรายการสิ่งที่ผู้ยืนดูจะได้เรียนรู้

ถอดรหัสเพย์โหลดสังเคราะห์ที่มี `sub`, `email`, `tenant`, `roles`, `iat` และ `exp` ผู้ยืนดูจะเรียนรู้ชื่อตัวระบุบัญชี ที่อยู่ บริบทขององค์กร สิทธิ์ที่ยืนยัน และเวลาโดยไม่ต้องใช้คีย์ การยืนยันเหล่านั้นเป็นเรื่องจริงหรือไม่นั้นเป็นคำถามที่แตกต่างออกไป ข้อความของพวกเขาถูกเปิดเผยแล้ว

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

โทเค็นขนาดกะทัดรัดที่เข้ารหัสมีห้าส่วน ซึ่งตัวถอดรหัส JWS นี้ระบุแทนที่จะถอดรหัส

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

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

Takeaway: สมมติว่าเพย์โหลดเป็นแบบสาธารณะ — ถอดรหัสหนึ่งในโทเค็นของคุณเองในตัวถอดรหัส ToolAcre JWT และตรวจสอบสิ่งที่เปิดเผย

สมมติว่าเพย์โหลด JWT ธรรมดาสามารถอ่านได้ทุกที่ที่โทเค็นเดินทาง ใช้มุมมองแบบถอดรหัสเท่านั้นของ ToolAcre เพื่อตรวจสอบการเปิดเผยการอ้างสิทธิ์ ไม่ใช่เพื่อพิสูจน์ว่าใครเป็นผู้ออกค่า ลบความลับและฟิลด์ส่วนบุคคลที่ไม่จำเป็นออก แทนที่จะอาศัย base64url เพื่อปิดบัง

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