Solución de Software Libre para facilitar el acceso a dispositivos criptográficos para firma digital desde los navegadores web modernos
Marta Solano y Luis Zárate
Universidad de Costa Rica
Escuela de Ciencias de la Computación e Informática
2021
Antecedentes
Antecedentes del País
-
MICITT y el Gobierno han normado a favor de promover el uso de firma digital
- Ley 8454 (Asamblea Legislativa, 2005)
- Reglamento N°33018 (MICITT, 2006)
-
BCCR como administrador de CA SINPE
- Algunos bancos públicos y privados para registro de usuarios finales
-
Ley 9416 (Asamblea Legislativa, 2016)
- Obligatoriedad de firma digital para registro de accionistas
- Reciente lanzamiento del servicio del BCCR de firmado y validación de documentos para Personas Jurídicas
- Pandemia del COVID-19
Antecedentes del Proyecto
- Applets de Java
- Extensiones para cada Navegador Web
- Uso de Aplicaciones Nativas Invocadas Mediante Protocolo a la Medida
- Residente en el Cliente Proveyendo Servicio HTTPS
- Intermediación de una Institución Autorizada y Cliente Residente (FVA-BCCR)
- Proyecto de Firma Digital de la UCR
Diseño de la Solución
Descripción del Proyecto
-
Modelo de comunicación capaz de proporcionar servicios de firmado, autenticación y validación de documentos electrónicos haciendo uso de los servicios del BCCR (sin depender del banco). Consiste en:
- Una plataforma de servicios web (SIFAV)
- Un cliente para personas consumidor de la plataforma
- Un sistema de comunicación con el Firmador BCCR
- Un módulo de comunicación con la Tarjeta PKCS11
- Un prototipo de ventanas para aplicaciones de instituciones
- Un sistema de simulación de los servicios del BCCR (para pruebas)
Arquitectura de la Solución
Diagrama de Componentes Generales de la Aplicación
Arquitectura de la Aplicación para Personas
Diagrama de Módulos de la Aplicación para Personas
Arquitectura de la Aplicación para Personas
Base de Datos de la Aplicación para Personas
Arquitectura de la Aplicación para Personas
Uso de la Base de Datos en la Aplicación para Personas
Arquitectura de SIFAV
Diagrama de Módulos de la Aplicación SIFAV
Arquitectura de SIFAV
Base de Datos de SIFAV (1)
Arquitectura de SIFAV
Base de Datos de SIFAV (2)
Flujo de Datos
Flujo de Autenticación de la Aplicación para Personas en SIFAV
Flujo de Firma de Documentos y Autenticación de Personas
Flujo de Validación de Documentos
Implementación del Prototipo
Herramientas Utilizadas (1)
-
Solo se utilizó software con licencia OpenSource
-
Excepto bibliotecas de manejo de las tarjetas PKCS11
- No existe una biblioteca abierta equivalente
-
Excepto bibliotecas de manejo de las tarjetas PKCS11
-
Lenguaje de programación
- Python 3.6
-
Sistemas operativos de desarrollo
- GNU/Linux Debian 10
- MacOS Catalina
-
Servidor para ejecución de SIFAV
- GNU/Linux Debian 10
- Secciones web con posibilidad de crear imágenes Docker
Herramientas Utilizadas (2)
Aplicación para Personas
- SQLite3
- PyQt5
- PyCryptodome
- Pyscard / Python-pkcs11
- PyInstaller
- Requests
Aplicación SIFAV
- PostgreSQL
- Django
- Django Rest Framework
- PyCryptodome / Cryptography
- Memcached
- RabbitMQ
- Celery
- PyUnit / Nose Test
Código Fuente
- Aplicación para Personas
- Servicio de Intermediación de Firma, Autenticación y Validación (SIFAV)
- Pyfva (Módulo de Comunicación con el BCCR)
- Ventanas para la Aplicación de Instituciones
Documentación Externa
-
Aplicación para Personas
- No se ha realizado documentación externa escrita
- Servicio de Intermediación de Firma, Autenticación y Validación (SIFAV)
- Pyfva (Módulo de Comunicación con el BCCR)
- Ventanas para la Aplicación de Instituciones
Empaquetado
- Aplicación para Personas
-
Servicio de Intermediación de Firma, Autenticación y Validación (SIFAV)
- Aplicación que atiende a la aplicación para personas
- Aplicación de recepción de notificaciones usando Nginx
- Aplicación de recepción de notificaciones usando Apache
- Pyfva (Módulo de Comunicación con el BCCR)
-
Ventanas para la Aplicación de Instituciones
- No se empaquetó
Pruebas del Prototipo
Pruebas para Garantizar el Cumplimiento de la Normativa Nacional
- Ley 17046 - Ley Marco sobre el Resguardo de la Neutralidad Tecnológica en el Gobierno Electrónico y los Derechos de los Usuarios
- Ley 8454 - Ley de Certificados, Firmas Digitales y Documentos Electrónicos
- EEFDI - Estándar Físico de Firma Digital: Serie de normas y procedimientos
- EEFDI - Estándar Electrónico, Servicios Firma Digital en Internet: Serie de Normas y Procedimientos
- EEFDI - Firmador BCCR: Servicios para personas físicas, Serie de normas y procedimientos
- Decreto N°33018 - Reglamento a la Ley de Certificados, Firmas Digitales y Documentos Electrónicos
- Política de Formatos Oficiales de los Documentos Electrónicos Firmados Digitalmente
Pruebas Funcionales de la Aplicación para Personas
- Las lista y ejecución de las pruebas se realizó según las ventanas de la aplicación y el orden del menú
-
Funcionalidades y comunicaciones de más alto nivel importantes de mencionar
- Comunicación con SIFAV
-
Conexión con la tarjeta PKCS11
-
Única sección con pruebas que no pudieron repararse
- Cuando no se poseen los módulos de PKCS11
-
Única sección con pruebas que no pudieron repararse
- Comunicación con el BCCR mediante SignalR
Pruebas Funcionales de SIFAV
-
Pruebas Manuales
- Parte del proceso de solicitud para usar el servicio del BCCR
- Para cada punto de acceso y los datos transmitidos
-
Pruebas Unitarias
- Para cumplir con el documento "Ambiente de Pruebas Servicio FVA, Firmador BCCR - Detalles Técnicos, versión 1.5"
-
Para probar que el API expuesto permita el correcto envío de solicitudes
- Desarrollo de un simulador del servicio Firmador BCCR para evitar utilizar los servicios de producción durante el desarrollo y asegurar el correcto comportamiento en casos de excepción
-
Pruebas Unitarias que posee soapfish
- A nivel de comunicación entre SIFAV y el servicio de aplicaciones de terceros mediante SOAP
Pruebas No Funcionales de la Aplicación para Personas
-
La aplicación es intuitiva
- Los mensajes presentados en condiciones error o información son fácilmente identificables
- Provee ayuda visual adecuada
- Es adaptable a diferentes tamaños de pantalla
- Cuenta con elementos de ayuda sobre su utilización
-
La aplicación es segura
- A nivel de comunicaciones
- En la manipulación de datos
- En el manejo del pin de la tarjeta
Pruebas No Funcionales de SIFAV
-
Comunicaciones seguras
- Con la aplicación externa
- Con la aplicación para personas
- Al menos existe una configuración segura que proteja el certificado de agente proporcionado por el banco
-
Los documentos
- No son expuesto a terceros no autorizados
- No pueden ser alterado en ningún momento durante la transmisión
- Solamente existen en la plataforma solamente lo suficiente para que se pueda retransmitir ya firmado cuando se obtiene
Conclusiones y Recomendaciones
Conclusiones
- Es posible desarrollar una solución nacional de firma digital multiplataforma
- Servicios ofrecidos por el BCCR pueden ser extendidos y mejorados
-
Documentación pública existente por parte del BCCR para desarrolladores es escasa y limitada
- Aún así, hay una amplia documentación privada que puede servir de base para proyectos sin comprometer la seguridad de las plataformas
- Comunicación con dispositivos PKCS11 y los componentes de firmado existen para otros lenguajes de programación además de Java y C#
- Este proyecto puede ser usado como base para la mejora de los servicios ofrecidos a la población del país
- Es posible implementar soluciones que permitan un uso más completo, estándar y generalizado de firma digital al usuario promedio
- Se pueden aprovechar los beneficios del desarrollo de software libre para implementar soluciones de este tipo y su constante actualización
Recomendaciones Relacionadas con el Software Desarrollado
- Estudiar la posibilidad de ejecutar todas las pruebas dispuestas por el BCCR antes de considerarlo software de producción
- Trabajar con el BCCR en la mejora de los procesos para que la comunicación entre sus servicios y las personas sea tomada en cuenta en los diseños y futuros desarrollos
- Hacer un análisis más exhaustivo de seguridad al software desarrollado
- Realizar un proceso de pruebas con una cantidad de usuarios mayor
- Optimizar al máximo todas las secciones del código implementadas antes de difundir la aplicación
- Incorporar otros idiomas y lenguas dentro de la aplicación
- Mejorar la duración del proceso de firmado y validación para documentos grandes
Recomendaciones al Sistema Nacional de Firma Digital
- Construir un entorno más amplio para la discusión de aspectos relacionados con los procesos de desarrollo de aplicaciones de firma digital
- Favorecer los desarrollos de código abierto donde comprender y analizar lo que hacen las aplicaciones realmente
- Construir bibliotecas en diferentes lenguajes de programación para conectarse a los servicios del BCCR y la integración con los gestores de archivos de los sistemas operativos para favorecer el uso global y sin limitaciones de la plataforma nacional
- Fomentar la cultura de soporte comunitario remunerado
Demostración y Preguntas
Bibliografía
- Adams, C., Cain, P., Pinkas, D., y Zuccherato, R. (2001). Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP). No. RFC 3161.
- Agency, N. S. (2000). National Information Systems Security Glossary. Reporte técnico, National Security Telecommunications and Information Systems Security Committee.
- Asamblea Legislativa (2005). Ley 8454 de Certificados, Firmas Digitales y Documentos Electrónicos. Reporte técnico, Sistema Costarricense de Información Jurídica.
- Asamblea Legislativa (2008a). Ley 17046, Ley Marco sobre el Resguardo de la Neutralidad Tecnológica en el Gobierno Electrónico y los Derechos de los Usuarios. Reporte técnico, Sistema Costarricense de Información Jurídica.
- Asamblea Legislativa (2008b). Ley 8642, Ley General de Telecomunicaciones. Reporte técnico, Sistema Costarricense de Información Jurídica.
- Asamblea Legislativa (2016). Ley 9416, Ley para Mejorar la Lucha contra el Fraude Fiscal. Reporte técnico, Sistema Costarricense de Información Jurídica.
- Bateman (2015). FireBreath 2.0: Browser Plugins in a post-NPAPI world. Recuperado el 5 de marzo de 2017, desde http://www.firebreath.org/display/documentation/ FireBreath+2.0%3A+Browser+Plugins+in+a+post-NPAPI+world.
- BCCR (2015). EEFDI - Estándar Físico de Firma Digital: Serie de normas y procedimientos, Público. Edición No 12.
- BCCR (2016). EEFDI - Estándar Electrónico, Servicios Firma Digital en Internet: Serie de Normas y Procedimientos. Público. Edición No 4.
- BCCR (2018a). Ambiente de Pruebas Servicio FVA, Firmador BCCR - Detalles Técnicos, version 1.5.
- BCCR (2018b). EEFDI - Firmador BCCR: Servicios para personas físicas, Serie de normas y procedimientos. Público. Edición No 1.
- BCCR (2018c). Estándar electrónico: Para la presentación de mensajes en portales web que utilizan el firmador BCCR.
- Bevan, N., Kirakowski, J., y Maissel, J. (1991). What is usability? En En Proceedings of the 4th International Conference on HCI, páginas 1–7. HCI.
- Bohorquez, A., Castillo, N., y Vargas, J. (2013). Implementación de una infraestructura de clave pública - PKI. Reporte técnico, Institución Universitaria Politécnico Grancolombiano, Bogotá, Colombia.
- Buchmann, J. A., Karatsiolis, E., y Wiesmaier, A. (2013). Introduction to public key infrastructures. Reporte técnico, Springer Science & Business Media.
- García, R. (2004). El Sistema Nacional de Salud en Costa Rica: Generalidades. Re- porte técnico, Caja Costarricense de Seguro Social, Centro de Desarrollo Estratégico e Información en Salud y Seguridad Social (CENDEISSS). Costa Rica.
- García, T. (2014). Alternativas a los Applets de Java en las aplicaciones Web de firma electrónica. Reporte técnico, Gobierno de España, versión 1.2.
- Housley, R., Polk, W., Ford, W., y Solo, D. (2002). Internet X.509 Public Key Infrastruc- ture Certificate and Certificate Revocation List (CRL) Profile. No. RFC 3280.
- International Organization for Standardization (1998). Ergonomic requirements for office work with visual display terminals (vdts)part 11: Guidance on usability. Standard, International Organization for Standardization.
- Maconachy, W. V., Schou, C. D., Ragsdale, D., y Welch, D. (2001). A Model for Infor- mation Assurance: An Integrated Approach. Proceedings of the 2001 IEEE Workshop on Information Assurance and Security, 236(1):306–310.
- MICITT (2006). Decreto No33018: Reglamento a la Ley de Certificados, Firmas Digitales y Documentos Electrónicos.
- MICITT (2013a). Política de Certificados para la Jerarquía Nacional de Certificados Registrados.
- MICITT (2013b). Política de Formatos Oficiales de los Documentos Electrónicos Firmados Digitalmente.
- MICITT (2018). Política de Certificados para la Jerarquía Nacional de Certificadores Registrados.
- Myers, M., Ankney, R., Malpani, A., Galperin, S., y Adams, C. (1999). X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP. No. RFC 2560.
- Van Rossum, G. and Warsaw, B. and Coghlan, N. (2001). PEP 8: Style Guide for Python Code. Recuperado el 18 de marzo de 2021, desde https://www.python.org/dev/peps/ pep-0008/.
- Vivas, T., Huerta, M., Zambrano, A., Clotet, R., y Satizábal, C. (2007). Aplicación de Mecanismos de Seguridad en una Red de Telemedicina Basados en Certificados Digitales. En Bioengineering Solutions for Latin America Health, páginas 971–974. Springer-Verlag Berlin Heidelberg.
Proyecto Final de Graduación - Presentación
By Marta Solano
Proyecto Final de Graduación - Presentación
- 361