Formato de payload versionado

ISQR1 Open Format

Una especificación compacta para códigos QR cifrados: estructura de campos, codificación, parámetros criptográficos y reglas de decodificación.

El formato en una frase

ISQR1 es una cadena segura para URL que contiene todos los parámetros que un decodificador necesita para descifrar: versión, sal, IV y texto cifrado incluida la etiqueta de autenticación AES-GCM.

ISQR1:<salt_b64url>:<iv_b64url>:<ciphertext_b64url>

Campos

Campo Longitud Descripción
ISQR1 5 caracteres Versión y prefijo mágico. Los decodificadores deben rechazar las versiones desconocidas.
salt_b64url 16 bytes antes de la codificación Sal aleatoria para PBKDF2. Debe generarse de nuevo en cada cifrado.
iv_b64url 12 bytes antes de la codificación Nonce AES-GCM. Debe ser único con la misma clave.
ciphertext_b64url variable Texto cifrado AES-GCM incluida la etiqueta de autenticación de 128 bits.

Parámetros criptográficos

CipherAES-GCM 256-bit
KDFPBKDF2-SHA-256
Iteraciones250 000
CodificaciónBase64url sin padding

Gramática similar a ABNF

payload      = "ISQR1:" salt ":" iv ":" ciphertext
salt         = 1*( ALPHA / DIGIT / "-" / "_" )
iv           = 1*( ALPHA / DIGIT / "-" / "_" )
ciphertext   = 1*( ALPHA / DIGIT / "-" / "_" )

Las implementaciones deben no solo validar la gramática, sino también verificar las longitudes en bytes decodificados para la sal y el IV.

Reglas del decodificador

  1. Eliminar espacios en blanco y tratar el texto UTF-8 como payload.
  2. Opcionalmente decodificar URL la parte después de # de los fragmentos de URL.
  3. Verificar el prefijo exactamente contra ISQR1.
  4. Decodificar la sal, el IV y el texto cifrado como Base64url sin padding.
  5. Derivar una clave AES-GCM de 256 bits desde la contraseña y la sal mediante PBKDF2-SHA-256.
  6. Descifrar el texto cifrado con AES-GCM e IV. Los errores indican contraseña incorrecta o datos manipulados.

Invariantes de seguridad

Sin reutilización

La sal y el IV se generan de nuevo para cada cifrado desde crypto.getRandomValues.

Sin secretos en el servidor

El modo estándar no requiere ni base de datos ni clave maestra. Todo lo necesario está en el código QR.

Autenticidad

AES-GCM proporciona protección de integridad. Los payloads manipulados no pueden descifrarse con éxito.

Versionado

Nuevos formatos pueden introducirse como ISQR2 sin romper silenciosamente los decodificadores existentes.