Rclone: Cifrado de ficheros en la nube

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

rclone config

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

Current remotes:

Name                 Type
====                 ====
hubic                hubic

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
name> cifrado

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

Type of storage to configure.
Choose a number from below, or type in your own value
 1 / Alias for a existing remote
   \ "alias"
 2 / Amazon Drive
   \ "amazon cloud drive"
 3 / Amazon S3 (also Dreamhost, Ceph, Minio, IBM COS)
   \ "s3"
 4 / Backblaze B2
   \ "b2"
 5 / Box
   \ "box"
 6 / Cache a remote
   \ "cache"
 7 / Dropbox
   \ "dropbox"
 8 / Encrypt/Decrypt a remote
   \ "crypt"
 9 / FTP Connection
   \ "ftp"
10 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
11 / Google Drive
   \ "drive"
12 / Hubic
   \ "hubic"
13 / Local Disk
   \ "local"
14 / Microsoft Azure Blob Storage
   \ "azureblob"
15 / Microsoft OneDrive
   \ "onedrive"
16 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
17 / Pcloud
   \ "pcloud"
18 / QingCloud Object Storage
   \ "qingstor"
19 / SSH/SFTP Connection
   \ "sftp"
20 / Webdav
   \ "webdav"
21 / Yandex Disk
   \ "yandex"
22 / http Connection
   \ "http"
Storage> 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

Remote to encrypt/decrypt.
Normally should contain a ':' and a path, eg "myremote:path/to/dir",
"myremote:bucket" or maybe "myremote:" (not recommended).
remote> 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

How to encrypt the filenames.
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> 2

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

Option to either encrypt directory names or leave them intact.
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> 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

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

Introduzco mi contraseña y la confirmo

Enter the password:
password:
Confirm the password:
password:

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

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

Seleccionamos la longitud en bits de la contraseña

Password strength in bits.
64 is just about memorable
128 is secure
1024 is the maximum
Bits> 1024

Vemos la clave generada y si queremos utilizarla, selecciono y

Your password is: -VZvA8nf4MxueXBdZpH4qVnLRJToS_6IwwwLYiODXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXa7ubkqOwMe9pRrK0WsuD_WWOmjxg_NUdLkKtk-RJtjqEe0aL9HcEXXXXXXXXXXXXXXXXXXXXXXXXXXyBre4
Use this password?
y) Yes
n) No
y/n> y

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

Remote config
--------------------
[cifrado]
type = crypt
remote = hubic:default/cifrado
filename_encryption = standard
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

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

Current remotes:

Name                 Type
====                 ====
cifrado              crypt
hubic                hubic

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

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:

carlos@raspberrypi:~/backups tree
.
├── carpeta01
│   └── fichero03.txt
├── fichero01.txt
└── fichero02.txt

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

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

Copiamos los ficheros a la carpeta cifrado del servidor

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

Podemos ver que se han copiado correctamente:

carlos@raspberrypi:~/backups $ rclone ls cifrado:
       10 fichero01.txt
       14 fichero02.txt
       14 carpeta01/fichero03.txt
carlos@raspberrypi:~/backups $ rclone lsd cifrado:
           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:

carlos@raspberrypi:~/backups $ rclone ls hubic:default/cifrado
      62 7k3vk4ipf1vg34talef2r33354
      58 j4umdg8lj3knc1v72ibthbckf8
      62 j1bp4ki6bosu367s73jq1a18rk/311baa3b4mcbbu2rngkumpn00o

carlos@raspberrypi:~/backups $ rclone lsd hubic:default/cifrado
        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.

Referencias:

comentario powered by Disqus