Conexión de datos seguros a través de sockets usando SDC

Iniciado por DtxdF, Enero 25, 2019, 10:29:47 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Enero 25, 2019, 10:29:47 PM Ultima modificación: Enero 26, 2019, 12:00:38 AM por DtxdF
Secure Data Connection – SDC:

• ¿Qué es?: Es un protocolo de comunicación entre sockets (Cliente-Servidor) de forma segura. En la comunicación se cifran y descifran los datos ya sean de entrada y de salida de forma simétrica con el cifrado por bloques AES.
• ¿Cómo lo uso?: Por estos momentos solo se puede usar en el lenguaje de programación "Python". Pronto se podrá estandarizar en diferentes lenguajes de programación.
• ¿Para qué lo debo usar?: Como ya mencione, sirve para comunicarse entre un cliente y servidor, se pueden usar en aplicaciones sencillas o complejas en una red de alta velocidad. Ejemplo de aplicaciones: Chat, Administración de computadores u otra aplicación que se requiera la comunicación de forma remota.
¿Cómo funciona?:
En la siguiente imagen se describe mucho mejor como funciona, seguido de la explicación textual:



¿Qué son las repeticiones?: "Las repeticiones deben ser por iguales en el cliente-servidor y mientras más tenga, más tardío puede ser el proceso de comunicación, aunque también depende de los recursos del computador". Esta indica cuantas veces se deben cifrar-descifrar los datos.

Verificando su funcionamiento:
En la siguiente imagen podremos apreciar que pasaría si un cliente se conecta a nuestro servidor pero este no usa el protocolo correcto (Secure Data Connection - SDC):



Como vemos en la imagen el servidor es una aplicación creada en python, sencilla que usa el protocolo "SDC", y el cliente en este caso seria "netcat".



Vemos como el servidor le envía el siguiente mensaje: "Hola mi nombre es DtxdF", pero como este cuenta con unas 10 repeticiones se ve todo esos datos que están cifrados y codificados a hexadecimales.
Veamos el funcionamiento con las aplicaciones correctas:



Como se puede apreciar, las aplicaciones usan el protocolo correcto por lo tanto pueden enviar y recibir los datos correctos de forma simple y sencilla.

Ejemplos:

* - Este es un ejemplo usando la consola de python:

Primer ejemplo: Un cliente comunicándose con el servidor:

Servidor:

Citar
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sdc
>>> servidor = sdc.Connection("", 8443, "12345678901234567890123456789012", repeat=10)
>>> servidor.server()
>>> servidor.client_buffer_print()
[{'origin': '127.0.0.1:49485', 'content': 'Hola gente de Underc0de soy un cliente', 'length': 23}]
>>>

Cliente:

Citar
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sdc
>>> cliente = sdc.Connection("localhost", 8443, "12345678901234567890123456789012", repeat=10)
>>> cliente.server_buffer_interact("Hola gente de Underc0de soy un cliente")
>>>

Segundo ejemplo: El servidor comunicándose con un cliente:

Servidor:

Citar
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sdc
>>> servidor = sdc.Connection("", 8443, "12345678901234567890123456789012", repeat=10)
>>> servidor.server()
>>> servidor.client_buffer_interact("Hola gente de Underc0de soy un servidor", servidor.client_list()[0])
>>>

Cliente:

Citar
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sdc
>>> cliente = sdc.Connection("localhost", 8443, "12345678901234567890123456789012", repeat=10)
>>> cliente.server_buffer_recv()
>>> cliente.server_buffer_print()
[{'origin': '127.0.0.1:8443', 'content': 'Hola gente de Underc0de soy un servidor', 'length': 23}]
>>>

Como ven es sencillo. Si no les queda del todo claro pueden ve información en el archivo: "informacion.docx" del repositorio, igualmente pueden ver una aplicación de chateo clonando el siguiente repositorio: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Repositorio de SDC: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Requerimientos: socket (pre instalado), thread (pre instalado), Crypto (no viene pre instalado), json (pre instalado).

Para instalar Crypto, puedes hacerlo con: easy_install, pip o instalando el binario (En el caso de Windows).

Este protocolo apenas está creado, es mejorable y puede tener algunas fallas, sin embargo lo eh probado creando diferentes aplicaciones y funcionan perfectamente. Puedes ver el código fuente, modificarlos y mejorarlo a tu gusto.

Para ver la ayuda del módulo, usa la función de python "help" para apreciarla. Ejemplo: help(sdc)
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

Esta muy bueno tu aporte, ahora lo voy a probar pero desde Linux a ver como funciona desde otra plataforma.

Saludos!

@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Hola gracias por visitar el post.

Recuerda que debes instalar Crypto para las version de python 2.7.

Yo lo probé en Windows y termux, supongo que si funciono en termux debe funcionar en Linux.
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF