sábado, 19 de mayo de 2018

Criptografía RSA

Como muchos sabemos, la importancia de tener nuestros datos seguros hoy día es fundamental por ende en la seguridad informática usamos algo llamado criptografía, que no es nada nuevo para nuestros días ya que sus orígenes vienen de los Espartanos en el 400 A.C. incluso desde mucho antes. La criptografía proviene del griego Kryptos = Oculto & Graphia = Escritura dando origen a su definición como "El arte de escribir claves secretas". A través de los años se han descubierto nuevos métodos de cifrado evolucionando aun más el tema de la seguridad, pero en esta ocasión hablaremos de la Criptografía RSA, que supone ser la más "Segura" en nuestra actualidad, pero bien sabemos que para llegar un método de seguridad impenetrable nos falta mucho y a lo mejor no pase.

Pero antes de empezar debemos de reconocer las diferencias entre claves publicas y privadas, al igual que reconocer los diferentes sistemas de cifrado.

Sistemas de Cifrado. . . 
Un criptosistema se puede definir como una quintupla (M, C, K, E, D) ya que cada una de estas tiene un valor agregado, que da como resultado una definición en la hora de un cifrado.
  • M = Representa el texto legible por una persona ya que no posee seguridad
  • C  = Representa los posibles datos cifrados o criptogramas 
  • K  = Representa el conjunto de claves que se pueden emplear en el criptosistema 
  • E  = Es el conjunto donde se transforma los datos y se aplica la quintupla
  • D  = Es el conjunto de transformaciones de cifrado, análogos a E
Tipos de Criptosistemas. . .
  • Criptosistemas simétricos o de clave privada = Son aquellos que emplean una misma clave en cualquiera de sus funciones, bien sea para cifrar o descifrar. Lo que nos causa un conflicto ya que la clave debe estar tanto en el emisor como en el receptor dejándonos en duda como transmitirle la clave de forma segura. En este algoritmo simétrico se considera un clave segura al momento de poseer 128 bits.
  • Criptosistemas asimétricos o de clave publica = Son aquellos que emplean una doble clave (kp; KP). kp = Se le considera la clave privada & KP = Se le considera la clave publica.  Una de ellas sirve para transformación o función E de cifrado y la otra, para transformación de D de descifrado, si no se posee una de estas es imposible de descifrar los datos cifrados y a su vez in deducible.
Una vez sabiendo esto ya podemos empezar con la descripción y análisis enfocándonos especifica en la Criptografía RSA.

El método de cifrado de datos conocido como algoritmo RSA, por los nombres de sus inventores Rivest, Shamir y Adleman, creado en el año 1977 y liberado al publico el 20 de Septiembre de 2000, es uno de los tipos de cifrados más usados hoy día para la transmisión segura de datos a través de canales inseguros. El RSA esta basado en un criptosistema de clave pública lo que comprende como tener dos claves (kp;KP).

Las claves públicas y privadas se calculan a partir de un número que se obtiene como producto de dos primos grandes haciendo que al momento en que un atacante quiera recuperar el texto claro a partir de criptograma y clave publica tiene que enfrentarse a dicho problema de factorización. Para esto se aplica un algoritmo clave muy sencillo.

La idea del algoritmo es la siguiente: 
Tenemos un mensaje M, empleando un protocolo reversible conocido como patrón de relleno convertimos el mensaje M en un número m menor que otro número dado n. Se genera el mensaje cifrado c: c = m^e  (mod n)

Se obtiene m descifrando el mensaje cifrado c: m = c^d (mod n)

Generación de claves: 
1. Tomamos 2 números primos p y q. Estos tienen que ser aleatorios e impredecibles. Importante impredecibles, porque un proceso puede ser perfectamente aleatorio, pero si se conoce, se puede predecir los valores, y por tanto, resultaría en una baja seguridad. 

2. Calculamos n=p*q. 

3. Calculamos φ(n). La función φ de Euler se define como el número de enteros positivos menores o iguales a n y coprimos con n (dos números son coprimos si no tienen ningún divisor común distinto 1 o -1). La función tiene las siguientes propiedades: 
  • φ(1)=1. 
  •  φ(p)= p-1 si p es primo. 
  •  φ(p^k)= (p-1)*p^(k-1) si p es primo y k un número natural. 
  •  φ(m*n)=φ(m)φ(n) si m y n son primos. 

De esta forma nos queda que para nuestro n=p*q: φ(n)=(p-1)*(q-1) 

4.-Escogemos un número e menor que φ(n) y que sea coprimo con φ(n). Este número será dado a conocer como exponente de la clave pública. 

5.-Obtenemos un número d mediante aritmética modular tal que d = e^(-1) mod(φ(n)) o lo que es lo mismo (d*e)-1 tiene que ser divisible por φ(n). 

De esta forma tenemos la clave pública formada por (n,e) y la privada formada por (n,d). 

p = 61 1º nº primo privado 
q = 53 2º nº primo privado 
n = p*q = 3233 producto p×q 
e = 17 exponente público 
d = 2753 exponente privado 

La clave pública (e, n). La clave privada es (d, n). La función de cifrado e. 
encrypt (m) = m^e   (mod) = m^17 (mod 3233)

Donde m es el texto sin cifrar. La función de descifrado es:
decrypt (c) = c^d (mod) = c^2753 (mod 3233)

Donde c es el texto cifrado. Para cifrar el valor del texto sin cifrar 123, nosotros calculamos:
encrypt (123) = 123^17 (mod 3233) =855

Para descifrar el valor del texto cifrado, nosotros calculamos:
decrypt (855) = 855^2753 (mod 3233) = 123

Como hemos mencionado anteriormente, RSA requiere de un esquema de rellenado dado que sino M puede conducirnos a textos cifrados inseguros. Hay múltiples algoritmos de rellenado, entre ellos podemos destacar OAEP (Optimal Asymetric Encription Padding) o SAEP (Simplified Asymetric Encryption Padding). 

No hay comentarios:

Publicar un comentario

PCI/DSS

En nuestra actualidad las tarjetas como medio de pago se han vuelto muy populares y a su vez fundamentales, es por eso que dos grandes co...