Encriptacion de Mensages

September 23, 2017 | Autor: Daniel Chacón | Categoría: Computer Programming, Informatica, Matematica, Programacion
Share Embed


Descripción

Uso de Matrices para encriptado de mensajes

Desde que el ser humano logró comunicarse, existió la necesidad de hacer
selectivos sus comentarios. El hombre de las cavernas coloreaba sus
pinturas rupestres según a quien estaban dirigidas informando sobre métodos
de ataque y caza de sus presas.
Los egipcios tenían una codificación de sus jeroglíficos dependiendo de la
clase social, existiendo codificaciones para el pueblo común, los
emperadores, faraones, etc.
Ya en nuestra época, también se hizo necesaria esta necesidad, tanto en
épocas de guerra, para informar sobre ubicación de tropas sin que el
enemigo lo sepa, como en la transmisión de señales de TV donde solo el
cliente con abono pago puede ver ciertos canales "codificados".

¿Codificar o encriptar?

Codificar significa convertir una cierta información en otra a través del
uso de una tabla que le asigna un código uní unívoco a cada carácter del
mensaje. En cambio encriptar, es pasar el mensaje por algún algoritmo,
normalmente matemático, el cual lo modifica de tal manera que se hace muy
difícil obtener el mensaje original.
En ambos procesos, el destinatario del mismo, debe conocer o la tabla de
codificación o la clave de encriptado.
La desventaja de la codificación es su vulnerabilidad, ya que a cada
carácter le corresponde el mismo código, por lo tanto sabiendo esto, una
persona entenada, estudiando el código final sabría que caracteres son los
mas repetidos (como la "a" y los espacios) y podría obtener un mensaje
original comprensible, con lo que "rompería" la codificación.
En el caso del encriptado, esto no sucedería, ya que se toma un grupo de
caracteres del mensaje y se los encripta en grupo, de modo tal que el
código final de un determinado carácter, depende de los que tenía a su lado
en el mensaje original. Por ejemplo en las palabras ALAS y GALAS las "A"´s
no tendrían asignado el mismo código.
Por otro lado en ambos sistemas se hace necesario junto con el mensaje
enviar un dato importante tal como es el destinatario hacia quien se dirige
el mensaje, ya que, si no es para mi, para que lo voy a decodificar y dado
que esto hace selectiva la necesidad de decodificarlo o no, este dato debe
ser uno de los primeros que se debe enviar.
Esta serie de códigos que conforman nuestro mensaje, se trasladarán de
destinador a destinatario a través de algún canal de comunicación que puede
alterar el contenido del mismo, recordemos que en el caso del encriptado,
un dato mal no significa un carácter mal, sino un grupo de caracteres
errado. Para evitar esto se utilizan distintas técnicas como son entre
otras el control de paridad de la cantidad de caracteres que son enviados
la cual debe coincidir con la paridad de los caracteres recibidos y de no
ser así, solicitar el re-envío del mensaje.
Todo esto que comentamos se denomina "protocolo de comunicación", en este
trabajo se desarrollará un protocolo personal, que no respeta los
estándares, para enviar un mensaje codificado, encriptado y selectivo.


Codificación


Para esto se utilizará una codificación estándar en comunicaciones que es
la ASCII a la cual se le asigna a cada carácter un número y es un código
abierto, o sea, de uso público.
Como se ve en la tabla que se adjunta, se encuentran codificadas todas las
letras del alfabeto en mayúsculas y minúsculas como los números, signos de
puntuación y caracteres especiales.
Para nuestro protocolo utilizaremos los caracteres codificados bajo los
números decimales 32 al 90 para utilizar solamente números de 2 dígitos.














Tabla de caracteres ASCII






Descripción del protocolo


A continuación se muestra la estructura que tomará la organización de los
datos en nuestro mensaje.

AAAA MMMMMM..........MMMMM CCCC



Donde:

1) Dirección codificada del destinatario, 2 caracteres lo que representan
100 destinos posibles.
La dirección 00 se suele denominar dirección masiva o de broadcast y
tiene la particularidad de notificar de algo a todos los destinatarios
a la vez. Como por ejemplo enviar un cambio en la clave de encriptado,
que es un dato que todos los usuarios de este método deben saber.
2) Cuerpo del mensaje, esta compuesto por los caracteres que lo componen
pero afectados por la tabla de codificación y a la vez encriptados con
el código.
3) Control, son 2 caracteres codificados que informan de la cantidad de
caracteres de la que está compuesto el mensaje, esto forma parte del
control de errores de la transmisión. Al recibir el mensaje se cuentan
los caracteres recibidos y deben coincidir con el número de control
incluido




en la recepción, el cual no interviene dentro del conteo. Para este
control se incluyen los caracteres del mensaje junto con los de
dirección, como así también los caracteres de control.

Es de notar que solamente el bloque correspondiente al mensaje está
encriptado, ya que la dirección es necesaria que sea rápidamente reconocida
para decidir si iniciar el procedimiento de decodificación del mensaje, en
caso de ser el destinatario, o desecharlo por no ser para mi.
Algo parecido ocurre con los caracteres de control, necesito tener acceso
rápidamente a ellos para constatar si lo recibido corresponde fielmente a
lo transmitido y en caso contrario, solicitar el re envío del mismo.
Decodificar un mensaje con un posible error implica una pérdida de tiempo y
recursos, ya que es muy posible que su contenido sea ilegible.

Con respecto a este control, existen formas mas seguras de verificar y
hasta de corregir errores en los mensajes recibidos, para esto se usan
algoritmos matemáticos con polinomios llamados CRC (siglas de código de
redundancia cíclica).


Encriptado del mensaje


Vamos a explicar la teoría de este procedimiento.
Sea "A" una matriz de orden N x N elegida de tal manera que sus elementos
pertenezcan a los naturales, tenga inversa y los elementos de ella también
pertenezcan a los naturales [1], sea "X" una matriz fila (orden 1 x N)
formada por los caracteres, codificados según tabla ASCII, del mensaje.

X * A = Y Donde X es de orden 1 x N (Vector fila) y A de orden N x N es
la matriz de encriptado.
Y será el vector fila del mensaje a transmitir de orden 1 x N.

El destinatario debe realizar la siguiente operación.

Y*A-1 = (X*A ) * A-1 = X Donde A-1 es la matriz inversa de A.

Recordemos que:

(A)-1 * (A) = (I) Matriz identidad del mismo orden que A

Observamos que obtenemos nuevamente el vector fila X que no es mas que
nuestro mensaje original.
Solo resta comparar si la cantidad de caracteres enviados es igual a la
cantidad de caracteres recibidos y decodificar con la tabla ASCII para
reconstruir el mensaje original enviado por nuestro emisor.

Veamos un ejemplo para que quede claro.
Supongamos que queremos enviar al destinatario 19 el mensaje "A LA TARDE EN
EL BOSQUE ".

1) Codifiquemos con la tabla ASCII el número 19 y cada carácter del
mensaje.

19: 49, 57
A LA TARDE EN EL BOSQUE: 65, 32, 76, 65, 32, 84, 65, 82, 68, 69, 32, 69,
78, 32, 69, 76 ,32, 66, 79, 83, 81, 85, 69, 32[2]
La cantidad de caracteres a transmitir son 26 que codificado sería: 50,54.

2) Elegimos la matriz A de 3x3


1 -2 2
-1 1 3 = A
1 -1 -4

3) Formamos los vectores fila con los caracteres codificados del mensaje

Y1: (65 32 76)
Y2: (65 32 84)
Y3: (65 82 68)
Y4: (69 32 69)
Y5: (78 32 69)
Y6: (76 32 66)
Y7: (79 83 81)
Y8: (85 69 32)[3]

4) Realizamos la operación Y * A

1 -2 2
(65 32 76) * -1 1 3 = (109 -174 -78) =X1
1 -1 -4

1 -2 2
(65 32 84) * -1 1 3 = (117 -182 -110) =X2
1 -1 -4

1 -2 2
(65 82 68) * -1 1 3 = (51 -116 104) =X3
1 -1 -4

1 -2 2
(69 32 69) * -1 1 3 = (106 -175 -42) =X4
1 -1 -4

1 -2 2
(78 32 69) * -1 1 3 = (115 -193 -24) =X5
1 -1 -4

1 -2 2
(76 32 66) * -1 1 3 = (110 -186 -16) =X6
1 -1 -4

1 -2 2
(79 83 81) * -1 1 3 = (77 -156 83) =X7
1 -1 -4

1 -2 2
(85 69 32) * -1 1 3 = (48 -133 249) =X8
1 -1 -4

4) La cadena de números a enviar es:

49, 57, X1, X2, X3, X4, X5, X6, X7, X8, 50, 54

XXXX : Dirección del destinatario (Codificada)

XXXX : Mensaje (Codificado y encriptado)

XXXX : Caracteres de control (Codificado)



La trama de números a enviar sería:

49, 57, 109, -174, -78, 117, -182, -110, 51, -116, 104, 106, -175, -42,
115, -193, -24, 110, -186, -16, 77, -156, 83, 48, -133, 249, 50, 54

Ahora hagamos el camino contrario para obtener el mensaje original.
1) Verifico la dirección del destinatario:

49, 57 que corresponden a los caracteres 1 y 9 o sea la dirección 19 en
decimal.

2) Sabiendo la matriz con la que se encriptó el mensaje, obtengo su
inversa:

1 -2 2
A= -1 1 3
1 -1 -4

Obtengo su inversa

-1 -10 -8
A-1 = -1 -6 -5
0 -1 -1


3) Cuento los caracteres del mensaje recibido y lo comparo con el código
de verificación incluido al final del mensaje.

2 caracteres de dirección + 24 caracteres de mensaje = 26 caracteres
Código de verificación 50, 54 correspondientes a 2 y 6 o sea 26
caracteres

El mensaje no tiene errores por lo que se puede tomar como válido.

4) Inicio el proceso de desencriptado usando los vectores fila recibidos
y la matriz inversa obtenida

-1 -10 -8
(109 -174 -78) * -1 -6 -5 = (65 32 76) =Y1
0 -1 -1

-1 -10 -8
(117 -182 -110) * -1 -6 -5 = (65 32 84) =Y2
0 -1 -1

-1 -10 -8
(51 -116 104) * -1 -6 -5 = (65 82 68) =Y3
0 -1 -1

-1 -10 -8
(106 -175 -42) * -1 -6 -5 = (69 32 69) =Y4
0 -1 -1

-1 -10 -8
(115 -193 -24) * -1 -6 -5 = (78 32 69) =Y5
0 -1 -1

-1 -10 -8
(110 -186 -16) * -1 -6 -5 = (76 32 66) =Y6
0 -1 -1

-1 -10 -8
(77 -156 83) * -1 -6 -5 = (79 83 81) =Y7
0 -1 -1

-1 -10 -8
(48 -133 249) * -1 -6 -5 = (85 69 32) =Y8
0 -1 -1

5) Agrupamos los códigos obtenidos y buscamos su carácter correspondiente
en la tabla ASCII.

65: A, 32: esp, 76: L, 65: A, 32: esp, 84: T, 65: A, 82; R, 68:D, 69: E,
32: esp, 69: E, 78: N, 32: esp, 69: E, 76: L, 32: esp, 66: B, 79: O, 83: S,
81: Q, 85: U, 69: E, 32: esp

Obteniendo el mensaje " A LA TARDE EN EL BOSQUE " que era nuestra cadena de
caracteres original.








-----------------------
[1] Se busca esta característica para que al obtener los elementos
encriptados estos sean enteros y no tener inconvenientes con el código
obtenido del carácter final.
[2] Se observa la vulnerabilidad de esta codificación ya que los códigos
32: espacio y 65: "a" son los mas repetidos.
[3] La cantidad de caracteres del mensaje a encriptar no es múltiplo de 3
por lo que se completa al final con caracteres espacio (ASCII 32).

-----------------------
1

2

3



-1
Lihat lebih banyak...

Comentarios

Copyright © 2017 DATOSPDF Inc.