ברקודים מסתובבים

מבוא

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

הפניית API

לקבלת פרטים טכניים על סיבוב ברקודים, אפשר לעיין ב סוג RotatingBarcode.

מטען ייעודי (payload) לדוגמה

JSON
{
  "rotatingBarcode": {
    "type": "QR_CODE",
    "valuePattern": "MyRotatingBarcode-{totp_timestamp_seconds}-{totp_value_0}",
    "alternateText": "Ticket#: 1234567890",
    "totpDetails": {
      "algorithm": "TOTP_SHA1",
      "periodMillis": "3000",
      "parameters": [
        {
          "key": "3132333435363738393031323334353637383930",
          "valueLength": "8"
        }
      ]
    }
  }
}

מנגנונים חלופיים

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

  1. הקשה חכמה: אם צוין מטען ייעודי של הקשה חכמה ואם המכשיר תומך בכך NFC/HCE
    • הערה: המשתמש יכול לשנות את ההגדרה הזו על ידי לחיצה על 'הצגת הקוד'. יאלץ את התצוגה של הברקוד המסתובב/הברקוד הסטטי.
  2. ברקוד מסתובב: אם צוין מטען ייעודי (payload) מסתובב של ברקוד
  3. ברקוד סטטי: אם צוין מטען ייעודי (payload) של ברקוד

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

שמירת התהליך

Google Wallet API מציע כמה תהליכי עבודה, כולל:

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

השדה rotatingBarcode המוצע תואם לכל התהליכים האלה, עם זאת, כדי לשפר את האבטחה, מומלץ לבצע את הפעולות הבאות:

  • קוראים ל-API של object:insert כדי להוסיף את הכרטיס אל שרת Google Wallet ולהגדיר את הלחצן 'הוסף ל-Google Wallet' כדי להפנות לאובייקט הספציפי לפי המזהה ב-JWT. כך אפשר להבטיח ה-JWT שנוצר לא כולל את המפתח הסודי של הברקוד המסתובב.
  • שימוש במפתח סודי של OTP בהיקף של כרטיס יחיד
  • המפתח, אלא אם הוא מעודכן, צפוי להיות בתוקף כל משך החיים של עובר. אנחנו לא צופים שהמפתח הזה יעודכן בתדירות כלשהי במהלך במהלך הפעילות הרגילה.

תרשים הרצף הבא ממחיש את הזרימה בין הגורמים השונים לשילוב אופייני:

תרשים רצף לשימוש בברקודים מסתובבים