网络和计算机安全
信息安全概述
1
Internet中的信息安全
• Internet中的信息系统越来越不安全
–高度互联的Internet
– Internet安全性问题的根源是信任假设的改变
(ATM)
–World Wide Web和Wild and Woolly West
(和 )
–信用卡泄密事件
2
案例
• 美4000万信用卡泄密,波及"中国卡"
– 2005年6月21日报道,美国4000万信用卡资料泄露的事件最终还是波及到
了中国。根据万事达(Mastercard)昨日发布的澄清声明,被波及的中国
万事达信用卡数量为5560张以内。Visa国际则表示,相关的数据正在统计
中,将在稍晚发布。因为这次事件中美国所有的信用卡品牌均被波及,万
事达卡只占“外泄卡”总数的35%,所以中国“外泄卡” 总数很可能
过万。
– 本次遭到黑客入侵的公司,是在美专为银行、会员机构、特约商店处理卡
片交易资料之外包厂商CardSystems。此公司在美负责处理大约105000
家中小企业业务,目前并未处理中国内地银行的信用卡业务。
– 但由于其代理的万事达和Visa两大全球信用卡公司,均已在中国开展业务
多年。所以,万事达卡的“外泄卡”中,也有%(大约5600张)在中
国内地,%(大约10000张)在香港。万事达卡表示,侦测发现此次
事件之后,立即主动发出预警通知所有银行、金融机构,呼吁所有单位须
更加小心保护自身权益。另外,万事达卡国际组织也已彻底要求
CardSystems限期改善,立即补强安全漏洞。Visa国际表示将尽快发布
紧急声明。Visa国际中国区总经理熊安平昨日在接受记者独家专访时表示,
– Visa国际定期在全球收集有关欺诈嫌疑的商户,还会针对珠宝店之类高风
险的商户实行特别监控,并针对网上交易等实行“保证金”制度,确保持
卡人权益不受侵害。未受波及的中国银联也不敢掉以轻心。因为在国内拥
有最大的银行卡网络,且与CardSystems的业务有部分的重合,中国银
联发言人表示将很快发布对于此事件的官方声明。 3
信用卡事件图例
4
思考题
• 本次泄密事件的泄密机制是怎么样的?
• 本次泄密事件的主要原因是什么?
• 如何防范这种泄密?
• 这种信用卡盗窃事件破坏了(信用卡)信
息的什么属性?
5
CERT报告的安全性问题
• CERT (Computer Emergency Response
Team) 报告的安全性问题总体呈现上升趋
势
• 分为两个报告:
–报告的漏洞
–安全事件
6
1995-2004年报告的漏洞数目统计
(CERT)
7
1988-2003年报告的安全事件统计 (CERT)
安全事件
0
20000
40000
60000
80000
100000
120000
140000
160000
1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003
8
安全问题的重要性
• 系统原来越不安全
• 系统的安全性取决于不同的方面
• 本课程的主要着力点在于安全软件的设计
问题上讲解安全的原理
9
什么是安全
10
安全的概念
• 橘皮书
• C. I. A.
• 信息安全领域的划分
• 安全的矛盾性
• 安全定义的发展
• 影响安全的技术因素
11
橘皮书
• 橘皮书的历史
• 橘皮书定义了三类、六个基本需求
–第一类:策略
• 需求1 - 安全策略 (Security Policy)
• 需求2 - 标定 (Marking)
–第二类:审计
• 需求3 - 可标识 (Identification)
• 需求4 - 可审计 (Accountability)
–第三类:保障
• 需求5 - 保障 (Assurance)
• 需求6 - 持续防护 (Continuous Protection)
12
信息安全的定义
• 信息安全是一个十分广泛而又复杂的话题
• 美国国家电信和信息安全委员会 (NSTISSC)
– 信息安全是对信息、系统以及使用、存储和传输信息
的硬件的保护。但是要保护信息及其相关系统,诸如
策略、认识、培训和教育以及技术手段都是必要的。
• 微软公司 M. Howard, D. LeBlance
– 一个安全的产品应该是指在信息所有者或者系统管理
员控制下能够保护客户数据的机密性、完整性和可用
性,能够保护资源处理过程的完整性和有效性。
• 机密性 (Confidentiality)、完整性 (Integrity) 和
可用性 (Availability) 的组合
13
机密性
• 机密性是指保证计算机相关的有价值财产
(信息)只能被授权过的用户所访问。
• 机密性的保护
–认证和访问控制
–加密
14
完整性
• 完整性是指这些计算机相关的有价值财产
(信息)只能被授权过的用户所修改,或
者通过授权过的过程所修改。
• 完整性的保护
–认证和访问控制
–加密
15
可用性
• 可用性是指这些有价值的财产(信息)在
需要的时候必须能够被授权的用户访问或
者修改。
• 可用性的破坏
– DOS: Denial Of Service
16
可用性破坏案例
• SYN Flood的基本原理
– SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分
布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,
发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽
(CPU满负荷或内存不足)的攻击方式。
– 要明白这种攻击的基本原理,还是要从TCP连接建立的过程开始
说起:TCP与UDP不同,它是基于连接的,也就是说:为了在服
务端和客户端之间传送TCP数据,必须先建立一个虚拟电路,也
就是TCP连接,建立TCP连接的标准过程是这样的:
• 首先,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即
同步(Synchronize),同步报文会指明客户端使用的端口以及TCP
连接的初始序号;
• 第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK
的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确
认(Acknowledgement)。
• 第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列
号被加一,到此一个TCP连接完成。
• 以上的连接过程在TCP协议中被称为三次握手(Three-way
Handshake)。
17
可用性破坏案例 (续)
– 问题就出在TCP连接的三次握手中,假设一个用户向服务器发送
了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应
答报文后是无法收到客户端的ACK报文的(第三次握手无法完成)
,这种情况下服务器端一般会重试(再次发送SYN+ACK给客户
端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度
我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大
约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等
待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量
模拟这种情况,服务器端将为了维护一个非常大的半连接列表而
消耗非常多的资源--数以万计的半连接,即使是简单的保存并遍历
也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中
的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够
强大,最后的结果往往是堆栈溢出崩溃--即使服务器端的系统足够
强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇
理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),
此时从正常客户的角度看来,服务器失去响应,这种情况我们称
作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。
18
可用性破坏案例 (续)
• 从防御角度来说,有几种简单的解决方法:
– 第一种是缩短SYN Timeout时间,由于SYN Flood攻击的效果取
决于服务器上保持的SYN半连接数,这个值=SYN攻击的频度 x
SYN Timeout,所以通过缩短从接收到SYN报文到确定这个报文
无效并丢弃改连接的时间,例如设置为20秒以下(过低的SYN
Timeout设置可能会影响客户的正常访问),可以成倍的降低服务
器的负荷。
– 第二种方法是设置SYN Cookie,就是给每一个请求连接的IP地址
分配一个Cookie,如果短时间内连续受到某个IP的重复SYN报文,
就认定是受到了攻击,以后从这个IP地址来的包会被丢弃。
• 可是上述的两种方法只能对付比较原始的SYN Flood攻击,
缩短SYN Timeout时间仅在对方攻击频度不高的情况下生
效,SYN Cookie更依赖于对方使用真实的IP地址,如果
攻击者以数万/秒的速度发送SYN报文,同时利用
SOCK_RAW随机改写IP报文中的源地址,以上的方法将
毫无用武之地。
19
机密性,完整性和可用性及其之间的关系
完整性
机密性
可用性
安全
20
C, I, A分类
21
信息安全领域的划分
22
安全的矛盾性
• 警察与小偷
• 银行和抢匪
• 安全的矛盾性不可避免
23
安全定义的发展
• 1960-1970:通信安全
• 1970-1980:计算机安全
• 1980-1990:信息安全
• 1990- :信息保障
24
影响安全的技术因素
• 网络因素
• 系统复杂性因素
• 系统可扩展因素
25
安全策略和安全机制概述
26
威胁与威胁建模
• 威胁
– 威胁是对信息安全的某种破坏
• 对威胁的分析的系统化方法称为威胁建模
– 成立威胁建模小组
– 分解应用程序
– 确定系统所面临的威胁
– 以风险递减的原则对威胁排序
– 选择应付威胁的方法
– 选择缓和威胁的技术
– 从确定下来的技术中选择适当的方法
• 威胁建模是设计安全信息系统的第一步,也是
最为重要的一环
27
威胁建模的迭代过程图解
28
威胁的分类 (Shirey)
• 泄密(Disclosure),也即未经授权的访问,
是对信息机密性的破坏;
• 欺骗(Deception),也即收到错误的数据;
• 拦截(Disruption),也即中断或者阻止正
确的操作;
• 篡改(Usurpation),也即非授权的控制系
统的某些部分。
29
安全策略
• 安全策略(Security Policy) 就是指定系
统允许或者禁止用户做什么的一种陈述
• 表述系统的安全策略
–自然语言
–数学表示
–安全策略语言
30
XACML
31
32
使用安全策略来定义安全
• 系统状态(System State)
–系统状态是指一个系统中所有的内存、外存、
寄存器和其它系统部件的当前值的一个集合
• 保护状态(Protection State)
–保护状态是系统状态中有关保护系统的内容的
一个子集
• ACM (Access Control Matrix)
–表示保护状态最为精确和常用的方法
33
ACM的表示
objects (entities)
su
bj
ec
ts
s1
s2
…
sn
o1 … om s1 … sn
34
ACM的例子 1
35
ACM例子2
• 进程 p, q
• 文件 f, g
• 权限 r, w, x, a, o
f g p q
p rwo r rwxo w
q a ro r rwxo
36
其它的策略表述
• Subject annie
– Attributes role (artist), groups (creative)
• Verb paint
– Default 0 (deny unless explicitly granted)
• Object picture
– Rule:
– paint: ‘artist’ in and
– ‘creative’ in and
– ≥ 0 and < 5
37
映射到ACM
… picture …
…
a
nn
ie
…
paint
At 3AM, time condition
met; ACM is:
… picture …
…
a
nn
ie
…
At 10AM, time condition
not met; ACM is:
38
状态迁移
• 改变系统的保护状态
• |– 代表迁移
– Xi |– Xi+1:命令 将系统从状态 Xi 迁移到 Xi+1
– Xi |– * Xi+1: 一组命令将系统从状态 Xi 迁移到 Xi+1
• 这些命令 () 经常叫转换过程 (transformation
procedures)
39
ACM的六个原子操作
• create subject s; create object o
– 在ACM中创建新的一行和一列;创建新的一列
• destroy subject s; destroy object o
– 在ACM中删除一行和一列;删除一列
• enter r into A[s, o]
– 在ACM单元格子中添加权限r
– delete r from A[s, o]
– 在ACM单元格子中删除权限r
40
Create Subject
• 前提: s S
• 原子命令: create subject s
• 结果:
– S = S { s }, O = O { s }
– (y O)[a[s, y] = ], (x S)[a[x, s]
= ]
– (x S)(y O)[a[x, y] = a[x, y]]
41
Create Object
• 前提: o O
• 原子命令: create object o
• 结果:
– S = S, O = O { o }
– (x S)[a[x, o] = ]
– (x S)(y O)[a[x, y] = a[x, y]]
42
Add Right
• 前提: s S, o O
• 原子命令: enter r into a[s, o]
• 结果:
– S = S, O = O
– (x S)(y O) [a[x, y] = a[x, y]]
– a[s, o] = a[s, o] { r }
43
Delete Right
• 前提: s S, o O
• 原子命令: delete r from a[s, o]
• 结果:
– S = S, O = O
– (x S)(y O) [a[x, y] = a[x, y]]
– a[s, o] = a[s, o] – { r }
44
Destroy Subject
• 前提: s S
• 原子命令: destroy subject s
• 结果:
– S = S – { s }, O = O – { s }
– (y O)[a[s, y] = ], (x S)[a´[x, s] =
]
– (x S)(y O) [a[x, y] = a[x, y]]
45
Destroy Object
• 前提: o O
• 原子命令: destroy object o
• 结果:
– S = S, O = O – { o }
– (x S)[a[x, o] = ]
– (x S)(y O) [a[x, y] = a[x, y]]
46
实际系统中ACM的例子-创建一个文件的命令
• 进程 p 创建一个文件 f 并赋予p以r 和 w 权
限
command create_file(p, f)
create object f;
enter own into A[p, f];
enter r into A[p, f];
enter w into A[p, f];
end
47
单调命令 (Mono-Operational Commands)
• 使得进程 p 成为文件g的owner
command make_owner(p, g)
enter own into A[p, g];
end
• 单调命令 (Mono-operational command)
–在命令中只有一个原子命令
48
条件命令
• 条件命令
command grant_read_file_1(p, f, q)
if own in A[p, f]
then
enter r into A[q, f];
end
• 单调条件命令
–在命令中只有一个条件
49
多条件命令
• 如果p是f的owner,并且p拥有q的copy权限,
那么让p赋给q以f的r和w的权限
• command grant_read_file_2(p, f, q)
if own in A[p, f] and c in A[p, q]
then
enter r into A[q, f];
enter w into A[q, f];
end
50
Copy权限
• 允许进程将权限赋给别人
• 经常作为一个附加给一个权限:
– r 是一个读权限,但不能被赋值
– rc 是一个都权限,可以被赋值
• 是否权限在赋给的时候,需要给出赋值标
识c?
–这取决于你的安全策略模型 (DAC)
51
Own权限
• 通常允许一个进程执行改变ACM内列中的
内容的一个权限
–一个对象的owner可以为其它用户添加、删除
该对象的权限
–但是也是需要依赖于系统的需求
• 不能将权限赋给某些人
• 不能将权限的copy标志赋给某些人
• 有些系统不允许owner具有如此功能 (MAC)
52
什么是 “Secure”?
• Adding a generic right r where there was
not one is “leaking”
• If a system S, beginning in initial state s0,
cannot leak right r, it is safe with respect to
the right r.
53
Safety问题
• 是否存在一个算法能够决定如下问题:针
对某个权限r,安全系统S从安全的初始状
态Sn开始一直是安全的。
54
单调命令
• 回答: yes
• 证明的思路:
Consider minimal sequence of commands c1,
…, ck to leak the right r.
– Can omit delete, destroy
– Can merge all creates into one
Worst case: insert every right into every entry;
with s subjects and o objects initially, and n
rights, upper bound is k ≤ n(s+1)(o+1)
55
通用问题
• 不能给出回答:It is un-decidable whether a
given state of a given protection system is safe
for a given generic right
• Proof: Reduction from halting problem
– Symbols, states rights
– Tape cell subject (can create new subjects)
– Right own: si owns si+1 for 1 ≤ i < k
– Cell si A si has A rights on itself
– Cell sk sk has end rights on itself
– State p, head at si si has p rights on itself
56
例子
A B C D … s1 s2 s3 s4
s1 A own
s2 B own
s3 C, p own
s4 D, end
MatrixTuring Machine
57
映射
A B X D …
1 2 3 4
head
s1 s2 s3 s4
s4
s3
s2
s1 A
B
X
D k1 end
own
own
own
After d(k, C) = (k1, X, R)
where k is the current
state and k1 the next state
58
命令
d(k, C) = (k1, X, R) at intermediate becomes
command ck,C(s3,s4)
if own in A[s3,s4] and k in A[s3,s3]
and C in A[s3,s3]
then
delete k from A[s3,s3];
delete C from A[s3,s3];
enter X into A[s3,s3];
enter k1 into A[s4,s4];
end
59
分析
• Halting problem Turing Machine: Symbols A, B;
states p, q
• Cp,A(si,si-1) (move left)
– if own a[si-1,si] and p a[si,si] and A a[si,si]
• Delete p from a[si,si], A from a[si,si]
• Enter B into a[si,si], q into a[si-1,si-1]
• Similar commands for move right, move right at
end of tape
• Simulates Turing machine
– Leaks halting state halting state in the matrix
Halting state reached
This is undecidable!
60
映射
A B X Y
1 2 3 4
head
s1 s2 s3 s4
s4
s3
s2
s1 A
B
X
Y
own
own
own
After d(k1, D) = (k2, Y, R)
where k1 is the current
state and k2 the next state
s5
s5
own
b k2 end
5
b
61
命令
d(k1, D) = (k2, Y, R) at end becomes
command crightmostk,C(s4,s5)
if end in A[s4,s4] and k1 in A[s4,s4]
and D in A[s4,s4]
then
delete end from A[s4,s4];
create subject s5;
enter own into A[s4,s5];
enter end into A[s5,s5];
delete k1 from A[s4,s4];
delete D from A[s4,s4];
enter Y into A[s4,s4];
enter k2 into A[s5,s5];
end
62
证明
• Protection system exactly simulates a TM
• If TM enters state qf, then right has leaked
• If safety question decidable, then
represent TM as above and determine if qf
leaks
– Implies halting problem decidable
• Conclusion: safety question undecidable
63
安全系统和不安全系统
• 安全策略(Security Policy) 是将系统分解成一组安
全(授权)的状态和不安全(授权)状态的一种陈述
• 安全系统(Secure System) 是指一个从安全(授权)
的状态出发,不会进入不安全(授权)的状态的系统。
安全 精确 交叉
系统可达状态
系统安全状态
64
机密性、完整性和有效性的定义
• 机密性(Confidentiality)
– 设X表示一组实体,I表示一些信息或者一个资源。如果
I相对于X具有机密性是指X中的任意成员不能够得到I中
的任何内容。
• 完整性(Integrity)
– 设X表示一组实体,I表示一些信息或者一个资源。如果
I相对于X具有完整性是指X中的所有成员都信任I中的内
容。
• 可用性(Availability)
– 设X表示一组实体,I表示一些信息或者一个资源。如果
I相对于X具有可用性是指X中的所有成员都可以访问I中
的内容。
65
安全机制
• 安全机制(Mechanism) 是一种执行安全策略
的方法、工具或者过程
• 信任和假设
– 信任是一切安全研究的基础。没有信任就不可能存在
实际的安全。
– 信任很多时候需要假设。这些假设可能没有经过严格
证明,但是的确实际存在。
– 上课的老师不是黑帮头目,没有怀揣枪支来上课;
– 上课的时候,你周围的同学不会恶意对你,不过在你背后捅刀
子;
– 教学楼的质量室过关的,不会出现天花板掉下来,或者脚下的
楼板开裂这样的问题;
– 你相信在宿舍楼里已经关好门,上好锁,看门的大爷大妈在兢
兢业业的工作,所以的寝室里的财物不会被人拿走;
– ……
66
安全机制的思考题
• 现有一份文档,安全策略是不允许id为weili
的用户查看该文档
–有哪些机制可以实现这个策略?
67
安全保障
• 有了目标和机制以后,关键在于如何执行
这些机制
–制定规范 (specification)
• 需求分析
• 目标功能表述
–设计系统 (Design)
• 设计系统以满足规范的需求
–执行系统 (Implementation)
• 执行系统以符合当初设计的目标
68
研究安全的方法学
Threats
Policy
Specification
Design
Implementation
Operation
69
运作问题
• Cost-Benefit分析
– 是否该保护更为便宜,但是已经达到保护要求
– 足够保护原理 (Principle of Adequate Protection): 计算
机单元得到的保护应该与它们的价值成正比。
• 风险分析 (Risk Analysis)
– 我们应该保护有些东西吗?
– 最容易侵入原理 (Principle of Easiest Penetration):必
须考虑到一个入侵者必然会利用所有可以利用的手段
去执行入侵。
• 法律和习惯
– 所有的安全手段是否合法?
– 人们是否愿意去执行它们?
70
人的因素
• 组织问题
–权力和责任
–经济利益
• 人员问题
–内部威胁还是外部威胁
• 哪个是你认为的真真的威胁
–社会工程
• 一种攻击手段,与人员的安全意识紧密相关
71
思考题-如何保护你的project
• 什么是你的project的安全性?
• 现有哪些威胁在影响你的project?
• 如何保护你的Project?
• 制定几条安全策略用以保护你的project?
这些策略够了吗?
• 如何执行上述安全策略?
• 如何解决相应的组织问题和工具问题?
• 有哪些运作问题存在?
• 有哪些人的问题存在?
72
信息系统安全攻击的概述
73
案例分析
• 2001年,《信息周刊》(Information Week)对4500个
安全专家进行了一个全球信息调查。作为调查的一部分,
要求回答者列出入侵者入侵其机构所使用的主要攻击方法
(允许多选)。
• 排在第一位的方法是利用操作系统的漏洞:大约三分之一
的回答者经历过这种攻击。接下来的流行方法是利用不为
人知的应用程序(占27%)。其它常见的攻击是猜口令
(占22%)、滥用合法用户的帐户或者许可(占17%)和
使用拒绝服务攻击(占12%)。
• 通常的思维总是认为针对公司网络或计算机的攻击,有五
分之四是由怀有恶意的内部员工所为,因为他们利用对系
统的熟悉来达到目的。这次的调查尝试确定这个“首要规
则”是否成立。事实上,利用网络应用程序的增长,现在
认为外部人士具有更大的威胁。Hulme指出“很多公司怀
疑黑客、恐怖分子(占46%)甚至一些消费者(占14%)
在试图攻击他们的系统”。美国计算机安全研究所和美国
联邦调查局出版的另外一份调查报告也证实了这种怀疑。
第二份报告指出几乎四分之三的企业认为因特网的攻击起
点,而只有三分之一的企业认为内部系统是攻击起点。
74
问题
• 漏洞最大的来源是什么?
• 攻击的最大来源是什么?
• 对企业系统的攻击点最大的来源是什么?
75
攻击方法的步骤
• 调查目标系统状况。
– 首先通过各种途径找到所需要攻击的信息系统的概况。包括了解信息系统的类
型、版本等信息,这样容易找到相关的资料调查目标系统的漏洞所在;
• 初始攻击。
– 找寻相关工具,或者编写相应脚本进行攻击。一般以尝试进入为这一阶段的第
一步。比如找到一个Guest帐号进入系统。这样有助于进一步获取系统信息,并
运行下一步的攻击程序;
• 提升权限。
– 在第二步的基础之上运行攻击程序,获得系统管理员或者希望得到的目标角色
的帐户;
• 掩盖攻击。
– 完成第三步的时候,并不表明攻击已经完成。这一步需要清除日志或者文件系
统的某些记录,不能让系统管理人员发觉攻击的痕迹;
• 修补相应的漏洞。
– 这一步是高级黑客常常讨论的问题。修补目标系统的漏洞的目的是要堵塞原先
的攻击路径,让其他黑客不能进入系统。否则有可能自己的攻击留下的特权帐
户被其他黑客杀档。因此,这一步是很重要的,但是修补漏洞很容易让系统管
理员发现攻击,比如重新启动等发生的时候,系统管理员会知道可能有攻击行
为的发生。因此如何在不让管理员察觉的情况下修补安全漏洞是高级黑客经常
讨论的话题。
76
攻击的分类
• 窃听(Snooping)
• 篡改(Modification or Alteration)
• 伪装或者哄骗(Masquerading or
Spoofing)
• 否认发送(Repudiation of Origin)
• 否认接受(Denial of receipt)
• 延迟(Delay)
• 拒绝服务(Denial of service)
77
中间人攻击
AliceAlice
BobBob和Alice交换密钥和Bob交换密钥
攻击者
78
直接型分布式拒绝服务攻击
79
反射型分布式拒绝服务攻击
80
如何进行防御
81
防御的方法论
82
攻击者的优势和防御者的劣势
• 因素#1:防御者必须对所有的环节进行防御,而攻击者
可以选择最薄弱的环节发起攻击。
– 城堡的防御和攻击点的选择
– 攻击者可以拿到你的软件,并只需要找出一个薄弱环节
• 因素#2:防御者只能针对已知的攻击进行防御,而攻击
者则可以探测未知的漏洞进行攻击
– 城堡中的古井和特洛伊木马的故事
– 软件在发布的时候,只能对已经建立的理论或者已经知道的攻击
手段进行有效防御。
– 对未知的攻击进行防御的唯一途径就是,如果用户不是明确要求
的某些功能,就禁止这些功能。
• 因素#3:防御者必须永远保持警戒,而攻击者可以以逸
待劳,随时发起攻击
• 因素#4:防御者的活动必须遵守相关的规则,而攻击者
可以采用一些卑鄙的、非法的手段
83
系统开发和程序员的视图
• 从系统开发和程序员的角度来看,构建一个安全的信息系
统是一个艰巨的任务。我们建议如下:
– 从开发的过程上保证。现代的开发过程多采用迭代式开发过程以
控制风险;
– 从软件体系结构上保证。采用合适的机制,包括认证、访问控制、
审计、加密/解密,用以保证系统的安全性;
– 从代码上保证。建立对等审查机制,提高代码的可读性和安全性。
使用合适的编译工具和代码检查工具,提高代码的健壮性;
– 提供有效的安全测试。安全测试是现代信息系统测试必不可少的
一部分。
– 从人员组织上保障.。进行定期培训,提高开发人员和程序员的安
全意识。设立安全部门,帮助系统开发和程序员提高系统和代码
的安全质量。
84
小结
• 安全的重要性
• 什么是安全
• 安全策略、安全机制和安全的方法学
• 攻击概述
• 防御
85