Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MECANISMOS DE ENCRIPTACIN Y
FUNCIONES HASH
Alumnos: Docente:
Bryan Ernesto Orantes Fuentes Inga. Gisela Jazmn Espinoza
Juver Nahm Argueta Ortiz
Jorge Alberto Lovo Reyes
Kevin Rafael Campos Fernndez
Encriptacin
Qu es encriptacin?
Encriptacin es el proceso mediante el cual se codifican los datos de archivos o correos de
manera tal que nadie pueda interceptarlos mientras se encuentren flotando en la web, por lo
que esta encriptacin informtica protege varios tipos de informacin importante; por
ejemplo, nmeros de cuentas bancarias, contraseas y datos de registro.
Se trata de una medida de seguridad que es usada para almacenar o transferir informacin
delicada que no debera ser accesible a terceros. Pueden ser contraseas, nmeros de
tarjetas de crdito, conversaciones privadas, etc.
1
una clave como parmetro variable en las mencionadas frmulas matemticas de forma que
a pesar de que un intruso las conozca, no le sea posible descifrar el criptograma si no
conoce la clave, la cual solo se encuentra en posesin de las personas que pueden tener
acceso a la informacin en cuestin. Algunos mtodos utilizan incluso dos claves,
una privada que se utiliza para la encriptacin y otra pblica para la desencriptacin. En
algunos mtodos la clave pblica no puede efectuar la desencriptacin o descifrado, sino
solamente comprobar que el criptograma fue encriptado o cifrado usando la clave
privada correspondiente y no ha sido alterado o modificado desde entonces.
De todas maneras la Real Academia Espaola acept los trminos encriptar y desencriptar
en 2014, por lo que se considera vlido usarlos en la actualidad
La encriptacin no es algo nuevo. Hace 2.500 aos se encriptaban mensajes durante las
campaas militares para que el enemigo no pudiera leerlos, si los interceptaba. Los Aliados
ganaron la Segunda Guerra Mundial (o al menos adelantaron su final uno o dos aos)
gracias a que descifraron el cdigo de la mquina de encriptacin Enigma de los nazis, y
pudieron acceder a sus comunicaciones de alto secreto
2
Encriptacin automtica
Las compaas de software e Internet han reconocido que tienen un problema de
privacidad. Muchas de ellas colaboraron con las agencias de espionaje para permitirles que
espiasen a los usuarios mientras miraban hacia otro lado. Parece que han hecho propsito
de enmienda y han comenzado a cifrar automticamente sus servicios.
Desde hace unos meses, Gmail encripta la recepcin y envo de correos. Facebook, Twitter,
WhatsApp y otras redes sociales tambin hacen lo mismo con el envo de mensajes. iOS
encripta automticamente todos los archivos de los usuarios, y Android permite hacerlo a
partir de Android 5.0 Lollipop. Windows 10 incluye herramientas para llevarlo a cabo.
Ten en cuenta que en el caso de los servicios de Internet, encriptan el envo y recepcin de
datos, el proceso de transporte, pero no lo que almacenas en tu dispositivo. Vamos a
mostrarte cmo completar el proceso de encriptacin en los principales dispositivos.
Ejemplo:
Palabra: Matemticas
3
Clave: 12345678912
En el mtodo Csar, 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.
4
En trminos ms formales podramos describir al mtodo Csar como
Criptograma(i) = Texto_claro(i) + 3 (mod 26).
(i) es la posicin de las letras y (mod 26) indica que se trata de una suma mdulo
26, en la que 26 es el nmero de letras del alfabeto que utilizamos.
Como vemos, en este caso el intento sera fallido, ya que el proceso nos devuelve un
nuevo texto sin sentido. Si ahora lo intentamos con el valor 3, otro de los probables
segn la frecuencia de las letras, obtenemos la solucin.
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
5
para transmitir dicha clave. Este problema viene a resolverse en los sistemas de
clave pblica la clave de cifrado, pues un tiempo enormemente de ordenador es
necesario para encontrar una transformacin de descifrado a partir de la de cifrado.
DES: DES fue desarrollado por IBM a mediados de los setenta. Aunque tiene un
buen diseo, su tamao de clave de 56 bits es demasiado pequeo para los patrones
de hoy. DES (Data Encryption Standard) es un mecanismo de encriptacin de datos
de uso generalizado. Hay muchas implementaciones de hardware y software de
DES. Este transforma la informacin 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 simtrico.
Ejemplo:
Sea M cierto mensaje con el texto plano siguiente: M = 0123456789ABCDEF,
donde M est en formato hexadecimal. Si transformamos M al sistema binario
obtendremos el siguiente bloque de bits (64): M = 0000 0001 0010 0011 0100 0101
0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 L = 0000 0001 0010 0011
0100 0101 0110 0111 R = 1000 1001 1010 1011 1100 1101 1110 1111
6
SKIPJACK: Este algoritmo fue descalificado por el gobierno de Estados Unidos.
Algunos detalles sobre el algoritmo en s y sus aplicaciones en la prctica a los
chips Clipper y Capstone. Skipjack fue desarrollado por la NSA inicialmente para
los chips Clipper y Capstone. Su diseo comenz en 1985 y se complet su
evaluacin en 1990.
BFIDO: El mtodo Bfido es un cifrado fraccionario. Es decir que cada letra viene
representada por una o ms letras o smbolos, y donde se trabaja con estos smbolos
ms que con las letras mismas.
Ejemplo
7
WLBYKYAAOTB: Este mtodo altera la frecuencia de los caracteres a diferencia
de lo que ocurre por ejemplo con los cifrados monoalfabticos. Admite algunas
variaciones como por ejemplo dividir la lista en 3,4,, n partes.
8
Blowfish: Este algoritmo realiza un cifrado simple en 16 ciclos, con un tamao de
bloque de 64 bytes para un total de 448 bits. Aunque hay una fase compleja de la
inicializacin. El cifrado de datos es muy eficiente en los microprocesadores
grandes.
Mtodo Vigenre: El cifrado de Vigenre utiliza una clave externa para realizar las
sustituciones, con lo que este mismo algoritmo puede dar diferentes criptogramas
para el mismo texto claro en funcin de la clave que utilicemos.
Para llevar a cabo el cifrado dividimos el texto claro en grupos de tantas letras como
tenga la clave, y a continuacin 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 sustitucin es similar al mtodo Csar, por el que a cada letra del
texto claro le corresponde la que est 3 posiciones despus en el alfabeto. En esta
9
ocasin, el nmero de posiciones que debemos contar viene dado por la posicin
que ocupa en el alfabeto la letra clave que le corresponde. As, cuando la clave sea
la letra a, avanzaremos una posicin, si la clave es b sern dos, y si fuera c
sern 5.
En el ejemplo que nos ocupa, en primer lugar deberamos transformar la letra s
del texto claro segn su clave a, es decir, avanzamos una letra en el alfabeto, el
resultado ser t. En el segundo caso, la letra e segn 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
Este mtodo es algo ms seguro que los vistos con anterioridad, debido
principalmente a que el criptograma vara segn una clave externa, no conocida en
principio por un hipottico atacante. Sin embargo se ha demostrado que no resulta
difcil romper este cifrado utilizando tcnicas de criptoanlisis basadas en la
incidencia de coincidencias en el criptograma.
10
Sistemas de clave pblica: Un sistema criptogrfico de clave pblica es tan
seguro como su clave. La distribucin de las claves debe ser manejada sobre
canales altamente seguros. Esto suele consumir mucho tiempo. A veces, tales
canales de seguridad no estn disponibles.
Los sistemas de clave pblica no tienen tal problema en la distribucin de la
clave. En el sistema criptogrfico convencional el cifrado y descifrado estn
ntimamente relacionados. Estos sistemas usan una clave encriptada, E, y una
clave descifrado, D, de manera que no es computacionalmente viable (dentro de
un tiempo razonable) determinar E a partir de D.
Firmas digitales: Para que una firma digital sea aceptada como sustituta de una
firma escrita debe ser:
1. Fcil de autentificar (reconocer) por cualquiera.
2. Producible nicamente por su autor.
En los cripto-sistemas de clave pblica el procedimiento es:
El remitente: usa la clave privada para crear un mensaje firmado.
El receptor: Usa la clave pblica del remitente para descifrar el mensaje
o Guarda el mensaje firmado para usarlo en caso de disputas
11
Ventajas e inconvenientes
Si encriptas un dispositivo nadie podr ver lo que contiene. Ten en cuenta que es un sistema
de seguridad mucho ms fuerte que una contrasea en la pantalla de inicio del mvil o el
PC, que slo protege el acceso, pero no los datos. Basta con extraer el disco duro de un PC
y usarlo en otro ordenador para romper la contrasea de acceso de Windows, y hay
herramientas para arrancar el mvil en modo root y acceder a su contenido. La encriptacin
evita esto porque cada fichero, cada dato, estn encriptado.
Valora lo bueno y lo malo pero si apuestas por la privacidad, las ventajas superan
ampliamente a los inconvenientes
12
Funciones Hash
Los hash o funciones de resumen son algoritmos que consiguen crear a partir de una
entrada (ya sea un texto, una contrasea o un archivo, por ejemplo) una salida alfanumrica
de longitud normalmente fija que representa un resumen de toda la informacin 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).
Una funcin hash es mtodo para generar claves o llaves que representen de manera
unvoca a un documento o conjunto de datos. Es una operacin matemtica que se realiza
sobre este conjunto de datos de cualquier longitud, y su salida es una huella digital, de
tamao fijo e independiente de la dimensin del documento original. El contenido es
ilegible.
Caractersticas
En definitiva las funciones hash se encargan de representar de forma compacta un archivo o
conjunto de datos que normalmente es de mayor tamao que el hash independientemente
del propsito de su uso.
Este sistema de criptografa usa algoritmos que aseguran que con la respuesta (o hash)
nunca se podr saber cules han sido los datos insertados, lo que indica que es una funcin
unidireccional. Sabiendo que se puede generar cualquier resumen a partir de cualquier dato
nos podemos preguntar si se podran repetir estos resmenes (hash) y la respuesta es que
tericamente si, podra haber colisiones, ya que no es fcil tener una funcin hash perfecta
(que consiga que no se repita la respuesta), pero esto no supone un problema, ya que si se
13
consiguieran (con un buen algoritmo) dos hash iguales los contenidos seran totalmente
distintos.
Formas de uso
Las funciones hash son muy usadas, una de las utilidades que tiene es proteger la
confidencialidad de una contrasea, ya que podra 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
contrasea que est guardada, por ejemplo, en una base de datos es igual a la que hemos
introducido no se descifra el hash (ya que debera de ser imposible hacerlo) sino que se
aplicar la misma funcin de resumen a la contrasea que especificamos y se comparar el
resultado con el que tenemos guardado (como se hace con las contraseas de los
sistemas Linux).
Otro uso que tiene esta funcin es la de garantizar la integridad de los datos y es algo que
habris 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
funcin usada.
14
Ejemplos funciones Hash
MD5
Es una funcin hash de 128 bits. Como todas las funciones hash, toma unos determinados
tamaos a la entrada, y salen con una longitud fija (128bits). El algoritmo MD5 no sirve
para cifrar un mensaje. La informacin original no se puede recuperar, ya que est
especficamente diseado para que a partir de una huella hash no se pueda recuperar la
informacin. Actualmente esta funcin hash no es segura utilizarla, nunca se debe usar.
Genbeta Dev
pedro@ubuntu:~$ md5sum
Genbeta Dev
b71dada304875838f0263e3ae50c2c49 -
Por lo que la ltima lnea es la del hash, que podis comprobar en un terminal, en una
herramienta online o con una aplicacin con este fin, aunque se puede aplicar en muchos
15
lenguajes de programacin que lo implementan (no solo esta funcin, sino tambin otros
tipos como el SHA que puede admitir distinta longitud).
SHA-1
Es parecido al famoso MD5, pero tiene un bloque de 160bits en lugar de los 128bits del
MD5. La funcin de compresin es ms compleja que la funcin de MD5, por tanto, SHA-
1 es ms lento que MD5 porque el nmero de pasos son de 80 (64 en MD5) y porque tiene
mayor longitud que MD5 (160bits contra 128bits).
SHA-1 es ms robusto y seguro que MD5, pero ya se han encontrado colisiones, por tanto,
actualmente esta funcin hash no es seguro utilizarla, nunca se debe usar.
16
SHA-2
Las principales diferencias con SHA-1 radica en su diseo y que los rangos de salida han
sido incrementados. Dentro de SHA-2 encontramos varios tipos, el SHA-224, SHA-256,
SHA-384 y SHA-512. El ms seguro, es el que mayor salida de bits tiene, el SHA-512, que
tiene 80 rondas (pasos), como el SHA-1 pero se diferencia de ste en:
Como ocurre con todos los cifrados y hash, cuanto ms seguro, ms lento su procesamiento
y uso, debemos encontrar un equilibrio entre seguridad y velocidad.
17
Desde el principio PHP ha sido un lenguaje de programacin para la construccin de sitios
web. Esa idea permanece en el ncleo del lenguaje, y por eso es tan popular para
la construccin de aplicaciones web. Cuando se cre en los aos 90, el trmino aplicacin
web no exista an, por lo que la proteccin de contraseas para cuentas de usuarios no era
algo en lo que estuviera centrado.
Han pasado muchos aos desde entonces y actualmente es impensable una aplicacin web
que no proteja las cuentas de los usuarios con contraseas. Es fundamental para cualquier
programador hacer que estas contraseas tengan una encriptacin segura y eficiente. PHP
5.5 aadi una nueva librera llamada Hash de contraseas para la encriptacin de
contraseas, con funciones que facilitan la tarea y utilizan los ltimos mtodos ms
eficaces.
Mucha gente utiliza las mismas contraseas para muchas aplicaciones web. Si alguien
accede a la direccin de email y contrasea de un usuario, probablemente pueda hacerlo en
muchas otras aplicaciones.
Los hashes no se crean iguales, se emplean algoritmos muy distintos para crear un hash.
Los dos ms usados en el pasado son MD5 y SHA-1. Los ordenadores de hoy en da
pueden crackear fcilmente estos algoritmos. Dependiendo de la complejidad y longitud de
la contrasea, se puede crackear en menos de una hora con los dos algoritmos nombrados
18
(los ratios son 3650 millones de clculos por segundo con MD5 y 1360 millones por
segundo con SHA-1).
Por eso es importante usar algoritmos complejos. Si el hash es ms largo reduce el riesgo
de colisiones entre contraseas (dos frases generando el mismo hash), pero tambin
conviene que la aplicacin se tome el tiempo necesario para generar el hash. Esto es porque
el usuario apenas notar un segundo o dos ms de tiempo de carga al logearse, pero se
consigue que crackearlo tome muchsimo ms tiempo, en case de que sea posible.
Tambin es necesario protegerse frente a las Rainbow Tables. Las Rainbow Tables, como a
la MD5 que puede verse en este enlace, son tablas de bsqueda inversa para hashes. El
creador de las tablas precalcula los hashes MD5 para palabras comunes, frases, palabras
modificadas y strings aleatorios. La facilidad de crackear un algoritmo MD5 hace posible la
existencia de este tipo de tablas.
Generar este tipo de tablas para un algoritmo complejo tarda mucho ms, pero es posible
tambin. Una medida apropiada es aadir un salt al hash. En este contexto, salt es cualquier
frase que se aade a la contrasea antes de crear el hash. Usando un salt se gana mucho
terreno frente a este tipo de tablas. Se debera crear una Rainbow Table especfica para tu
aplicacin y averiguar cul es el salt en tu aplicacin.
Ejemplo:
19
Importante:
Se utiliza un salt, pero todas las contraseas utilizan el mismo, por lo que si
alguien consigue averiguar una contrasea, o el acceso al cdigo fuente donde
puede mirar el hash, se puede hacer una Rainbow Table aadiendo el salt
descubierto. La solucin es crear un salt aleatorio para cada contrasea que se crea,
y guardar el salt con la contrasea de forma que despus se pueda recuperar.
Se utiliza sha512, un complejo algoritmo que viene con PHP. Sin embargo
tambin puede ser crackeado a un ratio de 46 millones de clculos por segundo.
Aunque es ms lento de crackear que md5 y sha1, todava no es un nivel de
seguridad estable. La solucin es utilizar algoritmos que son todava ms complejos
y emplearlos varias veces. Por ejemplo emplear un algoritmo sha512 10 veces
consecutivamente reducira el intento de hackeo considerablemente.
Las dos soluciones ya vienen por defecto con la librera Hash de contraseas de PHP.
20