jueves, 25 de octubre de 2012

Cifrado de Flujo - Salsa20

Que es Salsa20?

Es un cifrado de flujo que esta construido por una función pseudo-aleatoria basada en 32-bit, ademas de una adición bit a bit (XOR) y las operaciones de rotación, que asigna un 256- bit clave, un 64-bit nonce  y una posición de corriente de 64-bit a una salida de 512-bit.

Esto le da la ventaja a Salsa20 de que el usuario pueda buscar en cualquier posición en la secuencia de salida de manera eficiente. También ofrece una velocidad de alrededor 4-14 ciclos por byte en software modernos y el rendimiento del hardware es razonable.




The Salsa quarter-round function.
Four parallel copies make a round.

Función

Esta elección de las operaciones se evita la posibilidad de ataques de temporización en las implementaciones de software.
El estado inicial se compone de 8 palabras clave, de 2 palabras de la posición de corriente, 2 palabras de nonce (bits corriente esencialmente adicionales de posición), y 4 palabras fijas. 20 rondas de mezcla producir 16 palabras de salida de flujo de cifrado.



Internamente, el sistema de cifrado usa ademas bit a bit, 32-bit adicion mod 2^32, y constante distancia las operaciones de rotacion en un estado interno de 16 palabras de 32 bits.




Cada ronda consta de cuatro cuartos de vuelta operaciones, realizadas en cualquiera de las columnas o las filas del Estado de 16 palabras, dispuestas como un 4 × 4 matriz. Cada 2 rondas, el patrón se repite. Cada cuarto de vuelta modifica 4 palabras.


La función completa se define como sigue:
******
******

Salsa20 realiza 20 rondas de la mezcla en su entrada. Sin embargo, la reducción de variantes redondas Salsa20 / 8 y Salsa20/12 utilizando 8 y 12 vueltas respectivamente También se han introducido. Estas variantes se introdujeron para complementar la Salsa20 original, no para sustituirlo, y aún más eficaces en los puntos de referencia de la eStream Salsa20 ya competitivo.

A partir de 2012 , no hay ataques publicados sobre Salsa20/12 o el completo Salsa20/20; el mejor ataque conocido  rompe 8 de los 12 o 20 rondas.

En 2005, Paul Crowley informó de un ataque a Salsa20 / 5 con una complejidad de tiempo estimado de 2 165 , y ganó el premio de 1.000 dólares EE.UU. Bernstein para "criptoanálisis Salsa20 más interesante".  Este ataque, y todos los ataques posteriores se basan en diferencial truncado criptoanálisis . En 2006, Fischer, Meier, Berbain, Biasse y Robshaw informó de un ataque a Salsa20 / 6 con la complejidad hora estimada de 2 177 , y un ataque relacionada con llave en Salsa20 / 7 con complejidad hora estimada de 2 217.




Referencias:

jueves, 18 de octubre de 2012

Twofish block cipher

Orígenes

Su diseñador es  Bruce Schneier y fue publicado por primera vez en el año de 1998. Este esta relacionado con el bloque de cifrado blowfish. 

Twofish es un algoritmo de cifrado simétrico de con tamaño de bloque de 128 bits y tamaños de clave de hasta 256 bits.

El algoritmo de Twofish puede hacer lo siguiente:
  • El algoritmo Twofish consta de 16 rondas. La unidad de encriptación / desencriptación, consta de varios modulos operativos.
  • Cifrar los datos a 285 ciclos de reloj por bloque en un Pentium Pro, después de un ciclo de reloj 12700 clave configuración.
  • Cifrar los datos a 26500 ciclos de reloj por bloque en una tarjeta inteligente 6805, después de un ciclo de reloj de 1750 clave de configuración.
Propósitos

Twofish fue diseñado para cumplir con los criterios de diseño del NIST para AES [NIST97b].
  • Un algoritmo simétrico de bloques de 128 bits.
  • Longitudes de clave de 128 bits, 192 bits y 256 bits.
  • Diseño flexible

Twofish ha sido diseñado desde el principio con pre-rendimiento en mente. Es eficaz en una variedad de plataformas formas: 32-bit CPU, tarjetas inteligentes de 8-bits, y dedicado hardware VLSI. Sin embargo, Twofish ha sido diseñado para permitir que varias capas de compensaciones de rendimiento,  dependiendo de la relativa importancia de la velocidad de cifrado, clave de configuración, uso de memoria, etc..

El resultado es un algoritmo muy flexible que puede ser implementado de manera eficiente en una variedad de aplicaciones criptográficas.

Planeacion de llave

La planeacion de la llave de un algoritmo es el mecanismo que distribuye el material de claves a las distintas partes de la cifra que lo necesitan, ampliando el material clave en el proceso. Esto es necesario por tres razones:
  • Hay un menor número de bits de la clave proporcionados como entrada a el sistema de cifrado que se necesitan por el sistema de cifrado.
  • Los bits de clave utilizados en cada serie debe ser único a la redonda, con el fin de evitar ataques [Wag95b].
  • La cifra debe ser seguro frente a un atacante con un conocimiento parcial o control sobre algunos bits de la clave.
La unidad de programación de claves proporciona dos conjuntos diferentes de subclaves: S y K.
La unidad de programación clave junto con la unidad de cifrado / descifrado forma el bloque de cifrado completa.



Medidas Adicionales de Bloque

No existe una definición de Twofish para longitudes de bloque distinto de 128 bits. Mientras que puede ser teóricamente posible extender la construcción de bloque mayor tamaños.





Referencias:
www.schneier.com/paper-twofish-paper.pdf
teal.gmu.edu/courses/ECE646/project/specs_2005/TWOFISH.pdf

jueves, 20 de septiembre de 2012

RSA- Firmas digitales

Para la tarea de esta semana trabaje con lo que es autenticacion desde un web service.






Este es el codigo que utilice:

*************
*************

Al final tuve un error ya que no pude hacer que me identificara al usuario correcto y siempre me marcaba que no era la persona de la que estaba ingresando los datos no era.. :( 

jueves, 13 de septiembre de 2012

RSA

En esta semana trabajamos con algoritmos de clave publica.
La tarea de esta semana era elaborar un cliente-servidor  y un generador de llaves rsa.

El codigo que utilice para generar mis llaves rsa es el siguiente
...
estas son algunas de las claves que me genero:



 este es el codigo que utilice para elaborar el socket

Servidor

..

Cliente

..

Y bien, lo que es respecto al rsa pues las claves si me las genera, pero... (el gran pero llego! D:) tuve problemas al establecer la conexion entre el cliente-servidor y mi generador de claves .__. pero seguire intentado resolverlo, ya que lo necesitare para la siguiene tarea.. :) 




Esto no termina aqui!! #Hedicho!