计算机网络安全技术 笔记 4

传输层与网络层安全协议

传输层安全协议 SSL

IPsec可以提供端到端的安全传输,但是不能处理同一端系统中不同应用之间的安全需求,因此需要传输层的安全协议:基于传输层的安全服务,保证两个应用之间的保密性和安全性,为应用层提供安全服务

常见协议包括

  • SP4:从属于安全数据网络系统SDNS,由NSA与NIST开发
  • SSH:通过 强制认证+数据加密 实现 安全登陆+安全传输
  • TLSP:ISO开发和标准化的协议,通信加密+完整性验证
  • SSL:安全套接层安全机制

我们主要讨论SSL,它是一个工作在TCP之上、对应用层透明的协议,可以为端到端的应用提供保密性、完整性和身份认证等安全服务

体系结构

  • 两个实体:客户机 + 服务器,基于证书在双方之间完成身份认证
  • 两个概念:会话 + 连接,会话是虚拟连接,连接是特定通道
  • 两层协议:握手协议 + 记录协议
SSL协议
SSL协议

会话与连接

  • 会话是客户端与服务器之间的虚拟连接,通过握手协议建立,用以协商密码算法、主密钥等
  • 连接是特定的通信信道(例如一次HTTPS访问可能需要多次连接),通常映射成是一次TCP连接
  • 会话 - 连接是一对多的关系

会话参数包括:

  • 会话标识符
  • 对等实体证书
  • 压缩方法
  • 加密规格(例如加密算法等)
  • 主控密钥
  • 是否可以恢复

连接参数

  • 服务器和客户随机数
  • 服务器写MAC密钥:服务器发送数据进行MAC操作的密钥
  • 客户机写MAC密钥:客户机发送数据进行MAC操作的密钥
  • 服务器写密钥:服务器加密 - 客户解密的对称密钥
  • 客户机写密钥:服务器解密 - 客户加密的对称密钥
  • 初始化向量
  • 序列号

SSL记录协议

为SSL连接提供两种服务:

  • 保密性:使用握手协议定义的共享密钥,对payload进行加密
  • 完整性:用握手协议定义的共享密钥计算MAC

记录协议的操作过程为:

  • 分片:将应用层数据分成若干片,每片不超过2142^{14}字节
  • 压缩:握手协议约定了压缩算法
  • 加密:包括添加MAC码、载荷加密、添加SSL记录头
SSL记录协议数据单元
SSL记录协议数据单元

SSL握手协议

功能包括:

  • 协商密码算法与主会话密钥
  • client和server相互认证

握手协议通过若干次报文交换完成,每个报文包括三个字段:

  • 类型:1 B
  • 长度:3 B
  • 内容:>= 1 B
SSL握手协议消息类型
SSL握手协议消息类型

一共需要四个阶段来完成,大体上为建立通道 - 验证身份 - 交换密钥

  1. 建立安全能力:
    1. client发送client_hello报文,其中密码参数包括密钥交换算法、加密算法、MAC算法
    2. server发送server_hello报文
  2. server认证、密钥交换
    1. server发送其SSL数字证书
    2. 如果需要client认证,则server发送certificate_request
    3. server发送server_hello_done,等待client相应
  3. client认证、密钥交换
    1. client收到server_hello_done,验证证书
    2. 如果收到了certificate_request,则发送数字证书,如果没有可用数字证书则发送一个alert,但是此时如果client的认证是强制的将导致会话失败
    3. client发送client_key_exchange,如果发送过数字证书则会用密钥进行签名
  4. 结束阶段
    1. client利用发送过去的密钥派生出所有算法需要的密钥
    2. client发送change_cipher_spec
    3. server转换为新密码对
    4. client发送新算法、密钥的finished报文
    5. server发送change_cipher_spec
    6. server发送finished

SSL告警协议与修改密码规约协议

告警协议alert用于向peer传递SSL相关的晶胞,其报文只有两个字节:

  • 第一个字节标识告警 / 致命错误
  • 第二个字节标识特定告警信息

修改密码规约协议chaneg_cipher_spec,在握手协议的结束阶段发送,通知接收方,以后的记录将使用刚才协商的密码算法和密钥进行加密/认证

只有一个字节,只有一个有效值

SSL安全性分析

  • SSL为每次安全连接产生一个128位长的随机序号,可以防范重放攻击
  • 保密性建立在算法安全性基础之上
  • SSL对应用层不透明,只能提供交易中客户与服务器间的双方认证,在涉及多方的电子交易中,SSL协议并不能协调各方间的安全传输和信任关系

应用层安全协议 HTTPS

Web的安全问题

Web的安全性需要三个方向:

  • server数据存储安全
  • client的计算机安全
  • 双方之间通信安全

针对Web的攻击可以按照威胁位置分为如上三类,也可以根据威胁方式分类:

  • 主动攻击,包括伪装成其它用户、篡改客户和服务器之间的消息或者篡改Web站点的信息等
  • 被动攻击,包括在浏览器和服务器通信窃听、获得原来被限制使用的权限等

提供Web安全的方法包括:

  • IP级安全,如IPsec
  • TCP级安全,如SSL
  • 应用级安全,为应用定制安全协议,例如安全电子交易SET

针对HTTP的攻击

应用最为广泛的应用层协议是HTTP,但是它是明文传输,没有完整性校验和状态连接

常见的攻击有:

  • 监听嗅探:直接嗅探到明文信息
  • 篡改劫持:直接劫持并修改通信数据包
  • 伪造服务器:ARP欺骗、DNS欺骗、钓鱼等

中间人攻击

攻击者与通讯双方建立独立的联系,由于HTTP不会进行认证且明文传输,因此这个操作是无法被防御的,一种常见的攻击手段是ARP欺骗

ARP是建立IP-MAC映射表的协议,但是其也没有进行任何验证,因此攻击者可以伪造ARP报文,从而将双方的通信打断(将通信目标节点的MAC改成攻击者的MAC),从而能够窃取信息、篡改信息

在ARP欺骗成功之后,可以继续实现DNS欺骗

HTTPS

是HTTP与SSL的合并,相当于在HTTP与TCP之间增加了一个SSL层,对数据进行加密,实现了保密性、完整性和身份认证

HTTPS与HTTP的区别
HTTPS与HTTP的区别

HTTPS仍然无法避免ARP欺骗,但是嗅探到的只能是密文,因此可以在一定程度上进行防范,但是如果攻击者使用自己的证书替换掉服务器的证书,那通信过程对于攻击者来说就是明文

但是HTTPS仍然可能被攻击,例如SSLStrip:

  • 先进行中间人攻击来拦截 HTTP 流量
  • 将出现的 HTTPS 链接全部替换为 HTTP,同时记下所有改变的链接
  • 使用 HTTP 与受害者机器连接
  • 同时与合法的服务器建立 HTTPS
  • 受害者与合法服务器之间的全部通信经过了代理转发
  • 出现的图标被替换成为用户熟悉的“小黄锁”图标,以建立信任
  • 中间人攻击就成功骗取了密码、账号等信息,而受害者一无所知

电子商务安全

电子商务安全应该包括:

  1. 基本加密算法
  2. 以基本加密算法为基础的证书认证体系CA(Certificate Authority)以及数字信封、数字签名等基本安全技术
  3. 以基本加密算法、安全技术、CA体系为基础的各种安全应用协议

其对安全的基本要求有:

  • 授权合法性
  • 信息的保密性
  • 信息的完整性
  • 身份的真实性
  • 不可抵赖性
  • 存储信息的安全性

电子商务安全体系包括网络系统安全、网络信息安全、网络交易安全等

电子商务安全体系
电子商务安全体系

安全电子交易协议 SET

参与方包括:

  • 持卡人(cardholder)
  • 网上商家(merchant)
  • 发卡银行(issuer)
  • 收款银行(acquirer)
  • 支付网关(Payment Gateway)
  • 证书授权(CA)
SET交易过程
SET交易过程
SET交易前的认证技术
SET交易前的认证技术
  1. 购买请求
    1. 持卡人向商家发送支付信息和订购信息,二者之间有一定联系(防止商家篡改),但是要分开签名和加密,即分别加密后拼接再次加密,之后用持卡人私钥签名
    2. 商家向收款银行发送支付信息
  2. 支付授权
    1. 商家通过支付网关和发卡行时得到授权,才能发货
    2. 支付授权交换由授权请求和授权响应组成,授权请求报文包括支付信息、双签名、授权公钥、双方证书,授权响应是与请求对应的回复
    3. 支付网关对授权请求的处理是:
      • 验证所有证书的合法性
      • 解密数字信封,获得会话密钥,解密authorization block
      • 验证商家对authorization block 的数字签名
      • 解密Payment Block的数字信封,解密支付信息
      • 验证双签名
      • 验证transiaction ID 与PI中的是否一致
      • 从发卡行申请支付
  3. 支付获取
    • 商家只有通过支付获取,才能完成银行的转帐业务
    • 获取请求报文由以下几部分组成:支付的数量、交易ID、获取权标、商人的签名密钥、证书
    • 支付获取由获取请求和获取响应报文组成
    • 获取响应报文由以下几部分组成:网关的签名、加密获取相应数据块、网关签名密钥证书
客户生成购买请求
客户生成购买请求
商家验证用户订单
商家验证用户订单