Rotación de códigos de barras

Introducción

La rotación de códigos de barras se parece a los códigos de barras normales, pero cambian periódicamente. normalmente cada minuto, y el terminal o lector está programado para solo aceptar el más reciente. Esta medida de seguridad reduce los riesgos asociados Captura de pantalla del código de barras, en particular el robo de tickets o los tickets no autorizados la reventa. La rotación de códigos de barras también puede servir como resguardo en dispositivos que no pueden aprovechar el Toque inteligente, ya que no es compatible con NFC (falta de hardware o el software o el software malicioso).

Referencia de la API

Para obtener detalles técnicos acerca de la rotación de códigos de barras, consulta la Tipo de RotatingBarcode.

Carga útil de ejemplo

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

Mecanismos de resguardo

En el dispositivo del usuario, solo se usa un mecanismo de canje por vez, según cómo esté configurado el pase y las capacidades del dispositivo. En orden de prioridad, se usan los siguientes tipos de canje:

  1. Toque inteligente: Si se especifica una carga útil de toque inteligente y si el dispositivo es compatible NFC/HCE
    • Ten en cuenta que el usuario puede anular esta acción haciendo clic en “Mostrar código”, forzará la visualización del código de barras rotativo o estático.
  2. Código de barras rotativo: si se especifica una carga útil de código de barras que rota
  3. Código de barras estático: si se especifica una carga útil de código de barras

Especificar varias cargas útiles de canje puede garantizar que todos los usuarios sean compatibles, pero pueden tener implicaciones de seguridad. En particular, el uso de un código de barras estático como resguardo de un código de barras rotativo, anula la mayoría de los beneficios de usar rotar códigos de barras. Solo se mostrará un resguardo de código de barras estático en las vistas web. o en clientes que no admiten la rotación de códigos de barras. A partir de hoy, esperamos a todos los clientes de la Billetera de Google para admitir códigos de barras rotativos.

Guardar flujo

La API de la Billetera de Google ofrece varios flujos, incluidos los siguientes:

  • Crea las clases de transporte público de forma oportuna o con anticipación
  • Enviar los objetos completos en tu JWT o guardar los objetos antes de tiempo y luego hacer referencia a ellas por ID en tu JWT
  • Actualiza los objetos después de guardarlos

El campo rotarBarcode propuesto es compatible con todos estos flujos Sin embargo, para mejorar la seguridad, sugerimos lo siguiente:

  • Llama a la API de object:insert para insertar el pase en el servidor de Google Wallet y configura el botón Agregar a la Billetera de Google para hacer referencia al objeto específico por ID en tu JWT. Esto garantiza que el El JWT resultante no incluye la clave secreta del código de barras rotativo.
  • Usa una clave secreta de OTP que se limite a un solo pase
  • A menos que se actualice, se espera que la clave sea válida durante toda la vida útil el pase. No esperamos que esta clave se actualice con ninguna frecuencia durante el curso de las operaciones normales.

El siguiente diagrama de secuencia ilustra el flujo entre los distintos actores para una integración típica:

Diagrama de secuencias para usar códigos de barras rotativos