选择加密算法
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)
加密是希望保护 SQL Server 实例安全的管理员可以采用的多种防御方法之一。
加密算法定义了未经授权的用户无法轻松逆转的数据转换。 管理员和开发人员可以从 SQL Server 的多种算法中选择,包括 DES、三重 DES、TRIPLE_DES_3KEY、RC2、RC4、128 位 RC4、DESX、128 位 AES、192 位 AES 和 256 位 AES。
从 SQL Server 2016 (13.x) 开始,除 AES_128
、AES_192
和 AES_256
以外的所有算法都已弃用。 若要使用旧算法(不推荐),必须将数据库的数据库兼容级别设置为 120 或更低。
如何选择正确的算法
没有单一算法能够解决所有问题,有关每种算法优势的说明不属于本文的讨论范畴。 但是,下列一般原则适应于:
强加密通常会比较弱的加密占用更多的 CPU 资源。
长密钥通常会比短密钥生成更强的加密。
非对称加密比对称加密速度慢。
复杂的长密码比短密码更强。
仅在本地存储密钥时,建议使用对称加密。 需要通过网络共享密钥时,建议使用非对称加密。
如果正在加密大量数据,应使用对称密钥来加密数据,并使用非对称密钥来加密该对称密钥。
加密数据无法压缩,但可以加密压缩数据。 如果使用压缩,应在加密前压缩数据。
有关加密算法和加密技术的更多信息,请参阅“密钥安全概念”。
弃用的 RC4 算法
RC4 算法仅用于支持向后兼容性。 仅当数据库兼容级别为 90 或 100(不推荐)时,才能使用 RC4
或 RC4_128
对新材料进行加密。 而是使用一种较新的算法,如 AES 算法之一。 在 SQL Server 2012 (11.x) 及更高版本中,可以在任何兼容性级别对使用 RC4
或 RC4_128
加密的材料进行解密。
对不同数据块重复使用相同的 RC4
或 RC4_128
KEY_GUID
将产生相同的 RC4 密钥,因为 SQL Server 不会自动提供 salt。 重复使用相同的 RC4 密钥是已知错误,将导致加密不可靠。 因此,不推荐使用 RC4
和 RC4_128
关键字。 在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。
关于 DES 算法的说明
DESX 的命名不正确。 使用 ALGORITHM = DESX
创建的对称密钥实际上使用的是具有 192 位密钥的 三重 DES 密码。 不提供 DESX 算法。 在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。
使用 ALGORITHM = TRIPLE_DES_3KEY
创建的对称密钥使用的是具有 192 位密钥的三重 DES。
使用 ALGORITHM = TRIPLE_DES
创建的对称密钥使用的是具有 128 位密钥的三重 DES。