Cifrado Asimétrico
Introducción:
Como
ya se había visto antes, el cifrado asimétrico es un que requiere dos llaves,
una para cifrar y la otra para descifrar. Dentro de este hay algunos tipos de
cifrado que ayudan a que sea más seguro la decodificación de datos y lleguen al
destinatario de con mayor seguridad y la certeza de que si la llave no fue
divulgada solo el que la tiene va a poder descifrar satisfactoriamente.
Desarrollo:
El
cifrado asimétrico, también conocido como “Criptografía de Llave Pública”,
difiere principalmente de su homólogo el cifrado simétrico, en que esta emplea
dos llaves en vez de una para ejercer las funciones de cifrado y descifrado de
la información.
En
el cifrado asimétrico cada usuario que interviene en la comunicación cuanta con
dos llaves: una llave pública y una llave privada. La llave publica es utiliza para cifrar la
información y llave privada para descifrar la información.
RSA
RSA
es un algoritmo de cifrado asimétrico, o de clave pública, y es uno de los
algoritmos más utilizados en la actualidad. De hecho, la mayor parte de los
sitios hoy corren sobre SSL/TLS, y permiten la autenticación mediante cifrado
asimétrico basado en RSA.
RSA
sirve para cifrar y descifrar información, y por ello también provee servicios
de autenticidad y de integridad, mediante lo que se conoce cono Infraestructura
de clave pública.
Así
es que RSA, al ser un cifrador asimétrico, trabaja con dos claves, una pública
y una privada. Todo el contenido de texto plano, o contenido sin cifrar, que
sea hecho con la clave pública, podrá ser descifrado mediante la clave privada,
y viceversa, todo contenido cifrado con la clave privada podrá ser descifrado
mediante la clave pública. El nombre RSA proviene de las iniciales de los tres
creadores, Rivest, Shamir y Adleman, allá por 1997.
El
funcionamiento del criptosistema RSA se basa en la dificultad para factorizar
grandes números enteros.
Digamos
que p y q son dos números primos, y d un número entero tal que d se factoriza
en (p-1)*(q-1)). De esta manera, el terceto (p,q,d) representa la clave
privada.
Así,
la clave pública es un doblete (n, e) creado con la clave privada a través de
las siguientes transformaciones:
n = p * q e = 1/d mod((p-1)(q-1))
Digamos
que M es el mensaje por enviar. El mensaje M necesita factorizarse en la clave
n. El descifrado se basa en el teorema de Euler, que estipula que, si M y n se
factorizan, entonces:
M^(phi(n)) = 1 mod(n)
Phi(n)
será la función totient y, en este ejemplo, tendría un valor de (p-1)*(q-1).
Por
lo tanto, es necesario que M no sea un múltiplo de p, q o n. Una solución sería
dividir el mensaje M en bits Mi de manera que la cantidad de números en cada Mi
sea estrictamente inferior a la de p y q. Esto supone entonces que p y q son
grandes, que es lo que sucede en la práctica ya que el principio de RSA yace en
la dificultad de encontrar p y q en un período de tiempo razonable cuando se
conoce n; esto asume que p y q son grandes.
En
la práctica:
Supongamos
que un usuario (llamado Bob) quiere enviar un mensaje M a una persona
(llamémosla Alice). Simplemente necesita obtener la clave pública de Alice
(n,e) y luego calcular el mensaje cifrado c:
c = Me mod(n)
Luego,
Bob envía el mensaje c a Alice, quien es capaz de descifrarlo con su clave
privada (p,q,d):
M = Me*d mod(n) = cd mod(n)
DSS
Es
un sistema de firma digital adoptado como estándar, el cual 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 (Digital Signature Algorithm).
Genera
una firma digital para la autenticación de los documentos electrónicos. Un
resumen de datos de la información (llamado un digesto de mensaje ) se crea
mediante el uso de una función hash
(llamado el Secure Hash estándar , o SHS). El resumen de datos se
utiliza en conjunción con el algoritmo DSA para crear la firma digital que se
envía con el mensaje. La verificación de firmas implica el uso de la misma
función hash.
Generación
de claves:
- Elegir un número primo p de L bits, donde 512 ≤ L ≤ 1024 y L es divisible por 64.
- Elegir un número primo q de 160 bits, tal que p−1 = qz, donde z es algún número natural.
- Elegir h, donde 1 < h < p − 1 tal que g = hz(mod p) > 1.
- Elegir x de forma aleatoria, donde 1 < x < q-1.
- Calcular y = gx(mod p).
- Los datos públicos son p, q, g e y. x es la llave privada.
Parámetros:
- KG claves públicas de grupo. Son comunes y públicas para un grupo de usuarios.
- KU clave pública. Se genera una por usuario a partir de las KG y es pública
- KP clave privada. Es privada de cada usuario, se genera a partir de las anteriores.
- k número aleatorio. Se genera uno para cada firma.
- s y r. Son dos palabras de 160 que forman la firma de un texto.
El
número k permite que el mismo texto del mismo usuario no genere siempre la
misma firma.
Podemos
utilizar la Firma Digital en una gran cantidad de procesos internos de una organización,
así como en la interacción que podemos tener con clientes, proveedores,
gobierno, entidades financieras, etc. procurando optimizar tiempos, reducir
costos, brindar un mejor servicio con la seguridad y validez jurídica.
Diffie-Hellman
El
algoritmo de Diffie-Hellman (en honor a sus creadores, Whitfield Diffie y
Martin Hellman) permite acordar una clave secreta entre dos máquinas, a través
de un canal inseguro y enviando únicamente dos mensajes. La clave secreta
resultante no puede ser descubierta por un atacante, aunque éste obtenga los
dos mensajes enviados por el protocolo. La principal aplicación de este
protocolo es acordar una clave simétrica con la que posteriormente cifrar las
comunicaciones entre dos máquinas.
En
la figura siguiente se muestra un ejemplo de funcionamiento del protocolo
Diffie-Hellman.
Los
valores de “p” y “g” son públicos y cualquier atacante puede conocerlos, pero
esto no supone una vulnerabilidad. Aunque un atacante conociese dichos valores
y capturara los dos mensajes enviados entre las máquinas A y B, no sería capaz
de averiguar la clave secreta.
Curva Elíptica
Las
curvas elípticas son utilizadas para implementar criptosistemas basados en el
logaritmo discreto, con la ventaja de utilizar claves más pequeñas que
repercute directamente en la utilización de menos memoria y hardware más
pequeño.
En
la Criptografía de curvas elípticas, el punto R se utiliza como clave pública
que es la suma de los puntos P y Q, los cuales corresponden a la clave de tipo
privada.
De
este modo, al conocer un punto de una curva, en este caso R, la información
cifrada con este valor no se compromete, ya que la curva elíptica tiene
infinidad de puntos y para poder descifrar un mensaje se necesitan conocer los
parámetros P y Q para obtener su suma y así poder descifrar el mensaje.
En
curvas elípticas, un ataque por fuerza bruta para conseguir la clave privada
consiste en sumar todos los puntos de la curva elíptica hasta obtener como
resultado el punto R. Para evitar que un ataque de este tipo sea exitoso y
lograr que las claves sean lo más eficientes posible se escoge un campo de
Galois lo suficientemente amplio, también se cuida que la curva elíptica
elegida no sea singular, es decir que no pase por el punto cero, y por último
se considera que la curva no sea anómala, es decir que el campo de Galois sobre
el que se define la curva no tenga números racionales.
El
procedimiento para obtener las claves pública y privada es muy similar en la
multiplicación de un punto por un escalar.
De
tal forma que se utiliza un punto de una curva elíptica que sea un generador de
todos los demás puntos de la misma para utilizarla como clave pública junto con
el campo de Galois sobre el que definimos dicha curva y se utiliza un número entero
aleatorio definido sobre el mismo campo de Galois que será la clave privada del
algoritmo.
Así,
se tiene que serán públicos el punto de la curva elíptica, el campo de Galois
sobre el que se define dicha curva y finalmente el punto que se encuentra de
multiplicar el punto generador por la clave privada elegida. La clave privada
será el número entero aleatorio que pertenezca al mismo campo. Se debe
considerar que el campo de Galois elegido debe ser un número primo lo
suficientemente grande como para evitar ataques por fuerza bruta que se puedan
presentar.
Conclusión:
Después
de ver algunos tipos de cifrado del modo asimétrico pudimos concluir que hay
muchas maneras en que se puede cifrar y la única manera de elegir uno es
sabiendo que tan seguro se quiere el mensaje y cómo es que se quiere mandar a través
del Internet.
Referencias:
Diego Córdoba (2016) RSA:
¿CÓMO FUNCIONA ESTE ALGORITMO DE CIFRADO?
Recuperado el 22/10/17, de
https://juncotic.com/rsa-como-funciona-este-algoritmo/
Recuperado el 22/10/17, de
https://juncotic.com/rsa-como-funciona-este-algoritmo/
Jeff (2008) Cifrado por medio
de RSA
Recuperado el 22/10/17, de
http://es.ccm.net/contents/134-cifrado-por-medio-de-rsa
Recuperado el 22/10/17, de
http://es.ccm.net/contents/134-cifrado-por-medio-de-rsa
KarenMellado (2014) Sistema de
cifrado DSS
Recuperado el 22/10/17, de
http://karenmanzanarezmellado.blogspot.mx/2014/03/sistema-de-cifrado-dss.html
Recuperado el 22/10/17, de
http://karenmanzanarezmellado.blogspot.mx/2014/03/sistema-de-cifrado-dss.html
Javier (2011) El algoritmo de
Diffie-Hellman
Recuperado el 22/10/17, de
http://www.javiercampos.es/blog/2011/07/22/el-algoritmo-de-diffie-hellman/
Recuperado el 22/10/17, de
http://www.javiercampos.es/blog/2011/07/22/el-algoritmo-de-diffie-hellman/
Erika Aguillón (2012) 5.7.2
Curvas Elípticas en Criptografía
Recuperado el 22/10/17, de
http://redyseguridad.fi-p.unam.mx/proyectos/criptografia/criptografia/index.php/5-criptografia-asimetrica-o-de-clave-publica/57-curvas-elipticas/572-curvas-elipticas-en-criptografia
Recuperado el 22/10/17, de
http://redyseguridad.fi-p.unam.mx/proyectos/criptografia/criptografia/index.php/5-criptografia-asimetrica-o-de-clave-publica/57-curvas-elipticas/572-curvas-elipticas-en-criptografia
Comentarios
Publicar un comentario