ข้อกำหนดของอุปกรณ์เสริมเครือข่ายศูนย์การค้นหา

v1.3

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

ข้อกำหนด GATT

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

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

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

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

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

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

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

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

การดำเนินการ

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

Octet ประเภทข้อมูล คำอธิบาย ค่า
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 เข้ารหัสด้วยคีย์บัญชี หากผู้ให้บริการมีชุดคีย์ข้อมูลประจำตัวชั่วคราวอยู่แล้ว ให้ส่งไบต์แรก 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: คำขอจัดสรร Beacon

Octet ประเภทข้อมูล คำอธิบาย ค่า
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: คำขอกู้คืนคีย์การจัดสรร Beacon

Octet ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 รหัสข้อมูล
  • 0x05: Ring
  • 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: คำขอการโทร

Octet ประเภทข้อมูล คำอธิบาย ค่า
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 การตอบกลับสำหรับคำขอเขียน

Octet ประเภทข้อมูล คำอธิบาย ค่า
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: การตอบกลับของบริการ Beacon

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

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

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

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

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

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

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

Octet ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 กำลังที่ปรับแล้ว กำลังที่ปรับเทียบแล้วตามที่ได้รับที่ 0 ม. (ค่าในช่วง [-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 อาร์เรย์ไบต์ Padding การเพิ่มค่าศูนย์สำหรับการเข้ารหัส 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 ผู้ให้บริการสร้างกลุ่มข้อมูลดังนี้

Octet ประเภทข้อมูล คำอธิบาย ค่า
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)

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

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

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

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

เมื่อสำเร็จแล้ว ระบบจะกู้คืนคีย์ประจำตัวชั่วคราวโดยการถอดรหัสด้วย AES-ECB-128 โดยใช้คีย์บัญชีที่ตรงกัน ควรจัดเก็บคีย์ไว้ในอุปกรณ์ และ จากนั้นเป็นต้นไป ผู้ให้บริการควรเริ่มโฆษณาเฟรม FHN คีย์ระบุตัวตนชั่วคราวใหม่จะมีผลทันทีหลังจากที่การเชื่อมต่อ 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 ผู้ให้บริการยืนยันว่า

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

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

เมื่อสำเร็จแล้ว ผู้ให้บริการจะลืมคีย์และหยุดโฆษณาเฟรม FHN ผู้ให้บริการจะแจ้งเตือนด้วยการตอบกลับจากตารางที่ 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 ผู้ค้นหาจะดำเนินการเขียนไปยังลักษณะเฉพาะ ซึ่งประกอบด้วยคำขอจากตารางที่ 3 ที่มีรหัสข้อมูล 0x04 ผู้ให้บริการยืนยันว่า

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

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

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

เมื่อสำเร็จ ผู้ให้บริการจะแจ้งเตือนด้วยการตอบกลับจากตารางที่ 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 ผู้ให้บริการสร้างกลุ่มข้อมูลดังนี้

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

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

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

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

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

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

Octet ประเภทข้อมูล คำอธิบาย ค่า
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 ผู้ให้บริการจะยืนยันว่าคีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์ วงแหวน

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

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

Octet ประเภทข้อมูล คำอธิบาย ค่า
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 ตามลำดับ

เมื่อเปิดใช้โหมดการป้องกันการติดตามที่ไม่ต้องการ

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

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

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

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

เมื่อปิดใช้โหมดการป้องกันการติดตามที่ไม่ต้องการ

ผู้ให้บริการยืนยันว่า

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

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

เมื่อปิดใช้โหมดการปกป้องการติดตามที่ไม่ต้องการแล้ว บีคอนควรเริ่ม หมุนเวียนที่อยู่ 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)

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

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

ควรตั้งค่ากำลังส่งบลูทูธที่ดำเนินการสำหรับการโฆษณา FHN เป็นอย่างน้อย 0 dBm

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

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

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

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

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

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

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

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

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

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

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

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

สำหรับการคำนวณที่เหลือ SECP160R1 หรือ SECP256R1 จะใช้สำหรับ การดำเนินการเข้ารหัสลับด้วยเส้นโค้งวงรี ดูคำจำกัดความของเส้นโค้งได้ใน SEC 2: Recommended Elliptic Curve Domain Parameters ซึ่งกำหนด 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 กับไบต์ที่มีนัยสำคัญน้อยที่สุด ของ SHA256(r)

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

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

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

หากต้องการเข้ารหัสข้อความ m ผู้พบเห็น (อ่าน Rx จากบีคอน) จะต้องทำดังนี้

  1. เลือกหมายเลขสุ่ม s ใน Fp ตามที่กำหนดไว้ในส่วนการคำนวณ EID
  2. Compute 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 บิตบนและล่างของ Rx ตามลำดับในรูปแบบ บิ๊กเอนเดียน ในทำนองเดียวกัน ให้กำหนด USx และ LSx สำหรับ S
  6. Compute nonce = LRx || LSx
  7. Compute (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. Compute nonce = LRx || LSx
  7. Compute m = AES-EAX-256-DEC(k, nonce, m’, tag)

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

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

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

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

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

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

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

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

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

ส่วนนี้อธิบายลักษณะพิเศษของการติดตั้งใช้งานฟีเจอร์จับคู่ด่วนใน ผู้ให้บริการที่รองรับ FHN

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • อุปกรณ์ที่รองรับ FHN ต้องลงทะเบียนในคอนโซลอุปกรณ์ที่อยู่ใกล้เคียง และเปิดใช้ความสามารถ "ค้นหาฮับ"
  • อุปกรณ์ต้องใช้บริการและลักษณะของอุปกรณ์เสริมที่ไม่ใช่เจ้าของ ที่กำหนดไว้ในเวอร์ชันการใช้งานของข้อกำหนด DULT ซึ่งรวมถึง การดำเนินการข้อมูลอุปกรณ์เสริมและการควบคุมสำหรับผู้ที่ไม่ใช่เจ้าของ
  • ในช่วงที่เข้ากันได้แบบย้อนหลังตามที่ระบุไว้ในข้อกำหนด DULT จะไม่มีการเปลี่ยนแปลงเฟรมที่โฆษณาตามที่ระบุไว้ในเอกสารนี้
  • "โหมดการป้องกันการติดตามที่ไม่พึงประสงค์" ที่กำหนดไว้ในเอกสารนี้จะสอดคล้องกับ "สถานะแยก" ที่กำหนดไว้ในข้อกำหนดของ DULT
  • หลักเกณฑ์ในการใช้ Opcode Accessory Information มีดังนี้
    • 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)
  • หลักเกณฑ์ในการใช้ Opcode 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 ที่เข้ารหัสฐานสิบหก
    • ในฐานะพารามิเตอร์ pid ให้ใช้การตอบกลับเดียวกันกับที่สร้างขึ้นสำหรับ Get_Product_Data ที่เข้ารหัสฐาน 16
  • อุปกรณ์ต้องมีตัวสร้างเสียงและรองรับ ฟังก์ชันการโทร ตามข้อกำหนดของ DULT ผู้ส่งเสียงต้องส่งเสียงที่มีความดังสูงสุดอย่างน้อย 60 โฟนตามที่กำหนดโดย ISO 532-1:2017
  • หลักเกณฑ์ในการใช้ Opcode Sound_Start
    • คำสั่งควรทำให้คอมโพเนนต์ที่พร้อมใช้งานทั้งหมดส่งเสียง
    • ควรใช้ระดับเสียงสูงสุดที่รองรับ
    • ระยะเวลาการโทรที่แนะนำคือ 12 วินาที
  • แท็กระบุตำแหน่งต้องมีกลไกที่ช่วยให้ผู้ใช้หยุด การโฆษณาชั่วคราวได้โดยไม่ต้องรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น (เช่น การกดปุ่ม หลายปุ่มพร้อมกัน)
    • ต้องบันทึกวิธีการปิดใช้ใน URL ที่เผยแพร่ต่อสาธารณะ และส่งให้ Google เป็นข้อกำหนดสำหรับการรับรอง และอย่างน้อย 10 วันก่อนการอัปเดตหรือแก้ไขวิธีการ
    • URL ควรจะรองรับการแปล ระบบจะระบุภาษาเป็นพารามิเตอร์การค้นหา ("hl=en") หรือใช้ส่วนหัว HTTP "accept-language" โดยขึ้นอยู่กับไคลเอ็นต์

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

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

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

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

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

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

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

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

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

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