Il existe un support par défaut pour AES-256 dans Realm mais pouvons-nous changer l'algorithme de cryptage à autre chose que AES-256 ??Un algorithme différent peut-il être utilisé dans le chiffrement de domaine (autre que AES-256)?
0
A
Répondre
2
Réponse courte: Non, ce n'est pas un système enfichable dynamiquement.
Le cryptage AES est cuit dans realm-core
, la bibliothèque partagée C++
, au moment de la compilation et utilise les différentes fonctionnalités de la plate-forme disponible crypto (basé sur le matériel OS /). Il est open source, donc en théorie, vous pouvez écrire un fournisseur différent et gérer les changements de méthodes comme realm::util::encryption_read_barrier
et realm::util::encryption_write_barrier
comme nécessaire ... ou éventuellement faire un contrat payé avec Realm en fonction de vos exigences de chiffrement personnalisé.
Re: https://github.com/realm/realm-core/blob/master/src/realm/util/aes_cryptor.hpp
class AESCryptor {
public:
AESCryptor(const uint8_t* key);
~AESCryptor() noexcept;
void set_file_size(off_t new_size);
bool read(FileDesc fd, off_t pos, char* dst, size_t size);
void write(FileDesc fd, off_t pos, const char* src, size_t size) noexcept;
private:
enum EncryptionMode {
#if REALM_PLATFORM_APPLE
mode_Encrypt = kCCEncrypt,
mode_Decrypt = kCCDecrypt
#elif defined(_WIN32)
mode_Encrypt = 0,
mode_Decrypt = 1
#else
mode_Encrypt = AES_ENCRYPT,
mode_Decrypt = AES_DECRYPT
#endif
};
#if REALM_PLATFORM_APPLE
CCCryptorRef m_encr;
CCCryptorRef m_decr;
#elif defined(_WIN32)
BCRYPT_KEY_HANDLE m_aes_key_handle;
#else
AES_KEY m_ectx;
AES_KEY m_dctx;
#endif
uint8_t m_hmacKey[32];
std::vector<iv_table> m_iv_buffer;
std::unique_ptr<char[]> m_rw_buffer;
std::unique_ptr<char[]> m_dst_buffer;
void calc_hmac(const void* src, size_t len, uint8_t* dst, const uint8_t* key) const;
bool check_hmac(const void* data, size_t len, const uint8_t* hmac) const;
void crypt(EncryptionMode mode, off_t pos, char* dst, const char* src, const char* stored_iv) noexcept;
iv_table& get_iv_table(FileDesc fd, off_t data_pos) noexcept;
};
Je suis très curieux de savoir pourquoi vous voudriez changer l'algorithme de chiffrement est utilisé, et quel algorithme vous souhaitez utiliser à la place. – bdash