选择加密算法

加密是多个深度防御之一,可供想要保护 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 算法仅用于支持向后兼容性。 仅当数据库兼容级别为 90 或 100 时,才能使用 RC4 或 RC4_128 对新材料进行加密。 (建议不要使用。)而是使用一种较新的算法,如 AES 算法之一。 在 SQL Server 2012 及更高版本中,使用 RC4 或 RC4_128 加密的数据可以在任何兼容级别进行解密。

在不同数据块上重复使用相同的 RC4 或 RC4_128 KEY_GUID 会导致生成相同的 RC4 密钥,因为 SQL Server 不会自动提供随机数。 重复使用相同的 RC4 密钥是一个已知错误,将导致非常弱的加密。 因此,我们弃用了 RC4 和 RC4_128 关键字。 此功能将在Microsoft SQL Server 的未来版本中删除。 请勿在新的开发工作中使用此功能,并修改当前尽快使用此功能的应用程序。

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

有关 DES 算法的说明:

  • DESX 的名称不正确。 使用 ALGORITHM 创建的对称密钥 = DESX 实际使用 TRIPLE DES 密码和 192 位密钥。 未提供 DESX 算法。 此功能将在Microsoft SQL Server 的未来版本中删除。 避免在新开发工作中使用此功能,并计划修改当前使用此功能的应用程序。

  • 使用 ALGORITHM 创建的对称密钥 = TRIPLE_DES_3KEY将 TRIPLE DES 与 192 位密钥配合使用。

  • 使用 ALGORITHM 创建的对称密钥 = TRIPLE_DES将 TRIPLE DES 与 128 位密钥配合使用。

使用对称密钥进行加密。 CREATE SYMMETRIC KEY (Transact-SQL)
使用非对称密钥进行加密。 创建非对称密钥(Transact-SQL)
使用证书进行加密。 创建证书(Transact-SQL)
使用透明数据加密来加密数据库文件。 透明数据加密 (TDE)
如何加密表的一列。 加密数据列

另请参阅

SQL 服务器加密
加密层次结构