Codici a barre rotante

Introduzione

I codici a barre ruotati hanno lo stesso aspetto dei normali codici a barre, ma cambiano periodicamente solitamente ogni minuto e il terminale/lettore è programmato per accettare il più recente. Questa misura di sicurezza riduce i rischi associati a screenshot del codice a barre, in particolare furto di biglietti o biglietti non autorizzati rivendibili. La rotazione dei codici a barre può anche fungere da riserva per i dispositivi che non possono sfruttare Smart Tap per il mancato supporto della tecnologia NFC (assenza di hardware oppure disattivato).

Riferimento API

Per i dettagli tecnici sui codici a barre rotanti, vedere Tipo di 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 riserva

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

  1. Smart Tap: se è specificato un payload smart-tap e se il dispositivo supporta NFC/HCE
    • Tieni presente che l'utente può prevalere facendo clic su "Mostra codice", forza la visualizzazione del codice a barre rotante/del codice a barre statico.
  2. Rotazione del codice a barre: se viene specificato un payload di rotazione del codice a barre
  3. Codice a barre statico: se viene specificato un payload per codice a barre

La specifica di più payload di utilizzo può garantire che tutti gli utenti siano supportati, potrebbero avere implicazioni per la sicurezza. In particolare, l'uso di un codice a barre statico di riserva per un codice a barre rotante nega la maggior parte dei vantaggi in termini di sicurezza codici a barre rotanti. Un codice a barre di riserva statico verrà mostrato solo nelle visualizzazioni web o su client che non supportano la rotazione dei codici a barre. A partire da oggi, prevediamo tutti i client Google Wallet per supportare la rotazione dei codici a barre.

Salva flusso

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

  • Creare le classi di trasporto pubblico in tempo reale o in anticipo
  • Invio degli oggetti completi nel JWT o salvataggio degli oggetti prima per poi farvi riferimento per ID nel tuo JWT
  • Aggiornamento degli oggetti dopo il salvataggio

Il campo rollingBarcode proposto è compatibile con tutti questi flussi, Tuttavia, al fine di migliorare la sicurezza, suggeriamo quanto segue:

  • Chiama l'API object:insert per inserire la tessera nella server di Google Wallet e configura il pulsante Aggiungi a Google Wallet per fare riferimento all'oggetto specifico per ID nel tuo JWT. Ciò garantisce che il JWT risultante non include il codice segreto del codice a barre rotante.
  • Usa una chiave segreta OTP che abbia come ambito una singola tessera
  • La chiave, a meno che non venga aggiornata, dovrebbe essere valida per la durata di la verifica. Non prevediamo che questa chiave venga aggiornata a nessuna frequenza durante durante il normale funzionamento.

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

Diagramma di sequenza per l'utilizzo dei codici a barre rotanti