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.
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.
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.
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.
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