Docs Menu
Docs Home
/ /
Administrar archivos de Realm

Cifrar un dominio - SDK de Flutter

Puedes cifrar tus dominios para garantizar que los datos almacenados en el disco no se puedan leer fuera de tu aplicación. Cifra el dominio en disco con AES-256 + SHA-2 proporcionando una 64clave de cifrado de bytes al abrir un dominio.

Realm cifra y descifra datos de forma transparente con estándares Cifrado AES-256Utilizando los primeros 256 bits de la clave de cifrado de bits 512dada. Realm utiliza los otros 256 bits de la 512clave de cifrado de bits para validar la integridad mediante un código de autenticación de mensajes basado en hash (HMAC).

Advertencia

No utilice hashes criptográficamente débiles para las claves de cifrado de dominio. Para una seguridad óptima, recomendamos generar claves de cifrado aleatorias en lugar de derivadas.

Nota

Encripta un Realm al abrir o copia un Realm sin cifrar

Debes cifrar un dominio la primera vez que lo abras. Si intentas abrir un dominio existente sin cifrar con una configuración que contiene una clave de cifrado, Realm generará un error.

Como alternativa, puede copiar los datos del dominio sin cifrar a un nuevo dominio cifrado mediante el método Realm.writeCopy(). Consulte Copiar datos a un nuevo dominio para obtener más información.

Los siguientes son los impactos clave a tener en cuenta al cifrar un reino.

Debe pasar la misma clave de cifrado en la propiedad Configuration.encryptionKey del dominio cada vez que lo abra. La clave debe tener un 64valor de bytes. List<int>Para crear una clave que cumpla con esta especificación, la Lista debe contener exactamente 64 números enteros y todos los números enteros deben estar entre 0 y 255.

Si no proporciona una clave o especifica la clave incorrecta para un reino cifrado, el SDK de Realm genera un error.

Las aplicaciones deben almacenar la clave de cifrado de forma segura, generalmente en el almacenamiento de clave/valor seguro de la plataforma de destino, para que otras aplicaciones no puedan leerla.

Las lecturas y escrituras en reinos cifrados pueden ser hasta un 10% más lentas que en reinos no cifrados.

Puede encriptar un realm sincronizado.

Realm solo cifra los datos del dispositivo y los almacena sin cifrar en la fuente de datos Atlas. Cualquier usuario con acceso autorizado a la fuente de datos Atlas puede leerlos, pero se aplica lo siguiente:

  • Los usuarios deben tener los permisos de lectura correctos para leer los datos sincronizados.

  • Los datos almacenados en Atlas siempre están cifrados a nivel de volumen (disco).

  • La transferencia entre el cliente y el servidor siempre está totalmente cifrada.

También puede habilitar la Administración de claves del cliente para cifrar los datos de Atlas almacenados utilizando la clave de su proveedor de nube (por ejemplo, AWS KMS, Azure Key Vault, Google Cloud KMS).

Si necesita claves únicas para cada usuario de su aplicación, puede utilizar un proveedor OAuth o utilizar uno de los proveedores de autenticación de Realm y un activador de autenticación para crear 64una clave de bits y almacenar esa clave en un objeto de usuario.

Cambiado en la versión 1.1.0.

A partir de la versión 1.1.0 del SDK de Flutter de Realm, Realm admite la apertura del mismo reino cifrado en múltiples procesos.

Si su aplicación usa la versión 1.1.0 o anterior del SDK de Flutter de Realm, intentar abrir un reino cifrado desde varios procesos arroja este error: Encrypted interprocess sharing is currently unsupported.

El siguiente código demuestra cómo generar una clave de cifrado y abrir un reino cifrado:

// Generate encryption key
final key = List<int>.generate(64, (i) => Random().nextInt(256));
final encryptedConfig = Configuration.local([Car.schema],
// Include the encryption key in the configuration
encryptionKey: key);
final encryptedRealm = Realm(encryptedConfig);

Volver

Reducir el tamaño del archivo de Realm

En esta página