UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA,
PROYECTO CURRICULAR DE INGENIERÍA DE SISTEMAS
JEAN SEBASTIAN PENAGOS MORA LUISA FERNANDA RUEDA PÁEZ
SISTEMA DE PAGOS ELECTRÓNICOS ONLINE MEDIANTE EL USO DE UN MONEDERO DIGITAL PRECARGADO
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA,
PROYECTO CURRICULAR DE INGENIERÍA DE SISTEMAS
JEAN SEBASTIAN PENAGOS MORA LUISA FERNANDA RUEDA PÁEZ
SISTEMA PARA PAGOS ELECTRÓNICOS ONLINE MEDIANTE EL USO DE UN MONEDERO DIGITAL PRECARGADO
Proyecto de grado
Director de trabajo de grado: Carlos Enrique Montenegro Marín
Ingeniero de Sistemas Co-director de trabajo de grado:
Alejandro Paolo Daza Ingeniero de Sistemas
iii CONTENIDO
INTRODUCCIÓN... 1
1. PLANTEAMIENTO DEL PROBLEMA ... 3
1.1 DESCRIPCIÓN DEL PROBLEMA ... 3
1.2 FORMULACIÓN DEL PROBLEMA ... 3
2. JUSTIFICACIÓN ... 4
3. OBJETIVOS ... 7
3.1 OBJETIVO GENERAL ... 7
3.2 OBJETIVOS ESPECÍFICOS... 7
4. ALCANCES Y LIMITACIONES ... 8
4.1 ALCANCES ... 8
4.2 LIMITACIONES ... 10
5. ESTADO DEL ARTE ... 12
5.1 PAYU LATAM ... 12
5.2 WEBMONEY TRANSFER ... 13
5.2.1 Seguridad y Confidencialidad ... 13
5.3 VALOR DIFERENCIAL MONEDERO DIGITAL ... 14
5.3.1 Forma de pago ... 14
5.3.2 Forma de recarga ... 14
5.3.3 Modelo de pago ... 15
6. MARCO TEÓRICO ... 16
6.1 ECOMMERCE ... 16
6.2 SISTEMAS DE PAGO ELECTRÓNICO ... 17
6.3 DINERO ELECTRÓNICO ... 18
6.3.1 Características ... 19
6.4 SEGURIDAD INFORMÁTICA ... 20
6.4.1 Canal de comunicación seguro ... 20
6.4.2 Criptografía ... 23
6.4.3 Certificados Digitales... 27
iv
6.5 LDAP (LIGHTWEIGHT DIRECTORY ACCESS PROTOCOL) ... 28
6.6 SOA (SERVICE ORIENTED ARCHITECTURE) ... 29
6.6.1 Beneficios ... 29
6.7 JAVA SERVER FACES - JSF ... 29
6.7.1 Características ... 30
6.8 PRIMEFACES... 30
6.8.1 Ventajas ... 30
6.9 JAVA PERSISTENCE API - JPA ... 31
6.9.1 Características ... 31
6.10 HIBERNATE ... 32
6.10.1 Características ... 32
6.10.2 Lenguaje HQL ... 33
6.11 SERVICIOS SOAP ... 33
6.11.1 Características ... 33
6.11.2 Ventajas (GONZALEZ, 2004)... 34
6.12 APACHE CXF ... 34
6.12.1 Características ... 35
6.13 MAVEN ... 36
6.13.1 Características ... 36
6.14 GIT ... 37
6.14.1 Características ... 37
6.14.2 ¿Cómo funciona? – Ejemplo ... 38
6.15 JAAS (Java Authentication and Athorization Service) ... 41
6.15.1 Proceso de Autenticación ... 41
6.15.2 Proceso de Autorización ... 41
6.16 WS-SECURITY ... 42
6.16.1 Problemáticas atacadas ... 42
6.16.2 Ventajas ... 43
7. MARCO METODOLÓGICO ... 44
v
7.1.1 El equipo Scrum (Scrum Team) ... 45
7.1.2 Eventos de Scrum ... 46
7.1.3 El Sprint ... 47
7.1.4 Artefactos de Scrum ... 47
8 DESARROLLO METODOLÓGICO ... 49
8.1 ROLES ... 49
8.2 PRODUCT BACKLOG ... 50
8.3 SPRINTS BACKLOG ... 51
8.3.1 Sprint Backlog – Análisis y diseño funcional ... 51
8.3.2 Sprint Backlog – Diseño estructural ... 52
8.3.3 Sprint Backlog – Configuración de ambiente y creación BD ... 53
8.3.4 Sprint Backlog – Desarrollo módulo de acceso... 54
8.3.5 Sprint Backlog – Desarrollo módulo administrativo ... 55
8.3.6 Sprint Backlog – Desarrollo módulo usuario monedero ... 56
8.3.7 Sprint Backlog – Desarrollo módulo recarga monedero ... 57
8.3.8 Sprint Backlog – Desarrollo módulo usuario tienda online ... 58
8.3.9 Sprint Backlog – Desarrollo servicio de pagos ... 60
8.3.10 Sprint Backlog – Desarrollo simulación del comercio ... 61
8.3.11 Sprint Backlog – Configuraciones de seguridad ... 62
8.3.12 Sprint Backlog – Simulación banco/Generación facturas ... 63
8.4 CRONOGRAMA ... 64
8.5. COSTOS DEL PROYECTO ... 68
9 DISEÑO FUNCIONAL ... 72
9.1 CARACTERÍSTICAS DE LOS USUARIOS ... 72
9.2 REQUISITOS FUNCIONALES ... 73
9.3 REQUISITOS COMUNES DE LAS INTERFACES ... 79
9.3.1 Interfaces de usuario ... 80
9.3.2 Interfaces de hardware... 80
9.3.3 Interfaces de software ... 80
vi
9.4.1 Seguridad en el aplicativo ... 80
9.4.2 Fiabilidad ... 81
9.4.3 Portabilidad ... 81
9.4.4 Concurrencia ... 81
9.5 DIAGRAMAS DE CASOS DE USO ... 82
9.5.1 Módulo de Control de acceso ... 82
9.5.2 Módulo de Cliente Comprador ... 83
9.5.3 Módulo de Tienda Online ... 84
9.5.4 Módulo de Punto de Recarga ... 85
9.5.5 Módulo de Administración ... 86
9.5.6 Módulo de Pagos ... 86
9.6 ESPECIFICACIÓN DE CASOS DE USO EN FORMATO EXPANDIDO ... 87
9.6.1 Módulo de Control de acceso ... 87
9.6.2 Módulo de Cliente Comprador ... 88
9.6.3 Módulo de Tienda Online ... 92
9.6.4 Módulo de Punto de Recarga ... 95
9.6.5 Módulo Administrativo ... 98
9.6.6 Módulo de Pagos ... 99
10 MODELO ESTRUCTURAL ... 101
10.1 PERSISTENCIA ... 101
10.1.1 Diccionario de Datos ... 101
10.2 MODELO ESTÁTICO ... 101
10.2.1 Diagrama de clases ... 101
10.2.2 Diccionario de clases ... 101
11 MODELO DINÁMICO ... 102
11.1 DIAGRAMAS DE ESTADO ... 102
11.1.1 Diagrama de estados de Pago ... 102
11.1.2 Diagrama de estados de Token ... 103
11.1.3 Diagrama de estados de Cliente ... 103
vii
12 IMPLEMENTACIÓN DEL PROTOTIPO ... 105
12.1 CARACTERÍSTICAS ... 105
12.2 MÓDULOS ... 106
12.2.1 Módulo de Acceso ... 106
12.2.2 Módulo de Administración ... 106
12.2.3 Módulo usuario comprador... 107
12.2.4 Módulo de recargas ... 107
12.2.5 Módulo para tiendas Online ... 108
12.2.6 Módulo de Pagos ... 108
12.2.7 Módulo Batch ... 109
12.2.8 Simulación del Comercio... 109
12.2.9 Simulación del Establecimiento Bancario ... 109
12.3 TECNOLOGÍAS UTILIZADAS ... 110
13 ARQUITECTURA IMPLEMENTADA ... 111
14 SEGURIDAD IMPLEMENTADA ... 114
14.1 AUTENTICACIÓN Y AUTORIZACIÓN DE USUARIOS ... 114
14.2 MANEJO DE CERTIFICADOS DIGITALES ... 117
14.3 IMPLEMENTACIÓN WS-SECURITY ... 118
14.4 ENVÍO DE CORREOS SEGUROS ... 120
RESULTADOS ... 121
CONCLUSIONES ... 123
BIBLIOGRAFÍA ... 124
viii
LISTA DE FIGURAS
Figura 1. Metas del Programa Vive Digital ... 5
Figura 2. Comunicación normal... 21
Figura 3. Comunicación con interrupción 1 ... 21
Figura 4. Comunicación con interrupción 2 ... 22
Figura 5. Falsificación ... 22
Figura 6. Generación ... 22
Figura 7. Criptografía Simétrica ... 23
Figura 8. Criptografía Asimétrica ... 24
Figura 9. Firma de un documento ... 26
Figura 10. Paso 1: Todos los desarrolladores clonan el repositorio central ... 39
Figura 11. Paso 2: John trabaja en sus desarrollos ... 39
Figura 12. Paso 3: Mary trabaja en sus desarrollos ... 39
Figura 13. Paso 4: Jhon publica sus desarrollos ... 39
Figura 14. Paso 5: Mary intenta publicar sus desarrollos ... 40
Figura 15. Paso 6: Mary reajusta de acuerdo a los cambios de Jhon ... 40
Figura 16. Paso 7: Mary resuelve un conflicto de merge ... 40
Figura 17. Paso 8: Mary publica correctamente sus desarrollos... 40
Figura 18. Gráfica Burndown... 48
Figura 19 Diagrama de casos de uso para módulo de control de acceso ... 82
Figura 20 Diagrama de casos de uso para módulo de cliente comprador ... 83
Figura 21 Diagrama de casos de uso para módulo de tienda online ... 84
Figura 22 Diagrama de casos de uso para módulo de punto de recarga ... 85
Figura 23 Diagrama de casos de uso para módulo de administración ... 86
Figura 24 Diagrama de casos de uso para módulo de pagos ... 86
Figura 25 Diagrama de estados de Pago ... 102
Figura 26 Diagrama de estados de Token ... 103
Figura 27 Diagrama de estados de Cliente ... 103
Figura 28 Arquitectura cliente servidor de 3 capas ... 111
Figura 29. Herramientas tecnológicas usadas en cada capa ... 112
Figura 30. Diagrama de la arquitectura general del sistema ... 113
Figura 31. Registro LDAP con contraseñas activas e intentos erróneos 0 ... 116
Figura 32. Registro LDAP con contraseña de acceso bloqueada e intentos erróneos 3 . 116 Figura 33. Registro LDAP con contraseña transaccional bloqueada e intentos erróneos 3 ... 117
Figura 34. Cuerpo del mensaje SOAP sin implementación de WS-Security ... 119
ix
LISTA DE TABLAS
Tabla 1. Descripción de roles ... 50
Tabla 2. Product Backlog ... 50
Tabla 3. Sprint backlog -Análisis y diseño funcional ... 51
Tabla 4. Sprint backlog -Diseño estructural ... 52
Tabla 5. Sprint backlog -Configuración de ambiente y creación BD ... 53
Tabla 6. Sprint backlog -Desarrollo módulo de acceso ... 54
Tabla 7. Sprint backlog -Desarrollo módulo administrativo ... 55
Tabla 8. Sprint backlog -Desarrollo módulo usuario monedero ... 56
Tabla 9. Sprint backlog -Desarollo módulo recarga monedero ... 58
Tabla 10. Sprint backlog -Desarrollo módulo tienda onine ... 59
Tabla 11. Sprint baklog -Desarrollo servicio de pagos ... 60
Tabla 12. Sprint backlog -Desarrollo simulación del comercio ... 61
Tabla 13. Sprint backlog -Configuraciones de seguridad ... 62
Tabla 14. Sprint backlog -Simulación banco/Geneación facturas ... 63
Tabla 15. Cronograma Parte 1 ... 65
Tabla 16. Cronograma Parte 2 ... 66
Tabla 17. Cronograma Parte 3 ... 67
Tabla 18. Cronograma Parte 4 ... 68
Tabla 19. Costos equipos de Cómputo ... 69
Tabla 20. Costos fijos mensuales ... 69
Tabla 21. Tabla de salarios mensual ... 69
Tabla 22. Otros costos mensuales variables ... 70
Tabla 23. Total costo del proyecto ... 70
Tabla 24. Características de usuarios Sistema Monedero ... 72
Tabla 25. Especificación CU Iniciar sesión ... 87
Tabla 26. Especificación CU Cambiar contraseña ... 87
Tabla 27. Especificación CU Gestionar monedero ... 88
Tabla 28. Especificación CU Cambiar datos personales ... 88
Tabla 29. Especificación CU Crear contraseña transaccional ... 89
Tabla 30. Especificación CU Cambiar contraseña transaccional ... 89
Tabla 31. Especificación CU Crear monedero comprador ... 90
Tabla 32. Especificación CU Solicitar registro/Activar cuenta ... 90
Tabla 33 Especificación CU Cancelar cuenta comprador ... 91
Tabla 34. Especificación CU Solicitar registro tienda ... 92
Tabla 35. Especificación CU Gestionar monedero ... 92
Tabla 36. Especificación CU Modificar datos básicos ... 93
x
Tabla 38. Especificación CU Cambiar contraseña transaccional ... 94
Tabla 39. Especificación CU Cancelar cuenta tienda ... 94
Tabla 40. Especificación CU Solicitar recarga ... 95
Tabla 41. Especificación CU Consultar histórico de recargas ... 95
Tabla 42. Especificación CU Descargar factura de pago ... 96
Tabla 43. Especificación CU Modificar datos básicos ... 96
Tabla 44. Especificación CU Solicitar registro PR ... 97
Tabla 45. Especificación CU Cancelar cuenta PR ... 97
Tabla 46. Especificación CU Consultar solicitudes de alta de cuentas ... 98
Tabla 47. Especificación CU Aprobar/Rechazar alta de cuenta... 98
Tabla 48. Especificación CU Solicitar pago de compra... 99
Tabla 49. Especificación CU Validar datos transacción ... 99
1
INTRODUCCIÓN
En el año 2011 en Colombia la demanda del e-commerce creció casi el doble respecto al año 2009, pasando de US$435 millones a US$998 millones en ventas (Euromonitor International, Visa, 2014), lo cual muestra la gran acogida que ha adquirido en tan poco tiempo. Las transacciones en línea han tomado mucha fuerza, lo cual ha llevado a que cada vez sean más las condiciones que se deban cumplir por parte de los sistemas de pago electrónico, con el fin de brindar seguridad y confianza tanto a las empresas que en la actualidad ofrecen sus productos vía internet, las que desean iniciar en este mercado, y a los usuarios que ven este servicio muy provechoso.
Actualmente existe variada cantidad de sistemas de pago (de los cuales se hablará posteriormente), y en el mercado se encuentran diferentes productos que satisfacen en cierta medida algunas de estas condiciones, aún así no se ha logrado crear una solución completa y lo suficientemente robusta que llame la atención y atraiga a numerosa cantidad de nuevos usuarios al servicio de pagos de compras en línea.
Los sistemas de pago electrónico ofrecen diferentes medios de pago, donde muchos de estos no están al alcance de gran parte de la población interesada en utilizar o consumir este tipo de servicio. El anterior motivo, junto con el alto nivel de desconfianza, y la falta de simplicidad y utilidad en los sistemas, hace notoria la necesidad que se genera por la creación de un sistema de pago completo o por lo menos que ofrezca un valor agregado para los usuarios menos favorecidos (como lo son los que no desean manejar por internet datos de cuentas o cualquier otro tipo de producto bancario), o los usuarios que simplemente no tienen acceso a este tipo de productos.
2
3
1. PLANTEAMIENTO DEL PROBLEMA
1.1 DESCRIPCIÓN DEL PROBLEMA
El comercio electrónico se ha convertido con el paso del tiempo en parte del diario vivir en Colombia. Las facilidades que éste trae lo han convertido en una necesidad para gran parte de la población, lo cual hace necesario que sea simple y fácilmente accesible.
Los sistemas de pago existentes para la realización de las compras en línea permiten el uso de las tarjetas débito, crédito, incluso cuentas bancarias para el pago de las compras, aún así gran parte de la población no cuenta con ninguno de estos medios o servicios, por lo cual no les es posible acceder a este servicio de compras en línea. Adicionalmente, el uso de una tarjeta de crédito para la realización de compras atribuye el adquirir una deuda sin tener la necesidad de hacerlo, lo que acarrea costos extras y en algunos casos, el tener que desplazarse para realizar los pagos a las sucursales bancarias.
Se pretendió realizar un modelo de pago que implemente un monedero digital mediante el cual las personas interesadas en comprar un producto vía internet de forma online, y que no cuentan con una tarjeta de crédito o débito, así como las que sí cuentan con estos productos, puedan realizar la compra de una forma sencilla, eficaz, práctica, pero ante todo, segura.
Para lo anteriormente planteado se hacía necesario establecer alianzas, tanto con tiendas online para la realización de las compras por parte de los clientes, como con establecimientos comerciales que mediante un portal realice las recargas de los monederos mediante pago en efectivo.
1.2 FORMULACIÓN DEL PROBLEMA
4
2. JUSTIFICACIÓN
Según el estudio de comercio en América Latina VISA 2014 (E-READINESS) (Euromonitor International, Visa, 2014), en el año 2013 en Colombia el porcentaje de usuarios con acceso a internet desde diferentes dispositivos fue de 56.2% sobre el total de la población a comparación del porcentaje en 2011, el cual era de menos del 48%. Este porcentaje demuestra la importancia que ha adquirido el internet para la población colombiana en general. Sin embargo, solamente el 38,1% de la población perteneciente al porcentaje anterior, realizaban compras periódicamente por internet, lo cual muestra la falta de preferencia por las compras electrónicas.
En los últimos años, el país ha crecido en materia de tecnología y sigue creciendo con el fin de alcanzar el alfabetismo digital en toda la población. Muestra de lo anterior se ve en los planes, políticas y proyectos que se presentan a nivel nacional, algunos de los más importantes son:
PUNTOS VIVE DIGITAL: El proyecto Puntos Vive Digital
(http://www.mintic.gov.co, sección Comunicaciones prensa- Convocatoria instalación puntos vive digital) del MinTIC busca garantizar el acceso a internet a la comunidad, además de ofrecer capacitaciones y formación con el fin de generar competencias digitales básicas en la comunidad.
5 Figura 1. Metas del Programa Vive Digital
Tomado de: http://www.mintic.gov.co/images/MS_VIVE_DIGITAL/imagenes/objetivos_graficos.jpg
PLAN NACIONAL TIC: El Plan nacional TIC (http://www.mintic.gov.co, sección Plan Vive Digital), a cargo del Gobierno Nacional para el periodo 2008-2019, pretende garantizar que todos los colombianos hagan uso productivo de las tecnologías de la información ya sea con fines educativos o comunicativos, con el fin de mejorar la competitividad y la inclusión social. Para lograr este propósito, el gobierno ha estado trabajando y desarrollando diferentes programas para el fomento de las TIC, algunos de estos programas son Computadores para Educar y Compartel.
PROYECTO NACIONAL DE FIBRA ÓPTICA: El Proyecto Nacional de Fibra Óptica (http://www.mintic.gov.co, sección Plan Vive Digital) nació por la necesidad de garantizar cobertura en fibra óptica en los municipios apartados del país ya que para el nacimiento de este proyecto Colombia sólo contaba con una cobertura del 29%, la cual se busca ampliar al 96%.
6
De igual forma, para las tiendas que venden sus productos en línea, es un limitante el hecho de que el grupo social para el cual están dirigidos sus productos (personas que cuentan con tarjeta débito o crédito, por lo general) sea muy pequeño respecto a los que podrían pagar en efectivo.
Por otro lado, para muchas personas, realizar compras en línea representa inseguridad y desconfianza, ya que al momento de realizar el pago deben ingresar datos relacionados con sus números de cuenta, datos personales, incluso claves privadas. Aún peor, cada vez que deseen realizar un pago, deben ingresar todos estos datos, los cuales van a viajar por la red y son propensos a ser interceptados. (http://internetesmercadeo.com/aumentan-las-compras-on-line-en-colombia-a-pesar-de-la-desconfianza/, Aumentan compras on line en Colombia pese a la desconfianza)
Las anteriores razones, generaron la necesidad de la creación de un monedero digital que puede ser recargado con dinero en efectivo desde establecimientos comerciales, lo cual permite el acceso al servicio a las personas que no cuentan con tarjetas débito o crédito o con cuentas bancarias, así como a las personas que cuentan con alguno de estos medios pero prefieren hacer sus recargas en efectivo. Al momento de realizar la compra, los clientes que ya posean su monedero, no tendrán la necesidad de ingresar datos personales, datos de cuentas o tarjetas que podrían ser vulnerables en la red, lo cual es garantía de seguridad.
El uso del monedero digital como forma de pago de compras en línea garantiza simplicidad y confiabilidad en el proceso de pagos, fácil accesibilidad a histórico de pagos realizados y consulta y personalización de cuenta en el sistema.
7
3. OBJETIVOS
3.1 OBJETIVO GENERAL
Diseñar y desarrollar un prototipo de sistema de pagos electrónicos online a través del uso de un monedero digital precargado, el cual brinde el servicio a todo tipo de usuarios incluso a los no usuarios del sistema bancario, eliminando la limitación de tener obligatoriamente que usar productos bancarios para permitir a los clientes el acceso al comercio electrónico.
3.2 OBJETIVOS ESPECÍFICOS
● Realizar el levantamiento de requerimientos y documentación de los mismos que permita plantear la mejor solución al problema propuesto. ● Diseñar un prototipo del sistema de pago de fácil utilización y amigable a
los usuarios finales que llame la atención por su simplicidad y funcionalidad debido a la importancia que le dan los usuarios a estas características. ● Construir un prototipo de sistema de pagos electrónicos online mediante el
uso de un monedero digital precargado que satisfaga los requerimientos establecidos durante la etapa de análisis del proyecto.
● Implementar técnicas criptográficas para la creación de un canal de comunicación que cumpla con los estándares de seguridad, con el fin de evitar fraudes, pérdida de información, y acceso no autorizado a los datos privados de los usuarios.
8
4. ALCANCES Y LIMITACIONES
Para lograr cumplir con los objetivos del proyecto se debió establecer los alcances y las limitaciones del mismo de tal forma que se encontraran claros los requerimientos que serían cubiertos en el producto final. A continuación se detallan dichos alcances y limitaciones.
4.1 ALCANCES
El prototipo satisface las siguientes características:
Un portal web en el cual pueden registrarse los clientes compradores, tiendas online y puntos de recarga para poder tener acceso a sus cuentas en el sistema.
Al portal web podrán acceder los clientes compradores y tiendas online para gestionar sus cuentas (modificar datos personales y de la empresa, crear y modificar contraseña transaccional, modificar contraseña de acceso, y cancelar cuenta) y gestionar sus monederos (crear monederos, consultar detalle, modificar estado, y ver histórico de movimientos).
El portal web también debe permitir el acceso a los puntos de recarga para realizar recargas, listar las recargas que han realizado, y descargar sus facturas de pago.
Para los administradores se debe ofrecer desde el portal web la opción de atender las peticiones de activación de cuenta los clientes.
Se ofrece un servicio SOAP con dos operaciones para el pago de las compras, el cual debe ser ejecutado por las tiendas aliadas. La primera operación es la validación de datos del pago y generación de token para pago, y la segunda es la ejecución del pago en sí.
Se desarrolla y entrega a las tiendas online aliadas un cliente para que sea integrado a su aplicativo web. Este cliente permite el consumo de los servicios del sistema para validación de datos de compra y realización final de la compra.
9
Se crea un proceso batch que realizará el cargue de una tabla con los pagos a realizar por los puntos de recarga aliados hacia la cuenta del sistema monedero relacionado a las recargas que ha realizado durante el mes.
Se simula el comercio electrónico desde el cual se consume el servicio de pagos mediante el uso del monedero digital para la compra de los productos ofrecidos por el comercio. Para la comunicación entre el sitio web del comercio electrónico y el servicio del sistema de pagos se garantiza la integridad, confidencialidad y no repudio de los datos transmitidos entre las partes mediante el uso de criptografía asimétrica.
Se simula un portal bancario para el procesamiento del archivo de pagos para los traspasos desde la cuenta del sistema monedero hacia las cuentas de las tiendas online beneficiarias de los pagos de compras mediante el uso de un monedero digital.
Los siguientes puntos no son cubiertos por el proyecto:
Establecimiento de alianzas reales con tiendas online para ofrecer en su página web el servicio de pagos mediante el uso de un monedero digital. Transferencias de valor de pagos realizados por clientes compradores
desde sistema monedero hacia cuentas de tiendas online no son realizadas en línea.
Creación de cuenta bancaria real para el sistema monedero.
Validación real de datos ingresados por los clientes empresas (tiendas online y puntos de recarga) al momento de su registro antes de aprobación de activación de cuenta por parte del sistema o del administrador.
Validación real de datos de cuentas de otros bancos diferentes al propietario del portal bancario simulado para aprobación y ejecución de traspasos.
10 monedero digital. Por tal motivo y por el hecho de que el presente es un proyecto netamente académico, no se establecieron alianzas reales con tiendas online ni establecimientos públicos, en vez de esto, se simuló un comercio que pueda hacer uso del servicio. beneficiarias (cuentas de las tiendas asociadas), las cuales representan el desembolso de los pagos realizados a las tiendas como resultado de los pagos que han realizado los clientes compradores mediante el sistema monedero.
Dadas las consideraciones anteriores se determinó que no es posible bajo estas circunstancias una implementación en un contexto real del sistema propuesto, por tal motivo se diseñó y desarrolló un prototipo del sistema monedero como principal objetivo del presente trabajo.
Adicionalmente, se limitan las siguientes características:
El comercio simulado corresponde a una tienda, a la cual se agregaron productos, inventario y formas de pago, necesarios para la ejecución de las pruebas. El correcto funcionamiento de los flujos dentro de la tienda es responsabilidad del aplicativo de la tienda, mas no del aplicativo del prototipo.
11
La seguridad implementada en el prototipo concierne únicamente al funcionamiento del aplicativo web y al consumo del servicio web desarrollado. En ningún momento se implementó seguridad a nivel de infraestructura, como por ejemplo, en los servidores donde se despliega el aplicativo para la realización de pruebas.
Para la realización de un pago online se asegura la comunicación entre el sistema monedero y el servidor donde se aloja el aplicativo de la tienda online, mas no se garantiza la seguridad de la comunicación entre los navegadores de los clientes compradores y el servidor de la tienda online, ya que dicha responsabilidad pertenece a la seguridad aplicada por el comercio.
El simulador de portal bancario solamente permite el ingreso a los clientes registrados en su base de datos, no tiene módulo de registro. De igual forma, en el procesamiento del archivo de pagos, se valida la existencia y saldos de las cuentas pertenecientes a su propio banco, las de otros bancos no son validadas y se asume que la información es correcta.
12
5. ESTADO DEL ARTE
En Colombia actualmente existen diferentes sistemas de pago electrónico, dirigidos a sectores de la población en específico. Soluciones de gran importancia y reconocimiento como PSE, Interpagos, pagosonline, entre otros, ofrecen como posibilidad de medio de pago el uso de productos bancarios o un servicio pospago en efectivo en algunos de los casos.
Como referencia para el desarrollo del sistema monedero objeto del presente trabajo se tomaron los siguientes sistemas de pago que se acercan más a lo que se desea del proyecto en cuestión:
5.1 PAYU LATAM
Permite a los comerciantes latinoamericanos a vender sus productos desde sus páginas web recibiendo pagos con tarjeta de crédito, manejo de cuentas bancarias (ahorro o corriente) y con depósitos de dinero.
El modelo que maneja PayU Latam (http://www.payulatam.com, sección Así funciona) es el siguiente:
i. Desde la página de venta de productos en línea, el cliente selecciona los productos a comprar.
ii. Posteriormente el cliente realiza su pago a través de la pasarela de pagos de PayU Latam.
iii. PayU Latam hace las validaciones respectivas mediante el uso de un sistema antifraude.
iv. PayU Latam envía un mensaje confirmando la transacción, tanto al comprador como al cliente del sistema, donde se realizó la compra.
v. El dinero correspondiente a la compra se abona en una cuenta virtual, de donde se puede transferir a la cuenta bancaria del cliente del sistema.
13 5.2 WEBMONEY TRANSFER
Web Money Transfer (http://www.webmoney.com.mx, sección Acerca de WebMoney) es una solución de cobros y pagos por internet, la cual brinda un alto nivel de seguridad para operaciones en la red, contando con gran variedad de servicios. Para poder utilizar dichos servicios se hace necesario el registro por parte del usuario, obteniendo un WMID, el número identificador único que corresponde al número de cuenta y al identificador dentro del sistema WebMoney Transfer.
WebMoney transfer dispone de diferentes tipos de moneda electrónica o divisas, las cuales son manejadas desde un monedero electrónico para cada una, con el fin de transferir fondos entre monederos a través del servicio de cambio Exchanger, siguiendo las normas y leyes locales dictadas para cada divisa. El usuario de Web Money transfer puede disponer de los diferentes monederos electrónicos que requiera para la realización de sus transacciones dependiendo de la divisa con la que se tenga que realizar el pago o cobro deseado.
5.2.1 Seguridad y Confidencialidad
WebMoney transfer toma las precauciones necesarias
(http://www.webmoney.com.mx, sección Seguridad) para la ejecución de transacciones por internet, donde la verificación de la información que circula dentro del sistema es un concepto clave para asegurarse que los datos sean auténticos, sugiriendo tres tipos de autenticación:
Usando certificados digitales personales.
Usando archivos secretos especiales. Para iniciar el trabajo con WebMoney Keeper Classic se debe tener: un Identificador único WM (WMID) que consiste de 12 dígitos, una clave y los archivos especiales - dicho archivo secreto y otro archivo de monederos almacenados en la memoria de su computadora.
14
5.3 VALOR DIFERENCIAL MONEDERO DIGITAL
El prototipo de sistema de pagos mediante el uso de un monedero digital precargado pretende dar valor agregado tanto en la facilidad de acceso a los clientes interesados en comprar en línea, como en la confiabilidad que le genera el sistema, así como en lo práctico del modelo de pagos.
5.3.1 Forma de pago
Específicamente el aporte que ofrece el prototipo monedero al sistema de pagos ya existente en internet es el de permitir que un cliente que no cuenta con ningún producto bancario tenga la misma posibilidad de realizar compras en línea que la que tiene un cliente con dichos productos.
Lo que diferencia el uso de un monedero digital como forma de pago respecto a un depósito vía baloto radica en que el cliente tiene la posibilidad de abonar una cantidad monetaria (la que desee) a su monedero personal, sin importar, si este valor cubre o no cubre el valor de una o varias compras. Lo anterior facilita que el cliente pueda acumular el valor de las recargas no usadas o pueda conservar en su monedero el valor restante del saldo del mismo tras la realización de un pago para su uso en posteriores compras. De esta forma, a diferencia de estos tipos de depósito, no se requiere una recarga por cada orden de compra.
Adicionalmente, el pago con un monedero digital es una operación en línea para el cliente comprador, la cual no requiere la confirmación de la transacción mediante el adjunto de un comprobante de pago ni requiere tiempo extra de espera de respuesta del sistema, como sí suele suceder con los depósitos de dinero.
5.3.2 Forma de recarga
15
Para realizar una recarga, los únicos datos que debe entregar el cliente al punto de recarga es el código de su monedero y el valor a recargar. Inmediatamente, el punto obtendrá de forma automática, como respuesta del sistema, el nick del cliente para confirmar con él, dicha transacción.
5.3.3 Modelo de pago
Para los clientes de las tiendas en línea, se ofrece el valor agregado de la sencillez en el flujo de pago de sus compras. Siendo el común de los sistemas y pasarelas de pago, el tener que abandonar por un momento la página web de la tienda online para ingresar varios datos delicados con el fin de poder realizar el pago de su compra, se pretendió agilizar esta tarea y permitir que la totalidad del proceso de pago de realice desde la página web de la tienda.
El modelo de pago del sistema monedero es el siguiente:
Desde la tienda online se agregan los productos a comprar al carrito.
Una vez se encuentren todos los productos a comprar en el carrito se procede a realizar el pago.
Se le ofrece al cliente como forma de pago en la tienda, el pago con monedero digital.
Desde la misma página de la tienda se pide ingresar el nickname del cliente y el código del monedero ya existente y cargado.
La tienda online realiza el consumo del webservice de validación de datos ofrecido por el sistema monedero, quien validará existencia de cliente, de monedero y disponibilidad de saldo. Finalmente, si todos los datos son correctos, el servicio generará una solicitud de pago y un token con tiempo de caducidad, el cual debe ser usado como confirmación del pago y será enviado al correo electrónico del cliente.
El cliente valida su correo electrónico (el registrado al abrir su cuenta previamente en el sistema monedero), donde toma el token encriptado para la confirmación del pago y lo ingresa como confirmación en el siguiente paso en la página de la tienda si está de acuerdo con todos los datos del pago
16
6. MARCO TEÓRICO
Durante todo el ciclo de vida del proyecto se tuvieron en cuenta varios conceptos, así como herramientas y tecnologías que aportaron en la definición y desarrollo de la solución final, los cuales se consideran necesarios definir a continuación para que el lector de este documento pueda comprender más fácilmente el proyecto en general y el producto resultante.
6.1 ECOMMERCE
El término comercio electrónico hace referencia a la comercialización de productos o servicios mediante el uso de la tecnología, por medios electrónicos y con el uso del internet. (GARCÍA LEÓN & VASQUEZ MEDINA, 2004)
Con las facilidades que existen hoy en día para todo tipo de personas el acceso a internet, el comercio electrónico toma un valor impresionante y es un gran negocio en el cual gran parte de empresas comercializadoras de productos se han atrevido a introducirse.
Este tipo de comercio ha cobrado fuerza debido a los beneficios que trae a la comunidad en general, tal como lo es el ahorro de tiempo, el evitar desplazarse hacia lugares lejanos, la alta disponibilidad para poder realizar las compras a cualquier hora del día y desde la comodidad de nuestros propios hogares, así como el evitar que hacer colas, llenar papeles y exponerse a los riesgos que estos puedan generar.
17 6.2 SISTEMAS DE PAGO ELECTRÓNICO
Siendo tantas y tan variadas las necesidades de los clientes y de cada tipo de negocio, se hace necesario satisfacer estas necesidades de diferentes formas, dependiendo de los productos o servicios a comercializar, por tal motivo, no existe un sistema de pago que cubra todas las necesidades existentes, lo cual se representa en la intermitencia de sus existencias o su disponibilidad permanente.
Un punto fundamental en el que debe prestar especial atención cualquier sistema de pagos electrónico es en la validación de la autenticidad del dinero y en que el viaje o el traslado del mismo de un lado a otro en la red sea confiable.
Los sistemas de pago electrónico son un elemento indispensable en el proceso de compras por internet, ya que por ser el ente intermediario, es el encargado de garantizar la integridad y seguridad de los datos que viajan por la red, validar usuarios, formas de pago y responder por el correcto manejo de estos datos y éxito en la transacción.
Los sistemas de pago electrónico deben cumplir con las siguientes características (GARCÍA LEÓN M. E., 2005, pág. 17):
● Universalidad: Los medios de pago soportados por el sistema deben procurar ser recibidos en cualquier sitio, rompiendo las barreras geográficas.
● Facilidad de uso: El sistema debe ser sencillo en su uso, en su apariencia y en su manipulación, con el fin de que llame la atención de cualquier usuario.
● Seguridad: Como en un sistema de pago electrónico se maneja el movimiento del dinero, es necesario garantizar la seguridad del mismo. Se deben manejar técnicas de criptografía o de seguridad en general para evitar cualquier tipo de fraude electrónico.
● Anonimato: Por muchos motivos, esta característica se vuelve indispensable en el comercio electrónico. El anonimato garantiza la protección de los datos privados del usuario mediante la realización de las transacciones sin necesidad de transportar los datos únicos de identificación de cada usuario. De esta manera se logra ganar mayor confianza por parte del usuario en el sistema y se logra también evitar un posible robo de estos datos.
18
● Garantía: Se debe garantizar a los usuarios del sistema tanto que los pagos serán realizados correctamente como que las compras serán efectuadas exitosamente. Esto implica que el pago llegue a quien debe llegar y la compra debe ser asignada al comprador correcto.
● Acreditación del pago: Con la acreditación de un pago se pretende respaldar los pagos y las compras realizadas mediante las notificaciones necesarias y la asignación de referencias correspondientes a cada una de las transacciones.
Debido a tantas características que deben procurar satisfacer los sistemas de pago electrónico, es que existen tantos sistemas diferentes con soporte de diferentes medios de pago.
6.3 DINERO ELECTRÓNICO
Tomando como base la tesis de (CUERVO, 2005, pág. 6) el término "dinero electrónico” fue introducido por David Chaum en 1988 al notar la notoria cantidad de desventajas que tenía la realización de pagos electrónicos con tarjetas de crédito o débito. Estas desventajas se inclinaban más que todo hacia la parte del anonimato y la seguridad de los datos de los compradores. Chaum identificó y resaltó la importancia de evitar lo más que se pudiera el manejo de los datos personales de los clientes por la red.
La propuesta de Chaum implicaba el manejo de “monedas electrónicas”, las cuales tenían un registro único, con el cual se identificaba si ya habían sido utilizadas para evitar la reutilización de las mismas. El problema con esta propuesta radicaba en que para poder validar las monedas, se necesitaba que el banco estuviera en línea en el momento de la compra.
19
En la parte de la seguridad, la anterior propuesta implementó el esquema de “corte y selección”, propuesto por Michael O. Rabin (1978), con el cual se pueden detectar los fraudes en las compras electrónicas y así mismo identificar fácilmente a la persona causante de este fraude.
Tiempo después, aparece una nueva mejora a la propuesta anterior, esta vez por parte de Okamoto y Otha (1991), quienes aportan como valor agregado la independencia, seguridad, privacidad, pago fuera de línea, transferibilidad y divisibilidad del dinero.
Posteriormente se presentaron otras mejoras y la creación de nuevos protocolos de seguridad anti-fraude, que serán presentadas en la teoría de seguridad. Es así como con el pasar del tiempo se han presentado diferentes modelos que buscan mejorar las características de un sistema de pago electrónico que implemente los pagos con dinero electrónico, en especial para las características de revocación del anonimato y la rastreabilidad del usuario en el tratamiento contra el fraude (lograr un equilibrio entre el anonimato y la rastreabilidad), así como el tema de la divisibilidad del dinero.
6.3.1 Características
Con el dinero electrónico se busca ofrecer las facilidades que brindan los medios de pago electrónicos así como las del dinero físico tradicional para conformar un sistema de pago más completo.
La modalidad de pago con dinero electrónico debe tener las siguientes propiedades (CUERVO, 2005, pág. 5):
● Independencia: Debido a que el dinero va a viajar por la red, se debe garantizar la seguridad del dinero independientemente de los problemas que pueda tener la red o los inconvenientes de comunicación.
● Seguridad: El dinero no puede ser copiado ni reutilizado, lo cual se logra mediante el uso de mecanismos que exijan la autenticidad del mismo.
20
● Divisibilidad: El dinero debe tener la posibilidad de dividirse para poder realizar diferentes compras en diferentes momentos sin perder el excedente.
6.4 SEGURIDAD INFORMÁTICA
Hoy en día, el gran auge que comprende la utilización de sistemas informáticos en las acciones cotidianas de las personas conlleva a la interconexión de estos sistemas, teniendo que enviar información a través de los diferentes medios de comunicación que tengan a su disposición, en los cuales pueden ocurrir diferentes tipos de ataques sobre dicha información con el fin de obtener algún provecho. Motivo por el cual los sistemas informáticos deben proporcionar seguridad sobre la información que envían o reciben, garantizando los siguientes servicios como su principal objetivo (GRANADOS PAREDES, 2006, pág. 3):
Confidencialidad: proteger la información para que solo pueda ser accedida por los usuarios con este derecho.
Integridad: garantizar que por ningún motivo la información sea alterada antes de llegar al receptor.
Autenticación (Control de acceso): proceso por el cual se corrobora si el usuario que intenta acceder al sistema es quien dice ser.
Autenticación (envío de datos): proceso por el cual se certifica que los datos enviados son del remitente verdadero y que los datos recibidos los recibió el destino verdadero.
No repudio: garantizar por parte del destino, que el mensaje enviado no se pueda negar por parte del remitente.
Teniendo en cuenta lo anterior, los sistemas de información deben ser capaces de evitar cualquier tipo de amenazas que quieran interrumpir dicho objetivo, implantando mecanismos que garanticen la seguridad de la información antes, durante y después de la realización de transacciones o envío de datos.
6.4.1 Canal de comunicación seguro
21
Cuando hablamos de un canal de comunicación seguro, nos referimos a un canal que no pueda ser accedido por intrusos o usuarios no permitidos, con el fin de proteger la información. Lo anterior se lleva a cabo gracias a un conjunto de mecanismos tanto físicos como lógicos, donde los mecanismos de seguridad físicos son los encargados de salvaguardar los equipos de cómputo (Hardware), mientras que los mecanismos lógicos hacen uso de técnicas de criptografía a nivel de software, brindando seguridad en las redes de datos. Estas técnicas criptográficas son necesarias cuando se quiera hablar de un canal de comunicación seguro.
Una representación del proceso de envío de datos a través de un canal de comunicación seguro o que no presenta ataques de ninguna índole, es cuando el emisor envía el mensaje por el canal y el receptor lo recibe sin ninguna alteración en la información.
Figura 2. Comunicación normal
Tomado de: (GRANADOS PAREDES, 2006, pág. 4)
El primer problema que puede existir en el canal de comunicación es la interrupción de mensaje, impidiendo que este llegue a su destino, causado por problemas en los sistemas de comunicación, ya sea por razones naturales o intencionales. Ver Figura 3.
Figura 3. Comunicación con interrupción 1
Tomado de: (GRANADOS PAREDES, 2006, pág. 4)
22
Figura 4. Comunicación con interrupción 2
Tomado de: (GRANADOS PAREDES, 2006, pág. 4)
El tercer problema que puede suceder es de la falsificación, cuando el intruso además de interceptar el mensaje, puede llegar a modificarlo generando uno nuevo y enviándolo al receptor, causando problemas tanto de integridad sobre el mensaje, como de confidencialidad y autenticidad ya que el intruso se hace pasar por el emisor del mismo.
Figura 5. Falsificación
Tomado de: (GRANADOS PAREDES, 2006, pág. 5)
El cuarto problema que puede suceder es de autenticación, ya que un intruso genera un mensaje y hace creer al receptor que él es un emisor confiable.
Figura 6. Generación
23
Para lograr un canal de comunicación seguro, se deben implementar mecanismos que garanticen la disponibilidad en la comunicación y eviten ataques de intrusos que quieran violar la integridad y confidencialidad sobre la información utilizando técnicas criptográficas.
6.4.2 Criptografía
“Arte de escribir con clave secreta o de un modo enigmático”1, siendo el proceso que se aplica a un mensaje para enmascarar una determinada información que sea de carácter confidencial, con el fin de que alguien que no tenga permisos para acceder a dicha información no pueda acceder a la misma, en términos más formales, la criptografía es la ciencia que se encarga de crear métodos que puedan transformar un mensaje legible a un mensaje cifrado el cual no se pueda leer, a menos que se realice el procedimiento inverso con el conocimiento de una o más llaves. En contraparte, el criptoanálisis es la ciencia que estudia los métodos de cifrado, para encontrar la forma de descifrar el mensaje sin la utilización de las llaves.
En la actualidad, existen dos maneras de aplicar la criptografía a un sistema de información:
6.4.2.1 Criptografía simétrica (Llave privada): es aquella que utiliza un sistema de cifrado o método matemático con el fin de cifrar o descifrar el mensaje haciendo uso de una sola llave privada, tanto en el origen como en el destino del mensaje.
Figura 7. Criptografía Simétrica
Tomado de: (GRANADOS PAREDES, 2006, pág. 10)
24
Se hace llamar simétrica ya que en ambos lados de la comunicación se utilizan las mismas herramientas para el cifrado o descifrado respectivamente, garantizando la confidencialidad del mensaje que solo podrá ser descifrado por las entidades que posean la llave privada.
Los principales problemas que se encuentran al manejar este tipo de criptografía se dan cuando se requiere compartir mensajes con n destinatarios, para ello se necesitarían n llaves privadas para cada uno, causando caos en la administración de dichas llaves privadas; además de buscar la manera íntegra y confidencial de la llave privada a los destinatarios (GRANADOS PAREDES, 2006, pág. 10).
6.4.2.2 Criptografía Asimétrica (Llave pública): a diferencia de la criptografía simétrica que utiliza una única llave privada para el cifrado de mensajes, en la criptografía asimétrica se hace uso de dos llaves, una llave privada y una llave pública, esta última es la que será distribuida hacia los diferentes destinatarios con los que se requiera entablar comunicación.
Figura 8. Criptografía Asimétrica
Tomado de: (GRANADOS PAREDES, 2006, pág. 12)
En el caso de la criptografía asimétrica, el número de llaves a manejar se reduce considerablemente, ya que si se requiere enviar un mensaje cifrado a n destinatarios, necesitaría saber n llaves públicas, pero si n personas requieren enviar mensajes a un solo destinatario, solo es necesario que las n personas conozcan su llave pública (GRANADOS PAREDES, 2006, pág. 10).
25 6.4.2.3 Documentos Digitales
Los documentos digitales son la integración de las dos formas de criptografía moderna existentes, es decir, la simétrica y la asimétrica, de tal forma que se compensen las problemáticas que acarrean y así mismo, se aprovechen mejor las características que cada una proporcionan (GRANADOS PAREDES, 2006, pág. 10).
Firma Digital: es un documento que garantiza la integridad y la autenticidad del mensaje enviado, teniendo como principal característica la aspiración de cumplir la analogía de una firma autógrafa o manual en una firma electrónica, cumpliendo así con las propiedades de autenticidad que posee un documento firmado de papel. Siendo así y como afirma María García en su tesis (GARCÍA LEÓN M. E., 2005, pág. 22), “una firma digital debe entenderse como un conjunto de datos que acompaña a un documento que será transmitido por medios electrónicos, acreditando quien es su autor y permitiendo que el receptor pueda comprobar la integridad de la información enviada y la veracidad de la fuente” (GARCÍA LEÓN M. E., 2005, pág. 22).
Para poder llevar a cabo el proceso de firma y envío de un documento, se deben poseer tanto la llave privada como la llave pública, siguiendo los siguientes pasos:
1. El firmante cifra el mensaje utilizando la llave privada (firma).
2. Enviar el mensaje cifrado junto al mensaje original, formando de esta forma el documento firmado.
3. El receptor separa la firma del documento.
4. Descifrar la firma utilizando la llave pública del firmante. 5. Comparar el mensaje original con la firma descifrada.
Una vez realizados los pasos descritos anteriormente, se tienen en cuenta los posibles casos:
1. En caso de que no pueda ser posible el descifrado de la firma, se concluye que el mensaje no es auténtico, y que pudo ser enviado por un intruso.
26 Figura 9. Firma de un documento
Tomado de: (GARCÍA LEÓN M. E., 2005, pág. 43)
Sobres Digitales: el sobre digital es un documento con el cual se puede garantizar la confidencialidad del mensaje, al igual que el anterior, el sobre digital utiliza criptografía simétrica y asimétrica. Los pasos para la generación de un sobre digital son los siguientes: (GRANADOS PAREDES, 2006, pág. 41)
1. Se cifra simétricamente un documento d utilizando la llave privada k generada aleatoriamente.
𝐶𝑘(𝑑)
2. Se cifra asimétricamente la llave privada k utilizando la llave pública k2.
𝐶𝑘2(𝑘)
3. Finalmente se concatenan 𝐶𝑘(𝑑) y 𝐶𝑘2(𝑘) formando el sobre digital.
El proceso de apertura del sobre digital es el siguiente:
4. Se descifra la llave privada k utilizando la llave privada k1 perteneciente a la persona destinataria del sobre digital, con lo cual se obtiene la llave privada k.
𝐷𝑘1(𝐶𝑘(𝑘))
5. Se descifra el documento utilizando la llave privada k, obteniendo el documento d.
𝐷𝑘(𝐶𝑘2(𝑑))
27 6.4.3 Certificados Digitales
En los sistemas criptográficos asimétricos es necesario dar a conocer adecuadamente la llave pública a los entes interesados en entablar una comunicación, con lo cual se hace necesario asegurar que dicha llave pública pertenezca a la persona que la brinda y no a un suplantador. El problema de autenticación de la llave pública se soluciona con la intervención de un tercero que certifique o de testimonio de pertenencia de la llave pública a un usuario o ente.
Como lo define María García en su tesis de maestría (GARCÍA LEÓN M. E., 2005, pág. 34), “un certificado digital es un documento digital infalsificable emitido por una autoridad de certificación u organismo confiable, que garantiza la identidad de una de las partes que interviene en una comunicación o transacción, proporcionando así un procedimiento para que los receptores puedan autenticar a la entidad con que se comunican”.
6.4.4 Protocolos de Seguridad
Los principales protocolos de seguridad a tener en cuenta para el correcto desarrollo del proyecto son los siguientes:
6.4.4.1 SHTTP (Secure HyperText Transfer Protocol)
SHTTP es un protocolo para intercambiar información de forma segura entre el cliente y el servidor a través de internet a nivel de aplicación, proporcionando los servicios de autenticidad, integridad y confidencialidad entre las partes (GARCÍA LEÓN M. E., 2005).
28 6.4.4.2 SSL (Secure Sockets Layer)
SSL es un conjunto de protocolos de comunicación seguro, considerado el más conocido y utilizado, el cual brinda seguridad a las sesiones de navegación en internet, así como en transacciones en el comercio electrónico (GARCÍA LEÓN M. E., 2005, pág. 38).
El funcionamiento de SSL está dividido en dos fases, en la primera se realiza una negociación entre el cliente y servidor con el fin de acordar una llave privada válida únicamente para la sesión; y en la segunda fase se prosigue al cifrado y envío del correspondiente mensaje utilizando la llave privada (MARTINEZ Luis, 2009, pág. 70). Para el cumplimiento de estas dos fases SSL se ubica en el medio de la capa de aplicación y de transporte del modelo TCP/IP, siendo su uso independiente de la aplicación y proporcionando los siguientes servicios:
Fragmentación del mensaje en bloques mayores de 2^14 octetos por parte del emisor, los cuales son re ensamblados de nuevo en el destino.
Los mensajes son comprimidos utilizando funciones hash.
Manejo de certificados digitales para el aseguramiento de la identidad por medio del resumen del mensaje (MAC), además, se asegura también la integridad y confidencialidad del mensaje.
6.5 LDAP (LIGHTWEIGHT DIRECTORY ACCESS PROTOCOL)
Como lo define Roberto Fuentes en su proyecto de grado, “es un protocolo a nivel de aplicación el cual permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red” (FUENTES Astorga, 2012, pág. 23).
29
6.6 SOA (SERVICE ORIENTED ARCHITECTURE)
La arquitectura orientada a servicios es una arquitectura de software que busca mostrar las funcionalidades de negocio como servicios garantizando una comunicación ágil entre distintas aplicaciones independientemente de su ubicación. La propuesta de esta arquitectura consiste en la reunión de bloques reutilizables, con bajo acoplamiento y alta interoperabilidad, donde cada uno de los bloques es un servicio.
Como dice el ingeniero Jorge Ramírez en su informe de Arquitectura Orientada a Servicios: “una Arquitectura Orientada a Servicios permite el diseño aplicaciones de software preparadas para cambiar, ágiles y adaptables, por su bajo acoplamiento, es decir, sin importar las tecnologías con que estas fueron creadas o la plataforma donde vayan a ejecutar” (RAMÌREZ J, 2009, or. 3).
6.6.1 Beneficios
Los principales beneficios que ofrece la implementación de una arquitectura orientada a servicios son:
Permite la reutilización de software, lo cual se ve reflejado en la reducción de costos y tiempo en el desarrollo de las aplicaciones.
Facilita el manejo de funcionalidades inmediatas así como de funcionalidades nuevas mediante una rápida respuesta al cambio de requerimientos.
Facilita la conexión entre las aplicaciones, obteniendo como resultado aplicaciones más productivas y flexibles.
Unifica las estrategias de negocio con las estrategias tecnológicas del producto.
6.7 JAVA SERVER FACES - JSF
30 6.7.1 Características
Las principales características que tiene JSF son las siguientes:
Maneja componentes de interfaz de usuario orientados a eventos, es decir, ejecuta tareas y responde dinámicamente dependiendo del evento activado por el cliente al realizar alguna acción como presionar un botón, modificar el valor de un campo o seleccionar una opción de un conjunto de opciones, entre otras.
Permite adaptar los componentes de tal forma que las páginas web tengan una visualización adecuada en cualquier tipo de dispositivo que esté utilizando el cliente.
Utiliza Java Beans para definir las funcionalidades y el comportamiento de los componentes de la interfaz gráfica de usuario.
Las clases de componentes de interfaz de usuario son extensibles, por lo cual cualquier desarrollo puede adaptar los componentes gráficos y personalizarlos de acuerdo a sus necesidades.
6.8 PRIMEFACES
Es una librería para manejo de interfaces de usuario, implementación de jsf para el manejo de aplicaciones web ampliamente utilizado por su sencillez, documentación y amigables resultados finales ante el usuario, no sólo a nivel web sino también web móvil.
6.8.1 Ventajas
Las principales ventajas que tiene primefaces son las siguientes:
Simplicidad ya que el framework se caracteriza por ser lo más ligero posible, en cuanto a componentes (contenidos en un sólo jar) e implementación en general del mismo dentro de cualquier aplicación web por el hecho de no necesitar configuraciones ni dependencias externas para funcionar de forma correcta.
Facilita la detección de errores, así como su fácil corrección y pruebas del mismo.
31
Es totalmente gratuito y la documentación es bastante amplia y de fácil acceso y entendimiento.
6.9 JAVA PERSISTENCE API - JPA
API de persistencia de Java que permite el mapeo objeto/relacional en aplicaciones java para facilitar las tareas que impliquen consultas o escritura sobre bases de datos relacionales mediante el uso de anotaciones en las mismas clases (POJO) que representan entidades o mediante definiciones en archivos xml.
JPA es de por sí una especificación, no un producto, es decir, no hace persistencia por sí mismo, sino que necesita de una implementación que utilice todas sus características.
6.9.1 Características
Las principales características de JPA son las siguientes:
JPA establece una interface común (EntityManager) que puede ser utilizada por cualquiera de las implementaciones que pueda elegir el usuario de acuerdo a sus necesidades o preferencias.
Más allá de permitir almacenar entidades en una base de datos, JPA permite manejar las operaciones CRUD (Crear, leer, actualizar y borrar) mediante el uso de la interface EntityManager.
Permite formas de inicialización de entidades de forma inmediata y forma perezosa (EAGER y LAZY respectivamente), donde las propiedades de una entidad son leídas una vez la entidad es creada (para el caso inmediato) o las propiedades son leídas solamente cuando el cliente intenta leer su valor (para el caso perezoso). La inicialización perezosa debe ser usada en casos especiales, como que el objeto a inicializar sea de gran tamaño, ya que si es usada en casos inadecuados se provoca que se efectúen múltiples consultas a la base de datos habiendo sido más práctico cargar todos los datos desde el momento de la creación de la entidad.
32 6.10 HIBERNATE
Es un marco de trabajo implementación de JPA para el manejo de la persistencia de datos en java mediante la abstracción de la base de datos garantizando un correcto mapeo de datos para consultar y actualizar la base de datos mediante el uso de objetos configurados especialmente para ser el equivalente a un registro de una tabla del modelo relacional. Este framework se usa especialmente en proyectos Java EE.
6.10.1 Características
Las principales características de hibernate son las siguientes:
Persistencia idiomática: Al manejarse desarrollo de clases resultado del mapeo objeto/relacional, se puede hacer uso de sus propiedades más importantes tales como la herencia, el polimorfismo, la asociación y la composición. Estas características, entre muchas otras facilitan la tarea del mapeo ya que permiten que cualquier clase java pueda ser persistente.
Alto desempeño: Hibernate ofrece un alto desempeño a las aplicaciones que hacen uso de este mediante diferentes técnicas y/o estrategias como lo son: la inicialización lenta (Lazy Initialization) para evitar la carga enlazada de entidades en memoria que puedan causar carga excesiva e innecesaria de datos en memoria; alto desempeño sobre el código SQL ya que es generado automáticamente por Hibernate, lo cual se ve reflejado en productividad para el desarrollador y en rendimiento en tiempo de ejecución ya que genera la mayoría del SQL en la inicialización del sistema en vez de hacerlo en tiempo de ejecución.
Escalabilidad: Hibernate está adecuado para trabajar adecuadamente sobre aplicaciones en clúster, y en aplicaciones tanto de unos pocos como muchos usuarios. Así mismo, Hibernate puede ser utilizado tanto en aplicaciones StandAlone como Java EE.
33 6.10.2 Lenguaje HQL
Es el lenguaje utilizado por hibernate similar a SQL para poder realizar las peticiones a la base de datos manejando características como herencia y polimorfismo. HQL es totalmente orientado a objetos, usa nombres de clases en vez de nombres de tablas, así como nombres de propiedades en vez de nombres de columnas. A pesar de que Hibernate también se puede manejar con SQL características que permiten el intercambio de datos entre un par de aplicaciones donde la aplicación cliente consume un servicio que es prestado por la aplicación proveedora. Estos servicios se componen de métodos que realizan tareas específicas y especializadas.
6.11.1 Características
Las principales características de los servicios SOAP son las siguientes:
Puede utilizar HTTP y SMTP como protocolos de comunicación a nivel aplicativo.
Permite la invocación de sus servicios desde aplicaciones desarrolladas en lenguaje de alto nivel.
Maneja una única dirección para acceder para todas las operaciones publicadas en un servicio, por lo cual ofrece la posibilidad de manejar muchas operatorias con pocos recursos.
A nivel de seguridad, los servicios SOAP soportan WS-Security.
34
Los mensajes SOAP se componen de una cabecera y un cuerpo. En el cuerpo se realiza la carga de carga de datos del mensaje y en la cabecera se encuentran datos adicionales.
Los servicios SOAP trabajan con archivos wsdl, los cuales contienen la descripción de los servicios y permite que tanto el servicio como el cliente sepan cómo enviar y recibir los mensajes y qué contenido deben tener los mismos, detallando la sintaxis y los mecanismos de intercambio de mensajes. (http://www.w3c.es/Divulgacion/GuiasBreves/ServiciosWeb, Guía Breve de Servicios Web)
6.11.2 Ventajas (GONZALEZ, 2004)
Las principales ventajas de los servicios SOAP respecto a los otros tipos de servicios son:
No está atado a un lenguaje en particular, por lo que la implementación de la API se deja a elección del desarrollador con base en el lenguaje utilizado en la aplicación.
No limita al uso de un sólo protocolo de transporte, ya que al estar definido bajo un archivo xml, puede ser transportado mediante cualquier protocolo capaz de transmitir texto.
Permite la comunicación entre diferentes entornos, de tal forma que sin importar la plataforma utilizada, desde que se cumpla con los estándares necesarios, se permitirá la comunicación mediante mensajes SOAP.
6.12 APACHE CXF
35 6.12.1 Características
Las principales características de Apache CXF son las siguientes:
Soporta variedad de estándares de servicios como SOAP, WSDL, WS-Security, WS-Addressing, entre otros.
Implementa el API JAX-WS, el cual se caracteriza por su facilidad de uso ya que permite la generación automática de las clases para llamado y recepción de respuesta del servicio, haciendo la tarea de generación del cliente algo muy sencillo. JAX-WS es un API pensado para facilitar las tareas de generación de servicios web. La forma en la cual funciona es generando archivos wsdl desde clases java o viceversa, clases java desde archivos wsdl.
También puede ser usado con JAX-RS, el cual se especializa en servicios de tipo RESTful.
Presenta alta integración con Maven, al igual que es ampliamente utilizado en conjunto por las facilidades que ofrecen para las diferentes fases del proyecto. CXF modela las operaciones del servicio como llamadas a métodos y los tipos
de puerto de servicio como interfaces.
CXF requiere que el wsdl del servicio esté disponible para el cliente en tiempo de ejecución para poder realizar el llamado del mismo.
Puede ser utilizado junto al framework de desarrollo Spring, el cual utiliza diferentes librerías para ensamblar la aplicación. Aquí se facilitan las configuraciones necesarias para poder integrar CXF.
Soporta protocolos binarios2 y legacy 3, ya que fue diseñado para proveer una arquitectura extensible que además de xml soporte otros binding4 como JSON
y CORBA junto con cualquier tipo de transporte.
(http://www.dosideas.com/noticias/java/396-servicios-web-con-apache-cxf.html, Servicios web con Apache CXF)
2 Son los protocolos que se pretende sean entendidos por una máquina más no por un ser humano.
3 Hace referencia a lenguajes de red diferentes a IP(TCP/IP).
36 6.13 MAVEN
Es una herramienta de código abierto para la gestión del ciclo de vida de proyectos de software. Esto es, desde la creación del proyecto en un IDE de desarrollo hasta la generación del binario resultado final del software. Maven permite la gestión avanzada de dependencias, compilación de la aplicación, ejecución de pruebas sobre clases de testeo generadas previamente, así como la generación de informes con los resultados de las pruebas, entre otras.
6.13.1 Características
Las principales características de Maven son las siguientes:
Maven establece una estructura determinada para los proyectos mediante el manejo de módulos en una estructura jerárquica, donde se encuentra un proyecto padre (POM)5 y varios proyectos hijos, cada uno de los cuales se especializa en una parte como en el modelo (jar) o en la parte web (war) por ejemplo.
El proyecto hijo tipo war (llamado así por generar como resultado un binario de tipo war) tiene como dependencia en primera instancia al jar, el cual utiliza como modelo en sus clases de control de la parte gráfica.
Mediante el proyecto padre pom se garantiza la organización del proyecto en general, estableciendo las relaciones entre el mismo y sus proyectos hijos, los cuales heredan de él. En el pom padre se centralizan las variables, dependencias y repositorios que pueden ser utilizados por sus hijos con el fin de evitar la duplicidad de código.
La creación de un proyecto maven se puede realizar tanto de forma manual como de forma o de manera automática mediante el uso de arquetipos. Los arquetipos son artefactos de Maven tipo plantillas que permiten la fácil creación de los proyectos, dichos arquetipos ya se encuentran predefinidos y cada vez han sido creados más especializados para adecuarse a las necesidades de los desarrollos. Estos arquetipos se utilizan desde línea de comandos para la definición de los proyectos.