Trabajo académico de la asignatura Programación III de la carrera Ing. en Sistemas de la Facultad de Ingeniería de la Universidad de Cuenca. El trabajo expuesto describe conceptos y algoritmos para la encriptación de mensajes enviados dentro de un chat.Implementación del proyecto disponible en el repositorio Github. Puede acceder con el siguiente enlace:
https://github.com/TheWorstOne/CryptoChat
2. Contenido:
1. Especificación del Chat
2. Algoritmo de encriptación y desencriptación.
3. Explicación del código.
4. Conclusiones
5. Bibliografía
3. Especificación del Chat
❏ El chat fue desarrollado por Sockets de
Java en Netbeans.
❏ Socket: Es básicamente formas en las que
podemos interconectar dos o más
programas mediante el uso del internet.
❏ En Java se utiliza para poder crear
conexiones utilizando básicamente una
IP/hostname y un puerto para establecer la
conexión.
5. Servidor:
Básicamente el programa servidor
comienza a “escuchar” en un
puerto determinado(nosotros lo
especificamos).
Cliente:
Debe conocer la ip o nombre de
dominio/hostname del servidor y el
puerto que está escuchando, al
saber esto simplemente solicita
establecer una conexión con el
servidor.
6. Algoritmo AES (Advanced Encryption Standard)
El algoritmo más utilizado hoy en día, la longitud de
clave puede ser de 128 bits (10 rondas), 192 bits
(12 rondas) o 256 bits (14 rondas) basado en
sustituciones, permutaciones y transformaciones
lineales, ejecutadas varias veces en bloques de
datos de 16 bytes.
El cambio de un solo bit, ya sea en la clave, o en
los bloques de texto simple y claro, resulta en un
bloque de texto cifrado completamente diferente.
Longitud de clave: 128, 192 y 256 bits.
Tamaño de bloque: 128 bits.
12. Conclusiones:
● El número de rondas especificado en el cifrador es muy pequeño, tiene una
descripción matemática muy ordenada, y por lo tanto, predecible que llega a ser
algo preocupante la seguridad de este algoritmo.
● Si utilizas diferentes claves compartidas con diferentes personas, cuando una
de las claves está en peligro, sólo una persona se ve afectada en lugar de
todos.
● El mayor inconveniente es la necesidad de comunicar la clave compartida. Esto
debe hacerse con mucho cuidado para asegurarse de que la clave no sea
revelada a usuarios no autorizados.
13. Bibliografía
Apuntes de Java. (s.f.). Recuperado el 18 de Enero de 2017, de
https://aflrovvs.blogspot.com/2012/07/como-hacer-un-chat-con-sockets-en-java.html
Link del código fuente del chat en el cual se basó la aplicación:
https://www.youtube.com/watch?v=hZgntu7889Q