Objetivo
En este artículo aprenderás a insertar un formulario seguro para tu web en WordPress. Este formulario puede ser muy interesante para cuando tienes que recibir información sensible de algún tipo, pueden ser datos personales, de pago, o por ejemplo, contraseñas de clientes.
Motivación
En Charrúa recibo datos de muchos tipos, entre ellos datos sensibles como contraseñas de servicios de clientes.
El inconveniente es que la mayoría de clientes comparte esta información de forma insegura. La envían por correo electrónico, WhatsApp o cualquier sistema de mensajería instantánea. Me han tocado casos de clientes donde me han enviado fotos de tarjetas de crédito.
El problema
¿Te has puesto a pensar si alguien tiene acceso a tus dispositivos? O quizá ¿a tu correo electrónico? ¿Qué sucede entonces con toda esa información transmitida de manera insegura?
Spoiler, si alguien tiene acceso a tus datos o dispositivos también tendrá acceso a los datos de tus clientes.
Una posible solución es enviar la información cifrada para que solo una persona o entidad pueda acceder. Para ello utilizaremos GPG. Ya no interesa el medio por el que sea compartida ya que la información no servirá de nada a quien la intercepte o tenga acceso a tus dispositivos.
¿NECESITAS AYUDA CON TU WEB?
Conceptos generales de PGP/GPG
GNU Privacy Guard (GnuPG o GPG) es una herramienta de cifrado y firmas digitales desarrollado por Werner Koch, que viene a ser un reemplazo del PGP (Pretty Good Privacy) pero con la principal diferencia que es software libre licenciado bajo la GPL.
GPG cifra los mensajes usando pares de claves individuales asimétricas.
https://es.wikipedia.org/wiki/GNU_Privacy_Guard
La idea tras PGP/GPG es que cada usuario tenga un par de claves llamadas clave privada y clave pública. La clave privada es un secreto que el usuario debe mantener seguro y no compartirlo con nadie. En cambio la clave pública es lo que compartiremos con otros usuarios para poder enviarnos mensajes.
Ejemplo de uso GPG
Imaginemos dos usuarios, Alicia y Roberto quieren intercambiar mensajes de forma privada y segura. Para ello comparten sus claves públicas.
Cuando Alicia le quiere enviar un mensaje a Roberto lo que hace es:
- Escribe el mensaje en cualquier editor de texto
- Salva el archivo, supongamos mensaje-roberto.txt
- Cifra el archivo con la clave pública de Roberto utilizando GPG
- Envía el archivo cifrado a Roberto
Para que visualices el tipo de mensaje cifrado que enviará Alicia a Roberto será:
-----BEGIN PGP MESSAGE-----
wcFMA4V0o2NMWXOTAQ//eke9+EGaLqKx3Es91EtE8hj+KDKgKFz1K5fokroN
z4qqiIGL09LYfxrjcyYEugJJ4tnEfC5mRxv1lQmRgL2ojo7pvZysQIcvCCDB
+P2KxvRwab27cnXEhdZYDfcakXF0UWld3dzGip2LB5mJTLDIKbvQbWbxhhMs
M7fNkluuO+MNK1PaWJhDf6tByyZs+0H8VPMUpVz0kQ3UwVcO+o0gJRn2uKCO
sBPDK7OskxXwtlfXwv1WsKgD/Swor7hhQ4Q6gS3dB1Frox5XfN86cUKKSr7o
txJijDtUOQWFBNiGFLUw1fuq48tBT3P0d61Ijw+p+Zi6qleIOnVQ08xir2tD
OYUBjIdA4hNP...
-----END PGP MESSAGE-----
Para que Roberto pueda leer el mensaje lo debe descifrar con su clave privada. De esta manera obtiene acceso al contenido cifrado.
Transmitiendo datos cifrados en WordPress
Hemos visto algunos conceptos generales de cómo transmitir datos seguros cifrados usando GPG entre usuarios cuando conocen su clave pública. Pero ¿cómo facilitamos esto al usuario alejado de herramientas de cifrado y firmas digitales?
Una respuesta muy WordPress es «usando un plugin».
Por ello, he creado un plugin que te facilita todo esto, el cual inserta un formulario seguro en tu web a través de un shortcode.
La idea es que puedas insertar ese formulario en alguna página de tu web y cuando necesites recibir información sensible, le envíes el enlace al usuario o cliente.
A grandes rasgos, el formulario cifra la información con tu clave pública para que solo tú la puedas descifrar. Simple pero potente.
Creando el par de claves GPG
Lo primero será crear nuestro par de claves GPG.
Existen varias maneras, algunas extremadamente seguras como hacerlo en entornos aislados de Internet y otras menos seguras como hacerlo en tu ordenador.
Todo dependerá para qué quieras utilizar tus claves GPG, si son para firmar o cifrar mensajes muy importantes lo recomendable es hacerlo en un entorno aislado y que nunca toque internet. En definitiva la clave privada es un archivo, por lo tanto si lo mantienes en un entorno aislado o de sólo lectura, te aseguras de que nadie pueda acceder a tu clave.
Por la facilidad de este artículo vamos a utilizar una forma simple, ya que con utilizar este sistema ya estamos aumentando mucho la seguridad de nuestros mensajes con contenido sensible.
Software para generar y gestionar tus claves GPG:
- GNU Privacy Guard (línea de comandos Linux, OS X, Windows)
- GPG Suite (OS X)
- Gpg4win (Windows)
Veamos un ejemplo con GPG Suite para Mac OS X. Lo primero será descargar el software desde su página web. Una vez lo tengas instalado abriremos la app GPG Keychain.
Lo primero que haremos será hacer click en el icono «Nueva» en la barra superior. Esto abrirá una ventana para crear el par nuevo de claves.
Completa los siguientes datos:
- El nombre de la persona asociada a la clave
- Correo electrónico asociado
- Contraseña (se te pedirá en el futuro para cifrar o descifrar mensajes)
- Tipo de clave: RSA y RSA
- Longitud: 4096
- Importante: desmarcamos la última opción para que la clave no tenga expiración
Continuando con la creación del par de claves (pública y privada) se te mostrará una pantalla de confirmación por si quieres subir la clave pública a un servidor de claves, marcaremos la opción «No, gracias» ya que es una clave para uso privado y específico.
El paso siguiente será seleccionar la nueva clave creada y exportarla en nuestro ordenador.
Durante la exportación debes seleccionar la opción de «incluir la clave secreta (privada) en el fichero de exportación«. Esto exportará ambas claves (pública y privada) a un mismo archivo que utilizaremos más adelante.
Al estar exportando la clave privada, te pedirá el password que has puesto al crear la clave.
Es importante que luego hagas una copia del archivo exportado y la almacenes en algún dispositivo externo a tu ordenador. Esto es necesario ya que si no cuentas algún día con tu ordenador no podrás descifrar los mensajes que tengas cifrados. Mejor prevenir que curar.
El paso siguiente será abrir el archivo exportado. Al ser .asc tenemos dos opciones, la primera es renombrarlo a .txt. La segunda es abrirlo con click derecho y seleccionar «Abrir con > Otra app…» y seleccionar la aplicación TextEdit (o cualquier editor de texto).
Si me permites darte un consejo, ve por la primera opción de renombrado a .txt que es la más simple.
Verifica que tenga la siguiente estructura, lo que buscamos es que contenga los dos bloques, PRIVATE KEY BLOCK y PUBLIC KEY BLOCK.
El bloque de PUBLIC KEY lo vas a utilizar luego cuando instalemos el plugin en WordPress.
-----BEGIN PGP PRIVATE KEY BLOCK-----
lQdGBGQQc/EBEADGIKAPm5bp0EQSwMjWAHWk6/bPk7FjIajMSglEnfj2h5/iaO4x
md/qQdRPFWHKNHPec52Cp9QgoWuJ/U+R+ppJ71flF8S3Hhzhaen4NhUBm/LVj5qR
YzBzmEO9HbDXsFJZcL62fSGols9XaR21X0df46+NudT9y3vZMuRjk/tFRyUpvgBT
J4tGXD0HK2Y9TLnm9B6GI723Scn5HkZVr6cPkLEkLpmS/Gb3DMZk7TmP8aAnb64u
KSqqQDjuog2q4C9SpPzW0...
-----END PGP PRIVATE KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGQQc/EBEADGIKAPm5bp0EQSwMjWAHWk6/bPk7FjIajMSglEnfj2h5/iaO4x
md/qQdRPFWHKNHPec52Cp9QgoWuJ/U+R+ppJ71flF8S3Hhzhaen4NhUBm/LVj5qR
YzBzmEO9HbDXsFJZcL62fSGols9XaR21X0df46+NudT9y3vZMuRjk/tFRyUpvgBT
J4tGXD0HK2Y9TLnm9B6GI723Scn5HkZVr6cPkLEkLpmS/Gb3DMZk7TmP8aAnb64u
KSqqQDjuog2q4C9SpPzW0/...
-----END PGP PUBLIC KEY BLOCK-----
Instalación del plugin en WordPress
Puedes instalar el plugin desde el backend de WordPress desde el menú «Plugins > Añadir nuevo» y buscar «Secure Encrypted Form» o descargarlo y luego subirlo a la carpeta de plugins de tu web.
Una vez lo tengas instalado pasaremos a la configuración.
Configuración del plugin
En la página de ajustes del plugin te encontrarás inicialmente con dos opciones que debes completar:
- Correo electrónico de destino: debes completarlo con el correo al que se enviarán los mensajes.
- Clave pública OpenPGP: debes completarlo con el bloque de tu clave pública (PUBLIC KEY) que has exportado previamente.
Ejemplo de lo que debes poner en el campo Clave pública OpenPGP. Tienes que poner todo, incluye la apertura y cierre del bloque tal como se muestra a continuación.
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGQQc/EBEADGIKAPm5bp0EQSwMjWAHWk6/bPk7FjIajMSglEnfj2h5/iaO4x
md/qQdRPFWHKNHPec52Cp9QgoWuJ/U+R+ppJ71flF8S3Hhzhaen4NhUBm/LVj5qR
YzBzmEO9HbDXsFJZcL62fSGols9XaR21X0df46+NudT9y3vZMuRjk/tFRyUpvgBT
J4tGXD0HK2Y9TLnm9B6GI723Scn5HkZVr6cPkLEkLpmS/Gb3DMZk7TmP8aAnb64u
KSqqQDjuog2q4C9SpPzW0/...
-----END PGP PUBLIC KEY BLOCK-----
Lo que sucederá tras bastidores es que el mensaje que te envíen desde el formulario será cifrado con tu clave pública, por lo tanto sólo lo podrás abrir tú siempre que tengas la clave privada.
El paso siguiente será guardar las opciones que hemos completado.
Envía un correo electrónico de prueba
Siguiendo en la página de opciones del plugin y luego de guardar los ajustes anteriores, vemos una sección «¿Estás teniendo problemas?» con un botón para realizar una prueba de envío.
Si el envío es correcto verás una notificación en verde de que el correo de prueba se ha enviado.
Si existe algún problema o error se te indicará allí mismo en color rojo.
Confirma la recepción del correo de prueba
Si todo sale bien y ves la notificación verde de la imagen anterior te debería haber llegado un correo electrónico similar al que muestra la imagen. Con esto confirmarás que el correo de prueba ha llegado correctamente.
En el correo electrónico viene un archivo adjunto que termina en .gpg. Ese es el archivo con el mensaje cifrado.
Descifra el archivo adjunto cifrado
Para descifrar el mensaje primero debes descargarlo en tu ordenador. Si utilizas Mac OS X y tienes instalado GPG Suite la metodología es muy simple.
Cuando instalas GPG Suite, también se instalan una serie de servicios (o accesos directos) para ayudarte a cifrar o descifrar mensajes.
Haz clic derecho sobre el archivo cifrado y selecciona «Servicios > OpenPGP: Decrypt File«.
Una vez hayas hecho click en «Decrypt File» se te pedirá la contraseña que has puesto al crear la clave GPG y se creará un archivo .txt en la misma carpeta. Allí encontrarás el contenido descifrado, en este caso al ser un mensaje de prueba el contenido será: «This is a test message».
Posibles problemas o errores
El error más común es que tu servidor tenga la función mail() de PHP desactivada o que el correo te llegue a «No deseado» o «Spam».
Otro problema puede ser que no hayas completado correctamente tu dirección de correo o tu clave pública.
En cualquier caso el plugin te dará feedback si encuentra alguno de esos errores. Tienes también el registro de depuración donde puedes buscar posibles errores.
Si tienes algún problema distinto o no sabes cómo seguir adelante, puedes publicar un ticket en los foros de soporte. Recuerda que este paquete es de código abierto y gratuito.
Inserta el formulario en tu web
Para insertar el formulario seguro en tu web debes agregarlo mediante el shortcode secure-encrypted-form.
Si usas Gutenberg puedes agregar un bloque de Shortcode y agregar el contenido dentro.
Cuando alguien visite la página desde el frontend, verá el formulario completo y listo para utilizarlo.
En este punto podrías completar el formulario en tu web y probar que tal funciona.
Ideas finales
Recuerda que esta no es una solución para utilizar en todos tus formularios de contacto de tu web. Ya que debes invertir tiempo en descifrar los mensajes por lo que no es una solución cómoda sino bastante específica.
Está orientada para la recepción de datos sensibles. Personalmente lo uso con todos mis clientes cuando necesitan enviarme información de carácter privado.
Conclusión
Hemos aprendido juntos varias cosas en este artículo, un poco de criptografía de claves asimétricas con PGP/GPG y cómo integrar un formulario seguro cifrado en tu web.
Recuerda que GPG es una herramienta increíble para firmar y cifrar mensajes de forma segura, si quieres te animo a que me envíes un mensaje cifrado con mi clave pública y sólo yo lo podré abrir.
Consejo para perfiles técnicos con ganas de mancharse las manos: si quieres crear tus claves GPG con seguridad alta puedes usar una llave de hardware como una Yubikey y seguir esta guía https://github.com/drduh/YubiKey-Guide
🖖 Si este artículo te ha sido útil comparte para ayudar a otros.
HAGAMOS DESPEGAR TU NEGOCIO ONLINE 🚀
Te ayudo a potenciar tu página web o tienda online con estos servicios.