ホームページ  >  記事  >  バックエンド開発  >  MongoDB クライアントのフィールドレベル暗号化で一貫した暗号化キーを維持するにはどうすればよいですか?

MongoDB クライアントのフィールドレベル暗号化で一貫した暗号化キーを維持するにはどうすればよいですか?

王林
王林転載
2024-02-06 09:00:13494ブラウズ

MongoDB クライアントのフィールドレベル暗号化で一貫した暗号化キーを維持するにはどうすればよいですか?

質問の内容

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 サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。