对称密钥加密(或对称加密)是指使用相同的密钥进行加密和解密的一种密码学方案。在过去的几十年中,这种信息加密的方式被广泛应用于政府和军队中的机密通信。如今,对称密钥算法也广泛应用于各种类型的计算机系统中,起到了增强数据安全性的作用。
对称加密方案依赖于两个或多个用户之间共享的相同密钥。相同的密钥被用于对所谓的明文(表示正在编码的消息或数据段)进行加密和解密。加密过程大致概括如下:对明文(作为输入)使用加密算法进行加密,然后加密算法会将明文生成密文(输出)。
如果加密方案足够强大,则人们读取或访问密文信息的唯一方法是使用相应的加密密钥对其进行解密。解密过程基本上是将密文转换回明文。
对称加密系统的安全性基于随机猜测相应密钥以破解它们的难度。例如,使用普通计算机硬件破解128位的密钥至少需要花费数十亿年。加密密钥的位数越长,破解它就越难。 256位的密钥通常被认为是安全度极高的,并且理论上可抵抗量子计算机的暴力攻击。
目前使用的两种最常见的对称加密方案是基于块密码和流密码。分组密码将数据分组成预定大小的块,并且使用相应的密钥和加密算法(例如,128位明文被加密成128位密文)对每个块进行加密。另一方面,流密码不按块加密明文数据,而是以1比特的流增量进行加密(即1比特明文一次加密成1比特密文)。
对称加密是现代计算机系统中加密数据的两种主要方法之一。而另一种就是所谓的非对称加密,有时也称为公钥加密。上述两种方法的主要区别在于非对称加密系统使用两个不同的密钥进行加解密,不同于对称加密中所使用的相同密钥。在非对称加密中,其中一个密钥用于共享(公钥),而另一个密钥必须保密(私钥)。
非对称加密算法使用两个不同的密钥也是其与对称密钥产生功能差异的原因。非对称算法比对称算法更复杂,运算速度更慢。因为非对称加密中使用的公钥和私钥在某种程度上是算数相关的,所以密钥本身也必须足够长,以此达到与对称加密算法(使用较短加密密钥)相同的安全级别。
在许多现代计算机系统中采用对称加密算法来增强数据安全性和用户隐私。在安全消息传递应用程序和云存储中广泛使用的高级加密标准(AES)是对称密码的一个常见用例。
除软件实现外,AES还可以直接在计算机硬件中实现。基于硬件的对称加密方案通常利用AES 256,它是高级加密标准的特定变体,密钥长度为256位。
值得注意的是,比特币的区块链并没有像大多数人所认为的那样使用加密。与之相对的,它使用了一种称为椭圆曲线数字签名算法(ECDSA)的特殊数字签名算法(DSA),该算法在不使用加密算法的情况下生成数字签名。
一个常见的混淆点是ECDSA基于椭圆曲线加密(ECC),后者还可以应用于多种不同的任务,包括加密、数字签名和伪随机生成器。但是,ECDSA本身根本不能用于加密。
对称加密算法可以提供相对较高的安全级别,同时支持快速加密和解密消息。对称加密系统的相对便捷性在逻辑上也是一种优势,因为它们比非对称系统消耗更少的计算资源。此外,对称加密提供的安全性可以通过增加密钥长度来实现。随着对称密钥长度的增加,暴力攻击破解加密的难度也呈指数增长。
虽然对称加密能够提供诸多优势,但是也存在一个严重的缺点:用于加密和解密数据的密钥是相同的。当这些密钥在不安全的网络连接中共享时,它们很容易被恶意的第三方拦截。如果未经授权的用户获得对特定密钥的访问权限,则使用该密钥加密数据安全性都会受到破坏。为了解决这个问题,许多Web协议使用对称和非对称加密的组合来建立安全连接。这种混合协议最常见的例子是传输层安全加密协议(TLS),该协议被用于保护现代互联网上大部分的网络连接。
还应注意,由于实施的不当,所有类型的计算机加密都会受到漏洞影响。虽然足够长的密钥在数学上可使暴力攻击失效,但程序员的错误配置,常常也会产生漏洞,为网络攻击者开辟新的道路。
由于对称加密的运算速度相对较快,易于使用和安全性较高,对称加密被广泛应用于互联网流量防护和云服务器上的数据保护等各种应用中。而为了解决传输密钥的安全问题,它经常与非对称加密配合使用,但对称加密方案仍然是现代计算机安全的关键组成部分。