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 อยู่แล้วเมื่อจับคู่เป็นครั้งแรก (หรือรองรับเมื่อจับคู่หลังจากรีเซ็ตเป็นค่าเริ่มต้น) จะเลือกคีย์บัญชีแรกเนื่องจากเป็นคีย์บัญชีเดียวที่มีอยู่เมื่อ Seeker อ่านสถานะการจัดสรรระหว่างการจับคู่
ผู้ให้บริการที่ได้รับการสนับสนุน FMDN หลังจากที่จับคู่แล้ว (เช่น ผ่านการอัปเดตเฟิร์มแวร์) จะเลือกคีย์บัญชีที่มีอยู่ได้ คุณควรเลือกคีย์บัญชีแรกที่ใช้อ่านสถานะการจัดสรรจากลักษณะการทำงานของบีคอนหลังจากการอัปเดตเฟิร์มแวร์ โดยสมมติว่าผู้ใช้ที่ทำการอัปเดตเป็นเจ้าของปัจจุบันของผู้ให้บริการ
คีย์ข้อมูลประจำตัวชั่วคราว (EIK): คีย์ 32 ไบต์ที่ Seeker เลือกแบบสุ่มเมื่อดำเนินการจัดสรร FMDN คีย์นี้ใช้สำหรับดึงข้อมูลคีย์การเข้ารหัสที่ใช้สำหรับการเข้ารหัสรายงานตำแหน่งจากต้นทางถึงปลายทาง โดย Seeker จะไม่เปิดเผยข้อมูลดังกล่าวไปยังแบ็กเอนด์
คีย์การกู้คืน: กำหนดไว้เป็น
SHA256(ephemeral identity key || 0x01)
ซึ่งตัดเหลือ 8 ไบต์แรก ระบบจะจัดเก็บคีย์ไว้ในแบ็กเอนด์และผู้ค้นหาสามารถใช้คีย์ดังกล่าวเพื่อ กู้คืน EIK ได้ ในกรณีที่ผู้ใช้แสดงความยินยอมด้วยการกดปุ่มบนอุปกรณ์คีย์ริง: กำหนดเป็น
SHA256(ephemeral identity key || 0x02)
ซึ่งตัดทอนเหลือ 8 ไบต์แรก ระบบจะจัดเก็บคีย์ไว้ในแบ็กเอนด์ และ Seeker จะใช้คีย์นี้เพื่อทำให้อุปกรณ์ส่งเสียงได้เท่านั้นคีย์การป้องกันการติดตามที่ไม่พึงประสงค์: กำหนดเป็น
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: คำขอจัดสรรบีคอน
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
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 - ตัวแปร | อาร์เรย์ไบต์ | ข้อมูลเพิ่มเติม |
|
ตารางที่ 5: คำขอการป้องกันการติดตามที่ไม่พึงประสงค์
การเขียนที่สำเร็จจะทริกเกอร์การแจ้งเตือนตามที่ระบุไว้ในตาราง 6
การแจ้งเตือนที่มีรหัสข้อมูลอื่นที่ไม่ใช่ 0x05: การเปลี่ยนแปลงสถานะวงแหวนควรส่งก่อนธุรกรรมการเขียนที่ทริกเกอร์การแจ้งเตือนเสร็จสมบูรณ์ กล่าวคือ ก่อนส่ง PDU การตอบกลับสําหรับคําขอเขียน
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | รหัสข้อมูล |
|
1 | uint8 | ความยาวข้อมูล | แตกต่างกัน |
2 - 9 | อาร์เรย์ไบต์ | การตรวจสอบสิทธิ์ | รายละเอียดการดำเนินการแต่ละรายการ |
10 - ตัวแปร | อาร์เรย์ไบต์ | ข้อมูลเพิ่มเติม |
|
ตารางที่ 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 | การเลือกเส้นโค้ง | เส้นโค้งรูปวงรีที่ใช้สำหรับการเข้ารหัส
|
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 ผู้ให้บริการจะสร้างกลุ่มข้อมูลดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
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)
อ่านคีย์ข้อมูลระบุตัวตนชั่วคราวเมื่อได้รับความยินยอมจากผู้ใช้
ตัวเลือกนี้จะใช้ในการกู้คืนคีย์ที่สูญหายได้เท่านั้น เนื่องจาก Seeker จะจัดเก็บคีย์ไว้ในเครื่องเท่านั้น ด้วยเหตุนี้ ความสามารถนี้จึงใช้งานได้เฉพาะเมื่ออุปกรณ์อยู่ในโหมดการจับคู่หรือในระยะเวลาที่จำกัดหลังจากที่กดปุ่มจริงบนอุปกรณ์ (ซึ่งถือเป็นความยินยอมของผู้ใช้)
ผู้ค้นหาต้องจัดเก็บคีย์การกู้คืนในแบ็กเอนด์จึงจะกู้คืนคีย์ข้อความธรรมดาได้ แต่จะไม่ได้จัดเก็บ 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 นาทีที่เทียบเท่ากับ 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 สถานะจะแสดงในส่วนแฟล็กที่แฮชด้วยเช่นกัน
หากสําเร็จ ผู้ให้บริการจะแจ้งการตอบกลับจากตาราง 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 มีคีย์สาธารณะที่ใช้เข้ารหัสรายงานตำแหน่งโดยไคลเอ็นต์ที่รองรับซึ่งมีส่วนร่วมในเครือข่ายการระดมข้อมูลจากมวลชน คีย์โค้งรูปวงรีมี 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 บิต
Octet | ค่า | คำอธิบาย |
---|---|---|
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
สำหรับการดำเนินการเข้ารหัสด้วยเวกเตอร์รูปไข่ ดูคำจำกัดความของเส้นโค้งใน
SEC 2: พารามิเตอร์โดเมนวงรีที่แนะนำ ซึ่งจะระบุ 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 วิธี (การโฆษณาเฟรมการจับคู่ด่วนที่ค้นพบไม่ได้ หรือใช้สตรีมข้อความ)
หลักเกณฑ์การติดตั้งใช้งานฟีเจอร์จับคู่ด่วน
ส่วนนี้จะอธิบายแง่มุมพิเศษของการติดตั้งใช้งานฟีเจอร์จับคู่ด่วนในผู้ให้บริการที่รองรับ FMDN
หลักเกณฑ์เฉพาะสำหรับแท็กเครื่องติดตาม
- หากมีการจับคู่ผู้ให้บริการแล้ว แต่ไม่มีการจัดสรร FMDN ภายใน 5 นาที (หรือหากใช้การอัปเดต OTA ในขณะที่จับคู่อุปกรณ์แต่ไม่ได้จัดสรร FMDN) ผู้ให้บริการควรเปลี่ยนกลับไปใช้การกำหนดค่าเริ่มต้นและล้างคีย์บัญชีที่จัดเก็บไว้
- หลังจากจับคู่แล้ว ผู้ให้บริการไม่ควรเปลี่ยนที่อยู่ MAC จนกว่าจะจัดสรร FMDN หรือจนกว่าจะผ่านไป 5 นาที
- หากล้างคีย์ข้อมูลประจำตัวชั่วคราวออกจากอุปกรณ์ อุปกรณ์ควรรีเซ็ตเป็นค่าเริ่มต้นและล้างคีย์บัญชีที่เก็บไว้ด้วย
- ผู้ให้บริการควรปฏิเสธการพยายามจับคู่บลูทูธแบบปกติและยอมรับเฉพาะการจับคู่แบบจับคู่ด่วน
- ผู้ให้บริการต้องมีกลไกที่ช่วยให้ผู้ใช้หยุดโฆษณาชั่วคราวได้โดยไม่ต้องรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น (เช่น การกดปุ่มต่างๆ พร้อมกัน)
- หลังจากไฟดับ อุปกรณ์ควรโฆษณาเฟรมการจับคู่ด่วนที่ตรวจไม่พบจนกว่าจะมีการเรียกใช้อ่านพารามิเตอร์บีคอนครั้งถัดไป ซึ่งจะช่วยให้อุปกรณ์ค้นหาตรวจพบอุปกรณ์และซิงค์นาฬิกาได้แม้ว่านาฬิกาจะคลาดเคลื่อนมากก็ตาม
- เมื่อโฆษณาเฟรมการจับคู่ด่วนที่ตรวจไม่พบ คุณไม่ควรเปิดใช้ตัวบ่งชี้ UI
- ไม่ควรโฆษณาเฟรมการจับคู่ด่วนที่ค้นพบได้ในขณะที่ผู้ให้บริการจัดสรรไว้สำหรับ FMDN
- ผู้ให้บริการไม่ควรเปิดเผยข้อมูลระบุตัวตนในลักษณะที่ไม่ผ่านการตรวจสอบสิทธิ์ (เช่น ชื่อหรือตัวระบุ)
หลักเกณฑ์เฉพาะสำหรับอุปกรณ์บลูทูธแบบคลาสสิก
ส่วนนี้จะอธิบายลักษณะพิเศษของอุปกรณ์บลูทูธคลาสสิกที่รองรับ FMDN
การจัดเตรียม FMDN ของอุปกรณ์ที่จับคู่ไว้แล้ว
ผู้ให้บริการอาจไม่ได้จัดสรร FMDN เมื่อจับคู่กับ Seeker เสมอไป แต่หลังจากนั้นสักพัก ในกรณีนี้ ผู้ให้บริการอาจไม่มีที่อยู่ BLE MAC ที่อัปเดตล่าสุดซึ่งจําเป็นต่อการสร้างการเชื่อมต่อ GATT ผู้ให้บริการต้องรองรับวิธีต่อไปนี้อย่างน้อย 1 วิธีเพื่อให้ผู้ค้นหารับที่อยู่ BLE ได้ในขณะที่จับคู่แล้ว
- ผู้ให้บริการสามารถโฆษณาข้อมูลบัญชีการจับคู่ด่วนเป็นระยะๆ ซึ่งช่วยให้ผู้ค้นหาค้นหาที่อยู่ BLE ผ่านการสแกน BLE ได้
แนวทางนี้เหมาะกับผู้ให้บริการที่ไม่ได้ใช้สตรีมข้อความ - ผู้ให้บริการสามารถระบุข้อมูลนี้ผ่านสตรีมข้อความการจับคู่ด่วนผ่านบลูทูธคลาสสิก
แนวทางนี้เหมาะกับผู้ให้บริการที่ไม่ได้โฆษณาเฟรมการจับคู่ด่วนขณะเชื่อมต่อกับอุปกรณ์ค้นหาผ่านบลูทูธ
การรองรับทั้ง 2 วิธีนี้จะช่วยเพิ่มโอกาสที่ผู้ใช้จะจัดสรรอุปกรณ์สำหรับ FMDN ได้
สตรีมข้อความการจับคู่ด่วน
ผู้ให้บริการสามารถใช้สตรีมข้อความการจับคู่ด่วนเพื่อแจ้งข้อมูลอุปกรณ์ให้แก่ผู้ค้นหาได้ การใช้สตรีมข้อความจะเปิดใช้ฟีเจอร์บางอย่างตามที่อธิบายไว้ในส่วนนี้
ผู้ให้บริการควรส่งข้อความข้อมูลอุปกรณ์ทุกครั้งที่มีการสร้างช่องทาง RFCOMM ของสตรีมข้อความ
เวอร์ชันเฟิร์มแวร์ (รหัสข้อมูลอุปกรณ์ 0x09) และความสามารถในการติดตาม
เมื่อการอัปเดตเฟิร์มแวร์เพิ่มการรองรับ FMDN ไปยังผู้ให้บริการ ผู้ค้นหาที่เชื่อมต่อจะแจ้งเตือนผู้ใช้เกี่ยวกับเรื่องนี้และเสนอให้จัดสรรได้ มิฉะนั้น ผู้ใช้จะต้องไปที่รายการอุปกรณ์บลูทูธด้วยตนเองเพื่อเริ่มการจัดเตรียม FMDN
หากต้องการอนุญาต ผู้ให้บริการควรใช้พร็อพเพอร์ตี้เวอร์ชันเฟิร์มแวร์ (รหัส 0x09) เพื่อรายงานค่าสตริงที่แสดงเวอร์ชันเฟิร์มแวร์ นอกจากนี้ ผู้ให้บริการควรรองรับโปรโตคอลที่แจ้งให้ผู้ค้นหาทราบเกี่ยวกับการเปลี่ยนแปลงความสามารถเนื่องจากการอัปเดตเฟิร์มแวร์
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | เหตุการณ์ข้อมูลอุปกรณ์ | 0x03 |
1 | uint8 | เวอร์ชันเฟิร์มแวร์ | 0x09 |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | แตกต่างกัน |
ตัวแปร | อาร์เรย์ไบต์ | สตริงเวอร์ชัน | แตกต่างกัน |
ตารางที่ 11: เหตุการณ์ข้อมูลอุปกรณ์: เวอร์ชันเฟิร์มแวร์ที่อัปเดต
เมื่อได้รับคำขออัปเดตความสามารถ (0x0601) หากผู้ให้บริการเปิดใช้การรองรับการติดตาม FMDN ไว้ ก็ควรตอบกลับตามที่แสดงในตาราง 12
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | เหตุการณ์การซิงค์ความสามารถของอุปกรณ์ | 0x06 |
1 | uint8 | การติดตาม FMDN | 0x03 |
2 - 3 | uint16 | ความยาวของข้อมูลเพิ่มเติม | 0x0007 |
4 | uint8 | สถานะการจัดสรร FMDN | 0x00 ถ้าไม่ได้จัดสรร ส่วน 0x01 หากมีการจัดสรรโดยบัญชีใดก็ตาม |
5 - 10 | อาร์เรย์ไบต์ | ที่อยู่ BLE MAC ปัจจุบันของอุปกรณ์ | แตกต่างกัน |
ตารางที่ 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
- หลักเกณฑ์สำหรับการใช้ Opcode ของข้อมูลเสริมมีดังนี้
- 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 มีดังนี้
- เป็น URL ให้ใช้
find-my.googleapis.com/lookup
- เป็นพารามิเตอร์
e
ให้ใช้การตอบกลับเดียวกันกับที่สร้างขึ้นสำหรับ Get_Identifier ซึ่งเข้ารหัสฐาน 16 - เป็นพารามิเตอร์
pid
ให้ใช้การตอบกลับเดียวกันกับที่สร้างขึ้นสำหรับ Get_Product_Data ซึ่งเข้ารหัสฐาน 16
- เป็น URL ให้ใช้
- หลักเกณฑ์ในการใช้อ็อปโค้ด Sound_Start มีดังนี้
- คำสั่งดังกล่าวควรทริกเกอร์เสียงเรียกเข้าในคอมโพเนนต์ทั้งหมดที่ใช้ได้
- ควรใช้ปริมาณสูงสุดที่รองรับ
- ระยะเวลาที่แนะนำสำหรับเสียงเรียกเข้าคือ 12 วินาที
- แท็กระบุตําแหน่งต้องมีกลไกที่ให้ผู้ใช้หยุดโฆษณาชั่วคราวได้โดยไม่ต้องรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น (เช่น การกดปุ่มหลายๆ ปุ่มพร้อมกัน)
- วิธีการปิดใช้ต้องบันทึกไว้ใน URL ที่เผยแพร่ต่อสาธารณะและส่งให้ Google ตามข้อกำหนดของการรับรองและอย่างน้อย 10 วันก่อนการอัปเดตหรือแก้ไขวิธีการ
- URL ควรรองรับการแปล ระบบจะระบุภาษาเป็นพารามิเตอร์การค้นหา ("hl=th") หรือใช้ส่วนหัว HTTP "accept-language" โดยขึ้นอยู่กับไคลเอ็นต์
หลักเกณฑ์สําหรับโปรโตคอลที่เปลี่ยนได้
- คุณควรใช้โปรโตคอลเพียงโปรโตคอลเดียวในแต่ละครั้ง ตรวจสอบว่าอุปกรณ์มีเครือข่ายที่ทำงานพร้อมกันได้ไม่เกิน 1 เครือข่าย จำเป็นต้องมีข้อกำหนดนี้เพื่อให้มั่นใจว่าจะไม่มีการเชื่อมโยงข้อมูลผู้ใช้ที่ละเอียดอ่อนระหว่างโปรโตคอลต่างๆ
- เราขอแนะนำให้รวมเวิร์กโฟลว์การรีเซ็ตฮาร์ดลงในอุปกรณ์ ซึ่งจะช่วยให้ผู้ใช้ตั้งค่าอุปกรณ์อีกครั้งด้วยเครือข่ายอื่นได้
- ขั้นตอนการอัปเดตอุปกรณ์เป็นเครือข่ายควรใช้งานง่ายและมีความเท่าเทียมกันระหว่างเครือข่าย ผู้ใช้ต้องเลือกเครือข่ายที่ต้องการใช้ได้โดยไม่จำเป็นต้องให้สิทธิ์เครือข่ายใดเครือข่ายหนึ่ง ขั้นตอนนี้ต้องได้รับอนุมัติจากทีม Google
การอัปเดตเฟิร์มแวร์
พาร์ทเนอร์ควรจัดการกระบวนการและการเผยแพร่การอัปเดต OTA โดยใช้เวิร์กโฟลว์แอปบนอุปกรณ์เคลื่อนที่หรือเว็บแอปของตนเอง
ความเข้ากันได้
ต้องเปิดบริการตำแหน่งและบลูทูธจึงจะใช้เครือข่ายแอปหาอุปกรณ์ของฉันได้ ต้องมีบริการเครือข่ายมือถือหรือการเชื่อมต่ออินเทอร์เน็ต ใช้งานได้บน Android 9 ขึ้นไปและ สำหรับผู้ใช้ที่อายุถึงเกณฑ์ในบางประเทศ
บันทึกการเปลี่ยนแปลง
เวอร์ชัน FMDN | วันที่ | ความคิดเห็น |
---|---|---|
v1 | เวอร์ชันเริ่มต้นของข้อกำหนด FMDN สำหรับการทดลองใช้ก่อนเปิดตัว | |
v1.1 | Feb 2023 |
|
v1.2 | เม.ย. 2023 |
|
v1.3 | ธ.ค. 2023 |
|