Rclone: Cifrado de ficheros en la nube

6 minutos de lectura

En un capitulo anterior vimos como utilizar rclone para realizar copias de seguridad en la nube, aunque también lo podemos usar para realizar copias entre diferentes ordenadores, ademas ofrece la posibilidad de cifrar esos datos.

Aunque haya archivos que puedan estar en la nube que no necesites que estén cifrados, es posible que necesites que cierta información este a salvo de miradas indiscretas ;-)

Para poder usar el cifrado en la nube primero debemos crear una conexión cifrada, por defecto rclone crea una conexión directa

Creando almacenamiento remoto cifrado

Debemos de iniciar el asistente de configuración de Rclone

1rclone config

Seleccionamos n para crear un nuevo sitio remoto y le damos un nombre, en el ejemplo lo he llamado cifrado

 1Current remotes:
 2
 3Name                 Type
 4====                 ====
 5hubic                hubic
 6
 7e) Edit existing remote
 8n) New remote
 9d) Delete remote
10r) Rename remote
11c) Copy remote
12s) Set configuration password
13q) Quit config
14e/n/d/r/c/s/q> n
15name> cifrado

Para el tipo de almacenamiento, seleccionamos 8 para indicar que se trata de un almacenamiento cifrado.

 1Type of storage to configure.
 2Choose a number from below, or type in your own value
 3 1 / Alias for a existing remote
 4   \ "alias"
 5 2 / Amazon Drive
 6   \ "amazon cloud drive"
 7 3 / Amazon S3 (also Dreamhost, Ceph, Minio, IBM COS)
 8   \ "s3"
 9 4 / Backblaze B2
10   \ "b2"
11 5 / Box
12   \ "box"
13 6 / Cache a remote
14   \ "cache"
15 7 / Dropbox
16   \ "dropbox"
17 8 / Encrypt/Decrypt a remote
18   \ "crypt"
19 9 / FTP Connection
20   \ "ftp"
2110 / Google Cloud Storage (this is not Google Drive)
22   \ "google cloud storage"
2311 / Google Drive
24   \ "drive"
2512 / Hubic
26   \ "hubic"
2713 / Local Disk
28   \ "local"
2914 / Microsoft Azure Blob Storage
30   \ "azureblob"
3115 / Microsoft OneDrive
32   \ "onedrive"
3316 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
34   \ "swift"
3517 / Pcloud
36   \ "pcloud"
3718 / QingCloud Object Storage
38   \ "qingstor"
3919 / SSH/SFTP Connection
40   \ "sftp"
4120 / Webdav
42   \ "webdav"
4321 / Yandex Disk
44   \ "yandex"
4522 / http Connection
46   \ "http"
47Storage> 8

Indicamos en que carpeta se va a realizar el cifrado, para el ejemplo he creado una carpeta llamada cifrado en mi espacio de Hubic,

Recuerda que para que puedas ver el contenido en el explorar web de Hubic debes de almacenar las carpetas dentro de defaults

1Remote to encrypt/decrypt.
2Normally should contain a ':' and a path, eg "myremote:path/to/dir",
3"myremote:bucket" or maybe "myremote:" (not recommended).
4remote> hubic:default/cifrado

Nos pregunta como queremos cifrar el nombre de los ficheros, ademas de su contenido, en mi caso quiero que no se muestre el nombre real del fichero, elijo 2

1How to encrypt the filenames.
2Choose a number from below, or type in your own value
3 1 / Don't encrypt the file names.  Adds a ".bin" extension only.
4   \ "off"
5 2 / Encrypt the filenames see the docs for the details.
6   \ "standard"
7 3 / Very simple filename obfuscation.
8   \ "obfuscate"
9filename_encryption> 2

Lo mismo para el nombre de las carpetas, elijo la opción 1

1Option to either encrypt directory names or leave them intact.
2Choose a number from below, or type in your own value
3 1 / Encrypt directory names.
4   \ "true"
5 2 / Don't encrypt directory names, leave them intact.
6   \ "false"
7directory_name_encryption> 1

Debemos elegir si queremos introducir nuestra propia clave para el cifrado o por el contrario queremos que se genere de forma aleatoria, yo prefiero introducir mi propia contraseña, selecciono y

1Password or pass phrase for encryption.
2y) Yes type in my own password
3g) Generate random password
4y/g> y

Introduzco mi contraseña y la confirmo

1Enter the password:
2password:
3Confirm the password:
4password:

Luego te pedirá si queremos utilizar salt. Un sal modifica una cadena, y hace que el hash sea diferente.

Tenemos tres opciones, introducir mi propia contraseña, generar una contraseña de forma aleatoria o no utilizar salt, yo he seleccionado g que se genere de forma aleatoria

1Password or pass phrase for salt. Optional but recommended.
2Should be different to the previous password.
3y) Yes type in my own password
4g) Generate random password
5n) No leave this optional password blank
6y/g/n> g

Seleccionamos la longitud en bits de la contraseña

1Password strength in bits.
264 is just about memorable
3128 is secure
41024 is the maximum
5Bits> 1024

Vemos la clave generada y si queremos utilizarla, selecciono y

1Your password is: -VZvA8nf4MxueXBdZpH4qVnLRJToS_6IwwwLYiODXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXa7ubkqOwMe9pRrK0WsuD_WWOmjxg_NUdLkKtk-RJtjqEe0aL9HcEXXXXXXXXXXXXXXXXXXXXXXXXXXyBre4
2Use this password?
3y) Yes
4n) No
5y/n> y

Para terminar aparece un resumen de nuestra configuración, confirmamos si todo esta bien, y

 1Remote config
 2--------------------
 3[cifrado]
 4type = crypt
 5remote = hubic:default/cifrado
 6filename_encryption = standard
 7directory_name_encryption = true
 8password = *** ENCRYPTED ***
 9password2 = *** ENCRYPTED ***
10--------------------
11y) Yes this is OK
12e) Edit this remote
13d) Delete this remote
14y/e/d> y

Podemos salir del asistente de configuración de rclone, q

 1Current remotes:
 2
 3Name                 Type
 4====                 ====
 5cifrado              crypt
 6hubic                hubic
 7
 8e) Edit existing remote
 9n) New remote
10d) Delete remote
11r) Rename remote
12c) Copy remote
13s) Set configuration password
14q) Quit config
15e/n/d/r/c/s/q> q

Comprobación de funcionamiento

Vamos a probar que todo funciona correctamente, nos conectamos a Hibuc y vemos que en el navegador web tenemos creada una carpeta llamada cifrado.

Y que su interior está vacía

Para comprender mejor como trabaja en cifrado de rclone he creado la siguiente estructura de directorios en local:

1carlos@raspberrypi:~/backups tree
2.
3├── carpeta01
4│   └── fichero03.txt
5├── fichero01.txt
6└── fichero02.txt

Ahora mismo la carpeta cifrado de Hubic, que va contener los ficheros cifrados, está vacía:

1carlos@raspberrypi:~/backups $ rclone ls cifrado:
2carlos@raspberrypi:~/backups $ rclone lsd cifrado:

Copiamos los ficheros a la carpeta cifrado del servidor

 1carlos@raspberrypi:~/backups $ rclone copy -v ~/backups/ cifrado:
 22018/04/05 12:40:06 INFO  : Encrypted drive 'cifrado:': Modify window is 1ns
 32018/04/05 12:40:06 INFO  : Encrypted drive 'cifrado:': Waiting for checks to finish
 42018/04/05 12:40:06 INFO  : Encrypted drive 'cifrado:': Waiting for transfers to finish
 52018/04/05 12:40:08 INFO  : carpeta01/fichero03.txt: Copied (new)
 62018/04/05 12:40:09 INFO  : fichero01.txt: Copied (new)
 72018/04/05 12:40:10 INFO  : fichero02.txt: Copied (new)
 82018/04/05 12:40:10 INFO  :
 9Transferred:    182 Bytes (23 Bytes/s)
10Errors:                 0
11Checks:                 0
12Transferred:            3
13Elapsed time:        7.8s

Podemos ver que se han copiado correctamente:

1carlos@raspberrypi:~/backups $ rclone ls cifrado:
2       10 fichero01.txt
3       14 fichero02.txt
4       14 carpeta01/fichero03.txt
5carlos@raspberrypi:~/backups $ rclone lsd cifrado:
6  	 0 2018-04-05 12:44:14        -1 carpeta01

El cifrado se realiza de una forma transparente, en cambio si intentamos ver o leer algún fichero o carpeta desde una conexión que no sea la que hemos llamado cifrado veremos como su contenido está cifrado:

1carlos@raspberrypi:~/backups $ rclone ls hubic:default/cifrado
2      62 7k3vk4ipf1vg34talef2r33354
3      58 j4umdg8lj3knc1v72ibthbckf8
4      62 j1bp4ki6bosu367s73jq1a18rk/311baa3b4mcbbu2rngkumpn00o
5
6carlos@raspberrypi:~/backups $ rclone lsd hubic:default/cifrado
7      0 2018-04-05 12:46:46        -1 j1bp4ki6bosu367s73jq1a18rk

Y en el navegador web

Como puedes ver rclone nos va a servir tanto para hacer copias de nuestros ficheros en la nube o entre ordenadores, es de código abierto, está en constaste desarrollo y ademas ofrece la posibilidad de utilizar cifrado para tus archivos.