ข้อมูลจำเพาะของอุปกรณ์เสริมเครือข่ายแอปหาอุปกรณ์ของฉัน

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 คีย์ต่อไปนี้ ทั้งนี้ขึ้นอยู่กับการดำเนินการที่ขอ

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

รูปแบบของข้อมูลที่เขียนลงในแอตทริบิวต์แสดงอยู่ในตารางที่ 2-5 เราจะอธิบายการดำเนินการแต่ละรายการอย่างละเอียดในส่วนนี้ในภายหลัง

Octet ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 รหัสข้อมูล
  • 0x00: อ่านพารามิเตอร์บีคอน
  • 0x01: อ่านสถานะการจัดสรร
  • 0x02: ตั้งค่าคีย์ข้อมูลประจำตัวชั่วคราว
  • 0x03: ล้างคีย์ข้อมูลประจำตัวชั่วคราว
1 uint8 ความยาวข้อมูล แตกต่างกัน
2 - 9 อาร์เรย์ไบต์ คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว ไบต์ 8 ตัวแรกของ HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data)
10 - var อาร์เรย์ไบต์ ข้อมูลเพิ่มเติม
  • 0x00: ไม่มี
  • 0x01: ไม่มี
  • 0x02: 32 ไบต์ที่เป็นคีย์ข้อมูลประจำตัวชั่วคราวซึ่งเข้ารหัส AES-ECB-128 ด้วยคีย์บัญชี หากผู้ให้บริการมีชุดคีย์ระบุตัวตนชั่วคราวอยู่แล้ว ให้ส่งSHA256(current ephemeral identity key || the last nonce read from the characteristic) 8 ไบต์แรกด้วย
  • 0x03: 8 ไบต์แรกของ SHA256(ephemeral identity key || the last nonce read from the characteristic)

ตารางที่ 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 รหัสข้อมูล
  • 0x05: เสียงกริ่ง
  • 0x06: อ่านสถานะการโทร
1 uint8 ความยาวข้อมูล แตกต่างกัน
2 - 9 อาร์เรย์ไบต์ คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว 8 ไบต์แรกของ HMAC-SHA256(ring key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data)
10 - var อาร์เรย์ไบต์ ข้อมูลเพิ่มเติม
  • 0x05: 4 ไบต์ที่ระบุสถานะเสียงเรียกเข้า ระยะเวลาการส่งเสียง และระดับเสียงเท่านั้น
  • 0x06: ไม่มี

ตารางที่ 4: คำขอให้ส่งเสียง

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 รหัสข้อมูล
  • 0x07: เปิดใช้งานโหมดการป้องกันการติดตามที่ไม่พึงประสงค์
  • 0x08: ปิดใช้งานโหมดการป้องกันการติดตามที่ไม่พึงประสงค์
1 uint8 ความยาวข้อมูล แตกต่างกัน
2 - 9 อาร์เรย์ไบต์ คีย์การตรวจสอบสิทธิ์แบบครั้งเดียว 8 ไบต์แรกของ HMAC-SHA256(unwanted tracking protection key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data)
10 - ตัวแปร อาร์เรย์ไบต์ ข้อมูลเพิ่มเติม
  • 0x07: 1 ไบต์ของแฟล็กควบคุม (ไม่บังคับ)
  • 0x08: ไบต์ 8 ตัวแรกของ SHA256(ephemeral identity key || the last nonce read from the characteristic)

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

การเขียนที่สำเร็จจะทริกเกอร์การแจ้งเตือนตามที่ระบุไว้ในตาราง 6

การแจ้งเตือนที่มีรหัสข้อมูลอื่นที่ไม่ใช่ 0x05: การเปลี่ยนแปลงสถานะวงแหวนควรส่งก่อนธุรกรรมการเขียนที่ทริกเกอร์การแจ้งเตือนเสร็จสมบูรณ์ กล่าวคือ ก่อนส่ง PDU การตอบกลับสําหรับคําขอเขียน

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 รหัสข้อมูล
  • 0x00: อ่านพารามิเตอร์บีคอน
  • 0x01: อ่านสถานะการจัดสรร
  • 0x02: ตั้งค่าคีย์ข้อมูลประจำตัวชั่วคราว
  • 0x03: ล้างคีย์ข้อมูลระบุตัวตนชั่วคราว
  • 0x04: อ่านคีย์ข้อมูลประจำตัวชั่วคราวเมื่อได้รับความยินยอมจากผู้ใช้
  • 0x05: การเปลี่ยนแปลงสถานะการเรียกเข้า
  • 0x06: อ่านสถานะเสียงเรียกเข้า
  • 0x07: เปิดใช้งานโหมดการป้องกันการติดตามที่ไม่พึงประสงค์
  • 0x08: ปิดใช้งานโหมดการป้องกันการติดตามที่ไม่พึงประสงค์
1 uint8 ความยาวข้อมูล แตกต่างกัน
2 - 9 อาร์เรย์ไบต์ การตรวจสอบสิทธิ์ รายละเอียดการดำเนินการแต่ละรายการ
10 - ตัวแปร อาร์เรย์ไบต์ ข้อมูลเพิ่มเติม
  • 0x00: 8 ไบต์ที่ระบุกำลังส่ง ค่าของนาฬิกา วิธีการเข้ารหัส และความสามารถในการส่งเสียง AES-ECB-128 เข้ารหัสด้วยคีย์บัญชี (ไม่มีการเสริม)
  • 0x01: 1 ไบต์ระบุสถานะการจัดสรร ตามด้วยรหัสชั่วคราวปัจจุบัน (20 หรือ 32 ไบต์) หากมี
  • 0x04: 32 ไบต์ที่เป็นคีย์ข้อมูลประจำตัวชั่วคราวที่เข้ารหัส AES-ECB-128 ด้วยคีย์บัญชี
  • 0x05: 4 ไบต์แสดงสถานะใหม่และทริกเกอร์การเปลี่ยนแปลง
  • 0x06: 3 ไบต์ที่ระบุคอมโพเนนต์ที่ส่งเสียงกริ่งอยู่และจำนวนทศนิยมวินาทีที่เหลืออยู่สำหรับการส่งเสียงกริ่ง
  • รหัสข้อมูลอื่นๆ ใช้ข้อมูลเพิ่มเติมที่ว่างเปล่า

ตารางที่ 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 การเลือกเส้นโค้ง เส้นโค้งรูปวงรีที่ใช้สำหรับการเข้ารหัส
  • 0x00 (ค่าเริ่มต้น): SECP160R1
  • 0x01: SECP256R1 (ต้องมีการโฆษณาเพิ่มเติม)
6 uint8 คอมโพเนนต์ จำนวนคอมโพเนนต์ที่สามารถส่งเสียงได้
  • 0x00: บ่งบอกว่าอุปกรณ์ไม่สามารถส่งเสียงได้
  • 0x01: ระบุว่ามีเพียงคอมโพเนนต์เดียวเท่านั้นที่สามารถส่งเสียงได้
  • 0x02: ระบุว่าคอมโพเนนต์ 2 อย่าง ได้แก่ หูฟังซ้ายและขวา สามารถส่งเสียงกริ่งแยกกันได้
  • 0x03: บ่งบอกว่าส่วนประกอบ 3 อย่าง ได้แก่ หูฟังเอียร์บัดข้างซ้ายและขวาและกล่องส่งเสียงเตือนได้แยกกัน
7 uint8 ความสามารถในการส่งเสียงเรียกเข้า ตัวเลือกที่รองรับมีดังนี้
  • 0x00: การเลือกระดับเสียงเรียกเข้าไม่พร้อมใช้งาน
  • 0x01: มีตัวเลือกระดับเสียงเรียกเข้า หากตั้งค่าไว้ ผู้ให้บริการต้องยอมรับและจัดการระดับเสียง 3 ระดับตามที่ระบุไว้ในการดำเนินการของเสียงกริ่ง
8-15 อาร์เรย์ไบต์ Padding ไม่มีระยะห่างจากขอบสำหรับการเข้ารหัส AES

ข้อมูลควรเข้ารหัส AES-ECB-128 ด้วยคีย์บัญชีที่ใช้ตรวจสอบสิทธิ์คำขอ

ส่วนการตรวจสอบสิทธิ์จะกำหนดเป็น 8 ไบต์แรกของ HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data after encryption || 0x01)

อ่านสถานะการจัดสรรของบีคอน

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

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

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

อ็อกเท็ต ประเภทข้อมูล คำอธิบาย ค่า
0 uint8 สถานะการจัดสรร บิตมาสก์ที่มีค่าต่อไปนี้
  • บิต 1 (0x01): มีการตั้งค่าคีย์ข้อมูลระบุตัวตนชั่วคราวสำหรับอุปกรณ์หรือไม่
  • บิต 2 (0x02): ตั้งค่าว่าคีย์การตรวจสอบสิทธิ์แบบครั้งเดียวที่ระบุตรงกับคีย์บัญชีเจ้าของหรือไม่
1 - 20 หรือ 32 อาร์เรย์ไบต์ ตัวระบุชั่วคราวปัจจุบัน 20 หรือ 32 ไบต์ (ขึ้นอยู่กับวิธีการเข้ารหัสที่ใช้) ซึ่งระบุรหัสชั่วคราวปัจจุบันที่เบีคอนโฆษณา หากมีการตั้งค่ารหัสไว้สำหรับอุปกรณ์

ส่วนการตรวจสอบสิทธิ์จะกำหนดเป็น 8 ไบต์แรกของ HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data || 0x01)

ตั้งค่าคีย์ข้อมูลระบุตัวตนชั่วคราว

หากต้องการจัดสรรผู้ให้บริการที่ไม่ได้จัดสรรเป็นบีคอน 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 (0x01): ทำให้ส่งเสียงทางขวา
  • บิต 2 (0x02): วงแหวนด้านซ้าย
  • บิต 3 (0x04): เคสของห่วง
  • 0xFF: เรียกให้อุปกรณ์ทั้งหมดส่งเสียง
  • 0x00: หยุดส่งเสียง
1 - 2 uint16 หมดเวลา ระยะหมดเวลาเป็นทศนิยมวินาที ต้องไม่เป็น 0 และต้องไม่มากกว่า 10 นาทีที่เทียบเท่ากับ 10 นาที
ผู้ให้บริการจะใช้ค่านี้เพื่อกำหนดระยะเวลาที่ควรส่งเสียงกริ่งก่อนที่จะปิดเสียง โดยระบบจะลบล้างการหมดเวลาที่มีผลอยู่หากคอมโพเนนต์ใดๆ ของอุปกรณ์ดังอยู่

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

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

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

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

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

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

กลุ่มการตรวจสอบสิทธิ์คือ 8 ไบต์แรกของ HMAC-SHA256(ring key, protocol major version number || the nonce used to initiate the ringing command || data ID || data length || additional data || 0x01)

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

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

รับสถานะเสียงเรียกเข้าของบีคอน

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

หากไม่ได้จัดสรรผู้ให้บริการเป็นบีคอน 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 แฟล็กควบคุม
  • 0x01: ข้ามการตรวจสอบสิทธิ์เสียงเรียกเข้า เมื่อตั้งค่าแล้ว ระบบจะไม่ตรวจสอบสิทธิ์คำขอเสียงเรียกเข้าขณะอยู่ในโหมดการป้องกันการติดตามที่ไม่พึงประสงค์
หากไม่มีการตั้งค่า Flag (ไบต์เป็น 0 ทั้งหมด) คุณสามารถละเว้นส่วนข้อมูลทั้งหมดและส่งส่วนข้อมูลว่างได้
การแจ้งว่าไม่เหมาะสมจะมีผลจนกว่าจะมีการปิดใช้งานโหมดการป้องกันการติดตามที่ไม่พึงประสงค์

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

  1. เลือกตัวเลขสุ่ม s ใน Fp ตามที่ระบุไว้ในส่วนการคํานวณ EID
  2. ประมวลผล S = s * G
  3. คำนวณ R = (Rx, Ry) โดยใช้การแทนที่ในสมการเส้นโค้งและเลือกค่า Ry ที่กำหนดเองจากผลลัพธ์ที่เป็นไปได้
  4. คํานวณคีย์ AES 256 บิต k = HKDF-SHA256((s * R)x) โดยที่ (s * R)x คือพิกัด x ของผลลัพธ์การคูณด้วยเส้นโค้ง ไม่ได้ระบุ Salt
  5. สมมติให้ URx และ LRx เป็นเลข 80 บิตบนและล่างของ Rx ตามลำดับในรูปแบบ Big-endian ในทํานองเดียวกัน ให้กําหนด USx และ LSx สําหรับ S
  6. คำนวณ nonce = LRx || LSx
  7. คำนวณ (m’, tag) = AES-EAX-256-ENC(k, nonce, m)
  8. ส่ง (URx, Sx, m’, tag) ไปยังเจ้าของ ซึ่งอาจผ่านบริการระยะไกลที่ไม่น่าเชื่อถือ

การถอดรหัสค่าที่เข้ารหัสด้วย EID

ไคลเอ็นต์ของเจ้าของซึ่งมี EIK และตัวคูณระยะเวลาการหมุน จะถอดรหัสข้อความดังนี้

  1. เมื่อทราบ URx ให้รับค่าตัวนับเวลาบีคอนที่ URx อ้างอิง ซึ่งทำได้โดยการคำนวณค่า Rx ของไคลเอ็นต์เจ้าของสำหรับค่าตัวนับเวลาของบีคอนในช่วงที่ผ่านมาและอนาคตอันใกล้
  2. โดยพิจารณาจากค่าตัวนับเวลาบีคอนที่ URx อ้างอิง ให้คำนวณค่าที่คาดการณ์ของ r ตามที่ระบุไว้ในส่วนการคำนวณ EID
  3. คำนวณ R = r * G และยืนยันการจับคู่กับค่า URx ที่ผู้มองเห็นระบุ
  4. คำนวณ S = (Sx, Sy) โดยใช้การแทนที่ในสมการเส้นโค้งและเลือกค่า Sy ที่กำหนดเองจากผลลัพธ์ที่เป็นไปได้
  5. คํานวณ k = HKDF-SHA256((r * S)x) โดยที่ (r * S)x คือพิกัด x ของผลลัพธ์การคูณเส้นโค้ง
  6. คำนวณ nonce = LRx || LSx
  7. ประมวลผล 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
  • หลักเกณฑ์ในการใช้อ็อปโค้ด 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
  • อัปเดตคำจำกัดความของ AK ของเจ้าของ
  • เพิ่มคําแนะนําในการกู้คืนจากไฟดับในแท็กระบุตําแหน่ง
  • เพิ่มคำชี้แจงเกี่ยวกับการสุ่มที่อยู่ MAC
  • เพิ่มคำชี้แจงเกี่ยวกับการหมุนเวียนที่อยู่ MAC ขณะอยู่ในโหมดการป้องกันการติดตามที่ไม่พึงประสงค์
  • เพิ่มหลักเกณฑ์เกี่ยวกับวิธีปิดใช้งานแท็กตัวระบุตำแหน่ง
v1.3 ธ.ค. 2023
  • เพิ่มการชี้แจงเกี่ยวกับข้อมูลการระบุที่เปิดเผยโดยแท็กระบุตำแหน่ง
  • เพิ่มข้อกําหนดในการใช้ข้อกําหนดเฉพาะเกี่ยวกับการป้องกันการติดตามที่ไม่พึงประสงค์
  • เพิ่มหลักเกณฑ์สำหรับอุปกรณ์โปรโตคอลที่สลับได้