第 7章 认证认证( Authentication)就是对于证据的辨认、核实、鉴别,以建立某种信任关系。在通信中,要涉及两个方面:一方提供证据或标识,另一方面对这些证据或标识的有效性加以辨认、核实、鉴别。从认证的内容看,可以分为数据(报文)认证和身份验证;从认证过程看,需要有证据符
(标识)、认证算法和认证协议三个要素。
7.1 数字签名
7.1.1 数字签名概述在网络中进行数据的传输,必须保证接收到的消息的真实性(的确是由它所声称的实体发来的)、完整性(未被篡改、插入、删除)、顺序性(未重排、重放)和时间性,用来鉴别:
否认:发送者事后不承认已发送过的文件;
伪造:接收者伪造一份来自发送者的文件;
篡改:接收者私自修改接收到的文件。
冒充:网络中某一用户冒充发送者或接收者。
在现实世界中,文件的真实性依靠签名或盖章进行证实。
数字签名( Digital Signature)是数字世界中的一种信息认证技术,它利用数据加密技术、数据变换技术,根据某种协议来产生一个反映被签署文件的特征和签署人特征,以保证文件的真实性和有效性的数字技术,同时也可用来核实接收者是否有伪造、篡改行为。
简单地说,数字签名就是给报文一个可以核实或鉴别的标识。它应当具有如下一些性质:
能够签名者的身份、签名日期和时间;
能用于证实被签消息的内容;
可以由第三方验证,可以解决通信双方的争议。
目前已经有多种数字签名体制。这一节介绍几种主要技术。
7.1.2 基于消息认证码的数字签名消息认证首先需要提供消息认证符。认证符是标识消息的数据,按照它的产生,可以分为消息认证码( Message Authentication,MAC)和杂凑函数( Hash Function)两大类。
1,MAC及其基本使用方式消息认证码也称密码校验和,是一个定长的 n比特数据。它的产生方法为
MAC=CK( M)
其中,CK是一个函数,它受通信双方共享的密钥
K的控制,并以 A欲发向 B的消息 M(明文)作为参数。
MAC的基本使用方式如图 7.1所示在实际应用时,消息及其认证码都要加密后进行传输,从而形成不同的认证方式。
2,数据认证算法典型的鉴别码生成算法主要是基于 DES的认证算法。
该算法采用 CBC( Cipher Block chining)模式,使
MAC函数可以在较长的报文上操作,报文按 64位分组,最后一组不足时补 0。其算法过程如图 7.2所示 。
这个算法是 n轮迭代过程,n为分组数。第 i轮迭代对第 i个明文分组 Mi进行计算:首先将 Mi与前一轮迭代的输出进行异或,然后进入 DES系统,用密钥 K进行加密。最后一轮迭代结束后,取结果的左边 n位作为鉴别码。 n的大小由通信双方约定,一般取 16~64位。
第一轮迭代是初始向量 IV取一个常数,一般取 0。
3,MAC生成函数的限制由于产生 MAC的函数 C是将较大的区域映射到较小的范围,所以具有多对一的映射特点,因而不可避免地会产生碰撞,即两个不同的报文产生相同的 MAC,
破坏 MAC的唯一性。为此 C的选择应满足如下条件:
( 1)如果攻击者得到 M和相应的 MAC,要构造一个满足 CK( M’) =MAC的新消息 M’在计算上是不可行的。即不知道 K,不可能伪造一个与截获的
MAC相匹配的新消息。
( 2) CK( M)应当是均匀分布的,即随机选取两个消息 M,M’,则 [CK( M’) = CK( M) ]的概率为
2-n。其中 n为 MAC的长度。换句话说,攻击者截获一个 MAC,则伪造一个相匹配的消息的概率为最小。
( 3)如果 M’为 M的某种变换,则 CK( M’) = CK
( M)的概率为 2-n。即函数 C不应当在消息的某些地方或某些比特弱于其他部分或比特,否则攻击者一旦获得 M和 MAC,就可能修改 M中的弱的部分,伪造出一个与原 MAC相匹配的新消息。
7.1.3 基于杂凑函数的数字签名
1,杂凑函数与报文摘要杂凑函数( Hash Function,也称哈希函数或散列函数,通常简写为 H)是一个公开函数。它可以将任意任意长的消息 M映射为较短的、固定长度的一个值 H( M)作为消息 M的认证符。 H( M)
也称消息摘要 MD( message digest)或杂凑码、
散列码。
消息摘要的使用方式与消息认证码基本相同。
图 7.3为杂凑函数的功能示意图
2,杂凑函数应满足的条件消息摘要就像是需要认证的数据的一个“指纹”。为了实现对于数据的认证,杂凑函数应当满足如下一些条件:
对于不同的报文不能产生相同的杂凑码,即对于任何两个报文 X和 Y,不能生成 H(X)= H(Y)。因此,改变原始报文中的任意一位的值,将产生完全不同的杂凑码。
无法由 HD推出报文,即对于给定的杂凑码 MD,几乎无法找到 M’使 H(M’)=MD。
对于任意一个报文,无法预知它的杂凑码。
D的输入可以是任意长,而输出是固定长。
H函数的算法是公开的,杂凑码的安全性来自 H产生单向杂凑的能力。
3,杂凑函数举例设报文有 m组分组,杂凑码 C有 n位,则某一位杂凑码 Ci可以这样简单地计算:
Ci=Bi1 Bi2 … B im
当然,它并不完全满足对杂凑函数的要求。 典型的报文摘要算法有 MD5( Riverst提出,
1992年 [RFC 1321]公布,码长 128比特) 和安全散列算法 SHA( Secure Hash Algorithm,
码长 160bit) 。由于 SHA比 MD5多了 32比特,
所以更安全,但要慢些。
+ + +
( 1) MD5
MD5由 Ron Rivest在麻省理工学院提出的。
该算法对任意长度的报文以 512比特进行分组处理,产生一个 128比特的报文摘要。
( 2)安全杂凑函数 SHA
SHA由美国 NIST和 NSA共同设计,以小于
264比特任意报文,产生一个 160比特长度的报文摘要。
7.2 身份验证身份识别或身份标识( Identification)是指用户向系统提供的身份证据,也指该过程。身份认证( Authentication)是系统核实用户提供的身份标识是否有效的过程。在信息系统中,
身份认证实际上是决定用户对请求的资源的存储权和使用权的过程。一般,人们也把身份识别和身份认证( Identification and
Authentication)统称为身份验证。
7.2.1 口令验证口令是最常用的身份认证方式。用户向系统输入 口令后,通过了系统的验证,就能获得相应的权限。但是,口令是较弱的安全机制:如果使用随机产生的口令,由于难记,用户就要采取适当的存储手段;若采用采用容易记忆的口令(如家庭成员或朋友的名字、生日、球队名称、城市名等),又容易被猜测。下面讨论口令的 3个重要的安全问题。
1,口令的泄密口令可能泄密的几种途径有:
( 1)猜测和发现口令
常用数据猜测,如如家庭成员或朋友的名字、生日、球队名称、
城市名、身份证号码、电话号码、邮政编码等。
字典攻击。
其他,如望远镜窥视等。
( 2)电子监控
在网络或电子系统中,被电子嗅探器、监控窃取。
( 3)访问口令文件
在口令文件没有强有力保护的情形下,下载口令文件。
在口令文件有保护的情况下,进行蛮力攻击。
( 4)通过人际工程泄露
自己将口令告诉他人。
2,口令的存储口令的存储不仅是为了备忘,更重要的是系统要在检测用户口令时进行比对。在系统中为进行比队而存储的方式有如下两种。
( 1)直接明文存储口令写在纸上或直接明文存储在文件或数据库中,最容易泄密。
( 2) Hash杂凑存储这种方式是使用杂凑函数为口令文件产生“指纹”,
即将每一个用户的系统存储账号和杂凑值存储在一个口令文件中。当用户登录时,输入口令后,系统计算口令的杂凑码,并与口令文件中的杂凑值比对:成功,
则允许登录;否则,拒绝。
3,一次性口令
20世纪 80年代,美国科学家 Leslie Lamport首次提出了利用杂凑函数产生一次性口令的设想。
传统的口令是静态的,即在一定的时间内是不变的,可以重复使用,也容易被攻击而泄露。一次性口令是变动的密码。其变动源自产生密码的运算因子的变化。通常,一次性口令采用运算双因子:一个是用户密钥,用于代表用户身份;一个是变动因子,产生变动的口令。采用不同的变动因子,就形成了不同的一次性口令认证技术,如基于时间同步的认证技术、基于事件同步的认证技术、挑战 /应答方式的非同步技术等。
一次性口令也面临着字典攻击。为对付口令攻击,目前
Internet用户普遍采用 Bellcore的 S/KEY一次性口令系统。
关于 S/KEY的具体内容,请参考有关资料。
7.2.2 智能卡与电子钥匙身份验证智能卡( Smart Card)是如名片大小的手持随机动态密码产生器,
也称集成电路卡或 IC卡( Integrated Card)。对于智能卡的安全保护,一般采取如下一些措施:
( 1)对持卡人、卡和接口设备的合法性进行相互校验;
( 2)重要数据要加密后传输;
( 3)卡和接口设备中设置安全区,在安全区内包含有逻辑电路或外部不可读的存储区。任何有害的不规范的操作,将会被自动禁止进一步进行。
( 4)应设置止付名单(黑名单)。
( 5)有关人员要明确责任,严格遵守。
电子钥匙( ePass)是一种通过 USB直接与计算机相连、具有密码验证功能、可靠高速的小型存储设备,用于存储一些个人信息或证书,它内部的密码算法可以为数据传输提供安全的管道,是适合单机或网络应用的安全防护产品。其安全保护措施与智能卡相似。
7.2.3 生物特征身份验证
1,指纹识别生物识别是利用人的唯一(或相同概率极小)的生理或行为特征作为身份认证的根据。历史最为悠久的生物识别是指纹识别。著名指纹专家刘持平先生曾经论证,早在 7000年前我们的祖先就开始进行指纹识别的研究。到了春秋战国时代,手印检验不仅广泛应用于政府和民间的书信和邮件往来之中,并已经开始用于侦讯破案之中。
指纹是一种十分精细的拓扑图形。如图 7.4所示,一枚指纹不足方寸,上面密布着 100~120个特征细节,
这么多的特征参数组合的数量达到 640亿种(高尔顿说),也有一说是一兆的 7次幂。并且由于它从胎儿 4
个月时生成后保持终生不变,因此,用它作为人的唯一标识,是非常可靠的。
图 7.4 指纹的细节特征指纹识别主要涉及 4个过程:读取指纹图像、提取指纹特征、保存数据和比对。目前已经开发出计算机指纹识别系统,可以比较精确地进行指纹的自动识别了。
我国即将使用的第 2代身份证就将加入指纹信息。
2,虹膜识别虹膜是位于眼睛黑色瞳孔与白色巩膜之间的环形部分。
它在总体上呈由里向外的放射状结构,并包含许多相互交错的类似斑点、细丝、冠状、条纹、隐窝等形状的细微特征。这些细微特征信息也被称为虹膜的纹理信息,主要由胚胎发育环境的差异决定,因此对每个人都具有唯一性、稳定性和非侵犯性。
虹膜识别系统主要由虹膜图像采集装置、活体虹膜检测算法、特征提取和匹配几个模块组成。
3,面像识别面像识别系统包括两个技术环节:面像检测和面像识别。
( 1)面像检测面像检测主要实现面像的检测和定位,即从输入图像中找到面像及面像的位置,并将人脸从背景中分割出来。现有的面像检测方法可以分为 3类:
( a)基于规则的面像检测:总结了特定条件下可用于检测面像的知识(如脸型、肤色等),并把这些知识归纳成指导面像检测的规则。
( b)基于模板匹配的面像检测:首先构造具有代表性的面像模板,通过相关匹配或其他相似性度量检测面像。
( c)基于统计学习的面像检测:主要利用面部特征点结构灰度分布的共同性。
( 2)面像识别面像识别由两个过程组成:
( a)面像样本训练:提取面像特征,形成面像特征库。
( b)识别:用训练好的分类器将待识别面像的特征同特征库中的特征进行匹配,输出识别结果。
4,声纹鉴定声纹鉴定是以人耳听辩的声纹为基础,不仅关注发音人的语音频谱等因素,还充分挖掘说话人语音流中的各种特色性事件和表征性特点,如由方言背景确定的地域性,发音部位变化、语音频谱、内容以及发音速度和强度确定的发音人的年龄、性格、心态等。
在计算机处理时,常常将人类声纹特征分为三个层次:
( 1)声道声学层次:在分析短时信号的基础上,抽取对通道、时间等因素不敏感特征。
( 2)韵律特征层次:抽取独立于声学、声道等因素的超音段特征,如方言、韵律、语速等。
( 3)语言结构层次:通过对语音信号的识别,获取更加全面和结构化的语义信息。
声纹识别系统主要包括两部分:
( 1)特征提取:选取唯一表现说话人身份的有效且可靠的特征。
( 2)模式匹配:对训练和识别时的特征模式进行相似性匹配。
但是,目前还没有正式它的唯一性。
5,其他
步态识别。
笔迹识别。
签名识别。
颅骨识别。
视网膜识别。
唇纹识别。
DNA识别。
按键特征识别。
耳朵识别。
足迹识别。
…… 。
7.2.4 基于秘密密钥的身份验证一旦通信双方有了可以共同信任和依赖的第三方,就可以实现基于秘密密钥的身份验证。
一种办法是要求每方各亲自送一个秘密密钥到第三方。
假设第三方为 BB,A方的密钥为 KA,B方的密钥为 KB,
则只有 A和 BB知道 KA,B和 BB知道 KB。如图 7.5所示,
当 A要发一个明文 X到 B的操作过程如下:
① A发送 KA(X)到 BB;
② BB用 KA将 KA(X)解密为 X,然后将 A的名字和地址 A、
时间 t以及原报文 X构造成新的报文,用 A和 B都不知道的密钥 KBB生成密文 KBB(A+t+X)送回 A;
③ A转手将 KBB(A+t+X)发给 B;
④ B无法对 KBB(A+t+X)解密,再将其传给 BB;
⑤ BB将 KBB(A+t+X)解密,与原来的文本比较,证实无误后,用 KB生成 KB(A+t+X)传给 B; B用 KB将之解密。
图 7.5 秘密密钥数字签名的实现这种秘密密钥技术的数字签名是依赖于第三方的。
从理论上讲,它能非常可靠地保证报文的安全性,
实现报文的认证,但却对第三方的可靠性、安全性和公正性提出了极高的要求。
7.2.5 基于公开密钥的身份验证简单地说,当 A方用其私钥 SKA将明文加密,报文
DSKA(X)就被签名了。因为 B只要用 A的公钥能对其解密,
就可以证明 DSKA(X)是由 A发送的。发生纠纷时,只要 A
和 B都将它们的 DSKA(X)和 X出示给第三者,由第三者用
PKA将两个 DSKA(X)都解密,与 X加以对比,就可以看出 A是否有抵赖行为,B是否有伪造行为。
将数字签名和公开密钥相结合,可以提供安全的通信服务。其要点在于,发送方不是简单地将( M+X)发送出去,而是先用接收方的公开密钥 EPKB进行加密后再发送出去。接收方收到被加密的 EPKB(M,X)后,先用自己的私有密钥 ESKB进行解密后,再产生数字签名 Y与
X比较。
7.2.6 Kerberos认证系统
Kerberos是 MIT为了保护 Athena项目中的服务和网络资源而开发的身份认证系统。目前已经被开放软件基金会( OSF)的分布计算环境( DCE)以及许多网络操作系统供应商采用。
Greek Kerberos是希腊神话中的一种有 3个脑袋的地狱守门狗。作为认证系统的 Kerberos也被其开发者塑造成具有三个头的网络大门的守护者。这时的三个“头”
为:
认证( Authentication)。
计费( Accounting)。
审计( Audit)。
Kerberos针对客户访问服务器时可能出现的威胁,实现了一个没有经过验证的用户不能访问服务器的目标。这些威胁是:
一个用户可能扮演另一个用户访问特殊的服务器;
用户可能改变服务器的网络地址。
用户可能使用重放方式攻击服务器,或中断服务器的操作。
为此,Kerberos提供了一个集中验证功能的服务器,用于验证每一个访问服务器的用户和访问用户的服务器。
Kerberos采用对称密钥加密算法来实现通过可信第 3方 KDC的身份验证。因此,它有 3个通信参与方:需要验证身份的通信双方和一个双方都信任的第三方 —— KDC。当某个网络应用进程需要访问一个服务进程,例如用户进程要向远程 FTP服务器发起 FTP连接时,首先要向 FTP服务器提交自己的身份供验证,同时也要确认 FTP服务器的身份,从而构成一个双向身份验证。在 Kerberos
中,在某一段时间内通信双方提交给对方的身份
“凭证”( ticket)是由 KDC生成的。该凭证中包含有如下内容:
客户方和服务器方的身份信息。
下一阶段通信双方使用的临时加密密钥 —— 会话密钥
( Session Key)。
证明客户方拥有会话密钥的身份认证者( Authenticator)
信息 —— 防止攻击者再次使用同一凭证。
时间标记( Timestamp),以检测重放攻击( Replay
Attack)。
为了提高安全性能,一个 Kerberos凭证只在一段有限时间 —— 凭证的生命期内有效。生命期过后,凭证自动失效,以后通信必须从 KDC那里重新获得凭证。
Kerberos保持一个其客户方以及密钥的数据库。这些密钥由 KDC与客户方共享,而且不能被第三方知道。如果客户是用户,该密钥就是用户口令经过杂凑函数生成的。
Kerberos系统已经有 5个版本。其中 V1~V3是内部开发版,V4是 1988年开发的,目前已经得到广泛应用。
V5是针对 V4的安全缺陷的改进版,已经于 1994年作为 Internet标准(草案)公布( RFC 1510)。
7.2.7 X.509验证服务
1,数字证书与 X.509标准数字证书,也称数字身份证、数字 ID。它是由权威机构颁发给网上用户的一组数字信息,包含用户身份信息、用户公开密钥、签名算法标识、证书有效期、证书序列号、颁证单位、扩展项等。数字证书有以下特点:
( 1)它包含了身份信息,因此可以用于证明用户身份;
( 2)它包含了非对称密钥,不但可用于数据加密,
还可用于数据签名,保证通信过程的安全和不可抵赖;
( 3)由于是认证权威机构颁布的,因此具有很高的公信度。
颁发数字证书的权威机构称为认证中心( Certificate
Authority),简称 CA,是可以信赖的第三方机构,
负责产生、分配并管理数字证书。有了数字证书之后,在网上通信的双方进行联系的第一步便是利用预装在浏览器中的安全认证软件和认证中心的公钥对通信对象的数字证书进行验证;验证无误后,才可使用认证中心传递的加密公钥进行加密通信。
为了保障数字证书合理获取、撤出和验证过程,
1988年 ITU-T发表了 X.509标准。这是一个基于公开密钥和数字签名的标准,它的核心是数字证书格式和认证协议。 X.509作为 X.500目录服务的一部分,
定义了下列内容:
定义了 X.500目录向用户提供认证业务的一个框架;
证书格式;
基于公钥证书的认证协议。
2,X.509数字证书格式
X.509标准的核心是与用户有关的公开密钥证书。这些证书由 CA或用户放在目录下,并由一个可信赖的证书授权系统 CA确认。证书格式包含如下内容。
版本( Version):区分 X.509的不同版本。
序列码( Serial number):某个 CA给出的用来识别证书的唯一编号。
签字算法识别符( Algorithm parameters):
CA签署证书所用的公开密钥算法及相应参数。
发证者( Issuer name):建立和签署证书的
CA的名称。
发证者识别码( Issuer unique identifier):
(可选),用做 CA的唯一标识。
主体名称( Subject name):密钥拥有者的名称。
主体识别码( Subject unique identifier):
(可选),用做密钥拥有者的的唯一标识。
公钥信息( Algorithm parameters Key):包括主体的公钥、该公钥的使用算法及参数。
有效期( Not before Not after):开始时间和终止时间。
扩充域( Extensions):包括一个或多个扩充的数据域,仅用于第 3版。
签字( Algorithm parameters Encryption):
CA用自己的秘密密钥对上述域是杂凑值签字的结果。还包括签字算法标识符。
X.509标准使用了下面的描述进行证书定义:
CA<<A>>=CA{V,SN,AI,CA,TA,A,AP}
其中:
Y<<X>>表示证书发放机构 -Y向用户发放的证书。
Y{I}表示 I链接上 Y对 I的杂凑值签字。
3,X.509结构证书的获得
X.500目录的作用是存放用户的公钥证书。由于证书不能伪造,它们可以不需要特别的保护就可以放在目录里。现在的问题是是不是所有的证书都要由同一个 CA签署?
一般说来,当用户数目较多时,仅由一个 CA为所有用户签署是不现实的。因为这样,需要两个条件:
CA必须取得所有用户的信任;
每一个用户必须以绝对可靠的方式通过复制获得
CA的公钥来证实。
显然,当用户数目较多时,应当由多个 CA分头为不同的用户签署证书。但是,简单地由多个 CA为不同的用户签署证书,也有一些问题。例如,X1
为 A签署了一个证书,X2为 B签署了一个证书。那么,A不能阅读 B的证书,也不能证实 B的证书;
同样,B不能阅读 A的证书,也不能证实 A的证书。
这一目录结构如图 7.6( a)所示。
图 7.6 多 CA结构观察图 7.6( b),情况就不同了:
( 1) A可以从此目录中获得 XI签署的 X2的证书。
由于 A确切知道 XI的公钥,从 X1的证书中就可以获得 X2的公钥,并利用 XI来证实。
( 2)进一步 A能获得 X2签署的 B的证书,并可以用已经获得的 X2的公钥来证实 B的数字签名,安全地获得 B的公钥。
这样,就形成了证书链。其中,A获得 B的公钥的证书链,在 X.509中的表示为
X1,X2,X2,B》
同理,B通过反向链也可以获得 A的公钥,其结构表示为
X2,X1,X1,A》
这样证书链形成一个层次结构。 X.509建议将所有的 CA证书,须由 CA放在目录中,并且要采用层次结构。图 7.7为 X.509层次结构的一个例子,其内部节点表示 CA,叶节点表示用户。用户可以从目录中沿着一条证书路径,获得另一个节点的证书和公钥。
例如,A获取 B证书的证书路径为:
X,W,W,V,V,Y,Y,Z,Z,B》
A取得这些证书后,就能解密其证书路径,
获得一个可信的 B的公钥。
图 7.7 X.509层次结构的一个例子
4,证书目录证书产生之后,必须以一定的方式存储和发布,
以便于使用。 CA采用证书目录的方式对证书进行集中存储和管理。在证书目录中,不仅存储和管理用户证书,还存储用户的相关信息(如电子邮件地址、电话号码等)。由于证书的非保密性,
证书目录也是非保密的。
在标准化方面,目前证书目录广泛使用 X.500标准。
X.500标准目录不仅可以对证书进行集中管理,还可以管理用户相关信息,从而构成一个用户信息源。
为了便于实际应用,在 Internet环境下更多使用的是 X.500标准的简化和改进版本 —— LDAP
( Lightweight Directory Protocol,轻型目录存去协议)。
5,用户证书的吊销在下列情形下,应当将用户证书吊销:
一个用户证书到期。
用户秘密密钥泄露。
CA的证书失窃。
CA不再给用户签发证书。
每一个 CA必须维护一个证书吊销列表
( Certificate Revocation List,CRL)。
CRL中列出所有已吊销证书的序列号和吊销日期。
6,认证过程为了适应不同的应用环境,X.509建议了三种验证过程:一次验证过程、二次验证过程和三次验证过程。这三种验证过程都是使用公钥签字技术,并假定通信双方都认可目录服务器获得对方的公钥证书,或对方最初发来的消息中包括公钥证书(即双方都知道对方的公钥)。图 7.8为三种验证过程示意图。
图 7.8为三种验证过程示意图
( 1)一次验证一次验证也称单向验证。被验证者 A产生消息供验证者 B
验证。消息内容包括;
B,B的身份;
TA:时间戳,以保证消息的新鲜性。其中可以包括消息产生的时间(可选)和截止时间,以处理消息传送过程中可能出现的时延。
rA:一次性随机数,防止重放;在消息未到截止时间前是唯一的,以拒绝具有相同 rA的其他消息。
如果仅仅为了验证,可以上述消息作为凭证;否则,还可以包括:
A用自己的公钥签署的数字签名 sgnData,以保证信息的真实性和完整性。
由 B个公钥加密的欲建立的双方会话密钥 KAB。
( 2)二次验证二次验证也称为双方验证,即 A不仅要向 B
发送验证凭证信息,B也要通过应答以证明:
B的身份;
应答是由 B发出的;
应答的接收者是 A;
应答消息是完整的和新鲜的。
( 3)三次验证三次验证是在二次验证完成之后,A再将 B
发来的一次性随机数签字后发往 B。这样可以通过检查一次性随机数就可以得知是否有重放,而不需检查时间戳。这种方法主要用在通信双方无法建立时钟同步的情形下。
7.3 公开密钥基础设施公开密钥基础设施( Public Key Infrastructure,PKI)
是 20世纪 80年代在公开密钥理论和技术的基础上发展起来的为电子商务提供综合、安全基础平台的技术和规范。它的核心是对信任关系的管理。通过第三方信任,为所有网络应用透明地提供加密和数字签名等密码服务所必须的密钥和证书管理,从而达到保证网上传递数据的安全、真实、完整和不可抵赖的目的。 PKI
的基础技术包括加密、数字签名、数据完整性机制、
双重数字签名等。利用 PKI可以方便地建立和维护一个可信的网络计算环境,建立一种信任机制,使人们在这个无法相互直面的环境中,能够确认对方的身份和信息,从而为电子支付、网上交易、网上购物、网上教育等提供可靠的安全保障。
7.3.1 PKI及其组成
PKI系统的建立着眼于用户使用证书及相关服务的便利性、用户身份认证的可靠性。
具体职能包括:
制定完整的证书管理政策;
建立高可信度的 CA中心;
负责用户属性管理、用户身份隐私的保护和证书作废列表的管理;
为用户提供证书和 CRL有关服务的管理;
建立安全和相应的法规,建立责任划分并完善责任政策。
因此,PKI是一个使用公钥和密码技术实施并提供安全服务的、具有普适性的安全基础设施的总称,并不特指某一密码设备及其管理设备。可以说,它是生成、管理、存储、颁发和撤销基于公开密码的公钥证书所需要的硬件、软件、
人员、策略和规程的总合。
证书管理中心 CA是 PKI的核心。它属于可信的第三方,具有如下 一些功能。
颁发证书,如密钥对的生成,私钥的保护等,并保证证书持有者应有不同的密钥对;
管理证书,记录所有颁发过的证书,以及所有被吊销的证书;
用户管理,对于每一个新提交的申请,都要和列表中现存的标识名相比照,如出现重复,就予以拒绝;
吊销证书,在证书有效期内使其无效,并发表
CRL;
验证申请者身份,对每一个申请者进行必要的身份认证;
保护证书服务器,证书服务器必须是安全的,CA
应采取相应措施保证其安全性;
例如,加强对系统管理员的管理,防火墙保护等。
保护 CA私钥和用户私钥,CA签发证书所用的私钥要受到严格的保护,不能被毁坏,也不能非法使用。同时,
要根据用户密钥对的产生方式,CA在某些情况下有保护用户私钥的责任;
审计与日志检查,为了安全起见,CA对一些重要的操作应记入系统日志。在 CA发生事故后,要根据系统日志做善后追踪处理 —— 审计。 CA管理员要定期检查日志文件,尽早发现可能的隐患。
通常 CA分成不同的一些层次。一个典型 PKI体系结构如图 7.9所示。其中,PAA称为政策批准机构,PCA称为政策认证中心,ORA( Online Registration authority)
称为在线注册机构。它们的区别在于政策权限不同:下层的证书要由上层颁发。
一个典型 PKI体系结构如图 7.9所示
( 1)政策批准机构 PAA
政策批准机构 PAA是一个 PKI系统方针的制定者,
它建立整个 PKI体系的安全策略,批准本 PAA下属的 PCA的政策,为下属 PCA签发证书,并负有监控各 PCA行为的责任。
( 2)政策 CA机构 PCA
PCA指定本 PCA的具体政策。这些政策可以是其上级 PAA政策的扩充或细化(包括本 PCA范围内密钥的产生、密钥的长度、证书的有效期规定以及 CRL—— 被吊销的证书列表的管理),并为下属 CA签发公钥证书。
( 3) CA
CA具有有限政策制定权限,它在上级 PCA
政策范围内,进行具体的用户公钥证书的签发、生成和发布以及 CRL的生成和发布。
( 4)在线证书申请 ORA
ORA进行证书申请者的身份认证,向 CA提交证书申请,验证接收 CA签发的证书,并将证书发放给申请者。有时还协助进行证书的制作。
7.3.2 PKI的操作功能在实际运行中,PKI具有多种操作方式,这些操作方式又影响其他功能的实现方式,从而形成不同的 PKI操作思想。下面介绍 PKI的功能操作。
1,产生、验证、分发密钥用户公、私密钥对的产生、验证可以有如下一些方式。
( 1)用户自己产生密钥对用户选取产生密钥的方法,负责密钥的存储,还应当向 CA提交自己的公钥和身份信息。 CA对用户进行身份认证,对密钥的强度和持有者进行审查;审查过后,对用户的公钥产生证书,将证书发放给用户,并发布到目录服务器。
有时,用户产生密钥对后到 ORA注册,由 ORA完成认证后,由 CA进行强度审查,再以电子签名方式交 ORA向用户发放。
( 2)由 CA为用户产生密钥对用户到 CA中心产生并获得密钥对后,CA应自动销毁本地的用户密钥对拷贝;用户取得密钥对后,
保存好自己的私钥,将公钥送 CA或 ORA申请证书。
( 3)由 CA(包括 PAA,PCA,CA)为自己产生密钥对
PAA签发并向 PCA颁发公钥证书; PCA签发并向
CA颁发公钥证书; CA签发其下级(用户或 ORA)
证书,同时发送 PCA,PAA的公钥证书。
2,密钥的恢复与更新
( 1)密钥的恢复在密钥泄露、证书作废后,为了恢复 PKI中实体的业务处理和产生数字签名,要为泄露密钥的实体重新产生一对新的密钥,CA也要为用户产生新的证书。
如果泄露密钥的实体是 CA,则该 CA需要重新签发以前用泄密密钥签发的那些证书。
在具体做法上,往往采用双 CA签发证书的方式。当一个 CA的密钥泄露后,即转向另一个 CA的证书链。
( 2)密钥更新密钥更新指在密钥没有泄露的情况下,定期更换密钥。
3,支持数字签名和验证数字签名及其认证是 PKI体系中极为普遍的操作。每个
PKI成员都以多种算法支持数字签名和人证。
( 1)证书获取在验证数字签名时,用户必须先获得信息发送者的公钥证书,以对信息进行解密验证,同时还需要 CA对发送者颁发的证书。获得证书可以有多种方式,如:
发送者发送签名信息时,附加自己的证书。
从单独发送证书的通道获得。
从访问发布证书的目录服务器获得。
从证书的相关实体(如 ORA)获得。
( 2)证书验证验证证书的过程是在证书链中迭代地寻找下一个证书和它相应的上级 CA证书,并且从检查证书路径中可以信任的最后一个 CA
所签发的证书的有效性开始进行。检验一个证书后,就提取该证书中的公钥,用之检验下一个证书,直到验证完发送者的签名证书,并用该证书中的公钥进行数字签名。
注意在使用每个证书前,必须检查相应的
DRL。
( 3)证书保存保存证书是指 PKI实体将证书保存在本地,
以减少在 PKI体系中获得证书的时间,提高证书签名的效率。保存证书要注意如下几点:
存储每个证书前,要验证其有效性。
存储单元要定时对证书管理维护,清除已作废或过期的证书。
存储区满时,应删除使用最少的证书。
( 4)证书废止的申请私钥泄露有两种情况,可以相应地采取相应的废止方式:
( a)故意泄露。这时证书的持有者应以电话或书面方式,通知相应 CA。
( b)证书中包含的证书持有者已终止或某组织关系已终止。这时应由原关系中组织出面通知 ORA
或 CA。
具体处理过程为:如果 ORA得到通知,应通知相应的 CA;作废请求被确认后,CA在数据库中将该证书记上作废标记,并在发布 CRL时将之加入,
并标明作废时间。
( 5) CRL的获取
CRL的获取可以有多种方式,如
CA产生 CRL后,自动发送到下属各实体。
使用证书的各 PKI实体从目录服务器获得相应的 CRL。
4,交叉认证每个 CA只可能覆盖某一范围,称为 CA域或 PKI域。
当属于不同的 CA域的用户需要安全地交换信息时,
就需要引入交叉证书和交叉认证。
交叉认证是第三方信任的扩展。在两个 CA之间的交叉认证可以采用下面的方法:
( 1)一个给定的 CA可以承认另一个 CA在某个名字空间(或其中给定的一部分)中,被授权颁发的证书。在此前提下,不同的 PKI域间建立互操作路径。
( 2)交换根 CA( PKI层次中的最高层)的密钥。
5,审计
PKI体系中的任何实体都可以进行审计。审计信息包括:产生密钥对、密钥泄密报告、
证书请求、证书的请求、证书中包含的某种关系等。审计一般由 CA执行,并由 CA保存所有有关安全的审计信息。
6,存档
CA产生的证书,CRL、有关文件、审计信息和有关法律规定等,都应归档,作为历史文件保存。
习 题
1,假定数据在信道上是加密传输的,那么采用
MAC认证就会呈现两种方式:
( 1)对明文认证,即在发送方将报文及其 MAC一起加密,接收方解密后,分成两部分,再对解密后的明文生成 MAC‘与传输来的 MAC进行比较。
( 2)对密文认证,几接收方在未解密前先对报文的密文生成 MAC‘与由 A方传送来的 MAC的密文进行比较。
用图示说明以上两种 NAC认证方式的认证过程。
2,分析消息认证码可能遭受的攻击。
3,查找资料,描述 MD5算法的处理过程,并针对
DH5设计一个攻击算法。
4,查找资料,描述 SHA算法的处理过程。
5,描述报文鉴别码和杂凑码的区别。
6,简述口令可能会遭受哪些攻击。
7,如何保护 IC卡的安全?
8,简述生物特征认证的发展趋势。
9,在身份验证中,可能会遇到重放攻击。重放具有如下几种形式:
简单的重放:攻击者简单地复制信息,经过一段时间后,
再重放原来的信息。
重放不能被检测到:这时,原始的信息不能到达,只有重放信息到达目的地。
没有定义的重放返回:发送者这时很难确定是发送信息还是接收信息。
请考虑如何确保能确定信息是不是重放的信息?
10,请画出带有时间戳的基于秘密密钥的身份验证过程。
11,简述数字签名的用途和基本流程。
12,要将名文 M由 A1并附有 A1,A2,…Ai,…,
An的依次签名发往 B。设 PKAi和 SKAi分别为 Ai的公开密钥和私有密钥,在签名时要求每一位签名者只验证其前一位签名者的签名;如果验证通过,
则在此基础上加上自己的签名,否则终止签名;
最后一位签名者在签名完成后将最终信息和签名一起发送出去。每一位签名者都可以推算出前一位签名者和后一位签名者并且知道他们的公开密钥。试设计该多人签名算法。
13,查阅相关资料,比较各种数字签名算法的优缺点。
14,何为重放攻击?请举例说明。
15,可信第三方有些什么作用?
16,数字签名进程需要哪些数据?
17,查阅资料,简述有关 PKI的标准及其相关产品。
18,PKI可以提供哪些安全服务?
19,PKI体系中包含了哪些与信任有关的概念?