Hasta ahora hemos visto cómo utilizar RClone para acceder a espacios de almacenamiento en la nube y a sincronizar directorios para realizar copias de seguridad deslocalizadas.

Si te preocupa la privacidad de tus datos posiblemente alguna vez te hayas preguntado si el proveedor de tu almacenamiento en la nube podría husmear en tus ficheros. También, en caso de que alguien consiguiese tu usuario y contraseña, podría acceder a los mismos.

La solución para prevenir un acceso no autorizado a los datos es añadir una capa de cifrado a tu servicio en la nube. Es decir, puedes cifrar los ficheros antes de enviarlos. Así, aunque alguien consigua acceder a tu almacenamiendo en la nube, los datos que vería no tendrían ninguna utilidad.

Esto puedes hacerlo de diferentes formas, pero RClone te facilita mucho esta tarea. Puedes crear directorios cifrados de manera que solamente tú puedes acceder a la información en claro.

Vamos a ver cómo crear y utilizar los almacenamientos cifrados con RClone.

img

Creación del almacenamiento cifrado

Para crear un almacenamiento cifrado RClone necesita previamente de un almacenamiento configurado de la manera que hemos visto en las entradas anteriores. Te recuerdo que el comando para listar los almacenamientos disponibles es

rclone listremotes
~$ rclone listremotes
mi_disco_OneDrive:

Vamos a seguir trabajando sobre el almacenamiento de OneDrive que creé anteriormente. Pero puedes crear almacenamientos cifrados sobre cualquiera de los servicios que soporta RClone. E incluso puedes sincronizar o mover directorios cifrados entre diferentes servicios.

Hay que preparar antes un directorio que contendrá nuestros archivos cifrados. En este caso le vamos a dar el nombre de "secreto".

~$ rclone mkdir mi_disco_OneDrive:secreto

La creación de un almacenamiento cifrado no difiere mucho de la creación de uno normal.

Para iniciar la configuración lo haremos mediante el comando rclone config

~$ rclone config
Current remotes:

Name                 Type
====                 ====
mi_disco_OneDrive    onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config>
e/n/d/r/c/s/q> n

Pulsamos n para crear el nuevo almacenamiento. RClone nos pide ahora un nombre. Lo llamaremos disco_cifrado. Ahora seleccionamos el tipo de almacenamiento de entre los de la lista. En este caso seleccionamos la opción 9 / Encrypt/Decrypt a remote Ten en cuenta que, en futuras versiones de RClone, al ir añadiendo nuevos tipos de almacenamiento, es posible que esta numeración cambie.

name> disco_cifrado
Type of storage to configure
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / A stackable unification remote, which can appear to merge the contents of several remotes
   \ "union"
 2 / Alias for a existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Providers (AWS, Ceph, Dreamhost, IBM COS, Minio
   \ "s3"
 5 / Backblaze B2
   \ "b2"
 6 / Box
   \ "box"
 7 / Cache a remote
   \ "cache"
 8 / Dropbox
   \ "dropbox"
 9 / Encrypt/Decrypt a remote
   \ "crypt"
10 / FTP Connection
   \ "ftp"
11 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
12 / Google Drive
   \ "drive"
13 / Hubic
   \ "hubic"
14 / JottaCloud
   \ "jottacloud"
15 / Local Disk
   \ "local"
16 / Mega
   \ "mega"
17 / Microsoft Azure Blob Storage
   \ "azureblob"
18 / Microsoft OneDrive
   \ "onedrive"
19 / OpenDrive
   \ "opendrive"
20 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
21 / Pcloud
   \ "pcloud"
22 / QingCloud Object Storage
   \ "qingstor"
23 / SSH/SFTP Connection
   \ "sftp"
24 / Webdav
   \ "webdav"
25 / Yandex Disk
   \ "yandex"
26 / http Connection
   \ "http"
Storage> 9

Rclone nos pregunta si queremos cifrar los nombres de fichero y de directorio. De momento los vamos a dejar sin cifrar por lo que seleccionamos las opciones 1 y 2 respectivamente.

** See help for crypt backend at: https://rclone.org/crypt/ **

Remote to encrypt/decrypt.
Normally should contain a ':' and a path, eg "myremote:path/to/dir",
"myremote:bucket" or maybe "myremote:" (not recommended).
Enter a string value. Press Enter for the default ("").
remote> mi_disco_OneDrive:secreto
How to encrypt the filenames.
Enter a string value. Press Enter for the default ("standard").
Choose a number from below, or type in your own value
 1 / Don't encrypt the file names.  Adds a ".bin" extension only.
   \ "off"
 2 / Encrypt the filenames see the docs for the details.
   \ "standard"
 3 / Very simple filename obfuscation.
   \ "obfuscate"
filename_encryption> 1
Option to either encrypt directory names or leave them intact.
Enter a boolean value (true or false). Press Enter for the default ("true").
Choose a number from below, or type in your own value
 1 / Encrypt directory names.
   \ "true"
 2 / Don't encrypt directory names, leave them intact.
   \ "false"
directory_name_encryption> 2

El siguiente paso es elegir las contraseñas para cifrar los archivos. RClone utiliza dos contraseñas para realizar el cifrado. Esto permite dotar de más robustez a la misma. Aunque la segunda es opcional, es muy recomendable no dejarla en blanco.

Es importante que guardes bien estas contraseñas. Si las pierdes no hay forma de recuperarlas.

RClone te permite generar contraseñas aleatorias, es muy recomendable usar esta opción.

Password or pass phrase for encryption.
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank
y/g/n> g
Password strength in bits.
64 is just about memorable
128 is secure
1024 is the maximum
Bits> 256
Your password is: wyvxzHAhsWdLe8Qa_YOTqEhcMY3ot-Clwf9B6hySxYc
Use this password? Please note that an obscured version of this
password (and not the password itself) will be stored under your
configuration file, so keep this generated password in a safe place.
y) Yes
n) No
y/n> y
Password or pass phrase for salt. Optional but recommended.
Should be different to the previous password.
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank
y/g/n> g
Password strength in bits.
64 is just about memorable
128 is secure
1024 is the maximum
Bits> 256
Your password is: gwvpjuqAfQoGn4tdzLa6zU3AS68d8t8px1ul-qKWKzE
Use this password? Please note that an obscured version of this
password (and not the password itself) will be stored under your
configuration file, so keep this generated password in a safe place.
y) Yes
n) No
y/n> y

Aceptamos el resto de preguntas y ya tenemos configurado el almacenamiento cifrado.

Edit advanced config? (y/n
y) Yes
n) No
y/n> n
Remote config
--------------------
[disco_cifrado]
type = crypt
remote = mi_disco_OneDrive:secreto
filename_encryption = off
directory_name_encryption = true
password = *** ENCRYPTED ***
password2 = *** ENCRYPTED ***
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:

Name                 Type
====                 ====
disco_cifrado        crypt
mi_disco_OneDrive    onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

A partir de ahora podemos utilizarlo como cualquier otro almacenamiento, con todos los comandos y opciones que he ido mostrando en los artículos anteriores.

De momento el directorio está vacío por lo que he creado un archivo llamado texto_cifrado.txt que he subido al nuevo almacenamiento.

~$ rclone copy texto_cifrado.txt disco_cifrado:

Comprobamos que el archivo se ha subido

~$ rclone lsl disco_cifrado:
       25 2018-12-04 19:44:35.000000000 texto_cifrado.txt

Ahora vamos a ver qué hay en el directorio de OneDrive que aloja el almacenamiento cifrado.

~$ rclone lsl mi_disco_OneDrive:secreto
       73 2018-12-04 19:44:35.000000000 texto_cifrado.txt.bin

Aunque el fichero es accesible desde OneDrive vamos a ver que el contenido está cifrado

~$ rclone cat mi_disco_OneDrive:secreto/texto_cifrado.txt.bin | xxd
00000000: 5243 4c4f 4e45 0000 7cea 4769 9ab0 d6bd  RCLONE..|.Gi....
00000010: feb8 178b 02dc 5c95 d061 c5f7 8dd7 3ae8  ......\..a....:.
00000020: 6b93 385b 54c2 0e37 4356 9961 6022 ffb3  k.8[T..7CV.a`"..
00000030: 36a4 151e 0714 b3f2 a3c9 dd92 50c3 8073  6...........P..s
00000040: 81ec c9d2 5613 66fd da                   ....V.f..

En cambio, accediendo a través del almacenamiento cifrado podemos ver el contenido en claro del fichero

rclone cat disco_cifrado:texto_cifrado.txt | xxd
00000000: 4573 7465 2074 6578 746f 2073 6572 c3a1 Este texto ser..
00000010: 2063 6966 7261 646f 0a                  cifrado. 

El contenido, aunque cifrado, es accesible desde el interfaz del proveedor del almacenamiento. De esta forma si, por alguna razón, rclone dejara de tener soporte sería posible rescatar todos nuestros ficheros para moverlos a otro sitio.

Es posible crear nuevos directorios, copiar o mover archivos y también borrarlos. Ya que el cifrado de RClone solamente afecta a los ficheros, todas estas acciones que realicemos tendrán el efecto esperado en el almacenamiento cifrado.

Gestion de archivos y directorios en OneDrive

Tras crear un directorio y copiar el fichero que creamos previamente es posible acceder mediante RClone al contenido.

~$ rclone ls disco_cifrado:
       25 texto_cifrado.txt
       25 texto_cifrado_copy.txt

~$ rclone lsd disco_cifrado:
          -1 2018-12-08 21:27:07         0 Directorio

~$ rclone cat disco_cifrado:texto_cifrado_copy.txt
Este texto será cifrado

Si te interesa conocer más sobre el formato de fichero y el método utilizado para cifrar su contenido lee la entrada correspondiente en la documentación oficial en este enlace.

Cifrado de nombres

Ya hemos visto como crear un directorio cifrado con RClone. A la hora de configurarlo hemos elegido no cifrar los nombres de los ficheros no de los directorios. RClone permite cifrar unos y otros de forma independiente.

Como es obvio cifrar los nombres ocultará aún más el contenido aunque hará más complicado gestionar los archivos sin descifrar. La conveniencia o no de encriptar los nombres de los archivos depende de cada caso.

En la siguiente imagen se ve el contenido de la carpeta en OneDrive cuando los nombres están cifrados.

Nombres de fichero cifrados

Es importante que ningún archivo sea renombrado si no es con RClone accediendo al almacenamiento cifrado.

En el caso que necesites convertir nombres cifrados a nombres en claro, RClone proporciona las opciones para facilitar esta tarea.

Al incluir la opción --crypt-show-mapping al listar archivos RClone muestra el nombre cifrado de cada archivo.

~$ rclone ls disco_cifrado_2: --crypt-show-mapping
2018/12/08 21:57:02 NOTICE: directorio: Encrypts to "0tu51m7qe5pg0i3ds49u6uio50"
2018/12/08 21:57:02 NOTICE: texto_cifrado.txt: Encrypts to "ooov7dvo1434ba127v2ttjvggu4h2n28fev7d67f95uh3jprcfa0"
       25 texto_cifrado.txt
2018/12/08 21:57:02 NOTICE: directorio/texto_cifrado.txt: Encrypts to "0tu51m7qe5pg0i3ds49u6uio50/ooov7dvo1434ba127v2ttjvggu4h2n28fev7d67f95uh3jprcfa0"
       25 directorio/texto_cifrado.txt

También existe un comando para cifrar o descifrar nombres de fichero o de directorio. rclone cryptdecode realiza esta tarea. Hay que indicar el almacenamiento al que se refiere porque necesita saber la clave y el método de cifrado . Si no se añaden opciones rclone cryptdecode proporciona el nombre en claro. Al contrario, si se añade la opcion --reverse generará el nombre cifrado.

~$ rclone cryptdecode disco_cifrado_2: nombre_cifrado.txt --reverse
nombre_cifrado.txt       oda6tu5mm92iam2pt55skcf1jkg8edl02t2qbjv5koej6uklsr5g

~$ rclone cryptdecode disco_cifrado_2: oda6tu5mm92iam2pt55skcf1jkg8edl02t2qbjv5koej6uklsr5g
oda6tu5mm92iam2pt55skcf1jkg8edl02t2qbjv5koej6uklsr5g     nombre_cifrado.txt

Conclusión

RClone es una herramienta muy potente, versátil y muy bien documentada. En este artículo has visto cómo puedes ocultar tus archivos en la nube de accesos no deseados aunque alguien acceda a los mismos.

Es raro que un proveedor de almacenamiento en la nube proporcione una herramienta que cifre el contenido antes de subirlo. De hecho, yo solamente conozco un servicio llamado Tresorit, bastante interesante aunque de pago. Con RClone puedes conseguir casi las mismas funciones. Y recuerda, RClone es un software de código abierto.