La tecnología oculta en el patrón blanco y negro de los códigos QR

El código QR (Quick Response Code) es un código de barras bidimensional desarrollado en 1994 por Masahiro Hara de Denso Wave. Originalmente fue creado para la gestión de inventario de piezas de automóviles, pero con la popularización de los smartphones se ha extendido a todos los ámbitos de la vida cotidiana: pagos, compartir URLs, entradas, intercambio de tarjetas de visita y más.

Ese patrón blanco y negro parece aleatorio a primera vista, pero en realidad tiene una estructura diseñada con precisión.

Estructura del código QR - 3 marcadores

El elemento más característico del código QR son los grandes patrones cuadrados en 3 de sus esquinas (patrones de búsqueda o finder patterns):

  • Patrones de búsqueda: ubicados en las esquinas superior izquierda, superior derecha e inferior izquierda. Son marcadores para que la cámara detecte instantáneamente la posición, orientación e inclinación del código QR. La razón por la que se puede leer desde cualquier ángulo es que estos 3 puntos permiten establecer el sistema de coordenadas
  • Patrones de alineación: pequeños cuadrados adicionales en códigos QR grandes. Se usan para la corrección de distorsión
  • Patrones de temporización: líneas alternas blancas y negras que conectan los patrones de búsqueda. Líneas de referencia para localizar con precisión las coordenadas de los módulos (puntos)
  • Información de formato: área que registra el nivel de corrección de errores y el patrón de máscara
  • Área de datos: la parte donde se almacenan los datos reales

La razón por la que no hay un patrón de búsqueda en la cuarta esquina (inferior derecha) es que 3 puntos son suficientes para identificar la posición y orientación, y es más eficiente usar la cuarta esquina como área de datos.

Corrección de errores - el secreto de que funcione incluso sucio

Una de las características más destacadas del código QR es su potente función de corrección de errores. Utiliza códigos Reed-Solomon, que permiten recuperar los datos incluso si parte del código QR está sucia o dañada:

  • Nivel L (Low): recuperable con hasta un 7% de daño aproximadamente
  • Nivel M (Medium): recuperable con hasta un 15% de daño aproximadamente
  • Nivel Q (Quartile): recuperable con hasta un 25% de daño aproximadamente
  • Nivel H (High): recuperable con hasta un 30% de daño aproximadamente

La razón por la que se puede leer un código QR incluso con el logotipo de una empresa en el centro es gracias a esta función de corrección de errores. Los datos de la parte oculta por el logotipo se recuperan a partir de los códigos de corrección de errores. Sin embargo, si el tamaño del logotipo supera el límite de corrección de errores, el código no se podrá leer, por lo que es necesario usar el nivel H y mantener el tamaño del logotipo dentro del 30% del total.

Riesgos de seguridad de los códigos QR

Los códigos QR son convenientes, pero también presentan riesgos de seguridad.

QR phishing (Quishing)

Es un ataque que incrusta una URL maliciosa en un código QR para redirigir al usuario a un sitio de phishing. Como los humanos no pueden verificar visualmente el contenido de un código QR, es más difícil detectar el phishing que al introducir una URL directamente.

  • Ataques físicos que pegan un código QR falso sobre uno legítimo
  • Ataques que envían códigos QR falsos por correo electrónico o redes sociales
  • Ataques que reemplazan códigos QR instalados en lugares públicos

Contramedidas

  • Después de escanear un código QR, verificar siempre la URL de destino
  • Prestar especial atención cuando se usan URLs acortadas
  • En lugares públicos, verificar físicamente que el código QR no haya sido pegado encima
  • Verificar la información de conexión en IP Check-san para comprobar que no se ha sido redirigido a un sitio sospechoso

Capacidad de los códigos QR

La cantidad de datos que puede almacenar un código QR varía según la versión (tamaño) y el nivel de corrección de errores. Para la versión máxima 40 (177×177 módulos) con nivel de corrección de errores L:

  • Solo números: máximo 7.089 caracteres
  • Alfanuméricos: máximo 4.296 caracteres
  • Binario: máximo 2.953 bytes
  • Kanji: máximo 1.817 caracteres

Reflejando que el código QR es una tecnología de origen japonés, incluye de serie un modo de codificación eficiente para kanji (Shift_JIS).

Por qué se llama "Quick Response"

"QR" en código QR significa Quick Response (respuesta rápida). Su desarrollador, Masahiro Hara, necesitaba escanear piezas a alta velocidad en las líneas de producción de fábricas, por lo que diseñó un código bidimensional que pudiera leerse más rápido que los códigos de barras unidimensionales convencionales. La disposición de los patrones de búsqueda está optimizada para detectar la posición instantáneamente desde cualquier ángulo.

Denso Wave posee la patente del código QR, pero ha declarado que no ejercerá sus derechos de patente, permitiendo que cualquiera pueda generar y usar códigos QR gratuitamente. Esta actitud "abierta" ha impulsado la difusión mundial del código QR.

Resumen

El código QR es una tecnología nacida en una fábrica de automóviles japonesa que se ha extendido a la vida cotidiana de todo el mundo. La detección de alta velocidad mediante los 3 patrones de búsqueda, la potente corrección de errores con códigos Reed-Solomon, el soporte estándar de codificación kanji - detrás de ese patrón blanco y negro se esconde una filosofía de diseño precisa.

Términos del glosario relacionados

Phishing El QR phishing (Quishing) es una técnica de ataque de phishing que utiliza códigos QR. HTTPS Verificar que la URL a la que lleva el código QR sea HTTPS es una medida de seguridad básica. Dirección IP Al acceder a la URL de un código QR, se conecta a una dirección IP tras la resolución DNS. Cifrado El código QR en sí no está cifrado. Su contenido puede ser leído por cualquiera.