martes, 6 de noviembre de 2012

martes, 9 de octubre de 2012



HOLA BIENVENIDOS A NUESTRO BLOG.


En este blog encontrarás los diferentes algoritmos criptográficos que se vieron hasta esta altura del semestre en la materia de Criptografía. Los cuales se automatizaron en diferentes lenguajes de programación: python, java y Dr. Racket.


Si estas interesado en ver su funcionamiento en este blog encontrarás los links para poder descargar los ejecutables , para que puedas hacer uso de ellos.


Ahora bien los algoritmos que encontrarás aquí son:


-ALGORITMO HILL

-ALGORITMO VERNAM

-ALGORITMO VIGENERE

-ALGORITMO AFÍN

-ALGORITMOS DE TRANSPOSICIÓN



La finalidad de este trabajo es para que tu como usuario puedas aprender sobre los algoritmos de cifrado que existen y conozcas la utilidad que pueden llegar a tener estos métodos, tanto en la actualidad como en el tiempo que se utilizaron.






Para su mejor comprensión daremos una explicación de lo que trata cada algoritmo de cifrado, que es lo que hace y como lo hace.

Los links de descarga para los programas, se encuentran AL FINAL de la explicación de cada algoritmo.


Esperamos tus comentarios y que verdaderamente disfrutes de este blog.


Sitio diseñado por:


- ALFARO DAMIAN JORGE ALEJANDRO
- AMÉZQUITA CANSECO JORGE
- REYES GÓMEZ DAVID ALEJANDRO
- VALVERDE DIEGO

    

ALGORITMO VERNAM





El cifrado de Vernam también llamado máscara desechable es parecido al cifrado de Vigenere solo que aquí la clave es aleatoria y tan larga como el mensaje, además se debe utilizar una sola vez. Claude Shannon en su trabajo “Teoría de las comunicaciones secretas” demostró que estas características hacen que este cifrado sea perfectamente seguro ya que no hay manera de criptoanalizarlo (es matemáticamente complicado).



Ejemplo:




Considerando los valores numéricos asignados a cada carácter del alfabeto castellano de la tabla de la figura 2.2.20, el cifrado de Vernam se realiza de la siguiente manera (figura 2.2.21):




Figura 2.2.20 Asignación de un valor numérico a cada carácter del alfabeto



Clave: EDSAS A CETNIEVED



MCla: BARRO Y CAÑABRAVA




Figura 2.2.21 Ejemplo del cifrado de Vernam(suma módulo 27)



Cripto: FDKRH Y EEHNJVVZD



Otra forma de realizar el cifrado de Vernam es realizando la suma módulo 2; para el ejemplo siguiente emplearemos el código ASCII (figura 2.2.22) para obtener el equivalente binario de cada carácter (figura 2.2.23)




Figura 2.2.22 Código ASCII



Ejemplo:



MCla: A LA ORILLA DE




Figura 2.2.23 Ejemplo del cifrado de Vernam (suma módulo 2)


DESCARGUE EL PROGRAMA VERNAM AQUI

ALGORITMO VIGENERE




Este cifrado consiste en realizar la suma (módulo el número de caracteres en el alfabeto) de la clave y el texto en claro una vez que se ha asignado un valor entero a cada carácter del alfabeto.

Ejemplo:

Considerando los valores numéricos asignados a cada carácter del alfabeto castellano de la tabla mostrada en la figura 2.2.15, el cifrado de Vigenere se realiza tal y como se muestra en la figura 2.2.16:
Figura 2.2.15 Asignación de un valor numérico a cada caracter del alfabeto



Clave: ERA

MCla: ENTONCES UNA ALDEA




Figura 2.2.16 Ejemplo del cifrado de Vigenere

Cripto: IETSECIK UQR AOUEE

El MCla se recupera realizando la resta (módulo el número de caracteres en el alfabeto) de la clave y el criptograma.

Otra manera de realizar el cifrado de un mensaje con el método de Vigenere es la siguiente:

Se utiliza una clave y una matriz cuadrada que contiene 26 alfabetos distribuidos tal y como muestra la figura 2.2.17.

Figura 2.2.17 Cuadrado de Tritemio


Ejemplo:

Clave: ERA

MCla: ENTONCES UNA ALDEA

El cifrado se realiza caracter por caracter, para ello a cada caracter del mensaje en claro se le hace coincidir con un caracter de la clave, si ésta es más corta que el mensaje en claro se repite las veces que sea necesario (figura 2.2.18 a).

El primer renglón de la matriz corresponde a los caracteres de la clave y la primera columna a los caracteres del mensaje en claro (figura 2.2.18 b).

El criptograma es aquel carácter que resulte de la intersección del renglón y la columna de donde se encuentren los caracteres de la clave y el mensaje en claro respectivamente (figura 2.2.18 b).


Figura 2.2.18 Cifrado de Vigenere utilizando el cuadrado de Tritemio

El mensaje en claro se recupera haciendo coincidir cada caracter del criptograma con uno de la clave (figura 2.2.19 a) y buscando en la columna de la letra de la clave el caracter del criptograma, la primera letra que esté en el renglón de dicho caracter es la letra del mensaje en claro, véase la figura 2.2.19 b:

Por ejemplo para buscar el MCla que corresponde al criptograma obtenido en el ejercicio anterior:


Figura 2.2.19 Recuperación del mensaje en claro del cifrado de Vigenere
DESCARGUE EL PROGRAMA "VIGENERE" AQUI

lunes, 8 de octubre de 2012

ALGORITMO AFÍN


ALGORITMO AFÍN


El algoritmo de cifrado Afín es mono alfabético, simétrico y es por sustitución.
Un criptosistema afín es determinado por dos enteros a y b con las siguientes características:




  •          a ≥ 0
  •          b ≤ n
  •          n es el tamaño del alfabeto.
  •          Además a y n deben ser coprimos.


Para cifrar un mensaje con el algoritmo Afín, a cada caracter se le aplica la siguiente fórmula:

Ci = (a * Mi + b )mod n
Por ejemplo:

si a=3, b=5 y n=26

Y el mensaje a cifrar (Mi) es "hola"
Toda la aritmética debe ser realizada modulo n en este caso 26.

Las letras se numeran en orden alfabético de la siguiente forma:

A
B
C
D
E
F
G
H
I
J
K
L
M
0
1
2
3
4
5
6
7
8
9
10
11
12
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
13
14
15
16
17
18
19
20
21
22
23
24
25

Sustituyendo valores en la función para cifrar nuetra funcion queda: 
Ci = (3 * Mi + 5 ) mod 26

Calculamos la sustitucion para cada caracter:

H =7  => C(7)   = 7  * 3 + 5 = 26 mod 26 = 0   => A
O =14=> C(14) = 14 * 3 + 5 = 47 mod 26 = 21 => V
L =11 => C(11) = 11 * 3 + 5 = 38 mod 26 = 12 => M
A =0  => C(0)   = 0  * 3  + 5 = 5 mod  26 = 5   => F

El mensaje "hola" cifradoado es "AVMF"

Este es un sistema mono alfabético pues cualquier ocurrencia de un determinado caracter será reemplazado siempre por un único caracter en el mensaje cifrado ya que Ci = a Mi + b es una función. 






El requerimiento de que a y n sean coprimos asegura que la función Ci = a Mi +b sea inyectiva ya que si la función no fuera inyectiva un cierto caracter en el mensaje cifrado podría corresponder a más de un caracter en el mensaje original y no podríamos descifrar el mensaje. 

  • NOTA:Dos números 'a' y 'b' son coprimos si su Máximo común divisor es 1. El    concepto de números coprimos es de gran importancia en el mundo de la criptografía, este y otros conceptos de la teoría de números son utilizados muy a menudo para encriptar y desencriptar información. 

En nuestro ejemplo 3 y 26 son coprimos mientras que 10 y 26 no lo son (MCD=2). 

La función para descifrar es Mi = ( Ci − b )* a^−1 (mod n ) donde a^−1 es el inverso multiplicativo de a modulo n. 



En el caso de a = 3 => a^−1 = 9 ya que 3 · 9 = 27 = 1 modulo 26, por lo tanto la función de descifrado será: 


Mi = ( Ci − 5) * 9 (mod 26)



PROGRAMA AFIN AQUÍ Y MANUAL DE USUARIO EN ESTE ENLACE

ALGORITMO HILL




Este sistema está basado en el álgebra lineal y ha sido importante en la historia de la criptografía. Fue Inventado por Lester S. Hill en 1929, y fue el primer sistema criptográfico polialfabético que era práctico para trabajar con más de tres símbolos simultáneamente.

Este sistema es polialfabético pues puede darse que un mismo caracter en un mensaje a enviar se encripte en dos caracteres distintos en el mensaje encriptado.
Suponiendo que trabajamos con un alfabeto de 26 caracteres.
Las letras se numeran en orden alfabético de forma tal que A=0, B=1, ... ,Z=25





Se elije un entero d que determina bloques de d elementos que son tratados como un vector de d dimensiones.

Se elije de forma aleatoria una matriz de d × d elementos los cuales serán la clave a utilizar.
Los elementos de la matriz de d × d serán enteros entre 0 y 25, además la matriz M debe ser invertible en .

Para la encriptación, el texto es dividido en bloques de d elementos los cuales se multiplican por la matriz d × d

Todas las operaciones aritméticas se realizan en la forma modulo 26, es decir que 26=0, 27=1, 28=2 etc.

Dado un mensaje a encriptar debemos tomar bloques del mensaje de "d" caracteres y aplicar:
M×Pi=C, donde C es el código cifrado para el mensaje Pi

Ejemplo:


Si tomamos la matriz    como matriz de claves.



Para encriptar el mensaje "CODIGO" debemos encriptar los seis caracteres de "CODIGO" en bloques de 3 caracteres cada uno, el primer bloque

El primer bloque "COD" se codificara como "WLP"



El segundo bloque "IGO" se codificara como "GSE"

Luego 'CODIGO' encriptado equivale a 'WLPGSE'.

Observar que las dos "O" se codificaran de forma diferente.

Para desencriptar el método es idéntico al anterior pero usando la matriz inversa de la usada para encriptar.

Cálculo de la matriz inversa

Antes que nada debemos verificar que la matriz elegida sea invertible en modulo 26. Hay una forma relativamente sencilla de averiguar esto a través del cálculo del determinante. Si el determinante de la matriz es 0 o tiene factores comunes con el módulo (en el caso de 26 los factores son 2 y 13), entonces la matriz no puede utilizarse. Al ser 2 uno de los factores de 26 muchas matrices no podrán utilizarse (no servirán todas en las que su determinante sea 0, un múltiplo de 2 o un múltiplo de 13)
Para ver si es invertible calculo el determinante de A



5 (23 · 13 – 3 ·11) – 17 (9 · 13 – 3 · 2) + 20 (9 · 11 – 23 · 2) = 

1215 – 1734 + 1060 = 503

503 = 9 mod 26

La matriz A es invertible en modulo 26 ya que 26 y 9 son coprimos
Para hallar la inversa de la matriz modulo 26, utilizamos la fórmula 
Donde CT es la matriz de cofactores de A transpuesta
Hay que tener en cuenta que debe realizarse en modulo 26

por lo tanto para el ejemplo la inversa de 9 (mod 26) es 3 (mod 26) ya que

9 (mod 26) · 3 (mod 26) = 27 mod 26 = 1 (mod 26)

Por lo tanto 3 es la inversa multiplicativa de 9 en modulo 26


Para calcular C hay que calcular los cofactores de A







Ahora aplicamos la formula de la inversa







Esta última es la matriz que utilizamos para desencriptar



PROGRAMA HILL AQUI

sábado, 6 de octubre de 2012

ALGORITMOS DE TRANSPOSICION

Algoritmos de Transposición


A diferencia de los algoritmos de sustitución en donde los caracteres que conforman el mensaje en claro son sustituidos por otros, los algoritmos de transposición los cambian de posición dentro del mismo mensaje dando lugar al criptograma el cual no puede ser comprendido a simple vista.


TRANSPOSICIÓN SIMPLE


El procedimiento para realizar la transposición simple es el siguiente:


1.    El mensaje en claro se reescribe en dos renglones: la primera letra en el primer renglón, la segunda en el segundo renglón, la tercera en el primer renglón, la cuarta en el segundo renglón y así uno y uno hasta acabar con todos los caracteres del mensaje en claro.


2.    Se reescribe el mensaje por renglones.




La figura 2.2.25 muestra un ejemplo de transposición simple:





Figura 2.2.25 Ejemplo de transposición simple


Para recuperar el criptograma se realiza lo siguiente:


1.    Se obtiene un número ´n´ de la siguiente manera: el número de caracteres que conforman el criptograma se divide entre dos, al resultado se le suma el residuo de la división.


2.    Se toman los primeros n caracteres del criptograma y se colocan en el primer renglón, los restantes se colocan en un segundo renglón.


3.    El mensaje en claro se conforma tomando uno y uno de los caracteres de cada renglón.


En la figura 2.2.26 se muestra la recuperación del MCla a partir del criptograma obtenido en el ejemplo de la figura 2.2.25.



 
 





Figura 2.2.26 Obtención del MCla de una transposición simple

Para realizar la transposición doble tenemos que llevar a cabo el mismo procedimiento dos veces arriba mencionado.




PARA DESCARGAR EL PROGRAMA DE TRANSPOSICIÓN, PULSE AQUI


Mas info sobre algoritmos de transposicion en este link