Docs Menu
Docs Home
/ /
Realm ファイル

Realm の暗号化 - .NET SDK

Realm を暗号化して、ディスクに保存されたデータをアプリケーション外で読み取れないようにすることができます。 ディスク上の Realm ファイルを AES-256 + SHA-2 で暗号化するには、Realm を開くときに 64 バイトの暗号化キーを指定します。

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

警告

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

注意

既存の暗号化されていない Realm を暗号化できません

Realm は、初めて開くときに暗号化する必要があります。 暗号化キーを含む構成を使用して、暗号化されていない既存の Realm を開こうとすると、Realm はエラーをスローします。

以下は、Realm を暗号化する際に考慮する必要があるキーへの影響です。

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

アプリは暗号化のキーを安全に保存する必要があり、通常はターゲット プラットフォームのセキュリティで保護されたキーと値のストレージに、他のアプリがキーを読み取れないようにする必要があります。例、Maui Secure Storage または Xamarin Secure Storage を使用して、基礎となるストレージへのアクセスを簡素化できます。最終的に、攻撃者がキーにアクセスできないようにするのは開発者の責任です。

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

重要

Realm インスタンスを取得するたびに、同じ暗号化キーを提供する必要があります。 暗号化された Realm に対してキーを指定しない場合、または誤ったキーを指定した場合、 GetInstanceを呼び出すとRealmFileAccessErrorExceptionが発生します。

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

アプリケーションの各ユーザーに一意のキーが必要な場合は、OAuth プロバイダー(MAUI.Auth など)や Xamarin.Auth など)、または Realm認証プロバイダー認証トリガー のいずれかを使用して 64-ビット キーを作成し、そのキーを ユーザーオブジェクト に保存します。

バージョン 11.0.0 で変更

Realm .NET SDK バージョン 11.0.0 以降では、 Realm は、複数のプロセスで同じ暗号化された Realm を開くことをサポートしています。

Realm .NET SDK の以前のバージョンでは、複数の プロセスから同じ暗号化された Realm を開くことはできません。 そのような操作を試みると、次のエラーがスローされます。「暗号化されたプロセス間共有は現在サポートされていません。

警告

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

次のコードは、暗号化キーを生成し、暗号化された Realm を開く方法を示しています。

// Check if we already have a key stored in the platform's secure storage.
// If we don't, generate a new one:
var encryptionKey = new byte[64];
using var rng = RandomNumberGenerator.Create();
rng.GetBytes(encryptionKey);
// Store the key securely to be used next time we want to open the Realm.
// Create configuration.
var config = new RealmConfiguration
{
EncryptionKey = encryptionKey
};
// Open or create a realm with the encryption key.
var realm = Realm.GetInstance(config);

戻る

Realm ファイル サイズの縮小

項目一覧