เดอะ กำหนดการที่สำคัญ ใน TLS 1.3 RFC เริ่มต้นเช่นนี้:
0
|
โวลต์
PSK -> HKDF-Extract = ความลับในช่วงต้น
|
+-----> Derive-Secret(., "ext binder" | "res binder", "")
| =binder_key
|
+-----> Derive-Secret(., "c e traffic", ClientHello)
| = client_early_traffic_secret
|
+-----> ได้รับความลับ(., "e exp master", ClientHello)
| = early_exporter_master_secret
...
ต่อมาในหัวข้อ 7.1RFC จะให้คำแนะนำเกี่ยวกับสิ่งที่จะใช้เป็นค่าทดแทนสำหรับ PSK หากไม่ได้ใช้ Pre-Shared-Key จริง:
หากไม่มีข้อมูลลับที่กำหนด ค่า 0 จะประกอบด้วย a
ใช้สตริงของ Hash.length ไบต์ที่ตั้งค่าเป็นศูนย์ โปรดทราบว่าสิ่งนี้
ไม่ได้หมายถึงการข้ามรอบ ดังนั้นหากไม่ได้ใช้ PSK ให้ใช้ Early Secret
จะยังคงเป็น HKDF-Extract(0, 0)
เดอะ client_early_traffic_secret
และ early_exporter_master_secret
รวมแฮชการถอดเสียงของไคลเอนต์ Hello ซึ่งรวมถึงหมายเลขสุ่มที่ไคลเอนต์สร้างขึ้น ดังนั้นคีย์ทั้งสองนี้จะแตกต่างกันไปในแต่ละเซสชัน SSL
อย่างไรก็ตาม binder_key
ไม่รวมแฮชการถอดเสียง ซึ่งหมายความว่า (โดยการตีความของฉัน)ค่าเดียวที่ป้อนเข้าสู่ binder_key
เป็นความลับทั้งคู่ ที่ทุกคนรู้จัก และ ไม่เคยเปลี่ยน (0 เป็นค่าเริ่มต้น, 000...0 เป็นค่าแทน PSK และป้ายค่าคงที่ เครื่องผูกภายนอก
หรือ res เครื่องผูก
).
ฉันตีความถูกต้องหรือไม่? ถ้าเป็นเช่นนั้น นี่จะไม่ลดความปลอดภัยที่หนึ่งในคีย์ลับเอาต์พุตของกำหนดการคีย์จะไม่เปลี่ยนแปลงได้อย่างไร