miércoles, 21 de octubre de 2015

RSA

Algoritmo RSA

El algoritmo de clave pública RSA fuecreado en 1978 por Rivest, Shamir y Adlman, y es el sistema criptográfico asimétrico más conocido y usado. Estos señores se basaron en el artículo de Diffie-Hellman sobre sistemas de llave pública, crearon su algoritmo y fundaron la empresa RSA Data Security Inc., que es actualmente una de las más prestigiosas en el entorno de la protección de datos.
El sistema RSA se basa en el hecho matemático de la dificultad de factorizar números muy grandes. Para factorizar un número el sistema más lógico consiste en empezar a dividir sucesivamente éste entre 2, entre 3, entre 4,..., y así sucesivamente, buscando que el resultado de la división sea exacto, es decir, de resto 0, con lo que ya tendremos un divisor del número.
Ahora bien, si el número considerado es un número primo (el que sólo es divisible por 1 y por él mismo), tendremos que para factorizarlo habría que empezar por 1, 2, 3,........... hasta llegar a él mismo, ya que por ser primo ninguno de los números anteriores es divisor suyo. Y si el número primo es lo suficientemente grande, el proceso de factorización es complicado y lleva mucho tiempo.
Basado en la exponenciación modular de exponente y módulo fijos, el sistema RSA crea sus claves de la siguiente forma:
  • Se buscan dos números primos lo suficientemente grandes: p y q (de entre 100 y 300 dígitos).
  • Se obtienen los números n = p * q y Ø = (p-1) * (q-1).
  • Se busca un número e tal que no tenga múltiplos comunes con Ø.
  • Se calcula d = e-1 mod Ø, con mod = resto de la división de números enteros.
    Y ya con estos números obtenidos, n es la clave pública y d es la clave privada. Los números p, q y Ø se destruyen. También se hace público el número e, necesario para alimentar el algoritmo.



El cálculo de estas claves se realiza en secreto en la máquina en la que se va a guardar la clave privada, y una vez generada ésta conviene protegerla mediante un algoritmo criptográfico simétrico.
En cuanto a las longitudes de claves, el sistema RSA permite longitudes variables, siendo aconsejable actualmente el uso de claves de no menos de 1024 bits (se han roto claves de hasta 512 bits, aunque se necesitaron más de 5 meses y casi 300 ordenadores trabajando juntos para hacerlo).
RSA basa su seguridad es ser una función computacionalmente segura, ya que si bien realizar la exponenciación modular es fácil, su operación inversa, la extracción de raices de módulo Ø no es factible a menos que se conozca la factorización de e, clave privada del sistema.
RSA es el más conocido y usado de los sistemas de clave pública, y también el más rápido de ellos. Presenta todas las ventajas de los sistemas asimétricos, incluyendo la firma digital, aunque resulta más útil a la hora de implementar la confidencialidad el uso de sistemas simétricos, por ser más rápidos. Se suele usar también en los sistemas mixtos para encriptar y enviar la clave simétrica que se usará posteriormente en la comunicación cifrada.

martes, 20 de octubre de 2015

ALGORITMOS

SHA


Algoritmo desarrollado por el NIST y publicado como estándar federal para el procesamiento de la información (FIBS PUB 180); en 1995 se publicó una versión revisada como FIBS PUB 180-1 conocida como SHA-1.

El algoritmo toma como entrada mensajes de longitud máxima de 264 bits que son procesados en bloques de 512 bits; el resultado que produce es de 160 bits. La figura 5.5.1 muestra de manera general el algoritmo.

El procesamiento consta de cinco pasos los cuales se explican a continuación:

Se incorporan bits de relleno al mensaje de entrada de tal modo que cumpla: longitud. El relleno consiste en un uno seguido de los ceros que sean necesarios. Aunque el mensaje ya tenga la longitud deseada, se debe efectuar el relleno, por lo que el número de bits de dicho relleno está en el rango de 1 a 512 bits.
A la salida del paso 1, se le añade un bloque de 64 bits que represente la longitud del mensaje original antes de ser rellenado.
Se inicializa la memoria temporal MD, la cual consta de 160 bits y su finalidad es almacenar los resultados intermedios y finales de la función de dispersión. La MD consta de 5 registros (A,B,C,D,E) de 32 bits cada uno, los valores con los que se inicializan son los siguientes (valores hexadecimales):

A= 67452301
B= EFCDAB89
C= 98BADCFE
D= 10325476
E= C3D2E1F0

Se procesa el mensaje por bloques de 512 bits, cada uno pasa por un módulo que consta de 4 rondas de procesamiento de 20 pasos cada una. Las rondas tienen una estructura similar, con la excepción de que cada una ocupa una función lógica primitiva diferente (f1, f2, f3 y f4).



La entrada a cada ronda consta del bloque de 512 bits que se esté procesando (Yq) y los 160 bits de la memoria MD, nótese que cada bloque de 512 bits actualizará el valor de la memoria temporal. Cada ronda también hace uso de la constante aditiva Kt, donde t indica uno de los 80 pasos a lo largo de las cuatro rondas.

MD5


MD5 (Message Digest Algorithm)
El algoritmo MD5 fue desarrollado por Ron Rivest en 1992 en el MIT con la finalidad de robustecer el MD4 y a la fecha se trata del algoritmo hash más seguro y de mayor uso en el mundo (ampliamente documentado en el RFC 1321), entre las aplicaciones más recurrentes están la autenticación en el protocolo SSL y la firma digital en PGP.

MD5 procesa mensajes de cualquier longitud (longitud variable) y procesa bloques uniformes de 512 bits a la vez, hasta concluir con el mensaje total a fin de entregar a la salida un bloque "resumen" de 128 bits (longitud fija). El procesamiento consta de cinco pasos:

Paso 1: En principio, para que el mensaje sea procesado en bloques de tamaño fijo se requiere que su longitud en bits sea: longitud de manera que su longitud sea de no menos de 64 bits de diferencia para completar un múltiplo de 512, así, de ser necesario se aplica un relleno, el cual varía en longitud en cada caso, esto es, el número de bits adicionados está en un rango de 1 a 512 bits con el formato 10000…0.
Paso 2: Una representación de 64 bits de la longitud del mensaje original (antes de aplicar el relleno) se añade al resultado del paso 1. Estos dos pasos permiten hacer coincidir la longitud del mensaje en un múltiplo exacto de 512 bits de longitud (requerido para el resto del algoritmo), en tanto adicionalmente se garantiza que mensajes distintos no serán iguales después del complemento de los bits.
Paso 3: Es hasta este paso que da inicio el proceso de reducción, para ello se utiliza un registro de 128 bits que permite almacenar y mantener los resultados intermedios y final de la función hash. El registro se divide en cuatro secciones de 32 bits cada una, las cuales corresponden a las variables A, B, C, y D que son inicializadas con los valores hexadecimales:
A = 67 45 23 01
B = EF CD AB 89
C = 98 BA DC FE
D = 10 32 54 76

Estas variables son llamadas variables de concatenación o variables de encadenamiento y se almacenan en formato little-endian de manera que aparecen:

A = 01 23 45 67
B = 89 AB CD EF
C = FE DC BA 98
D = 76 54 32 10

Paso 4: El mensaje se procesa en bloques de 512 bits a la vez a través de 16 bloques de 32 bits cada uno, para lo cual las cuatro variables de concatenación se copian en variables distintas:
a = A
b = B
c = C
d = D

La parte medular del algoritmo es una función de compresión que consta de cuatro rondas, las cuales tienen una estructura similar; pero cada una utiliza operaciones distintas durante 16 iteraciones; cada operación realiza una función no lineal sobre tres de las variables a, b, c y d, y el resultado es sumado a la cuarta variable que no fue elegida, un sub-bloque del texto y una constante.



CRIPTOGRAFIA

En 1976, en una de las ideas más inspiradas en la historia de la criptografía, Sun Microsystems, Inc., ingeniero informático Whitfield Diffie y la Universidad de Stanford ingeniero eléctrico Martin Hellman se dio cuenta de que la clave problema de distribución podría ser casi completamente resuelto si un criptosistema, T (y tal vez un sistema inverso, T ').

Dado un sistema de este tipo, Diffie y Hellman propusieron que cada usuario a mantener su secreto clave de descifrado y publicar su clave de cifrado en un directorio público. El secreto no era necesario, ya sea en la distribución o en el almacenamiento de este directorio de claves "públicos". Cualquier persona que desee comunicarse en privado con un usuario cuya clave está en el directorio sólo tiene que buscar la clave pública del destinatario para cifrar el mensaje de que sólo el receptor previsto puede descifrar. El número total de claves involucrados es sólo el doble del número de usuarios, y cada usuario tenga una clave en el directorio público y su propia clave secreta, que él debe proteger en su propio interés. Obviamente el directorio público debe ser autenticado, de lo contrario A se puede engañar a la comunicación con C cuando piensa que se está comunicando con B simplemente mediante la sustitución de C 's clave para B' s en una copia 's del directorio. Desde que se centran en el problema de distribución de claves, Diffie y Hellman llamaron a su descubrimiento de la criptografía de clave pública. Esta fue la primera discusión de la criptografía de doble clave en la literatura abierta. Sin embargo, el almiranteBobby Inman, mientras que el director de los EE.UU. Agencia de Seguridad Nacional (NSA) desde 1977 hasta 1981, reveló que la criptografía de doble clave había sido conocido por la agencia de casi una década antes, después de haber sido descubierto porJames Ellis, Clifford Cocks, y Malcolm Williamson en la sede del Código del Gobierno británico (GCHQ).

Whitfield Diffe 
Es un criptógrafo estadounidense y un pionero en la criptografía asimétrica.

En 1965 se graduó como Bachelor of Science en matemáticas en el Instituto Tecnológico de Massachusetts.



Martin Edward Hellman (n. 2 de octubre de 1945). Es un criptólogo estadounidense. Hellman es famoso por ser el inventor junto a Diffie de la criptografía de clave pública junto con Ralph Merkle. Ambos publicaron en 1976 New Directions in Criptografhy que introducía un cambio radical, un nuevo método de distribución de claves que solucionó uno de los mayores problemas de la criptografía hasta entonces, la distribución de claves.