Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ /

Criptografar um Realm - C++ SDK

Nesta página

  • Armazenar & reutilizar chaves
  • Impacto no desempenho
  • Criptografia e Atlas Device Sync
  • Criptografar um realm sincronizado
  • Criptografar metadados

Você pode criptografar o arquivo de domínio no disco com AES-256 + SHA-2 fornecendo uma chave de criptografia de 64 bytes ao abrir um domínio.

O Realm criptografa e descriptografa dados de forma transparente com criptografia AES-256 padrão usando os primeiros 256 bits da 512chave de criptografia bits fornecida. O Realm usa os outros 256 bits da 512chave de criptografia de bits para validar a integridade usando um código de autenticação de mensagem baseado em hash (HMAC).

Aviso

Não use hashes criptograficamente fracos para chaves de encriptação de domínio. Para uma segurança ideal, recomendamos gerar chaves de encriptação aleatórias em vez de derivadas.

Criptografe um Realm chamando a função set_encryption_key() em seu db_config:

// Check if we already have a key stored in the platform's secure storage.
// If we don't, generate a new one.
// Use your preferred method to generate a key. This example key is
// NOT representative of a secure encryption key. It only exists to
// illustrate the form your key might take.
std::array<char, 64> exampleKey = {
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0,
0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0,
0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0};
// Store the key securely to be used next time we want to open the database.
// We don't illustrate this here because it varies depending on the platform.
// Create a database configuration.
auto config = realm::db_config();
// Set the encryption key in your config.
config.set_encryption_key(exampleKey);
// Open or create a database with the config containing the encryption key.
auto realm = realm::db(config);

Dica

Não é possível criptografar um Realm que já existe no dispositivo

O SDK do C++ ainda não suporta criptografar um domínio que já existe no dispositivo. Você deve criptografar o Realm na primeira vez que abri-lo.

Você deve passar pela mesma chave de encriptação toda vez que abrir o domínio criptografado. Se você não fornecer uma chave ou especificar a chave errada para um domínio criptografado, o domínio SDK emitirá um erro.

Os aplicativos devem armazenar a chave de criptografia com segurança no dispositivo para que outros aplicativos não possam ler a chave.

As leituras e gravações em realms criptografados podem ser até 10% mais lentas do que em realms não criptografados.

Você pode criptografar um realm sincronizado.

O Realm criptografa somente os dados no dispositivo e armazena os dados não criptografados na sua fonte de dados do Atlas. Qualquer usuário com acesso autorizado à fonte de dados do Atlas pode ler os dados, mas o seguinte ainda se aplica:

  • Os usuários devem ter as permissões de leitura corretas para ler os dados sincronizados.

  • Os dados armazenados no Atlas são sempre criptografados em nível de volume (disco).

  • A transferência entre cliente e servidor é sempre totalmente criptografada.

Você também pode ativar o Gerenciamento de chaves de cliente para criptografar os dados armazenados no Atlas usando a chave do seu provedor de nuvem (por exemplo, AWS KMS, Azure Key Vault, Google Cloud KMS).

Se precisar de chaves exclusivas para cada usuário do seu aplicativo, você poderá usar um provedor OAuth ou um dos provedores de autenticação Realm e um trigger de autenticação para criar uma chave 64bits e armazenar essa chave em um objeto de usuário.

Você pode criptografar os metadados que o Realm armazena no dispositivo. Para obter mais informações, consulte Criptografar metadados de aplicativos.

Voltar

Reduzir o tamanho do arquivo de domínio