http 协议之安全--------https

 

大家都知道,在浏览器里输入一个web网址,浏览器会发送一个http请求,请求远方服务器上的资源。浏览器发送的http包信息会经过多个路由器或者交换机才能到达远方服务器。在网络传输的过程中,如果有黑客入侵到路由器或者交换机(比如家里的路由器被黑),估计经过这些路由器的网络数据,很容易就被网络抓包(特别是抓出http 头部的信息里的cookie信息,然后把cookie信息在写入自己的浏览器冒充受害者,后果就不说了……

 

关于怎样用java进行加解密,推荐学习梁栋的《Java加密与解密的艺术》

 

https,可以理解为socket+SSL+httphttps是在SSL上的http,底层用了SSL,应用层协议还是httpSSL底层用的是socket,对socket传输的数据进行加解密)

SSL主要提供了以下几个功能

1)认证用户和服务器,确保数据发送到正确的客户机和服务器

2)加密数据以防止数据中途被窃取

3)维护数据的完整性,确保数据在传输过程中不被改变。

 

         SSL中,主要是用非对称算法交换对称密钥,后续的通信过程都是用对称密钥和对称算法进行加解密(对称算法的加解码耗时,比非对称算法低很多;但是非对称算法的破解可能性比对称算法低很多。)

         非对称算法有以下几个特性:

              公钥加密,只能用私钥解密;私钥加密,只能用公钥解密

  

SSL通信大概过程(很简陋的单向验证)

             首先客户端发送自己的SSL版本号,支持的算法,随机数等发给服务端

 

             服务端收到请求后,发送自己的证书(带有公钥),支持的算法等信息给客户端

 

             客户端验证服务端发过来的证书(比如证书的合法性,或者到第三方验证机构验证其合法性,证书里的域名是否和访问的域名相同,是否过期等)

 

             客户端生成一个“对称密钥”,然后用服务端证书里的公钥对其加密(注意公钥加密只能私钥解密,而私钥在服务端),并把加密算法等信息也发给服务端

 

            服务端收到客户端用公钥加密的“对称密钥”进行解密

             客户端和服务端通信将使用协商的“对称密钥”和对称算法进行加解密。

猜你喜欢

转载自liuwenjie517333.iteye.com/blog/2237026