詳細情報:
データベース暗号化プロセス
Salesforce のデータベース暗号化はフラグメントレベルで動作し、通常は 64KB 以下のチャンクでデータを暗号化および復号化します。
暗号化プロセス
データベース暗号化が有効になっている場合、ユーザーがデータを保存すると、データベース暗号化サービスは暗号化された鍵キャッシュから必要な暗号化鍵を取得しようとします。鍵がキャッシュにない場合、サービスは地域の鍵管理システム (KMS) にデータベーステナントの秘密を要求します。KMS と暗号化サービス間のデータ転送は、定期的に循環される証明書を使用して、相互 TLS (mTLS) プロトコルで保護されます。取得したテナントの秘密は、暗号化鍵キャッシュに保存されます。
データベースフラグメントを書き込む準備が整うと、暗号化サービスはフラグメントごとに一意の salt を生成します。この salt は、データベーステナントの秘密と共に鍵派生関数 (KDF) に入力され、その特定のフラグメントの一意のデータ暗号化鍵 (DEK) を取得します。その後、OpenSSL AESGCM-256 を使用してフラグメント全体が暗号化されます。 フラグメントごとの salt と、使用される鍵素材の識別子は、暗号化されたフラグメントと共にデータベースに保存されます。
復号化プロセス
認証済みユーザーが暗号化データを要求すると、データベース暗号化サービスは関連する暗号化データベースフラグメントを、関連付けられたフラグメントごとのソルト、および暗号化中に使用されたテナントの秘密への参照と共に取得します。サービスはまず、一致する DEK の鍵キャッシュを確認します。見つからなかった場合は、データベーステナントの秘密を (mTLS によって保護されている) リージョン KMS に要求し、キャッシュに保存します。次に、データベースは取得したテナントの秘密と KDF のフラグメントごとの salt を使用して、正しい DEK を取得します。最後に、データが復号化されてユーザーに返されます。
