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:
-
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.
- Rotazione del codice a barre: se viene specificato un payload di rotazione del codice a barre
- 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: