1. 1
Programas para crear un live usb. Parte 1
A todos nos ha pasado el hecho de necesitar formatear nuestro ordenador y reinstalar un
sistema operativo nuevo. Hasta ahora, generalmente grabábamos la imagen en un CD o
DVD y así podíamos reutilizarlo más tarde si lo necesitábamos. Hoy en día muchos
portátiles ya no vienen con lector de CD/DVD, es muy sencillo crear un USB booteable y lo
puedes llevar siempre contigo, por lo que se ha convertido en algo muy común grabar las
imágenes ISO en pendrives en lugar de en un CD. Además, un USB permite particiones, es
reescribible tantas veces como se desee y cada vez tiene mayor velocidad de acceso.
Pero no todo es instalar en el disco duro. También podemos instalar un SO en la misma
usb, las versiones Linux se pueden ejecutar en modo live desde el mismo USB sin
necesidad de ser instaladas (y algunas con persistencia) o podemos realizar un usb live
para diagnóstico y recuperación de datos. De manera que vamos a a crear un USB
booteable a partir de una y varias imágenes ISO.
Para crear un live usb debemos seguir unos pasos previos importantes:
1. Descargar la imagen iso. Vamos a la página web y descargamos la imagen iso.
2. Verificar el archivo descargado.
Para comprobar que los mensajes o archivos descargados de Internet son “validos”
podemos utilizar dos métodos:
A. Código hash.
B. Firma digital.
Código hash
Constantemente estamos descargando archivos de Internet, sin embargo, los archivos que
descargamos no siempre son los que en realidad queríamos descargar. Por múltiples
razones (fallos en la descarga -corrupta o incompleta-, insertar código malicioso como
malware, adware, spyware, troyanos, virus, etc.) el fichero final puede estar modificado
sin que nosotros lo sepamos, por lo que una de las formas de garantizar la integridad de
dichos archivos es mediante un código Hash.
Cuando hablamos de CheckSum o Suma de Verificación nos estamos refiriendo a una
función hash computable mediante un algoritmo cuyo propósito principal es detectar
cambios en una secuencia de datos (archivos) para proteger la integridad de estos,
comprobando así que no haya diferencias entre los valores obtenidos al hacer una
comprobación inicial y otra final luego de haber compartido dichos datos; es decir, es
usado para verificar que un archivo o texto compartido a un usuario es idéntico bit a bit al
publicado en su fuente original.
2. 2
Un hash es una función algorítmica que nos permite generar a partir de un elemento de
entrada (como un archivo, un texto…) un valor de salida: una cadena alfanumérica única
(huella digital), de tamaño fijo e independiente de la dimensión del documento original.
Gracias a estas funciones podremos tener la certeza de que la integridad de un archivo
analizado no se ha visto modificada.
De tal forma, una vez descargado el archivo calculamos el valor hash del mismo, y lo
comparamos con el original que estará mostrado en su web de descarga. Si ambos son
iguales, se puede deducir que el archivo descargado no ha sido alterado, es idéntico al
original y es fiable su ejecución…o eso esperamos.
¿Y qué pasaría si al intentar comprobar el hash no coincide?
Hay dos posibilidades: (1) El archivo que has descargado funcionará pero no como debería
(esto dependerá de qué tan importante es aquella parte corrupta) o (2) El archivo
simplemente no abrirá, no se ejecutará, o no se podrá grabar; es decir, es inservible.
En ambos casos la accion general es volver a conseguir el archivo de su fuente original, es
decir, volver a descargar.
Propiedades tienen que cumplir las funciones hash
1. Sea cual sea la longitud del texto o fichero base de entrada A, la longitud de su
hash resultante B siempre va a ser la misma.
Por ejemplo, si la longitud de la salida B está definida en 128 bits (MD5), si aplicamos
una función hash a un A de 5 bits nos dará un B de 128 bits, y si se la aplicamos a un A
de 380 millones de bits, nos dará un B de 128 bits igualmente.
2. Para cada entrada A, la función generará una salida B única.
O lo que es lo mismo, es imposible que dos textos bases A y A' tengan un mismo hash
B. Según estas dos primeras propiedades, nos damos cuenta enseguida de la utilidad
de las funciones de hash. La más inmediata es usarla para generar un resumen de algo.
De hecho, estas funciones se conocen también como funciones resumen. Un ejemplo
real puede ser el del típico repositorio de documentos, así actúan los antivirus.
Además, como la salida B es única para cada A, se puede usar también para verificar la
integridad de A. Podemos ver que muchos programas incluyen su hash junto con su
descarga, de esta forma, podemos verificar que el programa no ha sido modificado ni
le han introducido un virus o ha sido troyanizado. Si a los bytes de una aplicación A les
calculo el hash B y lo adjunto, cuando alguien modifique la aplicación A, al calcular de
nuevo su hash su valor habrá cambiado y será distinto de B.
3. 3
Podéis probar a calcular el hash de un documento, luego modificáis una simple coma
del documento e incluso cambiar minúscula a mayúscula una letra y calculáis de nuevo
el hash. Veréis como ha cambiado completamente.
3. Dado una entrada base, es fácil y rápido (para un ordenador) calcular su número
resumen.
4. Es imposible reconstruir la entrada base a partir del número resumen.
Esto es lo que se conoce como One-Way hash functions. A partir del hash es imposible
reconstruir la entrada base: A partir del numero hash es imposible reconstruir su
entrada, quiere decir que no existe forma o es computacionalmente imposible, que
mediante operaciones matemáticas inversas o no a las del algoritmo de hash, se llegue
desde B a A.
Si os dais cuenta, esto es muy distinto que usar fuerza bruta. No tiene nada que ver.
Con fuerza bruta le aplicamos la función de hash a diferentes entradas hasta que
obtenemos un hash similar al hash del texto que buscamos, con lo que por
consecuencia tendremos una entrada similar a la buscada.
5. No puede presentar Colisiones.
Según la primera característica que hemos visto de las funciones hash, que nos dice
que el tamaño del hash B resultante de A es siempre el mismo, deducimos que no
puede cumplirse la segunda característica, que dice que el hash B tiene que ser único
para cada A.
Es posible que existan huellas digitales iguales para objetos diferentes (colisión),
porque una función hash tiene un número de bits definido (finito) y las entradas a
resumir son infinitas. En el caso de MD5 es 128 bits (tenemos 2^128 hash) y de SHA-1
son 160bits (tenemos 2^160 hash).
Así que para hackear, en vez de buscar la contraseña se busca colisiones a ese hash:
contraseñas alternativas que tenían el mismo hash que la contraseña verdadera (los
ordenadores no guardan contraseñas, guardan los hashes de las contraseñas).
La fortaleza de una función hash requiere que estas colisiones sean las mínimas
posibles y que encontrarlas sea lo más difícil posible. Por ello se crean algoritmos con
más números de bits, para disminuir la probabilidad de colisión. Pero es solamente un
parche. Estos algoritmos son todos monocultivo, y dándoles más bits solo incrementas
el esfuerzo para encontrar colisiones.
¿Solución? Muy simple. Usando dobles hashes.
La gente no le da la importancia que tiene al problema de las colisiones, y si se la dan,
por ejemplo PHP, no lo solucionan como es debido.
4. 4
Si para firmar algo en vez de cifrar el MD5 o el SHA1 o el SHA256 del documento, se
cifrara una concatenación por ejemplo de MD5+SHA1, habría que buscar una colisión
doble para conseguir un documento alternativo, lo que actualmente es imposible.
Si tenéis que usar las firmas electrónicas para vuestros documentos, y se van a firmar
por ejemplo usando MD5, añadidles un campo estilo fingerprint con el hash del
documento en SHA1.
https://foro.elhacker.net/criptografia/funciones_de_hash-t100025.0.html
El Message-Digest Algorithm 5 o MD5
Message-Digest 5 (MD5) es un algoritmo criptográfico de 128 bits ampliamente difundido.
MD5 no es seguro. Se conocen formas ingeniosas de revertirlo, y es factible crear dos
archivos distintos con el mismo hash md5 (colisión).
La función MD5 nos devuelve un hash de 128 bits. Para que cada hash equivalga a un
único texto base, tendría que existir solamente un texto por cada combinación del hash
devuelto, o sea, tendría que haber solamente 2^128 textos distintos, lo cual no es cierto.
Como textos distintos hay infinitos, podemos decir que hay infinitas posibilidades de que
dos textos tengan el mismo hash. Así que no deberías confiar en md5 para asegurarte de
que un archivo no ha sido modificado de forma deliberada
Tenemos MD6: de 256 bit, se procesa mediante multitarea. Nuevo algoritmo,
recomendado para la seguridad.
El Secure Hash Algorithm o SHA
El SHA o Secure Hash Algorithm es un sistema de funciones hash criptográficas. El primer
miembro de la familia fue oficialmente llamado SHA, publicado en 1993. Sin embargo, hoy
en día no oficialmente se le llama SHA-0 para evitar confusiones con sus sucesores. Dos
años más tarde el primer sucesor del SHA fue publicado con el nombre de SHA-1, que
actualmente es uno de los más usados al distribuir software. También existen cuatro
variantes más que se han publicado desde entonces con algunas otras diferencias: SHA-
224, SHA-256, SHA-384, y SHA-512 (llamándose SHA-2 a todos ellos).
SHA-1 Es parecido al famoso MD5, pero tiene un bloque de 160bits en lugar de los
128bits del MD5. La función de compresión es más compleja que la función de MD5, por
tanto, SHA-1 es más lento que MD5 porque el número de pasos son de 80 (64 en MD5) y
porque tiene mayor longitud que MD5 (160bits contra 128bits). SHA-1 es más robusto y
seguro que MD5, pero ya se han encontrado colisiones, por tanto, actualmente esta
función hash no es segura utilizarla, nunca se debe usar.
5. 5
SHA-2 Las principales diferencias con SHA-1 radica en en su diseño 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 más 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:
Tamaño de salida 512 por los 160 de SHA-1.
Tamaño del bloque, tamaño de la palabra y tamaño interno que es el doble que
SHA-1.
Como ocurre con todos los cifrados y hash, cuanto más seguro, más lento su
procesamiento y uso, debemos encontrar un equilibrio entre seguridad y velocidad.
Tenemos SHA-3: de 256 bits (SHA3-256) y 512 bits (SHA3-512), existen otros. Nuevo
algoritmo, recomendado para la seguridad.
El Cyclic Redundancy Check 32 o CRC32
Se trata de un código de detección de errores usado frecuentemente en redes digitales y
en dispositivos de almacenamiento cuyo propósito principal es comprobar o detectar
cambios accidentales en los datos o alteración de los mismos en su transmision. Como se
ha mencionado, es útil para detección de errores, pero en condiciones de seguridad no
podemos confiar en que el CRC puede verificar plenamente que los datos son los
correctos en caso de que se hayan producido cambios deliberados y no aleatorios.
A menudo se piensa que si cuando llega un mensaje, si éste y su CRC coinciden, quiere
decir que el mensaje no ha podido ser alterado durante su transmisión. Esta suposición es
falsa porque CRC es un mal método de cifrado de datos. De hecho, el CRC no se trata
realmente de un método de cifrado, lo que realmente hace es utilizarse para el control de
integridad de datos, pero en algunos casos se supone que se utilizarán para el cifrado.
El software que realiza los cálculos y las comprobaciones para estos, se denomina con el
"nombre del algoritmo" terminado con prefijo "sum"; por ejemplo para "MD5" se
diría “md5sum” o para "SHA-1" sería "sha1sum" (para "SHA" también se puede aludir al
tamaño, como "sha256sum" o "sha512sum".
¿Siempre van a existir colisiones para cualquier “función hash”?
Claro que sí. Las colisiones es uno de los problemas de los códigos Hash, aunque siempre
se intenta que las “funciones hash” creen códigos hash cuya probabilidad de colisión
sean lo más mínima posible. A mayor longitud de hash menor probabilidad de colisión.
6. 6
¿Por qué son tan importantes las colisiones?
Imagina que estás haciendo una transferencia de dinero a un amigo a través de Internet,
pones la cuenta del amigo y pulsas en enviar dinero. Un ataque “Man in the Middle” de un
tercero podría interceptar y modificar la orden de enviar dinero al banco por el camino,
cambiando el número de cuenta del destino (a la cuenta del atacante evidentemente).
Llega la orden al banco y comprueba que en número de destino no coincide con el Hash
que generó el que lo envía, por lo que el banco protegería eficazmente la transferencia al
rechazar el envío de dinero a alguien no solicitado.
Ahora lo mismo, pero quien realiza el ataque “Man in the Middle” pone un número de
cuenta diferente, aunque esta vez coincide con el Hash generado por el número de cuenta
original; llega la orden al banco y como los códigos Hash coinciden, el banco piensa que es
una transferencia legítima, por lo que da la orden y el dinero va a la cuenta modificada.
Esto es muy grave, y se consigue muy rápidamente teniendo tablas de traducción (de un
código Hash con cuáles son sus mensajes que lo validan); así en cuestión de segundos se
puede desvirtuar una comunicación.
Para que sirva de tranquilidad, es bastante complicado conseguir realizar este tipo de
ataques contra un banco (u otras páginas webs debidamente protegidas); existen otros
sistemas de seguridad que hay que superar previamente para llegar a realizar el engaño
de códigos Hash, como el cifrado de la conexión, los tiempos (timeouts), el secreto de las
funciones utilizadas, etc.
¿Los códigos Hash sólo sirven para enviar ficheros y mensajes entre ordenadores?
También sirven en local, sin tener que salir de tu propio ordenador. Como has tenido la
oportunidad de entender, los códigos Hash sirven para comprobar que archivos no se
hayan visto modificados (como trabajan los antivirus, que comprueban que nadie
modifique los archivos con códigos Hash, así como la “base de datos de firmas” que
contienen los códigos Hash de los virus).
http://www.informaticodelaverno.com/2017/07/?m=0
7. 7
http://www.abelhadigital.com/multihasher
Descargamos el archivo zip (portable) y en la web tenemos los hash.
Ejecuto el programa y selecciono los hash deseados. Y pulso calcular.
Ahora en herramientas voy a comparar el hash de la web con el calculado del archivo descargado.
9. 9
http://implbits.com/products/hashtab/
A diferencia con la mayoría de herramientas de este tipo, a HashTab se puede acceder desde el menú contextual
de Windows una vez que el usuario hace clic en la opción Propiedades. Para verificar la integridad de un archivo
basta con hacer clic con el botón derecho del ratón sobre él, seleccionar la opción Propiedades y a continuación
dirigirnos a la pestaña Hash de archivo.
10. 10
https://quickhash-gui.org/
Hay webs que proporcionan varias hash. Elegimos uno y ya está. A mayor longitud de hash mayor seguridad.
Recordad que siempre hay que desconfiar de todo aquello que nos bajamos desde
internet. ¡Es mejor prevenir que curar -o esperar a que el antivirus de turno sea capaz de
neutralizar la amenaza- así que empezad ya a practicar con esos hashes!
https://blog-conocimientoadictivo.blogspot.com/2015/11/Que-es-el-CheckSum-Hash-MD5-SHA-1.html?m=1
http://msmanuelsanchez.blogspot.com.es/2015/10/tipos-de-cifrados-sha1-md5-rsa.html?m=1
https://www.redeszone.net/2010/11/09/criptografia-algoritmos-de-autenticacion-hash/amp/
https://jarroba.com/codigo-hash/
https://protegermipc.net/2016/11/22/como-calcular-el-hash-de-un-archivo-o-ejecutable/
11. 11
Firma digital
Para entender esto hay que leer una buena introducción y entenderlo todo.
Hace unos años, a la hora de instalar software fuera de los repositorios oficiales la
precaución era bien sencilla: acudir a la fuente original, huir como de la peste de la
mayoría de portales especializados en descargas y no instalar software dudoso de
cualquier fuente (amigos en concreto, hack de juegos y programas, KeyGen…).
La mayoría de usuarios no las utilizan, pero la comprobación de las sumas de verificación
mediante diversos algoritmos es una realidad desde hace muchos años, pero si algo
aprendimos de los ataques a Linux Mint y Transmissión (en su versión OS X), es que
incluso eso puede no ser suficiente. Nada impide a un atacante una vez infectados los
archivos de descarga en un servidor, manipular también las sumas de verificación para
que coincidan.
Pero no sólo son descargas. Teniendo en cuenta que prácticamente todo cuanto ocurre en
la red se resumen en el envío y recepción de paquetes de datos que pasan por varios
servidores por todo el mundo, es normal tener cierto recelo y desconfiar de la seguridad o
inviolabilidad de nuestras comunicaciones, no se trata de que tengas algo que esconder, si
no de que tienes comunicaciones que no tienen por qué ser escuchadas o leídas por otras
personas. La principal y más efectiva manera de proteger la seguridad de tus
comunicaciones en Internet es usar cifrado.
Para proporcionar un grado de seguridad mayor se inventaron las firmas electrónicas en
la verificación de software y mensajes, que nos permite comprobar que los archivos y
mensajes que estamos descargando son auténticos, han sido creados por el desarrollador
de la aplicación o enviados por un remitente verdadero (fiable).
El correo electrónico es actualmente menos seguro que el correo ordinario pues es
habitual que un mensaje enviado a través de Internet pase por varias estafetas y un
postmaster o cualquier usuario con privilegios puede acceder a estos mensajes, leerlos y/o
alterarlos. Además de esto no es difícil falsificar las direcciones del emisor de un mensaje.
Por eso en caso de que se desee obtener seguridad en el correo electrónico a través de
Internet es necesario usar algún medio que nos proporcione garantías suficientes de
confidencialidad, autentificación e integridad. Y lo mismo ocurre con las redes sociales.
El motivo de uso de cifrado es simplemente obtener privacidad en nuestras
comunicaciones vía e-mail, pues a nadie le gusta que lean su correo, a pesar de que los
temas tratados no sean confidenciales o ilegales.
12. 12
¿Qué es una firma digital o firma electrónica?
Hoy día la firma digital de documentos está legalmente equiparada a la firma clásica. Una
firma digital es un conjunto de datos asociados a un fichero, documento, mensaje, etc.
que permite asegurar la identidad del firmante y la integridad del fichero firmado.
Hablamos del equivalente "mejorado" a la firma en papel, pero para documentos
electrónicos, es decir, ficheros de ordenador, pero conservando toda su validez legal, con
lo que este "invento" nos permite desterrar el papel, las firmas a mano, los sobres con
sellos, y el personal necesario para manejar todo esto, por ficheros enviados por correo
electrónico.
El firmante generará mediante una función matemática un 'resumen' o huella digital
(fingerprint) del fichero, que tendrá un tamaño determinado dependiendo del algoritmo
utilizado. Este resumen o huella digital la cifrará con su clave privada y el resultado es lo
que se denomina firma digital, que enviará adjunta al fichero original. Cualquier receptor
del fichero podrá comprobar que el fichero no fue modificado desde su creación porque
podrá generar el mismo resumen o misma huella digital aplicando la misma función al
fichero.
Además, podrá comprobar su autoría descifrando la firma digital con la clave pública del
firmante, lo que dará como resultado de nuevo el resumen o huella digital del fichero que
debe ser idéntica a la recibida.
El cifrado de mensajes y archivos requiere que un mínimo de dos personas tenga llaves
públicas para poder enviarse un correo o archivo cifrado y no fallar en el intento. Pero
como muchas de las tecnologías que se veían complicadas, poco a poco hay más
aplicaciones y servicios que ponen la seguridad por delante, ya sea haciendo
extremadamente fácil el cifrar un email, o integrando en una aplicación cifrado por
defecto.
La firma digital no implica que el fichero esté cifrado, esto es, un fichero firmado será
legible en función de que esté o no cifrado.
Firma: nos permite que nuestro destinatario compruebe que el mensaje no fue
modificado en el camino y que lo que lee es exactamente lo que redactamos.
Cifrado: nos permite ocultar el contenido del mensaje para que sólo el destinatario
final pueda leerlo (crea un contenido ilegible).
No son excluyentes, se pueden usar para crear un email o fichero firmado y/o cifrado.
13. 13
¿Qué utilidad práctica tiene la firma electrónica?
Lo que se le pide básicamente a una firma digital sería lo mismo que se le pide a una firma
manual. La firma electrónica aporta 5 características en la comunicación por Internet:
No suplantación: La información del documento y su firma electrónica se
corresponden indubitablemente con la persona que ha firmado. Poder asegurar que
el documento realmente fue firmado por quien dice haberlo hecho (la firma la
estampo personalmente la persona en cuestión).
Autenticidad: Poder comprobar que la firma es auténtica, en papel sería
equivalente a poder diferenciar un garabato sin valor de una firma.
Integridad: La información contenida en texto electrónico, no ha sido modificada
luego de su firma. Que nos asegure que el documento no fue manipulado una vez
firmado (esto es más de lo que nos asegura una firma manual).
No repudio: La persona que ha firmado electrónicamente no puede decir que no lo
ha hecho.
Confidencialidad: La información contenida ha sido cifrada y por voluntad del
emisor, solo permite que el receptor pueda descifrarla.
Las aplicaciones prácticas de la firma electrónica son muchas y variadas. En general están
orientadas a realizar operaciones por Internet que en la vida cotidiana requieren de una
firma manuscrita para validarlas, es decir, legalizar sus operaciones:
Realización de la Declaración de la Renta a través de Internet.
Solicitudes en los registros electrónicos administrativos
Petición de la vida laboral.
Recepción de notificaciones electrónicas.
Firma/verificación de correos electrónicos y archivos.
Firma de facturas electrónicas.
Todo esto es posible gracias a certificados, encriptaciones, firmas y demás mecanismos
que no necesitamos comprender exactamente para utilizar, pero si estar familiarizados.
Criptografía simétrica
La criptografía simétrica solo utiliza una clave para cifrar y descifrar el mensaje, que tiene
que conocer el emisor y el receptor previamente y este es el punto débil del sistema, la
comunicación de las claves entre ambos sujetos, ya que resulta más fácil interceptar una
clave que se ha transmitido sin seguridad (diciéndola en alto, mandándola por correo
electrónico u ordinario o haciendo una llamada telefónica).
14. 14
Criptografía asimétrica
La criptografía asimétrica se basa en el uso de dos claves: la pública (que se podrá difundir
sin ningún problema a todas las personas que necesiten mandarte algo cifrado) y la
privada (que no debe de ser revelada nunca).
Aquí la idea es que lo que se cifra con una clave sólo se descifra con la otra. Pero ojo,
cada persona tiene su par de claves, de manera que si quieres hacer llegar un mensaje a
Pedro tendrás que cifrar con su clave pública mientras que si quieren hacerte llegar un
mensaje a ti se cifrará con tu clave pública. Y sólo la clave privada de su par las descifrará.
Y si cifras con la clave privada, la clave pública será la que descifre.
Criptografía híbrida
Para empezar, la criptografía simétrica es más insegura ya que el hecho de pasar la clave
es una gran vulnerabilidad, pero se puede cifrar y descifrar en menor tiempo del que tarda
la criptografía asimétrica, que es el principal inconveniente y es la razón por la que existe
la criptografía híbrida.
Este sistema es la unión de las ventajas de los dos anteriores, debemos de partir que el
problema de ambos sistemas criptográficos es que el simétrico es inseguro y el asimétrico
es lento. El proceso para usar un sistema criptográfico híbrido es el siguiente (para enviar
un archivo):
Generar una clave pública y otra privada (en el receptor).
Cifrar un archivo de forma síncrona.
El receptor nos envía su clave pública.
Ciframos la clave que hemos usado para encriptar el archivo con la clave pública del
receptor.
Enviamos el archivo cifrado (síncronamente) y la clave del archivo cifrada
(asíncronamente y solo puede ver el receptor).
¿Qué es la encriptación o cifrado? La encriptación o cifrado es un mecanismo de
seguridad que permite modificar un mensaje de modo que su contenido sea ilegible. De
modo inverso, la desencriptación o descifrado permitirá hacer legible un mensaje que
estaba cifrado, y ambos mediante una clave de seguridad o contraseña (que puede ser una
palabra o una oración).
¿Qué diferencia hay entre cifrar y proteger por contraseña? No son
sinónimos. Aunque para ambas haya que escribir una contraseña para poder abrir el
documento, fichero o carpeta. Protegido por contraseña simplemente añade una contraseña
para poder abrir el contenido, pero cifrar, altera realmente el contenido que permanece
oculto.
15. 15
Esquema PKI
El acrónimo PKI deriva de "Public Key Infrastructure" (Infraestructura de Clave Pública) y
es la forma común de referirse a un sistema complejo necesario para la gestión de
certificados digitales y aplicaciones de la Firma Digital. Contiene 5 componentes:
1. Entidades Finales: Quien solicita la llave o se pretende identificar.
2. Autoridad de Certificación: La que emite los certificados y es la parte de la credibilidad
de la llave pública. Firma los certificados con su llave privada, dando fe de que es en la
verificación de las llaves asignadas son a quien corresponde.
3. Autoridad de Registro: Realiza el proceso de registro de las entidades finales, validad
los atributos, genera los secretos compartidos que permiten el proceso de inicialización y
certificación.
4. Repositorios: Método que permite guardar la información de PKI "Certificados y CRL",
viendo también el status de revocación de los certificados.
5. Emisores CRLs "Certificate Revocation List Issuer": Son listas de certificados que han
dejado de ser válidos.
El esquema PKI formalizado en el certificado X.509 sólo permite que cada certificado
esté firmado por una única entidad: una autoridad de certificación (CA, en sus siglas en
inglés). El certificado de la CA puede estar él mismo firmado por una CA diferente,
subiendo en una jerarquía de certificados hasta un llegar a uno firmado por sí mismo,
también llamado certificado raíz (en inglés, root certificate).
Los certificados raíz deben estar disponibles para aquellos que usen una CA de menor
nivel y por tanto son ampliamente distribuidos. Por ejemplo, vienen incorporados en
aplicaciones como navegadores, clientes de email, y en sistemas operativos como Mac OS
X. De esta manera, aquellas páginas web o e-mails protegidos mediante el
protocolo SSL/TLS pueden ser autenticados sin necesidad de que el usuario instale
manualmente un certificado raíz.
Estas aplicaciones comúnmente incluyen más de un centenar de certificados raíz de una
docena de PKIs diferentes, otorgando así por defecto confianza a toda la jerarquía de
certificados que asciende de nuevo hasta ellos.
16. 16
Esquema PGP
Pretty Good Privacy (PGP) es un programa creado por Phil Zimmermann que nos ayuda a
proteger nuestra privacidad, para que todas las comunicaciones estén a buen seguro; al
mismo tiempo, garantiza la autenticidad de los mensajes electrónicos que enviamos.
En un artículo escrito por Philip Zimmermann en la primera edición de la guía del usuario
en 1994 cuenta las motivaciones que lo llevaron a crear PGP. En este artículo defiende el
derecho constitucional de la intimidad y los problemas que ponía el gobierno de Estados
Unidos en aquella época para conseguirla. Según Philip el simple hecho de querer tener
privacidad en nuestro correo electrónico supone ser sospechosos de estar haciendo algo
ilegal. Lo que él propone es que el uso de algún sistema de cifrado de mensajes sea algo
extendido entre los usuarios de correo electrónico para que se convierta en algo tan
normal como mandar las cartas en sobres y no en postales.
Podemos cifrar cualquier tipo de información personal (emails, archivos o el disco duro
entero): siendo difícil para cualquier otra persona, que no seamos nosotros, intentar sacar
información o interceptar el contenido de estos archivos. Hay también la opción de “firma
digital” para enviar mensajes que serán verificados por el destinatario; así estaremos
tranquilos porque el mensaje no ha sido modificado durante el proceso de envío y solo
nosotros hemos podido enviarlo.
Imaginemos, por ejemplo, que todo el mundo firma sus mensajes electrónicos (es fácil
imaginarlo): los ataques de phishing serían mucho más difíciles de llevar a cabo y la
mayoría de los emails falsos o engañosos que recibimos cada día simplemente ya no
existirían, porque para los cibercriminales ya no merecería la pena poner tanto esfuerzo
en falsificar mensajes con firma.
Zimmermann diseñó PGP hace más de 20 años y desde entonces se han realizado muchas
mejoras. Al principio, el gobierno estadounidense investigó a Zimmermann “por
exportación de municiones sin licencia”, ya que los productos de encriptación más fuertes
de 40 bits (PGP era un producto de 128 bit) se consideraban como municiones. Aunque se
cerró el caso sin cargos para Zimmermann, se demostró cómo de potente puede ser una
herramienta de encriptación y por qué algunos importantes accionistas de empresas
tienen tanto interés en este asunto.
Al final, la versión completa de PGP con un sistema de encriptación fuerte llegó al gran
público. La organización Free Software Foundation desarrolló su propio programa gratuito
PGP llamado GNU Privacy Guard (abreviado como GnuPG o GPG), que proporciona una
librería para encriptación, descifrado y funcionalidades de firma electrónica. Además, PGP
se acompaña también con interfaces muy cómodas para el usuario (llamadas GUI),
disponibles para la mayoría de los sistemas operativos disponibles.
17. 17
Como el código fuente de PGP está disponible para la descarga, cualquier persona puede
revisarlo, buscar errores y backdoor o solo echarle un vistazo. Aunque no todo el mundo
esté familiarizado con este tema, hay una comunidad de expertos en el sector (no
relacionados con ningún gobierno o empresa) que revisa continuamente el código fuente
para que PGP no sufra alteraciones externas.
Es un aspecto muy importante a considerar, sobre todo después de las recientes
revelaciones según las cuales algunas agencias de seguridad han intentado eludir la
encriptación de los protocolos modernos de comunicación.
Gobiernos y agencias para la seguridad nacional han fundado sus programas sobre la
privacidad, y también los criminales. ¿Qué pueden hacer los usuarios comunes? Antes, los
que tenían dinero podían permitirse sistemas de encriptación muy avanzados, casi de
nivel militar. Con la llegada de PGP, las cosas cambiaron.
Al principio el usuario común no sabía cómo mantener seguras sus comunicaciones e su
información personal, ni tampoco empresas y otras entidades querían que se encontrara
un método. Por suerte, después de 20 años, PGP ha colmado este vacío, demostrando ser
un sistema capaz de garantizar privacidad y libertad.
En la actualidad, la tecnología es propiedad de Symantec, pero está disponible a través de
una gran cantidad de programas distintos para diferentes plataformas. Además, existe una
versión de código abierto cuyo principal representante es la aplicación GnuPG.
PGP es un criptosistema híbrido que combina técnicas de criptografía simétrica y
criptografía asimétrica. Esta combinación permite aprovechar lo mejor de cada uno: el
cifrado simétrico es más rápido que el asimétrico o de clave pública, mientras que este, a
su vez, proporciona una solución al problema de la distribución de claves en forma segura
y garantiza el no repudio de los datos y la no suplantación.
18. 18
PGP y GPG se ocupan principalmente de los pequeños detalles de creación y uso de claves
públicas y privadas. Puedes crear un par de claves pública / privada, proteger la clave
privada con una contraseña y utilizarla junto a la clave pública para firmar y cifrar.
También permitirá descargar las claves públicas de otras personas y subir tus claves
públicas a "servidores de claves públicas", que son los repositorios donde otras personas
puedan encontrar tu clave.
GPG no usa algoritmos de software que están restringidos por patentes, entre estos se
encuentra el algoritmo de cifrado IDEA que está presente en PGP casi desde sus inicios. En
su lugar usa una serie de algoritmos no patentados como ElGamal, CAST5, Triple DES
(3DES), AES y Blowfish. También es posible usar IDEA en GPG descargando un plugin extra,
sin embargo, este puede requerir una licencia para usuarios de algunos países en donde
esté patentada IDEA.
GNUPG es una implementación del estándar OpenPGP en modo texto (consola).
Diferentes implementaciones gráficas están disponibles, pero sólo algunas tienen
implementadas todas sus características (por ejemplo: borrado de ID, usuarios o firmas).
Debido a que todas las instrucciones deben ser pasadas a la línea de comandos,
rápidamente llegan a dificultar el uso correcto de aspectos no triviales del programa.
Aclararemos también que PGP, al ser un sistema desarrollado en los EEUU, está sujeto a
ciertas leyes sobre la exportación de programas que incluyen código criptográfico; por
esta razón existe una versión internacional para casi todas las versiones numéricas, y estas
vienen denotadas en su terminación por la letra “ i “(pgp - pgpi).
El esquema GPG formalizado en por lo que se denomina “anillo de confianza”, permite:
1. Certificación manual que cada persona pueda certificar un certificado
que crea que es verdadero. De tal manera, un certificado cualquiera puede
estar certificado (avalado) por muchas personas (varios certificadores).
2. Certificación automática Un certificado X (que no hemos certificado
nosotros manualmente) se nos puede agregar automáticamente como válido
si en el grupo de certificados que tenemos nosotros marcado como válidos
en nuestro programa (de confianza), hay varios que tengan como válidos ese
mismo certificado X.
GPG es un sistema de encriptación que se asemeja mucho en el funcionamiento a PKI, ya
que también es un sistema de clave asimétrica, aunque no son compatibles entre ellos.
PKI es un estándar en el que se definen los certificados x509 (ISO x.509), y es una de las
diferencias entre el GPG y el PKI.
19. 19
¿Qué es un certificado electrónico?
El Certificado Electrónico es la base de la firma electrónica. Para firmar un documento es
necesario disponer de un certificado digital. El certificado electrónico contiene unas claves
criptográficas que son los elementos necesarios para firmar. Los certificados electrónicos
tienen el objetivo de identificar inequívocamente a su poseedor (identifica una clave
pública con su propietario).
En el esquema PKI son emitidos por Proveedores de Servicios de Certificación y en el
esquema GPG lo crea uno mismo.
Cada certificado está identificado por un número de serie único y tiene un periodo de
validez (marca de tiempo = caducidad) que está incluido en el propio certificado.
Es un documento electrónico expedido por una Autoridad de Certificación e
identifica a una persona (física o jurídica) con un par de claves únicas.
Tiene como misión validar y certificar que una firma electrónica se corresponde con
una persona o entidad concreta.
Contiene la información necesaria para firmar electrónicamente e identificar a su
propietario con sus datos: nombre, NIF, algoritmo y claves de firma, fecha de
expiración y organismo que lo expide.
La Autoridad de Certificación dá fe de que la firma electrónica se corresponde con
un usuario concreto. Esa es la razón por la que los certificados están firmados, a su
vez, por la Autoridad de Certificación.
Contenido del Certificado.
Es necesario poder vincular la clave pública de un usuario con su identidad y para esto
surge el concepto de "Certificado Digital", que contiene la siguiente información:
Identidad del usuario (Nombre, NIF, etc...)
Clave Pública del usuario.
Periodo de Validez del Certificado
Identidad de la Autoridad Certificadora (entidad que emite el certificado).
Firma digital del certificado (los datos anteriores más otras posibles extensiones
personalizables, p.e. la dirección de correo electrónico), generada por la Autoridad
Certificadora.
20. 20
Tipos de Certificados PKI
Certificados Clase 1: Son emitidos única/ a individuos, donde no se verifica la identidad,
por lo tanto no permite autenticarla.
Certificados Clase 2: Son emitidos únicamente a individuos que confirman la información
proporcionada por el suscriptor. Son datos fiables.
Certificados Clase 2 (no reconocidos):Usados para transacciones de bajo riesgo.
Certificados clase 2 (reconocidos): Pueden usarse como soporte de firmas electrónicas
legal/ reconocidas.
Certificados Clase 3: Son los que requieren evidencias probatorias de la identidad del
sujeto o de una URL
PKI es un sistema de encriptación que se asemeja mucho en el funcionamiento al PGP, ya
que también un sistema de clave asimétrica, aunque no son compatibles entre ellos. PKI
es un stándard (ISO), en el que se definen los certificados x509, y es una de las diferencias
entre el PGP y el PKI. Estos certificados no son más que los datos personales del
propietario (DN o “Distinguised Name”), junto con su clave pública, todo ello firmado por
una Autoridad Certificadora
Con este sistema, la clave pública de la que vayamos a hacer uso, es, con total seguridad,
la clave de la persona que pretendíamos, ya que los datos que la acompañan así lo
demuestran, y además y muy importante, está certificado por la Autoridad Certificadora
en cuestión.
Debido a que tenemos gran seguridad de que la clave es auténtica, el PKI se suele usar en
transacciones seguras a través de Internet (en conjunto con el SSL, que se encargará de
cifrar los datos, ya que el PKI solo se usa a modo de identificación), o cualquier otro tipo
de operación que requiera de una identificación segura.
El modus operandi con PKI es el siguiente: debes crear un PKCS 10 o “Certificate Request”
autofirmado, que contendrá todos tus datos personales, y enviárselo a la autoridad
certificadora que creas conveniente. Esta autoridad comprobará de alguna forma que los
datos que le has proporcionado son verdaderos, bien citándose contigo, bien reclamando
algún documento oficial que te identifique. Una vez que la autoridad se haya cerciorado
de que los datos son correctos, creará un certificado x509 a partir del Certificate Request
que tú le enviaste y lo firmará.
Para una mayor comodidad, podrás crear un objeto PKCS 12, que no es más que un
conjunto de certificados y sus claves privadas correspondientes, todo ello protegido con
una clave. Este tipo de ficheros es el que más se suele usar en el PKI, y es el sistema usado
por Netscape y Explorer.
Cada vez que una página web requiera identificación a través de un certificado válido, el
explorador te pedirá el password de la base de datos de certificados que posee, y irá
21. 21
comprobando uno a uno hasta que encuentre alguno que le permita acceder. Todos los
certificados que importes a la base de datos del navegador, serán comprobados a través
de la autoridad certificadora correspondiente, y serás avisado si algún certificado no es
correcto, o la autoridad certificadora que lo ha firmado no es de tu confianza.
Este sistema también se puede usar para el cifrado y firmado de correo, siendo su uso
muy parecido al PGP, pero con la fiabilidad que le confiere las autoridades certificadoras.
Si estás interesado en usar PKI, puedes usar OpenSSL, que es una implementación libre de
PKI y SSL, teniendo siempre en cuenta las leyes vigentes sobre el uso de la criptografía de
tu país.
Obtención del Certificado en PKI
Obtener el Certificado Digital depende de si el certificado está contenido en una tarjeta,
tarjetas con Chips como el DNIe, o de si el certificado se guarda en un fichero software.
En ambos procesos hay un paso que es la identificación del responsable o usuario del
certificado, lo cual requiere que éste se persone o no en las oficinas de una Autoridad de
Registro. Estas oficinas corroboran la identidad.
En el caso de los certificados software (usados en PGP), el propio navegador del usuario
crea las claves. Pero, en el Certificado de tarjeta, quien crea e introduce las claves es el
Proveedor de Certificación. PGP guarda dichas claves en dos archivos separados llamados
llaveros; uno para las claves públicas y otro para las claves privadas.
Obtención de Certificado en tarjeta (DNIe) Los certificados contenidos en
tarjetas deben ser entregados directamente al usuario. En el caso concreto del
DNIe, hay que personarse en las oficinas de la Dirección General de Policía, que es la
Autoridad Certificadora.
Solicitud de certificado software La solicitud y descarga del Certificado se
realizan desde el navegador web.
Obtención del Certificado en GPG
En este caso sólo debemos descargar el programa y generar el par de claves. No se nos
pide nada de datos personales. Pero ojo, esto es como el email: al final lo usas para fines
personales “formales”, así que dale la importancia que se merece.
22. 22
Plataformas de Validación (Autoridad de certificación) PKI
Las plataformas de validación son sistemas online que permiten validar los certificados
electrónicos mediante X509, suministra información sobre la vigencia de los certificados
electrónicos que han sido registrados por una Autoridad de Registro y certificados por la
Autoridad de Certificación.
Una Autoridad de certificación es una entidad de confianza, responsable de emitir y
revocar los certificados digitales o electrónicos, utilizados en la firma electrónica.
Jurídicamente es un caso particular de Prestador de Servicios de Certificación.
Como puedes deducir, estos organismos serán diferentes si el certificado es para tarjeta
(normalmente nacional y hay que personarse) o para software (normalmente
internacional de modo no presencial).
En general, la Autoridad de Certificación es también Autoridad de Validación, aunque
ambas figuras pueden estar representadas por entidades diferentes.
Los usos de estas empresas suponen pagar por sus servicios. Necesitas autentificación
(proceso de detectar y comprobar la identidad de una entidad de seguridad examinando
las credenciales del usuario y validando esas credenciales contra alguna autoridad). Te
proporcionan una clave y un usuario para validación.
PKI hace uso de estas plataformas. Gpg tiene posibilidad de hacer uso de los servicios de
directorio X509 para validar con una autoridad de certificación, pero su idea de
nacimiento es licencia GNU, por lo que nace la idea de “anillo de confianza”.
Plataformas de Validación (Anillo de confianza) GPG
GPG nació bajo licencia GPL, por lo que elimina el gasto económico y nace la idea de
“anillo de confianza”. El concepto de anillo de confianza fue propuesto por primera vez en
1992 por el creador de PGP Phil Zimmermann en el manual para la versión 2.0 de PGP:
Con el paso del tiempo, usted acumulará claves de otras personas que podría querer
designar como introductores de confianza. Todos los demás elegirán sus propios
introductores de confianza. Y todos gradualmente acumularán y distribuirán junto con su
clave una colección de firmas certificadas por otras personas, en la expectativa de que
quien quiera que la reciba confiará por lo menos en una o dos de las firmas. Esto llevará a
la aparición (espontánea) de un anillo de confianza descentralizado y resistente a los
fallos para todas las claves públicas.
23. 23
Los participantes en un anillo de confianza deben firmar entre sí sus claves públicas,
certificando que avalan la correspondencia entre el nombre atribuido a la clave y la clave
en sí misma. Esto sucede a menudo en fiestas conocidas como fiestas de firmado de
claves (key signing parties, en inglés).
De este modo se implementa un modelo de confianza descentralizado que contrasta con
el modelo centralizado basado en PKI (que sólo considera certificados firmados
por autoridades certificadoras). Existen multitud de anillos de confianza, y un usuario
puede pertenecer a cuantos de ellos desee.
Las implementaciones compatibles con OpenPGP suelen incluir un sistema de recuento de
votos que puede servir para determinar cuáles asociaciones entre dueño y clave pública
serán de confianza para un usuario mientras esté usando PGP.
Por ejemplo, si tres avalistas parcialmente confiados por el usuario han garantizado un
certificado (y por tanto la correspondencia que incluye entre clave pública y dueño), o si
un avalista plenamente de confianza ha hecho lo mismo, entonces la correspondencia se
tomará como cierta automaticamente. Los parámetros son ajustables por el usuario; por
ejemplo, se puede requerir que no haya votos de avalistas solo parcialmente de confianza,
o como mínimo 6 parciales sustituirán a un aval directo, o circunvalar el sistema de votos
por completo.
El programa también permite la posibilidad de dar confianza a una clave sólo para uso
particular, y no necesariamente subirla a un servidor para compartirla.
El mecanismo de anillo de confianza es flexible, al contrario que la mayoría de
arquitecturas de PKI, y deja las decisiones acerca de la confianza en las manos de los
usuarios individuales. No es un sistema perfecto y requiere al mismo tiempo precaución y
supervisión inteligente por parte de los usuarios. Esencialmente todos los diseños de PKI
son menos flexibles y requieren que el usuario siga la cadena de garantías de los
certificados generados por la CA.
A cambio, el usuario gana en comodidad y en facilidad de uso con un esquema PKI, puesto
que no necesita tener conocimientos técnicos para establecer una comunicación de
confianza a través de los mecanismos ya establecidos en su navegador.
Construcción del anillo de confianza GPG
No basta con que una persona quiera usar GnuPG. Para poder usarlo para comunicarse en
modo seguro con otros, es necesario que tengamos un anillo de confianza. A primera
vista, construir un anillo de confianza es una tarea desalentadora. Las personas con las
que nos comunicamos necesitan usar GnuPG, y es necesario que haya las suficientes
24. 24
firmas para que las clave sean consideradas válidas. Estos no son problemas de tipo
técnico; son problemas de tipo social. Debemos superar estos problemas si queremos usar
GnuPG.
En nuestros primeros pasos con GnuPG, es importante darse cuenta de que no
necesitamos comunicarnos de modo seguro con todas las personas. Empecemos con un
pequeño círculo de amigos, tal vez sólo nosotros y uno ó dos más que también quieran
ejercitarse en su derecho a la privacidad. Generemos nuestras claves, y firmémoslas
recíprocamente. Éste es nuestro anillo de confianza inicial. Al hacerlo así, apreciaremos el
valor de un pequeño, pero robusto anillo de confianza, y seremos más cautos a medida
que vaya creciendo nuestro anillo de confianza con el tiempo.
Además de aquéllos en nuestro anillo de confianza iniciático, es posible que deseemos
comunicarnos en modo seguro con otros que también están usando GnuPG. Sin embargo,
esto puede ser problemático por dos razones:
(1) no siempre sabemos cuándo alguien usa o estaría dispuesto a usar GnuPG.
(2) si sabemos de alguien que lo usa, todavía es posible que tengamos problemas para
validar su clave.
El primer motivo sucede porque las personas no siempre hacen público que usan GnuPG.
La forma de cambiar ese comportamiento es sentar ejemplo y hacer público que usamos
GnuPG. Existen al menos tres maneras de hacer esto:
3. Firmar digitalmente los mensajes que enviamos a otros.
4. Publicar nuestra clave pública en nuestra página en Internet.
5. Si la subimos a un servidor de claves, poner nuestro identificador de clave
como parte de nuestra firma. Haciendo pública nuestra clave, ayudamos a que
sea más aceptable para otras personas hacerla también pública.
Además, hacemos más fácil para otros el que puedan comenzar a comunicarse con
nosotros en modo seguro, ya que habremos tomado la iniciativa, dejando claro que
usamos GnuPG.
La validación de la clave es más difícil. Si no conocemos personalmente a la persona cuya
clave queremos firmar, no es posible que podamos firmar su clave personalmente con
certeza.
Debemos fiarnos de las firmas de otras personas y esperar que encontraremos una cadena
de firmas que nos lleven desde la clave en cuestión hasta la nuestra. Para poder encontrar
una cadena, debemos tomar la iniciativa y conseguir que nuestra clave sea firmada por
otras personas fuera de nuestro anillo de confianza inicial. Un modo efectivo de conseguir
esto es participando en «reuniones de firmas».
25. 25
De todos modos, debemos tener en cuenta que todo esto es opcional. No existe ningún
tipo de obligación de hacer públicas nuestras claves o de firmar las claves de otros. GnuPG
es lo suficientemente flexible como para adaptarse a nuestros requerimientos de
seguridad, sean éstos los que sean. Sin embargo, la realidad social es que necesitaremos
tomar la iniciativa si queremos engrosar nuestro anillo de confianza, y hacer todo el uso
posible de GnuPG.
GPG tiene un repositorio de claves (anillo de claves) donde guarda todas las que tenemos
almacenadas en nuestro sistema, ya sean privadas o públicas. Cuando veamos un anillo de
claves debemos de recordar que pub hace referencia a la clave pública y sub hace
referencia a la privada.
Cuando alguien te manda su llave o la descargas de un servidor de llaves o de una página
web, puedes especificar un nivel de confianza que dé cuentas de que esa persona es
realmente quien dice ser (a través de la firma de llaves). No estamos hablando de una
confianza afectiva sino técnica, pero inevitablemente, el hecho de comunicarme con esta u
otra persona también da cuentas de una confianza a nivel personal-humano. Si a mí esa
persona me lo ha pasado en persona en una usb y la conozco, o al menos he sostenido una
conversación en la que he llegado a conocerla, tengo bastante certeza de que es quien dice
ser. Ahora bien, si me ha pasado la llave un amigo o un contacto de confianza, también
puedo asignar a la llave un nivel alto de confianza. En cambio, si he descargado la llave de
una web sin conocer la persona y no tengo métodos para comprobar su identidad, no
puedo asignar a la llave una confianza alta.
Estas verificaciones van formando anillos de confianza, un sistema de referencias entre
pares. De tal manera que puedo ver cuántas firmas en común tengo con esa llave. Ojo, por
muchas herramientas técnicas que utilices, el hecho de decidir confiar en alguien para
contarle información confidencial es una decisión que debe basarte en un espectro amplio
de factores y sí, la intuición también.
Sin embargo, al igual que esos anillos de confianza nos dan información a nosotros de quién
confía en quién y, en consecuencia, en quién confiamos nosotros, también brinda datos a
cualquiera que acceda a esa llave pública puesto que las firmas son parte de este archivo.
Tenemos varias opciones que no son excluyentes:
Firmar determinadas llaves, las que sí queremos explicitar públicamente que
confiamos en ellas, pero para contactos más "privados", "internos", optamos por
otros métodos de referencias de confianza: comunicación en persona, por mail
cifrado, etc.
En la medida que tengamos muchas firmas de personas muy variadas en las que sí
confiamos que es quien dice ser, pero no necesariamente es alguien con la que
26. 26
colaboramos o confiamos a otros niveles, ya no desvela los tramos de relaciones
concretas. La práctica de firmado de llaves públicas y las cryptoparties cumplen con
esta función de crear sistemas decentralizados de verificación de identidades
digitales. No necesitamos un sistema centralizado como la policia que expida un
carnet oficial sino que entre todxs nos avalamos.
Confianza en el anillo
La clave de otro usuario se valida comprobando personalmente la huella digital de su
clave, y firmando su clave pública con nuestra clave privada. Comprobando
personalmente la huella digital podemos estar seguros de que la clave pertenece
realmente al supuesto usuario y, dado que hemos firmado la clave, podemos estar
seguros de que detectaremos cualquier manipulación o falsificación en un futuro.
Desafortunadamente este proceso se complica cuando debemos validar un gran número
de claves o cuando debemos comunicarnos con personas a las que no conocemos
personalmente.
Uno de los mayores inconvenientes de este sistema es el propio funcionamiento del
sistema, ya que al basarse en anillos de confianza no hay forma segura de acreditar que
una clave es de quien dice ser, más que por la confianza que tengamos en el que haya
firmado dicha clave y por las comprobaciones que hagamos antes de darle confianza.
Es decir, yo no tengo ninguna otra forma de comprobar que una clave es de alguien más
que por un amigo común a ambos que me certifica que dicha clave es verdaderamente de
quien dice ser, (a no ser que lo conozca personalmente). Si este esquema lo proyectamos
a mayor tamaño, obtenemos un esquema de confianza mutua y cíclica, al que se le
denomina “anillo de confianza”.
Debido a este problema, es totalmente imprescindible que no se firmen claves de las que
su procedencia no sea totalmente segura, ya que sino se estaría introduciendo una clave
falsa en el anillo, sería totalmente indetectable para los demás, con los riesgos que ello
conlleva. Por eso se suele recomendar que las claves se intercambien mano a mano, y no
por Internet…aunque hoy en día es imposible, cada uno vivimos en una parte del mundo.
Otro gran problema, aunque este sea relativo a todos los sistemas de seguridad basados
en claves, es que el tiempo que transcurre desde que tú revocas una clave hasta que el
resto de Internet sabe de ello puede ser muy grande, o incluso podría pasar que nunca
sabrían que esto ha ocurrido. Durante dicho tiempo, podría haber alguien haciéndose
pasar por otro, si la clave de éste hubiera sido comprometida. Todos los servidores se
intercambian información de las claves, pero este problema no tiene solución fácil, y es
uno de los puntos negros de los sistemas de claves asimétricas, en concreto de PGP.
27. 27
Servidores de claves PKI
En PKI, en el momento del registro el propio servidor al darte de alta te incluye en su base
de datos automáticamente.
Generalmente existirá un repositorio en el que se publican todos los certificados
gestionados por la PKI y puede ser consultado por otros usuarios de la PKI que quieran
enviar información cifrada o verificar firmas digitales.
Servidores de claves GPG
En PGP debemos subir personalmente nuestra clave para que pueda ser consultada. Esto
quiere decir que podemos crear nuestras claves, utilizar GPG y no necesariamente estar
registrados en un servidor de claves.
Para que nos cifren un mensaje tenemos que compartir la clave pública de nuestro par de
claves para cifrar, y como es un poco engorroso difundir una clave a muchas personas
existen los servidores de claves PGP (compatibles con GPG), donde subir nosotros mismos
nuestra clave pública para el que necesite verificarla.
La utilidad de los servidores de claves públicas es que todo el mundo pueda acceder a ellas
para corroborar tu identidad y crear anillos de confianza. Existen varios servidores que
ofrecen el alojamiento de claves PGP. El utilizado por defecto en GPG es keys.gnupg.net.
La búsqueda de una persona concreta en un servidor podemos realizarla mediante
nombre y apellidos, dirección de correo electrónico o ID de la clave PGP tanto en interfaz
web como en una terminal de comando.
28. 28
Las claves digitales
En un Certificado, las claves digitales son los elementos esenciales para la firma e
identificación del firmante. Existen dos claves, la clave privada y la clave pública, que
trabajan de forma complementaria Lo que cifra o codifica una clave sólo lo puede
descifrar o decodificar la otra.
La diferencia entre ellas es que la clave privada está pensada para que nunca salga del
certificado y esté siempre bajo el control del firmante. En cambio, la clave pública se puede
repartir o enviar a otros usuarios, e incluso publicar en servidores de validación de claves.
En ocasiones, se habla de Certificado Privado para referirse al certificado que contiene la
clave privada y la pública y del Certificado para referirse al certificado que sólo contiene la
clave pública.
Importante: Si envías tu certificado a un tercero, asegúrate de que es el certificado público
(que contiene sólo la clave pública).
Revocación del Certificado
Después de haber generado un par de claves, el usuario debe, de forma inmediata,
generar un certificado de revocación para la clave pública primaria.
Si el usuario olvidara la contraseña, o si su clave privada estuviera en peligro o extraviada,
este certificado de revocación podría ser hecho público para notificar a otros usuarios que
la clave pública no debe ser usada nunca más. Una clave pública revocada puede ser
usada para verificar firmas hechas por el usuario en el pasado, pero no puede ser usada
para cifrar datos. Esto tampoco afecta a la capacidad de descifrar mensajes que hayan
sido cifrados con la clave antes de su revocación, siempre y cuando el usuario todavía
tenga acceso a la clave privada.
Los Certificados electrónicos tienen un periodo de validez pasado el cual no sirven para
firmar ni tampoco para identificarse. Cada Proveedor de Certificación establece unos
plazos antes de que el certificado caduque para poder renovarlo sin necesidad de otra
identificación. Si el Certificado caduca hay que volver a realizar todo el proceso de
solicitud del certificado. Sin embargo, un certificado se puede renovar antes de que
caduque y el proceso no requiere una solicitud nueva.
Para el caso de certificado por software, en la creación del certificado incluimos su
periodo de validez. Puedes invalidar tu Certificado antes de que caduque por razones de
seguridad. Una vez revocado, el certificado ya no puede ser reactivado y es necesario
volver a iniciar todo el proceso de solicitud.
29. 29
Estas son las principales causas de revocación de un Certificado:
Solicitud voluntaria del Suscriptor.
Pérdida o daños en el soporte del Certificado.
Fallecimiento del suscriptor o de su representado, incapacidad sobrevenida, total o
parcial, de cualquiera de ellos.
Finalización de la representación o extinción de la entidad representada.
Inexactitudes en los datos aportados por el suscriptor para la obtención del
certificado.
Que se detecte que las claves del Suscriptor o de la Autoridad de Certificación han
sido comprometidas.
Visor de Firmas Electrónicas
El visor es una herramienta que permite generar un informe de la firma y ver
información de la propia firma electrónica y del documento firmado.
El documento que se genera no tiene el mismo valor legal que la firma. De hecho,
puede ser válido en los términos que se determine para su uso. En general, en este
caso, el documento impreso deberá contener un CSV o Código Seguro de Verificación
que permite contrastar la copia impresa con la original electrónica.
30. 30
El Proceso Básico de Firma Electrónica
El proceso básico que se sigue para la firma electrónica es el siguiente:
El usuario dispone de un documento electrónico (hoja de cálculo, un archivo -pdf,
docx, imagen… incluso un formulario en una página web) y de un certificado que le
pertenece y le identifica.
La aplicación o dispositivo digital utilizados para la firma realiza un resumen del
documento (hash). El resumen de un documento de gran tamaño puede llegar a ser
tan solo de unas líneas. Este resumen es único y cualquier modificación del
documento implica también una modificación del resumen.
La aplicación utiliza la clave contenida en el certificado para codificar el resumen.
La aplicación crea otro documento electrónico que contiene ese resumen
codificado. Este nuevo documento es la firma electrónica.
El resultado de todo este proceso es un documento electrónico obtenido a partir del
documento original y de las claves del firmante. La firma electrónica, por tanto, es el
mismo documento electrónico resultante. Este es el documento válido a efectos legales y
el que debes conservar. Cualquier impresión o representación gráfica que se haga de él
solo es válido en los términos que determine el destinatario de la firma. En general, en
este caso, la firma impresa deberá contener un CSV o Código Seguro de Verificación que
permite contrastar la copia impresa con la original electrónica.
En casos de particulares la firma es manuscrita, se hace de tres formas:
1. Firmando las partes ocupando la firma de cada uno ambos documentos, de manera
que cada uno se lleva su documento y para comprobarlo se casan.
2. Ídem a anterior, pero con un sello tampón.
3. Firmando ambas partes en todos los documentos.
31. 31
Ejemplo de firma
Supongamos que queremos mandar un mensaje firmado a nuestro amigo Pepe. Para ello,
antes de nada, debemos recordar que Pepe debe tener nuestra clave pública.
Gracias a nuestra clave privada generaremos un correo firmado.
Pepe recibirá nuestro correo firmado.
Pepe usará nuestra clave pública para comprobar la validez de la firma.
Ejemplo de cifrado
Ahora supondremos que queremos mandar a Pepe un mensaje cifrado para que sólo él
pueda ver el contenido. Para ello, previamente, dispondremos de la clave pública de Pepe.
Con la clave pública de Pepe cifraremos el mensaje.
Pepe recibirá un mensaje cifrado.
Pepe usará su clave privada para ver el contenido del mismo.
¿Cómo firmo un documento?
Puesto que estamos hablando de firma electrónica, la firma debe realizarse
obligatoriamente por medios electrónicos y la podrás realizar de dos formas:
Descargando una aplicación en tu PC: En este caso utilizas para firmar la aplicación
que instalas en tu ordenador y no necesitas estar conectado a internet.
Firmar directamente en internet: Esta opción es usada sobre todo cuando firmas
formularios o solicitudes. Para firmar debe descargarse un componente que
funciona sobre el mismo navegador.
En ambos casos necesitas disponer de un certificado electrónico.
Validación de la firma digital
Si recibimos o descargamos un documento firmado nos interesa validar la firma. La
validación de una firma electrónica es el proceso por el que se comprueba:
1. La identidad del firmante.
2. La integridad del documento firmado: comprobar que los datos firmados se
corresponden con los originales, la estructura del fichero es correcta.
3. La validez temporal del certificado utilizado: marca de tiempo.
32. 32
Sabemos que, en el proceso de firma, el firmante utiliza su certificado electrónico, en
concreto su clave privada, para obtener la firma electrónica. Pero ¿Cómo sabemos si una
firma es válida? Para ello tenemos dos maneras de hacerlo:
1. Verificación Offline Descargar la clave de firma.
Las dos primeras verificaciones se pueden realizar desde una aplicación sin conexión
a internet simplemente utilizando el certificado incluido en la misma firma.
Verificar, pero sin autentificar la clave de firma a través de un servidor de
certificaciones online, se basa en la descarga de una clave de firma genuina desde la
web del programa.
Esto es un archivo con extensión “sig”. Se pone este archivo junto a la descarga que
se desea comprobar y se verifica con un programa o una extensión de navegador.
Pero, ¿cómo sabemos si ese certificado es válido?, ¿estaba revocado en el
momento de la firma? ¿La Autoridad que lo emitió es de confianza?
2. Verificación Online Autentificar la clave de firma a través de un
servidor de certificaciones.
El proceso de validación de la firma no puede separarse del proceso de validación del
certificado usado para la firma. Y por eso, la validación de la firma, implica también la
validación del certificado (certificado no caducado o revocado).
El certificado electrónico solamente se puede validar mientras esté activo, ya que una
vez caducado desaparece de las listas de revocación de la Autoridad de Certificación y
ya no se puede comprobar cuál era el estado en el momento de la firma.
Si el certificado no es válido (caducado o revocado), la firma no puede ser validada
correctamente puesto que no podemos saber cuál era el estado del certificado en el
momento de la firma.
Por tanto, las tres validaciones dependen de la capacidad de validar el certificado,
para lo cual es necesaria una conexión a internet que permita acceder online a una
plataforma de validación de certificados.
El punto 2 es la única técnica de verificación que asegura que una descarga es idéntica
a la original y como tal puede proteger al usuario en caso de que un sitio web se vea
comprometido. También es la técnica más complicada y pues debes tener una cuenta
con tus claves.
33. 33
Cómo funciona. Clave privada y clave pública.
Con la criptografía asimétrica necesitamos dos claves separadas, una es privada (que sirve
para el descifrado o la firma digital) y la otra es pública (para cifrar un archivo de texto o
para verificar la firma digital).
En cuanto tengamos nuestra pareja de claves podemos proceder de esta forma:
Clave pública: se la enviaremos a todo el mundo que la quiera, la subiremos a un
servidor, o a nuestra web... Esta clave permitirá a la gente verificar nuestra firma y
crear mensajes cifrados para nosotros.
Clave privada: no se la daremos a nadie, ya que nos permitirá firmar y descifrar
correo.
PGP genera las claves a través de muchos algoritmos de encriptación. Es necesario
recordar que la clave pública y la privada están matemáticamente conectadas con este
algoritmo; por esto, se pueden compartir partes de este algoritmo sin comprometer la
seguridad del sistema. Es importante darse cuenta de que estas claves son dos archivos
que se generarán en nuestro PC y que están íntimamente ligadas, pero no se puede
averiguar una a través de la otra.
Es muy importante no dejar nunca a nadie la clave privada y es necesario elegir una
contraseña que solo el usuario pueda recordar y que al mismo tiempo sea difícil de
descifrar, así como recordar que la seguridad de las claves depende no sólo de la
contraseña que se utiliza para su creación, sino también de cómo se guarda esta clave.
El algoritmo que se emplea para PGP, y el recomendable es el RSA con un tamaño de clave
de 4096 bits. Para una mayor seguridad a largo plazo, lo ideal sería de 8.912 bit, pero hay
que esperar un poco hasta que finalice la operación (aunque para PGP y GPG hay procesos
diferentes para la generación de las claves).
Las claves se usan indistintamente para cifrar y descifrar bloques de información que
pueden ser mensajes o bloques binarios, pero dependiendo con que clave cifres es el
propósito del descifrado (cualquier clave Pública NO descifra lo que una clave Privada ha
cifrado, solo descifra lo que ha cifrado su pareja una sola “Clave Pública” es pareja solo
de una “Clave Privada”):
34. 34
1. El uso de la clave pública (descifrar sólo por una persona con su clave
privada)
Cifrado con clave pública (enviar mensaje privado) Cifrar y enviar un mensaje seguro
que solo podrá ser leído por el destinatario y nadie más, por lo que no podrá ser
descifrado jamás si no se tiene la clave privada. Esto garantiza que la información es
totalmente confidencial y sólo lo descifra el destinatario.
2. El uso de la clave privada (descifrar por todos con clave pública)
Cifrado con clave privada (firma digital) La clave privada también puede cifrar un
mensaje que podrá ser descifrado con quien tenga la clave pública. Ojo porque aquí el
propósito cambia, ¿qué sentido tendría enviar un mensaje cifrado que puede ser
descifrado con la clave que cualquiera puede obtener? Aquí la privacidad del mensaje no
es tan importante, sino confirmar que el que envía el mensaje o publica un archivo es la
persona que dice ser.
Como solamente el dueño de la clave privada conoce la clave privada, sólo él pudo haber
cifrado ese mensaje o archivo. El que recibe el mensaje o descarga el archivo no tiene
duda que quien lo manda es el dueño de la clave privada y es una prueba irrefutable de
confiabilidad de que el mensaje o archivo proviene de quien dice ser (fuente fiable).
El Almacén de Certificados
Siempre que vayamos a realizar un proceso de firma electrónica o identificación digital
basadas en certificados, será necesario que esos certificados estén disponibles en el
ordenador para la aplicación que va a realizar la firma.
Los certificados se guardan en el “Almacén de Certificados”.
Para los certificados contenidos en una tarjeta digital, como el DNI electrónico, la
propia tarjeta es el almacén.
Los certificados software se guardan en un almacén que estará ubicado en una ruta
concreta del sistema de archivos dependiendo del programa utilizado. Para poder
usarlo primero es necesario importar o cargar el certificado de un archivo o servidor
a ese almacén.
35. 35
Importar y exportar certificados
La importación de certificados es el proceso que permite cargar el certificado en el
ordenador o en el navegador para su uso posterior en la firma o identificación. Los
certificados pueden contener la clave privada y la pública, o sólo la pública. Eso depende
del tipo de certificado que tengamos y de su extensión.
La exportación se debe hacer desde el almacén en el que está instalado el certificado. La
exportación de certificados es el proceso que permite obtener una copia del certificado
instalado en el ordenador o en el navegador. En ocasiones es necesario extraer del
almacén un certificado para lo siguiente:
Hacer un backup o copia de seguridad del certificado.
Instalarlo en otro ordenador.
Enviar la parte pública a otra persona
36. 36
Instalar certificados en Windows PKI
El almacén de certificados de Windows es utilizado por navegadores como Internet
Explorer, Chrome y por otras aplicaciones como Office y Adobe Reader. La importación de
certificados en este almacén se puede realizar desde cualquiera de los dos navegadores
mencionados. La forma de acceder al almacén y a las herramientas de importación es la
siguiente:
En Internet Explorer Opciones de Internet > Contenido > Certificados.
En Google Chrome Opciones > Avanzada > HTTP/SSL > Gestionar Certificados.
Instalar certificados en Firefox
Firefox dispone de su propio almacén de certificados independiente del almacén del
sistema operativo. Por tanto, si quieres firmar documentos desde Firefox debes realizar
previamente la importación de certificados desde el mismo navegador.
En Firefox Opciones > Avanzado > Cifrado > Ver Certificados.
Validación de PDFs en Adobe
Las aplicaciones Adobe y Adobe Reader permiten la validación de las firmas contenidas en
documentos pdf firmados electrónicamente. Sin embargo, para que esto sea posible, es
necesario que Adobe reconozca y confíe en los certificados raíces de las Entidades
Certificadoras que han emitido los certificados con que se ha firmado el documento.
Por ejemplo, para validar correctamente un documento pdf emitido por el BOE es
necesario configurar el entorno Adobe para que reconozca el certificado raíz de la FNMT,
ya que ha sido esta entidad la que ha emitido el certificado con el que se ha firmado el
documento del BOE. En general, Adobe se puede configurar utilizando alguno de los
siguientes métodos:
Usar el almacén de certificados de Windows.
1. Descargar el certificado raíz de la Autoridad de Certificación que ha emitido el
certificado.
2. Instalación del certificado en el almacén de Windows. Haz doble click sobre el
fichero descargado y se mostrará una ventana.
En la pestaña "Detalles" puedes comprobar los atributos indicados para
confirmar que se trata del certificado correcto.
Pulsa el botón "Instalar Certificado"
37. 37
Pulsa el botón "Siguiente >"
Pulsa el botón "Examinar" y selecciona "Entidades emisoras de confianza"
Pulsa el botón "Siguiente >" y en la última pantalla pantalla "Finalizar"
Dado que se trata del certificado de una Autoridad de Certificación raíz
aparecerá una ventana para solicitar confirmación
Pulsa el botón "Si"
3. Configurar Adobe Acrobat Reader para confiar en el almacén de Windows.
Iniciar Adobe Reader e ir al menú "Edición > Preferencias".
Selecciona la sección "Seguridad" y pulsar el botón "Preferencias
Avanzadas".
Selecciona la pestaña "Integración de Windows" y chequea la opción
"Validando Firmas".
Pulsa el botón "Aceptar" para finalizar
Usar el almacén de certificados de Acrobat Reader.
Acrobat Reader dispone de su propio almacén de certificados de confianza, que por
defecto, es el que utiliza.
El procedimiento de instalación y configuración es el siguiente:
1. Descargar el certificado raíz de la Autoridad de Certificación que ha emitido el
certificado.
2. Importar el certificado de la autoridad certificación descargado.
Inicia Adobe Acrobat Reader y selecciona el menú "Avanzadas > Administrar
identidades de Confianza".
En las versiones más modernas, este menú se encuentra en "Documentos >
Administrar identidades de Confianza".
Pulsa el botón "Agregar Contacto"
Pulsa el botón "Examinar" y seleccione el certificado descargado
anteriormente
38. 38
En la ventana que se abre selecciona el Contacto recién importado.
A continuación se muestran los certificados contenidos en dicho fichero
Selecciona el certificado de la Autoridad de Certificación y pulsa el botón
"Confiar"
Chequea la opción "Firmas y como una raíz de confianza" y pulsa el botón
"Aceptar"
Pulsa el botón "Importar" y Pulsa el botón "Aceptar"
Después de todo este rollo y para los paranoicos decir:
Sólo el cifrado punto a punto es el seguro porque la comunicación es entre dos únicos
puntos, y con sus consecuentes medidas de seguridad…claro. PGP y similares no son
vulnerables como tal, sólo que dependes de terceros (un servidor o página web) para
validar claves o darles confianza... Es decir, la vulnerabilidad no está a nivel de protocolo
sino de uso. Y no olvidarse del clásico antivirus.
39. 39
Infraestructura de clave pública PKI (navegadores web)
Cuando compramos en una tienda a través de internet realmente no conocemos a quién le
estamos comprando. ¿Quién nos dice que al otro lado no hay un delincuente que
simplemente se quedará con nuestro dinero a cambio de nada?
Para esto existe una infraestructura de autoridades de certificación, autoridades de registro,
certificados, etc. A todo ello se le conoce como infraestructura de clave pública y nos
permite certificar que una persona es quien dice ser, incluso si sufre el robo de sus claves.
Toda la infraestructura de clave pública se basa en el uso los certificados digitales.
Un certificado es un fichero que aporta información sobre quién es el dueño de ese
certificado. Es como el DNI con la excepción de que un certificado se puede aplicar casi a
cualquier cosa, por ejemplo, a una página web. Así, el certificado de una página web
informará de cosas como, quien es el dueño de una página web, el algoritmo de cifrado
preferido para sus comunicaciones, la clave pública de la web y el periodo de validez del
certificado (entre otras muchas cosas).
Por ejemplo, en la siguiente imagen podemos ver una conexión segura (en la que aparece el
candado) y al hacer clic sobre el candado nos da información sobre la comunicación web:
40. 40
Como vemos en la imagen anterior, el certificado (en este caso de la página web de
Microsoft), nos indica que Microsoft está en Redmond, Washington, US, que la conexión
utiliza el protocolo TLS 1.2, que para el cifrado se usa AES_256_CBC y que para la
negociación ha utilizado una variante del algoritmo RSA (ECDHE_RSA).
Es más, en la parte de la derecha, nos permite conocer el tipo de clave pública del servicio
web (que es una RSA de 2048 bits) y en la parte inferior nos la muestra (dado que es
pública la puede conocer cualquiera). Ya veremos qué es cada una de estas cosas.
La entidad generadora de estos certificados es lo que se llama una Autoridad de
Certificación (CA) y en certificados web algunos de los más conocidos son VeriSign o
goDaddy. En el caso del ejemplo anterior la autoridad de Certificación el cometido de las
autoridades de certificación es “certificar” que la información indicada en el certificado
digital es cierta. También es responsable de emitir y revocar los certificados digitales.
¿Y cómo sabe esa “autoridad” de certificación que realmente esa web
pertenece a esa persona?
La CA (ella misma o a través de otra entidad llamada Autoridad de Registro) hace una serie
de comprobaciones y si todo es correcto, genera el certificado y lo cifra con su clave
privada. De esta manera el que reciba el certificado sabrá que los datos que aparecen en
ese certificado los ha validado una CA (El dato de la CA certificadora es público).
Pero volvemos a lo mismo. ¿Y si esa CA no es quien dice ser? Para certificar su autenticidad
las CAs también tiene un certificado digital donde dice quiénes son (es lo que se llama un
certificado raíz) y para verificar la autenticidad de este certificado, éste va cifrado por una
CA, pero no por la propia CA sino por otras CAs reconocidas del mercado. Se genera de esta
manera lo que se llama “Web of trust”, es decir existe una red de CAs que se certifican las
unas a las otras. Es difícil suplantar una CA, pero suplantar una red entera de CAs es algo
prácticamente imposible.
41. 41
Revocación de certificados
Si ocurriera que nuestra web se ve comprometida y descubre la clave privada del servidor,
o si, por descuido alguien accede a nuestro correo y descubre nuestra clave privada, la
infraestructura de clave pública ya no sería válida. Cualquiera podría hacerse pasar por
nosotros, o por nuestro servidor, ya que es conocedor tanto de nuestra clave pública (que
era ya conocida por todos), como de nuestra clave privada.
En esa situación es necesario revocar los certificados. Esto se consigue realizando una
solicitud a la Autoridad de Certificación que nos los hubiera firmado en su momento. Tras
la solicitud en apenas un rato podemos tener los certificados revocados. Si a partir de ese
momento alguien monta una web haciéndose pasar por nosotros, el navegador al
comprobar la validez del certificado, podrá ver que se encuentra en la lista de revocación de
certificados de la autoridad de certificación y nos mostrará un aviso por pantalla:
Un certificado puede estar revocado por diferentes causas. Por ejemplo porque su plazo
de validez haya expirado o porque se haya realizado una solicitud de revocación de
certificado.
42. 42
Cifrando comunicaciones web
Cuando hacemos una compra a través de Internet estamos enviando cierta información
confidencial como los dígitos de la tarjeta de crédito, el usuario, la fecha de caducidad y el
código CCV de la tarjeta. Con esta información, cualquier podría realizar una compra a
través de internet, suplantando nuestra identidad, por lo que este tipo de datos sólo deben
ser conocidos por el usuario y la tienda.
Sin embargo, hay un problema. Esa conexión está pasando por los servidores de nuestro
proveedor de Internet, por servidores de comunicaciones alojados (generalmente) en
USA, probablemente por otros sistemas de salto alojados en Inglaterra u Holanda hasta
llegar a los servidores del hosting de la tienda donde esté alojada la página web donde
estamos comprando. Es un largo camino y un montón de sistemas de los cuales no
sabemos nada ni si han sido comprometidos o cuál es su configuración de seguridad.
Por esta razón es necesario proteger la comunicación de manera que viaje cifrada desde
nuestro ordenador al servidor web de la tienda. Para conseguir esta comunicación
cifrada, el primer requisito es que el servidor web este configurado para admitir
conexiones HTTPS y que disponga de una certificado SSL que nos informe de quién es,
cuál es su dueño y cuál es su clave pública.
Una conexión segura contra un servidor web que admitan conexiones HTTPS tiene 3 fases:
En una primera fase el navegador web y el servidor negocian el algoritmo de
cifrado de la comunicación y otros parámetros que permitan realizar la conexión
de una forma segura. Este proceso se llama Handshake. El cifrado de la conexión
se hace utilizando un algoritmo de cifrado simétrico, con una clave compartida que
ambos extremos conocen. Sin embargo, para el intercambio de esta clave conocida
por ambos, se utiliza un algoritmo de cifrado asimétrico. Todo esto se negocia en la
fase de Handshake.
Una vez terminada la negociación, la conexión segura es establecida. En ese
momento, el servidor web le envía su certificado, que almacena el nombre de la
entidad certificadora (CA) del servidor web, el periodo de validez de ese
certificado y la clave pública del servicio web. Ese certificado irá firmado (con la
clave privada de la Autoridad de Certificacion-CA), por lo que el navegador deberá
descifrarlo usando la clave pública de ésta, que como vimos antes, tiene
almacenado en una base de datos. Una vez descifrada podrá leer toda la
información albergada en el certificado, continuando con la conexión.
43. 43
Si el navegador detecta que o bien el periodo de validez o la CA son inválidos, nos
mostrará un mensaje de error indicándolo, pero nos dejará continuar bajo nuestra
responsabilidad:
A continuación, el navegador generará una clave maestra de cifrado y se la enviará
al servidor web usando la clave pública de éste, y a partir de este momento la
comunicación irá cifrada usando la clave compartida (que solo el servidor y el
navegador conocen puesto que el intercambio se ha producido de forma cifrada).
El resto de la conexión va cifrada utilizando el algoritmo de cifrado simétrico (cifrado y
descifrado con la misma clave) que ha sido negociado en la primera fase de la conexión. El
cifrado asimétrico se usa únicamente para la fase de negociación entre el navegador y el
servidor.
Casos prácticos
Hasta aquí vale, pero, si yo soy un navegador y al visitar una web recibo un certificado que
esté cifrado… ¿cómo lo descifro? Los navegadores vienen por defecto con las claves
públicas de las autoridades de certificación más reconocidas. De hecho, lo que almacenan
no son las claves, si no los propios certificados de las CAs.
Podemos consultar estos certificados en nuestro navegador preferido. Asi, por ejemplo en
Internet Explorer si vamos a a ajustes, opciones de internet –> contenido –> certificados –>
Entidades de certificación Raíz de Confianza
O en Google Chrome en Ajustes→Configuración→HTTPS/SSL →Administrar cer ficados,
veremos un listado de unas 200 CAs que acepta nuestro navegador.
44. 44
Para demostrar que una página web utiliza un certificado firmado por una entidad
reconocida, los navegadores suelen mostrar un candado verde en la barra de direcciones
del navegador (en la siguiente imagen, un ejemplo con los tres navegadores principales):
Puede ocurrir que el certificado utilizado para firmar no sea reconocido por el navegador
(porque no ha sido instalado por defecto). Esto ocurre por ejemplo en la Sede Electrónica
de la Administración Española, como podemos ver en la siguiente imagen.
No se trata de que el sitio no sea de confianza (pocas cosas considero que sean más
confiables que una administración gubernamental). El problema en estos casos es que el
navegador no lleva incorporado el certificado de la entidad que está firmando la página
web.
45. 45
En la imagen (es la página de la sede
electrónica del MEC), la CA resulta ser “AC
Administración Pública” pero como el
navegador (en este caso Google Chrome)
es de origen americano y se pretende que
sea de uso universal, no incluyen por
defecto a la administración española
como CA. Esta es la razón por la que cada
vez que tenemos que realizar trámites con
la administración, nos pide que
instalemos los certificados que la avalan.
En otros navegadores es más aparente.
Por ejemplo, en Firefox o Internet
Explorer en vez de tachar el candado lo
dibujan en gris:
Existe por último la casuística en que, al acceder a un sitio web, el certificado es auto
firmado. Esto quiere decir que no lo avala una autoridad de certificación. En esos casos los
navegadores nos informan mediante un aviso muy explicativo:
46. 46
Esto no tiene por qué significar error alguno. En estos casos la navegación será segura (los
datos irán cifrados), pero simplemente nadie nos puede garantizar que este sitio es legítimo
de la tienda que estamos visitando.
Los posibles errores que nos encontramos son muchísimos. Por eso es importante leerse
el mensaje de error para entender lo que está pasando. En el siguiente ejemplo el mensaje
nos avisa de que el certificado no es para el sitio web que se visita (en concreto se quiere
visitar ixxxxc.com y el certificado es para lxxxxs.com). En este caso la explicación es que se
ha contratado el desarrollo de la web ixxxxc.com a la empresa lxxxxs.com y ésta, para
ahorrar costes ha subido su propio certificado en vez de contratar uno nuevo. La conexión
47. 47
irá cifrada, sí, pero el mensaje (un poco exagerado) nos advierte de que posiblemente la
web no pertenezca a ixxxc.com.
Resumen
Cuando visitamos una página web segura y nos aparece un aviso de error es importante leer
el mensaje que nos aparece. Básicamente podemos resumir los errores en tres:
El certificado no es de confianza (no ha sido firmado por una CA)
El certificado no es para quien dice ser
El certificado ha sido revocado
En los tres casos podemos decirle al navegador que continuamos con la navegación. La
conexión irá cifrada por lo que nadie podrá ver lo que se transmite, pero podría ocurrir que
la web no es de quien dice ser y podríamos estar enviándoles información sensible
pensando que se trata de una web legítima.
Cuando al visitar una web segura no nos salta el aviso, el cifrado asimétrico y la
infraestructura de clave pública nos están asegurando de que la web es legítima, la
persona que está detrás es quien dice ser y comunicación va cifrada y nadie puede
escucharla.
48. 48
Proceso exacto de firma digital
Una firma digital se consigue calculando un valor “hash”, que es un valor único que
cambia cada vez que se modifica lo más mínimo un documento (un espacio en blanco más
o menos, implica un valor hash completamente diferente). Ese valor hash se adjunta al final
del documento y se cifra para que nadie pueda leerlo más que el receptor.
De esta manera que el receptor del mensaje o documento, lo primero que hace es
descifrar el hash, calcular el “hash” del mensaje o documento y comprobar si son iguales.
Si son diferentes, advertirá al usuario de que podría haber habido una modificación del
mensaje durante el tránsito.
Se pueden firmar todo tipo de documentos (PDFs, TXTs, DOCs, JPGs, etc) y también se
pueden firmar correos electrónicos y cualquier cosa que se quiera enviar por internet.
En resumen, el proceso de firma es el siguiente:
1.- Creamos el documento que queramos firmar, ya sea un documento PDF, o lo que
deseemos. En este ejemplo vamos a usar un documento PDF.
2.- Se obtiene el valor hash, único de ese documento. Hay distintas funciones Hash (MD5,
SHA1, SHA-256, etc.). El más utilizado actualmente es el SHA-256. SHA-256 genera un valor
de 256 bits (que en hexadecimal puede tener este aspecto:
c6b6b0c4147befff952eabfdb9bdc0a0c25bc8204378aadf8e9c52f2b30cc3c1) y que es único
para dicho documento. Para hacernos una idea, al documento anterior le añadí un espacio
en blanco y el hash SHA-256 que obtuve fue
20dc443a2071c615d6e90594043af06357de8fa8f53eb39f03e11516508f8dd5. Como vemos
no se parecen en nada.
A partir de este valor es imposible obtener ninguna información del documento original,
pero siempre que lo calculemos (si no hemos modificado el documento), nos sacará el
mismo valor hash.
3.- Se cifra, con nuestra clave privada, este hash SHA-256 que hemos obtenido del PDF. El
texto obtenido que puede ser similar a:
lzODK0TwL2AUkdcJ7abiee3tc93jrMxqTxu7V0xJoNImKA105TzEHAOzeSUW1N/uudGwTLFZg
Qt4ejbpLCNwWzG6X8KwVaPPZW/zAwzB4DcnScn6zcz/uRnYs8iBBIabuRN7M1vRHoM77szsx
A+hyQxwek/i702lyshkArtQ5Q4=
Es la firma digital del documento PDF. Esto generalmente se guarda en un pequeño archivo.
Si además queremos cifrar el documento para garantizar la confidencialidad y el no
repudio, se continuaría con los siguientes pasos:
49. 49
4.- Se cifra el documento PDF original usando la clave privada del emisor.
5.- Se cifra otra vez este documento PDF ya cifrado, pero esta vez usando la clave pública
del destinatario.
Si sólo se quiere firmar el documento (por ejemplo queremos que el documento sea público
pero que vea que lo hemos firmado nosotros) bien en el correo electrónico o por el medio
que sea, se enviará el documento PDF en claro y el fichero de la firma digital.
Si por el contrario, se desea confidencialidad y no repudio, los siguientes tres documentos
se unirán en un documento único y se envían por correo electrónico o el método que sea:
– El documento PDF doblemente cifrado.
– El fichero con la firma del documento original.
– La clave pública del emisor (este último no es necesario puesto que las claves públicas son
eso, publicas, y están disponibles en los servidores de claves).
Este proceso esta descrito en el siguiente esquema:
50. 50
¿Y por qué es necesario este proceso tan largo? Bien, veamos los pasos seguidos:
La firma digital (pasos 1-3) es un hash que varía con la menor modificación del
documento y ese hash ha sido firmado con la clave privada del emisor. Con esto el
receptor se asegura de que ese documento no ha sido modificado desde que el
emisor lo firmó. A esto se le llama integridad.
El primer cifrado del PDF (paso 4), hecho con la clave privada del emisor, sólo puede
ser descifrado con la clave pública del emisor. Con esto, el receptor puede estar
seguro que ese documento fue cifrado por la persona que le manda el documento.
A esto se le llama no repudio.
El segundo cifrado del PDF (paso 5), hecho con la clave pública del receptor, sólo
puede ser descifrado con la clave privada del receptor. Con esto el emisor se
asegura que sólo el receptor puede leer el documento. A esto se le conoce como
confidencialidad.
Aunque el proceso es muy largo, un ordenador lo hace en cuestión de milisegundos. Quizás
el cifrado, si el documento original es muy grande, pueda llevar unos segundos, pero no
más.
El proceso de descifrado y comprobación de firma por tanto es el siguiente:
51. 51
En resumen, el documento se descifra dos veces, usando primero la clave privada del
receptor y luego la clave pública del emisor. Con eso nos aseguramos la confidencialidad y
el no repudio. Si queremos comprobar la integridad del envío, deberemos realizar el mismo
proceso que se realizó en el momento de la creación de la firma digital y comparar la firma
obtenida con la recibida por correo electrónico. Si son iguales, aseguramos la integridad del
envío.
Lo mismo que se ha realizado con un documento PDF, se pueden firmar correos
electrónicos o mensajes de mensajería instantánea. En el fondo, tanto los correos
electrónicos como los mensajes son pequeños ficheros que puede ser cifrado firmados
igualmente.
52. 52
EJEMPLO DE COMUNICACIÓN CON CIFRADO ASIMETRICO
Los algoritmos de cifrado asimétrico permiten realizar comunicaciones cifradas seguras
entre actores que no se conocen entre sí a través de un medio inseguro. En Internet un
actor puede ser un servidor web, un cliente de correo, un navegador web, etc. Para
conseguir esta comunicación segura, cada uno de estos actores debe tener una clave
pública (que todo el mundo puede conocer) y una clave privada (que sólo el propio actor
debe conocer).
Estas claves tienen la característica especial de que un mensaje cifrado con una de esas
claves (ya sea la pública o la privada) puede ser descifrado por la otra. Es decir, si
ciframos un mensaje con nuestra clave privada sólo podremos descifrarlo con nuestra
clave pública. Y viceversa. Por eso se llama cifrado asimétrico.
El cifrado asimétrico permite garantizar la autenticidad de cada uno de los actores, la
confidencialidad de la comunicación y el no repudio en el envío de un mensaje (ya sea
texto, o una imagen o lo que sea, en adelante se le llamará “mensaje”).
La autenticidad garantiza que cada actor es quien dice ser y no otro. La confidencialidad
garantiza que si alguien intercepta el mensaje no podrá entender nada y el no repudio
garantiza que si alguien envía un mensaje luego no puede negar que lo ha enviado.
Para conseguir estas tres características, el emisor cifrará el mensaje primero con su clave
privada y el mensaje resultante a continuación lo cifrará de nuevo con la clave pública del
receptor. Es decir, se cifrará dos veces.
Para descifrar el mensaje, el receptor (el legítimo receptor) deberá primero descifrar (es
decir pasar el algoritmo de descifrado) usando su clave privada y al mensaje resultante
(que aún será ilegible) se pasará de nuevo por el algoritmo de descifrado, esta vez
usando la clave pública del emisor (que es conocida por todo el mundo).
Este proceso queda reflejado en la figura. Andrés quiere mandarle un mensaje secreto a
Bea. Primero lo cifrará con su clave privada y luego con la clave pública de Bea. Nótese
que a partir del momento en que lo cifra con la clave pública de Bea, sólo Bea podrá
descifrar el mensaje. Ni siquiera el propio Andrés podría descifrar su mensaje si se olvida
de lo que ha puesto.
Para descifrar el mensaje que le llega a Bea, ésta primero los descifra con su clave privada
y el contenido resultante (aún ilegible) los descifrará de nuevo con la clave pública de
Andrés.
Por supuesto el algoritmo de cifrado y descifrado debe ser el mismo (ya sea Diffie-
Hellman, RSA, etc.).
53. 53
Si alguien fuera capaz de interceptar el mensaje (por ejemplo cuando pasa por un servidor
sobre el que no tenemos control en internet) nunca podrá descifrarlo. Lo que verá será
una ristra de caracteres sin sentido (¿s4$’@”z…). Como no dispondrá de la clave privada
de Bea, le será imposible descifrar lo que pone en ese mensaje. Con esto se consigue la
confidencialidad.
Como Bea tiene la clave pública de Andrés, si consigue descifrar por completo el mensaje,
puede estar segura de que ese mensaje lo ha escrito Andrés (Autenticidad) y es más, éste
no puede rechazar su escritura (No repudio) porque nadie más que él tiene su clave
privada por lo que ha tenido que escribirlo Andrés.
Lo cierto es que lo único que asegura este esquema es que el mensaje fue cifrado con la
clave privada de Andrés, no que fuera él, libremente, quien lo escribió. Pudo ocurrir:
Andrés fue secuestrado y fue obligado a escribir el mensaje.
La clave privada de Andrés fue robada y alguien escribió el mensaje por Andrés.
Alguien se hizo pasar por Andrés y le mandó el mensaje a Bea.
Ante la primera hipótesis poco puede proteger el cifrado asimétrico. La segunda y tercera
hipótesis sólo serían posibles si no se utiliza “una infraestructura de clave pública” (PKI en
inglés), que permite, por una parte revocar las claves públicas y privadas y por otra parte
certificar que una persona con una clave pública es físicamente quien dice ser.
54. 54
Multifirma
Puede ocurrir que un documento tenga varios autores y se desee que todos firmen. El
proceso en ese caso depende de si el documento va cifrado o no.
Si el documento no va cifrado, el proceso consiste en calcular el hash del documento
original y firmarlo por separado todos los firmantes con sus respectivas claves privadas. Es
decir, todos los firmantes cifran el hash original del documento y en el documento
finalmente generado, no hay una firma, sino tantas como firmantes haya.
Puede ocurrir que se desee por ejemplo firmar un documento por dos directores y luego
por un interventor que dé fe de que ese documento es real y ha sido firmado por los dos
directores.
En ese caso, el hash del documento será firmado por ambos directores, obteniéndose dos
firmas. Esas dos firmas se unirían en un único documento que sería a su vez firmado por el
interventor. Es decir, se recibiría el documento, sin cifrar, y otro documento de firma que
habría que descifrar usando la clave pública del interventor para obtener las dos firmas
digitales de ambos directores.
Si además hablamos de cifrado de documentos (o mensajes) multifirmados, en este caso
el orden es importante. Así, se debe descifrar primero con la clave pública del último que
cifró (y firmó) el documento. ¿Y cómo sabemos cuál es el último? En estos casos junto al
documento “multicifrado” sólo se recibe una firma digital, de la que podemos obtener
quién es el firmante. El firmante será también el cifrador. Es esa clave pública de ese
cifrador la que debemos utilizar.
Al descifrar el documento con esa clave pública, se genera otro documento (cifrado) y otra
firma digital, correspondiente otro firmante. Usaremos pues la clave pública de este
segundo firmante para descifrar tanto el documento como la firma digital. Así se continúa
con todos los firmantes.
Sello de tiempo
El proceso de verificación de una firma electrónica debe poder repetirse en cualquier
momento en el futuro, incluso años después de su generación.
A lo largo del tiempo los algoritmos de cifrado pueden llegar a ser vulnerables siendo
posible obtener las claves privadas si el algoritmo es vulnerable.