常用的加密算法,你知道几种?
随着信息安全在我们的日常生活中变得越来越重要,在这么多年之间有越来越多的加密算法走入了我们的视野。对于日常常用的这些加密算法,你知道几种呢?这些加密算法之间又存在什么区别呢?
今天笔者将为你科普一下我们日常生活中见得最多的一些加密算法都有什么样的特点。
对称加密
如果你使用过科学上网工具那么你肯定对加密算法的名称比较熟悉,但是你接触到的加密算法只是加密算法的一半,即对称加密。
对称加密指的是采用单钥密码系统加密的一类加密方法,这类加密方法的共性就是同一个密钥可同时用作信息的加密与解密,适合数据量大的时候使用,目前对称加密我们见得比较多的有AES、RC4等加密算法,其中AES算法是我们生活中相当常用的加密算法,压缩包的加密采用的就是这一种加密算法。
AES全称为“Advanced Encryption Standard”,即高级加密标准,最早于2001年11月发布并在2002年5月成为一个有效的标准。这个看上去已经有点年代的加密标准一直沿用至今。
AES根据其加密密钥位数的不同又分为了AES-128、AES-192、AES-256等,由于AES算法的安全性、稳定性,在日常生活中我们使用AES-256加密来加密一些电脑中的敏感数据等是绝对安全的,即使是在实际商业应用的生产环境中,AES-128都是够用的,更别说AES-256了。
由于AES-256的满轮攻击复杂度为2^254.4,以目前计算机的算力根本无法实现对AES-256加密的暴力破解。
AES根据加密模式的不同又分为ECB(电码本模式)、CBC(密码分组链接模式)、CFB(输出反馈模式)、OFB(密码反馈模式)、CTR(计算器模式)五个模式,每个模式的对密文的处理是不同的,最后输出的密文是不一样的。理论上这几种加密模式没有绝对的安全和不安全,各种模式的安全性因使用环境而异,这里笔者不对这五种加密模式的差异做详细阐述。
我们日常生活中还用到的一个比较常见的算法是RC4,RC4从时间线上看比AES要古老不少,RC4算法在80年代就问世了,至今仍然有开发者在使用这种加密算法,但是由于这种加密算法本身设计上存在缺陷导致其安全性在现今的生产环境中得不到保证,所以开发者们也都在尽量减少使用这种加密算法。
除了AES、RC4外对称加密算法还有DES、3DES等,由于这些加密算法安全性上都不如AES,所以我们在日常生活中见得也很少。
非对称加密
非对称加密指的是拥有两个密钥的加密方法,这两个密钥一个叫公钥,一个叫私钥,如果数据用公钥加密,那么它只能用对应的私钥解密。
非对称加密的优点在于通信双方的私钥可以是不同的,而双方的公钥则是对方公开的,用于加密。公钥即使被截获,没有对应的私钥加密信息是无法解开的,而且即使通信双方中的一方泄漏了私钥,也只能解开通信中单路的数据。
但是非对称密钥有一个明显的缺点就是慢,它并不适合大量数据的加密。目前我们日常生活中最常见的就是RSA加密算法。
RSA在很多网络通信中有很广泛的使用,我们接触到的比较多的应该是SSH,这是一个用于登陆远程主机执行指令的协议,有的应用基于Socket(套接字)的数据传输也会使用RSA对传输内容进行加密。
从加密强度上看RSA并不如AES,即使是1024位密钥加密的RSA-1024也达不到密钥位数仅128位的AES-128的加密强度,也就是说从现在的技术水平来看RSA已经不安全了,但是至今仍然还有协议或应用在使用RSA。
不可逆加密
上述提到的加密算法不论是对称加密还是非对称加密都是可逆的,即我们可以通过密钥还原出原文,但是不可逆加密则是一种特殊的算法,这样的算法算出的密文无法解密,但是算法的密文具有相同的特征(例如位数及一些密文特征),且在同一个算法上同样的输入会得到同样的输出。
基于不可逆加密的这一特质,不可逆加密在日常应用中往往作为一种安全的效验手段,目前不可逆加密已经在我们的日常生活中相当广泛地存在着,我们每天登陆QQ、微信所要输入的密码就会通过不可逆加密算法加密之后传输给服务器进行效验。
由于不可逆加密无法还原出原文,所以服务器在存储密码的时候通常存储的是不可逆加密算法计算出的密文,这样一来即使黑客盗走了存在服务器数据库中存储的密码,用户的帐号仍然是安全的。
目前比较常见的不可逆加密算法有MD5、SHA这两种,我们下载软件、电影等资源的时候经常可以在网上看到文件的MD5效验码或是SHA效验码,所谓的效验码就是文件数据在使用这种加密算法计算后得到的密文。
MD5算法我们接触得应该是最多的,它支持任意长度的数据输入,输出的数据是定长的,只要输入的数据中有一个字节发生了改变,输出的MD5千差万别,MD5由于其计算简单、使用方便,通常用于对文件进行效验。
SHA实际上是一族不可逆加密算法,分为SHA-0、SHA-1、SHA-2(SHA-256、SHA-384、SHA-512)三代,SHA的加密算法是杂凑算法,其中SHA-2在目前来看还是相对安全的一个加密算法,SHA-0早在2004年就被低复杂度碰撞破解,而SHA-1在去年被Google证明可以从原理上破解,只是这种破解需要相当恐怖的算力,不过这已经标志着SHA-1已经不安全了。
MD5虽然也有强抗碰撞性,但是目前来看MD5已经无法作为一个安全的加密算法来使用,因为目前MD5已经有了数据量足够大的解密库,所以MD5更多地只能做为一种效验算法使用。
破解
然而不论是上述的可逆加密还是不可逆加密,使用暴力的方法都是可以进行破解的,只不过基于目前硬件的算力,上述算法中不少算法有很高的安全性。
但是随着量子计算时代的逐步靠近,很多现阶段的安全加密算法都将变得不再安全,虽然即使是在算法精良的情况下破解这些加密的复杂度仍然极高,但是在强大算力的加持下,复杂度将不再成为破解的障碍。
举个例子,SHA1本身在过去的十年间都可以算是相当安全的算法,但Google却利用其彪悍的算力实现了hash碰撞,这意味着在量子计算的高算力条件下,即使是AES这样的加密算法也将不再安全。
随着量子计算的到来,网络空间的安全将会面临新一轮的挑战,不过所幸随着量子计算的到来,量子通信也将随之到来,而量子通信本身有着所谓的“绝对安全”性,而且这种安全性是物理保证的,并不是数学,所以在那个时代我们反而可以对信息安全更为放心。
鉴于目前网络空间的安全性,笔者还是建议大家尽可能把电脑中存放的敏感文件(例如帐号的密码、安全问题的答案、证件的扫描件或照片等)通过加密压缩包等方式进行打包加密,这样的话即使你的电脑收到了病毒等恶意程序的攻击,你的数据也不会被恶意盗用,或者被恶意传播到公网上。