admin 管理员组

文章数量: 887021

要点:

1:了解身份认证的概念及意义;
2:了解各种认证协议的基本思想,重点掌握Kerberos工作原理;
3:了解公钥基础设施PKI的基本思想,重点掌握X.509协议;

4.1概述:

     随着互联网的不断发展,人们逐渐开始尝试在网络上购物、交易以及各种信息交流。然而黑客、木马以及网络钓鱼等恶意欺诈行为,给互联网络的安全性带来了极大的挑战。层出不穷的网络犯罪,引起了人们对网络身份的信任危机,如何证明“我是谁?”及如何防止身份冒用等问题已经成为人们必须解决的焦点问题,解决这些问题的唯一途径就是进行身份认证。

     身份认证是证实用户的真实身份与其所声称的身份是否相符的过程。身份认证的依据应包含只有该用户所特有的并可以验证的特定信息。主要包括三个方面。

    (1)用户所知道的或所掌握的信息,如密码、口令等。
    (2)用户所拥有的特定东西,如身份证、护照、密钥盘等。
    (3)用户所具有的个人特征,如指纹、笔迹、声纹、虹膜、DNA等。

     目前,实现身份认证的技术主要包括基于口令的认证技术、基于密码学的认证技术和生物特征的认证技术。基于口令的认证原理是通过比较用户输入的口令与系统内部存储的口令是否一致来判断其身份,基于口令的认证简单灵活,是目前最常使用的一种认证方式,但由于口令容易泄漏,其安全性相对较差。基于生物特征的认证是指通过计算机利用人体固有的生理特征或行为特征来识别用户的真实身份,生理特征与生俱来,多为先天性;行为特征则是习惯使然,多为后天性。生理和行为特征被统称为生物特征,常用的生物特征包括脸像、虹膜、指纹、声音、笔迹等。生物特征认证与传统的密码、证件等认证方式相比,具有依附于人体、不易伪造、不易模仿等优势。基于密码学的认证主要包括基于对称密钥的认证和基于公开密钥的认证,这部分会在后面的内容中详细介绍。
     考虑到认证数据的多种特征,身份认证可以进行不同的分类。根据认证条件的数目分类,仅通过一个条件的相符来证明一个人的身份,称为单因子认证;通过两种不同条件来证明一个人的身份,称为双因子认证;通过组合多种不同条件来证明一个人的身份,称为多因子认证。根据认证数据的状态来看,可以分为静态数据认证(Static Data Authentication,SDA)和动态数据认证(Dynamic Data Authentication,DDA)。静态数据认证是指用于识别用户身份的认证数据事先已产生并保存在特定的存储介质上,认证时提取该数据进行核实认证;而动态数据认证是指用于识别用户身份的认证数据不断动态变化,每次认证使用不同的认证数据,即动态密码。动态密码是由一种称为动态令牌的专用设备产生,可以是硬件也可以是软件,其产生动态密码的算法与认证服务器采用的算法相同.身份认证还有其他的分类方法,这里不再一一说明。作为信息安全必不可少的技术手段,身份认证在整个安全体系中占有十分重要的位置。

4.2认证协议:

     以网络为背景的认证技术的核心基础是密码学,对称密码和公开密码是实现用户身份识别的主要技术,虽然身份认证方式有很多,但归根结底都是以密码学思想为理论基础。实现认证必须要求示证方和验证方遵循一个特定的规则来实施认证,这个规则被称为认证协议,认证过程的安全取决于认证协议的完整性和健壮性。

4.2.1基于对称密钥的认证协议:

    基于对称密码体制下的认证要求示证方和验证方共享密钥,通过共享密钥来维系彼此的信任关系,实际上认证就是建立某种信任关系的过程.在一个只有少量用户的封闭式网络系统中,各用户之间的双人共享密钥的数量有限,可以采用挑战-应答方式来实现认证;对于规模较大的网络系统,一般采用密钥服务器的方式来实现认证,即依靠可信的第三方完成认证。
    为了更方便地进行协议描述,规定一些描述符号,具体如下:
    ◇A→B表示A向B发送信息;
    ◇Ek(x)表示使用共享密钥k对信息串x进行加密;
    ◇x||y表示信息串x和y相连接.
    1)基于挑战-应答方式的认证协议
    基于挑战-应答方式的认证协议实际上是由验证方生成一个大的随机数据串,即挑战,将挑战发送给示证方,示证方使用共享密钥加密挑战,然后回送给验证方,验证方通过解密密文得到挑战,通过验证挑战的正确与否,来认证示证方的身份。
    如图4.1所示,A和B通信为了核实对方的身份,B发送给A一个挑战Nb,A收到后使用A和B之间的共享密钥k对Nb进行加密,然后将密文发送给B,B使用k还原密文判断还原的内容与挑战Nb是否一致.在这个过程中B可以核实A的身份,因为只有A才能够使用k加密Nb。

                                                图4.1基于挑战-应答方式的认证协议

    2)Needham-Schroeder认证协议
    Needham-Schroeder协议是由Needham及Schroeder在1978年所设计的,是早期较有影响的依靠可信第三方的认证协议。在Needham-Schroeder认证协议中,所有的使用者共同信任一个公正的第三方,此第三方被称为认证服务。每个使用者需要在认证服务器(Authentication Server,AS)上完成注册,AS保存每一个用户的信息并与每一个用户共享一个对称密钥。实际上用户和AS之间的信任关系依靠它们的共享密钥来维系。
    Needham-Schroeder协议的具体描述如下。


      其中,KDC为AS的密钥分配中心,主要功能为用户生成并分发通信密钥Ks,Ka和Kb分别是用户A、B与AS之间的共享密钥,Needham-Schroeder协议的目的就是要安全地分发一个会话密钥Ks给A和B,A、B和KDC可以通过对称加密信息及挑战值来核实对方的身份,并取得信任。
      Needham-Schroeder协议虽然设计比较严密,但也存在漏洞。协议的第4、第5步目的是为了防止某种类型的重放攻击,特别是如果敌方能够在第3步捕获该消息,并重放,将在某种程度上干扰破坏B的运行操作.但假定攻击方C已经掌握A和B之间通信的一个老的会话密钥,C可以在第3步冒充A利用老的会话密钥欺骗B,除非B记住所有以前使用的与A通信的会话密钥,否则B无法判断这是一个重放攻击.如果C可以中途阻止第4步的握手信息,则可以冒充A在第5步响应,从这一点起C就可以向B发送伪造的消息,而对B来说,会认为是用认证的会话密钥与A进行的正常通信。

     3)Kerberos
     Kerberos是希腊神话中的一个拥有三个头和一个蛇形尾巴的狗,是地狱之门的守卫。20世纪80年代,美国麻省理工学院MIT启动了一个被称为Athena的网络安全计划,网络认证是该计划的重要组成部分,被命名为Kerberos,用来比喻是网络之门的保卫者,“三个头”分别指认证(Authentication)、簿记(Accounting)和审计(Audit)。
     Kerberos的设计目标是通过对称密钥系统为客户机/服务器应用程序提供强大的第三方认证服务。Kerberos的认证过程不依赖于主机操作系统的认证,无须基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。Kerberos作为一种可信任的第三方认证服务,是通过传统的共享密码技术来执行认证服务的,每个用户或应用服务器均与Kerberos分享一个对称密钥。Kerberos由两个部分组成,分别是一个AS和一个票据授予服务器(Ticket Granting Server,TGS)。Kerberos提供的认证服务,允许一个用户通过交换加密消息在整个网络上与另一个用户或应用服务器互相证明身份,一旦身份得以验证,Kerberos给通信双方提供对称密钥,双方进行安全通信对话。在Kerberos体系中,票据Ticket是客户端访问服务器时,提交的用于证明自己身份,并可传递通信会话密钥的认证资料。AS负贵签发访问TGS服务器的票据,TGS负责签发访问其他应用服务器的票据。
     Kerberos协议的认证过程分为三个阶段,共六个步骤,如图4.2所示。

                                                     图4.2 Kerberos 协议的认证过程

     4)Windows系统的安全认证:

     Windows 2000 Server作为网络操作系统,其用户登录时的身份认证过程也是采用对称密钥加密来完成的。每一个试图登录到Windows 2000 Server管理的网络上的用户必须是已经在主域控制器上进行了有效注册的合法用户,用户与主域控制器共享口令,在域控制器的安全用户管理(Security Accounts Manager,SAM)数据库(Database)中保存注册用户的用户名、口令的散列以及其他信息。
     图4.3为Windows用户登录认证具体过程,用户首先激活Winlogon窗口,并且输入用户名和口令,然后向域控制器发送登录请求,同时计算出口令的散列,口令及其散列不包含在登录请求信息中。域控制器收到登录请求后产生一个8字节的质询(挑战)并发送给客户端,同时取出给用户的口令散列,用此口令散列对质询进行散列计算(也称加密),得到质询散列。客户端收到8字节的质询后,首先使用前边计算得到的口令散列对质询进行散列计算,得到质询散列,随后将计算出的质询散列作为应答发送给域控制器。域控制器比对其计算出的质询散列和用户应答回送的质询散列,如果相同则登录认证通过,否则登录认证失败,同时向用户发送登录认证结果。在Windows 2000登录认证过程中,无需通过网络传输口令或口令散列,很好地保证了口令的安全。

                     图4.3 Windows用户登录认证过程

4.2.2基于公开密钥的认证协议:

     基于公开密钥体制下的认证协议通常有两种认证方式,方式一是实体A需要认证实体B,A发送一个明文挑战消息(也称挑战因子,通常是随机数)给B,B接收到挑战后,用自己的私钥对挑战明文消息加密,称为签名;B将签名信息发送给A,A使用B的公钥来解密签名消息,称为验证签名,以此来确定B是否具有合法身份。方式二是实体A将挑战因子用实体B的公钥加密后发送给B,B收到后是用自己的私钥解密还原出挑战因子,并将挑战因子明文发还给A,A可以根据挑战因子内容的真伪来核实B的身份。
    1)Needham-Schroeder公钥认证协议
    Needham和Schroeder在1978年所设计的Needham-Schroeder公钥认证协议,是一个双向认证协议,具体内容如下。

     2)基于CA数字证书的认证协议
     基于CA数字证书的认证协议也属于基于公开密钥的认证协议范畴,只是引入了一个可信的第三方来管理公钥并提供仲裁,在实际的网络环境中公钥是采用数字证书(Certificate)的形式来完成发布的.数字证书是一个经过权威的、可信赖的、公正的第三方机构(即CA认证中心,CA是Certificate Authority的缩写)签名的包含拥有者信息及公开密钥的文件。
     数宇证书绑定了公钥及其持有者的真实身份,它类似于现实生活中的居民身份证,所不同的是数字证书不再是纸质的证书,而是一段含有证书持有者身份信息并经过CA认证中心审核签发的电子数据,可以更加方便灵活地运用在电子商务和电子政务中。
     目前数字证书的格式普遍采用的是X.509V3国际标准,如图4.4所示,证书的内容包括证书版本、序列号、签名算法、签发者、有效期、主体唯一标识、公钥、证书颁发者的数字签名等。
    基于数字证书进行身份认证的过程如图4.5所示,共包括如下五个基本环节。

                   图4.4 X.509 V3的证书

                                                        图4.5  基于数字证书的身份认证过程

    (1)示证方A首先需要向CA提交相关注册资料,进行数字证书申请。

    (2)CA对A提供的资料进行审核,通过后向其颁发使用CA私钥签过名的数字证书,数字证书包含了A的身份信息和A的公钥,由于使用了CA的私钥签名,因此其他人无法伪造。
    (3)A使用私钥对特定信息进行签名,连同数字证书一起发送给B,B为验证方。
    (4)B为了能够核实A的数字证书的真伪,必须先获得CA的公钥。
    (5)B使用CA的公钥对A的数字证书进行合法性验证,通过后获得A的公钥,对A签过名的特定信息进行认证.通过这五个环节,B可以确认A的身份以及其签名的信息。

4.3 公钥基础设施PKI:

     为了解决Internet上电子商务等应用的安全问题,世界各国经过多年的研究,初步形成了一套完整的Internet安全解决方案,即目前被广泛采用的公钥基础设施(Public Key Infrastructure,PKI)。PKI是一种遵循一定标准的密钥管理基础平台,它能够为所有网络应用提供加密和数字签名等密码服务所必需的密钥和证书管理。简单来说,PKI就是利用公钥理论和技术建立的提供安全服务的基础设施。用户可利用PKI平台提供的服务进行安全的电子交易、通信和互联网上的各种活动。


4.3.1 PKI体系结构:


     PKI采用数字证书技术来管理公钥,通过第三方的可信任机构—CA认证中心把用户的公钥和用户的其他标识信息捆绑在一起,在互联网上验证用户的身份。如图4.6所示,在PKI的组成结构中,处在中心位置的是构建PKI的核心技术,即公钥算法和数字证书技术,在此技术基础上实现的PKI平台包括四个基本功能模块和一个应用接口模块。

                                  图4.6 PKI组成结构

    1)认证机构CA
    CA是PKI的核心执行机构,也称为认证中心。其主要功能包括数字证书的申请注册、证书签发和管理。其工作内容包括验证并标识证书申请者的身份,对证书申请者的信用度、申请证书的目的、身份的真实可靠性等问题进行审查,确保证书与身份绑定的正确性。确保CA用于签名证书的非对称密钥的质量和安全性。当服务范围较大时,CA还可以拆分出证书申请注册机构(Registration Authority,RA),专门负责证书的注册申请和撤销申请等管理工作。
    2)证书库
    证书库(Repository)是CA颁发证书和撤销证书的集中存放地,它像网上的“白页”一样,是网上的公共信息库,可供公众进行开放式查询.一般来说,查询的目的有两个:其一是想得到与之通信实体的公钥,其二是要验证通信对方的证书是否已进入“黑名单”。证书库的构造一般采用LDAP(Lightweight Directory Access Protocol 轻型目录访问协议)协议,搭建分布式的目录系统。
    3)密钥备份及恢复
    密钥备份及恢复是密钥管理的主要内容,用户由于某些原因将解密数据的密钥丢失,从而使已被加密的密文无法解开。为避免这种情况的发生,PKI提供了密钥备份与密钥恢复机制,即当用户证书生成时,密钥被CA备份存储,当需要恢复时,用户只需向CA提出申请,CA就会为用户自动进行密钥恢复。
    4)证书撤销处理
    证书撤销处理是PKI平台的另一重要工作,证书和密钥都有一定的生存期限。当用户的私钥泄漏或公司的某职员离职时,都需要撤销原CA证书。被撤销的CA证书将进入证书库的“黑名单”,用于公众来核实证书的有效性。
    5)PKI应用接口
    PKI应用接口是使用者与PKI交互的唯一途径,其重要性不言而喻。PKI应用接口也可以看成是PKI的客户端软件,使用者在其计算机中安装PKI的客户端软件,以实现数字签名、加密传输数据等功能。此外,客户端软件还负责在认证过程中,查询证书和相关证书的撤销信息以及进行证书路径处理、对特定文档提供时间戳请求等。

4.3.2基于X.509的PKI系统:


    X.509是国际电信联盟-电信(ITU-T)部分标准和国际标准化组织的证书格式标准。1988年X.509首次发布,1993年和1996年两次修订,当前使用的版本是X.509 V3,它加入了扩展字段支持,极大地增进了证书的灵活性。作为ITU-ISO目录服务系列标准的一部分,X.509的主要作用是确定了公钥证书结构的基准,X.509 V3证书包括一组按预定义顺序排列的强制字段,还有可选扩展字段,即使在强制字段中,X.509证书也具有很大的灵活性,因为它为大多数字段提供了多种编码方案。X.509标准在PKI中具有极其重要的地位,PKI由小变大,由原来的网络封闭环境到今天的分布式开放环境,X.509起了巨大的作用,可以说X.509标准是PKI的雏形。
    X.509的CA目录是一个层次结构,如图4.7所示,如果某用户x希望验证用户a的证书,而用户a的CA证书又是认证机构D签发的,则用户x只要得到认证机构D的公钥,就可以验证用户a的证书中D的签名,即完成对用户a的证书的认证,从而得到用户a的公钥。假如用户x不能确定D的公钥,就必须查看D的证书,由于D的证书是由认证机构C签发的,因此,用户x需要使用C的公钥验证D的证书并得到其公钥;以此类推,最坏的情况是用户x需要使用认证机构A的公钥,而A是此认证机构的根,A的证书也叫根证书,是使用其私钥自签名产生的,用户在使用CA证书之前必须先下载安装A的证书,同时系统会自动加载保存认证机构A的公钥。这个证书的认证路径构成了一个证书链,起点是根证书,终点为用户a的证书。用户a的证书链可以使用下面的形式表达:

                                                             图4.7基于X.509的层次型认证机构分布

     图4.8是一个典型的PKI模型,从图中可以看出一个CA认证机构主要包括RA服务器、CA服务器、安全服务器、LDAP服务器和数据库服务器,其中,RA是CA重要的组成部分,很多系统将它从CA服务器中分离出来,作为独立的功能单元。

                                                                图4.8 典型的PKI模型

     CA服务器是整个PKI系统的核心,负责证书的签发管理。CA首先产生自己的公私密钥对,生成自签名的根证书。然后需要为认证中心操作员、安全服务器、注册服务器RA等生成数字证书。完成了CA的初始建设,接下来就是为子CA认证机构和用户提供数字证书的签发、更新和撤销等服务。

     RA服务器主要面向业务受理操作员,负责登记、审核用户申请信息,包括注册申请和证书撤销申请,并将相关信息传给CA服务器和LDAP。
     安全服务器主要负贵RA服务器和CA服务器的安全,用户的各种请求操作都在其监管下进行,这些操作包括证书申请、浏览请求、证书撤销及证书下载等服务。

    LDAP是轻量目录访问协议的英文缩写,它是基于X.500标准的设计实现的,同时支持TCP/IP协议,便于Internet用户访问。LDAP是一个用来发布不同资源的目录信息的协议。通常它都作为一个集中的地址薄使用,不过根据组织者的需要,它可以做得更加强大.一般在LDAP目录中可以存储各种类型的数据:电子邮件地址、邮件路由信息、人力资源数据、公用密匙、联系人列表等信息.在PKI系统中,LDAP服务器负责将CA发送过来的用户信息、数字证和证书撤销列表等信息公布到网络上,提供给用户查询下载。
    数据库服务器主要用于存储认证机构中的数据(如密钥、用户信息等)、日志和统计信息,以便用户下载以及重要的数据备份。
    一个典型的PKI系统应该提供如下功能。
    (1)接收验证用户数字证书的申请。
    (2)确定是否接受用户数字证书的申请,即证书的审批。
    (3)向申请者颁发(或拒绝颁发)数字证书。
    (4)接收、处理用户的数字证书更新请求。
    (5)接收用户数字证书的查询、撤销。
    (6)产生和发布证书的有效期。
    (7)数字证书的归档。
    (8)密钥归档。
    (9)历史数据归档。

本文标签: 密钥 协议 对称 基础设施 身份认证