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

v1.3

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

ข้อกำหนด GATT

ควรเพิ่มแอตทริบิวต์ทั่วไป (GATT) เพิ่มเติมลงในบริการจับคู่ด่วนโดยใช้ความหมายต่อไปนี้

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

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

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

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

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

การดำเนินการอ่านแต่ละรายการควรให้ Nonce ที่แตกต่างกัน และ Nonce รายการเดียวควรใช้ได้กับการดำเนินการรายการเดียวเท่านั้น หมายเลขที่ไม่ซ้ำต้องใช้งานไม่ได้แม้ว่าการดำเนินการจะล้มเหลวก็ตาม

จากนั้นผู้ค้นหาจะคํานวณคีย์การตรวจสอบสิทธิ์แบบครั้งเดียวเพื่อใช้ในคําขอเขียนครั้งถัดไป คีย์การตรวจสอบสิทธิ์จะคํานวณตามที่อธิบายไว้ในตารางที่ 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 - var อาร์เรย์ไบต์ ข้อมูลเพิ่มเติม
  • 0x00: ไม่มี
  • 0x01: ไม่มี
  • 0x02: 32 ไบต์ที่เป็นคีย์ข้อมูลประจำตัวชั่วคราวที่เข้ารหัส AES-ECB-128 ด้วยคีย์บัญชี หากผู้ให้บริการมีชุดคีย์ระบุตัวตนชั่วคราวอยู่แล้ว ให้ส่งSHA256(current ephemeral identity key || the last nonce read from the characteristic) 8 ไบต์แรกด้วย
  • 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 - var อาร์เรย์ไบต์ ข้อมูลเพิ่มเติม
  • 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 - var อาร์เรย์ไบต์ ข้อมูลเพิ่มเติม
  • 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 - var อาร์เรย์ไบต์ ข้อมูลเพิ่มเติม
  • 0x00: 8 ไบต์ที่ระบุกำลังส่ง ค่านาฬิกา วิธีการเข้ารหัส และความสามารถในการส่งเสียง เข้ารหัส AES-ECB-128 ด้วยคีย์บัญชี (มีการเติม 0)
  • 0x01: 1 ไบต์ที่ระบุสถานะการจัดสรร ตามด้วยรหัสชั่วคราวปัจจุบัน (20 หรือ 32 ไบต์) หากมี
  • 0x04: 32 ไบต์ที่เป็นคีย์ข้อมูลประจำตัวชั่วคราวที่เข้ารหัส AES-ECB-128 ด้วยคีย์บัญชี
  • 0x05: 4 ไบต์ที่ระบุสถานะใหม่และทริกเกอร์การเปลี่ยนแปลง
  • 0x06: 3 ไบต์ที่ระบุคอมโพเนนต์ที่ส่งเสียงกริ่งอยู่และจำนวนทศนิยมวินาทีที่เหลือสำหรับการส่งเสียงกริ่ง
  • รหัสข้อมูลอื่นๆ ใช้ข้อมูลเพิ่มเติมว่างเปล่า

ตารางที่ 6: การตอบกลับบริการบีคอน

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

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

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

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

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

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

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

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

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

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

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

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

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 สถานะการจัดสรร บิตมาสก์ที่มีค่าต่อไปนี้
  • บิตที่ 1 (0x01): ตั้งค่าหากตั้งค่าคีย์ข้อมูลประจำตัวชั่วคราวสำหรับอุปกรณ์
  • บิต 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)

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

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

ผู้ค้นหาต้องจัดเก็บคีย์การกู้คืนในแบ็กเอนด์จึงจะกู้คืนคีย์ข้อความธรรมดาได้ แต่จะไม่ได้จัดเก็บ EIK ไว้

หากต้องการอ่าน EIK ผู้ค้นหาจะดำเนินการเขียนไปยังแอตทริบิวต์ ซึ่งประกอบด้วยคำขอจากตาราง 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)

การทำงานของ Ring

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

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 การทำงานของ Ring บิตมาสก์ที่มีค่าต่อไปนี้
  • บิตที่ 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: ข้ามการตรวจสอบสิทธิ์เสียงเรียกเข้า เมื่อตั้งค่าแล้ว ระบบจะไม่ตรวจสอบสิทธิ์คำขอเสียงเรียกเข้าขณะอยู่ในโหมดการป้องกันการติดตามที่ไม่พึงประสงค์
หากไม่มีการตั้งค่า Flag (ไบต์เป็น 0 ทั้งหมด) คุณสามารถละเว้นส่วนข้อมูลทั้งหมดและส่งส่วนข้อมูลว่างได้
การแจ้งว่าไม่เหมาะสมจะมีผลจนกว่าจะมีการปิดใช้งานโหมดการป้องกันการติดตามที่ไม่พึงประสงค์

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

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

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

ผู้ให้บริการจะยืนยันข้อมูลต่อไปนี้

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

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

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

หากดำเนินการสำเร็จ ผู้ให้บริการจะแจ้งด้วยการตอบกลับจากตาราง 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 ควรตั้งค่าเป็นอย่างน้อย 0 dBm

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

เฟรม FMDN มีโครงสร้างดังนี้

อ็อกเท็ต ค่า คำอธิบาย
0 0x02 ความยาว
1 0x01 ค่าประเภทข้อมูล Flag
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 ค่าประเภทข้อมูล Flag
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 Padding ค่า = 0xFF
11 K เลขชี้กำลังของระยะเวลาการหมุนเวียน
12 - 15 TS[0]...TS[3] ตัวนับเวลาของบีคอนในรูปแบบ Big-endian 32 บิต ระบบจะล้างบิตต่ำสุดของ K
16 - 26 ปี Padding ค่า = 0x00
27 K เลขชี้กำลังของระยะเวลาการหมุนเวียน
28 - 31 ปี TS[0]...TS[3] ตัวนับเวลาของบีคอนในรูปแบบ Big-endian 32 บิต ระบบจะล้างบิตต่ำสุดของ K

ตารางที่ 10: การสร้างตัวเลขแบบสุ่มจำลอง

ผลลัพธ์ของการคํานวณนี้คือตัวเลข 256 บิต ซึ่งแสดงด้วย r'

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

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

ธงที่แฮช

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

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

ระบบจะดำเนินการ XOR กับไบต์ที่มีนัยสำคัญน้อยที่สุดของ 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 ของผลลัพธ์การคูณด้วยเส้นโค้ง ไม่ได้ระบุ Salt
  5. สมมติให้ URx และ LRx เป็นเลข 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) หรือแก้ไขไม่ได้ (NRPA) สำหรับเฟรม FMDN ของโฆษณา RPA เป็นสิ่งจําเป็นสําหรับอุปกรณ์ LE Audio (LEA) และแนะนําสําหรับอุปกรณ์อื่นๆ ยกเว้นแท็กอุปกรณ์ติดตามที่ไม่ใช้การเชื่อมโยง

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

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

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

การกู้คืนจากไฟดับ

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

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

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

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

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

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

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

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

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

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

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

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

สตรีมข้อความของฟีเจอร์จับคู่ด่วน

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

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

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

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

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

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
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 อาร์เรย์ไบต์ ที่อยู่ MAC ของ BLE ปัจจุบันของอุปกรณ์ แตกต่างกัน

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

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

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

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

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

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

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

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

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

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

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

  • อุปกรณ์ที่เข้ากันได้กับ FMDN ต้องลงทะเบียนในคอนโซลอุปกรณ์ใกล้เคียง และเปิดใช้ความสามารถ "หาอุปกรณ์ของฉัน"
  • อุปกรณ์ต้องใช้บริการและลักษณะของอุปกรณ์เสริมสำหรับผู้ที่ไม่ใช่เจ้าของที่ระบุไว้ในเวอร์ชันการใช้งานของข้อกำหนด DULT รวมถึงการดำเนินการข้อมูลอุปกรณ์เสริมและการควบคุมสำหรับผู้ที่ไม่ใช่เจ้าของ
  • ในช่วงที่รองรับการทำงานแบบย้อนหลังตามที่ระบุไว้ในข้อกำหนด DULT จะไม่มีการเปลี่ยนแปลงเฟรมที่โฆษณาตามที่ระบุไว้ในเอกสารนี้
  • "โหมดการป้องกันการติดตามที่ไม่พึงประสงค์" ที่ระบุไว้ในเอกสารนี้ตรงกับ "สถานะแยก" ที่ระบุไว้ในข้อกำหนด DULT
  • หลักเกณฑ์ในการใช้โอเพโค้ดข้อมูลอุปกรณ์เสริมมีดังนี้
    • Get_Product_Data ควรแสดงผลรหัสโมเดลที่คอนโซลระบุ โดยเติม 0 ต่อท้ายให้พอดีกับข้อกำหนด 8 ไบต์ เช่น ระบบจะแสดงรหัสรุ่น 0xFFFFFF เป็น 0x0000000000FFFFFF
    • Get_Manufacturer_Name และ Get_Model_Name ควรตรงกับค่าที่ระบุไว้ในคอนโซล
    • Get_Accessory_Category สามารถแสดงผลค่า "อุปกรณ์ติดตามตำแหน่ง" ทั่วไปได้หากไม่มีหมวดหมู่อื่นที่เหมาะกับประเภทของอุปกรณ์มากกว่า
    • Get_Accessory_Capabilities ต้องระบุการรองรับการเรียกให้กริ่งและการค้นหาตัวระบุ BLE
    • Get_Network_ID ควรแสดงผลตัวระบุของ Google (0x02)
  • หลักเกณฑ์ในการใช้อ็อปโค้ด Get_Identifier มีดังนี้
    • การดำเนินการควรแสดงเฉพาะคำตอบที่ถูกต้องเป็นเวลา 5 นาทีหลังจากที่ผู้ใช้เปิดใช้งานโหมด "การระบุตัวตน" ซึ่งต้องใช้การกดปุ่มหลายครั้ง สัญญาณภาพหรือเสียงควรบ่งบอกให้ผู้ใช้ทราบว่าผู้ให้บริการเข้าสู่โหมดนั้น คุณต้องส่งวิธีการเฉพาะรุ่นสำหรับการเปิดใช้งานโหมดดังกล่าวให้ Google ตามข้อกำหนดของการรับรองและอย่างน้อย 10 วันก่อนการอัปเดตหรือการแก้ไขวิธีการ
    • การตอบกลับจะประกอบด้วย 10 ไบต์แรกของตัวระบุชั่วคราวปัจจุบัน ตามด้วย 8 ไบต์แรกของ HMAC-SHA256(recovery key, the truncated current ephemeral identifier)
  • หลักเกณฑ์ในการใช้ตัวระบุผ่าน NFC มีดังนี้
    • ใช้ find-my.googleapis.com/lookup เป็น URL
    • ใช้เป็นพารามิเตอร์ e ให้ใช้คำตอบเดียวกันกับที่สร้างขึ้นสำหรับ Get_Identifier ซึ่งเข้ารหัสฐาน 16
    • ใช้คำตอบเดียวกันกับที่สร้างขึ้นสำหรับ Get_Product_Data ที่เข้ารหัสฐาน 16 เป็นตัวพารามิเตอร์ pid
  • อุปกรณ์ต้องมีเครื่องทำเสียงและรองรับฟังก์ชันการโทร ตามข้อกำหนด DULT เครื่องทำเสียงต้องส่งเสียงที่มีความดังสูงสุดอย่างน้อย 60 โฟนตามที่ระบุไว้ใน ISO 532-1:2017
  • หลักเกณฑ์ในการใช้อ็อบเจ็กต์โค้ด Sound_Start มีดังนี้
    • คำสั่งดังกล่าวควรทริกเกอร์เสียงเรียกเข้าในคอมโพเนนต์ทั้งหมดที่ใช้ได้
    • ควรใช้ปริมาณสูงสุดที่รองรับ
    • ระยะเวลาที่แนะนำสำหรับการโทรคือ 12 วินาที
  • แท็กอุปกรณ์ติดตามต้องมีกลไกที่ช่วยให้ผู้ใช้หยุดการโฆษณาชั่วคราวได้โดยไม่ต้องรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น (เช่น การกดปุ่มหลายปุ่มร่วมกัน)
    • วิธีการปิดใช้ต้องบันทึกไว้ใน URL ที่เผยแพร่ต่อสาธารณะและส่งให้ Google ตามข้อกำหนดของการรับรองและอย่างน้อย 10 วันก่อนการอัปเดตหรือแก้ไขวิธีการ
    • URL ควรรองรับการแปล ระบบจะระบุภาษาเป็นพารามิเตอร์การค้นหา ("hl=th") หรือใช้ส่วนหัว HTTP "accept-language" ทั้งนี้ขึ้นอยู่กับไคลเอ็นต์

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

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

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

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

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

  • คุณควรอัปเดตเฟิร์มแวร์เวอร์ชันล่าสุดในคอนโซลอุปกรณ์ใกล้เคียง
  • คุณควรตั้งค่าแอปที่ใช้ร่วมกันในคอนโซลอุปกรณ์ที่อยู่ใกล้เคียง โดยควรรองรับIntent การอัปเดตเฟิร์มแวร์
  • ผู้ให้บริการควรใช้ลักษณะ GATT การแก้ไขเฟิร์มแวร์

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

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

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

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

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