Cifrado en Nextcloud

Ofrecer una sólida protección de los datos es la mayor ventaja de Nextcloud sobre las nubes públicas. El autoalojamiento significa que tienes el control sobre tus datos. Por supuesto, hay que impedir el acceso no autorizado, y aquí es donde entra en juego la encriptación. En esta entrada del blog hablaremos de los diferentes tipos y capas de encriptación que utiliza Nextcloud para mantener tus datos seguros. Hablaremos de las amenazas contra las que están diseñados los distintos tipos de encriptación, ayudando a los administradores de sistemas a definir su modelo de amenazas y a tomar las medidas de seguridad adecuadas. Consulta nuestro sitio web para obtener más información sobre seguridad y encriptación.

¿Qué es la encriptación?

Cifrar datos significa triturarlos de forma que sea casi imposible que otra persona los lea sin una clave secreta llamada clave de cifrado. Un ejemplo sencillo es el cifrado César: basta con desplazar cada letra del alfabeto un número fijo de caracteres. Digamos que eliges 3. Una A se convierte en una D, una B en una E y así sucesivamente. Un mensaje como meet me now se convierte en phhw ph qrz A menos que sepas cuántas letras hay que desplazar, es decir, la clave (3 en este caso) es muy difícil averiguar el contenido del mensaje.

La encriptación moderna es mucho más complicada que eso, ya que utiliza trucos matemáticos para hacerla extremadamente difícil de romper. Puedes obtener más información sobre estas técnicas en esta página de Wikipedia.

¿Qué es la modelización de amenazas?

El modelado de amenazas es el proceso de determinar qué amenazas son relevantes y contra las que hay que protegerse. Lo utilizan los administradores de sistemas para asegurarse de que sus sistemas están correctamente configurados y proporcionan la protección adecuada sin sobrecargar a los usuarios con obstáculos de seguridad demasiado complicados.

Pongamos un ejemplo. Digamos que quieres proteger tu coche. Sin preguntarte «a partir de qué», podrías tomar decisiones equivocadas. Incluso un grueso muro y un canal alrededor de tu casa con cocodrilos, aunque probablemente eficaces contra los robos, no protegerían el coche contra el fuerte granizo, algo que habría hecho un simple tejado.

Por supuesto, en un entorno informático, tienes múltiples tipos de datos. Desde los datos de los clientes y los informes del ejercicio fiscal hasta las fotos de la fiesta de Navidad del año pasado. Aunque esto último podría ser embarazoso, en términos generales cabría esperar que un proyecto de informe del ejercicio fiscal en una empresa que cotiza en bolsa requiriera un mayor grado de protección. Lo ideal sería que ni siquiera el personal informático pudiera acceder a algunos de estos archivos.

Un enfoque sencillo del modelado de amenazas consiste en preguntarse a uno mismo «¿de qué quiero protegerme?». Piensa en un atacante imaginario y piensa qué podría hacer para vulnerar tu seguridad. A continuación, busca soluciones para los planteamientos que hayas encontrado. Una versión formalizada de este enfoque es utilizar «árboles de ataque», inventados por el experto en seguridad Bruce Schneider. Aquí puedes ver un ejemplo de árbol de ataque para un ataque de virus:

Consulta la página de wikipedia sobre modelización de amenazas para más detalles y algo de historia, y consulta esta página sobre árboles de ataque.

Cifrado en Nextcloud

Nextcloud ofrece múltiples capas de encriptación para tus datos. En primer lugar, los datos están protegidos cuando se transfieren entre clientes y servidores, así como entre servidores. En segundo lugar, los datos pueden encriptarse en el almacenamiento; y por último, pero no por ello menos importante, ofrecemos encriptación de extremo a extremo en los clientes.

Cada uno tiene su lugar y ofrece un tipo de protección diferente, adecuado para proteger de un tipo específico de amenaza. Describiremos cada tipo de encriptación y contra qué protege.

Cifrado durante la transferencia de datos

La encriptación de transferencias que utiliza Nextcloud asegura las conexiones entre servidores y clientes. Esto utiliza el estándar TLS, un protocolo de comunicación segura utilizado por HTTPS. HTTPS es lo que hace que el candado de la barra de direcciones de tu navegador se vuelva verde. Se configura en el servidor web, como Apache o NGINX, y nuestro manual contiene algunas instrucciones aquí. Recomendamos encarecidamente utilizar siempre Nextcloud con TLS y advertiremos enérgicamente a los administradores del sistema si no está activado.

Nextcloud avisa al administrador del sistema si HTTPS no está activado

Modelo de amenaza

Nextcloud utiliza tráfico HTTP «simple y llano» para todo el manejo de archivos, que puede protegerse con TLS. TLS protege contra los intentos de capturar datos en tránsito entre el servidor y el cliente. No protege contra un dispositivo o servidor pirateado, pero impide que se intercepten las transferencias de datos en redes inseguras como las redes WiFi públicas, los dispositivos móviles o las redes de terceros y, por tanto, tiene un valor incalculable para un despliegue Nextcloud.

Encriptación del almacenamiento

La función de encriptación del lado del servidor de Nextcloud proporciona un almacenamiento seguro de los datos encriptando cada archivo con una clave de archivo única antes de almacenarlo. Las claves de los archivos se encriptan, a su vez, mediante una clave para todo el servidor (por defecto por razones de funcionalidad y rendimiento) o una clave por usuario. La encriptación del lado del servidor proporciona protección para los datos en el almacenamiento externo, ya que los archivos se encriptan antes de ser enviados al almacenamiento y las claves nunca salen del servidor Nextcloud.

Una clave de servidor almacena una contraseña de servidor en el directorio de datos de Nextcloud y la utiliza para descifrar la clave de servidor en el directorio de datos de los usuarios, que a su vez se utiliza para descifrar datos.

Cuando se utilizan claves por usuario, la clave en el directorio de datos es por usuario y está encriptada con la contraseña del usuario. Nos aseguramos de que las claves nunca se almacenen, pero se guardarán en la memoria del servidor Nextcloud mientras duren las sesiones de inicio de sesión de los usuarios, para facilitar el descifrado y el cifrado de los datos.

Ten en cuenta que los clientes de sincronización de escritorio Nextcloud comprueban si hay actualizaciones cada 30 segundos, ¡lo que, frecuente y previsiblemente, proporciona una ventana para que un administrador de servidor malintencionado o un hacker robe las claves de la sesión de usuario!

Y ten en cuenta que el Cifrado del Lado del Servidor sólo cifra el contenido de los archivos, no su nombre ni la estructura de carpetas. El uso de almacenamiento de objetos como S3 evita esta limitación, ya que este tipo de almacenamiento nunca filtra los nombres de archivos o carpetas.

Ten en cuenta también que, cuando no se utiliza almacenamiento externo y se emplea una clave para todo el servidor, almacenar las claves de encriptación junto con los datos supone poca protección en caso de robo de las unidades. Para este modelo de amenaza, una tecnología de cifrado de disco completo suele ser mejor opción que el cifrado del lado del servidor integrado en Nextcloud. dm-crypt, eCryptFS y EncFS suelen ser buenas opciones en el servidor, ya que también permiten utilizar las modernas funciones de aceleración del cifrado de las CPU y los sistemas operativos.

Más información sobre la encriptación del lado del servidor en nuestra página de almacenamiento.

Modelo de amenaza

El Cifrado del Lado del Servidor protege los datos en el almacenamiento siempre que ese almacenamiento no esté en el mismo servidor que el propio Nextcloud.

Las claves por usuario sólo ofrecen protección adicional respecto a una clave para todo el servidor en caso de robo físico del servidor Nextcloud y del almacenamiento o de una violación de la seguridad del servidor, siempre que el usuario o usuarios NO inicien sesión mientras dure la violación. Una violación completa y no detectada del servidor Nextcloud por parte de atacantes expertos o de un administrador de servidores malintencionado sigue suponiendo un riesgo de exposición de los datos de los usuarios.

Encriptación de extremo a extremo del cliente

La protección definitiva de los datos del usuario la proporciona la encriptación de extremo a extremo. La función de encriptación de extremo a extremo de Nextcloud está diseñada de forma que el servidor nunca tenga acceso a archivos o claves sin encriptar, ni el código proporcionado por el servidor maneje nunca datos sin encriptar, lo que podría proporcionar vías de compromiso.

Nextcloud hace que la encriptación de extremo a extremo sea muy fácil de usar, gestionando sin problemas el intercambio de claves por el servidor sin filtrar ningún dato y facilitando el uso compartido con otros usuarios y la colaboración. Sin embargo, conlleva una pérdida de prestaciones, ya que cualquier tipo de edición de archivos en línea y el acceso a datos encriptados, así como el uso compartido público y el uso compartido con grupos, no es posible para los datos de las carpetas que están encriptadas de extremo a extremo.

Los usuarios pueden activar la función de encriptación de extremo a extremo de Nextcloud para una o varias carpetas. El contenido de cada una de estas carpetas estará totalmente oculto para el servidor, incluidos los nombres de los archivos y la estructura de directorios. Para sincronizar los datos con otros dispositivos, los usuarios tienen que introducir un código creado por el primer dispositivo. Una vez hecho esto, las carpetas cifradas de extremo a extremo se sincronizan sin problemas entre dispositivos. Los usuarios pueden compartir carpetas encriptadas con otros usuarios de su servidor sin necesidad de volver a encriptar y cargar los datos ni de introducir contraseñas para el remitente o el destinatario.

La Protección Criptográfica de la Identidad, en forma de certificados firmados por el servidor y un modelo de Confianza en el Primer Uso (TOFU), protege contra los atacantes que intentan suplantar a otros usuarios. Nextcloud admite una clave de recuperación de administrador sin conexión opcional y permite un registro de auditoría completo. Las empresas pueden emplear opcionalmente un HSM seguro para emitir certificados a los usuarios.

El Control de Acceso a Archivos de Nextcloud puede emplearse para imponer el cifrado de extremo a extremo en Nextcloud basándose en criterios establecidos, por ejemplo la pertenencia a grupos de usuarios, la extensión del archivo, el tamaño, etc. De este modo, un subconjunto de datos sensibles puede recibir el máximo nivel de protección, mientras que otros datos y usuarios pueden seguir beneficiándose de la facilidad de intercambio público de archivos y de las capacidades de colaboración en línea de Nextcloud.

Por ejemplo, Nextcloud permite a un administrador de sistemas asegurarse de que todos los archivos creados por el departamento de Finanzas tienen que estar cifrados de extremo a extremo, mientras que otros departamentos pueden colaborar y compartir a su antojo.

Ten en cuenta que la propia naturaleza de la encriptación de extremo a extremo significa que no hay acceso a los datos a través de la interfaz web, ni se comparten públicamente. Esto se debe a que un navegador necesitaría desencriptar los archivos localmente para que el usuario pudiera verlos, pero el código para hacerlo tiene que venir en forma de javascript desde el servidor. Esto rompería el modelo de confianza: El cifrado de extremo a extremo está pensado para proteger del servidor y, por tanto, no se puede confiar en que el código del servidor descifre los datos y no envíe una copia de la clave segura a un servidor ajeno. Esto se trata más ampliamente en un artículo de los expertos en seguridad del Grupo NCC. Los esquemas de extremo a extremo que tienen un componente de navegador no son más seguros que el cifrado del lado del servidor, por lo que recomendamos utilizarlo en su lugar si es necesario acceder a través de un navegador.

Más información sobre la encriptación de extremo a extremo en nuestro sitio web. Ten en cuenta que, desde agosto de 2020, el cifrado de extremo a extremo está disponible en las últimas versiones de los clientes de escritorio y móvil. Requiere el servidor Nextcloud 19 con la versión 1.5.2 o la versión 20 con la 1.6.1. La compartición entre usuarios aún no se ha implantado y está en la hoja de ruta para 2021.

Modelo de amenaza

La encriptación de extremo a extremo en Nextcloud está diseñada para proteger los datos de los usuarios contra cualquier escenario de ataque entre dispositivos de usuario, incluso en caso de una brecha de seguridad no detectada a largo plazo o contra administradores de servidores que no sean de confianza.

No protege los datos de los propios dispositivos de usuario, y el robo de un dispositivo de usuario sin cifrar y desbloqueado permitiría a un atacante acceder a las claves privadas.

Conclusión

Nextcloud utiliza el cifrado para proteger tus datos en tránsito y en el almacenamiento externo, y con cifrado de extremo a extremo incluso contra un servidor no fiable. Al configurar una solución autoalojada de sincronización y compartición de archivos, conviene desarrollar un modelo de amenazas, determinando claramente contra qué amenazas debe protegerse el servidor, y luego configurar el entorno del servidor para garantizar la protección contra las amenazas identificadas. Esta entrada del blog debería ayudar a elegir el tipo o tipos correctos de encriptación a emplear para alcanzar el nivel de protección deseado.