MongoDB クライアント側のフィールドレベルの暗号化を使用して、データの暗号化と復号化を行っています。しかし、プログラムを実行するたびに、元のバイナリキーが変更されることに気づきました。これにより、新しいキーで復号化できないため、以前に暗号化されたデータを取得することが困難になります。
MongoDB でクライアント側のフィールドレベル暗号化の一貫した暗号化キーを維持する方法はありますか?もしそうなら、どうすればよいでしょうか?
https://www.mongodb.com/docs/manual/core/csfle/fundamentals/manual-encryption/#std-label-csfle-fundamentals-manual-encryption
https://go.dev/play/p/6W8e0OiPV2L
MongoDB コミュニティ プロジェクトにクライアント側のフィールド レベルの暗号化を実装して、ドキュメント内の特定のフィールドがデータベースに保存される前に暗号化され、データベースから取得するときに復号化されるようにしようとしています。
MongoDB のドキュメントに従って、プログラムを初めて実行したときにデータの暗号化と復号化に成功しました。しかし、プログラムを再度実行するたびにキーが変わることに気づき、キーを同じに保ちたいと考えています。
次の行は削除する必要があります:
リーリー次の行は、キーがまだ存在しない場合にのみ必要です:
リーリーおそらく最初に clientenc.getkeybyaltname
を呼び出して、キーが存在するかどうかを確認します。
「元のバイナリ キーが変更される」ということは、データ暗号化キー (dek) が変更されることを意味していると思います。これは、dek が保存されているコレクションが削除されることが原因で発生します。
「キーとキー コンテナー」を参照してください:
カスタマー マスター キー (cmk) は、データ暗号化キー (dek) の暗号化に使用するキーです....データ暗号化キー (dek) は、mongodb ドキュメント内のフィールドを暗号化するために使用されるキーです。データ暗号化キーは、cmk...
を使用して暗号化されたキー コンテナー コレクションに保存します。
データ暗号化キー (dek) を削除すると、その dek で暗号化されたすべてのフィールドが永久に読み取れなくなります。cmk を削除すると、その cmk を使用して暗号化された dek によって暗号化されたすべてのフィールドは永久に読み取ることができなくなります。
以上がMongoDB クライアントのフィールドレベル暗号化で一貫した暗号化キーを維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。