Cifrado Asimetrico
Introducción
La protección de la información siempre ha sido una importante preocupación, desde esconder una carta personal hasta proteger información confidencial de algo. Existen muchas maneras para hacerlo, algunas de estas lo que intentan es ocultar la información, como guardar papeles en una caja fuerte, para que así personas externas no tengan acceso, sin embargo hay otros casos en los que cualquiera puede acceder a la información, pero solo algunos verdaderamente la entienden, a esta técnica se le llama criptografía. El presente trabajo expone algunos métodos de cifrado asimétrico usados en la informática.Cifrado Asimétrico
El cifrado asimétrico es un tipo de criptografía donde se
emplea dos llaves diferentes en cada uno de los extremos de la comunicación.
Cada usuario tendrá una clave pública y otra privada. La clave privada tendrá
que ser protegida y guardada por el propio usuario, será secreta y no la deberá
conocer nadie. La clave pública será accesible a todos los usuarios del sistema
de comunicación. Estos algoritmos funcionan o están basados en funciones
matemáticas fáciles de resolver pero muy complicadas realizarlo en sentido
inverso, a menos que se conozca la llave. Las claves públicas y privadas se
generan simultáneamente y están ligadas la una a la otra. Esta relación debe
ser muy compleja para que resulte muy difícil que obtengamos una a partir de la
otra.
Entonces si ciframos con una llave privada, el mensaje solo
podrá descifrar con la llave pública que se le asocie y se puede hacer de forma
viceversa.
La ventaja del cifrado asimétrico sobre el simétrico radica
en que la clave pública puede ser conocida por todo el mundo, no así la
privada, sin embargo, en el cifrado simétrico deben conocer la misma clave los
dos usuarios. Este tipo de sistemas criptográficos usa algoritmos bastante
complejos que generan a partir de la frase de paso (la contraseña) la clave
privada y pública que pueden tener perfectamente un tamaño de 2048bits.
Un ejemplo de este sistema es el de poder firmar documentos,
certificando que el emisor es quien dice ser, firmando con la clave privada y
verificando la identidad con la pública.
Algunos de los algoritmos de este tipo de cifrado son los
siguientes:
- Diffie-Hellman
- RSA
- DSA
- ElGamal
- Merkle-Hellman
- Knapsack
RSA
El sistema criptográfico con clave pública RSA es un
algoritmo asimétrico cifrador de bloques, que utiliza una clave pública, la
cual se distribuye, y otra privada, la cual es guardada en secreto por su
propietario.
Los mensajes enviados usando el algoritmo RSA se representan
mediante números y el funcionamiento se basa en el producto de dos números
primos grandes (mayores que 10100) elegidos al azar para conformar la clave de
descifrado.
La seguridad de este algoritmo radica en que no hay maneras
rápidas conocidas de factorizar un número grande en sus factores primos
utilizando computadoras tradicionales.
El algoritmo RSA es un algoritmo de clave pública
desarrollado en 1977 en el MIT por Ronald Rivest, Adi Shamir y Leonard Adelman.
Fue registrado el 20 de Septiembre de 1983. El 20 de
Septiembre del 2000, tras 17 años, expiró la patente RSA, pasando a ser un
algoritmo de dominio público.
Este popular sistema se basa en el problema matemático de la
factorización de números grandes.

El algoritmo RSA funciona de la siguiente manera:
Inicialmente es necesario generar aleatoriamente dos números
primos grandes, a los que llamaremos p y q.
A continuación calcularemos n como producto de p y q: n = p
* q
Se calcula fi: fi(n)=(p-1)(q-1)
Se calcula un número natural e de manera que MCD(e, fi(n))=1
, es decir e debe ser primo relativo de fi(n).
Es lo mismo que buscar un número impar por el que dividir fi(n)
que de cero como resto.
Mediante el algoritmo extendido de Euclides se calcula d:
e.d mod fi(n)=1 Puede calcularse d=((Y*fi(n))+1)/e para Y=1,2,3,… hasta
encontrar un d entero.
El par de números (e,n) son la clave pública.
El par de números (d,n) son la clave privada.
Cifrado: La función de cifrado es C = M^e mod n
Descifrado: La función de descifrado es M = C^d mod n
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.
El protocolo de Diffie-Hellman fue publicado en 1976.
Actualmente se conoce que es vulnerable a ataques de hombre en medio (MitM): un
atacante podría situarse entre ambas máquinas y acordar una clave simétrica con
cada una de las partes, haciéndose pasar por el host A de cara al host B y
viceversa. Una vez establecidas las 2 claves simétricas, el atacante haría de puente
entre los 2 hosts, descifrando toda la comunicación y volviéndola a cifrar para
enviársela al otro host.
Para corregir la vulnerabilidad del protocolo, éste debe ser
utilizado conjuntamente con algún sistema que autentique los mensajes. Esto
ocurre, por ejemplo, durante el establecimiento de la asociación HIP, donde los
paquetes R1 e I2, además de contener los mensajes de Diffie-Hellman, están
firmados digitalmente.
DSS-DSA
En 1991 el NIST propuso un estándar para firma digital
(Digital Signature Standard, DSS), siendo su algoritmo el DSA, en 1994 este
algoritmo fue anunciado formalmente como estándar y debe ser utilizado
únicamente para generar firmas digitales. El algoritmo se apoya en el uso de
funciones hash y está documentado en el FIPS 186. Este algoritmo como su nombre
lo indica, sirve para firmar y no para cifrar información. Una desventaja de
este algoritmo es que requiere mucho más tiempo de cómputo que RSA.
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 clave privada.
FIRMA
- Elegir un número aleatorio k, donde 1 < k < q.
- Calcular r = (gk mod p)mod q.
- Calcular s = k-1(H(m)+r*x) mod q, donde H(m) es la función hash SHA-1 aplicada al mensaje m.
- La firma es el par (r, s).
- Si r ó s es cero, se vuelve a repetir el procedimiento.
VERIFICACIÓN
- Calcular w = (s)-1(mod q).
- Calcular u1 = H(m)*w(mod q).
- Calcular u2 = r*w(mod q).
- Calcular v = [gu1*yu2mod p] mod q.
- La firma es válida si v = r.
Este tipo de criptografía como una alternativa a los cripto-sistemas de clave pública clásicos como el RSA y el ElGamal, tanto por la disminución del tamaño de las claves que se requieren como por el abanico de grupos que ofrecen en el mismo cuerpo base.
Hoy en día podemos encontrar sistemas criptográficos de curvas elípticas en protocolos reconocidos como TLS, PGP y SSH. También el bitcoin y otras cripto-divisas se basan en esta criptografía de curva elíptica.
Antes de que la criptografía de curva elíptica (ECC) se hiciera popular, casi todos los algoritmos de criptografía de clave pública se basaban en RSA, DSA y DH. Estos son sistemas criptográficos alternativos basados en aritmética modular.
Si la característica del cuerpo es distinta de 22 y de 33, usando transformaciones lineales de las variables, la ecuación de la curva se puede expresar como
y2=x3+ax+b ,a,b ∈K,
Existen muchos tipos de grupos. Los que nos interesan se denominan “grupos cíclicos”. Un grupo cíclico se caracteriza porque todos sus elementos se pueden obtener mediante un sólo elemento, llamado generador. Si la operación es la multiplicación, se denomina grupo cíclico multiplicativo. Como ejemplo, podemos tomar el grupo formado por las cuatro raíces cuartas de 1: +1,-1,+i,-i (i es la raíz cuadrada de uno). El número i puede servir de multiplicador.
En efecto:
i*(+1) = i
i*(+i) = -1
i*(-1) = -i
i*(-i) = 1
El concepto de grupo multiplicativo nos permite complicar la obtención de logaritmos. Supongamos un grupo G con n elementos, y sea b un generador. Eso significa que podemos obtener todos los elementos del grupo como {1, b, b^2, b^3 … b^(n-1)}. Es decir, habrá un número entero k de forma que podamos escribir g=b^k para cualquier número g del grupo. En realidad, existen muchos números enteros k que cumplan esta propiedad. Por ejemplo, el número k’=k+n también nos vale, puesto que b^(k+n)=(b^k)*(b^n),y b^n=1. Esto nos dice que cualesquiera dos enteros k,k´ capaces de representar el elemento g son congruentes módulo n (o dicho de otra forma: nos dan el mismo resto al dividirlos por n).
Bibliografía
GenbetaDEV(24/08/2017) Tipos de criptografía, obtenido de: https://www.genbetadev.com/seguridad-informatica/tipos-de-criptografia-simetrica-asimetrica-e-hibrida
Gersson Ribera(21/10/2017) Cartografía simétrica y asimétrica, obtenido de:
https://infosegur.wordpress.com/unidad-4/criptografia-simetrica-y-asimetrica/
Universidad Politécnica de Madrid(21/10/2017) Criptografía con curvas elípticas, obtenido de:
http://www.criptored.upm.es/crypt4you/temas/ECC/leccion1/leccion1.htm
https://infosegur.wordpress.com/unidad-4/criptografia-simetrica-y-asimetrica/
http://www.criptored.upm.es/crypt4you/temas/ECC/leccion1/leccion1.htm

Comentarios
Publicar un comentario