domingo, 8 de abril de 2012

ALGORITMOS CRIPTOGRÁFICOS

   ¡Hola amigos!

   Hoy vamos a dedicar la entrada, a petición de un comentario que recibimos, a algunos algoritmos de cifrado. A continuación explicaremos los más importantes:

Diffie-Hellman
 
   El algoritmo Diffie-Hellman, cuyo nombre es debido a sus inventores Whitfield Diffie y Martin Hellman, fue desarrollado en 1976. Este es un algoritmo de intercambio de claves y permite, para ello, la comunicación entre dos partes a través de un canal no cifrado.


   Normalmente se utiliza para acordar claves simétricas que se emplean para el cifrado de una sesión. A través de varias fórmulas matemáticas A y B llegarán a una clave común aunque haya intermediarios en el canal, que ya hemos dicho que no es seguro. Su principal ventaja es la dificultad de calcular logaritmos discretos en campos finitos.


   El inconveniente de este algoritmo es que no es autenticado, no tienes la certeza de con quién te estás comunicando lo cual facilita los ataques de Man In The Middle (hombre en el medio).


 

RSA
 
   RSA es un sistema criptográfico de clave pública. Se desarrolló en 1977 por Ron Rivest, Adi Shamir y Len Adleman. Su seguridad se basa en el problema de la factorización de números grandes.


   Los mensajes enviados se representan mediante números y el funcionamiento se basa en el producto, conocido, de dos números primos que se eligen al azar y se mantienen en secreto. El algoritmo consiste en que cada usuario tenga dos claves, una secreta y una pública, A cifra un mensaje con la clave pública de B, y cuando el mensaje llega a B, este lo descifra con su clave privada.


   RSA también ofrece autenticación, por ello es muy válido tanto para cifrar como para firmar digitalmente.


 

ElGamal
 
   Este es un algoritmo de criptografía simétrica basado en el cifrado Diffie-Hellman, se basa en un conjunto de problemas matemáticos de logaritmos discretos. Fue desarrollado en 1984 por Taher Elgamal y se utiliza tanto para cifrar y descifrar como para firmar digitalmente.


   Al igual que en Diffie-Hellman, la seguridad del algoritmo recae en la dificultad de calcular logaritmos discretos.


 

RC4

   Es un algoritmo propietario de RSA. Se trata de un algoritmo de cifrado de flujo y fue desarrollado por Ron Rivest en 1987. Normalmente se utiliza en protocolos de seguridad como SSL o TLS para proteger el tráfico de Internet o añadir seguridad a la red.


   Sin embargo este no es un cifrado muy conocido ya que se ha dicho de él que es bastante inseguro.


 

DES (Data Encryption Standard)

   Se trata de un cifrador simétrico de bloque. Fue desarrollado por IBM a petición del NBS
(National Bureau of Standards) y posteriormente fue modificado y estandarizado por el propio NBS, NIST en la actualidad (National Institute of Standards and Technology) en 1977.


   Se trata de un cifrado por bloques de 64 bits, 8 de los cuales se utilizan como control de paridad para verificar la integridad de la clave, por lo tanto los 56 restantes son los bits que utiliza el algoritmo.


   Toma un texto en claro de una longitud fija y realiza sobre él un conjunto de combinaciones, sustituciones y permutaciones. Todo ello se debe comprobar que puede hacerse en ambos sentidos para su posterior descifrado. Este algoritmo utiliza además una clave criptográfica para modificar la transformación, así sólo podrán descifrar el texto quienes conozcan dicha clave.


 

AES (Advanced Encryption Standard)

   Es, al igual que DES, un cifrador simétrico de bloque. Fue desarrollado por Vincent Rijmen y Joan Daemen, criptologistas belgas y adoptado por el gobierno de los EE.UU. Se le consideró uno de los mejores cifradores en 2003 y hasta nuestros días.


   Opera sobre bloques de 16 bytes y acepta tres longitudes de clave, de 128, 192 y 256 bits. Es una red de sustitución-permutación. Se basa en cuatro funciones invertibles, que se aplican en un número concreto de rondas a los bytes de una matriz (a esta matriz se le llama Estado). Esta matriz se carga inicialmente con los bytes de entrada xor la primera de las subclaves que se generan.


   Es rápido tanto en software como hardware, es fácil de implementar y requiere de poca memoria.



   Si quereis que os hablemos de algún algoritmo de cifrado que no hayamos comentado o que os expliquemos con más detalle alguno de los nombrados sólo teneis que pedirlo =).

   Muchas gracias por comentar y darnos nuevas ideas. ¡Un saludo!

2 comentarios:

  1. Hola,
    ¿Podríais profundizar en el algoritmo Diffie-Hellman?

    Un saludo y gracias!

    ResponderEliminar
  2. Para comentar de que trata este algortimo vamos a poner un ejemplo:

    A quiere comunicarse con B, pero en al mismo escenario también está C. A elige un número primo (p) y otro número cualquiera menor que el número primo (n), cogeremos para este ejemplo el 31 y el 12 y estos se los dice a B aunque C lo vea. Además elige un número secreto, también menor que el primo (k). A partir de la siguiente fórmula: a = n^k (mod p), se saca a. Si k es 6, el resultado de la operación sería 2, y esto es lo que A le manda a B.
    Ahora B también debe elegir un número secreto, h, menor que el número primo, y resolver la misma ecuación que A: a = n^h (mod p), y el resultado de dicha operación se lo manda a A. Si h fuera 26, el resultado sería 10.
    Una vez que A y B tengan el 2 y el 10 deberán resolver las siguientes ecuaciones:
    A-> Clave = B^k (mod 31) = 10^6 (mod 31) = 2
    B-> Clave = A^h (mod 31) = 2^26 (mod 31) = 2
    La clave secreta para ambos es 2.

    Esperamos te haya servido la explicación.
    Un saludo y ¡gracias por comentar!

    ResponderEliminar