Codici a barre rotante

Introduzione

La rotazione dei codici a barre è simile ai normali codici a barre, ma cambia periodicamente, solitamente ogni minuto, e il terminale/lettore è programmato per accettare solo il codice più recente. Questa misura di sicurezza riduce i rischi associati allo screenshot dei codici a barre, in particolare il furto o la rivendita non autorizzata di biglietti. La rotazione dei codici a barre può anche fungere da riserva per i dispositivi che non possono sfruttare Smart Tap, in quanto non supporta la tecnologia NFC (assenza di hardware o software disattivato).

Riferimento API

Per dettagli tecnici sulla rotazione dei codici a barre, consulta il tipo RotatingBarcode.

Payload di esempio

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"
        }
      ]
    }
  }
}

Meccanismi di fallback

Sul dispositivo dell'utente viene utilizzato un solo meccanismo di utilizzo alla volta, a seconda della configurazione della tessera e delle funzionalità del dispositivo. Vengono utilizzati i seguenti tipi di utilizzo in ordine di priorità:

  1. Smart Tap: se è specificato un payload di Smart Tap e se il dispositivo supporta la tecnologia NFC/HCE.
    • Tieni presente che l'utente può ignorare questo valore facendo clic su "Mostra codice", che forzerà la visualizzazione del codice a barre/codice a barre statico rotante.
  2. Codice a barre rotante: se viene specificato un payload per codice a barre in rotazione
  3. Codice a barre statico: se viene specificato un payload per codice a barre

Specificare più payload di utilizzo può garantire che tutti gli utenti siano supportati, ma potrebbe comportare implicazioni per la sicurezza. In particolare, l'utilizzo di un codice a barre statico come riserva per un codice a barre a rotazione annulla la maggior parte dei vantaggi in termini di sicurezza derivanti dall'utilizzo di codici a barre a rotazione. Un codice a barre statico di riserva verrà mostrato solo nelle visualizzazioni web o sui client che non supportano codici a barre a rotazione. A partire da oggi, tutti i clienti di Google Wallet supporteranno la rotazione dei codici a barre.

Salva flusso

L'API Google Wallet offre diversi flussi, tra cui:

  • Creare i corsi di carte regalo in tempo per risparmiare tempo o in anticipo
  • Inviare gli oggetti completi nel JWT o salvare gli oggetti in anticipo, quindi fare riferimento a questi oggetti tramite ID nel JWT.
  • Aggiornamento degli oggetti dopo il salvataggio

Il campo Barcode a rotazione proposto è compatibile con tutti questi flussi. Tuttavia, per migliorare la sicurezza, suggeriamo quanto segue:

  • Chiama l'API object:insert per inserire la tessera nel server di Google Wallet e configura il pulsante Aggiungi a Google Wallet per fare riferimento all'oggetto specifico in base all'ID nel tuo JWT. Ciò garantisce che il JWT risultante non includa la chiave segreta del codice a barre a rotazione.
  • Usa una chiave segreta OTP con ambito a un singolo passaggio
  • Se non viene aggiornata, la chiave dovrebbe essere valida per tutta la durata della tessera. Non prevediamo che questa chiave venga aggiornata con nessuna frequenza nel corso del normale funzionamento.

Il seguente diagramma di sequenza illustra il flusso tra i vari attori per un'integrazione tipica:

Diagramma di sequenza per l'utilizzo di codici a barre in rotazione