Wednesday, July 3, 2013

RSA

Nota: Como falte un día de clase tuve que investigar mucho por mi cuenta. Lamentablemente no pude terminar la parte de los sockets y autentificación que  es la parte mas importante, de igual forma dejo la información  conseguida al igual el código de RSA para futuras retroalimentaciones.

RSA

 

El RSA fue inventado por Ron Rivest, Adi Shamir, Leonard Adleman. De sus iniciales proviene el nombre de RSA. Su algoritmo basado de la factorizacion entera  sirve para poder cifrar claves publicas y con el paso de el tiempo esto se hizo un standard en la criptografia y actualmente se usa en protocolos seguros como TLS-SSL, X:509, PKI.

15 meses despues de la creacion del RSA este Whitfield DiffieMartin Hellman  basado del logaritmo discreto crearon un protocolo de cambio seguro de llaves

Algoritmo Asimétrico/Simétrico

 Se dice asimetrico por que cada usuario tiene un par de claves que es publica y privada es decir tanto como emisor y receptor (cliente y servidor) tendremos claves distintas

Intercambio de Clave

  1. El emisor cifra un mensaje con clave publica destino
  2. Se convierte en criptograma
  3. El criptograma solo puede descifrarlo el destinatario
  4. Usa su clave privada , inversa de la publica 
  5. Se recupera el mensaje en destino
  6. Se consigue la confidencialidad 

 

 

Entendiendo  RSA

 Para poder resolver RSA y comprender lo que se me estaba pidiendo tuve que ver varios vídeos de los cuales fueron estos:


Codigo

Referencias

Las referencias se abrirán en una ventana nueva
Encontrar primo
Comprendiendo phi y e
Libro de cripto (pagina 54, esta en inglés, bastante bueno pero muy científico)


Por terminar 

  • autetificación
  • server y sockets 

 

Monday, July 1, 2013

Prueba estadística

Introducción

La prueba estadística, en este caso sirve  para comprobar que tan aleatorio es un número también de esta forma podremos confirmar que nuestras llaves son seguras o no.


Prueba Monobit

Para la realización de esta prueba decidí usar la prueba Monobit ya que ademas de ser simple es cumple bastante el objetivo de la prueba.

La prueba Monobit trata de dar una secuencia de números 0 y 1. El propósito de esto  es determinar si el número de 1 y 0 en una secuencia son aproximadamente la misma que sería de esperar para una secuencia verdaderamente aleatoria. La prueba evalúa la cercanía de la fracción de los que ½, es decir, el número de 1 y 0 en una secuencia debe ser aproximadamente la misma.

Formula: 

Como mi primera tarea tomaba ascii para generar las llaves especificando la cantidad del mensaje para esta prueba fue lo mismo. Preguntar n para determinar el tamaño y posteriormente convertirlo en bits para realizar la prueba Monobit.

Luego para calcular Sn es  la conversión a 1, Los ceros y unos de la secuencia de entrada (ε) se convierten en valores de -1 y 1 y se suman para producirlo 

Por ejemplo, si ε = 1011010101, entonces n = 10 y S n = 1 + (-1) + 1 + 1 + (-1) + 1 + (-1) + 1 + (-1) + 1 = 2
 

Luego calcular el valor de P usando la formula de :

donde Sobs viene siendo el resultado de la primera formula y eso se divide entre la raíz cuadrada de 2. El valor obtenido se compara con 0.01 donde si es 0.01 mayor al resultado la prueba es exitosa de lo contrario no es exitosa.


Código



 


Finalmente

Se dice que cosas realmente aleatorias no se pueden comprimir en conclusión  entre mas aleatorio menos compresion. Asi que comprimi las llaves que se generan para esta prueba se generaron 50,000 claves


y el peso de el archivo difieren aproximadamente en un 16%

En conclusión mis llaves no son del todo aleatorias y mis llaves tampoco son del todo seguras.

Puntos por terminar

  • Realizar un ataque a mi propio mensaje encriptado
  • Realizar una gráfica con los valores obtenidos usando Gnuplot

Referencias