Qraft

Firma digital

Una firma digital utiliza criptografía de clave pública para demostrar matemáticamente quién creó los datos (autenticación) y que no han sido alterados (integridad). El firmante genera una firma sobre un hash de los datos con su clave privada y el verificador comprueba esa firma con la clave pública correspondiente. A veces se describe RSA como cifrar con la clave privada y descifrar con la pública, pero las firmas de curva elíptica (ECDSA), muy extendidas hoy, no tienen ningún paso de descifrado: la firma y su verificación son operaciones distintas.

Combinar códigos QR con firmas digitales aborda el problema de la falsificación. Los códigos QR estándar pueden ser generados por cualquiera. Al incrustar una firma digital, las aplicaciones de escaneo pueden verificar si el código fue emitido por una autoridad legítima.

El Certificado COVID Digital de la UE (EU DCC) demostró esto a gran escala. Funcionó al amparo del Reglamento (UE) 2021/953 desde julio de 2021 hasta que el reglamento dejó de aplicarse el 30 de junio de 2023. Las autoridades sanitarias firmaron datos de vacunación con claves privadas y los codificaron en códigos QR, haciendo la falsificación extremadamente difícil incluso en códigos impresos en papel. Sus firmas usaban ECDSA P-256 con SHA-256 (COSE ES256), de modo que la comprobación no incluía ningún descifrado y podía hacerse sin conexión en un puesto fronterizo.

Hasta dónde llega un estándar al definir firmas varía según el ámbito. La OACI (ICAO) ya especifica los datos firmados que viajan en códigos de dos dimensiones como el Sello Digital Visible (VDS) de la Parte 13 del Doc 9303, pensado para verificarse sin conexión. La firma de un pasaporte electrónico (eMRTD), en cambio, reside en el chip integrado en la libreta y no en un código QR. GS1 Digital Link es un estándar de sintaxis de URI para expresar identificadores GS1 como direcciones web, y las firmas no forman parte de esa especificación, por lo que hay que añadirlas aparte cuando se necesitan. Para billetes, certificados o autenticación de productos, el punto de partida es comprobar qué estándar define realmente la firma. Sea cual sea el estándar, quien verifica debe obtener por adelantado la clave pública del firmante, normalmente distribuida como una lista de certificados de confianza. El código QR solo transporta los datos firmados y el valor de la firma, y la verificación sin conexión funciona justamente porque la clave ya está en el dispositivo.