文章目录
- 10 网络安全基本原理
- 10.1 网络安全基础
- 10.2 网络安全威胁
- 10.3 密码学基础
- 10.4 身份认证(Authentication)
- 10.5 报文完整性(消息完整性)
- 10.6 数字签名
- 10.7 密钥分发中心(KDC))—— 解决共享密钥问题
- 10.8 认证中心(CA) —— 解决公钥加密问题
- 11 网络安全协议与技术
10 网络安全基本原理
10.1 网络安全基础
10.1.1 网络安全状况
-引自《2014年中国互联网网络安全报告》
-
截至2014年12月底:
- 网站总量为364.7万
- 独立域名为481.2万
- ISP为1068家
- 网民规模为6.49亿
- 手机网民规模达5.57亿
- 互联网普及率为47.9%
-
我国互联网网络安全状况
- 总体平稳,形势严峻
- 基础网络仍存在较多漏洞风险
- 2014年,CNCERT/CC协调处理涉及电信企业漏洞事件1578起
- CNVD(国家信息安全漏洞共享平台)收录与基础电信企业软硬件 资产相关漏洞825个,66.2%与路由器、交换机等网络设备相关
- 云服务日益成为网络攻击重点目标
- 域名系统面临严峻的拒绝服务攻击
- 2014年,针对我国域名系统,流量规模达1Gbps以上的拒绝服 务攻击事件,日均约187起
- 针对重要网站的域名解析篡改攻击频发
- 网络攻击威胁逐渐向工业互联网渗透
- 2014年9月,出现一种远程木马“Havex”,利用OPC(开放通 用通信协议)工业通信技术,扫描发现工业系统联网设备,收集 工控设备详细信息并回传
- 可以接收、执行恶意代码
- 分布式反射型攻击逐渐成为拒绝服务攻击的重要形式
- 涉及重要行业和政府部门的高危漏洞事件增多
- 基础应用或通用软硬件漏洞风险凸显
- “心脏出血”(Heartbleed)
- “破壳”(Bash Shell Shock)
- 漏洞风险向传统领域、智能终端领域泛华演进
- 网站数据和个人信息泄露仍呈高发态势
- 移动应用程序成为数据泄露的心主体
- 移动恶意程序逐渐从主流应用商店向小型网站蔓延
- 具有短信拦截功能的移动恶意程序大爆发
- 针对金融、电信行业的网页仿冒事件大幅增加
- 钓鱼站点逐渐向云平台迁移
- 针对政府部门和重要行业单位网站的网络攻击频度、烈度和复杂度加剧
-
互联网网络安全一组数据(2014年)
- 木马和僵尸程序监测:
- 木马或僵尸程序控制服务器IP地址总数104230(↓45.0%)
- 木马或僵尸程序受控主机IP地址总数为13991480(↓25.2%)
- 木马和僵尸程序监测:
-
“飞客”蠕虫监测:
- 全球互联网月均近943万台主机IP地址感染“飞客”蠕虫
-
移动互联网安全监测:
- CNCERT/CC捕获或通过厂商交换获得的移动互联网恶意 程序样本数为951059(↑35.3%)
- 恶意扣费类居首,为522889(55.0%),资费消耗类(15.3%)、 隐私窃取类(12.9%)分列二、三位
- 针对Android平台的占99.9%,其次是Symbian,占0.1%
- CNCERT/CC捕获或通过厂商交换获得的移动互联网恶意 程序样本数为951059(↑35.3%)
-
网站安全监测:
- 我国境内被篡改网站数量为36969个(↑45.0%)
- 政府网站1763个(↓27.4%)
- 监测到仿冒、钓鱼页面99409个
- 监测到40186个境内网站被植入后门
- 我国境内被篡改网站数量为36969个(↑45.0%)
-
安全漏洞:
- CNVD收集新增漏洞9163个
- 前三甲漏洞:应用程序漏洞(68.5%)、Web应用漏洞 (16.1%)、网络设备漏洞(6.0%)
-
网络,安全?
- 网络安全吗?
- —不!
- —不十分安全!
- 网络安全吗?
-
目标:网络,安全!
10.1.2 网络安全基本概念
- 什么是网络安全?
网络安全是指网络系统的硬件、软件及其系统中 的数据受到保护
,不
因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地 运行,网络服务不中断
。 - 网络安全基本属性
机密性(confidentiality)
: 只有发送方与预定接收方能够理解报文内容- 发送方加密报文
- 接收方解密报文
身份认证(authentication)
:
发送方与接收方希望确认彼此的真实身份信息完整性(message integrity)
: 发送方与接收方希 望确保信息未被篡改(传输途中或者后期),发生篡改一定会被检测到可访问与可用性(access and availability)
: 网络服务必须对被授权用户可访问与可用
- 网络安全的基本特征
- 相对性
- 只有相对的安全,没有绝对的安全
- 时效性
- 新的漏洞与攻击方法不断发现
- 相关性
- 新配置、新系统组件可能会引入新的安全问题
- 不确定性
- 攻击时间、攻击者、攻击目标和攻击发起的地点都具有不确定性
- 复杂性
- 网络安全是一项系统工程,需要技术的和非技术的手段
- 重要性
- 网络安全关乎国家、政府、企业、个人的安全
- 相对性
- 网络安全
- 网络安全研究领域:
- 入侵者(bad guys)如何攻击计算机网络
- 如何防护网络对抗攻击
- 如何设计网络体系结构免疫(immune)攻击
- Internet最初设计几乎没考虑安全性
- 最初愿景: “一组彼此信任的互助用户连接到 一个透明网络”进行信息共享🙂
- Internet协议设计者扮演了“追赶者”(catchup)角色
- 网络安全需要在网络各个层次考虑!
- 网络安全研究领域:
10.1.3 网络安全拟人模型
- 拟人场景: Alice、Bob、Trudy
- 网络安全领域的著名拟人模型
- Bob与Alice是期望进行安全通信的情侣
- Trudy是企图破坏Bob和Alice通信的入侵者 (intruder), 试图拦截、删除或添加信息
- 网络中的Bob、Alice?
- 电子交易过程的Web浏览器/服务器 (e.g., 网购)
- 网络银行的客户/服务器
- DNS服务器
- 路由器之间交换路由表更新
- ……
- 网络中的Trudy?
Trudy:Bad Guys .- 通过Internet向主机植入恶意软件(malware)
- 病毒(virus)
- 蠕虫(worm)
- 间谍软件(spyware):记录键盘输入、web站点访 问、向收集站点上传信息等
- ……
- 被感染主机可能加入僵尸网络(botnet),用于 发送垃圾邮件、DDoS攻击等
- 通过Internet向主机植入恶意软件(malware)
10.2 网络安全威胁
10.2.1 “坏蛋”们可能做什么?
Q:
“坏蛋”们能做什么?
A:
很多!
窃听(eavesdrop)
: 窃听信息插入(insert)
:主动在连接中插入信息假冒(impersonation)
: 可以通过伪造(spoof)分组中的源地址(或者分组的任意其他字段)劫持(hijacking)
: 通过移除/取代发送发或者接 收方“接管”(take over)连接拒绝服务DoS(denial of service)
: 阻止服务器 为其他用户提供服务(e.g., 通过过载资源)
10.2.2 Internet安全威胁
-
映射(Mapping)
:- 发起攻击前: “探路”(case the joint) – 找出网络上 在运行什么服务
- 利用ping命令确定网络上主机的地址
端口扫描
(Port-scanning): 依次尝试与每个端口建立TCP连接- nmap (http://www.insecure.org/nmap/),广为使用的国外端口扫描工具之一
对策(Countermeasures)?
- 记录到达的网络流量
- 分析、识别出可疑活动( IP地址和端口被依次扫描)
-
分组“嗅探”(sniffing)
:- 广播介质(共享式以太网,无线网络)
- 混杂(promiscuous)模式网络接口可以接收/记录所有经过的分组/帧
- 可以读到所有未加密数据(e.g., 包括口令!)
- Wireshark就是一个典型免费的分组嗅探软件
分组嗅探: 对策
- 组织中的所有主机都运行软件,周期性监测网络接口是否工作在
混杂模式
- 每段广播介质连接一台主机(如交换式以太网)
- 组织中的所有主机都运行软件,周期性监测网络接口是否工作在
-
IP欺骗(Spoofing)
:- 直接由应用生成“原始”IP分组,可以设置分组的源IP地址字段为任意值
- 接收方无法判断源地址是否被欺骗
- e.g.: C冒充B
IP欺骗对策: 入口过滤(ingress filtering)
- 路由器不转发源IP地址无效的IP分组 (e.g., 源IP地 址不属于所连接网络)
很有效!但是不能强制所有网络都执行入口过滤
在网络安全领域,隐藏自己的一种手段就是IP欺骗——伪造自身的IP地址向目标系统发送恶意请求,造成目标系统受到攻击却无法确认攻击源,或者取得目标系统的信任以便获取机密信息。
这两个目的对应着两种场景:
场景一,常用于DDoS攻击(分布式拒绝攻击),在向目标系统发起的恶意攻击请求中,随机生成大批假冒源IP,如果目标防御较为薄弱,对收到的恶意请求也无法分析攻击源的真实性,从而达到攻击者隐藏自身的目的。
这类场景里一种很有意思的特殊情景来自于“反射”式DDoS攻击,它的特点来自于利用目标系统某种服务的协议缺陷,发起针对目标系统输入、输出的不对称性——向目标发起吞吐量相对较小的某种恶意请求,随后目标系统因其协议缺陷返回大量的响应,阻塞网络带宽、占用主机系统资源。这时如果攻击者的请求使用真实源地址的话,势必要被巨大的响应所吞没,伤及自身。这样,攻击者采取IP欺骗措施就势在必行了。
场景二,原本A主机信任B主机,也就是B可以畅通无阻地获取A的数据资源。而恶意主机C为了能同样获取到A的数据,就需要伪装成B去和A通信。这样C需要做两件事:第一、让B“把嘴堵上”,不再向A吐请求,比如向B主机发起DoS攻击(拒绝服务攻击),占用B的连接使其无法正常发出网络包;第二、伪装成B的IP和A交互。 -
拒绝服务DOS(Denial of service)
:- 向接收方恶意泛洪(flood)分组,淹没(swamp)接收方
- 带宽耗尽
- 资源耗尽
- 分布式拒绝服务攻击 (DDOS): 多个源主机协同淹没 接收方
- e.g., C与另一个远程主机协同对A进行SYN攻击
DDoS攻击过程
:
- 选择目标
- 入侵(break into)网络中主机(构建僵尸网络)
- 控制僵尸主机向目标发送分组
反射式DDoS攻击
:
- 选择目标
- 入侵网络中主机 (构建僵尸网络)
- 选择反射服务器
Internet安全威胁 - 借助反射服务器向目标发起攻击
DOS: 对策
- 在到达主机前
过滤掉
泛洪分组(e.g., SYN)- 可能好坏一起扔
追溯(traceback)
攻击源- SYN cookie[RFC 4987]
- SYN cookie
SYN Cookie
是对TCP服务器端的三次握手协议作一些修改,专门用来防范SYN Flood攻击的一种手段。它的原理是,在TCP服务器收到TCP SYN包并返回TCP SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。在收到TCP ACK包时,TCP服务器在根据那个cookie值检查这个TCP ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。 - SYN cookie
- 在到达主机前
- 向接收方恶意泛洪(flood)分组,淹没(swamp)接收方
10.3 密码学基础
10.3.1 密码学(cryptography)加解密框架
![](https://i-blog.csdnimg.cn/blog_migrate/e80f6e6d4a55d003f7636243b14d5f7c.png)
对称密钥加密
![](https://i-blog.csdnimg.cn/blog_migrate/99d6ea41372bff167878948a46654bdf.png)
公开密钥加密
![](https://i-blog.csdnimg.cn/blog_migrate/813a46f9f2277cd9dffc95aee3cd757d.png)
破解加密方法
唯密文攻击(cipher-text only attack)
: 入侵者(如 Trudy)只截获到密文,基于对密文的分析进行破解两条途径
:- 暴力破解(brute force): 尝试所有可能的密钥
- 统计分析
已知明文攻击(knownplaintext attack)
: 入侵者已知(部分)明文以及与之匹配的密文- e.g., 在
单码替代密码
(monoalphabetic cipher)中,入侵者已确认字母a,l,i,c,e,b,o的替换关系
- e.g., 在
选择明文攻击(chosenplaintext attack)
: 入侵者可以获取针对选择的明文的密文
10.3.2 传统加密方法
大致可分为替代密码
和换位密码
。
替代密码(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)
- 例如:
列置换加密
- 将明文按行组成一个矩阵,然后按
给定列顺序
输出得到密文- 例如:
- 例如:
- 将明文按行组成一个矩阵,然后按
列置换加密-改进版
- 列置换加密的密钥包括
列数
和输出顺序
- 可以用一个
单词
来表示 单词长度
表示列数
,单词中的字母顺序
表示输出顺序
- 例如:
- 例如:
- 可以用一个
- 列置换加密的密钥包括
10.3.3 现代加密技术
- 现代加密技术的基本操作包括经典的
替代
和置换
- 不再针对一个个字母,而是针对二进制
位
操作
- 不再针对一个个字母,而是针对二进制
- 现代加密技术主要分为:
- 对称密钥加密
- 非对称密钥加密(公开密钥加密)
- 对称密钥加密:
流密码(stream ciphers)
分组密码
,也称块密码(block ciphers)
流密码
- 基本思想:
- 首先利用密钥K产生一个密钥流:z=z0 z1 z2 …
- 然后使用如下规则对明文串x=x0 x1 x2…加密:
- 解密时,使用相同的密钥流与密文做运算 (XOR)
流密码工作流程
![](https://i-blog.csdnimg.cn/blog_migrate/c72e15cdcef2fc721d8a419dffba0f96.png)
分组密码
- 将明文序列划分成长为
m
的明文组 - 各明文组在长为
i
的密钥组的控制下变换成长度 为n
的密文组 - 通常取n=m
- n>m 扩展分组密码
- n<m 压缩分组密码
- 典型分组密码结构:
Feistel分组密码结构
- 在设计密码体制的过程中,Shannon提出了能够破坏 对密码系统进行各种统计分析攻击的两个基本操作:
扩散(diffusion)
和混淆(confusion)
- 基于1949年Shannon提出的交替使用
替代
和置换
方式构造密码体制
- 在设计密码体制的过程中,Shannon提出了能够破坏 对密码系统进行各种统计分析攻击的两个基本操作:
这个结构的理论根据是啥?为什么这样能破坏各种统计分析的攻击?有空得去读读香农大师的论文!
Feistel分组密码结构
- 基于“
扩散
”和“混乱
”的思考 ,Feistel提出通过替代
和置换
交替操作方式构造密码 - Feistel是一种设计原则,并非一 个特殊的密码
加密
:
解密
:
![](https://i-blog.csdnimg.cn/blog_migrate/77c46586a6df14a79926c78c977b1760.png)
Feistel结构的分组密码安全性取决于:
分组长度
- 分组长度越
大
,安全性越高
,加密速度越慢
,效率越低
- 目前常用的分组加密算法的分组长度取
64位
- 分组长度越
子密钥的大小
- 子密钥长度
增加
,安全性提高
,加密速度降低
- 设计分组密码时需要在安全性和加密效率之间进行
平衡
- 子密钥长度
循环次数
循环越多
,安全性越高
,加密效率越低
子密钥产生算法
- 在初始密钥给定的情况下,产生子密钥的算法越
复杂
,安全性越高
- 在初始密钥给定的情况下,产生子密钥的算法越
轮函数
- 一般情况下,轮函数越
复杂
,加密算法的安全性越高
- 一般情况下,轮函数越
10.3.4 数据加密标准: DES 结构概述
DES的发展历程
DES: Data Encryption Standard
- IBM公司研制
- 1972年,美国国家标准局NBS (National Bureau of Standards)开始实施计算机数据保护标准的开发计划。
- 1973年5月13日,NBS征集在传输和存贮数据中保护计算 机数据的密码算法。
- 1975年3月17日,首次公布DES算法描述。
- 1977年1月15日,正式批准为加密标准(FIPS-46),当年7 月1日正式生效。
- 1994年1月的评估后决定
1998年12月
以后不再将DES作为 数据加密标准。
DES算法结构
- DES是
16
轮的Feistel结构密码 - DES是一个包含16个阶段的
“替代--置换”
的分组加密算法 - DES的分组长度是64位
- 64位的分组明文序列作为加密算法的输入,经 过16轮加密得到64位的密文序列
- DES使用
56位
的密钥 - DES的每一轮使用
48位
的子密钥- 每个子密钥是56位密钥的子集构成
- 每个子密钥是56位密钥的子集构成
10.3.5 数据加密标准: DES结构详述
初始置换IP(Initial Permutation)
- 把输入的64位数据的
排列顺序打乱
,每位 数据按照下面规则重新组合
一轮DES加密过程
从一轮DES加密过程窥探整个过程的运作。
DES: f f f 函数结构
- 黑盒变换
- 多个函数/操作(E、异或、S、P)的组合函数
f f f 函数的基本操作
扩展变换
:扩展变换(Expansion Permutation,也被称为E-盒
)将64位
输入序列的右半部分
从32
位扩展到48
位。- 确保最终的密文与所有的明文位都有关
扩展变换不是乱来的,要根据一张表来开展。
- 确保最终的密文与所有的明文位都有关
S-盒替代
(S-boxes Substitution)
P-盒置换
(P-boxes Permutation)
逆初始置换(Inverse Initial Permutation)
- 初始置换和对应的逆初始置换操作并
不会增强DES算法的安全性
- 主要目的是为了更容易地将明文和密文数据以字 节大小放入DES芯片中
每轮子密钥的生成
![](https://i-blog.csdnimg.cn/blog_migrate/c07de8158011b266a44392a49dd39653.png)
10.3.6 DES的改进和AES的出现
DES的安全性
- DES的56位密钥可能太小
- 1998年7月,EFE(电子前哨基金会)宣布攻破了DES算法,他们 使用的是不到25万美元的特殊的“DES破译机”,这种攻击只需要不到3天的时间。
- DES的迭代次数可能太少
- 16次恰巧能抵抗差分分析
- S盒(即替代函数S)中可能有不安全因素
- DES的一些关键部分不应当保密
- DES存在
弱密钥
和半弱密钥
- 针对DES的攻击方法:
- 差分分析方法(Difference Analysis Method)
- 线性分析方法(Linear Analysis Method)
- 旁路攻击法(Side-Channel Attack)
DES的改进
- 密码分组链接(CBC-cipher block chaining)
- 加密算法的输入是
当前明文分组
和前一次密文分组
的异或 - 重复的明文分组不会在密文中暴露出重复关系
- 加密算法的输入是
- DES密钥过短(56bits)→多重DES
3DES
使用3个密钥
,执行3次DES算法,加密过程:- 加密-解密-加密(EDE),即:
- 加密-解密-加密(EDE),即:
- 为了避免3DES使用3个密钥进行三阶段加密带来的密钥过 长的缺点(
168bit
),Tuchman提出使用两个密钥的三重加密方法,这个方法只要求112bit
密钥,即令其K1=K3:
- 3DES的第二阶段的解密并没有密码编码学上的意义,
唯一优点是可以使用3DES解密原来的单次DES加密的数据
,即K1=K2=K3
高级加密标准AES
- AES: Advanced Encryption Standard
- NIST(美国国家标准技术研究所)对称密钥加密标准, 取 代DES(2001年12月)
- 1997年NIST宣布征集AES算法,要求:
- 可公开加密方法
- 分组加密,分组长度为128位
- 至少像3DES一样安全
- 更加高效、快
- 可提供128/192/256位密钥
- 比利时学者Joan Daemen和Vincent Rijmen提出的 Rijndael加密算法最终被选为AES算法。
- NIST在2001年12月正式颁布了基于Rijndael算法AES标准
Rijndael加密算法简介
不
属于Feistel结构- 加密、解密相似但不完全对称
- 支持
128/192/256
数据块大小 - 支持
128/192/256
密钥长度 - 有较好的数学理论作为基础
- 结构简单、速度快
- Rijndael算法特点:
- 分组长度和密钥长度均可变(
128/192/256
bits) - 循环次数允许在一定范围内根据安全要求进行修正
- 汇聚了安全、效率、易用、灵活等优点
- 抗线性攻击和抗差分攻击的能力大大增强
- 如果
1秒
暴力破解DES,则需要149万亿年
破解AES
- 分组长度和密钥长度均可变(
10.3.7 公钥密码学(RSA)实现原理
- 研究动机:传统的
对称密钥加密
有一定的缺陷- 需要发送方与接收方知 道共享的秘密密钥
- Q: 最初如何商定密钥( 尤其“素未谋面”)?
于是乎公钥加密技术
应运而生:
![](https://i-blog.csdnimg.cn/blog_migrate/ee290358d5a6c38011de632e2719a028.png)
公钥加密算法
![](https://i-blog.csdnimg.cn/blog_migrate/4aca96f03811d0b147665128f26b0471.png)
- 前提条件(理论基础): 模运算
x mod n = x除以n的余数
- 事实上:
因此
:
- 举例:x=14, n=10, d=2,则
实现RSA的前提
- 报文/信息(message): 仅仅是一个
比特模式 (bit pattern)
- 每个比特模式可以表示为一个唯一的
整数
- 因此,加密一个报文就等价于加密一个数
- 例如: m= 10010001,可以唯一地表示为十进制数145 ,为了加密m,我们可以加密对应的数(145) ,得到一个新的数(即密文)。
RSA: 生成公钥/私钥对
- 选择2个大质数p和q。(e.g., 1024bits的大质数)
- 计算
n
= pq,z = (p-1)(q-1) - 选择
e
(满足e<n),使e与z 之间没有公因子, 即e, z互质(relatively prime) - 选择
d
使得ed-1刚好可以被z整除, (即: ed mod z = 1 ).
![](https://i-blog.csdnimg.cn/blog_migrate/ca5f705f2d2d45f2ce9785292471886c.png)
RSA: 加密、解密
![](https://i-blog.csdnimg.cn/blog_migrate/a6defe2692e2f8d4bf8ae85b02f1b9cf.png)
RSA举例
![](https://i-blog.csdnimg.cn/blog_migrate/e55c3e943c255f5936da29d2a42e7366.png)
10.3.8 公钥密码学(RSA)理论依据
![](https://i-blog.csdnimg.cn/blog_migrate/9caa8025f2f3959f78c426100d3ada51.png)
RSA: 另一个重要性质
![](https://i-blog.csdnimg.cn/blog_migrate/46881ce4de16393f8c4623de5cc4770e.png)
RSA为什么安全?
- RSA的安全性建立在“
大数分解和素性检测
”这个数论难题的基础上- 既将两个大素数相乘在计算上容易实现,而 将该乘积分解的计算量相当大
- 假设已知Bob的公钥(n,e),那么有多大难 度确定d,即私钥(n,d)?
- 本质上需要在不知道两个因子p和q的前提 下,找出n的因子
- 分解一个大数是很困难的!
RSA的实际应用
RSA的缺陷
:RSA的幂运算强度很大- DES至少比RSA快100倍
- 实际应用中:
利用公钥加密建立安全连接,然后建立第二个密钥对称会话密钥,用于加密数据
会话密钥(session key, KS)
- Bob与Alice利用RSA交换对称会话密钥 K S K_S KS
- 一旦双方确认 K S K_S KS,则利用会话密钥加密/解密会话数据
也就是说,因为RSA需要的运算太多了,所以没办法给所有数据加密,那么我们就在建立安全连接的时候采取RSA,而之后就采取传统的对称加密技术。
10.4 身份认证(Authentication)
证明身份时会出现失效
的情况,下面对每一代协议的失效情况都做了概述。
-
协议ap1.0
-
协议ap2.0
-
协议ap3.0
-
协议ap3.1
-
协议ap4.0
可抵御回放攻击。
但是ap4.0
需要共享密钥,这是一种缺陷(必须事先知道共享密钥),那么是否可以利用公钥技术? -
协议ap5.0
10.5 报文完整性(消息完整性)
10.5.1 什么是报文完整性 ?
- 报文/消息完整性(message integrity),也称为报文/消息认证(或报文鉴别),
目标:
- 证明报文确实
来自声称的发送方
- 验证报文在传输过程中
没有被篡改
- 预防报文的
时间、顺序被篡改
- 预防报文
持有期被修改
- 预防
抵赖
- 发送方否认
- 接收方否认
- 证明报文确实
10.5.2 密码散列函数
密码散列函数
(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)
- 在计算上,
Internet校验和是优秀的密码散列函数吗?
答案:不是!
10.5.3 散列函数算法
MD5:
被广泛应用的散列函数(RFC 1321)- 通过4个步骤,对任意长度的报文输入,计算输出
128位
的散列值 - MD5不是足够安全
- 996年,Dobbertin找到了两个不同的512-bit块,在MD5计算 下产生了相同的散列值
- 通过4个步骤,对任意长度的报文输入,计算输出
SHA-1(Secure Hash Algorithm)
:另一个正在使用的散列算法- US标准 [NIST, FIPS PUB 180-1]
- SHA-1要求输入消息长度 < 2 64 2^{64} 264
- SHA-1的散列值为
160位
- 速度慢于MD5,安全性优于MD5
10.5.4 报文摘要(Message digests)
![](https://i-blog.csdnimg.cn/blog_migrate/e01ad60212ec5993fcc35a7e4bb3f5e9.png)
10.5.5 报文认证
简单方案
:报文+报文摘要→扩展报文(m, H(m))
当H(m)=h时,说明接收的报文满足完整性。
报文认证码MAC(Message Authentication Code)
:
报文m+认证密钥s+密码散列函数H→扩展报文(m, H(m+s))
这是简单方案
的改进版。
上述报文认证方案中存在的缺陷可以通过下一节讲的
数字签名
解决。
10.6 数字签名
Q:
如何解决下列与报文完整性相关的问题?
- 否认
:发送方不承认自己发送过某一报文
- 伪造
:接收方自己伪造一份报文,并声称来自发送方
- 冒充
:某个用户冒充另一个用户接收或发送报文
- 篡改
:接收方对收到的信息进行篡改
A
:数字签名(Digital signatures) !
- 数字签名技术是实现安全电子交易的核心技术之一
- 可验证性(verifiable)
- 不可伪造性(unforgeable)
- 不可抵赖性(non-repudiation)
10.6.1 简单数字签名
使用公钥加密技术直接对完整报文
加密。
- 假设Alice收到报文m以及签名 K B − ( m ) K_B^-(m) KB−(m)
- Alice利用Bob的公钥 K B + K_B^+ KB+解密 K B − ( m ) K_B^-(m) KB−(m) ,并检验 K B + ( K B − ( m ) ) = m K_B^+(K_B^-(m))=m KB+(KB−(m))=m 来证实报文m是Bob签名的
- 如果 K B + ( K B − ( m ) ) = m K_B^+(K_B^-(m))=m KB+(KB−(m))=m 成立,则签名m的一定是Bob的私钥
- 于是:
10.6.1 改进版数字签名
使用公钥加密技术直接对报文摘要
加密。
10.7 密钥分发中心(KDC))—— 解决共享密钥问题
-
回顾身份认证协议:ap4.0
-
对称密钥问题
对称密钥问题
:
两个实体在网上如何建立共享秘密密钥?解决方案
:
可信任的密钥分发中心
(Key Distribution Center-KDC
)作为实体间的中介(intermediary)
-
密钥分发中心
- Alice与Bob需要共享对称密钥.
KDC:
一个服务器- 每个注册用户(很多用户)共享其与KDC的秘密密钥
- Alice和Bob只知道自己与KDC之间的对称密钥,用于分别与KDC进行秘密通信.
-
KDC如何支持Bob和Alice确定用于彼此通信的共享对称密钥呢?
注意:这里的R1不是ap4.0中的一次性数R,而是共享密钥。
10.8 认证中心(CA) —— 解决公钥加密问题
问题情景
:
假如Alice要给Bob发送她的公钥,但半路被Trudy拦住了,然后Trudy把她自己的公钥发给Bob并声称那是Alice的公钥。
-
回顾身份认证协议:ap5.0
-
比萨恶作剧
- Trudy针对Bob实施“
比萨恶作剧
”- Trudy创建邮件订单:
- Trudy利用她的私钥签名订单
- Trudy向比萨店发送订单
- Trudy向比萨店发送她的公钥,但她声称这是 Bob的公钥
- 比萨店核实签名;然后向Bob递送4个腊肠比萨
- Bob根本就不喜欢腊肠
- Trudy创建邮件订单:
- Trudy针对Bob实施“
-
公钥问题
公钥问题
:- 当Alice获得了Bob的公钥 (通过web网站、 e-mail、磁盘等),她怎么确认这
真
的是Bob的 公钥而不是Trudy的?
- 当Alice获得了Bob的公钥 (通过web网站、 e-mail、磁盘等),她怎么确认这
解决方案
:- 可信任的
认证中心
(Certification Authority-CA
)
- 可信任的
-
认证中心
认证中心(CA)
: 实现特定实体E与其公钥的绑定- 每个E(如人、路由器等)在CA上注册其公钥.
- E向CA提供“身份证明”.
- CA创建绑定E及其公钥的证书(certificate).
- 证书包含由CA签名的E的公钥 – CA声明:“这是E的公钥”
- 当Alice想要Bob的公钥时:
- 首先或取Bob的公钥证书(从Bob或者其他地方).
- 应用CA的公钥,解密证书中签名的公钥,获得Bob 公钥
-
公钥证书主要内容
11 网络安全协议与技术
11.1 安全电子邮件
在应用层
解决电子邮件安全问题。
11.1.1 安全电子邮件基本原理
电子邮件安全威胁
垃圾邮件
- 增加网络负荷,占用服务器空间
诈骗邮件
- 能迅速让大量受害者上当
邮件炸弹
- 短时间内向同一邮箱发送大量电子邮件
- 通过电子邮件/附件传播网络
蠕虫/病毒
- 电子邮件
欺骗、钓鱼
式攻击
电子邮件安全需求
机密性
- 只有真正的接收方才能阅读邮件
完整性
- 电子邮件在传输过程中不被修改
身份认证性
- 电子邮件的发送者不被假冒
抗抵赖性
- 发信人无法否认发过电子邮件
安全电子邮件基本原理实现
1、2、3是逐步递进的,其中3是1、2的结合,它是当今邮件传输中常用的加密方法。
- 要求邮件信息保密。本来,直接使用公钥技术对邮件进行加密安全性更高,但是计算量太大了,所以就只能用公钥技术对对称密钥加密而使用对称加密技术对整个邮件信息加密了。
- 此时Alice不要求邮件的信息能保密(假如她向Bob示爱巴不得全世界知道),但要求发送者认证和报文完整性。
- 要求信息保密且发送者认证、报文完整性。
11.1.2 安全电子邮件标准
PEM标准
PEM(Privacy Enhanced Mail)标准
- IETF与IRTF研究增强E-Mail的保密以及PEM的标准化
- 1993年初,提出四份RFC(1421~1424)作为建议标准
- PEM的运行依赖PKI(公钥基础设施),如CA
- 没有被广泛配置
- PEM提供4种安全服务: •
- 邮件加密
- 报文完整性
- 发送方的认证
- 防发送方否认
PGP标准
-
PGP(Pretty Good Privacy)标准
- Philip Zimmermann于1991年发布PGP 1.0
- 事实上标准
- 可在各种平台(Windows、UNIX等)免费运行
- 还可用于普通文件加密及军事目的
- 所用算法被证实为非常安全:
- 公钥加密算法:RSA、DSS或Diffie-Hellman
- 对称加密算法:CAST、3DES或IDEA
- 散列算法:MD5或SHA-1
- Philip Zimmermann于1991年发布PGP 1.0
-
PGP特点:
- 对邮件内容进行数字签名,保证信件内容不被篡改
- 使用公钥和对称加密保证邮件内容机密且不可否认
- 公钥的权威性由收发双方或所信任的第三方签名认证
- 事先不需要任何保密信道来传递对称的会话密钥
-
PGP功能框架
Alice期望PGP提供保密、发送者认证与报文完整性:
-
PGP报文的格式
-
PGP密钥
- 安装PGP时,软件为用户生成一个公开密钥对
- 公钥放置用户网站或某公钥服务器上
- 私钥则使用用户口令进行保护 •
- 用户为随机生成的RSA私钥指定一个口令,只有给出口令才能将私钥 释放出来使用
- 安装PGP时,软件为用户生成一个公开密钥对
-
PGP公钥认证机制与传统CA差异较大:
- PGP公钥可以通过可信的Web认证
- 用户可以自己认证任何其信任的“公钥/用户名”对
- 用户还可以为其他公钥认证提供“担保”
-
防止篡改公钥的方法(假如Alice需要Bob的公钥):
- 直接从Bob手中得到其公钥
- 通过电话认证密钥
- 从双方信任的David那里获得Bob的公钥
- 通过CA
S/MIME标准
- S/MIME(Secure/Multipurpose Internet Mail Extensions)标准
- 提供数据保密、完整性和认证等安全服务
不仅限于邮件使用,可用于任何支持MIME数据的传输 机制,如HTTP
- 增加了新的MIME数据类型:
- “应用 /pkcs7-MIME”(application/pkcs7-MIME)
- “复合/已签名”(multipart/signed)
- “应用 /pkcs7-签名”(application/pkcs7-signature)等
- 只保护邮件的邮件主体,对头部信息则不进行加密
- 认证机制依赖于层次结构的CA(Tree of Trust)
- 证书格式采用X.509规范
11.2 安全套接字层(SSL)
11.2.1 Web应用安全
-
Web安全威胁
- 攻击与破坏事件层出不穷,需要安全Web服务
- Web应用广泛、服务器底层软件复杂,可能隐藏安全漏洞
- Web安全威胁的分类:
- 主动攻击:篡改C/S之间信息或篡改Web站点信息(难防易检)
- 被动攻击:监听数据流获取信息或进行信息量分析(难检易防)
- 机密性
- 网络监听、窃取数据
- 完整性
- 修改用户数据、修改传输的信息
- 拒绝服务
- 伪造请求淹没服务器
- 身份认证
- 冒充合法用户、伪造数据
- Web服务器的安全威胁
- Web服务越强大,包含安全漏洞概率就越高
- HTTP服务可在不同权限下运行
- Web浏览器的安全威胁
- 活动Web页可能隐藏恶意程序
- 通信信道的安全威胁
- 监听程序会威胁通信信道中所传输信息的机密性
- 伪造、篡改、重放会威胁所传输信息的完整性
- 缺乏身份认证使得冒充他人身份进行中间人攻击
- 缺乏数字签名机制使得通信双方能相互攻击
- 拒绝服务攻击使得通信信道不能保证可用性
- 攻击与破坏事件层出不穷,需要安全Web服务
-
基于
应用层
实现Web安全
为特定应用定制特定安全服务,将安全服务直接嵌入在应用程序中。
-
基于
传输层
实现Web安全- SSL或TLS可作为基础协议栈的组成部分,对应用透明,也可直接嵌入到浏览器中使用
- 使用SSL或TLS后,传送的应用层数据会被加密
- 保证通信的安全
- 保证通信的安全
-
基于
网络层
实现Web安全- IPSec提供端到端(主机到主机)的安全机制
- 通用解决方案
- 各种应用程序均可利用IPSec提供的安全机制
- 减少了安全漏洞的产生
- 减少了安全漏洞的产生
- IPSec提供端到端(主机到主机)的安全机制
11.2.2 SSL原理及实现概述
由于内容较多,通过几行文字并不能清晰表达出其主要内涵,所以强烈建议观看配套视频学习。💻video-安全套接字层
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库/类可用
可以像PGP那样实现某些安全功能
- 但是,需要发送字节流以及交互数据
- 需要一组密钥用于整个连接
- 需要证书交换作为协议的一部分:握手阶段
简化的(Toy)SSL: 一个简单的安全信道
从简单的框架可以得到SSL的最核心
的思想。
握手(handshake)
: Alice和Bob利用他们的证书、私钥认证(鉴别)彼此,以及交换共享密钥密钥派生(key derivation)
: Alice和Bob利用共享密钥派生出一组密钥数据传输(data transfer)
: 待传输数据分割成一系列记录连接关闭(connection closure)
: 通过发送特殊消息,安全关闭连接
下面以几小节来解释上述四种技术。
简化的SSL : 一个简单的握手过程
MS
: 主密钥EMS
: 加密的主密钥
简化的SSL : 密钥派生
- 不同加密操作使用不同密钥会更加安全
- 例如:报文认证码(MAC)密钥和数据加密密钥
4个密钥
:- Kc = 用于加密客户向服务器发送数据的密钥
- Mc = 用于客户向服务器发送数据的MAC密钥
- Ks = 用于加密服务器向客户发送数据的密钥
- Ms =用于服务器向客户发送数据的MAC密钥
- 通过密钥派生函数(KDF)实现密钥派生
- 提取主密钥和(可能的)一些额外的随机数,生成密钥
密钥是如何派生的?
- 客户一次数、服务器一次数和预主密钥输入伪随 机数发生器
- 产生主密钥MS
- 主密钥和新一次随机数输入另一个随机数发生器: “密钥块(key block)”
- 密钥块“切片”:
- 客户MAC密钥
- 服务器MAC密钥
- 客户加密秘钥
- 服务器加密秘钥
- 客户初始向量(IV)
- 服务器初始向量(IV)
(注意,client和server使用的是相同的随机数生成函数,所以它们派生密钥是相同的。因为需要相同的钥匙才能解密嘛,这个很容易理解。)
简化的SSL : 数据记录
- 为什么不直接加密整条发送给TCP的字节流?
因为要将字节流分割为一系列记录用于实现MAC技术。- MAC放到哪儿?
- 如果放到最后,其实就只能加密整条发送给TCP的字节流,这时只有全部数据收全才能进行完整性认证。
- e.g 就好比我们打开qq聊天窗,我只要把我想要发的每一条信息都发送完了对方才能收到我的信息,这样子与qq聊天的即时性是相违背的。
- e.g., 对于即时消息应用, 在显示一段消息之前,如何针对
发送的所有字节
进行完整性检验?
- MAC放到哪儿?
方案
:将字节流分割为一系列记录每个记录携带一个MAC
- 接收方可以对每个记录进行完整性检验
问题
:对于每个记录, 接收方需要从数据中识别出MAC- 需要采用变长记录
一条记录中不同分段的内容是规定好的,比如规定把MAC放到记录的尾部,那么接收端就知道接收到的记录的尾部是MAC
- 需要采用变长记录
简化的SSL : 序列号
待解决的问题
: 攻击者可以捕获和重放记录或者重新排序记录解决方案
: 在MAC中增加序列号- MAC = MAC(Mx, sequence||data)
- 注意: 记录中没有序列号域
待解决的问题
: 攻击者可以重放所有记录解决方案
: 使用一次性随机数(nonce)
简化的SSL : 控制信息
待解决的问题
: 截断攻击- 攻击者伪造TCP连接的断连段,恶意断开连接
- 一方或双方认为对方已没有数据发送
解决方案
: 记录类型, 利用一个类型的记录专门用 于断连- type 0用于数据记录;type 1用于断连
- MAC = MAC(Mx, sequence||type||data)
简化的SSL : 总结
一个使用了SSL加密方式的消息传输的示例:
11.2.3 SSL原理及实现详述
上一节知识对SSL进行了简化版的介绍,还有几个问题没有说明:
- 每个域多长?
- 采用哪种加密协议?
- 需要协商吗?
协商的内容:- 允许客户与服务器支持不同加密算法
- 允许客户与服务器在数据传输之前共同选择 特定的算法
SSL协议栈
- 介于HTTP与TCP之间的一个可选层
- 绝大多数应用层协议可直接建立在SSL之上
- SSL不是一个单独的协议,而是
两层协议
SSL密码组(cipher suite)
- 密码组(cipher suite)
- 公开密钥算法(public-key algorithm)
- 对称加密算法(symmetric encryption algorithm)
- MAC算法
- SSL支持多个密码组
- 协商(negotiation): 客户与服务器商定密码组
- 客户提供选项(choice)
- 服务器挑选其一
SSL更改密码规格协议
- 更改密码规格协议(Change Cipher Spec Protocol)
- 更新当前连接的密钥组
- 标志着加密策略的改变
- 位于SSL记录协议之上
- ContentType=20
- 协议只包含一条消息(一个值为1的字节)
- 更新当前连接的密钥组
SSL警告协议
- 警告协议(Alert Protocol)
- Alert消息:
- 当握手过程或数据加密等出错或发生异常时,为对等实体传递SSL警告或终止当前连接
- 位于SSL记录协议之上
- ContentType=21
- 协议包含两个字节:警告级别和警告代码
- Alert消息:
SSL握手协议
- 握手协议(Handshake Protocol)
- 协商结果是SSL记录协议的基础, ContentType=22
- SSL v3.0的握手过程用到三个协议:握手协议 、更改密码规格协议和警告协议
目的
:- 服务器认证/鉴别
- 协商: 商定加密算法
- 建立密钥
- 客户认证/鉴别(可选)
SSL记录协议
SSL中上层所有协议内容都要被封装再记录中。
- 记录协议(Record Protocol)
- 描述SSL信息交换过程中的记录格式
- 所有数据(含SSL握手信息)都被封装在记录中
- 一个记录由两部分组成:记录头和数据
11.2.4 对SSL的握手协议和记录协议更详细的说明
SSL握手过程
- 客户发送其支持的算法列表,以及客户一次随机数(nonce)
- 服务器从算法列表中选择算法,并发回给客户: 选择 + 证书 + 服务器一次随机数
- 客户验证证书,提取服务器公钥,生成
预主密钥
(pre_master_secret),并利用服务器的公钥加密预主密钥,发送给服务器 - 客户与服务器基于预主密钥和一次随机数分别独立计算加密密钥和MAC密钥
- 客户发送一个针对所有握手消息的MAC
- 服务器发送一个针对所有握手消息的MAC
最后2步的意义:保护握手过程免遭篡改
- 客户提供的算法,安全性有强、有弱
- 明文传输
- 中间人攻击可以从列表中删除安全性强的算法
- 最后2步可以预防这种情况发生
- 最后两步传输的消息是加密的
- 客户提供的算法,安全性有强、有弱
- 为什么使用两个一次随机数?
- 假设Trudy嗅探Alice与Bob之间的所有报文
- 第二天,Trudy与Bob建立TCP连接,发送完全相 同的记录序列
- Bob(如Amazon)认为Alice对同一产品下发两个分离的订单
- 解决方案: Bob为每次连接发送完全不同的一次随机数
- 确保两天的加密密钥不同
- Trudy的报文将无法通过Bob的完整性检验
SSL握手消息及参数
![](https://i-blog.csdnimg.cn/blog_migrate/48611832a910de29cb299db154a08e24.png)
SSL握手协议工作过程
![](https://i-blog.csdnimg.cn/blog_migrate/267ab260fe19df1cf7cb3ed9b5230111.png)
SSL记录协议
- SSL记录协议的操作步骤:
- 将数据分段成可操作的数据块
- 对分块数据进行数据压缩
- 计算MAC值
- 对压缩数据及MAC值加密
- 加入SSL记录头
- 在TCP中传输
SSL记录格式
![](https://i-blog.csdnimg.cn/blog_migrate/7e3d8cf51d9e4cfc2130c522365436dc.png)
- 记录头(record header)的结构
11.2.5 SSL的实际连接方式
![](https://i-blog.csdnimg.cn/blog_migrate/10a54002daa6899caa1c2f442c48a1c4.png)
11.3 IP安全(Sec)
![](https://i-blog.csdnimg.cn/blog_migrate/95639578bd001f3b3a8aacc98fbd3b31.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3ddbe294a7b8e96993579cbe44d93b14.png)
虚拟专用网(VPN)
动机
:安全+成本虚拟专用网VPN
(Virtual Private Networks):通过建立在 公共网络(如Internet)上的安全通道,实现远程用户、分 支机构、业务伙伴等与机构总部网络的安全连接,从而 构建针对特定组织机构的专用网络。虚拟
:“安全通道”不实际独占公共网络的资源,是一条逻辑的 穿过公共网络的安全、稳定的隧道- 通过隧道技术、加密技术、密钥管理、认证和访问控制等,实现与专用网类似的安全性能
典型VPN应用
![](https://i-blog.csdnimg.cn/blog_migrate/495d6d7f637e81e8f2cdfcd3843a7480.png)
VPN的功能
- 数据机密性保护
- 数据完整性认证
- 数据源身份认证
- 防重放攻击
- 访问控制
VPN关键技术
隧道技术
- 数据加密
- 身份认证
- 密钥管理
- 访问控制
- 网络管理
隧道技术
- 构建VPN的核心技术
隧道
:通过Internet提供安全的点到点(或端到端) 的数据传输“安全通道”- 实质上是一种封装
- VPN隧道利用隧道协议对通过隧道传输的数据进 行封装
- 使数据安全穿越公共网络(通常是Internet)
- 通过加密和认证以确保安全
- 数据包进入隧道时,由VPN封装成IP数据报
- 通过隧道在Internet上安全传输
- 离开隧道后,进行解封装,数据便不再被保护
隧道协议
-
隧道协议内包括以下三种协议:
- 乘客协议(Passenger Protocol)
- 封装协议(Encapsulating Protocol)
- 承载协议(Carrier Protocol)
-
常见VPN隧道协议:
- 第二层隧道:PPTP、L2TP
- 主要用于远程客户机访问局域网方案
- 第三层隧道:
IPSec
- 主要用于网关到网关、或网关到主机方案
- 不支持远程拨号访问
- 第二层隧道:PPTP、L2TP
典型VPN实现技术
IPSec
:最安全、适用面最广- SSL:具有高层安全协议的优势
- L2TP:最好的实现远程接入VPN的技术
- 典型VPN技术结合:IPSec与SSL、IPSec 与L2TP
11.3.2 IPSec(1)
IPsec体系结构
![](https://i-blog.csdnimg.cn/blog_migrate/95639578bd001f3b3a8aacc98fbd3b31.png)
IPsec服务
- 机密性(confidentiality )
- 数据完整性(data integrity)
- 源认证/鉴别(origin authentication)
- 重放攻击预防(replay attack prevention)
- 提供不同服务模型的两个协议:
- ·
AH
ESP
- ·
IPsec的传输(transport)模式
![](https://i-blog.csdnimg.cn/blog_migrate/6b52d073b358bc279b63597b1c3ef33d.png)
- IPsec数据报的发送与接收均由端系统完成
- 主机是IPsec感知的(IPsec-ware)
IPsec的隧道(tunneling)模式
![](https://i-blog.csdnimg.cn/blog_migrate/9ddc393a0009a53a895b45477c76ae11.png)
两个IPsec协议
- 提供IPsec服务的两个协议:
- AH:在IP数据报文头中的协议号为51
- ESP:在IP数据报文头中的协议号为50
- 认证头协议
AH
(Authentication Header)- 提供
源认证/鉴别
和数据完整性
检验,但不提供 机密性
- 提供
- 封装安全协议
ESP
(Encapsulation Security Protocol)- 提供
源认证/鉴别
、数据完整性
检验以及机密性
- 比AH应用更广泛
- 提供
IPsec模式与协议的4种组合!
![](https://i-blog.csdnimg.cn/blog_migrate/7fd838af455d65b98fc2b4e9384eb85d.png)
11.3.3 IPsec(2)
安全关联(SA)
- 发送数据前,从发送实体到接收实体之间需要建立安全关联
SA (security association)
- SA是单工的: 单向
- 发送实体与接收实体均需维护SA的状态信息
- 回顾: TCP连接的端点也需要维护状态信息
- IP是无连接的;
IPsec是面向连接的!
- 例如:
- 安全关联主要参数:
- 安全参数索引(SPI):32位SA唯一标识(ID)
- 加密密钥、认证密钥
- 密码算法标识
- 序列号(32位)
- 抗重放攻击
- 抗重播窗口
- 接收方使用滑动窗口检测恶意主机重放数据报
- 生存周期
- 规定SA的有效使用周期
- 运行模式:传输模式或隧道模式
- IPSec隧道源、目的地址
SA举例
![](https://i-blog.csdnimg.cn/blog_migrate/bd84ab1d76ce5a009f6d6eacfb4e6550.png)
R1为SA存储:
- 32位SA标识(ID) :
安全参数索引SPI
(Security Parameter Index) - 起点(origin)SA接口(200.168.1.100)
- 终点(destination)SA接口(193.68.2.23)
- 加密类型(e.g., 3DES with CBC)
- 加密密钥
- 完整性检验类型(e.g., HMAC with MD5)
- 认证/鉴别密钥
安全关联数据库(SAD)
- IPsec端点将SA状态保存在
安全关联数据库SAD
(security association database)中- 在处理IPsec数据报时,定位这些信息
- 对于n个销售人员,1个分支机构的VPN,总部的 路由器R1的SAD中存储2 + 2n条SAs
两倍
的SA
,因为需要双向
。 - 当发送IPsec数据报时,R1访问SAD,确定如何处理数据报
- 当IPsec数据报到达R2
- R2检验IPsec数据报中的SPI
- 利用SPI检索SAD
- 处理数据报
安全策略数据库(SPD)
- Security Policy Database (SPD)
- 安全策略(SP):定义了对什么样的数据流实施什么样的安全处理
有一些数据流是需要加密的,而有一些不需要。- 应用IPSec、绕过、丢弃
- 安全策略组成了SPD,每个记录就是一条SP
- 提取关键信息填充到一个称为“
选择符
”的结构- 包括目标IP、源IP、传输层协议、源和目标端口等
- 利用选择符去搜索SPD,检索匹配的SP
- 提取关键信息填充到一个称为“
安全处理需要的参数存储在SP指向的SA结构
11.3.4 IPSec(3)
IPsec数据报
-
传输模式AH
-
隧道模式AH
-
传输模式ESP
-
隧道模式ESP
IPsec的传输模式
![](https://i-blog.csdnimg.cn/blog_migrate/fa98ee55f5367085b2986ac38f6fc695.png)
IPsec的隧道模式
![](https://i-blog.csdnimg.cn/blog_migrate/6c176e0d62735e3f60e4943282dae0f1.png)
11.3.5 IPsec(4)
数据报处理过程
![](https://i-blog.csdnimg.cn/blog_migrate/93c1edc9dce79774457d18bcac215ca3.png)
-
R1: 将原IP数据报转换为IPsec数据报
- 检索SPD,确定处理策略
- 检索SAD,确定SA
- 在原IP数据报(包括原IP首部域!)后面附加“ESP尾部”.
- 利用SA定义的算法与密钥,加密上述结果.
- 在加密结果前面附加“ESP头”,创建“enchilada”.
- 针对
整个enchilada
,利用SA定义的算法与密钥,创建报 文认证码MAC; - 在enchilada后面附加MAC,构成
载荷
(新IP数据报载荷); - 构造全新的IP头,包含所有经典的IPv4首部字段;
- 将新IP头附加在载荷的前面
-
R2: 解封IPsec数据报
- 原始IP数据报中提取选择符,并搜索SPD,确 定处理策略
- 丢弃或转入系统IP协议栈进行后继处理
- 判断是否为IPsec数据报
- 从头部提取,并检索SAD
- 若找不到SA,则触发IKE或丢弃包;
- 若找到,则根据SA解封数据报,得到原始IP数据报
- 原始IP数据报中提取选择符,并搜索SPD,确 定处理策略
enchilada内部各字段作用
![](https://i-blog.csdnimg.cn/blog_migrate/f88df7bfdf4201f1964c7fdd62838de6.png)
- ESP尾部:填充以便应用分组密码
- ESP首部:
- SPI,接收实体基于此知道该做什么
- 序列号,抵抗重放攻击
- ESP的MAC认证字段,基于共享的秘密密钥
IPsec序列号
- 对于新SA,发送方初始化序列号为0
- 每次通过SA发送数据报:
- 发送方增加序列号计数器(加1)
- 将计数器值置于序列号字段
- 目的:
- 预防嗅探与回放分组攻击
- 接收重复的、已认证的IP分组,会破坏正常服务
- 方法:
- 根据序列号,接收方检验分组是否重复
- 无需记录所有已接收分组,而是利用一个窗口,检查窗口内的分组是否重复
11.3.6 IPsec(5)
SA的建立和密钥管理
IPsec支持两种方式的SA建立和密钥管理:
- 手工方式
- 所有的信息需要手工配置
- SA永远存在
- 适用于结构简单的网络
- 自动方式
- SA可以通过协商方式产生
- SA过期以后重新协商,提高了安全性
- 适用于较复杂拓扑和较高安全性的网络
Internet密钥交换(IKE)
前面的例子
:在IPsec端点,手工建立IPsec SA
- 对于几百个端点规模的VPN,手工设置密钥是不可行的
- 替代方案:IPsec
IKE
(Internet Key Exchange) - IKE协议可自动管理SA的建立、协商、修改和删 除,是IPSec唯一的密钥管理协议
IKE
:ISAKMP
(Internet Security Association and Key Management Protocol)的通用框架- 定义了协商、建立、修改和删除SA过程的通用框架
OAKLEY
的密钥交换模式- 一个密钥交换协议,允许认证过的双方通过不安全的网络交换 密钥参数
SKEME
的共享和密钥更新技术- 提供了IKE交换密钥的算法
IKE和IPSec
- IKE为IPSec提供服务:
- 密钥交换与管理
- 身份认证:通信对等体的认证
- IPSec SA的协商与管理
IKE: PSK与PKI
- 认证可以通过:
- 预共享密钥 (
PSK
),或者 - 公钥基础设施
PKI
(公开/私有密钥对以及证书).
- 预共享密钥 (
- PSK:基于共享的秘密密钥
- 运行IKE认证彼此,并建立IPsec SAs (每个方向一个)
- 包括加密秘钥和认证密钥
- PKI:基于公开/私有密钥对以及证书
- 运行IKE认证彼此,并建立IPsec SAs (每个方向一个)
- 类似于SSL的握手过程
IKE的执行阶段
IKE包括两个阶段
:
阶段1
:建立双向IKE SA(也称为ISAKMP安全关联)- 为双方进一步的IKE通信提供机密性、数据完整性以及数据源认证服务
- 注意:IKE SA不同于IPsec SA
- 两种模式:
- 野蛮模式(aggressive mode)
– 3个消息交互,使用较少的消息 - 主模式(main mode)
– 6个消息交互
– 主模式提供身份保护(identity protection),并且更灵活
- 野蛮模式(aggressive mode)
阶段2
:基于ISAKMP协议,进行IPsec SA的安全协商
11.3.7 IPsec总结
- IKE用于交换算法、秘密密钥、SPI
- 采用AH协议或者ESP协议 (或者两者)
- AH提供完整性、源认证服务
- ESP提供完整性、源认证以及机密性服务
- IPsec对等端可以是:
- 两个端系统
- 两个路由器/防火墙
- 一个路由器/防火墙与一个端系统
11.4 无线局域网安全
11.4.1 WEP的设计目标
- WEP(Wired Equivalent Privacy): 有线等效保密
- 对称密钥加密
- 机密性
- 主机认证
- 数据完整性
- 自同步: 每个分组单独加密
- 给定加密分组和密钥,便可以解密;即便前序分组丢 失,也可以继续成功解密分组(与CBC不同)
- 高效
- 可以由硬件或软件实现
11.4.2 回顾: 对称流密码
![](https://i-blog.csdnimg.cn/blog_migrate/40071068407146a71f040f31ba23fc8a.png)
将密钥流的每个字节与明文的每个字节进行异 或,得到密文
:
- WEP使用RC4算法
11.4.3 流密码与分组独立性
- 回顾WEP设计目标: 每个分组独立加密
- 如果对于n+1号帧使用的密钥流,是在n号帧的密 钥流之后,那么每个帧就不是独立加密的
- 需要知道n号帧使用的密钥流截止到哪里
- WEP的解决方案:初始密钥+针对每个分组的新 IV(初始向量),产生针对每个分组的密钥流
11.4.4 WEP加密
- 发送端针对数据(data)计算
完整性校验值ICV
(Integrity Check Value)- 4字节的散列值/CRC,用于数据完整性校验
- 每端有104位的共享密钥
- 发送端生成
24位初始向量(IV)
,附加到密钥上:得到128位密钥 - 发送端还要附加
keyID
(8位字段) - 将128位密钥输入到伪随机数发生器,产生密钥流
- 利用RC4算法对帧中“
数据+ICV
”进行加密:- 将密钥流与“数据+ICV”逐个字节异或(XOR)
- 将IV和keyID附加到加密数据,构成载荷
- 将载荷插入到802.11帧中
11.4.5 WEP解密概述
![](https://i-blog.csdnimg.cn/blog_migrate/82db4f9309ff57f92be5906b1095a7c4.png)
- 接收端提取IV
- 将IV和共享密钥输入伪随机数发生器,得到密钥流
- 将密钥流与加密部分逐个字节异或(XOR),解密得 到数据与ICV
- 利用ICV校验数据完整性
- 注意: 这里采用的消息完整性验证方法与报文认证码 MAC以及数字签名(利用PKI)不同.
11.4.6 利用一次性随机数进行端点认证
一次性随机数(nonce)
: 一个生命期内只用一次的数R
如何证明Alice是“真实的”
:Bob向Alice发送一次性 随机数nonceR, Alice必须利用共享密钥加密并返回R。
![](https://i-blog.csdnimg.cn/blog_migrate/eb6da94466a5e5b313b4f4b582975835.png)
11.4.7 WEP的身份认证
![](https://i-blog.csdnimg.cn/blog_migrate/ccce6b434f8a5878584a67650b4bd8c2.png)
注意
:
- 并非所有AP都进行认证,即便使用了WEP
- AP会在信标帧(beacon frame)中指示是否需要认证
- 认证需要在关联前进行
11.4.8 破解802.11WEP加密
安全漏洞:
- 每帧一个24位的IV→IV最终会被重用
- IV以明文传输→重用IV容易被监测
攻击:
- Trudy诱使Alice加密已知明文:d1 d2 d3 d4 …
- Trudy知道: ci = di XOR kiIV
- Trudy已知ci和di,因此可以计算得到kiIV
- Trudy得到加密密钥序列:k1IV k2IV k3IV …
- 下一次IV被重用时,Trudy便可以成功解密!
11.4.9 802.11i: 改进的安全
- 多种(更强的)可选的加密方法
- 提供密钥分发
- 利用独立于AP的认证服务器
- IEEE 802.11i 服务:
- 认证
- 访问控制
- 数据与完整性加密
11.4.10 802.11i: 运行的4个阶段
![](https://i-blog.csdnimg.cn/blog_migrate/ef34b26aab11aecd3af6b191b1d2f7c8.png)
11.4.11 EAP: 扩展认证协议
- EAP:客户(移动端)与认证服务器间的端-端协议
- EAP运行在两段独立的“链路”上
- 移动端到AP(EAPoL: EAP over LAN)
- AP到认证服务器(RADIUS over UDP)
![](https://i-blog.csdnimg.cn/blog_migrate/aa57678836f1918a6cfb0660fd71e88e.png)
11.5 防火墙
![](https://i-blog.csdnimg.cn/blog_migrate/30ba8763c84bab973b0e16ca10b07ed7.png)
11.5.1 为什么需要防火墙?
预防拒绝服务攻击(DoS)
:
- SYN泛洪: 攻击者建立许多虚假TCP连接,耗尽资源, 导致“真正”的连接无法建立
预防非法修改/内部数据访问
: - e.g., 攻击者替换CIA网站主页
只允许对内部网络的授权访问
: - 认证的用户/主机
三种类型的防火墙
: - 无状态分组过滤器(stateless packet filters)
- 有状态分组过滤器(stateful packet filters)
- 应用网关(application gateways)
11.5.2 无状态分组过滤
![](https://i-blog.csdnimg.cn/blog_migrate/d168b8893499f2efb59c413479eae288.png)
- 内部网络通过
路由器防火墙(router firewall)
与Internet连接 - 路由器
逐个分组过滤
,决策是否转发/丢弃分组,依据:- 源IP地址、目的IP地址
- TCP/UDP源、目的端口号
- ICMP报文类型
- TCP SYN和ACK标志位
- ……
11.5.3 无状态分组过滤:举例
例1
: 阻止协议字段=17,以及源或目的端口号=23 的数据报进入与离开- 结果: 所有进入或离开的UDP流量,以及Telnet 连接均被阻止
例2
: 阻止进入的、 ACK=0的TCP段- 结果: 阻止外部客户与内部主机主动建立TCP 连接,但是允许内部(内部发送的TCP段ACK=1)客户与外部主机主动建立连接
![](https://i-blog.csdnimg.cn/blog_migrate/1934406ed9ab95be566fa57aa78acf98.png)
11.5.4 访问控制列表
ACL(Access Control Lists)
: 规则表,自顶向下应用于到达的分组:(action, condition)对
11.5.5 有状态分组过滤
-
无状态分组过滤器
: 笨拙- 不加以区分放行满足条件的所有分组
- 例如:放行dest port = 80、ACK=1的分组,即使没有建立TCP连接:
-
有状态分组过滤器
: 跟踪每个TCP连接- 跟踪连接建立(SYN)、拆除(FIN): 根据状态确定是否放行进入或外出的分组
- 超时的非活动连接: 不再允许分组通过
-
扩展
ACL
,以便在放行分组前,检测连接状态表
11.5.6 应用网关
- 基于应用数据以及 IP/TCP/UDP 头部字段过滤分组
例如
:允许特定用户 telnet外部网络
- 要求所有Telnet用户通过网关Telnet外部网络;
- 对于授权的用户,网关代理用户与目的主机建立 Telnet连接,并且在两个连接之间进行数据中继;
- 路由器阻止所有不是由网关发起的Telnet连接。
11.5.7 防火墙、应用网关的局限性
IP欺骗(spoofing)
: 路由器 不知道数据是否来自于声称的源- 如果多个应用需要特殊处 理,则每个应用需要一个 应用网关
- 客户软件必须知道如何连 接网关
- e.g., 必须配置Web浏 览器的代理服务器的 IP地址
- 过滤器经常对UDP流量 使用“全部通过”或者 “全部不通过”策略
折衷(tradeoff): 确定安全级别
与外部网络的通信度
- 很多安全防护级别很高 的网站仍然遭受攻击
![](https://i-blog.csdnimg.cn/blog_migrate/d8a549405649bdff5793b06d87fa2cc9.gif)
完结撒花
创作不易,看完记得点赞喔。