web安全威胁
web流量安全方法
SSL
两层协议组成。会话通过握手协议创建。
会话状态:会话标识符、对等证书、压缩方法、密码规格、主密钥(C/S共享的48字节的会话密钥)、可恢复性。
连接状态:随机字节串、服务器写MAC密钥、客户端写MAC密钥、服务器写密钥、客户端写密钥、初始化向量IV、序列号(改变密码规格时置零)
(1)SSL记录协议
(2)密码变更规格协议
使延迟状态改变为当前状态,协议只包含一条消息,由一个值为1的字节组成。
(3)报警协议
第一个字节为警告,第二个字节为致命,致命时立即结束当前连接并且本次会话不允许建立新连接。
(4)握手协议
- SSL 客户端发送"Hello"消息给 SSL 服务器端,并列出客户端所支持的 SSL 版本、加密算法和摘要算法。在实际应用中,一般将加密算法和摘要算法结合到一起,组成一个加密套件。同时,客户端还会发送一个随机数,用于以后产生加密密钥。
- SSL 服务器端对客户端的连接请求作出回应。从客户端提供的加密套件列表中,选择要使用的加密套件,并产生另外一个随机数。同时,服务器端会发送自己的数字证书给客户端,里面包含服务器端的认证信息及公共密钥。如果服务器端需要验证客户端,它还会在消息中包含要求客户端提供数字证书的请求。
- 客户端收到服务器端的回应。它首先使用 CA 证书验证服务器端证书的有效性。在此过程中,客户端会检查证书的签名、证书认证路径、有效日期、证书状态等。验证通过后,抽取出其中的公钥。客户端产生另外一个随机数,并使用服务器端的公钥加密后发送给服务器端。
- 如果服务器端要求客户端提供证书,客户端会将随机数用私钥加密,连同证书发送给服务器端。服务器端对客户端的证书进行验证,并使用客户端的公钥解密收到的随机数。
- 服务器端和客户端基于前面提供的随机数,计算出用于数据加密的共享密钥。
- 客户端将所有握手消息的 MAC 值发送给服务器端,服务器端也将所有握手消息的 MAC 值发送给客户端。这么做是为了防止攻击者在握手过程中篡改了消息内容。
- 客户端和服务器端使用握手过程中产生的加密密钥交换握手结束消息。握手结束,SSL 连接建立。
HTTPS(443端口)
HTTP(80端口)+SSL
被加密的元素
- 请求文件的URL
- 文件内容
- 表单内容
- Cookie
- HTTP标题内容
SSH(Secure Shell)
安全的远程登录、文件传输和Email等。
传输层协议
1)识别字符串交换:字符串用于Diffie-Hellman密钥交换
2)算法协商:SSH_MSG_KEXINIT包含公钥算法列表、加密算法列表、MAC算法列表、压缩算法列表等
3)密钥交换:以SSH_MSG_NEWKEYS作为结束符,利用DH交换算法、主机密钥对等参数,生成会话密钥和会话ID,并完成客户端对服务器身份的验证
4)服务请求:请求身份验证或数据传输,之后的数据会作为有效载荷
用户身份验证协议
1)Client发送SSH_MSG_USERAUTH_REQUEST
2)Sever检查用户名,无效则返回SSH_MSG_USERAUTH_FAILURE,有效则返回SSH_MSG_USERAUTH_FAILURE及可使用的认证方式名单
3)Client选择一种认证方式,再次发送SSH_MSG_USERAUTH_REQUEST
5)Server返回SSH_MSG_USERAUTH_FAILURE,成功则返回信息的布尔值(表示是否部分成功)为true及可使用的认证方式名单,失败则返回的布尔值为false
6)当所有身份认证都成功后,Server发送SSH_MSG_USERAUTH_SUCCESS,当超过认证次数限制或认证失败,则关闭连接
连接协议
1)本地端口映射:客户端创建一个拦截进程将不安全的TCP连接重新传入到SSH通道中,利用选择的端口抓取所有传输。
2)远端映射: