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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s