❶ RSA和AES区别
先了解下AES和RSA的区别,前者属于 对称加密 ,后者属于 非对称加密 。
1、对称加密
对称加密就是加密和解密使用同一个密钥。
用数学公示表示就是:
▲加密:Ek(P) = C
▲解密:Dk(C) = P
这里E表示加密算法,D表示解密算法,P表示明文,C表示密文。
是不是看起来有点不太容易理解?看下图:
看过间谍局的知友们一定知道电台和密码本的功能。潜伏里面孙红雷通过电台收听到一堆数字,然后拿出密码本比对,找到数字对应的汉字,就明白上级传达的指令。而军统的监听台没有密码本,只看到一堆没有意义的数字,这就是对称算法的原理。
AES就属于对称加密 ,常见的对称加密方法还有DES、3DES、Blowfish、RC2以及国密的SM4。
2、非对称加密
对称加密快而且方便,但是有个缺点——密钥容易被偷或被破解。非对称加密就可以很好的避免这个问题。
非对称算法 把密钥分成两个 ,一个自己持有叫 私钥 ,另一个发给对方,还可以公开,叫 公钥 ,用公钥加密的数据只能用私钥解开。
▲加密: E公钥(P) = C
▲解密::D私钥(C) = P
这下就不用担心密钥被对方窃取或被破解了,私钥由自己保管。
非对称加密算法核心原理其实就是设计一个数学难题,使得用公钥和明文推导密文很容易,但根据公钥、明文和密文推导私钥极其难。
RSA 就属于非对称加密,非对称加密还有Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)以及国家商用密码SM2算法。
3、AES和RSA
AES和RSA都很安全,至少在目前的计算机体系结构下,没有任何有效的攻击方式。量子计算机时代,RSA有一定的破绽,因为利用shro's algorithm,量子计算机穷举计算质因子速度可以提高N个数量级,能够在有限的时间内破解RSA密钥。AES256至少目前并没有什么明显的漏洞。
AES作为对称加密技术,加密速度很快。 现在高端一点的CPU都带有AES-NI指令,可以极快的完成加密和解密。
举例来说,坚果云存储系统采用了intel 的AES-NI加速,在采用AES加密和解密的时候,
单核的性能可以超过 1GB Byte/秒,非常非常快,很适合对大量数据进行加解密。
但是AES作为对称加密技术,如何安全的分发密钥是一个难题。通过任何方式传递密钥都有泄密的风险。当然,目前我国高大上的量子通信技术或许能很好的解决这个问题。
RSA作为非对称加密技术的代表, 加解密的速度其实相当慢,只能对小块的数据进行加解密。但是其非对称的特点,满足公钥可以随处分发,只有公钥能解密私钥加密的数据,只有私钥能解密公钥加密的数据。所以很适合用来进行密钥分发和身份验证,这两个应用场景刚好相反。
1)用于对称秘钥分发的场景,其他人用公钥加密对称的秘钥,那么只有授权人才持有私钥,因此才能解密获得对应的秘钥,解决了AES密钥分发的难题;
2)对于身份验证的场景,授权人用私钥加密一段指令,其他人用公钥解密对应的数据,验证对应的指令与之前约定的某些特征一致(例如,这段话必须使用四川口音,像是坚果云CEO
的标准四川口音==),如果一致,那么可以确认这个指令就是授权人发出的。
相关趣闻轶事:
RSA除了是一个伟大的发明,被免费开放给所有互联网用户使用。它的发明者还以此成立了一家名为 RSA Security 的网络安全公司,这家公司最后被EMC高价收购。这是德艺双馨的伟大证明, 是“又红又专”的典范。
RSA的算法是以三个发明者的名字命名的,三位都是成功的数学家,科学家和企业家,其中的排名第一Ron Rivest,有非常多的杰出贡献。
RSA是整个互联网数据安全的基础,与光纤处于同样基础和重要的方式。 大部分的加密和解密的应用都是同时应用RSA和AES。
总结
破解加密的难度除了跟 加密方法 有关,还跟 密钥长度 以及 加密模式 有很大的关系,就拿AES来说,有AES128和AES256( 代表密钥长度 ),显然AES256的安全性能比AES128更高,而AES又要四种模式:ECB、CBC、CFB、OFB( 代表加密模式 )。
RSA1024是属于非对称加密,是基于大整数因式分解难度,也就是两个质数相乘很容易,但是找一个大数的质因子非常困难。量子计算机时代,RSA有一定的风险,具体可以参考: 超链接
AES256目前没有明显的漏洞,唯一的问题就是如何安全的分发密钥。
现在大部分的加密解密都是同时应用RSA和AES,发挥各自的优势,使用RSA进行密钥分发、协商,使用AES进行业务数据的加解密。
❷ 对称、非对称加解密、SSL、HTTPS 详细介绍
对称加密:加密和解密使用的是同一个密钥,信息接收双方都需事先知道这个密钥(最常见的对称加密算法是DES、AES)。
温馨提示:阅读下面内容请对照此网站内的图片,有助于理解。 http://www.blogjava.net/yxhxj2006/archive/2012/10/15/389547.html
非对称加密:加密和解密用的是不同的密钥(最常用的非对称加密算法是RSA)。是一对密钥,公钥和私钥,公钥对外公开,私钥由自己保存,公钥可以有很多份拷贝,好比多客户端和单一服务器的网络拓扑结构,每一个客户端上都有一个公钥,服务器有一个私钥,而这个公钥,是服务器发给客户端的。客户端用公钥解密接受来的密文,而这个密文是服务器用私钥加密的。相反,如果客户端向服务器发送请求,客户端是用服务器发来的公钥加密,服务器接收到密文后,用自己的私钥去解密。
1.非对称加密之数字摘要:是采用单向的(不可逆)Hash函数将需要加密的明文加密成一串固定长度(128位)的密文,这一串密文又称为数字指纹,因为不同的明文形成的摘要不同,而相同的明文形成的摘要必定相同。所以叫数字指纹比较贴切。数字摘要是https确保数据完整性和防篡改的根本原因。(Hash函数包括MD5、SHA这些不属于加密算法,因为是不可逆的,只能相当于指纹,而加密算法是可逆的。Base64也是可逆的。)
2.非对称加密之数字签名:做了非对称加密和数字摘要后,用自己的私钥对数字摘要加密后就是“数字签名”,简单的说就是,经过私钥加密的数字摘要就是数字签名。可以把数字签名附到明文上。
这时候发送的密文中就有数字摘要和数字签名,接受者只要用发送者的公钥就能解密签名,得到摘要信息,然后用Hash函数对收到的原文处理产生一个摘要信息,与解密的摘要信息对比。如果相同,说明收到的信息是完整的,在传输的过程中没有被修改。数字签名只能够验证信息的完整性,数据本身是否加密不属于数字签名的控制范围。
3.非对称加密之数字证书:只从“明确发送者身份”和“确保数据完整性”,数字签名就可以完全做到了,但是前提是数字签名所依赖的密钥是真是可靠的才可以。如果接受方所持有的公钥来路有问题或是被替换了,那么,持有对应私钥的人就可以冒充发送方发送明文给接受方,但是接收方并不知道。这里的问题就是:对于接受方来说,它怎么能确定它所得到的公钥一定是从目标主机那里发布的,而且没有被篡改过呢?这时候,我们需要有一个权威的值得信赖的第三方机构(一般是由政府审核并授权的机构)来统一对外发放机构公钥,只要发送方有这种机构的公钥,就避免了上述问题的发生。这种机构被称为证书权威机构(Certificate Authority, CA),它们所发放的包含主机机构名称、公钥在内的文件就是人们所说的“数字证书”。
数字证书的颁发过程一般为:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布。数字证书各不相同,每种证书可提供不同级别的可信度。可以从证书发行机构获得您自己的数字证书。
SSL:是安全协议,SSL建立通信的过程分为两个阶段:握手阶段和传输阶段。下图为握手阶段。
SSL协议在握手阶段使用的是非对称加密(上面介绍的很清楚),在传输阶段使用的是对称加密(简单不多赘述),也就是说在SSL上传送的数据是使用对称密钥加密的!这并不奇怪,因为非对称加密的速度缓慢,耗费资源。其实当客户端和主机使用非对称加密方式建立连接后,客户端和主机就已经决定好了在传输过程中使用的对称加密算法和对称加密密钥,由于这个过程本身是安全可靠的,所以对称加密密钥是不可能被窃取的,因此,保证了在传输过程中对数据进行对称加密也是安全可靠的,因为除了客户端和主机之外,不可能有第三方窃取并解密出对称加密密钥!
HTTPS:HTTPS是由SSL+HTTP协议构建的可进行加密传输、身份认证(确认客户端连接的主机是否是真实正确的主机)的网络协议。HTTPS所能实现的安全保证,正式SSL的功劳。
HTTPS劣势:
https的主要缺点就是性能问题。造成https性能低于http的原因有两个:
1.对数据进行加解密决定了它比http慢。
2.另外一个重要原因的是https禁用了缓存。
相关测试数据表明使用HTTPS协议传输数据的工作效率只有使用HTTP协议传输的十分之一。因此对于一个网站来说,只有那对那些安全要求极高的的数据才会选择使用https进行传输。