目录
被动攻击 | 主动攻击 | |||||||
---|---|---|---|---|---|---|---|---|
篡改 | 恶意程序 | 拒绝服务Dos | ||||||
攻击者从网络上截获他人通信内容,不干扰信息流 | 攻击者篡改、彻底中断或完全伪造网络上传送的报文 | 计算机病毒 | 计算机蠕虫 | 特洛伊木马 | 逻辑炸弹 | 后门入侵 | 流氓软件 | 攻击者向某个服务器不停发送大量分组,时该服务器无法提供正常服务。如果从成百上千机器攻击某个服务器,则称为分布式拒绝服务DDos |
修改其他程序把自己复制进去的程序 | 将自身从网络一个结点发送到另一个结点并自动启动的程序 | 程序执行的并非其声称的功能,而是某种恶意功能 | 当运行环境满足某种特定条件(如时间)时执行其他特殊功能 | 利用系统中的漏洞通过网络入侵 | 未经用户允许就安装运行并损害用户利益的软件 |
数据加密
用户A使用加密秘钥K,通过加密算法E,将明文X转为密文Y
B收到后使用解密秘钥K’,通过解密算法D,将秘文Y还原为明文X
对称秘钥密码体制
- K=K’,即加密秘钥与解密秘钥相同
- 数据加密标准DES属于对称秘钥密码体制, 秘 钥 长 度 56 = 64 位 秘 钥 + 8 位 奇 偶 校 验 秘钥长度56=64位秘钥+8位奇偶校验 秘钥长度56=64位秘钥+8位奇偶校验
- 目前56位DES已能在很短时间内暴力破解。三重DES(把明文用秘钥1加密,秘钥2解密,再用秘钥3加密)广泛用于网络、金融等系统
公钥密码体制
- 又称为公开秘钥密码体制,其加密秘钥与解密秘钥不同
- 秘钥对产生器对接收者B产生加密秘钥 P K B PK_B PKB和解密秘钥 S K B SK_B SKB,其中加密秘钥 P K B PK_B PKB公开,解密秘钥 S K B SK_B SKB只有B知道
- 发送者A首先用 P K B PK_B PKB通过算法E对明文X加密,得到密文Y
- 接收者B用自己的私钥 S K B SK_B SKB通过算法D对Y解密,得到X
公钥密码体制特点:
- 从已知的 P K B PK_B PKB无法推导出 S K B SK_B SKB
- 公钥 P K B PK_B PKB只能用来加密,无法用来解密
- 对X进行D运算和E运算的顺序不影响结果: E P K B ( D S K B ( X ) ) = D S K B ( E P K B ( X ) ) = X E_{PK_B}(D_{SK_B}(X))=D_{SK_B}(E_{PK_B}(X))=X EPKB(DSKB(X))=DSKB(EPKB(X))=X
数字签名
数字签名是为了保证三点功能:
- 报文鉴别:接收者能确信报文的确是发送者发送的;
- 报文完整性:接收者能确信所收到的数据没有被篡改过;
- 不可否认:发送者时候无法抵赖对报文的签名。
考虑上节公钥密码体制的第3个特点
如图,发送者A用其私钥
S
K
A
SK_A
SKA对报文X进行D运算,接收者B用A的公钥
P
K
A
PK_A
PKA进行E运算,如果能还原出明文,则核实了该签名:
只有A拥有其私钥,因此报文鉴别通过;如果数据被篡改过,那么B还原明文肯定失败,因此报文完整性通过
但上述方式只实现了签名的验证,但报文本身没有保密:因为A的公钥是公开的,任何人都能通过公钥获得明文。
因此可以通过下图的方式实现签名+保密:
鉴别
鉴别是要验证通信的对方的确是自己要通信的对象;并且传送的报文是完整的没被篡改过的
鉴别分为:报文鉴别、实体鉴别
报文鉴别
- 鉴别收到的报文的确是报文的发送者发送的,每一个报文都需要鉴别
- 理论上可以用数字签名实现,但对较长的报文D运算和E运算的计算量会很大
- 因此用密码散列函数(MD5、SHA-1/2/3)实现鉴别
密码散列函数
密码散列函数需要满足以下2个特点:
- 输入长度不限,但输出长度固定,并且较短
- 输入输出是多对一的关系。不同输出肯定对应不同输入,不同输入可能得到相同输出
密码散列函数的第一个特点使得对其输出的计算量可控;第二个特点则保证了攻击者拿到输出也无法倒推出输入
报文摘要算法MD5是一种密码散列函数,其输出为128位
SHA-1是另一种广泛使用的密码散列函数,安全性比MD5更高,其输出为160位
但MD5和SHA-1都已被证明不满足密码散列函数的第2个特点,即可以通过输出倒推出输入
因此MD5和SHA-1逐渐被更安全的SHA-2和SHA-3替代
基于散列函数的报文鉴别
- 发送者A首先对明文X通过散列函数得到散列H,然后对散列H用秘钥K加密得到报文鉴别码,将其拼接在X后面发送
- 接收者B收到报文后首先分离报文鉴别码,然后用秘钥K对其解密得到散列H,最后使用散列函数计算报文X,得到的散列值如果是H,则鉴别成功
以上步骤中报文X本身不加密,仅需要对长度短的多的散列H加解密,计算量可控
考虑到秘钥K分发的风险,也可以用公钥密码体制:
- 发送者A用其私钥对散列H进行D运算,得出报文鉴别码,然后将其拼接在报文X后面发给B
- 接收者B对报文鉴别码用A的公钥进行E运算恢复散列H
实体鉴别
- 在系统接入否认全部持续时间内,对和自己通信的对方实体只验证一次
- 实体鉴别一旦通过,接下来的通信就不再做任何鉴别。因此这里的风险是,如果入侵者在鉴别过程中被通过,则之后的通信全部泄露
重放攻击
假设A和B约定使用对称秘钥 K A B K_{AB} KAB:即A向B发送带身份的报文,并用 K A B K_{AB} KAB加密,B收到后用 K A B K_{AB} KAB解密,如果成功则鉴别了A的身份
重放攻击:
入侵者C截获A发给B的报文,直接将其发送给B,使B误以为C就是A,接下来B发送的所有报文全泄露
中间人攻击
为了对付重放攻击,可以使用不重数(不重复使用的大随机数):
- A首先用明文发送其身份和一个不重数 R A R_A RA给B;
- B响应A,用其私钥 S K B SK_B SKB对 R A R_A RA做D运算,连同 R B R_B RB一起发给A;
- A用B的公钥 P K B PK_B PKB核实 R A R_A RA,确定对方是B,同样用其私钥 S K A SK_A SKA对不重数 R B R_B RB做D运算,发给B;
- B用A的公钥 P K A PK_A PKA核实 R B R_B RB,确定对方是A
- 实体鉴别通过后,接下来的通信会互相用对方的公钥做加密
中间人攻击:
- A向B发送身份报文和一个不重数 R A R_A RA,这个报文被中间人C截获,C将其原封不动转给B,同时用其私钥 S K C SK_C SKC对 R A R_A RA做D运算,发送回A,让A以为C是B;
- B用私钥 S K B SK_B SKB对 R A R_A RA做D运算,发给A,C截获后丢弃,同时转发 R B R_B RB给A;
- A向B索取其公钥,被C截获后转发给B,同时将 P K C PK_C PKC发送给A,A做了D运算后确认C就是B;同样用其私钥 S K A SK_A SKA对不重数 R B R_B RB做D运算,发给B;
- 接下来的每次数据报,C都截获后用自己的私钥 S K C SK_C SKC解密,复制一份后,再用 P K B PK_B PKB加密发给B
秘钥分配
从以上的攻击方式可以知道秘钥分配的重要性
对称秘钥的分配
目前常用的秘钥分配方式是设立秘钥分配中心KDC
假定用户A和B都是KDC的登记用户,其余KDC通信的主秘钥 K A K_A KA和 K B K_B KB在登记时已获得
- A向KDC发送包含A和B身份的明文,希望与B通信
- KDC产生“一次一密”的会话秘钥 K A B K_{AB} KAB供A与B本次会话,然后用 K A K_A KA加密包含秘钥 K A B K_{AB} KAB和票据(票据又用 K B K_B KB加密)的回答报文,发给A
- A将 K B K_B KB加密的票据发给B,后者解密后允许A的通信请求
公钥的分配
一般由权威机构建立认证中心CA
每个实体都有CA发的证书,其中包含公钥、拥有者的标识信息(人名、IP),证书本身被CA做了数字签名,任何用户可获得CA的公钥
互联网使用的安全协议
目前在网络层、运输层和应用层都有相应的网络安全协议
网络层安全协议
- IPsec是能够在IP层提供通信安全的协议族,其实一个框架
- IPsec数据报(IP安全数据报)有2种工作方式:运输方式、隧道方式。其中后者使用最多
隧道方式是在原始的IP数据报的前后添加若干控制信息,再加上新的IP首部,构成一个IP安全数据报
- 可以看到,IP安全数据报中原始的IP数据报被加密
- 新加的IP首部是不加密的(否则互联网上的路由器无法转发)
- 新的源地址为负责IPsec加密处理的路由地址,目的地址为原始地址或原始地址所在网络的路由地址
假设公司总部主机
H
1
H_1
H1与分公司主机
H
2
H_2
H2通信
IP数据报首先经过公司总部的路由器
R
1
R_1
R1,经过IPsec的加密处理称为IP安全数据报(IP首部的目的地址为分公司路由器
R
2
R_2
R2)
该安全数据报经互联网中多个路由器转发,最终到达
R
2
R_2
R2,后者对其解密,还原出原始的数据报,传送到终点主机
H
2
H_2
H2
假设公司总部主机
H
1
H_1
H1与外地业务员主机
H
3
H_3
H3通信
IP数据报首先经过公司总部的路由器
R
1
R_1
R1,经过IPsec的加密处理称为IP安全数据报(IP首部的目的地址为主机
H
3
H_3
H3)
该安全数据报到达主机
H
3
H_3
H3后,利用事先安装的IPsec对其做鉴别和解密,还原出原始的数据报
运输层安全协议
- 运输层安全协议主要有两个:安全套接字层SSL、运输层安全TLS
- TLS是在SSL3.0的基础上设计的,为所有基于TCP的网络应用提供安全数据传输服务
- 应用层使用SSL最多的是HTTP。当使用普通不加密的浏览器查看网页时,HTTP直接使用TCP连接;当使用信用卡进行网上支付时,HTTP就调用SSL对网页加密,此时网址栏http变成https表示此时使用的是提供安全服务的HTTP
如上图右,此时SSL形成了一个子层,连接应用层和传输层:
在发送方,SSL从SSL套接字接收应用层数据,对其加密,然后把加密的数据送给TCP套接字
在接收方,SSL从TCP套接字读取数据,解密后通过SSL套接字把数据交给应用层
应用层安全协议
- PGP是应用层为电子邮件提供安全服务的协议,已经成为电子邮件事实上的标准
- 电子邮件的一个特点是,通信双方并没有建立任何会话(发件和收件在时间上是分离的),因此双方无法协商,只能将加密信息附加在数据报上
- PGP很难被攻破,目前可以认为PGP是足够安全的
上图是邮件发送者A使用PGP加密的过程:
- 对明文邮件X做MD5运算,获得报文摘要H,然后用A的私钥 S K A SK_A SKA对H做D运算,将其拼接在X后面得到扩展邮件
- 使用A自己生成的一次性秘钥对扩展邮件做加密
- 使用B的公钥 P K B PK_B PKB对一次性秘钥做加密
- 把加密的一次性秘钥和加密的扩展邮件发送给B
发件方和收件方可以通过CA签发的证书来获得和验证对方的公钥
防火墙与入侵检测
- 防火墙是一种特殊编程的路由器,通过实施访问控制策略严格控制进出网络边界的分组,尽可能减少潜在入侵的发送
- 入侵检测系统IDS是系统防御的第二道防线,通过对进入网络的分组进行深度分析发现疑似入侵的行为
防火墙技术分2类:
- 分组过滤路由器
根据过滤规则对进出内部网络的分组执行转发或丢弃
过滤规则是基于分组的网络层或运输层首部信息,如IP地址、端口、协议类型等
比如通过阻止23号端口的入分组实现外部无法使用TELNET(使用23号端口)登录到内部网络的主机 - 应用网关
应用网关是特异性的,对每种应用都需要特定的应用网关
当某应用客户进程向服务器发送请求报文时,先发送给应用网关,后者在应用层打开该报文,查看其是否合法
如果合法则应用网关以客户进程的身份将请求报文转发给服务器,否则丢弃报文
入侵检测方法可分为基于特征的入侵检测和基于异常的入侵检测:
- 基于特征的入侵检测
维护一个所有已知攻击标志性特征的数据库,每种特征是一个与某种入侵活动相关联的规则集
只能检测已知攻击 - 基于异常的入侵检测
通过观察正常运行的网络流量,学习正常流量的统计特性和规律
当检测到网络中流量的某种统计规律不正常时,认为可能发生了入侵行为