jairo0920 / trivium

Implementación del algoritmo de cifrado Trivium utilizando Python.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Trivium

Implementación del algoritmo de cifrado Trivium utilizando Python.

Diagrama de Trivium

Algoritmo Trivium

Trivium es un algoritmo de encriptación simétrica creado por Christophe De Cannière and Bart Preneel para el proyecto eSTREAM el cual se llevó a cabo entre los años 2004 y 2008. Este algoritmo está diseñado especialmente para ser implementado fácilmente en hardware, es altamente paralelizable y de licencia libre.

Este algoritmo de cifrado es de tipo Stream Cipher, esto quiere decir que es capaz de generar un keystream de tamaño 264 bits a partir de una llave privada de 80 bits y de un vector inicial de 80 bits. El algoritmo de cifrado se divide en dos partes; la inicialización del estado interno y la generación del keystream. El estado interno está formado por 288 bits.

Stream Cipher

El proceso de inicialización del estado interno S consiste en los siguientes pasos:

  • Se copia la llave secreta K a las primeras 80 localidades del estado interno y se asigna cero a las localidades de 81 a 93: (S1,S2,S3, ... , S93) ← (K1,K2, ... ,K80,0, ... ,0).

  • Se copia el vector inicial IV a las localidades 94 a 173 del estado interno y se asigna cero a las localidades de 174 a 177: (S94,S95,S96, ... , S177) ← (IV1,IV2, ... ,IV80,0, ... ,0).

  • Se asigna cero a las localidades 178 a 285 y uno a las localidades 286 a 288 del estado interno: (S178,S179,S180, ... , S288) ← (0, ... ,0,1,1,1).

El proceso de generación de llave se hace una vez inicializado el estado interno S, donde la operación a + b equivale a la operación lógica OR, y la operación a ∙ b equivale a la operación lógica AND.

Al finalizar cada iteración, se obtiene el bit del keystream al cual se le aplica la operación lógica OR-Exclusiva para el cifrado del texto.

Posteriormente se ejecuta el proceso de generación del keystream 1152 veces y se descartan los bits generados, una vez finalizado el proceso el estado interno ya se encuentra listo para generar información válida.

Uso con Python 2

python2 trivium2.py

Uso con Python 3

python3 trivium3.py

Demo

Demo Trivium

About

Implementación del algoritmo de cifrado Trivium utilizando Python.

License:GNU General Public License v3.0


Languages

Language:Python 100.0%