Score:1

ข้อความเสร็จสิ้นไคลเอนต์ TLS 1.2

ธง pk

ฉันกำลังทำงานกับ TLS1.2 ในชุดการเข้ารหัส ECDHE_ECDSA_AES_128_CBC_SHA256 ขณะนี้ฉันอยู่ในขั้นตอนของข้อความเข้ารหัสไคลเอนต์ที่ฉันได้รับข้อผิดพลาดเกี่ยวกับ wireshark จากเซิร์ฟเวอร์โดยแจ้งว่า Fatal, Description: Handshake Failure ดังนั้นจากสิ่งที่ฉันได้ทำการวิจัย ข้อความที่มีสำหรับไคลเอนต์นี้เสร็จสิ้น จะต้องทำตามขั้นตอนเหล่านี้:

  1. ประเภทการจับมือกัน 1 ไบต์ : เสร็จสิ้น = 0x14
  2. data_verify_length 3 ไบต์ = 12
  3. 12 ไบต์ของ Verify_data
  4. 16 ไบต์เหล่านี้จากขั้นตอนที่ 1),2) และ 3) จะถูกส่งผ่าน hmac_sha256 และให้และสร้างแฮชไบต์ 32 ไบต์ ใครช่วยยืนยันอินพุตให้ฉันที 5) 32 ไบต์นำหน้าด้วย 16 ไบต์จากขั้นตอนที่ 1),2) และ 3) และให้ทั้งหมด 48 ไบต์ก่อนเติม
  5. เราเพิ่มความยาวของช่องว่างภายใน 1 ไบต์และช่องว่างภายใน 15 ไบต์ของ 0x0F และให้ทั้งหมด 64 ไบต์
  6. จากนั้น 64 ไบต์จะถูกเข้ารหัสด้วยไคลเอ็นต์ IV และคีย์เข้ารหัสไคลเอ็นต์
  7. 64 ไบต์นำหน้าด้วย 16 ไบต์ของ IV ก่อนส่งไปยังเซิร์ฟเวอร์

ใครช่วยตรวจสอบขั้นตอนทั้งหมดและแก้ไขฉันถ้าฉันผิด เพราะฉันมักจะล้มเหลวในการจับมือ ณ จุดนี้

ขอบคุณล่วงหน้า!

Score:2
ธง cn

ตามที่ระบุไว้ใน คำถามปี 2558 นี้พร้อมคำตอบของฉัน ซึ่งเห็นได้ชัดว่าคุณไม่ได้อ่านแม้ในขณะที่แสดงความคิดเห็นในคำตอบอื่น TLS <=1.2 HMAC คำนวณจาก:

  • เดอะ บันทึก ลำดับ, ชนิด, รุ่น และความยาว: hex 00 00 00 00 00 00 00 00 16 03 03 00 10

  • บวกเสร็จแล้ว ข้อความ ซึ่งคุณมีอย่างถูกต้องเป็นประเภท 1 ไบต์ = 14 ความยาว 3 ไบต์ = 00 00 0C และ 12 ไบต์ 'verify_data'

โดยใช้คีย์ MAC ของไคลเอ็นต์ (จากกระบวนการรับคีย์)

คุณมีส่วนที่ตามมาถูกต้อง: คุณเข้ารหัส CBC เนื้อหาบันทึก (ซึ่งตรงกับข้อความจับมือ) บวก HMAC บวกช่องว่างภายใน (16 คูณ 0F) และต่อท้าย IV 16 ไบต์ที่ใช้ (ซึ่งปกติแล้วควรคาดเดาไม่ได้ สุ่ม) และต่อท้ายด้วย นั่น ส่วนหัวของระเบียนประเภท = 16 รุ่น = 03 03 ความยาว = 00 50

โปรดทราบว่านอกเหนือจากการจัดรูปแบบระเบียน HMACed และเข้ารหัสอย่างถูกต้องแล้ว ใน ข้อความต้องถูกต้อง และ IME คนส่วนใหญ่มีปัญหาในการรับสิทธิ์นั้นมากกว่าการประมวลผลบันทึก

อ้างอิง: RFC5246 6.2.3.1 (และ 6.2.3.2 สำหรับการเข้ารหัส CBC)

pk flag
จำนวนไบต์อินพุตทั้งหมดสำหรับ hmac คือ 29 ไบต์ตามโพสต์ของคุณ: hex 00 00 00 00 00 00 00 00 16 03 03 00 10 + 16 ไบต์ (ประเภท 1 ไบต์ + ความยาว 3 ไบต์ + 12 ไบต์ตรวจสอบข้อมูล) หรือไม่
pk flag
ฉันได้แก้ไขอินพุต hmac ที่สอดคล้องกับโพสต์ของคุณแล้ว แต่ฉันยังคงมีปัญหาการจับมือล้มเหลว เริ่มจากวิธีที่ฉันสร้าง Verify_data : 1) แฮชของข้อความจับมือก่อนหน้าทั้งหมด : SHA256(all_handshake_messages) 2) จากนั้นฉันก็ prf(maseter_secret, "client_finished", SHA256(all_handshake_messages)) สิ่งเหล่านี้สร้าง Verify_data ขนาด 12 ไบต์ จากนั้นฉันเชื่อมข้อมูลในขั้นตอนที่ 3) กับข้อมูลในขั้นตอนที่ 1) และ 2) ในโพสต์แรกของฉัน ฉันทำตามขั้นตอนที่เหลือ อะไรเป็นสาเหตุที่ทำให้ Handshake ล้มเหลว

โพสต์คำตอบ

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