You are on page 1of 24

Criptografía

Criptografía asimétrica

1 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Criptografía asimétrica:
Se caracteriza por usar una clave para cifrar y otra para
descifrar.
Una clave no se derivará de la otra.

Las dos claves diferentes están matemáticamente


relacionadas.
Lo que una cifra la otra lo descifra, y viceversa.
Conociendo una, no se puede deducir la otra

Una de las claves se hace pública y la otra se mantiene


privada.

2 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Criptografía asimétrica:
Debilidades: Muy lento, ineficiente para grandes
cantidades de datos
Emplean longitudes de clave mucho mayores que los simétricos.
La complejidad de cálculo que usan los hace más lentos que los
algoritmos de cifrado simétricos.

Fortalezas: Facilita la gestión de claves, permite firma


electrónica
Los métodos asimétricos se emplean para intercambiar la clave
de sesión mientras que los simétricos para el intercambio de
información dentro de una sesión.

3 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Criptografía asimétrica:
Se crea para evitar el problema del intercambio de claves
del cifrado simétrico.
Resuelve la incapacidad de escalabilidad del cifrado
simétrico:
Se necesitan solo n pares de claves para cada n personas.
En el cifrado simétrico n(n – 1)/2 claves para comunicar n
personas.

No sufre por la interceptación de claves.


No requiere una relación previa entre las partes para el
manejo de las claves.
4 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Características Criptografía asimétrica:
La clave pública debe ser conocida por todo el mundo,
pero la clave privada sólo debe conocerla su propietario.
A partir del conocimiento de la clave pública o del texto
cifrado no se puede obtener la clave privada.
Lo que se cifra con una clave, sólo puede descifrarse con
la otra.
Cualquiera puede cifrar un mensaje con la clave pública,
pero sólo el propietario de la clave privada puede
descifrarlo (Proporciona confidencialidad).

5 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Características Criptografía asimétrica:
Si el propietario de la clave privada cifra con ella un
mensaje, cualquiera puede descifrarlo con la
correspondiente clave pública (Proporciona integridad,
autenticación y no repudio).

6 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Características Criptografía asimétrica:
Usa funciones unidireccionales:
Su cálculo directo es viable, pero el cálculo de la función inversa
tiene tal complejidad que resulta imposible.

Problemas matemáticos difíciles de resolver:


Factorización: descomponer un número grande en sus factores
primos.
Logaritmo discreto: obtener el exponente al que ha sido elevado
una base para dar un resultado.
Mochila tramposa: obtener los sumandos que han dado origen a
una suma.

7 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Aplicaciones:
Cifrado de la información:
Sin tener que transmitir la clave de decodificación, lo cual permite su
uso en canales inseguros.
La clave que se hace pública es aquella que permite codificar los
mensajes, mientras que la clave privada es aquella que permite
descifrarlos.

Clave publica Clave privada

Origen Cifrar Descifrar Destino

8 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Aplicaciones:
Autenticación de mensajes:
Nos permiten obtener una firma digital a partir de un mensaje.
La firma es mucho más pequeña que el mensaje original, y es muy difícil
encontrar otro mensaje de lugar a la misma.
La clave de descifrado se hará pública previamente, y la clave que se
emplea para cifrar es la clave privada.

Clave privada Clave publica

Origen Cifrar Descifrar Destino

9 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Algoritmos asimétricos:
Algoritmo RSA:
Debe su nombre a: Ronald Rivest, Adi Shamir y Leonard Adleman.
Las primeras versiones de PGP lo incorporaban como método de
cifrado y firma digital.
Se le tiene como uno de los algoritmos asimétricos más seguros.
RSA se basa en la dificultad para factorizar grandes números.
El atacante se enfrentará a un problema de factorización.

10 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Algoritmos asimétricos:
Algoritmo de Diffie-Hellman:
Se emplea fundamentalmente para acordar una clave común
entre dos interlocutores, a través de un canal de comunicación
inseguro.
Algoritmo:
A escoge un número aleatorio x, y envía a B el valor αx(mod p)

B escoge un número aleatorio y envía a A el valor αy(mod p)

B recoge α x y calcula K = (α x)y (mod p).

A recoge α y y calcula K = (α y)x (mod p).

No son necesarias claves públicas en el sentido estricto, sino una


información compartida por los dos comunicantes.
11 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Algoritmos asimétricos:
Algoritmo de ElGamal:
Fue diseñado en un principio para producir firmas digitales, pero
posteriormente se extendió también para codificar mensajes.
Se basa en el problema de los logaritmos discretos
Algoritmo:
Se escoge un número primo n y dos números aleatorios p y x menores que n.
Se calcula entonces la expresión:

y = px (mod n)
La clave pública es (p, y, n), mientras que la clave privada es x.

12 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Algoritmos asimétricos:
Algoritmo de ElGamal (Firmas Digitales):
Algoritmo:
Escoger un número k aleatorio, tal que mcd(k,n-1) =1, y calcular:

a = pk(mod n)
b = (m-xa)k-1 (mod (n-1))
La firma la constituye el par (a, b). En cuanto al valor k, debe mantenerse en
secreto y ser diferente cada vez.

La firma se verifica comprobando que:

yaab = pm (mod n)

13 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Algoritmos asimétricos:
Algoritmo de ElGamal (Cifrado):
Algoritmo:
Para cifrar el mensaje m se escoge primero un número aleatorio k primo
relativo con (n-1), que también será mantenido en secreto. Calculamos:

a = pk(mod n)
b = ykm (mod n)
El par (a, b) es el texto cifrado, de doble longitud que el texto original.

Para descifrar se calcula

m = b * a-x (mod n)

14 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Algoritmos asimétricos:
Algoritmo de Rabin:
Se basa en el problema de calcular raíces cuadradas al modulo de
un número compuesto. Este problema se ha demostrado que es
equivalente al de la factorización de dicho número.
Algoritmo:
Escogemos dos números primos, p y q, ambos congruentes con 3 módulo 4.

Estos primos son la clave privada. La clave pública es su producto, n = pq.

Para cifrar un mensaje m, se calcula:

c = m2 (mod n)

15 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Algoritmos asimétricos:
Algoritmo de DSA (Digital Signature Algorithm):
Es una parte el estándar de firma digital DSS (Digital Signature
Standard).
Este algoritmo, propuesto por el NIST, data de 1991, es una
variante del método asimétrico de ElGamal.
Algoritmo:
Por un lado se generará la clave pública compuesta por (p, q, α, y). Y por otro
la clave privada a.

Se genera la firma con la cual podrá operar el emisor.

El destinatario efectuará las operaciones oportunas, suponiendo que conoce


la clave pública (p, q, α , y), para verificar la autenticidad de la firma.

16 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía

Ejercicio

17 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Cifrado de llave privada y publica:
Vamos a usar la utilería openssl para general las llaves
privadas y públicas para el ejercicio:
Generar la llave privada.
Generar la llave pública.
Cifrar el archivo original.
Descifrar el archivo generado.

18 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Cifrado de llave privada y publica:
Generar la llave privada:

19 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Cifrado de llave privada y publica:
Generar la llave privada:

20 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Cifrado de llave privada y publica:
Generar la llave pública:

21 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Cifrado de llave privada y publica:
Generar la llave pública:

22 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Cifrado de llave privada y publica:
Cifrar el archivo original:

23 aulas.aprendiendoaprogramar.com apdaza@gmail.com
Criptografía
Cifrado de llave privada y publica:
Descifrar el archivo generado:

24 aulas.aprendiendoaprogramar.com apdaza@gmail.com

You might also like