martes, 27 de noviembre de 2012

Conceptos de criptografía (1era parte)

La criptografía actualmente se encarga del estudio de los algoritmos, protocolos y sistemas que se utilizan para dotar de seguridad a las comunicaciones, a la información y a las entidades que se comunican (José Pastor Franco, Miguel Ángel Sarasa López, José Luis Salazar Riaño,"Criptografía digital: fundamentos y aplicaciones",Ed. Prensas Universitarias de Zaragoza, 1998), permitiendo que los mensajes puedan ser leídos (descifrados) únicamente por el emisor de los mismos y el (o los) destinatario(s) deseado(s), pudiendo estos últimos tener la seguridad de que dichos mensajes proceden de quienes dicen ser los emisores, y que no han sido alterados en el camino. De esta manera, las palabras claves para la criptografía son privacidad, integridad, y autenticidad.




Cifradores simétricos: encriptan y desencriptan la información utilizando la misma clave.

Por ejemplo, digamos que se quiere enviar el texto "gabriel" como mensaje cifrado, utilizando la cadena "0123" como clave.



Caracteres ASCII
Hex
gabriel (código ASCII tomado de aquí) 67  61  62  72  69  65  6C
0123012 (la clave se repite secuencialmente hasta abarcar todos
los caracteres que se desean encriptar)
30  31  32  33  30  31  32
Algoritmo de cifrado: OR Exclusivo (Mensaje cifrado) 57  50  50  41  59  54  5E 
Tabla 1: Encriptación del mensaje


Caracteres ASCII
Hex
Mensaje cifrado 57  50  50  41  59  54  5E
0123012 (la clave se repite secuencialmente hasta abarcar todos
los caracteres que se desean encriptar)
30  31  32  33  30  31  32
Algoritmo de descifrado: OR Exclusivo (Mensaje original) 67  61  62  72  69  65  6C
Tabla 2: Desencriptación del mensaje

Ejemplo 1: Encriptando con RC4 (algoritmo de cifrado simétrico por stream) mediante la API de OpenSSL

a) Envío la cadena de caracteres "HolaMundo" al archivo y lo leo con "cat":


b) Encripto el archivo "mensaje" tomándolo como entrada, y obteniendo "mensaje.enc" como salida (cuando pide la contraseña de encriptación se puede poner cualquier cadena de texto, yo puse "0123"):


c) Compruebo la encriptación del archivo:


d) Desencripto y comparo:


Ejemplo 2: Encriptando con 3DES (algoritmo de cifrado simétrico por bloques, que cifra un cierto mensaje 3 veces utilizando claves aleatorias de 64 bits, razón por la cual es un tanto "lento").


Ejemplo 3: Lo mismo con el algoritmo -más moderno y rápido- AES (cifrado simétrico por bloques) de 256 bits en modo CBC:


Ejemplo 4: Finalmente, el mismo procedimiento pero esta vez utilizando el algoritmo de cifrado simétrico por bloques Blowfish (que por defecto utiliza claves de 448 bits):

No hay comentarios:

Publicar un comentario