11 网络安全基本原理


网络安全基本原理

网络安全基本概念

网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断

网络安全基本属性

  • 机密性(confidentiality):只有发送方与预定接收方能够理解报文内容
    • 发送方加密报文
    • 接收方解密报文
  • 身份认证(authentication):发送方与接收方希望确认彼此的真实身份
  • 信息完整性(message integrity):发送方与接收方希望确保信息未被篡改(传输途中或者后期),发生篡改一定会被检测到
  • 可访问与可用性(access and availability):
    • 网络服务必须对被授权用户可访问与可用

网络安全的基本特征

  • 相对性
    • 只有相对的安全,没有绝对的安全
  • 时效性
    • 新的漏洞与攻击方法不断发现
  • 相关性
    • 新配置、新系统组件可能会引入新的安全问题
  • 不确定性
    • 攻击时间、攻击者、攻击目标和攻击发起的地点都具有不确定性
  • 复杂性
    • 网络安全是一项系统工程,需要技术的和非技术的手段
  • 重要性
    • 网络安全关乎国家、政府、企业、个人的安全

网络威胁

  • 窃听(eavesdrop): 窃听信息
  • 插入(insert): 主动在连接中插入信息
  • 假冒(impersonation): 可以通过伪造(spoof)分组中的源地址(或者分组的任意其他字段
  • 劫持(hijacking): 通过移除/取代发送发或者接收方“接管”(take over)连接
  • 拒绝服务DoS(denial of service): 阻止服务器为其他用户提供服务(e.g.,通过过载资源)
  • 映射(Mapping):
  • 对策(Countermeasures)
    • 记录到达的网络流量
    • 分析、识别出可疑活动(IP地址和端口被依次扫描)
  • 分组“嗅探”(sniffing):
    • 广播介质(共享式以太网,无线网络)
    • 混杂(promiscuous)模式网络接口可以接收/记录所有经过的分组/帧
    • 可以读到所有未加密数据(e.g.,包括口令!)
    • Wireshark 就是一个典型免费的分组嗅探软件(抓包工具
  • 分组嗅探对策
    • 组织中的所有主机都运行软件,周期性监测网络接口是否工作在混杂模式
    • 每段广播介质连接一台主机(如交换式以太网)
  • IP欺骗(Spoofing):
    • 直接由应用生成“原始”IP分组,可以设置分组的源IP地址字段为任意值
    • 接收方无法判断源地址是否被欺骗
    • e.g.:C冒充B
  • IP欺骗对策: 入口过滤(ingress filtering)
    • 路由器不转发源IP地址无效的IP分组 (e.g.,源IP地址不属于所连接网络)
    • 很有效!但是不能强制所有网络都执行入口过滤
  • 拒绝服务DOS(Denial of service):
    • 向接收方恶意泛洪(flood)分组,淹没(swamp)接收方
      • 带宽耗尽
      • 资源耗尽
    • 分布式拒绝服务攻击(DDOS): 多个源主机协同淹没接收方
      • e.g., C与另一个远程主机协同对A进行SYN攻击
    • DDoS攻击过程:
      • 1.选择目标
      • 2.入侵(break into)网络中主机(构建僵尸网络)
      • 3.控制僵尸主机向目标发送分组
    • 反射式DDoS攻击:
      • 1.选择目标
      • 2.入侵网络中主机(构建僵尸网络)
      • 3.选择反射服务器
      • 4.借助反射服务器向目标发起攻击
  • DOS:对策
    • 在到达主机前过滤掉泛洪分组(e.g.,SYN)
      • 可能好坏一起扔
    • 追溯(traceback)攻击源
      • SYN cookie[RFC 4987]

密码学基础

密码学(cryptography)术语:

  • m: 明文
  • KA(m): 密文,利用秘钥KA加密
  • m = KB(KA(m)): 利用秘钥KB解密

对称密钥加密

  • 对称密钥加密: Bob和Alice共享相同(对称)密钥: Ks
    • e.g.,单码替代密码的替代模式
  • Q: Bob和Alice如何确认密钥值(密钥分发)?

公开密钥加密

破解加密方法

  • 唯密文攻击(cipher-textonly attack): 入侵者(如Trudy)只截获到密文,基于对密文的分析进行破解
    • 两条途径:
      • 暴力破解(brute force): 尝试所有可能的密钥
      • 统计分析
  • 已知明文攻击(known-plaintext attack): 入侵者已知(部分)明文以及与之匹配的密文
    • e.g.,在单码替代密码(monoalphabetic
      cipher)中,入侵者已确认字母a,l,i,c,e,b,o的替换关系
  • 选择明文攻击(chosen-plaintext attack):入侵者可以获取针对选择的明文的密文

传统加密方法

  • 替代密码(substitution cipher): 利用一种东西替代另一种东西
    • 凯撒密码(Casesar cipher): 一个字母替代另一个字母
      • 将一个字母利用字母表中该字母后面的第 k 个字母替代
      • 如k=3,“bob. i love you. alice”→“ere, l oryh brx. dolfh”
    • 单码(字母)替代密码(monoalphabetic cipher)
    • 多码(字母)替代加密(polyalphabetic encryption): 使用多个单码替代密码,明文中不同位置的字母使用不同的单码替代密码
  • 换位(transpositions)密码: 重新排列明文中的字母
    • 置换法(permutation method)
      • 将明文划分为固定长度(d)的组,每个组内的字母按置换规则(f)变换位置
      • 密钥: (d, f)
    • 列置换加密
      • 将明文按行组成一个矩阵,然后按给定列顺序输出得到密文
      • 列置换加密的密钥包括列数和输出顺序
        • 可以用一个单词来表示
        • 单词长度表示列数,单词中的字母顺序表示输出顺序

现代加密技术

  • 现代加密技术的基本操作包括经典的替代和置换·
    • 不再针对一个个字母,而是针对二进制位操作
  • 现代加密技术主要分为:
    • 对称密钥加密
    • 非对称密钥加密(公开密钥加密)
  • 对称密钥加密:
    • 流密码( stream ciphers)
    • 分组密码,也称块密码( block ciphers)

数字签名

Q: 如何解决下列与报文完整性相关的问题?

  • 否认:发送方不承认自己发送过某一报文
  • 伪造:接收方自己伪造一份报文,并声称来自发送方
  • 冒充:某个用户冒充另一个用户接收或发送报文
  • 篡改:接收方对收到的信息进行篡改

A: 数字签名(Digital signatures) !

  • 数字签名技术是实现安全电子交易的核心技术之一
  • 可验证性(verifiable)
  • 不可伪造性(unforgeable)
  • 不可抵赖性(non-repudiation)

对称密钥问题?

Q: 两个实体在网上如何建立共享秘密密钥?

A: 解决方案:
可信任的密钥分发中心(Key Distribution
Center-KDC)作为实体间的中介(intermediary)

公钥问题

中间人攻击

Q: 当Alice获得了Bob的公钥(通过web网站、e-mail、磁盘等),她怎么确认这真的是Bob的公钥而不是Trudy的?

A:解决方案:
可信任的认证中心(Certification Authority-CA)

  • 认证中心(CA): 实现特定实体E与其公钥的绑定
  • 每个E(如人、路由器等)在CA上注册其公钥
    • E向CA提供“身份证明”.
    • CA创建绑定E及其公钥的证书(certificate).
    • 证书包含由CA签名的E的公钥-CA声明:“这是E的公钥”

当Alice想要Bob的公钥时:

  • 首先获取Bob的公钥证书(从Bob或者其他地方)
  • 应用CA的公钥,解密证书中签名的公钥,获得Bob公钥

公钥证书主要内容

Web安全威胁

  • Web服务器的安全威胁
    • Web服务越强大,包含安全漏洞概率就越高
    • HTTP服务可在不同权限下运行
  • Web浏览器的安全威胁
    • 活动Web页可能隐藏恶意程序
  • 通信信道的安全威胁
    • 监听程序会威胁通信信道中所传输信息的机密性
    • 伪造、篡改、重放会威胁所传输信息的完整性
    • 缺乏身份认证使得冒充他人身份进行中间人攻击
    • 缺乏数字签名机制使得通信双方能相互攻击
    • 拒绝服务攻击使得通信信道不能保证可用性

应对Web安全威胁的着手点

  • 基于应用层实现Web安全
    • 为特定应用定制特定安全服务,将安全服务直接嵌入在应用程序中
  • 基于传输层实现Web安全
    • SSL或TLS可作为基础协议栈的组成部分,对应用透明
      • 也可直接嵌入到浏览器中使用
    • 使用SSL或TLS后,传送的应用层数据会被加密
      • 保证通信的安全
  • 基于网络层实现Web安全
    • IPSec提供端到端(主机到主机)的安全机制
      • 通用解决方案
    • 各种应用程序均可利用IPSec提供的安全机制
      • 减少了安全漏洞的产生

SSL: Secure Sockets Layer

  • 广泛部署的安全协议
    • 几乎所有浏览器和Web服务器都支持
    • https
    • 每年通过SSL交易额达数十亿美元
  • 实现:Netscape
  • 变体:TLS(RFC 2246)
  • 提供:
    • 机密性(confidentiality)
    • 完整性(integrity)
    • 认证(authentication)
  • 最初目标:
    • Web电子商务交易
    • 加密(尤其信用卡号)
    • Web服务器认证可选的客户认证
    • 方便与新商户的商务活动(minimum hassle)
  • 可用于所有基于TCP的网络应用
    • 安全socket接口

SSL和TCP/IP

  • SSL为网络应用提供应用编程接口(API)
  • C语言和Java语言的SSL库/类可用

简化的(Toy)SSL: 一个简单的安全信道

  • 握手(handshake): Alice和Bob利用他们的证书、私钥认证(鉴别)彼此,以及交换共享密钥
  • 密钥派生(key derivation): Alice和Bob利用共享密钥派生出一组密钥
  • 数据传输(data transfer): 待传输数据分割成一系列记录
  • 连接关闭(connection closure): 通过发送特殊消息, 安全关闭连接

握手

  • MS:主密钥
  • EMS:加密的主密钥

密钥派生

  • 不同加密操作使用不同密钥会更加安全
    • 例如:报文认证码(MAC)密钥和数据加密密钥
  • 4个密钥:
    • Kc=用于加密客户向服务器发送数据的密钥
    • Mc=用于客户向服务器发送数据的MAC密钥
    • Ks=用于加密服务器向客户发送数据的密钥
    • Ms=用于服务器向客户发送数据的MAC密钥
  • 通过密钥派生函数(KDF)实现密钥派生
    • 提取主密钥和((可能的)一些额外的随机数,生成密钥

数据传输

  • 为什么不直接加密发送给TCP的字节流?
    • MAC放到哪儿?
      • 如果放到最后,则只有全部数据收全才能进行完整性认证
    • e.g.,对于即时消息应用,在显示一段消息之前,如何针对发送的所有字节进行完整性检验?
  • 方案: 将字节流分割为一系列记录
    • 每个记录携带一个 MAC
    • 接收方可以对每个记录进行完整性检验
  • 问题: 对于每个记录,接收方需要从数据中识别出MAC
    • 需要采用变长记录

简化的SSL: 序列号

  • 问题: 攻击者可以捕获和重放记录或者重新排序记录
  • 解决方案: 在MAC中增加序列号
    • MAC= MAC(Mx,sequence][data)
    • 注意:记录中没有序列号域
  • 问题: 攻击者可以重放所有记录
  • 解决方案: 使用一次性随机数(nonce)

简化的SSL: 控制信息

  • 问题:截断攻击
    • 攻击者伪造TCP连接的断连段,恶意断开连接
    • 一方或双方认为对方已没有数据发送
  • 解决方案: 记录类型, 利用一个类型的记录专门用于断连
    • type 0用于数据记录; type 1用于断连
  • MAC=MAC(Mx,sequence || type || data)

简单的SSL记录

SSL协议栈

  • 介于HTTP与TCP之间的一个可选层
    • 绝大多数应用层协议可直接建立在SSL之上
  • SSL不是一个单独的协议,而是两层协议

SSL密码组(cipher suite)

  • 密码组(cipher suite)
    • 公开密钥算法(public-keyalgorithm)
    • 对称加密算法(symmetricencryption algorithm)
    • MAC算法
  • SSL支持多个密码组
  • 协商(negotiation): 客户与服务器商定密码组
    • 客户提供选项(choice)
    • 服务器挑选其一
  • 常见的SSL对称密码:
    • DES-分组密码
    • 3DES-分组密码
    • RC2 -Rivest Cipher 2分组密码
    • RC4 -Rivest Cipher 4流密码
  • SSL公开密钥加密: RSA

SSL握手过程

  1. 客户发送其支持的算法列表,以及客户一次随机数(nonce)
  2. 服务器从算法列表中选择算法,并发回给客户: 选择+证书+服务器一次随机数
  3. 客户验证证书,提取服务器公钥,生成预主密钥(pre_master_secret),并利用服务器的公钥加密预主密钥,发送给服务器
  4. 客户与服务器基于预主密钥和一次随机数分别独立计算加密密钥和MAC密钥
  5. 客户发送一个针对所有握手消息的MAC
  6. 服务器发送一个针对所有握手消息的MAC

最后2步的意义: 保护握手过程免遭篡改

  • 客户提供的算法,安全性有强、有弱
    • 明文传输
  • 中间人攻击可以从列表中删除安全性强的算法
    • 最后2步可以预防这种情况发生

为什么使用两个一次随机数?

  • 假设Trudy嗅探Alice与Bob之间的所有报文
  • 第二天,Trudy与Bob建立TCP连接,发送完全相同的记录序列
  • Bob(如Amazon)认为Alice对同一产品下发两个分离的订单
  • 解决方案:Bob为每次连接发送完全不同的一次随机数
    • 确保两天的加密密钥不同

虚拟专用网VPN

  • 动机: 安全+成本
  • 虚拟专用网VPN(Virtual Private Networks): 通过建立在公共网络(如Internet)上的安全通道,实现远程用户、分支机构、业务伙伴等与机构总部网络的安全连接,从而构建针对特定组织机构的专用网络。
    • 虚拟:“安全通道”不实际独占公共网络的资源,是一条逻辑的穿过公共网络的安全、稳定的隧道
    • 通过隧道技术、加密技术、密钥管理、认证和访问控制等,实现与专用网类似的安全性能

VPN的功能

  • 数据机密性保护
  • 数据完整性认证
  • 数据源身份认证
  • 防重放攻击
  • 访问控制

VPN关键技术

  • 隧道技术
  • 数据加密
  • 身份认证
  • 密钥管理
  • 访问控制
  • 网络管理

隧道技术

  • 构建VPN的核心技术
  • 隧道: 通过Internet提供安全的点到点(或端到端)的数据传输“安全通道”
    • 实质上是一种封装
  • VPN隧道利用隧道协议对通过隧道传输的数据进行封装
    • 使数据安全穿越公共网络(通常是Internet)
    • 通过加密和认证以确保安全
    • 数据包进入隧道时,由VPN封装成IP数据报
    • 通过隧道在Internet上安全传输
    • 离开隧道后,进行解封装,数据便不再被保护

隧道协议

隧道协议内包括以下三种协议:

  • 乘客协议(Passenger Protocol)
  • 封装协议(Encapsulating Protocol)
  • 承载协议(Carrier Protocol)

常见VPN隧道协议:

  • 第二层隧道:PPTP、L2TP
    • 主要用于远程客户机访问局域网方案
  • 第三层隧道: IPSec
    • 主要用于网关到网关、或网关到主机方案
    • 不支持远程拨号访问

典型VPN实现技术

  • IPSec: 最安全、适用面最广
  • SSL:具有高层安全协议的优势
  • L2TP:最好的实现远程接入VPN的技术
  • 典型VPN技术结合:
    • IPSec与SSL、IPSec与L2TP

防火墙(firewall)

防火墙:隔离组织内部网络与公共互联网,允许某些分组通过, 而阻止其他分组进入/离开内部网络的软件/硬件设施。

为什么需要防火墙?

  • 预防拒绝服务攻击(DoS) :
    • SYN泛洪: 攻击者建立许多虚假TCP连接,耗尽资源,导致“真正”的连接无法建立
  • 预防非法修改内部数据访问:
    • e.g.,攻击者替换CIA网站主页
  • 只允许对内部网络的授权访问:
    • 认证的用户/主机

三种类型的防火墙:

  • 无状态分组过滤器(stateless packet filters)
  • 有状态分组过滤器(stateful packet filters)
  • 应用网关(application gateways)

无状态分组过滤器

  • 内部网络通过路由器防火墙(router firewall)与Internet连接
  • 路由器逐个分组过滤,决策是否转发或丢弃分组,依据:
    • 源IP地址、目的IP地址
    • TCP/UDP源、目的端口号
    • ICMP报文类型
    • TCP SYN和ACK标志位

无状态分组过滤器: 笨拙

  • 不加以区分放行满足条件的所有分组
  • 例如:放行dest port = 80、ACK=1的分组,即使没有建立的TCP连接

有状态分组过滤器:跟踪每个TCP连接

  • 跟踪连接建立(SYN)、拆除(FIN): 根据状态确定是否放行进入或外出的分组
  • 超时的非活动连接: 不再允许分组通过

应用网关

  • 基于应用数据以及lP/TCP/UDP头部字段过滤分组
  • 例如:允许特定用户telnet外部网络
  1. 要求所有Telnet用户通过网关Telnet外部网络;
  2. 对于授权的用户,网关代理用户与目的主机建立Telnet连接,并且在两个连接之间进行数据中继;
  3. 路由器阻止所有不是由网关发起的Telnet连接。

防火墙、应用网关的局限性

  • IP欺骗(spoofing): 路由器不知道数据是否来自于声称的源
  • 如果多个应用需要特殊处理,则每个应用需要一个应用网关
  • 客户软件必须知道如何连接网关
    • e.g..必频配置Web浏览器的代理服务器的IP地址
  • 过滤器经常对UDP流量使用“全部通过”或者“全部不通过”策略
  • 折衷(tradeoff):确定安全级别
  • 与外部网络的通信度
    • 很多安全防护级别很高的网站仍然遭受攻击

文章作者: Hailong Gao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hailong Gao !
评论
  目录