Está en la página 1de 89

1

CAPITULO 1

Criptografía y Hashes
Criptografía y Hashes

Seguridad y Criptografía
La necesidad de Seguridad de la Información en una organización ha
cambiado en las últimas décadas.

Antes del uso de las computadoras, la Seguridad de la Información era


proporcionada por medios físicos, por ejemplo el uso de cajas fuertes
y por medidas administrativas, como los procedimientos de
clasificación de documentos.
Criptografía y Hashes

Seguridad y Criptografía
Con el uso de la computadora, y más aún con la llegada de Internet,
fue indispensable el uso de herramientas automatizadas para la
protección de archivos y otro tipo de información almacenada en la
computadora, algunas de estas herramientas son los cortafuegos, los
Sistemas Detectores de Intrusos y el uso de sistemas criptográficos.

Estas herramientas no sólo permiten proteger a la información, sino


también a los Sistemas Informáticos que son los encargados de
administrar la información.
Criptografía y Hashes

Seguridad y Criptografía
Con el uso de la computadora, y más aún con la llegada de Internet,
fue indispensable el uso de herramientas automatizadas para la
protección de archivos y otro tipo de información almacenada en la
computadora, algunas de estas herramientas son los cortafuegos, los
Sistemas Detectores de Intrusos y el uso de sistemas criptográficos.

Estas herramientas no sólo permiten proteger a la información, sino


también a los Sistemas Informáticos que son los encargados de
administrar la información.

De la necesidad por proteger a la información y a los sistemas que la


administran surge el término de Seguridad Informática.
Criptografía y Hashes

Seguridad y Criptografía
a) Seguridad:

De acuerdo con el diccionario de la Real Academia Española,


seguridad es:
- Calidad de seguro
- Dicho de un mecanismo: Que asegura algún buen
funcionamiento, evitando que éste falle, se fruste o
se violente

•Cualidad de seguro.
•Dicho de un mecanismo: Que asegura algún buen funcionamiento,
precaviendo que este falle, se
frustre o se violente.
Criptografía y Hashes
Seguridad y Criptografía
b) Seguridad de la Información:

Se puede hablar de la Seguridad de la Información como el


conjunto de reglas, planes y acciones que permiten asegurar la
información manteniendo las propiedades de confidencialidad,
integridad y disponibilidad de la misma.

- La confidencialidad .- Es que la información sea


accesible sólo para aquéllos que están autorizados.

- La integridad .- Es que la información sólo puede ser


creada y modificada por quien esté autorizado a hacerlo.

- La disponibilidad .- Es que la información debe ser


accesible para su consulta o modificación cuando
se requiera.
Criptografía y Hashes
Seguridad y Criptografía

c) Seguridad Informática:
Conjunto de políticas y mecanismos que nos permiten
garantizar la confidencialidad, la integridad y la
disponibilidad de los recursos de un sistema.

(entiéndase recursos de un sistema como memoria de


procesamiento, espacio de almacenamiento en algún medio
físico, tiempo de procesamiento, ancho de banda y por su
puesto la información contenida en el sistema).
Criptografía y Hashes
Seguridad y Criptografía

De acuerdo con las definiciones anteriores para que


exista seguridad ya sea de la información o
informática hay que garantizar las propiedades de
confidencialidad, integridad y disponibilidad.

Y es aquí donde se utiliza a la criptografía, ya que


mediante el uso correcto de sistemas criptográficos
se pretende garantizar las propiedades de
confidencialidad e integridad.
Criptografía y Hashes
Seguridad y Criptografía

Primeramente se muestra lo que idealmente es una


comunicación normal, en este caso no existe ningún
problema de seguridad informática.

El mensaje que se envía se recibe sin alteración alguna.


Criptografía y Hashes
Seguridad y Criptografía

El segundo caso muestra uno de los problemas más grandes


que hay, la interrupción de la transmisión del mensaje, que
puede ser ocasionada por fallo del canal o de algún elemento
del sistema de comunicación, ya sea de forma natural o
intencional.

Esto es traducido a un problema de disponibilidad.


Criptografía y Hashes
Seguridad y Criptografía
La interceptación de los datos por un intruso (un intruso es un
ente externo al sistema) es algo muy común dentro de las
comunicaciones, ya que muchas de las transmisiones son
enviadas mediante protocolos que son conocidos por todos y a
los mensajes no se les hace ningún tratamiento especial, en otras
palabras, viajan tal cual se generan.

Lo único que se hace es escuchar todo lo que pasa por el canal


sin alterar nada.

Este es un problema de confidencialidad.


Criptografía y Hashes
Seguridad y Criptografía
Otro problema en la comunicación es el de la falsificación.

Esto se produce cuando el intruso captura un mensaje, se adueña


de él y de la identidad del emisor y genera un nuevo mensaje con
la identidad del emisor.

Este es un problema de integridad y confidencialidad.


Criptografía y Hashes
Seguridad y Criptografía
Finalmente la generación de mensajes se da cuando el intruso
genera un mensaje engañando al receptor haciéndolo creer que
es un emisor válido.

Esto se traduce en un problema de integridad.


Criptografía y Hashes
Seguridad y Criptografía

Es muy fácil ver como una comunicación y un sistema informático


son muy similares, ya que en un sistema informático se procesan,
almacenan, envían y reciben datos.
Criptografía y Hashes

Seguridad y Criptografía
Ahora, si pudiéramos de alguna forma evitar los problemas de
disponibilidad, integridad y confidencialidad, tendríamos un sistema
“seguro”.

Para lograr esto tendríamos que aislar al sistema de los intrusos y


hacerlo anti-fallos lo cual es prácticamente imposible .

Lo que se hace es crear mecanismos que garanticen en cierta


medida las propiedades de

- Disponibilidad,
- Integridad y
- Confidencialidad.
Criptografía y Hashes

Seguridad y Criptografía
La disponibilidad,
generalmente, se trata de solucionar con sistemas
redundantes.

La confidencialidad
se puede lograr usando un mecanismo que, aunque sea
robada la información, permita que no se pueda acceder a
ésta o garantice de alguna forma que no se pueda llegar a
ella, hasta que pierda su valor.
Criptografía y Hashes

Seguridad y Criptografía
La integridad

Es más difícil de lograr y se hace con el uso de varios


mecanismos que garantizan la identidad de un ente que
está autorizado por el sistema para crear o hacer cambios
a la información, de tal forma que se puede verificar
posteriormente quién creó o modificó la información.

Además estos mecanismos permiten ver si la información ya creada


ha sufrido o no alguna modificación no autorizada.
Criptografía y Hashes

Seguridad y Criptografía
La integridad

Es más difícil de lograr y se hace con el uso de varios


mecanismos que garantizan la identidad de un ente que
está autorizado por el sistema para crear o hacer cambios
a la información, de tal forma que se puede verificar
posteriormente quién creó o modificó la información.

Además estos mecanismos permiten ver si la información ya creada


ha sufrido o no alguna modificación no autorizada.
Criptografía y Hashes

Seguridad y Criptografía

Los mecanismos para garantizar la integridad y la


confidencialidad se implementan con

sistemas criptográficos.

De ahí la importancia de la criptografía en la seguridad


informática en los sistemas actuales.
Criptografía y Hashes
Seguridad y Criptografía
Criptografía
La palabra criptografía proviene en un sentido etimológico del griego
Kriptos=ocultar, Graphos=escritura.

Lo que significaría ocultar la escritura, o en un sentido más amplio


sería aplicar alguna técnica para hacer ininteligible un mensaje.

En su clasificación dentro de las ciencias, la criptografía proviene de


una rama de las matemáticas, que fue iniciada por el matemático
Claude Elwood Shannon en 1948, denominada: “Teoría de la
Información”.

Esta rama de las ciencias se divide en: “Teoría de Códigos” y en


“Criptología”. Y a su vez la Criptología se divide en Criptoanálisis
y Criptografía
Criptografía y Hashes
Seguridad y Criptografía
Criptografía y Hashes
Seguridad y Criptografía
En un sentido más amplio, la Criptografía es la ciencia encargada de
diseñar funciones o dispositivos, capaces de transformar mensajes
legibles o en claro a mensajes cifrados de tal manera que esta
transformación (cifrar) y su transformación inversa (descifrar) sólo
pueden ser factibles con el conocimiento de una o más llaves.

En contraparte, el Criptoanálisis es la ciencia que estudia los


métodos que se utilizan para, a partir de uno o varios mensajes
cifrados, recuperar los mensajes en claro en ausencia de la(s) llave(s)
y/o encontrar la llave o llaves con las que fueron cifrados dichos
mensajes.
Criptografía y Hashes
Clasificación de la criptografía
La criptografía clásica es aquella que se utilizó desde antes de la
época actual hasta la mitad del siglo XX. También puede entenderse
como la criptografía no computarizada o mejor dicho no digitalizada.

Los métodos utilizados eran variados, algunos muy simples y otros


muy complicados de criptoanalizar para su época.

Se puede decir que la criptografía moderna se inició después de tres


hechos:
- La publicación de la “Teoría de la Información” por Shannon;
- La aparición del estándar del sistema de cifrado DES (Data
Encryption Standard) en 1974 y
- La aparición del estudio realizado por Whitfield Diffie y Martin
Hellman sobre la aplicación de funciones matemáticas de un solo
sentido a un modelo de cifrado, denominado cifrado de llave
pública en 1976.
Criptografía y Hashes
Clasificación de la criptografía
Criptografía y Hashes
Clasificación de la criptografía
La criptografía clásica es aquella que se utilizó desde antes de la
época actual hasta la mitad del siglo XX. También puede entenderse
como la criptografía no computarizada o mejor dicho no digitalizada.

Los métodos utilizados eran variados, algunos muy simples y otros


muy complicados de criptoanalizar para su época.

Se puede decir que la criptografía moderna se inició después de tres


hechos:
- La publicación de la “Teoría de la Información” por Shannon;
- La aparición del estándar del sistema de cifrado DES (Data
Encryption Standard) en 1974 y
- La aparición del estudio realizado por Whitfield Diffie y Martin
Hellman sobre la aplicación de funciones matemáticas de un solo
sentido a un modelo de cifrado, denominado cifrado de llave
pública en 1976.
Criptografía y Hashes
Criptografía Clásica
Como ya se mencionó anteriormente, la criptografía clásica es muy
antigua.

Las técnicas criptográficas eran muy ingeniosas y se usaban para


enviar mensajes secretos entre las personas que tenían el poder o
en época de guerra para enviar instrucciones.

A diferencia de la criptografía moderna, el algoritmo del sistema


criptográfico se mantenía en secreto.

La criptografía clásica también incluye la construcción de máquinas,


que mediante mecanismos, comúnmente engranes o rotores,
transformaban un mensaje en claro a un mensaje cifrado, como la
máquina Enigma usada en la Segunda Guerra Mundial.
Criptografía y Hashes
Criptografía Clásica
Criptografía y Hashes
Criptografía Clásica
Los cifradores por transposición utilizan la técnica de permutación de
forma que los caracteres del texto se reordenan mediante un algoritmo
específico.

Los cifradores por sustitución utilizan la técnica de modificación de


cada carácter del texto en claro por otro correspondiente al alfabeto de
cifrado.

Si el alfabeto de cifrado es el mismo que el del mensaje o bien el único,


hablamos entonces de cifradores monoalfabéticos; es decir, existe un
único alfabeto en la operación de transformación del mensaje en
criptograma.

Por el contrario, si en dicha operación intervienen más de un alfabeto,


se dice que el cifrador es polialfabético.
Criptografía y Hashes
La escítala
En siglo V a.c. los lacedemonios, un antiguo pueblo griego, usaban el
método de la escítala para cifrar sus mensajes.

El sistema consistía en una cinta que se enrollaba en un bastón sobre el


cual se escribía el mensaje en forma longitudinal.
Criptografía y Hashes
El cifrado César
En el siglo I a.c. aparece un método de cifrado conocido con el nombre
genérico de cifrado de César en honor al emperador Julio César y en el
que ya se aplica una transformación al texto en claro de tipo
monoalfabética.

El cifrado del César aplica un desplazamiento constante de tres


caracteres al texto en claro, de forma que el alfabeto de cifrado es el
mismo que el alfabeto del texto en claro, pero desplazado
3 espacios hacia la derecha módulo n, con n el número de letras del
mismo.
Criptografía y Hashes
El cifrado César

Al describir el cifrado de César se utilizó un concepto muy usado


en las matemáticas y más en criptografía:

El módulo.
Criptografía y Hashes
El cifrado César
El módulo es una operación binaria que se realiza en los enteros
positivos y se representa de la siguiente forma:

c = a mod b de tal forma que a, b y c son enteros positivos.

El valor de c al realizar la operación c = a modulo b es igual al


residuo de dividir a entre b.

Se puede observar claramente que 0 <= c < b.


Criptografía y Hashes
El cifrado César
Criptografía y Hashes
Moderna: Criptografía Simétrica
La criptografía simétrica o de llave secreta es aquella que utiliza
algún método matemático llamado sistema de cifrado para cifrar y
descifrar un mensaje utilizando únicamente una llave secreta.

Se puede observar en la siguiente lámina que la línea punteada es el


eje de simetría: lo mismo que hay de un lado existe exactamente
igual en el otro, esto ilustra el hecho del porqué se le da el nombre
de criptografía simétrica.
Criptografía y Hashes
Moderna: Criptografía Simétrica

Este tipo de criptografía sólo utiliza una llave para cifrar y


descifrar, esto es: si yo cifro un mensaje m con una llave
secreta k entonces el mensaje cifrado resultante m’
únicamente lo voy a poder descifrar con la misma llave k.

Este tipo de llave conocida como secreta se debe de


compartir entre las personas que se desea que vean los
mensajes.
Criptografía y Hashes
Moderna: Criptografía Simétrica
Problemas:
El problema con la criptografía simétrica es que si yo
quisiera compartir secretos con m personas, para cada
persona tendría que generar una nueva llave secreta y la
administración personal de todas m llaves sería un caos.

Otro problema asociado con este tipo de criptografía es


cómo comparto con otra persona de una forma confidencial
e integra la llave secreta.
Criptografía y Hashes
Criptografía Simétrica por Bloques
Diseño de Feistel
Un bloque de tamaño N bits comúnmente N=64 ó 128 bits
se divide en dos bloques de tamaño N/2, A y B.

A partir de aquí comienza el proceso de cifrado y consiste en


aplicar una función unidireccional (muy difícil de invertir) a
un bloque B y a una subllave k1 generada a partir de la llave
secreta.

Se mezclan el bloque A con el resultado de la función


mediante un XOR.

Se permutan los bloques y se repite el proceso n veces.

Finalmente se unen los dos bloques en el bloque original


Criptografía y Hashes
Criptografía Simétrica por Bloques
Diseño de Feistel
Criptografía y Hashes
Criptografía Simétrica por Bloques
Diseño de Feistel
Criptografía y Hashes
Criptografía Simétrica por Bloques
Diseño de Feistel
A lo largo de la historia de la criptografía moderna se han
usado diversos métodos de cifrado, siendo el más usado el
Estándar de Cifrado de Datos por sus siglas en ingles DES
(Data Encryption Standard).

El problema con este estándar es el tamaño de su llave:


56 bits, para tratar de corregir esto se propuso el triple DES
que únicamente aplica 3 veces el DES, cifrando, descifrando y
cifrando con llaves diferentes de tamaño 56 bits.

Incrementando el tamaño de la llave hasta 168 bits.


Criptografía y Hashes
Criptografía Simétrica por Bloques
A finales de 2001 surge, a partir de un concurso, un nuevo
estándar para el cifrado de datos.

A este algoritmo conocido como Rijndael se le dio el nombre


de Estándar Avanzado de Cifrado o AES (Advanced Encryption
Standar).

Este algoritmo no sigue la filosofía de Feistel, pero es un


cifrador de bloques. Sus características son:
Criptografía y Hashes
Criptografía Simétrica por Bloques
Los cifrador por bloques, como se puede observar en las tablas
anteriores, operan con bloques de tamaño
fijo, a menudo de 64 o 128 bits.

Para cifrar mensajes de mayor tamaño se usan diferentes modos


de operación.

Estos modos de cifrado son el ECB (Electronic codebook) libro de


códigos electrónico, CBC (Cipher-block chaining) cifrado en
bloque encadenado, OFB (Output Feedback) cifrado realimentado
y CFB (Cipher Feedback) salida realimentada.

Aseguran la confidencialidad, pero no aseguran la integridad del


mensaje.
Criptografía y Hashes
Criptografía Simétrica de Flujo
Este tipo de criptografía se basa en hacer un cifrado bit a bit.

Esto se logra usando la operación XOR, representada con Å.

Se utiliza un algoritmo determinístico que genera una secuencia


pseudoaletoria de bits que junto con los bits del mensaje se van
cifrando utilizando a operación XOR.

Ejemplos de este tipo de criptografía son RC4 (usado en


redes inalámbricas), A5 (usado en telefonía celular).
Criptografía y Hashes
Criptografía Asimétrica
Si se observa la siguiente figura, que ilustra la idea de criptografía
de llave pública, se puede ver claramente que no existe simetría en
ella, ya que de un lado de la figura se cifra o descifra con una llave
pública y en el otro lado con una privada.

Algunos ejemplos de este tipo de criptografía son:


- RSA,
- El Gamal y
- Curvas Elípticas
Criptografía y Hashes
Criptografía Asimétrica
Solución al problema de intercambio de llaves secretas usando
criptografía asimétrica: se supone que alguien va a enviar la llave
secreta k a una persona para que puedan cifrar entre ellos
mensajes.

Lo que se hace es que se toma la llave pública de la persona a la que


se le va a enviar el mensaje y se cifra con un sistema asimétrico la
llave secreta, esto implica que sólo la persona poseedora de la llave
privada pueda descifrar lo que se está enviando y con ello tener la
llave secreta, tal y como se muestra.
Criptografía y Hashes
Antes que nada, ¿Qué es un hash?
Un hash es un código que se obtiene tras aplicar un algoritmo especial
a una cadena de texto.

Es decir que si tenemos, por ejemplo, una contraseña 123secreto456


y le aplicamos un hash SHA-1 obtendremos el
valor 04c6f29a901a600b6fc4bf08a0a942000c902b4f.

Además, esto no es reversible.

Es decir yo puedo convertir la contraseña a un hash, pero es imposible


decifrar la contraseña a partir del código.
Criptografía y Hashes
Antes que nada, ¿Qué es un hash?
Existen muchos algoritmos de hash, como el conocido MD5, el CRC32,
el SHA-1, etc.

Aunque esto parece muy seguro, tiene sus vulnerabilidades. En


algunos algoritmos, ocurre que dos o más palabras diferentes puede
obtener el mismo hash como resultado.

Con lo que si tengo el hash y conozco alguna de las palabras que lo


originan, no necesito la contraseña exacta, ya que esta otra también
funcionará.

Eso, por un lado, es lo que ocurre en las rainbow tables.

Estas son tablas con cientos y miles de hashes en donde se conoce la


palabra que los origina.
Criptografía y Hashes
Hashes con salt
Los hashes son salt, son como los hashes de toda la vida más un plus
de seguridad.

En este caso el truco está en la salt que se le agrega.

Salt es un número de dígitos aleatorios que se le agrega al hash ya sea


al principio o al final.

Con lo que los hashes ya no son los normales y por ende no figurarán
en una tabla haciendo más difícil el decodificarlos.

Ya que se deberá probar no solo con cada hash, sino también con
cada salt y sus combinaciones.
Criptografía y Hashes
Documentos digitales
En criptografía existen deferentes documentos digitales que se usan
para garantizar las propiedades de confidencialidad e integridad.

Estos documentos son la integración de los dos tipos de


criptografía: la simétrica y la asimétrica.

Al hacer esta integración se compensan las desventajas de los tipos


de cifrado y se utilizan las mejores características de cada uno,
combinando rapidez del cifrado simétrico con la facilidad de la
administración de llaves del cifrado asimétrico.
Criptografía y Hashes
Firmas digitales
Una firma digital es un documento que permite garantizar la
integridad de un documento y se puede relacionar de manera única
al firmante con su firma, ya que realiza ésta con la llave privada y
únicamente el firmante posee esa llave,

Esto se traduce en que se verifica la autenticidad del firmante.

La firma de un documento d se realiza tomando un documento


digital, se extrae el resumen del documento (hash) H(d) y este
resumen se cifra asimétricamente con la llave privada del firmante
Ck1(H(d)), esto es lo que vendría siendo la firma digital, ahora hay
que ponérsela al documento, para eso se concatenan el documento
y su resumen cifrado.
Criptografía y Hashes
Firmas digitales
Ahora hay que verificar la firma, para eso se separan el documento d
del resumen cirado.

Se descifra asimétricamente con la llave pública k2 del firmante el


resumen cifrado Dk2(Ck1(H(d))) obteniéndose el resumen del
documento original H(d).

Se obtiene el resumen del documento enviado H(d)’ se comparan


las dos digestiones H(d)= H(d)’ y si estos son iguales, se dice que la
firma es válida, de lo contrario es inválida.

Si la firma es inválida puede deberse a dos causas: una es que se


está usando una llave pública que no corresponde con la privada del
firmante (problema de autenticación) o la otra es que el documento
que se envió fue alterado (problema de integridad).
Criptografía y Hashes
Firmas digitales
Criptografía y Hashes
Sobres digitales
Con un sobre digital se pueden garantizar las propiedades de
confidencialidad de un documento.

El sobre digital usa criptografía simétrica y asimétrica. Un sobre


digital se genera a partir de un documento d y una llave secreta k
que se genera de forma aleatoria, se cifra simétricamente Ck(d) el
documento d con la llave secreta k, luego la llave secreta k se cifra
asimétricamente con la llave pública k2 de la persona a la que le
vamos a enviar el sobre Ck2(k) y finalmente se concatenan el
cifrado del documento Ck(d) con el cifrado de la llave secreta
Ck2(k) dando origen al sobre digital.

Para abrir el sobre digital se toma el cifrado de la llave secreta


Ck2(k) y se descifra Dk1(Ck2(k)) con la llave privada k1 de la
persona a la que va dirigida el sobre, obteniendo la llave secreta k.
Con la llave k se descifra el cifrado del documento Dk(Ck(d))
obteniendo así el documento d original.
Criptografía y Hashes
Sobres digitales

Se pueden combinar los sobres digitales


con las firmas digitales dando lugar a un
sobre firmado y así se garantizan las
propiedades de integridad,
confidencialidad y autenticación
Criptografía y Hashes
Certificados digitales:
Un certificado digital básicamente es un documento digital expedido por
una autoridad de confianza que contiene los datos que identifican al
dueño del certificado, su llave pública, fecha de expedición, fecha de
caducidad, los datos de la autoridad de confianza y finalmente todo esto
está firmado por la misma autoridad.

Los certificados sirven para establecer lazos de confianza entre sistemas


o personas, ya que si se confía en la autoridad de confianza entonces se
puede confiar en la llave pública del dueño del certificado.

Tratando así de resolver el problema de relacionar las identidades con las


llaves públicas.

Como podemos observar, la criptografía no es la panacea, pero bien


usada puede ser de gran ayuda para mantener la seguridad informática.
Criptografía y Hashes
Conclusión:
La pregunta que debe de surgir es:

¿realmente con el uso de la criptografía moderna podemos


garantiza las propiedades de integridad y confidencialidad y con ello
resolver casi en su totalidad el problema de la seguridad informática?

La respuesta es si, por lo menos de manera teórica si.

Pero no hay que dejarnos engañar, la criptografía tiene su lado débil y en


esencia son dos los factores que la debilitan:

- Un sistema mal diseñado y


- El factor humano.
Criptografía y Hashes
Conclusión:
Del lado del sistema, como con todo sistema, hay que pasar los
conceptos teóricos a un programa de cómputo y no es trivial hacer esto,
un error en una línea de código produciría lo que se le conoce como
bugs del sistema debilitando o poniendo en riesgo al sistema.

Ahora, si el sistema tiene los elementos más modernos de criptografía,


pero está mal programado o se usan llaves demasiado pequeñas, ocurre
otro riesgo muy importante que puede debilitar a la seguridad
informática.

Al analizar como repercute el factor humano en un sistema se puede ver


que éste siempre es el eslabón más débil en un esquema de seguridad.

Ésto se debe en gran medida a la falta de capacitación en cuanto al uso


de la tecnología y a que muchas veces los usuarios comparten las llaves.
Otro detalle es que entre más elementos criptográficos se agreguen al
sistema, es más complicado que el usuario los entienda y los use.
Criptografía y Hashes
Hash MD5:
En criptografía, MD5 (abreviatura de Message-Digest Algorithm 5,
Algoritmo de Resumen del Mensaje 5) es un algoritmo de reducción
criptográfico de 128 bits ampliamente usado.

Uno de sus usos es el de comprobar que algún archivo no haya sido


modificado.
Criptografía y Hashes
Hash MD5:
Historia:
MD5 es uno de los algoritmos de reducción criptográficos diseñados
por el profesor Ronald Rivest del MIT (Massachusetts Institute of
Technology, Instituto Tecnológico de Massachusetts).

Fue desarrollado en 1991 como reemplazo del lgoritmo MD4 después


de que Hans Dobbertin descubriese su debilidad.

A pesar de su amplia difusión actual, la sucesión de problemas de


seguridad detectados desde que, en 1996, Hans Dobbertin anunciase
una colisión de hash, plantea una serie de dudas acerca de su uso
futuro.
Criptografía y Hashes
Hash MD5: Codificación:
La codificación del MD5 de 128 bits es representada típicamente como
un número de 32 símbolos hexadecimales.

El siguiente código de 28 bytes ASCII será tratado con MD5 y veremos su


correspondiente hash de salida:

MD5("Generando un MD5 de un texto") = 5df9f63916ebf8528697b629022993e8

Un pequeño cambio en el texto (cambiar '5' por 'S') produce una salida
completamente diferente.

MD5("Generando un MDS de un texto") = e14a3ff5b5e67ede599cac94358e1028

Otro ejemplo sería la codificación de un campo vacío:


MD5("") = d41d8cd98f00b204e9800998ecf8427e
Criptografía y Hashes
Hash MD5: Algoritmo:
Empezamos suponiendo que tenemos un mensaje de 'b' bits de entrada,
y que nos gustaría encontrar su resumen.

Aquí 'b' es un valor arbitrario entero no negativo, pero puede ser cero, no
tiene por qué ser múltiplo de ocho, y puede ser muy largo.

Imaginemos los bits del mensaje escritos así:

m0 m1 ... m{b-1}

Los siguientes cinco pasos son efectuados para calcular el resumen del
mensaje.
Criptografía y Hashes
Hash MD5: Algoritmo:
Paso 1. Adición de bits

El mensaje será extendido hasta que su longitud en bits


sea congruente con 448, módulo 512.

Esto es, si se le resta 448 a la longitud del mensaje tras este paso, se
obtiene un múltiplo de 512.

Esta extensión se realiza siempre, incluso si la longitud del mensaje es


ya congruente con 448, módulo 512.

La extensión se realiza como sigue: un solo bit "1" se añade al mensaje,


y después se añaden bits "0" hasta que la longitud en bits del mensaje
extendido se haga congruente con 448, módulo 512.

En todos los mensajes se añade al menos un bit y como máximo 512.


Criptografía y Hashes
Hash MD5: Algoritmo:
Paso 2. Longitud del mensaje

Un entero de 64 bits que represente la longitud 'b' del mensaje (longitud


antes de añadir los bits) se concatena al resultado del paso anterior.

En el supuesto no deseado de que 'b' sea mayor que 2^64, entonces sólo
los 64 bits de menor peso de 'b' se usarán.

En este punto el mensaje resultante (después de rellenar con los bits y


con 'b') se tiene una longitud que es un múltiplo exacto de 512 bits.

A su vez, la longitud del mensaje es múltiplo de 16 palabras (32 bits por


palabra).

Con M[0 ... N-1] denotaremos las palabras del mensaje resultante,
donde N es múltiplo de 16.
Criptografía y Hashes
Hash MD5: Algoritmo:
Paso 3. Inicializar el búfer MD

Un búfer de cuatro palabras (A, B, C, D) se usa para calcular el resumen


del mensaje.

Aquí cada una de las letras A, B, C, D representa un registro de 32 bits.

Estos registros se inicializan con los siguientes valores hexadecimales,


los bytes de menor peso primero:

palabra A: 01 23 45 67
palabra B: 89 ab cd ef
palabra C: fe dc ba 98
palabra D: 76 54 32 10
Criptografía y Hashes
Hash MD5: Algoritmo:
Paso 4. Procesado del mensaje en bloques de 16 palabras

Primero definimos cuatro funciones auxiliares que toman como entrada


tres palabras de 32 bits y su salida es una palabra de 32 bits.
Criptografía y Hashes
Hash MD5: Algoritmo:
Paso 4. Procesado del mensaje en bloques de 16 palabras

En cada posición de cada bit F actúa como un condicional: si X, entonces


Z sino Y.
La función F podría haber sido definida usando + en lugar de v ya que
XY y not(x) Z nunca tendrán unos ('1') en la misma posición de bit.

Es interesante resaltar que si los bits de X, Y y Z son independientes y no


sesgados, cada uno de los bits de F(X,Y,Z) será independiente y no
sesgado.

Las funciones G, H e I son similares a la función F, ya que actúan "bit a


bit en paralelo" para producir sus salidas de los bits de X, Y y Z, en la
medida que si cada bit correspondiente de X, Y y Z son independientes y
no sesgados, entonces cada bit de G(X,Y,Z), H(X,Y,Z) e I(X,Y,Z) serán
independientes y no sesgados
Criptografía y Hashes
Hash MD5: Algoritmo:
Paso 4. Procesado del mensaje en bloques de 16 palabras

Nótese que la función H es la comparación bit a bit "xor" o función


"paridad" de sus entradas.

Este paso usa una tabla de 64 elementos T[1 ... 64] construida con la
función Seno.

Denotaremos por T[i] el elemento i-ésimo de esta tabla, que será igual a
la parte entera del valor absoluto del seno de 'i' 4294967296 veces.
Criptografía y Hashes
Hash MD5: Algoritmo:
Paso 5. Salida

El resumen del mensaje es la salida producida por A, B, C y D.

Esto es, se comienza el byte de menor peso de A y se acaba con el byte


de mayor peso de D.
Criptografía y Hashes
Hash MD5: PHP:

<?php
$clave=md5('clave del usuario');
echo 'Clave encriptada: '.$clave;
?>

Salida:

Clave encriptada: eabd257f9f88b53e44012cbc1a92a1ae


Criptografía y Hashes
Hash SHA:
El SHA (Secure Hash Algorithm, Algoritmo de Hash Seguro) es una
familia de funciones hash de cifrado publicadas por el Instituto
Nacional de Normas y Tecnología(NIST)​ de EE. UU.

La primera versión del algoritmo se creó en 1993 con el nombre de


SHA, aunque en la actualidad se la conoce como SHA-0 para evitar
confusiones con las versiones posteriores.

La segunda versión del sistema, publicada con el nombre de SHA-1,


fue publicada dos años más tarde.

Posteriormente se han publicado SHA-2 en 2001 (formada por


diversas funciones: SHA-224, SHA-256, SHA-384, y SHA-512) y la
más reciente, SHA-3, que fue seleccionada en una competición de
funciones hash celebrada por el NIST en 2012. Esta última versión
se caracteriza por ser la que más difiere de sus predecesoras.
Criptografía y Hashes
Hash SHA:
SHA-1 ha sido examinado muy de cerca por la comunidad
criptográfica pública y no se ha encontrado ningún ataque eficaz.

No obstante, en el año 2004, se dio a conocer un número


significativo de ataques contra funciones criptográficas de hash con
una estructura similar a SHA-1, lo que plantea dudas sobre la
seguridad a largo plazo de SHA-1.

SHA-0 y SHA-1 producen una salida resumen de 160 bits (20 bytes)
de un mensaje que puede tener un tamaño máximo de 264 bits, y se
basa en principios similares a los usados por el profesor Ronald L.
Rivest del MIT en el diseño de los algoritmos de resumen de
mensaje MD4 y MD5.

La codificación hash vacía para SHA-1 corresponde a:


SHA1("") = da39a3ee5e6b4b0d3255bfef95601890afd80709
Criptografía y Hashes
Hash SHA:
<?php
$str = 'apple';

if (sha1($str) ===
'd0be2dc421be4fcd0172e5afceea3970e2f3d940') {
echo “La quieres verde o roja?";
}
?>
Criptografía y Hashes
Hash Lento pbkdf2 :
En este caso, la idea es otra.

Se usa el hash como siempre hasta ahora, pero el algoritmo que


codifica es lento.

Es decir uno puede configurar para que el proceso demore varios


minutos, lo que lo vuelve más trabajoso a la hora de un ataque de
fuerza bruta.

Por ejemplo, si un ataque de fuerza bruta en un hash rápido para ir


tirando palabras y conviertiéndolas a hash para comprobar si
coinciden demora horas.

Al usar un hash lento como pbkdf2 podemos hacer que demore


meses, desalentando así lo útil de realizar el ataque.
Criptografía y Hashes
Hash pbkdf2:
Genera una derivación de clave PBKDF2 de una contraseña
proporcionada

PHP:

string hash_pbkdf2 ( string $algo , string $password , string $salt ,


int $iterations [, int$length = 0 [, bool $raw_output = false ]] )

Algo.- El nombre del algoritmo hash seleccionado (md5, sha256, etc. )


password.- La contraseña a usar para la derivación.
Salt.- La sal a usar para la derivación. generado aleatoriamente.
Iterations.- El número de iteraciones internas para realizar la derivación.
Length.- La longitud del string de salida.
Si raw_output es TRUE, se corresponde con la longitud en bytes de la clave
derivada;
Si raw_output es FALSE, se corresponde con dos veces la longitud en bytes
de la clave derivada (ya que cada byte de la clave es devuelto como dos
dígitos hexadecimales).
Criptografía y Hashes
Hash pbkdf2: Ejemplo
<?php
$contraseña = "password";
$iteraciones = 1000;

// Generar una IV aleatoria usando mcrypt_create_iv(),


// openssl_random_pseudo_bytes() u otra fuente disponible
// de aleatoriedad
$sal = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);

$hash = hash_pbkdf2("sha256", $contraseña, $sal, $iteraciones, 20);


echo $hash;
?>

Salida:

120fb6cffcf8b32c43e7
Hypertext Transfer
Protocol Secure
1. Introducción.
2. Características Técnicas
2.1 Diferencias con HTTP
2.2 Capas de Red
2.3 Configuración
2.4 Limitaciones .
PROTOCOLO HTTPS
Introducción.
Hypertext Transfer Protocol Secure (Protocolo seguro de
transferencia de hipertexto), más conocido por sus siglas HTTPS, es un
protocolo de red basado en el protocolo HTTP, destinado a la
transferencia segura de datos de hipertexto, es decir, es la versión
segura de HTTP.

Es mas utilizado por entidades bancarias, tiendas en línea, y cualquier


tipo de servicio que requiera el envío de datos personales o
contraseñas, como pueden ser transacciones bancarias, comercio
electrónico, en el que el usuario para completar una compra o alguna
transacción necesita brindar sus datos.
La idea principal de https es la de crear un canal seguro sobre una red
insegura. Proporcionando una protección contra ataques eavesdropping
y man-in-the-middle, siempre que se empleen métodos de cifrado
adecuados y que el certificado del servidor sea verificado y resulte de
confianza.
La confianza inherente en HTTPS está basada en una Autoridad de
certificación superior que viene preinstalada en el software del
navegador (Es el equivalente a decir "Confío en la autoridad de
certificación (p.e. VeriSign/Microsoft/etc.) para decirme en quien
debería confiar").
Una conexión HTTPS a un website puede ser validada si y solo si todo lo
siguiente es verdad:
• El usuario confía en la Autoridad de certificación para dar fe solo para
websites legítimos sin nombres engañosos.
• El website proporciona un certificado válido (y un certificado inválido
muestra una alerta en la mayoría de los navegadores), lo que significa
que está firmado por una autoridad confiable.
• El certificado identifica correctamente al website (p.e. visitando
https://algunsitio y recibiendo un certificado para "AlgunSitio S.A." y no
AlgunZitio S.A." ).
• Cada uno de los nodos involucrados en internet son dignos de confianza,
o que el usuario confíe en que la capa de cifrado del protocolo (TLS o SSL)
es inquebrantable por un eavesdropper.
Integración con el Navegador.
Los protocolos HTTPS son utilizados por navegadores como: Safari,
Internet Explorer, Mozilla Firefox, Opera y Google Chrome, entre otros.
Algunos navegadores utilizan un icono (generalmente un candado) en
la parte derecha de la barra de direcciones para indicar la existencia de
un protocolo de comunicaciones seguro e incluso cambian el color del
fondo de la barra de direcciones por amarillo (Firefox) o verde (Internet
Explorer) para identificar páginas web seguras.
Para conocer si una página web que estamos visitando utiliza el
protocolo https y es, por tanto, segura en cuanto a la trasmisión de los
datos que estamos transcribiendo, debemos observar si en la barra de
direcciones de nuestro navegador aparece https al comienzo, en lugar
de http.
Características Técnicas
HTTPS utiliza un cifrado basado en SSL/TLS para crear un canal
cifrado (cuyo nivel de cifrado depende del servidor remoto y del
navegador utilizado por el cliente) más apropiado para el tráfico de
información sensible que el protocolo HTTP. De este modo se
consigue que la información sensible (usuario y claves de paso
normalmente) no pueda ser usada por un atacante que haya
conseguido interceptar la transferencia de datos de la conexión, ya
que lo único que obtendrá será un flujo de datos cifrados que le
resultará imposible de descifrar.

El puerto estándar para este protocolo es el 443.


Diferencias con HTTP

• En el protocolo HTTP las URLs comienzan con http:// y en el seguro es


https://
•HTTP utilizana por defecto el puerto 80, las URLs de HTTPS utilizan el
puerto 443 por defecto.

•HTTP es inseguro y está sujeto a ataques man-in-the-middle y


eavesdropping que pueden permitir al atacante obtener acceso a cuentas de
un sitio web e información confidencial.
•HTTPS está diseñado para resistir esos ataques y ser seguro.
Capas de Red
HTTP opera en la capa más alta del Modelo OSI, la Capa de Aplicación;
pero el protocolo HTTPS opera en una subcapa más baja, cifrando un
mensaje HTTP previo a la transmisión y descifrando un mensaje una
vez recibido.
Estrictamente hablando, HTTPS no es un protocolo separado, pero
refiere el uso del HTTP ordinario sobre una Capa de Conexión Segura
cifrada Secure Sockets Layer (SSL) o una conexión con Seguridad de la
Capa de Transporte (TLS).
Configuración del Servidor

Para preparar un servidor web que acepte conexiones HTTPS, el


administrador debe crear un Certificado de clave pública para el servidor
web. Este certificado debe estar firmado por una Autoridad de certificación
para que el navegador web lo acepte. La autoridad certifica que el titular del
certificado es quien dice ser. Los navegadores web generalmente son
distribuidos con los certificados firmados por la mayoría de las Autoridades
de Certificación por lo que estos pueden verificar certificados firmados por
ellos.
Limitaciones
• El nivel de protección depende de la exactitud de la implementación del
navegador web, el software del servidor y los algoritmos de cifrado
actualmente soportados.
• También, HTTPS es vulnerable cuando se aplica a contenido estático de
publicación disponible. El sitio entero puede ser indexado usando una Araña
web, y la URI del recurso cifrado puede ser adivinada conociendo solamente
el tamaño de la petición/respuesta. Esto permite a un atacante tener acceso al
Texto plano (contenido estático de publicación), y al Texto cifrado (La versión
cifrada del contenido estático), permitiendo un ataque criptográfico.
• Debido a que SSL opera bajo HTTP y no tiene conocimiento de protocolos de
nivel más alto, los servidores SSL solo pueden presentar estrictamente un
certificado para una combinación de puerto/IP en particular. Esto quiere
decir, que en la mayoría de los casos, no es recomendable usar Hosting
virtual name-based con HTTPS. Existe una solución llamada Server Name
Indication (SNI) que envía el hostname al servidor antes de que la conexión
sea cifrada, sin embargo muchos navegadores antiguos no soportan esta
extensión. El soporte para SNI está disponible desde Firefox 2, Opera 8, e
Internet Explorer 7 sobre Windows Vista.
CONCLUSIONES.
• El protocolo HTTP, es un protocolo fácil de violentar, ya que
personas infiltradas pueden capturar los datos que se están
transmitiendo, y con esa información poder causar daños y
perjuicios a personas, empresas, u cualquier entidad.
• El protocolo HTTPS, cambia lo dicho por HTTPS al utilizar un
cifrado, en el que los infiltrados podrán tal vez capturar los datos
transmitidos pero lo que no podrán es descifrar la información ya
que esta esta encriptado.

También podría gustarte