domingo, 22 de octubre de 2017

Cifrado Asimetrico

Introducción
¿Qué es cifrar? Es aplicar un algoritmo determinado con una clave, a la información que se quiere proteger, de forma confidencial. Existen dos tipos de cifrado, el asimétrico y simétrico. El cifrado asimétrico es más complejo. Para empezar, utiliza una clave para cifrar y otra distinta para descifrar. Por lo tanto, es más seguro que el simétrico que utiliza la misma clave para cifrar que para descifrar, la diferencia es que este es del tipo clave privada. Los cifrados ayudan a proteger la integridad de los datos, garantizar la autenticidad del emisor y el no repudio.

Cifrado Asimétrico
Este cifrado emplea dos claves, uno público y otro privado. Ya sea para cifrar o descifrar; La clave publica será accesible para todos, y la clave privada solo la deberá conocer el usuario de este.

Estos algoritmos, estan basados en funciones matematicas, una fácil de resolver y otra complicada, indistinto de si es cifrado o descifrado. Tambien se caracteriza porque al cifrarlo con una clave por ejemplo publica no se puede descifrar con la misma clave.

Su desventaja más grande es que consume más recursos computacionales, y por ello al cifrarlo o descifrarlo lleva más tiempo que con un cifrado simétrico.

Algoritmo de cifrado RSA
El nombre de RSA proviene de las inciales de los nombres de los creadores; Rivest, Shamir y Adleman por 1997.

El RSA es un cifrado asimétrico porque trabaja con dos claves distintas; sirve para cifrar y descifrar información. 

Generación de Claves:
  1. Se eligen dos números primos, los que tú quieres. (p, q)
  2. Calculas la multiplicación de estos dos números primos. (n)
  3. Calculas z=(p-1) * (q-1), donde el resultado de este es el límite del siguiente paso.
  4. Eliges otro número primo “k”, que no sean divisibles con z, y que estos números sean menores a z. Regularmente se elige el primer número con residuo de z.
  5. La clave publica es el conjunto de los números (n, k).
  6. Por último, se calcula la clave privada. Con k*j= 1(mod z) donde regularmente pasa a z dividiendo y buscan el resultado de la ecuación, donde se cumpla. Y lo que valga j es la clave privada.


Y Para cifrar un mensaje:
Se utiliza la ecuación P^k= E(mod n)
Y el resultado de la división con (mod n) se resta con la potencia.
Simbología:
  • Donde P= Mensaje normal.
  • N y k son la clave pública.
  • E= El mensaje cifrado.


Para descifrar el mensaje:
Se utiliza la ecuación E^j= P(mod n)
Y el resultado de la división con (mod n) se resta con la potencia.
Simbología:
  • E: Mensaje Cifrado.
  • J: Clave Privada.
  • P: Mensaje normal.
  • N: Parte de clave pública.


Cifrado Diffie-Hellman
Se usa para generar una clave privada simétrica a ambos extremos de un canal de comunicación inseguro. Se busca obtener la clave secreta con la que posteriormente se cifrara la información, usando un algoritmo de cifrado simétrico.
Este algoritmo no garantiza autentificación.

PCI DSS
Significa "Data Security Standard” (norma de seguridad de datos). Define el conjunto de requerimientos para gestionar la seguridad, definir políticas y procedimientos de seguridad, arquitectura de red, diseño de software. Es usado para la protección de las tarjetas de crédito.

Genera una firma digital para la autenticación de los documentos electrónicos. Fue presentado por el Instituto Nacional de Estándares y Tecnología en NIST en 1994. Utiliza la función Hash SHA y el algoritmo asimétrico DSA.

CRIPTOGRAFIA CON CURVAS ELIPTICAS
Requiere claves más pequeñas que otros sistemas de clave pública lo hacen un buen candidato para aplicaciones donde los requisitos de tamaño de memoria son más exigentes
alternativa a los criptosistemas de clave pública clásicos como el RSA y el ElGamal, tanto por la disminución del tamaño de las claves que se requieren como por el abanico de grupos que ofrecen en el mismo cuerpo base.

Una curva elíptica sobre un cuerpo KK es una curva algebraica sin puntos singulares que viene dada por una ecuación del tipo (véase [Sil])
y2+a1xy+a3y=x3+a2x2+a4x+a6,ai∈K,

denominada ecuación general de Weierstrass.
Si la característica del cuerpo es distinta de 22 y de 33, usando transformaciones lineales de las variables, la ecuación de la curva se puede expresar como:
y2=x3+ax+b,a,b∈K,(1)

denominada ecuación reducida de Weierstrass, debiendo ser el discriminante del polinomio cúbico en xx no nulo, es decir, 4⋅a3+27⋅b2≠04⋅a3+27⋅b2≠0, para que la curva no tenga singularidades.

Proceso:
  1. Escogemos una curva elíptica.
  2. La curva elíptica tiene un conjunto de soluciones (x,y).
  3. Si los valores x,y pertenecen a un campo finito, entonces los puntos (x,y) de la curva forman un grupo.
  4. Tomamos un elemento del grupo, y hallamos su logaritmo discreto para una base dada. Eso nos servirá de base para establecer algoritmos criptográficos de intercambio de claves y de firma digital.

 Conclusión
El cifrado asimétrico es el más seguro y complicado que el sistema simétrico, sin él, el cifrado no serviría de mucho ya que el simétrico no es muy seguro. Existen varios tipos de cifrados asimétricos, los cuales pueden ser utilizados por todos, para proteger la información enviada por internet, donde el más utilizado es el algoritmo RSA, aunque gasten más tiempo y recursos son más seguros y se logra el objetivo del cifrado, lograr proteger la integridad de los datos, tener la autentificación del emisor y evitar el repudio.

Referencias:
De Luz Sergio, 16 noviembre, 2010Criptografía : Algoritmos de cifrado de clave asimétrica,  REDES ZONE, https://www.redeszone.net/2010/11/16/criptografia-algoritmos-de-cifrado-de-clave-asimetrica/

Córdoba Diego, 8 de noviembre, 2016, RSA: ¿Cómo funciona un algoritmo de cifrado?, Junco TIC, https://juncotic.com/rsa-como-funciona-este-algoritmo/

seguinfo, 2 de octubre, 2017, ¿Qué es la criptografía de curva elíptica?, https://seguinfo.wordpress.com/2007/10/02/%C2%BFque-es-la-criptografia-de-curva-eliptica/

isecauditors, recuperado el 22 de octubre, 2017 , Implatación y certificación en el estándar PCI DSS, https://www.isecauditors.com/implantacion-pci-dss

Universidad Politecnica de Madrid, 12 de mayor de 2015, criptored, Criptografía con curvas elípticas, http://www.criptored.upm.es/crypt4you/temas/ECC/leccion1/leccion1.html

domingo, 15 de octubre de 2017

Scokets y Datagrama

Introducción
Son mecanismos de comunicación entre procesos que permiten que un proceso emita o reciba información con otro proceso incluso estando en distintas máquinas. Es decir, un canal de comunicación entre dos programas que están en distintos ordenadores.


Surgen a principios de los 80 con el sistema Unix de Berkeley, para proporcionar un medio de comunicación entre procesos.

Funcionamiento del Socket
Queda definido por un par de direcciones IP local y remota, un protocolo de transporte y un par de números de puerto local y remoto.

Tres recursos que utiliza son:
  • Un protocolo de comunicaciones, que permite el intercambio de octetos.
  • Un par de direcciones del Protocolo de Red (Dirección IP, si se utiliza el Protocolo TCP/IP), que identifica la computadora de origen y la remota.
  • Un par de números de puerto, que identifica a un programa dentro de cada computadora.

A los sockets también se les puede implementar la arquitectura cliente-servidor, ya que la comunicación debe ser iniciada por una computadora (Cliente) y la otra espera a que inicie la comunicación (Servidor).

Tipos de Sockets
  • Los orientados a conexión:
    • SOCK_STREAM: está asociado al protocolo TCP, este brinda seguridad en la transmisión de datos, seguridad en la recepción, en la integridad y en la secuencia.
  • Los no orientados a conexión:
    • SOCK_DGRAM: está asociado al protocolo UDP, e indica que los paquetes viajarán en tipo datagramas.

Características de los Sockets

Características de los orientados a conexión

  • Es necesario establecer correctamente una conexión, donde es necesario la dirección IP del servidor y el servicio que se utilizara.
  • Ninguno de los dos puede transmitir datos.
  • Se usa el protocolo TCP/IP.
  • Garantiza que todos los datos lleguen al otro programa correctamente.
  • No se pierden datos.
  • No importa que un programa se quede bloqueado, puede estar esperando o transmitiendo datos.

Características de los no orientados a conexión
  • Es un protocolo UDP.
  • No es necesario que los programas se conecten.
  • Pueden transmitir datos sin que el otro programa este recibiendo o no.
  • Garantiza que los datos que lleguen sean correctos, mas no que lleguen todos.
  • Se pierden datos.
  • Evita que el programa se quede bloqueado.

Datagramas
Un datagrama es un fragmento de paquete que es enviado con la suficiente información para que la red pueda encaminar el fragmento hacia el equipo receptor, de manera independiente a los fragmentos restantes. Que puede provocar una recomposición desordenada o incompleta del paquete en el programa destino.
Los datagramas IP son las unidades principales de información de Internet y la más básica. Algunos protocolos basados en datagramas son IPX, UDP (Servidores de red no orientados a conexión). 

Conclusión
Los sockets son importantes para la comunicación entre dos programas abiertos en distintas computadoras, sin ellos no podrían comunicarse, y también es importante que existan los dos distintos tipos de sockets, ya que uno es para información importante que debe estar completa, y la otra es para el simple hecho de recibir mensajes, sin importar si se pierde información o no. Este último es el que utiliza los datagramas, que es como un mensaje en dividido en particiones, que se van enviando de uno en uno y que podrían afectar el orden del mensaje en la recepción de este. 
Que hacen que el envió del mensaje llegue incompleto o no en el tipo de socket no orientado a conexión.


Referencias
EcuRed (recuperado el 15 de octubre de 2017), Socket,  https://www.ecured.cu/Socket
TecnologiaHechaPalabra (recuperado el 15 de octubre de 2017), Datagrama,  http://www.tecnologiahechapalabra.com/datos/eventos/articulo.asp?i=6473
Ulpgc (recuperado el 15 de octubre de 2017), Sockets,  http://sopa.dis.ulpgc.es/ii-dso/leclinux/ipc/sockets/sockets.pdf