Skip to content

ImagSign — Firma Digital y Electronica

Proposito

ImagSign es el servicio de firma digital y electronica de la plataforma Imagy. Permite solicitar, ejecutar y verificar firmas sobre documentos, tanto de forma independiente (standalone) como integrada dentro de flujos de ImagFlow. Abstrae multiples proveedores de firma mediante un patron adapter, permitiendo al platform admin elegir el proveedor adecuado segun el pais, tipo de firma y requisitos legales.

Responsabilidades

ResponsabilidadDescripcion
Solicitud de firmaCrear solicitudes de firma sobre uno o mas documentos
Gestion de documentosAlmacenar referencias a documentos en S3, controlar versiones firmadas
Multi-proveedorAdapter pattern para Firmalo, Uanataca, Certicamara y firma electronica generica
Firma digitalFirma con certificado digital (validez legal plena)
Firma electronicaFirma por OTP, biometria o aceptacion simple
Ciclo de vidaControlar estados del documento y la solicitud
AuditoriaRegistro inmutable de cada accion sobre la firma
EventosPublicar eventos cuando una firma se completa, rechaza o expira
URL publica de firmaGenerar link seguro para que el firmante ejecute la firma sin autenticacion

Actores

ActorInteraccion con ImagSign
Platform AdminConfigura proveedores de firma. Define que proveedor usar en cada flujo.
OperatorCrea solicitudes de firma standalone (ad-hoc).
FirmanteEjecuta la firma via link publico (sin autenticacion, usa signing_token).
ImagFlowInvoca ImagSign como paso de firma dentro de un flujo.
ImagLendInvoca ImagSign para firma de contratos de credito.

Modos de Operacion

Standalone (Ad-hoc)

El operador crea una solicitud de firma directamente en ImagSign. Se genera un link publico que se envia al firmante. No hay dependencia de ImagFlow.

Integrado (como paso de ImagFlow)

ImagFlow invoca ImagSign cuando un flujo tiene un paso de tipo signature. ImagSign ejecuta la firma y publica un evento que ImagFlow consume para continuar la ejecucion.

Tipos de Firma

Firma Digital (con certificado)

Firma con certificado digital emitido por una autoridad certificadora. Tiene validez legal plena y no repudio.

ProveedorPaisTipo de certificado
FirmaloEcuadorCertificado en la nube
UanatacaEcuadorCertificado centralizado
CerticamaraColombiaCertificado en la nube

Firma Electronica

Firma sin certificado digital. Menor peso legal pero mas accesible.

SubtipoMecanismoNivel de seguridad
OTPCodigo enviado por SMS/email, firmante lo ingresaMedio
BiometricaCaptura de firma manuscrita en pantallaMedio
Aceptacion simpleClick en boton de aceptacionBajo

Firma Electronica Avanzada (con evidencia biometrica)

Firma electronica enriquecida con datos de validacion de identidad de ImagFlow. Tiene mayor peso legal porque incluye evidencia criptografica de que el firmante fue validado biometricamente.

ComponenteDescripcion
Evidence bundleDatos biometricos del proceso de validacion (score, timestamp, geo)
Liveness proofHash de la imagen del liveness verificado
Document matchScore del match facial (selfie vs documento)
Device attestationFingerprint y geolocalizacion del dispositivo usado
Timestamp certificadoEstampado cronologico del momento de la firma

El evidence_bundle se adjunta al documento firmado como paquete de evidencia separado, demostrando que la persona que firmo fue validada biometricamente por ImagFlow.

Firma por Dispositivo Certificado

Firma ejecutada desde un dispositivo previamente registrado y validado. Usa criptografia asimetrica (keypair en Secure Enclave) y biometria local (FaceID/TouchID).

Propiedades:

  • La clave privada nunca sale del dispositivo (no repudio)
  • La firma es sobre el hash del documento especifico (integridad)
  • Biometria local al momento de firmar (autenticacion)
  • El dispositivo fue validado con biometria real de ImagFlow (identidad)

Multiples Firmantes

ImagSign soporta solicitudes con multiples firmantes. Cada firmante tiene su propio token, estado y puede firmar independientemente.

Modelo

Estrategias para Multiples Firmantes

El problema: en firma digital PKI, agregar una firma puede invalidar las anteriores si el documento se modifica. ImagSign ofrece tres estrategias:

EstrategiaDescripcionCuando usar
incremental_pdfFirma incremental sobre el PDF (cada firma es una capa)Proveedores que soportan PAdES (Firmalo, Uanataca, Certicamara)
evidence_packageCada firmante genera evidencia separada, no modifica el PDFFirma electronica, dispositivo certificado
sequential_copiesCada firmante firma su propia copia, se consolida al finalFallback cuando el proveedor no soporta incremental

Configuracion

json
{
  "multi_signer_strategy": "incremental_pdf",
  "signing_order": "parallel",
  "signers": [
    {
      "role": "debtor",
      "name": "Juan Perez",
      "email": "juan@email.com",
      "identifier": "1234567890",
      "signature_type": "digital_certificate",
      "provider_code": "certicamara-co"
    },
    {
      "role": "co_debtor",
      "name": "Maria Garcia",
      "email": "maria@email.com",
      "identifier": "0987654321",
      "signature_type": "electronic_device",
      "provider_code": "imagy-device"
    },
    {
      "role": "witness",
      "name": "Carlos Lopez",
      "email": "carlos@email.com",
      "identifier": "1122334455",
      "signature_type": "electronic_otp"
    }
  ]
}
CampoDescripcion
multi_signer_strategyEstrategia para manejar multiples firmas
signing_orderparallel (cualquier orden) o sequential (orden forzado)
signers[].roleRol del firmante en el documento
signers[].signature_typeTipo de firma para este firmante especifico

Validacion de Integridad

Antes de permitir una nueva firma, ImagSign verifica:

  1. Si la estrategia es incremental_pdf: valida que las firmas anteriores siguen intactas
  2. Si alguna firma anterior se invalido: rechaza la operacion y notifica
  3. Si el proveedor no soporta firma incremental: fuerza estrategia evidence_package

Arquitectura de Proveedores (Adapter Pattern)

ImagSign usa el mismo patron que el Provider Gateway de ImagFlow: una interfaz comun por tipo de servicio, con adapters concretos por proveedor.

Cada adapter implementa la interfaz ISignatureProvider:

csharp
public interface ISignatureProvider
{
    string ProviderCode { get; }
    SignatureType SupportedType { get; }

    Task<InitiateResult> InitiateSignatureAsync(InitiateRequest request, CancellationToken ct);
    Task<SignatureStatus> GetStatusAsync(string externalId, CancellationToken ct);
    Task<SignedDocument> GetSignedDocumentAsync(string externalId, CancellationToken ct);
    Task<CancelResult> CancelAsync(string externalId, CancellationToken ct);
}

Integracion con Otros Dominios

ImagSign como proveedor de servicios

ConsumidorComo usa ImagSignEndpoint
ImagFlowEjecuta firma como paso del flujoPOST /api/v1/signature-requests (internal)
ImagLendFirma de contratos de creditoPOST /api/v1/signature-requests (internal)

ImagSign como consumidor

ImagSign no consume eventos directamente. Es invocado via HTTP por ImagFlow e ImagLend.

Ciclo de Vida del Documento

EstadoDescripcion
createdDocumento subido a S3, aun no asociado a una solicitud activa
pending_signatureSolicitud de firma creada, esperando accion del firmante
signedFirma completada exitosamente, documento firmado disponible
expiredEl tiempo limite para firmar se agoto
revokedLa solicitud fue cancelada por el operador o el sistema

Eventos Producidos

EventoRouting KeyConsumidores
Firma completadasign.signature.completedImagFlow
Firma rechazadasign.signature.rejectedImagFlow
Firma expiradasign.signature.expiredImagFlow, ImagLend

Eventos Consumidos

ImagSign no consume eventos de otros dominios. Es invocado directamente via HTTP.

Repositorio

  • Repo: imagy-sign
  • Base de datos: imagy_sign
  • Puerto local: 4003
  • Equipo: Team Sign

Documentos Relacionados

  • Modelo de Datos — Tablas, relaciones, almacenamiento de documentos
  • API Reference — Endpoints publicos, internos y de firma
  • Eventos — Eventos producidos con payloads completos

Reimagine Tech LLC — Documentacion Interna