Docs Menu
Docs Home
/ /
Archivos del reino

Cifrar un dominio - SDK de React Native

Puede cifrar el archivo de base de datos del reino en el disco con AES-256 + SHA-2 proporcionando una clave de cifrado de 64bytes al abrir un reino.

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

No se puede cifrar un dominio existente 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.

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

import React from 'react';
import {createRealmContext, Realm} from '@realm/react';
import Cat from '../Models/Cat';
import {FlatList, View} from 'react-native';
// Retrieve key from secure location or create one...
const key = new Int8Array(64); // Populate with a secure key
// ... store key ...
const config: Realm.Configuration = {
schema: [Cat.schema],
// Add encryption key to realm configuration
encryptionKey: key,
path: Date.now().toString() + '.realm', // :remove
};
const {RealmProvider, useQuery} = createRealmContext(config);
function App() {
return (
<RealmProvider>
<ListCats />
</RealmProvider>
);
}
// Work with realm as normal once it's been opened.
function ListCats() {
const cats = useQuery<Cat>('Cat');
return (
<FlatList
data={cats}
renderItem={({item}) => <View>{item.name}</View>}
keyExtractor={item => item.name}
/>
);
}

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

Debes pasar la misma clave de cifrado cada vez que abras el dominio cifrado. Si no proporcionas una clave o especificas una incorrecta para un dominio cifrado, el SDK de Realm generará 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 realm@11.8.0.

A partir de la versión v11.8.0 del SDK de Realm React Native, Realm admite la apertura del mismo reino cifrado en múltiples procesos.

Si su aplicación usa Realm React Native SDK versión v11.7.0 o anterior, intentar abrir un reino cifrado desde múltiples procesos arroja este error: Encrypted interprocess sharing is currently unsupported.

Si usa Atlas Device Sync con su reino, su aplicación App Services usa un archivo de metadatos en el dispositivo para determinar los cambios que deben sincronizarse.

Puedes cifrar este archivo de metadatos de manera similar a como cifras tu reino.

Para obtener más información, consulte Cifrar metadatos de la aplicación.

Volver

Agrupa un reino

En esta página