选择加密算法

适用于: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_128AES_192AES_256 以外的所有算法都已弃用。 若要使用旧算法(不推荐),必须将数据库的数据库兼容级别设置为 120 或更低。

如何选择正确的算法

没有单一算法能够解决所有问题,有关每种算法优势的说明不属于本文的讨论范畴。 但是,下列一般原则适应于:

  • 强加密通常会比较弱的加密占用更多的 CPU 资源。

  • 长密钥通常会比短密钥生成更强的加密。

  • 非对称加密比对称加密速度慢。

  • 复杂的长密码比短密码更强。

  • 仅在本地存储密钥时,建议使用对称加密。 需要通过网络共享密钥时,建议使用非对称加密。

  • 如果正在加密大量数据,应使用对称密钥来加密数据,并使用非对称密钥来加密该对称密钥。

  • 加密数据无法压缩,但可以加密压缩数据。 如果使用压缩,应在加密前压缩数据。

有关加密算法和加密技术的更多信息,请参阅“密钥安全概念”。

弃用的 RC4 算法

RC4 算法仅用于支持向后兼容性。 仅当数据库兼容级别为 90 或 100(不推荐)时,才能使用 RC4RC4_128 对新材料进行加密。 而是使用一种较新的算法,如 AES 算法之一。 在 SQL Server 2012 (11.x) 及更高版本中,可以在任何兼容性级别对使用 RC4RC4_128 加密的材料进行解密。

对不同数据块重复使用相同的 RC4RC4_128 KEY_GUID 将产生相同的 RC4 密钥,因为 SQL Server 不会自动提供 salt。 重复使用相同的 RC4 密钥是已知错误,将导致加密不可靠。 因此,不推荐使用 RC4RC4_128 关键字。 在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

关于 DES 算法的说明

DESX 的命名不正确。 使用 ALGORITHM = DESX 创建的对称密钥实际上使用的是具有 192 位密钥的 三重 DES 密码。 不提供 DESX 算法。 在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

使用 ALGORITHM = TRIPLE_DES_3KEY 创建的对称密钥使用的是具有 192 位密钥的三重 DES。

使用 ALGORITHM = TRIPLE_DES 创建的对称密钥使用的是具有 128 位密钥的三重 DES。