Configuración e uso de GPG en linux
Introducción
Neste artigo vou amosar como crear claves GPG para autenticarnos en distintos servizos. De xeito que poidamos por exemplo firmar os nosos commits nun repositorio, de forma que apareza a verificación da nosa autoría e non simplemente alguén co noso nome de usuario.
Configurando GPG en linux
Instalar GnuGP
O primer paso será instalar GnuGP, o cal o farei ca orde sudo pacman -S screen
. Nunha distro basada en Debian, faríamolo con sudo apt install gnupg
.
Unha vez o temos instalado imos xerar as claves. Neste caso vanse xerar dúas claves. Unha privada e unha pública. A clave privada será a que non imos compartillar con ninguén, xa que é a que se vai usar para descifrar os nosos ficheiros e contribucións. A clave pública será a que configuraremos en sitios onde queiramos autenticarnos. Como por exemplo onde está actualmente este blog, en CodeBerg.org. Tamén poderemos compartillar esta clave pública con coñecidos, de xeito que poidan por exemplo configuralo nos seus clientes de correo. Así poderán cifrar os mails que nos envíen para ocultar o contido a ollos curiosos, e tan só nós ca nosa clave privada poderemos descifrar o contido.
Utilización
Xerar as claves
Para xerar as nosas claves executaremos o comando gpg --gen-key
. Isto xa é independente da distro que estemos a utilizar. Ao facer isto vainos saltar un prompt que os pedirá un nome, para a nosa identidade, e un email.
NOTA: no momento de escribir este artigo, había un pequeno bug en arch. Ao introducir estes datos pídenos que editemos, aceptemos ou cancelemos. Dándonos como opcións as teclas O
e Q
, pero estas non funcionan. No seu lugar pulsaremos A
para aceptar ou S
para cancelar.
Unha vez aceptados os cambios, vainos pedir unha frase secreta e que a repitamos.
É importante gardar esta clave nalgures e non perdela. Xa que nos fará falla para poer descifrar as mensaxes ou arquivos cifrados ca clave pública. Ou mesmo para revogar a clave no caso de que fose comprometida. Mesmo sendo claves seguras, tampouco está de mais mudalas cada certo tempo.
Na nosa home estarán as claves, na carpeta .gnupg
Revogar as claves
Se por algún motivo quixésemos revogar a nosa clave, o que teremos que facer será executar o seguinte comando gpg --output revoke.asc --gen-revoke uid
mudando o uid pola nosa identidade, que será o nome ou o email que indicamos ao xerar a clave.
Compartillar mensaxes ou arquivos
Para envíar información cifrada a outra xente, ou que no-la envíen a nós, será preciso ter a clave pública que vai cifrar os arquivos. Se queremos que alguén nos envíe a nós información cifrada a outra persoa precisará da nosa clave pública e para enviarlla nós a ela precisaremos a súa. Así pois é preciso exportar a nosa clave pública.
Para exportar o arquivo de xeito que poidamos compartilo farémolo co seguinte comando gpg --armor --export uuid > key.asc
. Outra forma de facelo, para exportalo en ASCII, é con gpg --armor --output key.txt --export uid
. En ambos casos sustituíndo o uid polo nome ou o email que lle demos á conta cando a creamos.
Con isto poderíamos enviar o ficheiro a quen queiramos que nos envíe contidos cifrados, pero non é demasiado cómodo ter que andar a enviar a clave a cadaquen.
Exportando a clave a un servidor
Na rede hai servidores aos que poderemos subir a nosa clave pública, de xeito que alguén que precise mandarnos algo oculto poderá coller a clave dende aí. Por exemplo podemos subir a nosa clave ao servidor do MIT. Isto permitiranos sincronizar a clave con outros repositorios, sen que ao actualizala teñamos que andar a movela a man por cada sitio.
Para isto precisamos atopar a nosa clave con gpg --fingerprint
. Isto vainos sacar a información da clave, da que precisaremos quedar cos oito últimos díxitos en formato hexadecimal. Por exemplo A234 0CF3.
Agora podemos sincronizala co server do MIT facendo o seguinte gpg --keyserver pgp.mit.edu --send-key A2340CF3
. Lembra mudar estes últimos oito carácteres polos teus.
Este comando vai rexistrar a nosa clave no server do MIT, dende onde outra xente poderá importala para comunicarse con nós.
Isto é seguro, xa que o que estamos a compartillar é a nosa clave pública, que tan só serve para cifrar os contidos, non para desvelalos. Así que alguén que descargue a nosa clave, o único que vai poder facer será cifrar cousas que tan só nós poderemos descifrar ca nosa clave privada. De aí que a clave privada non se comparta con ninguén.
Cifrando contidos
Unha vez temos a clave pública, a nosa ou a de outra persoa, se quixésemos cifrar un arquivo antes de envíalo. O que teríamos que facer é executar o comando apropiado, neste caso gpg --encrypt --recipient 'email@destinatario.com' --output arquivo_cifrado.txt.enc arquivo_orixinal.txt
. Se che é mais cómodo, tamén podes mudar o email polo ID.
Agora para que o persoa que reciba o arquivo poida volver ao orixinal correrá gpg --decrypt --output arquivo_de_saída.txt arquivo_cifrado.txt.enc
. Unha vez pulsemos ENTER, vai pedir o contrasinal para acceder á clave privada.
NOTA: algo curioso que me atopei facendo probas foi que se suprantamos ao usuario que ten as claves, con su nome_usuario
(isto vainos loguear no terminal coma se fósemos o usuario indicado), non imos ter acceso as claves. Por defecto ao tentar descifrar un ficheiro daranos un erro de permiso denegado. Sen embargo ao listar a claves estas aparecerán no almacén. Pensei que sería un erro, pero tras loguearme como a conta do usuario puiden descifrar o arquivo sen inconvintes, tras por o contrasinal.
Notas finais
Con isto teremos as comunicacións securizadas. O incómodo disto é que para que poidamos comunicarnos con outra persoa, deberíamos ter a sua clave pública para cifrar o que lle queiramos enviar e viceversa. Pero é un inconvinte que no caso de información sensible paga a pena ter.
Seguinte artigo
No seguinte artigo veremos como podemos configurar git para poder firmar os nosos commits e como subir a clave pública a un repo, neste caso codeberg.org, para que alí as contribucións aparezan como verificadas.
Artigos Relacionados:
- Instalar Fedora con BTRFS, cifrado e Snapshots activos
- AWK
- Mudar as DNS en Fedora
- Distrobox
- Instalar Fedora en VirtualBox
- Eliminar liñas nun ficheiro con sed
- Cómo crear un live USB dende a terminal
- Engadir tarefas a Systemd
- Copiar a saída do terminal ao portapapeis
- Configurar acceso SFTP a un directorio
- Inicio de sesión automático en Alpine linux
- Crear un usuario con permisos restrinxidos para backups
- error: gpg failed to sign the data
- Xestionar varias claves ssh
- Cómo instalar Traefik con docker
- Configurar sshfs para acceder al sistema de ficheros de forma segura
- Securizar sudo no noso sistema
- Cómo instalar Raspberry OS
- Instalando docker en modo rootless en Debian
- error: gpg failed to sign the data
- Firmando commits con Gpg e integración con Codeberg