2020 Tesis Miguel Fernando Martinez Laguado
2020 Tesis Miguel Fernando Martinez Laguado
___________________________________
___________________________________
___________________________________
___________________________________
__________________________________
Firma del jurado
__________________________________
Firma del Jurado
DEDICATORIA
Contenido
RESUMEN EJECUTIVO 11
INTRODUCCIÓN 12
1 PLANTEAMIENTO DEL PROBLEMA 13
1.1 ÁRBOL DE PROBLEMA ...................................................................................... 15
2 JUSTIFICACIÓN 17
3 OBJETIVOS 19
3.1 OBJETIVO GENERAL ......................................................................................... 19
3.2 OBJETIVOS ESPECÍFICOS................................................................................ 19
4 ANTECEDENTES 20
5 MARCO REFERENCIAL 21
5.1 MARCO CONCEPTUAL ...................................................................................... 21
5.2 MARCO TEORICO .............................................................................................. 22
5.2.1 AES256 ........................................................................................................ 22
5.2.2 3DES ............................................................................................................ 24
5.2.3 ANDROID STUDIO ...................................................................................... 24
6 ESTADO DEL ARTE 25
7 METODOLOGIA 28
8 DESARROLLO DEL TRABAJO DE GRADO 29
8.1 ALGORITMOS DE CIFRADO SIMETRICO PARA APLICACIONES MOVILES ... 29
8.2 DISEÑO DE LA APLICACIÓN ............................................................................. 29
8.3 ANÁLISIS DE REQUERIMIENTOS ..................................................................... 30
8.3.1 Definición de requerimientos ........................................................................ 30
8.3.2 Lenguaje de Programación ........................................................................... 32
8.3.3 Paradigma .................................................................................................... 32
8.4 DISEÑO............................................................................................................... 33
8.4.1 Usuario de la Aplicación ............................................................................... 33
8.4.2 Casos de uso ............................................................................................... 34
8.4.3 Descripción de los casos de uso .................................................................. 36
8.4.4 Diagrama de Secuencia ............................................................................... 42
8.4.5 Diagrama de Actividades .............................................................................. 43
8.5 DESARROLLO .................................................................................................... 44
8.5.1 Diseño de Layouts ........................................................................................ 44
8.5.2 Arquitectura .................................................................................................. 46
8.5.3 Descripción de Paquetes .............................................................................. 48
8.5.4 Clases .......................................................................................................... 49
8.5.5 Carpeta UI .................................................................................................... 55
8.5.6 Carpeta Crapp .............................................................................................. 57
8.5.7 Función para corromper archivo ................................................................... 58
8.5.8 Clase AsynTask............................................................................................ 61
8.5.9 Carpeta Herramientas .................................................................................. 63
8.5.10 Carpeta res................................................................................................... 64
8.5.11 Validación del funcionamiento ...................................................................... 67
8.6 VALIDACIÓN DE FUNCIONALIDADES .............................................................. 68
8.6.1 Validación de las Funcionalidades del Prototipo ........................................... 68
8.6.2 Logs del sistema........................................................................................... 77
CONCLUSIONES 78
RECOMENDACIONES 79
REFERENCIAS 80
9 ANEXOS 83
9.1 PRIMERA VERSION DEL PROTOTIPO.............................................................. 83
9.2 MANUAL USUARIO DE LA APLICACIÓN CRAPP .............................................. 83
9.3 PRIMERA VERSION DEL PROTOTIPO.............................................................. 84
1 PANTALLAS DEL PRIMER PROTOTIPO DE APLICACIÓN CrApp 84
2 DISEÑO INICIAL DE ARQUITECTURA PRIMER PROTOTIPO DE
APLICACIÓN CrApp 86
1 OBJETIVO 2
2 INICIANDO CON CRAPP 2
2.1 USANDO CRAPP ................................................................................................... 2
2.1.1 Cifrar un archivo ........................................................................................... 4
2.1.2 Descifrar un archivo ...................................................................................... 7
2.1.3 Cifrar / Descifrar un texto ........................................................................... 10
2.1.4 Sacar un hash de un texto ............................................................................ 12
LISTADO DE FIGURAS
Objetivo: Desarrollar una aplicación móvil nativa Android para el cifrado de archivos
de información en dispositivos móviles aplicando algoritmos criptográficos simétricos
PALABRAS CLAVE.
Criptografía, AES 256, 3DES, encriptar, desencriptar, confidencialidad
11
INTRODUCCIÓN
12
1 PLANTEAMIENTO DEL PROBLEMA
Las amenazas para la seguridad de los dispositivos móviles van en aumento, para
2014, Kaspersky Lab detectó casi 3,5 millones de componentes de malware en más
de un millón de dispositivos móviles de usuarios, estos datos son corroborados por
las cifras de nuevos malware presentadas por el informe de IT Web, donde
evidencia que cada día se tiene alrededor de 230.000 nuevos malwares que en su
mayoría tienen como objetivo dispositivos móviles.
Generalmente las aplicaciones móviles son la causa de la filtración involuntaria de
datos, a los cuales sus propietarios les otorgan permisos totales por
desconocimiento sin tener en cuenta los protocolos mínimos de seguridad de los
mimos, confiándose en el argumento de que al ser apps disponibles en las tiendas
oficiales no traen consigo riesgo alguno y que se ejecutaran según su descripción,
sin embargo estas pueden enviar información personal y sensible a un servidor
remoto, desde el cual diferentes amenazas o cibercriminales pueden extraerla.
Igualmente, esta filtración de datos también puede ser posible a través de
aplicaciones móviles con firma de empresas hostiles. En este caso, el malware móvil
utiliza un código de distribución nativo en sistemas operativos móviles populares,
como iOS y Android, para difundir datos valiosos en redes corporativas sin levantar
sospechas.1 (kaspersky, 2019)
Figura 1. Detecciones de Malware para Android en 2019
13
para principios de 2019 reportaron que el 95 % de los dispositivos Android pueden
ser pirateados usando un simple mensaje de texto. En este mismo sentido Apple
tampoco es invulnerable, ya que, para septiembre, se evidencio que cuarenta de
sus aplicaciones estaban infectadas con XcodeGhost, teniendo que ser retiradas de
la tienda oficial, el XcodeGhost es un tipo de malware que convierte los dispositivos
Apple en una botnet que se implementa como una capa sobre las aplicaciones
legítimas lo que dificulta su detección. (kaspersky, 2019)
Esta tendencia de inseguridad de los dispositivos móviles sumada a la larga lista de
vulnerabilidades del sistema operativo Android hace que la información allí
contenida tenga un gran riesgo de verse comprometida a un ataque informático al
ser accedida por personas ajenas al dispositivo, por este motivo se debe hacer uso
de herramientas criptográficas que permitan cifrar la información y así garantizar su
confidencialidad, integridad y disponibilidad. (Instituto Nacional de Ciberseguridad
España, 2017)
Figura 2. Países de Latinoamérica con mayor cantidad de detecciones de Malware para Android en
2019
14
El siguiente gráfico evidencia el nivel de criticidad del sistema operativo Android en
la última década.
15
Figura 4. Árbol de problema, información en dispositivos móviles
16
2 JUSTIFICACIÓN
17
Figura 5. Cuota de mercado del sistema operativo en todo el mundo.
18
3 OBJETIVOS
20
5 MARCO REFERENCIAL
21
5.2 MARCO TEORICO
El marco teórico de esta investigación se enfocó en la investigación del
funcionamiento de el algoritmo de criptografía simétrica AES256 y 3DES y Android
Studio y Java
5.2.1 AES256
AES es un algoritmo de clave simétrica, esto quiere decir que se utiliza la misma
clave para cifrar y descifrar, esta clave puede tener un tamaño de 128,192 y 256
bits, se cifra por medio de bloques, cada bloque tiene un tamaño de 128 bits, el
número de rondas que este realiza depende del tamaño de la clave, para una clave
de 256 bits realiza 14 rondas.
22
Figura 7. Funcionamiento de cifrado AES.
23
5.2.2 3DES
Este algoritmo es la evolución de DES, utiliza una clave simétrica que cifra la
información por bloques de 64 bits y 3 claves de 56 bits en cada ronda y en un
orden especifico, además de que puede trabajar con claves más extensas
Figura 8. Cifrado 3DES con claves de 56bits.
24
6 ESTADO DEL ARTE
ACM: 14/09/2019
25
A continuación, se presenta una síntesis de los documentos consultados para
realizar el estado del arte de la propuesta de proyecto.
Diseño e implementación de una aplicación de cifrado de tráfico para una red
móvil usando el algoritmo AES-GCM: En este documento presenta un modelo
de cifrado del tráfico generado por nuestros dispositivos móviles además
muestra los posibles ataques a los que puede ser sometido, varios tipos de
estándares de comunicación móvil como LTE, en este podemos ver también la
implementación del algoritmo AES, y su rendimiento con paquetes de datos de
varios tamaños, con resultados que pueden ser utilizados para este fin.
(Espinosa, 2018).
Des/Encriptación en la informática forense: En este documento se hace un
estudio de la criptográfica, tipos de algoritmos simétricos y no simétricos,
explican cuales formatos de ficheros pueden ser candidatos para cifrar ya que
contienen información sensible, se muestra como la criptografía cumple muy
bien con su fin al hacer la información solo accesible a quien es dueño de ella y
técnicas para hacer el acceso a esta más seguro y evitar la fuga de información.
(Plata Cheje Ruben Wismark, 2009).
Aplicación anti espionaje mediante el cifrado de llamadas en dispositivos móviles
con sistema Android: En este documento se presenta una investigación que
soluciono un problema de seguridad asociado con las llamadas telefónicas
realizadas desde dispositivos móviles, se dan a conocer algoritmos de cifrado
de voz que se implementan en la actualidad pero que son controlados por las
compañías de telefonía móvil, como resultado se obtiene una aplicación Android
que implementa un algoritmo de cifrado seguro para realizar llamadas
telefónicas. (Hernández & Plata Morales, 2014).
Evaluación de Algoritmos Criptográficos para mejorar la Seguridad en la
Comunicación y Almacenamiento de la Información: Este documento nos
muestra una problemática que nace con el acceso de terceros a nuestra
información como gobiernos o grandes empresas, esto se debe en gran medida
a la poca implementación de métodos de seguridad en la información, para este
fin se utilizando algoritmos criptográficos seguros como AES, IDEA, RC5 y ANN
dando como resultado una mayor protección entre la comunicación y la
información, dando así una solución a la problemática. (Zanabria, 2018).
26
como Babel y su funcionamiento entre otras herramientas, también nos muestra
herramientas para proteger todas las conexión salientes de nuestros dispositivos
móviles o cuando ingresamos a alguna red social, tal como Orbot que se encarga
de cifrar y descentralizar el tráfico entre el dispositivo móvil y los servidores en
que esta alojada la red social para hacer su rastreo y fuga de información más
difícil, la comparativa es clara y como resultado nos muestra herramientas que
cumplen a cabalidad con su objetivo.
27
7 METODOLOGIA
Búsqueda de
Reconocimiento
Información
de debilidades
actualizada
Testeo y
Diseño de
verificación de
Aplicación
funcionamiento
Implementación
Tecnologica
Fuente Autor
28
8 DESARROLLO DEL TRABAJO DE GRADO
29
El proceso de construcción comienza con la etapa de búsqueda de información, la
cual permite sentar las bases necesarias para el modelado y diseño de la app, así
como su implementación tecnológica; una vez construido el primer prototipo donde
se implementaron las rutinas de la primera función de cifrado requerida, se hizo
un testeo de funcionamiento para evaluar el rendimiento del algoritmo de cifrado y
la validación preliminar de requisitos para encontrar las posibles fallas y
correlacionar el desarrollo en un proceso de mejora continua; Las subsiguientes
Interacciones implican la evolución de la app con cada prototipo que comienza en
el inmediatamente anterior para redefinir requisitos de ser necesario y hacer un
nuevo análisis rediseñando los algoritmos, y la codificación de la siguiente versión
y hacer las pruebas de validación pertinentes.
✓ Ingresar a la aplicación
✓ Administrar menú
✓ Seleccionar opciones de cifrado
✓ Visualizar archivo plano
✓ Cifrar con algoritmo AES
✓ Cifrar con algoritmo 3DES
✓ Destruir archivo plano
✓ Guardar Archivo cifrado
✓ Localizar archivo cifrado
✓ Descifrar con algoritmo AES
✓ Descifrar con algoritmo 3DES
✓ Salir de aplicación
Fuente: Autor
30
Tabla 4. Requerimientos Funcionales y no Funcionales
REQUERIMIENTOS FUNCIONALES REQUERIMIENTOS NO FUNCIONALES
La aplicación operará para un único perfil La aplicación contará una interfaz de
de usuario. usuario amigable y fácil de usar
La aplicación debe soportar diferentes La aplicación contará con un manual de
tipos de archivos para ser encriptados soporte.
La aplicación requerirá de un dispositivo
La aplicación permitirá al usuario realizar la
móvil con sistema operativo Android para
gestión de menús de esta.
su despliegue
La aplicación será usada por cualquier
La aplicación permitirá la opción de buscar
usuario que la instale sin necesidad de
el archivo que desea encriptar al usuario.
iniciar sesión.
La aplicación mostrará las dos opciones de La aplicación debe soportar el uso de
cifrado simétrico AES256 y 3DES al cifrado AES256 o 3DES sin importar el tipo
usuario. de datos.
La aplicación mostrara la opción de ubicar El sistema debe correr en diferentes tipos
el archivo encriptado. de dispositivos móviles.
La aplicación corromperá el archivo plano
La aplicación será actualizable.
después de ser encriptado.
La aplicación permitirá la opción de
mostrar el archivo que se ha
desencriptado al usuario.
Fuente: Autor
Fuente: Autor
31
Figura 11. Configuración de Compilación
Fuente: Autor
32
en sus interacciones, además su estructura por clases, métodos y eventos y con
base en herencia, abstracción, y polimorfismo, lo que facilita la reutilización del
código.
La POO provee no solo una buena capacidad en el comportamiento del prototipo
en lo previsto en la especificación de requisitos, sino en el comportamiento por
fuera de los mismos.
8.4 DISEÑO
33
A continuación, se muestran los casos de uso que se generaron para la aplicación
y en los cuales se detallan las funcionalidades que realiza el usuario sobre la
aplicación.
34
Fuente: Autor
35
8.4.3 Descripción de los casos de uso
A continuación, se describen los casos de uso para el actor dentro de la aplicación
y su relación con los procesos que se desean ejecutar.
Tabla 6. Descripción caso de uso ingresar
ÍTEM DEFINICIÓN
Nombre Ingresar
El actor ingresa como usuario general a la aplicación, el
Descripción sistema muestra el home de inicio y un botón de ingreso,
para que el usuario de clic e ingrese al sistema.
Actor Usuario
El actor debe haber instalado la aplicación móvil y asignarle
Precondiciones
los permisos respectivos.
Quién lo inicia Usuario.
Quién lo finaliza La aplicación
Paso Acción
1 Ingresar a la aplicación dando clic al icono de esta
La app abre una pantalla de bienvenida con la opción de
2
ingresar mediante un botón
3 El usuario da clic al botón de ingreso.
La aplicación permite el ingreso al usuario, redireccionando
Secuencia al menú de opciones donde se ubica el inicio, las opciones
4
Normal de cifrado / descifrado, las herramientas y la descripción de
la aplicación.
El usuario selecciona la opción de ingreso a la pantalla de
5
cifrado / descifrado.
La aplicación redirecciona al usuario a la pantalla de cifrado
/ descifrado donde están las opciones de seleccionar
6 archivo, el tipo de algoritmo simétrico AES256 o 3DES, las
opciones de generar copiar o pegar clave y los botones de
cifrado y descifrado
Post-condición Muestra la pantalla de cifrado / descifrado
Paso Acción
El usuario no da clic al botón ingresar.
1
Excepciones E.1 La aplicación se queda en modo de espera.
El usuario abandona la aplicación
2
E.2 La aplicación se cierra
Fuente: Autor
36
Quién lo inicia Usuario.
Quién lo finaliza Usuario.
Paso Acción
1 Ingresar a la pantalla de cifrado / descifrado
La aplicación muestra a la pantalla de cifrado / descifrado
donde están las opciones de seleccionar archivo, el tipo de
2 algoritmo simétrico AES256 o 3DES, las opciones de
generar copiar o pegar clave y los botones de cifrado y
descifrado
3 El usuario selecciona el botón selección de archivo
La aplicación lo lleva al área de almacenamiento de
4
archivos y documentos
5 El usuario selecciona el archivo de su preferencia
6 El sistema lo regresa a la pantalla de cifrado / descifrado
Secuencia 7 El usuario selecciona el tipo de algoritmo
Normal La aplicación le hace la confirmación del algoritmo
8
seleccionado mediante una ventana flotante
9 El usuario selecciona la opción de generar una clave
10 La aplicación habilita el teclado
11 El usuario escribe la clave y pulsa la opción enviar
12 El usuario selecciona el botón de cifrar
La aplicación muestra una ventana flotante con un mensaje
13 de confirmación, donde además presenta la opción de
corromper el archivo original mediante un checkbox
El usuario acepta el proceso sin seleccionar el checkbox y
14
dando clic a cifrar
La aplicación ejecuta el proceso y muestra una ventana
15 flotante de confirmación del cifrado del archivo, junto a la
opción cerrar
16 El usuario finaliza la acción con el botón cerrar
El archivo original en texto plano ha sido cifrado
Post-condición
exitosamente
Paso Acción
El usuario no ingresa la clave
1 La aplicación se queda en modo espera y no ejecuta
Excepciones E.1
ninguna acción
El usuario pulsa la tecla atrás del dispositivo
2 La aplicación termina el proceso y no ejecuta el
E.2
cifrado
Fuente: Autor
37
El actor debe haber ingresado a la aplicación y estar en la
Precondiciones
pantalla de cifrado / descifrado
Quién lo inicia Usuario.
Quién lo finaliza Usuario.
Paso Acción
1 Ingresar a la pantalla de cifrado / descifrado
La aplicación muestra a la pantalla de cifrado / descifrado
donde están las opciones de seleccionar archivo, el tipo de
2 algoritmo simétrico AES256 o 3DES, las opciones de
generar copiar o pegar clave y los botones de cifrado y
descifrado
3 El usuario selecciona el botón selección de archivo
La aplicación lo lleva al área de almacenamiento de
4
archivos y documentos
5 El usuario selecciona el archivo de su preferencia
6 El sistema lo regresa a la pantalla de cifrado / descifrado
Secuencia 7 El usuario selecciona el tipo de algoritmo
Normal La aplicación le hace la confirmación del algoritmo
8
seleccionado mediante una ventana flotante
9 El usuario selecciona la opción de generar una clave
10 La aplicación habilita el teclado
11 El usuario escribe la clave y pulsa la opción enviar
12 El usuario selecciona el botón de cifrar
La aplicación muestra una ventana flotante con un mensaje
13 de confirmación, donde además presenta la opción de
corromper el archivo original mediante un checkbox
El usuario acepta el proceso seleccionando el checkbox y
14
dando clic a cifrar
La aplicación ejecuta el proceso y muestra una ventana
15 flotante de confirmación del cifrado y corrompimiento del
archivo, junto a la opción cerrar
16 El usuario finaliza la acción con el botón cerrar
El archivo original en texto plano ha sido cifrado y corrupto
Post-condición
exitosamente
Paso Acción
El usuario no ingresa la clave
1 La aplicación se queda en modo espera y no ejecuta
E.1
ninguna acción.
El usuario pulsa la tecla atrás del dispositivo
2 La aplicación termina el proceso y no ejecuta el
E.2
Excepciones cifrado
El usuario no selecciona el checkbox para corromper el
archivo original
La aplicación ejecuta el proceso de cifrado y
3
muestra una ventana flotante de confirmación del
E.3
cifrado del archivo, sin hacerlo corrupto, junto a la
opción cerrar
Fuente: Autor
38
Tabla 9. Descripción caso de uso descifrar archivos
ÍTEM DEFINICIÓN
Nombre Descifrar archivos
El actor ingresa a la pantalla de cifrado / descifrado
seleccionar el archivo a desencriptar, el algoritmo AES256
Descripción
o 3DES con el cual está cifrado, y escribe o pega la clave
para su ejecución
Actor Usuario
El actor debe haber ingresado a la aplicación y estar en la
Precondiciones
pantalla de cifrado / descifrado
Quién lo inicia Usuario.
Quién lo finaliza Usuario.
Paso Acción
1 Ingresar a la pantalla de cifrado / descifrado
La aplicación muestra a la pantalla de cifrado / descifrado
donde están las opciones de seleccionar archivo, el tipo de
2 algoritmo simétrico AES256 o 3DES, las opciones de
generar copiar o pegar clave y los botones de cifrado y
descifrado.
3 El usuario selecciona el botón selección de archivo.
La aplicación lo lleva al área de almacenamiento donde
4
crapp guarda los archivos cifrados.
El usuario selecciona el archivo que desea descifrar según
5
su preferencia.
Secuencia
6 El sistema lo regresa a la pantalla de cifrado / descifrado.
Normal
El usuario selecciona el tipo de algoritmo con el cual esta
7
cifrado el archivo.
8 El usuario selecciona la opción de escribir una clave.
9 La aplicación habilita el teclado.
10 El usuario escribe la clave y pulsa la opción enviar.
11 El usuario selecciona el botón de descifrar.
La aplicación muestra una ventana flotante con un mensaje
12 de advertencia, donde le pregunta si está seguro de realizar
la acción de cifrado con dos opciones cancelar y ok.
13 El usuario acepta el proceso dando clic en ok.
La aplicación ejecuta el proceso de descifrado y guarda el
14 archivo plano en la carpeta descifrados de crApp y finaliza
el proceso.
El archivo descifrado se guarda en texto plano
Post-condición
exitosamente.
Paso Acción
El usuario no ingresa la clave
1 La aplicación se queda en modo espera y no ejecuta
E.1
Excepciones ninguna acción.
El usuario pulsa la tecla cancelar.
2 La aplicación termina el proceso y no ejecuta el
E.2
descifrado.
Fuente: Autor
39
Tabla 10. Descripción caso de uso cifrar/descifrar de texto
ÍTEM DEFINICIÓN
Nombre Cifrar / Descifrar textos
El actor ingresa a la pantalla de herramientas y selecciona
Descripción la opción de cifrar texto cesar o xor, y hace el cifrado y
descifrado de un texto con opción de copiar
Actor Usuario
El actor debe haber ingresado a la aplicación y estar en la
Precondiciones
pantalla de herramientas
Quién lo inicia Usuario.
Quién lo finaliza Usuario.
Paso Acción
1 Ingresar a la pantalla de herramientas
La aplicación muestra a la pantalla de herramientas donde
están las opciones de escribir texto, el tipo de cifrado Cesar
2
o XOR, y las opciones de generar copiar o pegar texto y los
Secuencia botones de cifrado, descifrado y copiar resultado
Normal 3 El usuario selecciona el tipo de cifrado
4 El usuario escribe el texto a cifrar
5 El usuario selecciona la opción de cifrar descifrar
El sistema ejecuta el proceso de cifrado / descifrado del
6
texto
7 El usuario selecciona la opción de copiar el texto cifrado
8 El usuario cierra la pantalla de herramientas
Post-condición El texto plano ha sido cifrado o descifrado exitosamente
Paso Acción
El usuario no selecciona ninguna opción
1 La aplicación se queda en modo espera y no ejecuta
Excepciones E.1
ninguna acción
El usuario da el botón de atrás
2 La aplicación termina el proceso y no ejecuta el
E.2
cifrado
Fuente: Autor
40
La aplicación muestra a la pantalla de herramientas donde
está la opción de escribir texto, las opciones de algoritmo
2
de hash md5 y sha1, y los botones con las opciones de
generar y copiar resultado
3 El usuario selecciona el algoritmo de hash
4 El usuario escribe el texto ala cual le desea sacar el hash
5 El usuario selecciona la opción de generar
El sistema ejecuta el proceso de hash seleccionado del
6
texto escrito
El usuario selecciona la opción de copiar el hash del texto
7
generado
8 El usuario cierra la pantalla de herramientas
Post-condición El hash del texto plano ha sido generado exitosamente
Paso Acción
El usuario no selecciona ninguna opción
1 La aplicación se queda en modo espera y no ejecuta
Excepciones E.1
ninguna acción
El usuario da el botón de atrás
2 La aplicación termina el proceso y no ejecuta la
E.2
función hash
Fuente: Autor
41
Paso Acción
El usuario no selecciona opción de donación
1 La aplicación se queda en modo espera y no ejecuta
Excepciones E.1
ninguna acción
El usuario da el botón de atrás
2 La aplicación termina el proceso y no ejecuta el
E.2
proceso de hacer donación
Fuente: Autor
Fuente: Autor
42
8.4.5 Diagrama de Actividades
Para el diseño de las funcionalidades de cifrado y descifrado de la aplicación genero un diagrama de actividades para
definir la interacción de la aplicación al ejecutar los procesos de cifrado y descifrado.
Fuente: Autor
8.5 DESARROLLO
Una vez se realizó el diseño, se inició la fase de desarrollo, cabe anotar que el
diseño inicial fue ajustándose, de acuerdo con los nuevos requerimientos, y a los
cambios que se dieron en la etapa de desarrollo, aunque estos cambios no fueron
relevantes, a continuación, se hace la descripción de la estructura lógica del
desarrollo de la aplicación.
8.5.1 Diseño de Layouts
Los layouts definen la forma como la aplicación va a mostrar la interfaz gráfica
principal, el menú de opciones y cada una de las pantallas de la aplicación donde
se despliegan las opciones de cifrado y como se visualizarían en la aplicación.
La aplicación cuenta en total con cinco vistas principales; la vista principal o home
donde se encuentra el botón de ingreso a la aplicación, la vista de menú de
opciones, la pantalla de cifrado/descifrado donde se seleccionan los algoritmos
AES y 3DES, la vista de herramientas donde selecciona un texto a cifrar y el tipo
de cifrado cesar y la función hash en MD5 o SHA, y la vista que muestra la
información de la app y un botón de donaciones.
En la etapa de diseño se define el estilo y la forma con la que se presenta la
aplicación, teniendo en cuenta factores como colores, temas, imágenes, funciones
principales y el tipo de tipografía, siempre pensando en la experiencia de usuario.
En la se muestran las pantallas de diseño de la aplicación, las cuales se basaron
en un diseño preliminar previamente establecido, y que permitió analizar las
funcionalidades de la aplicación.
Figura 15. Pantallas de Inicio
Fuente: Autor
Figura 16. Menú de Opciones
Fuente: Autor
Fuente: Autor
45
Figura 18. Pantalla de Descripción y Donación Figura 19. Pantalla de Herramientas
Fuente: Autor
46
Figura 20. Arquitectura de la Aplicación
Fuente: Autor
8.5.3 Descripción de Paquetes
El archivo con el nombre de AndroidManifest.xml se ubica en la raíz del proyecto y
describe la información esencial de la aplicación para las herramientas de creación
de Android Studio y el sistema operativo, todas las aplicaciones móviles la deben
contener con el mismo nombre.
La carpeta Java contiene todo el código fuente de la aplicación y clases auxiliares
entre otras. Inicialmente, Android Studio crea únicamente el código básico del
activity principal de la aplicación la cual por defecto siempre se encuentra bajo la
estructura del paquete java con el nombre de MainActivity.
En la carpeta layout se encuentran los archivos de diseño de todas las actividades,
para el caso de esta app se cuenta con el activiy_my.xml, el cual representa el
diseño de la interfaz del activity principal. En esta se establecen todos los widgets
que se van a agregar en el activity.
El /app/build.gradle, contiene la versión del SDK necesaria para la compilación del
proyecto, que equivale a la mínima versión de Android que soporta la aplicación,
referencias a las librerías externas utilizadas.
Figura 21. Descripción de Paquetes
Fuente: Autor
48
8.5.4 Clases
En la carpeta principal de java se crea el paquete com.miguelmartinez.crapp,
donde se definen las clases principales que definen las funciones: Cifrado,
FilePath, Inicio, obtenerDirectorio y el MainActivity. (Ver Figura 22).
Figura 22. Clases Principales
Fuente: Autor
Fuente: Autor
49
En la Figura 24, se muestran los métodos usados para ejecutar el cifrado y
descifrado simétrico con AES 256, que es uno de los algoritmos bases de la
aplicación y que es el algoritmo de cifrado simétrico más fuerte en la actualidad.
Fuente: Autor
50
En la Figura 25, se muestra se muestra el método usado para la generación de
claves aleatorias necesarias en el cifrado simétrico de los archivos.
Figura 25. Método GenerarClave ()
Fuente: Autor
51
Fuente: Autor
En la Figura 27, se muestra se muestran los métodos usados para hacer el cifrado
y descifrado de texto con el algoritmo de cifrado clásico cesar.
Figura 27. Métodos Cifrar_Cesar () Descifrar_Cesar ()
Fuente: Autor
52
Figura 28. Método Cifrado_Descifrado_XOR ()
Fuente: Autor
En la Figura 29, se muestran el método usado para ejecutar la función hash sobre
el texto usando los algoritmos MD5 y SHA256.
Figura 29. Método Funcion Hash
Fuente: Autor
53
8.5.4.2 Clases FilePath y obtenerDirectorio
Las clases FilePath y obtenerDirectorio son muy importantes porque son las que
permiten gestionar los archivos y obtener la ruta de los archivos que se desea cifrar,
este proceso es bastante complejo y dispendioso debido a la manera como el
sistema operativo Android gestiona los permisos de sus archivos y aplicaciones.
Fuente: Autor
54
8.5.4.1 MainActivity
La clase MainActivity es la encargada de enlaza los botones del menú de
navegación en las diferentes pantallas de la aplicación por medio de los activitys.
Fuente: Autor
8.5.5 Carpeta UI
La carpeta UI es donde se tienen las clases gráficas, y los Fragment de cifrar
CifrarFragment y CifrarViewModel.
55
8.5.5.1 CifrarFragment
Fuente: Autor
56
Figura 33. Layout Fragment_cifrar.xml
Fuente: Autor
8.5.6 Carpeta Crapp
La carpeta crapp contiene los Fragment CrappFragment CrappViewModel, donde
se describe la aplicación y se tiene una opción de donaciones.
8.5.6.1 CrappFragment
CrappFragment extiende de Fragment y es donde se pueden hacer donaciones
para el proyecto mediante paypal (Ver Figura 34). Esta clase está asociada con el
layout Fragment_crapp.xml. (Ver Figura 35)
Figura 34. Clase CrappFragment
Fuente: Autor
57
Figura 35. Layout Fragment_crapp.xml
Fuente: Autor
58
Figura 36. Metodo corromperArchivo ()
Fuente: Autor
Fuente: Autor
59
La función de la Figura 38 es mediante la cual se logran obtener los bytes del
archivo original.
Figura 38. Función para obtener Bytes
Fuente: Autor
El paso siguiente es el de unir los bytes del archivo original y los que han sido
agregados por el algoritmo, los cuales se escriben dentro del archivo mediante el
método writeBytes.
Figura 39. Método writeBytes
Fuente: Autor
60
8.5.8 Clase AsynTask
Debido a la forma como Android asigna sus recursos de procesamiento, se hace
necesario que los algoritmos de cifrado, descifrado y corrupción de archivos se
lleve a cabo en un hilo de procesamiento aparte dedicado. Esta tarea en java se
puede crear mediante las clases AsyncTask_Encriptar y AsyncTask_Desencriptar
el cual extiende de AsynTask. Con el fin de crear una tarea asíncrona, que por un
lado haga la tarea de cifrado y por otra parte se pueda mantener la parte grafica
funcionando sin problemas y obtener y actualizarla en base al resultado del
proceso asíncrono, el cual cuenta con 3 partes. (Ver Figura 40)
Figura 40. Clase AsyncTask
Fuente: Autor
Fuente: Autor
61
El metodo preExecute se ejecuta antes de empezar la tarea, en el caso de encriptar
se oculta el dialog de confirmación y se muestra el de carga para iniciar el proceso,
para por ultimo ejecutar DoInBackground
Figura 42 Método doInBackgroun
Fuente: Autor
Este método se encarga de crear un hilo de procesamiento con las funciones a
ejecutar dentro de el, como se ve en este caso, se cifra con el algoritmo
seleccionado y se corrompe el archivo, por últimos tenemos la función
OnPOSTExecute, que se ejecuta apenas la funciona DoinBAckground allá
termiando su tarea. Esta muestra una alerta con la información del archivo y si se
completó la tarea, además de la carpeta donde se guardó.
Figura 43 Método onPostExecute
Fuente: Autor
62
8.5.8.1 Método onActivityResult
El método onActivityResult se encarga de proporcionar una dirección del archivo
en base al selector de archivos que el usuario maneja. (Ver Figura 44)
Figura 44 Método onActivityResult
Fuente: Autor
8.5.9 Carpeta Herramientas
La carpeta herramientas contiene los Fragment ToolsFragment ToolsViewModel,
donde se describe la aplicación y se tiene una opción de donaciones.
8.5.9.1 ToolsFragment
ToolsFragment extiende de Fragment y es donde se hace todo el proceso de
cifrado y hash de los textos usando cesar y XOR y MD5 y SHA respectivamente,
también se escribe el texto (Ver Figura 45). Esta clase está asociada con el layout
Fragment_herramientas.xml. (Ver Figura 46)
63
Figura 45. Clase ToolsFragment
Fuente: Autor
Fuente: Autor
8.5.10 Carpeta res
La carpeta res contiene las carpetas de drawable y layout entre otras donde se
guardan las imágenes que se van a usar y los layout activitys donde se diseña la
aplicación.
8.5.10.1 Drawable
Las imágenes usadas se almacenan directamente en la carpeta drawable para ser
usadas por la aplicación.
64
Figura 47. Carpeta drawable
Fuente: Autor
8.5.10.2 Layouts
En esta carpeta layout se almacenan los activitys que corresponden a las diferentes
pantallas de la aplicación.
Figura 48. Carpeta layout
Fuente: Autor
65
8.5.10.3 Activitys
En los Activitys se encuentran las actividades principales del proyecto y donde se
cargan las diferentes vistas de la aplicación, es decir donde asocian los layouts de
diseño de la interfaz.
8.5.10.3.1 activity_inicio.xml
El activity de inicio define la interfaz principal de la aplicación y dese la cual el
usuario podrá ingresar a la aplicación, en él se definió un botón para ingresar.
8.5.10.3.2 activity_main.xml
El activity main define la interfaz donde se despliega el menú de opciones de la
aplicación en ellos se definen las opciones de ingreso a las pantallas de
cifrado/descifrado, herramientas, donaciones e inicio, en el se define un nav de
navegación para seleccionar las diferentes opciones.
8.5.10.3.3 dialog_barra.xml
Este define un mensaje de advertencia mediante un splash de no manipular ni
minimizar la aplicación, mientras se ejecuta el proceso con el fin de no provocar
fallos en el proceso.
8.5.10.3.4 dialog_cifrados.xml
Este define un mensaje de confirmación de la acción de cifrado exitoso y de
guardado del archivo cifrado en el dispositivo.
8.5.10.3.5 dialog_confirmar.xml
Este define un mensaje de confirmación por parte del usuario para aprobar la
acción de cifrado mostrando un checkbox para corromper el archivo original.
8.5.10.3.6 Fragment_cifrar.xml
Este define la pantalla cifrar/descifrar donde el usuario podrá interactuar con la
aplicación con los botones que permiten el desarrollo de todas las funcionalidades
de la aplicación en cuanto a cifrar y descifrar archivo.
8.5.10.3.7 Fragment_crapp.xml
Este define la pantalla donaciones y es donde el usuario podrá hacer donaciones
al desarrollador para motivar nuevas versiones y actualizaciones.
8.5.10.3.8 Fragment_herramientas.xml
Este define la pantalla herramientas donde el usuario podrá interactuar con las
herramientas adicionales de la aplicación donde están los campos de texto para
ingresar el texto a cifrar o descifrar u obtener su hash, junto a los botones que
permiten estos procesos sobre un texto determinado por el usuario.
8.5.10.3.9 Nav_header.xml
Este define un nav con el header donde se definen con algunas recomendaciones
de seguridad y consejos buscando que los usuarios se culturicen a nivel de la
seguridad de la información y la criptografía simétrica.
66
8.5.11 Validación del funcionamiento
Se realiza la revisión de funcionamiento de la aplicación de conformidad al diseño
validando que la aplicación y cada una de sus funcionalidades cumplen
correctamente las especificaciones de diseño, y se observa que la aplicación
funciona de manera óptima y no tiene problemas en su ejecución. La validación de
la aplicación permite comprobar que lo que se ha especificado cumple con las
acciones que puede ejecutar un usuario.
Tabla 13. CheckList de Validación de Funcionalidades de la App
ACCIÓN RESULTADO
67
8.6 VALIDACIÓN DE FUNCIONALIDADES
Una vez se realizó el desarrollo del prototipo final, se realiza la validación de las
funcionalidades de conformidad con el diseño. A continuación, se hace la
descripción de la validación realizada.
8.6.1 Validación de las Funcionalidades del Prototipo
Para esta validación se utilizó un dispositivo móvil marca Xiaomi Redmi Note 8 con
un procesador Snapdragon 665 de ocho núcleos, con de 4GB de memoria RAM y
64GB de almacenamiento y sistema operativo Android 9 Pie. Lo primero que se
valido fue la instalación de la aplicación CrApp.
Fuente: Autor
• El siguiente paso es tomar una foto como archivo para realizar la prueba
usando la cámara del dispositivo
68
Figura 50. Imagen de prueba
Fuente: Autor
Fuente: Autor
69
• Una vez en la aplicación se comprueba el ingreso al menú probando que
abre satisfactoriamente, para luego seleccionar y comprobar la
funcionalidad de la opción de <des/cifrar>
Fuente: Autor
Fuente: Autor
70
• Una vez se comprueba que se carga la imagen a cifrar, se comprueba la
funcionalidad de selección del algoritmo entre AES 256 y 3DES los cuales
se pudieron seleccionar satisfactoriamente. El siguiente paso consistió en
probar la generación de una contraseña segura.
Fuente: Autor
Una vez se comprueba esta funcionalidad se da clic en cifrar para comprobar que
los algoritmos de cifrado funcionan correctamente, en este caso mostrara
inicialmente una alerta de validación
Figura 55. Corromper Archivo
Fuente: Autor
71
• El siguiente paso es comprobar la funcionalidad de corromper un archivo
para comprobar luego de cifrado
Fuente: Autor
Fuente: Autor
72
• Una vez cifrado el archivo se comprueba si el archivo original ha sido
corrupto. En este caso se comprueba correctamente que el original este
corrupto
Figura 58. Comprobación del Archivo Corrompido Exitosamente
Fuente: Autor
Fuente: Autor
73
• En la ubicación cifrados se comprueba que efectivamente se encuentra el
archivo que se acaba de cifrar.
Fuente: Autor
Fuente: Autor
74
• Para comprobar ahora el proceso e descifrado se va al menú CrApp y se
selecciona el archivo cifrado anteriormente y que esta guardado en la
carpeta CrApp /cifrados, para lo cual se escoge el mismo algoritmo y
contraseña de cifrados.
Figura 62. Comprobación de Funcionalidad de Descifrar
Fuente: Autor
Fuente: Autor
75
• Una vez inicia el descifrado se debe esperar sin cerrar ni minimizar la
aplicación mientras se descifra el archivo
Fuente: Autor
Fuente: Autor
76
Para comprobar que el archivo generado corresponde a la foto original se va a la
ubicación descifrados de la aplicación y se busca el archivo descifrado.
Figura 66. Archivo Descifrado Exitosamente
Fuente: Autor
Fuente: Autor
77
CONCLUSIONES
➢ Con base en los resultados obtenidos se puede crear una aplicación personal o
distribuida de código abierto que puede ir evolucionando y cumpliendo a
cabalidad con su objetivo: proteger la información de intrusos, con los últimos
algoritmos utilizados para esto, creando un sistema que permita a un usuario
medio utilizar esta aplicación y poder mantener sus archivos fuera de peligro.
➢ La definición de requisitos conforma una etapa muy importante, ya que precisan
la ruta de trabajo en la elaboración de los casos de uso, diagramas de secuencia
vitales para el diseño de la aplicación, haciendo que el desarrollo sea más ágil y
funcional porque se puede precisar cada interacción de los prototipos
construidos y los ajustes necesarios para la aplicación.
➢ La metodología de prototipado permite tener un primer prototipo funcional, sin
embargo, este se puede ir ajustando de acuerdo con las condiciones que se van
encontrando en cada interacción haciendo que el desarrollo de la aplicación vaya
creciendo de manera continua y controlada en la medida que se va
desarrollando, pero siempre buscando mantener la base del diseño preliminar.
➢ La utilización Android estudio permitió un desarrollo más dinámico conforme al
diseño, ya que facilitó la integración de las funcionalidades, a través de las
etapas y prototipos y al ser fundamentado en objetos admite reutilizar, modificar
y hacer mantenimiento de código de manera óptima.
➢ En la realización de validaciones a cada una de las funcionalidades de la
aplicación se fue corroborando su funcionamiento conforme al diseño,
igualmente, en cada interacción y prototipo se contrasto el diseño vs el prototipo
y se realizaron los ajustes necesarios, llevando a que se pueda afirmar que el
prototipo cumple a conformidad con los objetivos planteados y el alcance del
proyecto.
78
RECOMENDACIONES
79
REFERENCIAS
80
center/threats/top-seven-mobile-security-threatssmart-phones-tablets-and-
mobile-internet-devices-what-the-future-has-in-store
López, M. J. (2010). Criptografía y Seguridad en Computadores. Obtenido de
https://www.ucursos.cl/ingenieria/2010/2/EL65C/1/material_docente/bajar?id
_material=311979 Malwarebytes. (s.f.). Malwarebytes. Recuperado el 30 de
Octubre de 2019, de https://es.malwarebytes.com/malware/
Montalván, E. C. (Febrero de 2019). Desarrollo de un mecanismo de cifrado
basado en el algoritmo criptográfico simétrico AES. Recuperado el 15 de
Octubre de 2019, de http://201.218.5.85/handle/123456789/10959
Plata Cheje Ruben Wismark. (2009). Revista de Informacion Tecnologica y
Sociedad, 1-4.
Servisoftcorp. (16 de Febrero de 2019). Servisoftcorp. Recuperado el 15 de
Octubre de 2019, de https://www.servisoftcorp.com/definicion-y-como-
funcionan-las-aplicaciones-moviles/
StatCounter. (3 de 4 de 2017). Android overtakes Windows for first time.
Recuperado el 03 de 09 de 2019, de
https://gs.statcounter.com/press/android-overtakes-windows-for-first-time
StatCounter. (3 de 2017). Operating System Market Share Worldwide |
StatCounter Global Stats. Recuperado el 2019 de 10 de 30, de
https://gs.statcounter.com/os-marketshare#monthly-201703-201703-bar
Torre, J. M. (03 de Octubre de 2016). Cifrado de clave privada: AES. Recuperado
el 2019 de Octubre de 15, de
http://repositori.uji.es/xmlui/bitstream/handle/10234/164666/TFG_Martínez%
20De%20L a%20Torre%2C%20Javier.pdf
Universidad Politecnica de Madrid. (03 de Noviembre de 2003 ). Matematica
Aplicada a las Tecnologias de la Informacion y las Comunicaciones.
Recuperado el 30 de 10 de 2019, de
http://www.dma.fi.upm.es/recursos/aplicaciones/matematica_discreta/web/a
ritmetica_ modular/criptografia.html
Villalobos, L. D. (2018). Algoritmos de cifrado para aplicaciones móviles.
Recuperado el 15 de Octubre de 2019, de
https://www.researchgate.net/publication/328811860_Algoritmos_de_cifrado
_para_aplic aciones_moviles
Zanabria, A. L. (07 de Septiembre de 2018). Evaluación de Algoritmos
Criptográficos para mejorar la Seguridad en la Comunicación y
81
Almacenamiento de la Información. Recuperado el 15 de Octubre de 2019,
de http://repositorio.urp.edu.pe/handle/URP/1509
82
9 ANEXOS
83
9.3 PRIMERA VERSION DEL PROTOTIPO
Pantalla 2: Ubicación
84
Pantalla 3: Ubicación de los Archivos Cifrados
85
2 DISEÑO INICIAL DE ARQUITECTURA PRIMER PROTOTIPO DE
APLICACIÓN CrApp
Durante el proceso de construcción de la aplicación se diseñó una primera
arquitectura que sirvió como base del primer prototipo. A continuación, se
presentan los primeros diseños realizados para la arquitectura del primer prototipo
de CrApp.
86
Pantalla 7: Arquitectura Método Buscar Archivos
87
MANUAL DE USUARIO
APP MÓVIL ANDROID PARA PROTEGER INFORMACIÓN POR
MEDIO DE CRIPTOGRAFÍA SIMÉTRICA
Descripción breve
El presente manual describe los pasos a seguir para usar correctamente la aplicación
CONTENIDO
LISTA DE ILUSTRACIONES
1
Ilustración 26 Escoger algoritmo de hash ............................................................................ 14
1 OBJETIVO
El presente manual tiene como finalidad guiar al usuario inicial de la aplicación
CrApp en su uso e instalación.
2
Ilustración 1 Pantalla inicial CrApp
Paso 6: en esta pantalla se puede desplegar el menú con las opciones de:
cifrar/descifrar, herramientas, donaciones y volver al home, como se muestra en la
siguiente ilustración.
3
Ilustración 3 Pantalla de menú de opciones
4
Ilustración 5 Pantalla de cifrado / descifrado
5
Ilustración 7 Combo seleccionar algoritmo
Paso 11: El siguiente paso es seleccionar la opción de generar una clave, para que
CrApp le habilite el teclado y pueda escribir una clave, recuerde que se debe escoger
una clave de amenos 16 caracteres usando mayúsculas y minúsculas y números.
Aquí puede usar las herramientas Cesar o XOR para generar una clave cifrada de
una palabra sencilla y pegarla en este espacio (ver herramientas de cifrado de texto).
Una vez escrita la clave pulse la opción enviar. Recuerde que la clave no la puede
olvidar debe memorizarla o copiarla en alguna parte de manera oculta, si la olvida
perderá el archivo y este será irrecuperable
Paso 12: El siguiente paso es seleccionar el botón de cifrar dándole clic, en ese
momento inicia el proceso de cifrado, y CrApp le mostrara una ventana flotante con
un mensaje de confirmación, donde además presenta la opción de corromper el
archivo original mediante un checkbox, si desea aceptar este proceso seleccione el
checkbox y de clic a cifrar. La aplicación ejecuta el proceso y muestra una ventana
flotante de confirmación del cifrado del archivo, junto a la opción cerrar, para
finalizar la acción de clic al botón cerrar y en ese momento el archivo original en
texto plano ha sido cifrado exitosamente
6
Ilustración 9 Botón Cifrar
Ilustración 10 Confirmación y
Inicio de cifrado
7
Paso 14: Enseguida la aplicación muestra a la pantalla de cifrado / descifrado
donde están las opciones de seleccionar archivo, el tipo de algoritmo simétrico
AES256 o 3DES, las opciones de generar copiar o pegar clave y los botones de
cifrado y descifrado.
Paso 16: Una vez seleccionado el archivo que desea descifrar el sistema lo regresa
a la pantalla de cifrado / descifrado para que seleccione el tipo de algoritmo con el
cual esta cifrado el archivo, es importante que un archivo se puedes solo descifrar
con el algoritmo que fue cifrado.
8
Ilustración 15 Combo seleccionar algoritmo
Paso 17: El siguiente paso es seleccionar la opción de generar una clave, para que
CrApp le habilite el teclado y pueda escribir o pegar una clave que tenga
previamente guardada y que es con la que cifro el archivo. Una vez escrita la clave
pulse la opción enviar.
Paso 18: El siguiente paso es seleccionar el botón de descifrar dándole clic, en ese
momento inicia el proceso de descifrado, y CrApp le mostrara una ventana flotante
con un mensaje de advertencia, donde le pregunta si está seguro de realizar la
acción de cifrado con dos opciones cancelar y ok, en este caso seleccione ok para
aceptar el proceso y CrApp ejecutara el proceso de descifrado y guardando el
archivo plano en la carpeta descifrados de crApp y finalizando el proceso, ya que el
archivo ha sido descifrado exitosamente.
9
Ilustración 18 Mensaje de advertencia descifrar
Paso 19: Para cifrar o descifrar textos se debe seleccionar el menú de herramientas
en la pantalla de menú de inicio.
10
Ilustración 20 Pantalla de Herramientas
11
Ilustración 22 Escoger opción de cifrado descifrado Cesar o XOR
Paso 23: Para sacar un hash de textos se debe seleccionar el menú de herramientas
en la pantalla de menú de inicio.
12
Ilustración 24 Pantalla de Herramientas
13
Ilustración 27 Escoger algoritmo de hash
14