数据库加密
有关 SmartEDB 对数据库数据和网络通信的保护示例,请参阅数据库安全网页。
SmartEDB提供了使用标准AES加密算法或自定义加密实现来保护内存中数据库和持久数据库的功能。此外,还可以对数据库快照和备份文件进行加密。(有关SmartEDB如何保护数据库数据和网络通信的详细信息,请参阅数据库安全网页。)
内存数据库加密
要启用内存中(瞬态)数据库页面的加密,您只需指定一个加密密钥并设置MCO_DB_INMEMORY_PROTECTION模式掩码。默认情况下,SmartEDB使用AES算法进行加密(这也是SmartEDB包中提供的唯一选项)。请注意,内存加密功能不适用于持久数据库或混合数据库(即包含持久类和瞬态类的数据库),更多详情请参见下面的持久数据库加密部分。
AES算法加密由您的开发平台上的SmartEDB AES加密库实现。对于C和C++应用程序,您可以通过实现特定的C函数来替换为自定义加密算法,这些函数的存根在单独的“存根”库中提供。(如需了解更多细节,请参阅C语言中的数据库加密页面。)
目前,JNI和.NET Framework包装器尚不支持内存数据库加密。
持久数据库加密
如果指定了加密密钥,SmartEDB磁盘管理器将使用当前链接库中实现的算法(默认为AES)加密数据库页面和日志文件。要打开现有的加密数据库,必须使用完全相同的加密密钥。(请注意,加载到主存中的数据库页是未加密的。)
对于持久存储上的数据加密,在C应用程序中,通过传递给mco_db_open_dev()的参数结构(mco_db_params_t)中的cipher_key元素进行控制。Java应用程序则通过设置Database.Parameters字段cipherKey,而C#应用程序通过设置CipherKey来实现。如果此参数不为NULL,则页面在保存到“磁盘”之前会使用AES或自定义加密算法进行加密,并在从“磁盘”加载时解密。每个页面都是单独加密的。
事务日志加密
当使用SmartEDB事务日志功能时,如果指定了加密密钥,事务日志也会被加密。要播放或迭代日志,需要使用相同的加密密钥。