Realm 암호화 - C++ SDK
영역을 열 때 64바이트 암호화 키를 제공하여 디스크에 있는 영역 파일을 AES-256 + SHA-2로 암호화할 수 있습니다.
Realm 은 표준 AES-256 암호화 를 사용하여 데이터를 투명하게 암호화하고 256 512해독합니다. 지정된 비트 암호화 키 의 처음 비트를 사용합니다. Realm 은 256 512비트 암호화 키 의 다른 비트를 사용하여 해시 기반 메시지 인증 코드(HMAC)를 통해 무결성을 검증합니다.
경고
영역 암호화 키에 암호화가 취약한 해시를 사용하지 마십시오. 최적의 보안을 위해 파생된 암호화 키가 아닌 임의의 암호화 키를 생성하는 것이 좋습니다.
db_config에서 set_encryption_key()
함수를 호출하여 영역 을 암호화합니다.
// Check if we already have a key stored in the platform's secure storage. // If we don't, generate a new one. // Use your preferred method to generate a key. This example key is // NOT representative of a secure encryption key. It only exists to // illustrate the form your key might take. std::array<char, 64> exampleKey = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0}; // Store the key securely to be used next time we want to open the database. // We don't illustrate this here because it varies depending on the platform. // Create a database configuration. auto config = realm::db_config(); // Set the encryption key in your config. config.set_encryption_key(exampleKey); // Open or create a database with the config containing the encryption key. auto realm = realm::db(config);
팁
기기에 이미 존재하는 영역은 암호화할 수 없습니다.
C++ SDK는 아직 기기에 이미 존재하는 영역 암호화를 지원하지 않습니다. Realm을 처음 열 때 Realm을 암호화해야 합니다.
키 저장 & 재사용
암호화된 영역을 열 때마다 반드시 동일한 암호화 키를 전달해야 합니다. 키를 제공하지 않거나 암호화된 영역에 잘못된 키를 지정하면 Realm SDK에서 오류가 발생합니다.
앱은 다른 앱이 키를 읽을 수 없도록 암호화 키를 기기에 안전하게 저장해야 합니다.
성능에 미치는 영향
암호화된 영역의 읽기 및 쓰기 속도는 암호화되지 않은 영역보다 최대 10% 느릴 수 있습니다.
암호화 및 Atlas Device Sync
동기화된 Realm 암호화
동기화된 영역을 암호화할 수 있습니다.
Realm은 기기의 데이터만 암호화하고 암호화되지 않은 데이터는 Atlas 데이터 소스에 저장합니다. Atlas 데이터 소스에 대한 액세스 권한이 있는 모든 사용자는 데이터를 읽을 수 있지만 다음 사항은 여전히 적용됩니다.
사용자는 동기화된 데이터를 읽을 수 있는 올바른 읽기 권한이 있어야 합니다.
Atlas에 저장된 데이터는 항상 볼륨(디스크) 수준에서 암호화됩니다.
클라이언트와 서버 간의 전송은 항상 완전히 암호화됩니다.
고객 키 관리 를 활성화하여 클라우드 제공자의 키를 사용하여 저장된 Atlas 데이터를 암호화할 수도 있습니다(예: Amazon Web Services KMS, Azure Key Vault, GCP KMS).
애플리케이션의 각 사용자에 대해 고유한 키가 필요한 경우 OAuth 제공자를 사용하거나 Realm 인증 제공자 중 하나와 인증 trigger 를 사용하여 64비트 키를 만들고 해당 키를 사용자 객체에 저장할 수 있습니다.
메타데이터 암호화
Realm이 기기에 저장하는 메타데이터를 암호화할 수 있습니다. 자세한 내용은 앱 메타데이터 암호화를 참조하세요.