Rotación de códigos de barras

Introducción

Los códigos de barras rotativos se ven igual que los normales, pero cambian periódicamente, generalmente cada minuto, y la terminal o el lector están programados para aceptar solo 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 a la vez, según la configuración del 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 opció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 se admitan todos los usuarios, pero puede tener consecuencias 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 que todos los clientes de la Billetera de Google admitan códigos de barras rotativos.

Guardar flujo

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

  • Crea las clases de tarjetas de regalo en el momento oportuno 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
  • Se espera que la clave, a menos que se actualice, sea válida durante el ciclo de vida del 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