计算机网络第八章
第 8 章 网络安全
本章目标:
- 网络安全原理:
- 加密,不仅仅用于机密性
- 认证
- 报文完整性
- 密钥分发
- 安全实践:
- 防火墙
- 各个层次的安全性:应用层,传输层,网络层和链路层
8.1 什么是网络安全?
机密性: 只有发送方和预订的接收方能否理解传输的报文内容
- 发送方加密报文
- 接收方解密报文
认证: 发送方和接收方需要确认对方的身份
报文完整性: 发送方、接受方需要确认报文在传输的过程中或者事后没有被改变
访问控制和服务的可用性: 服务可以接入 以及 对用户而言是可用的
朋友和敌人: Alice, Bob, Trudy
网络安全世界比较著名的模型
- Bob, Alice (lovers!) 需要安全的通信
- Trudy (intruder) 可以截获,删除和增加报文
网络中的坏蛋
Q: “bad guy”可以干什么?
A: 很多!
- 窃听: 截获报文
- 插入:在连接上插入报文
- 伪装: 可以在分组的源地址写上伪装的地址
- 劫持: 将发送方或者接收方踢出,接管连接
- 拒绝服务: 阻止服务被其他正常用户使用 (e.g.,通过 对资源的过载使用)
- …
谁有可能是Bob, Alice?
- … 现实世界中的Bobs和Alices!
- 电子交易中的Web browser/server (e.g.,在线 购买)
- 在线银行的client/server
- DNS servers
- 路由信息的交换
- 其它例子?
8.2 加密原理
加密语言
- plaintext 纯文本
ciphertext 密文
-
对称密钥密码学: 发送方和接收方的密钥相同
-
公开密钥密码学: 发送方使用接收方的公钥进行加密,接收 方使用自己的私钥进行解密
对称密钥加密
对称密钥密码: Bob和Alice共享一个对称式的密钥: K
- e.g., 密钥在单码替换加密方法中是替换模式
- Q: 但是Bob和Alice如何就这个密钥达成一致呢?
替换密码: 将一个事情换成另外一个事情
Q: 破解这个密码的强度?
- brute force (how hard?)
- other?
对称密钥加密学: DES
DES: Data Encryption Standard
- US 加密标准[NIST 1993]
- 56-bit 对称密钥, 64-bit明文输入
- DES有多安全?
- DES挑战: 56-bit密钥加密的短语 (“Strong cryptography makes the world a safer place”) 被解密,用了4个月的时间
- 可能有后门
- 使DES更安全:
- 使用3个key, 3重DES 运算
- 密文分组成串技术
DES operation
初始替换
16 轮一样的函数应用 ,每一轮使用的不 同的48bit密钥
最终替换
块密码
- 一个循环:一个 输入bit影响8个 输出bit
- 多重循环: 每个输入比特影响所有的输出bit
- 块密码:DES, 3DES, AES
AES: Advanced Encryption Standard
- 新的对称密钥NIST标准(Nov. 2001) 用于替换 DES
- 数据128bit成组加密
- 128, 192, or 256 bit keys
- 穷尽法解密如果使用1秒钟破解 DES, 需要花 149万亿年破解AES
密码块链
- 密码块:如果输入 块重复,将会得到 相同的密文块
- 密码块链: 异或第i轮 输入 m(i), 与前一轮的密文, c(i-1) —— 与之前所有的 输入和原文 都有关系
- c(0) 明文传输到接收端
- what happens in “HTTP/1.1” scenario from above?
公开密钥密码学
对称密钥密码学
- 需要发送方和接收方对共享式对称密钥达成一 致
- Q: 但是他们如何第一次达成一致 (特别是他们永远不可能见面的情况下 )?
公开密钥密码学
- 完全不同的方法 [Diffie-Hellman76, RSA78]
- 发送方和接收方无需共享密钥
- 一个实体的公钥公诸于众
- 私钥只有他自己知道
公开密钥加密算法
要求:
RSA: 选择密钥
RSA: Rivest, Shamir, Adelson algorithm
RSA: 加密,解密
RSA: 为什么
RSA 例子:
RSA: 数字签名 —— 先解密(私钥) 在加密(公钥) 确认身份
下面的特性将在后面非常有用
结果一致!
解密的几种类型
- 加密算法已知,求密钥
- 加密算法和密钥均不知道
- 唯密文攻击
- 已知明文攻击
- 已经知道部分密文和明文的对应关系
- 选择明文攻击
- 攻击者能够选择一段明文,并得到密文
8.3 认证
- 目标: Bob需要Alice证明她的身份
- Protocol ap1.0: Alice说“I am Alice”
在网络上Bob看不到 Alice, 因此Trudy可以简单地声称她是 Alice
认证:重新尝试
- Protocol ap2.0: Alice 说 “I am Alice” ,在她发送的IP数据包 中包括了她的IP地址
- Trudy可以生成一 个分组,包括伪造 的Alice的地址
- Protocol ap3.0: Alice 说 “I am Alice” ,而且传送她的密码来证明.
- 重放攻击playback attack: Trudy记录 Alice 的 分组,事后向Bob重放
-
Protocol ap3.1: Alice 说 “I am Alice” ,而且传送她的加密之后的密码来证明
目标: 避免重放攻击
- Nonce: 一生只用一次的整数 ® —— 一次性随机数(nonce):一个生命周期内只用1次的数R.
- ap4.0: 为了证明Alice的活跃性, Bob发送给Alice一个nonce, R. Alice 必须返回加密之后的R,使用双方约定好的key
这个协议的缺点是需要共享秘钥!
认证: ap5.0
ap4.0 需要双方共享一个对称式的密钥
- 是否可以通过公开密钥技术进行认证呢?
ap5.0: 使用nonce,公开密钥加密技术
ap5.0: 安全漏洞 —— 中间攻击
中间攻击: Trudy 在 Alice (to Bob)和 Bob之间 (to Alice)
Trudy 用自己的私钥加密 R
传给Bob 公钥
Trudy 截获 Alice 的信息 和 公钥,用Alice 的 公钥 解密 她的 私钥
Bob 与 Alice 之间的信息全被 Trudy 截获
1、怎样可靠地拿到一个实体的公钥 —— 公开密钥
2、拿到公钥之后怎样验证对方的身份 —— 利用对称密钥
8.4 报文完整性
ap5.0: 安全漏洞
中间攻击: Trudy 在 Alice (to Bob)和 Bob之间 (to Alice)
- 难以检测:
- Bob收到了Alice发送的所有报文, 反之亦然. (e.g., so Bob, Alice一个星期以后相见,回忆起以前的会话)
- 问题时Trudy也接收到了所有的报文!
数字签名
数字签名类比于手写签名
- 发送方 (Bob) 数字签署了文件, 前提是他(她)是文件 的拥有者/创建者.
- 可验证性,不可伪造性,不可抵赖性
- 谁签署:接收方 (Alice)可以向他人证明 是 Bob, 而不是其他 人签署了这个文件 (包括Alice)
- 签署了什么:这份文件,而不是其它文件
简单的对m的数字签名:
- Bob使用他自己的私钥对m进行了签署 ,创建数字签名 KB (m)
报文摘要
对长报文进行公开密钥加密 算法的实施需要耗费大量的时间
-
Goal: 固定长度,容易计算的 “fingerprint”
- 对m使用散列函数H,获得 固定长度的 报文摘要 H(m).
-
散列函数的特性:
- 多对1
- 结果固定长度
- 给定一个报文摘要x, 反向计算出原报文在计算上是不可行的x = H(m)
-
假设Alice收到报文m, 以及数字签名KB (m)
-
Alice 使用Bob的公钥KB 对KB (m)进行验证, 判断 KB (KB (m) ) = m是否成立.
-
如 KB (KB (m) ) = m成立, 那么签署这个文件的人一定拥有 Bob的私钥. + + - - -
Alice 可以验证: —— 只有Bob有自己的私钥
- Bob 签署了m.
- 不是其他人签署了m.
- Bob签署了m 而不是m’.
不可抵赖性:
- Alice可以拿着m,以及数字签名KB (m)到法庭上, 来证明是Bob签署了这个文件 m.
Internet校验和: 弱的散列函数 (容易冲突)
Internet 校验和拥有一些散列函数的特性:
- 产生报文m的固定长度的摘要 (16-bit sum)
- 多对1的
但是给定一个散列值,很容易计算出另外一个报文具有同样的散列值:
数字签名 = 对报文摘要进行数字签署
Bob 发送数字签名的报文:
Alice校验签名和报文完整性:
8.5 密钥分发和证书
散列函数算法
- MD5散列函数(RFC 1321)被广泛地应用
- 4个步骤计算出128-bit的报文摘要
- 给定一个任意的128-bit串x, 很难构造出一个报文m 具有相同的摘要x.
- SHA-1也被使用.
- US标准 [NIST, FIPS PUB 180-1]
- 160-bit报文摘要
可信赖中介
对称密钥问题
- 相互通信的实体如何分享对
称式的密钥?
解决办法: —— 可信赖中介
- trusted key distribution center (KDC) 在实体之间扮演可信赖中介的角色
公共密钥问题 —— 可信赖的CA 证书
- 当Alice获得Bob的公钥 (from web site, e-mail, diskette), 她如何知道就 是Bob的public key, 而不 是Trudy的?
解决办法:
- 可信赖的certification authority (CA)
Key Distribution Center (KDC)
- Alice, Bob 需要分享对称式密钥。
- KDC: 服务器和每一个注册用户都分享一个对称式的密钥 (many users)
- Alice, Bob在和KDC通信的时候,知道他们自己的对称式 密钥 KA-KDC、KB-KDC.
共享R1,使用R1作为对称式的会话密钥
Certification Authorities
-
Certification authority (CA): 将每一个注册实体E和他的公钥捆绑.
-
E (person, router) 到CA那里注册他的公钥.
- E 提供给CA,自己身份的证据 “proof of identity”
- CA创建一个证书,捆绑了 实体信息和他的公钥.
- Certificate包括了E的公钥,而且是被CA签署的(被CA用自己的私钥加了密的) – CA说 “this is E’s public key”
当Alice需要拿到Bob公钥
- 获得Bob的证书certificate (从Bob或者其他地方).
- 对Bob的证书,使用CA的公钥来验证
证书包括:
8.6 各个层次的安全性
SSL
SSL: 3阶段
IPsec: 网络层次的安全性
ESP 协议
8.6 访问控制:防火墙
8.7 攻击和对策
网络安全 (总结)
- 基本原理
- 加密 (对称和公开)
- 报文完整性
- 端节点的认证(鉴别)
- 在多种安全场景中使用
- 安全电子邮件
- 安全传输层 (SSL)
- IP sec
- 802.11
- 运行中的安全性: firewalls and IDS