Llevar la firma electrónica a una aplicación móvil nativa parece un problema de interfaz y termina siendo un problema de arquitectura. La pregunta que define todo el proyecto no es cómo se ve el botón de firmar, sino dónde está la clave privada en el momento exacto en que se produce la firma. Si esa respuesta es "en el teléfono", el equipo acaba de heredar un problema de custodia de credenciales que no estaba en el plan.
Este artículo repasa las decisiones técnicas de una app nativa en iOS y Android que necesita firmar documentos con certificado en Ecuador, con las restricciones reales de cada plataforma y sin recetas mágicas.
El teléfono es un mal custodio de la clave privada
Un archivo .p12 contiene la clave privada del titular. Guardarlo en el dispositivo tiene consecuencias que rara vez se evalúan a tiempo:
- El teléfono se pierde, se roba y se vende con más frecuencia que un servidor.
- Los respaldos automáticos hacia la nube personal pueden arrastrar el archivo fuera del control de la empresa.
- Un dispositivo con acceso de superusuario deja de ofrecer garantías sobre el almacenamiento seguro.
- Si la app se desinstala, el material criptográfico puede desaparecer sin aviso, y el usuario asume que "la firma se perdió".
- La rotación o revocación de un certificado obliga a alcanzar cada dispositivo, uno por uno.
Existen almacenes seguros en ambas plataformas —el llavero de iOS y el almacén de claves de Android, con respaldo de hardware en equipos modernos— y sirven para proteger secretos de la app. Pero proteger no es lo mismo que administrar: la empresa sigue sin poder revocar, auditar ni rotar de forma centralizada. La discusión general de formatos está en archivo, token y nube en la empresa.
El token USB no entra en la ecuación móvil
Conviene decirlo sin rodeos porque aparece en casi todos los requerimientos iniciales: un token USB criptográfico no es una opción práctica en una app móvil. Requiere controladores, adaptadores y permisos de acceso a periféricos que las plataformas móviles restringen con dureza, y en iOS directamente queda fuera del alcance de una aplicación común. Si el requerimiento del cliente dice "firmar desde el celular con el token", hay que reencuadrarlo antes de estimar.
El patrón que sí funciona: autorizar en el móvil, firmar en el servidor
El modelo que resuelve la mayoría de los casos separa dos cosas que la gente confunde: la operación criptográfica y la decisión de firmar.
- El documento se prepara del lado del servidor y queda disponible para el firmante.
- La app muestra el documento completo y lo deja revisar de verdad, no una miniatura.
- El usuario expresa su voluntad de firmar y se autentica con el factor que corresponda, incluida la biometría del dispositivo.
- El servicio de firma en la nube ejecuta la operación con el certificado del titular, resguardado del lado del proveedor.
- La app recibe la confirmación y muestra el documento firmado.
La ventaja es doble: el teléfono nunca custodia la clave privada y la empresa conserva la capacidad de administrar certificados de forma centralizada. Las implicaciones del modelo están en firma electrónica en la nube y en firmar desde cualquier dispositivo.
Un matiz importante sobre la biometría: la huella o el reconocimiento facial desbloquean el acceso en el dispositivo, no producen la firma. Sirven como factor de autenticación local dentro del flujo, y así hay que documentarlo, sin sugerir que la huella "es" la firma.
Diferencias entre iOS y Android que afectan el diseño
| Aspecto | iOS | Android |
|---|---|---|
| Almacenamiento seguro | Llavero del sistema, con respaldo de hardware | Almacén de claves, con respaldo de hardware según el equipo |
| Diversidad de dispositivos | Parque acotado y predecible | Enorme variedad de fabricantes y versiones |
| Acceso a periféricos | Muy restringido | Posible con permisos, pero inconsistente entre equipos |
| Trabajo en segundo plano | Ventanas de ejecución limitadas | Restricciones de ahorro de batería por fabricante |
| Distribución interna | Programas empresariales o distribución gestionada | Instalación gestionada o tiendas privadas |
| Revisión de tienda | Estricta con temas de identidad y pagos | Más flexible, con políticas propias |
La fragmentación de Android golpea sobre todo en dos puntos: la disponibilidad real de respaldo por hardware para el almacén de claves y las políticas agresivas de ahorro de energía, que matan procesos en segundo plano y hacen que las notificaciones lleguen tarde o no lleguen.
Notificaciones, colas y el problema de la conectividad
Una app de firma es, en el fondo, una bandeja de pendientes. Eso obliga a resolver bien tres cosas:
- Aviso de turno: cuando un documento queda listo para una persona, la app debe enterarse por notificación empujada y no porque el usuario abra la aplicación por casualidad. Del lado del servidor, eso se apoya en eventos, como se describe en webhooks de firma electrónica.
- Conectividad intermitente: en Ecuador es normal firmar desde una obra, una bodega o una carretera. La app tiene que tolerar cortes, reintentar con control y no dejar el estado a medias.
- Idempotencia: si el usuario presiona firmar dos veces o la red devuelve un error después de que la operación se completó, no puede generarse una segunda firma. Cada intento necesita un identificador único que el servidor reconozca.
El estado "no sé si se firmó" es el peor de todos: obliga a soporte manual y erosiona la confianza en el sistema. Vale la pena invertir en resolverlo desde el primer día.
Visor de documentos: no es un detalle cosmético
El firmante tiene que poder leer lo que firma. Una app que muestra un PDF ilegible o que solo permite ver la primera página está debilitando la manifestación de voluntad, que es justamente lo que da valor al acto. En términos prácticos:
- Visor con desplazamiento completo, ampliación y numeración de páginas visible.
- Registro de que el documento fue abierto y recorrido, no solo aceptado.
- Documentos pesados descargados de forma progresiva, sin bloquear la interfaz.
- Confirmación posterior con el archivo firmado disponible para descarga o reenvío.
Sobre la representación visual de la firma dentro del PDF conviene alinear expectativas con el usuario desde el diseño, porque la ausencia de un recuadro visible genera reclamos que no son técnicos sino de percepción. El tema está tratado en cuando la firma no aparece en el PDF.
Seguridad de la app y del canal
Una aplicación que participa en un circuito de firma es un objetivo interesante. Las medidas mínimas razonables incluyen fijación de certificados del servidor para evitar interceptación, detección de dispositivos comprometidos, expiración corta de sesión, bloqueo por inactividad y ausencia total de material sensible en registros de depuración. Un detalle que se olvida con frecuencia: las capturas de pantalla automáticas del sistema al cambiar de app pueden dejar contenido confidencial en el conmutador de tareas, y eso se desactiva de forma explícita en las pantallas críticas.
Si la app forma parte de un producto mayor que ya integra la API de firma, conviene revisar la guía de integración de la API y la guía técnica para desarrolladores, para no duplicar lógica entre el backend y el cliente móvil.
Certificados: la parte que no es código
Antes de la primera versión hay que resolver quién tendrá certificado, en qué formato y quién administra el ciclo de vida. Para un flujo móvil, la firma en la nube es prácticamente la única opción operable. La emisión es 100% en línea y toma aproximadamente 30 minutos, con validez legal ante el SRI y ante la ley. Para valores por cantidad de usuarios, revisa la página de precios.
El canal donde el usuario reclama
El grupo también desarrolla Omnifox, una plataforma omnicanal que reúne WhatsApp, redes, correo y llamadas en una bandeja compartida. Para un equipo que publica una app de firma, es donde llegan los reportes reales: "no me llega la notificación", "no puedo abrir el documento", "ya firmé y no me aparece". Tener esas conversaciones centralizadas, asignadas y con historial acorta muchísimo el diagnóstico. Más información en omnifox.io.
Preguntas frecuentes
¿Se puede guardar el certificado dentro de la app para firmar sin conexión?
Técnicamente es posible, pero traslada la custodia de la clave privada al dispositivo y elimina la capacidad de la empresa de revocar y auditar de forma centralizada. Para uso corporativo no es el camino recomendable.
¿La huella digital sirve como firma electrónica?
No. La biometría del teléfono autentica al usuario frente al dispositivo. La firma electrónica con validez legal se produce con el certificado emitido por una entidad de certificación acreditada.
¿Se puede usar un token USB desde el celular?
En la práctica no es viable para una aplicación de uso general. Las restricciones de acceso a periféricos y la dependencia de controladores lo vuelven inaplicable, especialmente en iOS.
¿Qué pasa si el usuario pierde conexión justo al firmar?
El diseño debe contemplar reintentos con un identificador único por operación, de modo que un reintento no genere una firma duplicada y el usuario vea siempre un estado claro.
¿Conviene hacer una app nativa o multiplataforma?
Depende del equipo y del alcance. Las particularidades de los frameworks cruzados están tratadas en firma electrónica en Flutter y React Native.
Si estás construyendo una app móvil que necesita firmar documentos con validez legal en Ecuador, habla con un asesor corporativo de Firmas.com.ec. Solicita tu cotización corporativa.