prototipo de cifrado hÍbrido combinando los mÉtodos de...
TRANSCRIPT
1
PROTOTIPO DE CIFRADO HÍBRIDO COMBINANDO LOS MÉTODOS DE
ENCRIPTACIÓN AES Y RSA, IMPLEMENTADO SOBRE UNA RED GRID.
ANDRES MAURICIO CLAVIJO MEJÍA.
JHON ALEXANDER CHACÓN TORRES.
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD TECNOLÓGICA INGENIERÍA TELEMÁTICA
BOGOTÁ D.C
2019
2
PROTOTIPO DE CIFRADO HÍBRIDO COMBINANDO LOS MÉTODOS DE
ENCRIPTACIÓN AES Y RSA, IMPLEMENTADO SOBRE UNA RED GRID.
ANDRES MAURICIO CLAVIJO MEJÍA.
JHON ALEXANDER CHACÓN TORRES.
PROYECTO DE GRADO
TUTOR(A)
ING. GERARDO CASTANG MONTIEL
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD TECNOLÓGICA INGENIERÍA TELEMÁTICA
BOGOTA D.C
2019
3
Nota de Aceptación ______________________________ ______________________________ ______________________________ ______________________________ ______________________________ ______________________________ ______________________________ ______________________________ _______________________ Firma del Tutor _______________________ Firma del Jurado
Bogotá D.C 07 de mayo de 2019
4
Tabla de contenido INTRODUCCIÓN. .......................................................................................................................... 12
RESUMEN. ................................................................................................................................... 13
ABSTRACT. ................................................................................................................................... 14
1. PLANEACIÓN. ....................................................................................................................... 15
1.1. Título. ........................................................................................................................... 15
1.2. Planteamiento del problema. ....................................................................................... 15
1.2.1. Descripción. .......................................................................................................... 15
1.2.2. Formulación del problema. ................................................................................... 17
1.3. Alcances y Delimitaciones. ............................................................................................ 18
1.3.1. Alcances. ............................................................................................................... 18
1.3.2. Delimitaciones. ..................................................................................................... 18
1.3.2.1. Temáticas. ..................................................................................................... 18
1.3.2.2. Técnicas. ....................................................................................................... 18
1.3.2.3. Geográficas. .................................................................................................. 19
1.3.2.4. Temporales. .................................................................................................. 19
1.4. Objetivos. ..................................................................................................................... 20
1.4.1. Objetivo general. .................................................................................................. 20
1.4.2. Objetivos específicos. ............................................................................................ 20
1.5. Justificación. ................................................................................................................. 21
1.6. Marco de referencia. .................................................................................................... 22
1.6.1. Estado del arte ...................................................................................................... 22
1.6.2. Marco histórico ..................................................................................................... 26
1.6.3. Marco teórico ....................................................................................................... 30
1.6.3.1. Criptografía ................................................................................................... 30
1.6.3.2. Cifrado simétrico ........................................................................................... 30
1.6.3.3. Cifrado asimétrico ......................................................................................... 31
1.6.3.4. Hibridación de sistemas de cifrado ................................................................ 32
1.6.3.5. Algoritmo AES ............................................................................................... 33
1.6.3.6. Algoritmo RSA ............................................................................................... 33
1.6.3.7. Tipos de ataques informáticos conocidos ...................................................... 34
1.6.3.8. Computación en grid ..................................................................................... 34
1.6.3.9. Seguridad de la información .......................................................................... 35
5
1.6.3.10. Metodología para el desarrollo de software .................................................. 36
1.6.3.10.1. Waterfall Process ..................................................................................... 36
1.6.3.10.2. Rational Unified Process ........................................................................... 36
1.6.3.10.3. Essential Unified process .......................................................................... 37
1.6.3.10.4. Team Software Process ............................................................................ 37
1.6.3.10.5. Microsoft Solution Framework ................................................................. 37
1.6.3.10.6. Scrum Framework .................................................................................... 37
1.6.3.11. Planificación de proyectos de software.......................................................... 39
1.6.3.12. Planificación de proyectos ............................................................................. 40
1.6.3.13. Proyectos de software ................................................................................... 40
1.6.3.13.1. Elementos de un proyecto de software .................................................... 40
1.6.3.14. Desarrollo en JPA .......................................................................................... 41
1.6.3.15. Desarrollo en ReactJs .................................................................................... 41
1.6.3.16. Desarrollo en NodeJs ..................................................................................... 42
1.6.3.17. Desarrollo en C#, .Net Core ........................................................................... 42
1.6.3.18. Servicios Rest ................................................................................................ 43
1.6.3.19. Desarrollo MySql ........................................................................................... 44
1.6.3.20. WebSockets .................................................................................................. 45
1.6.3.21. Modelo vista controlador .............................................................................. 45
1.6.4. Marco conceptual ................................................................................................. 46
1.7. Metodología de desarrollo. ........................................................................................... 50
1.7.1. Inicio del ciclo. ...................................................................................................... 50
1.7.2. Sprint .................................................................................................................... 51
1.7.3. Entregables ........................................................................................................... 51
1.8. Factibilidad. .................................................................................................................. 52
1.8.1. Técnica. ................................................................................................................ 52
1.8.2. Operativa. ............................................................................................................. 52
1.8.3. Legal. .................................................................................................................... 53
1.8.4. Económica. ........................................................................................................... 53
1.8.4.1. Recurso humano. .......................................................................................... 53
1.8.4.2. Recursos tecnológicos. .................................................................................. 54
1.8.4.3. Recurso transporte. ....................................................................................... 56
1.8.4.4. Otros gastos .................................................................................................. 56
6
1.8.4.5. Costo total..................................................................................................... 56
1.9. Resultados esperados ................................................................................................... 57
1.10. Impactos ................................................................................................................... 58
1.11. Cronograma de actividades ....................................................................................... 59
2. Fase de inicio........................................................................................................................ 61
2.1. Incertidumbre............................................................................................................... 61
2.1.1. Requerimientos informales. .................................................................................. 61
2.2. Descripción de las funcionalidades................................................................................ 61
3. Historias de usuario. ............................................................................................................. 61
4. Definición y priorización de Product Backlog. ....................................................................... 64
4.1. Creación del product backlog. ....................................................................................... 64
4.2. Priorización del product backlog. .................................................................................. 64
4.3. Pila del producto. ......................................................................................................... 64
5. Sprint planning. .................................................................................................................... 65
5.1. Sprint 0. ........................................................................................................................ 66
5.2. Sprint 1. ........................................................................................................................ 66
5.3. Sprint 2. ........................................................................................................................ 66
5.4. Sprint 3. ........................................................................................................................ 66
6. Sprint 0. ............................................................................................................................... 66
6.1. Objetivos. ..................................................................................................................... 67
6.1.1. Diseñar el algoritmo de cifrado hibrido. ................................................................ 67
6.1.2. Definir tamaño de llaves para AES y RSA. .............................................................. 69
6.1.3. Estudiar librería AES a usar en el cifrado hibrido.................................................... 71
6.1.4. Estudiar librería RSA a usar en el cifrado hibrido. .................................................. 72
6.2. Reunión revisión del sprint. .......................................................................................... 72
6.3. Scrum taskboard. .......................................................................................................... 72
6.4. Cierre y entrega. ........................................................................................................... 73
7. Sprint 1. ............................................................................................................................... 73
7.1. Objetivos. ..................................................................................................................... 74
7.1.1. Método generación de llaves. ............................................................................... 74
7.1.2. Desarrollo del algoritmo de cifrado. ...................................................................... 75
7.1.3. Desarrollo del algoritmo de descifrado. ................................................................. 77
7.1.4. Estudiar el concepto de aplicaciones de escritorio con React y Electrón. ............... 78
7
7.1.5. Servicio Rest de registro de usuarios. .................................................................... 78
7.1.6. Socket de comunicación de usuarios activos. ........................................................ 79
7.1.7. Integración de los servicios de información de usuario y cifrado. .......................... 80
7.1.8. Integración de la aplicación con los servicios desarrollados. .................................. 81
7.2. Reunión revisión del sprint. .......................................................................................... 86
7.3. Scrum taskboard. .......................................................................................................... 86
7.4. Cierre y entrega. ........................................................................................................... 87
8. Sprint 2. ............................................................................................................................... 88
8.1. Objetivos. ..................................................................................................................... 88
8.1.1. Montar ambiente de virtualización. ...................................................................... 88
8.1.2. Crear servidores virtuales. ..................................................................................... 89
8.1.3. Configurar ambiente en grid. ................................................................................ 90
8.1.4. Implementar servicios de mensajería, usuario y comunicación sobre la grid. ......... 93
8.1.5. Pruebas integrales. ............................................................................................... 96
8.2. Reunión revisión del sprint. .......................................................................................... 97
8.3. Scrum taskboard. .......................................................................................................... 97
8.4. Cierre y entrega. ........................................................................................................... 98
9. Sprint 3. ............................................................................................................................... 99
9.1. Objetivos. ..................................................................................................................... 99
9.1.1. Criptoanálisis del algoritmo hibrido implementado. ............................................ 100
9.1.2. Interceptar comunicación de usuarios para intentar descifrar mensajes.............. 104
9.1.3. Identificar niveles de seguridad del algoritmo, eficiencia y confidencialidad. ....... 109
9.2. Reunión revisión del sprint. ........................................................................................ 110
9.3. Scrum taskboard. ........................................................................................................ 110
9.4. Cierre y entrega. ......................................................................................................... 112
10. Cierre del proyecto. ........................................................................................................ 112
11. Conclusiones. ................................................................................................................. 113
12. Recomendaciones. ......................................................................................................... 115
Referencias ................................................................................................................................ 116
8
LISTA DE ANEXOS.
ANEXO 1: PASO A PASO DE CONFIGURACIÓN Y CREACIÓN DE
PROYECTO.
9
LISTA DE ILUSTRACIONES.
Ilustración 1. Diagrama de bloques del sistema propuesto................................................... 23
Ilustración 2. Criptosistema PSoC RSA-AES. ........................................................................ 24
Ilustración 3. Proceso de cifrado del método propuesto. ...................................................... 25
Ilustración 4. Proceso de descifrado del método propuesto. ................................................ 25
Ilustración 5. Esquema de las 5 fases de desarrollo Scrum. ................................................ 39
Ilustración 6. Premisa Rest sin estado. ................................................................................... 43
Ilustración 7. Arquitectura en capas. ....................................................................................... 44
Ilustración 8. Funcionamiento WebSocket.............................................................................. 45
Ilustración 9. Arquitectura MVC. .............................................................................................. 46
Ilustración 10. Historias de Usuario. ........................................................................................ 62
Ilustración 11. Historias de Usuario ......................................................................................... 63
Ilustración 12. Formato Product BackLog. .............................................................................. 64
Ilustración 13. Scrum Taskboard del Proyecto. ...................................................................... 65
Ilustración 14. Modelo de cifrado hibrido. ............................................................................... 67
Ilustración 15. Proceso de firmado digital. .............................................................................. 71
Ilustración 16. Scrum taskboard 1 sprint 0.............................................................................. 72
Ilustración 17. Scrum taskboard 2 sprint 0.............................................................................. 72
Ilustración 18. Scrum taskboard 3 sprint 0.............................................................................. 73
Ilustración 19. Scrum taskboard 4 sprint 0.............................................................................. 73
Ilustración 20. Diagrama de secuencia del prototipo. ............................................................ 83
Ilustración 21. Diagrama de flujo del mensaje........................................................................ 84
Ilustración 22. Arquitectura del prototipo. ............................................................................... 85
Ilustración 23. Scrum taskboard 1 sprint 1.............................................................................. 86
Ilustración 24. Scrum taskboard 2 sprint 1.............................................................................. 87
Ilustración 25. Scrum taskboard 3 sprint 1.............................................................................. 87
Ilustración 26. Scrum taskboard 4 sprint 1.............................................................................. 87
Ilustración 27. VMs Creadas en host1 .................................................................................... 89
Ilustración 28. Configuración red virtual. ................................................................................. 89
Ilustración 29. Configuración tarjeta de red vm. ..................................................................... 90
Ilustración 30. Conectividad red contra BOINC. ..................................................................... 90
Ilustración 31. Proyecto Cifrado Híbrido en BOINC. .............................................................. 91
Ilustración 32. Creación usuario Cliente1. ........................................................................ 91
Ilustración 33. Estado conexión cliente y proyecto BOINC. .................................................. 92
Ilustración 34. Ejecución servidor Apache Tomcat. ............................................................... 93
Ilustración 35. Servicios desplegados. .................................................................................... 94
Ilustración 36. Ejecución de socket de comunicación. .......................................................... 94
Ilustración 37. Base de datos de aut_key_service. ................................................................ 95
Ilustración 38. Propiedades Servicio de Cifrado CHAT. ........................................................ 96
Ilustración 39. Instalación final de la aplicación de mensajería. ........................................... 96
Ilustración 40. Funcionamiento servicio de mensajería entre dos clientes. ......................... 97
Ilustración 41. Scrum taskboard 1 sprint 2.............................................................................. 97
10
Ilustración 42. Scrum taskboard 2 sprint 2.............................................................................. 98
Ilustración 43. Scrum taskboard 3 sprint 2.............................................................................. 98
Ilustración 44. Sprint 3 Backlog ............................................................................................... 99
Ilustración 45. Inicio de la aplicación de mensajería. ........................................................... 105
Ilustración 46. Distribución de llaves. .................................................................................... 105
Ilustración 47. Componente de mensajería. ......................................................................... 106
Ilustración 48. Uso de aplicación de mensajería con envió de mensajes sin cifrado. ...... 106
Ilustración 49. Captura de mensajes sin prototipo de cifrado. ............................................ 107
Ilustración 50. Comunicación de los usuarios mediante la aplicación de mensajería. ..... 108
Ilustración 51. Escaneo de paquetes por protocolo. ............................................................ 108
Ilustración 52. Captura de mensajes con implementación del prototipo de cifrado. ......... 109
Ilustración 53. Scrum taskboard 1 sprint 3............................................................................ 111
Ilustración 54. Scrum taskboard 2 sprint 3............................................................................ 111
Ilustración 55. Scrum taskboard 3 sprint 3............................................................................ 111
11
LISTA DE TABLAS.
Tabla 1. Recurso humano. ....................................................................................................... 54
Tabla 2. Recursos tecnológicos. .............................................................................................. 55
Tabla 3. Recurso transporte. .................................................................................................... 56
Tabla 4. Otros gastos. .............................................................................................................. 56
Tabla 5. Costo total ................................................................................................................... 56
Tabla 6. Priorización del Product Backlog. ............................................................................. 64
Tabla 7. Sprint 0 Backlog. ........................................................................................................ 67
Tabla 8. Niveles de Seguridad para cifrados en bloque comunes. ...................................... 70
Tabla 9. Niveles de Seguridad para cifrados en bloque comunes. ...................................... 70
Tabla 10. Niveles de Seguridad para funciones hash comunes. .......................................... 71
Tabla 11. Sprint 1 Backlog. ...................................................................................................... 74
Tabla 12. Sprint 2 Backlog. ...................................................................................................... 88
12
INTRODUCCIÓN.
Las técnicas que permiten la protección de la información en entornos de
comunicación no seguros como internet han ido evolucionando en sus niveles de
complejidad generando niveles de seguridad aceptables para la transferencia de
datos, sin embargo, del mismo modo se han encontrado falencias ya sea a nivel
criptográfico, de canal o en su implementación que han exigido el avance o
surgimiento de nuevos métodos de protección más seguros.
De este modo, el desarrollo del proyecto se fundamenta en dar respuesta a este
interrogante, ¿Es posible realizar un prototipo de cifrado que combine los métodos
de encriptación AES y RSA para proteger la comunicación entre usuarios sobre una
red en grid? Hemos planteado el uso del cifrado simétrico y asimétrico con el fin de
obtener las ventajas y eliminar las desventajas y/o vulnerabilidades de estos en una
misma solución, es probable que requiera más capacidad computacional o de
tiempo para llevar a cabo las tareas requeridas, aunque parezca que su
implementación tiende a ser más compleja el beneficio obtenido se verá reflejado
en su nivel de seguridad.
El desarrollo del proyecto se verá reflejado en la protección de información aplicado
en un sistema de mensajería que transmite información entre diferentes usuarios,
dando un método comunicación segura dado que no transmite información en claro
en ninguna de sus interacciones dado que desde el principio se establece una forma
de negociación por el intercambio de llaves que no implicarán vulnerabilidades para
el sistema en caso de ser interceptadas.
13
RESUMEN.
Este proyecto se desarrolla con la finalidad de presentar una prototipo de cifrado
híbrido implementado en una red en grid con el propósito de demostrar el nivel de
seguridad que es posible alcanzar con esta forma de cifrado por medio de una
aplicación de mensajería que será objeto de análisis con y sin la implementación de
los algoritmos desarrollados comparando los resultados obtenidos una vez se
encuentre en marcha, así mismo se realizará un proceso de criptoanálisis sobre el
prototipo planteado para verificar posibles puntos de falla y en qué tiempo serían
exitosos en caso de aplicarse.
Se desarrolló el prototipo basado en una arquitectura capaz de compartir recursos
y funcionalidades con el fin de proveer la capacidad de operar con cualquier sistema
que requiera el uso de ellos, por lo tanto, la aplicación de mensajería en si es solo
un objeto de prueba que brinda información de la capacidad del prototipo de cifrado
y pretende dar un nivel de confianza para su implementación en más sistemas de
comunicación.
Por otro lado, a nivel técnico, el uso del framework de .Net Core con el cual se
desarrollan los diferentes métodos del prototipo de cifrado permite hacer uso de las
ventajas del desarrollo con el lenguaje C# y su despliegue en múltiples plataformas,
permitiendo su implementación en cualquier entorno que se requiera sin estar atado
a las tecnologías de Microsoft. Además, se cuenta con la aplicabilidad de los
servicios que se pueden crear mediante la tecnología JPA que provee java con el
fin de realizar puntos de conexión entre la aplicación y el servicio que provee el
prototipo de cifrado el cual también puede ser desplegado en cualquier sistema
operativo, así mismo la utilización de todos estos servicios son llamados o
invocados por una interfaz de mensajería desarrollada mediante la librería de
ReactJs el cual comunica a los diferentes usuario implementando un socket que
reside en NodeJs. Finalmente, se usan máquinas virtuales desplegadas por medio
de vmware player que harán uso de la plataforma BOINC en un proyecto integrado
por medio de la simulación de un servidor propio capaz de proveer los servicios de
red en grid y distribuir la carga computacional de los servicios en el momento que
se requiera.
14
ABSTRACT.
This project is developed with the objective of present an hybrid encryption prototype
implemented on a grid network with the purpose of demonstrate the security level
that is possible to reach with this encryption way through of messaging application
that will be analyzed with and without the use of the algorithms developed comparing
the results obtained when this will be running, likewise will be carried a cryptanalysis
process over the prototype showed with the purpose of check means points of
failures and when these would be exploited in case of be applied.
The prototype was developed based on an architecture able to share resources and
functionalities with the purpose to provide capabilities to operate with any system
that require the use of them, so, the messaging application itself is only an element
that works like a test that give us information about the capacity of the encryption
prototype and expect give a confidence level for its implementation in more
communication systems.
Furthermore, at a technical level, the use of the .Net core framework with which the
different methods of the encryption prototype are developed allows the use of the
advantages of the development with the C # language and its deployment on multiple
platforms, allowing its implementation in any environment that require without be tied
to the Microsoft technologies. In addition, we have the applicability of the services
that can be created using JPA technology that provides java in order to make
connection points between the application and the service provided by the
encryption prototype which can also be deployed in any system operative, likewise
the use of all these services are called or invoked by a messaging interface
developed through the ReactJs library which communicates to the different users
implementing a socket that resides in NodeJs. Finally, we use virtual machines
deployed through vmware player that will be make use of BOINC platform in an
integrated project by means of the simulation of its own server able to provide the
grid network services and distributing the computational load of the services in the
moment that is required.
15
1. PLANEACIÓN.
1.1. Título.
Prototipo de cifrado híbrido combinando los métodos de encriptación AES y RSA,
implementado sobre una red grid.
1.2. Planteamiento del problema.
1.2.1. Descripción.
En la actualidad los diferentes tipos de aplicaciones que se están desarrollando
realizan interacciones constantes con sistemas externos, enviando y recibiendo
información que contiene datos de todo tipo acerca de las personas, empresas,
negocios, etc. requiriendo niveles altos de seguridad en dichos procesos de
transmisión dada la sensibilidad de los datos y las consecuencias de que la
información sea conocida por terceros. Existen mecanismos de seguridad
adaptados especialmente para la protección de la información y que está en
constante desarrollo, se parte de la ideología de mantener la información de manera
confidencial, íntegra y disponible; Donde dos sistemas sean capaces de interactuar
sin ningún tipo de intrusión por parte de agentes externos, lo que hace necesario
que usuarios y corporaciones busquen e implementen estándares que permitan el
manejo seguro de los datos con el fin de suplir este tipo de necesidad.
Dando solución a los problemas de intercepción de la comunicación, usados en
cualquier sistema de la información por un emisor y un receptor se han adaptado
técnicas enfocadas en la protección de los canales de comunicación y los datos que
se transmiten por medio ellos como lo son los métodos de cifrado. Los retos a nivel
de seguridad de la información tienden a ser más complejos con el paso del tiempo,
en primera instancia las comunidades dedicadas al robo de información han ido
creciendo y con ellas el desarrollo de herramientas que facilitan este tipo de
procesos, por otro lado se encuentra la evolución a nivel de procesamiento de las
máquinas que permiten que determinados ataques puedan ser efectivos de manera
más rápida y eficiente generando riesgo para las técnicas de cifrado más débiles y
una preocupación para las más complejas.
16
El uso e implementación de la criptografía se puede enmarcar en dos mecanismos
generales, simétricos o asimétricos, estos implementan diversas operaciones
matemáticas generando llaves para su cifrado y descifrado solo conocidas por los
interlocutores, su principal diferencia radica en la compartición de llaves y recursos
necesarios para su ejecución, donde entre mayor sea la lógica de sus operaciones
el consumo de recursos computacionales es mucho más exigente. Este tipo de
técnicas siempre han sido objetivo de ataques dada su popularización en grandes
organizaciones con el fin de encontrar aquellos puntos débiles o vulnerabilidades
que estos puedan presentar. A la fecha existen modelos que no han podido ser
penetrados debido a sus complejidades en operaciones matemáticas y
arquitecturas.
Evaluando específicamente las redes corporativas donde hacen principalmente
presencia este tipo de mecanismos de cifrado, se evalúa la arquitectura de
computación en grid la cual tiene como características fundamentales la propiedad
de compartición de recursos y métodos para el acceso a la información, si se usa
RSA en una grid las llaves generadas deben ser enviadas a cada host que se
encuentre en la red, creando vulnerabilidades que permiten ataques de hombre en
el medio tratando de conocer la información compartida, entendiéndose esto como
falla de seguridad en red mas no del algoritmo de cifrado, por tal razón se hace uso
del sistema de cifrado de clave pública (PKI) la cual se apoya en el uso de
certificados digitales, sin embargo, presenta vulnerabilidades por ser sensible a la
alteración de depósitos de claves y robo de llaves privadas mediante ataques a los
servidores de certificación de autoridad (CA), de igual forma sucede en el caso de
usar AES quien necesariamente debe exponer su llave privada a los equipos de la
red usada para cifrado y descifrado (Amaya, 2014)1.
1 Amaya, C. g. (24 de 06 de 2014). welivesecurity. Recuperado el 28 de 09 de 2018, de https://www.welivesecurity.com/la-
es/2014/06/24/pki-paradigma-criptografia-asimetrica/
17
Con lo expuesto anteriormente, se ha planteado la necesidad de trabajar en
modelos de encriptación de diferentes tipos, tales como mecanismos de
encriptación basados en blockchain, polimórficos, híbridos, etc. y formas diferentes
de publicación y protección de llaves, todos en busca de un prototipo capaz de
soportar los retos en seguridad de la información que se aproximan tomando como
base las tecnologías existentes y las que se encuentran en tendencia donde su base
principal es la comunicación y paso de información de manera confidencial.
1.2.2. Formulación del problema.
¿Es posible realizar un prototipo de cifrado que combine los métodos de
encriptación AES y RSA para proteger la comunicación entre usuarios sobre una
red en grid?
18
1.3. Alcances y Delimitaciones.
1.3.1. Alcances.
Este proyecto tiene como alcance realizar un prototipo de cifrado combinando los
métodos de encriptación AES y RSA, en el cual se quiere realizar una aplicación
que haga uso de él y permita verificar su eficiencia y comparación con cada
algoritmo de manera individual. Se busca analizar los dos métodos mencionados
anteriormente para realizar una combinación que permita generar un prototipo de
cifrado diferente, se considera la implementación del modelo en un servicio de
mensajería alojado sobre una red en grid donde se pretende interceptar la
comunicación de los usuarios que hacen uso de este con el fin de analizar los
procesos de seguridad, mejoras establecidas y posibles falencias.
1.3.2. Delimitaciones.
1.3.2.1. Temáticas.
Las temáticas que comprenden el desarrollo de este proyecto están enfocadas en:
prototipo de cifrado, métodos de encriptación AES y RSA, computación en grid,
servicio que implemente el prototipo desarrollado, dentro de lo cual se pretende
comprender el funcionamiento y mecanismos de seguridad usados pretendiendo
dar mejoras mediante una solución de encriptación combinada entre los algoritmos
anteriormente nombrados.
1.3.2.2. Técnicas.
Dados los diferentes elementos que comprenden el desarrollo del proyecto se
plantea el uso de las siguientes herramientas y el modo en que serán trabajadas de
acuerdo a los planteamientos expuestos:
Entorno de desarrollo C# y .Net Core para el diseño y programación del
algoritmo que implementa la combinación de los sistemas AES y RSA,
pretendiendo buscar como resultado mayor eficiencia para los procesos de
encriptación de la información.
Entorno de desarrollo para la creación del servicio web el cual hará uso del
algoritmo propuesto para encriptar la información generada por los usuarios
que se estén comunicando.
19
Entorno de virtualización vmware, donde se montarán VM’s simulando una
red en grid las cuales tienen como propósito hostear el servicio de mensajería
que implementa la solución propuesta.
Herramienta de monitoreo de paquetes en la red Wireshark, con el fin de
interceptar la comunicación que se realice entre los servidores para
posteriormente filtrar la información encriptada.
Herramientas de desarrollo de software como C#, .Net Core, JPA, ReactJs,
NodeJs, MySql que permiten la realización de los diferentes servicios y la
aplicación de mensajería.
1.3.2.3. Geográficas.
El desarrollo del prototipo planteado no genera limitación geográfica dada su
naturaleza, ya que el desarrollo de servicios referentes a la programación y su
implementación sobre sistemas de transmisión de información permiten dinamismo
en este sentido, donde no se requieren instalaciones o espacios específicos.
1.3.2.4. Temporales.
El prototipo que se plantea desarrollar en un modo piloto y estará disponible en los
recursos digitales de la universidad, con el fin de que las personas interesadas sobre
el tema pueden consultar, plantear mejoras o realizar su implementación en otros
sistemas, dando paso a un punto de partida para construcción de nuevos sistemas
criptográficos.
20
1.4. Objetivos.
1.4.1. Objetivo general.
Desarrollar un mecanismo de cifrado híbrido basado en los métodos de
encriptación AES y RSA, en una red en grilla mediante servicios de
mensajería.
1.4.2. Objetivos específicos.
Analizar y diseñar un algoritmo de cifrado basado en los métodos de
encriptación de AES y RSA.
Desarrollar un servicio de mensajería que implemente el método de
encriptación propuesto.
Implementar una red en grid donde se publique un servicio de mensajería
propuesto.
Realizar la captura de tráfico que permita evidenciar la implementación del
prototipo de cifrado propuesto.
Configurar un entorno de pruebas, que permitan identificar las posibles
mejoras desarrolladas en base al servicio de mensajería implementado.
21
1.5. Justificación.
El estudio de modelos criptográficos hoy en día es un tema de mucha profundidad,
dadas las condiciones en las que se desarrolla el mundo donde el centro de todo
son los datos, se requieren niveles de protección muy altos por lo que es muy común
usar servicios potentes y conocidos especialmente a nivel de las grandes
organizaciones donde una falla puede generar grandes pérdidas, por lo tanto entre
mayor complejidad presenté el modelo de protección de datos es aún mejor, sin
perder de vista el nivel computacional requerido.
Los métodos actuales de encriptación brindan soluciones al momento de realizar la
protección de la información, pero sus códigos de implementación y operaciones
implementadas son de libre acceso lo que genera que terceros puedan aprovechar
información que se conoce y planteen la posibilidad de realizar ataques, es
importante poder tener la posibilidad de implementar un método de cifrado basado
en aquellos que aun siendo conocidos siguen sin ser quebrados y brindarles aún
más seguridad generando desconocimiento de su modo de construcción haciéndolo
en teoría mucho más complejo y seguro.
La realización de este proyecto tiene como finalidad mostrar un prototipo de
combinación de los algoritmos de encriptación AES y RSA con el propósito reunir
sus bondades en cuanto a complejidad y nivel de protección se refiere, lo cual
permitirá analizar si es posible mantener y mejorar los niveles de seguridad que
poseían cada uno de ellos por medio de su implementación en una simulación de
sistema de red en grid.
22
1.6. Marco de referencia.
1.6.1. Estado del arte
Modelo híbrido de encripción y desencripción para imágenes usando RSA, AES y
afinamiento con la operación XOR.
El modelo propuesto describe un modelo de encriptación simétrico en el siguiente
orden, encripción por RSA, seguido por AES y finaliza con afinación con XOR. Se
realiza la exposición de los datos sobre los diferentes algoritmos, para AES se usa
el tamaño de llave de 128 bits (10 rondas) (Avinash , Potnis, Kumar, Dwivedy, &
Soofi, 2017)2.
Los resultados experimentales del modelo propuesto por los autores muestran que
el cifrado tiene rendimiento aleatorio gracias a mediciones de parámetros como
MSE, ED, MD y PSNR por lo que se puede concluir que su seguridad es de nivel
complejo.
Este modelo híbrido a diferencia de lo propuesto como desarrollo en este proyecto
presenta un método adicional de cifrado, optimizado para ser usado sobre
imágenes, aun así, no contempla el desarrollo a alto nivel de una solución nueva,
como tal se hace uso de modelos existentes y acoplarlo a un objetivo específico y
la protección de llaves por medio de sistemas adicionales.
Encripción de datos segura por medio de combinación de AES, RSA y HMAC.
El modelo propuesto depende de 3 funciones híbridas que son combinadas entre
ellas para producir un sistema de protección fuerte. La función AES es usada para
encriptar los archivos de manera simétrica, el algoritmo asimétrico RSA es usado
para encriptar el password AES y HMAC para encriptar la autenticación entre
cliente-servidor o cliente-cliente (Ibrahim Harba, 2017).3
2
Avinash , R., Potnis, A., Kumar, S., Dwivedy, P., & Soofi, S. (Agosto de 2017). Internation Journal Of Engineering
Research and Applications. Obtenido de http://www.ijera.com/papers/Vol7_issue8/Part-1/O0708019094.pdf
3 Ibrahim Harba, E. S. (2017). Engineering, Technology & Applied Science Research. Obtenido de
https://etasr.com/index.php/ETASR/article/viewFile/1272/536
23
Ilustración 1. Diagrama de bloques del sistema propuesto.
Tomado de: https://etasr.com/index.php/ETASR/article/viewFile/1272/536
Los datos recorren el modelo bajo los tres niveles de seguridad usando los 3
algoritmos en combinación.
El receptor usa RSA para generar las parejas de llave (pública y privada) y
envía el valor de la llave pública al emisor.
El emisor usa el algoritmo AES para encriptar los datos usando llaves
cifradas de 256 bits.
RSA es usado para encriptar la llave simétrica con la pública del receptor.
HMAC con SHA256 es usado para calcular la MAC que incluye la
combinación de función hash con una llave de criptografía secreta.
Al texto cifrado producido por la encriptación del texto plano se le añade MAC
desde el texto cifrado.
El receptor usa la llave almacenada (llave privada) para desencriptar la clave
AES, y después desencripta la información usando esta.
El modelo propuesto usa 3 tipos de cifrado de manera combinada en determinado
orden con el fin de explotar las ventajas de cada uno de los algoritmos
implementado para la construcción de un sistema altamente seguro, resaltando que
la ejecución general de cifrado es simple y rápida con bajos requisitos
computacionales.
Analizando este modelo con el proyecto propuesto se presenta similitud ya que se
ofrece un método que puede ser acoplado a cualquier sistema de comunicación a
diferencia que usa el cifrado con HMAC como capa adicional de seguridad
24
haciéndolo más complejo donde el paso de llaves también contempla el cifrado,
pero como principal diferencia en el proyecto propuesto se establece un método de
paso seguro de llaves por medio de servicios externos y no capas de cifrado
adicionales.
Criptosistema híbrido RSA - AES PSoC (Programmable System on Chip).
Se especifica un modelo en hardware para la encriptación en AES dado que según
sus autores necesita ser acelerado por hardware a fin de brindar mejoras en
performance. Se plantea un software para realizar la encriptación de la llave de AES
sobre RSA adicional a la operación de generación de RoundKeys de AES la cual es
realizada solo al inicio de las tareas de encripcion y desencripción (Anane & Nadjia,
2015)4.
Ilustración 2. Criptosistema PSoC RSA-AES.
Tomado de: https://ieeexplore-ieee-org.bdigital.udistrital.edu.co/document/7348109
Los resultados de la aplicación de este sistema muestran que efectivamente la
optimización realizada a nivel de hardware permite mejorar la eficiencia cuando se
trata de ejecutar procesos de cifrado, lo cual dio como ventaja tiempos de respuesta
más óptimos que permiten el aumento del rendimiento de la ejecución sobre AES.
En comparación con la propuesta a desarrollar, se evidencian diferencias en cuanto
el medio por el cual se busca la optimización de los procesos ya que la idea
4 Anane, M., & Nadjia, A. (Marzo de 2015). IEEE Xplore Digital Library. Obtenido de https://ieeexplore-ieee-
org.bdigital.udistrital.edu.co/document/7348109
25
contemplada se enfoca en la combinación de los algoritmos de los sistemas sin
contemplar hardware dedicado para el proceso.
Modelo de encripcion híbrido basado en AES, RSA y TWOFISH para encripcion
bluetooth.
El modelo plantea un enfoque de encripcion de la siguiente forma:
Se usa el algoritmo AES con una llave de 128 bits para encriptación del mensaje,
se encripta el mensaje nuevamente usando TWOFISH con la misma llave de 128
bits, finalmente, la llave generada al inicio será encriptada por RSA con una llave de
1024 bits para protección sobre la transferencia.
En el receptor el proceso de desencripción trabaja en orden inverso al proceso de
encripcion, generando conexiones más seguras para conexión vía bluetooth
(Albahar, Olawumi, Haataja, & Toivanen, 2018)5.
Ilustración 3.Proceso de cifrado del método propuesto.
Tomado de: http://file.scirp.org/pdf/JIS_2018040814373482.pdf
Ilustración 4.Proceso de descifrado del método propuesto.
Tomado de: http://file.scirp.org/pdf/JIS_2018040814373482.pdf
5 Albahar, M. A., Olawumi, O., Haataja, K., & Toivanen, P. (2018). Scientific Research Publishing. Obtenido de
http://file.scirp.org/pdf/JIS_2018040814373482.pdf
26
El modelo híbrido presentado en esta propuesta para uso sobre comunicación en
bluetooth no tiene contemplado el no repudio sobre el texto cifrado, así como la
autenticidad del origen porque se generó una función hash y firmas digitales como
una de sus ventajas.
Se observa similitud con el proyecto planteado y como diferencia este proyecto usa
twofish como método adicional de cifrado en el paso de llaves de AES, desde
nuestra propuesta se hace énfasis en el paso seguro por medio de servicios que
logren proteger esa primera comunicación entre los dispositivos.
1.6.2. Marco histórico
El primer sistema criptográfico del que se tiene constancia es la Escítala, este
sistema data del siglo V a. C. y era usado en Esparta. El sistema consistía en dos
varas del mismo grosor, una en poder del emisor y la otra del receptor. Cuando el
emisor quería enviar un mensaje, este, enrollaba una cinta en su vara y escribía el
mensaje. De este modo al desenrollar la cinta el mensaje era ilegible. Al recibir el
mensaje, el receptor enrollaba la cinta en su vara, y de este modo podía leer el
mensaje. Los primeros sistemas de cifrado estuvieron ligados a campañas militares,
dada la necesidad de evitar que el enemigo obtuviese los movimientos de las tropas
al interceptar mensajes.
La criptografía siempre había estado vinculada al ámbito militar. ¿Por qué se hizo
necesaria para el resto de la gente? Aunque el uso de comunicaciones seguras ha
sido siempre una prioridad militar, la privacidad es requerida en otros sectores. Las
empresas necesitan mantener unas comunicaciones seguras para proteger su
información, por esta razón el gobierno de EEUU y la NSA se ven obligados a crear
DES.
Aparte de a las empresas, se hace necesario otorgar al ciudadano de privacidad y
seguridad. Con el nacimiento de internet y la progresiva oferta de servicios
telemáticos como acceso al banco, citas médicas y un sinfín de posibilidades se
tiene que ofrecer confidencialidad y seguridad a estos servicios (Corrales Sanchez,
27
Cilleruelo Rodriguez, & Cuevas Notario)6.Por estas razones es necesaria la
criptografía, para otorgar privacidad, confidencialidad y seguridad a nuestras
transacciones telemáticas.
Los sistemas de cifrado AES y RSA cumplen a cabalidad el proceso por el cual
fueron diseñados, brindar la posibilidad de que la información que se quiere enviar
por diferentes canales sea desconocida por terceros, donde se busca que solo las
personas o actores directas involucradas tengan el acceso adecuado a la
información real, con el pasar del tiempo se han establecido diferentes sistemas
cada uno con sus ventajas y desventajas.
El sistema AES es un algoritmo de cifrado simétrico desarrollado por los estudiantes
Vincent Rijmen y Joan Daemen de la Katholieke Universiteit Leuven en Bélgica, bajo
el nombre "Rijndael" fue presentado en 1997 al concurso organizado por el Instituto
Nacional de Normas y Tecnologías (NIST) para elegir el mejor algoritmo de cifrado;
El algoritmo gano el concurso transformándose en un estándar en el año 2002, con
algunos cambios fue posteriormente renombrado AES (Advanced Encryption
Standard) y se convirtió en uno de los algoritmos más utilizados en la actualidad
(Pousa, 2011)7.
El algoritmo de clave pública RSA fue creado en 1978 por Rivest, Shamir y Adlman,
y es el sistema criptográfico asimétrico más conocido y usado.
Estos señores se basaron en el artículo de Diffie-Hellman sobre sistemas de llave
pública, crearon su algoritmo y fundaron la empresa RSA Data Security Inc., que es
actualmente una de las más prestigiosas en el entorno de la protección de datos.
El sistema RSA se basa en el hecho matemático de la dificultad de factorizar
números muy grandes. Para factorizar un número el sistema más lógico consiste en
6 Corrales Sanchez, H., Cilleruelo Rodriguez, C., & Cuevas Notario, A. (s.f.). Universidad de Alcalá. Recuperado el 29 de 09
de 2018, de Universidad de Alcalá:
http://www3.uah.es/libretics/concurso2014/files2014/Trabajos/Criptografia%20y%20Metodos%20de%20Cifrado.pd
f
7 Pousa, A. (Diciembre de 2011). Universidad Nacional de la Plata. Recuperado el 29 de 09 de 2018, de Facultad de
Informatica: https://postgrado.info.unlp.edu.ar/wp-content/uploads/2014/07/Pousa_Adrian.pdf
28
empezar a dividir sucesivamente éste entre 2, entre 3, entre 4…, y así
sucesivamente, buscando que el resultado de la división sea exacto, es decir, de
resto 0, con lo que ya tendremos un divisor del número (Networking and Emerging
Optimization, s.f.)8.
Cada sistema implementado que permite el envío seguro de la información aporta
grandes beneficios, pero a diario terceros o gente inescrupulosa está en la
búsqueda de acceder y romper las barreras de seguridad implementadas donde se
trata de hacer que los sistemas aplicados de cifrado no sean eficientes, actualmente
a los algoritmos descritos anteriormente se les han aplicado diferentes técnicas y
métodos, estos métodos pueden ser satisfactorios dependiendo el estado y modo
de aplicación, donde los factores computacionales y de seguridad que se le asigne
al sistema juegan un papel importante, los diferentes ataques realizados a estos
sistemas son satisfactorios a niveles teóricos y prácticos donde el recurso
computacional es adecuado, esto debido a que la realización de estos ataques a
grandes bloques de codificación suelen procesar y consumir recursos en gran
manera.
Debido a la realización de ataques sobre estos sistemas, se ha venido desarrollando
el concepto de cifrado híbrido donde su busca la combinación de dos o más
sistemas que permitan realizar un cifrado nuevo con mayor nivel de dificultad, la
mejor aportación del cifrado híbrido radica en que resuelve en gran medida el
problema de distribución de llaves para esquemas simétricos y el problema de
eficiencia para esquemas asimétricos (Barrón Vidales, 2008)9.
Durante los años 90’s surgieron algunos esquemas de cifrado que establecieron las
bases para lo que ahora conocemos como cifrado híbrido, pero fue hasta el año
2001 cuando Victor Shoup estableció formalmente los conceptos de KEM y DEM en
los que se basa esta filosofía.
8 Networking and Emerging Optimization. (s.f.). Networking and Emerging Optimization. Obtenido de
http://neo.lcc.uma.es/evirtual/cdd/tutorial/presentacion/rsa.html
9 Barrón Vidales, J. (Noviembre de 2008). Departamento de Computacion del CINVESTAV. Obtenido de
http://www.cs.cinvestav.mx/TesisGraduados/2008/tesisJesusBarron.pdf
29
En el área de estudio de la criptografía, el cifrado híbrido ha tenido gran atención en
los últimos años. Desde la aparición del esquema de cifrado diseñado por
T.ElGamal, donde se propone una implementación eficiente para un esquema de
cifrado de llave publica, muchos trabajos han sido realizados para buscar formas de
mejorar las características del cifrado tanto para criptografía de llave pública como
privada.
Un esquema de cifrado híbrido es un mecanismo de cifrado que puede ser
construido a partir de dos esquemas distintos: un esquema de cifrado de llave o
KEM (Key Encapsulation Mechanism) basado en un esquema de llave pública, y un
esquema de cifrado de datos o DEM (Data Encapsulation Mechanism) basado en
un esquema de llave privada.
Durante la investigación realizada en el área de la criptografía híbrida se evidencian
diferentes tipos de trabajos, pero en realidad son pocas las propuestas para nuevos
esquemas de cifrado híbrido, comparada con la cantidad de propuestas de cifrados
simétricos y asimétricos.
Aunque los esquemas de cifrado híbrido aún son pocos, y la mayoría de las
investigaciones se centran en tratar de probar la seguridad de los ya existentes o
de modificarlos de alguna manera (Barrón Vidales, 2008)10.
Dentro de las principales ventajas que se encuentran en los sistemas que utilizan la
implementación híbrida se resalta que si un atacante logra la intercepción de un
mensaje y este logra saber su contenido, la llave que obtuvo no servirá para los
nuevos mensajes que se propaguen ya que la combinación de los sistemas genera
claves diferentes para cada envío, por otro lado como una debilidad al momento de
querer implementar este tipo de sistemas, se encuentra el nivel de procesamiento
de los algoritmos, ya que al ser una doble implementación los procesos que llevan
a cabo el cifrado tienden hacer más complejos.
10 Barrón Vidales, J. (Noviembre de 2008). Departamento de Computacion del CINVESTAV. Obtenido de
http://www.cs.cinvestav.mx/TesisGraduados/2008/tesisJesusBarron.pdf
30
Este tipo de métodos para generar seguridad en las comunicaciones permiten ser
acoplados en cualquier solución y sus objetivos de protección pueden ser diversos
por lo cual su aplicación en las redes grid podría ser uno de los muchos ejemplos
de implementación en los que la seguridad de paso de información es tan importante
como el sistema mismo.
1.6.3. Marco teórico
1.6.3.1. Criptografía
La criptografía es el arte de encubrir los mensajes con signos convencionales, que
sólo pueden cobrar algún sentido a través de una clave secreta que nace en
conjunto con la escritura. Lo que podemos encontrar en las tablas cuneiformes, y
en los papiros muestran que los primeros egipcios, hebreos, babilonios y asirios
conocieron y aplicaron sus recónditas técnicas para ocultar sus mensajes.
Actualmente el desarrollo de los sistemas informáticos y de las redes de
comunicación, establecen los criptogramas (Rioseco San Martín, 2016)11.
Los algoritmos criptográficos modernos se basan en el empleo de una clave, que
matemáticamente se denota por K. Esta clave suele tomar un valor de entre un
conjunto muy grande de valores posibles, el rango de todos los posibles valores que
puede tomar la clave se denomina espacio de claves (Ayuntamiento de
Fuensalida)12 .
1.6.3.2. Cifrado simétrico
Este tipo de cifrado tiene como propiedad fundamental el uso de una clave que se
genera para realizar su proceso de cifrar y descifrar la información o datos que se
transmiten, Los algoritmos criptográficos simétricos tienen dos versiones: cifrador
en bloque y cifrador en flujo. Una cifra es una palabra para describir un algoritmo
11 Rioseco San Martín, C. (2016). Repositorio Digital Sistema de Bibliotecas Universidad del Bio-Bio. Obtenido de
http://repobib.ubiobio.cl/jspui/bitstream/123456789/1800/1/Rioseco_San_Martin_Constanza.pdf
12 Ayuntamiento de Fuensalida. (s.f.). Obtenido de http://www.fuensalida.es/archivos/ligas/clasificaciones/clasif607.pdf
31
descifrado. Los cifradores en bloque codifican datos en bloques pequeños de
longitud fija de 64 bits de longitud. Hay muchos cifradores en bloque que incluyen
DES, 3-DES, RC2, RC5, RC6 y Rijndael (conocido como AES) (Mendoza T)13.
Es importante que la clave sea difícil de resolver y el método de cifrado empleado
el adecuado. Con la capacidad computacional disponible hoy en día, dependiendo
del método de cifrado se puede obtener la clave en cuestión de minutos-horas
(Corrales Sanchez, Cilleruelo Rodriguez, & Cuevas Notario)14.
1.6.3.3. Cifrado asimétrico
Este tipo de cifrado es mucho más complejo que el simétrico, ambos tienen la
funcionalidad de tratar la información para que no pueda ser interceptada por
terceros, pero a diferencia estos tipos de sistemas utilizan dos claves, una privada
y una pública (siendo una la inversa de la otra). Ambas pueden ser usadas para
cifrar y descifrar información. Dichas claves están matemáticamente relacionadas
entre sí: la clave pública está disponible para todos, la clave privada es conocida
solo por el individuo, existen varios algoritmos muy utilizados por ejemplo Diffie-
Hellman, RSA, DSA (Pousa, 2011)15.
La mayor ventaja de este sistema es que la distribución de claves es más fácil y
segura que usando clave simétrica. Sin embargo, este sistema tiene varias
desventajas:
13 Mendoza T, J. (s.f.). Universidad Politecnica Salesiana de Ecuador. Obtenido de
https://dspace.ups.edu.ec/bitstream/123456789/8185/1/Demostraci%C3%B3n%20de%20cifrado%20sim%C3%A9
trico%20y%20asim%C3%A9trico.pdf
14 Corrales Sanchez, H., Cilleruelo Rodriguez, C., & Cuevas Notario, A. (s.f.). Universidad de Alcalá. Recuperado el 29 de
09 de 2018, de Universidad de Alcalá:
http://www3.uah.es/libretics/concurso2014/files2014/Trabajos/Criptografia%20y%20Metodos%20de%20Cifrado.pd
f
15 Pousa, A. (Diciembre de 2011). Universidad Nacional de la Plata. Recuperado el 29 de 09 de 2018, de Facultad de
Informatica: https://postgrado.info.unlp.edu.ar/wp-content/uploads/2014/07/Pousa_Adrian.pdf
32
● Mayor tiempo de proceso en mismas condiciones respecto a clave simétrica.
● Claves más grandes en sistemas simétricos.
● El mensaje cifrado es más grande que el original.
Por estas razones el principal uso del cifrado asimétrico es solventar los problemas
a la hora de intercambiar las claves del cifrado simétrico. De hecho, normalmente lo
que se hace es compartir las claves simétricas mediante cifrado asimétrico para
posteriormente pasar a un cifrado simétrico más rápido y menos costoso (Corrales
Sanchez, Cilleruelo Rodriguez, & Cuevas Notario)16.
1.6.3.4. Hibridación de sistemas de cifrado
Un esquema de cifrado híbrido es un mecanismo que puede ser construido a partir
de dos esquemas distintos: un mecanismo de encapsulado de llave (KEM) basado
en un esquema de cifrado de llave pública, y un mecanismo de encapsulado de
datos (DEM) basado en un esquema de cifrado de llave privada. La mejor aportación
del cifrado híbrido radica en que resuelve en gran medida el problema de
distribución de llaves para esquemas simétricos y el problema de eficiencia para
esquemas asimétricos (Barrón Vidales, 2008)17.
La criptografía híbrida solventa los problemas de privacidad que podría suponer el
uso del cifrado simétrico y el tiempo de procesado del uso del cifrado asimétrico, de
esta forma se combinan ambas para su uso, cuando, por ejemplo, deseamos
mandar un mensaje, este mensaje lo cifraremos con una clave simétrica, conocida
en este proceso como la clave de sesión, después, cifraremos con la clave pública
del receptor la clave de sesión. Cuando el receptor obtenga el mensaje, primero
16 Corrales Sanchez, H., Cilleruelo Rodriguez, C., & Cuevas Notario, A. (s.f.). Universidad de Alcalá. Recuperado el 29 de
09 de 2018, de Universidad de Alcalá:
http://www3.uah.es/libretics/concurso2014/files2014/Trabajos/Criptografia%20y%20Metodos%20de%20Cifrado.pd
f
17 Barrón Vidales, J. (Noviembre de 2008). Departamento de Computacion del CINVESTAV. Obtenido de
http://www.cs.cinvestav.mx/TesisGraduados/2008/tesisJesusBarron.pdf
33
descifrará con su clave privada la clave de sesión, una vez hecho esto podrá
acceder al contenido del mensaje (Amieva, 2015)18.
1.6.3.5. Algoritmo AES
Se trata de un algoritmo de clave simétrica y que cifra por bloques. El tamaño de
bloque es de 128 bits siempre mientras que el tamaño de la clave puede variar entre
los 128, 192 y 256 bits. Sin embargo, si aumenta el tamaño de la clave, también lo
hace el número de rondas necesarias para cifrar, AES es el cifrador de clave
simétrica más importante, la NSA (National Security Agency) permite encriptar
información clasificada como TOP SECRET usando AES con claves de 192 o 256
bits (Martinez de la Torre, 2016)19.
Cada tamaño de llave de cifrado hace que el algoritmo se comporte ligeramente
diferente, por lo que el aumento de tamaño de llave no solo ofrece un mayor número
de bits con los que se pueden cifrar los datos, sino que también aumenta la
complejidad del algoritmo de cifrado.
AES es un algoritmo de cifrado de llave simétrica lo que significa que el cifrado y
descifrado se realiza usando la misma llave (Vargas, Garcia, Martinez, Chavez, &
Muñoz)20.
1.6.3.6. Algoritmo RSA
Tanto para el proceso de cifrado como para el de descifrado, en cada una de las
rondas se utiliza una subclave generada anteriormente mediante la función
KeyExpansion a partir de la clave de cifrado.
18 Amieva, E. (13 de 12 de 2015). enekoamieva. Recuperado el 28 de 09 de 2018, de https://enekoamieva.com/criptografia-
simetrica-asimetrica-e-hibrida/
19 Martinez de la Torre, J. (03 de Octubre de 2016). Repositori Universitat Jaume I. Recuperado el 29 de 09 de 2018, de
http://repositori.uji.es/xmlui/bitstream/handle/10234/164666/TFG_Marti%CC%81nez%20De%20La%20Torre%2C
%20Javier.pdf?sequence=1&isAllowed=y
20 Vargas, J. A., Garcia, L., Martinez, S., Chavez, L., & Muñoz, D. (s.f.). Tecnologico Nacional de Mexico. Recuperado el 29
de 09 de 2018, de http://www.itvictoria.edu.mx/personal/art_investigacion/AES_paralelo_2010.pdf
34
La función KeyExpansion devuelve una subclave más que el número de rondas que
tiene el algoritmo, esta subclave extra se utiliza antes de realizar todo el proceso de
cifrado o descifrado a la matriz de estado con el objetivo de imposibilitar el
criptoanálisis. En todas las rondas menos la última el algoritmo realiza una serie de
operaciones que van modificando la matriz de estado aportando confusión o difusión
al mensaje a cifrar (Bonilla Palencia, 2012)21.
1.6.3.7. Tipos de ataques informáticos conocidos
Dentro de los sistemas de cifrado hay diferentes modos de proceder a vulnerar la
información, dentro de los ataques más importantes que se realizan a los sistemas
criptográficos se pueden encontrar dos, los algoritmos de cifrado simétrico por
bloques y los algoritmos de cifrado simétrico de flujo de datos, los cuales están
compuestos por diferentes modalidades.
● Algoritmos de cifrado simétrico por bloques
● Criptoanálisis diferencial
● Criptoanálisis lineal
● Explotación de claves débiles
● Ataques algebraicos
● Algoritmos de cifrado simétrico de flujo de datos
● Complejidad lineal
● Ataques de correlación
1.6.3.8. Computación en grid
La Computación Grid ha surgido como un importante campo. Contrario a otras
arquitecturas donde el enfoque es crear computadoras de gran rendimiento medido
en número de cálculos de punto flotante por unidad de tiempo, la importancia del
Grid está definida en términos de cantidad de trabajo que puede despachar en una
21 Bonilla Palencia, E. (3 de Mayo de 2012). Universidad Carlos III de Madrid. Obtenido de
https://orff.uc3m.es/bitstream/handle/10016/15402/pfc_eduardo_bonilla_palencia_2012.pdf?sequence=2
35
unidad de tiempo, la tecnología GRID no es revolucionaria, más bien se puede decir
que ha evolucionado de otras tecnologías como lo son: Sistemas Distribuidos,
Vitalización, Web Services, Internet, Criptografía (Mendoza T)22 .
Es el sistema de computación distribuido se da la facilidad de compartir los recursos
no centrados geográficamente para resolver los distintos problemas de gran
magnitud, además brinda muchas ventajas frente a otras tecnologías de esa época,
entre estas ventajas esta: una multitud de computadoras conectadas en una red,
usando grid tiene una potencia ilimitada, la conexión entre diferentes máquinas no
genera ningún problema ya brinda una perfecta integración de sistemas y
dispositivos heterogéneos, trata en síntesis de dar una alternativa de solución
altamente escalable, potente y flexible, para evitar problemas de falta de recursos
(cuellos de botella) y jamás queda obsoleta, ya que tiene la posibilidad de modificar
el número y características de sus elemento (Mariel, 2012)23.
1.6.3.9. Seguridad de la información
La seguridad informática es la disciplina que ocupa de diseñar normas,
procedimientos, métodos y técnicas orientados a proveer condiciones seguras y
confiables, para el procesamiento de datos en sistemas informáticos.
La decisión de aplicarlos es responsabilidad de cada usuario (Orea, 2010)24.
22 Mendoza T, J. (s.f.). Universidad Politecnica Salesiana de Ecuador. Obtenido de
https://dspace.ups.edu.ec/bitstream/123456789/8185/1/Demostraci%C3%B3n%20de%20cifrado%20sim%C3%A9
trico%20y%20asim%C3%A9trico.pdf
23 Mariel, A. M. (2012). Grid Computing vs. Cloud Computing. Obtenido de revistasbolivianas:
http://www.revistasbolivianas.org.bo/scielo.php?pid=S1997-40442012000200007&script=sci_arttext
24 Orea, S. V. (23 de 08 de 2010). Universidad Tecnológica de Izúcar de Matamoros. Obtenido de
http://www.utim.edu.mx/~svalero/docs/Antologia%20Seguridad%20de%20la%20Informacion.pdf
36
Es la información el elemento principal a proteger, resguardar y recuperar dentro de
las redes empresariales, se trata de garantizar que los recursos informáticos de una
compañía estén disponibles para cumplir sus propósitos, es decir, que no estén
dañados o alterados por circunstancias o factores externos, es una definición útil
para conocer lo que implica el concepto de seguridad informática (Orea, 2010)25.
Los términos seguridad de la información, seguridad informática y seguridad en la
red a menudo se utilizan indistintamente. Estos conceptos están muy relacionados
y comparten los objetivos comunes de la protección de la confidencialidad,
integridad y disponibilidad de la información; sin embargo, hay algunas diferencias
sutiles entre ellos (Soriano)26.
1.6.3.10. Metodología para el desarrollo de software
1.6.3.10.1. Waterfall Process
Esta es una metodología que se caracteriza por el hecho de que se queda en una
fase, hasta que esta está totalmente terminada y es ahí donde pasa a la siguiente,
su principal inconveniente es que ante cualquier error se pierde tiempo muy valioso
porque toca devolverse tanto en el proceso de desarrollo como en el de la
documentación. (Camacho, 2013)27
1.6.3.10.2. Rational Unified Process
Es un proceso de software iterativo, es adaptable y entallado para satisfacer las
necesidades del equipo de desarrollo, pero es una metodología muy pesada, es
muy completo pero muy complejo para los proyectos de desarrollo ágil por lo que
pierde mucho tiempo en la documentación de los procesos.
25 Orea, S. V. (23 de 08 de 2010). Universidad Tecnológica de Izúcar de Matamoros. Obtenido de
http://www.utim.edu.mx/~svalero/docs/Antologia%20Seguridad%20de%20la%20Informacion.pdf
26 Soriano, M. (s.f.). Seguridad en redes y seguridad de la información. Recuperado el 28 de 09 de 2018, de improvet:
http://improvet.cvut.cz/project/download/C2ES/Seguridad_de_Red_e_Informacion.pdf
27 Camacho, J. D. (04 de 2013). northware.mx. Obtenido de http://www.northware.mx/wp-
content/uploads/2013/04/Desarrollo-cascada-vs-Desarrollo-Agile.pdf
37
1.6.3.10.3. Essential Unified process
Esta es una mejora del Rational Unified Process, consiste en la integración de
prácticas eficaces de los 3 campos de proceso: el proceso unificado, los métodos
ágiles y el proceso de madurez, respecto a su usabilidad en el desarrollo de
videojuegos hay que decir que por su escalabilidad y la posibilidad de separar
prácticas lo hace adaptable para este fin.
1.6.3.10.4. Team Software Process
Es un conjunto de procesos estructurados que nos dice qué hacer en cada fase del
desarrollo del producto mostrando como conectar cada fase del proyecto con otra,
su objetivo es desarrollar proyectos pequeños en varios ciclos incrementales, su
fortaleza a la hora de desarrollar es que por su organización genera un balance
entre procedo, producto y equipo de trabajo. Esta metodología nos enseña
claramente cómo iniciar un proyecto, guiarlo y analizar los datos obtenidos lo que
es aplicable para cualquier tipo de desarrollo (N, 2012)28.
1.6.3.10.5. Microsoft Solution Framework
Microsoft, consiste en una serie de pequeños ciclos repetitivos que permite un
desarrollo rápido con aprendizaje y retroalimentación en cada uno de ellos, al este
aprender de cada iteración y no tener una estructura fija podría ser adaptable a el
desarrollo por módulos y las pequeñas y rápidas iteraciones serían muy útiles a la
hora de refinar detalles (ESSAMA, 2013)29.
1.6.3.10.6. Scrum Framework
Es una metodología de desarrollo de software iterativo incremental muy usada en
el desarrollo de software ágil. El trabajo está estructurado en ciclos conocidos como
Sprints. Durante cada sprint los equipos toman los requerimientos de una lista
28 N, R. P. (2012). Mathieu. IEEE. Lavallée: Software Team Process: a taxonomy. Proceedings of the International
Conference on Software and System Process.
29 ESSAMA, S. (2013). Microsoft Solution Framework (MSF) for Agile Software Development.
38
ordenada por prioridades conocidas como historias de usuario. Al terminar cada
sprint, se tiene una versión potencialmente final del producto.
En el desarrollo del prototipo se usará la metodología de desarrollo
ágil Scrum porque nos permite tener funcionalidades en el proyecto a corto
plazo, así mismo nos facilita la tarea de despejar riesgos de manera anticipada con
la respectiva documentación para un desarrollo eficiente, además permite centrarse
en cada módulo muy específicamente, desplazadamente y nos permite mostrar los
resultados de cada iteración tanto al cliente como al director.
Para entender el ciclo de desarrollo de Scrum es necesario conocer las 5 fases que
definen el ciclo de desarrollo ágil:
Etapas de la metodología Scrum:
Concepto: Se define de forma general las características del producto y se asigna
el equipo que se encargará de su desarrollo.
Especulación: En esta fase se hacen disposiciones con la información obtenida y
se establecen los límites que marcarán el desarrollo del producto, tales como costes
y agendas. Se construirá el producto a partir de las ideas principales y se
comprueban las partes realizadas y su impacto en el entorno.
Esta fase se repite en cada iteración y consiste, en rasgos generales, en:
Desarrollar y revisar los requisitos generales.
Mantener la lista de las funcionalidades que se esperan.
Plan de entrega. Se establecen las fechas de las versiones, hitos e iteraciones.
Medirá el esfuerzo realizado en el proyecto.
Exploración: Se incrementa el producto en el que se añaden las funcionalidades
de la fase de especulación.
Revisión: El equipo revisa todo lo que se ha construido y se contrasta con el
objetivo deseado.
39
Cierre: Se entregará en la fecha acordada una versión del producto deseado. Al
tratarse de una versión, el cierre no indica que se ha finalizado el proyecto, sino que
seguirá habiendo cambios, denominados “mantenimiento”, que hará que el producto
final se acerque al producto final deseado (Anonimo, 2019)30.
Ilustración 5. Esquema de las 5 fases de desarrollo Scrum.
Tomado de: https://es.slideshare.net/YohelTorres/mtrigas-tfc0612memoria
1.6.3.11. Planificación de proyectos de software
El objetivo de planificación del proyecto de Software es proporcionar un marco de
trabajo que permita al gestor hacer estimaciones razonables de recursos, costo y
planificación temporal (medina, 2012)31. Estas estimaciones se hacen dentro de un
marco de tiempo limitado al comienzo de un proyecto de Software, y deberían
actualizarse a medida que progresa el proyecto. Además, las estimaciones deberían
definir los escenarios del "mejor caso" y "peor caso" de forma que los resultados del
30 Anonimo. (02 de 15 de 2019). Slideshare. Obtenido de https://es.slideshare.net/YohelTorres/mtrigas-tfc0612memoria
31 medina, m. (26 de 11 de 2012). http://isittla12.blogspot.com.co/. Obtenido de
http://isittla12.blogspot.com.co/2012/11/unidad-3planificacion-del-proyecto-de.html
40
proyecto puedan limitarse. El objetivo de la planificación se logra mediante un
proceso de descubrimiento de la información que lleve a estimaciones razonables.
1.6.3.12. Planificación de proyectos
El objetivo de planificación del proyecto de Software es proporcionar un marco de
trabajo que permita al gestor hacer estimaciones razonables de recursos, costo y
planificación temporal. Estas estimaciones se hacen dentro de un marco de tiempo
limitado al comienzo de un proyecto de Software, y deberían actualizarse a medida
que progresa el proyecto. Además, las estimaciones deberían definir los escenarios
del " mejor caso " y " peor caso " de forma que los resultados del proyecto puedan
limitarse. El objetivo de la planificación se logra mediante un proceso de
descubrimiento de la información que lleve a estimaciones razonables.
1.6.3.13. Proyectos de software
Es el proceso de gestión para la creación de un sistema o software, la cual encierra
un conjunto de actividades, una de las cuales es la estimación; estimación es una
actividad importante que no debe llevarse a cabo de forma descuidada. Existen
técnicas útiles para la estimación de costes de tiempo. Y dado que la estimación es
la base de todas las demás actividades de planificación del proyecto y sirve como
guía para una buena Ingeniería de Sistemas y Software.
1.6.3.13.1. Elementos de un proyecto de software
Ámbito del Software: En esta etapa se deben evaluar la función y el
rendimiento que se asignaron al software. El ámbito se define como un
prerrequisito para la estimación.
Recursos: Es la segunda tarea de la planificación del desarrollo de Software
es la estimación de los recursos requeridos para acometer el esfuerzo de
desarrollo de Software.
Cada recurso queda especificado mediante cuatro características:
o Descripción del recurso.
o Informes de disponibilidad.
41
o Fecha cronológica en la que se requiere el recurso.
o Tiempo durante el que será aplicado el recurso.
1.6.3.14. Desarrollo en JPA
JPA es una abstracción que está por encima de JDBC lo que permite ser
independiente de SQL. Todas las clases y anotaciones de esta API se encuentran
en el paquete javax.persistence. Los principales componentes de JPA son:
Mapeo de base de datos relacionales (ORM). Es el mecanismo para mapear
objetos a los datos almacenados en una base de datos relacional.
Un API administrador de entidad para realizar operaciones en la
base de datos tales como crear, leer, actualizar, eliminar (CRUD).
El Java Persistence Query Language (JPQL) que permite recuperar datos
con un lenguaje de consultas orientado a objetos.
Las transacciones y mecanismos de bloqueo cuando se accedan a los datos
concurrentemente, la API Java Transaction (JTA) (Pech May, Gomez
Rodriguez, De la Cruz Diaz, & Lara Jeronimo)32.
1.6.3.15. Desarrollo en ReactJs
Refiriéndonos a la página principal (React, s.f.)33, encontramos:
React es una biblioteca de JavaScript para construir interfaces de usuario.
React hace que sea fácil crear interfaces de usuario interactivas. Diseñe
vistas simples para cada estado en su aplicación, y React actualizará y
representará de manera eficiente los componentes correctos cuando sus
datos cambien.
32 Pech May, F., Gomez Rodriguez, M., De la Cruz Diaz, L., & Lara Jeronimo, S. (s.f.). Cinvestav Tamaulipas. Obtenido de
https://www.tamps.cinvestav.mx/~fpech/sd/files/paper001.pdf
33 React. (s.f.). React. Obtenido de https://reactjs.org/
42
1.6.3.16. Desarrollo en NodeJs
La página principal de Node (NodeJs, s.f.)34 nos dice:
Concebido como un entorno de ejecución de JavaScript orientado a eventos
asíncronos, Node está diseñado para construir aplicaciones en red escalables. Se
pueden manejar muchas conexiones concurrentes. Por cada conexión el callback
será ejecutado, sin embargo, si no hay trabajo que hacer Node estará durmiendo.
Node tiene un diseño similar y está influenciado por sistemas como Event Machine
de Ruby ó Twisted de Python. Node lleva el modelo de eventos un poco más allá,
este presenta un bucle de eventos como un entorno en vez de una librería. En otros
sistemas siempre existe una llamada que bloquea para iniciar el bucle de eventos.
1.6.3.17. Desarrollo en C#, .Net Core
.NET Core es una plataforma de desarrollo de código abierto y propósito general
mantenida por Microsoft y la comunidad .NET en GitHub. Es multiplataforma
(compatible con Windows, macOS y Linux) y se puede utilizar para crear
aplicaciones de dispositivos, nube e IoT (Microsoft, 2018)35.
.NET Core tiene las siguientes características:
Multiplataforma: se ejecuta en sistemas operativos Windows, macOS y
Linux
Consistente en todas las arquitecturas: ejecuta su código con el mismo
comportamiento en múltiples arquitecturas, incluidas x64, x86 y ARM.
Herramientas de línea de comandos: incluye herramientas de línea de
comandos fáciles de usar que se pueden usar para el desarrollo local y en
escenarios de integración continua.
34 NodeJs. (s.f.). NodeJs. Obtenido de https://nodejs.org/es/about/
35 Microsoft. (31 de 07 de 2018). Docs Microsoft. Obtenido de https://docs.microsoft.com/en-us/dotnet/core/about
43
Implementación flexible: se puede incluir en su aplicación o se puede
instalar de lado a lado en toda la máquina.
Compatible: .NET Core es compatible con .NET Framework, Xamarin y
Mono, a través de .NET Standard.
Código abierto: la plataforma .NET Core es de código abierto, con licencias
MIT y Apache 2. .NET Core es un proyecto de la Fundación .NET.
Compatible con Microsoft: .NET Core es compatible con Microsoft, por
.NET Core Support.
1.6.3.18. Servicios Rest
REST (Representational State Transfer) es un estilo de arquitectura para desarrollar
servicios. Los servicios web que siguen este estilo deben cumplir con las siguientes
premisas.
Cliente/Servidor: Como servicios web son cliente servidor y definen una interface
de comunicación entre ambos separando completamente las responsabilidades
entre ambas partes.
Sin estado: Son servicios web que no mantienen estado asociado al cliente. Cada
petición que se realiza a ellos es completamente independiente de la siguiente.
Todas las llamadas al mismo servicio serán idénticas.
Ilustración 6.Premisa Rest sin estado.
Tomado de: https://www.arquitecturajava.com/servicios-rest/
44
Arquitectura en Capas: Todos los servicios REST están orientados hacia la
escalabilidad y un cliente REST no será capaz de distinguir entre sí está realizando
una petición directamente al servidor, o se lo está devolviendo un sistema de caches
intermedio o por ejemplo existe un balanceador que se encarga de redirigirlo a otro
servidor (Alvarez Caules, 2013)36.
Ilustración 7.Arquitectura en capas.
Tomado de: https://www.arquitecturajava.com/servicios-rest/
1.6.3.19. Desarrollo MySql
MySQL es un sistema gestor de bases de datos. Pero la virtud fundamental y la
clave de su éxito es que se trata de un sistema de libre distribución y de código
abierto. Lo primero significa que se puede descargar libremente de Internet (por
ejemplo, de la dirección (www.mysql.com); lo segundo (código abierto) significa que
cualquier programador puede remodelar el código de la aplicación para mejorarlo.
Esa es también la base del funcionamiento del sistema Linux, por eso MySQL se
distribuye fundamentalmente para Linux, aunque también hay versiones para
Windows (Sanchez, 2004)37.
36 Alvarez Caules, C. (14 de Junio de 2013). arquitecturajava. Obtenido de https://www.arquitecturajava.com/servicios-rest/
37 Sanchez, J. (2004). Cartagena99. Obtenido de MySQL Guia Rapida:
http://www.cartagena99.com/recursos/programacion/apuntes/mysql.pdf
45
1.6.3.20. WebSockets
Los WebSocket fueron introducidos recientemente con la llegada de HTML5 y es
sin duda una de las mejoras más esperadas. Los WebSockets nos permite trabajar
de forma bidireccional entre el navegador y el servidor, permitiendo enviar y recibir
mensajes de forma simultánea (Full Duplex) y manteniendo siempre una conexión
activa con el servidor mediante Sockets TCP (Blancarte, 2017)38.
Ilustración 8.Funcionamiento WebSocket.
Tomado de: https://www.oscarblancarteblog.com/2017/02/20/introduccion-a-lo-websocket/
1.6.3.21. Modelo vista controlador
El modelo vista controlador (MVC) es un patrón de arquitectura de software que
separa los datos y la lógica de negocio de una aplicación de la interfaz de usuario y
el módulo encargado de gestionar los eventos y las comunicaciones. Para ellos
MVC propone a construcción de tres componentes distintos que son el modelo, la
vista y el controlador, es decir, por un lado, define componentes para la
representación de la información, y por otro lado para la interacción del usuario.
Este patrón de arquitectura de software se basa en la idea de reutilización de código
y la separación de conceptos, características que buscan facilitar la tarea de
desarrollo de aplicaciones y su posterior mantenimiento (Gallego, 2016)39.
38 Blancarte, O. (20 de Febreo de 2017). OscarBlancarteBlog. Obtenido de Introduccion a los WebSocket:
https://www.oscarblancarteblog.com/2017/02/20/introduccion-a-lo-websocket/
39 Gallego, A. J. (01 de 2016). gitbook.com. Obtenido de https://www.gitbook.com/book/ajgallego/laravel-5/details
46
Ilustración 9.Arquitectura MVC.
Tomado de: https://symfony.com/legacy/doc/jobeet/1_3/es/04?orm=Propel
1.6.4. Marco conceptual
Cifrado: Cifrar es transformar información con el fin de protegerla de miradas ajenas.
Al aplicar cifrado, un mensaje se altera hasta volverse irreconocible o
incomprensible, pero la información no se pierde, sino que puede recuperarse más
adelante (Ferri-Benedetti, 2013)40.
Existen muchas técnicas de cifrado. La mayoría de ellas puede clasificarse en tres
grandes familias:
● Cifrado clásico
● Cifrado simétrico o de clave secreta
● Cifrado asimétrico o de clave pública
40 Ferri-Benedetti, F. (23 de 07 de 2013). softonic. Obtenido de https://www.softonic.com/articulos/que-es-el-cifrado-
encriptar
47
Descifrado: Declarar lo que está escrito en cifra o en caracteres desconocidos, sirviéndose de
clave dispuesta para ello, o sin clave, por conjeturas y reglas críticas (Española,
s.f.)41.
Algoritmo hibrido: Es un algoritmo que combina dos o más algoritmos que resuelven el mismo
problema, ya sea eligiendo uno (según los datos) o cambiando entre ellos a lo largo
del algoritmo.
Esto generalmente se hace para combinar las características deseadas de cada
uno, de modo que el algoritmo general sea mejor que los componentes individuales
(IGI-global, n.d.)42.
Grid Computing: La importancia del Grid está definida en términos de Cantidad de trabajo que puede
despachar en una unidad de tiempo.
La Grid Computing toma importantes características de estas tecnologías para
desarrollar un sistema que pueda proveer recursos computacionales para tareas
específicas (Barrera, Peñafiel, Serrano, & Gaibor M.)43.
C#: Leído en inglés “C Sharp” y en español “C Almohadilla”, es el nuevo lenguaje de
propósito general diseñado por Microsoft para su plataforma .NET. Aunque es
posible escribir código para la plataforma .NET en muchos otros lenguajes, C# es
el único que ha sido diseñado específicamente para ser utilizado en ella, por lo que
programarla usando C# es mucho más sencillo e intuitivo que hacerlo con
cualquiera de los otros lenguajes ya que C# carece de elementos heredados
41 Española, R. A. (s.f.). REA. Recuperado el 27 de 09 de 2018, de http://dle.rae.es/?id=Ceu04o5
42 IGI-global. (s.f.). IGI-global. Recuperado el 27 de 09 de 2018, de https://www.igi-global.com/dictionary/particle-swarm-
optimization-algorithm-its/13449
43 Barrera, R., Peñafiel, H., Serrano, M. V., & Gaibor M., J. (s.f.). Repositorio de Escuela Superior Politecnica del Litoral.
Recuperado el 29 de 09 de 2018, de
https://www.dspace.espol.edu.ec/bitstream/123456789/7236/3/GRID%20COMPUTING.pdf
48
innecesarios en .NET. Por esta razón, se suele decir que C# es el lenguaje nativo
de .NET (Gonzalez Seco) 44.
NodeJs: Está diseñado para funcionar en la capa del servidor, pero puede utilizarse del lado
del cliente de código abierto basado en JavaScript, que permite generar servicios
escalables, que utiliza modelos asíncronos y dirigidos por eventos.
JPA: Acrónimo referente a java persistent api, es un framework que permite manejar la
persistencia que se implementa en Java EE, compuesto por clases y métodos que
permiten almacenar información con base a la persistencia orientada a objetos.
Rest: Interfaz que conecta sistemas que utilizan el protocolo http, el cual permite generar
respuestas y operaciones en formatos de tipo JSON, XML, utilizando los verbos de
petición como lo son GET, POST, PUT, DELETE.
ReactJs: Es una librería de JavaScript de código abierto lanzada por Facebook, la cual
permite crear interfaces de usuario basado en la creación de componentes y
renderizado de DOM propio.
MySql: Es un gestor de base de datos, el cual permite almacenar datos, consultar y realizar
operaciones para generar información, basada en el esquema relacional.
BOINC: BOINC es una plataforma para computación de alto rendimiento a gran escala
(miles o millones de computadoras). Se puede usar para computación voluntaria
(usando dispositivos de consumo) o computación en grilla (usando recursos de la
44 Gonzalez Seco, J. A. (s.f.). Universidad de Murcia. Obtenido de El lenguaje de programacion C#:
http://dis.um.es/~bmoros/privado/bibliografia/LibroCsharp.pdf
49
organización). Admite aplicaciones virtualizadas, paralelas y basadas en GPU
(BOINC, s.f.)45.
VMWARE: VMware Workstation Player se instala como una aplicación de entorno de escritorio
estándar. Una vez instalado, VMware Workstation Player le permite instalar
sistemas operativos nuevos y ejecutarlos como máquinas virtuales en una ventana
por separado. En VMware Workstation Player, se incluyen funciones que permiten
que los usuarios creen y configuren sus propias máquinas virtuales para un
rendimiento óptimo y accedan a cualquier dispositivo que esté conectado a la PC
(vmware, s.f.) 46.
45 BOINC. (s.f.). Obtenido de Computar para la Ciencia: https://boinc.berkeley.edu/
46 vmware. (s.f.). vmware. Obtenido de https://www.vmware.com/co/products/player/faqs.html
50
1.7. Metodología de desarrollo.
Para el desarrollo del proyecto se selecciona la metodología Scrum, dadas sus
técnicas de desarrollo ágil y el modo en el que se encuentra compuesto el proyecto
permite que sea un método preciso para despejar riesgos durante todo el proceso
de evolución de forma anticipada gracias a cada iteración y salidas en su desarrollo,
permitiendo el cumplimiento de los objetivos en los tiempos estipulados de manera
exitosa.
Las fases o procesos de la metodología scrum están enmarcados en cajas de
tiempo lo que nos permite manejar de manera eficaz las diferentes etapas del
proyecto.
1.7.1. Inicio del ciclo.
El ciclo inicia con la reunión de interesados (stakeholders) en la que se crea la
descripción de la visión del proyecto. Luego el product owner crea la lista priorizada
del producto (prioritized product backlog) que contiene la lista de los requerimientos
en orden de prioridad para el negocio y el proyecto en forma de historias de usuario
(Lizeth, 2017)47.
Para el proyecto la definición de historias de usuario está dada por lo objetivos del
proyecto y cada una de las diferentes funcionalidades contempladas en el, logrando
generar la planificación de tareas de manera priorizada de acuerdo con las
dependencias entre los diferentes sistemas (Scrum Manager, 2016)48.
47 Lizeth, Y. (2017). platzi. Recuperado el 28 de 09 de 2018, de https://platzi.com/blog/que-es-scrum-y-los-roles-en-scrum/
48 Scrum Manager. (2016). Retrieved from http://scrummanager.net/files/scrum_manager.pdf
51
1.7.2. Sprint
Un Sprint es una de las cajas de tiempo de Scrum, donde el equipo de Scrum trabaja
en la creación de los entregables, el Sprint inicia con la reunión de planeación del
sprint (Sprint planning meeting) donde se analizan las historias de usuario y de
acuerdo al orden establecido en el backlog ya priorizado, se define la salida del ciclo
(Lizeth, 2017)49.
En el proyecto se han definido ciclos de sprint donde previa planificación del
backlog, se realizan las tareas definidas por iteración con el fin de dar cumplimiento
a salidas definidas que permiten el correcto desarrollo del proyecto en las siguientes
etapas (Scrum Manager, 2016)50.
1.7.3. Entregables
Si los entregables cumplen con los criterios de aceptación definidos el product
owner los acepta y reinicia el ciclo, una de las ventajas de usar Scrum es que
siempre se está pensando en mejorar por eso es importante siempre al final de cada
sprint realizar una reunión de retrospectiva del sprint en la que se analizan los
problemas presentados y las lecciones aprendidas (Lizeth, 2017)49.
Una vez finalizado cada sprint se tiene contemplado realizar una revisión del
entregable por parte del director de proyecto con el fin de obtener un feedback o
retroalimentación de lo ocurrido durante la ejecución de la iteración en cuestión
permitiendo identificar puntos que por alguna razón pudieron no haberse tenido en
cuenta respecto al producto y proyecto, analizar riesgos, ver puntos débiles y fuertes
en la ejecución de actividades, etc. dando paso a la planificación de la nueva etapa
de acuerdo al backlog especificado en un inicio (Proyectos Agiles, n.d.)51.
49 Lizeth, Y. (2017). platzi. Recuperado el 28 de 09 de 2018, de https://platzi.com/blog/que-es-scrum-y-los-roles-en-scrum/
50 Scrum Manager. (2016). Retrieved from http://scrummanager.net/files/scrum_manager.pdf
51 Proyectos Agiles. (s.f.). Obtenido de https://proyectosagiles.org/que-es-scrum/
52
Finalmente, para el cierre del proyecto se establece la presentación del producto
con las respectivas integraciones de cada sprint ejecutado con las salidas de la
metodología, documentación y pruebas realizadas.
1.8. Factibilidad.
1.8.1. Técnica.
Para la adecuada realización del prototipo mencionado y todo lo que este conlleva
es requerido verificar si se cuenta con los recursos técnicos necesarios, donde se
tienen que tener en cuenta los lenguajes de programación requeridos, para nuestro
caso, Java con el uso de JPA, C# y .Net Core, NojeJs y ReactJs, manejar y
comprender el gestor de base de datos que para este caso es Mysql además de
contar con el sistema operativo que permite montar los servicios y el prototipo a
desarrollar.
para realizar los servicios utilizaremos JPA acompañado de Mysql, C# y .Net Core,
los cuales nos brindan las herramientas necesarias para la creación de cada método
y funcionalidad que requiere el prototipo, por otro lado, se utilizara NodeJs para la
creación de un socket que se encargará de comunicar a los usuarios que ingresaran
a la aplicación de escritorio la cual estará diseñada mediante la librería ReactJs.
1.8.2. Operativa.
Para el desarrollo y culminación de este proyecto, se contará con el siguiente equipo
operativo.
La realización del proyecto estará a cargo de los ESTUDIANTES DE INGENIERIA
EN TELEMATICA: ANDRES MAURICIO CLAVIJO MEJIA y JHON ALEXANDER
CHACON TORRES, bajo la supervisión y revisión del docente e ingeniero
GERARDO CASTANG MONTIEL quien tendrá la función de guiar a los estudiantes
en el proceso de desarrollo del prototipo propuesto.
53
1.8.3. Legal.
El desarrollo del proyecto mencionado anteriormente se realiza bajo una licencia
publica para este caso nosotros hemos seleccionado la licencia GNU GPL “General
Public Licence”, la cual no conlleva ningún trámite legal, así, esto quiere decir que
es libre para todos los usuarios que deseen disponer de ella (GNU Operating
System, s.f.)52.
Cualquier software para la realización de un programa o aplicación está ligada a un
estándar de formalidad y derechos de autor, lo cual hace que estén ligadas a unas
normas de comercialización ya sea en su defecto de libre adquisición o compra del
mismo
Para la realización de este proyecto no es necesario realizar la compra de ninguna
licencia de software, ya que las herramientas mencionadas anteriormente son de
código libre y en cuenta las de C# y .Net Core existen licencias de uso para
estudiantes, del mismo modo la base de datos con la que se cuenta en este caso
Mysql se encuentra disponible de manera gratuita para el desarrollo de cualquier
aplicación.
Por otro lado, tampoco es necesario adquirir una licencia paga o privada para la
adquisición del sistema operativo pues esta cuenta con una versión gratuita o de
prueba que ofrece Microsoft ideal para la realización y montaje de los entornos de
virtualización deseados
1.8.4. Económica.
1.8.4.1. Recurso humano.
En la siguiente tabla se hace la inclusión de los costos requeridos por uso de
recursos humanos para generar una aproximación real del valor del proyecto.
52 GNU Operating System. (n.d.). Licenses. Retrieved from gnu: https://www.gnu.org/licenses/licenses.html#GPL
54
Los recursos humanos son considerados uno de los más importantes y costosos al
momento de realizar cualquier tipo de proyecto, para realizar el total de cada
persona involucrada se ha decidido utilizar el equivalente a los precios que se
pueden obtener en diferentes paginas o personas relacionadas con este fin.
Nombre Función Horas diarias dedicadas al mes
Valor hora día
Meses dedicados
Valor mensual
Valor total
Ing. Gerardo Castang
Tutor 20 $ 35.000
6 meses $ 700.000 $ 4.200.000
Andres Mauricio Clavijo Mejía
Ejecutor del proyecto
90 $ 20.000
6 meses $ 1.800.000
$ 10.800.000
Jhon Alexander Chacón Torres
Ejecutor de proyecto
90 $ 20.000
6 meses $ 1.800.000
$ 10.800.000
Total $ 25.800.000
Tabla 1.Recurso humano.
1.8.4.2. Recursos tecnológicos.
En la siguiente tabla se hace la inclusión del software y hardware requerido.
Nombre Cantidad Costos ($) Total ($)
Computador 2 $ 1.600.000 $ 3.200.000
Entorno de desarrollo Java-JPA
2 0.0 0.0
Entorno de desarrollo NodeJs
1 0.0 0.0
55
Gestor base de datos Mysql
1 0.0 0.0
Entorno de desarrollo ReactJs
1 0.0 0.0
Entorno de desarrollo C# y .Net Core
1 0.0 0.0
Entorno de desarrollo del servicio
2 0.0 0.0
Entorno de virtualización de servidores
1 0.0 0.0
Sistema operativo computadores “Windows”
2 “versiones de prueba”
0.0 0.0
Software para análisis de tráfico “herramientas libres”
n- puede ser sujeto a varias que se encuentren con licencia gratuita
0.0 0.0
Referencias sobre criptoanálisis
n- documentos o información digital
0.0 0.0
Total $ 3.200.000
Tabla 2.Recursos tecnológicos.
56
1.8.4.3. Recurso transporte.
Viajes relacionados a reuniones de los ejecutores para realizar comprobación y
realización de pruebas del sistema.
Recurso Cantidad de viajes
Valor unitario Valor total
Tutor 6 $ 12.000 $ 72.000
Ejecutores 10 $ 12.000 $ 120.000
Total $ 192.000
Tabla 3.Recurso transporte.
1.8.4.4. Otros gastos
Nombre Valor total ($)
Gastos papelería $ 50.000
Internet $ 180.000
Gastos administrativos $ 100.000
Total $ 330.000
Tabla 4.Otros gastos.
1.8.4.5. Costo total.
Nombre del recurso Valor ($)
Total, recurso humano $ 25.800.000
Total, recurso tecnológico $ 3.200.000
Total, recurso de transporte $ 192.000
Otros gastos $ 330.000
costos imprevistos (10%) $ 2.952.200
Tabla 5.Costo total
57
1.9. Resultados esperados
Se espera como resultados del proyecto:
Plantear mecanismos para el cifrado de información a partir de sistemas
robustos actuales, donde sea posible evidenciar mejoras en eficiencia y/o
seguridad.
El desarrollo de un algoritmo de cifrado, usando operaciones matemáticas
del modelo de AES y RSA entablando nuevas formas del paso de llaves entre
los sistemas de comunicación asociados.
La configuración de una de una red de comunicación en forma de grid en la
cual se exponga el modelo planteado analizando la información que se
transmite.
Un sistema de mensajería implementado sobre la red en grid que haga uso
del método de cifrado desarrollado, permitiendo demostrar su modo de
trabajo y usabilidad.
58
1.10. Impactos
Con la realización de este proyecto se esperan impactos en varios ámbitos:
Tecnológico, al lograr proponer un método de cifrado donde se realiza una
demostración de factibilidad mediante su implementación, logrando un
avance en el campo de investigación en seguridad tecnológica.
Académico, al permitir el desarrollo de mejoras a tal nivel de aplicar ingeniería
por medio de la utilización de modelos de servicios que permitan darles
fortaleza a los algoritmos ya conocidos.
Social, en el cual se muestra cómo es posible concebir otros modelos en los
que se busca principalmente la integridad y protección de la información en
los procesos de transmisión de los datos.
Investigativo, el proyecto por una parte pretende dar continuación a modelos
de encriptación híbrida ya planteados por diferentes autores de modo que
permita establecer otros puntos de vista a los problemas contemplados para
sus desarrollos.
59
1.11. Cronograma de actividades
60
61
2. Fase de inicio.
2.1. Incertidumbre.
En la definición del proyecto y reunión del equipo de trabajo se reúnen los
principales requerimientos, que posteriormente permitieron la conceptualización y
adecuación de cada sprint con el cual debería realizarse el desarrollo, esto con el
fin de tener una visión del producto y entrar a priorizar sobre algunos temas.
2.1.1. Requerimientos informales.
Se requiere de una aplicación de escritorio que permita realizar la comunicación de
usuarios con el fin de aplicar el prototipo de cifrado y brindar una comunicación y
paso de mensajes de manera cifrada.
Desarrollar la aplicación de escritorio que permita probar el prototipo de
cifrado
Desarrollar los servicios que permitan la comunicación de todo el proyecto
Desarrollar el servicio que permita el cifrado de la información
Desarrollar el servicio que permita pasar la información de un usuario a otro
Implementar herramientas que permitan probar la comunicación y cifrado
2.2. Descripción de las funcionalidades.
Según los requerimientos que se pudieron obtener en las reuniones iniciales y en
busca de darle profundización a cada aspecto del proyecto, se obtienen una mejor
descripción de las funcionalidades con el fin de permitirnos generar las Historias
de usuario.
3. Historias de usuario.
En esta parte del proyecto se decidió usar un solo formato para realizar las historias
de usuario, que tuvieron en cuenta los requerimientos del grupo de trabajo.
62
Ilustración 10. Historias de Usuario.
63
Ilustración 11.Historias de Usuario
64
4. Definición y priorización de Product Backlog.
4.1. Creación del product backlog.
En esta parte del proyecto lo que se hizo fue, tomar cada historia de usuario y darle
un alias e ingresarlas en el Product Backlog para el cual se usó el siguiente formato:
Ilustración 12.Formato Product BackLog.
4.2. Priorización del product backlog.
Como se puede apreciar en esta parte solo se ingresaron las historias de usuario al
Product Backlog, pero estas se deben priorizar, según:
Su funcionalidad.
Que sean independientes de otras historias.
Que sean necesarias para la creación de un entregable.
4.3. Pila del producto.
Tabla 6.Priorización del Product Backlog.
65
5. Sprint planning.
En esta parte se busca organizar y estimar cuántas historias deben ir por sprint,
cuanto se demoran y su prioridad. Según la reunión del Sprint Planning se acordó
que serían 4 Sprint para desarrollar el producto y que historias irían en cada uno.
Además, a cada historia se le dio una prioridad y un tiempo estimado de desarrollo,
con el cual podemos calcular el tiempo estimado de cada sprint. Se da por
“terminada” una tarea cuando esta se encuentre completamente funcional y no
dependa de otros pendientes para que trabaje 100%.
Ilustración 13.Scrum Taskboard del Proyecto.
66
5.1. Sprint 0.
Historias asignadas: Identificación de Origen-Destino, definición Cifrado
y Descifrado AES, definición Cifrado y Descifrado RSA, firmado de
Información con RSA, validación de información firmada
Tiempo estimado: 14 días, horario hábil.
5.2. Sprint 1.
Historias asignadas: Sección de registro, obtener información usuaria,
modelo BD, arquitectura Rest, aplicación de escritorio, servicio de chat,
usuarios conectados, chat de usuarios, métodos de distribución de llaves,
validación de llaves existentes, método de almacenamiento seguro llaves
privadas, arquitectura SOAP.
Tiempo estimado: 27 días, horario hábil.
5.3. Sprint 2.
Historias asignadas: Servidores virtuales, aplicación servidor, gestor
BD, Implementación BOINC y creación proyecto.
Tiempo estimado: 13 días, horario hábil.
5.4. Sprint 3.
Historias asignadas: Análisis trafico sin protección, análisis trafico
protegido, criptoanálisis.
Tiempo estimado: 13 días, horario hábil.
6. Sprint 0.
En la reunión inicial se estableció atender las historias de usuario 4 y 5 dado que
son necesarias para el desarrollo de los siguientes sprints y así eliminar la
dependencia entre ellos. Se decidió priorizar de la forma descrita en la tabla 7 dado
que para el proceso de autenticación o firma digital es necesario establecer
inicialmente la forma y métodos de cifrado a usar en el proceso de protección de la
información, con esto se definió la pila del sprint que se incluirá en la entrega al final
de la iteración.
67
Tabla 7.Sprint 0 Backlog.
6.1. Objetivos.
Los objetivos que se deben cumplir para este sprint son:
● Diseñar el algoritmo de cifrado híbrido
● Definir tamaño de llaves para AES y RSA
● Estudiar librería AES a usar en el cifrado híbrido
● Estudiar librería RSA a usar en el cifrado híbrido
Durante las reuniones diarias se aclaran dudas respecto a arquitectura y
accesibilidad del algoritmo desde aplicaciones externas.
6.1.1. Diseñar el algoritmo de cifrado hibrido.
Como se estableció desde el planteamiento del proyecto el uso de los algoritmos
AES y RSA para generar un método de cifrado híbrido capaz de proveer alta
seguridad en comunicación a través de internet, la ilustración 14 presenta el diseño
planteado para su implementación.
Ilustración 14.Modelo de cifrado hibrido.
68
El proceso de cifrado híbrido en términos generales consiste en proteger la llave
privada de AES, tal como argumenta (Al Hasib, 2008)53, se trata de aprovechar la
ventaja de AES en la velocidad de cifrado de grandes cadenas de datos y las
ventajas del cifrado asimétrico en la distribución de llaves.
Computacionalmente la complejidad en estos métodos de cifrado híbrido se
presenta en el proceso de generación de llaves dado que requiere ejecutar métodos
matemáticos que cumplan las condiciones del cifrado simétrico y asimétrico para
este caso.
AES al trabajar con el byte como elemento básico y así mismo tomarlo como
elemento del campo de Galois, todas sus operaciones de rotación y sumas de
módulo 2 al basarse en este campo finito a los bytes se les puede representar como
polinomios en una indeterminada de grado a los más 7 con coeficientes binarios
dado que si GF(2)[x] es el anillo de polinomios en una indeterminada con
coeficientes en GF(2) y 〈x8−1〉es el ideal de este anillo generado por el polinomio
x8-1, el anillo cociente R8=GF(2)[x]/〈x8−1〉 es también un GF(2) espacio vectorial
de dimensión 8. Existe un isomorfismo(natural) de GF(2)-espacios vectoriales entre
GF(2)8 y R8, llamado la representación polinomial del primero.
El modo de operación del sistema AES es por medio de estados. Un estado se
representa como un arreglo rectangular 4 × N donde cada entrada es un byte y N
depende de la longitud del bloque a cifrar, por ejemplo, si N = 4 se tiene un arreglo
de 16 bytes. Así, un estado se puede representar como un elemento del espacio
vectorial [GF(2)8 ]4N (Tapia-Recillas, 2011)54.
53 Al Hasib, A. &. (2008). A Comparative Study of the Performance and Security Issues of AES and RSA Cryptography.
Convergence Information Technology, International Conference, (págs. 505-510). Finlandia.
54 Tapia-Recillas, H. (2011). miscelaneamatematica. Retrieved 03 15, 2019, from
http://www.miscelaneamatematica.org/Misc53/5306.pdf
69
Por otro lado RSA, basa su proceso de generación de llaves en la selección de dos
números enteros (p y q), primos y de misma longitud, estos pueden encontrados
eficientemente usando el test de primalidad, posteriormente hace uso de
matemáticos complejos tales como la función indicatriz de Euler, aritmética modular,
el algoritmo de Euclides, entre otros, manteniendo datos en secreto que garantizan
una distribución de clave pública que no permita conocer la privada, a continuación
se relacionan un resumen de los pasos descritos (Ritin Behl, 2015)55.
Toma n = pq el cual es usado como el módulo para las claves públicas y
privadas.
Hace uso de φ(n) = (p − 1) (q − 1) = n - (p + q -1) la cual corresponde a la
función indicatriz de euler con el fin de proporcionar a RSA el grupo
multiplicativo de enteros módulo n.
Selecciona un valor entero e tal que 1 <e< φ(n)y gcd (e, φ(n)) = 1confirmando
que e y φ(n)son coprimos, entonces, e es tomado como el exponente de la
llave pública, esté al tener un peso de Hamming corto y pequeño resulta más
eficiente para cifrar.
Encontrar d≡e−1(mod φ(n)), tal que d es el inverso multiplicativo modular de
e y será tomado como el exponente de la llave privada. Este se puede hallar
frecuentemente usando el algoritmo extendido de Euclides.
Los procesos usados por AES y RSA garantizan que por métodos de fuerza bruta
los datos sean casi imposibles de encontrar, ya sea para tratar de romperlos o
encontrar las llaves de descifrado.
6.1.2. Definir tamaño de llaves para AES y RSA.
Dado que se plantea la implementación de una aplicación de escritorio, de un
entorno real, que hará uso del algoritmo con el fin de ver su funcionalidad se plantea
el uso de llaves de alta longitud para AES y RSA.
55 Ritin Behl, G. S. (2015). semanticscholar. Retrieved 03 15, 2019, from
https://pdfs.semanticscholar.org/2b01/4f9a45f7534733402f4c32aedf11b4d682fe.pdf
70
Para AES se establece una longitud de llave privada de 256 bits, 14 rondas, de
acuerdo con la NIST (Seagate)56, esta longitud provee una adecuada protección
hasta más allá del año 2031.
Tabla 8.Niveles de Seguridad para cifrados en bloque comunes.
Tomado de: https://infoscience.epfl.ch/record/164539/files/NPDF-32.pdf
Para RSA se establece una longitud de llaves de 2048 bits, cuya longitud está
determinada para brindar una adecuada protección al menos hasta el año 2030, e
incluso hasta el 2040 (Lenstra)57.
Tabla 9.Niveles de Seguridad para cifrados en bloque comunes.
Tomado de: https://infoscience.epfl.ch/record/164539/files/NPDF-32.pdf
Así mismo, para los procesos de firmado y verificación de la información se plantea
el uso de las llaves generadas para cifrado de RSA con el fin de aprovechar los
recursos usados en el proceso de generación de claves y cifrado, a pesar de no ser
el algoritmo de firmas más rápido y sencillo (Faget, 2018)58, adicionalmente
usaremos el algoritmo hash SHA512 para lograr un mensaje suficientemente corto
56 Seagate. (s.f.). Seagate. Obtenido de 128-Bit Versus 256-Bit AES Encryption:
http://www.axantum.com/AxCrypt/etc/seagate128vs256.pdf
57 Lenstra, A. (s.f.). Key Lengths. Obtenido de InfoScience: https://infoscience.epfl.ch/record/164539/files/NPDF-32.pdf
58 Faget, A. (14 de Noviembre de 2018). What are Cryptographic Signatures? | Introduction to the Most Common Schemes.
Obtenido de coindoo: https://coindoo.com/what-are-cryptographic-signatures-introduction-to-the-most-common-
schemes/
71
y fácil de procesar por el emisor y receptor sin dejar a un lado la seguridad que este
provee.
Tabla 10.Niveles de Seguridad para funciones hash comunes.
Tomado de: https://infoscience.epfl.ch/record/164539/files/NPDF-32.pdf
Ilustración 15. Proceso de firmado digital.
Tomado de: https://coindoo.com/what-are-cryptographic-signatures-introduction-to-the-most-common-schemes/
6.1.3. Estudiar librería AES a usar en el cifrado hibrido.
Después de analizar las diferentes librerías expuestas para el desarrollo en lenguaje
.Net, hemos seleccionado la versión core y más potente del framework de .Net en
su version 4.7.2, AesCryptoServiceProvider, capaz de realizar el uso del algoritmo
AES de manera óptima, generación de IV rápido, seguro y permitiendo setear
parámetros seguros para el proceso de cifrado de la siguiente forma:
Tamaño llave privada: 256 bits.
Padding: PKCS7.
Modo de cifrado en bloque: CBC.
72
Vector de Inicialización aleatorio.
6.1.4. Estudiar librería RSA a usar en el cifrado hibrido.
De la misma forma que se ha seleccionado el analizado el uso del Framework .Net
4.7.2 para AES, hemos seleccionado RSACryptoServiceProvider el cual para una
complejidad de bits dada genera un par de llaves de este tamaño para hacer uso
posteriormente en los procesos de cifrado, descifrado y firmado.
6.2. Reunión revisión del sprint.
El presente sprint contempló el estudio y análisis de los modelos, librerías y
conceptos necesarios para la implementacion del metodo de cifrado híbrido con el
fin de enfocar el proyecto a los objetivos planteados teniendo en cuenta que este
debe poseer una forma segura de uso a fin de limitar los posibles fallos o problemas
de seguridad que puedan presentarse en la implementación.
Se presenta el análisis realizado de acuerdo el sprint backlog inicial donde se
aceptan los métodos y modelos de implementación generados para la solución.
6.3. Scrum taskboard.
A continuación, se muestra cada historia o tarea que se realizaron, se muestra en
la aplicación para tareas Taiga y como se realiza el desplazamiento de estos
mediante su proceso de desarrollo.
Ilustración 16.Scrum taskboard 1 sprint 0.
Ilustración 17.Scrum taskboard 2 sprint 0.
73
Ilustración 18.Scrum taskboard 3 sprint 0.
Ilustración 19. Scrum taskboard 4 sprint 0.
6.4. Cierre y entrega.
Habiendo cumplido con los objetivos iniciales del sprint se obtiene respuesta
satisfactoria del equipo del proyecto y se da por finalizado el sprint 0 para dar paso
al siguiente incremento.
7. Sprint 1.
En la reunión inicial se estableció atender las historias de usuario 1,2 y 3, dado que
en estas se plasman los modelos o estudios expuestos en el sprint 0, los cuales dan
una base sólida para trabajar todos los componentes del servicio de cifrado en su
parte lógica.
En este sprint se realizará el desarrollo de la aplicación de mensajería, los servicios
de cifrado, descifrado, distribución de llaves y su integración general liberando un
entregable sumamente avanzado y bien especificado, se definió la prioridad a partir
de requerimientos en cada historia ya que para desarrollar la historia 2 se hace
necesario contar con el servidor para registro y su respectiva base de datos, así
mismo sucede con la historia 3 la cual requiere la aplicación de mensajería para
obtener información real del servicio definido en la historia 1, con esto se definió la
pila del sprint que se incluirá en la entrega al final de la iteración.
74
Tabla 11.Sprint 1 Backlog.
7.1. Objetivos.
Para el cumplimiento de este sprint se cuentan con los siguientes objetivos, los
cuales facilitaran tanto la identificación como el desarrollo de las actividades
seleccionadas.
● Método de generación de llaves.
● Desarrollo del algoritmo de cifrado.
● Desarrollo del algoritmo de descifrado.
● Estudiar el concepto de aplicaciones de escritorio con React y Electrón.
● Servicio Rest de registro de usuarios.
● Socket de comunicación de clientes activos.
● Integración de los servicios de información de usuario y cifrado.
● Integración de la aplicación con los servicios desarrollados.
Durante las reuniones se aclaran los requerimientos internos o necesarios que se
necesitaban para la realización o culminación satisfactoria de cada una de las
historias seleccionadas que fueron propuestas y planteadas buscando resolver el
objetivo propuesto.
7.1.1. Método generación de llaves.
Como se mencionaba en el sprint anterior, se diseña un algoritmo de codificación a
partir de la utilización de dos sistemas que permiten tanto cifrado como el descifrado
de la información, para ambos casos es necesario contar con diferentes
mecanismos, cuando dos usuarios intentan realizar una comunicación y estos no
han tenido un enlace previo se procede a realizar un intercambio de llaves secretas
75
en las cuales se generan la llave AES de cada usuario y luego de esto se le aplica
el algoritmo de RSA con el fin de generar dos llaves más, esto permite que la llave
de AES con la cual se cifrara la información sea compartida mediante RSA
aumentando la seguridad y confidencialidad de los datos.
En este proceso se cuentan con tres diferentes llaves, una de ellas del algoritmo
AES y dos de RSA, la pública de RSA es la que se le envía al otro usuario con el
cual se entabla una comunicación y se almacena de forma local, la privada de este
se almacena en los contenedores de llaves de windows, la de AES es generada en
cada mensaje al igual que su vector de inicialización.
A continuación, se muestra solo la función que permite y llama los métodos para
hacer el proceso de generación de llaves:
Función que genera las llaves
private RSAModel GenerateOwnkeyEncrypts(string partnerKeys)
{
int keySize = FileWriter.parameters.Value.KeyRSASize;
CspParameters cp = new CspParameters();
RSAModel rsaModel = new RSAModel();
try
{
cp.KeyContainerName = "OwnkeyEncrypts"+partnerKeys;
RSACryptoServiceProvider cryptoServiceProvider = new RSACryptoServiceProvider(keySize,cp);
FileWriter.WriteOnEvents(EventLevel.Info,"Inicio proceso de creacion de llaves.");
RSAParameters publicKey = cryptoServiceProvider.ExportParameters(false);
RSAParameters privateKey = cryptoServiceProvider.ExportParameters(true);
FileWriter.WriteOnEvents(EventLevel.Info,"Proceso de creacion de llaves RSA exitoso.");
string publicKeyString = GetStringFromKey(publicKey);|
string privateKeyString = GetStringFromKey(privateKey);
rsaModel.PublicKey = publicKeyString;
}
catch (System.Exception ex)
{
FileWriter.WriteOnEvents(EventLevel.Exception,"Error generando llaves RSA. "+ex.Message);
}
return rsaModel;
}
7.1.2. Desarrollo del algoritmo de cifrado.
Este algoritmo permite que la comunicación que realizan dos usuarios sea de
manera segura, los mensajes que se envían de un extremo a otro siempre están
cifrados, para realizar este procedimiento es necesario contar con la llave de AES
propia y la llave pública RSA del otro usuario, para este caso la llave AES del usuario
que envía el mensaje es quien cifra y mediante la pública del otro usuario se protege
76
la llave de AES para ser enviada, así, cuando el otro usuario la recibe tiene toda la
información necesaria para leer el mensaje.
A continuación, se muestra solo la función que realiza el proceso de cifrado y como
este genera la respuesta.
Función que cifra el mensaje con AES
internal ResponseEncryptAES EncryptMessage(string mensaje)
{
ResponseEncryptAES response = new ResponseEncryptAES{
result = false
};
byte[] encryptedMessage;
//Inicia proceso para cifrado
FileWriter.WriteOnEvents(EventLevel.Info,"Iniciando proceso de cifrado.");
try
{
if(aes.Key == null || aes.IV == null || mensaje == ""){
FileWriter.WriteOnEvents(EventLevel.Error,"Uno o mas de los argumentos para cifrado aes invalidos.");
}
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key,aes.IV);
using(MemoryStream msEncrypt = new MemoryStream()){
using(CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)){
using(StreamWriter swEncrypt = new StreamWriter(csEncrypt)){
//write the message to the stream
FileWriter.WriteOnEvents(EventLevel.Info,"Escribiendo mensaje en el bloque de flujo.");
swEncrypt.Write(mensaje);
}
encryptedMessage = msEncrypt.ToArray();
response.encryptedData = encryptedMessage;
response.result = true;
response.privateKey = aes.Key;
response.InitVector = aes.IV;
}
}
}
catch (System.Exception ex)
{
FileWriter.WriteOnEvents(EventLevel.Exception,"Excepcion en intento de cifrado. "+ex.Message);
}
return response;
}
Función que cifra la llave de AES
internal ResponseEncryptAESKey EncryptAESKey(byte[] privateKey, string publicKey)
{
ResponseEncryptAESKey response = new ResponseEncryptAESKey();
FileWriter.WriteOnEvents(EventLevel.Info,"Buscando llave publica en: "+publicKey);
if(File.Exists(publicKey)){
FileWriter.WriteOnEvents(EventLevel.Info,"Llave publica encontrada!!!.");
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
try
{
FileWriter.WriteOnEvents(EventLevel.Info,"Leyendo contenido llave publica.");
string xmlKey = File.ReadAllText(publicKey);
FileWriter.WriteOnEvents(EventLevel.Info,"Importando llave para proceso de cifrado");
RSA.FromXmlString(xmlKey);
response.encryptedKey = RSA.Encrypt(privateKey,true);
77
FileWriter.WriteOnEvents(EventLevel.Info,"Llave simetrica cifrada de manera exitosa.!!");
response.resul = true;
}
catch (System.Exception ex)
{
FileWriter.WriteOnEvents(EventLevel.Exception,"Error en el proceso de cifrado de llave AES. "+ex.Message);
response.resul = false;
}
}else{
FileWriter.WriteOnEvents(EventLevel.Info,"No se encontro la llave publica para cifrado.");
response.resul = false;
}
return response;
}
7.1.3. Desarrollo del algoritmo de descifrado.
Como se mostró anteriormente el proceso de cifrado necesita de los dos métodos
los cuales generan un algoritmo híbrido entre AES y RSA, para este caso, el
descifrado de la información, recibe un paquete de datos el cual trae diferentes
atributos del mensaje y la llave con la cual se puede obtener la información real que
se está transmitiendo, como se hablaba anteriormente, el mensaje está cifrado con
AES, pero la llave de AES está cifrada con la llave pública RSA, en este caso el
usuario que recibe el paquete obtiene el mensaje esperado descifrando primero con
su privada y luego con la de AES.
A continuación, se muestra solo la función que realiza el llamado de los métodos
necesarios para el proceso de descifrado y como este genera la respuesta.
Función que descifra la llave de AES
internal ResponseRSADecryption DecryptAESKey(byte[] encryptedKey, string containerName)
{
ResponseRSADecryption response = new ResponseRSADecryption{
result = false
};
byte[] decryptedKey;
CspParameters cspParameters = new CspParameters{
Flags = CspProviderFlags.UseExistingKey,
KeyContainerName = "OwnkeyEncrypts"+containerName
};
try
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cspParameters);
FileWriter.WriteOnEvents(EventLevel.Info,"Inicio proceso de descifrado de llave AES.");
decryptedKey = rsa.Decrypt(encryptedKey,true);
response.decryptedKey = decryptedKey;
FileWriter.WriteOnEvents(EventLevel.Info,"Proceso de descifrado de llave AES finalizada correctamente");
}
catch (System.Exception ex)
{
FileWriter.WriteOnEvents(EventLevel.Exception,"Error intentando eliminar las llaves de "+containerName+".
"+ex.Message);
78
}
return response;
}
Función que descifra el mensaje
internal ResponseAESDecryption DecryptMessage(SendMessageModel messageModel, byte[] decryptedKey)
{
ResponseAESDecryption response = new ResponseAESDecryption{
result = false
};
// Create an AesCryptoServiceProvider object with the specified key and IV.
using(AesCryptoServiceProvider aesDecrypt = new AesCryptoServiceProvider()){
FileWriter.WriteOnEvents(EventLevel.Info,"Inicio proceso de descifrado de mensaje.");
aesDecrypt.Key = decryptedKey;
aesDecrypt.IV = messageModel.initVector;
// Create a decryptor to perform the stream transform.
ICryptoTransform decryptor = aesDecrypt.CreateDecryptor(aesDecrypt.Key,aesDecrypt.IV);
// Create the streams used for decryption.
using (MemoryStream msDecrypt = new MemoryStream(messageModel.encryptedMessage))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
// Read the decrypted bytes from the decrypting stream and place them in a string.
response.decryptedMessage = srDecrypt.ReadToEnd();
response.result = true;
FileWriter.WriteOnEvents(EventLevel.Info,"Proceso de descifrado de mensaje finalizado correctamente");
}
}
}
}
return response;
}
7.1.4. Estudiar el concepto de aplicaciones de escritorio con React y Electrón.
Antes de iniciar la construcción de la aplicación de mensajería es necesario conocer
estas dos herramientas las cuales facilitaran el desarrollo, esto nos permitirá diseñar
una aplicación de escritorio más amigable a base de componentes.
7.1.5. Servicio Rest de registro de usuarios.
El desarrollo de este servicio es fundamental, se realiza mediante JPA (Java
Persistent Aplication), el cual nos permite generar servicios y exponerlos mediante
la arquitectura Rest, en este caso el servicio construido guarda la ip de los usuarios
y su respectivo nombre, además, permite que la ip sea consultada mediante el
nombre de usuario, lo que nos permite saber cuáles máquinas compartirán las llaves
generadas.
A continuación, se muestran solo las funciones correspondientes que permiten lo
explicado anteriormente y las respuestas que generan.
79
● Función que permite agregar nuevos usuarios.
@POST
public Response createAutKeyService(AutKeyService autKeyService){
try {
AutKeyService response =
autKeyServiceService.createAutKeyService(autKeyService);
builder = Response.status(Response.Status.CREATED).entity(response);
return makeCORS(builder, "");
}catch (EJBException e){
builder = responses.getResponse(Response.Status.BAD_REQUEST, DB_ERROR ,new
String[]{}, new String[]{});
return makeCORS(builder, "");
}
● Función que permite obtener información de los usuarios.
@GET
@Path("/autKeyServiceById")
public Response getAutKeyServiceById(@QueryParam("userName") String userName){
AutKeyService autKeyService = autKeyServiceService.getKeyServiceId(userName);
if (autKeyService == null){
builder = responses.getResponse(
Response.Status.NOT_FOUND, "userName",
new String[]{"userName"},
new String[]{userName});
return makeCORS(builder, "");
}else{
builder = Response.ok(autKeyService);
return makeCORS(builder, "");
}
}
7.1.6. Socket de comunicación de usuarios activos.
Para la realización e implementación de este socket se utiliza la librería socket.io
disponible en NodeJs, este nos permitirá manejar los usuarios que acceden al
sistema y crear las conexiones y envió de mensajes de un usuario a otro, está
encargado de manejar la comunicación entre los usuarios.
A continuación, se muestra el código principal que expone el socket y llama las
funciones necesarias.
import {serverOn} from "./example";
const express = require('express');
const app = express();
const server = require('http').createServer(app);
export const io = require('socket.io')(server);
app.use(function(req, res, next) {
var oneof = false;
if(req.headers.origin) {
res.header('Access-Control-Allow-Origin', req.headers.origin);
oneof = true;
}
if(req.headers['access-control-request-method']) {
res.header('Access-Control-Allow-Methods', req.headers['access-control-
request-method']);
oneof = true;
}
if(req.headers['access-control-request-headers']) {
80
res.header('Access-Control-Allow-Headers', req.headers['access-control-
request-headers']);
oneof = true;
}
if(oneof) {
res.header('Access-Control-Max-Age', 60 * 60 * 24 * 365);
}
// intercept OPTIONS method
if (oneof && req.method == 'OPTIONS') {
res.send(200);
}
else {
next();
}
});
io.on('connection', (socket) => serverOn(socket));
server.listen(5001, () => {
console.log("Backend Server is running on http://localhost:5001");
});
7.1.7. Integración de los servicios de información de usuario y cifrado.
Este servicio también se encuentra con la estructura de servicio Rest, se encarga
de conectar los diferentes servicios creados anteriormente, llamando los métodos
de distribución de llaves, así mismo realizar la solicitud para obtener la información
de los usuarios y posteriormente envía los resultados a la aplicación de mensajería.
A continuación, se muestra solo la función que realiza el llamado de los métodos
necesarios para el proceso y como este genera la respuesta.
public void connectionOk(KeyService keyService){
String ipOrigin = obtainIpUserName(keyService.getUserNameOrigin());
String ipDestination = obtainIpUserName(keyService.getUserNameDestination());
KeyService responseDestination = obtainKeyEncryptDestination(keyService,
ipDestination);
confirmOrigin(responseDestination, ipOrigin);
}
Como se observa se obtienen las ip de las máquinas que se van a comunicar y
luego se obtiene la llave pública del servicio que genera las llaves de RSA.
public KeyService obtainKeyEncryptDestination(KeyService keyService, String ipDestination){
HttpClient httpClient = HttpClientBuilder.create().build();
String url = "http://"+ ipDestination
+":5000/CommunicationManager/Encryption/RequestStoreKeys";
System.out.println("Confirmacion destino" + url);
HttpPost request = new HttpPost(url);
Gson gson = new Gson();
String send = gson.toJson(keyService);
StringEntity entity = new StringEntity(send, ContentType.APPLICATION_JSON);
request.setEntity(entity);
Boolean successFull = true;
81
BufferedReader rd;
KeyService ksa = new KeyService();
do{
try {
HttpResponse response = httpClient.execute(request);
if (response.getStatusLine().getStatusCode() == 200){
rd = new BufferedReader(new
InputStreamReader(response.getEntity().getContent()));
String line = rd.readLine();
if (line != null) {
ksa = gson.fromJson(line, KeyService.class);
}else{
ksa.setKeyEncrypt("NoData");
}
}else{
ksa.setKeyEncrypt("NoFound");
}
successFull = false;
} catch (IOException ex) {
ex.printStackTrace();
}
}while(successFull);
return ksa;
}
7.1.8. Integración de la aplicación con los servicios desarrollados.
Este objetivo consiste en la creación de la aplicación de escritorio para mensajería,
como se habló anteriormente para esto se hará uso de las herramientas de React y
Electrón. React en este caso nos permitió desarrollar la interfaz y crear los enlaces
necesarios para la comunicación con los servicios de manera óptima, luego se
realiza la aplicación de la herramienta de Electrón la cual convierte nuestra
aplicación web en React en una aplicación de escritorio, como fue planteada.
Este proyecto se diseña bajo una arquitectura planteada en las ilustraciones 20,21
y 22 con el fin de manejar y utilizar componentes de diferentes proveedores pero
que a su vez admite la interoperabilidad de los mismos. El prototipo se basa en la
utilización de servicios Rest, por el lado del servidor realizando llamados a los
usuarios que se quieren comunicar y obtener información registrada de estos y por
el lado de los clientes un servicio que se expone para ser escuchado por el servidor
y por la aplicación de mensajería con el fin de enviar información, realizar el proceso
de cifrado y descifrado
Además de la utilización de herramientas para diseño de interfaz y comunicación
como lo son, React que permiten la creación del servicio de mensajería de una
manera agradable para los usuarios finales y la utilización de Socket.io permitiendo
82
crear un ambiente de comunicación activo-activo y por lo tanto en tiempo real entre
los usuarios y el servidor.
Complementando la arquitectura propuesta, encontramos la implementación de una
red en grid virtualizada la cual contendrá los servicios Rest hablados anteriormente
y el socket de comunicación, la cual tiene como alcance darle al proyecto un mejor
rendimiento y distribución de recursos para la cantidad de procesos que pueda
tener.
La ilustración 20, nos muestra el diagrama de secuencia del prototipo, en el cual
existen dos usuarios, cliente y receptor quienes en este caso iniciaran una
comunicación, y un servidor el cual se encarga de realizar los respectivos procesos
de direccionamiento y paso de información, como se puede evidenciar, el emisor es
quien realiza una petición al servidor para iniciar una conversación con el receptor,
cuando esta primera llamada ocurre el servidor comienza a realizar las peticiones
entre ambos usuarios para realizar los proceso de generación e intercambio de
llaves lo cual permite que posteriormente estos dos usuarios puedan enviar
mensajes de un punto al otro de manera segura.
83
Ilustración 20. Diagrama de secuencia del prototipo.
84
Ilustración 21. Diagrama de flujo del mensaje.
85
Ilustración 22.Arquitectura del prototipo.
86
7.2. Reunión revisión del sprint.
El presente sprint contempló la implementación de los servicios para mensajería,
comunicación, cifrado, descifrado y firma de información necesarios para que el
prototipo cumpliera con los objetivos planteados en términos de seguridad y
funcionamiento, garantizando que la integración total de la solución sea viable y
funcional en condiciones normales, es decir, sin entrar a hacer uso de los recursos
de la red en grid.
Se realizaron las respectivas tareas y se presenta la aplicación desarrollada y los
servicios funcionales que permiten su correcto funcionamiento, en el cual se
establece que:
● La aplicación debe tener la opción para finalizar la sesión
● Si un nombre de usuario está registrado informar al usuario que esté ya no
se puede usar.
● Validar y mostrar las diferentes advertencias que el sistema pueda generar,
como usuario repetido, fallas de conexión.
Las sugerencias encontradas y marcadas anteriormente son tomadas en cuenta y
se procede a realizar su respectiva implementación.
7.3. Scrum taskboard.
A continuación, se muestra cada historia o tarea que se realizaron, se muestra en
la aplicación para tareas Taiga.
Ilustración 23.Scrum taskboard 1 sprint 1.
87
Ilustración 24.Scrum taskboard 2 sprint 1.
Ilustración 25.Scrum taskboard 3 sprint 1.
Ilustración 26.Scrum taskboard 4 sprint 1.
7.4. Cierre y entrega.
La construcción de este sprint fue un factor importante, ya que nos permitirá realizar
la comunicación de dos o más usuarios y de esta manera probar el objetivo principal
del proyecto, para este sprint se cumplen con los objetivos que se plantean y se
culminan los diferentes comentarios que se dieron durante la revisión del sprint, tras
su culminación el sprint actual se da por completado y de esta manera se da paso
para la realización del siguiente.
88
8. Sprint 2.
En la reunión inicial se estableció atender únicamente la historia de usuario 6, dado
que esta posee una complejidad mayor y requiere la dedicación de todos los
recursos disponibles del proyecto, esta da un inicio a la implementación del proyecto
en una red virtual simulando entornos reales, dado que comprende el uso de
distintos servidores dedicados a las tareas de proyecto grid y servicios de
comunicación, con esto se definió la pila del sprint que se incluirá en la entrega al
final de la iteración.
Tabla 12.Sprint 2 Backlog.
8.1. Objetivos.
Para el cumplimiento de este sprint se cuentan con los siguientes objetivos, los
cuales facilitaran tanto la identificación como el desarrollo de las actividades
seleccionadas.
Montaje ambiente de virtualización
Creación servidores virtuales
Configuración ambiente en Grid
Implementación servicio mensajería sobre el ambiente virtual
Integración servicios general
Durante las reuniones se aclaran los requerimientos internos o necesarios que se
necesitaban para la realización o culminación satisfactoria de cada una de las
historias seleccionadas que fueron propuestas y planteadas buscando resolver el
objetivo propuesto.
8.1.1. Montar ambiente de virtualización.
Se plantea para el desarrollo del proyecto el uso del software de virtualización
Vmware Player Workstation
89
8.1.2. Crear servidores virtuales.
Se realiza la creación de 3 servidores virtuales (2 servidores de aplicaciones y 1
servidor BOINC), con el fin de simular el ambiente en grid entre dos pcs que harán
las veces de host, se crea una VM de servidor de aplicaciones en cada uno de ellos.
Ilustración 27.VMs Creadas en host1
Se realiza la creación y configuración de la red sobre la VMNet0, la cual usará el
modo de comunicación entre red virtual y host físico de bridge, saliendo por la tarjeta
que brinda la comunicación con la red externa con el fin de simular un equipo
completamente independiente y capaz de interactuar con los demás equipos.
Ilustración 28.Configuración red virtual.
Seguido de realizar la configuración sobre el ambiente de virtualización, se procede
a configurar la tarjeta de red de cada máquina para que haga uso de red virtual
previamente creada, y adicionalmente la configuración de un direccionamiento IP
estático de cada servidor.
90
Ilustración 29.Configuración tarjeta de red vm.
8.1.3. Configurar ambiente en grid.
Inicialmente se valida conectividad de la red contra el servidor de BOINC ya creado.
Ilustración 30.Conectividad red contra BOINC.
Para la creación del proyecto de red en grid se hace uso del software con licencia
código abierto BOINC, desarrollado por la universidad de California Berkeley el cual
nos permite crear y unirnos a entornos de red en Grid con el fin de hacer uso de los
recursos de cada máquina unida al proyecto para determinadas tareas.
91
Ilustración 31.Proyecto Cifrado Híbrido en BOINC.
Después de crear el servidor de BOINC y el proyecto para la red en grid, ver paso
a paso de configuración y creación de proyecto en anexo 1, se realiza la creación
de la cuenta y unión de los clientes al proyecto de Cifrado Híbrido.
Ilustración 32. Creación usuario Cliente1.
Una vez se une un cliente al proyecto inicia una tarea de verificación de procesos
contra el servidor a fin de estar disponible para cuando se requiera hacer uso de
sus recursos.
92
Ilustración 33.Estado conexión cliente y proyecto BOINC.
Es importante resaltar que el ambiente virtual presentado es una simulación de un
posible caso de implementación en la vida real, donde la red en grid está compuesta
por n cantidad de equipos con el fin de prestar sus recursos computacionales a
determinada tarea, el proyecto de cifrado híbrido contempla el uso de los recursos
de dos clientes en estado de reposo y listos para ejecutar las tareas que el proyecto
indique de acuerdo a los jobs creados.
En esta simulación las tareas que lanzará el servidor de cifrado híbrido estarán
directamente relacionadas con la capacidad de carga requerida para el proceso de
distribución de llaves, ejecutándose cada que sea necesario más procesamiento.
Pasando nuevamente a un proyecto empresarial o de la vida real, podemos tomar
como ejemplo las tareas de análisis de datos de la bolsa de valores, estudios de
mercado o minería de criptomonedas, estos escenarios tienen algo en común y es
análisis y procesamiento de millones datos en tiempo real, donde en condiciones
normales un servidor de altas capacidades no lograra un avance significativo, pero
con la colaboración de muchas unidades computacionales conectadas entre sí, sin
importar su ubicación geográfica, es posible distribuir las tareas de procesamiento
y lograr el objetivo que en un principio llevaría más tiempo.
93
8.1.4. Implementar servicios de mensajería, usuario y comunicación sobre la grid.
En este objetivo se realiza el despliegue y ejecución de los diferentes servicios que
ya se mencionaron anteriormente, los cuales permitirán que la implementación de
la aplicación de mensajería sea funcional y esta permite probar el prototipo de
cifrado propuesto, el ambiente virtual que compone la grid implementara los
servicios necesarios para permitir realizar la comunicación entre los diferentes
clientes que se conecten en la red, cabe resaltar que asi mismo el cliente necesita
de la ejecución de un servicio local el cual es el que realizar el cifrado, haciendo
posible la confidencialidad de extremo a extremo.
A continuación, se muestran las imágenes de referencia a los diferentes servicios
desplegados y ejecutados para permitir el funcionamiento de la aplicación.
Despliegue de servicios en Apache Tomcat.
En este servidor de apache tomcat se desplegaran dos de los servicios
necesarios para realizar la comunicación entre los diferentes clientes, el
primero de ellos es el aut_key_service_ms el cual se encargará de guardar
los nombres de usuarios registrados y sus direcciones ip para realizar el
proceso de identificación de cada cliente, por otro lado encontramos el
servicio de key_service_ms, el cual permite que dos cliente pueda efectuar
la primera comunicación la cual les permitirá realizar l distribución de sus
llaves públicas.
Ilustración 34.Ejecución servidor Apache Tomcat.
94
Ilustración 35. Servicios desplegados.
Ejecución de Socket sobre NodeJs.
La ejecución de este servicio de socket permite que el envío de mensajes
que se realiza mediante la aplicación de mensajería pueda ser enviada de un
cliente a otro de manera rápida y que además sea en tiempo real, haciendo
que estos cambios se vean reflejados en las aplicaciones tanto del cliente
origen como del cliente destino.
Ilustración 36. Ejecución de socket de comunicación.
95
MySql
Este es el gestor que se utiliza para almacenar la información de los clientes
que ingresan a la aplicación de mensajería la cual guarda el nombre y su
dirección ip, esto con el fin de poder realizar las respectivas validaciones más
adelante.
Ilustración 37.Base de datos de aut_key_service.
Servicio de cifrado CHAT.
Este servicio ya no hace parte de la implementación en el servidor, como se
mencionaba para garantizar que la información que se envía de un cliente a
otro sea de la manera más segura, cada cliente final al momento de realizar
la instalación de la aplicación contará con un servicio el cual se instalará junto
a la aplicación de escritorio permitiendo.
96
Ilustración 38. Propiedades Servicio de Cifrado CHAT.
8.1.5. Pruebas integrales.
A Continuación, se podrá ver cómo funcionan e interactúan los servicios y la
aplicación de mensajería, en la cual ya se establece una comunicación, los clientes
acceden a la aplicación y logran comunicarse por medio de la grid que se ha
implementado.
Ilustración 39. Instalación final de la aplicación de mensajería.
97
Ilustración 40. Funcionamiento servicio de mensajería entre dos clientes.
8.2. Reunión revisión del sprint.
El presente sprint contempló la implementación del entorno virtual para la creación
de servidores de proyecto grid y servicios de comunicación con el fin de integrar
toda la solución de mensajería que permite dar aplicación al prototipo de cifrado
híbrido y así mismo mostrar su efectividad computacional con el uso de la grid dado
que aporta mejoras en rendimiento y por consiguiente una comunicación óptima.
Se presenta el análisis realizado de acuerdo el sprint backlog 2 donde se validan y
aceptan las diferentes implementaciones de los servicios y la aplicación de
mensajería dando paso así al desarrollo culminado de este sprint.
8.3. Scrum taskboard.
A continuación, se muestra cada historia o tarea que se realizaron, se muestra en
la aplicación para tareas Taiga.
Ilustración 41. Scrum taskboard 1 sprint 2.
98
Ilustración 42. Scrum taskboard 2 sprint 2.
Ilustración 43. Scrum taskboard 3 sprint 2.
8.4. Cierre y entrega.
La culminación de este sprint se realizó de la mejor manera permitiéndonos la
generación, implementación y ejecución de los servicios que darán paso a probar el
prototipo de cifrado propuesto, donde se culminaron los objetivos propuestos y se
realizan las sugerencias y comentarios que se encontraron durante el proceso por
parte del equipo de trabajo.
99
9. Sprint 3.
En la reunión que se estableció atender la historia de usuario 7, en este se realiza
un análisis sobre la implementación del prototipo desarrollado, se inicia con una
interceptación de la comunicación establecida entre dos usuarios con la cual
simulamos un ataque de hombre en el medio, establecer posibles puntos de falla
teóricos y la complejidad que podría abarcar el intentar corromper la información.
En términos generales se busca confirmar la efectividad en seguridad y niveles de
protección que posee el algoritmo y la implementación en general.
Ilustración 44.Sprint 3 Backlog
9.1. Objetivos.
Para el cumplimiento de este sprint se cuentan con los siguientes objetivos, los
cuales facilitaran tanto la identificación como el desarrollo de las actividades
seleccionadas.
Criptoanálisis del algoritmo hibrido implementado
Interceptar comunicación de usuarios para intentar descifrar mensajes
Identificar niveles de seguridad del algoritmo, eficiencia y confidencialidad
Análisis de resultados
Durante las reuniones se aclaran los requerimientos internos o necesarios que se
necesitaban para la realización o culminación satisfactoria de cada una de las
historias seleccionadas que fueron propuestas y planteadas buscando resolver el
objetivo propuesto.
100
9.1.1. Criptoanálisis del algoritmo hibrido implementado.
“Mientras que la criptografía es la ciencia relacionada con el diseño de cifrados, el
criptoanálisis es el estudio relacionado de los cifrados de ruptura. La criptografía y
el criptoanálisis son, de alguna manera, ciencias complementarias: el desarrollo en
una suele ir seguido del desarrollo en la otra. En particular, el criptoanálisis es una
herramienta importante para la evaluación de la vulnerabilidad de los
criptosistemas” (Cid, 2019)59.
Dada que esta implementación híbrida toma AES y RSA como forma de cifrado para
la diferente información sensible para el proceso de comunicación debemos analizar
los diferentes componentes.
Por un lado, AES, uno de los más potentes métodos de cifrado simétrico por su
complejidad algorítmica y seguridad que brinda a la protección de la información es
posible determinar que llegar a vulnerar de forma rápida no es posible. En el
proyecto usamos una llave de 256 bits de complejidad, esto representa 2256 cantidad
de llaves disponibles aprox. ahora asumamos que en el mejor de los casos
contamos con los siguientes recursos:
Cada persona en el mundo cuenta con 10 computadores propios.
7.53 billones de personas en el planeta (Banco mundial, 2017)60.
Cada computador tiene un promedio de cálculo de 5 billones de llaves por
segundo
En promedio, después de analizar el 50% de posibilidades hallaremos la
clave de AES.
59 Cid, C. F. (2019). sans. Retrieved 02 23, 2019, from https://www.sans.org/reading-room/whitepapers/vpns/cryptanalysis-
rsa-survey-1006
60 Banco mundial. (2017). banco mundial. Retrieved 03 10, 2019, from https://datos.bancomundial.org/indicador/sp.pop.totl
101
x = 5,70E+76
y = 70.530.000.000
z = 5.000.000.000
w = 3,1536E+7
j = 3,5265E+20
k = 1,1122581E+31
Donde, x es el 50% de las llaves de AES-256, y es la cantidad de computadores
disponibles dada la población en el mundo, z es la capacidad de ciclos por segundo
en promedio para un computador, w es la cantidad de segundos que tiene un año,
j es la cantidad total de ciclos procesados por segundo en el mundo y k es la
cantidad de ciclos procesados por año con la cantidad de computadores dada. Por
consiguiente, la población de la tierra puede hallar una llave de cifrado para AES-
256, una a la vez, en aprox. 5,13E+45 años (Seagate)61.
Adicionalmente, al contar con el factor de integridad por el modo de cifrado en
bloque CBC el cual hace uso del vector de inicialización brinda la capacidad de
validar un posible cambio de información en un ataque exitoso, este es aleatorio y
no se repite (European Network of Excellence in Cryptology, 2008)62.
Por otro lado, contamos con el algoritmo de cifrado RSA, que implementa cifrado
asimétrico, los cryptoanalisis que se realizan y aplican a este algoritmo permiten la
evaluación de vulnerabilidades, para cualquier sistema criptográfico como principal
objetivo de una persona externa a una comunicación es la recuperación del texto
simple o plano, si estos tienen éxito el sistema de cifrado ha sido vulnerado, en el
caso de RSA existen diferentes métodos para realizar la recuperación o forjar la
61 Seagate. (n.d.). Seagate. Retrieved from 128-Bit Versus 256-Bit AES Encryption:
http://www.axantum.com/AxCrypt/etc/seagate128vs256.pdf
62 European Network of Excellence in Cryptology. (2008, 07 31). Retrieved 03 10, 2019, from
http://www.ecrypt.eu.org/ecrypt1/documents/D.SPA.28-1.1.pdf
102
vulneración de su algoritmo, a continuación se presentan diferentes métodos que
permitan la exploración y explotación de detalles y fallas del sistema.
RSA es uno de los algoritmos que cuenta con más aplicabilidad hoy en día y tratar
de vulnerar su cifrado se convierte en un atractivo para las personas interesadas en
obtener información a cualquier modo, debido a fines comerciales y educacionales
este método criptográfico tiene diversos estudios de cryptoanalisis en los cuales se
exponen maneras teóricas de tratar de encontrar las llaves que permitan el
descifrado de la información que se transmite, tales como, ataque cíclico, ataque
por módulo común, ataque de mensajes estereotipados, ataque de fuerza bruta y
ataque de factorización sobre el cual se realiza un análisis de aplicación en este
proyecto.
El ataque de factorización se basa en la dificultad de todos los enfoques
matemáticos es virtualmente equivalente a la factorización del módulo N en sus dos
factores primos P y Q (1). Una vez que se conocen los factores de módulo, la función
de Euler podría construirse fácilmente y el valor de la clave
privada deducido. Actualmente, Tamiz de campo de número
generalizado (GNFS, Criba o tamiz general del cuerpo de números) (Statica)63.
El mejor algoritmo conocido a la fecha, el de la criba numérica o General Number
Field Sieve GNFS, tiene asociada una complejidad representada en la siguiente
expresión para un número de b bits:
El ataque de factorización considera buscar un número N que satisfaga el producto
de los primos empleados al momento de cifrar datos, la factorización del producto
de dos números primos grandes es un problema para las máquinas actualmente.
63 Statica, R. (n.d.). home. Retrieved 03 11, 2019, from http://home.etf.rs/~vm/cd1/papers/30.pdf
103
Para nuestro prototipo se utilizó el cifrado RSA 2048 tomando como ejemplo el
siguiente N (Barnes, 2004)64.
N=25195908475657893494027183240048398571429282126204
03202777713783604366202070759555626401852588078440
69182906412495150821892985591491761845028084891200
72844992687392807287776735971418347270261896375014
97182469116507761337985909570009733045974880842840
17974291006424586918171951187461215151726546322822
16869987549182422433637259085141865462043576798423
38718477444792073993423658482382428119816381501067
48104516603773060562016196762561338441436038339044
14952634432190114657544454178424020924616515723350
77870774981712577246796292638635637328991215483143
81678998850404453640235273819513786365643912120103 97122822120720357.
Cabe resaltar que como se mencionó, el GNFS es el algoritmo más rápido de
factorización, aplicándolo al método de cifrado RSA 2048 le tomaría un tiempo
extremadamente largo para lograr encontrar las llaves correspondientes.
Teniendo en cuenta el registro de ataque histórico y exitoso sobre RSA-768, el cual
se compone de 232 dígitos decimales, y fue factorizado el 12 de diciembre de 2009,
luego de 2 años de procesamiento. Es importante tener el proceso involucrado para
esa tarea: Se tomó medio año de trabajo continuo de 80 procesadores en selección
polinomial representando el 3% de la tarea principal, respecto al proceso de GNFS
o tamizado, realizado en gran cantidad de máquinas tardó casi dos años. Tomando
como referencia un procesador AMD Opteron de 2,2 GHz de un solo núcleo con 2
GB de RAM, el tamizado habría tomado cerca de mil quinientos años (Thorsten
Kleinjung, 2010)65.
Esto quiere decir que para romper este cifrado puede demorarse mil quinientos años con una sola computadora mediante el método de GNFC.
64 Barnes, C. (2004, 11 07). citeseerx. Retrieved 03 11, 2019, from
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.117.1230&rep=rep1&type=pdf
65 Thorsten Kleinjung, K. A. (2010, 02 28). eprint. Retrieved 03 11, 2019, from https://eprint.iacr.org/2010/006.pdf
104
Usar claves de 2048 bits en certificados SSL seguros, que es enormemente más
fuerte a cualquier intento de ataque por Lenstra y otros, de hecho, requeriría
factorizar un número de 617 dígitos. Las claves de 2048 bits son 232 más difíciles
de romper con NFS, que las claves de 1024 bits. 232 es equivalente a 4,294,967,296
o casi 4,3 mil millones, lo que significaría que romper un certificado SSL de 2048
bits aproximadamente tomaría 4,3 mil millones de veces más tiempo (usando el
mismo procesamiento de escritorio estándar) que hacerlo con una clave de 1024
bits. Por lo tanto, se estima que la capacidad de computación de escritorio estándar
demoraría 4,294,967,296 x 1.5 millones de años en romper un certificado SSL que
utiliza RSA de 2048 bits O, en otras palabras, un poco más de 6,4 billones de años
(digicert, s.f.)66.
9.1.2. Interceptar comunicación de usuarios para intentar descifrar mensajes.
Como se evidencio en el sprint anterior, la instalación de los servicios y la aplicación
fueron desarrollados de manera satisfactoria, En este ítem, se muestra la
funcionalidad de la aplicación y como está evidentemente hace uso del prototipo de
cifrado implementado, en el cual se mostrará una interceptación en texto plano sin
la utilización del prototipo y otra interceptación con el prototipo.
66 digicert. (n.d.). digicert. Retrieved 03 11, 2019, from https://www.digicert.com/TimeTravel/math.htm
105
Ilustración 45. Inicio de la aplicación de mensajería.
La ilustración anterior muestra el inicio de la aplicación de mensajería cuando esta
se abre para iniciar el proceso.
La siguiente ilustración muestra el momento en el que se realiza la distribución de
las llaves cuando dos usuarios comienzan a entablar la primera comunicación.
Ilustración 46. Distribución de llaves.
106
Una vez realizada la distribución de manera satisfactoria, la aplicación muestra el
componente para comenzar a realizar el envío de mensajes de un usuario a otro
como lo muestra la siguiente ilustración.
Ilustración 47. Componente de mensajería.
La siguiente ilustración muestra la comunicación que se realiza con dos usuarios
desde dos máquinas conectadas a la misma red en grid, para hacer practico el
ejemplo, se realiza una video llamada y se comparte la pantalla de una de las
computadoras para que se pueda ver el funcionamiento de manera más directa.
Ilustración 48. Uso de aplicación de mensajería con envió de mensajes sin cifrado.
107
Una vez realizado este primer envío de mensajes entre los clientes por medio de la
aplicación sin la implementación del cifrado se procede a utilizar la herramienta
WiresShark para capturar los paquetes que se transmiten y así poder leer la
información que se comparte.
Ilustración 49. Captura de mensajes sin prototipo de cifrado.
Como se evidencio, el servicio de mensajería fue puesto en marcha sin el prototipo
de cifrado sobre el ambiente en grid, haciendo posible la comunicación de los
clientes, pero una vez se realiza la interceptación de los paquetes mediante la
herramienta seleccionada se puede evidenciar que la información es muy fácil de
interpretar y leer debido a que esta viaja en texto claro, lo cual es considerado
potencialmente una vulneración para la seguridad de la información.
Las siguientes ilustraciones se muestran las capturas que se realizan por medio de
la misma herramienta sobre el servicio de mensajería implementando el prototipo
de cifrado propuesto.
108
Ilustración 50. Comunicación de los usuarios mediante la aplicación de mensajería.
Ilustración 51. Escaneo de paquetes por protocolo.
109
Ilustración 52. Captura de mensajes con implementación del prototipo de cifrado.
Como se evidencia en la ilustración anterior, no es posible leer en claro el mensaje
que se está transmitiendo en la comunicación, gracias al método de cifrado híbrido
implementado.
9.1.3. Identificar niveles de seguridad del algoritmo, eficiencia y confidencialidad.
Partiendo de la cantidad de caracteres que puedan ser enviados por medio del
servicio de mensajería, se debe emplear la forma de acortar estos mensajes
enmarcados en un diccionario hash que permita su identificación integra para cada
uno de los participantes de la comunicación, por esta razón se decidió hacer uso
del algoritmo hash SHA-512.
Como se planteó en Sprints anteriores el prototipo de algoritmo híbrido desarrollado
usa el método de cifrado AES para proteger el mensaje, dado que este es uno de
los más potentes sistemas criptográficos simétricos, por otro lado, RSA se encarga
de proteger la llave usada por AES, la cual es generada desde el inicio y por cada
una de las interacciones de los usuarios.
Se han evaluado diferentes escenarios de ataques “exitosos” sobre el prototipo
desarrollado, identificando diferentes formas de protección en las comunicaciones
que se establecen. Inicialmente sobre RSA una vulneración mostraría la llave de
AES en claro, permitiendo descifrar la información enviada, pero contemplar que
este proceso sea exitoso una vez no garantiza que las próximas comunicaciones
puedan ser descifradas con la misma clave encontrada, dado que estas se generan
nuevamente cada vez que se envíe información. Ahora, partiendo de que en efecto
110
la información fue descifrada y el atacante altera los datos e intenta hacer llegar al
receptor paquetes corruptos, el doble sistema de integridad proporcionado por un
lado con RSA por medio de firmas digitales y el Vector de Inicialización de AES con
CBC permitiría identificar que la información fue alterada por un tercero y por lo tanto
no se presentaría en la UI (Interfaz de usuario), registrándose internamente como
un origen de información no válido.
9.2. Reunión revisión del sprint.
En este sprint final, se presenta la implementación del prototipo de cifrado propuesto
aplicado a un servicio de mensajería el cual está montado sobre un ambiente
virtualizado en grid, el cual corresponde al sprint backlog 3 donde se realiza la
validación y aceptación del sistema y todos los componentes y servicios que
influyeron en su desarrollo y posterior simulación, con la cual se procede a realizar
el criptoanálisis correspondiente en el cual se toman dos ejercicios de comunicación
de información, uno en texto claro y el otro con el cifrado implementado. Una de las
características del prototipo propuesto es la forma en la cual se asegura que la
comunicación de un punto al otro puede protegerse debido a las maneras en las
cuales se realiza una verificación de firma digital RSA e implementación de un vector
de inicialización VI por el lado de AES, posteriormente se habla de que tan complejo
y cuánto tiempo llevaría realizar un ataque de criptoanálisis a los métodos de cifrado
implementados.
9.3. Scrum taskboard.
A continuación, se muestra cada historia o tarea que se realizaron, se muestra en
la aplicación para tareas Taiga.
111
Ilustración 53. Scrum taskboard 1 sprint 3.
Ilustración 54. Scrum taskboard 2 sprint 3.
Ilustración 55. Scrum taskboard 3 sprint 3.
112
9.4. Cierre y entrega.
El desarrollo y terminación de este sprint se realiza cumpliendo cada uno de los
objetivos propuestos, en el cual se abarcan todos los aspectos de los sprint
anteriores que permitieron que el prototipo de cifrado fuese implementado y
probado, en este sprint se permite la verificación de comunicación entre las
máquinas que componen el ambiente en grid, la funcionalidad y consumo de los
diferentes servicios a través del servicio de mensajería como herramienta de prueba
de comunicación, contemplando los escenarios posibles de ataque a la solución
planteada resaltando las formas de que en caso de que alguno de ellos fuese
exitoso el algoritmo se protegería.
10. Cierre del proyecto.
Luego de finalizar cada uno de los Sprints propuestos se da cierre al proyecto con
una solución que permite la integración de todos los servicios desarrollados
referentes al algoritmo de cifrado y a los servicios de mensajería implementados
sobre una red en grid, emulada por medio de un ambiente virtualizado, potenciando
sus capacidades computacionales dando rendimiento en cálculos de llaves
complejas para los procesos de cifrado.
Pasando por diferentes estudios de análisis a los sistemas criptográficos usados
para el modelo híbrido, se ha determinado un nivel teórico de eficiencia y seguridad
a partir de estudios previos realizados por diferentes referentes de investigación en
el mundo.
Por último, se ha generado un prototipo capaz de ser integrado a cualquier
implementación de comunicación que requiera seguridad en el envío de los datos
por medio de servicios sin la necesidad de certificados de seguridad.
113
11. Conclusiones.
El cifrado de la información cada día toma un papel más importante para las
organizaciones y sistemas que permiten la comunicación entre diferentes puntos,
debido a que el flujo de información y paquetes que se transmiten a diario llevan
datos muy sensibles que podrían ocasionar quiebres financieros, suplantación de
identidades o permitir ser analizada para posteriormente ser vendidos y en el peor
de los casos ser utilizados con fines terroristas o de este tipo.
Este proyecto de alguna forma permite brindar otras posibilidades para la protección
de información a nivel de proyectos personales y corporativos, al igual que existen
librerías para la implementación de los algoritmos de cifrado clásico, es importante
aportar para que las nuevas tecnologías sean fáciles de integrar en soluciones
actuales.
A pesar que cada avance en materia de seguridad de la información es importante,
al mismo tiempo se amplían las formas de ataque a estos, por tal razón el estudio
constante de métodos que permitan la mejora de seguridad en información es vital
para el desarrollo tecnológico y de la misma forma ir potenciando el estudio en
materia de criptografía cuántica la cual se consolida como la principal amenaza para
RSA en un futuro.
La realización del proyecto muestra el desarrollo e implementación de un prototipo
de cifrado y su aplicación a un sistema de mensajería, el proceso de transmisión de
datos capturado con el fin de establecer si la información que se está enviando
realmente viaja de manera segura y poco entendible para cualquier persona que
quisiera intentar vulnerar el sistema, y por último se brinda información sobre
posibles ataques y cuánto tiempo aproximado tomaría realizarlos con base a un
promedio de procesamiento actual.
Finalmente, los diferentes estudios y pruebas realizadas han permitido guiar el
proyecto a un fin satisfactorio, partiendo del cumplimiento de los objetivos
114
planteados, pero más allá de esto, es lograr generar un prototipo capaz de ser usado
en cualquier aplicación o servicio que sea generado por algún tercero.
115
12. Recomendaciones.
El uso de la aplicación de cifrado está configurado para trabajar con llaves de 2048
bits para RSA y 512 para AES, sin embargo, existe la forma de ser modificada con
longitud de llaves más complejas de acuerdo a lo que el framework de .Net Core lo
permita.
Al usar el framework .Net Core, estos servicios pueden ser desplegados sobre
sistemas operativos Linux, Mac, Android y Windows de acuerdo a lo que se
requiera, para generar los respectivos paquetes se recomienda referirse a la
documentación para publicaciones de Microsoft.
El prototipo planteado es una utilidad basada en pruebas teóricas y puede verse
afectado por análisis profundos realizados con herramientas más potentes de
criptoanálisis las cuales no fueron tenidas en cuenta dada la limitación en recursos
al momento del desarrollo del proyecto.
116
Referencias
Al Hasib, A. &. (2008). A Comparative Study of the Performance and Security Issues of AES and RSA
Cryptography. Convergence Information Technology, International Conference, (pp. 505-
510). Finlandia.
Albahar, M. A., Olawumi, O., Haataja, K., & Toivanen, P. (2018). Scientific Research Publishing.
Retrieved from http://file.scirp.org/pdf/JIS_2018040814373482.pdf
Alvarez Caules, C. (2013, Junio 14). arquitecturajava. Retrieved from
https://www.arquitecturajava.com/servicios-rest/
Amaya, C. g. (2014, 06 24). welivesecurity. Retrieved 09 28, 2018, from
https://www.welivesecurity.com/la-es/2014/06/24/pki-paradigma-criptografia-
asimetrica/
Amieva, E. (2015, 12 13). enekoamieva. Retrieved 09 28, 2018, from
https://enekoamieva.com/criptografia-simetrica-asimetrica-e-hibrida/
Anane, M., & Nadjia, A. (2015, Marzo). IEEE Xplore Digital Library. Retrieved from
https://ieeexplore-ieee-org.bdigital.udistrital.edu.co/document/7348109
Anonimo. (2019, 15 02). Slideshare. Retrieved from https://es.slideshare.net/YohelTorres/mtrigas-
tfc0612memoria
Avinash , R., Potnis, A., Kumar, S., Dwivedy, P., & Soofi, S. (2017, Agosto). Internation Journal Of
Engineering Research and Applications. Retrieved from
http://www.ijera.com/papers/Vol7_issue8/Part-1/O0708019094.pdf
Ayuntamiento de Fuensalida. (n.d.). Retrieved from
http://www.fuensalida.es/archivos/ligas/clasificaciones/clasif607.pdf
Banco mundial. (2017). banco mundial. Retrieved 03 10, 2019, from
https://datos.bancomundial.org/indicador/sp.pop.totl
Barnes, C. (2004, 11 07). citeseerx. Retrieved 03 11, 2019, from
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.117.1230&rep=rep1&type=pd
f
Barrera, R., Peñafiel, H., Serrano, M. V., & Gaibor M., J. (n.d.). Repositorio de Escuela Superior
Politecnica del Litoral. Retrieved 09 29, 2018, from
https://www.dspace.espol.edu.ec/bitstream/123456789/7236/3/GRID%20COMPUTING.p
df
Barrón Vidales, J. (2008, Noviembre). Departamento de Computacion del CINVESTAV. Retrieved
from http://www.cs.cinvestav.mx/TesisGraduados/2008/tesisJesusBarron.pdf
Blancarte, O. (2017, Febreo 20). OscarBlancarteBlog. Retrieved from Introduccion a los
WebSocket: https://www.oscarblancarteblog.com/2017/02/20/introduccion-a-lo-
websocket/
BOINC. (n.d.). Retrieved from Computar para la Ciencia: https://boinc.berkeley.edu/
117
Bonilla Palencia, E. (2012, Mayo 3). Universidad Carlos III de Madrid. Retrieved from
https://orff.uc3m.es/bitstream/handle/10016/15402/pfc_eduardo_bonilla_palencia_2012
.pdf?sequence=2
boxcryptor. (n.d.). boxcryptor. Retrieved 09 27, 2018, from
https://www.boxcryptor.com/es/encryption/
Camacho, J. D. (2013, 04). northware.mx. Retrieved from http://www.northware.mx/wp-
content/uploads/2013/04/Desarrollo-cascada-vs-Desarrollo-Agile.pdf
Cid, C. F. (2019). sans. Retrieved 02 23, 2019, from https://www.sans.org/reading-
room/whitepapers/vpns/cryptanalysis-rsa-survey-1006
Corrales Sanchez, H., Cilleruelo Rodriguez, C., & Cuevas Notario, A. (n.d.). Universidad de Alcalá.
Retrieved 09 29, 2018, from Universidad de Alcalá:
http://www3.uah.es/libretics/concurso2014/files2014/Trabajos/Criptografia%20y%20Met
odos%20de%20Cifrado.pdf
digicert. (n.d.). digicert. Retrieved 03 11, 2019, from
https://www.digicert.com/TimeTravel/math.htm
Española, R. A. (n.d.). REA. Retrieved 09 27, 2018, from http://dle.rae.es/?id=Ceu04o5
ESSAMA, S. (2013). Microsoft Solution Framework (MSF) for Agile Software Development. .
European Network of Excellence in Cryptology. (2008, 07 31). Retrieved 03 10, 2019, from
http://www.ecrypt.eu.org/ecrypt1/documents/D.SPA.28-1.1.pdf
Faget, A. (2018, Noviembre 14). What are Cryptographic Signatures? | Introduction to the Most
Common Schemes. Retrieved from coindoo: https://coindoo.com/what-are-cryptographic-
signatures-introduction-to-the-most-common-schemes/
Ferri-Benedetti, F. (2013, 07 23). softonic. Retrieved from
https://www.softonic.com/articulos/que-es-el-cifrado-encriptar
Gallego, A. J. (2016, 01). gitbook.com. Retrieved from
https://www.gitbook.com/book/ajgallego/laravel-5/details
GNU Operating System. (n.d.). Licenses. Retrieved from gnu:
https://www.gnu.org/licenses/licenses.html#GPL
Gonzalez Seco, J. A. (n.d.). Universidad de Murcia. Retrieved from El lenguaje de programacion C#:
http://dis.um.es/~bmoros/privado/bibliografia/LibroCsharp.pdf
Ibrahim Harba, E. S. (2017). Engineering, Technology & Applied Science Research. Retrieved from
https://etasr.com/index.php/ETASR/article/viewFile/1272/536
IGI-global. (n.d.). IGI-global. Retrieved 09 27, 2018, from https://www.igi-
global.com/dictionary/particle-swarm-optimization-algorithm-its/13449
Lenstra, A. (n.d.). Key Lengths. Retrieved from InfoScience:
https://infoscience.epfl.ch/record/164539/files/NPDF-32.pdf
118
Lizeth, Y. (2017). platzi. Retrieved 09 28, 2018, from https://platzi.com/blog/que-es-scrum-y-los-
roles-en-scrum/
Mariel, A. M. (2012). Grid Computing vs. Cloud Computing. Retrieved from revistasbolivianas:
http://www.revistasbolivianas.org.bo/scielo.php?pid=S1997-
40442012000200007&script=sci_arttext
Martinez de la Torre, J. (2016, Octubre 03). Repositori Universitat Jaume I. Retrieved 09 29, 2018,
from
http://repositori.uji.es/xmlui/bitstream/handle/10234/164666/TFG_Marti%CC%81nez%2
0De%20La%20Torre%2C%20Javier.pdf?sequence=1&isAllowed=y
medina, m. (2012, 11 26). http://isittla12.blogspot.com.co/. Retrieved from
http://isittla12.blogspot.com.co/2012/11/unidad-3planificacion-del-proyecto-de.html
Mendoza T, J. (n.d.). Universidad Politecnica Salesiana de Ecuador. Retrieved from
https://dspace.ups.edu.ec/bitstream/123456789/8185/1/Demostraci%C3%B3n%20de%20
cifrado%20sim%C3%A9trico%20y%20asim%C3%A9trico.pdf
Microsoft. (2018, 07 31). Docs Microsoft. Retrieved from https://docs.microsoft.com/en-
us/dotnet/core/about
N, R. P. (2012). Mathieu. IEEE. Lavallée: Software Team Process: a taxonomy. Proceedings of the
International Conference on Software and System Process. .
Networking and Emerging Optimization. (n.d.). Networking and Emerging Optimization. Retrieved
from http://neo.lcc.uma.es/evirtual/cdd/tutorial/presentacion/rsa.html
NodeJs. (n.d.). NodeJs. Retrieved from https://nodejs.org/es/about/
obs-edu. (n.d.). obs-edu. Retrieved 09 27, 2018, from https://www.obs-edu.com/int/blog-
investigacion/sistemas/seguridad-de-la-informacion-un-conocimiento-imprescindible
Orea, S. V. (2010, 08 23). Universidad Tecnológica de Izúcar de Matamoros. Retrieved from
http://www.utim.edu.mx/~svalero/docs/Antologia%20Seguridad%20de%20la%20Informa
cion.pdf
Pech May, F., Gomez Rodriguez, M., De la Cruz Diaz, L., & Lara Jeronimo, S. (n.d.). Cinvestav
Tamaulipas. Retrieved from
https://www.tamps.cinvestav.mx/~fpech/sd/files/paper001.pdf
Pousa, A. (2011, Diciembre). Universidad Nacional de la Plata. Retrieved 09 29, 2018, from
Facultad de Informatica: https://postgrado.info.unlp.edu.ar/wp-
content/uploads/2014/07/Pousa_Adrian.pdf
Proyectos Agiles. (n.d.). Retrieved from https://proyectosagiles.org/que-es-scrum/
React. (n.d.). React. Retrieved from https://reactjs.org/
Rioseco San Martín, C. (2016). Repositorio Digital Sistema de Bibliotecas Universidad del Bio-Bio.
Retrieved from
119
http://repobib.ubiobio.cl/jspui/bitstream/123456789/1800/1/Rioseco_San_Martin_Const
anza.pdf
Ritin Behl, G. S. (2015). semanticscholar. Retrieved 03 15, 2019, from
https://pdfs.semanticscholar.org/2b01/4f9a45f7534733402f4c32aedf11b4d682fe.pdf
Rivera Lopez, A. (2008, Enero 16). Universidad de las Americas Puebla. Retrieved from
http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/rivera_l_a/capitulo2.pdf
Sanchez, J. (2004). Cartagena99. Retrieved from MySQL Guia Rapida:
http://www.cartagena99.com/recursos/programacion/apuntes/mysql.pdf
Scrum Manager. (2016). Retrieved from http://scrummanager.net/files/scrum_manager.pdf
Seagate. (n.d.). Seagate. Retrieved from 128-Bit Versus 256-Bit AES Encryption:
http://www.axantum.com/AxCrypt/etc/seagate128vs256.pdf
Soriano, M. (n.d.). Seguridad en redes y seguridad de la información. Retrieved 09 28, 2018, from
improvet:
http://improvet.cvut.cz/project/download/C2ES/Seguridad_de_Red_e_Informacion.pdf
Statica, R. (n.d.). home. Retrieved 03 11, 2019, from http://home.etf.rs/~vm/cd1/papers/30.pdf
Tapia-Recillas, H. (2011). miscelaneamatematica. Retrieved 03 15, 2019, from
http://www.miscelaneamatematica.org/Misc53/5306.pdf
Thorsten Kleinjung, K. A. (2010, 02 28). eprint. Retrieved 03 11, 2019, from
https://eprint.iacr.org/2010/006.pdf
Vargas, J. A., Garcia, L., Martinez, S., Chavez, L., & Muñoz, D. (n.d.). Tecnologico Nacional de
Mexico. Retrieved 09 29, 2018, from
http://www.itvictoria.edu.mx/personal/art_investigacion/AES_paralelo_2010.pdf
vmware. (n.d.). vmware. Retrieved from https://www.vmware.com/co/products/player/faqs.html
Zlatko Knezevic, P. C. (2016, Abril). msdn Microsoft. Retrieved from .NET se convierte en
multiplataforma con .NET Core: https://msdn.microsoft.com/es-
es/magazine/mt694084.aspx