Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

Realm の暗号化 - C++ SDK

項目一覧

  • キーの保存と再利用
  • パフォーマンスへの影響
  • 暗号化と Atlas Device Sync
  • 同期された Realm の暗号化
  • メタデータの暗号化

Realm を開くときに 64 バイトの暗号化キーを指定することで、AES-256 + SHA-2 でディスク上の Realm ファイルを暗号化できます。

Realmは標準の AES-256 暗号化 でデータを透過的に暗号化と復号化します 指定された ビット暗号化のキーの最初の256 512ビットを使用します。 Realmは、 ビット暗号化のキーの他の256 512ビットを使用して、 ハッシュベースのメッセージ認証コード(HMAC)を使用して整合性を検証します。

警告

Realm 暗号化キーには、暗号化が脆弱なハッシュを使用しないでください。 最適なセキュリティを実現するには、暗号化キーを生成するのではなく、ランダムに生成することをお勧めします。

db_config set_encryption_key()関数を呼び出して、Realm を暗号化します。

// 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);

Tip

デバイスにすでに存在する Realm を暗号化することはできません

C++ SDK は、デバイス上にすでに存在する Realm の暗号化をまだサポートしていません。 Realm は、初めて開くときに暗号化する必要があります。

暗号化されたRealmを開くたびに、同じ暗号化キーを渡す必要があります。 暗号化された Realm にキーを指定しないか、誤ったキーを指定した場合、Realm SDK はエラーをスローします。

アプリは暗号化キーをデバイス上に安全に保存し、他のアプリがキーを読み取れないようにする必要があります。

暗号化された Realm での読み取りと書込みは、暗号化されていない Realm よりも最大 10% 遅くなる可能性があります。

同期された Realm を暗号化できます。

Realm はデバイス上のデータのみを暗号化し、暗号化されていないデータを Atlas データソースに保存します。 Atlas データソースへのアクセスが許可されたユーザーはデータを読み取ることができますが、次の条件は引き続き適用されます。

  • 同期されたデータを読み取るには、ユーザーには適切な読み取り権限が必要です。

  • Atlas に保存されるデータは、常にボリューム(ディスク)レベルで暗号化されます。

  • クライアントとサーバー間の転送は常に完全に暗号化されます。

また、カスタマー キー管理を有効にして、クラウドAtlasのキー(例: Amazon Web Services KMS 、 Azure Key Vault 、 Google Cloud Platform KMS )。

アプリケーションの各ユーザーに一意のキーが必要な場合は、OAuth プロバイダーを使用するか、 Realm認証プロバイダー認証triggerのいずれかを使用して 64 ビットキーを作成し、そのキーをユーザー オブジェクトに保存できます。

Realm がデバイスに保存するメタデータを暗号化できます。 詳しくは、「アプリ メタデータの暗号化 」を参照してください。

戻る

Realm ファイル サイズの縮小