>  기사  >  백엔드 개발  >  MongoDB 클라이언트 필드 수준 암호화에서 일관된 암호화 키를 유지하는 방법은 무엇입니까?

MongoDB 클라이언트 필드 수준 암호화에서 일관된 암호화 키를 유지하는 방법은 무엇입니까?

王林
王林앞으로
2024-02-06 09:00:13492검색

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가 저장된 컬렉션이 삭제되기 때문에 발생합니다.

키 및 Key Vault 보기:

고객 마스터 키(cmk)는 데이터 암호화 키(dek)를 암호화하는 데 사용하는 키입니다....

데이터 암호화 키(dek)는 mongodb 문서의 필드를 암호화하는 데 사용되는 키입니다. cmk를 사용하여 암호화된 Key Vault 컬렉션에 데이터 암호화 키를 저장합니다...

데이터 암호화 키(dek)를 삭제하면 해당 dek으로 암호화된 모든 필드를 영구적으로 읽을 수 없게 됩니다.

cmk를 제거하면 해당 cmk를 사용하여 암호화된 dek로 암호화된 모든 필드를 영구적으로 읽을 수 없게 됩니다.

위 내용은 MongoDB 클라이언트 필드 수준 암호화에서 일관된 암호화 키를 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제