摘要认证和签名认证

1、摘要认证

         经由HTTP协议进行通信的数据大都是未经加密的明文,包括请求参数、返回值、cookie、head等数据,因此,外界通过对通信的监听,便可以轻而易举的根据请求头和响应双方的格式,伪造请求与响应,修改和窃取各种信息。

1.1摘要认证原理

        对于普通的非敏感数据,我们需要更多关注其真实性和准确性,鉴于使用HTTPS性能上的成本以及额外需要申请CA证书,在这种情况下,一般采用对参数和响应进行摘要的方法,即能满足需求。针对每次请求和响应,按照一定的规则生成数字摘要,数字摘要需要涵盖客户端和服务端通信的内容,以及双方约定好的“盐”,以此来保证请求与响应不被第三方篡改。其流程如下:

  • 由于传递端和接收端都认为http协议的请求参数是无序的,因此客户端与服务端双方需要约定好参数的排序方式。再将请求参数和值经过一定的策略组织起来,加上一个秘钥secret,也就是所谓的“盐”,然后通过约定的摘要算法生成数字摘要,传递给服务端。
  • 在服务端接收到客户端传递的参数后,服务端会采用与客户端相同的策略对参数进行排序,并加上相同的secret,采用相同的摘要方式生成摘要串。由于相同的内容经过相同的摘要算法,生成的摘要内容必定是相同的。将服务端生成的摘要串与客户端生成的摘要串进行比较,这样可以得知参数的内容是否被篡改。
  • 服务端返回的响应也需要加上secret,采用约定好的摘要算法生成摘要,并将生成的摘要作为响应的一部分,返回给客户端,以便验证服务端返回数据的合法性。
  • 当客户端接收到服务端的响应后,加上相同的secret进行拼接,采用与服务端相同的摘要算法进行摘要,生成的摘要串与服务端传递过来的摘要串进行比较,这样便可知服务端的响应是否被篡改。

摘要认证的安全性取决于secret的安全性,由于服务端与客户端采用的是相同的secret,一旦secret泄露,通信的安全则无法保证。

2、签名认证

        摘要认证的方式能够一定程度上防止通信的内筒被篡改,但是,算法的安全性取决于secret。与摘要认证类似,由于传递端和接收端都认为http协议的请求参数是无序的,客户端与服务端双方需要约定好参数的排序方式。请求参数经过排序后,再将参数名称和值经过一定的策略组织起来,这是不再加上secret,而是直接通过约定的摘要算法来随机生成数字摘要,并使用客户端私钥对数字摘要进行加密,将加密的密文传递给服务端。

      服务端接收到客户端传递的参数后,服务端会采用与客户端相同的策略对参数进行排序,并使用相同的摘要算法生成摘要,然后服务端使用客户端的公钥将接收的密文进行解密,得到客户端生成的摘要串,并与服务端生成的进行比较,这样便可以得知,参数是否由客户端生成,并且参数的内容是否被篡改。

      服务端返回响应后,采用约定好的摘要算法生成相应的摘要,并且使用服务端的私钥进行加密,然后将生成的密文作为响应的一部分,返回给客户端,以便验证服务端的身份及返回数据的合法性。

      客户端接收到服务端的响应后,采用与服务端想用的摘要算法进行摘要,生成摘要串,然后使用服务端的公钥解密接收到签名密文,与客户端生成的摘要串比较,便可以得知响应是否由服务端发出,及内容是否被篡改。

      相比较与摘要认证,签名认证的优势在于加密时使用的是私钥,而解密时使用的是对外公开的公钥,私钥由私钥持有者保存,不需要泄露和传输给第三方,安全性大大提高,但相较于摘要认证,签名认证所使用的非对称加密算法将消耗更多的时间和硬件资源。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值