คีย์เซสชันมีค่าเท่ากันทั้งสองด้านระหว่าง TLS หรือไม่

Aug 15 2020

ฉันมีคำถามสองข้อเกี่ยวกับคีย์เซสชันที่สร้างขึ้นในขั้นตอนสุดท้ายของเฟส Handshake:

  1. "คีย์การเขียนไคลเอ็นต์" และ "คีย์การเขียนเซิร์ฟเวอร์" มีค่าเท่ากันหรือไม่แม้ว่าคีย์ทั้งสองจะสร้างขึ้นอย่างอิสระทั้งสองด้าน

  2. (คำถามเดียวกัน) "ไคลเอนต์เขียนคีย์ MAC" และ "เซิร์ฟเวอร์เขียนคีย์ MAC" มีค่าเดียวกันหรือไม่?

คำถามทั่วไป: ไคลเอนต์และเซิร์ฟเวอร์ได้ผลลัพธ์เดียวกันในขณะที่สร้างคีย์เซสชันหรือไม่?

คำตอบ

5 MaartenBodewes Aug 15 2020 at 21:49

"คีย์การเขียนไคลเอ็นต์" และ "คีย์การเขียนเซิร์ฟเวอร์" มีค่าเท่ากันหรือไม่แม้ว่าคีย์ทั้งสองจะสร้างขึ้นอย่างอิสระทั้งสองด้าน

ไม่ดูคำตอบถัดไป

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

(คำถามเดียวกัน) "ไคลเอนต์เขียนคีย์ MAC" และ "เซิร์ฟเวอร์เขียนคีย์ MAC" มีค่าเดียวกันหรือไม่?

ไม่พวกเขามีความแตกต่างกันโดยเจตนาดังนั้นคุณจึงไม่สามารถให้ผู้ส่งมีข้อความของตัวเองถูกเล่นซ้ำกลับไปหาพวกเขาได้ โดยทั่วไป KDF (PRF ในสำนวน TLS 1.2) ใช้ป้ายกำกับที่แตกต่างกันสำหรับแต่ละคีย์ซึ่งหมายความว่าแต่ละคีย์ที่ได้รับจะขึ้นอยู่กับคีย์หลักเท่านั้น (โดยใช้ฟังก์ชันทางเดียว)

คำถามทั่วไป: ไคลเอนต์และเซิร์ฟเวอร์ได้ผลลัพธ์เดียวกันในขณะที่สร้างคีย์เซสชันหรือไม่?

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