ข้อมูลจำเพาะของอุปกรณ์เสริมเครือข่ายแอปหาอุปกรณ์ของฉัน

v1.3

ข้อมูลจำเพาะของอุปกรณ์เสริมแอปหาอุปกรณ์ของฉัน (FMDN) จะกำหนดวิธีการเข้ารหัสจากต้นทางถึงปลายทางในการติดตามบีคอนของบลูทูธพลังงานต่ำ (BLE) หน้านี้จะอธิบายว่า FMDN เป็นส่วนขยายของข้อกำหนดการจับคู่ด่วน ผู้ให้บริการควรเปิดใช้ส่วนขยายนี้หากมีอุปกรณ์ที่เข้ากันได้กับ FMDN และยินดีที่จะเปิดใช้การติดตามตำแหน่งสำหรับอุปกรณ์เหล่านั้น

ข้อกำหนด GATT

ควรเพิ่มลักษณะเฉพาะทั่วไป (GATT) เพิ่มเติมลงในบริการจับคู่ด่วนด้วยความหมายต่อไปนี้

ลักษณะเฉพาะของบริการจับคู่ด่วน มีการเข้ารหัส สิทธิ์ UUID
การทำงานของบีคอน ไม่ได้ อ่าน เขียน และแจ้งเตือน FE2C1238-8366-4814-8EB0-01DE32100BEA

ตารางที่ 1: ลักษณะของบริการจับคู่ด่วนสำหรับ FMDN

การตรวจสอบสิทธิ์

การดำเนินการที่จำเป็นสำหรับส่วนขยายนี้เป็นการดำเนินการเขียน ซึ่งรักษาความปลอดภัยด้วยกลไกการตอบคำถาม ก่อนที่จะดำเนินการใดๆ Seeker ควรดำเนินการอ่านจากลักษณะเฉพาะในตาราง 1 ซึ่งทำให้เกิดบัฟเฟอร์ในรูปแบบต่อไปนี้

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 หมายเลขเวอร์ชันหลักของโปรโตคอล 0x01
1-8 ปี อาร์เรย์ไบต์ ค่าที่ได้จากการสุ่มแบบสุ่มแบบครั้งเดียว หลากหลาย

การดำเนินการอ่านแต่ละรายการควรแสดงผลลัพธ์ Nonce ที่ต่างกัน และ Nonce ค่าเดี่ยวควรใช้ได้สำหรับการดำเนินการเดียวเท่านั้น Nonce จะต้องไม่ถูกต้อง แม้ว่าการดำเนินการจะล้มเหลว

จากนั้น Seeker จะคำนวณคีย์การตรวจสอบสิทธิ์แบบใช้ครั้งเดียวที่จะใช้ในคำขอการเขียนที่ตามมา คีย์การตรวจสอบสิทธิ์จะคำนวณตามที่อธิบายไว้ในตารางที่ 2 ถึง 5 ผู้ค้นหาจะพิสูจน์ความรู้เกี่ยวกับคีย์ต่อไปนี้อย่างน้อย 1 รายการ ทั้งนี้ขึ้นอยู่กับการดำเนินการที่ขอ

การทำงาน

รูปแบบของข้อมูลที่เขียนตามลักษณะเฉพาะดูได้จากตาราง 2 ถึง 5 เราจะอธิบายการดำเนินการแต่ละอย่างอย่างละเอียดในภายหลังของส่วนนี้

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 รหัสข้อมูล
  • 0x00: อ่านพารามิเตอร์บีคอน
  • 0x01: อ่านสถานะการจัดสรร
  • 0x02: ตั้งค่าคีย์ข้อมูลประจำตัวชั่วคราว
  • 0x03: ล้างคีย์ข้อมูลประจำตัวชั่วคราว
1 uint8 ความยาวของข้อมูล หลากหลาย
2-9 คน อาร์เรย์ไบต์ คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว 8 ไบต์แรกของ HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data)
10 - ตัวแปร อาร์เรย์ไบต์ ข้อมูลเพิ่มเติม
  • 0x00: ไม่มี
  • 0x01: ไม่มี
  • 0x02: 32 ไบต์ที่เป็นคีย์ข้อมูลประจำตัวชั่วคราว ซึ่งเข้ารหัส AES-ECB-128 ด้วยคีย์บัญชี หากผู้ให้บริการมีชุดคีย์ข้อมูลประจำตัวชั่วคราวอยู่แล้ว ให้ส่ง 8 ไบต์แรกของ SHA256(current ephemeral identity key || the last nonce read from the characteristic) ด้วย
  • 0x03: 8 ไบต์แรกของ SHA256(ephemeral identity key || the last nonce read from the characteristic)

ตารางที่ 2: คำขอจัดสรรบีคอน

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 รหัสข้อมูล 0x04: อ่านคีย์ข้อมูลประจำตัวชั่วคราวเมื่อได้รับความยินยอมจากผู้ใช้
1 uint8 ความยาวของข้อมูล 0x08
2-9 คน อาร์เรย์ไบต์ คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว 8 ไบต์แรกของ HMAC-SHA256(recovery key, protocol major version number || the last nonce read from the characteristic || data ID || data length)

ตารางที่ 3: คำขอกู้คืนคีย์การจัดสรรบีคอน

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 รหัสข้อมูล
  • 0x05: แหวน
  • 0x06: อ่านสถานะเสียงเรียกเข้า
1 uint8 ความยาวของข้อมูล หลากหลาย
2-9 คน อาร์เรย์ไบต์ คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว 8 ไบต์แรกของ HMAC-SHA256(ring key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data)
10 - ตัวแปร อาร์เรย์ไบต์ ข้อมูลเพิ่มเติม
  • 0x05: 4 ไบต์ที่แสดงสถานะเสียงเรียกเข้า ระยะเวลาการส่งเสียง และระดับเสียงเสียงเรียกเข้า
  • 0x06: ไม่มี

ตารางที่ 4: ส่งคำขอส่งเสียง

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 รหัสข้อมูล
  • 0x07: เปิดใช้งานโหมดป้องกันการติดตามที่ไม่พึงประสงค์
  • 0x08: ปิดใช้งานโหมดป้องกันการติดตามที่ไม่พึงประสงค์
1 uint8 ความยาวของข้อมูล หลากหลาย
2-9 คน อาร์เรย์ไบต์ คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว 8 ไบต์แรกของ HMAC-SHA256(unwanted tracking protection key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data)
10 - ตัวแปร อาร์เรย์ไบต์ ข้อมูลเพิ่มเติม
  • 0x07: แฟล็กการควบคุม 1 ไบต์ (ไม่บังคับ)
  • 0x08: 8 ไบต์แรกของ SHA256(ephemeral identity key || the last nonce read from the characteristic)

ตารางที่ 5: คำขอป้องกันการติดตามที่ไม่พึงประสงค์

การเขียนที่สําเร็จจะทริกเกอร์การแจ้งเตือนตามที่แสดงในตาราง 6

ควรส่งการแจ้งเตือนที่มีรหัสข้อมูลอื่นที่ไม่ใช่ 0x05: การเปลี่ยนสถานะเสียงเรียกเข้าก่อนที่ธุรกรรมการเขียนที่ทริกเกอร์การแจ้งเตือนจะเสร็จสมบูรณ์ ซึ่งก็คือก่อนที่ระบบจะส่ง PDU การตอบกลับสำหรับคำขอการเขียน

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 รหัสข้อมูล
  • 0x00: อ่านพารามิเตอร์บีคอน
  • 0x01: อ่านสถานะการจัดสรร
  • 0x02: ตั้งค่าคีย์ข้อมูลประจำตัวชั่วคราว
  • 0x03: ล้างคีย์ข้อมูลประจำตัวชั่วคราว
  • 0x04: อ่านคีย์ข้อมูลประจำตัวชั่วคราวเมื่อได้รับความยินยอมจากผู้ใช้
  • 0x05: การเปลี่ยนสถานะเสียงเรียกเข้า
  • 0x06: อ่านสถานะเสียงเรียกเข้า
  • 0x07: เปิดใช้งานโหมดป้องกันการติดตามที่ไม่พึงประสงค์
  • 0x08: ปิดใช้งานโหมดป้องกันการติดตามที่ไม่พึงประสงค์
1 uint8 ความยาวของข้อมูล หลากหลาย
2-9 คน อาร์เรย์ไบต์ การตรวจสอบสิทธิ์ รายละเอียดต่อการดำเนินการ
10 - ตัวแปร อาร์เรย์ไบต์ ข้อมูลเพิ่มเติม
  • 0x00: 8 ไบต์ที่แสดงถึงกำลังส่ง ค่านาฬิกา วิธีการเข้ารหัส และความสามารถในเสียงเรียกเข้า มีการเข้ารหัส AES-ECB-128 ด้วยคีย์บัญชี (เบาะเสริมเป็นศูนย์)
  • 0x01: 1 ไบต์ที่ระบุสถานะการจัดสรร ตามด้วยรหัสชั่วคราวปัจจุบัน (20 หรือ 32 ไบต์) หากมี
  • 0x04: 32 ไบต์ที่เป็นคีย์ข้อมูลประจำตัวชั่วคราว ซึ่งเข้ารหัส AES-ECB-128 ด้วยคีย์บัญชี
  • 0x05: 4 ไบต์ที่ระบุสถานะใหม่และทริกเกอร์ให้มีการเปลี่ยนแปลง
  • 0x06: 3 ไบต์ซึ่งระบุคอมโพเนนต์ที่กำลังส่งเสียงอยู่และจำนวน มิลลิวินาทีที่เหลือสำหรับการส่งเสียง
  • รหัสข้อมูลอื่นๆ จะใช้ข้อมูลเพิ่มเติมที่ว่างเปล่า

ตารางที่ 6: การตอบสนองของบริการบีคอน

ตารางที่ 7 แสดงรหัสข้อผิดพลาด GATT ที่อาจแสดงขึ้นจากการดําเนินการ

รหัส คำอธิบาย Notes
0x80 ไม่ได้ตรวจสอบสิทธิ์ แสดงผลตอบกลับคำขอการเขียนเมื่อการตรวจสอบสิทธิ์ไม่สำเร็จ (รวมถึงกรณีที่มีการใช้ Nonce เก่า)
0x81 ค่าไม่ถูกต้อง แสดงผลเมื่อมีการระบุค่าที่ไม่ถูกต้องหรือข้อมูลที่ได้รับมีจำนวนไบต์ที่ไม่คาดคิด
0x82 ไม่มีความยินยอมของผู้ใช้ แสดงผลตามคำขอการเขียนที่มีรหัสข้อมูล 0x04: อ่านคีย์ข้อมูลประจำตัวชั่วคราวเมื่อได้รับความยินยอมจากผู้ใช้เมื่ออุปกรณ์ไม่ได้อยู่ในโหมดการจับคู่

ตารางที่ 7: รหัสข้อผิดพลาด GATT

อ่านพารามิเตอร์ของบีคอน

Seeker สามารถค้นหาพารามิเตอร์ของบีคอนจากผู้ให้บริการด้วยการดำเนินการเขียนไปยังลักษณะที่ประกอบด้วยคำขอจากตารางที่ 2 ที่มีรหัสข้อมูล 0x00 ผู้ให้บริการยืนยันว่าคีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์บัญชีที่จัดเก็บอยู่ในอุปกรณ์

หากยืนยันไม่สำเร็จ ผู้ให้บริการจะแสดงข้อผิดพลาดที่ไม่ได้ตรวจสอบสิทธิ์

เมื่อประสบความสำเร็จ ผู้ให้บริการจะแจ้งคำตอบจากตารางที่ 6 ด้วยรหัสข้อมูล 0x00 ผู้ให้บริการสร้างกลุ่มเป้าหมายตามข้อมูลดังนี้

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 กำลังปรับเทียบ กำลังปรับเทียบตามที่ได้รับที่ 0m (ค่าในช่วง [-100, 20]) แสดงเป็นจำนวนเต็มที่มีความละเอียด 1 dBm
1 - 4 uint32 ค่านาฬิกา ค่านาฬิกาปัจจุบันเป็นวินาที (big endian)
5 uint8 การเลือกเส้นโค้ง เส้นโค้งรูปวงรีที่ใช้สำหรับการเข้ารหัส
  • 0x00 (ค่าเริ่มต้น): SECP160R1
  • 0x01: SECP256R1 (ต้องมีการโฆษณาเพิ่มเติม)
6 uint8 คอมโพเนนต์ จำนวนคอมโพเนนต์ที่ส่งเสียงได้มีดังนี้
  • 0x00: บ่งบอกว่าอุปกรณ์ส่งเสียงไม่ได้
  • 0x01: บ่งบอกว่ามีเพียงคอมโพเนนต์เดียวที่สามารถส่งเสียงได้
  • 0x02: บ่งบอกว่าอุปกรณ์ 2 อย่างคือหูฟังเอียร์บัดข้างซ้ายและขวาส่งเสียงแยกกันได้
  • 0x03: ระบุว่าอุปกรณ์ 3 อย่าง ได้แก่ หูฟังข้างซ้ายและขวาและเคสสามารถส่งเสียงได้อย่างอิสระ
7 uint8 ความสามารถในการส่งเสียง ตัวเลือกที่รองรับมีดังนี้
  • 0x00: ไม่สามารถเลือกระดับเสียงเรียกเข้า
  • 0x01: มีการเลือกระดับเสียงเรียกเข้า หากตั้งค่าไว้ ผู้ให้บริการต้องยอมรับและจัดการระดับเสียง 3 ระดับตามที่ระบุไว้ในการใช้เสียงเรียกเข้า
8-15 อาร์เรย์ไบต์ ระยะห่างจากขอบ ไม่มีระยะห่างจากขอบสำหรับการเข้ารหัส AES

ข้อมูลควรเข้ารหัส AES-ECB-128 ด้วยคีย์บัญชีที่ใช้สำหรับตรวจสอบสิทธิ์คำขอ

กลุ่มการตรวจสอบสิทธิ์หมายถึง 8 ไบต์แรกของ HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data after encryption || 0x01)

อ่านสถานะการจัดสรรบีคอน

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

หากยืนยันไม่สำเร็จ ผู้ให้บริการจะแสดงข้อผิดพลาดที่ไม่ได้ตรวจสอบสิทธิ์

เมื่อประสบความสำเร็จ ผู้ให้บริการจะแจ้งคำตอบจากตารางที่ 6 ด้วยรหัสข้อมูล 0x01 ผู้ให้บริการสร้างกลุ่มเป้าหมายตามข้อมูลดังนี้

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 สถานะการจัดสรร บิตมาสก์ที่มีค่าต่อไปนี้
  • บิต 1 (0x01): ตั้งค่าว่ามีการตั้งค่าคีย์ข้อมูลประจำตัวชั่วคราวสำหรับอุปกรณ์หรือไม่
  • Bit 2 (0x02): ตั้งค่าว่าคีย์การตรวจสอบสิทธิ์แบบใช้ครั้งเดียวที่ระบุตรงกับคีย์บัญชีเจ้าของหรือไม่
1-20 หรือ 32 อาร์เรย์ไบต์ ตัวระบุชั่วคราวในปัจจุบัน 20 หรือ 32 ไบต์ (ขึ้นอยู่กับวิธีการเข้ารหัสที่ใช้) ซึ่งระบุรหัสชั่วคราวปัจจุบันที่บีคอนโฆษณาไว้ หากมีการตั้งค่าไว้สำหรับอุปกรณ์

กลุ่มการตรวจสอบสิทธิ์หมายถึง 8 ไบต์แรกของ HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data || 0x01)

ตั้งค่าคีย์ข้อมูลประจำตัวชั่วคราว

หากต้องการจัดสรรผู้ให้บริการที่ไม่ได้จัดสรรให้เป็นบีคอน FMDN หรือเปลี่ยนคีย์ข้อมูลประจำตัวชั่วคราวของผู้ให้บริการที่จัดสรรแล้ว ผู้ค้นหาจะดำเนินการเขียนตามลักษณะที่ประกอบด้วยคำขอจากตาราง 2 ที่มีรหัสข้อมูล 0x02 ผู้ให้บริการจะตรวจสอบว่า

  • คีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์บัญชีเจ้าของ
  • หากมีการระบุแฮชของคีย์ข้อมูลประจำตัวชั่วคราว คีย์ข้อมูลประจำตัวชั่วคราวที่แฮชจะตรงกับคีย์ข้อมูลประจำตัวชั่วคราวปัจจุบัน
  • หากไม่ได้ระบุแฮชของคีย์ข้อมูลประจำตัวชั่วคราว ให้ตรวจสอบว่าผู้ให้บริการยังไม่ได้จัดสรรเป็นบีคอน FMDN

หากยืนยันไม่สำเร็จ ผู้ให้บริการจะแสดงข้อผิดพลาดที่ไม่ได้ตรวจสอบสิทธิ์

เมื่อสำเร็จ ระบบจะกู้คืนคีย์ข้อมูลประจำตัวชั่วคราวโดย AES-ECB-128 เพื่อถอดรหัสโดยใช้คีย์บัญชีที่ตรงกัน คุณควรมีคีย์ดังกล่าวอยู่ในอุปกรณ์และจากจุดนั้นของผู้ให้บริการควรเริ่มโฆษณาเฟรม FMDN คีย์ข้อมูลประจำตัวชั่วคราวใหม่จะมีผลทันทีหลังจากที่การเชื่อมต่อ BLE สิ้นสุดลง ผู้ให้บริการจะแจ้งให้ทราบด้วยการตอบกลับจากตาราง 6 ที่มีรหัสข้อมูล 0x02

กลุ่มการตรวจสอบสิทธิ์หมายถึง 8 ไบต์แรกของ HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || 0x01)

ล้างคีย์ข้อมูลประจำตัวชั่วคราว

หากต้องการยกเลิกการจัดสรรส่วนบีคอนของผู้ให้บริการ ผู้ค้นหาจะดำเนินการเขียนตามลักษณะเฉพาะ ซึ่งประกอบด้วยคำขอจากตารางที่ 2 ที่มีรหัสข้อมูล 0x03 ผู้ให้บริการจะตรวจสอบว่า

  • คีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์บัญชีเจ้าของ
  • คีย์ข้อมูลประจำตัวชั่วคราวที่แฮชตรงกับคีย์ข้อมูลประจำตัวชั่วคราวปัจจุบัน

หากไม่ได้จัดสรรผู้ให้บริการเป็นบีคอน FMDN หรือการยืนยันล้มเหลว ระบบจะแสดงผลข้อผิดพลาดที่ไม่ได้ตรวจสอบสิทธิ์

เมื่อประสบความสำเร็จ ผู้ให้บริการจะลืมคีย์และหยุดโฆษณาเฟรม FMDN ผู้ให้บริการจะแจ้งคำตอบจากตารางที่ 6 ด้วยรหัสข้อมูล 0x03 กลุ่มการตรวจสอบสิทธิ์หมายถึง 8 ไบต์แรกของ HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || 0x01)

อ่านคีย์ข้อมูลประจำตัวชั่วคราวเมื่อได้รับความยินยอมจากผู้ใช้

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

โดย Seeker ต้องจัดเก็บคีย์การกู้คืนไว้ในแบ็กเอนด์เพื่อให้กู้คืนคีย์ข้อความล้างได้ แต่คีย์ดังกล่าวไม่ได้จัดเก็บ EIK ไว้

หากต้องการอ่าน EIK นั้น Seeker จะดำเนินการเขียนตามลักษณะเฉพาะ ซึ่งประกอบด้วยคำขอจากตารางที่ 3 ที่มีรหัสข้อมูล 0x04 ผู้ให้บริการจะตรวจสอบว่า

  • คีย์การกู้คืนที่แฮชตรงกับคีย์การกู้คืนที่คาดไว้
  • อุปกรณ์อยู่ในโหมดการกู้คืน EIK

หากยืนยันไม่สำเร็จ ผู้ให้บริการจะแสดงข้อผิดพลาดที่ไม่ได้ตรวจสอบสิทธิ์

หากอุปกรณ์ไม่ได้อยู่ในโหมดการจับคู่ ผู้ให้บริการจะแสดงข้อผิดพลาด "ไม่ได้รับความยินยอมจากผู้ใช้"

เมื่อประสบความสำเร็จ ผู้ให้บริการจะแจ้งคำตอบจากตารางที่ 6 ด้วยรหัสข้อมูล 0x04

กลุ่มการตรวจสอบสิทธิ์หมายถึง 8 ไบต์แรกของ HMAC-SHA256(recovery key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data || 0x01)

การดำเนินการส่งเสียง

Seeker สามารถขอให้ผู้ให้บริการเล่นเสียงโดยดำเนินการเขียนไปยังลักษณะเฉพาะ ซึ่งประกอบด้วยคำขอจากตารางที่ 4 ที่มีรหัสข้อมูล 0x05 ผู้ให้บริการสร้างกลุ่มเป้าหมายตามข้อมูลดังนี้

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 การดำเนินการส่งเสียง บิตมาสก์ที่มีค่าต่อไปนี้
  • บิต 1 (0x01): ทำให้ส่งเสียงไปทางขวา
  • บิต 2 (0x02): วงแหวนทางซ้าย
  • บิต 3 (0x04): ตัวเรือนแหวน
  • 0xFF: เรียกคอมโพเนนต์ทั้งหมด
  • 0x00: หยุดส่งเสียง
1 - 2 uint16 หมดเวลา ระยะหมดเวลาในหน่วยเดซิวินาที ต้องไม่เป็น 0 และ ต้องไม่เกิน 10 นาที
ผู้ให้บริการจะใช้ค่านี้เพื่อกำหนดว่าควรส่งเสียงนานเพียงใดก่อนที่จะปิดเสียงตัวเอง ระยะหมดเวลาจะลบล้างระยะหมดเวลาที่มีผลอยู่ หากคอมโพเนนต์ของอุปกรณ์ส่งเสียงแล้ว

หากตั้งค่าการดำเนินการส่งเสียงเป็น 0x00 ระบบจะไม่สนใจระยะหมดเวลา
3 uint8 ระดับเสียง
  • 0x00: ค่าเริ่มต้น
  • 0x01: ต่ำ
  • 0x02: ปานกลาง
  • 0x03: สูง
ความหมายที่แท้จริงของค่าเหล่านี้ขึ้นอยู่กับการใช้งาน

เมื่อได้รับคำขอ ผู้ให้บริการจะยืนยันว่า

  • คีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์ริง
  • สถานะที่ขอจะตรงกับคอมโพเนนต์ที่ส่งเสียงได้

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

เมื่อเสียงเรียกเข้าเริ่มขึ้นหรือสิ้นสุด ระบบจะส่งการแจ้งเตือนตามที่ระบุไว้ในตาราง 6 ที่มีรหัสข้อมูล 0x05 เนื้อหาของการแจ้งเตือนมีคำจำกัดความดังต่อไปนี้

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 สถานะเสียงเรียกเข้า
  • 0x00: เริ่มต้นแล้ว
  • 0x01: เริ่มต้นหรือหยุดไม่สำเร็จ (คอมโพเนนต์ที่ขอทั้งหมดอยู่นอกช่วง)
  • 0x02: หยุด (หมดเวลา)
  • 0x03: หยุด (กดปุ่ม)
  • 0x04: หยุด (คำขอ GATT)
1 uint8 องค์ประกอบการสร้างเสียงเรียกเข้า บิตมาสก์ของคอมโพเนนต์ที่ส่งเสียงอยู่ตามที่ระบุไว้ในคำขอ
2 - 3 uint16 หมดเวลา เวลาที่เหลือสำหรับการส่งเสียงในหน่วยเดซิวินาที หากอุปกรณ์หยุดส่งเสียงแล้ว ควรแสดงผล 0x0000

กลุ่มการตรวจสอบสิทธิ์หมายถึง 8 ไบต์แรกของ HMAC-SHA256(ring key, protocol major version number || the nonce used to initiate the ringing command || data ID || data length || additional data || 0x01)

หากอุปกรณ์อยู่ในสถานะส่งเสียงที่ขออยู่แล้วเมื่อได้รับคำขอให้ส่งเสียงหรือหยุดการส่งเสียง ผู้ให้บริการควรส่งการแจ้งเตือนที่มีสถานะส่งเสียงหรือ 0x00: เริ่มต้น หรือ 0x04: หยุด (คำขอ GATT) ตามลำดับ คำขอนี้จะลบล้างพารามิเตอร์ของสถานะที่มีอยู่ เพื่อขยายระยะเวลาการส่งเสียงเรียกเข้า

หากผู้ให้บริการมีปุ่มบนตัวอุปกรณ์ (หรือเปิดใช้การรับรู้การสัมผัสอยู่) ปุ่มนั้นควรหยุดฟังก์ชันการส่งเสียงหากกดไว้ในขณะที่ยังมีเสียงเรียกเข้าอยู่

ดูสถานะเสียงเรียกเข้าของบีคอน

หากต้องการดูสถานะเสียงเรียกเข้าของบีคอน ตัวค้นหาจะดำเนินการเขียนตามลักษณะเฉพาะ ซึ่งประกอบด้วยคำขอจากตารางที่ 4 ที่มีรหัสข้อมูล 0x06 ผู้ให้บริการจะยืนยันว่าคีย์การตรวจสอบสิทธิ์แบบใช้ครั้งเดียวที่ระบุตรงกับคีย์ริง

หากไม่ได้จัดสรรผู้ให้บริการเป็นบีคอน FMDN หรือหากการยืนยันล้มเหลว ผู้ให้บริการจะแสดงข้อผิดพลาดที่ไม่ได้ตรวจสอบสิทธิ์

เมื่อประสบความสำเร็จ ผู้ให้บริการจะแจ้งคำตอบจากตารางที่ 6 ด้วยรหัสข้อมูล 0x06 ผู้ให้บริการสร้างกลุ่มเป้าหมายตามข้อมูลดังนี้

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 องค์ประกอบการสร้างเสียงเรียกเข้า คอมโพเนนต์ที่ดังอยู่กำลังส่งเสียงตามที่กำหนดไว้ในคำขอที่ส่งเสียง
1 - 2 uint16 หมดเวลา เวลาที่เหลือสำหรับการส่งเสียงในหน่วยเดซิวินาที โปรดทราบว่าหากอุปกรณ์ไม่ส่งเสียง ควรแสดงผลเป็น 0x0000

กลุ่มการตรวจสอบสิทธิ์หมายถึง 8 ไบต์แรกของ HMAC-SHA256 (ring key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data || 0x01)

โหมดป้องกันการติดตามที่ไม่พึงประสงค์

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

ในการเปิดหรือปิดใช้งานโหมดป้องกันการติดตามที่ไม่พึงประสงค์ของบีคอน ผู้ค้นหาจะดำเนินการเขียนไปยังลักษณะเฉพาะ ซึ่งประกอบด้วยคำขอจากตาราง 5 ที่มีรหัสข้อมูล 0x07 หรือ 0x08 ตามลำดับ

เมื่อเปิดใช้โหมดป้องกันการติดตามที่ไม่พึงประสงค์

ผู้ให้บริการสร้างกลุ่มเป้าหมายตามข้อมูลดังนี้

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 แฟล็กควบคุม
  • 0x01: ข้ามการตรวจสอบสิทธิ์ด้วยเสียงเรียกเข้า เมื่อตั้งค่าแล้ว คำขอที่ส่งเสียงจะไม่ผ่านการตรวจสอบสิทธิ์ขณะที่อยู่ในโหมดการป้องกันการติดตามที่ไม่พึงประสงค์
หากไม่มีการตั้งค่าแฟล็ก (ไบต์เป็นเลข 0 ทั้งหมด) คุณจะยกเว้นส่วนข้อมูลทั้งหมดและส่งส่วนข้อมูลที่ว่างเปล่าได้
การแจ้งว่าไม่เหมาะสมจะมีผลจนกว่าจะมีการปิดใช้งานโหมดป้องกันการติดตามที่ไม่พึงประสงค์

ผู้ให้บริการยืนยันว่าคีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์การป้องกันการติดตามที่ไม่พึงประสงค์ หากไม่ได้จัดสรรผู้ให้บริการเป็นบีคอน FMDN หรือการยืนยันล้มเหลว ระบบจะแสดงข้อผิดพลาดที่ไม่ได้ตรวจสอบสิทธิ์

เมื่อเปิดใช้โหมดป้องกันการติดตามที่ไม่พึงประสงค์ บีคอนควรลดความถี่ในการหมุนที่อยู่ส่วนตัวของ MAC เป็น 1 ครั้งต่อ 24 ชั่วโมง ตัวระบุชั่วคราวที่โฆษณาควรหมุนเวียนต่อไปตามปกติ ควรตั้งค่าประเภทเฟรมเป็น 0x41 สถานะดังกล่าวจะแสดงอยู่ในส่วนการแจ้งที่แฮชด้วย

เมื่อปิดใช้โหมดป้องกันการติดตามที่ไม่พึงประสงค์

ผู้ให้บริการจะตรวจสอบว่า

  • คีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์การป้องกันการติดตามที่ไม่พึงประสงค์
  • คีย์ข้อมูลประจำตัวชั่วคราวที่แฮชตรงกับคีย์ข้อมูลประจำตัวชั่วคราวปัจจุบัน

หากไม่มีการจัดสรรผู้ให้บริการเป็นบีคอน FMDN หรือการยืนยันล้มเหลว ผู้ให้บริการจะแสดงข้อผิดพลาดที่ไม่ได้ตรวจสอบสิทธิ์

เมื่อปิดใช้งานโหมดป้องกันการติดตามที่ไม่พึงประสงค์ บีคอนควรเริ่มหมุนที่อยู่ MAC ในอัตราปกติอีกครั้ง โดยซิงค์กับการหมุนตัวระบุชั่วคราว ควรตั้งค่าประเภทเฟรมกลับไปเป็น 0x40 สถานะดังกล่าวจะอยู่ในส่วนแฟล็กที่แฮชด้วย

เมื่อประสบความสำเร็จ ผู้ให้บริการจะแจ้งคำตอบจากตารางที่ 6 ที่มีรหัสข้อมูล 0x07 หรือ 0x08

กลุ่มการตรวจสอบสิทธิ์หมายถึง 8 ไบต์แรกของ HMAC-SHA256(unwanted tracking protection key, protocol major version number || the last nonce read from the characteristic || data ID || data length || 0x01)

เฟรมที่โฆษณา

หลังจากการจัดสรร ผู้ให้บริการควรโฆษณาเฟรม FMDN อย่างน้อย 1 ครั้งทุก 2 วินาที หากมีการโฆษณาเฟรมการจับคู่ด่วน ผู้ให้บริการควรแทรกเฟรม FMDN ไว้ในโฆษณาการจับคู่ด่วนปกติ ตัวอย่างเช่น ทุก 2 วินาที ผู้ให้บริการควรโฆษณาการจับคู่ด่วน 7 รายการและโฆษณา FMDN 1 รายการ

เฟรม FMDN จะมีคีย์สาธารณะที่ใช้ในการเข้ารหัสการรายงานตำแหน่งโดยไคลเอ็นต์ที่สนับสนุนซึ่งก่อให้เกิดเครือข่ายการรวบรวมข้อมูลจากมวลชน คีย์แบบ Elliptic Curve ที่มีให้เลือก 2 ประเภท ได้แก่ คีย์ 160 บิตที่พอดีกับเฟรม BLE 4 รุ่นเดิม หรือคีย์ 256 บิตที่ต้องใช้ BLE 5 ที่มีความสามารถในการโฆษณาเพิ่มเติม การใช้งานของผู้ให้บริการจะเป็นตัวกำหนดเส้นโค้งที่จะใช้

เฟรม FMDN มีโครงสร้างดังต่อไปนี้

อ็อกเท็ต ค่า คำอธิบาย
0 0x02 ความยาว
1 0x01 ค่าประเภทข้อมูลแฟล็ก
2 0x06 ข้อมูลการแจ้งว่าไม่เหมาะสม
3 0x18 หรือ 0x19 ความยาว
4 ขนาด 0X16 ค่าประเภทข้อมูลบริการ
5 0xAA UUID ของบริการ 16 บิต
6 0xFE ...
7 0x40 หรือ 0x41 ประเภทเฟรม FMDN ที่มีสัญญาณบอกสถานะโหมดป้องกันการติดตามที่ไม่พึงประสงค์
8..27 ตัวระบุชั่วคราว 20 ไบต์
28 แฟล็กที่แฮช

ตารางที่ 8: เฟรม FMDN ที่รองรับเส้นโค้ง 160 บิต

ตาราง 9 แสดงออฟเซ็ตไบต์และค่าสำหรับเส้นโค้ง 256 บิต

อ็อกเท็ต ค่า คำอธิบาย
0 0x02 ความยาว
1 0x01 ค่าประเภทข้อมูลแฟล็ก
2 0x06 ข้อมูลการแจ้งว่าไม่เหมาะสม
3 0x24 หรือ 0x25 ความยาว
4 ขนาด 0X16 ค่าประเภทข้อมูลบริการ
5 0xAA UUID ของบริการ 16 บิต
6 0xFE ...
7 0x40 หรือ 0x41 ประเภทเฟรม FMDN ที่มีสัญญาณบอกสถานะโหมดป้องกันการติดตามที่ไม่พึงประสงค์
8..39 ตัวระบุชั่วคราว 32 ไบต์
40 แฟล็กที่แฮช

ตารางที่ 9: เฟรม FMDN ที่รองรับเส้นโค้ง 256 บิต

การคำนวณตัวระบุชั่วคราว (EID)

การสุ่มสร้างขึ้นโดย AES-ECB-256 ที่เข้ารหัสโครงสร้างข้อมูลต่อไปนี้ด้วยคีย์ข้อมูลประจำตัวชั่วคราว

อ็อกเท็ต ฟิลด์ คำอธิบาย
0 - 10 ระยะห่างจากขอบ ค่า = 0xFF
11 K เลขชี้กำลังของระยะเวลาการหมุนเวียน
12-15 ปี TS[0]...TS[3] ตัวนับเวลาของบีคอน ในรูปแบบ Big Endian 32 บิต ระบบจะล้างบิตต่ำสุด K
16-26 ปี ระยะห่างจากขอบ ค่า = 0x00
27 K เลขชี้กำลังของระยะเวลาการหมุนเวียน
28-31 ปี TS[0]...TS[3] ตัวนับเวลาของบีคอน ในรูปแบบ Big Endian 32 บิต ระบบจะล้างบิตต่ำสุด K

ตารางที่ 10: การสร้างตัวเลขสุ่ม

ผลของการคำนวณนี้จะเป็นตัวเลข 256 บิต ซึ่งระบุไว้ว่า r'

สำหรับการคำนวณที่เหลือ ระบบจะใช้ SECP160R1 หรือ SECP256R1 สำหรับการดำเนินการเข้ารหัสเส้นโค้งรูปวงรี ดูคำจำกัดความของเส้นโค้งใน SEC 2: พารามิเตอร์โดเมน Elliptic Curve ที่แนะนำ ซึ่งกำหนด Fp, n และ G ที่อ้างอิงถัดไป

r' คาดการณ์ไปยังช่องจำกัด Fp แล้วด้วยการคำนวณ r = r' mod n สุดท้าย ให้ประมวลผล R = r * G ซึ่งเป็นจุดบนเส้นโค้งที่แสดงถึงคีย์สาธารณะที่ใช้งานอยู่ บีคอนจะโฆษณา Rx ซึ่งเป็นพิกัด x ของ R เป็นตัวระบุชั่วคราว

แฟล็กที่แฮช

ช่องการแจ้งที่แฮชมีวิธีคำนวณดังนี้ (บิตจะอิงจากนัยสำคัญมากที่สุดไปจนถึงสำคัญน้อยที่สุด)

  • บิต 0-4: จองแล้ว (ตั้งค่าเป็น 0)
  • ส่วนบิต 5-6 จะระบุระดับแบตเตอรี่ของอุปกรณ์ดังนี้
    • 00: การบอกสถานะระดับแบตเตอรี่ไม่รองรับ
    • 01: ระดับแบตเตอรี่ปกติ
    • 10: ระดับแบตเตอรี่ต่ำ
    • 11: ระดับแบตเตอรี่ต่ำมาก (ต้องเปลี่ยนแบตเตอรี่ในเร็วๆ นี้)
  • จะตั้งค่าบิต 7 เป็น 1 หากบีคอนอยู่ในโหมดป้องกันการติดตามที่ไม่พึงประสงค์ และตั้งเป็น 0 มิเช่นนั้น

ในการสร้างค่าสุดท้ายของไบต์นี้ ซึ่งก็คือ xor-ed โดยมีไบต์ที่มีนัยสำคัญน้อยที่สุดเป็น SHA256(r)

โปรดทราบว่า r ควรอยู่ในแนวเดียวกับขนาดของเส้นโค้ง เพิ่มศูนย์เป็นบิตที่สำคัญที่สุดหากค่าแทนสั้นกว่า 160 หรือ 256 บิต หรือควรตัดบิตที่สำคัญที่สุดหากข้อมูลแสดงผลมีขนาดใหญ่กว่า 160 หรือ 256 บิต

หากบีคอนไม่รองรับการบอกระดับแบตเตอรี่และไม่ได้อยู่ในโหมดการป้องกันการติดตามที่ไม่พึงประสงค์ บีคอนจะได้รับอนุญาตให้ละเว้นไบต์นี้จากโฆษณาโดยสิ้นเชิง

การเข้ารหัสด้วย EID

ในการเข้ารหัสข้อความ m ผู้ดู (ได้อ่าน Rx จากบีคอน) จะต้องดำเนินการต่อไปนี้:

  1. เลือกหมายเลขสุ่ม s ใน Fp ตามที่กำหนดไว้ในส่วนการคํานวณ EID
  2. คำนวณ S = s * G
  3. คำนวณ R = (Rx, Ry) โดยการแทนค่าในสมการเส้นโค้งและเลือกค่า Ry ที่กำหนดเองจากผลลัพธ์ที่เป็นไปได้
  4. คำนวณคีย์ AES 256 บิต k = HKDF-SHA256((s * R)x) โดยที่ (s * R)x คือพิกัด x ของผลลัพธ์การคูณเส้นโค้ง ไม่ได้ระบุเกลือ
  5. ให้ URx และ LRx เป็น 80 บิตด้านบนและ 80 บิตของ Rx ตามลำดับในรูปแบบ Big-endian ในลักษณะเดียวกัน ให้กำหนด USx และ LSx สำหรับ S
  6. คำนวณ nonce = LRx || LSx
  7. คำนวณ (m’, tag) = AES-EAX-256-ENC(k, nonce, m)
  8. ส่ง (URx, Sx, m’, tag) ให้เจ้าของ โดยอาจผ่านบริการระยะไกลที่ไม่น่าเชื่อถือ

การถอดรหัสค่าที่เข้ารหัสด้วย EID

ไคลเอ็นต์ของเจ้าของซึ่งครอบครอง EIK และเลขชี้กำลังระยะเวลาการหมุนเวียนได้ถอดรหัสข้อความดังนี้

  1. เมื่อพิจารณาจาก URx รับค่าตัวนับเวลาของบีคอนที่ URx อิงตาม ซึ่งทำได้โดยค่า Rx สำหรับการประมวลผลของไคลเอ็นต์ของเจ้าของสำหรับค่าตัวนับเวลาของบีคอนสำหรับที่ผ่านมาล่าสุดและในอนาคตอันใกล้
  2. โดยพิจารณาจากค่าตัวนับเวลาของบีคอนที่ URx อิงตาม ให้คำนวณค่าที่คาดการณ์ไว้ของ r ตามที่กำหนดไว้ในส่วนการคำนวณ EID
  3. คำนวณ R = r * G และยืนยันค่าที่ตรงกันกับค่าของ URx ที่ผู้ตรวจสอบให้ไว้
  4. คำนวณ S = (Sx, Sy) โดยการแทนค่าในสมการเส้นโค้งและเลือกค่า Sy ที่กำหนดเองจากผลลัพธ์ที่เป็นไปได้
  5. คำนวณ k = HKDF-SHA256((r * S)x) โดยที่ (r * S)x คือพิกัด x ของผลลัพธ์การคูณเส้นโค้ง
  6. คำนวณ nonce = LRx || LSx
  7. คำนวณ m = AES-EAX-256-DEC(k, nonce, m’, tag)

การหมุนเวียนรหัส

ต้องใช้ที่อยู่ BLE ที่แปลงได้ (RPA) หรือที่อยู่ BLE ที่ไม่สามารถแปลงได้ (NRPA) สำหรับการโฆษณาเฟรม FMDN ต้องระบุ RPA สำหรับอุปกรณ์ LE Audio (LEA) และแนะนำสำหรับอุปกรณ์อื่นๆ ยกเว้นแท็กระบุตำแหน่งที่ไม่ได้ใช้การเชื่อมโยง

โฆษณาการจับคู่ด่วน โฆษณา FMDN และที่อยู่ BLE ที่เกี่ยวข้องควรหมุนเวียนไปพร้อมๆ กัน การหมุนเวียนควรเกิดขึ้นทุกๆ 1,024 วินาทีโดยเฉลี่ย จุดที่แม่นยำที่บีคอนเริ่มโฆษณา ตัวระบุใหม่จะต้องสุ่มอยู่ภายในหน้าต่างนั้น

วิธีที่แนะนำในการสุ่มเวลาในการหมุนคือ ตั้งเวลาให้เป็นเวลาหมุนเวียนที่คาดไว้ครั้งถัดไป (หากไม่ได้ใช้การสุ่ม) บวกกับปัจจัยของเวลาแบบสุ่มที่เป็นบวกในช่วง 1 ถึง 204 วินาที

เมื่ออุปกรณ์อยู่ในโหมดป้องกันการติดตามที่ไม่พึงประสงค์ ที่อยู่ BLE ของโฆษณา FMDN ควรได้รับการแก้ไข แต่ RPA สำหรับโฆษณาที่ค้นพบไม่ได้ของ FP (เช่น การจับคู่ด่วน) ต้องหมุนเวียนไปเรื่อยๆ ซึ่งสามารถใช้ที่อยู่ที่ต่างกันสำหรับโปรโตคอลที่ต่างกันได้

การฟื้นตัวจากการสูญเสียไฟฟ้า

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

ผู้ให้บริการควรพยายามอย่างเต็มที่เพื่อลดการเลื่อนเวลาของนาฬิกาเนื่องจากกรอบเวลาของการแก้ปัญหามีจำกัด ควรใช้วิธีการซิงค์นาฬิกาเพิ่มเติมอย่างน้อย 1 วิธี (เฟรมการจับคู่ด่วนที่ค้นพบไม่ได้ของโฆษณา หรือใช้สตรีมข้อความ)

หลักเกณฑ์การใช้งานการจับคู่ด่วน

ส่วนนี้อธิบายแง่มุมพิเศษของการใช้งานการจับคู่ด่วนจากผู้ให้บริการที่รองรับ FMDN

หลักเกณฑ์เฉพาะสำหรับแท็กเครื่องระบุตำแหน่ง

  • หากมีการจับคู่ผู้ให้บริการแล้ว แต่ไม่ได้จัดสรร FMDN ภายใน 5 นาที (หรือหากมีการใช้การอัปเดต OTA ขณะที่อุปกรณ์จับคู่ แต่ไม่ได้จัดสรร FMDN) ผู้ให้บริการควรเปลี่ยนกลับไปใช้การกำหนดค่าเริ่มต้นและล้างคีย์ของบัญชีที่จัดเก็บไว้
  • หลังจากจับคู่ผู้ให้บริการแล้ว ไม่ควรเปลี่ยนที่อยู่ MAC จนกว่าจะจัดสรร FMDN หรือจนกว่าจะผ่านไป 5 นาที
  • หากล้างคีย์ข้อมูลประจำตัวชั่วคราวออกจากอุปกรณ์ อุปกรณ์ควรรีเซ็ตเป็นค่าเริ่มต้นและล้างคีย์บัญชีที่จัดเก็บไว้ด้วย
  • ผู้ให้บริการควรปฏิเสธการพยายามจับคู่อุปกรณ์ผ่านบลูทูธตามปกติ และยอมรับเฉพาะการจับคู่ด่วนเท่านั้น
  • ผู้ให้บริการต้องมีกลไกที่ให้ผู้ใช้หยุดโฆษณาชั่วคราวได้โดยไม่ต้องรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น (เช่น การกดปุ่มทั้ง 2 ปุ่ม)
  • หลังจากไม่มีกระแสไฟเข้า อุปกรณ์ควรโฆษณาเฟรมการจับคู่ด่วนที่ค้นพบไม่ได้จนกว่าจะมีการเรียกใช้พารามิเตอร์บีคอนการอ่านครั้งถัดไป ซึ่งจะทำให้ผู้หาอุปกรณ์ตรวจพบอุปกรณ์และซิงค์นาฬิกาได้แม้ว่านาฬิกาจะหลุดไปมากก็ตาม
  • เมื่อโฆษณาเฟรมการจับคู่ด่วนที่ค้นพบไม่ได้ คุณไม่ควรเปิดใช้สัญญาณบอกสถานะ UI
  • เฟรมจับคู่ด่วนที่ค้นพบได้ไม่ควรโฆษณาขณะที่ผู้ให้บริการได้รับการจัดสรรสำหรับ FMDN
  • ผู้ให้บริการไม่ควรเปิดเผยข้อมูลที่ระบุตัวตนใดๆ ในลักษณะที่ไม่ผ่านการตรวจสอบสิทธิ์ (เช่น ชื่อหรือตัวระบุ)

หลักเกณฑ์เฉพาะอุปกรณ์บลูทูธแบบคลาสสิก

ส่วนนี้จะอธิบายแง่มุมพิเศษของอุปกรณ์บลูทูธแบบคลาสสิกที่รองรับ FMDN

การจัดสรร FMDN ของอุปกรณ์ที่จับคู่แล้ว

ผู้ให้บริการไม่ได้ถูกจัดสรรสำหรับ FMDN เสมอไปเมื่อจับคู่กับ Seeker แต่หลังจากนั้น ในกรณีนี้ ผู้ให้บริการอาจไม่มีที่อยู่ MAC ของ BLE ที่เป็นปัจจุบันซึ่งจำเป็นสำหรับการเชื่อมต่อ GATT ผู้ให้บริการต้องรองรับวิธีต่อไปนี้อย่างน้อย 1 วิธีเพื่อให้ Seeker ได้รับที่อยู่ BLE ขณะที่มีการจับคู่อุปกรณ์แล้ว

  • ผู้ให้บริการสามารถโฆษณาข้อมูลบัญชีการจับคู่ด่วนเป็นระยะๆ เพื่อช่วยให้ผู้ร้องขอค้นหาที่อยู่ BLE ของตนได้ผ่านการสแกน BLE
    วิธีนี้เหมาะกับผู้ให้บริการที่ไม่ได้ใช้สตรีมข้อความ
  • ผู้ให้บริการจะให้ข้อมูลนี้ผ่านสตรีมข้อความการจับคู่ด่วนผ่านบลูทูธแบบคลาสสิกได้
    วิธีนี้เหมาะกับผู้ให้บริการที่ไม่ได้โฆษณาเฟรมการจับคู่ด่วนขณะเชื่อมต่อกับ "ขอ" ผ่านบลูทูธ

การรองรับทั้ง 2 วิธีนี้ช่วยเพิ่มโอกาสที่ผู้ใช้จะจัดสรรอุปกรณ์สำหรับ FMDN ได้

สตรีมข้อความการจับคู่ด่วน

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

ผู้ให้บริการควรส่งข้อความข้อมูลอุปกรณ์ทุกครั้งที่สร้างแชแนล RFCOMM ในสตรีมข้อความ

เวอร์ชันเฟิร์มแวร์ (รหัสข้อมูลอุปกรณ์ 0x09) และความสามารถในการติดตาม

เมื่อการอัปเดตเฟิร์มแวร์เพิ่มการรองรับ FMDN ให้กับผู้ให้บริการ ผู้ค้นหาที่เชื่อมต่อจะแจ้งเตือนผู้ใช้เกี่ยวกับเรื่องนี้และเสนอให้จัดสรรได้ มิเช่นนั้น ผู้ใช้จะต้องไปที่รายการอุปกรณ์บลูทูธด้วยตนเองเพื่อเริ่มการจัดสรร FMDN

ทั้งนี้ ผู้ให้บริการควรใช้พร็อพเพอร์ตี้เวอร์ชันเฟิร์มแวร์ (รหัส 0x09) เพื่อรายงานค่าสตริงที่แสดงถึงเวอร์ชันเฟิร์มแวร์เพื่อให้ดำเนินการดังกล่าวได้ นอกจากนี้ ผู้ให้บริการควรรองรับโปรโตคอลที่ช่วยให้ Seeker ทราบการเปลี่ยนแปลงความสามารถเนื่องจากการอัปเดตเฟิร์มแวร์

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 เหตุการณ์เกี่ยวกับข้อมูลอุปกรณ์ 0x03
1 uint8 เวอร์ชันเฟิร์มแวร์ 0x09
2 - 3 uint16 ความยาวข้อมูลเพิ่มเติม หลากหลาย
var อาร์เรย์ไบต์ สตริงเวอร์ชัน หลากหลาย

ตารางที่ 11: เหตุการณ์เกี่ยวกับข้อมูลอุปกรณ์: เวอร์ชันเฟิร์มแวร์ที่อัปเดตแล้ว

เมื่อได้รับคำขออัปเดตความสามารถ (0x0601) หากผู้ให้บริการเปิดใช้การรองรับการติดตาม FMDN ควรตอบกลับตามที่แสดงในตารางที่ 12

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 เหตุการณ์การซิงค์ความสามารถของอุปกรณ์ 0x06
1 uint8 การติดตาม FMDN 0x03
2 - 3 uint16 ความยาวข้อมูลเพิ่มเติม 0x0007
4 uint8 สถานะการจัดสรร FMDN 0x00 หากยกเลิกการจัดสรร หรือเป็น 0x01 หากมีการจัดสรรโดยบัญชีใดๆ
5 - 10 อาร์เรย์ไบต์ ที่อยู่ BLE MAC ปัจจุบันของอุปกรณ์ หลากหลาย

ตารางที่ 12: เหตุการณ์การซิงค์ความสามารถของอุปกรณ์: ความสามารถในการติดตามที่เพิ่มขึ้น

ตัวระบุชั่วคราวในปัจจุบัน (รหัสข้อมูลอุปกรณ์ 0x0B)

ผู้ให้บริการสามารถใช้ตัวระบุชั่วคราวในปัจจุบัน (รหัส 0x0B) เพื่อรายงาน EID ปัจจุบันและค่านาฬิกาเมื่อจัดสรรผู้ให้บริการสำหรับ FMDN เพื่อซิงค์ Seeker ในกรณีที่มีนาฬิกาเลื่อน (เช่น เนื่องจากแบตเตอรี่หมด) มิฉะนั้น Seeker จะเริ่มต้นการเชื่อมต่อที่มีราคาสูงกว่าและน่าเชื่อถือน้อยกว่าสำหรับวัตถุประสงค์นี้

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 เหตุการณ์เกี่ยวกับข้อมูลอุปกรณ์ 0x03
1 uint8 ตัวระบุชั่วคราวในปัจจุบัน 0x0 พันล้าน
2 - 3 uint16 ความยาวข้อมูลเพิ่มเติม 0x0018 หรือ 0x0024
4 - 7 อาร์เรย์ไบต์ ค่านาฬิกา ตัวอย่าง: 0x13F9EA80
8-19 หรือ 31 อาร์เรย์ไบต์ EID ปัจจุบัน ตัวอย่าง: 0x1122334455667788990011223344556677889900

ตารางที่ 13: เหตุการณ์ข้อมูลอุปกรณ์: การซิงค์นาฬิกา

รีเซ็ตเป็นค่าเริ่มต้น

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

หลังจากรีเซ็ตเป็นค่าเริ่มต้น (ไม่ว่าจะด้วยตนเองหรือแบบเป็นโปรแกรม) ผู้ให้บริการไม่ควรเริ่มโฆษณาการจับคู่ด่วนทันที เพื่อป้องกันไม่ให้ขั้นตอนการจับคู่เริ่มต้นขึ้นทันทีหลังจากผู้ใช้ลบอุปกรณ์

การป้องกันการติดตามที่ไม่พึงประสงค์

อุปกรณ์ FMDN ที่ได้รับการรับรองยังต้องเป็นไปตามข้อกำหนดในเวอร์ชันการติดตั้งใช้งานของข้อกำหนดเฉพาะข้ามแพลตฟอร์มสำหรับ การตรวจหาเครื่องมือติดตามตำแหน่งที่ไม่ต้องการ (DULT)

หลักเกณฑ์ที่เกี่ยวข้องสําหรับ FMDN โดยเฉพาะเพื่อให้เป็นไปตามข้อกําหนดของ DULT มีดังนี้

  • ต้องลงทะเบียนอุปกรณ์ที่เข้ากันได้กับ FMDN ในคอนโซลอุปกรณ์ที่อยู่ใกล้เคียงและเปิดฟังก์ชัน "หาอุปกรณ์ของฉัน" ไว้
  • อุปกรณ์ต้องใช้บริการและลักษณะเฉพาะของอุปกรณ์เสริมที่ไม่ได้เป็นเจ้าของตามที่ระบุไว้ในเวอร์ชันการติดตั้งใช้งานของข้อกำหนด DULT รวมถึงการดำเนินการข้อมูลอุปกรณ์เสริมและการควบคุมผู้ที่ไม่ได้เป็นเจ้าของ
  • ระหว่างระยะเวลาความเข้ากันได้แบบย้อนหลังตามที่ระบุไว้ในข้อกำหนดของ DULT จะไม่มีการเปลี่ยนแปลงเฟรมที่โฆษณาตามที่ให้คำจำกัดความไว้ในเอกสารนี้
  • "โหมดป้องกันการติดตามที่ไม่พึงประสงค์" ที่กำหนดไว้ในเอกสารฉบับนี้จะแมปกับ "สถานะคั่นด้วย" ที่กำหนดโดยข้อกำหนด DULT
  • แนวทางการใช้ opcode ของข้อมูลอุปกรณ์เสริมมีดังนี้
    • Get_Product_Data ควรแสดงรหัสโมเดลที่คอนโซลให้ไว้ โดยที่ไม่มีอักขระเสริมเพื่อให้พอดีกับความต้องการแบบ 8 ไบต์ เช่น รหัสโมเดล 0xFFFFFF จะแสดงผลเป็น 0x0000000000FFFFFF
    • Get_Manufacturer_Name และ Get_Model_Name ควรตรงกับค่าที่ระบุในคอนโซล
    • Get_Accessory_Category แสดงค่า "Location Tracker" ทั่วไปได้หากไม่มีหมวดหมู่อื่นที่เหมาะสมกับประเภทอุปกรณ์
    • Get_Accessory_Capability ต้องบ่งชี้ถึงการรองรับการส่งเสียง ตลอดจนการค้นหาตัวระบุ BLE
    • Get_Network_ID จะแสดงตัวระบุของ Google (0x02)
  • หลักเกณฑ์ในการติดตั้งใช้งาน Get_Identifier opcode
    • การดำเนินการดังกล่าวควรแสดงผลคำตอบที่ถูกต้องเป็นเวลา 5 นาทีหลังจากที่ผู้ใช้เปิดใช้โหมด "การระบุ" ซึ่งต้องมีการกดปุ่มร่วมกัน สัญญาณภาพหรือเสียงควรแจ้งให้ผู้ใช้ทราบว่าผู้ให้บริการเข้าสู่โหมดนั้น Google จะต้องระบุวิธีการเฉพาะรุ่นสำหรับการเปิดใช้โหมดนั้นให้กับ Google เป็นข้อกำหนดสำหรับการรับรอง และอย่างน้อย 10 วันก่อนการอัปเดตหรือแก้ไขวิธีการ
    • การตอบสนองจะสร้างขึ้นเป็น 10 ไบต์แรกของตัวระบุชั่วคราวในปัจจุบัน ตามด้วย 8 ไบต์แรกของ HMAC-SHA256(recovery key, the truncated current ephemeral identifier)
  • หลักเกณฑ์สําหรับการใช้ opcode Sound_Start มีดังนี้
    • คำสั่งควรทริกเกอร์เสียงเรียกเข้าในคอมโพเนนต์ที่มีอยู่ทั้งหมด
    • ควรใช้ระดับเสียงสูงสุดที่รองรับ
    • ระยะเวลาที่แนะนำสำหรับเสียงเรียกเข้าคือ 12 วินาที
  • แท็กเครื่องระบุตำแหน่งต้องมีกลไกที่ให้ผู้ใช้หยุดโฆษณาชั่วคราวโดยไม่ต้องรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น (เช่น การกดปุ่มหลายปุ่มพร้อมกัน)
    • วิธีการปิดใช้จะต้องบันทึกไว้ใน URL ที่เผยแพร่ต่อสาธารณะ และส่งให้กับ Google เพื่อเป็นข้อกำหนดสำหรับการรับรอง และอย่างน้อย 10 วันก่อนการอัปเดตหรือแก้ไขวิธีการ
    • URL ควรรองรับการแปล จะมีการระบุภาษาเป็นพารามิเตอร์การค้นหา ("hl=en") หรือใช้ส่วนหัว HTTP "accept-language" อย่างใดอย่างหนึ่ง ทั้งนี้ขึ้นอยู่กับไคลเอ็นต์

หลักเกณฑ์ของโปรโตคอลที่เปลี่ยนได้

  • ควรใช้โปรโตคอลเพียงครั้งละ 1 รายการเท่านั้น ตรวจสอบว่าอุปกรณ์มีเครือข่ายเพียง 1 เครือข่ายที่ทำงานได้พร้อมกัน ข้อกำหนดนี้จำเป็นสำหรับเพื่อให้มั่นใจว่าไม่มีการรวมข้อมูลผู้ใช้ที่ละเอียดอ่อนระหว่างโปรโตคอลต่างๆ
  • ขอแนะนำให้รวมเวิร์กโฟลว์การรีเซ็ตเป็นค่าเริ่มต้นเข้ากับอุปกรณ์ซึ่งจะช่วยให้ผู้ใช้ตั้งค่าอุปกรณ์กับเครือข่ายอื่นอีกครั้งได้
  • ขั้นตอนการอัปเดตอุปกรณ์ไปยังเครือข่ายควรเป็นที่ใช้ง่ายและมีความเท่าเทียมระหว่างเครือข่ายต่างๆ ผู้ใช้ต้องสามารถเลือกเครือข่ายที่ต้องการใช้ได้ โดยไม่ต้องกำหนดเครือข่ายใดเครือข่ายหนึ่งก่อน ขั้นตอนนี้ต้องได้รับอนุมัติจากทีม Google

การอัปเดตเฟิร์มแวร์

พาร์ทเนอร์ควรจัดการกระบวนการและการเผยแพร่การอัปเดต OTA โดยใช้เวิร์กโฟลว์ของแอปบนอุปกรณ์เคลื่อนที่หรือเว็บแอปของตนเอง

ความเข้ากันได้

ต้องเปิดบริการตำแหน่งและบลูทูธจึงจะใช้เครือข่ายแอปหาอุปกรณ์ของฉันได้ ต้องมีบริการเครือข่ายมือถือหรือการเชื่อมต่ออินเทอร์เน็ต ใช้งานได้บน Android 9 ขึ้นไปและ สำหรับผู้ใช้ที่อายุถึงเกณฑ์ในบางประเทศ

บันทึกการเปลี่ยนแปลง

เวอร์ชัน FMDN วันที่ ความคิดเห็น
v1 การเผยแพร่ข้อกำหนด FMDN ครั้งแรกสำหรับการทดลองใช้ก่อนเปิดตัว
v1.1 Feb 2023
  • เพิ่มการระบุข้อความที่โอนหรือจัดเก็บได้ในโหมดการป้องกันการติดตามที่ไม่พึงประสงค์
  • เพิ่มตัวเลือกในการข้ามการตรวจสอบสิทธิ์ของคำขอที่โทรเข้าขณะอยู่ในโหมดป้องกันการติดตามที่ไม่พึงประสงค์
v1.2 เม.ย. 2023
  • อัปเดตคําจํากัดความของ AK ของเจ้าของ
  • เพิ่มคําแนะนําในการกู้คืนเนื่องจากการสูญเสียพลังงานในแท็กระบุตำแหน่ง
  • เพิ่มการชี้แจงสำหรับการสุ่มที่อยู่ MAC
  • เพิ่มการชี้แจงเกี่ยวกับการหมุนเวียนที่อยู่ MAC ขณะอยู่ในโหมดการป้องกันการติดตามที่ไม่พึงประสงค์
  • เพิ่มหลักเกณฑ์วิธีปิดใช้งานแท็กเครื่องระบุตำแหน่ง
v1.3 ธ.ค. 2023
  • เพิ่มการชี้แจงเกี่ยวกับการระบุข้อมูลที่เปิดเผย โดยแท็กตัวระบุตำแหน่ง
  • เพิ่มข้อกำหนดในการใช้ข้อกำหนดการป้องกันการติดตามที่ไม่พึงประสงค์
  • เพิ่มหลักเกณฑ์สำหรับอุปกรณ์โปรโตคอลที่สลับได้