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 รายการ ทั้งนี้ขึ้นอยู่กับการดำเนินการที่ขอ
คีย์บัญชี: คีย์บัญชีการจับคู่ด่วน 16 ไบต์ตามที่กำหนดไว้ในข้อกำหนดการจับคู่ด่วน
คีย์บัญชีที่เป็นเจ้าของ: ผู้ให้บริการเลือกคีย์บัญชีที่มีอยู่รายการใดรายการหนึ่ง เป็นคีย์บัญชีที่เป็นเจ้าของในครั้งแรกที่ผู้ค้นหาเข้าถึงลักษณะการทำงานของบีคอน คุณจะเปลี่ยนคีย์บัญชีเจ้าของที่เลือกไม่ได้จนกว่าจะรีเซ็ตอุปกรณ์ของผู้ให้บริการเป็นค่าเริ่มต้นจากโรงงาน ผู้ให้บริการต้องไม่นำคีย์บัญชีเจ้าของออกเมื่อสล็อตคีย์บัญชีฟรีหมด
ผู้ให้บริการที่รองรับ FHN อยู่แล้วเมื่อจับคู่เป็นครั้งแรก (หรือรองรับเมื่อจับคู่หลังจากการรีเซ็ตเป็นค่าเริ่มต้นจากโรงงาน) ให้เลือกคีย์บัญชีแรก เนื่องจากนี่เป็นคีย์บัญชีเดียวที่มีอยู่เมื่อ Seeker อ่าน สถานะการจัดสรรระหว่างการจับคู่
ผู้ให้บริการที่ได้รับการสนับสนุน FHN หลังจากจับคู่แล้ว (เช่น ผ่านการอัปเดตเฟิร์มแวร์) สามารถเลือกคีย์บัญชีที่มีอยู่ได้ คุณเลือกคีย์บัญชีแรกที่ใช้เพื่ออ่านสถานะการจัดสรรจากลักษณะการทำงานของบีคอนได้ หลังจากอัปเดตเฟิร์มแวร์ โดยถือว่าผู้ใช้ที่ทำการอัปเดตเป็นเจ้าของปัจจุบันของผู้ให้บริการ
คีย์ข้อมูลประจำตัวชั่วคราว (EIK): คีย์ขนาด 32 ไบต์ที่ Seeker เลือกแบบสุ่ม เมื่อดำเนินการตามกระบวนการจัดสรร FHN คีย์นี้ใช้เพื่อสร้างคีย์การเข้ารหัสที่ใช้สำหรับการเข้ารหัสรายงานตำแหน่งจากต้นทางถึงปลายทาง Seeker จะไม่เปิดเผยต่อแบ็กเอนด์
คีย์การกู้คืน: กำหนดเป็น
SHA256(ephemeral identity key || 0x01)ตัดให้เหลือ 8 ไบต์แรก ระบบจะจัดเก็บคีย์ไว้ในแบ็กเอนด์และผู้ขอข้อมูลสามารถใช้คีย์นี้เพื่อ กู้คืน EIK ได้ หากผู้ใช้แสดงความยินยอม โดยกดปุ่มในอุปกรณ์คีย์วงแหวน: กำหนดเป็น
SHA256(ephemeral identity key || 0x02)ที่ตัดทอน เป็น 8 ไบต์แรก ระบบจะจัดเก็บคีย์ไว้ในแบ็กเอนด์และผู้ค้นหาจะใช้คีย์นี้ได้เพื่อส่งเสียงอุปกรณ์เท่านั้นคีย์การป้องกันการติดตามที่ไม่ต้องการ: กำหนดเป็น
SHA256(ephemeral identity key || 0x03)โดยตัดทอนให้เหลือ 8 ไบต์แรก ระบบจะจัดเก็บคีย์ไว้ในแบ็กเอนด์ และผู้ค้นหาจะใช้คีย์นี้ได้เฉพาะเพื่อเปิดใช้งานโหมดการปกป้องจากการติดตามที่ไม่ต้องการ
การดำเนินการ
รูปแบบของข้อมูลที่เขียนลงในลักษณะจะอยู่ในตารางที่ 2 ถึง 5 เราจะอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับการดำเนินการแต่ละอย่างในส่วนนี้ในภายหลัง
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | รหัสข้อมูล |
|
| 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 | อาร์เรย์ไบต์ | ข้อมูลเพิ่มเติม |
|
ตารางที่ 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 | รหัสข้อมูล |
|
| 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 | อาร์เรย์ไบต์ | ข้อมูลเพิ่มเติม |
|
ตารางที่ 4: คำขอการโทร
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | รหัสข้อมูล |
|
| 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 | อาร์เรย์ไบต์ | ข้อมูลเพิ่มเติม |
|
ตารางที่ 5: คำขอการป้องกันการติดตามที่ไม่พึงประสงค์
การเขียนที่สำเร็จจะทริกเกอร์การแจ้งเตือนตามที่ระบุไว้ในตารางที่ 6
การแจ้งเตือนที่มีรหัสข้อมูลอื่นนอกเหนือจาก 0x05: การเปลี่ยนแปลงสถานะการโทร ควรส่งก่อนที่ธุรกรรมการเขียนที่ทริกเกอร์การแจ้งเตือนจะเสร็จสมบูรณ์ นั่นคือ ก่อนที่จะส่ง PDU การตอบกลับสำหรับคำขอเขียน
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | รหัสข้อมูล |
|
| 1 | uint8 | ความยาวข้อมูล | แตกต่างกันไป |
| 2 - 9 | อาร์เรย์ไบต์ | การตรวจสอบสิทธิ์ | โดยละเอียดต่อการดำเนินการ |
| 10 - var | อาร์เรย์ไบต์ | ข้อมูลเพิ่มเติม |
|
ตารางที่ 6: การตอบกลับของบริการ Beacon
ตารางที่ 7 แสดงรหัสข้อผิดพลาด GATT ที่การดำเนินการอาจแสดง
| รหัส | คำอธิบาย | หมายเหตุ |
|---|---|---|
| 0x80 | ไม่ได้ตรวจสอบสิทธิ์ | แสดงผลในการตอบกลับคำขอเขียนเมื่อการตรวจสอบสิทธิ์ ไม่สำเร็จ (รวมถึงกรณีที่ใช้ Nonce เก่า) |
| 0x81 | ค่าไม่ถูกต้อง | แสดงผลเมื่อมีการระบุค่าที่ไม่ถูกต้องหรือข้อมูลที่ได้รับมีจำนวนไบต์ที่ไม่คาดคิด |
| 0x82 | ไม่มีความยินยอมของผู้ใช้ | แสดงผลเพื่อตอบสนองต่อคำขอเขียนที่มีรหัสข้อมูล 0x04: อ่านคีย์ระบุตัวตนชั่วคราวโดยได้รับความยินยอมจากผู้ใช้เมื่ออุปกรณ์ไม่ได้อยู่ในโหมดจับคู่ |
ตารางที่ 7: รหัสข้อผิดพลาดของ GATT
อ่านพารามิเตอร์ของบีคอน
Seeker สามารถค้นหาพารามิเตอร์ของ Beacon จาก Provider ได้โดยการดำเนินการ เขียนไปยังลักษณะที่ประกอบด้วยคำขอจากตารางที่ 2 ที่มี รหัสข้อมูล 0x00 ผู้ให้บริการจะยืนยันว่าคีย์การตรวจสอบสิทธิ์แบบใช้ครั้งเดียวที่ระบุตรงกับคีย์บัญชีที่จัดเก็บไว้ในอุปกรณ์หรือไม่
หากยืนยันไม่สำเร็จ ผู้ให้บริการจะแสดงข้อผิดพลาดที่ไม่ได้ตรวจสอบสิทธิ์
เมื่อดำเนินการสำเร็จ ผู้ให้บริการจะแจ้งให้ทราบด้วยการตอบกลับจากตารางที่ 6 พร้อมรหัสข้อมูล 0x00 ผู้ให้บริการสร้างกลุ่มข้อมูลดังนี้
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | กำลังที่ปรับแล้ว | กำลังที่ปรับเทียบแล้วตามที่ได้รับที่ 0 ม. (ค่าในช่วง [-100, 20]) แสดงเป็นจำนวนเต็มแบบมีเครื่องหมาย โดยมีความละเอียด 1 dBm |
| 1 - 4 | uint32 | ค่านาฬิกา | ค่านาฬิกาปัจจุบันเป็นวินาที (Big Endian) |
| 5 | uint8 | การเลือกเส้นโค้ง | เส้นโค้งวงรีที่ใช้สำหรับการเข้ารหัส
|
| 6 | uint8 | คอมโพเนนต์ | จำนวนคอมโพเนนต์ที่สามารถส่งเสียงเรียกได้:
|
| 7 | uint8 | ความสามารถในการโทรเข้า | ตัวเลือกที่รองรับมีดังนี้
|
| 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 ผู้ให้บริการสร้างกลุ่มข้อมูลดังนี้
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | สถานะการจัดสรร | บิตมาสก์ที่มีค่าต่อไปนี้
|
| 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 หรือเปลี่ยน คีย์ข้อมูลประจำตัวชั่วคราวของผู้ให้บริการที่จัดสรรแล้ว ผู้ค้นหาจะดำเนินการ เขียนไปยังลักษณะที่ประกอบด้วยคำขอจากตารางที่ 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 ที่มีข้อมูล ID 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 จะจัดเก็บคีย์ไว้ในเครื่องเท่านั้น ดังนั้น ความสามารถนี้จึงพร้อมใช้งานเฉพาะเมื่อ อุปกรณ์อยู่ในโหมดการจับคู่ หรือในช่วงเวลาที่จำกัดหลังจากกดปุ่มจริง บนอุปกรณ์ (ซึ่งถือเป็นการให้ความยินยอมของผู้ใช้)
ผู้ขอต้องจัดเก็บคีย์การกู้คืนไว้ในแบ็กเอนด์จึงจะกู้คืน คีย์ข้อความธรรมดาได้ แต่จะไม่จัดเก็บ 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 - 2 | uint16 | หมดเวลา | ระยะหมดเวลาในหน่วยเดซิเซคันด์ ต้องไม่เป็น 0 และต้องไม่
เกิน 10 นาที ผู้ให้บริการใช้ค่านี้เพื่อกำหนดระยะเวลาที่ควรส่งเสียงเรียกเข้าก่อน ปิดเสียง การหมดเวลาจะลบล้างการหมดเวลาที่มีผลอยู่แล้วหาก คอมโพเนนต์ของอุปกรณ์ดังอยู่ หากตั้งค่าการดำเนินการเรียกเป็น 0x00 ระบบจะไม่สนใจการหมดเวลา |
| 3 | uint8 | ระดับเสียง |
|
เมื่อได้รับคำขอ ผู้ให้บริการจะยืนยันว่า
- คีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์วงแหวน
- สถานะที่ขอตรงกับคอมโพเนนต์ที่ส่งเสียงได้
หากไม่ได้จัดสรรผู้ให้บริการเป็นบีคอน FHN หรือการยืนยันไม่สำเร็จ ระบบจะแสดงข้อผิดพลาดที่ไม่ได้ตรวจสอบสิทธิ์ อย่างไรก็ตาม หากผู้ให้บริการเปิดใช้การป้องกันการติดตามที่ไม่ต้องการ และคำขอการป้องกันการติดตามที่ไม่ต้องการที่ทริกเกอร์มีการเปิดใช้แฟล็กการตรวจสอบสิทธิ์การข้ามการโทร ผู้ให้บริการควรข้ามการตรวจสอบนั้น ระบบยังคงคาดหวังให้ผู้ค้นหาเป็นผู้ระบุข้อมูลการตรวจสอบสิทธิ์ แต่สามารถตั้งค่าเป็นค่าใดก็ได้
เมื่อการเรียกเข้าเริ่มหรือสิ้นสุด ระบบจะส่งการแจ้งเตือนตามที่ระบุไว้ในตารางที่ 6 พร้อมรหัสข้อมูล 0x05 เนื้อหาของการแจ้งเตือนมีการกำหนดดังนี้
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | สถานะการโทร |
|
| 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) ตามลำดับ คำขอนี้จะลบล้างพารามิเตอร์ของสถานะที่มีอยู่ เพื่อให้ขยาย ระยะเวลาการโทรได้
หากผู้ให้บริการมีปุ่มจริง (หรือเปิดใช้การสัมผัส) ปุ่มนั้น ควรหยุดฟังก์ชันการโทรหากกดขณะที่การโทรทำงานอยู่
รับสถานะการส่งเสียงของบีคอน
หากต้องการรับสถานะการส่งเสียงของบีคอน Seeker จะดำเนินการเขียนไปยังลักษณะที่ประกอบด้วยคำขอจากตารางที่ 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 |
โดยแฟล็กจะมีผลจนกว่าจะปิดใช้โหมดการป้องกันการติดตามที่ไม่ต้องการ เท่านั้น |
ผู้ให้บริการจะยืนยันว่าคีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับ คีย์การป้องกันการติดตามที่ไม่ต้องการ หากไม่ได้จัดสรรผู้ให้บริการเป็นบีคอน 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)
การค้นหาที่แม่นยำ
ส่วนนี้จะอธิบายรายละเอียดโฟลว์และการดำเนินการเพิ่มเติมที่จำเป็นสำหรับ การค้นหาที่แม่นยำ กฎเดียวกันสำหรับลักษณะ GATT และการตรวจสอบสิทธิ์จะใช้ที่นี่ตามที่กำหนดไว้ในส่วนข้อกำหนดเฉพาะของ GATT การค้นหาที่แม่นยำเป็นฟีเจอร์ที่ไม่บังคับ
ประเภทของการค้นหาที่แม่นยำจะขึ้นอยู่กับประเภทของเทคโนโลยีการวัดระยะ ที่รองรับในอุปกรณ์ที่ใช้การค้นหาที่แม่นยำ ดูเทคโนโลยีการวัดระยะที่รองรับได้ในข้อกําหนดการวัดระยะ: ลําดับข้อความนอกแบนด์และ เพย์โหลด ส่วนต่อๆ ไปจะอธิบายถึงประสบการณ์การค้นหาที่แม่นยำ ซึ่งคาดว่าจะได้รับตามเทคโนโลยีการวัดระยะที่ใช้
ขั้นตอนการค้นหาที่แม่นยำ
ส่วนนี้จะอธิบายโฟลว์ข้อความ FHNA สำหรับการค้นหาที่แม่นยำ รูปที่ 1 แสดงโฟลว์ของข้อความ และย่อหน้าจะอธิบายข้อความแต่ละรายการโดยละเอียด

รูปที่ 1 ขั้นตอนการส่งข้อความการค้นหาตำแหน่งที่มีความแม่นยำโดยทั่วไป
อุปกรณ์ผู้เริ่มคืออุปกรณ์ที่มีแอปศูนย์การค้นหาและเป็นอุปกรณ์ที่ใช้ฟีเจอร์การค้นหาที่แม่นยำ ผู้เริ่มคืออุปกรณ์ที่ พยายามค้นหาอุปกรณ์อื่น
อุปกรณ์ตอบกลับคืออุปกรณ์ที่อุปกรณ์เริ่มต้นพยายามค้นหา
อุปกรณ์ Initiator จะส่งข้อความคำขอความสามารถในการวัดระยะไปยังอุปกรณ์ Responder ซึ่งจะแสดงรายการเทคโนโลยีการวัดระยะที่ต้องการ เรียนรู้จากอุปกรณ์ Responder อุปกรณ์ที่ตอบกลับจะตอบกลับ พร้อมการแจ้งเตือนการตอบกลับความสามารถในการวัดระยะ ซึ่งมีข้อมูลเกี่ยวกับ เทคโนโลยีการวัดระยะที่รองรับและความสามารถของเทคโนโลยีเหล่านั้น ผู้ตอบจะระบุเฉพาะข้อมูลที่ผู้เริ่มร้องขอเท่านั้น ระบบจะจัดเรียงรายการความสามารถตามลำดับความสำคัญของเทคโนโลยีการวัดระยะที่อุปกรณ์ตอบรับต้องการ โดยรายการแรกในรายการจะมีลำดับความสำคัญสูงสุด
จากนั้นอุปกรณ์ที่เริ่มจะส่งข้อความการกำหนดค่าการวัดระยะ ซึ่งจะกำหนดค่าสำหรับการวัดระยะแต่ละเทคโนโลยีที่ต้องการ วัดระยะด้วย เมื่อได้รับข้อความนี้ อุปกรณ์ตอบกลับต้องเริ่มวัดระยะ สำหรับเทคโนโลยีที่เกี่ยวข้องโดยใช้การกำหนดค่าที่ระบุ อุปกรณ์ที่ตอบกลับ จะส่งการแจ้งเตือนการตอบกลับการกำหนดค่าการวัดระยะกลับมา ซึ่ง มีการระบุผลลัพธ์ว่าเทคโนโลยีการวัดระยะแต่ละอย่างเริ่มทำงาน สำเร็จหรือไม่ เทคโนโลยีการวัดระยะบางอย่างต้องเริ่มต้นในทั้งอุปกรณ์ Initiator และ Responder เพื่อให้เซสชันการวัดระยะสำเร็จ ในขณะที่ เทคโนโลยีอื่นๆ จำเป็นต้องเริ่มต้นในอุปกรณ์ Initiator เท่านั้น อย่างไรก็ตาม อุปกรณ์ Responder ต้องตอบกลับด้วยผลลัพธ์ที่สำเร็จสำหรับเทคโนโลยีดังกล่าว ดูข้อมูลเพิ่มเติมเกี่ยวกับลักษณะการทำงานของเทคโนโลยีการวัดระยะที่เฉพาะเจาะจงได้ในส่วนถัดไป
เมื่ออุปกรณ์ที่เริ่มพร้อมที่จะหยุดเซสชันการค้นหาที่แม่นยำแล้ว อุปกรณ์จะส่งข้อความหยุดการวัดระยะไปยังอุปกรณ์ที่ตอบกลับ ซึ่งจะระบุเทคโนโลยีการวัดระยะที่ต้องหยุดการวัดระยะ อุปกรณ์ตอบกลับจะตอบกลับด้วยการแจ้งเตือนการตอบกลับการหยุดการวัดระยะ ซึ่งบ่งชี้ว่าหยุดการวัดระยะ ด้วยเทคโนโลยีการวัดระยะที่ขอเรียบร้อยแล้ว
ในกรณีที่ช่องทางการสื่อสาร FHNA BLE GATT ตัดการเชื่อมต่อกลางเซสชันการค้นหาที่แม่นยำ แต่ในขณะที่เทคโนโลยีการวัดระยะบางอย่างยังคงวัดระยะอยู่ อุปกรณ์ตอบกลับจะใช้กลไกการหมดเวลาเพื่อให้แน่ใจว่าอุปกรณ์จะไม่วัดระยะอย่างไม่มีกำหนด รายละเอียดจะขึ้นอยู่กับกรณีการใช้งานแต่ละกรณี
โปรดทราบว่าอุปกรณ์ที่ตอบกลับต้องไม่ถือว่าลำดับการดำเนินการจะเหมือนกันเสมอ เช่น อุปกรณ์ตอบกลับต้องสามารถจัดการการดำเนินการคำขอความสามารถในการวัดระยะหลายรายการติดต่อกัน หรือแม้แต่การดำเนินการกำหนดค่าการวัดระยะโดยตรงโดยไม่มีคำขอความสามารถก่อนหน้า
การดำเนินการค้นหาที่แม่นยำ
ตารางที่ 8 แสดงการดำเนินการ FHNA ที่กำหนดโดยเอกสารนี้ซึ่งจำเป็นสำหรับ การค้นหาที่แม่นยำ ส่วนย่อยแต่ละส่วนจะกำหนดข้อความ FHNA สำหรับการดำเนินการแต่ละอย่าง ขณะที่เนื้อหาของฟิลด์ข้อมูลเพิ่มเติมจะอ้างอิงถึงข้อกำหนดการวัดระยะ: ลำดับข้อความนอกแบนด์และ เพย์โหลด
| การดำเนินการ | รหัสข้อมูล | คำอธิบาย |
|---|---|---|
| คำขอความสามารถในการวัดระยะ | 0x0A | การดำเนินการคำขอความสามารถที่จะส่งจากอุปกรณ์ Initiator ไปยังอุปกรณ์ Responder เนื้อหาข้อมูลของการดำเนินการนี้จะแสดงเทคโนโลยีการวัดระยะทั้งหมดที่ผู้เริ่มต้องการทราบจากอุปกรณ์ผู้ตอบ |
| การตอบกลับความสามารถในการวัดระยะ | 0x0A | นี่คือการตอบกลับการแจ้งเตือนสำหรับการดำเนินการคำขอความสามารถในการวัดระยะ มีข้อมูลเกี่ยวกับความสามารถของเทคโนโลยีการวัดระยะที่รองรับแต่ละรายการซึ่งผู้เริ่มขอ |
| การกำหนดค่าการวัดระยะ | 0x0B | การดำเนินการกำหนดค่าการวัดระยะประกอบด้วยการกำหนดค่าสำหรับเทคโนโลยีการวัดระยะที่อุปกรณ์ Initiator ต้องการเริ่มการวัดระยะกับอุปกรณ์ Responder |
| การตอบกลับการกำหนดค่าการวัดระยะ | 0x0B | นี่คือการตอบกลับการแจ้งเตือนสำหรับการดำเนินการกำหนดค่าการวัดระยะ ซึ่งมีข้อมูลว่าอุปกรณ์ตอบกลับเริ่มการวัดระยะด้วยเทคโนโลยีการวัดระยะที่ขอตามการกำหนดค่าที่ระบุได้สำเร็จหรือไม่ |
| RFU | 0x0C | ระบบจะไม่ใช้การดำเนินการที่มีรหัสข้อมูลนี้และจะสงวนไว้สำหรับการใช้งานในอนาคต |
| หยุดการวัดระยะ | 0x0D | การดำเนินการหยุดการวัดระยะที่อุปกรณ์ Initiator ส่งจะมีข้อมูลเกี่ยวกับเทคโนโลยีการวัดระยะที่อุปกรณ์ Responder ต้องหยุดการวัดระยะด้วย |
| หยุดการตอบสนองการวัดระยะ | 0x0D | นี่คือการตอบกลับการแจ้งเตือนสำหรับการดำเนินการหยุดการวัดระยะ ซึ่งมีข้อมูลว่าการดำเนินการหยุดเทคโนโลยีการวัดระยะที่เฉพาะเจาะจงสำเร็จหรือไม่ |
ตารางที่ 8: การดำเนินการค้นหาที่แม่นยำ
การดำเนินการคำขอความสามารถในการวัดระยะ
ตารางที่ 9 กำหนดข้อความคำขอความสามารถในการวัดระยะ
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | รหัสข้อมูล | 0x0A - การดำเนินการคำขอความสามารถในการวัดระยะ |
| 1 | uint8 | ความยาวข้อมูล | แปรเปลี่ยน |
| 2 | อาร์เรย์ไบต์ | คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว | ไบต์ 8 ตัวแรกของ HMAC-SHA256(คีย์บัญชี, หมายเลขเวอร์ชันหลักของโปรโตคอล || Nonce สุดท้ายที่อ่านจากลักษณะ || รหัสข้อมูล || ความยาวข้อมูล || ข้อมูลเพิ่มเติม) |
| 10 | อาร์เรย์ไบต์ | ข้อมูลเพิ่มเติม | ข้อความคำขอความสามารถในการวัดระยะตามที่กำหนดไว้ในข้อกำหนดการวัดระยะ: ลำดับข้อความและเพย์โหลดนอกแบนด์ (ทั้งส่วนหัวและเพย์โหลด) |
ตารางที่ 9: คำขอความสามารถในการวัดระยะ
การดำเนินการตอบกลับความสามารถในการวัดระยะ
ตารางที่ 10 กำหนดข้อความตอบกลับความสามารถในการวัดระยะ
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | รหัสข้อมูล | 0x0A: การตอบกลับความสามารถในการวัดระยะ |
| 1 | uint8 | ความยาวข้อมูล | แปรเปลี่ยน |
| 2 | อาร์เรย์ไบต์ | คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว | ไบต์ 8 ตัวแรกของ HMAC-SHA256(คีย์บัญชี, หมายเลขเวอร์ชันหลักของโปรโตคอล || Nonce ล่าสุดที่อ่านจากลักษณะ || รหัสข้อมูล || ความยาวข้อมูล || ข้อมูลเพิ่มเติม || 0x01) |
| 10 | อาร์เรย์ไบต์ | ข้อมูลเพิ่มเติม | ข้อความการตอบกลับความสามารถในการวัดระยะตามที่กำหนดไว้ในข้อกำหนดการวัดระยะ: ลำดับข้อความและเพย์โหลดนอกแบนด์ (ทั้งส่วนหัวและเพย์โหลด) |
ตารางที่ 10: การตอบสนองความสามารถในการวัดระยะ
การดำเนินการกำหนดค่าการวัดระยะ
ตารางที่ 11 กำหนดข้อความการกำหนดค่าการวัดระยะ
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | รหัสข้อมูล | 0x0B - ตั้งค่าการวัดระยะ |
| 1 | uint8 | ความยาวข้อมูล | แปรเปลี่ยน |
| 2 | อาร์เรย์ไบต์ | คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว | ไบต์ 8 ตัวแรกของ HMAC-SHA256(คีย์บัญชี, หมายเลขเวอร์ชันหลักของโปรโตคอล || Nonce สุดท้ายที่อ่านจากลักษณะ || รหัสข้อมูล || ความยาวข้อมูล || ข้อมูลเพิ่มเติม) |
| 10 | อาร์เรย์ไบต์ | ข้อมูลเพิ่มเติม | ข้อความการกำหนดค่าการวัดระยะตามที่กำหนดไว้ในข้อกำหนดการวัดระยะ: ลำดับข้อความและเพย์โหลดนอกแบนด์ (ทั้งส่วนหัวและเพย์โหลด) |
ตารางที่ 11: การกำหนดค่าการวัดระยะ
การดำเนินการตอบกลับการกำหนดค่าการวัดระยะ
ตารางที่ 12 กำหนดข้อความตอบกลับการกำหนดค่าการวัดระยะ
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | รหัสข้อมูล | 0x0B - ตั้งค่าการตอบกลับการกำหนดค่าการวัดระยะ |
| 1 | uint8 | ความยาวข้อมูล | แปรเปลี่ยน |
| 2 | อาร์เรย์ไบต์ | คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว | ไบต์ 8 ตัวแรกของ HMAC-SHA256(คีย์บัญชี, หมายเลขเวอร์ชันหลักของโปรโตคอล || Nonce ล่าสุดที่อ่านจากลักษณะ || รหัสข้อมูล || ความยาวข้อมูล || ข้อมูลเพิ่มเติม || 0x01) |
| 10 | อาร์เรย์ไบต์ | ข้อมูลเพิ่มเติม | ข้อความการตอบกลับการกำหนดค่าการวัดระยะตามที่กำหนดไว้ในข้อกำหนดการวัดระยะ: ลำดับข้อความและเพย์โหลดนอกแบนด์ (ทั้งส่วนหัวและเพย์โหลด) |
ตารางที่ 12: การตอบกลับการกำหนดค่าการวัดระยะ
หยุดการดำเนินการวัดระยะ
ตารางที่ 13 อธิบายข้อความหยุดการวัดระยะ
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | รหัสข้อมูล | 0x0D - หยุดการวัดระยะ |
| 1 | uint8 | ความยาวข้อมูล | แปรเปลี่ยน |
| 2 | อาร์เรย์ไบต์ | คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว | ไบต์ 8 ตัวแรกของ HMAC-SHA256(คีย์บัญชี, หมายเลขเวอร์ชันหลักของโปรโตคอล || Nonce สุดท้ายที่อ่านจากลักษณะ || รหัสข้อมูล || ความยาวข้อมูล) |
| 10 | อาร์เรย์ไบต์ | ข้อมูลเพิ่มเติม | ข้อความหยุดการวัดระยะตามที่กำหนดไว้ในข้อกำหนดการวัดระยะ: ลำดับข้อความและเพย์โหลดนอกแบนด์ (ทั้งส่วนหัวและเพย์โหลด) |
ตารางที่ 13: หยุดการวัดระยะ
หยุดการดำเนินการตอบกลับการวัดระยะ
ตารางที่ 14 กำหนดข้อความการตอบกลับการหยุดการวัดระยะ
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | รหัสข้อมูล | 0x0D - การตอบกลับการหยุดการวัดระยะ |
| 1 | uint8 | ความยาวข้อมูล | แปรเปลี่ยน |
| 2 | อาร์เรย์ไบต์ | คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว | ไบต์ 8 ตัวแรกของ HMAC-SHA256(คีย์บัญชี, หมายเลขเวอร์ชันหลักของโปรโตคอล || Nonce ล่าสุดที่อ่านจากลักษณะ || รหัสข้อมูล || ความยาวข้อมูล || ข้อมูลเพิ่มเติม || 0x01) |
| 10 | อาร์เรย์ไบต์ | ข้อมูลเพิ่มเติม | ข้อความหยุดการตอบกลับการวัดระยะตามที่กำหนดไว้ในข้อกำหนดการวัดระยะ: ลำดับข้อความและเพย์โหลดนอกแบนด์ (ทั้งส่วนหัวและเพย์โหลด) |
ตารางที่ 14: การตอบสนองเมื่อหยุดการวัดระยะ
การป้องกันการติดตามที่ไม่พึงประสงค์ด้วยการค้นหาที่แม่นยำ
เมื่อเปิดใช้งานโหมดการป้องกันการติดตามที่ไม่ต้องการตามที่อธิบายไว้ใน ส่วนการป้องกันการติดตามที่ไม่ต้องการ โฟลว์เดียวกันที่ใช้กับการข้าม การตรวจสอบสิทธิ์สำหรับข้อความที่ทำให้เกิดเสียงเรียกเข้าจะใช้กับข้อความการหาตำแหน่งที่แม่นยำทั้งหมดที่กำหนดไว้ในเอกสารนี้สำหรับอุปกรณ์ที่ต้องการรองรับ ฟีเจอร์นี้ด้วย
รายละเอียดเทคโนโลยีการวัดระยะสำหรับการค้นหาที่แม่นยำ
ส่วนนี้มีรายละเอียดที่เกี่ยวข้องกับเทคโนโลยีการวัดระยะ
รายละเอียดเกี่ยวกับแถบความถี่กว้างยิ่งยวด (UWB)
รายละเอียดเฉพาะของ UWB
ระดับการค้นหาที่แม่นยำ
เซสชันการค้นหาที่แม่นยำซึ่งใช้ UWB เป็นเทคโนโลยีการวัดระยะทางจะแสดงข้อมูลทั้งระยะทางและทิศทาง ช่วงการวัดต้องมีระยะเวลาอย่างน้อย 240 มิลลิวินาที โดยแนะนำให้ใช้ 96 มิลลิวินาทีเพื่อให้คำแนะนำที่ดีที่สุด
รหัสการกำหนดค่า
ข้อมูลการกำหนดค่าแบบ Out-of-Band ที่แลกเปลี่ยนสำหรับ UWB ไม่มีชุดพารามิเตอร์ที่กำหนดค่าได้ทั้งหมดซึ่ง UWB ต้องใช้เพื่อเริ่มเซสชันการวัดระยะ UWB ระบบจะเลือกพารามิเตอร์บางอย่างโดยนัยตามรหัสการกำหนดค่าที่เลือก
รหัสการกำหนดค่าแต่ละรายการคือชุดพารามิเตอร์การกำหนดค่า UWB ที่กำหนดไว้ล่วงหน้า ซึ่งมีเอกสารแบบสาธารณะ สำหรับกรณีการใช้งานการค้นหาที่แม่นยำ อุปกรณ์ตอบกลับต้องรองรับ config Id 6 และอาจรองรับ config Id 3
ผู้เริ่มและผู้ตอบ UWB
สำหรับกรณีการใช้งานการค้นหาที่แม่นยำ อุปกรณ์ที่ระบุว่าเป็นอุปกรณ์เริ่มต้นในเอกสารนี้จะเป็นอุปกรณ์ตอบกลับ UWB และอุปกรณ์ที่ระบุว่าเป็นอุปกรณ์ตอบกลับในเอกสารนี้จะเป็นอุปกรณ์เริ่มต้น UWB เนื่องจากอุปกรณ์ที่เริ่มการสื่อสาร UWB จะใช้พลังงานน้อยกว่าอุปกรณ์ที่ตอบสนอง UWB และในกรณีส่วนใหญ่ อุปกรณ์ที่ตอบสนองจะเป็นอุปกรณ์ต่อพ่วงที่มีแบตเตอรี่จำกัด
ซึ่งหมายความว่าอุปกรณ์ตอบกลับต้องระบุว่ารองรับบทบาทผู้เริ่ม UWB ในข้อความการตอบกลับความสามารถในการวัดระยะ
พารามิเตอร์อื่นๆ ที่เกี่ยวข้องกับ UWB
- ต้องรองรับ Channel 9
- เราขอแนะนำให้ใช้ช่วงการวัดระยะ 96 มิลลิวินาทีเพื่อให้คำแนะนำที่ดีที่สุด ไม่เช่นนั้นจะต้องรองรับ 240 มิลลิวินาที
- เราขอแนะนำให้ใช้ระยะเวลาสล็อต 1 มิลลิวินาทีเพื่อประหยัดแบตเตอรี่ แต่ระบบก็รองรับ 2 มิลลิวินาทีด้วย
- ชิป UWB ต้องเป็นไปตามข้อกำหนดของ FIRA v1.2 + P-STS เป็นอย่างน้อย
- ต้องใช้ BPRF แต่ขอแนะนำให้ใช้ HPRF แต่ไม่บังคับ โหมดที่รองรับหรือเลือกจะกำหนดโดยดัชนี Preamble ที่รองรับหรือเลือก
- ประเภทความปลอดภัยของเซสชัน: P-STS
รายละเอียดการตรวจหาช่องสัญญาณ BLE (CS)
รายละเอียดเฉพาะของ BLE CS
ระดับการค้นหาที่แม่นยำ
เซสชันการค้นหาที่แม่นยำที่ใช้ CS เป็นเทคโนโลยีการวัดระยะจะทำให้เกิด การวัดระยะทางเท่านั้น และระบบจะไม่ระบุทิศทางในขณะนี้
การจับคู่อุปกรณ์ที่จำเป็น
เซสชันการค้นหาที่แม่นยำโดยใช้การตรวจหาช่องสัญญาณจะใช้งานไม่ได้หากอุปกรณ์ไม่ได้จับคู่กัน ต้องมีการเชื่อมต่อที่มีอยู่ระหว่างอุปกรณ์ที่เริ่มและอุปกรณ์ที่ตอบ ข้อกำหนดนี้ไม่ได้ระบุวิธีสร้างการเชื่อมต่อระหว่างอุปกรณ์ แต่จะเป็นหน้าที่ของนักพัฒนา Use Case ในการสร้าง การเชื่อมต่อระหว่างอุปกรณ์
การดำเนินการที่ฝั่งผู้ตอบต้องทำสำหรับ CS
ต่างจาก UWB ที่ต้องใช้อุปกรณ์ทั้ง 2 เครื่องเพื่อเรียกใช้ API สำหรับการเริ่มการวัดระยะ UWB และการหยุดการวัดระยะอย่างชัดเจน สำหรับ CS นั้น จำเป็นต้องใช้อุปกรณ์เริ่มต้นเพียงเครื่องเดียวเพื่อเริ่มการวัดระยะ CS โดยการเรียกใช้สแต็กบลูทูธ ส่วนการเริ่มต้นที่เหลือในฝั่งอุปกรณ์ตอบกลับจะเกิดขึ้นในแบนด์โดยใช้บลูทูธ (BT) ซึ่งหมายความว่าเมื่อได้รับข้อความการกำหนดค่าการวัดระยะหรือข้อความหยุดการวัดระยะสำหรับ CS ฝั่งผู้ตอบไม่ต้องดำเนินการใดๆ หากเปิดใช้ BT ไว้ นอกเหนือจาก การตอบกลับด้วยการแจ้งเตือนข้อความการตอบกลับการกำหนดค่าการวัดระยะ อุปกรณ์ตอบกลับอาจใช้ข้อความเหล่านั้นเป็นทริกเกอร์เพื่ออัปเดต UI ในกรณีที่มีหน้าจอ หรือไม่ว่าจะมีหน้าจอหรือไม่ก็ตาม ก็อาจใช้ เพื่อแสดงผลภาพเกี่ยวกับสถานะของอุปกรณ์ได้ เช่น กะพริบไฟ LED ของอุปกรณ์
RTT ของ Wi-Fi NAN
รายละเอียดเฉพาะของ RTT สำหรับ Wi-Fi NAN
ระดับการค้นหาที่แม่นยำ
เซสชันการค้นหาที่แม่นยำซึ่งใช้ Wi-Fi NAN RTT เป็นเทคโนโลยีการวัดระยะจะ ทำให้มีการวัดเฉพาะระยะทางเท่านั้น และระบบจะไม่ระบุทิศทางในขณะนี้
RSSI ของ BLE
รายละเอียดเฉพาะของ BLE RSSI
ระดับการค้นหาที่แม่นยำ
เซสชันการค้นหาที่แม่นยำซึ่งใช้เฉพาะ BLE RSSI เป็นเทคโนโลยีการวัดระยะจะไม่สามารถรับข้อมูลระยะทางหรือทิศทางได้ เนื่องจาก BLE RSSI ไม่ใช่เทคโนโลยีการวัดระยะที่แม่นยำ แต่ผู้ใช้จะเห็นคำแนะนำ ที่ระบุว่าอุปกรณ์อยู่ใกล้หรืออยู่ไกล
เฟรมที่โฆษณา
หลังจากจัดสรรแล้ว ผู้ให้บริการควรโฆษณาเฟรม 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 | แฟล็กที่แฮช |
ตารางที่ 15: เฟรม FHN ที่รองรับเส้นโค้ง 160 บิต
ตารางที่ 16 แสดงออฟเซ็ตไบต์และค่าสำหรับเส้นโค้ง 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 | แฟล็กที่แฮช |
ตารางที่ 16: เฟรม FHN ที่รองรับเส้นโค้ง 256 บิต
การคำนวณตัวระบุชั่วคราว (EID)
ระบบจะสร้างค่าแบบสุ่มโดยการเข้ารหัส AES-ECB-256 ของโครงสร้างข้อมูลต่อไปนี้ ด้วยคีย์ระบุตัวตนชั่วคราว
| Octet | ช่อง | คำอธิบาย |
|---|---|---|
| 0 - 10 | Padding | Value = 0xFF |
| 11 | K | เลขชี้กำลังของระยะเวลาการหมุนเวียน |
| 12 - 15 | TS[0]...TS[3] | ตัวนับเวลาของบีคอนในรูปแบบ 32 บิตแบบ Big-Endian ระบบจะล้างบิตที่ต่ำที่สุด K |
| 16 - 26 | Padding | ค่า = 0x00 |
| 27 | K | เลขชี้กำลังของระยะเวลาการหมุนเวียน |
| 28 - 31 | TS[0]...TS[3] | ตัวนับเวลาของบีคอนในรูปแบบ 32 บิตแบบ Big-Endian ระบบจะล้างบิตที่ต่ำที่สุด K |
ตารางที่ 17: การสร้างตัวเลขสุ่มเทียม
ผลลัพธ์ของการคำนวณนี้คือตัวเลข 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 จากบีคอน) จะต้องทำดังนี้
- เลือกหมายเลขสุ่ม
sในFpตามที่กำหนดไว้ในส่วนการคำนวณ EID - Compute
S = s * G - คำนวณ
R = (Rx, Ry)โดยการแทนค่าในสมการเส้นโค้งและเลือกค่าRyที่กำหนดเองจากผลลัพธ์ที่เป็นไปได้ - คำนวณคีย์ AES 256 บิต
k = HKDF-SHA256((s * R)x)โดยที่(s * R)xคือ พิกัดxของผลลัพธ์การคูณเส้นโค้ง ไม่ได้ระบุเกลือ - ให้
URxและLRxเป็น 80 บิตบนและล่างของRxตามลำดับในรูปแบบ บิ๊กเอนเดียน ในทำนองเดียวกัน ให้กำหนดUSxและLSxสำหรับS - Compute
nonce = LRx || LSx - Compute
(m’, tag) = AES-EAX-256-ENC(k, nonce, m) - ส่ง
(URx, Sx, m’, tag)ไปยังเจ้าของ ซึ่งอาจผ่านบริการระยะไกลที่ไม่น่าเชื่อถือ
การถอดรหัสค่าที่เข้ารหัสด้วย EID
ไคลเอ็นต์ของเจ้าของซึ่งมี EIK และเลขชี้กำลังของระยะเวลาการหมุนเวียน จะถอดรหัสข้อความดังนี้
- เมื่อพิจารณา
URxแล้ว ให้รับค่าตัวนับเวลาของบีคอนที่URxอิงตาม ซึ่งทำได้โดยไคลเอ็นต์ของเจ้าของจะคำนวณค่าRxสำหรับเวลาของบีคอน ค่าตัวนับสำหรับอดีตที่ผ่านมาและอนาคตอันใกล้ - เมื่อพิจารณาค่าตัวนับเวลาของบีคอนที่
URxอิงอยู่ ให้คํานวณค่าที่คาดการณ์ไว้ของrตามที่กําหนดไว้ในส่วนการคํานวณ EID - คำนวณ
R = r * Gและตรวจสอบว่าตรงกับค่าของURxที่ผู้พบเห็นระบุหรือไม่ - คำนวณ
S = (Sx, Sy)โดยการแทนค่าในสมการเส้นโค้งและเลือกค่าSyที่กำหนดเองจากผลลัพธ์ที่เป็นไปได้ - คำนวณ
k = HKDF-SHA256((r * S)x)โดยที่(r * S)xคือพิกัดxของ ผลลัพธ์การคูณเส้นโค้ง - Compute
nonce = LRx || LSx - 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 เสมอไปเมื่อจับคู่กับผู้ค้นหา แต่จะจัดสรรหลังจากนั้นสักพัก ในกรณีดังกล่าว ผู้ให้บริการอาจไม่มีที่อยู่ BLE MAC ที่อัปเดตแล้วซึ่งจำเป็นต่อการสร้างการเชื่อมต่อ GATT ผู้ให้บริการต้อง รองรับวิธีต่อไปนี้อย่างน้อย 1 วิธีเพื่อให้ผู้ค้นหาได้รับที่อยู่ BLE ขณะที่จับคู่แล้ว
- ผู้ให้บริการสามารถโฆษณาข้อมูลบัญชี Fast Pair เป็นระยะๆ
ซึ่งจะช่วยให้ผู้ค้นหาพบที่อยู่ BLE ผ่านการสแกน BLE
แนวทางนี้เหมาะสำหรับผู้ให้บริการที่ไม่ได้ใช้สตรีมข้อความ - ผู้ให้บริการสามารถให้ข้อมูลนี้ผ่านสตรีมข้อความการจับคู่ด่วนผ่านบลูทูธคลาสสิกได้
วิธีนี้เหมาะสำหรับผู้ให้บริการที่ไม่โฆษณาเฟรมการจับคู่ด่วนขณะ เชื่อมต่อกับผู้ค้นหาผ่านบลูทูธ
การรองรับทั้ง 2 วิธีจะช่วยเพิ่มโอกาสที่ผู้ใช้จะจัดสรรอุปกรณ์สำหรับ FHN ได้
สตรีมข้อความการจับคู่ด่วน
ผู้ให้บริการสามารถใช้สตรีมข้อความการจับคู่ด่วนและใช้เพื่อแจ้งให้ ผู้ค้นหาทราบเกี่ยวกับข้อมูลอุปกรณ์ การใช้สตรีมข้อความจะช่วยให้ ฟีเจอร์บางอย่างทำงานได้ตามที่อธิบายไว้ในส่วนนี้
ผู้ให้บริการควรส่งข้อความข้อมูลอุปกรณ์ทุกครั้งที่สร้างช่อง RFCOMM ของสตรีมข้อความ
เวอร์ชันเฟิร์มแวร์ (รหัสข้อมูลอุปกรณ์ 0x09) และความสามารถในการติดตาม
เมื่อการอัปเดตเฟิร์มแวร์เพิ่มการรองรับ FHN ให้กับผู้ให้บริการ Seeker ที่เชื่อมต่อจะ แจ้งให้ผู้ใช้ทราบและเสนอการจัดสรร มิฉะนั้น ผู้ใช้จะต้อง ไปที่รายการอุปกรณ์บลูทูธด้วยตนเองเพื่อเริ่มการจัดสรร FHN
หากต้องการอนุญาตดังกล่าว ผู้ให้บริการควรใช้พร็อพเพอร์ตี้เวอร์ชันเฟิร์มแวร์ (รหัส 0x09) เพื่อรายงานค่าสตริงที่แสดงเวอร์ชันเฟิร์มแวร์ นอกจากนี้ ผู้ให้บริการควรสนับสนุนโปรโตคอลที่ช่วยให้ผู้ค้นหารับทราบการเปลี่ยนแปลงความสามารถเนื่องจากการอัปเดตเฟิร์มแวร์
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | เหตุการณ์ข้อมูลอุปกรณ์ | 0x03 |
| 1 | uint8 | เวอร์ชันเฟิร์มแวร์ | 0x09 |
| 2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | แตกต่างกันไป |
| var | อาร์เรย์ไบต์ | สตริงเวอร์ชัน | แตกต่างกันไป |
ตารางที่ 18: เหตุการณ์ข้อมูลอุปกรณ์: อัปเดตเวอร์ชันเฟิร์มแวร์
เมื่อได้รับคำขออัปเดตความสามารถ (0x0601) หากผู้ให้บริการเปิดใช้ การรองรับการติดตาม FHN ผู้ให้บริการควรตอบกลับตามที่แสดงในตารางที่ 12
| Octet | ประเภทข้อมูล | คำอธิบาย | ค่า |
|---|---|---|---|
| 0 | uint8 | เหตุการณ์การซิงค์ความสามารถของอุปกรณ์ | 0x06 |
| 1 | uint8 | การติดตาม FHN | 0x03 |
| 2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | 0x0007 |
| 4 | uint8 | สถานะการจัดสรร FHN | 0x00 หากไม่ได้จัดสรร 0x01 หากจัดสรรโดยบัญชีใดก็ตาม |
| 5 - 10 | อาร์เรย์ไบต์ | ที่อยู่ MAC ของ BLE ปัจจุบันของอุปกรณ์ | แตกต่างกันไป |
ตารางที่ 19: เหตุการณ์การซิงค์ความสามารถของอุปกรณ์: เพิ่มความสามารถในการติดตาม
ตัวระบุชั่วคราวปัจจุบัน (รหัสข้อมูลอุปกรณ์ 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 |
ตารางที่ 20: เหตุการณ์ข้อมูลอุปกรณ์: การซิงค์นาฬิกา
รีเซ็ตเป็นค่าเริ่มต้น
สำหรับอุปกรณ์ที่รองรับการรีเซ็ตเป็นค่าเริ่มต้น หากมีการรีเซ็ตเป็นค่าเริ่มต้น ผู้ให้บริการต้องหยุดการส่งสัญญาณบีคอนและล้างคีย์ข้อมูลประจำตัวชั่วคราวและคีย์บัญชีทั้งหมดที่จัดเก็บ รวมถึงคีย์บัญชีของเจ้าของ
หลังจากรีเซ็ตเป็นค่าเริ่มต้น (ด้วยตนเองหรือแบบเป็นโปรแกรม) ผู้ให้บริการไม่ควร เริ่มโฆษณา Fast Pair ทันที เพื่อป้องกันไม่ให้ขั้นตอนการจับคู่เริ่ม ทันทีหลังจากที่ผู้ใช้ลบอุปกรณ์
การป้องกันการติดตามที่ไม่พึงประสงค์
อุปกรณ์ FHN ที่ได้รับการรับรองต้องเป็นไปตามข้อกำหนดในเวอร์ชันการใช้งานของข้อกำหนดข้ามแพลตฟอร์มสำหรับ การตรวจหาอุปกรณ์ติดตามที่ไม่พึงประสงค์ (DULT) ด้วย
หลักเกณฑ์ที่เกี่ยวข้องซึ่งเฉพาะเจาะจงสำหรับ FHN เพื่อให้เป็นไปตามข้อกำหนดของ DULT
- อุปกรณ์ที่รองรับ FHN ต้องลงทะเบียนใน Nearby Device Console และเปิดใช้ความสามารถ "ค้นหาฮับ"
- อุปกรณ์ต้องใช้บริการและลักษณะของอุปกรณ์เสริมที่ไม่ใช่เจ้าของ ที่กำหนดไว้ในเวอร์ชันการใช้งานของข้อกำหนด 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 - ใช้การตอบกลับเดียวกันกับที่สร้างขึ้นสำหรับ Get_Identifier ซึ่งเข้ารหัสฐาน 16 เป็นพารามิเตอร์
e - ในฐานะพารามิเตอร์
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 ที่พร้อมใช้งาน หากต้องการใช้กลไกนี้ ให้ทำดังนี้
- คุณควรจะอัปเดตเฟิร์มแวร์เวอร์ชันล่าสุดในคอนโซลอุปกรณ์ที่อยู่ใกล้เคียง
- คุณควรตั้งค่าแอปที่ใช้ร่วมกันในคอนโซลอุปกรณ์ที่อยู่ใกล้เคียง โดยควรจะรองรับเจตนาในการอัปเดตเฟิร์มแวร์
- ผู้ให้บริการควรใช้ลักษณะ GATT ของการแก้ไขเฟิร์มแวร์
หากต้องการป้องกันการติดตาม ควรจำกัดการเข้าถึงลักษณะการแก้ไขเฟิร์มแวร์ Seeker จะอ่านสถานะการจัดสรรและระบุคีย์การตรวจสอบสิทธิ์ก่อนตามที่กำหนดไว้ในข้อกำหนดนี้ แล้วจึงอ่านการแก้ไขเฟิร์มแวร์ ซึ่งจะดำเนินการผ่านการเชื่อมต่อเดียวกัน หากมีการพยายามอ่านการแก้ไขเฟิร์มแวร์ และไม่ได้เชื่อมต่อผู้ให้บริการหรือการดำเนินการที่ผ่านการตรวจสอบสิทธิ์ไม่สำเร็จผ่านการเชื่อมต่อเดียวกันนั้น ผู้ให้บริการควรแสดงข้อผิดพลาดที่ไม่ได้ตรวจสอบสิทธิ์
ความเข้ากันได้
ต้องเปิดบริการตำแหน่งและบลูทูธจึงจะใช้เครือข่ายศูนย์การค้นหาได้ ต้องมีบริการเครือข่ายมือถือหรือการเชื่อมต่ออินเทอร์เน็ต ใช้งานได้บน Android 9 ขึ้นไปและสำหรับผู้ใช้ที่อายุถึงเกณฑ์ในบางประเทศ
บันทึกการเปลี่ยนแปลง
| เวอร์ชัน FHN | วันที่ | ความคิดเห็น |
|---|---|---|
| v1 | การเปิดตัวข้อกำหนด FHN ครั้งแรกสำหรับการทดลองใช้ก่อนเปิดตัว | |
| v1.1 | Feb 2023 |
|
| v1.2 | เม.ย. 2023 |
|
| v1.3 | ธ.ค. 2023 |
|