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 ไบต์ตามที่กำหนดไว้ในข้อกำหนดการจับคู่ด่วน
คีย์บัญชีที่เป็นเจ้าของ: ผู้ให้บริการเลือกคีย์บัญชีที่มีอยู่รายการใดรายการหนึ่ง เป็นคีย์บัญชีที่เป็นเจ้าของในครั้งแรกที่ผู้ค้นหาเข้าถึงลักษณะการทำงานของ Beacon คุณจะเปลี่ยนคีย์บัญชีเจ้าของที่เลือกไม่ได้จนกว่าจะรีเซ็ตเป็นค่าเริ่มต้น ผู้ให้บริการต้องไม่นำคีย์บัญชีเจ้าของออกเมื่อสล็อตคีย์บัญชีฟรีหมด
ผู้ให้บริการที่รองรับ 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
อ่านพารามิเตอร์ของบีคอน
ผู้ค้นหาจะค้นหาพารามิเตอร์ของบีคอนจากผู้ให้บริการได้โดยการ ดำเนินการเขียนไปยังลักษณะที่ประกอบด้วยคำขอจากตารางที่ 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 | การเพิ่มค่าศูนย์สำหรับการเข้ารหัส 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 หรือเปลี่ยน คีย์ข้อมูลประจำตัวชั่วคราวของผู้ให้บริการที่จัดสรรแล้ว 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 - 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) ตามลำดับ คำขอนี้จะลบล้างพารามิเตอร์ของสถานะที่มีอยู่ เพื่อให้ขยาย ระยะเวลาการโทรได้
หากผู้ให้บริการมีปุ่มจริง (หรือเปิดใช้การสัมผัส) ปุ่มนั้น ควรหยุดฟังก์ชันการโทรหากมีการกดขณะที่การโทรทำงานอยู่
รับสถานะการส่งเสียงของบีคอน
หากต้องการรับสถานะการส่งเสียงของบีคอน ผู้ค้นหาจะดำเนินการเขียนไปยังลักษณะที่ประกอบด้วยคำขอจากตารางที่ 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)
เฟรมที่โฆษณา
หลังจากจัดสรรแล้ว ผู้ให้บริการควรโฆษณาเฟรม 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
จากบีคอน) จะต้องทำดังนี้
- เลือกหมายเลขสุ่ม
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 เสมอไปเมื่อจับคู่กับ 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 ที่พร้อมใช้งาน หากต้องการใช้กลไกนี้ ให้ทำดังนี้
- คุณควรจะอัปเดตเฟิร์มแวร์เวอร์ชันล่าสุดในคอนโซลอุปกรณ์ที่อยู่ใกล้เคียง
- คุณควรตั้งค่าแอปที่ใช้ร่วมกันในคอนโซลอุปกรณ์ที่อยู่ใกล้เคียง โดยควรจะรองรับเจตนาในการอัปเดตเฟิร์มแวร์
- ผู้ให้บริการควรใช้ลักษณะ GATT ของการแก้ไขเฟิร์มแวร์
ควรจำกัดการเข้าถึงลักษณะการแก้ไขเฟิร์มแวร์เพื่อป้องกันการติดตาม Seeker จะอ่านสถานะการจัดสรรและระบุ คีย์การตรวจสอบสิทธิ์ตามที่กำหนดไว้ในข้อกำหนดนี้ก่อน แล้วจึงอ่าน การแก้ไขเฟิร์มแวร์ ซึ่งจะดำเนินการผ่านการเชื่อมต่อเดียวกัน หากมีการพยายามอ่านการแก้ไขเฟิร์มแวร์ และไม่ได้เชื่อมโยงผู้ให้บริการหรือการดำเนินการที่ผ่านการตรวจสอบสิทธิ์ไม่สำเร็จผ่านการเชื่อมต่อเดียวกันนั้น ผู้ให้บริการควรแสดงข้อผิดพลาดที่ไม่ได้ตรวจสอบสิทธิ์
ความเข้ากันได้
ต้องเปิดบริการตำแหน่งและบลูทูธจึงจะใช้เครือข่ายศูนย์การค้นหาได้ ต้องมีบริการเครือข่ายมือถือหรือการเชื่อมต่ออินเทอร์เน็ต ใช้งานได้บน Android 9 ขึ้นไปและสำหรับผู้ใช้ที่อายุถึงเกณฑ์ในบางประเทศ
บันทึกการเปลี่ยนแปลง
เวอร์ชัน FHN | วันที่ | ความคิดเห็น |
---|---|---|
v1 | การเปิดตัวข้อกำหนด FHN ครั้งแรกสำหรับการทดลองใช้ก่อนเปิดตัว | |
v1.1 | Feb 2023 |
|
v1.2 | เม.ย. 2023 |
|
v1.3 | ธ.ค. 2023 |
|