Está en la página 1de 27

Criptología

Lección 2: Criptografía moderna


ÍNDICE

PRESENTACIÓN Y OBJETIVOS ................................................................................................................. 1


MAPA DE LA UNIDAD ............................................................................................................................. 2
1. INTRODUCCIÓN ............................................................................................................................ 3
2. CRIPTOGRAFÍA SIMÉTRICA ............................................................................................................ 4
2.1. ALGORITMO DES ................................................................................................................................ 4
2.2. ALGORITMO AES ................................................................................................................................ 6
2.3. ALGORITMO IDEA .............................................................................................................................. 8
3. CRIPTOGRAFÍA ASIMÉTRICA ......................................................................................................... 9
3.1. INTERCAMBIO DE CLAVES. ALGORITMO DIFFIE-HELLMAN .......................................................................... 10
3.2. ALGORITMO RSA .............................................................................................................................. 11
3.3. ALGORITMO DSA.............................................................................................................................. 13
3.4. ALGORITMO ELGAMAL ....................................................................................................................... 14
4. FUNCIONES RESUMEN (HASH) .................................................................................................... 14
5. FIRMA, CERTIFICADO DIGITAL Y DNI ELECTRÓNICO .................................................................... 16
5.1. FIRMA DIGITAL ................................................................................................................................. 16
5.2. CERTIFICADO DIGITAL ........................................................................................................................ 20
5.3. DNI ELECTRÓNICO ............................................................................................................................ 22
Lección 2: Criptografía moderna
PRESENTACIÓN Y OBJETIVOS
Estamos en la segunda lección de la asignatura de Criptología, si en la
primera lección hicimos un breve repaso de la historia de la Criptografía y la
Esteganografía, así como un recorrido por la Criptografía clásica y moderna,
en esta segunda lección profundizaremos en la Criptografía moderna,
haciendo un estudio detallado de los algoritmos más utilizados y viendo
ejemplos prácticos de los mismos.

Objetivos

En esta unidad aprenderemos a

• Conocer los fundamentos teóricos, así como su


aplicación práctica, de los principales algoritmos
criptográficos.
• Conocer los diferentes modelos de criptografía.
• Conocer los fundamentos teóricos y prácticos de
los principales algoritmos simétricos y asimétricos.
• Aplicar técnicas criptográficas para cifrar/descifrar
información.
• Analizar sistemas criptográficos para detectar
posibles vulnerabilidades.
• Conocer las aplicaciones prácticas de la
criptografía en la actualidad: blockchain, firma
digital, Internet of Things, etc.
• Ser consciente de la importancia de la criptografía
en el desarrollo de la sociedad de la información.

Criptología 1
MAPA DE LA UNIDAD

Criptografía
moderna

Usos de la
Criptografía Criptografía
Funciones Hash criptografía en la
simétrica asimétrica
actualidad

Cifrado clave
DES RSA ElGamal Firma digital
pública

Intercambio de
3DES Certificado digital
claves

AES Diffie y Hellman DNI electrónico

Criptología 2
1. INTRODUCCIÓN

Tras el final de la Segunda Guerra Mundial, con el comienzo de la Guerra Fría


y el desarrollo de las tecnologías de la Información y la Comunicación, la
criptografía fue convirtiéndose en algo cotidiano en nuestro día a día, hasta
llegar a la actualidad, donde está presente en la mayoría de los hechos
cotidianos, como puede ser desbloquear nuestro móvil, enviar un mensaje
por una aplicación o simplemente hacer un pago con nuestra tarjeta de
crédito donde nos obliguen a introducir el PIN.

En 1883, el lingüista y criptógrafo holandés Auguste Kerckhoffs, postuló las


propiedades que eran deseables en un sistema criptográfico, y en base a una
de dichas propiedades se ha desarrollado la ciencia de la criptografía actual.

Dicho postulado venía a decir que la seguridad de un sistema criptográfico


no depende de que su diseño permanezca en secreto, tal y como ocurría en
la criptografía clásica, sino que la seguridad del sistema viene dada por la
clave utilizada para cifrar el texto original, y mientras no se conozca, nadie
podrá descifrar el mensaje cifrado. Como curiosidad cabe resaltar, que el
primer principio definido por Kerckhoffs sobre la idoneidad de los sistemas
criptográficos venía a decir que ningún sistema es irrompible.

Los algoritmos que utilizan la misma clave para cifrar que para descifrar, se
conocen como algoritmos de clave simétrica. Una de las mayores
innovaciones en el desarrollo de la criptografía actual, que ha marcado un
hito en el mundo de las operaciones telemáticas, fue la aparición de la
criptografía asimétrica, que utiliza una clave para cifrar y otra para descifrar.

De esta forma podríamos clasificar los algoritmos de cifrado actuales en dos


grandes grupos:

 Algoritmos de clave simétrica: también conocidos como algoritmos


de clave privada. Son aquellos que utilizan la misma clave para cifrar
y para descifrar el mensaje. La seguridad viene dada por la
complejidad de la clave.
 Algoritmos de clave asimétrica: también conocidos como
algoritmos de clave pública. Son aquellos que utilizan una clave para
cifrar y otra distinta para descifrar. Cada uno de los usuarios que

Criptología 3
participe en este proceso de cifrado dispondrá de una clave privada y
otra pública.

En esta lección haremos un estudio detallado de los algoritmos de clave


simétrica y asimétrica y veremos el uso que tienen en la actualidad.

2. CRIPTOGRAFÍA SIMÉTRICA
Los algoritmos de clave simétrica, también conocidos como algoritmos de
clave privada son aquellos que utilizan la misma clave para cifrar que para
descifrar el mensaje. La fortaleza del algoritmo radica en mantener a salvo la
contraseña utilizada.

Por ejemplo, en las tarjetas de crédito se utilizan este tipo de algoritmos. La


seguridad de esta viene dada, de forma general, por mantener a salvo la
tarjeta y el código PIN.

El documento original es cifrado con una clave privada y para poder ser
descifrado tendrá que ser descifrado con la misma clave privada con la que
se cifró, tal y como se puede ver en la siguiente figura.

CIFRA DESCIFRA

Figura 2-1. Ejemplo de cifrado/descifrado en algoritmo de Clave privada.

Dentro de los algoritmos de clave simétrica podemos remarcar los


algoritmos DES, 3DES o IDEA.

2.1. Algoritmo DES


El algoritmo DES fue desarrollado por la empresa IBM en la década de los 70,
rápidamente se convirtió en un estándar de cifrado llegando a convertirse en
un estándar de seguridad del gobierno de los Estados Unidos.

Criptología 4
El utilizar una clave de longitud fija relativamente corta (56 bits) y las
continuas sospechas de que la Agencia de Seguridad Nacional Americana
hubiera colocado puertas traseras hizo que se llevara a cabo un exhaustivo
estudio de este y se detectaran numerosas vulnerabilidades, lo que ha hecho
que hoy en día se considere un algoritmo inseguro.

El algoritmo DES (Data Encryption Standard) es un algoritmo de cifrado por


bloques. A la hora de cifrar sé divide el texto en bloques de 64 bits que son
transformados mediante una serie de operaciones básicas para las cuales se
utiliza una clave de cifrado de 56 bits. Realmente, dicha clave de cifrado tiene
una longitud de 64 bits, de los cuales se utilizan 8 bits para verificar la paridad
y comprobar la integridad del mensaje emitido, por lo que a efectos prácticos
la clave de cifrado tiene una longitud de 56 bits.

Los bloques de 64 bits en los que se dividen el texto original son sometidos
a 16 rondas en las que el bloque resultado de la ronda anterior es modificado
dando lugar a un nuevo bloque, tal y como puede verse en la siguiente figura.
En cada ronda, la clave es diferente y se obtiene a partir de aplicar
desplazamientos de bits a la izquierda de la clave original.

Figura 2.1-1. Estructura del algoritmo DES. Autor Hardcoded. Fuente Wikipedia

Criptología 5
Las cajas verdes con una F representan la función Feistel que es un sistema
de cifrado en bloque que tiene la gran ventaja de que la operación de cifrado
y descifrado son idénticas, por lo que son reversibles.

La función Feistel divide el bloque de entrada en dos partes de igual tamaño,


se realizan operaciones sobre los bits de uno de los bloques, al resultado
obtenido se le aplica la función XOR junto con el bloque que no fue
modificado. De aquí se obtiene un nuevo bloque y se repite la operación, es
decir, se divide en dos partes, a una se le aplica la función Feistel y al
resultado se le aplica la función XOR con la parte del bloque a la que no se le
aplicó la función Feistel. El descifrado se produciría haciendo las mismas
operaciones en orden inverso, y ahora la modificación de la clave en cada
ronda se obtendría desplazando los bits a la derecha, y no a la izquierda
como ocurría durante el proceso de cifrado.

El algoritmo DES fue roto por un ataque de fuerza bruta en 1997 lo que hizo
que fuera sustituido por el 3DES o Triple DES, que consistía en aplicar tres
veces el algoritmo DES. Si se utilizara la misma clave, tendríamos el mismo
resultado que al aplicar el DES, sin embargo, si se utilizan dos claves
diferentes, tenemos una fortaleza de 112 bits. Si por el contrario las tres
claves son diferentes, la fortaleza es de 168 bits, por lo que para romper el
algoritmo mediante fuerza bruta tendríamos que hacer 2168 combinaciones.

Actualmente aún existen métodos de pago como algunas tarjetas de crédito


y algunos esquemas de conexión seguro como el SSL y el TLS que utilizan el
algoritmo 3DES, aunque poco a poco está siendo sustituido por el algoritmo
AES (Advanced Encryption Standard).

2.2. Algoritmo AES


El algoritmo AES (Advanced Encryption Standard) es uno de los algoritmos
más seguros que existen actualmente y que ha sido adoptado como estándar
de seguridad por la NSA. Dicho algoritmo cifra bloques completos de bits,
que pueden ser de 128, 192 o 256 bits.

Criptología 6
¿Sabías qué?
El algoritmo AES surge de un concurso de ideas
propuesto por el NIST (National Institute of Standards
and Technology) en 1997 ante la cantidad de ataques
que estaba sufriendo el algoritmo DES dejando al
descubierto sus vulnerabilidades. El algoritmo
vencedor recibía el nombre de Rijndael y en el año
2000 fue propuesto como el nuevo algoritmo simétrico
de seguridad que sustituiría al algoritmo DES y 3DES.

El algoritmo divide el bloque inicial en un número par de bytes, que forman


una matriz cuadrada sobre la que se aplican técnicas de sustitución,
permutación y operaciones polinómicas. Por ejemplo, si tenemos un texto
de 128 bits, se dividiría en 16 bloques de un byte, formando una matriz de 4
por 4. A la matriz resultado se le aplican un número fijo de rondas en función
del tamaño de la clave. Si aplicamos el algoritmo de 128 bits, será sometido
a un proceso de 10 rondas, si la clave es de 192, el número de rondas será
de 12 y en caso de tener una clave de 256 bits, será de 14 rondas. La clave
inicial también es sometida a procesos de modificación. En cada ronda, se
someten a varias operaciones la matriz de bytes resultado de la ronda
anterior con la clave correspondiente.

Veamos las fases del algoritmo AES

 Etapa inicial: es conocida como AddRoundKey, y aquí se hace el XOR


(OR Exclusivo) entre los bytes de la matriz inicial y los bytes de la clave
inicial K0.
 Rondas: este proceso se repite durante n-1 rondas. Por ejemplo, si la
clave es de 128 bits, se repetirá 9 veces. Durante cada ronda se
utilizará una subclave Ki Consiste en lo siguiente:
 SubBytes: cada uno de los bytes de la matriz de estado es
sustituido por una entrada de una tabla de búsqueda.
 ShiftRows: se rotan los bytes de cada fila un número
determinado de veces. Por ejemplo, los bytes de la fila 0 no
rotan, los de la fila 1 rotan una posición (el primero por la
izquierda pasa a ser el primero por la derecha, y el resto rotan
una posición a la izquierda). Los de la fila 2, rotan dos
posiciones, y así sucesivamente.

Criptología 7
 MixColumns: se multiplica cada una de las columnas de la
matriz de estado por un polinomio fijo.
 AddRoundKey: realiza la operación XOR (Or Exclusivo) de la
subclave Ki con la matriz de estado.
 Etapa final: en la última ronda se realizan las siguientes operaciones
con la subclave Kn
 SubBytes
 ShiftRows
 AddRoundKey

Las distintas subclaves se obtienen con una función conocida como


expansión de clave. Si tenemos 10 rondas, necesitaremos 10 subclaves. Si
por el contrario tenemos un algoritmo de 14 rondas, necesitaremos 14
subclaves.

El resultado final será la matriz de bytes que formaran el texto cifrado. Para
el descifrado se recorrerá el algoritmo en sentido inverso.

2.3. Algoritmo IDEA


Otro de los algoritmos que se barajaron como sustituto del algoritmo DES
fue el algoritmo IDEA (International Data Encryption Algorithm).

Es un algoritmo que opera con bloques de 64 bits utilizando una clave de 128
que son transformados a lo largo de 8 rondas idénticas, a diferencia de lo
que ocurre en el algoritmo AES, que tiene la primera y la última ronda
distintas. En todas las rondas utiliza una combinación de tres operaciones
básicas, que son la operación XOR, la operación suma módulo 216 y la
multiplicación módulo 216.

En cada una de las rondas, dividiremos el mensaje en bloques de 64 bits, que


son el tamaño de bloque con el que opera dicho algoritmo. Dicho bloque de
64 bits se divide en cuatro partes de 16 bits, cada parte le llamaremos B1, B2,
B3 y B4 respectivamente, y sobre cada bloque, utilizando las distintas
subclaves (Ki) se realizan en cada ronda operaciones de multiplicación y suma
en módulo y operaciones XOR.

Las distintas subclaves se obtienen dividiendo la clave inicial en bloques de


16 bits y realizando operaciones aritméticas sobre las mismas.

Actualmente, romper el algoritmo IDEA sería muy complicado, puesto que


necesitaríamos probar 1038 combinaciones.

Criptología 8
3. CRIPTOGRAFÍA ASIMÉTRICA
La criptografía asimétrica es aquella que utiliza dos claves distintas, de
forma que lo que se cifre con una de ellas, solo podrá ser descifrado con la
otra perteneciente al par de claves. Una de ellas es pública y puede ser
conocida por cualquiera (clave pública), sin quedar en entredicho la
seguridad del sistema, mientras que la otra tiene que permanecer secreta
(clave privada) y solo ser conocida por su propietario.

La peculiaridad de este sistema radica en que todo lo que se cifra con la clave
pública de un usuario, solo puede ser descifrado con su clave privada, y todo
lo que se cifra con su clave privada, solo puede ser descifrado con su clave
pública. Además, conociendo la clave pública de un usuario, no se puede
obtener la clave privada.

Este tipo de criptografía se basa en un concepto matemático conocido como


funciones de un único sentido, que suelen hacer uso de los números primos.
En dichas funciones resulta fácil hacer su computación en un sentido, pero
en el inverso resulta muy complicado. Por ejemplo, si tenemos dos números
primos muy grandes, realizar su multiplicación es muy sencillo, sin embargo,
si conocemos el resultado, obtener los dos números primos a partir del cual
se obtuvo el resultado es muy complejo.

CIFRA DESCIFRA

Figura 3-1. Ejemplo de cifrado/descifrado en algoritmo de clave pública.

Como podemos ver en el diagrama anterior, si queremos enviar un mensaje


a Hugo y asegurar la confidencialidad de este, tendremos que cifrar el
mensaje con su clave pública, de forma que solo podrá ser descifrado con su
clave privada, por lo que solamente Hugo podrá leer el contenido del
mensaje, ya que si cualquier usuario intenta descifrar con otra clave privada
que no sea la asociada a la clave pública que se utilizó para cifrar, no se podrá
descifrar el mensaje.

Criptología 9
3.1. Intercambio de claves. Algoritmo Diffie-Hellman
En los algoritmos de criptografía simétrica tanto el emisor como el receptor
deben de utilizar la misma contraseña para cifrar y para descifrar, lo cual
plantea un problema si ambas partes no se conocían a priori ¿cómo conocen
la contraseña a utilizar para cifrar y descifrar? Y si a priori no la conocen,
¿cómo la comparten de forma segura para que solamente el emisor y el
receptor la conozcan?

La respuesta a estas preguntas la encontramos en el Algoritmo Diffie-


Hellman, el cual recibe su nombre por sus creadores (aunque habría que
añadir a un tercero, Ralph Merkle, quien aportó muchísimas ideas) y que
permite el intercambio de una clave secreta entre dos máquinas que no han
tenido contacto previo.

Dicho algoritmo se basa en funciones matemáticas, conocidas como


funciones sin retorno, aunque es vulnerable al ataque conocido como
hombre en el medio (MitM), según el cual un atacante podría situarse entre
ambas máquinas y generar una clave que le permitiera cifrar y descifrar
todas las comunicaciones. Este tipo de ataque se evitaría utilizando junto al
algoritmo Diffie-Hellman un protocolo que permitiera la autenticación.

Veamos a continuación una ilustración detrás del concepto de intercambio


de clave de Diffie-Hellman.

Imagen obtenida de Wikipedia

Criptología 10
3.2. Algoritmo RSA
El algoritmo RSA recibe el nombre de las iniciales del primer apellido de sus
creadores: Rivest, Shamir y Adleman. Dicho algoritmo basa su fortaleza en la
dificultad de factorizar un número obtenido a partir del producto de dos
números primos muy grandes (de más de 1024 bits). Por ejemplo, si tenemos
el número primo 104549 y el número primo 100829, el producto de ambos
números sería 10541571121 y sería sencillo de calcular. Sin embargo,
conocido el número 10541571121, sería muy complicado factorizarlo y
obtener los dos números primos cuyo producto dio dicho resultado.

Cada usuario puede generar sus claves de una forma sencilla, imaginemos
una comunicación entre Hebe y Hugo y veamos como Hebe podría generar
sus claves.

 Primero elige dos números primos grandes, cuya longitud en bits debe
de ser entre 512 bits (versión inicial de RSA con menos seguridad) y
2048 (máxima seguridad). A continuación, calcula el producto de
ambos primos, obteniendo n=p*q. Una vez obtenido el producto,
obtiene el indicador de Euler que se calcula como (n) = (p-1) (q-1).
 Luego elige un número entero positivo, e, mayor que 1 y menor que
(n), cuyo máximo común divisor sea 1 (m.c.d [e, (n)] = 1).
 Por último, calculamos la clave privada d, que es el inverso
multiplicativo del número e módulo (n), es decir, que cumpla que e·d
sea igual a 1.

La clave pública de Hebe sería (n, e) y su clave privada d. Por cuestiones de


seguridad p, q y (n) se mantienen ocultos.

Si Hugo quiere mantener una conversación privada con Hebe utilizando el


algoritmo RSA, lo primero que hará es solicitar a Hebe su clave pública (n, e).

La complejidad del algoritmo RSA radica en la dificultad de factorizar un


número grande que tenga pocos factores, como es el caso de un número
grande resultado del producto de dos números primos grandes.

Veamos cómo se obtiene la clave pública e y privada d con un ejemplo


práctico. Imaginemos que Hebe quiere enviar información codificada a Hugo,
para ello elegiría dos números primos p y q. Lo ideal es que dichos números
primos sean muy grandes, pero para el ejemplo utilizaremos dos números
primos pequeños.

Criptología 11
Tenemos entonces p=7 y q=13. Calculamos su producto n=p·q=7·13=91. El
módulo RSA de Hebe sería 91. Ahora tendríamos que calcular la Función de
Euler (phi de Euler) de 91 (91) es el número de números menores de 91 que
son coprimos con 91, es decir, que el m.c.d entre 91 y dicho número es 1. En
este caso dicho valor se calcula como (p·q) = (p-1) (q-1), luego en nuestro
ejemplo phi de Euler es (91) = 72. La clave pública de Hebe sería un número
del 1 al 72 cuyo máximo común divisor entre dicho número y el 72 sea 1. En
nuestro caso hemos elegido el número 17, luego tenemos como valores
públicos de Hebe n=91 y e=17.

¿Cómo se cifraría?

Imaginemos que tenemos el mensaje GANAMOS para codificar. Cada letra se


le asignaría un valor numérico, por ejemplo, la posición que ocupa en el
alfabeto, la A sería la letra 0, la B la letra 1 y así sucesivamente. La G sería por
tanto la posición 6. Para codificarla calcularíamos 6emod n, es decir, 617mod
91. Dicho valor sería el valor codificado. La operación mod es el resto de la
división entera, luego siempre nos dará un valor comprendido entre 0 y 90,
ambos incluidos. Al valor codificado o cifra le vamos a llamar C. En este caso
nos da el valor 41.

¿Cómo se obtiene la clave privada?

Para obtener la clave privada tendríamos que calcular el inverso de e mod


(n). Es decir, el inverso de 17 módulo 72, que sería un número que al
multiplicar por 17 el resto de la división entera entre 72 sea 1. Utilizando la
herramienta genRSA vemos que podemos obtener varias claves privadas
para el par de clave pública n=91, e=17. Entre dichas claves privadas tenemos
la clave privada 53.

La clave privada de Hebe sería el 53. A dicha clave le vamos a llamar d


minúscula.

¿Cómo se descifraría?

Para descifrar C tendríamos que calcular Cd mod n, es decir, 4153mod 91 y


nos tendría que dar el valor 6 que era el valor original de la letra G que era la
primera letra del mensaje GANAMOS que estábamos codificando.
Realizando los cálculos con la herramienta genRSA, vemos que
efectivamente los cálculos son correctos.

Criptología 12
Ejercicio 3.1.1. Imagina que Hebe quiere mantener una comunicación
privada con Hugo mediante RSA. Cuando le pide su clave pública Hebe le
devuelve el valor 15 ¿sería una buena clave pública para el algoritmo RSA?

Solución: No. Además del tamaño de este que es muy reducido, 15 no es un


número primo, por lo que podría dar diferentes resultados de cifrado para
un mismo texto.

Para más información


Puedes descargarte la aplicación genRSA desarrollado
por la empresa Criptored y que es distribuido bajo
licencia libre y nos permite simular la creación del par de
contraseñas clave/privado del algoritmo RSA y llevar a
cabo pruebas de cifrado y descifrado con las mismas.

http://www.criptored.upm.es/software/sw_m001d.htm

3.3. Algoritmo DSA


El algoritmo DSA se convirtió en estándar del Gobierno Federal de Estados
Unidos, el cual ha demostrado mayor seguridad que el algoritmo RSA en
entornos críticos, pero presenta la desventaja de que solo permite firmar
digitalmente, no cifrar la información. Además, requiere mucho más tiempo
de cómputo que el algoritmo RSA.

¿Cómo se elegiría la clave?

Para generar las claves elegimos un número primo p de N bits, siendo N


mayor o igual que 512 y menor o igual que 1.024 y a su vez divisible entre 64,
es decir, el resto de la división entera entre 64 sea igual a cero, por lo que,
por ejemplo, no podríamos coger 513 bits y si podría ser, por ejemplo, de 640
bits.

A continuación, elegimos otro número primo q de 160 bits, tal que p-1=q·z,
siendo z un número natural.

Ahora elegimos un valor h, donde 1<h<p-1 tal que g=hz(mod p)>1.

Criptología 13
A continuación, elegimos un número x tal que 1<x<q-1.

Por último, calculamos y=gx (mod p)

Las claves públicas serían p,q,g e y. La clave privada sería x.

3.4. Algoritmo ElGamal


Algoritmo propuesto por el matemático egipcio Elgamal, padre del protocolo
de comunicación segura SSL.

Para el par de claves público/privado se elige un número primo grande p y


una raíz primitiva de dicho número . La clave privada será un valor  menor
que p y se calculará la clave pública como =mod p.

Conocido los valores p, ,  es complicado, computacionalmente, obtener la


clave privada , lo cual es prácticamente imposible si utilizamos un valor p
de más de 1.000 bits.

4. FUNCIONES RESUMEN (HASH)


Con los algoritmos de cifra vistos hasta ahora podemos garantizar la
confidencialidad, la autenticidad y el no repudio en una comunicación, pero
nos encontramos con la necesidad de poder asegurar la integridad del
mensaje, es decir, el mensaje recibido es el mismo que el enviado. Para ello
surgieron las funciones hash o funciones resumen.

Las funciones hash son algoritmos que al aplicarlas sobre un documento nos
generan una secuencia de bits única, de tal forma que, si modificásemos una
sola letra del documento, al aplicar la función hash nos daría un resultado
distinto. Podríamos decir que la función hash actúa como la huella digital de
un documento.

Estas funciones pueden utilizarse para garantizar la integridad de un


documento. De forma que, al enviar un documento, este puede enviarse
junto con su función hash. Al recibirlo el receptor, éste le aplicará la función
hash al documento recibido y si no coincide con la recibida, el documento
habrá sido modificado durante el envío.

Las funciones Hash deben de cumplir una serie de requisitos, los cuales son:

 Unidireccionalidad: conocido el resultado de la función hash es


imposible obtener el documento original.

Criptología 14
 Compresión: la función hash resultado debe de ser de menor tamaño
que el documento original.
 Facilidad de cálculo: debe de ser fácil obtener la función hash de un
documento.
 Difusión de bits: también conocida como efecto de avalancha, indica
que el resumen debe ser una función compleja de todos los bits del
mensaje.
 Resistencia débil a colisiones o primera preimagen: esta propiedad
se cumplirá si es computacionalmente imposible que, conocido un
mensaje, podamos encontrar otro mensaje tal que ambos sean
iguales.
 Resistencia fuerte a colisiones o segunda preimagen. en este caso,
nos indica que será computacionalmente imposible encontrar un par
aleatorio de mensajes de forma que uno sea igual al otro.

Algunos de los algoritmos de función Hash más destacados son el MD5, SHA-
1, SHA-256 y SHA-3. Como esta primera unidad es una introducción diremos
a groso modo que el algoritmo MD5 (Message Digest 5) fue una evolución
del MD4 y obtiene, a partir de cualquier documento de entrada, una cadena
de 128 bits. El algoritmo SHA, es más lento que el MD5, pero ofrece
resultados más seguros al tener una mayor longitud de salida.

En internet existen muchos recursos online para obtener el valor de una


función Hash a un texto o un fichero determinado. Veamos algunos ejemplos
obtenidos de aplicar el algoritmo MD5.

Figura 4-1. Ejemplo que muestra el resultado de aplicar la función Resumen MD5 a
dos textos.

En la figura anterior podemos observar cómo solo el simple hecho de


cambiar la primera letra del nombre Javier y ponerla en minúscula, como nos
cambia por completo el resultado de la función Hash o función resumen.

Criptología 15
Las funciones hash se utilizan, por lo general, para verificar la integridad de
la información que es transmitida a través de internet. Pero existen otros
muchos usos. Por ejemplo, imaginemos un sistema de autenticación online
mediante usuario y contraseña. Si en la base de datos estuvieran todas las
contraseñas asociadas a la lista de usuarios, ante un ataque informático
podría quedar toda la información expuesta. Por este motivo, muchas veces,
en lugar de guardar la contraseña, los sistemas de autenticación almacenan
el resultado de aplicar la función resumen a la contraseña. De forma que
cuando se hace el proceso de logueo, se comprobaría que las funciones hash
de la contraseña introducida por el usuario y la almacenada en la base de
datos coinciden. De esta forma, si alguien tuviera acceso a la base de datos
donde se guardan los usuarios y la contraseña, no sería un gran problema,
puesto que no podría acceder a las contraseñas, sino que tendría acceso al
resultado de aplicar la función resumen a la contraseña.

Actualmente MD5 es considerado un algoritmo inseguro, el cual ha sido roto


y que puede generar colisiones a la hora de generar las funciones
resúmenes, es decir, obtener el mismo resultado para dos entradas distintas.
Por este motivo se recomienda utilizar el algoritmo SHA de 256, 384 o 512
bits frente a MD5.

En GNU/Linux podemos, a través del terminal, podemos obtener la función


resumen de cualquier tipo de documento utilizando los comandos que
podemos ver en las siguientes capturas de pantalla.

5. FIRMA, CERTIFICADO DIGITAL Y DNI ELECTRÓNICO


En este epígrafe vamos a ver cómo funcionan los certificados y la firma
Digital, así como el DNI electrónico.

5.1. Firma Digital

Criptología 16
Según la Real Academia de la Lengua Española, la firma constituye un rasgo
o conjunto de rasgos, realizados siempre de la misma manera, que
identifican a una persona para dar autenticidad a un documento. Cuando
hablamos de dar autenticidad queremos decir que es el documento original,
que no ha sido modificado. Con la firma digital se busca garantizar la
autenticidad de un mensaje mediante métodos electrónicos.

Actualmente la firma digital se utiliza junto con las funciones Hash para
asegurar la autenticidad y la integridad del mensaje, así como el no repudio,
es decir, asegurarnos que la persona que dice ser el emisor, realmente lo es.

El funcionamiento de la firma digital es el siguiente:

 Se obtiene la función Hash del documento que se quiere firmar.


 Se cifra con la clave privada del emisor, de esta forma solo podrá
ser descifrado con la clave pública del emisor y así asegurará la
autenticidad del mensaje. A este documento cifrado le llamaremos
huella digital cifrada.
 El documento o mensaje original, junto con la huella digital cifrada
es cifrado con la clave pública del receptor, de esta forma solo podrá
ser descifrado con la clave privada del mismo y se asegurará la
confidencialidad, solo podrá leerlo él.
 Una vez recibido el mensaje por el receptor, lo descifrará con su
clave privada, si puede, asegura que el mensaje era para él,
garantizando la confidencialidad.
 Una vez descifrado el mensaje, podrá descifrar la Huella Digital
Cifrada con la clave pública del emisor, de esta forma se garantiza
la autenticidad, puesto que esta huella digital solo podría ser
descifrada con su clave pública.
 Se obtiene la función hash del documento recibido y se compara
con la que había sido enviada con el mensaje como parte de la huella
digital, si coincide, el mensaje no ha sido manipulado, por lo que
garantizamos también la integridad y autenticidad de este.

Veamos en el siguiente diagrama como funcionaría la firma digital.

Criptología 17
Figura 5.1-1. Esquema de la firma digital. Fuente Wikipedia.

Hoy en día hay infinidad de trámites administrativos que utilizan la firma


digital, por ejemplo, si queremos presentar algún documento por registro de
entrada en cualquier administración que disponga de Ventanilla digital para
hacer este tipo de trámites.

Figura 5.1-2. Ejemplo de Registro telemático de entrada. Web del Ayuntamiento de


Aguilar.

Criptología 18
Las ventajas que ofrece la firma digital son múltiples, ahorrando tiempo y
dinero tanto a la administración como a los usuarios, puesto que no tendrán
que desplazarse físicamente para realizar trámites que ahora pueden hacer
desde su casa con la firma digital.

Hay que decir que el Ministerio de Hacienda y Administraciones Públicas del


Gobierno de España ha desarrollado una aplicación conocida como
autofirma que permite la firma en páginas de Administración Electrónica
cuando se requiere la firma en un procedimiento administrativo.

Para más información


El Gobierno de España dispone de una web con
información sobre la firma electrónica.

https://firmaelectronica.gob.es/

El 1 de julio de 2016, entró en vigor en los países miembros de la Unión


Europea, el reglamento UE 910/2014, eIDAS, aprobado por el parlamento en
verano de 2014 y que regula los servicios de identificación y confianza de las
transacciones electrónicas en el mercado interior. Según dicho reglamento
se identifican tres tipos de firma digital, que son los siguientes:

 Firma electrónica simple: nos permite identificar la autoría del


firmante. Se podría realizar cifrando un documento con nuestra clave
privada, de forma que solo podría ser descifrado con nuestra clave
pública y de esa forma asegurar que fue firmado por nosotros, pues
recordemos que lo que es cifrado con nuestra clave privada solo
puede ser descifrado con nuestra clave pública.
 Firma electrónica avanzada: es la firma que nos permite garantizar
la integridad del mensaje (para ello utiliza la función resumen) y la
autoría del mismo (para ello necesita cifrar con la clave privada del
emisor).

Criptología 19
 Firma electrónica cualificada: es aquella que recurre a un
organismo externo que certifica la identidad de la persona firmante.
Por ejemplo, la Fábrica Nacional de Moneda y Timbre podría ser un
organismo certificador.

5.2. Certificado Digital


Cuando un emisor cifra un documento con su clave privada, cualquiera
podría descifrarlo con su clave pública y asegurar la autenticidad del
mensaje, el problema radica en ¿quién ofrece esas claves públicas para
garantizar que son auténticas? ¿quién nos proporciona nuestro par de claves
pública/privadas? Por ejemplo, se podría suplantar nuestra identidad,
imaginad, ciframos un mensaje con nuestra clave privada, durante la
transmisión el atacante suplanta el paquete por otro cifrado con otra clave
privada y al receptor le proporcionan la clave pública correspondiente. Al
poder descifrarla podría creer que el mensaje es auténtico, pero no es así.
Por este motivo se pensó la necesidad de implementar un documento digital
que asegurara la identidad del emisor. De esta forma surgieron los
Certificados digitales.

El certificado digital es un fichero emitido por una autoridad reconocida que


permite a su propietario probar ante terceros que dispone de un par de clave
pública/privada y asegurar de esta forma la autenticidad de los documentos
firmados con dicho par de claves.

En España, la Fábrica Nacional de Moneda y Timbre expide certificados


digitales de Persona física, así como de entidades que nos permiten realizar
trámites de forma segura con la Administración Pública, así como con
entidades privadas. Entre dichas operaciones nos encontramos (información
extraída de la web https://www.sede.fnmt.gob.es/certificados/persona-
fisica) :
 Presentación y liquidación de impuestos
 Presentación de recursos y reclamaciones
 Cumplimentación de los datos del censo de población y viviendas
 Consulta e inscripción en el padrón municipal
 Consulta de multas de circulación
 Consulta y trámites para solicitud de subvenciones
 Consulta de asignación de colegios electorales
 Actuaciones comunicadas

Criptología 20
 Firma electrónica de documentos y formularios oficiales

En España para obtener el certificado digital emitido por la FNMT tenemos


que solicitar en su web el certificado a través de un navegador Web, que tiene
que ser el mismo desde el que se descargará. Una vez solicitado, a través de
la web (https://www.sede.fnmt.gob.es/certificados/persona-fisica/obtener-
certificado-software/solicitar-certificado) donde se nos mostrará el siguiente
formulario:

Figura 5.2-1. Formulario para solicitar el certificado online de la FNMT

Una vez solicitado tendremos que ir a una oficina para acreditar nuestra
identidad en persona y firmar el contrato con la FNMT. Tras realizar dicho
proceso, podremos descargarnos el certificado e instalarlo en nuestro
ordenador.

Criptología 21
La mayoría de los certificados digitales implementan es estándar conocido
como X.509, que incluye:

 Versión del certificado.


 Identificación del certificado mediante un número de serie.
 Identificación del algoritmo que utiliza el certificado para la firma
digital.
 Autoridad que emite el certificado.
 Identificación del usuario del certificado.
 Clave pública y privada del usuario.
 Validez del certificado.
 Firma digital de la autoridad que expide y avala el certificado.

Presta atención
Recuerda que el certificado digital te permite realizar
muchos trámites con diferentes entidades,
organismos y administraciones sin necesidad de
desplazarse en persona. Por este motivo, si no lo
tienes te recomendamos que lo solicites.

5.3. DNI Electrónico


El DNI electrónico es un documento emitido por una autoridad competente
que consiste en el tradicional documento físico al que se le ha añadido un
chip electrónico que nos permite identificarnos digitalmente, así como firmar
digitalmente cualquier tipo de documento. Con este DNI podemos hacer una
identificación tanto en persona, de la forma tradicional, como digitalmente.

El microchip del DNI-e suele incluir la siguiente información:

 Datos de filiación del ciudadano.


 Fotografía digitalizada.
 Imagen digitalizada de la firma manuscrita.
 Certificado de autenticación, que permite acreditar electrónicamente
su identidad frente a terceras partes.
 Certificado de firma electrónica avanzado, .
 Captura digitalizada de las huellas dactilares.

Criptología 22
 Par de claves de cada certificado electrónico (el de autenticación y el
de firma).

La última versión del DNI-e (la 3.0) emitida en España incluye la tecnología
NFC (Near Field Communication) que permite transmitir nuestros datos de
forma cercana, de una forma similar a lo que ocurre con las tarjetas de
crédito actuales y la tecnología Contactless. Tiene el inconveniente de que
podrían leernos los datos al pasar un lector cerca de la zona donde tengamos
el DNI-e, aunque para ello tendrían que descifrar el código de seguridad de
nuestro DNI-e, teniendo aquí otro ejemplo de criptografía que forma parte
de nuestra vida diaria.

Dato curioso
El Documento Nacional de Identidad en España es
emitido por la Dirección General de la Policía, el cual es
emitido en su versión electrónica desde 2006. Como
dato curioso decir que el DNI fue ideado por el Dictador
Francisco Franco en 1944, quien ocupaba el número 1,
su esposa el número 2 y el que sería futuro rey de
España, Juan Carlos de Borbón el número 10.

Para poder utilizar el DNI electrónico es necesario disponer de un sistema de


lectura formado por varios elementos:

 Elementos hardware: necesitamos un lector de tarjetas compatible


con el DNIe.
 Elementos software: necesitamos tener los controladores software
compatibles con el lector de tarjetas y con el DNI-e.

¿Para qué se puede utilizar el DNI-e?

El DNI electrónico, en España, puede utilizarse como medio de autenticación


de nuestra identidad, como herramienta para firmar documentos
digitalmente, como medio de certificación de Integridad de un documento
para comprobar que un documento firmado con el DNI-e no ha sido
modificado y como documento de viaje, ya que el DNI electrónico a partir de
la versión 3.0 incluye la misma información que un pasaporte, aunque para
esto tenemos que asegurarnos que el país al que queremos viajar admite el
DNI-e español como documento válido.

Criptología 23
Para más información
Actualmente el Cuerpo Nacional de Policía tiene una
página web con información sobre el DNI electrónico.

https://www.dnielectronico.es/PortalDNIe/

Criptología 24
¡Enhorabuena!
Has finalizado el estudio de esta unidad

También podría gustarte