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

מבוא

ברקודים מסתובבים נראים בדיוק כמו ברקודים רגילים, אבל הם משתנים מדי פעם, בדרך כלל מדי דקה, והטרמינל/הקורא מתוכנת לקבל רק את האחרון. אמצעי האבטחה הזה מפחיתים את הסיכונים הכרוכים בצילום מסך של ברקוד, במיוחד בגניבת כרטיסים או בהפצת כרטיסים לא מורשית. ברקודים מסתובבים יכולים לשמש גם כחלופה למכשירים שאי אפשר להשתמש בהם בהקשה החכמה, כי הם לא תומכים ב-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. הקשה חכמה: אם צוין מטען ייעודי (payload) מסוג 'הקשה חכמה', ואם המכשיר תומך ב-NFC/HCE
    • הערה: המשתמש יכול לבטל את ההגדרה הזו על ידי לחיצה על 'הצגת קוד', ואז הוא יאלץ את התצוגה של הברקוד המסתובב או הברקוד הסטטי.
  2. ברקוד מסתובב: אם צוין מטען ברקוד מסתובב
  3. ברקוד סטטי: אם צוין מטען ייעודי (payload) של ברקוד

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

שמירת התהליך

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

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

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

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

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

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