Overview
MongoDB PHPライブラリでは、 使用中の暗号化と呼ばれる機能のセットを使用して、特定のドキュメントフィールドを暗号化できます。 使用中の暗号化により、アプリケーションはMongoDBに送信する前にデータを暗号化し、暗号化されたフィールドを持つドキュメントをクエリできます。
使用中の暗号化は、 MongoDBに送信されるとき、または 暗号化されたデータベース内にあるときに権限のないユーザーがプレーンテキスト データを表示するのを防ぎます。 アプリケーションで使用中の暗号化を有効にし、そのアプリケーションがデータの復号化を許可するには、アプリケーションのみがアクセスできる暗号化キーを作成する必要があります。 暗号化のキーにアクセスできるアプリケーションのみが、復号されたプレーンテキスト データにアクセスできます。 攻撃者がデータベースへのアクセスを取得した場合、暗号化のキーにアクセスできないため、暗号化された暗号化された暗号化データのみが表示されます。
使用中の暗号化を使用して、次のタイプの機密データを含むMongoDBドキュメント内のフィールドを暗号化できます。
クレジット カード番号
住所
ヘルス情報
金融情報
その他の機密情報または個人を特定できる情報(PII)
MongoDBは、使用中の暗号化を有効にするために次の機能を提供しています。
Queryable Encryption
Queryable Encryption (QE) は、使用中の暗号化機能で、一意に暗号化されたフィールド値のクエリをサポートする機能です。MongoDB Server 7.0 以降は QE 等式クエリをサポートします。MongoDB Server 8.0 以降は QE 範囲クエリもサポートします。
Queryable Encryptionの詳細については、 MongoDB Serverマニュアルの「 Queryable Encryption 」を参照してください。
クライアントサイドのフィールド レベル暗号化
クライアント側フィールド レベル暗号化(CSFLE)は、暗号化されたフィールドの等価性検索をサポートしています。CSFLE は、フィールドを暗号化するために決定的またはランダムな暗号化アルゴリズムのいずれかを選択できる点でQueryable Encryptionと異なります。CSFLE を使用している場合は、決定的な暗号化アルゴリズムを使用する暗号化されたフィールドのみをクエリできます。
CSFLE のフィールドを暗号化するためにランダムな暗号化アルゴリズムを使用する場合、それらは復号化できますが、それらのフィールドに対して等価クエリを実行することはできません。Queryable Encryptionを使用する場合、暗号化アルゴリズムを指定することはできませんが、すべての暗号化されたフィールドをクエリできます。
値を確定的に暗号化すると、同じ入力値によって同じ出力値が生成されます。 決定的な暗号化を使用すると、暗号化されたフィールドに対してクエリを実行できますが、濃度の低い暗号化データは、頻度分析によるコードの影響を受けやすくなります。
CSFLEの詳細については、 MongoDB Serverマニュアルの「CSFLE」を参照してください。