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
- 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.
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).
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