Una de las tareas que debemos tener en cuenta cuando trabajamos con sistemas informáticos y los queremos poner en producción es pensar como vamos a cifrar los ficheros, donde los vamos a dejar, etc…
Una manera común es usar algo como un Vault, que no deja de ser un servidor de tipo clave valor al que le haces peticiones GET dada una clave para que te devuelva un valor cifrado mediante el algoritmo de conveniencia que hayamos elegido. Una vez que está en el destinatario, se descifra.
Para mí, tiene el inconveniente de necesitar algo más de infraestructuras, hablar con personas, pedirles que te la creen, te la validen. Puede ser un dolor de muelas y puede tardar días, por lo que usar git-secret, que no deja de ser una manera de cifrar ficheros y subir los ficheros cifrados a nuestro repo privado en GitHub, me parece buena idea. Estas son instrucciones sobre como operar de manera básica, es decir, instalar el plugin, inicializar el repo, añadir ficheros para ser cifrados, cifrarlos y una vez cifrado, subir el fichero cifrado.
# Inicializo el repo
/Users/aironman/gitProjects/alonsoir.github.io> git secret init 13:11 aironman@MacBook-Pro-de-Alonso
git-secret: init created: '/Users/aironman/gitProjects/alonsoir.github.io/.gitsecret/'
# Añado el fichero que quiero cifrar.
/Users/aironman/gitProjects/alonsoir.github.io> git secret add dogs.txt 13:11 aironman@MacBook-Pro-de-Alonso
git-secret: abort: no public keys for users found. run 'git secret tell email@address'.
# Me dice que tengo que configurar el correo electrónico que está asociado al par de claves público/privadas.
█▓▒░aironman@MacBook-Pro-de-Alonso░▒▓██▓▒░ Fri May 21 01:11:57P
/Users/aironman/gitProjects/alonsoir.github.io> git secret tell alonsoir@gmail.com 13:11 aironman@MacBook-Pro-de-Alonso
git-secret: warning: at least one key for email(s) is revoked, expired, or otherwise invalid: gpgmail-devel@lists.gpgmail.org
gpgtools-org@lists.gpgtools.org
gpg: keybox '/Users/aironman/gitProjects/alonsoir.github.io/.gitsecret/keys/pubring.kbx' created
gpg: /Users/aironman/gitProjects/alonsoir.github.io/.gitsecret/keys/trustdb.gpg: trustdb created
git-secret: done. alonsoir@gmail.com added as user(s) who know the secret.
# Ahora SI me deja añadir el fichero que quiero cifrar.
█▓▒░aironman@MacBook-Pro-de-Alonso░▒▓██▓▒░ Fri May 21 01:12:07P
/Users/aironman/gitProjects/alonsoir.github.io> git secret add dogs.txt 13:12 aironman@MacBook-Pro-de-Alonso
git-secret: these files are not in .gitignore: dogs.txt
git-secret: auto adding them to .gitignore
git-secret: 1 item(s) added.
█▓▒░aironman@MacBook-Pro-de-Alonso░▒▓██▓▒░ Fri May 21 01:12:13P
/Users/aironman/gitProjects/alonsoir.github.io> git secret hide 13:12 aironman@MacBook-Pro-de-Alonso
git-secret: done. 1 of 1 files are hidden.
# Una vez el fichero está oculto, puedo subir el fichero cifrado. dogs.txt.secret
█▓▒░aironman@MacBook-Pro-de-Alonso░▒▓██▓▒░ Fri May 21 01:16:05P
/Users/aironman/gitProjects/alonsoir.github.io> git add dogs.txt.secret 13:16 aironman@MacBook-Pro-de-Alonso
█▓▒░aironman@MacBook-Pro-de-Alonso░▒▓██▓▒░ Fri May 21 01:16:20P
/Users/aironman/gitProjects/alonsoir.github.io> git commit -m dogs.txt.secret 13:16 aironman@MacBook-Pro-de-Alonso
[master 2c2b59e] dogs.txt.secret
1 file changed, 1 insertion(+)
create mode 100644 dogs.txt.secret
█▓▒░aironman@MacBook-Pro-de-Alonso░▒▓██▓▒░ Fri May 21 01:16:26P
/Users/aironman/gitProjects/alonsoir.github.io> git push 13:16 aironman@MacBook-Pro-de-Alonso
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 16 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 491 bytes | 491.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/alonsoir/alonsoir.github.io.git
f4cca73..2c2b59e master -> master
# Ahora, para descifrar los ficheros, una vez los tenemos bajados...
█▓▒░aironman@MacBook-Pro-de-Alonso░▒▓██▓▒░ Fri May 21 01:12:23P
/Users/aironman/gitProjects/alonsoir.github.io> git secret reveal 13:12 aironman@MacBook-Pro-de-Alonso
File '/Users/aironman/gitProjects/alonsoir.github.io/dogs.txt' exists. Overwrite? (y/N) y
git-secret: done. 1 of 1 files are revealed.
█▓▒░aironman@MacBook-Pro-de-Alonso░▒▓██▓▒░ Fri May 21 01:12:41P
/Users/aironman/gitProjects/alonsoir.github.io> git secret cat dogs.txt 13:12 aironman@MacBook-Pro-de-Alonso
super secret plan
# Eso es todo, super fácil. Muestro para acabar los comandos disponibles:
/Users/aironman/gitProjects/alonsoir.github.io> git secret status 13:13 aironman@MacBook-Pro-de-Alonso
git-secret: abort: command status not found.
usage: git secret [--version] [command] [command-options]
options:
--version - prints the version number
commands:
see 'git secret [command] -h' for more info about commands and their options
add [file.txt] - adds file to be hidden to the list
cat [file.txt] - decrypts and prints contents of the file
changes [file.txt.secret] - indicates if the file changed since last commit
clean - deletes all encrypted files
hide - encrypts (or re-encrypts) the files to be hidden
init - initializes the git-secret repository
killperson [emails] - deletes a person's public key from the keyring
list - prints all the added files
remove [files] - removes files from the list of hidden files
reveal - decrypts all hidden files
tell [email] - imports a person's public key into the keyring
usage - prints this message
whoknows - prints list of authorized email addresses
# Podemos listar los ficheros que tenemos en la lista de cifrados...
/Users/aironman/gitProjects/alonsoir.github.io> git secret list 13:13 aironman@MacBook-Pro-de-Alonso
dogs.txt
█▓▒░aironman@MacBook-Pro-de-Alonso░▒▓██▓▒░ Fri May 21 01:14:17P
/Users/aironman/gitProjects/alonsoir.github.io> git secret changes 13:14 aironman@MacBook-Pro-de-Alonso
git-secret: changes in /Users/aironman/gitProjects/alonsoir.github.io/dogs.txt:
# Muestro mi carpeta, que se vea el fichero en plano y el cifrado.
█▓▒░aironman@MacBook-Pro-de-Alonso░▒▓██▓▒░ Fri May 21 01:16:30P
/Users/aironman/gitProjects/alonsoir.github.io> ls -lta 13:16 aironman@MacBook-Pro-de-Alonso
total 88
drwxr-xr-x 15 aironman staff 480 May 21 13:16 .git
-rw-r--r-- 1 aironman staff 193 May 21 13:15 dogs.txt.secret
drwxr-xr-x 17 aironman staff 544 May 21 13:15 .
-rw-r--r-- 1 aironman staff 18 May 21 13:12 dogs.txt
-rw------- 1 aironman staff 84 May 21 13:12 .gitignore
drwxr-xr-x 4 aironman staff 128 May 21 13:11 .gitsecret
drwxr-xr-x 7 aironman staff 224 May 20 11:09 certs
-rw-r--r-- 1 aironman staff 8196 May 20 11:09 .DS_Store
-rw-r--r-- 1 aironman staff 2326 May 18 16:38 .zshrc
drwxr-xr-x 21 aironman staff 672 May 13 13:39 ..
-rw-r--r-- 1 aironman staff 2737 May 13 13:30 README.md
drwxr-xr-x 37 aironman staff 1184 May 4 11:38 Devop
drwxr-xr-x 25 aironman staff 800 Apr 5 11:28 CV
-rw-r--r--@ 1 aironman staff 11191 Mar 31 11:42 TO-DO.md
drwxr-xr-x 12 aironman staff 384 Mar 31 11:37 proyectos varios
drwxr-xr-x 21 aironman staff 672 Mar 31 11:37 BigData stuff
drwxr-xr-x 15 aironman staff 480 Mar 31 11:35 Microservices
# Hacer un reveal descifra los ficheros, aunque parece que también lo baja...
█▓▒░aironman@MacBook-Pro-de-Alonso░▒▓██▓▒░ Fri May 21 01:17:30P
/Users/aironman/gitProjects/alonsoir.github.io> git secret reveal 13:17 aironman@MacBook-Pro-de-Alonso
File '/Users/aironman/gitProjects/alonsoir.github.io/dogs.txt' exists. Overwrite? (y/N) y
git-secret: done. 1 of 1 files are revealed.
█▓▒░aironman@MacBook-Pro-de-Alonso░▒▓██▓▒░ Fri May 21 01:17:41P
# Muestro el contenido del fichero cifrado...
/Users/aironman/gitProjects/alonsoir.github.io> git secret cat dogs.txt 13:17 aironman@MacBook-Pro-de-Alonso
super secret plan
█▓▒░aironman@MacBook-Pro-de-Alonso░▒▓██▓▒░ Fri May 21 01:17:50P