网站注册实名制怎么做,网络推广深圳有效渠道,如何做网站外链,网站建设注意的问题文章目录 一、两种加密方式二、https的加密流程2.1对称加密2.2非对称加密2.3中间人攻击问题2.4使用证书来校验客户端收到的公钥是否是服务器生成的公钥2.4.1证书的校验2.4.2证书的校验所得到的效果 一、两种加密方式
https在http的基础之上引入了加密机制(加密层)。https加密的… 文章目录 一、两种加密方式二、https的加密流程2.1对称加密2.2非对称加密2.3中间人攻击问题2.4使用证书来校验客户端收到的公钥是否是服务器生成的公钥2.4.1证书的校验2.4.2证书的校验所得到的效果 一、两种加密方式
https在http的基础之上引入了加密机制(加密层)。https加密的一系列流程是由SSL(后来改名为了TLS)协议来规定的SSL(后来改名为了TLS)协议不仅用在https中也应用在其它很多的场景里。 使用密钥(yue/yao/shi)加密主要有两种方式 ①对称加密。加密和解密使用的密钥是同一个密钥。相当于明文密钥密文密文密钥明文。 ②非对称加密。有两个密钥一个称为公钥一个称为私钥(公钥可以公开私钥不公开)。相当于明文公钥密文密文私钥明文或者明文私钥密文密文公钥明文。
二、https的加密流程
https加密的目标是对http的header和body进行加密。
2.1对称加密
客户端使用密钥对数据进行对称加密服务器拿着同一个密钥对数据进行解密。由于黑客没有密钥所以黑客无法获取到加密之前的内容。
然而上面的加密流程存在问题 服务器会给多个客户端提供服务这多个客户端用的密钥必须是不同的因为客户端用的密钥都是相同的话那么密钥就扩散得太严重了黑客也容易拿到密钥如果用服务器来维护多个客户端和多个密钥之间一一对应的关系那么服务器的开销太大了。所以更推荐的做法是在客户端和服务器建立连接的时候协商好这次传输的密钥是什么(涉及到随机数机制保证每个客户端生成的密钥都不相同)然后客户端把密钥通过网络传输给服务器。 这时会有问题因为如果黑客截获到网络传输中的密钥那么密钥就泄露了后续的加密流程就毫无意义了。所以要对用于对称加密的密钥(下面简称对称密钥)进行加密而对对称密钥加密又要在网络上传输一个新的对称密钥如此往复循环下去最终还是有对称密钥泄漏的风险所以仅用对称加密的方式进行加密是行不通的由此在对称加密的基础上引入非对称加密。
2.2非对称加密
①服务器生成一对公钥和私钥服务器把公钥返回给客户端服务器自身把私钥藏好。 ②客户端仍然生成对称密钥使用服务器的公钥对对称密钥进行加密然后把这个加密后的对称密钥发送给服务器。如果黑客拿到加密后的对称密钥是无法对其进行解密的因为公钥加密后的对称密钥需要用私钥才能解密而私钥只有服务器才有。 ③加密后的对称密钥到达服务器之后服务器用私钥解密出对称密钥然后服务器返回一个响应给客户端告诉客户端这次传输确认用的是这个对称密钥(响应用对称密钥进行加密)。 ④接下来客户端和服务器就使用这个对称密钥对业务数据进行加密即可。
为什么不全部流程都用非对称加密呢这样安全性不就更高了吗因为非对称加密和解密的运算成本很高速度慢对称加密运算成本低速度快如果全部流程都使用非对称加密则数据整体的传输效率将会变得很慢。
比较科学的做法是使用非对称加密加密的是某个关键环节(体积不大的一次性工作比如加密对称密钥)这时运算成本还是比较低的。后续使用效率更高的对称加密来加密大量的业务数据。
但上述对称加密非对称加密还存在一个问题就是中间人攻击问题。
2.3中间人攻击问题
中间人攻击问题产生的原因以及过程 ①客户端向服务器发送询问公钥的请求服务器收到请求后生成一对公钥1和私钥1并将公钥1返回给客户端。 ②返回给客户端的公钥1在网络传输的过程中经过黑客入侵的网络设备此时黑客截获公钥1并且生成一对公钥2和私钥2黑客把公钥2返回给客户端。 ③客户端以为公钥2是服务器返回的公钥于是用公钥2对对称密钥进行了加密并把加密后的对称密钥发送给服务器。 ④加密后的对称密钥在网络传输的过程中经过黑客入侵的网络设备因为这个密文是用公钥2进行加密的要有私钥2才能对其进行解密而黑客手中正好有私钥2所以黑客对密文解密后拿到对称密钥。然后用截获到的公钥1对对称密钥重新进行加密(这样就能瞒天过海地让服务器不会发现黑客的存在了)并发送给服务器。 ⑤服务器收到加密的对称密钥后用私钥1对其进行解密也拿到了对称密钥。然后服务器返回一个响应给客户端告诉客户端这次传输确认用的是这个对称密钥(响应用对称密钥进行加密)。 ⑥接下来客户端和服务器就使用这个对称密钥对业务数据进行加密。因为黑客已经拿到了对称密钥所以对称密钥对业务数据的加密就形同虚设了。
那么如何解决中间人攻击问题呢出现中间人攻击问题是因为客户端对发过来的公钥没有分辨能力比如上面例子中客户端无法识别出公钥2是黑客发送过来的而不是服务器发送过来的。 因此要引入第三方公正机构让公正机构来辨别发过来给客户端的公钥是黑客生成的公钥还是服务器生成的公钥。
2.4使用证书来校验客户端收到的公钥是否是服务器生成的公钥
①网站的开发人员搭建服务器的时候会生成一份公钥和私钥(这里的公钥和私钥只要一份就行不用像对称密钥那样每个客户端都要有不一样的对称密钥。因为针对每个客户端都要有不同的一份公钥和私钥的话那服务器的压力太大了服务器针对每个客户端都要生成公钥和私钥并且保存还要验证是哪个客户端发来的信息并解密等)。 然后服务器向公证机构提出申请(提交申请要有材料比如域名、服务器的公钥、厂商……)公证机构对申请进行审核审核通过就会给服务器颁发一个证书服务器会保存好这个证书。证书是一段结构化的数据这段结构化的数据包括一些重要信息比如网站域名、服务器的公钥、证书的过期时间、数字签名…… ②这时开始时就不是客户端向服务器发送询问公钥的请求了而是客户端向服务器发送询问服务器证书的请求然后服务器返回证书给客户端。 ③客户端拿到了证书也就拿到了证书中服务器的公钥客户端会验证这个公钥是否是服务器的公钥这个验证过程叫证书的校验。
2.4.1证书的校验
①数字签名(被加密后的证书的校验和)证书中有一个数字签名数字签名是一个被加密后的证书的校验和。公正机构在颁发证书给服务器的时候会把针对证书中的内容计算出校验和并且对这个校验和进行加密这个加密后的校验和就是数字签名。 ②得到数字签名(被加密后的证书的校验和)的加密过程数字签名的加密是非对称加密。公证机构会生成一对自己的公钥和私钥公证机构自己持有私钥公钥发布给各个客户端设备(公钥会内置到主机的操作系统中)然后公正机构用自己的私钥对证书的校验和进行加密就得到了数字签名。 ③客户端收到服务器发来的证书之后也就拿到了数字签名然后客户端通过操作系统内置的公正机构的公钥对数字签名进行解密得到证书的校验和。客户端再重新计算发送过来的证书的校验和和解密出来的校验和进行对比如果两个校验和一致就认为证书没有被黑客篡改过证书的公钥就是服务器生成的公钥而不是黑客生成的公钥。
2.4.2证书的校验所得到的效果
有了证书的校验这一套机制就可以有效缓解中间人攻击问题了因为如果黑客篡改了证书中的内容会很容易被发现而且黑客也无法申请一个证书来替换掉服务器的证书。 ①客户端很容易发现黑客篡改了证书中除数字签名之外的内容当证书到达黑客入侵的网络设备时如果黑客将证书中的服务器的公钥替换成自己的公钥客户端在进行证书校验的时候就会发现校验和不一样客户端就可以认为证书内容已经被黑客篡改过了客户端这时往往会弹出一些对话框来警告用户存在安全风险。 2)客户端很容易发现黑客篡改了数字签名因为得到数字签名是加密后的证书的校验和加密过程使用的是公证机构的私钥来进行加密。如果黑客截获到证书后计算出证书中除数字签名之外的内容的校验和然后用自己的私钥对校验和进行加密得到自己的数字签名替换掉证书中的数字签名这时这个证书发送给客户端的时候客户端就无法使用公证机构的公钥对数字签名进行解密然后拿到证书的校验和了。而操作系统中公证机构的公钥是客户端操作系统内置的黑客无法将其替换。 3)黑客无法申请一个证书来替换掉服务器的证书因为申请证书需要提交材料比如提交的材料中有网站的主域名公证机构会认证网站的主域名是否是黑客所有黑客想要说别人的主域名是自己的这显然是不能通过审核的。