מפרט של אביזר לרשת 'מרכז המכשירים שלי'

v1.3

מפרט האביזרים של רשת מרכז המכשירים שלי (FHN) מגדיר גישה מוצפנת מקצה לקצה למעקב אחרי מכשירי Bluetooth עם צריכת אנרגיה נמוכה (BLE) שמשדרים אותות. בדף הזה מתואר FHN כהרחבה של מפרט ההתאמה המהירה. ספקי שירות צריכים להפעיל את התוסף הזה אם יש להם מכשירים שתואמים ל-FHN והם מוכנים להפעיל מעקב מיקום במכשירים האלה.

מפרט GATT

צריך להוסיף מאפיין גנרי נוסף (GATT) לשירות Fast Pair עם הסמנטיקה הבאה:

מאפיין שירות ההתאמה המהירה מוצפנת הרשאות מזהה ייחודי אוניברסלי (UUID)
פעולות של משואות לא קריאה, כתיבה ושליחת הודעות FE2C1238-8366-4814-8EB0-01DE32100BEA

טבלה 1: מאפייני שירות ההתאמה המהירה עבור FHN.

אימות

הפעולות שנדרשות על ידי התוסף הזה מתבצעות כפעולת כתיבה, שמוגנת על ידי מנגנון של אתגר ותגובה. לפני ביצוע פעולה כלשהי, המכשיר המבקש אמור לבצע פעולת קריאה מהמאפיין בטבלה 1, וכתוצאה מכך מתקבל מאגר בפורמט הבא:

Octet סוג הנתונים תיאור ערך
0 uint8 מספר הגרסה הראשית של הפרוטוקול 0x01
1 - 8 מערך בייטים ערך חד-פעמי אקראי (nonce) משתנה

כל פעולת קריאה צריכה להניב ערך nonce שונה, וערך nonce יחיד צריך להיות תקף רק לפעולה אחת. גם אם הפעולה נכשלה, צריך לבטל את ה-nonce.

לאחר מכן, המבקש מחשב מפתח אימות חד-פעמי לשימוש בבקשת כתיבה עתידית. מפתח האימות מחושב כמו שמתואר בטבלאות 2 עד 5. בהתאם לפעולה המבוקשת, המבקש מוכיח שהוא מכיר אחד או יותר מהמפתחות הבאים:

תפעול

הפורמט של הנתונים שנכתבים למאפיין מפורט בטבלאות 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 עם מפתח החשבון. אם לספק כבר מוגדר מפתח זהות זמני, צריך לשלוח גם את 8 הבייטים הראשונים של SHA256(current ephemeral identity key || the last nonce read from the characteristic)
  • ‫0x03: 8 הבייטים הראשונים של SHA256(ephemeral identity key || the last nonce read from the characteristic)

טבלה 2: בקשה להקצאת משואות.

Octet סוג הנתונים תיאור ערך
0 uint8 מזהה נתונים ‫0x04: קריאת מפתח זהות זמני בהסכמת המשתמש
1 uint8 אורך הנתונים 0x08
2 - 9 מערך בייטים מפתח אימות חד-פעמי ‫8 הבייטים הראשונים של HMAC-SHA256(recovery key, protocol major version number || the last nonce read from the characteristic || data ID || data length)

טבלה 3: בקשה לשחזור מפתח הקצאת הרשאות של משואות.

Octet סוג הנתונים תיאור ערך
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: בקשה לשיחה נכנסת.

Octet סוג הנתונים תיאור ערך
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 - var מערך בייטים נתונים נוספים
  • ‫0x07: בייט אחד של דגלי בקרה (אופציונלי)
  • ‫0x08: 8 הבייטים הראשונים של SHA256(ephemeral identity key || the last nonce read from the characteristic)

טבלה 5: בקשה להגנה מפני מעקב לא רצוי.

פעולות כתיבה מוצלחות מפעילות התראות כמו שמופיע בטבלה 6.

התראות עם מזהה נתונים שאינו 0x05: שינוי מצב הצלצול צריכות להישלח לפני השלמת עסקת הכתיבה שמפעילה את ההתראה, כלומר לפני שליחת PDU של תגובה לבקשת הכתיבה.

Octet סוג הנתונים תיאור ערך
0 uint8 מזהה נתונים
  • ‫0x00: קריאת פרמטרים של משואות
  • ‫0x01: קריאת סטטוס ההקצאה
  • ‫0x02: הגדרת מפתח זהות זמני
  • ‫0x03: ניקוי מפתח זהות זמני
  • ‫0x04: קריאת מפתח זהות זמני בהסכמת המשתמש
  • ‫0x05: שינוי בסטטוס של הצלצול
  • ‫0x06: קריאת מצב הצלצול
  • ‫0x07: הפעלת מצב הגנה מפני מעקב לא רצוי
  • ‫0x08: השבתה של מצב ההגנה מפני מעקב לא רצוי
1 uint8 אורך הנתונים משתנה
2 - 9 מערך בייטים אימות פירוט לכל פעולה
‫10 - var מערך בייטים נתונים נוספים
  • ‫0x00: 8 בתים שמציינים את עוצמת השידור, ערך השעון, שיטת ההצפנה והיכולות של הצלצול, מוצפנים ב-AES-ECB-128 עם מפתח החשבון (עם ריפוד של אפסים)
  • ‫0x01: בייט אחד שמציין את מצב ההקצאה, ואחריו מזהה זמני נוכחי (20 או 32 בייט) אם רלוונטי
  • ‫0x04: ‏ 32 בייט שהם מפתח הזהות האפמרי, מוצפן ב-AES-ECB-128 עם מפתח החשבון
  • ‫0x05: ‏ 4 בייטים שמציינים את הסטטוס החדש ואת הגורם לשינוי
  • ‫0x06: 3 בייטים שמציינים את הרכיבים שמצלצלים באופן פעיל ואת מספר העשיריות של השנייה שנותרו לצלצול
  • מזהי נתונים אחרים משתמשים בנתונים נוספים ריקים

טבלה 6: תגובה של שירות Beacon.

בטבלה 7 מפורטים קודי השגיאה האפשריים של GATT שמוחזרים מהפעולות.

קוד תיאור הערות
0x80 לא מאומת הערך שמוחזר בתגובה לבקשת כתיבה כשהאימות נכשל (כולל המקרה שבו נעשה שימוש בערך nonce ישן).
0x81 ערך לא חוקי הערך הזה מוחזר אם צוין ערך לא תקין או אם מספר הבייטים של הנתונים שהתקבלו לא צפוי.
0x82 לא התקבלה הסכמה מהמשתמש התשובה מוחזרת בתגובה לבקשת כתיבה עם מזהה נתונים 0x04: קריאת מפתח זהות זמני בהסכמת המשתמש כשהמכשיר לא נמצא במצב התאמה.

טבלה 7: קודי שגיאה של GATT.

קריאת הפרמטר של ה-beacon

המשתמש יכול לשלוח שאילתה לספק כדי לקבל את הפרמטרים של המשואה. לשם כך, הוא צריך לבצע פעולת כתיבה למאפיין שכוללת בקשה מטבלה 2 עם מזהה נתונים 0x00. הספק מאמת שמפתח האימות החד-פעמי שסופק תואם לאחד ממפתחות החשבון ששמורים במכשיר.

אם האימות נכשל, הספק מחזיר שגיאה של אימות לא מוצלח.

אם הפעולה בוצעה בהצלחה, הספק שולח הודעה עם תגובה מטבלה 6 עם מזהה נתונים 0x00. הספק יוצר את פלח הנתונים באופן הבא:

Octet סוג הנתונים תיאור ערך
0 uint8 הספק מכויל ההספק המכויל כפי שהתקבל במרחק 0 מ' (ערך בטווח [‎-100, 20]). מיוצג כמספר שלם עם סימן, ברזולוציה של 1 dBm.
1 - 4 uint32 ערך השעון הערך הנוכחי של השעון בשניות (big endian).
5 uint8 בחירת עקומה העקום האליפטי שמשמש להצפנה:
  • ‫0x00 (ברירת מחדל): SECP160R1
  • ‫0x01: SECP256R1 (נדרש פרסום מורחב)
6 uint8 רכיבים מספר הרכיבים שיכולים להוציא שיחה:
  • ‫0x00: מציין שהמכשיר לא יכול לצלצל.
  • ‫0x01: מציין שרק רכיב אחד יכול להשמיע צלצול.
  • ‫0x02: מציין ששני רכיבים, אוזנייה שמאלית ואוזנייה ימנית, יכולים להשמיע צלצול בנפרד.
  • ‫0x03: מציין ששלושה רכיבים – האוזניות הימנית והשמאלית והנרתיק – יכולים להשמיע צלצול בנפרד.
7 uint8 יכולות שקשורות לצלצול האפשרויות הנתמכות הן:
  • ‫0x00: אי אפשר לבחור את עוצמת הצלצול.
  • ‫0x01: אפשר לבחור את עוצמת הצלצול. אם מוגדר, הספק חייב לקבל ולטפל ב-3 רמות עוצמת קול כפי שמצוין בפעולת הצלצול.
8-15 מערך בייטים מרווח ריפוד אפסים להצפנת 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).

קריאת מצב ההקצאה של המשואה

המשתמש יכול לשלוח שאילתה לספק כדי לברר את מצב ההקצאה של משואת ה-Bluetooth. לשם כך, הוא צריך לבצע פעולת כתיבה למאפיין שכוללת בקשה מטבלה 2 עם מזהה נתונים 0x01. הספק מאמת שמפתח האימות החד-פעמי שסופק תואם לאחד ממפתחות החשבון שמאוחסנים במכשיר.

אם האימות נכשל, הספק מחזיר שגיאה של אימות לא מוצלח.

אם הפעולה בוצעה בהצלחה, הספק שולח הודעה עם תגובה מטבלה 6 עם מזהה נתונים 0x01. הספק יוצר את פלח הנתונים באופן הבא:

Octet סוג הנתונים תיאור ערך
0 uint8 מצב הקצאת הרשאות מסיכת ביטים עם הערכים הבאים:
  • ביט 1 (0x01): מוגדר אם מוגדר מפתח זהות זמני למכשיר.
  • ביט 2 (0x02): מוגדר אם מפתח האימות החד-פעמי שסופק תואם למפתח של חשבון הבעלים.
‫1 - 20 או 32 מערך בייטים מזהה זמני נוכחי ‫20 או 32 בייט (בהתאם לשיטת ההצפנה שבה נעשה שימוש) שמציינים את המזהה הארעי הנוכחי שמשודר על ידי משואת ה-Bluetooth, אם מוגדר מזהה כזה למכשיר.

פלח האימות מוגדר כ-8 הבייטים הראשונים של HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data || 0x01).

הגדרת מפתח זהות זמני

כדי להקצות ספק שלא הוקצה כמשדר FHN, או לשנות את מפתח הזהות הארעי של ספק שכבר הוקצה, המכשיר המחפש מבצע פעולת כתיבה למאפיין שכוללת בקשה מטבלה 2 עם מזהה נתונים 0x02. הספק מוודא ש:

  • מפתח האימות החד-פעמי שסופק תואם למפתח של חשבון הבעלים.
  • אם סופק גיבוב של מפתח זהות זמני, הגיבוב של מפתח הזהות הזמני תואם למפתח הזהות הזמני הנוכחי.
  • אם לא סופק גיבוב של מפתח זהות זמני, צריך לוודא שהספק לא הוקצה כבר כאות FHN.

אם האימות נכשל, הספק מחזיר שגיאה של אימות לא מוצלח.

אם הפעולה בוצעה ללא שגיאות, מפתח הזהות הארעי ישוחזר באמצעות פענוח AES-ECB-128 שלו באמצעות מפתח החשבון התואם. המפתח צריך להישמר במכשיר, ומאותו רגע הספק צריך להתחיל לפרסם פריימים של FHN. מפתח הזהות הזמני החדש נכנס לתוקף מיד אחרי שחיבור ה-BLE מסתיים. הספק שולח הודעה עם תגובה מטבלה 6 עם מזהה הנתונים 0x02.

פלח האימות מוגדר כ-8 הבייטים הראשונים של HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || 0x01).

ניקוי מפתח הזהות הזמני

כדי לבטל את ההקצאה של חלק המשואה של הספק, המאתר מבצע פעולת כתיבה למאפיין, שכוללת בקשה מטבלה 2 עם מזהה נתונים 0x03. הספק מוודא ש:

  • מפתח האימות החד-פעמי שסופק תואם למפתח של חשבון הבעלים.
  • המפתח המוצפן של הזהות הזמנית זהה למפתח הנוכחי של הזהות הזמנית.

אם הספק לא הוקצה כאות FHN או שהאימות נכשל, הוא מחזיר שגיאה לא מאומתת.

אם הפעולה מצליחה, הספק שוכח את המפתח ומפסיק לפרסם מסגרות FHN. הספק שולח הודעה עם תגובה מטבלה 6 עם מזהה הנתונים 0x03. פלח האימות מוגדר כ-8 הבייטים הראשונים של HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || 0x01).

קריאת מפתח הזהות הזמני בהסכמת המשתמש

האפשרות הזו זמינה רק לשחזור מפתח שאבד, כי המפתח מאוחסן באופן מקומי רק על ידי Seeker. לכן, האפשרות הזו זמינה רק כשהמכשיר במצב התאמה או למשך זמן מוגבל אחרי שלחצו על לחצן פיזי במכשיר (שמהווה הסכמת משתמש).

הכלי Seeker צריך לאחסן את מפתח השחזור בקצה העורפי כדי לשחזר את מפתח הטקסט הגלוי, אבל הוא לא מאחסן את מפתח ההצפנה עצמו.

כדי לקרוא את מפתח ה-EIK, המבקש מבצע פעולת כתיבה למאפיין, שכוללת בקשה מטבלה 3 עם מזהה נתונים 0x04. הספק מאמת את הדברים הבאים:

  • מפתח השחזור המגובב תואם למפתח השחזור הצפוי.
  • המכשיר במצב שחזור של מפתח הצפנה.

אם האימות נכשל, הספק מחזיר שגיאה של אימות לא מוצלח.

אם המכשיר לא במצב התאמה, הספק מחזיר שגיאה מסוג No User Consent (אין הסכמת משתמש).

אם הפעולה בוצעה בהצלחה, הספק שולח הודעה עם תגובה מטבלה 6 עם מזהה הנתונים 0x04.

פלח האימות מוגדר כ-8 הבייטים הראשונים של HMAC-SHA256(recovery key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data || 0x01).

הפעלת צלצול

המשתמש יכול לבקש מהספק להשמיע צליל על ידי ביצוע פעולת כתיבה למאפיין, שכוללת בקשה מטבלה 4 עם מזהה נתונים 0x05. הספק יוצר את פלח הנתונים באופן הבא:

Octet סוג הנתונים תיאור ערך
0 uint8 הפעלת צלצול מסיכת ביטים עם הערכים הבאים:
  • ביט 1 (0x01): השמעת צלצול בצד ימין
  • ביט 2 ‏ (0x02): השמעת צלצול בצד שמאל
  • ביט 3 ‏ (0x04): צלצול
  • ‫0xFF: צלצול בכל הרכיבים
  • ‫0x00: הפסקת הצלצול
1 - 2 uint16 חסימה זמנית הזמן הקצוב לתפוגה בדצי-שניות. הערך לא יכול להיות אפס ולא יכול להיות גדול מהערך ששווה ל-10 דקות.
הספק משתמש בערך הזה כדי לקבוע כמה זמן הטלפון יצלצל לפני שהוא יושתק. אם רכיב כלשהו במכשיר כבר מצלצל, הגדרת הזמן הקצוב לתפוגה מבטלת את ההגדרה הקיימת.

אם ring operation מוגדר כ-0x00, המערכת מתעלמת מהזמן הקצוב לתפוגה.
3 uint8 עוצמת הקול
  • ‫0x00: ברירת מחדל
  • ‫0x01: נמוך
  • ‫0x02: בינוני
  • ‫0x03: גבוה
המשמעות המדויקת של הערכים האלה תלויה ביישום.

כשמקבלים את הבקשה, הספק מאמת את הפרטים הבאים:

  • מפתח האימות החד-פעמי שסופק תואם למפתח של הטבעת.
  • המצב המבוקש תואם לרכיבים שיכולים להשמיע צלצול.

אם הספק לא הוקצה כאות FHN או שהאימות נכשל, הוא מחזיר שגיאה לא מאומתת. עם זאת, אם לספק יש הגנה לא רצויה מפני מעקב פעילה, ובבקשה להפעלת ההגנה הלא רצויה מפני מעקב הופעל הדגל skip ringing authentication, הספק צריך לדלג על הבדיקה הזו. עדיין מצפים שהנתונים לאימות יסופקו על ידי המבקש, אבל אפשר להגדיר אותם לערך שרירותי.

כשמתחילה או מסתיימת שיחה, נשלחת התראה כמו שמופיע בטבלה 6 עם מזהה נתונים 0x05. התוכן של ההתראה מוגדר באופן הבא:

Octet סוג הנתונים תיאור ערך
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. הספק מוודא שמפתח האימות החד-פעמי שסופק תואם למפתח הטבעת.

אם הספק לא הוגדר כמשדר FHN או אם האימות נכשל, הספק מחזיר שגיאה לא מאומתת.

אם הפעולה מצליחה, הספק שולח הודעה עם תגובה מטבלה 6 עם מזהה הנתונים 0x06. הספק יוצר את פלח הנתונים באופן הבא:

Octet סוג הנתונים תיאור ערך
0 uint8 רכיבים שקשורים לצלצול הרכיבים שמתקשרים באופן פעיל, כפי שמוגדר בבקשת השיחה.
1 - 2 uint16 חסימה זמנית הזמן שנותר לצלצול בעשיריות השנייה. הערה: אם המכשיר לא מצלצל, צריך להחזיר 0x0000.

פלח האימות מוגדר כ-8 הבייטים הראשונים של HMAC-SHA256 (ring key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data || 0x01).

מצב הגנה מפני מעקב לא רצוי

מצב ההגנה מפני מעקב לא רצוי נועד לאפשר לכל לקוח לזהות מכשירים פוגעניים ללא תקשורת עם השרת. כברירת מחדל, הספק צריך לבצע רוטציה של כל המזהים, כפי שמתואר בקטע רוטציה של מזהים. שירות "מרכז המכשירים שלי" יכול להעביר בקשה להפעלה של מצב הגנה מפני מעקב לא רצוי דרך רשת "מרכז המכשירים שלי". כך השירות גורם לספק להשתמש באופן זמני בכתובת MAC קבועה, ומאפשר ללקוחות לזהות את המכשיר ולהזהיר את המשתמש מפני מעקב לא רצוי.

כדי להפעיל או להשבית את מצב ההגנה מפני מעקב לא רצוי של המשואה, המכשיר שמחפש את המשואה מבצע פעולת כתיבה למאפיין, שכוללת בקשה מטבלה 5 עם מזהה נתונים 0x07 או 0x08 בהתאמה.

כשמפעילים מצב הגנה מפני מעקב לא רצוי

הספק יוצר את פלח הנתונים באופן הבא:

Octet סוג הנתונים תיאור ערך
0 uint8 דגלי בקרה
  • ‫0x01: דילוג על אימות של צלצול. כשמגדירים את ההגדרה הזו, בקשות לשיחות נכנסות לא מאומתות בזמן שהמצב 'הגנה מפני מעקב לא רצוי' מופעל.
אם לא מוגדר דגל (הבייט הוא אפס), אפשר להשמיט את קטע הנתונים לגמרי ולשלוח קטע נתונים ריק.
ההגדרות האלה תקפות רק עד להשבתת מצב ההגנה מפני מעקב לא רצוי.

הספק מוודא שמפתח האימות החד-פעמי שסופק תואם למפתח ההגנה מפני מעקב לא רצוי. אם הספק לא הוקצה כאות FHN או שהאימות נכשל, תוחזר שגיאה לא מאומתת.

כשמצב ההגנה הלא רצוי מפני מעקב מופעל, אות ה-Beacon אמור להפחית את התדירות של סיבוב הכתובת הפרטית של MAC לפעם אחת ב-24 שעות. המזהה הזמני שמוצג במודעה צריך להמשיך להתחלף כרגיל. סוג המסגרת צריך להיות 0x41. הסטטוס משתקף גם בקטע hashed flags.

כשמשביתים מצב לא רצוי של אמצעים לחסימת מעקב

הספק מוודא ש:

  • מפתח האימות החד-פעמי שסופק תואם למפתח ההגנה מפני מעקב לא רצוי.
  • המפתח המוצפן של הזהות הזמנית זהה למפתח הנוכחי של הזהות הזמנית.

אם הספק לא הוקצה כמגדלור FHN או שהאימות נכשל, הספק מחזיר שגיאה לא מאומתת.

כשמשביתים את מצב ההגנה הלא רצוי מפני מעקב, ה-beacon אמור להתחיל לסובב את כתובת ה-MAC בקצב רגיל שוב, בסינכרון עם סיבוב המזהה הארעי. סוג המסגרת צריך להיות 0x40. המצב משתקף גם בקטע hashed flags.

אם הפעולה בוצעה בהצלחה, הספק שולח הודעה עם תשובה מטבלה 6 עם מזהה נתונים 0x07 או 0x08.

פלח האימות מוגדר כ-8 הבייטים הראשונים של HMAC-SHA256(unwanted tracking protection key, protocol major version number || the last nonce read from the characteristic || data ID || data length || 0x01).

פריימים עם פרסומות

אחרי ההקצאה, הספק אמור לפרסם פריימים של FHN לפחות פעם אחת בכל 2 שניות. אם ספקי השירות מפרסמים מסגרות של התאמה מהירה, הם צריכים לשלב את מסגרות ה-FHN בתוך הפרסומים הרגילים של התאמה מהירה. לדוגמה, כל שתי שניות, הספק צריך לפרסם שבע מודעות Fast Pair ומודעה אחת של FHN.

עוצמת השידור של Bluetooth שמוגדרת לפרסום של FHN צריכה להיות לפחות 0 dBm.

המסגרת של FHN נושאת מפתח ציבורי שמשמש להצפנת דוחות מיקום על ידי כל לקוח תומך שמשתתף ברשת המיקור המונים. יש שני סוגים של מפתחות עקומות אליפטיות: מפתח של 160 ביט שמתאים למסגרות BLE 4 מדור קודם, או מפתח של 256 ביט שנדרש ל-BLE 5 עם יכולות פרסום מורחבות. ההטמעה של הספק קובעת באיזו עקומה נעשה שימוש.

מסגרת FHN בנויה באופן הבא.

Octet ערך תיאור
0 0x02 אורך
1 0x01 הערך של סוג הנתונים של הדגלים
2 0x06 נתוני דגלים
3 ‫0x18 או 0x19 אורך
4 ‫0x16 הערך של סוג הנתונים של נתוני השירות
5 0xAA מזהה UUID של שירות 16 ביט
6 0xFE ...
7 ‫0x40 או 0x41 סוג מסגרת FHN עם אינדיקציה לא רצויה של מצב הגנה מפני מעקב
8..27 מזהה זמני באורך 20 בייט
28 תכונות מגובבות (hashed)

טבלה 8: מסגרת FHN שתומכת בעקומה של 160 ביט.

בטבלה 9 מוצגים ההיסטים בבייטים והערכים של עקומה של 256 ביט.

Octet ערך תיאור
0 0x02 אורך
1 0x01 הערך של סוג הנתונים של הדגלים
2 0x06 נתוני דגלים
3 ‫0x24 או 0x25 אורך
4 ‫0x16 הערך של סוג הנתונים של נתוני השירות
5 0xAA מזהה UUID של שירות 16 ביט
6 0xFE ...
7 ‫0x40 או 0x41 סוג מסגרת FHN עם אינדיקציה לא רצויה של מצב הגנה מפני מעקב
‫8..39 מזהה זמני באורך 32 בייט
40 תכונות מגובבות (hashed)

טבלה 9: מסגרת FHN שתומכת בעקומה של 256 ביט.

חישוב של מזהה זמני (EID)

ערך אקראי נוצר על ידי הצפנה ב-AES-ECB-256 של מבנה הנתונים הבא באמצעות מפתח הזהות האפמרי:

Octet שדה תיאור
0 - 10 מרווח ערך = 0xFF
11 K מעריך של תקופת הרוטציה
‫12-15 TS[0]...TS[3] מונה הזמן של משואת ה-Beacon, בפורמט big-endian של 32 ביט. הביטים הנמוכים ביותר של K הוסרו.
‫16-26 מרווח ערך = 0x00
27 K מעריך של תקופת הרוטציה
‫28-31 TS[0]...TS[3] מונה הזמן של משואת ה-Beacon, בפורמט big-endian של 32 ביט. הביטים הנמוכים ביותר של K הוסרו.

טבלה 10: בנייה של מספר פסאודו-אקראי.

התוצאה של החישוב הזה היא מספר בן 256 ביטים, שמסומן כ-r'.

בשאר החישוב, נעשה שימוש ב-SECP160R1 או ב-SECP256R1 לפעולות קריפטוגרפיות של עקומות אליפטיות. הגדרות העקומות מופיעות בקטע SEC 2: Recommended Elliptic Curve Domain Parameters, שבו מוגדרים Fp, n ו-G שמוזכרים בהמשך.

הפונקציה r' מוקרנת עכשיו לשדה הסופי Fp על ידי חישוב r = r' mod n. לבסוף, מחשבים את R = r * G, שהיא נקודה על העקומה שמייצגת את המפתח הציבורי שנמצא בשימוש. האות של המשואה משדר את Rx, שהוא קואורדינטת x של R, בתור המזהה הזמני שלה.

סימונים מגובבים

החישוב של השדה hashed flags (דגלים עם גיבוב) מתבצע באופן הבא (הביטים ממוספרים מהמשמעותי ביותר לפחות משמעותי):

  • ביטים 0-4: שמורים (מוגדרים לאפסים).
  • ביטים 5-6 מציינים את רמת הטעינה של הסוללה במכשיר באופן הבא:
    • ‫00: רמת הטעינה של הסוללה לא נתמכת
    • ‫01: רמת טעינה רגילה
    • ‫10: רמת הטעינה של הסוללה נמוכה
    • ‫11: רמת הסוללה נמוכה מאוד (צריך להחליף את הסוללה בקרוב)
  • הביט 7 מוגדר ל-1 אם המשואה נמצאת במצב של הגנה מפני מעקב לא רצוי, ול-0 בכל מקרה אחר.

כדי ליצור את הערך הסופי של הבייט הזה, מבצעים עליו XOR עם הבייט הכי פחות משמעותי של SHA256(r).

שימו לב ש-r צריך להיות מותאם לגודל העקומה. אם הייצוג קצר מ-160 או מ-256 ביטים, צריך להוסיף אפסים כביטים החשובים ביותר. אם הייצוג ארוך מ-160 או מ-256 ביטים, צריך לקטום את הביטים החשובים ביותר.

אם משדר ה-Beacon לא תומך בהצגת רמת הסוללה, והוא לא במצב הגנה מפני מעקב לא רצוי, מותר להשמיט את הבייט הזה לגמרי מהפרסום.

הצפנה באמצעות EID

כדי להצפין הודעה m, משתמש שקורא את Rx מהמשואה יבצע את הפעולות הבאות:

  1. בוחרים מספר אקראי s ב-Fp, כמו שמוגדר בקטע חישוב מזהה ה-EID.
  2. ‫Compute‏ S = s * G.
  3. מחשבים את R = (Rx, Ry) על ידי הצבה במשוואת העקומה ובחירה של ערך שרירותי של Ry מתוך התוצאות האפשריות.
  4. מחשבים את מפתח ה-AES באורך 256 ביט k = HKDF-SHA256((s * R)x), כאשר (s * R)x הוא קואורדינטת x של תוצאת הכפל של העקומה. לא צוין מלח.
  5. URx ו-LRx הם 80 הביטים העליונים והתחתונים של Rx, בהתאמה, בפורמט big-endian. באופן דומה, מגדירים את USx ואת LSx עבור S.
  6. ‫Compute‏ nonce = LRx || LSx.
  7. ‫Compute‏ (m’, tag) = AES-EAX-256-ENC(k, nonce, m).
  8. שליחה של (URx, Sx, m’, tag) לבעלים, יכול להיות דרך שירות מרוחק לא מהימן.

פענוח של ערכים שהוצפנו באמצעות EID

הלקוח של הבעלים, שמחזיק ב-EIK ובמעריך של תקופת הרוטציה, מפענח את ההודעה באופן הבא:

  1. בהינתן URx, מקבלים את ערך מונה הזמן של ה-beacon שעליו מבוסס URx. אפשר לעשות את זה באמצעות חישוב ערכי Rx של הבעלים עבור מונה הזמן של אותות ה-Beacon, לזמן קצר בעבר ולזמן קצר בעתיד.
  2. בהינתן ערך מונה הזמן של ה-beacon שעליו מבוסס 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. ‫Compute‏ nonce = LRx || LSx.
  7. ‫Compute‏ m = AES-EAX-256-DEC(k, nonce, m’, tag).

רוטציה של מזהים

צריך להשתמש בכתובת BLE שניתנת לפתרון (RPA) או בכתובת BLE שלא ניתן לפתרון (NRPA) כדי לפרסם מסגרות FHN. נדרש RPA למכשירי LE Audio ‏ (LEA) ומומלץ למכשירים אחרים, למעט תגי מיקום שלא נעשה בהם שימוש בקישור.

הפרסום של התאמה מהירה, הפרסום של FHN והכתובות התואמות של BLE צריכים להתחלף בו-זמנית. הסבב צריך להתבצע בממוצע כל 1,024 שניות. הנקודה המדויקת שבה ה-beacon מתחיל לפרסם את המזהה החדש חייבת להיות אקראית בתוך החלון.

הגישה המומלצת להגדרת זמן החלפה אקראי היא להגדיר אותו לזמן ההחלפה הצפוי הבא (אם לא הוחל אקראיות) בתוספת גורם זמן אקראי חיובי בטווח של 1 עד 204 שניות.

כשהמכשיר נמצא במצב הגנה מפני מעקב לא רצוי, כתובת ה-BLE של פרסום ה-FHN צריכה להיות קבועה, אבל כתובת ה-RPA של פרסום ה-FP שלא ניתן לגילוי (כמו Fast Pair) צריכה להמשיך להשתנות. מותר להשתמש בכתובות שונות לפרוטוקולים השונים.

שחזור אחרי הפסקת חשמל

הפתרון של המזהה האפמרי קשור באופן הדוק לערך השעון שלו בזמן הפרסום, ולכן חשוב שהספק יוכל לשחזר את ערך השעון שלו אם יש הפסקת חשמל. מומלץ שספק השירות יכתוב את ערך השעון הנוכחי שלו לזיכרון לא נדיף לפחות פעם ביום, ובזמן האתחול, ספק השירות יבדוק את הזיכרון הלא נדיף כדי לראות אם יש ערך שאפשר לאתחל ממנו. מערכות לפתרון בעיות של מזהה חולף יטמיעו פתרון בעיות בחלון זמן שיאפשר גם סחיפה סבירה של השעון וגם שחזור של נתונים שאבדו בגלל הפסקת חשמל.

הספקים עדיין צריכים לעשות כל מאמץ כדי לצמצם את הסטיות בשעון, כי חלון הזמן לפתרון הבעיה מוגבל. צריך להטמיע לפחות שיטה נוספת לסנכרון השעון (פריימים של Fast Pair שלא ניתן לגלות או הטמעה של זרם הודעות).

הנחיות להטמעה של התאמה מהירה

בקטע הזה מוסבר על היבטים מיוחדים של ההטמעה של התכונה 'התאמה מהירה' אצל ספקים שתומכים ב-FHN.

הנחיות ספציפיות לתג איתור

  • אם הספק בוצע צימוד, אבל FHN לא הוקצה תוך 5 דקות (או אם הוחל עדכון OTA בזמן שהמכשיר מצומד אבל לא הוקצה FHN), הספק צריך לחזור לתצורת היצרן שלו ולנקות את מפתחות החשבון המאוחסנים.
  • אחרי שהספק משויך, כתובת ה-MAC שלו לא אמורה להשתנות עד שמקצים FHN או עד שעוברות 5 דקות.
  • אם מנקים את מפתח הזהות הזמני מהמכשיר, המכשיר צריך לבצע איפוס להגדרות המקוריות ולנקות גם את מפתחות החשבון המאוחסנים.
  • הספק צריך לדחות ניסיונות התאמה רגילים של Bluetooth ולאשר רק התאמה מהירה.
  • הספק צריך לכלול מנגנון שמאפשר למשתמשים להפסיק זמנית את הצגת המודעות בלי לאפס את המכשיר להגדרות המקוריות (לדוגמה, לחיצה על שילוב של לחצנים).
  • אחרי הפסקת חשמל, המכשיר צריך לפרסם פריימים של התאמה מהירה שלא ניתן לגלות עד להפעלה הבאה של קריאת פרמטרים של משואות. כך המכשיר המחפש יכול לזהות את המכשיר ולסנכרן את השעון גם אם חל שינוי משמעותי בשעון.
  • כשמפרסמים מסגרות של התאמה מהירה שלא ניתן לגלות, לא צריך להפעיל את ההצגה של רמזים בממשק המשתמש.
  • אסור לפרסם מסגרות של התאמה מהירה שניתן לגלות בזמן שהספק מוקצה ל-FHN.
  • הספק לא צריך לחשוף פרטים מזהים באופן לא מאומת (לדוגמה, שמות או מזהים).

הנחיות ספציפיות למכשירי Bluetooth Classic

בקטע הזה מוסבר על היבטים מיוחדים של מכשירי Bluetooth קלאסיים שתומכים ב-FHN.

הקצאת מכשירים שכבר בוצעה בהם התאמה באמצעות FHN

הספק לא תמיד מוגדר ל-FHN כשמבצעים התאמה ל-Seeker, אלא זמן מה אחרי כן. במקרה כזה, יכול להיות שלספק אין כתובת MAC עדכנית של BLE שנדרשת ליצירת חיבור GATT. הספק צריך לתמוך לפחות באחת מהדרכים הבאות שבהן המשתמש יכול לקבל את כתובת ה-BLE שלו בזמן שהוא כבר משויך:

  • הספק יכול לפרסם מעת לעת את נתוני החשבון של Fast Pair שמאפשרים למכשיר המחפש למצוא את כתובת ה-BLE שלו באמצעות סריקת BLE.
    הגישה הזו מתאימה לספקים שלא מטמיעים את זרם ההודעות.
  • הספק יכול לספק את הנתונים האלה באמצעות זרם ההודעות של התכונה 'התאמה מהירה' דרך Bluetooth קלאסי.
    הגישה הזו מתאימה לספקים שלא מפרסמים מסגרות של התאמה מהירה בזמן שהם מחוברים למכשיר המחפש באמצעות Bluetooth.

תמיכה בשתי הגישות מגדילה את הסיכוי שהמשתמש יוכל להקצות את המכשיר ל-FHN.

זרם הודעות של התאמה מהירה

הספק יכול להטמיע הודעות של התאמה מהירה ולהשתמש בהן כדי להודיע למכשיר המחפש על פרטי המכשיר. הטמעה של זרם ההודעות מאפשרת להשתמש בתכונות מסוימות, כפי שמתואר בקטע הזה.

הספק צריך לשלוח הודעות עם פרטי המכשיר פעם אחת בכל פעם שנוצר ערוץ RFCOMM של זרם ההודעות.

גרסת הקושחה (קוד מידע על המכשיר 0x09) ויכולת המעקב

כשעדכון קושחה מוסיף תמיכה ב-FHN לספק, Seeker מחובר יכול להודיע על כך למשתמש ולהציע להקצות אותו. אחרת, המשתמש צריך לעבור לרשימת מכשירי ה-Bluetooth באופן ידני כדי להתחיל את הקצאת ה-FHN.

כדי לאפשר זאת, הספק צריך להשתמש במאפיין Firmware version (גרסת קושחה) (קוד 0x09) כדי לדווח על ערך מחרוזת שמייצג את גרסת הקושחה. בנוסף, הספק צריך לתמוך בפרוטוקול שמאפשר למחפש לדעת על שינויים ביכולות בעקבות עדכוני קושחה.

Octet סוג הנתונים תיאור ערך
0 uint8 אירוע פרטי מכשיר 0x03
1 uint8 גרסת הקושחה 0x09
2 - 3 uint16 אורך הנתונים הנוספים משתנה
var מערך בייטים מחרוזת גרסה משתנה

טבלה 11: אירוע פרטי מכשיר: גרסת קושחה מעודכנת.

כשספק מקבל בקשה לעדכון יכולת (0x0601), אם הוא הפעיל תמיכה במעקב אחר FHN, הוא צריך להגיב כמו שמוצג בטבלה 12.

Octet סוג הנתונים תיאור ערך
0 uint8 אירוע סנכרון של יכולת המכשיר 0x06
1 uint8 מעקב אחר FHN 0x03
2 - 3 uint16 אורך הנתונים הנוספים 0x0007
4 uint8 מצב ההקצאה של FHN ‫0x00 אם לא הוקצה; 0x01 אם הוקצה על ידי חשבון כלשהו
5 - 10 מערך בייטים כתובת ה-MAC הנוכחית של המכשיר ב-BLE משתנה

טבלה 12: אירוע סנכרון של יכולת המכשיר: נוספה יכולת מעקב.

מזהה זמני נוכחי (קוד מידע על המכשיר 0x0B)

הספק יכול להשתמש במזהה הארעי הנוכחי (קוד 0x0B) כדי לדווח על ערך השעון ועל ה-EID הנוכחי כשהספק מוקצה ל-FHN, כדי לסנכרן את המבקש במקרה של סחיפת שעון (לדוגמה, בגלל סוללה ריקה). אחרת, ה-Seeker יוזם חיבור יקר יותר ופחות אמין למטרה הזו.

Octet סוג הנתונים תיאור ערך
0 uint8 אירוע פרטי מכשיר 0x03
1 uint8 מזהה זמני נוכחי 0x0B
2 - 3 uint16 אורך הנתונים הנוספים ‫0x0018 או 0x0024
‫4 - 7 מערך בייטים ערך השעון דוגמה: 0x13F9EA80
‫8 עד 19 או 31 מערך בייטים מזהה ה-EID הנוכחי דוגמה: 0x1122334455667788990011223344556677889900

טבלה 13: אירוע של פרטי מכשיר: סנכרון השעון.

איפוס להגדרות המקוריות

במכשירים שתומכים באיפוס להגדרות המקוריות: אם מתבצע איפוס להגדרות המקוריות, הספק חייב להפסיק את השידור של אותות ה-Bluetooth ולמחוק את מפתח הזהות הזמני ואת כל מפתחות החשבון שמאוחסנים, כולל מפתח החשבון של הבעלים.

אחרי איפוס להגדרות המקוריות (ידני או באמצעות תוכנה), הספק לא צריך להתחיל לפרסם את התכונה 'התאמה מהירה' באופן מיידי, כדי למנוע את תהליך ההתאמה מיד אחרי שהמשתמש מוחק את המכשיר.

מניעת מעקב לא רצוי

מכשירים מאושרים של FHN צריכים גם לעמוד בדרישות בגרסת ההטמעה של המפרט חוצה הפלטפורמות בנושא איתור של מכשירי מעקב לא רצויים למיקום (DULT).

הנחיות רלוונטיות שספציפיות ל-FHN כדי לעמוד בדרישות המפרט של DULT:

  • כל מכשיר שתואם ל-FHN צריך להיות רשום ב-Nearby Device Console, והיכולת Find Hub צריכה להיות מופעלת בו.
  • המכשיר צריך להטמיע את השירות ואת המאפיין Accessory Non-Owner שמוגדרים בגרסת ההטמעה של מפרט DULT, כולל הפעולות Accessory Information וNon-owner controls.
  • במהלך תקופת התאימות לאחור, כפי שמוגדר במפרט DULT, לא חלים שינויים במסגרת המודעה כפי שמוגדר במסמך הזה.
  • המונח 'מצב הגנה לא רצוי מפני מעקב' שמוגדר במסמך הזה מקביל למונח 'מצב מופרד' שמוגדר במפרט DULT.
  • הנחיות להטמעת קודי האופרציה Accessory Information:
    • הפונקציה Get_Product_Data צריכה להחזיר את מזהה המודל שסופק על ידי המסוף, עם ריפוד באפסים כדי להתאים לדרישה של 8 בייט. לדוגמה, מזהה המודל 0xFFFFFF מוחזר כ-0x0000000000FFFFFF.
    • הערכים של Get_Manufacturer_Name ו-Get_Model_Name צריכים להיות זהים לערכים שמופיעים במסוף.
    • הפונקציה Get_Accessory_Category יכולה להחזיר את הערך הכללי Location Tracker (מכשיר למעקב אחר מיקום) אם אין קטגוריה אחרת שמתאימה יותר לסוג המכשיר.
    • השיטה 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, עם קידוד הקסדצימלי.
    • כערך של הפרמטר pid, משתמשים באותה תגובה שנוצרה עבור Get_Product_Data, בקידוד הקסדצימלי.
  • המכשיר חייב לכלול אמצעי להשמעת צליל ולתמוך בפונקציית התקשרות. בהתאם למפרט DULT, יוצר הצליל חייב להפיק צליל בעוצמה של לפחות 60 פון בשיא, כפי שמוגדר בתקן ISO 532-1:2017.
  • הנחיות להטמעה של אופקוד Sound_Start:
    • הפקודה צריכה להפעיל צלצול בכל הרכיבים הזמינים.
    • מומלץ להשתמש בנפח המקסימלי הנתמך.
    • משך הצלצול המומלץ הוא 12 שניות.
  • תגי מיקום צריכים לכלול מנגנון שמאפשר למשתמשים להפסיק זמנית את הפרסום בלי לאפס את המכשיר להגדרות המקוריות (לדוגמה, לחיצה על שילוב של לחצנים).
    • ההוראות להשבתה צריכות להיות מתועדות בכתובת URL שזמינה לציבור, וצריך לספק אותן ל-Google כדרישה לקבלת אישור, ולפחות 10 ימים לפני כל עדכון או שינוי בהוראות.
    • כתובת ה-URL צריכה לתמוך בלוקליזציה. בהתאם ללקוח, השפה תסופק כפרמטר של שאילתה (‎"hl=en"‎) או באמצעות כותרת ה-HTTP‏ ‎"accept-language"‎.

הנחיות לגבי פרוטוקולים שאפשר לעבור ביניהם

  • צריך להשתמש רק בפרוטוקול אחד בכל פעם. מוודאים שאפשר להפעיל במכשיר רק רשת אחת בכל פעם. הדרישה הזו נועדה לוודא שלא מתבצע ערבוב של נתוני משתמש רגישים בין פרוטוקולים שונים.
  • מומלץ לשלב במכשיר תהליך עבודה של איפוס קשיח, שיאפשר למשתמש להגדיר מחדש את המכשיר עם רשת אחרת.
  • תהליך העדכון של מכשיר לרשת צריך להיות ידידותי למשתמשים ושוויוני בין הרשתות. המשתמש צריך להיות מסוגל לבחור באיזו רשת הוא רוצה להשתמש בלי להעדיף אחת מהרשתות. הצוות של Google צריך לאשר את התהליך הזה.

עדכוני קושחה

השותף צריך לנהל את התהליך של עדכוני OTA ואת ההפצה שלהם באמצעות תהליך העבודה שלו באפליקציה לנייד או באפליקציית האינטרנט.

התכונה 'התאמה מהירה' תומכת בהצגת התראות למשתמשים, כדי ליידע אותם על עדכוני OTA זמינים. כדי להשתמש במנגנון הזה:

  • צריך לעדכן את גרסת הקושחה האחרונה במסוף המכשירים הסמוכים.
  • צריך להגדיר אפליקציה נלווית במסוף 'מכשירים בקרבת מקום'. המכשיר צריך לתמוך בכוונה לעדכן קושחה.
  • הספק צריך להטמיע את מאפיין ה-GATT של גרסת הקושחה.

כדי למנוע מעקב, צריך להגביל את הגישה למאפיין Firmware revision. הכלי Seeker יקרא קודם את מצב ההקצאה ויספק מפתח אימות, כפי שמוגדר במפרט הזה, ורק לאחר מכן יקרא את עדכון הקושחה. הפעולה הזו תתבצע באותו חיבור. אם מנסים לקרוא את גרסת הקושחה, והספק לא מקושר או שלא הושלמה בהצלחה פעולה מאומתת באותו חיבור, הספק צריך להחזיר שגיאה לא מאומתת.

תאימות

צריך להפעיל את שירותי המיקום ואת ה-Bluetooth כדי להשתמש ברשת 'מרכז המכשירים שלי'. נדרש שירות סלולרי או חיבור לאינטרנט. האפליקציה פועלת ב-Android 9 ואילך ובמדינות מסוימות, למשתמשים שעומדים בדרישות הגיל.

יומן שינויים

גרסת FHN תאריך תגובה
v1 גרסה ראשונית של מפרט FHN לגישה מוקדמת.
v1.1 פברואר 2023
  • נוספה אינדיקציה בטקסט גלוי למצב הגנה מפני מעקב לא רצוי.
  • נוספה אפשרות לדלג על אימות של בקשות לשיחות נכנסות במצב של הגנה מפני מעקב לא רצוי.
v1.2 אפריל 2023
  • עדכנו את ההגדרה של מפתח גישה של בעלים.
  • נוספה המלצה לשחזור במקרה של הפסקת חשמל בתגי מיקום.
  • הוספנו הבהרה לגבי אקראיות של כתובת MAC.
  • הוספנו הבהרה לגבי רוטציה של כתובת MAC במצב הגנה מפני מעקב לא רצוי.
  • הוספנו הנחיה לגבי הוספת אפשרות להשבתת תג מיקום.
v1.3 דצמבר 2023
  • הוספנו הבהרה לגבי פרטים מזהים שנחשפים על ידי תגי מיקום.
  • הוספנו דרישה להטמעה של מפרט למניעת מעקב לא רצוי.
  • הוספנו הנחיות למכשירים עם פרוטוקול שניתן להחלפה.