6.1网络安全基础
6.1.1网络安全状况
6.1.2网络安全基本概念
什么是网络安全?
v网络安全是指网络系统的硬件、软件及其系统中的数据受到保护, 不因偶然的或者恶意的原因而遭受到破坏、更改、泄露, 系统连续可靠正常地运行, 网络服务不中断
网络安全基本属性
机密性(confidentiality):只有发送方与预定接收方能够理解报文内容
§ 发送方加密报文
§ 接收方解密报文
身份认证(authentication):发送方与接收方希望确认彼此的真实身份
信息完整性(message integrity):发送方与接收方希望确保信息未被篡改(传输途中或者后期),发生篡改一定会被检测到
可访问与可用性(access and availability):网络服务必须对被授权用户可访问与可用
网络安全的基本特征
v ■相对性
§ 只有相对的安全,没有绝对的安全
v ■时效性
§ 新的漏洞与攻击方法不断发现
v ■相关性
§ 新配置、新系统组件可能会引入新的安全问题
v ■不确定性
§ 攻击时间、攻击者、攻击目标和攻击发起的地点都具有不确定性
v ■复杂性
§ 网络安全是一项系统工程,需要技术的和非技术的手段
v ■重要性
§ 网络安全关乎国家、政府、企业、个人的安全
网络安全
v ■网络安全研究领域:
§ 入侵者(bad guys)如何攻击计算机网络
§ 如何防护网络对抗攻击
§ 如何设计网络体系结构免疫(immune)攻击
v ■Internet最初设计几乎没考虑安全性
§ 最初愿景: “一组彼此信任的互助用户连接到一个透明网络” 进行信息共享 J Internet协议设计者扮演了“追赶者”(catchup)角色
§ 网络安全需要在网络各个层次考虑!
6.1.3网络安全拟人模型
6.2网络安全威胁
破坏手段
§ 窃听(eavesdrop):窃听信息
§ 插入(insert):主动在连接中插入信息
§ 假冒(impersonation):可以通过伪造(spoof)分组中的源地址(或者分组的任意其他字段)
§ 劫持(hijacking):通过移除/取代发送发或者接收方“接管” (take over)连接
§ 拒绝服务DoS(denial of service):阻止服务器为其他用户提供服务(e.g.,通过过载资源)
Internet安全威胁
映射(Mapping):
§ 发起攻击前: “探路” (case the joint) – 找出网络上在运行什么服务
§ 利用ping命令确定网络上主机的地址
§ 端口扫描(Port-scanning): 依次尝试与每个端口建立TCP连接
§nmap (http://www.insecure.org/nmap/),广为使用的国外端口扫描工具之一
对策(Countermeasures)?
§ 记录到达的网络流量
§ 分析、识别出可疑活动( IP地址和端口被依次扫描)
分组“嗅探”(sniffing):
§ 广播介质(共享式以太网,无线网络)
§ 混杂(promiscuous)模式网络接口可以接收/记录所有经过的分组/帧
§ 可以读到所有未加密数据(e.g., 包括口令! )
分组嗅探:对策
§ 组织中的所有主机都运行软件,周期性监测网络接口是否工作在混杂模式
§ 每段广播介质连接一台主机(如交换式以太网)
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攻击
DOS:对策
§ 在到达主机前过滤掉泛洪分组(e.g., SYN)
• 可能好坏一起扔
§ 追溯(traceback)攻击源
§SYN cookie[RFC 4987]
6.3密码学基础
破解加密方法
v 唯密文攻击(cipher-textonly attack):入侵者(如Trudy)只截获到密文,基于对密文的分析进行破解
v ■两条途径:
§ 暴力破解(brute force):尝试所有可能的密钥
§ 统计分析
v 已知明文攻击(knownplaintext attack):入侵者已知(部分)明文以及与之匹配的密文
§e.g., 在单码替代密码(monoalphabetic cipher)中,入侵者已确认字母,l,i,c,e,b,o的替换关系
v 选择明文攻击(chosenplaintext attack):入侵者可以获取针对选择的明文的密文
6.3.2传统加密方法
1.替代密码(substitution cipher):利用一种东西替代另一种东西
§ ■凯撒密码(Casesar cipher):一个字母替代另一个字母
• 将一个字母利用字母表中该字母后面的第k个字母替代
• 如k=3,“bob. i love you. alice” →“ere, l oryh brx. dolfh”
§ ■多码(字母)替代加密(polyalphabetic encryption):使用多个单码替代密码,明文中不同位置的字母使用不同的单码替代密码
2. 换位(transpositions)密码: 重新排列明文中的字母§
■置换法(permutation method)
• 将明文划分为固定长度(d)的组,每个组内的字母按置换规则(f)变换位置
• 密钥:(d, f)
§ ■列置换加密
• 将明文按行组成一个矩阵,然后按给定列顺序输出得到密文
§ ■列置换加密的密钥包括列数和输出顺序
• 可以用一个单词来表示
• 单词长度表示列数,单词中的字母顺序表示输出顺序
6.3.3现代加密技术
v■现代加密技术的基本操作包括经典的替代和置换
§ 不再针对一个个字母,而是针对二进制位操作
v■现代加密技术主要分为:
§ 对称密钥加密
§ 非对称密钥加密(公开密钥加密)
v■对称密钥加密:
§ 流密码(stream ciphers)
§ 分组密码,也称块密码(block ciphers)
流密码
v■基本思想:
§ 首先利用密钥K产生一个密钥流: z=z0 z1 z2…
§ 然后使用如下规则对明文串x=x0x1x2…加密:y=y0y1y2…=Ez0(x0)Ez1(x1)Ez2(x2)…
v■解密时,使用相同的密钥流与密文做运算(XOR)
流密码工作流程
分组密码
v■将明文序列划分成长为m的明文组
v■各明文组在长为i的密钥组的控制下变换成长度为n的密文组
v■通常取n=m
§n>m 扩展分组密码
§n
v■典型分组密码结构:Feistel分组密码结构
§ 在设计密码体制的过程中,Shannon提出了能够破坏对密码系统进行各种统分析攻击的两个基本操作:扩散(diffusion)和混淆(confusion)
§ 基于1949年Shannon提出的交替使用替代和置换方式构造密码体制
Feistel分组密码结构
v ■基于“扩散” 和“混乱” 的思考,Feistel提出通过替代和置换交替操作方式构造密码
v ■Feistel是一种设计原则,并非一个特殊的密码
Feistel结构的分组密码安全性取决于:
v ■分组长度
§ 分组长度越大,安全性越高,加密速度越慢,效率越低
§ 目前常用的分组加密算法的分组长度取64位
v ■子密钥的大小
§ 子密钥长度增加,安全性提高,加密速度降低
§ 设计分组密码时需要在安全性和加密效率之间进行平衡
v ■循环次数
§ 循环越多,安全性越高,加密效率越低
v ■子密钥产生算法
§ 在初始密钥给定的情况下, 产生子密钥的算法越复杂,安全性越高
v ■轮函数
§ 一般情况下,轮函数越复杂,加密算法的安全性越高
6.3.4数据加密标准: DES
DES: Data Encryption Standard
v ■IBM公司研制
v ■1972年,美国国家标准局NBS (National Bureau of Standards)开始实施计算机数据保护标准的开发计划。
v ■1973年5月13日, NBS征集在传输和存贮数据中保护计算机数据的密码算法。
v ■1975年3月17日,首次公布DES算法描述。
v ■1977年1月15日,正式批准为加密标准(FIPS-46),当年7月1日正式生效。
v ■1994年1月的评估后决定1998年12月以后不再将DES作为数据加密标准
v■DES是16轮的Feistel结构密码
v■DES是一个包含16个阶段的“替代--置换”的分组加密算法
v■DES的分组长度是64位
§64位的分组明文序列作为加密算法的输入,经过16轮加密得到64位的密文序列
v■DES使用56位的密钥
v■DES的每一轮使用48位的子密钥
§ 每个子密钥是56位密钥的子集构成
初始置换IP(Initial Permutation)
DES的安全性
v ■DES的56位密钥可能太小
§1998年7月, EFE(电子前哨基金会)宣布攻破了DES算法,他们使用的是不到25万美元的特殊的“DES破译机”,这种攻击只需要不到3天的时间。
v ■DES的迭代次数可能太少
§16次恰巧能抵抗差分分析
v ■S盒(即替代函数S)中可能有不安全因素
v ■DES的一些关键部分不应当保密
v ■DES存在弱密钥和半弱密钥
v ■针对DES的攻击方法:
§ 差分分析方法(Difference Analysis Method)
§ 线性分析方法(Linear Analysis Method)
§ 旁路攻击法(Side-Channel Attack)
DES的改进
v ■密码分组链接(CBC-cipher block chaining)
§ 加密算法的输入是当前明文分组和前一次密文分组的异或
§ 重复的明文分组不会在密文中暴露出重复关系
高级加密标准AES
v ■ES: Advanced Encryption Standard
v ■NIST(美国国家标准技术研究所)对称密钥加密标准, 取代DES(2001年12月)
v ■1997年NIST宣布征集AES算法,要求:
§ 可公开加密方法
§ 分组加密,分组长度为128位
§ 至少像3DES一样安全
§ 更加高效、快
§ 可提供128/192/256位密钥
v ■比利时学者Joan Daemen和Vincent Rijmen提出的Rijndael加密算法最终被选为AES算法。
v ■NIST在2001年12月正式颁布了基于Rijndael算法AES标准
Rijndael加密算法简介
v ■不属于Feistel结构
v ■加密、解密相似但不完全对称
v ■支持128/192/256数据块大小
v ■支持128/192/256密钥长度
v ■有较好的数学理论作为基础
v ■结构简单、速度快
v ■Rijndael算法特点:
§ 分组长度和密钥长度均可变(128/192/256bits)
§ 循环次数允许在一定范围内根据安全要求进行修正
§ 汇聚了安全、效率、易用、灵活等优点
§ 抗线性攻击和抗差分攻击的能力大大增强
§ 如果1秒暴力破解DES,则需要149万亿年破解AES
6.3.5公钥密码学
对称密钥加密:
v 需要发送方与接收方知道共享的秘密密钥
公钥加密算法
RSA:预备知识
v报文/信息(message): 仅仅是一个比特模式(bit pattern)
v每个比特模式可以表示为一个唯一的整数
v因此,加密一个报文就等价于加密一个数
例如:
vm= 10010001,可以唯一地表示为十进制数145
v为了加密m,我们可以加密对应的数(145),得到一个新的数(即密文)
RSA为什么安全?
v■RSA的安全性建立在“大数分解和素性检测” 这个数论难题的基础上
§ 既将两个大素数相乘在计算上容易实现,而将该乘积分解的计算量相当大
v■假设已知Bob的公钥(n,e),那么有多大难度确定d,即私钥(n,d)?
v■本质上需要在不知道两个因子p和q的前提下,找出n的因子
§ 分解一个大数是很困难的!
RSA的实际应用
v■RSA的幂运算强度很大
v■DES至少比RSA快100倍
v■实际应用中:
§ 利用公钥加密建立安全连接,然后建立第二个密钥-对称会话密钥,用于加密数据
会话密钥(session key, KS)
v ■Bob与Alice利用RSA交换对称会话密钥KS
v ■一旦双方确认KS,则利用会话密钥加密/解密会话数据
6.5消息完整性和数字签名
6.5.1报文完整性
v■报文/消息完整性(message integrity),也称为报文/消息认证(或报文鉴别), 目标:
§ 证明报文确实来自声称的发送方
§ 验证报文在传输过程中没有被篡改
§ 预防报文的时间、顺序被篡改
§ 预防报文持有期被修改
§ 预防抵赖
• 发送方否认
• 接收方否认
密码散列函数
■密码散列函数(Cryptographic Hash Function): H(m)
§ 散列算法公开
§H(m)能够快速计算
§ 对任意长度报文进行多对一映射, 均产生定长输出
§ 对于任意报文无法预知其散列值
§ 不同报文不能产生相同的散列值
§ 单向性: 无法根据散列值倒推出报文
• 对于给定散列值h, 无法计算找到满足h = H(m)的报文m
§ 抗弱碰撞性(Weak Collision Resistence-WCR)
• 对于给定报文x,计算上不可能找到y且y≠x,使得H(x)=H(y)
§ 抗强碰撞性(Strong Collision Resistence-SCR)
• 在计算上, 不可能找到任意两个不同报文x和y(x≠y),使得H(x)=H(y)
散列函数算法
v■MD5: 被广泛应用的散列函数(RFC 1321)
§ 通过4个步骤,对任意长度的报文输入,计算输出128位的散列值
§MD5不是足够安全
•1996年, Dobbertin找到了两个不同的512-bit块,在MD5计算下产生了相同的散列值
v■SHA-1(Secure Hash Algorithm): 另一个正在使用的散列算法
§US标准 [NIST, FIPS PUB 180-1]
§SHA-1要求输入消息长度<264
§SHA-1的散列值为160位
§ 速度慢于MD5,安全性优于MD5
报文摘要(Message digests)
对报文m应用散列函数H,得到一个固定长度的散列码,称为报文摘要(message digest), 记为H(m)
ü 可以作为报文m的数字指纹(fingerprint)。
6.5.2数字签名
Q:如何解决下列与报文完整性相关的问题?
§ 否认:发送方不承认自己发送过某一报文
§ 伪造:接收方自己伪造一份报文,并声称来自发送方
§ 冒充:某个用户冒充另一个用户接收或发送报文
§ 篡改:接收方对收到的信息进行篡改
A:数字签名(Digital signatures) !
§ 数字签名技术是实现安全电子交易的核心技术之一
§ 可验证性(verifiable)
§ 不可伪造性(unforgeable)
§ 不可抵赖性(non-repudiation)
对报文m的简单数字签名:
v 报文加密技术是数字签名的基础
vBob通过利用其私钥K-B(m) 对m进行加密,创建签名报文, K-B(m)
6.6密钥分发与公钥证书
6.6.1密钥分发中心(KDC)
密钥分发中心(KDC)
v ■Alice与Bob需要共享对称密钥.
v ■KDC: 一个服务器
§ 每个注册用户(很多用户)共享其与KDC的秘密密钥
v ■Alice和Bob只知道自己与KDC之间的对称密钥,用于分别与KDC进行秘密通信
6.6.2认证中心(CA)
v■认证中心(CA): 实现特定实体E与其公钥的绑定
v■每个E(如人、路由器等)在CA上注册其公钥.
§E向CA提供“身份证明” .
§CA创建绑定E及其公钥的证书(certificate).
§ 证书包含由CA签名的E的公钥 – CA声明: “这是E的公钥”
�M5}���