PGP (Pretty Good Privacy)
La privacidad y la seguridad digital son conceptos esenciales en el mundo actual. Pretty Good Privacy (PGP) es una herramienta poderosa que permite proteger nuestras comunicaciones y datos frente a miradas indiscretas. A pesar de su nombre algo humilde («Privacidad Bastante Buena»), PGP es una de las soluciones más confiables y ampliamente utilizadas para garantizar la confidencialidad, integridad y autenticidad en entornos digitales.
¿Qué es PGP?
PGP es un sistema de cifrado que combina criptografía simétrica y asimétrica para proteger información. Fue desarrollado en 1991 por Phil Zimmermann como una herramienta de acceso libre para cifrar correos electrónicos y archivos. Desde entonces, ha evolucionado y está disponible como implementaciones comerciales y de código abierto (como GPG, GNU Privacy Guard).
Las principales funciones de PGP son:
- Confidencialidad: Cifrar mensajes para que solo el destinatario pueda leerlos.
- Autenticidad: Verificar la identidad del remitente mediante firmas digitales.
- Integridad: Garantizar que el mensaje no ha sido alterado durante la transmisión.
¿Cómo funciona PGP?
PGP utiliza un sistema de claves públicas y privadas basado en criptografía asimétrica. Cada usuario genera un par de claves:
- Clave pública: Se comparte con otros para que puedan enviar mensajes cifrados al propietario de la clave.
- Clave privada: Se mantiene en secreto y se utiliza para descifrar mensajes y crear firmas digitales.
Cuando envías un mensaje cifrado con PGP:
- El mensaje se cifra usando una clave simétrica generada de forma aleatoria.
- Esta clave simétrica se cifra con la clave pública del destinatario.
- El mensaje cifrado y la clave simétrica cifrada se envían al destinatario.
El destinatario utiliza su clave privada para descifrar la clave simétrica y luego emplea esta última para descifrar el mensaje original.
Casos Prácticos de Uso
- Protección de Correos Electrónicos: PGP es comúnmente utilizado para cifrar correos electrónicos, asegurando que solo el destinatario pueda leerlos.
- Autenticación de Archivos: Firmar documentos digitalmente garantiza que provienen de la fuente original y no han sido modificados.
- Intercambio Seguro de Archivos: Cifrar archivos sensibles antes de compartirlos en servicios de almacenamiento en la nube.
Cómo empezar con PGP
1. Instalar una Implementación de PGP
Para empezar, necesitarás una implementación de PGP como GPG (GNU Privacy Guard). Está disponible para la mayoría de los sistemas operativos:
- En Windows: Descarga e instala Gpg4win, que incluye Kleopatra, un gestor de claves intuitivo.
- En macOS: Descarga GPGTools, que incluye GPG Suite para integrarse con el sistema operativo.
- En Linux: Usa el gestor de paquetes de tu distribución, por ejemplo:
- En Debian/Ubuntu:
sudo apt install gnupg - En Fedora:
sudo dnf install gnupg - En Arch:
sudo pacman -S gnupg
- En Debian/Ubuntu:
2. Generar tu Par de Claves
Una vez instalado GPG, genera un par de claves:
gpg --full-generate-key
Selecciona el tipo de clave (generalmente RSA y RSA), longitud (4096 es una buena opción para mayor seguridad), y establece una fecha de expiración si lo deseas. Además, proporciona tu nombre y correo electrónico para asociarlos con la clave.
3. Exportar tu Clave Pública
Para compartir tu clave pública con otros:
gpg --export --armor "tu_correo@example.com" > clave-publica.asc
Puedes enviar el archivo generado a tus contactos o subirlo a un servidor de claves.
4. Cifrar y Descifrar Mensajes
Cifrar un mensaje para un destinatario:
echo "Este es un mensaje secreto" | gpg --encrypt --armor --recipient "correo_destinatario@example.com" > mensaje-cifrado.asc
Descifrar un mensaje recibido:
gpg --decrypt mensaje-cifrado.asc
5. Firmar y Verificar Mensajes
Firmar un mensaje:
echo "Mensaje importante" | gpg --clearsign > mensaje-firmado.asc
Verificar una firma:
gpg --verify mensaje-firmado.asc
¿Qué es y para qué sirve la fingerprint o huella digital?
La fingerprint o huella digital de una clave PGP es una representación corta y única de la clave pública completa. Se genera a partir de un algoritmo de hash que condensa la información de la clave en una cadena de caracteres alfanuméricos, facilitando su verificación y autenticidad. Debido a que las claves públicas pueden ser largas y difíciles de comparar manualmente, la fingerprint permite identificar de manera rápida y confiable si una clave es legítima.
En la práctica, la fingerprint se usa para verificar que una clave pública no ha sido alterada ni suplantada por un tercero. Al compartir solo la fingerprint en sitios web, redes sociales o firmas de correo, los usuarios pueden comparar esta cadena con la fingerprint de la clave pública que han descargado y asegurarse de que coinciden. Esto ayuda a prevenir ataques de intermediario (man-in-the-middle) y garantiza la seguridad en la comunicación cifrada.
Verificación de identidad:
Permite que otros confirmen que la clave pública que están usando realmente te pertenece y no ha sido modificada por un atacante (ataque man-in-the-middle).
Al compartir solo la fingerprint, la otra persona puede compararla con la fingerprint de la clave pública que descargó y asegurarse de que es la correcta.
Método rápido de referencia:
Las claves públicas pueden ser largas y difíciles de compartir, pero la fingerprint es corta y fácil de verificar.
Es útil cuando estás en una conversación o en una conferencia y quieres confirmar la clave con alguien de forma rápida.
Integridad en sitios web y redes sociales:
Puedes publicarla en tu web o redes sociales para que otros la usen para verificar tu clave pública antes de enviarte mensajes cifrados.
Así, evitas que alguien cree una clave falsa con tu nombre y trate de engañar a otros.
¿Debo poner la clave pública o solo la fingerprint en mi web?
Depende del propósito:
Si solo quieres que la gente verifique tu clave:
- Publica solo la fingerprint.
- Ejemplo en tu web:
Mi clave pública PGP:
Fingerprint: ABCD EFGH IJKL MNOP QRST UVWX YZ12 3456 7890 1234
Si quieres que te envíen mensajes cifrados fácilmente:
- Publica también la clave pública completa o un enlace para descargarla.
- Ejemplo en tu web:
Mi clave pública PGP:
Fingerprint: ABCD EFGH IJKL MNOP QRST UVWX YZ12 3456 7890 1234
Descarga mi clave pública aquí: [Enlace al archivo .asc]
Mejor práctica: Publicar ambas cosas (la fingerprint y la clave pública o un enlace a ella). Así, quien quiera comunicarse contigo de forma segura podrá verificar la autenticidad antes de usarla.
¿Qué es subir una clave pública a un servidor de claves?
Subir una clave pública a un servidor de claves significa almacenarla en una base de datos pública donde cualquier persona puede buscarla y descargarla para comunicarse contigo de forma segura mediante PGP. Los servidores de claves permiten que otros verifiquen tu identidad y cifren mensajes sin necesidad de que tú les envíes la clave manualmente.
Los servidores más usados son:
- keys.openpgp.org (Recomendado, ya que requiere verificación por correo y evita claves falsas).
- pgp.mit.edu (Histórico, pero tiene problemas con la eliminación de claves).
- keyserver.ubuntu.com (Popular y ampliamente usado en sistemas Linux).
Cómo subir tu clave pública a un servidor de claves
Desde la línea de comandos (Mac/Linux)
1. Busca el ID de tu clave pública
Abre la terminal y escribe:
gpg --list-keys
Verás una salida similar a esta:
pub rsa4096 2024-01-24 [SC]
1234ABCD5678EFGH9012IJKL3456MNOP7890QRST
uid [ultimate] Tu Nombre <tu@email.com>
El ID de tu clave es la secuencia larga (ejemplo: 1234ABCD5678EFGH9012IJKL3456MNOP7890QRST), o puedes usar los últimos 8 caracteres (7890QRST).
2. Sube la clave pública a un servidor
Para subir la clave a keys.openpgp.org (recomendado):
gpg --keyserver keys.openpgp.org --send-keys 7890QRST
Para subirla a keyserver.ubuntu.com:
gpg --keyserver keyserver.ubuntu.com --send-keys 7890QRST
3️⃣ (Opcional) Verifica que se ha subido correctamente
Puedes buscar tu clave en el servidor:
gpg --keyserver keys.openpgp.org --search-keys tu@email.com
Desde Kleopatra (Interfaz gráfica en macOS/Linux/Windows)
- Abre Kleopatra y asegúrate de que tu clave pública está en la lista.
- Selecciona tu clave y haz clic en Exportar a un servidor de claves.
- Elige el servidor (te recomiendo
keys.openpgp.org). - Envía la clave y sigue los pasos de verificación por correo si el servidor lo requiere.
Cosas a tener en cuenta
- No puedes eliminar una clave una vez subida (salvo en
keys.openpgp.org, donde puedes revocarla). - Si subes una clave incorrecta, puedes subir una nueva con el mismo email y una fecha más reciente para que la gente use la versión más actual.
- Siempre sube solo la clave pública, nunca la privada.
¿Qué es revocar una clave?
Revocar una clave PGP significa marcarla como inválida para que otros sepan que ya no debe usarse. Esto es útil si perdiste el acceso a tu clave privada, sospechas que fue comprometida o simplemente quieres dejar de usarla. Una vez revocada, la clave sigue existiendo, pero otros usuarios recibirán un aviso de que ya no es confiable.
¿Cómo revocar una clave?
1. Generar un certificado de revocación (Recomendado desde el inicio)
Si aún tienes acceso a tu clave privada, puedes generar un certificado de revocación de inmediato y guardarlo en un lugar seguro para usarlo en caso de emergencia:
gpg --output revocacion.asc --gen-revoke TU_KEY_ID
Esto crea un archivo revocacion.asc que puedes usar más adelante si necesitas revocar tu clave.
2. Aplicar la revocación
Si decides revocar tu clave, importa el certificado de revocación con:
gpg --import revocacion.asc
Luego, sube la clave revocada al servidor para que todos vean el cambio:
gpg --keyserver keys.openpgp.org --send-keys TU_KEY_ID
3. Revocar manualmente sin un certificado de revocación
Si tienes acceso a la clave privada, puedes revocarla sin necesidad de un certificado:
gpg --edit-key TU_KEY_ID
Luego, escribe el comando:
revkey
Confirma la revocación y guarda los cambios con:
save
Por último, vuelve a subir la clave al servidor para que la revocación sea pública.
Buenas Prácticas de Seguridad
- Protege tu clave privada: Usa contraseñas fuertes y almacena la clave en un lugar seguro.
- Revoca claves comprometidas: Si sospechas que tu clave privada ha sido robada, crea un certificado de revocación y distribúyelo.
- Usa un gestor de claves: Herramientas como Kleopatra (Windows y Linux), GPG Keychain (macOS), o Seahorse (Linux) facilitan la gestión de claves y el uso de PGP.
PGP es una herramienta fundamental para quienes valoran la privacidad y la seguridad en el mundo digital. Aunque su curva de aprendizaje puede ser intimidante al principio, sus beneficios en términos de protección de datos y comunicación segura son incalculables. Dedicar tiempo a entender y usar PGP no solo protege tu información, sino que también refuerza el principio básico de que la privacidad es un derecho humano esencial.