1)应用层加密
正如它的名字所暗示的,应用层加密是由使用数据库来存储信息的应用程序来执行。应用程序开发人员通常在发送数据到数据库之前,会利用第三方加密库来加密数据,当从数据库中读取数据时再进行解密。
这种加密方法有几个有点,数据和加密密钥不是存储在数据库,这样,平台或者数据库管理员都不能访问它们。此外,应用程序开发人员来决定加密的数据,以及细粒度的水平。
不过,这种方法也存在缺点:很难将应用层的加密调整用于传统应用程序;每个读取和写入操作(SQL查询)的数据库必须使用加密,这需要巨大的成本来 开发和测试。此外,对于加密的数据,企业不能使用一些数据库功能,例如索引。由于加密输出是随机的,加密数据元素的排序也将是随机的。
最后,加密的数据通常是二进制格式,这意味着表格必须重构为接受二进制,而不是传统的文本、数据或货币数值。总之,应用层加密提供最高的安全性,同时需要付出最高的成本和部署时间。
(2)本地数据库对象加密
所有主流关系型数据库供应商都会提供一种或者多种类型的加密,首先,我们称之为“本地数据库对象加密”,因为加密引擎位于数据库内部。加密属于数据 库代码的一部分,你可以将其配置为保护特定的数据库对象(例如表格和模式)。密钥保存在数据库内部,在系统表格中,这样当重新启动时,它们也可以访问到数 据库。
本地对象加密的优势是,它是完全自足的加密方法。这种方法对于媒体加密很有效,因为在复制到存储驱动器或磁带备份之前,数据已经被加密了。