HTTPS的原理

如果不进行加密,在网络上传输数据都是用的明文加密的话,会出现什么情况呢?假如你的数据含有银行卡的密码,你的账户上有几千万,那么假如中途杀入一个黑客,你的钱将不翼而飞而你却还不知道是在什么时候泄露了自己的密码。所以,对数据进行加密显得十分必要。而http就是明文传输的,显然需要一种更加安全的协议,也就是https协议。

对称加密 

      有两个函数(也可以说是算法),其中一个假设叫f1(k,data),这个函数 拥有一个用来加密的密钥k以及需要进行加密的数据data,经过f1的运算后,得到一段加密后的密文,姑且称之为x。另一个叫f2(k,x),f2通过密钥k对密文进行解密,就能够得到传输的数据data。

     但是仔细想想,这样的对称加密也是不行的,因为这个key,也就是k,服务端只能有一个,不可能为每一个用户都量身定制一个唯一的key,这样的话,或许需要存储的key比本身需要传输的数据还要多,所以只能有一个key。那么,普通用户能拿到这个k,同样,黑客要是作为普通用户也能拿到这个k,显然,对称加密是不安全的。

 非对称加密

    有一个算法f,首先f(pk,data),通过公钥pk将data加密,得到密文Y;f(sk,Y),通过私钥,将密文Y解密,得到数据data。可以反过来用私钥加密和用公钥解密,即:f(sk,data)= Y 和f(sk,Y) = data。互换着加密和解密,这就是非对称加密。

    使用非对称加密的过程:服务端有公钥和私钥。1:客户端发送请求向服务端拿取公钥pk,拿到本地。2:客户端使用公钥加密数据生成密文Y,发到服务器,服务端用私钥解密。而私钥,只有服务端有,公钥却人人都可以拿,看似是非常完美的过程,但是仔细一想,如果客户端要得到数据呢?显然不能用公钥加密,因为客户端没有私钥,无法解密。所以服务端要用sk加密,那么客户端就要用pk解密,那么问题来了,黑客也能用pk来解密获得数据,显然,非对称加密也不行。 

 混合式:对称加密  +  非对称加密

1:客户端向服务端拿公钥

2:然后客户端生成一个字符串num1,用pk对num1进行加密,得到Y传给服务端。 服务端用sk对Y解密得到num1

3:之后,用num1作为今后进行对称加密的k了。由于num1是客户端随机生成的,所以,及时中途黑客进行截取,也不知道num1是多少

但是,这种方式还不是无懈可击的,面临最大的问题就是中间人问题。黑客可能会在客户端和服务端之间进行代理,让客户端以为黑客是服务端,于是黑客就能获取到客户端的num1,黑客用充当客户端,向服务端拿到公钥,这样信息就完全泄露了。

解决办法:引入CA认证,只有经过CA认证过的公钥才是合格的公钥,黑客的公钥自然行不通了。

具体解决的过程:对称加密  +  非对称加密 + CA

服务端有pk和sk,CA认证有cpk和csk,pk经过非对称加密f(csk,pk)=> license,客户端请求的时候,请求的是license而不是pk。客户端的系统中本来就已经存有CA机构的cpk,无需再去向CA拿,以为去拿又有可能被截获,不如直接写死。用cpk对license进行解密就能拿到pk。那么,之后的黑客介入,黑客能够起到窃取数据的作用吗?答案是否定的。如果黑客介入,那么他应该是已经获取到了pk,但是,客户端之前得到的pk将num1加密后形成的Y被黑客得到后,黑客并不能解密,因为没有私钥sk,所以黑客也是无能为力。

通常,在上述过程中, 对称加密  +  非对称加密的时候,中间是有一个步骤,就是c和s之间的商议过程,通过这个过程得到最终的HTTPS

以访问百度为例,百度也是有https保护的。

1:C--->S  发送请求,请求中携带了https支持的SSL的版本,对应的非对称算法,随机数num1

2:S--->C 获得了请求中的内容之后,决定了要使用的SSL的版本,以及要使用的对称加密的算法,生成一个随机数num2,还有license

3:C去认证license  只有认证成功才能进行之后的操作。

4:认证成功后,C--->S 发送数据,发送的数据包含一个随机数num3,还有散列算法hash,将交互过程的第一和第二步一起hash(即hash(1,2))得到一个值xx

5:S 端收到了hash值xx之后,进行验证,看xx的值是不是通过hash(1,2)得到的,如果是,说明客户端的身份没有问题,反之就有可能是黑客。认证成功之后,将随机数1,2,3经过一个算法生成一个随机数k

6:S--->C  进行hash(1,2,4)得到zz,发送给客户端C

7:C 也进行hash(1,2,4),看得到的是不是zz,如果是的话,说明服务端的身份也没有问题。没有问题之后,也将随机数1,2,3经过一个算法生成一个随机数k。而这个k和第5步的k是完全一样的。这个k是各自生成的,不在信道上传输,因此并不会泄露。

所以,HTTPS=非对称加密+对称加密+HASH+CA

 

 

 

 

 

 

 

 

 

 

 

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值