Mostrando entradas con la etiqueta Seguridad de la información y criptografía. Mostrar todas las entradas
Mostrando entradas con la etiqueta Seguridad de la información y criptografía. Mostrar todas las entradas

miércoles, 24 de octubre de 2012

Report 3


Para esta semana teniamos que seleccionar un cifrado de flujo para investigar sobre el y más que nada investigar más a fondo acerca de estos temas:



  • Origenes
  • ¿Cuál fue la razon por la que se propuso?
  • Como trabaja
  • ¿Cuál es la matemática que se usa?
  • Ejemplo 
  • Ataques y vulnerabilidades
En mi caso seleccione el cifrado Turing.

Stream cipher: Turing

Origenes de Turing 
El cifrado de Turing fue desarrollado por Gregory G. Rose and Philip Hawkes  de Qualcomm para CDMA. El año en que fue creado fue entre el 2000 y 20003.

¿Cuál fue la razon por la que se propuso?

Fue diseñado para que fuera uno de los software más rapidos y para alcanzar alrededor de 5,5 ciclos / byte en algunos procesadores x86.  

También para ser al mismo tiempo:
  • El software es muy rápido en los ordenadores de productos básicos
  • Utilizán en muy poca RAM en procesadores embebidos
  • Explotán el paralelismo para permitir la implementación hardware rápido.

Está diseñado para satisfacer las necesidades de aplicaciones integradas tales como encriptación de voz en los teléfonos inalámbricos que ponen severas restricciones en la cantidad de potencia de procesamiento, espacios de programa y la memoria disponible para los algoritmos de cifrado de software.
Acerca de  Turing

Se compone principalmente del Registro de desplzamiento lineal con realimentación lo cual se originó con el diseño de Sober.

Turing utiliza una caja S se deriva principalmente de la utilizada en  Sober-t32.


Structur



El cifrado de flujo Turing se integra de cuatro componentes claves los cuales son:
  • carga
  • descarga vector de inicialización
  • un LFSR
  • una llave de filtro no lineal (NLF)


A continuación se muestra una imagen en donde se muestra un diagrama de bloques de las dos últimas:

Matemáticas usada


Consideraciones Byte Orden

El cifrado de Turing utiliza operaciones nativas de procesador en los elementos de datos del tamaño de palabr, pero se espera que acepten claves que son simplemente cadenas de bytes y para producir un flujo de bytes como salida para el cifrado.

Los estándares de Internet se definen utilizando "big-endian" orden de bytes, en el que el byte más significativo de una cantidad multi-byte aparece primero en la memoria, esto es lo que se elige para Turing.

Link].

Matemáticas usada


Consideraciones Byte Orden

El cifrado de Turing utiliza operaciones nativas de procesador en los elementos de datos del tamaño de palabr, pero se espera que acepten claves que son simplemente cadenas de bytes y para producir un flujo de bytes como salida para el cifrado.

Los estándares de Internet se definen utilizando "big-endian" orden de bytes, en el que el byte más significativo de una cantidad multi-byte aparece primero en la memoria, esto es lo que se elige para Turing.


El "little-endian" máquinas, los bytes de la clave y el vector debe ser ensamblado en palabras, y las palabras de la corriente de salida debe ser revertido antes de ser byte XOR en el búfer.

LFSR de Turing



LFSR puede operar sobre cualquier campo finito, y puede ser más eficiente en software mediante la utilización de un campo finito más adecuado pcon elementos 2W $\mathbf{(GF(2^{w}))}$, donde w está relacionada con el tamaño de los elementos en el procesador subyacente, por lo general bytes o palabras de 32-bit. ara el procesador. Una  opcion buena que encontramos para el campo de Galois  con elementos 2W $\mathbf{(GF(2^{w}))}$  w es el tamaño de los elementos  en el procesador subyacente, generalmente bytes o palabras de 32-bit. 

El campo GF (2 w) puede ser representado como el operador de módulo 2 coeficientes de todos los polinomios con grado menor que w. Esto es, un elemento de un campo está representado por una palabra w bits con bits $\mathbf{a_{w-1},a_{w-2},...a_{1},a_{0}}$ lo que representa el polinomio:

$\mathbf{a_{w-1}x^{w-1}+a_{w-2}x^{w-2}+...+a_{1}x+a_{0}}$

Turing usa 8-nit bytes para representan los elementos de GF(28) y 32-bit que representan a 3 grados polinomios de bytes. El LFSR consiste en 17 palabras de información de estado w=32.


The Nonlinear Filter

Las cajas-S es el unico componente de Turing que es explícitaente no lineal. El filtro no lineal en Turing consta de:
  •  Intensificación de la LFSR y la selección de los 5 canales de entrada 
  • Mezcla las palabras utilizando el Transform1 Pseudo-Hadamard
  • La transformación de los bytes con transformaciones por clave, y mezclando las palabras utilizando cuatro 8 → 32 bits lineales S-boxes
  • Una vez más mezclando las palabras usando la Transformada de Pseudo-Hadamard
  • Intensificación de la LFSR de nuevo y añadir (mod 232) más las palabras de entrada


La Clave-dependiente Transformación de caja S


El cifrado de Turing transforma cada palabra usando logicmente de 8 a 32 cajas-S se aplica a cada byte de la palabra de entrada y XOR.
Las cajas-S se basan al mismo tiempo en un fijo del 8 → 8 bits permutación S-box y un fijo no lineal 8 → 32 Qbox.


Las palabras B, C y D son girados dejados por 8, 16 y 24 bits, respectivamente, antes de la transformación de caja S.

Obtención de la Sbox


Es una permutación de los bytes de entrada y tiene un no linealidad mínimo de 104:


Obtención de la Qbox




El Qbox es un fijo no lineal 8 → 32-bit. Ha sido desarrollado por la Universidad de Tecnología de Queensland en nuestra petición. Se ve mejor como 32 funciones booleanas independientes de los 8 bits de entrada. Los criterios para su desarrollo fueron:
• Las funciones deben ser altamente no lineal (cada uno tiene no linealidad de 114)
• Las funciones deben ser equilibrados
• Las funciones deben ser pares correlacionados






Las  claves dependientes Sboxes


Ventajas y Desventajas

Ventajas:

  • Turing supera la ineficiencia de LFSRs binarios de una manera similar a la de SNOW 2,0 mediante la utilización de un LFSR definido sobre GF ((28) 4) y un número de técnicas para grandemente 
  • aumentar la velocidad de generación de la secuencia pseudo-aleatoria en el software de un general 
  • procesador.
  • Turing permite un equilibrio entre el uso de la aplicación de memoria pequeña o  muy alta velocidad utilizando pre-calculados tablas.



Referencia

Link1
LInk2
Link3
LInk4
LInk5

jueves, 20 de septiembre de 2012

Tarea 5

En esta semana se trabajo realizando un webservice, para esto utilice PHP y mysql


 El siguiente es el código para la conexión de la base de datos, en donde use mi contraseña.
Después tenemos lo que es el programa en si, por un lado el usuario podemos generar un challege que seria en este caso un numero random asignado a una variable x, el programa me da la opción de descargar el script, que correremos para poder generar el response. También tenemos que seleccionar el usuario antes de picarle submit.


Ahora el codigo del script:

Código de la base de datos:


Capturas de imagenes:

Primero que nada tenemos la interfaz :P, en donde nos da la opción de descargar el script, para poder correrlo.


Ya descargado le picamos en Generate para generar nuestra x que nos salio 38:




Ahora vamos a correr el script y nos pide x, en este caso ponemos la que se nos genero arriba, la d y la n son de la clave privada que esa nos la dieron al momento de crear un usuario en mi caso blanka.



Nos arroja un resultado que es r=response, lo pondremos donde viene la R que significa response.


 Le damos a submit y si soy yo :D




Y por ejemplo si pongo un usuario q no es correcto ya que no tengo sus claves privadas me sale q no soy :P



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