miércoles, 25 de octubre de 2017

Algoritmos de Cifrado

Los sistemas de cifrado asimétrico fueron creados con la finalidad de dar solución al problema de intercambio de la clave secreta de los sistemas de cifrado simétricos, el cifrado asimétrico también conocido como de doble clave o de clave pública consiste en utilizar dos claves, una para cifrar y otra para descifrar.
La clave que se utiliza para cifrar el mensaje es la clave pública del receptor, y es pública porque es conocida por más personas que sólo el emisor y el receptor de un determinado mensaje. El descifrado se lleva a cabo por el receptor y lo hace con su clave privada, lo que implica que ya no hay un intercambio de claves ya que cuando un mensaje es cifrado con la clave pública del receptor, se está asegurando que sólo él puede descifrar el mensaje con su clave privada que se supone sólo está en su poder.
La clave pública de cada persona es derivada de su clave privada mediante funciones de un sentido, es decir que son fáciles de calcular en una dirección pero muy difíciles de calcular a la inversa, lo que hace posible que la clave para cifrar se haga pública.
Es una práctica común utilizar los dos tipos de cifrado (simétrico y asimétrico) al momento de implementar un sistema criptográfico, con ello se busca aprovechar las mayores cualidades de cada uno; por un lado se intercambia de forma segura la clave con el cifrado asimétrico y por el otro el proceso cifrado/descifrado se realiza con rapidez y eficiencia con el cifrado simétrico.
El emisor utiliza una clave secreta para cifrar el MCla y por tanto un algoritmo simétrico, también cifra dicha clave pero con un algoritmo asimétrico y con la clave pública del receptor, con el objetivo de que solo éste pueda recuperarla ya que él es el único que tiene la clave privada para hacerlo, una vez que el receptor descifre la clave secreta podrá descifrar el mensaje con dicha clave.
Erika Aguillón Martínez. (2012). Fundamentos de Criptografía. octubre 25,2017, de UNAM 
Sitio web: http://redyseguridad.fi-p.unam.mx/proyectos/criptografia/criptografia/index.php/2-tecnicas-clasicas-de-cifrado/23-numero-de-claves/233-sistemas-de-dos-claves-cifradores-asimetricos

Sockets Datagrama

Sockets Datagrama

Fueron popularizados por Berckley Software Distribution, de la universidad norteamericana de Berkley. Los sockets han de ser capaces de utilizar el protocolo de streams TCP (Transfer Contro Protocol) y el de datagramas UDP (User Datagram Protocol). Utilizan una serie de primitivas para establecer el punto de comunicación, para conectarse a una máquina remota en un determinado puerto que esté disponible, para escuchar en él, para leer o escribir y publicar información en él, y finalmente para desconectarse. Con todas primitivas se puede crear un sistema de diálogo muy completo.


Los sockets son puntos finales de enlaces de comunicaciones entre procesos. Los procesos los tratan como descriptores de ficheros, de forma que se pueden intercambiar datos con otros procesos transmitiendo y recibiendo a través de sockets. El tipo de sockets describe la forma en la que se transfiere información a través de ese socket.

Sockets Stream (TCP, Transport Control Protocol)

Son un servicio orientado a conexión donde los datos se transfieren sin encuadrarlos en registros o bloques. Si se rompe la conexión entre los procesos, éstos serán informados. El protocolo de comunicaciones con streams es un protocolo orientado a conexión, ya que para establecer una comunicación utilizando el protocolo TCP, hay que establecer en primer lugar una conexión entre un par de sockets. Mientras uno de los sockets atiende peticiones de conexión (servidor), el otro solicita una conexión (cliente). Una vez que los dos sockets estén conectados, se pueden utilizar para transmitir datos en ambas direcciones.

Sockets Datagrama (UDP, User Datagram Protocol)

Son un servicio de transporte sin conexión. Son más eficientes que TCP, pero no está garantizada la fiabilidad. Los datos se envían y reciben en paquetes, cuya entrega no está garantizada. Los paquetes pueden ser duplicados, perdidos o llegar en un orden diferente al que se envió. El protocolo de comunicaciones con datagramas es un protocolo sin conexión, es decir, cada vez que se envíen datagramas es necesario enviar el descriptor del socket local y la dirección del socket que debe recibir el datagrama. Como se puede ver, hay que enviar datos adicionales cada vez que se realice una comunicación.

Sockets Raw

Son sockets que dan acceso directo a la capa de software de red subyacente o a protocolos de más bajo nivel. Se utilizan sobre todo para la depuración del código de los protocolos.




DIFERENCIAS ENTRE SOCKETS STREAM Y DATAGRAMA

En UDP, cada vez que se envía un datagrama, hay que enviar también el descriptor del socket local y la dirección del socket que va a recibir el datagrama, luego éstos son más grandes que los TCP. Como el protocolo TCP está orientado a conexión, tenemos que establecer esta conexión entre los dos sockets antes de nada, lo que implica un cierto tiempo empleado en el establecimiento de la conexión, que no existe en UDP.

En UDP hay un límite de tamaño de los datagramas, establecido en 64 kilobytes, que se pueden enviar a una localización determinada, mientras que TCP no tiene límite; una vez que se ha establecido la conexión, el par de sockets funciona como los streams: todos los datos se leen inmediatamente, en el mismo orden en que se van recibiendo.

UDP es un protocolo desordenado, no garantiza que los datagramas que se hayan enviado sean recibidos en el mismo orden por el socket de recepción. Al contrario,TCP es un protocolo ordenado, garantiza que todos los paquetes que se envíen serán recibidos en el socket destino en el mismo orden en que se han enviado. Los datagramas son bloques de información del tipo lanzar y olvidar. Para la mayoría de los programas que utilicen la red, el usar un flujo TCP en vez de un datagrama UDP es más sencillo y hay menos posibilidades de tener problemas. Sin embargo, cuando se requiere un rendimiento óptimo, y está justificado el tiempo adicional que supone realizar la verificación de los datos, los datagramas son un mecanismo realmente útil.

En resumen, TCP parece más indicado para la implementación de servicios de red como un control remoto (rlogin, telnet) y transmisión de ficheros (ftp); que necesitan transmitir datos de longitud indefinida. UDP es menos complejo y tiene una menor sobrecarga sobre la conexión; esto hace que sea el indicado en la implementación de aplicaciones cliente/servidor en sistemas distribuidos montados sobre redes de área local.