PKI详解

一、 什么是PKI?

官方定义:PKI是Public Key Infrastructure的首字母缩写,翻译过来就是公钥基础设施;PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。PKI技术是一种遵循既定标准的密钥管理平台,它的基础是加密技术,核心是证书服务,支持集中自动的密钥管理和密钥分配,能够为所有的网络应用提供加密和数字签名等密码服务及所需要的密钥和证书管理体系。

通俗理解:PKI就是利用公开密钥理论和技术建立提供安全服务的、具有通用性的基础设施,是创建、颁发、管理、注销公钥证书所涉及的所有软件、硬件集合体,PKI可以用来建立不同实体间的"信任"关系,它是目前网络安全建设的基础与核心。PKI的主要任务是在开放环境中为开放性业务提供基于非对称密钥密码技术的一系列安全服务,包括身份证书和密钥管理、机密性、完整性、身份认证和数字签名等。

因此,用户可利用PKI平台提供的服务进行电子商务和电子政务应用。

二、 PKI技术原理与组成架构

2.1 PKI技术要解决哪些问题

先了解什么是密钥?什么是证书?

密钥在我之前写的"密码学原理"文章里有提到过。

密钥通俗理解就是你想传送文件和数据时,怕被别人截获后看到,就在传输前用一种算法加上密,使别人截获了也不容易得到明文,然后接受方得到密文后,解密出来就可以看到你传给他的数据和文件了。密钥的作用就是保密,算法是加密的方法。

证书的通俗理解:要开车得先考驾照,驾照上面记有本人的照片、姓名、出生日期等个人信息,以及有效期、准驾车辆的类型等信息,并由公安局在上面盖章。我们只要看到驾照,就可以知道公安局认定此人具有驾驶车辆的资格。

证书其实和驾照很相似,里面记有姓名、组织、邮箱地址等个人信息,以及属于此人的公钥,并由认证机构( Certification Authority. Certifying Authority, CA )施加数字签名。只要看到公钥证书,我们就可以知道认证机构认定该公钥的确属于此人。公钥证书也简称为证书( certificate)。

2.2 PKI的组成

PKI作为一组在分布式计算系统中利用公钥技术和X.509证书所提供的安全服务,企业或组织可利用相关产品建立安全域,并在其中发布密钥和证书。在安全域内,PKI管理加密密钥和证书的发布,并提供诸如密钥管理(包括密钥更新,密钥恢复和密钥委托等)、证书管理(包括证书产生和撤销等)和策略管理等。PKI产品也允许一个组织通过证书级别或直接交叉认证等方式来同其他安全域建立信任关系。这些服务和信任关系不能局限于独立的网络之内,而应建立在网络之间和Internet之上,为电子商务和网络通信提供安全保障,所以具有互操作性的结构化和标准化技术成为PKI的核心

一个典型的PKI系统如上图所示,其中包括PKI策略、软硬件系统、证书机构CA、注册机构RA、证书发布系统等。

1.PKI安全策略建立和定义了一个组织信息安全方面的指导方针,同时也定义了密码系统使用的处理方法和原则。它包括一个组织怎样处理密钥和有价值的信息,根据风险的级别定义安全控制的级别。一般情况下,在PKI中有两种类型的策略:一是证书策略,用于管理证书的使用,比如,可以确认某一CA是在Internet上的公有CA,还是某一企业内部的私有CA;另外一个就是CPS(Certificate Practice Statement)。一些由商业证书发放机构(CCA)或者可信的第三方操作的PKI系统需要CPS。这是一个包含如何在实践中增强和支持安全策略的一些操作过程的详细文档。它包括CA是如何建立和运作的,证书是如何发行、接收和废除的,密钥是如何产生、注册的,以及密钥是如何存储的,用户是如何得到它的等等。

2. 证书机构CA是PKI的信任基础,它管理公钥的整个生命周期,其作用包括:发放证书、规定证书的有效期和通过发布证书废除列表(CRL)确保必要时可以废除证书。

3. 注册机构RA提供用户和CA之间的一个接口,它获取并认证用户的身份,向CA提出证书请求。它主要完成收集用户信息和确认用户身份的功能。这里指的用户,是指将要向认证中心(即CA)申请数字证书的客户,可以是个人,也可以是集团或团体、某政府机构等。注册管理一般由一个独立的注册机构(即RA)来承担。它接受用户的注册申请,审查用户的申请资格,并决定是否同意CA给其签发数字证书。注册机构并不给用户签发证书,而只是对用户进行资格审查。因此,RA可以设置在直接面对客户的业务部门,如银行的营业部、机构认识部门等。当然,对于一个规模较小的PKI应用系统来说,可把注册管理的职能由认证中心CA来完成,而不设立独立运行的RA。但这并不是取消了PKI的注册功能,而只是将其作为CA的一项功能而已。PKI国际标准推荐由一个独立的RA来完成注册管理的任务,可以增强应用系统的安全。

4. 证书发布系统负责证书的发放,如可以通过用户自己,或是通过目录服务。目录服务器可以是一个组织中现存的,也可以是PKI方案中提供的。

一个简单的PKI系统包括证书机构CA、注册机构RA和相应的PKI存储库。CA用于签发并管理证书;RA可作为CA的一部分,也可以独立,其功能包括个人身份审核、CRL管理、密钥产生和密钥对备份等;PKI存储库包括LDAP目录服务器和普通数据库,用于对用户申请、证书、密钥、CRL和日志等信息进行存储和管理,并提供一定的查询功能。

2.3 PKI体系的关键技术

1、CA框架模型

证书机构CA用于创建和发布证书,它通常为一个称为安全域(security domain)的有限群体发放证书。创建证书的时候,CA系统首先获取用户的请求信息,其中包括用户公钥(如果用户端是个人使用或者测试用,则公钥一般由用户端产生,如电子邮件程序或浏览器等或者使用第三方开发的具有独立CSP的智能终端如USBkey),CA将根据用户的请求信息产生证书,并用自己的私钥对证书进行签名。其他用户、应用程序或实体将使用CA的公钥对证书进行验证。如果一个CA系统是可信的,则验证证书的用户可以确信,他所验证的证书中的公钥属于证书所代表的那个实体。

CA还负责维护和发布证书废除列表CRL(certificate revocation lists,又称为证书黑名单)。当一个证书,特别是其中的公钥因为其他原因无效时(不是因为到期),CRL提供了一种通知用户和其他应用的中心管理方式。CA系统生成CRL以后,要么是放到LDAP服务器中供用户查询或下载,要么是放置在Web服务器的合适位置,以页面超级连接的方式供用户直接查询或下载。

一个典型的CA系统包括安全服务器、注册机构RA、CA服务器、LDAP目录服务器和数据库服务器等。如下图所示:

安全服务器:安全服务器面向普通用户,用于提供证书申请、浏览、证书撤消列表以及证书下载等安全服务。安全服务器与用户的的通信采取安全信道方式(如SSL的方式,不需要对用户进行身份认证)。用户首先得到安全服务器的证书(该证书由CA颁发),然后用户与服务器之间的所有通信,包括用户填写的申请信息以及浏览器生成的公钥均以安全服务器的密钥进行加密传输,只有安全服务器利用自己的私钥解密才能得到明文,这样可以防止其他人通过窃听得到明文。从而保证了证书申请和传输过程中的信息安全性。

CA服务器:CA服务器使整个证书机构的核心,负责证书的签发。CA首先产生自身的私钥和公钥(密钥长度至少为1024位),然后生成数字证书,并且将数字证书传输给安全服务器。CA还负责为操作员、安全服务器以及注册机构服务器生成数字证书。安全服务器的数字证书和私钥也需要传输给安全服务器。CA服务器是整个结构中最为重要的部分,存有CA的私钥以及发行证书的脚本文件,出于安全的考虑,应将CA服务器与其他服务器隔离,任何通信采用人工干预的方式,确保认证中心的安全。

注册机构RA:登记中心服务器面向登记中心操作员,在CA体系结构中起承上启下的作用,一方面向CA转发安全服务器传输过来的证书申请请求,另一方面向LDAP服务器和安全服务器转发CA颁发的数字证书和证书撤消列表。

LDAP服务器:LDAP服务器提供目录浏览服务,负责将注册机构服务器传输过来的用户信息以及数字证书加入到服务器上。这样其他用户通过访问LDAP服务器就能够得到其他用户的数字证书。

数据库服务器:数据库服务器是认证机构中的核心部分,用于认证机构中数据(如密钥和用户信息等)、日志合统计信息的存储和管理。实际的的数据库系统应采用多种措施,如磁盘阵列、双机备份和多处理器等方式,以维护数据库系统的安全性、稳定性、可伸缩性和高性能。

2、密钥管理

密钥管理也是PKI(主要指CA)中的一个核心功能,主要是指密钥对的安全管理,包括密钥产生、密钥备份、密钥恢复和密钥更新等。

(1)密钥产生 密钥对的产生是证书申请过程中重要的一步,其中产生的私钥由用户保留,公钥和其他信息则交于CA中心进行签名,从而产生证书。根据证书类型和应用的不同,密钥对的产生也有不同的形式和方法。对普通证书和测试证书,一般由浏览器或固定的终端应用来产生,这样产生的密钥强度较小,不适合应用于比较重要的安全网络交易。而对于比较重要的证书,如商家证书和服务器证书等,密钥对一般由专用应用程序或CA中心直接产生,这样产生的密钥强度大,适合于重要的应用场合。 另外,根据密钥的应用不同,也可能会有不同的产生方式。比如签名密钥可能在客户端或RA中心产生,而加密密钥则需要在CA中心直接产生。

(2)密钥备份和恢复 在一个PKI系统中,维护密钥对的备份至关重要,如果没有这种措施,当密钥丢失后,将意味着加密数据的完全丢失,对于一些重要数据,这将是灾难性的。所以,密钥的备份和恢复也是PKI密钥管理中的重要一环。 使用PKI的企业和组织必须恩能够得到确认:即使密钥丢失,受密要加密保护的重要信息也必须能够恢复,并且不能让一个独立的个人完全控制最重要的主密钥,否则将引起严重后果。 企业级的PKI产品至少应该支持用于加密的安全密钥的存储、备份和恢复。密钥一般用口令进行保护,而口令丢失则是管理员最常见的安全疏漏之一。所以,PKI产品应该能够备份密钥,即使口令丢失,它也能够让用户在一定条件下恢复该密钥,并设置新的口令。 例如,在某些情况下用户可能有多对密钥,至少应该有两个密钥:一个用于加密,一个用于签名。签名密要不需要备份,因为用于验证签名的公钥(或公钥证书)广泛发布,即使签名私钥丢失,任何用于相应公要的人都可以对已签名的文档进行验证。但PKI系统必须备份用于加密的密钥对,并允许用户进行恢复,否则,用于解密的私钥丢失将意味着加密数据的完全不可恢复。 另外,使用PKI的企业也应该考虑所使用密钥的生命周期,它包括密钥和证书的有效时间,以及已撤销密钥和证书的维护时间等。

(3)密钥更新 对每一个由CA颁发的证书都会有有效期,密钥对生命周期的长短由签发证书的CA中心来确定,各CA系统的证书有效期限有所不同,一般大约为2-3年。 当用户的私钥被泄漏或证书的有效期快到时,用户应该更新私钥。这时用户可以废除证书,产生新的密钥对,申请新的证书。

2.4 通过一个案例描述剖析PKI技术原理实现过程

案例描述如下:甲想将一份合同文件通过Internet发给远在国外的乙,此合同文件对双方非常重要,不能有丝毫差错,而且此文件绝对不能被其他人得知其内容。如何才能实现这个合同的安全发送?

问题1:最自然的想法是,甲必须对文件加密才能保证不被其他人查看其内容,那么,到底应该用什么加密技术,才能使合同传送既安全又快速呢?

可以采用一些成熟的对称加密算法,如DES、3DES、RC5等对文件加密。对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法。

问题2:如果黑客截获此文件,是否用同一算法就可以解密此文件呢?

不可以,因为加密和解密均需要两个组件:加密算法和对称密钥,加密算法需要一个对称密钥来解密,黑客并不知道此密钥。

问题3:既然黑客不知密钥,那么乙怎样才能安全地得到其密钥呢?

用电话通知,若电话被窃听,通过Internet发送此密钥给乙,可能被黑客截获,怎么办?

方法是用非对称密钥算法加密对称密钥后进行传送。与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(Public Key)和私有密钥(Private Key)。公开密钥与私有密钥是一对,如果公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫做非对称加解密算法(公/私钥可由专门软件生成)。甲乙双方各有一对公/私钥,公钥可在Internet上传送,私钥自己保存。这样甲就可以用乙的公钥加密问题1中提到的对称加密算法中的对称密钥。即使黑客截获到此密钥,也会因为黑客不知乙的私钥,而解不开对称密钥,因此解不开密文,只有乙才能解开密文。

问题4:既然甲可以用乙的公钥加密其对称密文,为什么不直接用乙的公钥加密其文件呢?这样不仅简单,而且省去了用对称加密算法加密文件的步骤?

不可以这么做。因为非对称密码算法有两个缺点:加密速度慢,比对称加密算法慢10~100倍,因此只可用其加密小数据(如对称密钥),另外加密后会导致得到的密文变长。因此一般采用对称加密算法加密文件,然后用非对称算法加密对称算法所用到的对称密钥。

问题5:如果黑客截获到密文,同样也截获到用公钥加密的对称密钥,由于黑客无乙的私钥,因此它解不开对称密钥,但如果他用对称加密算法加密一份假文件,并用乙的公钥加密一份假文件的对称密钥,并发给乙,乙会以为收到的是甲发送的文件,会用其私钥解密假文件,并高兴地阅读其内容,但不知已经被替换,换句话说,乙并不知道这不是甲发给他的,怎么办?

答案是用数字签名证明其身份。数字签名是通过散列算法,如MD5、SHA-1等算法从大块的数据中提取一个摘要。而从这个摘要中不能通过散列算法恢复出任何一点原文,即得到的摘要不会透露出任何最初明文的消息,但如果原信息受到任何改动,得到的摘要却肯定会有所不同。因此甲可以对文件进行散列算法得到摘要,并用自己的私钥加密,这样即使黑客截获也无用,黑客不会从摘要内获得任何信息,但乙不一样,他可用甲的公钥解密,得到其摘要(如果公钥能够解开此摘要,说明此摘要肯定是甲发的,因为只有甲的公钥才能解开用甲的私钥加密的信息,而甲的私钥只有甲自己知道),并对收到的文件(解密后的合同文件)也进行同样的散列算法,通过比较其摘要是否一致,就可得知此文件是否被篡改过(因为若摘要相同,则肯定信息未被改动,这是散列算法的特点)。这样不仅解决了证明发送人身份的问题,同时还解决了文件是否被篡改的问题。

问题6:通过对称加密算法加密其文件,再通过非对称算法加密其对称密钥,又通过散列算法证明发送者身份和其信息的正确性,这样是否就万无一失了?

回答是否定的。问题在于乙并不能肯定他所用的所谓的甲的公钥一定是甲的,解决办法是用数字证书来绑定公钥与公钥所属人。

数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件,是网络通信中标识通信各方身份信息的一系列数据,它提供了一种在Internet上验证身份的方式,其作用类似于司机的驾驶执照或日常中的身份证,人们可以在交往中用它来识别对方的身份。

最简单的证书包含一个公开密钥,名称以及证书授权中心的数字签名。一般情况下证书还包含有密钥的有效时间、发证机关(证书授权中心)名称、该证书的序列号等信息。它是由一个权威机构—CA机构,又称为证书授权(Certificate Authority)中心发放的。CA机构作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书,CA是PKI的核心,负责管理PKI结构下的所有用户(包括各种应用程序)的证书,把用户的公钥和用户的其他信息捆绑在一起,在网上验证用户的身份。

因为数字证书是公开的,就像公开的电话簿一样,在实践中,发送者(即甲)会将一份自己的数字证书的拷贝连同密文、摘要等放在一起发送给接收者(即乙),而乙则通过验证证书上权威机构的签名来检查此证书的有效性(只需用那个可信的权威机构的公钥来验证该证书上的签名就可以了),如果证书检查一切正常,那么就可以相信包含在该证书中的公钥的确属于列在证书中的那个人(即甲)。

问题7:至此似乎很安全了。但仍存在安全漏洞,例如:甲虽将合同文件发给乙,但甲拒不承认在签名所显示的那一刻签署过此文件(数字签名就相当于书面合同的文字签名),并将此过错归咎于电脑,进而不履行合同,怎么办?

解决办法是采用可信的时钟服务(由权威机构提供),即由可信的时间源和文件的签名者对文件进行联合签名。在书面合同中,文件签署的日期和签名一样均是十分重要的防止文件被伪造和篡改的关键性内容(例如合同中一般规定在文件签署之日起生效)。在电子文件中,由于用户桌面时间很容易改变(不准确或可人为改变),由该时间产生的时间戳不可信赖,因此需要一个第三方来提供时间戳服务(数字时间戳服务(DTS)是网上安全服务项目,由专门的机构提供)。此服务能提供电子文件发表时间的安全保护。

时间戳产生的过程为:用户首先将需要加时间戳的文件用哈希编码加密形成摘要。然后将该摘要发送到DTS,DTS在加入了收到文件摘要的日期和时间信息后再对该文件加密(数字签名),然后送回用户。因此时间戳(time-stamp)是一个经加密后形成的凭证文档,它包含三个部分:需加时间戳的文件的摘要,DTS收到文件的日期和时间,DTS的数字签名。由于可信的时间源和文件的签名者对文件进行了联合签名,进而阻止了文档签名的那一方(即甲方)在时间上欺诈的可能,因此具有不可否认性。

问题8:有了数字证书将公/私钥和身份绑定,又有权威机构提供时钟服务使其具有不可否认性,是不是就万无一失了?不,仍然有问题。乙还是不能证明对方就是甲,因为完全有可能是别人盗用了甲的私钥(如别人趁甲不在使用甲的电脑),然后以甲的身份来和乙传送信息,这怎么解决呢?

解决办法是使用强口令、认证令牌、智能卡和生物特征等技术对使用私钥的用户进行认证,以确定其是私钥的合法使用者。

解决这个问题之前我们先来看看目前实现的基于PKI的认证通常是如何工作的。以浏览器或者其他登记申请证书的应用程序为例说明,在第一次生成密钥的时候会创建一个密钥存储,浏览器用户会被提示输入一个口令,该口令将被用于构造保护该密钥存储所需的加密密钥。如过密钥存储只有脆弱的口令保护或根本没有口令保护,那么任何一个能够访问该电脑浏览器的用户都可以访问那些私钥和证书。在这种场景下,又怎么可能信任用PKI创建的身份呢?正因为如此,一个强有力的PKI系统必须建立在对私钥拥有者进行强认证的基础之上,现在主要的认证技术有:强口令、认证令牌、智能卡和生物特征(如指纹和眼膜等认证)。

以认证令牌举例:假设用户的私钥被保存在后台服务器的加密容器里,要访问私钥,用户必须先使用认证令牌认证(如用户输入账户名、令牌上显示的通行码和PIN等),如果认证成功,该用户的加密容器就下载到用户系统并解密。

通过以上问题的解决,就基本满足了安全发送文件的需求。下面总结一下这个过程,对甲而言整个发送过程如下:

1. 创建对称密钥(相应软件生成,并且是一次性的),用其加密合同,并用乙的公钥打包对称密钥。

2. 创建数字签名,对合同进行散列算法(如MD5算法)并产生原始摘要,甲用自己的私钥加密该摘要(公/私钥既可以自己创建也可由CA提供)。

3. 最后甲将加密后的合同、打包后的密钥、加密后的摘要,以及甲的数字证书(由权威机构CA签发)一起发给乙。

而乙接收加密文件后,需完成以下动作:

1. 接收后,用乙的私钥解密得到的对称密钥,并用对称密钥解开加密的合同,得到合同明文。

2. 通过甲的数字证书获得甲的公钥,并用其解开摘要(称作摘要1)。

3. 对解密后的合同使用和发送者同样的散列算法来创建摘要(称作摘要2)。

4. 比较摘要1和摘要2,若相同,则表示信息未被篡改,且来自于甲。

甲乙传送信息过程看似并不复杂,但实际上它由许多基本成分组成,如:对称/非对称密钥密码技术、数字证书、数字签名、证书发放机构(CA)、公开密钥的安全策略等,这其中最重要、最复杂的是证书发放机构(CA)的构建。

三、 PKI的主要应用场景

PKI提供的安全服务恰好可以满足电子商务、电子政务、网上银行、网上证券等金融业交易的安全需求,是确保这些活动顺利进行必备的安全措施,没有这些安全服务,电子商务、电子政务、网上银行、网上证券等都无法正常运作。

posted @ 2019-08-14 14:58  运维-小松松  阅读(14659)  评论(0编辑  收藏  举报