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

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

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

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

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

ที่ไหน

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

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

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

เราเพิ่ม Nonce ของเซสชันไปยังกลุ่มเหตุการณ์ข้อมูลอุปกรณ์:

ชื่อกลุ่มข้อความ ค่า
เหตุการณ์ข้อมูลอุปกรณ์ 0x
ชื่อรหัสข้อความ ค่า
Nonce ของเซสชัน 0x0

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

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

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

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 กลุ่มข้อความ แตกต่างกัน
1 uint8 รหัสข้อความ แตกต่างกัน
2-3 ปี uint16 ความยาวของข้อมูลเพิ่มเติม(ความยาวของข้อมูลเพิ่มเติม + 16) แตกต่างกัน
4 - n ข้อมูลเพิ่มเติม แตกต่างกัน
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 คือข้อมูลเพิ่มเติม (ไม่รวม Message Nonce และ MAC) ของ สตรีมข้อความ

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