รหัสการตรวจสอบสิทธิ์ข้อความ

สตรีมข้อความใช้เพื่อกำหนดค่าการเปลี่ยนเสียง โปรดดูข้อความเกี่ยวกับการเปลี่ยนเสียง สำหรับการกำหนดค่าที่สำคัญเหล่านี้ ผู้ให้บริการต้องตรวจสอบว่าข้อความส่งโดย GMSCore (โมดูลการจับคู่ด่วน) ไม่ใช่แอปอื่นๆ ใน Seeker

สร้าง MAC (รหัสการตรวจสอบสิทธิ์ข้อความ)

เครื่องมือหา FP จะเพิ่มรหัสการตรวจสอบสิทธิ์ข้อความสำหรับข้อความการกำหนดค่าอุปกรณ์โดยใช้ HMAC-SHA256 MAC ของข้อความประกอบด้วย 8 ไบต์แรกของสิ่งต่อไปนี้

 sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, message)))))

ที่ไหน

  1. K สร้างขึ้นโดย Concat(คีย์บัญชี, ZERO 48 ไบต์)
  2. message คือข้อมูลเพิ่มเติมของสตรีมข้อความ
  3. nonce สร้างขึ้นโดย Concat(session_nonce, message_nonce); Nonce และ Nonce ของเซสชันจะมีการกำหนดในส่วนต่อไปนี้
  4. opad คือระยะห่างจากขอบด้านนอก 64 ไบต์ซึ่งประกอบด้วยไบต์ซ้ำที่มีค่า 0x5C
  5. ipad คือระยะห่างจากขอบด้านใน 64 ไบต์ซึ่งประกอบด้วยไบต์ซ้ำที่มีค่า 0x36

Nonce ของเซสชันและ Nonce ของข้อความ

ผู้ให้บริการจะต้องตรวจสอบว่าไม่มีการใช้ Nonce ซ้ำ เพื่อป้องกันการโจมตีซ้ำ เนื่องจากการดูแลการซิงค์นาฬิกาหรือตัวนับทั้งในผู้ให้บริการและ Seeker นั้นไม่เป็นไปอย่างสะดวก ผู้ให้บริการจึงสร้าง Nonce (ต่อการเชื่อมต่อ) ของเซสชัน ซึ่งแชร์กับข้อความทั้งหมดระหว่างการเชื่อมต่อ ขณะที่ Seeker จะสร้าง Nonce ของข้อความ (ต่อข้อความ) ซึ่งจะสร้างขึ้นแบบสุ่มสำหรับแต่ละข้อความ ค่า Nonce สำหรับการสร้าง MAC ของแต่ละข้อความจะเป็นค่าผสมของ Nonce เซสชันและ Nonce ของข้อความ กล่าวคือ concat(session_nonce, message_nonce)

เราจะเพิ่ม Nonce ของเซสชันลงในกลุ่มเหตุการณ์ข้อมูลอุปกรณ์ ดังนี้

ชื่อกลุ่มข้อความ ค่า
เหตุการณ์เกี่ยวกับข้อมูลอุปกรณ์ 0x03
ชื่อรหัสข้อความ ค่า
ค่าที่ได้จากการเกิดเซสชัน 0X0 A

คุณควรสร้าง Nonce ของเซสชันและส่งไปยัง Seeker เมื่อ RFCOMM เชื่อมต่อ

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 เหตุการณ์เกี่ยวกับข้อมูลอุปกรณ์ 0x03
1 uint8 ค่าที่ได้จากการเกิดเซสชัน 0X0 A
2 - 3 uint16 ความยาวข้อมูลเพิ่มเติม 0x0008
4 - 11 ค่า Nonce ของเซสชัน หลากหลาย

หากต้องการส่งข้อความเมื่อต้องใช้ MAC ผู้ค้นหาจะส่ง Nonce ของข้อความและ MAC พร้อมกับข้อความ

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 กลุ่มข้อความ หลากหลาย
1 uint8 รหัสข้อความ หลากหลาย
2 - 3 uint16 ความยาวของข้อมูลเพิ่มเติม(ความยาวของข้อมูลเพิ่มเติม + 16) หลากหลาย
4 - น. ข้อมูลเพิ่มเติม หลากหลาย
n + 1 - n + 8 Nonce ของข้อความ หลากหลาย
n + 9 - n + 16 รหัสการตรวจสอบสิทธิ์ข้อความ หลากหลาย

ยืนยัน MAC (รหัสการตรวจสอบสิทธิ์ข้อความ)

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

 sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(section_nonce, message_nonce, message)))))

ที่ไหน:

  1. K สร้างขึ้นโดย concat(account key, 48-byte ZEROs) และผู้ให้บริการจะต้องข้ามผ่านคีย์บัญชีที่จัดเก็บไว้ทั้งหมดเพื่อยืนยัน MAC
  2. message คือข้อมูลเพิ่มเติม (ไม่รวมค่า Nonce ของข้อความและ MAC) ของสตรีมข้อความ

หาก MAC ถูกต้อง ผู้ให้บริการจะต้องทำตามวิธีการของข้อความ มิเช่นนั้น ผู้ให้บริการจะส่ง NAK พร้อมเหตุผลของข้อผิดพลาด 0x3 - ไม่อนุญาตเนื่องจากรหัสการตรวจสอบสิทธิ์ข้อความไม่ถูกต้อง