SQL Server 对称秘钥的加密算法

MD5和SHA-1算法都先后被密码学家王小云破解,SQL Server对称秘钥加密算法还安全吗?前文说明TDE的时候,使用了AES_256,SQL Server对称秘钥加密算法还有有哪些?哪些算法可用,有哪些区别?

当我们讨论对称秘钥的时候,这些算法或者通过输入未加密数据返回加密数据,或者输入加密数据返回解密数据。为了达到这样的目的,他们使用了秘钥,并且无论是加密还是解密,秘钥都相同。在加密算法方面,对称加密算法要比非对称加密算法快得多。因此,它们是在SQL Server中加密数据的最佳选择。

SQL Server 2005为我们提供了如下对称加密算法(你可以在创建对称秘钥的参数中指定它们):

  • DES(DES)

  • 128位秘钥Triple DES 算法(TRIPLE_DES)

  • 192位秘钥Triple DES 算法(DESX)

  • RC2(RC2)

  • RC4(RC4)

  • 128位秘钥的RC4算法(RC4_128)

  • 128位秘钥的AES算法(AES_128)

  • 192位秘钥的AES算法(AES_192)

  • 256位秘钥的AES算法(AES_256)

我提到192位秘钥的Triple DES算法,但却说它是DESX。这是弄错了吗?SQL Server更新版本的在线说明声明,SQL Server 不再使用DESX算法。为保持微软的命名约定,TRIPLE_DES 应该是TRIPLE_DES_128,而DESX应该是TRIPLE_DES_192。

注意:微软已经表示,由于DESX在那里是不正确的,它的使用应该逐步淘汰。它将在SQL Server的后续版本中删除。

SQL Server 2008 引入了

  • 192位秘钥的Triple DES(TRIPLE_DES_3KEY)

很显然,因为DESX不应该使用,如果你先使用192位秘钥的DES,那么就使用TRIPLE_DES_3KEY、

SQL Server 2008R2、SQL Server 2012、SQL Server2014、SQL Server 2016、SQL Server 2017、SQL Server 2019没有再增加新的对称秘钥加密方式,只是从 SQL Server 2016 (13.x)开始,除 AES_128, AES_192, 和AES_256 都被废弃了。

有这么多算法,你应该选择哪个呢?和哈希算法不同,除了安全外还有其他用途,这些算法仅仅是加密算法。因此,你可以选择的只有秘钥了。你想要的算法是在可以预见的将来仍然是安全的。在这种前提下,你需要做的是:

尽量避免在对称加密中使用这些算法:

我们将在这里指定两种类型的算法。第一种是对称加密算法被认为是被破解的,要么是因为计算能力赶上了它们,要么是因为存在可以利用的漏洞。第二个是SQL Server以弱化或错误的方式实现的算法。在撰写这篇文章时,以下算法属于这一列表:

  • DES:一个56位秘钥算法,已经过时很多年了。现在,这个秘钥能够很快被破解(不需要1天的时间),使得其变为过时的算法。

  • DESX:如前面讨论的,DESX不是真正的DES-X算法,微软已经将其淘汰。

  • RC2 :分组加密算法,与其他对称算法相比,RC2并没有被大量使用。也没有对其做太多的研究,已知有几个针对它的攻击。当然,在假定其不常用的前提下,最好可以跳过它。

  • RC4:一种可由40-128位可变长度密钥实现的流密码。这个选择在SQL Server中是不足128位的。SQL Server是以弱化的方式实现它的。所以微软在线文档上指示在开发中不要使用这个算法,将来可能会被淘汰(已经淘汰)。

  • 128位秘钥的 RC4:和RC4一样,SQL Server也是通过弱化的方式实现它的。

  • 128位秘钥实现的Triple DES:使用的是DES,但是经过了三个序列化的步骤。这使用了秘钥选项2,这意味着128位实际上是由两个不同的键组成的。

  • 192位秘钥实现的Triple DES:和128位秘钥实现的DES相同,除了是192位秘钥实现的外。这使用秘钥选项1,这意味着192位实际上是由3个不同的秘钥组成。

可以预见的未来还是安全的加密算法:

  • 128位秘钥实现的AES:高级加密标准(AES:Advanced Encryption Standard)算法,以前被称为Rijndael。使用128位秘钥。虽然有一种攻击比蛮力攻击更快,但从时间的角度来看,这仍然是不可能的。

  • 192位秘钥实现的AES,同上

  • 256位秘钥实现的AES,同上

想要使用对称秘钥加密的朋友们,AES是您最近最佳选择。已经使用其他算法加密的朋友们,更改您的加密算法吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章