Cómo firmar digitalmente los correos enviados desde Yahoo o Gmail

Cada vez surgen nuevos y más sofisticados ataques de phishing o de suplantación de identidad mediante correos electrónicos fraudulentos que intentan engañar a los usuarios. El objetivo es que faciliten información confidencial, o que sigan un enlace e introduzcan sus credenciales en un portal falso, o que abran un fichero adjunto y se infecten, etc.

Por eso hoy en día es de vital importancia firmar digitalmente los mensajes, para dar al destinatario la posibilidad de comprobar su autenticidad e integridad. 


No voy a entrar en el detalle de qué es y cómo funciona la firma electrónica pues no es objeto de esta entrada que pretende ser principalmente práctica. Sólo recordaros que, a grandes rasgos, para firmar un mensaje se calcula su hash (message digest) y se firma con la clave privada del remitente. El resultado es la firma digital que se adjunta en el mensaje al enviarlo para que el destinatario pueda comprobarlo mediante su clave pública correspondiente, tal y como se muestra en la imagen de la derecha.

Si el destinatario no dispone de la clave pública del remitente este último puede también adjuntarlo en el mensaje, eliminando así la necesidad del intercambio manual previo o el acceso a una PKI, GAL o keyserver público, a diferencia que con el cifrado (asimétrico) que si necesitaría si o si y previamente la clave pública del destinatario. 

Es decir, tenemos la posibilidad de firmar digitalmente y de forma fácil nuestros mensajes para darle a nuestros contactos la posibilidad de comprobar quién ha enviado un correo somos realmente nosotros.

Entonces, ¿por qué no firmar nuestros correos si podemos hacerlo de manera gratuita, en unos sencillos pasos e incluso con las cuentas de correo de Yahoo o Gmail que usamos a diario? Veamos cómo hacerlo.


Obtención del certificado SSL

Primero necesitamos un certificado firmado por una CA pública y confiable y, a ser posible, gratis para uso personal ;) 


Esto nos lleva a Let's Encrypt o StartSSL. 

En esta entrada utilizaremos uno de clase 1 de StartSSL, así que accederemos a https://www.startssl.com/ y pincharemos en 'Start Now for Free SSL Certificate':


Luego pulsaremos el botón 'Sign up' para iniciar un enrollment que nos llevará poco más de 1 minuto de nuestro tiempo y con el que conseguiremos el certificado (S/MIME):

  
Después introducimos el país y nuestra dirección de correo. Llama la atención que hay algunos dominios baneados, aunque he podido generar un certificado para una cuenta de Anonbox.net sin problemas... 

Pero hagámoslo bien y para el ejemplo utilizamos la dirección de correo de Yahoo de Hackplayers:

A continuación recibiremos un código de verificación que tenemos que introducir en el formulario.


Automáticamente se nos instalará en el navegador el certificado generado y podréis autenticaros en la página con dicho certificado:





El último paso será hacer una copia del certificado en formato pkcs12 (.p12) para luego importarla en el cliente de correo. 

En Firefox tendremos que abrir la opciones e ir a la pestaña de Certificados en Avanzado y pulsar el botón "Hacer copia", eligiendo una contraseña de respaldo y el nombre del fichero deseado.


Configuración del cliente de correo

La mayoría de los servicios de webmail no permiten configurar certificados ni clasificar mensajes firmados, Gmail y Yahoo no son excepciones. Además si reciben un mensaje firmado suelen mostrar un email vacío con un adjunto smime.p7s (el cual contiene realmente el mensaje). Por ello necesitaremos un cliente de correo compatible con S/MIME o PGP, ambos estándares para criptografía de clave pública y firmado de correo electrónico. 

En mi caso y siguiendo con la "familia Mozilla" utilizo Thunderbird que puede configurarse perfectamente con cuentas de Yahoo y Gmail.

Sólo hay que ir a la configuración de la cuenta y en la parte de seguridad importar el certificado:


y seleccionarlo para el firmado digital:


Finalmente a la hora de redactar un mensaje podremos ver que el mensaje será firmado tal y como lo hemos configurado:


Y el receptor podrá comprobar en su cliente (compatible con S/MIME) que realmente el remitente es ser quién dice ser...


Próxima estación... cifrado, pero eso ya será otra historia...

4 comentarios :

  1. una consulta, que me dices de un par de extensiones que existen para chrome y firefox que permiten hacer el proceso de cifrado directamente en gmail desde navegador ? no seria una opcion valida en lugar del thunderbird

    ResponderEliminar
    Respuestas
    1. Muy buena puntualización, también son buena opción. Yo conozco mailvelope que está bastante chulo para PGP: http://www.hackplayers.com/2013/11/como-utilizar-cifrado-pgp-con-gmail-yahoo-y-otros.html

      ¿Cuales conoces/recomiendas más?

      Eliminar
  2. Y para Android anda muy bien k9mail + APG.

    ResponderEliminar
  3. Y para Android anda muy bien k9mail + APG.

    ResponderEliminar