https通讯说明

上传人:今*** 文档编号:105682398 上传时间:2019-10-13 格式:DOCX 页数:11 大小:259.83KB
返回 下载 相关 举报
https通讯说明_第1页
第1页 / 共11页
https通讯说明_第2页
第2页 / 共11页
https通讯说明_第3页
第3页 / 共11页
https通讯说明_第4页
第4页 / 共11页
https通讯说明_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《https通讯说明》由会员分享,可在线阅读,更多相关《https通讯说明(11页珍藏版)》请在金锄头文库上搜索。

1、HTTPS通讯说明一、常见加解密算法MD5/SHA/BASE64/urlEncodeMD5消息摘要算法-5(Message Digest Algorithm)SHA安全散列算法(Secure Hash Algorithm)Base64Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用=,因此编码后输出的文本末尾可能会出现1或2个=。例如:“baidu and google” = “YmFpZHUgYW5kIGdvb2dsZQ=”urlEncodeurlE

2、ncode用于解决url参数中的特殊字符、中文等问题。以上4中算法严格意义上说,不属于加解密算法的范畴。只是使用比较广泛的格式转换、摘要计算方法而已。BASE64/urlEncode属于格式转换,MD5/SHA属于摘要计算。DES/DES3/AES这三种算法都属于对称加解密算法,DES3是DES的升级版算法,AES是DES3的升级版本算法。目前使用比较广泛的是DES3和AES。这两个算法虽然有新老版本之分,但是还是有性能和适用场景的区别。算法说明:使用密钥K1+算法S1对明文进行加密,生成密文。使用密钥K1+算法S1对密文进行解密(再一次加密),生成明文。整个过程中,使用的密钥相同,算法相同。

3、RSARSA属于非对称加解密算法,也是最复杂的一种算法。非对称加解密衍生出两种认证场景。一种是签名,一种是加密。加密的流程示意图:算法说明:使用密钥PK+算法S1对明文进行加密,生成密文。使用密钥SK+算法S1对密文进行解密(再一次加密),生成明文。整个过程中,使用的密钥不相同,算法相同。这种加密的流程中,只能做到数据的加密,不可被获取(获得明文),但是无法确保不被篡改。签名的流程示意图:假设A要想B发送消息,A会先计算出消息的消息摘要,然后使用自己的私钥加密这段摘要加密,最后将加密后的消息摘要和消息一起发送给B,被加密的消息摘要就是“签名”。B收到消息后,也会使用和A相同的方法提取消息摘要,

4、然后使用A的公钥解密A发送的来签名,并与自己计算出来的消息摘要进行比较。如果相同则说明消息是A发送给B的,同时,A也无法否认自己发送消息给B的事实。数字签名的作用是保证数据完整性,机密性和发送方角色的不可抵赖性。如果甲想给乙发一个安全的保密的数据,那么应该甲乙各自有一对公私钥,甲先用乙的公钥加密这段数据,再用自己的私钥加密这段加密后的数据,最后再发给乙。这样确保了内容即不会被读取,也不会被篡改。所有算法对比算法名称密钥类型是否可逆MD5/SHA无不可逆BASE64/urlEncode无可逆DES/DES3/AES一个密钥可逆RSA一对密钥可逆加密盐和碰撞因子二、证书及CA介绍公钥、私钥、证书一

5、个公钥对应一个私钥。密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。为什么需要用证书来替代公钥?答:在上面的加密签名等过程中,我们都忽略了一点,那就是如何确保我们获取的公钥是正确的。第三者很容易制作一个公钥来冒充我们的交互目标,我们没法凭借这个公钥来确认对方的身份。在这样的情况下,证书就诞生了,证书是一个包装了公钥的实体,他里面包含了公钥,机构名称,证书有效期,ca签名等信息。这样我们获取证书后,就可以通过证书里面对机构的描述来确认对方的身份。证书中的ca是什么意思?答:其实上面对证书的描述并没有完全解决我们提出的问题,第三者完全可能制作一个证书,而证书里的机构信息也是伪造

6、的。那么ca就在这种情形下出现了。ca是证书颁发机构(certification authority)。ca是第三方的,为数不多的,可信赖的机构,我们可以在其官网上获取他的公钥,用他的公钥来解析ca签名,就能够唯一的验证这个证书是由这个ca机构颁发的。ca机构会维护自己的publickey库,比如公司“通联支付”去ca申请证书后,那第三者就无法再以“通联支付”的名字来申请证书了。那么也就能验证这个证书不是由第三者假冒的了。Ca的分级认证模式假设C证书信任A和B;然后A信任A1和A2;B信任B1和B2。则它们之间构成如下的一个树形关系(一个倒立的树)。处于最顶上的树根位置的那个证书,就是“根证书

7、”。除了根证书,其它证书都要依靠上一级的证书,来证明自己。而根证书自己证明自己,或者换句话说,根证书是不需要被证明的。浏览器如何识别证书的有效性?浏览器默认会导入当地比较大的ca机构签发的二级证书。当用户访问https网站时,浏览器通过ssl协议首先下载网站的证书,然后通过本地的ca二级证书对网站的证书进行验签。如果验签不通过,则一般都会出现警告弹窗。证书和CA的出现,旨在解决公钥的准确性,进而确保RSA算法进行加密和签名的可靠性。三、HTTPS详细介绍https认证分为单向认证和双向认证,单向认证适用与互联网大众用户;双向认证适用与企业内部,集群内部。单向认证:客户端无证书,客户端认证服务端

8、发送过来的证书,从而认证服务端。后续通过ssl握手,建立对称加密通讯。双向认证:客户端有证书,客户端认证服务器发送过来的证书,服务端认证客户端发送过来的证书,互相认证。后续通过ssl握手,建立对称加密通讯。交互流程(一个加密通信过程的演化)我们来看一个例子,现在假设“服务器”和“客户”要在网络上通信,并且他们打算使用RSA(参看前面的RSA简介)来对通信进行加密以保证谈话内容的安全。由于是使用RSA这种公钥密码体制,“服务器”需要对外发布公钥(算法不需要公布,RSA的算法大家都知道),自己留着私钥。“客户”通过某些途径拿到了“服务器”发布的公钥,客户并不知道私钥。“客户”具体是通过什么途径获取

9、公钥的,我们后面再来说明,下面看一下双方如何进行保密的通信:2.1 第一回合:“客户”-“服务器”:你好“服务器”-“客户”:你好,我是服务器“客户”-“服务器”:我的账号和密码是.因为消息是在网络上传输的,有人可以冒充自己是“服务器”来向客户发送信息。例如上面的消息可以被黑客截获如下:“客户”-“黑客”:你好 / 黑客在“客户”和“服务器”之间的某个路由器上截获“客户”发给服务器的信息,然后自己冒充“服务器”“黑客”-“客户”:你好,我是服务器因此“客户”在接到消息后,并不能肯定这个消息就是由“服务器”发出的,某些“黑客”也可以冒充“服务器”发出这个消息。如何确定信息是由“服务器”发过来的呢

10、?有一个解决方法,因为只有服务器有私钥,所以如果只要能够确认对方有私钥,那么对方就是“服务器”。因此通信过程可以改进为如下:2.2 第二回合:“客户”-“服务器”:你好“服务器”-“客户”:你好,我是服务器“客户”-“服务器”:向我证明你就是服务器“服务器”-“客户”:你好,我是服务器 你好,我是服务器私钥|RSA/ 注意这里约定一下, 表示RSA加密后的内容, | 表示用什么密钥和算法进行加密,后面的示例中都用这种表示方式,例如上面的 你好,我是服务器私钥|RSA 就表示用私钥对“你好,我是服务器”进行加密后的结果。为了向“客户”证明自己是“服务器”, “服务器”把一个字符串用自己的私钥加密

11、,把明文和加密后的密文一起发给“客户”。对于这里的例子来说,就是把字符串 “你好,我是服务器”和这个字符串用私钥加密后的内容 你好,我是服务器私钥|RSA 发给客户。“客户”收到信息后,她用自己持有的公钥解密密文,和明文进行对比,如果一致,说明信息的确是由服务器发过来的。也就是说“客户”把 你好,我是服务器私钥|RSA 这个内容用公钥进行解密,然后和“你好,我是服务器”对比。因为由“服务器”用私钥加密后的内容,由并且只能由公钥进行解密,私钥只有“服务器”持有,所以如果解密出来的内容是能够对得上的,那说明信息一定是从“服务器”发过来的。假设“黑客”想冒充“服务器”:“黑客”-“客户”:你好,我是

12、服务器“客户”-“黑客”:向我证明你就是服务器“黑客”-“客户”:你好,我是服务器 你好,我是服务器?|RSA /这里黑客无法冒充,因为他不知道私钥,无法用私钥加密某个字符串后发送给客户去验证。“客户”-“黑客”:我的账号和密码是.由于“黑客”没有“服务器”的私钥,因此它发送过去的内容,“客户”是无法通过服务器的公钥解密的,因此可以认定对方是个冒牌货!到这里为止,“客户”就可以确认“服务器”的身份了,可以放心和“服务器”进行通信,但是这里有一个问题,通信的内容在网络上还是无法保密。为什么无法保密呢?通信过程不是可以用公钥、私钥加密吗?其实用RSA的私钥和公钥是不行的,我们来具体分析下过程,看下

13、面的演示:2.3 第三回合:“客户”-“服务器”:你好“服务器”-“客户”:你好,我是服务器“客户”-“服务器”:向我证明你就是服务器“服务器”-“客户”:你好,我是服务器 你好,我是服务器私钥|RSA“客户”-“服务器”:我的帐号是aaa,密码是123,把我的余额的信息发给我看看公钥|RSA“服务器”-“客户”:你的余额是100元私钥|RSA注意上面的的信息 你的余额是100元私钥,这个是“服务器”用私钥加密后的内容,但是我们之前说了,公钥是发布出去的,因此所有的人都知道公钥,所以除了“客户”,其它的人也可以用公钥对你的余额是100元私钥进行解密。所以如果“服务器”用私钥加密发给“客户”,这

14、个信息是无法保密的,因为只要有公钥就可以解密这内容。然而“服务器”也不能用公钥对发送的内容进行加密,因为“客户”没有私钥,发送个“客户”也解密不了。这样问题就又来了,那又如何解决呢?在实际的应用过程,一般是通过引入对称加密来解决这个问题,看下面的演示:2.4 第四回合:“客户”-“服务器”:你好“服务器”-“客户”:你好,我是服务器“客户”-“服务器”:向我证明你就是服务器“服务器”-“客户”:你好,我是服务器 你好,我是服务器私钥|RSA“客户”-“服务器”:我们后面的通信过程,用对称加密来进行,这里是对称加密算法和密钥公钥|RSA /蓝色字体的部分是对称加密的算法和密钥的具体内容,客户把它

15、们发送给服务器。“服务器”-“客户”:OK,收到!密钥|对称加密算法“客户”-“服务器”:我的帐号是aaa,密码是123,把我的余额的信息发给我看看密钥|对称加密算法“服务器”-“客户”:你的余额是100元密钥|对称加密算法在上面的通信过程中,“客户”在确认了“服务器”的身份后,“客户”自己选择一个对称加密算法和一个密钥,把这个对称加密算法和密钥一起用公钥加密后发送给“服务器”。注意,由于对称加密算法和密钥是用公钥加密的,就算这个加密后的内容被“黑客”截获了,由于没有私钥,“黑客”也无从知道对称加密算法和密钥的内容。由于是用公钥加密的,只有私钥能够解密,这样就可以保证只有服务器可以知道对称加密算法和密钥,而其它人不可能知道(这个对称加密算法和密钥是“客户”自己选择的,所以“客户”自己当然知道如何解密加密)。这样“服务器”和“客户”就可以用对称加密算法和密钥来加密通信的内容了。但是这里还留有一个问题,在

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号