Investigación sobre Mecanismos de encriptación y funciones hash

UNIVERSIDAD GERARDO BARRIOS


FACULTAD DE CIENCIA Y TECNOLOGIA
INGENIERIA EN SISTEMAS Y REDES INFORMATICAS
“Programación Computacional IV”

Mecanismos de encriptación y Funciones Hash.

Integrantes:
                 Cristian Junior Castro Carranza
                  Meybelin Dayana Claros Perdomo
                                         Arnoldo Enrique Segura Arias
      Jonathan José Villegas Umanzor
     Gerardo Enrique Villalta Segovia




San Miguel, mayo de 2017

Objetivos.
            Objetivo general
            Dar a conocer la funcionalidad que tienen los mecanismos de encriptación y las funciones hash.
            Objetivos específicos.
-          Mostrar ejemplos sobre los mecanismos de encriptación.
-          Mostrar la funcionalidad y la importancia de las funciones hash.

Mecanismos de encriptación y funciones hash.
¿Qué es una encriptación?
La encriptación es el proceso para volver ilegible información considerada importante. La información una vez encriptada sólo puede leerse aplicándole una clave.

Se trata de una medida de seguridad que es usada para almacenar o transferir información delicada que no debería ser accesible a terceros. Pueden ser contraseñas, números de tarjetas de crédito, conversaciones privadas, etc.

Para encriptar información se utilizan complejas fórmulas matemáticas y para desencriptar, se debe usar una clave como parámetro para esas fórmulas.
El texto plano que está encriptado o cifrado se llama criptograma.
Mecanismos de encriptación y ejemplos de uso.
Gronsfel.
Este método utiliza más de un alfabeto cifrado para poner en clave el mensaje y que se cambia de uno a otro según se pasa de una letra del texto en claro a otra.
Es decir que deben tenerse un conjunto de alfabetos cifrados y una forma de hacer corresponder cada letra del texto original con uno de ellos.
Método de transposición
El método de transposición consiste en reordenar los elementos que forman el texto original, de modo que el criptograma resultante tiene los mismos elementos, pero su nueva colocación impide que se pueda entender.
Ejemplo:
Computación.
Una transposición muy simple, y por tanto poco efectiva, podría consistir en escribir el mensaje al revés, con lo que quedaría:
Nóicatupmoc

Método César
Uno de los sistemas más clásicos de la Historia de esta disciplina: el método César, cuyo origen se sitúa en el siglo I antes de Cristo.
Este sistema se basa en el método de sustitución mono-alfabética, es decir, el proceso de sustitución se lleva a cabo en cada uno de los elementos del texto claro.
En el método César, a cada letra le corresponde la que está 3 posiciones por delante en un proceso circular que recorre todo el alfabeto. Por ejemplo, a la letra «a» le corresponde la «d», a la «b» la «e», y así sucesivamente. Cuando hablamos de proceso circular nos referimos a que, si llegamos al final del alfabeto, por ejemplo, la «z», se entiende que volvemos al principio del mismo, por lo que tras contar tres posiciones a la «z» le corresponde la letra «c», a la «y» le corresponde la «b» y a la «x», la «a».

En términos más formales podríamos describir al método César como
Criptograma(i) = Texto_claro(i) + 3 (mod 26),
(i) es la posición de las letras y (mod 26) indica que se trata de una suma módulo 26, en la que 26 es el número de letras del alfabeto que utilizamos.
Para entenderlo más claramente vamos a realizar un sencillo ejemplo:
Texto claro: p a n t a l l a
Criptograma: s d q w d o o d

Como puede apreciarse, este método arrastra las debilidades propias de los algoritmos de sustitución. En vez de utilizar siempre la suma de 3 posiciones podría cambiarse este valor por otro cualquiera. En cualquier caso, y para dar con la solución, podemos acudir a un sencillo criptoanálisis basado en la frecuencia de los elementos del criptograma.
Observamos que la letra que más se repite es la «d». Acudiendo a datos estadísticos del lenguaje nos encontramos con que dos de las letras que más se repiten son las vocales «a» y «e» (tanto en español, como en inglés).
Una prueba básica consiste en ver la diferencia que hay entre el elemento más repetido, la «d», y estas vocales. En el caso de la «a» nos da un valor de 3 posiciones de diferencia, y el valor 25 al calcular la diferencia con la letra «e». Para probar si la solución corresponde a uno de los dos casos más probables, tan solo tenemos que aplicar el mismo método, pero restando. Al restar 25 nos da lo siguiente:
Criptograma: s d q w d o o d
Resta 25: t e r x e p p e
Como vemos, en este caso el intento sería fallido, ya que el proceso nos devuelve un nuevo texto sin sentido. Si ahora lo intentamos con el valor 3, otro de los probables según la frecuencia de las letras, obtenemos la solución.
Criptograma: s d q w d o o d
Resta 3: p a n t a l l a
RSA
En los sistemas tradicionales de cifrado debe comunicarse una clave entre el emisor y el receptor del mensaje, el problema aquí es encontrar un canal seguro para transmitir dicha clave. Este problema viene a resolverse en los sistemas de clave pública la clave de cifrado, pues un tiempo enormemente de ordenador es necesario para encontrar una transformación de descifrado a partir de la de cifrado.
DES
DES fue desarrollado por IBM a mediados de los setenta. Aunque tiene un buen diseño, su tamaño de clave de 56 bits es demasiado pequeño para los patrones de hoy.
DES (Data Encryption Standard) es un mecanismo de encriptación de datos de uso generalizado. Hay muchas implementaciones de hardware y software de DES. Este transforma la información de texto llano en datos encriptados llamados texto cifrado mediante el uso de un algoritmo especial y valor semilla llamado clave. Si el receptor conoce la clave, podrá utilizarla para convertir el texto cifrado en los datos originales. Es un mecanismo de encriptado simétrico.
Chaffing & Winnowing
Esta técnica propuesta por Donald Rivest. Es más, un intento de esquivar las restricciones a la criptografía en EE. UU. (y otros países) que una propuesta razonable debido al tamaño de los mensajes resultantes.
El término inglés “winnowing” se tomará como aventar es decir separar el grano de la paja y el término “chaffing” por el castellano empajar (cubrir o rellenar con paja). La idea básica consiste en mezclar la información real (grano) con otra de relleno (paja) de modo que sea imposible separarlas excepto para el destinatario.
SKIPJACK
Este algoritmo fue descalificado por el gobierno de Estados Unidos. Algunos detalles sobre el algoritmo en sí y sus aplicaciones en la práctica a los chips Clipper y Capstone.
Skipjack fue desarrollado por la NSA inicialmente para los chips Clipper y Capstone. Su diseño comenzó en 1985 y se completó su evaluación en 1990.
BÍFIDO
El método Bífido es un cifrado fraccionario. Es decir que cada letra viene representada por una o más letras o símbolos, y donde se trabaja con estos símbolos más que con las letras mismas.
WLBYKYAAOTB
Este método altera la frecuencia de los caracteres a diferencia de lo que ocurre por ejemplo con los cifrados monos alfabéticos. Admite algunas variaciones como por ejemplo dividir la lista en 3,4,…, n partes.
Cifrado exponencial
Es un sistema basado en el exponenciación modular, debido Pohlig y Hellman (1978). Este método es resistente al criptoanálisis.
Blowfish
Este algoritmo realiza un cifrado simple en 16 ciclos, con un tamaño de bloque de 64 bytes para un total de 448 bits. Aunque hay una fase compleja de la inicialización. El cifrado de datos es muy eficiente en los microprocesadores grandes.
Método Vigenére
El cifrado de Vigenére utiliza una clave externa para realizar las sustituciones, con lo que este mismo algoritmo puede dar diferentes criptogramas para el mismo texto claro en función de la clave que utilicemos.

Veamos un sencillo ejemplo para ilustrar este método:
Texto claro: s e g u r i d a d
Clave de cifrado: a b c
Para llevar a cabo el cifrado dividimos el texto claro en grupos de tantas letras como tenga la clave, y a continuación las hacemos corresponder con las letras de la clave de cifrado:
Texto claro: s e g u r i d a d
Clave: a b c a b c a b c
El proceso de sustitución es similar al método César, por el que a cada letra del texto claro le corresponde la que está 3 posiciones después en el alfabeto. En esta ocasión, el número de posiciones que debemos contar viene dado por la posición que ocupa en el alfabeto la letra clave que le corresponde. Así, cuando la clave sea la letra «a», avanzaremos una posición, si la clave es «b» serán dos, y si fuera «c» serán 5.
En el ejemplo que nos ocupa, en primer lugar, deberíamos transformar la letra «s» del texto claro según su clave «a», es decir, avanzamos una letra en el alfabeto, el resultado será «t». En el segundo caso, la letra «e» según la clave «b» dará una «g», porque se avanza dos posiciones.
Texto claro: s e g u r i d a d
Clave: a b c a b c a b c
Criptograma: t g l v t n e c i
Resultado final: t g l v t n e c i
Ahora que conocemos el proceso, vamos a comprobar cómo, cambiando la clave de cifrado y con el mismo texto claro, obtenemos un criptograma totalmente diferente:
Clave: bcbc
Texto claro: s e g u r i d a d – – –
Clave: b c b c b c b c b c b c
Criptograma: u j i z t n f f f – – –
Resultado final: u j i z t n f f f
Para poder realizar el descifrado la única condición es conocer la clave que se ha utilizado en el proceso, y hacer los pasos a la inversa. Partiendo del criptograma, tendremos que dividir en grupos según la clave y, en esta ocasión, restar posiciones en vez de sumar.
Este método es algo más seguro que los vistos con anterioridad, debido principalmente a que el criptograma varía según una clave externa, no conocida en principio por un hipotético atacante. Sin embargo, se ha demostrado que no resulta difícil romper este cifrado utilizando técnicas de criptoanálisis basadas en la incidencia de coincidencias en el criptograma.
Sistemas de clave pública: Un sistema criptográfico de clave pública es tan seguro como su clave. La distribución de las claves debe ser manejada sobre canales altamente seguros. Esto suele consumir mucho tiempo.
Firmas digitales
Para que una firma digital sea aceptada como sustituta de una firma escrita debe ser:
1. Fácil de autentificar (reconocer) por cualquiera.
2. Producible únicamente por su autor.

En los cripto-sistemas de clave pública el procedimiento es:
· El remitente: usa la clave privada para crear un mensaje firmado.
· El receptor: Usa la clave pública del remitente para descifrar el mensaje o Guarda el mensaje firmado para usarlo en caso de disputas

Funciones Hash
Los hash o funciones de resumen son algoritmos que consiguen crear a partir de una entrada (ya sea un texto, una contraseña o un archivo, por ejemplo) una salida alfanumérica de longitud normalmente fija que representa un resumen de toda la información que se le ha dado (es decir, a partir de los datos de la entrada crea una cadena que solo puede volverse a crear con esos mismos datos).
Estas funciones no tienen el mismo propósito que la criptografía simétrica y asimétrica, tiene varios cometidos, entre ellos está asegurar que no se ha modificado un archivo en una transmisión, hacer ilegible una contraseña o firmar digitalmente un documento.
Características del hash.             
En definitiva, las funciones hash se encargan de representar de forma compacta un archivo o conjunto de datos que normalmente es de mayor tamaño que el hash independientemente del propósito de su uso.
Este sistema de criptografía usa algoritmos que aseguran que con la respuesta (o hash) nunca se podrá saber cuáles han sido los datos insertados, lo que indica que es una función unidireccional. Sabiendo que se puede generar cualquier resumen a partir de cualquier dato nos podemos preguntar si se podrían repetir estos resúmenes (hash) y la respuesta es que teóricamente si, podría haber colisiones, ya que no es fácil tener una función hash perfecta (que consiga que no se repita la respuesta), pero esto no supone un problema, ya que si se consiguieran (con un buen algoritmo) dos hashes iguales los contenidos serían totalmente distintos.



Ejemplos de uso de las funciones hash
Las funciones hash son muy usadas, una de las utilidades que tiene es proteger la confidencialidad de una contraseña, ya que podría estar en texto plano y ser accesible por cualquiera y aun así no poder ser capaces de deducirla. En este caso, para saber si una contraseña que está guardada, por ejemplo, en una base de datos es igual a la que hemos introducido no se descifra el hash (ya que debería de ser imposible hacerlo) sino que se aplicará la misma función de resumen a la contraseña que especificamos y se comparará el resultado con el que tenemos guardado (como se hace con las contraseñas de los sistemas Linux).
Pongamos un ejemplo, la función hash MD5 es una de estas funciones de resumen y la usaremos para resumir el siguiente texto:
Genbeta Dev
Se aplicará la función de resumen con el comando específico que tienen la mayoría de sistemas basados en Linux (md5sum):

Por lo que la última línea es la del hash, que puedes comprobar en un terminal, en una herramienta online o con una aplicación con este fin, aunque se puede aplicar en muchos lenguajes de programación que lo implementan (no solo esta función, sino también otros tipos como el SHA que puede admitir distinta longitud).
Asegurar la integridad de la información
Otro uso que tiene esta función es la de garantizar la integridad de los datos y es algo que se ha visto muchas veces, por ejemplo, en algunas webs que proporcionan descargas de archivos grandes, por ejemplos software, dando junto a su vez el resumen del archivo y la función usada.
Por poner un ejemplo en la página de descarga de Virtual Box podemos encontrar esta página con todos los resúmenes de las descargas disponibles con los que podemos comprobar que el archivo se ha descargado correctamente y que nadie ha modificado su contenido durante la transmisión.
Para poner en práctica este uso cogeré esta imagen de HTML5 y le aplicaré una función de resumen con el algoritmo MD5.

Y el resultado de hacer el resumen es el siguiente, usando otra vez la función presente en sistemas Linux (md5sum).


Este es el método para saber que un documento está integro tras su recepción, por eso se usa para comprobar que un archivo se ha descargado correctamente o para comprobar que datos como un pequeño texto sigue siendo el mismo tras su emisión.
Firma digital
Firmar un documento no es algo novedoso, pero la firma digital si lo es un poco más y nos ayuda a verificar la identidad del emisor de un mensaje (así nos podemos asegurar que nuestro jefe nos manda un archivo concreto y no es el vecino que nos gasta una broma).
El método más simple de firma digital consiste en crear un hash de la información enviada y cifrarlo con nuestra clave privada (de nuestro par de claves de la criptografía asimétrica) para que cualquiera con nuestra clave pública pueda ver el hash real y verificar que el contenido del archivo es el que hemos mandado nosotros.
GPG
Es una herramienta de cifrado que nos permite firmar documentos, en este caso lo haré con una firma en texto plano (es un sistema menos seguro, pero veremos qué es lo que hace).
Lo que voy a hacer es firmar la imagen que hemos usado antes (la de HTML5) con el siguiente comando en una terminal de Linux (para otras plataformas hay otras soluciones muy similares o incluso idénticas):

Automáticamente a partir del archivo HTML5.png nos genera el archivo HTML5.png.asc que si lo abrimos con un visor de texto vemos el contenido de la imagen (un conjunto de caracteres sin sentido) y al final del archivo el siguiente texto (que contiene el hash cifrado):


No hay comentarios:

Publicar un comentario