一、保护HTTP的安全
1.功能:
.服务器认证:
客户端知道它是在与真正的服务器进行通信
.客户端认证:
服务器知道它是在与真正的客户端进行通信
.完整性:
服务器与客户端的数据不会被修改
服务器与客户端的数据不会被修改
.加密:
客户端与服务器的对话是私密的,不会被窃听
.效率:
运行足够快的算法
.普适性:
所有客户端和服务器都支持这些协议
.管理的可扩展性
在任何地方的任何人都可以进行安全通信
.适应性
能够支持当前最知名的安全方法
2.HTTPS
HTTPS在HTTP下面提供了一个传输级的安全密码层
![](https://img-my.csdn.net/uploads/201302/15/1360902590_9410.png)
用SSL的输入/输出取代TCP的调用
二、数字加密
1.密码
加密之前的原始报文称为明文
使用密码之后的编码报文成为密文
2.使用密钥的密码
通过使用密钥来产生不同的加密密文
3.数字密码
C= E(p,e)
P = D(c, d)
C:经过编码的密文
C:经过编码的密文
E:编码函数
P:明文报文
e:编码密钥
D:解码函数
d:解码密钥
三、对称密钥加密技术
编码使用的密钥值和解码使用的密钥值相同(e = d),统称为k
1.密钥长度与枚举攻击
枚举攻击:
用暴力法去尝试所有的密钥值
2.建立共享密钥
发送者和接收者在互相对话之前要有一个共享的保密密钥,如果有N个节点,每个
节点都要与其他N-1个节
3.公开密钥加密技术
不为每个节点对话使用单独的密钥,而是使用非对称密钥:一个用来对主机报文进行
编码,一个用来对主机报文进行解码;编码密钥是公开的,但只有主机知道解码密钥
![](https://img-my.csdn.net/uploads/201302/15/1360902605_5942.png)
四、数字签名
说明是谁编写的报文并且该报文并没有篡改过
1.签名是加了密的校验和
数字签名是附加在报文上的特殊加密检验码
![](https://img-my.csdn.net/uploads/201302/15/1360902618_8974.png)
a.节点A将变长报文提取为定长的摘要
b.节点A对摘要应用了一个签名函数,该函数将用户的私有密钥作为参数
c.节点A将签名附加到报文的末尾发给节点B
d.节点B需要确定报文确实是节点A写的,对前面进行检测
五、数字证书
1.内容
.对象的名称
.过期时间
.证书发布者
.来自证书发布者的数字签名
2.用证书对服务器进行验证
通过HTTPS安全连接上服务器后,浏览器会自动获取所连服务器的数字证书
服务器证书:
.Web站点的名称和主机名
.Web站点的公开密钥
.签名颁发机构名称
.签名颁发机构的签名
六、HTTPS
1.概述
将HTTP报文发送给TCP之前发送给了一个安全层.,对其进行加密
2.方案
HTTPS
![](https://img-my.csdn.net/uploads/201302/15/1360902633_4917.png)
3.建立安全传输
a.对于http,客户端发送一条到Web服务器端口80的tcp连接,接受服务器响应,然后关闭连接
b.对于https,客户端打开到web服务器端口443的tcp连接,然后初始化SSL,对加密
参数进行沟通,交换密钥等,然后将请求报文加密并发送给ssl层
![](https://img-my.csdn.net/uploads/201302/15/1360902650_9868.png)
4.SSL握手
.交换协议版本号
.选择一个两端都了解的密码
.对两端密码的身份进行认证
.生成临时的会话密钥,以便加密信道
![](https://img-my.csdn.net/uploads/201302/15/1360902666_7250.png)
SSL支持双向认证,将服务器证书承载回客户端,客户端证书承载会服务端
5.站点证书有效性
验证步骤:
a.日期检测
检测是否过期
b.签名颁发者可信度检测
c.签名检测
对签名使用颁发机构的公开密钥,并将其与检验码进行比较
d.站点身份检测
浏览器会验证证书中的域名是否和将要访问服务器的域名是否一致
七、通过代理以隧道形式传输安全流量
客户端使用服务器的公开密钥对发往服务器的数据进行加密时,代理不能读取http首部,
故无法知道将请求转发到何处
解决办法:
a.https ssl 隧道协议:客户端在开始加密之前以明文方式告知代理连接的host和port,
通过CONNECT扩展方法