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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Repositorio de SDC: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
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!

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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