网站建设微站,wordpress调用函数大全,1997年做网站是什么语言,南宁企业网络推广目录
HTTPS 是什么
HTTPS 的工作过程
对称加密
非对称加密
引入证书
理解数据签名
通过证书解决黑客攻击 HTTPS 是什么
HTTPS也是一个应用层协议, 是在HTTP协议的基础上引入了一个加密层. HTTP协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡…
目录
HTTPS 是什么
HTTPS 的工作过程
对称加密
非对称加密
引入证书
理解数据签名
通过证书解决黑客攻击 HTTPS 是什么
HTTPS也是一个应用层协议, 是在HTTP协议的基础上引入了一个加密层. HTTP协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡改的情况.
HTTPS 的工作过程
既然要保证数据安全就需要进行加密.
网络传输中不再直接传输明文了, 而是加密之后的密文.
加密的方式有很多但是整体可以分成两大类: 对称加密和非对称加密
对称加密
对称加密其实就是通过同一个密钥 , 把明文加密成密文, 并且也能把密文解密成明文. 假设明文a 1234, 密钥key 8888 则加密 a^key 得到的密文b为 9834. 然后针对密文 9834 再次进行运算b ^ key, 得到的就是原来的明文1234. (对于字符串的对称加密也是同理, 每一个字符都可以表示成一个数字) 当然按位异或只是最简单的对称加密. HTTPS中并不是使用按位异或. 引入对称加密之后,即使数据被截获, 由于黑客不知道密钥是啥, 因此就无法进行解密, 也就不知道请求的真实内容是啥了. 但事情没这么简单, 服务器同一时刻其实是给很多客户端提供服务的. 这么多客户端, 每个人用的秘钥都必须是不同的(如果是相同那密钥就太容易扩散了,黑客就也能拿到了). 因此服务器就需要维护每个客户端和每个密钥之间的关联关系这也是个很麻烦的事情~
比较理想的做法就是能在客户端和服务器建立连接的时候双方协商确定这次的密钥是啥
但是如果直接把密钥明文传输, 那么黑客也就能获得密钥了, 此时后续的加密操作就形同虚设了.因此密钥的传输也必须加密传输!
但是要想对密钥进行对称加密,就仍然需要先协商确定一个密钥的密钥. 这就成了 先有鸡还是先有蛋 的问题了.
此时密钥的传输再用对称加密就行不通了, 就需要引入非对称加密.
非对称加密
非对称加密要用到两个密钥, 一个叫做 公钥, 一个叫做 私钥. 公钥和私钥是配对的. 最大的缺点就是运算速度非常慢比对称加密要慢很多.
通过公钥对明文加密, 变成密文通过私钥对密文解密, 变成明文
也可以反着用
通过私钥对明文加密, 变成密文通过公钥对密文解密, 变成明文 客户端在本地生成对称密钥通过公钥加密发送给服务器.由于中间的网络设备没有私钥即使截获了数据, 也无法还原出内部的原文也就无法获取到对称密服务器通过私钥解密, 还原出客户端发送的对称密钥. 并且使用这个对称密钥加密给客户端返回的响应数据.后续客户端和服务器的通信都只用对称加密即可. 由于该密钥只有客户端和服务器两个主机知道, 其他主机/设备不知道密钥即使截获数据也没有意义. 由于对称加密的效率比非对称加密高很多因此只是在开始阶段协商密钥的时候使用非对称加密, 后续的传输仍然使用对称加密. 上述操作下, 仍然存在重大的安全漏洞, 黑客仍然是有办法获取到对称密钥key
服务器可以创建出一对公钥和私钥, 黑客也可以按照同样的方式, 创建出一对公钥和私钥, 冒充自己是服务器. 要想解决上述问题, 最关键的一点, 客户端拿到公钥的时候, 要能有办法验证这个公钥是否是真的, 而不是黑客伪造的.
引入证书
服务端在使用HTTPS前需要向CA机构申领一份数字证书数字证书里含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器浏览器从证书里获取公钥就行了证书就如身份证证明服务端公钥的权威性
这个证书可以理解成是一个结构化的字符串里面包含了以下信息:
证书发布机构的信息证书有效期服务器的公钥服务器的域名证书所有者证书的签名.......
需要注意的是:申请证书的时候需要在特定平台生成查会同时生成一对密钥即公钥和私 钥。这对密钥对就是用来在网络通信中进行明文加密以及数字签名的。
理解数据签名 当服务端申请CA证书的时候CA机构会对该服务端进行审核并专门]为该网站形成数字签名过程如下: CA机构拥有非对称加密的私钥A和公钥A CA机构对服务端申请的证书明文数据进行hash,形成数据摘要然后对数据摘要用CA私钥A加密得到数字签名S
服务端申请的证书明文和数字签名S共同组成了数字证书这样一份数字证书就可以颁发给服务端了
通过证书解决黑客攻击
在客户端和服务器刚一建立连接的时候服务器给客户端返回一个证书. 这个证书包含了刚才的公钥也包含了网站的身份信息.
当客户端获取到这个证书之后会对证书进行校验(防止证书是伪造的).
判定证书的有效期是否过期判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构).验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥对签名解密, 得到一个hash值(称为数据摘要), 设为hash1. 然后计算整个证书的hash值设为hash2. 对比hash1和hash2是否相等. 如果相等, 则说明证书是没有被篡改过的.
黑客有没有可能篡改该证书?
● 黑客篡改了证书的明文: 由于他没有CA机构的私钥所以无法hash之后用私钥加密形成签名那么也就没法办法对篡改后的证书形成匹配的签名
● 如果强行篡改客户端收到该证书后会发现明文和签名解密后的值不一致则说明证书已被篡改, 证书不可信从而终止向服务器传输信息防止信息泄露给黑客
黑客如果掉包整个证书呢?
● 因为黑客没有CA私钥所以无法制作假的证书(为什么? ) 所以黑客只能向CA申请真证书然后用自己申请的证书进行掉包, 这个确实能做到证书的整体掉包但是别忘记证书明文中包含了域名等服务端认证信息如果整体掉包客户端依旧能够识别出来。
● 永远记住: 黑客没有CA私钥所以对任何证书都无法进行合法修改包括自己的.