关于Https协议和HttpClient的实现详解

  


  

  

HTTP是一个传输内容有可读性的公开协议,客户端与服务器端的数据完全通过明文传输。在这个背景之下,整个依赖于HTTP协议的互联网数据都是透明的,这带来了很大的数据安全隐患。想要解决这个问题有两个思路:

  
      <李> C/S端各自负责,即客户端与服务端使用协商好的加密内容在Http上通信李   <李> C/S端不负责加解密、加解密交给通信协议本身解决李   
  

关于Https协议和HttpClient的实现详解“> <br/>
  </p>
  <p>第一种在现实中的应用范围其实比想象中的要广泛一些。双方线下交换密钥,客户端在发送的数据采用的已经是密文了,这个密文通过透明的Http协议在互联网上传输。服务端在接收到请求后,按照约定的方式解密获得明文。这种内容就算被劫持了也不要紧,因为第三方不知道他们的加解密方法。然而这种做法太特殊了,客户端与服务端都需要关心这个加解密特殊逻辑。</p>
  <p>第二种C/S端可以不关心上面的特殊逻辑,他们认为发送与接收的都是明文,因为加解密这一部分已经被协议本身处理掉了。</p>
  <p>从结果上看这两种方案似乎没有什么区别,但是从软件工程师的角度看区别非常巨大。因为第一种需要业务系统自己开发响应的加解密功能,并且线下要交互密钥,第二种没有开发量。</p>
  <p> HTTPS是当前最流行的HTTP的安全形式,由网景公司首创。在HTTPS中,URL都是以https://开的头,而不是http://J褂昧薍TTPS时,所有的HTTP的请求与响应在发送到网络上之前都进行了加密,这是通过在SSL层实现的。</p>
  <p> <img src=

  

,对称密钥最大的缺点是需要维护大量的对称密钥,并且需要线下交换。加入一个网络中有n个实体,则需要n (n - 1)个密钥。

  

<强> 2.2非对称加密
  

  

非对称加密是指基于公私钥(公共/私有密钥)的加密方法,常见算法有RSA,一般而言加密速度慢于对称加密。

  

关于Https协议和HttpClient的实现详解

  

对称加密比非对称加密多了一个步骤,即要获得服务端公钥,而不是各自维护的密钥。

  

整个加密算法建立在一定的数论基础上运算,达到的效果是,加密结果不可逆。即只有通过私钥(私钥)才能解密得到经由公钥(公钥)加密的密文。

  

在这种算法下,整个网络中的密钥数量大大降低,每个人只需要维护一对公司钥即可,即n个实体的网络中,密钥个数是2 n。

  

其缺点是运行速度慢。

  

<强> 2.3混合加密
  

  

周星驰电影《食神》中有一个场景,黑社会火,并争论撒尿虾与牛丸的底盘划分问题。食神说:“真是麻烦,掺在一起做成撒尿牛丸那,笨蛋!”

  

对称加密的优点是速度快,缺点是需要交换密钥。非对称加密的优点是不需要交互密钥,缺点是速度慢。干脆掺在一起用好了。

  

混合加密正是HTTPS协议使用的加密方式。先通过非对称加密交换对称密钥,后通过对称密钥进行数据传输。

  

由于数据传输的量远远大于建立连接初期交换密钥时使用非对称加密的数据量,所以非对称加密带来的性能影响基本可以忽略,同时又提高了效率。

  

  

关于Https协议和HttpClient的实现详解“> <br/>
  </p>
  <p>可以看的到,在原HTTP协议的基础上,HTTPS加入了安全层处理:</p>
  <ul>
  <李>客户端与服务端交换证书并验证身份,现实中服务端很少验证客户端的证书</李>
  <李>协商加密协议的版本与算法,这里可能出现版本不匹配导致失败李<h2 class=关于Https协议和HttpClient的实现详解