一次性进群,长期免费索取教程,没有付费教程。
ID:Computer-network
一、身份认证概述
网络环境下的认证不是对某个事物的资质审查,而是对事物真实性的确认。结合起来考虑,身份认证就是要确认通信过程中另一端的个体是谁(人、物、虚拟过程)。
那么,怎么知道通信的另一端是谁呢?通常,通信协议都要求通信者把身份信息传输过来,但这种身份信息仅用于识别,不能保证该信息是真实的,因为这个身份信息在传输过程中是可以被恶意篡改的。那么,怎样才能防止身份信息在传输过程中被恶意篡改呢?事实上要完全杜绝恶意篡改是不可能的,特别是在公共网络(如互联网)上传输的信息,而能做的,就是在身份信息被恶意篡改后,接收端可以很容易检测出来。
要识别真伪,首先要“认识”真实的身份。通过网络传递的身份可能是陌生人的身份,如何判断真伪?这里需要阐述一个观点:要识别真伪,必须先有信任。在网络环境下,信任不是对一个人的可靠性认可,而是表明已经掌握了被验证身份者的重要秘密信息,如密钥信息。假设A与B之间有一个得到确信的共享密钥,不管这个共享密钥是怎么建立的,他们之间就建立了相互信任。如果A确信掌握B的公开密钥,也可以说A对B建立了信任,但还不能说明B对A建立了信任。从上述讨论不难看到,在完全没有信任基础的情况下,新的信任是不能通过网络建立的,否则是不可靠的。
二、身份认证机制
身份认证的目的是鉴别通信中另一端的真实身份,防止伪造和假冒等情况发生。进行身份认证的技术方法主要是密码学方法,包括使用对称加密算法、公开密钥密码算法、数字签名算法等。
对称加密算法是根据Shannon理论建立的一种变换过程,该过程将一个密钥和一个数据充分混淆和置乱,使非法用户在不知密钥的情况下无法获得原始数据信息。当然一个加密算法几乎总伴随着一个对应的解密算法,并在对称密钥的参与下执行。典型的对称加密算法包括DES和AES。
公钥密码算法需要2个密钥和2个算法:一个是公开密钥,用于对消息的加密;一个是私钥(私有密钥),用于对加密消息的解密。根据名称可以理解,公开密钥是一个能公开的密钥,而私钥只能由合法用户掌握。典型的公钥密码算法包括RSA公钥密码算法和数字签名标准DSS。
数字签名实际是公钥密码的一种应用,其工作原理是,用户使用自己的私钥对某个消息进行签名,验证者使用签名者的公开密钥进行验证,这样就实现了只有拥有合法私钥的人才能产生数字签名(不可伪造性)和得到用户公钥的公众才可以进行验证(可验证性)的功能。
三、对“人”的认证
(一)基于口令的认证
基于口令的身份认证容易遭受如下安全攻击。
(1)字典攻击。攻击者可以把所有用户可能选取的密码列举出来生成一个文件,这样的文件被称为“字典”。当攻击者得到与密码有关的可验证信息后,就可以结合字典进行一系列的运算,来猜测用户可能的密码,并利用得到的信息来验证猜测的正确性。
(2)暴力破解。也称为“蛮力破解”或“穷举攻击”,是一种特殊的字典攻击。在暴力破解中所使用的字典是字符串的全集,对可能存在的所有组合进行猜测,直到得到正确的信息为止。
(3)键盘监听。按键记录软件以木马方式植入到用户的计算机后,可以偷偷地记录下用户的每次按键动作,从而窃取用户输入的口令,并按预定的计划把收集到的信息通过电子邮件等方式发送出去。
(4)搭线窃听。通过嗅探网络、窃听网络通信数据来获取口令。目前,常见的Telnet、FTP、HTTP等多种网络通信协议均用明文来传输口令,这意味着在客户端和服务器端之间传输的所有信息(包括明文密码和用户数据)都有可能被窃取。
(5)窥探。攻击者利用与用户接近的机会,安装监视设备或亲自窥探合法用户输入的账户和密码。窥探还包括在用户计算机中植入木马。
(6)社会工程学(SocialEngineering)。这是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等设置心理陷阱进行诸如欺骗、伤害等手段,取得秘密信息的手法。
(7)垃圾搜索。攻击者通过搜索被攻击者的废弃物(如硬盘、U盘、光盘等),得到与口令有关的信息。
为了尽量保证安全,在使用口令时通常需要注意以下几点:
(1)使用足够长的口令,不使用默认口令;
(2)不要使用结构简单的字母或数字,尽量增加密码的组合复杂度;
(3)避免在不同平台使用相同的口令,并且要定期更换口令。
图1动态口令的3种方式
(1)“挑战—应答”。“挑战—应答”认证机制中,通常用户携带一个相应的“挑战—应答”令牌,如图1(a)所示。令牌内置种子密钥和加密算法。用户在访问系统时,服务器随机生成一个挑战并将挑战数发送给用户,用户将收到的挑战数手工输入到“挑战—应答”令牌中,“挑战—应答”令牌利用内置的种子密钥和加密算法计算出相应的应答数,将应答数上传给服务器,服务器根据存储的种子密钥副本和加密算法计算出相应的验证数,和用户上传的应答数进行比较来实施认证。不过,这种方式需要用户输入挑战数,容易造成输入失误,操作过程较为繁琐。近年来,通过手机短信实现OTP验证码用得比较广泛。是目前主流的OTP验证方式,目前被广泛用于交易系统以及安全要求较高的管理系统中。
(二)双因子身份认证技术
在一些对安全要求更高的应用环境,简单地使用口令认证是不够的,还需要使用其他硬件来完成,如U盾、网银交易就使用这种方式。在使用硬件加密和认证的应用中,通常使用双因子认证,即口令认证与硬件认证相结合来完成对用户的认证,其中,硬件部分被认为是用户所拥有的物品。使用硬件设备进行认证的好处是,无论用户使用的计算机设备是否存在木马病毒,都不会感染这些硬件设备,从而在这些硬件设备内部完成的认证流程不受木马病毒的影响,从而可提高安全性。但另一方面,这些额外的硬件设备容易丢失,因此,需要双因子认证;也容易损坏,因此,在增加成本的同时,也带来更多不便利。
实际应用中,每个用户均拥有一个仅为本人所有的唯一私钥,用于进行解密和签名操作,同时还拥有与接收方相应的公钥用于文件发送时进行加密操作。当发送一份保密文件时,发送方使用接收方的公钥对该文件内容进行加密,而接收方则能够使用自己所有的相应私钥对该文件进行解密,从而保证所发送文件能够安全无误地到达目的地,并且,即使被第三方截获,由于没有相应的私钥,该第三方也无法对所截获的内容进行解密。
(三)生物特征识别认证技术
基于生物特征的识别技术较传统的身份认证具有很多优点,如保密、方便、不易遗忘、防伪性能较好、不易伪造或被盗、随身携带和随时随地使用等。也正是由于这些优点,很多国家已经在个人的身份证明证件中嵌入了持有者的生物特征信息,如嵌入指纹信息等。多个国家也在使用生物特征护照逐步替代传统护照。由Microsoft、IBM、NOVEL等公司共同成立的BioAPI联盟,其目标就是制定生物特征识别应用程序接口(API)工业标准。
指纹识别是人们最容易接触到的生物特征识别技术,目前,大多数公司都采用指纹识别设备对员工的考勤进行记录,与原有的射频卡设别技术相比,指纹识别的优点在于避免了员工忘记携带射频卡的情况发生,同时也可以减少员工相互替代打卡的行为。人的指纹信息通常在出生约9个月后成型且终身不会改变,且不同人具有相同指纹的概率极低,这种稳定性和唯一性使指纹可以作为生物特征识别的对象。指纹识别主要通过采集手指末端纹路的图案信息对其进行识别,指纹中的谷、脊和纹路的起始点、分叉点、中断点、转折点、汇合点等特征点提供了大量且详细的信息,通过对上述这些特征信息的采集就可以达到辨别身份的目的。指纹识别是目前造价最低、易用性最高、应用最广泛的基于生物特征识别的身份认证技术。同时该技术已经被政府及司法部门所接受,在全球范围内都建立了犯罪指纹数据库和指纹鉴定机构,随着网络的互联互通,各国政府可以通过网络交换生物特征数据,确定犯罪分子位置,提前预警或实施抓捕,极大地打击了流动的国际犯罪行为。
指纹录入的过程主要包括:
(1)通过指纹识别器采集指纹图像;
(2)对采集的指纹图像进行预处理;
(3)提取指纹图像的特征信息;
(4)对特征信息进行编码或加密等处理;
(5)将处理后的特征信息录入数据库,与个人ID相绑定。
指纹识别的过程主要包括:
(5)将处理后的特征信息与数据库中的特征信息进行对比,如果找到相同的特征信息,返回个人ID信息或验证成功提示,否则,返回验证失败提示。
指纹识别技术的核心在于指纹识别算法的设计,而指纹识别算法的主要目的是在指纹图像上找到并对比指纹的特征。
指纹的特征分为总体特征和局部特征。总体特征主要指肉眼可以观察的特征,如纹型[环形(Loop)、弓形(Arch)、螺旋形(Whorl)等]、模式区(PatternArea)、核心点(CorePoint)、三角点(Delta)、纹数(RidgeCount)等;局部特征主要是指纹上节点的特征,两枚指纹可能会存在相同的总体特征,但其局部特征却不可能完全相同。通过对指纹纹路中出现的中断、分叉、打折点等特征点的确认,可以唯一地确定一个人的指纹信息。有英国学者提出,在考虑局部特征的情况下,通过对比特征点,只要发现13个特征点重合,就可以认为是同一指纹。
虽然指纹识别具有很多优点,但也有一定的技术缺点:某些人或某些群体可能因为指纹特征过少或纹路过浅等原因很难成像,造成指纹识别设备无法采集(或误采集);非加密的指纹采集数据信息可能会造成个人指纹信息的泄露,而该信息一旦泄露,也正是由于稳定性和唯一性,个人指纹信息可能会被滥用,造成一定的经济损失或更严重的问题;指纹采集设备需要与手指相接触才可以读取指纹信息,采集设备头表面会留下用户的指纹印痕,这些指纹印痕存在被复制的可能性,通过手模等技术同样也可以复制个人的指纹信息。
其他的生物特征识别技术还有虹膜识别。虹膜是一个位于眼睛瞳孔和巩膜之间的环状区域。人眼图像中,虹膜区域的冠状物、环状物、斑点、细丝、水晶体、射线、皱纹等形成了特有的纹理,是人眼的典型特征。人的虹膜结构十分复杂,可变项多达260多项,且在一生中几乎不会发生变化,具有非常高的稳定性、唯一性、非侵犯性、高准确性、防伪性等优点,也因此被认为是可靠性最高的生物特征识别技术。
虹膜识别的过程主要包括:
(1)通过全自动照相设备采集人眼虹膜图像;
(2)对虹膜图像信息进行预处理,包括归一化、增强等;
(3)提取虹膜图像的特征信息;
(4)对特征信息进行编码或加密处理;
(5)将数据库中虹膜模板的特征向量与待识别的虹膜特征向量进行相似性对比,如果相似度超过某一阈值,则认为两虹膜图像来自同一眼睛。
虹膜识别的优点:便于用户使用;由于低错误率和识别率,虹膜识别可能是目前最可靠的生物识别技术;虹膜识别技术无需使用者与虹膜采集设备接触,避免了个人虹膜信息的物理泄露,同时也避免了疾病的传播。缺点:虹膜识别目前还没有唯一性认证的试验;采集设备尺寸较大,对采集精度有很高的要求,且设备造价昂贵;容易受外界环境影响,如虹膜图像采集时需要外部有较好的光源,否则可能产生图像采集不清晰或图像畸变。
基于生物特征信息的认证是目前身份认证的一个流行趋势。由于生物特征的唯一性、普遍性、长久性等特点,使利用生物特征的身份认证优于传统身份认证方式,具有广阔的应用前景和市场潜力。采用生物特征为身份识别带来诸多优势时,由于其自身固有的一些性质,在实际应用中也会碰到很多非常严峻的挑战,特别是安全问题,如对生物特征信息的存储安全问题、对认证算法的安全性问题等,都有待于学者们进一步地研究解决。同时目前还没有一种生物特征识别技术能够达到完美无缺的要求,如眼睛病变可能会导致使用者的虹膜发生变化,无法采用虹膜识别对其进行身份认证。因此,采用人的多种生理特征和(或)行为特征,综合多种数据进行身份识别,可以避免单生物特征识别带来的问题,进一步提高生物特征识别系统的准确率和可靠性,也是生物特征识别技术未来的一个发展趋势。
四、对“机”的认证
这里的“机”是指具有智能处理能力的电脑设备和大型计算平台。相对于人来说,“机”具有更好的记忆,因此,可以使用高熵密钥实现认证。对设备认证的传统方法是“挑战—应答”机制。为了更好地说明“挑战—应答”机制的工作原理,假设A和B之间已经建立起共享密钥k。A要对B发起认证,因此A发送一个随机数r给B,B使用共享密钥k对r进行加密,然后将加密结果c作为应答发送给A,A使用共享密钥k也对r进行加密,然后比较加密结果是否与c一致,若一致,则对B的认证通过;否则认证失败。事实上,用于认证的加密算法不必要可逆,即不一定是有相应解密算法的加密算法,可以使用带密钥的消息认证码作为挑战应答过程中的加密算法。
上述方案只是实现“挑战—应答”认证机制的一种,可以有多种方法。典型的“挑战—应答”认证机制是移动通信中对用户的认证。下面以GSM的认证过程为例说明实际中的“挑战—应答”认证是如何实现的。
在GSM系统中,用户终端设备(UE)有一个用户注册域(HLR)和一个用户访问域(VLR)。用户UE和注册域HLR之间有一个共享密钥Ki,这个密钥在用户购卡时就建立了。在实际使用过程中,用户UE首先与访问域VLR联系,访问域VLR跟用户注册域HLR联系,得到认证向量,然后VLR将认证向量中的挑战信息发送给用户,用户UE根据挑战信息进行应答,VLR根据用户应答信息情况判断是否为合法用户。具体流程如图2所示。
图2GSM系统中使用“挑战—应答”机制对用户的认证过程
在图2中,挑战信息RAND是一个随机数,对该挑战的应答信息RES是根据挑战信息RAND,使用共享密钥Ki和一种固定的密码算法A3计算得到的,RES=A3(Ki,RAND),XRES是用户注册域使用同样方法计算得到的,因此正常情况下应该满足RES=XRES。如果这一等式不成立,则请求入网的用户为非法用户,或哪里出了问题。另外,认证的目是为了数据的安全传输,因此,在GSM系统中,认证成功后会在用户UE和访问域VLR之间建立一个共享的临时会话密钥Kc=A8(Ki,RAND),以实现对接下来的数据通信(主要是语音)进行加密。
为什么要挑战应答呢?让用户终端直接告诉网络自己的身份不可以吗?当然不可以,因为终端会撒谎,不是终端设备撒谎,而是攻击者会假冒合法用户。如果使用共享密钥呢?如UE告诉网络说,“我是IDi,C=E(Ki,IDi)是加密确认”,其中,IDi是终端的真实身份,Ki是共享密钥,这看似也使用了共享密钥,但因为没有了挑战过程,传递的数据变成了恒定的,因此攻击者可以截获,然后实施重放攻击,即把截获到的信息(IDi,C)发送给网络,因为是合法密钥产生的C,当然可以成功假冒用户IDi。即使用户使用了随机数,也很难抵抗重放攻击。分析表明,使用“挑战—应答”是一种非常有效的抵抗重放攻击和许多其他假冒攻击的方法,但挑战信息的随机性或不可预测性对保证挑战应答机制的安全性是至关重要的。
五、对“物”的认证
图3一种轻量级认证加密方案
在图3的认证加密方案中,IDA为A的身份标识;Ctr为计数器,可以是系统时钟,每次加密都将递增;k为A与B的共享密钥,通常为对称密钥,否则很难满足轻量级的要求。协议的执行无需信息交互,只需要A向B发送数据的同时,附带一些认证信息,当B收到A发过来的数据后,首先检查Ctr是否合法,如果是计数器,则与自己的记录进行比对;如果是系统时钟,则检测是否在允许的范围内。然后根据节点A的身份信息找到加密密钥k进行解密,解密后的Ctr与解密前的Ctr进行对比,如果一致,则接受解密后的数据,否则作为异常情况处理。
不难看出,图3的认证协议可以看作是轻量级认证协议。首先,数据交互次数最少;其次,当数据较小时,整个认证数据量可以包含在一个数据分组(或数据帧)内,也最少;最后,只需要执行一次加密算法操作。虽然这不是一个单纯的身份认证,但其中身份认证的过程是完整的。
从安全性上来说,轻量级认证协议的安全性低于传统的身份认证协议,只能提供短期的安全和抵抗低成本的攻击手段,这对许多物联网感知节点的安全性来说已经足够了。
六、其他身份认证技术
上述几种认证技术是根据认证对象来分的。下面根据认证方法的不同,介绍几种身份认证技术。
(一)数字签名技术
数字签名(DigitalSignatures)是签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果,该结果只能用签名者的公钥进行验证,用于确认待签名数据的完整性、签名者身份的真实性和签名行为的抗抵赖性。
(1)数据完整性:由于签名本身和要传递的消息之间是有关联的,消息的任何改动都将引起签名的变化,消息的接收方在接收到消息和签名之后经过对比就可以确定消息在传输的过程中是否被修改,如果被修改过,则签名失效。这也显示出了签名是不能够通过简单的拷贝从一个消息应用到另一个消息上。
(2)真实性:由于与接收方的公钥相对应的私钥只有发送方有,从而使接收方或第三方可以证实发送者的身份。如果接收方的公钥能够解密签名,则说明消息确实是发送方发送的。
(3)不可否认性:签名方日后不能否认自己曾经对消息进行的签名,因为私钥被用在了签名产生的过程中,而私钥只有发送者才拥有,因此,只要用相应的公钥解密了签名,就可以确定该签名一定是发送者产生的。但是,如果使用对称性密钥进行加密,不可否认性是不被保证的。
数字签名的实施需要公钥密码体制,而公钥的管理通常需要公钥证书来实现,即通过公钥证书来告知他人所掌握的公钥是否真实。数字签名可以用来提供多种安全服务,包括数据完整性、数据起源鉴别、身份认证以及非否认等。数字签名的一般过程如下。
(1)证书持有者对信息M做杂凑,得到杂凑值H。国际上公开使用的杂凑算法有MD5、SHA1等,在我国必须使用国家规定的杂凑算法。
(2)证书持有者使用私钥对H变换得到S,变换算法必须跟证书中的主体公钥信息中标明的算法一致。
(4)依赖方构建从自己的信任锚开始、信息发布者证书为止的证书认证路径并验证该证书路径。如果验证成功,则相信该证书的合法性,即确认该证书,确实属于声称的持有者。
(5)依赖方使用证书持有者的证书验证对信息M的签名S。首先使用S中标识的杂凑算法对M做杂凑,得到杂凑值H';然后使用证书中的公钥对S变换,得到H"。比较H'与H",如果二者相等,则签名验证成功;否则签名验证失败。
数字签名可用于确认签名者身份的真实性,其原理与“挑战—响应”机制相同。为避免中间人攻击,基于数字签名的身份认证往往需要结合数字证书使用。例如,金融行业标准JR/T0025.7《中国金融集成电路(IC)卡规范第七部分:借记贷记应用安全规范》规定了一种基于数字签名的动态数据认证(DDA)过程。动态数据认证采用了一个三层的公钥证书方案。每一个IC卡公钥由它的发卡行认证,而认证中心认证发卡行公钥。这表明为了验证IC卡的签名,终端需要先通过验证2个证书来恢复和验证IC卡公钥,然后用这个公钥来验证IC卡的动态签名。
(二)数字证书
数字证书提供了一种网上验证身份的方式,主要采用公开密钥体制,还包括对称密钥加密、数字签名、数字信封等技术。可以使用数字证书,通过运用对称和非对称密码体制等密码技术建立起一套严密的身份认证系统,每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,通过数字的手段保证加密过程是一个不可逆过程,即只有用私有密钥才能解密,这样信息就可以安全无误地到达目的地了。因此,保证了信息除发送方和接收方外不被其他人窃取;信息在传输过程中不被篡改;发送方能够通过数字证书来确认接收方的身份;发送方对于自己的信息不能抵赖。
数字证书采用公钥密码体制,公钥密码技术解决了密钥的分配与管理问题。在电子商务技术中,商家可以公开其公钥,而保留其私钥。购物者可以用人人皆知的公钥对发送的消息进行加密,然后安全地发送给商家,商家用自己的私钥进行解密。而用户也可以用自己的私钥对信息进行加密,由于私钥仅为本人所有,这样就产生了别人无法生成的文件,即形成了数字证书。采用数字证书,能够确认以下两点:
(1)保证信息是由签名者自己签名发送的,签名者不能否认或难以否认;
(2)保证信息自签发后至收到为止未曾做过任何修改,签发的文件是真实文件。
根据用途的不同,数字证书可以分为以下几类。
(1)服务器证书(SSL证书):被安装在服务器设备上,用来证明服务器的身份和进行通信加密。服务器证书可以用来防止欺诈钓鱼站点。SSL证书主要用于服务器(应用)的数据传输链路加密和身份认证,绑定网站域名,不同的产品对于不同价值的数据要求不同的身份认证。
(3)客户端个人证书:主要被用来进行身份验证和电子签名。被存储在专用的智能密码钥匙中,使用时需要输入保护密码。使用该证书需要物理上获得其存储介质智能密码钥匙,且需要知道智能密码钥匙的保护密码,这也被称为双因子认证。这种认证手段是目前在Internet最安全的身份认证手段之一。
(三)匿名认证技术
匿名是指在一组由多个用户组成的匿名集中,用户不能被识别的状态。换言之,无法将这组对象中的用户或用户的行为进行任何关联。对象的匿名性必须是在一个对象集合中,以基于此类的对象集合组成一个匿名集合。例如,如果无法从一个发送者集合中找到信息的真实发送者,则实现发送匿名。匿名通信是指掩盖实际发生的通信链接关系,使窃听者无法直接获得或能够通过观察推测出通信参与方及参与方之间的通信链接关系。匿名通信的重要目的就是实现通信双方的身份匿名或者行动的无关联,为用户提供通信隐私保护和不可追踪性。匿名认证是指用户在证明自己身份合法性的同时能够确保自己身份信息、位置信息的匿名性。常见的实现匿名性的方法有零知识证明身份认证、假名认证等。匿名认证技术在RFID隐私性保护、智慧医疗系统的病例隐私性保护、网络投票有广泛应用。
实现匿名认证的另一种技术是零知识证明。零知识证明指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的,即证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄露任何关于被证明消息的信息。用零知识构造的身份认证协议可以在完成身份认证的同时不泄露任何身份信息,也就是实现了身份的匿名性。
(四)群组认证技术
群组认证是指证明方向验证方证明他是某个群体的合法成员,而验证者也只能验证该用户是否属于某个群体,不能知道证明者的具体身份。达到该目标的方法有群签名、环签名、集合认证等。
群签名就是满足这样要求的签名:一个群体中的任意一个成员可以以匿名的方式代表整个群体对消息进行签名。与其他数字签名一样,群签名是可以公开验证的,而且可以只用单个群公钥来验证,也可以作为群标志来展示群的主要用途、种类等。
环签名可以被视为一种特殊的群签名,它因签名按一定的规则组成一个环而得名。在环签名方案中,环中每个成员可以用自己的私钥和其他成员的公钥进行签名,却不需要得到其他成员的允许,而验证者只知道签名者来自这个环,但不知道具体的签名者。它没有可信中心、没有群的建立过程,对于验证者来说签名者是完全匿名的。环签名提供了一种匿名泄露秘密的巧妙方法。环签名的这种无条件匿名性在对信息需要长期保护的一些特殊环境中非常有用。
七、身份认证系统
在实际系统中,也有多种不同类型和适用于不同场景的身份认证系统。下面介绍几种有代表性的身份认证系统。
(一)Kerberos
1、Kerberos基本原理
(1)用户可以访问某些工作站,依赖这些工作站伪装成合法用户;
(2)用户可以改动工作站的IP地址从而伪装成其他的工作站;
(3)用户可以窃听工作站与服务器的交互信息,然后采用重放攻击非法进入服务器,获取服务。
在这样的一个环境下,所有的工作站、工作站系统、工作站地址以及任何网络中的物理设备都可能是不安全的,也无法信任。在整个网络中,任何人都可以有权在网络中读取、修改、插入数据等操作。在这种环境下,一般有如下几种方案可以采用:
(1)由客户端工作站确保用户或用户组的身份,由服务器提供基于用户标识ID的安全策略;
(2)要求客户端系统向服务器提供身份认证,相信客户端系统提供的用户身份;
(3)要求客户向服务器提供身份认证,同时需要服务器向客户提供身份认证。
在一个小型、封闭的环境中,所有系统属于同一个组织且被其访问,则应选择第一种方案或第二种方案。但对更为开放的网络互联环境而言,则应选择第3种方案保护用户信息和服务器资源。Kerberos支持第三种方案。Kerberos假设其体系机构为分布的客户/服务器体系结构,并拥有一个或多个Kerberos服务器提供认证服务。
图4Kerberos结构
如图4所示,Kerberos协议由以下3个部分所组成。
(1)密钥分发中心(KeyDistributionCenter)。KDC服务器有2个部件:Kerberos认证服务器(AS,AuthenticationServer)和一个授票服务器(TGS,TicketGrantingServer)。TGS和AS是2个独立的结构,在实际的部署过程中,可以是一个AS服务器和多个TGS服务器共同存在。
(2)客户端(Client)。需要向Server请求服务的被服务方。
当客户端准备向服务端请求服务时,它需要向KDC申请一个访问的Ticket,也就是常说的“票据”,客户端将获得的票据发给服务端请求身份验证。服务端验证通过才会向客户端提供服务。总体来说,完整的Kerberos认证过程包括了3个部分:
(1)服务交换认证,该过程主要完成客户端从AS访问一个TGS的许可票据;
(2)服务票据交换,该过程则是客户端从TGS获取一个访问服务器的许可票据;
(3)客户/服务器认证交换,即客户和服务器之间的认证过程,通过认证后客户方可获取服务。
图5Kerberos认证过程
如图5所示,一个完整的Kerberos(V4版)认证过程分以下几个步骤。
最后TGS利用会话密钥Ktmp将客户/服务器会话密钥Kc-s、访问服务器的票据Tickets以及客户和服务器的信息加密返回给客户,即:
2、KerberosV5的改进
KerberosV4是MIT针对Athena项目开发的认证协议,因此,V4存在诸如系统、协议依赖的缺陷。V5版本针对V4中的一些缺陷和问题做出改善,从而形成通用版的Kerberos,现在V5版本已经成为IETF的标准。与V4比较,KerberosV5在以下几个方面做了一些改进。
(1)认证流程,V5与V4的认证流程即消息交换的步骤基本一致,V5版本对客户—服务器之间的认证交换做了些许改进,V5允许客户选择是否验证服务器,同时添加了子密钥和序列号2个内容,前者可以替代原来的临时会话密钥,后者防止重返攻击。
(2)票据内容,V5在V4的基础上添加了若干新的票据内容,例如,Realm标识用户域(这在Kerberos跨域认证中使用),Nonce标识是临时交互号确保交互流程的安全。
(3)票据标识,V5版本中添加了标识域,标识域内容提供了许多种类的功能,有些功能为用户所需,有些则是Kerberos服务开启和关闭的控制位。例如,INITIAL标识表示一个票据是AS所发布的而非TGS发布。INVALID标识代表一个票据是无效的,带有该标识的票据将会被应用服务器拒绝接受。
3、多Kerberos域的跨域访问
Kerberos协议支持在多个Kerberos域之间的跨域访问。如图6所示,域A和域B是以Kerberos协议作为认证机制的2个网络环境,每个域包括一个Kerberos服务器,该服务器维护了该域内所有用户的共享密钥信息和所有服务器的共享密钥信息。这样的域也称为Kerberos域。Kerberos协议提供在多个Kerberos子域之间的跨域访问,前提条件是2个子域的Kerberos服务器应该相互在对方系统上注册,也就是说2个Kerberos服务器应该共享一个通信密钥。
图6Kerberos跨域认证访问
(1)C请求TGTC→AS:IDv||IDTGS||TS1
(3)申请访问域BKerberos的票据:C→TGS:IDc||TGT||Authenticatior||TS3
(5)请求访问S的票据:C→TGSrealm:IDc||TicketTGSrealm|Authenticatior
(7)请求S服务器验证C→S:IDc||Tickets|Authenticator
(8)确认客户端,S→C:E(Kcs,TS7)
从上述过程可知,任何2个子域之间的访问比单个子域内的访问多两步,性能影响不大。但是这种多域之间跨域访问的方式需要任意2个Kerberos服务器之间相互注册并维护这些通信密钥,其复杂度随着子域数的增长成O(N2)。
4、Kerberos认证协议的优缺点
(二)公钥基础设施(PKI)
根据前面的论述,身份认证的目的是要确定对方的身份是否真实或合法。为了达到这一目的,需要建立初始信任。但在网络环境下,建立信任意味着建立一条安全通道(单向的或双向的)。这一任务在公钥密码提出之前非常困难、代价很高。公钥密码提出后,人们可以通过公钥密码手段传递秘密密钥,但公钥的真实性又难以保证。为了满足网络环境陌生人之间安全通信的需求,通过可信第三方的公钥基础设施被提出来,这样,当陌生的A与B想要建立一条安全路径时,可以寻找共同信任的第三方,在可信第三方的帮助下实现A对B所拥有的公钥的鉴别,从而建立从B到A的安全通道。
简单地说,公钥基础设施就是让可信第三方对用户的公钥签署证书,只要验证公钥证书的合法性,就可以相信公钥证书中所描述的公钥属主信息。
最后的问题是由谁来作CA。同样的回答是看具体情况。但不管是哪种情况,在整个世界都被Internet连接在一起的今天,没有谁能作全世界的CA,因为如果存在这样一个CA,它对用户的身份确认就是个问题,而且要服务世界范围内的用户,负担也太重,而且一旦网络出现问题或CA的服务器遭受攻击,所造成的损失太大。为了解决世界范围内,或者至少在较大范围内(如一个国家)能对公钥签署证书,公钥基础设施(PKI,PublicKeyInfrastructure)应运而生。PKI是一种签署和管理公钥证书的标准体系,它看起来似乎是件容易的事,但具体成为标准的话需要考虑很多方面的问题,如证书格式、证书的撤销和更新过程、证书的存放和查询、证书的验证,特别是跨CA证书的验证等。
PKI的原理简单描述如下。假定有一个证书签署中心(CA,CertificationAuthority)、一个证书注册中心(RA,RegistrationAuthority)、一个复杂的存放证书的公共数据库。证书的签署和使用等包括下列几个过程。
(1)证书签署:用户向CA证明自己的合法身份并提供公钥,CA对此公钥签署公钥证书。用户可以对公钥证书进行正确性验证。用户的公钥证书可以证明该公钥属于该用户,需要使用该用户公钥的人都可以在获取该证书后进行验证以确信公钥是真实的。
(2)证书存放:如何让其他需要使用该证书的用户得到该用户的公钥证书呢?最直观的方法是向该用户索取,但该用户并不是总处于在线状态,即使在线,也不一定能随时应答索取公钥证书的询问;另一种方法是将用户的公钥证书放在自己的个人网页上,但问题是并非所有用户都有自己的个人网页,即使有个人网页,需要使用该证书的用户也不一定容易找到该个人网页。因此,PKI的解决方案是将公钥证书放在一个标准数据库中,需要使用公钥证书的用户可以到该数据库查询。因此,当用户在申请到公钥证书时,需要到RA那里去注册,RA验证证书合法性后,将证书连同用户信息存放在证书数据库中。
(3)证书注销和更新:尽管公钥证书有其有效期,但由于各种原因,一个公钥证书可能在有效期内就需要更换或注销。当用户申请注销公钥证书时,用该公钥对应的私钥对一个固定格式的消息进行数字签名并传给RA,当RA验证签名合法后,将证书从数据库中删除,同时在一个叫做证书注销表(CRL)的数据库中添加被注销的证书信息。当用户需要更新自己的证书时,选取一个新的公钥,用原来公钥对应的私钥对新公钥进行签名,将签名信息传给CA,CA验证签名有效后签署一个新的公钥证书。用户再将该新公钥证书连同用原私钥签名的证书更新请求传给RA,RA在验证签名以及新证书的合法性后,将原来的证书从数据库中删除,添加新证书,同时在证书注销表中添加被注销的证书信息。
(4)证书的获取:当其他用户需要某个用户的公钥证书时,向RA提出咨询请求。RA根据请求所给出的用户信息查找到公钥证书,然后将公钥证书传给咨询者。有时候,咨询者已经有某个用户的公钥证书,只想查看一下该公钥证书是否仍然有效,对这种需求,RA只需检查CRL中是否包含所咨询的公钥证书的信息即可。为查询方便,每个公钥证书都有一个身份标识,因此,查询有效性时不需要把整个证书数据在网上传输,只需要传输证书的身份标识以及其是否被注销的信息即可。
(5)证书的验证:当得到某个用户的证书后,需要验证证书的合法性,以确定证书中所含的公钥信息的真实性。当验证者和证书持有人有相同的CA时,这个问题很容易解决,因为验证者知道CA的公钥信息,通过验证CA在证书上的数字签名,即可确定证书的合法性。但是,当验证者和证书持有人没有相同的CA时,这个问题就变得复杂多了。正如前面的讨论,单一CA的假设是不合理的,在大的应用范围内,必将由多个CA来完成证书签署工作。但RA和证书数据库可以只有一个,或在逻辑上只有一个,即实际分布式的数据库,使用的用户感知不到它的结构。对多个CA的情况,有几种不同的架构:自上而下的树状CA结构、双向树状CA结构、平级CA结构。下面分别简单介绍。
①自上而下的树状CA结构
有一个种子证书签发中心CA,它负责给一些子CA(如CA1,CA2,…,CAn)发放公钥证书。每个CAk又负责给自己的一些子CA(如CAk1、CAk2等)发放公钥证书。这样经过几层后,枝端的CA给用户发放公钥证书。这种树形结构如图7所示。
图7自上而下的树状CA结构
如图7所示,箭头表示发起端给指向端签署发放公钥证书。假设所有用户拥有种子CA的公钥信息。当一个用户得到另外某个用户的公钥证书时,自上而下进行验证。比如,当用户A得到用户X的公钥证书后,需要用CA的公钥来验证CA2的公钥证书的合法性,然后从CA2的公钥证书中得到CA2的公钥信息,再由此验证CA22的公钥证书的合法性,然后从CA22的公钥证书中得到CA22的公钥信息,再由此验证X的公钥证书的合法性,最后提取X的公钥信息。
自上而下的树状CA结构有其明显的缺点。首先,假设所有用户拥有CA的公钥信息有点困难,不是技术上做不到,而是假如让该系统在一定范围内使用,特别是在世界范围内使用,在哪里设置CA比较现实,这可能会遇到一些诸如政治因素等障碍。另外,即使A要验证C的公钥证书,也要通过自上而下的复杂过程,而通常的证书验证所跨越的CA数很少,因此,应该找到能使近距离证书验证更方便的方法。于是有了双向树状CA结构。
②双向树状CA结构
③平级CA结构
八、身份认证应用案例
近年来,互联网技术进入史无前例的发展和增长阶段,大量传统的业务系统也逐渐开始采用网络化、信息化的处理方式。这导致越来越多基于网络环境的应用系统不断涌现,系统的复杂程度和业务的特性与多样化的需求有着直接的关系。各式各样的应用系统不断提高了大型企业、高校、国家机构单位员工办公的效率,也极各样的应用系统不断提高了大型企业、高校、国家机构单位员工办公的效率,也极大地便利了企业管理。然而,随着需求的不断扩大,企业内部相对独立的系统数量在不断增长,例如,在高校里常有选课系统、图书馆管理系统、一卡通系统、教务系统等;在大型企业里有办公自动化系统(OA)、ERP系统、绩效管理系统、员工管理系统以及CRM系统等。然而,由于这些系统都是相对独立部署和独立使用,随着应用系统数量的不断增加,用户不得不牢记多套用户名和口令。
目前,统一身份认证平台得到了广泛的应用,比较著名的有Microsoft的.NetPassport,基于J2EE体系结构的Pubcooie、WebAuth、JOSSO(JAVAOpenSingleSign-On)等。市场上商用的统一身份认证平台比比皆是。但是总的来说,统一身份认证平台的基本原理和结构相对比较类似,而具体选择什么样的身份管理方式和认证方法则依赖于真实的环境需求。
(二)UNIT认证系统的基本结构
图9统一身份认证平台结构
图10账户映射关系
(2)统一证书管理。采用数字证书作为用户认证方式的统一身份管理系统集成证书管理服务,包括用户证书的申请、审批、核发、更新、吊销等生命周期。系统也可以不直接实现这一系列功能,并有第三方CA机构复杂办法和管理证书。为了安全的保存用户证书,用户手中一般都配备USBKey。另外,对于机密性要求高的环境,可以采用SSL建立专用秘密传输通道以提高平台的安全性。
(三)UNIT认证系统的身份认证
图12强身份认证方式
(1)用户名/口令认证
用户名/口令的方式认证用户身份是目前最普遍的认证方式,静态口令虽然是弱类型的身份认证,但是有技术结构简单、成本低的缺点,可以用于安全性相对需求不高的资源访问。例如,在查看个人信息时可以要求用户输入口令。
(2)智能卡认证
(3)生物识别
为增强认证的安全性,UNIT也采用了生物识别技术,如指纹识别,目的是进一步加强对用户的认证。
(1)用户访问目标应用系统,Web拦截器将截获用户的访问请求,首先,拦截器检查被请求的URL是否在无需保护的列表中。如果是则请求被拦截器放行,拦截器不再进行用户身份验证流程,用户访问正常。
(2)如果请求的资源需要身份认证和保护,则Web拦截器将检查请求中是否包含有效的Cookie,若存在Cookie,拦截器通过与统一认证服务器建立的SSL通道向认证服务器验证Cookie是否有效。如果请求有效,则拦截器通过用户的访问请求。
(5)用户携带有效的Cookie向应用系统发起访问请求,此时拦截器重复第(2)个步骤,确定用户的身份后放行访问请求。
九、数字证书应用案例
在传统的企业自有的网络中,企业中的各个分支机构及其客户是通过专用的线路连接的,即企业的员工之间、企业与其客户之间使用专门的网络设备相互连接在一起。随着Internet的应用以及电子商务的不断发展,企业员工移动办公的现象越来越普遍,企业的业务分支机构及其客户的分布越来越广泛。传统的网络连接的方式越来越无法适应此种商务模式。因此,越来越多的企业使用基于Internet的办公系统,如图15所示。
图15基于Internet的企业办公网络
面对这些威胁,企业需要建立全面的网络安全管理体系,具体包括:
(1)企业需制定网络的使用者及其访问的信息资源的安全方针,即这个用户或者组用户可以对哪些信息资源进行读、写、执行的操作;
(2)企业需制定网络的使用者所传输的信息的安全方针,即哪些信息需要加密、哪些信息需要防篡改、哪些信息需要防止被否认;
(3)企业需制定主机的安全方针,即在主机上安装哪些操作系统、入侵检测系统、反病毒系统、应用系统、数据库系统等;
(4)企业还需制定审计的方针,即定期审计网络的使用者及所访问的资源的审计记录、主机的审计记录以及应用系统的使用审计记录等,以便审计和跟踪安全事件的发生、运行及结果。
发布公文时,发布者使用所持有的智能密码钥匙对公文签名,并将签名隐藏在签章图片中,验证者取得持有者的证书,就可以验证此签名了。由于签名是利用发布者持有的私钥对公文的摘要加密的结果,而发布者是该私钥的唯一持有者,所以不能够否认他对公文的任何改动。另外,通过验证公文的摘要可判断公文是否完整。
下载公文时,服务器得到下载者的证书,使用证书中的公钥将加密了公文的密钥加密,并发送给下载者。由于下载者是对应私钥的唯一持有者,只有下载者能够解密并得到这个用来加密公文的密钥,从而解密得到公文的明文。同样地,上传公文时,先得到服务器的证书,用证书中的公钥将加密了公文的密钥加密,并发送给服务器。由于服务器是对应私钥的唯一的持有者,只有持有者能够解密并得到这个用来加密公文的密钥,从而可以解密公文。
数字证书以及智能密码钥匙的应用,是保障信息安全和访问控制的基础,为安全办公系统成功地运转提供坚固的支撑,使办公系统具备良好的安全性,有效地保护了公司的信息资源。