赞
踩
加密和解密使用同一个秘钥,所以叫做对称加密。常见的对称加密算法:DES
,AES
等。
其过程可以描述为:
对称加密通常使用的是相对较小的密钥,一般小于256 bit
。如果你的密钥有1 MB
大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off
。
面临的最大的问题为:秘钥的分发。就是说,解密方如何获得加密方的秘钥呢?在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。
DES
全称为Data Encryption Standard
,即数据加密标准。1977年被美国联邦政府的国家标准局确定为联邦资料处理标准,并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。
DES
的密钥长度为64
位,由于第n*8(n=1,2,…8)
是校验位,因此实际参与加密的长度为56
位,密钥空间含有2^56
个密钥。
DES
算法是一种分组加密机制,将明文分成N
个组,然后对各个组进行加密,形成各自的密文,最后把所有的分组密文进行合并,形成最终的密文。
DES
加密算法在计算机速度提升后的今天被认为是不安全的。(可破解)
AES
全称为Advanced Encryption Standard
,即高级加密标准。又称Rijndael
加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES
。
在AES
标准规范中,分组长度只能是128
位,也就是说,每个分组为16
个字节(每个字节8
位)。密钥的长度可以使用128
位、192
位或256
位。密钥的长度不同,推荐加密轮数也不同,如下表所示:
非对称加密之所以不对称,指的就是加密用一个密钥,而解密的时候用的是另外一个密钥。公钥和私钥是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。
(1) A 要向 B 发送信息,A 和 B 都要产生一对用于加密和解密的公钥和私钥。
(2) A 的私钥保密,A 的公钥告诉 B;B 的私钥保密,B 的公钥告诉 A。
(3) A 要给 B 发送信息时,A 用 B 的公钥加密信息,因为 A 知道 B 的公钥。
(4) A 将这个消息发给 B (已经用 B 的公钥加密消息)。
(5) B 收到这个消息后,B 用自己的私钥解密 A 的消息。其他所有收到这个报文的人都无法解密,因为只有 B 才有 B 的私钥。
上面流程来自博客:加解密篇 - 非对称加密算法 (RSA、DSA、ECC、DH)
也就是说,在网上所传递的只是公钥,而对于传递的数据来说,一般都使用(对方)公钥加密、(自己)私钥解密,而私钥自由自己知道,故而可以保证信息不被破解。
虽然信息可以保证不被破解,但是因为其双方公钥公开,故而可以尝试伪造数据。也就是,报文在发送中途存在着被替换的风险,对于A
而言我们需要确保这个数据确实是B
发过来的,而这里就需要使用到数字签名。
我们知道hash
算法不可逆,比如MD5
。对于任意文件或者数据,我们都可以得到一个摘要,即hash
值。
首先可以A
将要发送信息进行Hash
函数,生成信件的摘要。再将摘要用私钥加密,这个加密后的摘要就是数字签名。注意数字签名是用私钥进行加密的,而不是用公钥。
然后将发送信息和数字签名发给B
。B
将数字签名用A
的公钥解密进行解密,得到信件的摘要。再对发送信息使用Hash
函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
再用A
的公钥对数字签名进行解密。然后将解密后的文件用hash
得出摘要,再与数字签名的结果进行对比,如果摘要相同,就证明是A发的。
但这个对比是基于A
已经确保收到的公钥确实是B
的前提,但是这个过程如果存在一个中间人,也给A
发送自己的公钥,那么如何确保A
收到的就是B
的公钥?(无法确定公钥是否真的属于目标对象。)
显然,我们需要一种技术来确保发送发获取的公钥是目标对象的公钥。也就是:数字证书(Digital Certificate
)。
两人无法互相相信时,此时就需要一个权威的第三者,这是一个签发数字证书的权威机构,叫”证书中心"(certificate authority
,简称CA
)。
要有这个机构的数字证书,不仅包括了公钥,还包括了域名,签发机构,有效期,签名等,CA
机构的认证很严格,跟我们的身份认证一样,因此可以相信。
数字证书就像身份证,CA
机构就是派出所。
A
作为服务器一端,需要把自己的证书给B
看。然后B
到CA
查看此证书是否是真实的。
那么,如何确保这个CA不是第三方伪造的呢?
答案是:直接把最权威的几个CA
机构证书放到用操作系统中。其实,之后只需要使用信任链,即机构1
说机构2
可以信任,那我们就可以信任2
,机构2
说机构3
信任,那我们就可以信任机构3
。这样我们就可以信任很多个CA
机构分发的证书了。
常见的非对称加密算法有RSA
、DSA
。
RSA
RSA
是一种目前应用非常广泛、历史也比较悠久的非对称秘钥加密技术,在1977年被麻省理工学院的罗纳德·李维斯特、阿迪·萨莫尔和伦纳德·阿德曼三位科学家提出,由于难于破解,RSA 是目前应用最广泛的数字加密和签名技术,比如国内的支付宝就是通过RSA
算法来进行签名验证。
它的安全程度取决于秘钥的长度,目前主流可选秘钥长度为 1024
位、2048
位、4096
位等,理论上秘钥越长越难于破解。支付宝的官方文档上推荐也是2048
位,当然更长的秘钥更安全,但也意味着会产生更大的性能开销。
DSA
即 Digital Signature Algorithm
,数字签名算法,他是由美国国家标准与技术研究所(NIST)与1991年提出。和 RSA
不同的是 DSA
仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快。
前文提到了:
在混合加密机制中,交换密钥的环节使用非对称加密,之后的通信则使用对称加密。
也就是说只要保证了在对称加密中的密钥的安全性,就可以使用更加快速的对称加密技术来进行消息的通信。
混合加密(hybrid encryption
)是2018
年全国科学技术名词审定委员会公布的计算机科学技术名词。
具体的实现思路是先使用对称加密算法对数据进行加密,然后使用非对称加密算法对对称加密的密钥进行非对称加密,之后再把加密后的密钥和加密后的数据发送给接收方。
Thanks
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。