Ensayo Cifrado Asimetrico

INSTITUTO POLITÉCNICO NACIONAL
CENTRO DE ESTUDIOS CIENTÍFICOS Y TECNOLÓGICOS
“JUAN DE DIOS BATIZ” NO.9

MATERIA: SEGURIDAD WEB

PROFESOR: JUAN MANUEL CRUZ MENDOZA

ALUMNA: SOSA ESTRADA MARÍA FERNANDA

GRUPO 5IM6

INVESTIGACION

FECHA DE ENTREGA: 26 DE OCTUBRE DEL 2017

Resultado de imagen para seguridad web
CIFRADO ASIMETRICO

Introducción

En este ensayo hablaremos del tema de cifrados asimetricos, el cual, como estudiante de la carrera en Programación, considero que es un tema de suma importancia aprender, ya que es un tema basico para desarrollar la seguirdad informatica.

A continuación, definiremos los conceptos más importantes de cifrado asimetrico y los diferentes sistemas de cifrado para entender más del tema.

Sistema de cifrado asimétrico

El principal problema con los sistemas de cifrado simétrico no está ligado a su seguridad, sino al intercambio de claves. Una vez que el remitente y el destinatario hayan intercambiado las claves pueden usarlas para comunicarse con seguridad, pero ¿qué canal de comunicación que sea seguro han usado para «comunicar» la clave entre ellos? Sería mucho más fácil para un atacante intentar interceptar una clave que probar las posibles.
Los sistemas de cifrado de clave pública se inventaron con el fin de evitar por completo el problema del intercambio de claves. Un sistema de cifrado de clave pública usa un par de claves para el envío de mensajes. Las dos claves pertenecen a la misma persona a la que se ha enviado el mensaje. Una clave es pública y se puede entregar a cualquier persona. La otra clave es privada y el propietario debe guardarla para que nadie tenga acceso a ella. El remitente usa la clave pública del destinatario para cifrar el mensaje, y una vez cifrado, sólo la clave privada del destinatario podrá descifrar este mensaje.

Este protocolo resuelve el problema del intercambio de claves, que es inherente a los sistemas de cifrado simétricos. No hay necesidad de que el remitente y el destinatario tengan que ponerse de acuerdo en una clave. Todo lo que se requiere es que, antes de iniciar la comunicación secreta, el remitente consiga una copia de la clave pública del destinatario. Es más, esa misma clave pública puede ser usada por cualquiera que desee comunicarse con su propietario. Por tanto, se necesitarán sólo n pares de claves por cada n personas que deseen comunicarse entre ellas.

Los sistemas de cifrado de clave pública se basan en funciones-trampa de un sólo sentido. Una función de un sólo sentido es aquélla cuya computación es fácil, mientras que invertir la función es extremadamente difícil. Por ejemplo, es fácil multiplicar dos números primos juntos para sacar uno compuesto, pero es difícil factorizar uno compuesto en sus componentes primos. Una función-trampa de un sentido es algo parecido, pero tiene una trampa. Esto quiere decir que si se conociera alguna pieza de la información, sería fácil computar el inverso. Por ejemplo, si tenemos un número compuesto por dos factores primarios y conocemos uno de los factores, es fácil computar el segundo. Dado un cifrado de clave pública basado en factorización de números primos, la clave pública contiene un número compuesto de dos factores primos grandes, y el algoritmo de cifrado usa ese compuesto para cifrar el mensaje. El algoritmo para descifrar el mensaje requiere el conocimiento de los factores primos, para que el descifrado sea fácil si poseemos la clave privada que contiene uno de los factores, pero extremadamente difícil en caso contrario.


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 (en forma autenticada preferentemente), y otra privada, la cual es guardada en secreto por su propietario.

Una clave es un número de gran tamaño, que una persona puede conceptualizar como un mensaje digital, como un archivo binario o como una cadena de bits o bytes.

Cuando se envía un mensaje, el emisor busca la clave pública de cifrado del receptor y una vez que dicho mensaje llega al receptor, éste se ocupa de descifrarlo usando su clave oculta.

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.

Emplea expresiones exponenciales en aritmética modular.

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.
La computación cuántica podría proveer una solución a este problema de factorización.

El algoritmo RSA funciona de la siguiente manera:

  1. Inicialmente es necesario generar aleatoriamente dos números primos grandes, a los que llamaremos p y q.
  2. A continuación calcularemos n como producto de p y q: n = p * q
  3. Se calcula fi: fi(n)=(p-1)(q-1)
  4. 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 numero impar por el que dividir fi(n) que de cero como resto.
  5. 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.
  6. El par de números (e,n) son la clave pública.
  7. El par de números (d,n) son la clave privada.
  8. Cifrado: La función de cifrado es C = M^e mod n
  9. Descifrado: La función de descifrado es M = C^d mod n
Ejemplo con números pequeños
  1. Escogemos dos números primos, por ejemplo p=3 y q=11.
  2. n = 3 * 11 = 33
  3. Se calcula fi
    fi(n) = (3-1) * (11-1) = 20
  4. .Buscamos e: 20/1=0, 20/3=6.67. e=3
  5. Calculamos d como el inverso multiplicativo módulo z de e, por ejemplo, sustituyendo Y por 1,2,3,… hasta que se obtenga un valor entero en la expresión: d = ((Y * fi(n)) + 1) / e = ( Y * 20 + 1) / 3 = 21 / 3 = 7
  6. e=3 y n=33 son la clave pública
  7. d=7 y n=33 son la clave privada
  8. Cifrado: Mensaje = 5, C = M^e mod n = 5^3 mod 33 = 26
  9. Descifrado: M = C^d mod n = 26^7 mod 33 = 8031810176 mod 33 = 5

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.


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. A continuación se muestra la información capturada por un atacante en el escenario de la Figura 46:
(ga mod p) = 8 → (5a mod 23) = 8
(gb mod p) = 19 → (5b mod 23) = 19
A partir de las ecuaciones anteriores, intentar calcular los valores de “a” y “b” es lo que se conoce como el problema del algoritmo discreto, un problema que se cree computacionalmente intratable y cuya notación es la siguiente:
a = log discg (ga mod p) = log disc 5 (8)
b = log discg (gb mod p) = log disc 5 (19)
Con los valores del ejemplo sí que es posible encontrar la solución, ya que se ha escogido un número primo “p” muy pequeño (p = 23), y se sabe que “a” y “b” son menores que “p”. Por lo tanto, para obtener los valores secretos en este ejemplo, un atacante tendría que probar sólo 22 posibles valores.
Por suerte, las implementaciones actuales del protocolo Diffie-Hellman utilizan números primos muy grandes, lo que impide a un atacante calcular los valores de “a” y “b”. El valor “g” no necesita ser grande, y en la práctica su valor es 2 ó 5. En el RFC 3526 aparecen publicados los números primos que deben utilizarse. A modo de ejemplo, se facilita aquí el número primo de 1024 bytes propuesto. El valor “g” utilizado es 2:
p = 28192 – 28128 – 1 + 264 x ((28062 pi) + 4743158)

Sistema de cifrado 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.
Nos permite asegurarnos que nuestra comunicación llegue a su destino sin que haya sido modificada, es decir, la integridad. Las funciones hash transforman un mensaje de  longitud arbitraria en un número fijo de bits, de tal forma que dos mensajes diferentes  generaran dos secuencias HASH distintas. Así vamos a identificar de forma única al mensaje original.

Al mensaje le aplicamos un algoritmo de HASH, al que le encriptamos con nuestra clave privada, este código de bits es lo que llamamos firma electrónica.

¿Cómo funciona?
Generación de claves:
  1. Elegir un número primo p de L bits, donde 512 ≤ L ≤ 1024 y L es divisible por 64.
  2. Elegir un número primo q de 160 bits, tal que p−1 = qz, donde z es algún número natural.
  3. Elegir h, donde 1 < h < p − 1 tal que g = hz(mod p) > 1.
  4. Elegir x de forma aleatoria, donde 1 < x < q-1.
  5. 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.

Criptografía de Curva Elíptica

La Criptografía de Curva Elíptica (del inglés: Elliptic curve cryptography, ECC) es una variante de la criptografía asimétrica o de clave pública basada en las matemáticas de las curvas elípticas. Sus autores argumentan que la CCE puede ser más rápida y usar claves más cortas que los métodos antiguos — como RSA — al tiempo que proporcionan un nivel de seguridad equivalente. La utilización de curvas elípticas en criptografía fue propuesta de forma independiente por Neal Koblitz y Victor Miller en 1985.
Los sistemas de criptografía asimétrica o de clave pública utiliza dos claves distintas: una de ellas puede ser pública, la otra es privada. La posesión de la clave pública no proporciona suficiente información para determinar cuál es la clave privada. Este tipo de sistemas se basa en la dificultad de encontrar la solución a ciertos problemas matemáticos. Uno de estos problemas es el llamado logaritmo discreto. Encontrar el valor de b dada la ecuación {\displaystyle a^{b}=c}, cuando a y c son valores conocidos, puede ser un problema de complejidad exponencial para ciertos grupos finitos de gran tamaño; mientras el problema inverso, la exponenciación discreta puede ser evaluado eficientemente usando por ejemplo exponenciación binaria
Una curva elíptica es una curva plana definida por una ecuación de la forma
{\displaystyle y^{2}=x^{3}+ax+b\,}
Con el conjunto de puntos G que forman la curva (i.e., todas las soluciones de la ecuación más un punto O, llamado punto en el infinito) más una operación aditiva +, se forma un grupo abeliano. Si las coordenadas x e y se escogen desde un cuerpo finito, entonces estamos en presencia de un grupo abeliano finito. El problema del logaritmo discreto sobre este conjunto de puntos (PLDCE) se cree que es más difícil de resolver que el correspondiente a los cuerpos finitos (PLD). De esta manera, las longitudes de claves en criptografía de curva elíptica pueden ser más cortas con un nivel de seguridad comparable.

Bibliografia

Desconocido (2016) Capítulo 2. Conceptos, Guía de ”Gnu Privacy Guard''. Recuperado el 25 de octubre de 2017, de https://www.gnupg.org/gph/es/manual/x212.html

Maiorano, A (2007, Sept.) ¿Qué es RSA?, Seguridad Informatica. Recuperado el 24 de octubre de 2017 de https://seguinfo.wordpress.com/2007/09/14/%C2%BFque-es-rsa/

Campos, J. (2011, Jul.) El algortimo de Diffie-Hellman, Seguridad. Recuperado el 24 de octubre de 2017 de http://www.javiercampos.es/blog/2011/07/22/el-algoritmo-de-diffie-hellman/

Manzanarez, K ( 2015, Agos.) Sistema de cifrado DSS. Sistemas de Cifrado. Recuperado el 23 de octubre del 2017 de .http://karenmanzanarezmellado.blogspot.mx/2014/03/preguntas-capitulo-4.html

Maiorano, A (2007, Oct.) ¿Qué es la criptografia de curva eliptica?, Seguridad Informatica. Recuperado el 24 de octubre de 2017 de https://seguinfo.wordpress.com/2007/10/02/%C2%BFque-es-la-criptografia-de-curva-eliptica/

Comentarios

Entradas más populares de este blog

Ensayo sobre Cifrado

Conclusiones Scrum

Ensayo HASH