v1.3
ข้อกำหนดเฉพาะของอุปกรณ์เสริมเครือข่ายแอปหาอุปกรณ์ของฉัน (FMDN) กำหนดแนวทางการเข้ารหัสจากต้นทางถึงปลายทางสำหรับการติดตามอุปกรณ์บลูทูธพลังงานต่ำ (BLE) ที่ใช้บีคอน หน้านี้จะอธิบาย FMDN ว่าเป็นข้อกำหนดเพิ่มเติมสำหรับ Fast Pair ผู้ให้บริการควรเปิดใช้ส่วนขยายนี้หากมีอุปกรณ์ที่เข้ากันได้กับ FMDN และต้องการเปิดใช้การติดตามตำแหน่งสำหรับอุปกรณ์เหล่านั้น
ข้อกำหนด GATT
ควรเพิ่มแอตทริบิวต์ทั่วไป (GATT) เพิ่มเติมลงในบริการจับคู่ด่วนโดยใช้ความหมายต่อไปนี้
ลักษณะบริการจับคู่ด่วน | มีการเข้ารหัส | สิทธิ์ | UUID |
---|---|---|---|
การดำเนินการกับบีคอน | ไม่ | อ่าน เขียน และแจ้งเตือน | FE2C1238-8366-4814-8EB0-01DE32100BEA |
ตารางที่ 1: ลักษณะบริการจับคู่ด่วนสำหรับ FMDN
การตรวจสอบสิทธิ์
การดำเนินการที่จําเป็นสําหรับส่วนขยายนี้จะทําเป็นการดำเนินการเขียน ซึ่งได้รับการรักษาความปลอดภัยโดยกลไกการตอบกลับ ก่อนที่จะดําเนินการใดๆ ผู้ใช้ที่ค้นหาจะต้องดําเนินการอ่านจากลักษณะในตาราง 1 ซึ่งจะส่งผลให้บัฟเฟอร์อยู่ในรูปแบบต่อไปนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | หมายเลขเวอร์ชันหลักของโปรโตคอล | 0x01 |
1 - 8 | อาร์เรย์ไบต์ | Nonce แบบสุ่มที่ใช้เพียงครั้งเดียว | แตกต่างกัน |
การดำเนินการอ่านแต่ละรายการควรให้ Nonce ที่แตกต่างกัน และ Nonce รายการเดียวควรใช้ได้กับการดำเนินการรายการเดียวเท่านั้น หมายเลขที่ไม่ซ้ำต้องใช้งานไม่ได้แม้ว่าการดำเนินการจะล้มเหลวก็ตาม
จากนั้นผู้ค้นหาจะคํานวณคีย์การตรวจสอบสิทธิ์แบบครั้งเดียวเพื่อใช้ในคําขอเขียนครั้งถัดไป คีย์การตรวจสอบสิทธิ์จะคํานวณตามที่อธิบายไว้ในตารางที่ 2 ถึง 5 ผู้ค้นหาต้องพิสูจน์ความรู้เกี่ยวกับคีย์ต่อไปนี้อย่างน้อย 1 คีย์ โดยขึ้นอยู่กับการดำเนินการที่ขอ
คีย์บัญชี: คีย์บัญชีการจับคู่ด่วน 16 ไบต์ตามที่ระบุไว้ในข้อกำหนดการจับคู่ด่วน
คีย์บัญชีเจ้าของ: ผู้ให้บริการจะเลือกคีย์บัญชีที่มีอยู่คีย์ใดคีย์หนึ่งเป็นคีย์บัญชีเจ้าของเมื่อผู้ค้นหาเข้าถึงลักษณะการทํางานของบีคอนเป็นครั้งแรก คุณจะเปลี่ยนคีย์บัญชีเจ้าของที่เลือกไว้ไม่ได้จนกว่าผู้ให้บริการจะรีเซ็ตเป็นค่าเริ่มต้น ผู้ให้บริการต้องไม่นำคีย์บัญชีเจ้าของออกเมื่อช่องคีย์บัญชีฟรีหมด
ผู้ให้บริการที่รองรับ FMDN อยู่แล้วเมื่อจับคู่เป็นครั้งแรก (หรือรองรับเมื่อจับคู่หลังจากรีเซ็ตเป็นค่าเริ่มต้น) ให้เลือกคีย์บัญชีแรก เนื่องจากเป็นคีย์บัญชีที่มีอยู่เพียงรายการเดียวเมื่อเครื่องมือค้นหาอ่านสถานะการจัดเตรียมระหว่างการจับคู่
ผู้ให้บริการที่ได้รับการสนับสนุน FMDN หลังจากที่จับคู่แล้ว (เช่น ผ่านการอัปเดตเฟิร์มแวร์) จะเลือกคีย์บัญชีที่มีอยู่ได้ คุณควรเลือกคีย์บัญชีแรกที่ใช้อ่านสถานะการจัดสรรจากลักษณะการทำงานของบีคอนหลังจากการอัปเดตเฟิร์มแวร์ โดยสมมติว่าผู้ใช้ที่ทำการอัปเดตเป็นเจ้าของปัจจุบันของผู้ให้บริการ
คีย์ข้อมูลประจำตัวชั่วคราว (EIK): คีย์ 32 ไบต์ที่ Seeker เลือกแบบสุ่มเมื่อดำเนินการจัดสรร FMDN คีย์นี้ใช้สำหรับดึงข้อมูลคีย์การเข้ารหัสที่ใช้เข้ารหัสรายงานตำแหน่งจากต้นทางถึงปลายทาง โดย Seeker จะไม่เปิดเผยข้อมูลดังกล่าวไปยังแบ็กเอนด์
คีย์การกู้คืน: กำหนดเป็น
SHA256(ephemeral identity key || 0x01)
โดยตัดให้เหลือ 8 ไบต์แรก ระบบจะจัดเก็บคีย์ไว้ในแบ็กเอนด์และผู้ค้นหาสามารถใช้คีย์ดังกล่าวเพื่อ กู้คืน EIK ได้ ในกรณีที่ผู้ใช้แสดงความยินยอมด้วยการกดปุ่มบนอุปกรณ์คีย์วงแหวน: กำหนดเป็น
SHA256(ephemeral identity key || 0x02)
โดยตัดให้เหลือ 8 ไบต์แรก ระบบจะจัดเก็บคีย์ไว้ในแบ็กเอนด์และผู้ค้นหาจะใช้คีย์ดังกล่าวได้เพื่อทำให้อุปกรณ์ส่งเสียงเท่านั้นคีย์การป้องกันการติดตามที่ไม่พึงประสงค์: กำหนดเป็น
SHA256(ephemeral identity key || 0x03)
โดยตัดให้เหลือ 8 ไบต์แรก ระบบจะจัดเก็บคีย์ไว้ในแบ็กเอนด์และผู้ค้นหาจะใช้คีย์เพื่อเปิดใช้งานโหมดการป้องกันการติดตามที่ไม่พึงประสงค์เท่านั้น
การดำเนินการ
รูปแบบของข้อมูลที่เขียนลงในแอตทริบิวต์แสดงอยู่ในตารางที่ 2-5 เราจะอธิบายการดำเนินการแต่ละรายการอย่างละเอียดในส่วนนี้ในภายหลัง
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
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: คำขอจัดสรรบีคอน
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | รหัสข้อมูล | 0x04: อ่านคีย์ข้อมูลประจำตัวชั่วคราวเมื่อได้รับความยินยอมจากผู้ใช้ |
1 | uint8 | ความยาวข้อมูล | 0x08 |
2 - 9 | อาร์เรย์ไบต์ | คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว | ไบต์ 8 ตัวแรกของ
HMAC-SHA256(recovery key, protocol major version number || the last nonce
read from the characteristic || data ID || data length) |
ตารางที่ 3: คำขอกู้คืนคีย์การจัดสรรบีคอน
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | รหัสข้อมูล |
|
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: คำขอโทร
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
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 การตอบกลับสําหรับคําขอเขียน
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | รหัสข้อมูล |
|
1 | uint8 | ความยาวข้อมูล | แตกต่างกัน |
2 - 9 | อาร์เรย์ไบต์ | การตรวจสอบสิทธิ์ | รายละเอียดการดำเนินการแต่ละรายการ |
10 - var | อาร์เรย์ไบต์ | ข้อมูลเพิ่มเติม |
|
ตารางที่ 6: การตอบกลับบริการบีคอน
ตารางที่ 7 แสดงรหัสข้อผิดพลาด GATT ที่เป็นไปได้ซึ่งแสดงผลจากการดำเนินการ
รหัส | คำอธิบาย | หมายเหตุ |
---|---|---|
0x80 | ไม่ได้ตรวจสอบสิทธิ์ | แสดงผลเพื่อตอบสนองต่อคำขอเขียนเมื่อการตรวจสอบสิทธิ์ไม่สำเร็จ (รวมถึงกรณีที่ใช้ Nonce เก่า) |
0x81 | ค่าไม่ถูกต้อง | ระบบจะแสดงผลเมื่อมีการระบุค่าที่ไม่ถูกต้องหรือข้อมูลที่รับมีจำนวนไบต์ที่ไม่คาดคิด |
0x82 | ไม่มีความยินยอมจากผู้ใช้ | แสดงผลเพื่อตอบสนองต่อคำขอเขียนที่มีรหัสข้อมูล 0x04: อ่านคีย์ข้อมูลประจำตัวชั่วคราวด้วยความยินยอมของผู้ใช้เมื่ออุปกรณ์ไม่ได้อยู่ในโหมดการจับคู่ |
ตารางที่ 7: รหัสข้อผิดพลาด GATT
อ่านพารามิเตอร์ของบีคอน
ผู้ค้นหาสามารถค้นหาพารามิเตอร์ของบีคอนจากผู้ให้บริการได้โดยดำเนินการเขียนไปยังแอตทริบิวต์ที่ประกอบด้วยคำขอจากตารางที่ 2 ที่มีรหัสข้อมูล 0x00 ผู้ให้บริการจะตรวจสอบว่าคีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์บัญชีใดๆ ที่เก็บไว้ในอุปกรณ์
หากการยืนยันไม่สำเร็จ ผู้ให้บริการจะแสดงข้อผิดพลาด "ไม่ได้ตรวจสอบสิทธิ์"
หากดำเนินการสำเร็จ ผู้ให้บริการจะแจ้งด้วยการตอบกลับจากตาราง 6 ที่มีรหัสข้อมูล 0x00 ผู้ให้บริการจะสร้างกลุ่มข้อมูลดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | กำลังที่ปรับแล้ว | กำลังที่ปรับเทียบแล้วที่ได้รับที่ 0 ม. (ค่าในช่วง [-100, 20]) แสดงเป็นจำนวนเต็มที่มีค่าบวกหรือลบ โดยมีความละเอียด 1 dBm |
1 - 4 | uint32 | ค่านาฬิกา | ค่านาฬิกาปัจจุบันเป็นวินาที (Big Endian) |
5 | uint8 | การเลือกเส้นโค้ง | เส้นโค้ง elliptique ที่ใช้เข้ารหัส
|
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 ผู้ให้บริการจะสร้างกลุ่มข้อมูลดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
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)
ตั้งค่าคีย์ข้อมูลประจำตัวชั่วคราว
หากต้องการจัดสรรผู้ให้บริการที่ไม่ได้จัดสรรเป็นบีคอน FMDN หรือเปลี่ยนคีย์ข้อมูลประจำตัวชั่วคราวของผู้ให้บริการที่จัดสรรไว้แล้ว ผู้ค้นหาจะดำเนินการเขียนไปยังแอตทริบิวต์ที่ประกอบด้วยคําขอจากตาราง 2 ที่มีรหัสข้อมูล 0x02 ผู้ให้บริการยืนยันว่า
- คีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์บัญชีที่เป็นเจ้าของ
- หากระบุแฮชของคีย์ข้อมูลประจำตัวชั่วคราว คีย์ข้อมูลประจำตัวชั่วคราวที่แฮชจะตรงกับคีย์ข้อมูลประจำตัวชั่วคราวปัจจุบัน
- หากไม่ได้ระบุแฮชของคีย์ข้อมูลประจำตัวชั่วคราว ให้ตรวจสอบว่าไม่ได้จัดสรรผู้ให้บริการเป็นบีคอน FMDN อยู่แล้ว
หากยืนยันไม่สำเร็จ ผู้ให้บริการจะแสดงข้อผิดพลาดที่ไม่ได้รับการตรวจสอบสิทธิ์
หากดำเนินการสำเร็จ ระบบจะกู้คืนคีย์ข้อมูลประจำตัวชั่วคราวโดยถอดรหัสด้วย AES-ECB-128 โดยใช้คีย์บัญชีที่ตรงกัน คีย์ควรคงอยู่ในอุปกรณ์ และผู้ให้บริการควรเริ่มแสดงเฟรม FMDN จากจุดนั้น คีย์ข้อมูลประจำตัวชั่วคราวใหม่จะมีผลทันทีหลังจากการเชื่อมต่อ BLE สิ้นสุดลง ผู้ให้บริการจะแจ้งด้วยการตอบกลับจากตาราง 6 ที่มีรหัสข้อมูล 0x02
ส่วนการตรวจสอบสิทธิ์คือ 8 ไบต์แรกของ HMAC-SHA256(account key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || 0x01)
ล้างคีย์ข้อมูลประจำตัวชั่วคราว
หากต้องการยกเลิกการจัดสรรส่วนบีคอนของผู้ให้บริการ ผู้ค้นหาจะดำเนินการเขียนไปยังแอตทริบิวต์ ซึ่งประกอบด้วยคำขอจากตาราง 2 ที่มีรหัสข้อมูล 0x03 ผู้ให้บริการจะยืนยันข้อมูลต่อไปนี้
- คีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์บัญชีที่เป็นเจ้าของ
- คีย์ข้อมูลระบุชั่วคราวที่มีการแฮชตรงกับคีย์ข้อมูลระบุชั่วคราวปัจจุบัน
หากไม่ได้จัดสรรผู้ให้บริการเป็นบีคอน FMDN หรือการยืนยันไม่สำเร็จ ระบบจะแสดงข้อผิดพลาด "ไม่ได้รับการตรวจสอบสิทธิ์"
หากดำเนินการสำเร็จ ผู้ให้บริการจะลืมคีย์และหยุดโฆษณาเฟรม FMDN
ผู้ให้บริการจะแจ้งด้วยการตอบกลับจากตาราง 6 ที่มีรหัสข้อมูล 0x03
ส่วนการตรวจสอบสิทธิ์คือ 8 ไบต์แรกของ HMAC-SHA256(account key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || 0x01)
อ่านคีย์ข้อมูลระบุตัวตนชั่วคราวเมื่อได้รับความยินยอมจากผู้ใช้
ตัวเลือกนี้ใช้ได้เฉพาะในการกู้คืนกุญแจที่สูญหาย เนื่องจากกุญแจจะจัดเก็บไว้ในเครื่องของผู้ค้นหาเท่านั้น ดังนั้น ความสามารถนี้จะใช้ได้ก็ต่อเมื่ออุปกรณ์อยู่ในโหมดการจับคู่หรือเป็นระยะเวลาที่จำกัดหลังจากมีการกดปุ่มบนอุปกรณ์ (ซึ่งถือเป็นความยินยอมของผู้ใช้)
ผู้ค้นหาต้องจัดเก็บคีย์การกู้คืนในแบ็กเอนด์จึงจะกู้คืนคีย์ข้อความธรรมดาได้ แต่จะไม่ได้จัดเก็บ EIK ไว้
หากต้องการอ่าน EIK ผู้ค้นหาจะดำเนินการเขียนไปยังแอตทริบิวต์ ซึ่งประกอบด้วยคำขอจากตาราง 3 ที่มีรหัสข้อมูล 0x04 ผู้ให้บริการจะยืนยันข้อมูลต่อไปนี้
- คีย์การกู้คืนที่ผ่านการแฮชตรงกับคีย์การกู้คืนที่คาดไว้
- อุปกรณ์อยู่ในโหมดการกู้คืน EIK
หากยืนยันไม่สำเร็จ ผู้ให้บริการจะแสดงข้อผิดพลาดที่ไม่ได้รับการตรวจสอบสิทธิ์
หากอุปกรณ์ไม่ได้อยู่ในโหมดการจับคู่ ผู้ให้บริการจะแสดงข้อผิดพลาด "ผู้ใช้ไม่ให้ความยินยอม"
หากดำเนินการสำเร็จ ผู้ให้บริการจะแจ้งด้วยการตอบกลับจากตาราง 6 ที่มีรหัสข้อมูล 0x04
ส่วนการตรวจสอบสิทธิ์คือ 8 ไบต์แรกของ HMAC-SHA256(recovery key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || additional data || 0x01)
การทำงานของ Ring
ผู้ค้นหาสามารถขอให้ผู้ให้บริการเล่นเสียงได้โดยดำเนินการเขียนไปยังแอตทริบิวต์ ซึ่งประกอบด้วยคำขอจากตาราง 4 ที่มีรหัสข้อมูล 0x05 ผู้ให้บริการจะสร้างกลุ่มข้อมูลดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | การทำงานของ Ring | บิตมาสก์ที่มีค่าต่อไปนี้
|
1 - 2 | uint16 | หมดเวลา | ระยะหมดเวลาเป็นทศนิยมวินาที ต้องไม่เป็น 0 และต้องไม่เกิน 10 นาที ผู้ให้บริการจะใช้ค่านี้เพื่อกำหนดระยะเวลาที่เสียงกริ่งควรดังก่อนที่จะปิดเสียงเอง โดยระบบจะลบล้างการหมดเวลาที่มีผลอยู่หากคอมโพเนนต์ใดๆ ของอุปกรณ์ส่งเสียงอยู่ หากตั้งค่าการดำเนินการเรียกให้แสดงเป็น 0x00 ระบบจะไม่สนใจการหมดเวลา |
3 | uint8 | ระดับเสียง |
|
เมื่อได้รับคำขอ ผู้ให้บริการจะยืนยันว่า
- คีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับกุญแจวงแหวน
- สถานะที่ขอตรงกับคอมโพเนนต์ที่สามารถส่งเสียงกริ่ง
หากไม่ได้จัดสรรผู้ให้บริการเป็นบีคอน FMDN หรือการยืนยันไม่สำเร็จ ระบบจะแสดงข้อผิดพลาด "ไม่ได้รับการตรวจสอบสิทธิ์" อย่างไรก็ตาม หากผู้ให้บริการเปิดใช้การป้องกันการติดตามที่ไม่พึงประสงค์อยู่ และคำขอการป้องกันการติดตามที่ไม่พึงประสงค์ที่ทริกเกอร์ได้เปิดใช้การตั้งค่าสถานะการตรวจสอบสิทธิ์การโทรข้าม ผู้ให้บริการควรข้ามการตรวจสอบดังกล่าว ผู้ค้นหายังคงต้องระบุข้อมูลการตรวจสอบสิทธิ์ แต่สามารถตั้งค่าเป็นค่าใดก็ได้
เมื่อเสียงเรียกเข้าเริ่มหรือสิ้นสุด ระบบจะส่งการแจ้งเตือนตามที่ระบุไว้ในตาราง 6 พร้อมรหัสข้อมูล 0x05 เนื้อหาของการแจ้งเตือนมีคำจำกัดความดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
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 ผู้ให้บริการจะยืนยันว่าคีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับกุญแจของวงแหวน
หากไม่ได้จัดสรรผู้ให้บริการเป็นบีคอน FMDN หรือหากการยืนยันไม่สำเร็จ ผู้ให้บริการจะแสดงข้อผิดพลาดที่ไม่ได้รับการตรวจสอบสิทธิ์
หากดำเนินการสำเร็จ ผู้ให้บริการจะแจ้งด้วยการตอบกลับจากตาราง 6 ที่มีรหัสข้อมูล 0x06 ผู้ให้บริการจะสร้างกลุ่มข้อมูลดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | คอมโพเนนต์การโทรเข้า | คอมโพเนนต์กำลังส่งเสียงดังตามที่ระบุไว้ในคำขอส่งเสียง |
1 - 2 | uint16 | หมดเวลา | เวลาที่เหลือสำหรับการส่งเสียงเรียกเข้าเป็นทศนิยมวินาที โปรดทราบว่าหากอุปกรณ์ไม่ส่งเสียงเรียกเข้า ระบบจะแสดงผลเป็น 0x0000 |
ส่วนการตรวจสอบสิทธิ์คือ 8 ไบต์แรกของ HMAC-SHA256 (ring key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || additional data || 0x01)
โหมดการป้องกันการติดตามที่ไม่พึงประสงค์
โหมดการป้องกันการติดตามที่ไม่พึงประสงค์มีไว้เพื่อให้ไคลเอ็นต์ระบุอุปกรณ์ที่มีการละเมิดได้โดยไม่ต้องสื่อสารกับเซิร์ฟเวอร์ โดยค่าเริ่มต้น ผู้ให้บริการควรหมุนเวียนตัวระบุทั้งหมดตามที่อธิบายไว้ใน การหมุนเวียนรหัส บริการแอปหาอุปกรณ์ของฉันสามารถส่งต่อคำขอเปิดใช้งานโหมดการป้องกันการติดตามที่ไม่พึงประสงค์ผ่านเครือข่ายแอปหาอุปกรณ์ของฉัน ซึ่งบริการนี้จะทำให้ผู้ให้บริการใช้ที่อยู่ MAC แบบคงที่ชั่วคราว ซึ่งจะช่วยให้ไคลเอ็นต์ตรวจหาอุปกรณ์และเตือนผู้ใช้เกี่ยวกับการติดตามที่ไม่พึงประสงค์ที่อาจเกิดขึ้นได้
หากต้องการเปิดหรือปิดใช้งานโหมดการป้องกันการติดตามที่ไม่พึงประสงค์ของบีคอน อุปกรณ์ค้นหาจะดำเนินการเขียนไปยังแอตทริบิวต์ ซึ่งประกอบด้วยคำขอจากตาราง 5 ที่มีรหัสข้อมูล 0x07 หรือ 0x08 ตามลำดับ
เมื่อเปิดใช้โหมดการป้องกันการติดตามที่ไม่พึงประสงค์
ผู้ให้บริการจะสร้างกลุ่มข้อมูลดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สัญญาณควบคุม |
การแจ้งว่าไม่เหมาะสมจะมีผลจนกว่าจะมีการปิดใช้งานโหมดการป้องกันการติดตามที่ไม่พึงประสงค์ |
ผู้ให้บริการจะยืนยันว่าคีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์การป้องกันการติดตามที่ไม่พึงประสงค์ หากไม่ได้จัดสรรผู้ให้บริการเป็นบีคอน FMDN หรือการยืนยันไม่สำเร็จ ระบบจะแสดงข้อผิดพลาดที่ไม่ได้รับการตรวจสอบสิทธิ์
เมื่อเปิดใช้งานโหมดการป้องกันการติดตามที่ไม่พึงประสงค์ บีคอนควรลดความถี่ในการหมุนเวียนที่อยู่ส่วนตัว MAC เป็น 1 ครั้งต่อ 24 ชั่วโมง ตัวระบุชั่วคราวที่โฆษณาควรหมุนเวียนตามปกติ ควรตั้งค่าประเภทเฟรมเป็น 0x41 สถานะจะแสดงในส่วนFlag ที่แฮชด้วย
เมื่อปิดใช้โหมดการป้องกันการติดตามที่ไม่พึงประสงค์
ผู้ให้บริการจะยืนยันข้อมูลต่อไปนี้
- คีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์การป้องกันการติดตามที่ไม่พึงประสงค์
- คีย์ข้อมูลระบุชั่วคราวที่มีการแฮชตรงกับคีย์ข้อมูลระบุชั่วคราวปัจจุบัน
หากไม่ได้จัดสรรผู้ให้บริการเป็นบีคอน FMDN หรือการยืนยันไม่สำเร็จ ผู้ให้บริการจะแสดงข้อผิดพลาดที่ไม่ได้รับการตรวจสอบสิทธิ์
เมื่อปิดใช้งานโหมดการป้องกันการติดตามที่ไม่พึงประสงค์แล้ว บีคอนควรเริ่มหมุนเวียนที่อยู่ MAC ในอัตราปกติอีกครั้ง โดยทำงานร่วมกับการหมุนเวียนตัวระบุชั่วคราว คุณควรตั้งค่าประเภทเฟรมกลับไปเป็น 0x40 สถานะจะแสดงในส่วนFlag ที่แฮชด้วย
หากดำเนินการสำเร็จ ผู้ให้บริการจะแจ้งด้วยการตอบกลับจากตาราง 6 ที่มีรหัสข้อมูล 0x07 หรือ 0x08
ส่วนการตรวจสอบสิทธิ์คือ 8 ไบต์แรกของ HMAC-SHA256(unwanted tracking protection key, protocol major version number ||
the last nonce read from the characteristic || data ID || data length ||
0x01)
เฟรมที่โฆษณา
หลังจากจัดสรรแล้ว ผู้ให้บริการควรแสดงเฟรม FMDN อย่างน้อย 1 ครั้งทุก 2 วินาที หากมีการโฆษณาเฟรมการจับคู่ด่วน ผู้ให้บริการควรสลับเฟรม FMDN ไว้ภายในโฆษณาการจับคู่ด่วนปกติ เช่น ทุก 2 วินาที ผู้ให้บริการควรแสดงโฆษณาการจับคู่ด่วน 7 รายการและโฆษณา FMDN 1 รายการ
กำลังส่งบลูทูธแบบใช้สายสำหรับโฆษณา FMDN ควรตั้งค่าเป็นอย่างน้อย 0 dBm
เฟรม FMDN มีคีย์สาธารณะที่ใช้เข้ารหัสรายงานตำแหน่งโดยไคลเอ็นต์ที่รองรับซึ่งมีส่วนร่วมในเครือข่ายการระดมข้อมูลจากมวลชน คีย์รูปไข่มี 2 ประเภท ได้แก่ คีย์ 160 บิตที่เหมาะกับเฟรม BLE 4 รุ่นเดิม หรือคีย์ 256 บิตที่ต้องใช้ BLE 5 ที่มีความสามารถในการโฆษณาแบบขยาย การใช้งานของผู้ให้บริการจะกําหนดว่าจะใช้เส้นโค้งใด
เฟรม FMDN มีโครงสร้างดังนี้
อ็อกเท็ต | ค่า | คำอธิบาย |
---|---|---|
0 | 0x02 | ความยาว |
1 | 0x01 | ค่าประเภทข้อมูล Flag |
2 | 0x06 | ข้อมูลธง |
3 | 0x18 หรือ 0x19 | ความยาว |
4 | 0x16 | ค่าประเภทข้อมูลบริการ |
5 | 0xAA | UUID บริการ 16 บิต |
6 | 0xFE | ... |
7 | 0x40 หรือ 0x41 | ประเภทเฟรม FMDN พร้อมตัวบ่งชี้โหมดการป้องกันการติดตามที่ไม่พึงประสงค์ |
8..27 | ตัวระบุชั่วคราว 20 ไบต์ | |
28 | การแจ้งว่าไม่เหมาะสมแบบแฮช |
ตารางที่ 8: เฟรม FMDN ที่รองรับเส้นโค้ง 160 บิต
ตารางที่ 9 แสดงการเลื่อนเบี่ยงไบต์และค่าสำหรับเส้นโค้ง 256 บิต
อ็อกเท็ต | ค่า | คำอธิบาย |
---|---|---|
0 | 0x02 | ความยาว |
1 | 0x01 | ค่าประเภทข้อมูล Flag |
2 | 0x06 | ข้อมูลธง |
3 | 0x24 หรือ 0x25 | ความยาว |
4 | 0x16 | ค่าประเภทข้อมูลบริการ |
5 | 0xAA | UUID บริการ 16 บิต |
6 | 0xFE | ... |
7 | 0x40 หรือ 0x41 | ประเภทเฟรม FMDN พร้อมตัวบ่งชี้โหมดการป้องกันการติดตามที่ไม่พึงประสงค์ |
8..39 | ตัวระบุชั่วคราว 32 ไบต์ | |
40 | การแจ้งว่าไม่เหมาะสมแบบแฮช |
ตารางที่ 9: เฟรม FMDN ที่รองรับเส้นโค้ง 256 บิต
การคํานวณตัวระบุชั่วคราว (EID)
ระบบจะสร้างแบบสุ่มโดยการเข้ารหัส AES-ECB-256 โครงสร้างข้อมูลต่อไปนี้ด้วยคีย์ระบุตัวตนชั่วคราว
อ็อกเท็ต | ช่อง | คำอธิบาย |
---|---|---|
0 - 10 | Padding | ค่า = 0xFF |
11 | K | เลขชี้กำลังของระยะเวลาการหมุนเวียน |
12 - 15 | TS[0]...TS[3] | ตัวนับเวลาของบีคอนในรูปแบบ Big-endian 32 บิต ระบบจะล้างบิตต่ำสุดของ K |
16 - 26 ปี | Padding | ค่า = 0x00 |
27 | K | เลขชี้กำลังของระยะเวลาการหมุนเวียน |
28 - 31 ปี | TS[0]...TS[3] | ตัวนับเวลาของบีคอนในรูปแบบ Big-endian 32 บิต ระบบจะล้างบิตต่ำสุดของ K |
ตารางที่ 10: การสร้างตัวเลขแบบสุ่มจำลอง
ผลลัพธ์ของการคํานวณนี้คือตัวเลข 256 บิต ซึ่งแสดงด้วย r'
สำหรับการคำนวณที่เหลือ ระบบจะใช้ SECP160R1
หรือ SECP256R1
สำหรับการดำเนินการเข้ารหัสด้วยเวกเตอร์รูปไข่ ดูคำจำกัดความของเส้นโค้งใน
ส่วนที่ 2: พารามิเตอร์โดเมนของเส้นโค้ง elliptique ที่แนะนำ ซึ่งจะกำหนด Fp
, n
และ G
ที่อ้างอิงต่อไป
ตอนนี้ r'
ได้รับการฉายไปยังโดเมนแบบจำกัด Fp
โดยการคำนวณ r = r' mod n
สุดท้าย ให้คํานวณ R = r * G
ซึ่งเป็นจุดบนเส้นโค้งที่แสดงคีย์สาธารณะที่ใช้ บีคอนจะโฆษณา Rx
ซึ่งเป็นพิกัด x
ของ R
เป็นตัวระบุชั่วคราว
ธงที่แฮช
ฟิลด์ Flag ที่แฮชจะคํานวณดังนี้ (ระบบจะอ้างอิงบิตจากที่มีนัยสำคัญสูงสุดไปจนถึงที่มีนัยสำคัญน้อยที่สุด)
- บิต 0-4: สงวนไว้ (ตั้งค่าเป็น 0)
- บิต 5-6 แสดงระดับแบตเตอรี่ของอุปกรณ์ ดังนี้
- 00: ไม่รองรับสัญญาณบอกระดับแบตเตอรี่
- 01: ระดับแบตเตอรี่ปกติ
- 10: แบตเตอรี่เหลือน้อย
- 11: แบตเตอรี่เหลือน้อยมาก (ต้องเปลี่ยนแบตเตอรี่เร็วๆ นี้)
- ระบบจะตั้งค่าบิต 7 เป็น 1 หากบีคอนอยู่ในโหมดการป้องกันการติดตามที่ไม่พึงประสงค์ และตั้งเป็น 0 หากไม่ใช่
ระบบจะดำเนินการ XOR กับไบต์ที่มีนัยสำคัญน้อยที่สุดของ SHA256(r)
เพื่อให้ได้ค่าสุดท้ายของไบต์นี้
โปรดทราบว่า r ควรสอดคล้องกับขนาดของเส้นโค้ง เพิ่มศูนย์เป็นบิตที่สำคัญที่สุดหากการนำเสนอมีความยาวน้อยกว่า 160 หรือ 256 บิต หรือควรตัดบิตที่สำคัญที่สุดออกหากการนำเสนอมีความยาวมากกว่า 160 หรือ 256 บิต
หากบีคอนไม่รองรับการบ่งชี้ระดับแบตเตอรี่ และไม่ได้อยู่ในโหมดการป้องกันการติดตามที่ไม่พึงประสงค์ ระบบจะอนุญาตให้ละเว้นไบต์นี้ทั้งหมดจากโฆษณาได้
การเข้ารหัสด้วย EID
หากต้องการเข้ารหัสข้อความ m
ผู้เห็น (อ่าน Rx
จากบีคอน) จะทำดังนี้
- เลือกตัวเลขสุ่ม
s
ในFp
ตามที่ระบุไว้ในส่วนการคํานวณ EID - คำนวณ
S = s * G
- คํานวณ
R = (Rx, Ry)
โดยการแทนที่ในสมการของเส้นโค้งและเลือกค่าRy
ที่กำหนดเองจากผลลัพธ์ที่เป็นไปได้ - คํานวณคีย์ AES 256 บิต
k = HKDF-SHA256((s * R)x)
โดยที่(s * R)x
คือพิกัดx
ของผลลัพธ์การคูณด้วยเส้นโค้ง ไม่ได้ระบุ Salt - สมมติให้
URx
และLRx
เป็นเลข 80 บิตบนและล่างของRx
ตามลำดับในรูปแบบ Big-endian ในทํานองเดียวกัน ให้กําหนดUSx
และLSx
สําหรับS
- คำนวณ
nonce = LRx || LSx
- คำนวณ
(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
ของผลลัพธ์การคูณเส้นโค้ง - คำนวณ
nonce = LRx || LSx
- คำนวณ
m = AES-EAX-256-DEC(k, nonce, m’, tag)
การหมุนเวียนรหัส
ต้องใช้ที่อยู่ BLE ที่แก้ไขได้ (RPA) หรือแก้ไขไม่ได้ (NRPA) สำหรับเฟรม FMDN ของโฆษณา RPA เป็นสิ่งจําเป็นสําหรับอุปกรณ์ LE Audio (LEA) และแนะนําสําหรับอุปกรณ์อื่นๆ ยกเว้นแท็กอุปกรณ์ติดตามที่ไม่ใช้การเชื่อมโยง
โฆษณาการจับคู่ด่วน โฆษณา FMDN และที่อยู่ BLE ที่เกี่ยวข้องควรหมุนเวียนไปพร้อมๆ กัน การหมุนควรเกิดขึ้นทุกๆ 1,024 วินาทีโดยเฉลี่ย จุดที่แน่นอนที่บีคอนเริ่มโฆษณาตัวระบุใหม่ต้องสุ่มภายในกรอบเวลา
แนวทางที่แนะนําในการสุ่มเวลาหมุนคือตั้งค่าเป็นเวลาหมุนที่คาดการณ์ไว้ครั้งถัดไป (หากไม่ได้ใช้การสุ่ม) บวกด้วยปัจจัยเวลาแบบสุ่มบวกในช่วง 1 ถึง 204 วินาที
เมื่ออุปกรณ์อยู่ในโหมดการป้องกันการติดตามที่ไม่พึงประสงค์ ที่อยู่ BLE ของโฆษณา FMDN ควรได้รับการแก้ไข แต่ RPA สำหรับโฆษณา FP ที่ตรวจไม่พบ (เช่น การจับคู่ด่วน) ต้องหมุนเวียนอยู่เสมอ คุณใช้ที่อยู่ที่แตกต่างกันสำหรับโปรโตคอลต่างๆ ได้
การกู้คืนจากไฟดับ
การแก้ไขตัวระบุชั่วคราวเชื่อมโยงกับค่านาฬิกาของตัวระบุนั้นอย่างใกล้ชิด ณ เวลาของโฆษณา ดังนั้นผู้ให้บริการจึงต้องกู้คืนค่านาฬิกาได้หากไฟดับ เราขอแนะนำให้ผู้ให้บริการเขียนค่านาฬิกาปัจจุบันลงในหน่วยความจำแบบไม่ลบเลือนอย่างน้อยวันละครั้ง และตรวจสอบ NVM ว่ามีค่าที่จะใช้สำหรับเริ่มต้นหรือไม่เมื่อถึงเวลาบูต โปรแกรมแก้ไขตัวระบุชั่วคราวจะใช้การแก้ไขในกรอบเวลาที่มีเวลาเพียงพอที่จะรองรับทั้งความคลาดเคลื่อนของนาฬิกาที่สมเหตุสมผลและการกู้คืนจากการสูญเสียพลังงานประเภทนี้
ผู้ให้บริการควรพยายามอย่างเต็มที่เพื่อลดการเลื่อนเวลาของนาฬิกา เนื่องจากกรอบเวลาการแก้ไขมีจำกัด คุณควรใช้วิธีการซิงค์นาฬิกาเพิ่มเติมอย่างน้อย 1 วิธี (การโฆษณาเฟรมการจับคู่ด่วนที่ตรวจไม่พบหรือการใช้สตรีมข้อความ)
หลักเกณฑ์การติดตั้งใช้งานฟีเจอร์จับคู่ด่วน
ส่วนนี้จะอธิบายแง่มุมพิเศษของการติดตั้งใช้งาน Fast Pair ในผู้ให้บริการที่รองรับ FMDN
หลักเกณฑ์เฉพาะสำหรับแท็กเครื่องติดตาม
- หากมีการจับคู่ผู้ให้บริการ แต่ไม่ได้จัดสรร FMDN ภายใน 5 นาที (หรือหากใช้การอัปเดต OTA ขณะที่อุปกรณ์จับคู่อยู่แต่ไม่ได้จัดสรร FMDN) ผู้ให้บริการควรเปลี่ยนกลับไปใช้การกำหนดค่าเริ่มต้นและล้างคีย์บัญชีที่เก็บไว้
- หลังจากจับคู่แล้ว ผู้ให้บริการไม่ควรเปลี่ยนที่อยู่ MAC จนกว่าจะมีการจัดสรร FMDN หรือจนกว่าจะผ่านไป 5 นาที
- หากล้างคีย์ข้อมูลประจำตัวชั่วคราวออกจากอุปกรณ์ อุปกรณ์ควรรีเซ็ตเป็นค่าเริ่มต้นและล้างคีย์บัญชีที่เก็บไว้ด้วย
- ผู้ให้บริการควรปฏิเสธการพยายามจับคู่บลูทูธแบบปกติและยอมรับเฉพาะการจับคู่แบบจับคู่ด่วน
- ผู้ให้บริการต้องมีกลไกที่ช่วยให้ผู้ใช้หยุดการแสดงโฆษณาชั่วคราวได้โดยไม่ต้องรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น (เช่น การกดปุ่มหลายปุ่มร่วมกัน)
- หลังจากไฟดับ อุปกรณ์ควรโฆษณาเฟรมการจับคู่ด่วนที่ตรวจไม่พบจนกว่าจะมีการเรียกใช้อ่านพารามิเตอร์บีคอนครั้งถัดไป ซึ่งจะช่วยให้อุปกรณ์ค้นหาตรวจพบอุปกรณ์และซิงค์นาฬิกาได้แม้ว่านาฬิกาจะคลาดเคลื่อนอย่างมากก็ตาม
- เมื่อโฆษณาเฟรมการจับคู่ด่วนที่ตรวจไม่พบ คุณไม่ควรเปิดใช้ตัวบ่งชี้ UI
- ไม่ควรโฆษณาเฟรมการจับคู่ด่วนที่ค้นพบได้ขณะที่ผู้ให้บริการจัดสรร FMDN
- ผู้ให้บริการไม่ควรเปิดเผยข้อมูลระบุตัวตนในลักษณะที่ไม่ได้รับการรับรอง (เช่น ชื่อหรือตัวระบุ)
หลักเกณฑ์เฉพาะอุปกรณ์บลูทูธคลาสสิก
ส่วนนี้อธิบายแง่มุมพิเศษของอุปกรณ์บลูทูธคลาสสิกที่รองรับ FMDN
การจัดสรร FMDN ของอุปกรณ์ที่จับคู่ไว้แล้ว
ผู้ให้บริการอาจไม่ได้จัดสรร FMDN เมื่อจับคู่กับ Seeker เสมอไป แต่หลังจากนั้นสักพัก ในกรณีนี้ ผู้ให้บริการอาจไม่มีที่อยู่ BLE MAC ที่อัปเดตล่าสุดซึ่งจําเป็นต่อการสร้างการเชื่อมต่อ GATT ผู้ให้บริการต้องรองรับวิธีต่อไปนี้อย่างน้อย 1 วิธีเพื่อให้ผู้ค้นหารับที่อยู่ BLE ได้ในขณะที่จับคู่แล้ว
- ผู้ให้บริการสามารถโฆษณาข้อมูลบัญชีการจับคู่ด่วนเป็นระยะๆ ซึ่งช่วยให้ผู้ค้นหาค้นหาที่อยู่ BLE ผ่านการสแกน BLE ได้
แนวทางนี้เหมาะกับผู้ให้บริการที่ไม่ได้ใช้สตรีมข้อความ - ผู้ให้บริการสามารถให้ข้อมูลนี้ผ่านสตรีมข้อความการจับคู่ด่วนผ่านบลูทูธคลาสสิก
แนวทางนี้เหมาะกับผู้ให้บริการที่ไม่ได้โฆษณาเฟรมการจับคู่ด่วนขณะเชื่อมต่อกับอุปกรณ์ค้นหาผ่านบลูทูธ
การรองรับทั้ง 2 วิธีจะเพิ่มโอกาสที่ผู้ใช้จะจัดสรรอุปกรณ์สำหรับ FMDN ได้
สตรีมข้อความของฟีเจอร์จับคู่ด่วน
ผู้ให้บริการสามารถใช้สตรีมข้อความการจับคู่ด่วนเพื่อแจ้งข้อมูลอุปกรณ์ให้แก่ผู้ค้นหา การใช้สตรีมข้อความจะเปิดใช้ฟีเจอร์บางอย่างตามที่อธิบายไว้ในส่วนนี้
ผู้ให้บริการควรส่งข้อความข้อมูลอุปกรณ์ 1 ครั้งทุกครั้งที่มีการสร้างแชแนล RFCOMM สตรีมข้อความ
เวอร์ชันเฟิร์มแวร์ (รหัสข้อมูลอุปกรณ์ 0x09) และความสามารถในการติดตาม
เมื่อการอัปเดตเฟิร์มแวร์เพิ่มการรองรับ FMDN ให้กับผู้ให้บริการ ผู้ค้นหาที่เชื่อมต่ออยู่จะแจ้งให้ผู้ใช้ทราบและเสนอให้จัดสรรได้ มิเช่นนั้น ผู้ใช้จะต้องไปที่รายการอุปกรณ์บลูทูธด้วยตนเองเพื่อเริ่มการจัดสรร FMDN
หากต้องการอนุญาต ผู้ให้บริการควรใช้พร็อพเพอร์ตี้เวอร์ชันเฟิร์มแวร์ (รหัส 0x09) เพื่อรายงานค่าสตริงที่แสดงถึงเวอร์ชันเฟิร์มแวร์ นอกจากนี้ ผู้ให้บริการควรรองรับโปรโตคอลที่แจ้งให้ผู้ค้นหาทราบเกี่ยวกับการเปลี่ยนแปลงความสามารถเนื่องจากการอัปเดตเฟิร์มแวร์
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | เหตุการณ์ข้อมูลอุปกรณ์ | 0x03 |
1 | uint8 | เวอร์ชันเฟิร์มแวร์ | 0x09 |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | แตกต่างกัน |
var | อาร์เรย์ไบต์ | สตริงเวอร์ชัน | แตกต่างกัน |
ตารางที่ 11: เหตุการณ์ข้อมูลอุปกรณ์: เวอร์ชันเฟิร์มแวร์ที่อัปเดต
เมื่อได้รับคำขออัปเดตความสามารถ (0x0601) หากผู้ให้บริการเปิดใช้การรองรับการติดตาม FMDN ไว้ ก็ควรตอบกลับตามที่แสดงในตาราง 12
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | เหตุการณ์การซิงค์ความสามารถของอุปกรณ์ | 0x06 |
1 | uint8 | การติดตาม FMDN | 0x03 |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | 0x0007 |
4 | uint8 | สถานะการจัดสรร FMDN | 0x00 หากไม่ได้จัดสรร 0x01 หากจัดสรรโดยบัญชีใดก็ตาม |
5 - 10 | อาร์เรย์ไบต์ | ที่อยู่ MAC ของ BLE ปัจจุบันของอุปกรณ์ | แตกต่างกัน |
ตารางที่ 12: เหตุการณ์การซิงค์ความสามารถของอุปกรณ์: เพิ่มความสามารถในการติดตาม
ตัวระบุชั่วคราวปัจจุบัน (รหัสข้อมูลอุปกรณ์ 0x0B)
ผู้ให้บริการสามารถใช้ตัวระบุชั่วคราวปัจจุบัน (รหัส 0x0B) เพื่อรายงาน EID และค่านาฬิกาปัจจุบันเมื่อมีการกําหนดค่าผู้ให้บริการสําหรับ FMDN เพื่อซิงค์ Seeker ในกรณีที่นาฬิกาคลาดเคลื่อน (เช่น แบตเตอรี่หมด) มิเช่นนั้น ผู้ค้นหาจะเริ่มต้นการเชื่อมต่อที่แพงกว่าและเชื่อถือได้น้อยกว่าเพื่อวัตถุประสงค์นี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | เหตุการณ์ข้อมูลอุปกรณ์ | 0x03 |
1 | uint8 | ตัวระบุชั่วคราวปัจจุบัน | 0x0B |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | 0x0018 หรือ 0x0024 |
4 - 7 | อาร์เรย์ไบต์ | ค่านาฬิกา | ตัวอย่าง: 0x13F9EA80 |
8 - 19 หรือ 31 | อาร์เรย์ไบต์ | EID ปัจจุบัน | ตัวอย่าง: 0x1122334455667788990011223344556677889900 |
ตารางที่ 13: เหตุการณ์ข้อมูลอุปกรณ์: การซิงค์นาฬิกา
รีเซ็ตเป็นค่าเริ่มต้น
สำหรับอุปกรณ์ที่รองรับการรีเซ็ตเป็นค่าเริ่มต้น: หากมีการรีเซ็ตเป็นค่าเริ่มต้น ผู้ให้บริการต้องหยุดส่งบีคอนและล้างคีย์ข้อมูลประจำตัวชั่วคราวและคีย์บัญชีที่เก็บไว้ทั้งหมด รวมถึงคีย์บัญชีของเจ้าของ
หลังจากรีเซ็ตเป็นค่าเริ่มต้น (ด้วยตนเองหรือแบบเป็นโปรแกรม) ผู้ให้บริการไม่ควรเริ่มโฆษณาการจับคู่ด่วนทันที เพื่อไม่ให้ขั้นตอนการจับคู่เริ่มต้นขึ้นทันทีหลังจากที่ผู้ใช้ลบอุปกรณ์
การป้องกันการติดตามที่ไม่พึงประสงค์
อุปกรณ์ FMDN ที่ได้รับการรับรองต้องเป็นไปตามข้อกำหนดในการใช้งานเวอร์ชันข้อกำหนดข้ามแพลตฟอร์มสำหรับ การตรวจหาอุปกรณ์ติดตามตำแหน่งที่ไม่พึงประสงค์ (DULT) ด้วย
หลักเกณฑ์ที่เกี่ยวข้องสำหรับ FMDN โดยเฉพาะเพื่อให้เป็นไปตามข้อกำหนด DULT
- อุปกรณ์ที่เข้ากันได้กับ FMDN ต้องลงทะเบียนในคอนโซลอุปกรณ์ใกล้เคียง และเปิดใช้ความสามารถ "หาอุปกรณ์ของฉัน"
- อุปกรณ์ต้องใช้บริการและลักษณะของอุปกรณ์เสริมสำหรับผู้ที่ไม่ใช่เจ้าของที่ระบุไว้ในเวอร์ชันการใช้งานของข้อกำหนด DULT รวมถึงการดำเนินการข้อมูลอุปกรณ์เสริมและการควบคุมสำหรับผู้ที่ไม่ใช่เจ้าของ
- ในช่วงที่รองรับการทำงานแบบย้อนหลังตามที่ระบุไว้ในข้อกำหนด DULT จะไม่มีการเปลี่ยนแปลงเฟรมที่โฆษณาตามที่ระบุไว้ในเอกสารนี้
- "โหมดการป้องกันการติดตามที่ไม่พึงประสงค์" ที่ระบุไว้ในเอกสารนี้ตรงกับ "สถานะแยก" ที่ระบุไว้ในข้อกำหนด DULT
- หลักเกณฑ์ในการใช้โอเพโค้ดข้อมูลอุปกรณ์เสริมมีดังนี้
- Get_Product_Data ควรแสดงผลรหัสโมเดลที่คอนโซลระบุ โดยเติม 0 ต่อท้ายให้พอดีกับข้อกำหนด 8 ไบต์ เช่น ระบบจะแสดงรหัสรุ่น 0xFFFFFF เป็น 0x0000000000FFFFFF
- Get_Manufacturer_Name และ Get_Model_Name ควรตรงกับค่าที่ระบุไว้ในคอนโซล
- Get_Accessory_Category สามารถแสดงผลค่า "อุปกรณ์ติดตามตำแหน่ง" ทั่วไปได้หากไม่มีหมวดหมู่อื่นที่เหมาะกับประเภทของอุปกรณ์มากกว่า
- Get_Accessory_Capabilities ต้องระบุการรองรับการเรียกให้กริ่งและการค้นหาตัวระบุ BLE
- Get_Network_ID ควรแสดงผลตัวระบุของ Google (0x02)
- หลักเกณฑ์ในการใช้อ็อปโค้ด Get_Identifier มีดังนี้
- การดำเนินการควรแสดงเฉพาะคำตอบที่ถูกต้องเป็นเวลา 5 นาทีหลังจากที่ผู้ใช้เปิดใช้งานโหมด "การระบุตัวตน" ซึ่งต้องใช้การกดปุ่มหลายครั้ง สัญญาณภาพหรือเสียงควรบ่งบอกให้ผู้ใช้ทราบว่าผู้ให้บริการเข้าสู่โหมดนั้น คุณต้องส่งวิธีการเฉพาะรุ่นสำหรับการเปิดใช้งานโหมดดังกล่าวให้ Google ตามข้อกำหนดของการรับรองและอย่างน้อย 10 วันก่อนการอัปเดตหรือการแก้ไขวิธีการ
- การตอบกลับจะประกอบด้วย 10 ไบต์แรกของตัวระบุชั่วคราวปัจจุบัน ตามด้วย 8 ไบต์แรกของ
HMAC-SHA256(recovery key, the truncated current ephemeral identifier)
- หลักเกณฑ์ในการใช้ตัวระบุผ่าน NFC มีดังนี้
- ใช้
find-my.googleapis.com/lookup
เป็น URL - ใช้เป็นพารามิเตอร์
e
ให้ใช้คำตอบเดียวกันกับที่สร้างขึ้นสำหรับ Get_Identifier ซึ่งเข้ารหัสฐาน 16 - ใช้คำตอบเดียวกันกับที่สร้างขึ้นสำหรับ Get_Product_Data ที่เข้ารหัสฐาน 16 เป็นตัวพารามิเตอร์
pid
- ใช้
- อุปกรณ์ต้องมีเครื่องทำเสียงและรองรับฟังก์ชันการโทร ตามข้อกำหนด DULT เครื่องทำเสียงต้องส่งเสียงที่มีความดังสูงสุดอย่างน้อย 60 โฟนตามที่ระบุไว้ใน ISO 532-1:2017
- หลักเกณฑ์ในการใช้อ็อบเจ็กต์โค้ด Sound_Start มีดังนี้
- คำสั่งดังกล่าวควรทริกเกอร์เสียงเรียกเข้าในคอมโพเนนต์ทั้งหมดที่ใช้ได้
- ควรใช้ปริมาณสูงสุดที่รองรับ
- ระยะเวลาที่แนะนำสำหรับการโทรคือ 12 วินาที
- แท็กอุปกรณ์ติดตามต้องมีกลไกที่ช่วยให้ผู้ใช้หยุดการโฆษณาชั่วคราวได้โดยไม่ต้องรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น (เช่น การกดปุ่มหลายปุ่มร่วมกัน)
- วิธีการปิดใช้ต้องบันทึกไว้ใน URL ที่เผยแพร่ต่อสาธารณะและส่งให้ Google ตามข้อกำหนดของการรับรองและอย่างน้อย 10 วันก่อนการอัปเดตหรือแก้ไขวิธีการ
- URL ควรรองรับการแปล ระบบจะระบุภาษาเป็นพารามิเตอร์การค้นหา ("hl=th") หรือใช้ส่วนหัว HTTP "accept-language" ทั้งนี้ขึ้นอยู่กับไคลเอ็นต์
หลักเกณฑ์เกี่ยวกับโปรโตคอลที่เปลี่ยนได้
- คุณควรใช้โปรโตคอลเพียงโปรโตคอลเดียวในแต่ละครั้ง ตรวจสอบว่าอุปกรณ์ใช้เครือข่ายได้พร้อมกันไม่เกิน 1 เครือข่าย ข้อกำหนดนี้จำเป็นต่อการไม่รวมข้อมูลที่ละเอียดอ่อนของผู้ใช้ระหว่างโปรโตคอลต่างๆ
- เราขอแนะนำให้รวมเวิร์กโฟลว์การรีเซ็ตฮาร์ดลงในอุปกรณ์ ซึ่งจะช่วยให้ผู้ใช้ตั้งค่าอุปกรณ์อีกครั้งด้วยเครือข่ายอื่นได้
- ขั้นตอนการอัปเดตอุปกรณ์เป็นเครือข่ายควรใช้งานง่ายและเท่าเทียมกันระหว่างเครือข่าย ผู้ใช้ต้องเลือกเครือข่ายที่ต้องการใช้ได้โดยไม่จำเป็นต้องให้สิทธิ์เครือข่ายใดเครือข่ายหนึ่ง ขั้นตอนนี้ต้องได้รับอนุมัติจากทีม Google
การอัปเดตเฟิร์มแวร์
พาร์ทเนอร์ควรจัดการกระบวนการและการจัดจำหน่ายการอัปเดต OTA โดยใช้เวิร์กโฟลว์ของแอปบนอุปกรณ์เคลื่อนที่หรือเว็บของตนเอง
การจับคู่ด่วนรองรับการแสดงการแจ้งเตือนให้ผู้ใช้ทราบเกี่ยวกับการอัปเดต OTA ที่พร้อมใช้งาน วิธีใช้กลไกนี้
- คุณควรอัปเดตเฟิร์มแวร์เวอร์ชันล่าสุดในคอนโซลอุปกรณ์ใกล้เคียง
- คุณควรตั้งค่าแอปที่ใช้ร่วมกันในคอนโซลอุปกรณ์ที่อยู่ใกล้เคียง โดยควรรองรับIntent การอัปเดตเฟิร์มแวร์
- ผู้ให้บริการควรใช้ลักษณะ GATT การแก้ไขเฟิร์มแวร์
คุณควรจำกัดการเข้าถึงลักษณะการแก้ไขเฟิร์มแวร์เพื่อป้องกันการติดตาม โปรแกรมค้นหาจะอ่านสถานะการจัดสรรและระบุคีย์การตรวจสอบสิทธิ์ตามที่ระบุไว้ในข้อกำหนดนี้ก่อน จากนั้นจึงอ่านการแก้ไขเฟิร์มแวร์ ซึ่งจะดำเนินการผ่านการเชื่อมต่อเดียวกัน หากมีการพยายามอ่านการแก้ไขเฟิร์มแวร์ แต่ผู้ให้บริการไม่ได้เชื่อมโยงและการดำเนินการที่ตรวจสอบสิทธิ์เสร็จสมบูรณ์ผ่านการเชื่อมต่อเดียวกันนั้น ผู้ให้บริการควรแสดงข้อผิดพลาดที่ไม่ได้รับการตรวจสอบสิทธิ์
ความเข้ากันได้
ต้องเปิดบริการตำแหน่งและบลูทูธจึงจะใช้เครือข่ายแอปหาอุปกรณ์ของฉันได้ ต้องมีบริการเครือข่ายมือถือหรือการเชื่อมต่ออินเทอร์เน็ต ใช้งานได้บน Android 9 ขึ้นไปและสำหรับผู้ใช้ที่อายุถึงเกณฑ์ในบางประเทศ
บันทึกการเปลี่ยนแปลง
เวอร์ชัน FMDN | วันที่ | ความคิดเห็น |
---|---|---|
v1 | เวอร์ชันเริ่มต้นของสเปค FMDN สำหรับการทดลองใช้ก่อนเปิดตัว | |
v1.1 | Feb 2023 |
|
v1.2 | เม.ย. 2023 |
|
v1.3 | ธ.ค. 2023 |
|