《大型分布式网站架构设计与实践》阅读笔记06

摘要认证

需要认证原因

经由HTTP协议进行通信的数据大都是未经加密的明文,包括请求参数、返回值、cookie、head等数据,因此,外界通过对通信的监听,便可轻而易举地根据请求和响应双方的格式,伪造请求与响应,修改和窃取各种信息。相对于基于TCP协议层面的通信方式,针对HTTP协议的攻击门槛更低。因此,基于HTTP协议的Web与SOA架构,在应用的安全性方面需要更加重视。
经由浏览器的访问请求,可以通过浏览器插件进行网络监听,以及查看传输的网络参数,如Firefox浏览器的firebug 插件。

通过插件,可以清楚地看到HTTP请求所生成的任何参数及响应的body信息,这些数据如没有特殊处理,都是未经加密的明文,包括用户的用户名与密码。当然,浏览器插件大多数情况下只能看到本机浏览的信息。
更为危险的事情是,攻击者可以通过对一些网络核心节点的控制,再加上一些特殊的手段,如端口映射、代理监听等,使其能够监听和拦截到大量用户的通信数据包,通过对数据包进行筛选和分析,可以得到通信所涵盖的用户的所有敏感信息,如电子邮件、聊天记录甚至是登录的用户名和密码。

摘要认证的原理

对于普通的非敏感数据,我们更多关注其真实性和准确性,因此,如何在通信过程中保障数据不被篡改,首当其冲成为需要考虑的问题。
鉴于使用HTTPS性能上的成本以及需要额外申请CA证书,在这种情况下,一般采用对参数和响应进行摘要的方法,即能够满足需求。
针对每次请求和响应,按照一定的规则生成数字摘要,数字摘要需要涵盖客户端与服务端通信的内容,以及双方约定好的“盐”29,以此来保障请求与响应不被第三方篡改。常见的摘要算法包括MDS、SHA等,关于摘要算法的介绍,前面章节已有详细介绍,此处便不再赘述。
由于传递端和接收端都认为HTTP协议的请求参数是无序的,因此客户端与服务端双方需要约定好参数的排序方式。请求的参数经过排序后,再将参数名称和值经过一定的策略组织起来,加上一个密钥secret,也就是所谓的“盐”,然后通过约定的摘要算法生成数字摘要,传递给服务端。

对于普通的非敏感数据,我们更多关注其真实性和准确性,因此,如何在通信过程中保障数据不被篡改,首当其冲成为需要考虑的问题。
鉴于使用HTTPS性能上的成本以及需要额外申请CA证书,在这种情况下,一般采用对参数和响应进行摘要的方法,即能够满足需求。
针对每次请求和响应,按照一定的规则生成数字摘要,数字摘要需要涵盖客户端与服务端通信的内容,以及双方约定好的“盐”29,以此来保障请求与响应不被第三方篡改。常见的摘要算法包括MDS、SHA等,关于摘要算法的介绍,前面章节已有详细介绍,此处便不再赘述。
由于传递端和接收端都认为HTTP协议的请求参数是无序的,因此客户端与服务端双方需要约定好参数的排序方式。请求的参数经过排序后,再将参数名称和值经过一定的策略组织起来,加上一个密钥secret,也就是所谓的“盐”,然后通过约定的摘要算法生成数字摘要,传递给服务端。

原文地址:https://www.cnblogs.com/ywqtro/p/14898451.html