1、计算机网络,第八章 网络安全,什么是网络安全,网络安全从本质上说就是网络上的信息安全。 广义地说,凡是涉及网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论,都是网络安全要研究的领域。 网络安全的一个通用定义: 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠地正常运行,网络服务不中断。,主要内容,OSI安全体系结构 加密技术:加密算法,消息鉴别,数字签名 通信安全:IPSec,VPN,防火墙 鉴别服务:Kerberos,X.509 电子邮件安全:PGP,S/MIME Web安全:SSL/TLS,SET,1.
2、 OSI安全体系结构,安全攻击 任何损害信息安全的行为 安全机制 用于检测和预防安全攻击或从安全攻击中恢复的任何机制 安全服务 用于增强信息系统安全性及信息传输安全性的服务 安全服务使用一种或多种安全机制来提供服务,1.1 安全攻击,被动攻击: 试图从系统中获取信息,但不影响系统资源。 两种类型: 偷听:为了获得正在传输的内容。 流量分析:为了从通信频度、消息长度等流量模式来推断通信的性质。 对付被动攻击的最好方法是预防而不是检测,如可用加密来保护正在传输的信息,通过制造一些虚假的流量来防止流量分析。,安全攻击(续),主动攻击: 试图改变系统资源或影响系统的操作。 四种类型: 伪装:一个实体假
3、冒另一个实体。 重放:从网络中被动地获取一个数据单元,经过一段时间后重新发送到网络中。 消息修改:改变消息的部分内容、推迟发送消息或改变消息的发送顺序。 拒绝服务:阻止通信设施的正常使用或管理。 对付主动攻击的主要方法是检测攻击,然后设法从攻击造成的破坏中恢复。,1.2 安全服务,鉴别:证实通信过程涉及的另一方确实具有他们所声称的身份,确保通信是可信的。 对等实体鉴别:在连接建立及数据传输阶段对对等实体的身份进行证实。 数据起源鉴别:在通信实体之间没有预先交互的应用中提供对消息起源的证实。 访问控制:限制和控制通过通信链路对主机系统和应用访问的能力。 数据机密性:保护被传输的数据免遭被动攻击。
4、 连接机密性:保护在一条连接上传输的所有用户数据 。 无连接机密性:保护在一个数据块中的所有用户数据。 选择域机密性:保护一个连接或一个数据块中用户数据的某些域。 通信流量机密性:保护可从通信流量中观察到的信息。,安全服务(续),数据完整性:令接收方确信收到的消息与最初发出的消息是完全一样的。 有恢复机制的连接完整性:提供对一个连接上所有用户数据的完整性保护,并试图从数据完整性被破坏的状态中恢复。 无恢复机制的连接完整性:提供对一个连接上所有用户数据的完整性保护,没有恢复措施。 选择域连接完整性:提供对一个连接上用户数据中某些域的完整性保护。 无连接完整性:提供对一个无连接数据块的完整性保护。
5、 选择域无连接完整性:提供对一个无连接数据块中某些域的完整性保护。,安全服务(续),不可否认性:防止发送方或接收方否认已发送或已接收了一个消息的事实。 源不可否认性:证明消息由声称的发送者发送。 目的不可否认性:证明消息已被指定的接收者接收。 可用性: X.800将可用性定义为系统或系统资源可被授权实体访问和使用的特性,是与多种安全服务相关联的特性。 也有人认为应专门定义一种可用性服务,该服务解决由拒绝服务攻击引起的安全问题。 可用性服务要依靠适当的系统资源管理和控制,因而依赖于访问控制服务和其它安全服务。,安全服务与安全攻击之间的关系,1.3 安全机制,特定安全机制,在某一个特定协议层中实现
6、: 加密:使用数学算法对数据进行变换,使其不易理解。 数字签名:附加在一个数据单元后面的数据,用来证明数据单元的起源及完整性,以防伪造。 访问控制:各种实施访问授权的机制。 数据完整性:用于保护数据单元或数据单元流完整性的各种机制。 鉴别交换:通过信息交换确信一个实体身份的机制。 流量填充:在数据流间隙中插入比特,以挫败流量分析的企图。 选路控制:允许为某些数据选择特定的物理安全路由。 公证:使用一个可信的第三方来确保数据交换的某些特性。,安全机制(续),普遍安全机制,不限于特定的安全服务或协议层次: 可信功能性:根据某个安全标准被认为是正确的功能。 安全标签:与资源绑定、用于指定该资源安全属
7、性的一个标记。 事件检测:安全相关事件的检测。 安全审计:对系统记录和行为进行独立回顾和检查。 安全恢复:处理来自安全机制的请求,并采取恢复行动。,安全服务和安全机制之间的关系,2. 加密技术,加密模型 密码学的基本原则:必须假设破译者知道加密与解密的方法。因而算法是稳定和公开的,只有密钥是保密的。 密码分析问题的三种主要变形: 只有密文问题:只有密文而无相匹配的明文。破译困难,但事实上破译者会知道比密文本身更多的信息。 已知明文问题:拥有一批相匹配的明文和密文对,可能推断出加密密钥。 选择明文问题:破译者能够加密自己选择的任何明文,然后和截获的密文进行对比以猜测密钥。,加密模型,加密算法的安
8、全性,一个真正安全的加密算法应能经得起“选择明文”攻击。 一个加密算法被称为是计算安全的,如果由该算法产生的密文满足以下两个条件之一: 破译密文的代价超过信息本身的价值 破译密文所需的时间超过信息的有效生命期 现代密码学中,密码的安全性是通过算法的复杂性和密钥的长度来保证的。,加密算法的分类,依据加密密钥与解密密钥是否相同,分为: 对称加密算法:加密密钥与解密密钥相同,解密算法是加密算法的逆过程。也称秘密密钥算法或常规加密算法。 非对称加密算法:加密密钥与解密密钥不同,且从加密密钥无法推出解密密钥,因此加密密钥是公开的。也称公开密钥算法。 依据明文被处理的方式,分为: 块加密:每次处理一个明文
9、块,生成相同长度的密文块。 流加密:处理连续输入的明文流,生成连续输出的密文流。,2.1 秘密密钥算法,最经典的秘密密钥算法是DES: DES是一种块加密算法,每次处理64比特的明文块,输出64比特的密文块。 算法使用一个56比特的主密钥,包括16次迭代过程,每次迭代使用一个不同的48比特子密钥,子密钥从主密钥中生成。 DES加密和解密使用相同的算法,两者的不同只是子密钥的次序刚好相反。 DES的缺点:密钥长度不够长,迭代次数不够多。,DES处理过程,三重DES,三重DES使用两个密钥进行三轮DES计算。 为什么只使用两个密钥:112比特的密钥已经足够长。 为什么不使用双重DES:为了避免中途
10、攻击。 考虑采用EE模式的两重DES,且攻击者已经拥有了一个匹配的明文密文对(P1,C1),则有C1EK2(EK1(P1)。令XEK1(P1)DK2(C1),攻击者分别计算EK1(P1)和DK2(C1),并寻找使它们相等的K1和K2,则穷尽整个密钥空间只需256的攻击量而不是2112。 为什么是EDE而不是EEE:为了与单次DES兼容,三重DES用户解密单次DES用户加密的数据,只需令K1K2就行了。,三重DES图示,2.2 公开密钥算法,使用对称密钥算法的前提是必须可靠地分发秘密密钥,这是一个难题,公开密钥算法试图避开这个难题。 基本思想:采用不同的加密密钥与解密密钥,且从加密密钥推导不出解
11、密密钥,因此可将加密密钥公开发布。 公开密钥算法必须满足的条件: 从计算上说,生成一对加密密钥和解密密钥是容易的。 从计算上说,已知加密密钥,从明文计算出密文是容易的。 从计算上说,已知解密密钥,从密文计算出明文是容易的。 从计算上说,从加密密钥推出解密密钥是不可能的。 从计算上说,从加密密钥和密文计算出原始明文是不可能的。,公开密钥算法的使用,加密和解密: 每个希望接收秘密报文的用户生成一对加密密钥和解密密钥,并将加密密钥放在一个公开的文件中发布。 当A希望向B发送一个加密报文P时,A从公开的文件中查到B的加密密钥,用B的加密密钥加密报文P,发送给B。 B用自己的解密密钥解密报文。 公开密钥
12、和私有密钥: 公开密钥:即加密密钥,由其他人用来发送加密信息。 私有密钥:即解密密钥,用来解密消息。,RSA算法,密钥计算: 选择两个大素数和(典型值为大于10100) 计算 npq 和 z(p-1) (q-1) 选择一个与 z 互质的数,令其为 d 找到一个 e 使满足 ed1 (mod z) 公开密钥为 (e,n),私有密钥为 (d,n) 加密方法: 将明文看成一个比特串,将其划分成若干个数据块P,并有0Pn 。对每个数据块P,计算CPe (mod n)。 解密方法: 对每个密文块C,计算PCd (mod n) 。,RSA算法示例,密钥计算: 取p3,q11 则有n33,z20 7和20没
13、有公因子,可取d7 解方程7e1(mod 20),得到e3 公钥为(3, 33),私钥为(7, 33 加密: 若明文为M4,则密文CMe (mod n)43 (mod 33)31。 解密: 计算MCd (mod n)317(mod 33)4,恢复出原文。,2.3 消息鉴别,一个消息被称为是可信的,如果它是真实的并且来自声称的源。 消息鉴别:允许通信各方检验收到的消息是否可信的过程。 消息鉴别涉及两个方面: 数据起源鉴别 数据完整性检查 将消息鉴别与数据保密相分离: 发送者用明文发送消息,并在消息后面附上一个标签,允许接收者利用这个标签来鉴别消息的真伪。,消息鉴别的实现,消息鉴别标签必须能够验证
14、消息的完整性,并且是可信的,即不可能被伪造。 消息的完整性可用消息的数字指纹(消息摘要)来保护: 将一个散列函数作用到一个任意长的消息m上,生成一个固定长度的散列值H(m),这个散列值称为消息摘要(MD)。 生成消息鉴别标签的三种方法: 发送方先计算报文的消息摘要,然后用与接收方共享的秘密密钥加密消息摘要,形成消息鉴别标签。 发送方先计算报文的消息摘要,然后用发送方的私钥加密消息摘要。(这实际上是数字签名) 发送方用一个加密散列函数(cryptographic hash function)来计算消息摘要,即MD=H(KAB|m)。,散列函数的特性,用于消息鉴别的散列函数H必须满足以下特性: H
15、能够作用于任意长度的数据块,并生成固定长度的输出。 对于任意给定的数据块x,H(x)很容易计算。 对于任意给定的值h,要找到一个x满足H(x)=h,在计算上是不可能的。(单向性) 对于任意给定的数据块x,要找到一个yx并满足H(y)=H(x),在计算上是不可能的。 要找到一对(x, y)满足H(y)=H(x),在计算上是不可能的。 满足前四个特性的散列函数称为弱散列函数,满足所有五个特性的散列函数称为强散列函数。,散列函数标准,目前使用最多的两种散列函数是: MD5:接受任意长度的消息作为输入,输出128比特的消息摘要;安全性较弱。 SHA-1:接受长度不超过264比特的输入消息,输出长度为1
16、60比特的消息摘要;安全性较MD5高。 目前获得最多支持的加密散列函数方案为HMAC,已应用到许多安全协议中。,2.4 数字签名,一个替代手写签名的数字签名必须满足以下三个条件: 接收方通过文件中的签名能够鉴别发送方的身份。 发送方过后不能否认发送过签名的文件。 接收方不可能伪造文件的内容。 基于报文加密进行鉴别 发送方用自已的私钥及发送方的公钥加密整个报文。 对公开密钥算法的额外要求是,必须满足 E(D(P)P。 将鉴别和数据保密相分离: 发送方先计算报文的消息摘要,然后用自己的私钥加密消息摘要,形成数字签名。,基于报文加密进行鉴别,典型的数字签名方法,3. 通信安全,IP安全协议(IPSe
17、c) 虚拟专用网VPN 防火墙,3.1 IP安全协议,IPSec是指IETF以RFC形式公布的一组安全IP协议集。 IPSec提供了一个用于集成多种安全服务、加密算法及安全控制粒度的安全体系结构框架; IPSec提供的安全服务主要包括访问控制、无连接完整性、数据起源认证、抗重放攻击、机密性等;安全服务全都基于对称密钥加密以获得高性能。 IPSec的安全机制都是独立于算法的,这样在选择和改变算法时不会影响其它部分的实现。 IPSec提供多种安全控制粒度:一条TCP连接上的通信,一对主机间的通信,一对安全路由器之间的所有通信。,IPSec的组成,从技术上说,IPSec主要包括两个部分: IPSec
18、安全协议:包括AH和ESP两个安全协议,定义了用于安全通信的IP扩展头和字段以提供机密性、完整性和源鉴别服务。 密钥管理协议IKE:定义了通信实体间进行身份鉴别、协商加密算法以及生成共享会话密钥的方法。 将以上两部分绑定在一起的是称为安全关联(SA)的抽象。,安全关联SA,SA是通信对等实体之间对某些要素的协定,如使用的安全协议、协议的操作模式、使用的密码算法、密钥及密钥的生存期等。 SA是两个通信端点间的一个单工连接,由一个安全参数索引(SPI)唯一标识,如果在两个方向都需要安全通信,则需要建立两个SA。SPI携带在数据包中,由数据包的处理进程用来查找密钥及相关信息。 SA可以建立在一对主机
19、之间、一台主机与一个安全网关之间、或一对安全网关之间。,IPSec的使用模式,传输模式:IPSec头被插入到原始IP头和传输层头之间,因特网中的路由器根据原始IP头转发分组。 隧道模式:整个原始数据包被封装在一个新的IP包中,IPSec头被放在新的IP头和原始IP头之间,因特网中的路由器根据外层IP头的信息转发分组。隧道的端点(外层IP头中的地址)通常是一个支持IPSec的安全网关。 两种模式的比较: 传输模式比隧道模式占用较少的带宽; 隧道模式可隐藏内部网络的细节;内部网络上的主机可以不运行IPSec,它们的安全性由安全网关来保证;隧道模式也可将一束TCP连接聚合成一个加密流,从而有效地防止
20、入侵者进行流量分析。,IPSec的使用模式图示,鉴别头部协议AH,AH头结构:,AH提供的服务,AH提供无连接完整性、数据起源认证和抗重放攻击,但不提供机密性服务。 HMAC覆盖数据包的载荷部分,因而可提供无连接完整性服务。 AH中有序号,且被HMAC覆盖,因而可抵抗重放攻击。 HMAC覆盖原始IP头中的不变域(传输模式)或整个原始IP头(隧道模式),因而可提供数据起源认证。,封装安全载荷协议ESP,ESP数据包结构:,ESP在传输模式和隧道模式中的位置,ESP提供的服务,ESP提供数据机密性、无连接完整性、抗重放攻击、数据起源鉴别和有限的数据流机密性服务。 原始数据包的载荷部分被加密,因而可
21、提供数据机密性服务。 HMAC覆盖数据包的载荷部分,因而可提供无连接完整性服务。 ESP头中有序号,且被HMAC覆盖,因而可以抵抗重放攻击。 ESP隧道模式中,原始IP头也被HMAC覆盖,因此ESP隧道模式可提供数据起源鉴别。 ESP隧道模式中,原始IP头也被加密,因特网中的路由器只能看到外层IP头,因而ESP隧道模式可提供数据流机密性服务。 ESP隧道模式下鉴别和加密服务所提供的安全性强于ESP传输模式;ESP传输模式下鉴别服务所提供的安全性不如AH传输模式。,3.2 虚拟专用网VPN,专用网: 通过电信专线将分散在各地的计算机(网络)连接而成的网络。 安全性好,但代价高。 虚拟专用网: 建
22、立在公用网上的一个覆盖网络(overlay),具有专用网的大部分特性。,专用网和虚拟专用网,虚拟专用网的实现,VPN的典型结构: 在每个局域网上设置一个安全网关,在每一对安全网关间创建一条穿过因特网的隧道,在隧道中使用IPSec。 系统建立时,每一对安全网关协商它们的SA参数,此后在它们之间传输的数据流就被绑定到这个SA上。 VPN的优点: 可以在一对局域网间提供完整性控制及机密性服务,甚至对流量分析也有相当的抵御能力。 对因特网中的路由器及用户软件是透明的,只要系统管理员设置好安全网关就可以了,安全网关会自动建立和管理SA。 防火墙、VPN和IPSec(特别是隧道模式下的ESP)是实践中最常
23、见的组合。,3.3 防火墙,防火墙:在可信的内部网络(专用网络)与不可信的外部网络(公用网络)之间执行访问控制策略的一个或一组系统(包括硬件和软件),目的是保护内部网络免受来自外部网络的攻击。 从本质上说 ,防火墙提供可控的通信过滤服务。 防火墙的设计目标: 所有进出网络的流量必须通过防火墙 只允许合法的流量通过防火墙 从理论上说,防火墙是穿不透的。,防火墙的典型结构,由两个分组过滤路由器和一个应用网关组成: 分组过滤路由器:利用 IP头及传输层报头的某些域过滤分组。 应用网关:根据应用层的信息(应用层协议的域、报文内容等)过滤分组。 两个分组过滤路由器分别位于外网和内网上并通过应用网关相连,
24、迫使每个分组必须通过应用网关的检查。 应用网关通常运行在一个独立的计算机系统(称堡垒主机)上,堡垒主机必须是非常安全的。,防火墙典型结构,防火墙的基本机制,分组过滤: 分组过滤路由器按照配置的访问控制列表(ACL)转发或丢弃分组。 分组过滤通常基于分组的以下域进行:源/目的IP地址,源/目的传输层端口,协议字段。 优点:运行速度快。 缺点: 控制粒度粗,无法基于用户的身份或消息的内容进行过滤。 内部主机地址暴露。,防火墙的基本机制(续),应用代理: 代理是运行在堡垒主机上的特定应用程序或服务程序,其作用是在用户与外部服务器之间中继应用层流量。 用户并不与外部服务器建立直接的TCP连接,用户只与
25、堡垒主机建立连接,而堡垒主机与外部服务器建立连接。 优点: 外部服务器只能看到堡垒主机,内部网络细节对外是完全屏蔽的。 能够实现基于用户身份的流量过滤。 能够实现基于内容的过滤。 内部网络可以使用私有地址,只要几个公共可访问的服务器使用公共地址即可。 缺点:必须为每一个支持的应用安装代理,每一个应用会话都必须被代理,处理开销大,对网络速度的影响较大。,防火墙的局限性,防火墙不能抵抗以下攻击: 伪造数据包的源地址,以逃过地址过滤。 对文件进行加密或将文件扫描成JPEG文件,以逃过字符过滤器的检查。 来自防火墙内部的攻击。 拒绝服务(DoS)攻击 ,4. 鉴别服务,鉴别:用来验证通信对方身份的一种
26、技术。 鉴别协议:通过一系列的消息交换确认通信双方的身份,并建立起会话密钥。 两个重要的鉴别标准: Kerberos:基于对称密码技术的鉴别协议,目前已获得广泛支持并用于许多系统中; X.509鉴别服务:基于公钥加密技术的鉴别服务。,4.1 Kerberos,Kerberos要解决的问题: 在一个开放的分布式环境中,工作站用户要访问分布在网络中的应用服务器,我们希望应用服务器只被授权用户访问。 Kerberos的解决方案: 为减轻应用服务器的负担,Kerberos提供一种集中式的鉴别服务,由网络中的一台或几台鉴别服务器专门为用户和服务器提供双向鉴别服务。,一个简单的鉴别方案,一个鉴别服务器(称
27、为AS)知道网络中所有用户的口令,并将这些口令保存在一个集中式的数据库中。 AS与每个应用服务器有一个不同的共享密钥,这些密钥已通过某种安全方式分发到每一个服务器上。 用户在工作站上向服务器V请求服务,以下是一个简单的鉴别过程:(1) CAS:IDC | PasswordC | IDV (2) ASC:Ticket;Ticket = EKv IDC | ADC | IDV(3) CV: IDC | Ticket 以上鉴别方案的缺点: 每请求一次服务就要输入一次口令,以获得一个票据. 用户口令用明文发送,不安全。,一个更安全的鉴别方案,引入一个授予票据服务器TGS,专为那些经过AS鉴别的用户签发
28、票据。 客户进程首先为用户向AS请求一个准予票据的票据Tickettgs,并将得到的Tickettgs保存在本地。 每当用户请求一个新的服务时,客户进程为用户向TGS请求一个访问该服务的票据,Tickettgs被客户进程用来向TGS表明用户的身份。 TGS为用户签发一个访问特定服务器的票据,客户进程将每个准予服务票据保存在本地。 每当用户请求一个特定服务时,客户进程用相应的准予服务票据向服务器发出请求。,一个更安全的鉴别方案(续),用户每次登录时执行(1)和(2)(1)CAS:IDC | IDtgs(2)ASC:EKc Tickettgs; Tickettgs = EKtgs IDC | AD
29、C | IDtgs| TS1| Lifetime1 用户每次请求一种新的服务时执行(3)和(4)(3) CTGS: IDC | IDV | Tickettgs(4)TGSC:Ticketv;Ticketv = EKv IDC | ADC | IDV | TS2| Lifetime2 用户每次请求一个服务时,执行(5)(5)CV: IDC | Ticketv 问题: Tickettgs及Ticketv中的生存期设置多长? 用户可能也需要鉴别服务器。,Kerberos V4的鉴别过程,鉴别服务交换:获取Tickettgs(1) CAS:IDC | IDtgs | TS1(2) ASC:EKc Kc
30、,tgs | IDtgs | TS2 | Lifetime2 | TickettgsTickettgs = EKtgs Kc,tgs | IDC | ADC | IDtgs | TS2| Lifetime2 授予票据服务交换:获取TicketV(3) CTGS:IDv | Tickettgs | AuthenticatorCAuthenticatorc = EKc,tgs IDC | ADC | TS3 (4) TGSC:EKc,tgs KC,V | IDv | TS4 | TicketvTicketV= EKv KC,V | IDC | ADC | IDv | TS4| Lifetime4
31、客户/服务器鉴别交换:获得服务(5) CV:TicketV | Authenticatorc(6) VC:EKc,v TS5 + 1 (用于相互鉴别)Authenticatorc = EKc,v IDc | ADC | TS5,Kerberos v4鉴别过程示意图,Kerberos域,Kerberos域是由一个Kerberos服务器、许多应用服务器和许多客户组成的一个全服务Kerberos环境,且满足以下两个条件: Kerberos服务器的数据库中有所有用户的ID和(散列的)口令,所有用户都向Kerberos服务器注册; Kerberos服务器与每个应用服务器有一个共享的密钥,所有应用服务器都
32、向Kerberos服务器注册。 Kerberos提供了一种支持域之间鉴别的机制,两个支持域间鉴别的域必须满足第3个条件: 每个互操作域中的Kerberos服务器必须与另一个域中的Kerberos服务器共享一个密钥;两个Kerberos服务器相互注册。,Kerberos域之间的鉴别过程,4.2 X.509,公开密钥体系避免了密钥分发的问题,但却需要解决另一个困难的问题,即如何可靠地发布公钥。 证书被用来证明某个主体拥有某个公钥,颁发证书的机构称为认证权威CA。X.509是国际电信联盟推出的一个建议,它定义了证书的结构和基于公钥证书的鉴别协议。 X.509建立在公开密钥算法和数字签名的基础上,数字
33、签名方案要求先使用一个散列函数。,X.509证书,证书的主要作用是将一个公钥绑定到一个主体的名字上。 证书包含主体的公钥,并由一个可信任的CA签名,任何人无法篡改证书的内容,因而可将证书放在任何可公开访问的地方。 证书还可以将一个公钥绑定到一个属性上,在安全控制中常常基于属性而不是单个的主体授予对资源的访问权限。 对证书持有者的鉴别: 随机选取一个大数,用证书中的公钥加密后发送给请求者。 请求者用私钥解密后将这个随机数返回。 检查这两个数是否相同,相同则说明请求者拥有这个证书。,X.509证书格式,公钥证书的验证,为验证公钥证书的真实性: 用CA的公钥解开证书的签名,得到证书内容的消息摘要。
34、对收到的证书内容计算消息摘要,并与解密得到的消息摘要进行比较,两者相同表明这是合法的公钥证书。,公钥基础设施PKI,PKI由用户、CA、证书和目录等要素组成,提供了一种组织这些要素的方法,并为各种文档和协议制订标准。 PKI的最简单形式是分级CA结构。,PKI(续),信任链(证书路径):从叶结点到根CA的证书系列。 信任锚:信任的始点,系统中所有实体都以根CA的公钥作为信任锚,信任锚必须通过安全的带外方式来安装。 谁可以运行根CA:实践中采用分布式信任结构,用户可以自行决定信任哪个根CA,所有根CA进行交叉认证。 证书存放在哪里:使用DNS作为证书目录,或使用专门的目录服务器存放证书。 每个证
35、书都有有效期,过期后自动失效;CA也可以显式地撤销证书。,X.509鉴别服务,单向鉴别(one-way authentication) 涉及一个用户到另一个用户的一次消息传输,只鉴别发送者身份:AB:tA |rA| IDB | sgnData | EKUbKab | signatureA 双向鉴别(two-way authentication) 允许通信的双方相互鉴别:AB:tA | rA | IDB | sgnData | EKUb Kab | signatureABA:tB | rB | IDA | rA| sgnData | EKUaKba | signatureB三向鉴别(three-
36、way authentication)AB:tA | rA | IDB | sgnData | EKUb Kab | signatureABA:tB | rB | IDA | rA| sgnData | EKUaKba | signatureBAB:rB | signatureA,5. 电子邮件安全,电子邮件的安全包括真实性和机密性两个方面。 目前最流行的两个安全电子邮件协议: PGP:一个开放源码的安全电子邮件软件包,提供对邮件的保密、鉴别、数字签名和压缩服务;PGP较多地用于个人电子邮件安全。 S/MIME:基于公钥加密技术对MIME所做的安全扩充;S/MIME较可能作为一种工业标准被商业
37、组织或一些机构使用。,5.1 Pretty Good Privacy(PGP),PGP提供五种服务: 鉴别,机密性,压缩,兼容电子邮件,分段 鉴别: PGP使用基于公开密钥的数字签名提供鉴别服务. 过程: 发送方创建电子邮件(消息); 用SHA-1计算邮件的消息摘要,然后用发送者的私钥加密消息摘要,形成数字签名; 将数字签名附在消息的前面,与消息一起发送: Sgn | Data PGP支持签名与消息的分离。,PGP的机密性服务,机密性: PGP使用对称密钥算法保护邮件的机密性,一次性会话密钥用接收方的公钥加密后,与消息一起发送给接收方。 仅使用机密性服务的过程: 发送方A生成一个消息和一个随机
38、的128比特数(会话密钥); 先用会话密钥加密消息,再用接收方B的公钥加密会话密钥; 将加密后的会话密钥放在消息前面,与消息一起发送:EKUb(KAB) | EKAB(Data) 同时使用鉴别和机密性服务的过程: 发送方对明文消息计算一个签名,将签名加在消息的前面; 用会话密钥对签名和明文消息一起加密; 用接收方的公钥加密会话密钥,放在消息的前面。EKUb(KAB) | EKAB (Sgn | Data),PGP的压缩服务,压缩 缺省地,PGP在完成签名之后、在加密消息之前对消息进行压缩,压缩算法采用ZIP:EKUb(KAB) | EKAB (Zip (Sgn | Data) 在压缩消息之前计
39、算数字签名,是为了方便日后对消息的验证。 在加密消息之前进行压缩,一方面可以减少要加密的数据量,另一方面压缩后的消息冗余很少,增加密码分析的困难。,PGP的兼容电子邮件服务,兼容电子邮件 PGP使用基64编码将二进制数据流转换成可打印ASCII文本,以解决邮件的传输问题。 PGP可被配置为仅对消息中的某些部分(如签名部分)进行基64编码转换。 使用前面4种服务的消息处理过程: 发送方先对明文消息计算一个签名,将签名放在消息前面; 签名与明文一起被压缩; 用会话密钥对压缩后的数据块进行加密; 用接收方的公钥加密会话密钥,放在消息的前面; 将整个数据块转换成基64编码格式。EncodeBase64
40、(EKUb(KAB) | EKAB (Zip (Sgn | Data),PGP的邮件分段服务,分段 许多电子邮件系统能够接收的最大消息长度不超过50,000字节。 PGP在完成对消息的全部处理后,自动将超过长度的消息分成小块传输,会话密钥和签名只在第一个片段中出现。 接收端去掉每个片段的信头,然后将所有的片段重新组装成一个数据块。,PGP的密钥管理,PGP使用4种密钥:一次性会话密钥,公开密钥,私有密钥,基于短语的对称密钥。 对密钥的要求: 一次性会话密钥必须是不可预测的。 用户可以同时拥有多个公钥/私钥对,因而需要有一种方法来标识不同的密钥。 每个PGP实体必须维护两个文件,一个文件保存自己
41、的公钥/密钥对,另一个文件保存它所知道的所有其他人的公钥。,一次性会话密钥的产生,以CAST-128加密算法为例,会议密钥的产生过程如下: 将一个128比特的密钥和两个64比特的数据块输入一个随机数生成器,这两个64比特的数据块作为明文被加密,生成的两个64比特密文块串接在一起形成128比特的会话密钥。 作为明文的128比特数据来自用户键盘输入产生的随机数流(击键的时间及键值被用来产生这些随机数)。 这个随机输入与CAST-128前一次输出的会话密钥相结合,形成随机数生成器使用的加密密钥。,密钥标识,PGP用公钥的最低64比特作为公钥的ID,用户ID和密钥ID(几乎)可以唯一地标识一个密钥。
42、实际上,消息的签名部分包括4个字段: 生成签名的时间戳 数字签名 消息摘要的前两个字节 发送者公钥的ID 消息的会话密钥也包含2个字段: 用接收者公钥加密的会话密钥 接收者公钥的ID,密钥环,PGP在每个节点上用私钥环和公钥环来保存密钥。 私钥环 用于保存用户自己的公钥/私钥对,由用户ID或密钥ID索引。 私钥是用CAST-128(或IDEA,3DES)加密后再放入私钥环的: 用户选择一个用于加密私钥的短语 当系统生成一个公钥/私钥对时,要求用户输入一个短语,然后用SHA-1得到该短语的散列码(160比特),将短语丢弃。 系统用散列码中的128比特作为密钥,采用CAST-128算法对私钥进行加
43、密,然后将散列码丢弃。 当用户想从密钥环获取一个私钥时,他必须提供相应的短语。PGP计算短语的散列码,从中得到密钥,然后解密私钥。 公钥环 用于保存其他用户的公钥,由用户ID或密钥ID索引。 每一项对应一个公钥证书,包括公钥信息和公钥管理信息。,公钥管理,PGP使用以用户为中心的信任管理模型: 依靠用户产生并分发他们的公钥, 用户之间相互签发证书,一个用户可以让多人为他签发证书。 用户根据自己对证书签发者的信任程度来决定是否信任该证书。 公钥环中的每个表项包括密钥合法性、证书签名、 签名信任、拥有者信任等字段: 密钥合法性:指示PGP信任该公钥的程度,从该表项的签名信任集合计算得到。 签名信任
44、:每个证书签名与一个签名信任关联,表示PGP用户信任签名者对该公钥签名的程度。 拥有者信任:表示PGP用户对该公钥的持有者(即用户ID)对其它公钥所签名的信任程度,该值由PGP用户指定。,信任计算,当用户将一个新的公钥加入公钥环时,PGP为该表项的拥有者信任字段指定一个值,如 “最大信任” 、“用户未知”、“通常不信任”、“通常信任”、“总是信任”等。 当将一个签名加入表项时,PGP搜索公钥环;若是某个已知公钥持有者的签名,其签名信任值就是签名者的拥有者信任值,否则签名信任值为“未知用户”。 根据表项的签名信任集合计算密钥合法性 如果签名集中至少有一个签名的签名信任值为“最大信任”,则密钥合法
45、性为“完全可信”。 否则,PGP计算所有签名信任值的一个加权和;如果所有签名信任的加权和达到1,设置密钥合法性为“完全可信”。,公钥环维护,公钥环维护是一个从上到下的过程: PGP检查每个公钥的拥有者信任字段,从拥有最大信任的公钥开始,扫描整个公钥环寻找选定公钥的拥有者的签名。 将该公钥的每个签名的签名信任值更新为其拥有者信任值。 当公钥环中所有的签名信任字段都更新完成后,重新计算所有公钥的密钥合法性。,公钥撤销,公钥拥有者发布一个带有自己签名的公钥撤销证书,然后在尽可能大的范围内尽可能快地分发这个证书。 撤销公钥是整个系统最薄弱的环节。由于公钥的分发及公钥撤销证书的分发都是非正式的,因此不能
46、保证知道这个公钥的用户都能及时收到公钥撤销证书。 由于公钥撤销证书需要用户的签名,如果用户丢失了自己的私钥,则无法撤销公钥。,5.2 Secure/MIME,S/MIME提供以下功能: 数据加密(enveloped data):对消息内容及加密内容所用的加密密钥进行加密。 数据签名(signed data):对消息内容计算消息摘要,用发送者的私钥加密消息摘要,最后对内容和签名采用基64编码进行转换。 清晰的数据签名(clear-signed data):与signed data不同的是,只对数字签名使用基64编码。 数据签名和加密(signed and enveloped data):加密的数
47、据可以被签名,签名或清晰签名的数据可以被加密。 S/MIME定义了几种新的MIME内容类型: EnvelopedData,SignedData,Dlear Signing,Registration Request,Certificates-Only Message,S/MIME使用的算法,公开密钥算法 DSS(Digital Signature Standard):首选的数字签名算法。 Diffie-Hellman:首选的用于加密会话密钥的算法。 RSA:既可用于数字签名,也可用于加密会话密钥。 散列函数: 要求使用SHA-1。 推荐接收方支持MD5以与较早版本的S/MIME兼容。 数据加密算
48、法: 建议使用3DES。 遵从美国出口控制的S/MIME实现必须支持40比特的RC2。,加密算法的协商,发送代理按照优先级从高到低的顺序通报它的解密能力(支持的加密算法),接收代理保存这些信息供日后使用。 发送代理按照以下顺序与原则进行决策: 如果发送代理有接收代理的解密能力表,应当选择列表中它能够使用的最高选择。 如果没有接收代理的解密能力表,但从接收方收到过一个或多个消息,则输出消息应使用最近一次收到的被签名和加密的消息中所用的加密算法。 如果不知道接收代理的解密能力,但愿意承担接收代理可能无法解密消息的风险,应当使用3DES。 如果不知道接收代理的解密能力,并且不愿意承担接收代理可能无法
49、解密消息的风险,必须使用RC2/40。,S/MIME的公钥管理,S/MIME使用符合X.509v3标准的公钥证书。 S/MIME的公钥管理方案介于严格的X.509证书等级和PGP的信任网络之间: 和PGP类似,S/MIME管理员(或用户)必须为每个客户配置一个可信任的公钥列表和证书撤销表,也就是说维护公钥证书的责任在本地。 和PGP不同的是,S/MIME的公钥证书由认证权威签发。,6. Web安全,针对Web应用的安全攻击,按照主动攻击与被动攻击分类: 被动攻击:监听浏览器与服务器之间的网络流量。 主动攻击:假冒他人,修改网络中传输的数据,修改网站上的信息等。 按照攻击发生的位置分为: 针对Web服务器的攻击 针对Web浏览器的攻击 针对浏览器与服务器之间的网络流量的攻击,提供Web安全的方法,6.1 SSL/TLS,SSL依靠TCP提供可靠的端到端连接。 SSL涉及到两个层次的一组协议: SSL记录协议:为各种高层协议(如HTTP)提供基本的安全服务。 其它三个高层协议:用于SSL交换管理。,