mportant; margin-right: 0px !important; margin-bottom: 20px; margin-left: 0px !important; padding: 8px 0px 5px 5px; font-size: 28px; font-weight: 400; line-height: 1.8; background: rgb(51, 51, 102); border-radius: 6px; box-shadow: rgb(95, 90, 75) 0px 0px 0px 1px, rgba(10, 10, 0, 0.5) 1px 1px 6px 1px; color: rgb(51, 51, 51); font-family: 微软雅黑, 宋体, 黑体, Arial; height: 25px; text-shadow: rgb(34, 34, 34) 2px 2px 3px;">一、简介
加密算法包括对称加密和非对称加密,对称加密就是加密和解密用一个秘钥,就像一些电视剧里的电报加密一样,需要一个密码本,发送方通过它加密,接收方通过它解密,因此密码本非常重要,一旦泄露所有信息就会被窃取,也就有了特务护送密码本的桥段,缺点显而易见。
而非对称加密有两个秘钥,公钥和私钥。例如接收方先生成一对公钥私钥,公钥可以直接不加密直接给发送方,任何人都可以拿到。然后发送方用公钥加密,发送给接收方后,接收方用私钥可以解密,并且只有私钥能解密,公钥不能解密,只能加密。
著名的RSA算法就是非对称加密的一种,是基于大数难以进行质因数分解设计的。加密等级越高,RSA位数就越长,目前常用1024bits。
并且RSA算法除了加密以外还可以实现数字签名。就是证明A发送的信息确实是A发出的。公钥和私钥实际上地位平等,可以互相加密解密。即用公钥加密的密文可以用私钥解密,这就是加密过程,反过来用私钥加密的密文可以用公钥解密,也就是说大众可以用公钥对A发出的密文解密来验证信息确实是A发出的,这就是数字签名。
RSA速度很慢,一般只对少量信息进行加密。常用的做法是用RSA给对称加密密钥加密,发送给接收方。然后接收方解密知道了对称加密密钥,双方再通过对称加密方式通讯。
公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
二、数字签名(公钥私钥的一个应用)
1)鲍勃有两把钥匙,一把是公钥,另一把是私钥
2)鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把
3)苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果
4)鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密
5)鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)
6)然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)
7)鲍勃将这个签名,附在信件下面,一起发给苏珊
8)苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的
9)苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过
10)复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密
11)后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)
12)鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了
13)苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的
HTTP协议的网站容易被篡改和劫持,如一些不良的运营商会通过代理服务器在你的页面中植入广告等。因此很多网站选择使用HTTPS协议。HTTPS协议通过TLS层和证书机制提供了内容加密,身份认证,数据完整性三大功能。