Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v20 R7
Encripción de datos

Encripción de datos  


 

 
Con 4D, puede cifrar sus datos para garantizar su confidencialidad, independientemente del contexto de uso. En 4D particularmente, el cifrado tiene las características claves siguientes:
  • La capacidad de cifrar los datos confidenciales dentro de una base, pero no necesariamente todo el archivo de datos,
  • Una capa de seguridad adicional para proteger el acceso a los datos,
  • Encriptación no basada en hardware, usted controla la llave (conforme a las exigencias de las empresas de hosting externas).

Nota: para más información sobre cómo 4D maneja las preguntas de seguridad, consulte la Guía de seguridad de 4D.

4D ofrece dos modos de cifrado diferentes, que responden a dos necesidades diferentes:

  • Cifrado asimétrico, basado en un par de llaves. El cifrado se realiza con la llave pública, mientras que el descifrado requiere la llave privada.
    Este modo es adecuado para asegurar intercambios de datos a través de una red, ya que permite la autenticación y el cifrado.
    En 4D, se implementa mediante los comandos GENERATE ENCRYPTION KEYPAIR, ENCRYPT BLOB y DECRYPT BLOB
  • Cifrado simétrico, donde se utiliza la misma llave tanto para el cifrado como para el descifrado (algoritmo AES-256).
    Este es el modo adecuado para el cifrado de datos locales. Es soportado por los comandos del tema Seguridad de los datos, tales como Encrypt data BLOB y Decrypt data BLOB.

El cifrado de datos en 4D se basa en los siguientes conceptos:

  • Granularidad: el cifrado se realiza a nivel de tabla. Las tablas que contienen datos confidenciales están marcadas como "encriptables" en la estructura de la base (archivo .4db). Para más información sobre cómo configurar tablas encriptables, consulte el párrafo Encriptable.
  • Llave de cifrado: las tablas se cifran mediante una llave AES, generada utilizando un algoritmo SHA-256 a partir de una "frase de contraseña" dada. La llave de cifrado se puede almacenar en un archivo en un dispositivo externo, como una llave USB, que podría conectarse al servidor solo cuando sea necesario.
  • Llavero: una vez que se ha proporcionado una llave de cifrado válida para un archivo de datos cifrados, se guarda en la memoria en el llavero 4D. Por lo tanto, el archivo de datos se puede cerrar y volver a abrir sin proporcionar la llave (a través de un dispositivo o con el método ds.provideDataKey( )). En la configuración cliente/servidor, el llavero se almacena en el servidor. El llavero se vacía cuando 4D se cierra.
  • Frase de contraseña: la frase de contraseña es una versión más segura de una contraseña, puede contener una gran cantidad de caracteres y se utiliza para generar la llave de cifrado. La misma frase de contraseña siempre dará como resultado la misma clave de cifrado.
  • Cifrado simétrico: la misma llave de cifrado se utiliza para cifrar y descifrar datos.
  • Lectura y escritura de datos cifrados: una vez que se ha proporcionado una llave de cifrado válida a un archivo de datos cifrados:
    • Todas las modificaciones de datos en tablas encriptables se encriptan automáticamente en el disco.
    • Todos los datos cargados de tablas encriptables se descifran automáticamente en la memoria
  • Archivos de destino: el cifrado se aplica a todos los archivos que manejan datos: .4dd, .journal, .4dIndex.   

 Advertencia: si se pierden la llave de cifrado y la frase de contraseña, será imposible, incluso para los servicios técnicos de 4D, acceder a los datos cifrados.

El cifrado en 4D se basa en un escenario simple de dos pasos:

Paso 1: Seleccionando tablas para cifrar

  • El desarrollador selecciona tablas para cifrar a nivel de la estructura de la base (ver Encriptable).
  • Por razones de rendimiento, solo se deben seleccionar las tablas que contienen datos confidenciales.
  • No se realiza ningún cifrado en este paso, los usuarios pueden trabajar normalmente, sin cifrado de datos.

Paso 2: Encriptar datos seleccionados

  • Al desplegar una aplicación (si lo solicita el cliente), el desarrollador habilita el cifrado utilizando Centro de seguridad y mantenimiento (CSM), o con el lenguaje 4D.
  • El cifrado se propaga a todas las tablas preseleccionadas.
  • Los datos cifrados se descifran automáticamente cuando se leen y se vuelven a cifrar cuando se guardan, si se ha proporcionado la llave de cifrado.

 

Nota:  el llavero 4D solo es válido durante la sesión 4D en ejecución. Se guarda en la memoria y se elimina automáticamente cuando se cierra la aplicación 4D.

Este gráfico incluye los siguientes pasos:

  1. Cuando el usuario intenta abrir un archivo de datos cifrados, 4D busca una llave de cifrado válida en el llavero 4D. Si se encuentra, se otorga acceso (lectura/escritura) a los datos cifrados.
  2. Si no se encuentra una llave de cifrado válida en el llavero 4D, 4D escanea todos los dispositivos conectados (en el primer nivel) para encontrar un archivo .4DKeyChain que contenga una llave de cifrado válida (ver abajo Almacenamiento de llaves de cifrado de datos en archivos).
  3. En este paso, el archivo de datos está realmente abierto. Si no se proporciona una llave de cifrado válida, no es posible el acceso de lectura/escritura en los datos cifrados.
  4. Sin embargo, el usuario puede proporcionar una llave de cifrado de datos válida mediante:

    Si se proporciona una llave de cifrado de datos válida, se permite el acceso de lectura/escritura en los datos cifrados.

  5. Cada vez que se encuentra una llave de cifrado válida, se agrega al llavero 4D. Un dispositivo conectado que contenga una llave de cifrado no necesita permanecer conectado una vez que la llave de cifrado se haya agregado a la cadena 4D.

Puede crear archivos de llave de cifrado de datos para almacenarlos en dispositivos externos (por ejemplo, llaves USB o discos externos) para que 4D pueda usarlos automáticamente al inicio o después de una llamada a Discover data key para descifrar datos (ver arriba). Una vez que se ha encontrado una llave de cifrado válida, se almacena en la memoria en el llavero 4D y se utiliza durante toda la sesión. En este paso, el dispositivo externo se puede desconectar.

Un archivo de llave cifrada debe cumplir con las siguientes reglas:

  • El nombre del archivo debe tener la extensión .4DKeyChain. Por ejemplo, "myKeys.4DKeyChain".
  • Debe ser un archivo de texto formateado en JSON.
  • Puede contener una o más llaves de cifrado y/o frases de contraseña en objetos JSON o colecciones de objetos; cada objeto debe contener una propiedad encodedKey o passPhrase. Ver el comando New data key para aprender cómo generar un archivo de llave. 
  • El archivo debe almacenarse en la raíz del dispositivo externo.
  • Se pueden utilizar múltiples archivos .4DKeyChain simultáneamente.
Note: el contenido de todos los archivos .4DKeychain encontrados se analiza para detectar si una llave coincide con los datos, independientemente de los nombres de los archivos.

Aquí hay un ejemplo de un archivo que contiene tres llaves:

[
{ "encodedKey":"D1AB499C9BE1F210BDB[...]0F63EF6CE8CC0C6CA4" },
{ "encodedKey":"F68A20FCBC70[...]21B55F6D89687ABC7CFAB95720A" },
{ "passPhrase":"Bonjour il fait beau" }
]



Ver también 

A deeper look into 4D data encryption (blog post)
Página de encripción

 
PROPIEDADES 

Producto: 4D
Tema: Gestión de archivos 4D

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Creado por: 4D v17 R5

 
ARTICLE USAGE

Manual de Diseño ( 4D v20 R7)