820 likes | 956 Views
第四章 电子商务的安全认证体系. 本章主要内容 4.1 身份认证与认证体系 4.2 身份认证协议 4.3 数字证书与认证机构 4.4 安全认证体系及其实施标准 本章要点 身份认证的几个重要的基本概念:认证、授权、审计 身份认证的分类以及体系 身份认证的常用协议 数字证书的基本概念、功能、认证机构 PKI 的体系结构、特性、功能. § 4.1 身份认证与认证体系. 本节的主要内容 身份认证的概念 身份认证的分类 身份认证体系. 现代密码的两个重要的分支 加密 防止对方获得机密信息 认证
E N D
第四章 电子商务的安全认证体系 本章主要内容 4.1身份认证与认证体系 4.2身份认证协议 4.3数字证书与认证机构 4.4 安全认证体系及其实施标准 本章要点 • 身份认证的几个重要的基本概念:认证、授权、审计 • 身份认证的分类以及体系 • 身份认证的常用协议 • 数字证书的基本概念、功能、认证机构 • PKI的体系结构、特性、功能
§ 4.1 身份认证与认证体系 • 本节的主要内容 • 身份认证的概念 • 身份认证的分类 • 身份认证体系
现代密码的两个重要的分支 • 加密 • 防止对方获得机密信息 • 认证 • 认证是为了防止敌方的主动攻击,包括验证信息真伪及防止信息在通信过程中被篡改、删除、插入、伪造、延迟及重放等。 • 认证主要包括三个方面:消息认证、身份认证和数字签名。
消息认证是信息的合法接收者对消息的真伪进行判定的技术。消息认证的内容包括: ①信息的来源消息认证是信息的合法接收者对消息的真伪进行判定的技术。消息认证的内容包括: ①信息的来源 ②信息的完整性③信息的序号和时间 • 主要采用数字签名技术和身份识别技术.数字签名技术可以识别消息的真伪,而身份识别技术则可证实发送人的身份.
消息认证的方法 • 信息的来源 • 消息认证常用的方法有两种: • 一种方法是通信双方事先约定发送消息的数据加密密钥,接收者只需证实发送来的消息是否能用该密钥还原成明文就能鉴定发送者。如果双方使用同一个数据加密密钥,那么只需在消息中嵌入发送者的识别符即可。 • 另一种方法是通信双方事先约定各自发送消息所使用的通行字,发送消息中含有此通行字并进行加密,接收者只需判别消息中解密的通行字是否等于约定的通行字就能鉴定发送者。为了安全起见,通行字应该是可变的。
信息的完整性 • 信息的完整性认证方法的基本途径有两条: • 采用消息认证码(Message Authentication Code, MAC)。MAC法利用函数f(x)( f(x)必须满足一定的条件)和密钥k将要发送的明文x或密文y变换成r比特的消息认证码f(x,k) 或称其为认证符附加在x或y之后发出,通常将f选为带密钥的Hash函数(与加密函数的区别在于,其函数输出不需要可逆)。 • 采用篡改检测码(manipulation detection code ,MDC)。MDC法利用函数f(x)( f(x)必须满足一定的条件)将要发送的明文x变换成r比特的篡改检测码f(x)附加在x之后一起加密;当然,也可以只对篡改检测码f(x)加密。通常将f选为不带密钥的Hash函数。
信息的序号和时间 • 消息的序号和时间性的认证主要是阻止消息的重放攻击。常用的方法有:消息的流水作业号、随机数认证法和时间戳等。
消息认证的模式 • 单向验证:在A和B之间建立的单向通信.B确认A的身份和A发送消息的完整性.
身份认证又成为身份识别,它在数字签名和身份鉴别技术的一个重要的应用领域。身份认证又成为身份识别,它在数字签名和身份鉴别技术的一个重要的应用领域。 • 身份认证的作用就是对资源使用者即用户的身份进行鉴别。能够保护网络中的数据和服务不会被未授权的用户访问;能够保障有足够的信息进行双方身份的确认。
认证函数 • 可用来做认证的函数分为三类: • (1) 信息加密函数(Message encryption) • 用完整信息的密文作为对信息的认证。 • (2) 信息认证码MAC(Message Authentication Code) • 是对信源消息的一个编码函数。 • (3) 散列函数(Hash Function) • 是一个公开的函数,它将任意长的信息映射成一个固定长度的信息。
4.1.1 身份认证的概念 • 身份认证的定义 • 证实客户的真实身份与其所声称的身份是否相符的过程. • 身份认证一般是通过对被认证对象(人或事)的一个或多个参数进行验证,从而确定被认证对象是否名实相符或有效。 • 这要求要验证的参数与被认证对象之间应存在严格的对应关系,最好是唯一对应的。
身份认证是安全系统中的第一道关卡,如图4-1所示身份认证是安全系统中的第一道关卡,如图4-1所示
身份认证包括几个重要概念 • 认证(Authentication):在进行任何操作之前必须有有效的方法来识别操作执行者的真实身份。认证又称为鉴别、确认。身份认证主要是通过表示和鉴别用户的身份,防止攻击者假冒合法用户获取访问权限。 • 授权(Authorization):授权是指当用户身份被确认合法后(即通过认证),赋予该用户操作文件和数据等的权限。赋予的权限包括读、写、执行及从属权。 • 审计(Auditing):每一个人都应该为自己所作的操作负责,所以在事情完成后都应该有记录,以便核查责任。
4.1.2 身份认证的分类 • 根据个人信息的不同 • 基于个人生物特征的身份认证 • 基于个人拥有物的身份认证 • 基于个人身份标识码的身份认证
基于个人生物特征的身份认证 • 对用户固有的某些特征进行测量,如指纹、声音或签字。 • 优点: • 绝对无法仿冒的使用者认证技术。 • 缺点: • 较昂贵。 • 不够稳定(辩识失败率高)。
基于个人拥有物的身份认证 • 个人拥有物可以是身份证、护照、军官证、驾驶证、图章、IC卡或其他有效证件。身份证是目前我国应用最广发的身份识别证件,每个人唯一对应一个数字。当然其他的证件也在不同行业和部门起着身份识别的作用。
基于个人身份标识码的身份认证 • 个人身份标识码可以是注册的口令、账号、身份证号码或移动电话号码等。一般来说,某人的身份可以用用户帐号加上口令进行识别。用户账号代表计算机网络信息系统中某人的身份,口令则是用来验证是否真的是计算机网络系统所允许的用户。
4.1.3 身份认证体系 • 现已普遍采用国际上提出了基于PKI的数字证书的解决方案,电子商务中的安全措施的实现都是围绕数字证书展开。 • 数字证书 • 电子商务认证中心CA
数字证书 • 数字证书就是在互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证用户身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。
数字证书与传输密钥和签名密钥对的产生相对应。数字证书与传输密钥和签名密钥对的产生相对应。 • 对每一个公钥做一张数字证书,私钥用最安全的方式交给用户或用户自己生产密钥对。 • 数字证书的内容包括用户的公钥、用户姓名、发证机构的数字签名及用户的其他一些身份认证的有用信息。 • 公钥的拥有者是身份的象征。对方可以据此验证身份。对于密钥的丢失情况、则采用恢复密钥、密切托管等方法。另外对于证书的有效期在政策上加以规定、已过期的证书应重新签发,对于私钥丢失或被非法使用应废止。
电子商务认证中心CA(Certificate Authority) • 认证中心是公正的第三方,它为建立身份认证过程的权威性框架奠定了基础,为交易的参与方提供了安全保障。它为网上交易构筑了一个互相信任的环境,解决了网上身份认证、公钥分发及信息安全等一系列问题。 • 由此可见,认证中心是保证电子商务安全的关键。 • 认证中心对含有公钥的证书进行数字签名,使证书无法伪造。每个用户可以获得认证中心的公开密钥(认证中心根证书),验证任何一张数字证书的数字签名,从而确定证书是否是认证中心签发、数字证书是否合法。
§ 4.2 身份认证协议 • 本节的主要内容 • 身份认证协议概述 • 一次一密机制 • X.509认证协议 • Kerberos认证协议
4.1.3 身份认证协议概述 • 认证协议概念 • 认证协议用来对被验证方(通常是指客户端系统)和验证方(服务器系统)之间的与验证有关的数据通信进行管理。认证协议一般都是建立在通信协议环境之上的,如网络层协议或应用层协议。 • 从使用的角度来看,一个安全的身份识别协议至少应该满足以下两个条件: • ①识别者A能向验证者B证明他的确是A; • ②在识别者A向验证者B证明他的身份后,验证者B不能获得A的任何有用信息,B不能模仿A向第三方证明他是A。
认证协议的分类 • 认证协议按照认证的方向 • 双向认证协议 • 单向认证协议. • 按照使用的密码技术 • 基于对称密码的认证协议 • 基于公钥密码的认证协议。
双向认证协议是最常用的协议,它使得通信双方互相认证对方的身份。双向认证协议是最常用的协议,它使得通信双方互相认证对方的身份。 • 单向认证协议是通信的一方认证另一方的身份,比如服务器在提供用户申请的服务之前,先要认证用户是否是这项服务的合法用户,但是不需要向用户证明自己的身份。 • 基于对称密钥的认证协议往往需要双方事先已经通过其他方式(比如电话、信函或传递等物理方法)拥有共同的密钥。 • 基于公钥的认证协议的双方一般需要知道对方的公钥。
公钥的获得相对于对称密钥要简便,比如通过CA获得对方的数字证书,这是基于公钥认证协议的优势。公钥的获得相对于对称密钥要简便,比如通过CA获得对方的数字证书,这是基于公钥认证协议的优势。 • 但是,公钥的缺点是加/解密速度慢、代价大,所以认证协议的最后,双方要协商出一个对称密钥作为下一步通信的会话密钥。 • 产生会话密钥有助于增加系统的安全性。一旦会话密钥泄漏,则只会泄漏本次通信的内容,而不会带来更大的损失,而且通信者一旦发现会话密钥泄漏后,就可以用原有的密钥协商出新的会话密钥,重新开始新的会话。所以,无论是基于公钥还是基于对称密钥的认证协议,都要经常产生对称会话密钥。
(1)基于对称密码的双向认证协议 • Needham/Schroeder是一个基于对称加密算法的协议,它要求有可信任的第三方KDC参与,采用challenge/Response的方式,使得A、B互相认证对方的身份。协议过程是: • A→KDC:IDA || IDB || N1; • KDC→A:EKa [Ks || IDB || N1 || EKb [ Ks || IDA ] ]; • A→B:EKb [ Ks || IDA ]; • B→A:EKs [ N2 ]; • A→B:EKs [ f(N2) ]。
这个协议仍然有漏洞。假定攻击方C已经掌握A和B之间通信的一个老的会话密钥,C可以在第(3)步冒充A,利用老的会话密钥欺骗B。除非B记住所有以前使用的与A通信的会话密钥,否则B无法判断这是一个重放攻击。然后,如果C可以中途阻止第(4)步的握手信息则可以冒充A在第(5)步响应。从这一点起C就可以向B发送伪造的消息,而B认为是在与A进行正常的通信。这个协议仍然有漏洞。假定攻击方C已经掌握A和B之间通信的一个老的会话密钥,C可以在第(3)步冒充A,利用老的会话密钥欺骗B。除非B记住所有以前使用的与A通信的会话密钥,否则B无法判断这是一个重放攻击。然后,如果C可以中途阻止第(4)步的握手信息则可以冒充A在第(5)步响应。从这一点起C就可以向B发送伪造的消息,而B认为是在与A进行正常的通信。
Denning结合了时间戳的方法,进行了改进: • (1)A→KDC:IDA || IDB; • (2)KDC→A:EKa [Ks || IDB || T || EKb [ Ks || IDA || T ] ]; • (3)A→B:EKb [ Ks || IDA || T ]; • (4)B→A:EKs [ N1 ]; • (5)A→B:EKs [ f(N1) ]。 • | Clock –T | < △t1 + △t2
Denning Protocol 比Needham/Schroeder Protocol在安全性方面增强了一步。然而,又提出新的问题:即必须依靠时钟同步。 • 如果发送者的时钟比接收者的时钟要快,攻击者就可以从发送者窃听消息,并在以后当时间戳对接收者来说成为当前时重放给接收者。这种重放将会得到意想不到的后果。(称为抑制重放攻击)。 • 一种克服抑制重放攻击的方法是强制各方定期检查自己的时钟是否与KDC的时钟同步。 • 另一种避免同步开销的方法是采用临时数握手协议。
Kehn92协议 • 如果A要再次访问B,可以不再通过KDC • A → B:EKb[IDA || Ks || Tb] || Na’ • B检查ticket是否在有效时间,若是,则B →A:Nb||EKs[Na] • A → B:EKs[Nb’]
(2) 基于公钥密码的双向认证协议 • 使用公钥密码算法,可以克服基于对称密码的认证协议中的一些问题。但同样需要有可信的第三方参与,现以WOO92b协议为例来说明: • A→KDC:IDA || IDB; • KDC→A:EKRauth [ IDB || KUb ]; • A→B:EKUb [ Na || IDA ]; • B→KDC:IDB || IDA || EKUauth [ Na ]; • KDC→B:EKRauth [ IDA || KUa ] || EKUb [ EKRauth [ Na || Ks || IDA || IDB ]; • B→A:EKUa [ EKRauth [ Na || Ks || IDA || IDB ] || Nb ]; • A→B:EKs [Nb ]。
(3) 单向认证协议 • 单向认证协议中只有一方向另一方证明自己的身份,因此过程一般都相对简单。下面是一个不需要第三方的基于对称密码的单向认证协议,要求A和B事先拥有共享密钥。 • A→B:IDA || N1; • B→A:EKab [ Ks || IDB || f(N1) || N2 ]; • A→B:EKs [ f(N2) ],即f(x)=x+1。
下述方案要求通信双方都事先与第三方有共享密钥。下述方案要求通信双方都事先与第三方有共享密钥。 • A→B:IDA || IDB || N1; • KDC→A:EKa [Ks || IDB || N1 || EKb [ Ks || IDA ] ]; • A→B:EKb [ Ks || IDA ]|| EKs[ M ];
基于公钥密码的单向身份认证协议可以非常简单,例如如下方案:基于公钥密码的单向身份认证协议可以非常简单,例如如下方案: • A→B:EKUb [ Ks ] || EKs[ M || EKRa[ H(M) ] ]; • 这种方案要求A和B互相知道对方的公钥。首先,A用B的公钥加密一个会话密钥,然后A用会话密钥加密数据和用自己私钥签名的消息摘要,A将这些内容一起发送给B。B收到后,首先用自己的私钥解密出会话密钥,然后解密消息和A的签名,最后计算出消息摘要以验证A的签名,从而确定A的身份。
在实际应用中的具体协议有: • 一次一密机制 • X.509认证协议 • Kerberos认证协议 • PPP口令认证协议 • PPP质询-握手协议 • TACACS+协议 • RADIUS协议等。
一次一密机制 • 一次一密机制 • 满足以下条件的密码才是真正的一次一密: • 密钥是随机产生的,并且必须是真随机数,而不是伪随机数; • 密钥不能重复使用; • 密钥的有效长度不小于密文的长度。 • 一次一密机制主要包括两种实现方式: • 采用请求应答机制: 用户登录时,系统随机提示一条信息,用户根据一信息产生一个口令,完成一次登录. • 询问应答方式:验证者提出问题,由识别者回答,然后由验证者验证其真伪。
X.509认证协议 • X.509认证协议 • X.509 是一个认证证书的管理标准,是定义目录业务的X.500系列一个组成部分。由国际电信同盟ITU(International Telecommunications Union)的ITU - T Study Group 17 小组负责制定和维护。 • X.509定义了X.500目录向用户提供认证业务的一个框架,目录的作用是存放用户的公钥证书。 • X.509还定义了基于公钥证书的认证协议。 • 因为X.509中定义的证书结构和认证协议已经被广泛应用于S/MIME、IPSec、SSL/TLS以及SET等诸多应用过程,所以X.509已经成为一个重要的标准
X.509给出的鉴别框架是一种基于公开密钥体制的鉴别业务密钥管理。X.509给出的鉴别框架是一种基于公开密钥体制的鉴别业务密钥管理。 • 一个用户有两把密钥:一把是用户的专用密钥,另一把是其他用户都可利用的公共密钥。 • 用户可用常规密钥(如DES)为信息加密,然后再用接收者的公共密钥对DES进行加密并将之附于信息之上,这样接收者可用对应的专用密钥打开DES密锁,并对信息解密。 • 该鉴别框架允许用户将其公开密钥存放在它的目录款项中。一个用户如果想与另一个用户交换秘密信息,就可以直接从对方的目录款项中获得相应的公开密钥,用于各种安全服务。
一个标准的X.509数字证书包含以下一些内容: • 证书的版本信息; • 证书的序列号,每个证书都有一个唯一的证书序列号; • 证书所使用的签名算法; • 证书的发行机构名称,命名规则一般采用X.500格式; • 证书的有效期,现在通用的证书一般采用UTC时间格式,它的计时范围为1950-2049; • 证书所有人的名称,命名规则一般采用X.500格式; • 证书所有人的公开密钥; • 证书发行者对证书的签名。
Kerberos认证协议 • Kerberos认证协议 • Kerberos协议主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket)访问多个服务,即SSO(Single Sign On)。由于在每个Client和Service之间建立了共享密钥,使得该协议具有相当的安全性。
Kerberos协议的前提条件: • Client与KDC, KDC与Service 在协议工作前已经有了各自的共享密钥,并且由于协议中的消息无法穿透防火墙,这些条件就限制了Kerberos协议往往用于一个组织的内部, 使其应用场景不同于X.509 PKI。
Kerberos协议分为两个部分: • 1 . Client向KDC发送自己的身份信息,KDC从Ticket Granting Service得到TGT(ticket-granting ticket), 并用协议开始前Client与KDC之间的密钥将TGT加密回复给Client。此时只有真正的Client才能利用它与KDC之间的密钥将加密后的TGT解密,从而获得TGT。(此过程避免了Client直接向KDC发送密码,以求通过验证的不安全方式) • 2. Client利用之前获得的TGT向KDC请求其他Service的Ticket,从而通过其他Service的身份鉴别。 Kerberos协议的重点在于第二部分,简介如下:
1.Client将之前获得TGT和要请求的服务信息(服务名等)发送给KDC,KDC中的Ticket Granting Service将为Client和Service之间生成一个Session Key用于Service对Client的身份鉴别。然后KDC将这个Session Key和用户名,用户地址(IP),服务名,有效期, 时间戳一起包装成一个Ticket(这些信息最终用于Service对Client的身份鉴别)发送给Service, 不过Kerberos协议并没有直接将Ticket发送给Service,而是通过Client转发给Service.所以有了第二步。 • 2.此时KDC将刚才的Ticket转发给Client。由于这个Ticket是要给Service的,不能让Client看到,所以KDC用协议开始前KDC与Service之间的密钥将Ticket加密后再发送给Client。同时为了让Client和Service之间共享那个秘密(KDC在第一步为它们创建的Session Key), KDC用Client与它之间的密钥将Session Key加密随加密的Ticket一起返回给Client。