ฉันพยายามถอดรหัสทราฟฟิก TLS 1.3 บางส่วนด้วยตนเองด้วยเหตุผลด้านการศึกษา และพบสิ่งกีดขวางบนถนน จนถึงตอนนี้ ฉันสามารถดำเนินการตามกำหนดเวลาที่สำคัญเกือบทั้งหมด รวมถึงรับข้อมูลลับการรับส่งข้อมูลที่ถูกต้องของแฮนด์เชคจากคีย์ ECDHE อย่างไรก็ตาม ฉันไม่พบข้อมูลมากนักเกี่ยวกับวิธีจัดรูปแบบข้อความเข้ารหัสและแท็กการตรวจสอบสิทธิ์ภายในข้อความข้อมูลแอปพลิเคชัน
นี่คือบันทึกทั้งหมด
1703030017bf687d10e2f209661418d92aaf3626dfe5670f3127d6ed
และนี่คือความลับของทราฟฟิกการจับมือกันของเซิร์ฟเวอร์:
475a0f3b5a86d4797e24545c2eb6388de9507e5e0bc367c74c3e78e0d8033f34b721a2e3a1d89ec5990287954402fc43
Wireshark บอกฉันว่าการถอดรหัสข้อความนี้จะให้ข้อความธรรมดา 08 00 00 02 00 00
ที่สอดคล้องกับข้อความส่วนขยายที่เข้ารหัส
จากสิ่งที่ฉันสามารถบอกได้ "ข้อมูลที่เชื่อมโยง" ควรเป็นไบต์ 17 03 03 00 17
และส่วนที่เหลือของบันทึกคือ ciphertext + แท็กการพิสูจน์ตัวตนRFC 8446 บอกว่าชุดรหัส TLS_AES_256_GCM_SHA384 ถูกกำหนดไว้ใน RFC 5116 แต่ RFC 5116 บอกว่า:
เอกสารนี้ไม่ได้ระบุการเข้ารหัสเฉพาะใดๆ สำหรับ AEAD
อินพุตและเอาต์พุตเนื่องจากการเข้ารหัสไม่ส่งผลกระทบต่อความปลอดภัย
ให้บริการโดยอัลกอริทึม AEAD
แต่ความพยายามทั้งหมดของฉันในการถอดรหัสข้อมูลล้มเหลวในการตรวจสอบสิทธิ์ ซึ่งทำให้ฉันมีความเป็นไปได้สองประการ:
- ฉันได้รับรหัสจราจรผิด ฉันรู้ว่ารูทีน HKDF-Expand-Label ของฉันทำงานได้เนื่องจากข้อมูลลับอื่นๆ ทั้งหมดได้รับมาอย่างถูกต้องและตรงกับค่าที่ OpenSSL บันทึกไว้ อย่างไรก็ตาม ฉันไม่แน่ใจ 100% ว่าคีย์และความยาว IV ที่ถูกต้องคืออะไร ขณะนี้ฉันใช้คีย์ 32 ไบต์และ 12 ไบต์ IV ฉันไม่รู้ว่านั่นคือสิ่งที่ TLS 1.3 ใช้หรือไม่
- ฉันกำลังอ่านแท็กการรับรองความถูกต้อง/ข้อความเข้ารหัสผิด ฉันไม่สามารถหาข้อมูลอ้างอิงใด ๆ ว่ารูปแบบที่เหมาะสมคืออะไร ดังนั้นความพยายามทั้งหมดของฉันในพื้นที่นี้จึงเป็นเพียงการคาดเดา โดยเฉพาะอย่างยิ่ง ฉันไม่แน่ใจว่าแท็กรับรองความถูกต้องสำหรับชุดการเข้ารหัสนี้มีความยาวเท่าใด แม้ว่า Google จะแนะนำว่าแท็กนี้มีขนาด 12 ไบต์ก็ตาม
ผมทำอะไรผิดหรือเปล่า?