No arrastras piedras, construyes castillos

Algo así me dijeron hace algunos años y claro, se me quedó cara de tonto debajo del sofoco que llevaba por la enorme piedra que llevaba en la espalda.

Esta es una de las grandes falacias con las que, los que construyen castillos, pretenden hacer partícipes de la gloria de un hecho mayor a toda la plebe que acarrea las piedras o limpia las letrinas. Ya sabéis, lo de sois la mierda cantante y danzante del mundo pero a la inversa. Ciertamente no habría castillos sin nosotros/vosotros/ellos, pero eso no significa que sea mi/tu/su castillo, ojito, y decirlo así raya el insulto.

El caso es que, con tanta especialización, parece que cada vez hay más gente acarreando piedras y luego así quedan los castillos.

¿Sirve para algo la garantía de un certificado SSL?

La respuesta corta sería : no. La garantía de los certificados no sirven realmente para nada porque es prácticamente imposible que se hagan efectivas. Digamos que la garantía funciona como el pan «de pueblo» o la comida «casera», no deja de ser un reclamo.

Certificados en Comodo-apetekan181
La garantía de los certificados SSL

¿En qué consiste y qué cubre la garantía de un certificado?

La garantía del certificado SSL cubre cualquier daño que pueda derivarse de la emisión indebida de un certificado a una entidad fraudulenta. Por ejemplo, si un usuario se conecta a un sitio web fraudulento pero ha obtenido un certificado de una autoridad de certificación reconocida, ese es un caso en el que la garantía del certificado puede aplicar porque ha sido culpa de la Autoridad Certificadora (CA).

Ojo, la garantía cubre al usuario final, no al propietario del certificado. En este sentido, el concepto de la garantía del SSL puede ser engañosa porque el propietario del certificado SSL no puede reclamarlo. La garantía se aplica sólo a los usuarios finales. Si alguien compra un producto de un sitio HTTPS seguro y esto lleva a una pérdida de dinero. En este caso, el usuario final tiene derecho a reclamar una compensación de garantía. La CA cubrirá las pérdidas de acuerdo a sus términos y condiciones.

En SSL Dragon mencionan el caso de DigiNotar, que entregó un certificado para Google.com a una empresa que no era Google.

En este artículo Scott Helme, Do SSL warranties protect you? As much as rocks keep tigers away… tenéis más detalles sobre este asunto.

Probando Mailvelope en RoundCube: PGP en tu webmail

PGP siempre ha estado ahí pero me ha dado pereza probarlo… y ya sé por qué. El caso es que me he tenido que poner con ello y…

Qué es PGP

Malo será que no hayas oído hablar de ello. De forma resumida, PGP (Pretty Good Privacy) ofrece la posibilidad de firmar y cifrar la información transmitida a través del correo electrónico. En sus comienzos era un programa desarrollado por Phil Zimmermann en 1991 y a lo largo de los años se ha generalizado para describir el método de encriptado que utiliza este software (esto no es exactamente así… en la Wikipedia tenéis la versión larga de la historia).

Su funcionamiento se basa en la estructura de clave pública (o cifrado asimétrico): nos ponemos a juguetear de nuevo con nuestra clave pública y privada. En este caso, la clave pública se pone a disposición de los contactos de correo potenciales bien comunicándosela o cargándola en un servidor de claves externo. Con esta clave estos contactos cifrarán los mensajes electrónicos que quieran enviarte… y solo tú podrás descifrarlos.

xaedes & jfreax & Acdx, CC BY-SA 3.0, via Wikimedia Commons

La clave privada (protegida con contraseña, personal, secreta e intransferible por la cuenta que te trae) nos sirve para descifrar los correos electrónicos entrantes previamente cifrados con la clave pública.

Para establecer una comunicación segura siguiendo este proceso, será necesario que tu interlocutor también haga uso del protocolo PGP y te informe acerca de su clave pública.

Adicionalmente, la firma electrónica garantiza la autenticidad de los mensajes que se envían; es decir, nos aseguramos que el que envía el mensaje es quien dice ser.

Cómo implementamos PGP en nuestro correo

Como hemos visto antes, para empezar a usar PGP hay que hacer unas cuantas cosas con antelación:

  • Crear el par de claves necesarias: la pública y la privada
  • Intercambiar las claves con los destinatarios (de forma directa o a través de servidores)
  • Confirmar y validar de alguna forma esas claves para que no nos la cuelen (usando el fingerprint, muestras de sangre…)
Niveles de confianza para un certificado en Kleopatra
Niveles de confianza para un certificado en Kleopatra

Y una vez tenemos esto, ya podemos cifrar y descifrar los mensajes a troche y moche.

Para generar y gestionar las claves, existen diversos programas (os aparecen en la web de OpenPGP > Software) y algunos, como Thunderbird, ya tienen la gestión del cifrado de extremo a extremo (End to End Encryption) integrada de serie desde su versión 78.

El caso es que eso está muy bien, pero muchos usamos webmails: Gmail, Yahoo (sí, todavía hay gente que lo usa), Hotmail/Outlook… o el que te proporciona tu proveedor de hosting que casi seguro que es RoundCube. Para todos ellos, existe Mailvelope, un plugin para Firefox y Chromium (Chrome, Opera, Edge…). Mailvelope está basado en OpenPGP.js

Pantallazo de la web de Mailvelope
La web de Mailvelope el 17 de diciembre de 2020

En este documento del INCIBE os cuentan como usar PGP con el cliente de Outlook y con anteriores versiones de Thunderbird (como digo, a partir de la v78, no es necesario ningún plugin), a continuación os muestro como usar PGP en Firefox con Mailvelope para vuestro webmail.

Mailvelope + Roundcube (en Firefox)

Lo primero es descargar e instalar el plugin: https://addons.mozilla.org/es/firefox/addon/mailvelope/ y… comenzamos:

Empezamos…

Generamos el par de claves para el buzón de correo

Creamos nuestras claves. Las podemos crear nuevas o importarlas si ya las tenemos creadas.

Creamos un nuevo par de claves para el buzón escogido

En este caso la vamos a crear desde el principio. Completamos los datos que nos piden en la pantalla, ponemos la contraseña y damos a generar las claves. Podemos elegir entre diversos algoritmos de encriptado, la fecha de validez de los certificados y si queremos que se suba a un servidor de claves o no:

Generando las claves con la información indicada…

Una vez generadas las claves, nos aparecerán en el Gestor de claves:

El gestor de claves con nuestras claves (privada y pública)

Al crear las claves y subirlas al servidor de Mailvelope, nos llegará al correo un mensaje para verificar la dirección de correo. El correo está cifrado, así que tendremos que descifrarlo previamente:

Mensaje cifrado de validación

La aplicación trae opciones para cifrar/descifrar mensajes ya sea copiando y pegando el contenido del mensaje o subiendo el archivo cifrado. En nuestro caso, desciframos el mensaje haciendo copia-pega. Nos dará la opción de descargar el mensaje en un archivo de texto y ahí nos aparece un mensaje con un enlace para confirmar la clave en el key server de Mailvelope

Desciframos el mensaje de validación…

El mensaje una vez descifrado:

Hello sasaeh PGP Test,

please verify your email address o1@sasaeh.com by clicking on the following link:

https://keys.mailvelope.com/api/v1/key?op=verify&keyId=****

After verification of your email address, your public key is available in our key directory.

You can find more info at keys.mailvelope.com.

Greetings from the Mailvelope Team

Autorizamos el dominio del webmail

Ya hemos visto que podemos cifrar y descifrar mensajes desde el menú del plugin, pero lo chulo es tenerlo todo integrado y trabajar con el cifrado dentro de la aplicación, así que tenemos que autorizar el dominio.

Vamos a nuestro webmail y, en las opciones de Mailvelope, pinchamos en "+ Authorize this domain"; en mi caso,

Autorización del dominio

Con esto ya tenemos Mailvelope integrado dentro del webmail y podremos:

  • Ver los mensajes cifrados directamente
  • Cifrar (y firmar) los mensajes desde el webmail a través de la interfaz de Mailvelope
A la hora de componer el mensaje, tenemos la opción de cifrarlo

Y ya está.

En el dashboard de Mailvelope tenéis más opciones para que le echéis un ojo.

Dashboard del plugin

Recordad que para que podáis comunicaros con PGP con otro buzón de correo, los dos tenéis que usar PGP y las claves públicas del destinatario. Podéis importar las claves públicas desde la interfaz de Mailvelope, desde el Keyring, desde donde generasteis vuestro par de claves.

Utilidades SSL

Los proveedores de hosting hacen que la petición e instalación de los certificados SSL sea transparente (en un mundo ideal) y la mayoría de la gente no sabe ni el certificado que solicita; ellos solo quieren que vaya por seguro y cuando falla…

A la hora de chequear el estado de un certificado instalado, decodificar los CSR (Certificate Signing Request) o convertir el certificado a otro formato hay diversas webs que nos ofrecen utilidades.

  • SSL Labs de Quality Labs. Sobre todo en el testeo del servidor aporta muchísima información útil.
  • Digicert SSL Tools. Digicert es la principal Autoridad Certificadora (CA) y pone a nuestra disposición algunas utilidades: generar y chequear CSR, comprobación del sitio web, etc.
  • SSL Certificate Tools. El nombre lo dice todo ;) Es más sencillo que las anteriores pero tiene cositas como el conversor de certificados.

Qué es y para qué sirve DNSSEC

Vaya por delante que mi relación con las DNS es, digamos que distante, así que al añadirle apellidos la cosa se me complica.

Para qué vale DNSSEC

Quizá lo más interesante de DNSSEC es saber para qué te puede valer. En este vídeo ochentero (es de 2013, pero parece más antiguo, ¿verdad?) lo explican de forma sencilla:

About DNSSEC (Animated Introduction – With Text Narration)

DNSSEC sirve para impedir que alguien suplante a nuestros servidores DNS y nos proporcione información falsa, evitando la suplantación de servicios de terceros.

Aunque DNSSEC está bastante extendido, no todos los registradores ni todos los registros lo permiten.

¿Cómo funciona DNSSEC?

Autenticando la información mediante un cifrado asimétrico. Aquí empieza la parte más complicada ya que todo el contenido debe ir firmado para asegurar su autenticidad y todos los miembros de la cadena deben ser capaces de validar esa firma, hasta llegar a los servidores DNS raíz. Toda la cadena debe estar configurada para permitir DNSSEC.

De forma resumida, para un dominio:

  • Los servidores DNS deben estar configurados para permitir DNSSEC
  • Se firma la zona del dominio usando 2 pares de claves de seguridad: Zone Signing Key (ZSK) y Key Signing Key (KSK)
    • ZSK se utiliza para firmar la zona del dominio; es quien dice «Estos son mis registros DNS, provienen de mi servidor y deben ser así». Para ello utiliza registros DNS de tipo RRSIG para cada uno de los record sets (conjunto de registros del mismo tipo y nombre)
    • KSK se utiliza para firmar los registros DNSKEY que contendrán las claves públicas de las firmas, tanto ZSK como KSK, y que también tendrán su correspondiente RRSIG asociado.
Diagrama de claves de firma de claves
Diagrama de claves de firma de clave (imagen de CloudFlare)
  • Para transmitir esta información, hay que trasladar la clave pública de KSK a la zona padre. Esto se hace con el registro Delegation Signer (DS), que contiene la clave pública hasheada.
    Cada vez que un resolver se dirige a una zona secundaria, la zona principal también proporciona un registro DS. Este registro DS es la forma en que los resolvers saben que la zona secundaria está habilitada para DNSSEC. Como el DS es un registro «normal», también irá firmado y se irá subiendo en la cadena de confianza hasta la zona DNS raíz. Como curiosidad, como no hay nadie que valide este último registro, se realiza una Ceremonia pública en la que una serie de autoridades realizan la firma de las claves de la zona raíz.
Validación de la cadena de confianza para www.eurid.eu

A todo esto hay que añadir que conviene cambiar las claves ZSK y KSK cada cierto tiempo… con lo que ellos supone de transmisión hacia arriba de los cambios.

Como las KSK se usan para firmar las claves, suelen ser más robustas y hay que modificarlas menos a menudo. Para las ZSK se usan claves más débiles y estas sí se suelen rotar por ejemplo cada 2-3 meses.

Los registros DNS implicados

Ya hemos visto que se están creando bastantes registros nuevos para poder firmar y autenticar estas firmas:

  • RRSIG. Contiene la firma digital de cada resource record set. Esta firma se verifica con la clave pública almacenada en los registros DNSSKEY.
  • DNSKEY. Contiene la clave pública necesaria para validar las firmas de los registros RRSIG.
  • DS (Delegation Signer). Identifica una zona delegada. Hace referencia a un registro DNSKEY en la zona subdelegada. El registro DS se coloca en la zona padre junto con los registros NS delegados.

Adicionalmente aparecerán registros NSEC o NSEC3 (para denegar de forma explícita la existencia de un registro DNS) y también pueden aparecer registros CDNSKEY y CDS para zonas secundarias que soliciten actualizaciones de registros DS en la zona principal.

Referencias

  • Echad un ojo a la explicación de CloudFlare sobre cómo funciona DNSSEC (How DNSSEC works). De lo que he visto es la que mejor aclara qué es y cómo funciona DNSSEC.
  • Si queréis ver cómo es la Root Signing Ceremony, ICANN publica los vídeos en YouTube ;) No esperéis un fiestón con alcohol y stripers.
    Ólafur Guðmundsson (CloudFlare) estuvo invitado y explica el proceso en el artículo The DNSSEC Root Signing Ceremony.
  • No viene mal recordar el cifrado asimétrico, que es lo que nos permite autenticar a las partes en todo este jaleo:
  • Y puedes analizar el estado DNSSEC con el DNSSEC Debugger de Verisign Labs: