Secure
QR
by Check
ID
Diagrama de Flujo
Interacción entre el Emisor, la API SecureQR y la Aplicación de Verificación externa
🖥️
Emisor · Demo Site
Browser / SecureQR UI
⚙️
SecureQR API
Fastify · Node.js
📱
App Externa
KMP NFC · CheckID
1
Click "Generar QR"
POST /session
{ keyId: "demo-key" }
HTTP POST
2
Genera Sesión + QR
sessionId · callbackUrl · QR image
RSA-PSS-SHA256 · clave 4096 bits
Firma el payload con llave privada
Payload del QR (firmado)
{ action, sessionId,
callbackUrl, issuedAt,
signature }
QR + sessionId
3
Suscribe SSE
GET /session/:id/events
Espera evento "result" en tiempo real
SSE stream
⏳ Esperando resultado...
Mantiene conexión SSE abierta
4
Escanea QR
Decodifica payload
Verifica firma RSA-PSS-SHA256
QR scan
5
Verificaciones
◉
Validación QR
◉
Lectura Chip NFC
◉
Liveness Pasivo
◉
Face Match 1:1
◉
Sustitución Documento
◉
Registro Civil
6
Encripta Resultado
AES-256-GCM → datos
RSA-OAEP → wraps AES key
Usa llave pública del Emisor
Solo el Emisor puede descifrar
POST callbackUrl
encryptedPackage (Base64)
7
Recibe y Descifra
RSA-OAEP → recupera AES key
AES-256-GCM → descifra datos
Usa llave privada RSA-4096
Payload JSON disponible
SSE: evento result
decryptedData JSON
8
Renderiza Reporte
Datos personales + foto
Verificaciones con score bars
Mapa GPS + Auditoría
✓ IDENTIDAD VERIFICADA
9
Exportar PDF
jsPDF · mismo diseño gráfico
🔐 Algoritmos Criptográficos
Firma QR
RSA-PSS · SHA-256 · 4096 bits
Cifrado datos
AES-256-GCM · IV 12 bytes
Key wrapping
RSA-OAEP · SHA-256 · 4096b
Propiedades de seguridad:
• Solo el Emisor puede descifrar (tiene la llave privada RSA)
• La firma del QR no puede ser falsificada sin la llave privada
• AES-256-GCM garantiza integridad del payload (authTag 128 bits)
📡 Modo Offline
La firma del QR puede validarse offline si la app tiene la llave pública del Emisor. El cifrado también puede generarse
con la llave pública descargada previamente — sin necesidad de llamadas al servidor en el momento de la verificación.
🔄 Simulador integrado
El Demo Site incluye un simulador que ejecuta los pasos 4-7 internamente (sin app real) usando POST /simulate.
Útil para pruebas rápidas del flujo completo desde el browser.
SecureQR by CheckID — Diagrama de Flujo · 2026
Referencias de color
Emisor / Browser
SecureQR API
App Externa (KMP NFC)
Criptografía / Firma RSA
Cifrado AES / RSA-OAEP
Dato sensible / secreto
← Volver al Demo Site