当前位置: 首页 > 后端技术 > PHP

一个漫画故事带你看懂HTTPS(下)

时间:2023-03-30 00:25:39 PHP

第2集知识点总结:总结:蝙蝠时代,疫情之下。二丫想去京东购物,不料跳出安全提醒,让二毛帮忙了解一下。二毛考察完后,开始用通俗易懂的语言给二丫讲解HTTP的作用和优缺点,以及HTTPS的作用……如果还没有看上一期的可以进传送门:[故事]和电脑零知识的房东女儿聊了一下午京东被中间人劫持的事情后,她感激不尽,决定免除我的租金(上)。一些前技术。前技术1对称加密定义:只有一个密钥的加密算法,既可以用来加密也可以用来解密数据。优点:加密解密速度快。缺点:由于只有一把钥匙,应用场景不广泛。2非对称加密的定义:也是一种有两个密钥的加密算法,一个称为公钥,一个称为私钥。其中,公钥可以广为宣传,私钥需要妥善保管。公钥可以加密数据,然后用私钥解密;反过来,私钥也可以加密数据,用公钥解密。优点:由于公钥和私钥可以相互加解密,应用场景广泛。缺点:加解密速度慢。3消息摘要:定义:通过哈希函数,可以将任意长度的消息变成固定长度的短消息,固定内容的结果无论哈希多少次仍然是固定的,称为a信息摘要。应用场景:可以缩短长消息,更快地处理加密。4数字证书:定义:由CA(权威认证机构)签发的证书,其中包含可以识别您身份的信息,类似于我们的身份证。注意:证书必须是服务器主动向CA申请的。服务器(假设是一个网站)提供自己的域名等信息,然后CA会用他们的私钥对内容进行加密,然后作为数字证书返回给服务器。应用场景:身份验证。由于CA是权威机构,其私钥会被严格保管,公钥会被广泛公开,所以一旦服务器网站出示数字证书,我们就可以根据颁发证书的CA找到对应的公钥,然后解密数字证书获取里面的域名信息,比较当前访问的域名和获取的域名是否一致,从而判断真假。5数字签名:定义:一串只能由信息发送者生成,他人无法伪造的字符。生成主要有两个步骤:首先,对要发送的内容进行消息摘要,得到一个短字符串。发送方再用自己的私钥对短字符串进行加密,得到数字签名。(当然也可以对整条消息进行数字签名,但是消息摘要处理的信息会少一些,加密速度也会快一些。)应用场景:完整性保护:只要我们用发送方的公钥对数字签名进行解密,得到原始的摘要内容,然后与自己的消息摘要内容进行比较,就可以判断,如果一致,则说明即信息内容没有被篡改和销毁。不可否认性:由于只有发送方知道发送方的私钥,所以只要比对信息,就可以证明信息是发送方所写。看到这里,读者可能会有些疑惑。数字签名和数字证书有什么区别?数字签名一般是由用户使用自己的私钥加密摘要生成的,目的是保护数据完整性和不可否认性。数字证书是用CA的私钥对您的信息进行加密后形成的,用以证明您的身份。在上一集的例子中,小明给小红传了一张纸条,但小明的明文通讯可能会被第四排的同学窃听、篡改、破坏或伪装。相应的解决方案是制定通信规则这三个功能:加密数据、数据完整性保护、身份验证。那么如何让通信规则具备这三个功能呢?小明在研究了前端技术的内容后,受到启发,决定这样做:(这里假设学校有团队负责人(即CA),可以对学生信息进行公证,即颁发数字证书.小明和小红已经申请了自己的数字证书,数字证书里面有他的名字,他的公钥等信息)1在开始传输对话内容之前,小明发了一条短信请求小红的数字证书,也将自己的数字证书传递给请求。2小红收到短信后,用组长的公钥解密,得知是小明要求把纸条转给她,害羞地把数字证书发了回去。3小明拿到返回的数字证书后,也用船长的公钥解密信息(信息中有小红的名字和小红的公钥),比对名字信息,看是不是小红。如果不是小红,则不交流,如果是,则进行下一步。4小明随机生成一串字符a,然后取出小红的公钥,用公钥加密这串字符a,返回给小红。5小红收到消息后用自己的私钥解密,然后取出字符a,然后小红以字符a为密钥对称加密内容“同意传纸条”,写入得到密文后写入记事本。此外,小红还对“同意传递纸条”的内容做了消息摘要,然后用自己的私钥对摘要内容进行加密,获得数字签名,写入纸条签名中。6小明收到消息,以字符a为密钥对称解密,得到内容“同意传纸条”。为了识别内容是否被破坏或篡改,小明使用小红的公钥对签名字符进行解密,得到消息摘要内容a,再对内容“同意传递纸条”进行摘要,得到消息摘要b,最后将摘要内容a和摘要内容b进行比较,如果一致,则说明没有被破坏和篡改。7通讯继续。.至此,以上步骤完成了安全连接和通信:双方以字符a为密钥对内容进行对称加密,并生成数字签名留写以验证内容。身份验证的实现:小明不怕第四排的同学冒充小红回复纸条吗?现在有了数字证书的功能,在准备传输会话内容之前,可以通过CA公钥对数字证书进行解密,得到识别对方身份的信息。邪恶的四排同学(中间人)不能再冒充小红女神了!注意:HTTPS机制很重要的一点就是假设CA的私钥是安全的。一旦泄露,HTTPS的安全机制就会分崩离析。所以CA一般都是大公司或者组织,因为他们比较有能力保护自己的私钥,所以浏览器信任的CA列表往往都是一些知名的CA。数据加密的实现:小明不怕第四排的同学偷听笔记信息吗?现在因为前面的身份验证,保证得到真实交易对方的公钥,可以用这个公钥加密传输密钥(例子中的字符a),用于对称加密内容的谈话。只要安全传输对称密钥,就可以高效实现后续对票据内容的加密。第四排的坏学生(中间人)不能再偷看我的小秘密了!注:这里可能有同学会问,既然双方都知道对方的公钥,为什么不直接用对方的公钥加密自己要发送的信息呢?这个确实可以,但是忽略了效率。如前所述,非对称加密算法的效率低于对称加密算法。考虑到后续通信的频率,最好使用对称加密对通信内容进行加密。数据完整性保护的实现:小明不怕第四排的同学篡改或破坏笔记信息吗?既然有了数字签名,就可以和原来的信息进行比对,判断纸条的内容是否被改动或破坏了。邪恶的四排同学(中间人)已经无法改变或破坏我对女神的感情了!HTTPS的建立过程:了解了上面小明笔记的例子,就很容易理解使用HTTPS协议访问网站的建立过程了!建立安全的HTTPS通信可以防止中间人攻击。这需要以下步骤:  1。服务器已正确配置相应的安全证书  2。客户端向服务器发送请求  3。服务器返回公钥和证书发送给客户端  4。客户端收到后,会验证证书的安全性。如果通过,会随机生成一个随机数,用公钥加密后发送给服务器  5。服务端收到加密后的随机数后,会用私钥解密得到一个真正的随机数,然后用这个随机数作为密钥对要发送的数据进行对称加密  6。客户端收到加密后的最终数据,使用密钥(即生成的随机值)对数据进行解密,对数据进行分析,将结果呈现给客户  7。SSL加密已建立。后续的数据传输也会采用数字签名技术。.注:小明传纸条的例子和用户访问网站有点不同:小明和小红互相传纸条时需要验证对方的身份;用户访问网站时,只有用户验证网站,网站不验证用户。但是无论哪种情况,所使用的底层技术都是上面的,只是应用条件不同而已。事后,吃瓜群众点击域名左侧感叹号,即可查看网站提供的证书信息。可以看到这个数字证书的颁发者信息,从邮箱可以知道QQ。后来网上爆料称,QQ的主人还是个刚接触电脑的高中生……不过,“初学者”的猜测显然不符合常理。“QQ邮箱签名证书”对应的IQ显然不在一个平面上。这不符合常识。出事必有妖。近日,该号主也做出了澄清。.晚上,二毛坐在电脑桌前,看着万家灯火,想象着二丫重新了解一些电脑知识点后会欣喜若狂、欢呼雀跃,不由得放下心来。他接着在电脑上打出一行标题:和零电脑基础的房东女儿聊了一个下午京东被中间人劫持的事,她感激不尽,决定免我房租。哎,程序员的幸福,往往就是这么朴实无华,无聊乏味。往期花絮:【故事】跟零电脑基础的房东女儿聊京东被劫持后。从个性鲜明的人物、跌宕起伏和有趣的故事情节,到通俗易懂的技巧。关注公众号《程序员二毛》,后台回复1024获取变强秘籍。