jueves, 30 de agosto de 2012

Tarea2:

 La tarea 2 es checar si las claves que genera nuestro otp (one time pad) realmente es aleatoria.

 La clave evaluada fue la siguiente:


Esta clave es generada del programa anterior con el siguiente código:

Funciona leyendo las claves del archivo llamado key.txt pasandoselo a cada uno de los test.



Primero yo realice un test sencillo que se llama Monobit:

Monobit

Detecta los ceros y los unos que se encuentran en la cadena binaria, sustituyendo los ceros que encuentre por -1, asi realizando una suma. La aparición de ceros y unos en la secuencia global deberan de ser igualmente probables

Datos a tener:

n = tamaño de la clave binaria
ε =La secuencia de bits que se esta probando

Procedimiento:

1. Como mencione se buscan los ceros y se sustituyen por -1y se realiza una suma, ejemplo:
   lista=[1,1,0,0,1,0,1]
   quedaría:
   lista=[11,-1-1,1-11]
 y se realiza la suma de la lista

2-Se calcula la prueba estadística:





3. Se calcula p_value ( erfc es la función error complementaria.)


4.Si P - value > 0.01, la secuencia  es aleatoria.

Código:

Captura de pantalla de la prueba:



También utilice otras dos pruebas que es la de Poker y la de frecuencia de Bloques

Frecuencia de Bloques

En la prueba de bloques los ceros y unos deberan de ser igualmente probables.
 Datos:

n - largo de la secuencia
m - el largo de cada bloque
ε - secuencia de bits generada

Recomendaciones:










Procedimiento:

1. Se parte la prueba e bloques de un cierto tamaño se calcula de la siguiente manera:
  

2. Se determina la proporción de unos:


3. Se calcula la chi2=X2


4.  Se calcula la p_value:






Código

Captura de pantalla



Prueba de Póker

Lo que hace la prueba de póker es dividir la clave en numeros de 4 bist, por ejemplo si yo tengo esta:

0101000001100011

se divide de la siguiente manera :
0101 0000 0110 0011

entonces como se divide en 4 hay 16 posibles resulados que pueden salir y esos 16 resultados son contados las veces que estan o el número de frecuencias de cada uno.

La formula que se realiza es la siuiente:

en donde:
m = es el tamaño de la división de la secuencia en este caso 4
n = lóngitud o tamaño de la secuencia binaria
k = es la división de m entre n

Pasos:

1. Se divide la serie de número binarios en secciones de 4 numeros (0000).
2. Se buscan las frecuencias de los 16 diferentes numeros que se pueden encontrar
3. La frecuencia se eleva al cuadrado
4. Se realiza lo que es la ecuación anterior:

         x2=(16/k)(frecuencias al cuadrado)-k

La prueba se pasa cuando 1.03 < x < 57.4

Captura de pantalla


Con otra cantidad de claves:

Monobit



Frecuencia de Bloques



Poker test




La clave pasa las pruebas eso quiere decir que es segura.

Referencias:

Link1
Link2
LInk3

jueves, 23 de agosto de 2012

One time Pad

One-time pad (OTP), also called Vernam-cipher or the perfect cipher, is a crypto algorithm where plaintext is combined with a random key. It is the only known method to perform mathematically unbreakable encryption. Used by Special Operations teams and resistance groups in WW2, popular with intelligence agencies and their spies during the Cold War and beyond, protecting diplomatic and military communications around the world for many decades, the one-time pad gained a reputation as a simple yet solid encryption system with an absolute security which is unmatched by today's modern crypto algorithms. Whatever technological progress may come in the future, one-time pad encryption is, and will remain, the only system to provide real long-term message security.
We can only talk about one-time pad if some important rules are followed. If these rules are applied correctly, the one-time pad can be proven unbreakable (see Claude Shannon's "Communication Theory of Secrecy Systems"). Even infinite computational power and infinite time cannot break one-time pad encryption, simply because it is mathematically impossible. However, if only one of these rules is disregarded, the cipher is no longer unbreakable.
  • The key is at least as long as the message or data that must be encrypted.
  • The key is truly random (not generated by a simple computer function or such)
  • Key and plaintext are calculated modulo 10 (digits), modulo 26 (letters) or modulo 2 (binary)
  • Each key is used only once, and both sender and receiver must destroy their key after use.
  • There should only be two copies of the key: one for the sender and one for the receiver (some exceptions exist for multiple receivers.
One-Time-Pad-(xor)

Code:
To start the program asks the number of keys that we will generate randomly, in my case is 2.






The Pograma generates two keys and saves them in a file and copy this file, when you do the copy deletes the original key.

Copies were created by users, print the message we send to encrypt.
Bob sends the encrypted message to Ana.

eliminates the key used 










 Ana receives and decrypts the message, the key used is the same.












Repeat the above using all the keys, and ends when all keys are deleted.













Image where the program ends

empty files


miércoles, 22 de agosto de 2012

Funciones trigonométricas 

Las funciones trigonométricas se definen con el fin de extender el tema abarcado por las razones trigonométricas a todos los números reales y complejos.

Toman un gran papel en lo que es:


  • La física
  • La Astronomía
  • Cartografía, etc...


Existen 6 funciones trigonométricas básicas las cuales son las siguientes:



A continuación se presentaran las equivalencias de cada una de las funciones trigonométricas.


Equivalencias de la función seno



Equivalencias de la función coseno


Equivalencias de la función tangente



Equivalencias de la función cotangente



Equivalencias de la función secante



Equivalencias de la función cosecante





Funciones graficadas con gnuplot


seno:

Para graficar con Gnuplot:

Como vemos arriba en el rango de [-10:10, pude ser modificado para poder ver la función en un rango mayor.

Gráfica que nos arroja:



coseno




tangente





cotangente






cosecante




 secantes