选择加密算法

加密是希望保护 SQL Server 实例安全的管理员可以采用的多种深度防御方法之一。

加密算法定义了未经授权的用户无法轻易逆转的数据转换。SQL Server 允许管理员和开发人员从多种算法中进行选择,其中包括 DES、Triple DES、TRIPLE_DES_3KEY、RC2、RC4、128 位 RC4、DESX、128 位 AES、192 位 AES 和 256 位 AES。

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

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

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

  • 非对称加密比使用相同密钥长度的对称加密更强,但速度相对较慢。

  • 使用长密钥的块密码比流密码更强。

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

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

  • 不能压缩已加密的数据,但可以加密已压缩的数据。如果使用压缩,应在加密前压缩数据。

重要说明重要提示

对不同数据块重复使用相同的 RC4 或 RC4_128 KEY_GUID 将导致产生相同的 RC4 密钥,因为 SQL Server 不自动提供 salt。重复使用相同的 RC4 密钥是已知错误,将导致加密非常不可靠。因此,不推荐使用 RC4 和 RC4_128 关键字。后续版本的 Microsoft SQL Server 将删除该功能。请不要在新的开发工作中使用该功能,并尽快修改当前还在使用该功能的应用程序。

有关加密算法和加密技术的详细信息,请参阅 MSDN 的 .NET Framework 开发人员指南中的重要安全性概念

关于 DES 算法的说明:

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

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

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