企业快速建站的公司,模板网站制作怎么样,万网主机怎么做网站,北京软件公司有哪些文章目录 1. HTTPS 是什么2. 什么是加密3. 常见的加密方式4. 数据摘要 数字签名5. HTTPS 的工作过程探究5.1 方案1 - 只使用对称加密5.2 方案2 - 只使用非对称加密5.3 方案3 - 双方都使用非对称加密5.4 方案4 - 非对称加密 对称加密5.5 中间人攻击5.6 … 文章目录 1. HTTPS 是什么2. 什么是加密3. 常见的加密方式4. 数据摘要 数字签名5. HTTPS 的工作过程探究5.1 方案1 - 只使用对称加密5.2 方案2 - 只使用非对称加密5.3 方案3 - 双方都使用非对称加密5.4 方案4 - 非对称加密 对称加密5.5 中间人攻击5.6 引入证书5.7 方案 5 - 非对称加密 对称加密 证书认证 1. HTTPS 是什么
HTTP 协议内容都是按照⽂本的⽅式明⽂传输的这就导致在传输过程中出现⼀些被篡改的情况。HTTPS 也是⼀个应⽤层协议是在 HTTP 协议的基础上引⼊了⼀个加密层。HTTPS的端口号是443。 它是在应用层和传输层间加了一个软件层当进行网络传输时从上而下就是在加密从下而上就是在解密。
2. 什么是加密
加密就是把明⽂(要传输的信息)进⾏⼀系列变换⽣成密文。解密就是把密⽂再进行一系列变换还原成明文。在这个加密和解密的过程中往往需要⼀个或者多个中间的数据 辅助进⾏这个过程。这样的数据称为密钥。
为什么要加密呢 由于我们通过⽹络传输的任何的数据包都会经过运营商的⽹络设备(路由器, 交换机等)那么运营商的⽹络设备就可以解析出你传输的数据内容并进⾏篡改。
假设我们要下载一个软件点击 “下载按钮”其实就是在给服务器发送了⼀个 HTTP 请求。获取到的 HTTP 响应其实就包含了该APP 的下载链接。运营商劫持之后就发现这个请求是要下载天天动听那么就自动的把交给用户的响应给篡改成 “QQ浏览器” 的下载地址了。
3. 常见的加密方式
对称加密 采用单钥密码系统的加密方法同⼀个密钥可以同时用作信息的加密和解密。这种加密方法称为对称加密也称为单密钥加密。特征加密和解密所用的密钥是相同的。特点算法公开、计算量小、加密速度快、加密效率高。
非对称加密 需要两个密钥来进行加密和解密这两个密钥是公开密钥public key简称公钥和私有密钥private key简称私钥。特点算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂而使得加密解密速度没有对 称加密解密的速度快。 我们可以通过公钥对明文加密变成密文通过私钥对密文解密变成明文。 也可以通过私钥对明⽂加密变成密文通过公钥对密⽂解密变成明⽂。
4. 数据摘要 数字签名
数字指纹(数据摘要)其基本原理是利用单向散列函数(Hash函数)对信息进行运算。生成一串固定长度的数字摘要。数字指纹并不是一种加密机制但可以用来判断数据有没有被窜改。
摘要特征和加密算法的区别是摘要严格意义不是加密因为没有解密只不过从摘要很难反推原信息通常用来进行数据对比。
数字签名摘要经过加密就得到数字签名。
5. HTTPS 的工作过程探究
既然要保证数据安全就需要进行加密⽹络传输中不再直接传输明文了而是加密之后的密⽂加密的方式有很多但是整体可以分成两大类: 对称加密 和 非对称加密。
5.1 方案1 - 只使用对称加密
如果通信双⽅都各自持有同⼀个密钥X且没有别⼈知道这两方的通信安全当然是可以被保证的除非密钥被破解。 引⼊对称加密之后即使数据被截获 由于⿊客不知道密钥是啥因此就⽆法进⾏解密。
但是这里还存在一些问题 1.客户端和服务器双方怎么知道对应的密钥是什么 2.服务器同⼀时刻其实是给很多客户端提供服务的这么多客户端每个人用的秘钥都必须是不同的(如果是相同那密钥就太容易扩散了黑客就也能拿到了)。因此服务器就需要维护每个客户端和每个密钥之间的关联关系这也是个很麻烦的事情。
5.2 方案2 - 只使用非对称加密
鉴于⾮对称加密的机制如果服务器先把公钥以明文方式传输给浏览器之后浏览器向服务器传数据前都先⽤这个公钥加密好再传从客户端到服务器信道似乎是安全的(有安全问题)因为只有服务器有相应的私钥能解开公钥加密的数据。
这里看起来客户端给服务器发送数据是安全的但是服务器给客户端发送数据该怎么办呢服务器用私钥加密但是公钥许多人都有那么服务器给客户端发送的数据就是不安全的。
5.3 方案3 - 双方都使用非对称加密
1.服务端拥有公钥S与对应的私钥S’客户端拥有公钥C与对应的私钥C’。 2.客户和服务端交换公钥。 3.客户端给服务端发信息先用S对数据加密再发送只能由服务器解密因为只有服务器有私钥S’。 4. 服务端给客户端发信息先用C对数据加密在发送只能由客户端解密因为只有客户端有私钥C’。
虽然这里看起来没问题但还存在安全问题并且效率太低了。
5.4 方案4 - 非对称加密 对称加密
1.服务端具有非对称公钥S和私钥S’。 2.客户端发起https请求获取服务端公钥S。 3.客户端在本地生成对称密钥C通过公钥S加密发送给服务器。 4.由于中间的网络设备没有私钥即使截获了数据也无法还原出内部的原文也就无法获取到对称密钥。 5.服务器通过私钥S’解密还原出客户端发送的对称密钥C并且使用这个对称密钥加密给客户端返回的响应数据。 6.后续客户端和服务器的通信都只⽤对称加密即可由于该密钥只有客户端和服务器两个主机知道 其它主机/设备不知道密钥即使截获数据也没有意义。
由于对称加密的效率比非对称加密高很多, 因此只是在开始阶段协商密钥的时候使用非对称加密, 后续的传输仍然使用对称加密。
虽然上⾯已经比较接近答案了但是依旧有安全问题方案 2方案 3方案 4都存在⼀个问题如果最开始中间⼈就已经开始攻击了呢或者把服务器发给客户端的公钥给修改了呢
5.5 中间人攻击
Man-in-the-MiddleAttack简称“MITM攻击”。
1.服务器具有非对称加密算法的公钥S私钥S’。 2.中间人具有非对称加密算法的公钥M私钥M’。 3.客户端向服务器发起请求服务器明文传送公钥S给客户端。 4.中间人劫持数据报文提取公钥S并保存好然后将被劫持报文中的公钥S替换成为自己的公钥M并将伪造报文发给客户端。 5.客户端收到报文提取公钥M(自己当然不知道公钥被更换过了)自己形成对称秘钥C⽤公钥M加密C形成报文发送给服务器。 6.中间人劫持后直接用自己的私钥M’进行解密得到通信秘钥C再用曾经保存的服务端公钥S加密后将报文推送给服务器。 7.服务器拿到报文用自己的私钥‘S’解密得到通信秘钥C。 8.双方开始采⽤C进行对称加密进行通信。但是一切都在中间人的掌握中劫持数据进行窃听甚⾄修改都是可以的。
问题本质出在哪里了呢客户端无法确定收到的含有公钥的数据报文就是目标服务器发送过来的
5.6 引入证书
CA认证 服务端在使用HTTPS前需要向CA机构申领一份数字证书数字证书里含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器浏览器从证书里获取公钥就行了证书就如身份证证明服务端公钥的权威性。
当服务端申请CA证书的时候CA机构会对该服务端进行审核并专门为该网站形成数字签名过程如下 1. CA机构拥有非对称加密的私钥A和公钥A’ 2. CA机构对服务端申请的证书明文数据进行hash形成数据摘要 3. 然后对数据摘要用CA私钥A’加密得到数字签名S 服务端申请的证书明文和数字签名S 共同组成了数字证书这样⼀份数字证书就可以颁发给服务端了。
客户端进行认证 当客户端获取到这个证书之后, 会对证书进行校验(防止证书是伪造的)。 比如判定证书的有效期是否过期判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构)验证证书是否被篡改从系统中拿到该证书发布机构的公钥对签名解密得到⼀个 hash 值(称为数据摘要)设为 hash1。然后计算整个证书的 hash 值设为 hash2。对比 hash1 和 hash2 是否相等。如果相等则说明证书是没有被篡改过的。 因为签名者的私钥是CA机构中间人是不可能有的如果证书的内容被修改那么计算出来的hash值就不一样则说明证书已被篡改证书不可信。如果把数据摘要修改那么它不能进行加密客户端的公钥打不开说明摘要修改。 中间人能不能把整个证书掉包 因为中间人没有CA私钥所以无法制作假的证书。所以中间人只能向CA申请真证书然后用自己申请的证书进行掉包。这个确实能做到证书的整体掉包但是别忘记证书明文中包含了域名等服务端认证信息如果整体掉包客户端依旧能够识别出来。
为什么签名不直接加密而要先hash形成摘要 缩小签名密文的长度加快数字签名的验证签名的运算速度。
5.7 方案 5 - 非对称加密 对称加密 证书认证
在客户端和服务器刚⼀建立连接的时候服务器给客户端返回⼀个证书证书包含了之前服务端的公钥 也包含了网站的⾝份信息。后面就是进行我们的方案4操作。
总结 HTTPS 工作过程中涉及到的密钥有三组 其实⼀切的关键都是围绕这个对称加密的密钥其它的机制都是辅助这个密钥工作的。第⼀组⾮对称加密的密钥是为了让客户端拿到第⼆组⾮对称加密的公钥第⼆组⾮对称加密的密钥是为了让客户端把对称密钥传给服务器。