您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

安全超文本传输协议 {源码分享}

  • 时间:2022-11-04 10:37 编辑: 来源: 阅读:453
  • 扫一扫,手机访问
摘要:安全超文本传输协议 {源码分享}
无论是手机还是电脑上网,都离不开通过网络进行数据传输。通常使用超文本传输协议(HTTP)来完成数据传输,以便客户端或浏览器能够与服务器正常通信。但是,HTTP是以明文传输的。比如你输入账号/密码,提交登录:很有可能会被中间人窃听,从而造成数据泄露。所以,HTTP是不安全的。为了解决安全传输的问题,人们发明了HTTPS,即HTTP+Secure。为什么HTTPS是安全的?只要传输的数据被加密,通信就是安全的。前提是,除了双方,任何第三方都无法解密的数据是加密的。即使被中间人窃听,它也无法知道数据内容HTTPS是如何实现安全通信的。加密确实是安全的,但是客户端加密数据之后,服务器怎么解密呢?如何保证中间人窃听后无法解密密文?答案是:对称加密技术的对称加密是什么?简单来说,通信双方拥有相同的密钥(所谓对称)。用户加密并锁定数据后,数据被发送到服务器,服务器用密钥解密。 类似地,由服务器加密并传输到客户端的数据也可以由客户端解密。那么,一个新的问题出现了:如何在通信前给双方分配两个相同的密钥?如果真的只有两个人想交流,可以简单的私下见面分配,以后想交流的时候再用。 但实际的交流往往是一个服务器和几千个客户端之间的交流,大家不可能先和服务器私会。另外,即使使用了对称加密技术,如果一方保管不善,密钥也有可能被窃取和复制,存在很大的安全隐患。最好每个客户端每次与服务器通信时都使用不同的密钥。一个简单的解决方案是:在每个客户端请求通信之前,首先与服务器协商,通过某种方法生成一个只有双方知道的对称密钥。这个过程叫做:密钥交换。密钥交换算法有很多种,常见的有:Deffie-Hellman密钥交换算法RSA密钥交换算法。本文以简单的RSA密钥交换为例。简而言之,RSA密钥交换算法要求客户端向服务器提供一个预主密钥,然后通信双方生成主密钥。最后,根据主密钥,生成一系列所需的密钥,包括用于数据传输的对称密钥。那么,客户端如何告诉服务器预主密钥呢?直接明文传输?我们之前说过,不加密的通信会被窃听,不安全。似乎进入了一个死循环:为了加密通信,需要先将预主密钥传输到服务器,但这个传输必须加密。我们介绍一种新的加密技术:非对称加密。什么是非对称加密?简单来说,服务器可以生成一对不同的密钥(所谓的非对称),其中一个是私有的,称为私钥;一对公钥,称为公钥,具有这样的性质:只有私钥可以解密公钥加密的数据,只有公钥可以解密私钥加密的数据。非对称加密的一个经典实现称为RSA算法。这种加密算法是由罗恩·里维斯特、阿迪·萨莫尔和伦纳德·阿德曼于1977年首次提出的。RSA是他们姓氏首字母的组合。使用非对称加密技术,这很容易:客户机用服务器的公钥加密预主密钥,并将其发送给服务器。由于只有服务器有私钥,所以只有服务器才能解密数据,获得客户端发送的预主密钥的具体交互过程:客户端向服务器索要公钥;将服务器公钥发送给客户端(这里没有保密要求,因为公钥是对所有人开放的);用客户端服务器的公钥将预主密钥加密成秘密消息并发送给服务器;使用服务器的私钥对密文进行解密,获得客户端发送的预主密钥;看起来很完美,但是第二步提出了一个新的问题:由于互联网是开放的,服务器发送给客户端的公钥在传输过程中可以被中间人截获和篡改(所谓中间人攻击,缩写:MITM)。因为中间人也可以生成一对非对称密钥,它会截取服务器发送的公钥,然后把自己的公钥中间人——public key发送给客户端。然后愚蠢地用中间人公钥加密您的预主密钥,并将其发送给中间人。如何处理这个问题?这个问题相当于:客户端如何确定收到的公钥真的是服务器的公钥?当你要乘坐高铁或飞机时,如何向工作人员确认你就是你的答案很简单。去公安局(机关英文名:Authority)开个证明,上面有你的号码,姓名,年龄,照片,住址,发证机关,有效期等等。服务器还试图从权威机构获取证书Certificate,证书中记录了服务器的域名、公钥、所属单位、颁发机构、有效期等。当客户端收到服务器发来的证书,只要证书不是伪造的,那么上面记录的公钥一定是真的!证书是什么样的?点击IE浏览器上的小锁,查看服务器的证书。但是,这里又出现了一个新问题:如何证明证书不是伪造的?我们详细介绍一种防伪手段:签名什么是签名?在我们的生活和工作过程中,经常会遇到需要签名的情况:刷信用卡、签合同等。,用来证明这是我的行为。 签名之所以可信,是因为理论上每个人的签名都有生理基础,别人无法伪造,就像你的指纹一样。所以,只要服务器发来的证书有权威机构的签名,就可以确定证书是发给服务器的,而不是谁伪造的。这就相当于,只要你的请假条上有领导的签名,那么HR就确定领导已经批准了你的请假。如果人类签名使用纸和笔,计算机的数字签名如何实现?答案是使用非对称加密技术:数字证书颁发机构(CA)生成一对公钥/私钥;将服务器自己的域名、公钥等信息提交给CA审核;CA用私钥加密服务器信息的摘要,生成的密文就是所谓的签名;收集证书上的CA服务器信息、签名、有效期等信息,颁发给服务器;客户端收到服务器发送的证书后,用CA的公钥解密签名,获得服务器信息摘要。如果与证书中记录的服务器信息汇总一致,说明该服务器信息是CA认可的。什么是信息汇总?简单来说就是任意长度的数据。信息摘要求解后,可以得到固定长度的数据,比如32字节。只要任意改变原始数据,生成的信息摘要都是不一样的。但是,第五步出现了一个新问题:用户如何知道CA的公钥?回答:世界上只有几个根ca。浏览器或服务器操作系统出厂时,已经内置了这些机构的自签名证书,上面记录了它们的公钥信息。您也可以在需要时手动安装CA证书。以Windows系统为例:系统信任的根证书。至此,HTTPS通信流程已经很清晰:操作系统/浏览器自带CA根证书;因此,用户可以验证服务器发送的证书的真实性,从而获得服务器的公钥;利用服务器的公钥,客户端可以向服务器发送预主密钥;获得预主密钥后,服务器可以通过随后的对称密钥加密与客户端的通信。 概述了HTTPS通信过程的基本原理,涉及对称加密、非对称加密、信息摘要、签名、密钥交换等技术基础。HTTPS的实现细节,如颁发者和数字证书,要复杂得多,这里不讨论,但不影响不熟悉HTTPS的读者对原理有个基本的了解。


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)
【技术支持|常见问题】别告诉我你没看过邰方这两则有思想的创意广告! (2022-11-04 10:37)
【技术支持|常见问题】你正确使用https了吗? [php源码](2022-11-04 10:37)
【技术支持|常见问题】安全超文本传输协议 {源码分享}(2022-11-04 10:37)
【技术支持|常见问题】借助图文解锁HTTPS原理,10分钟还原HTTPS。真的很像!建筑师必读 {源码分享}(2022-11-04 10:37)
【技术支持|常见问题】颤动般的JD.COM客户端 {影视源码}(2022-11-04 10:37)
【技术支持|常见问题】我是个学渣。零基础的我是如何成功学会web前台的? 《导航网站源码》(2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部