基于安全证书的PKI解决方案

2019-01-31 05:06郭建伟陈佳宇
天津科技 2019年1期
关键词:私钥公钥攻击者

郭建伟,燕 娜,陈佳宇

(北京市科学技术情报研究所 北京100044)

0 引 言

目前,国内外主流的网络身份认证系统是基于证书(PKI/CA)技术的认证模式。但是,PKI/CA认证模式存在不足,它是采用RSA(或ECC)算法和证书认证系统,PKI/CA是通过建立CA认证中心,为地区的多个网络节点提供第三方认证。由于PKI/CA的并发认证速度较慢,单一认证中心管理用户量不足,认证中心建设成本偏高,日常维护工作量较大;另外,PKI/CA的证书和公钥,是以明文方式存放在CA认证中心的数据库中,容易受到黑客的攻击,存在安全隐患,使得PKI技术在网络认证领域很难得到广泛应用。要实现网络实名制,必须同时解决认证安全性高、速度快、规模化、建设成本低、易于维护等难题。为此,我们提出一种使用加密卡(或加密机)硬件设备,将全部证书加密成密文,存储在CA认证中心的证书数据库中,保证证书的存储安全和运行安全,实现“芯片级”的PKI安全协议,提高PKI的安全等级。

1 PKI证书分析

(数字)证书是用于标识实体身份的电子信息[1],它由CA(证书)签发机构签发,一个证书中包含的信息如图1所示。

图1 实体身份的电子信息Fig.1 Electronic information of entity identity

图1中的信息就是一张证书的内容,其中签发者名、主体名采用的是X.500定义的甄别名格式,甄别名中通常包含有证书实体的名字,称为通用名。还包含:证书的公钥、签名的密码算法,以及实体所在的机构(O)、部门(OU),所在的国家、省或州(S),邮件(E)等信息,证书序列号(证书的标识)在对应的证书签发CA下是唯一的。

最终实体证书[2](对应用户的个人证书)由CA(证书)签发机构的私钥签名,而该CA签发机构私钥对应的公钥用于对最终实体证书的签名进行验证,以确定该证书的签名是否有效、证书是否由该CA签发机构签发。实际上,CA签发机构的公钥也是通过一个证书发布的,这个包含有CA签发机构公钥的证书,称为CA证书,并定义为中级CA证书(CA签发机构的证书)。该中级CA证书的主体名(即证书持有者名字),就是用该中级CA证书的私钥签发的最终实体证书中的签发者名(即证书的签发机构名字)。

与最终实体证书类似,该中级CA证书也是由CA签发机构的另一个私钥签名的,即:该私钥是CA签发机构的另一个公开密钥对的私钥,这个中级CA证书的主体名与签发者名必须不同(即使它们是指向同一个认证机构);该私钥对应的公钥,也对应有一个中级CA证书,称为前一个中级CA证书的上一级中级CA证书。该上一级的中级CA证书有可能再由CA签发机构的另一个公开密钥对的私钥签名,即它可能也有它的上一级的中级CA证书……当最上一级的中级CA证书的主体名与签发者名相同时,该中级CA证书是一个自签名的证书,被称为根CA证书(图2)。

图2 根证书的签发流程图Fig.2 Root certificate issuing flow chart

2 证书信任链的特征分析

从最终实体证书的签发者出发[3],可以找到对其签名的CA签发机构私钥对应的中级CA证书(最下一级的中级CA证书),即:最终实体CA证书的签发者名,是最下一级中级CA的主体名,用该中级CA的私钥对最终实体CA证书进行签名,用该中级CA的公钥验证最终实体CA证书的签名是否有效。从该最下一级中级CA证书的签发者,我们可以找到其上一级的中级CA证书,即:该CA证书的签发者名,是上一级中级CA的主体名,用上一级中级CA的私钥对该中级CA证书进行签名,用上一级中级CA的公钥验证该中级CA证书的签名是否有效。重复这个过程,直到遇到一个自签发的验证CA证书,即:根CA的签发者是根CA的主体名,用根CA的私钥对根CA证书进行签名,用根CA的公钥验证根CA证书的签名是否有效,同时,用根CA的私钥对下一级中级CA证书进行签名,用根CA的公钥验证下一级中级CA证书的签名是否有效。这一系列的最终实体证书、各个中级CA证书和根CA证书形成了一个证书链,也称为证书信任链,或证书信任路径(图3)。证书链的长度在理论上是没有限定的,它可以只包含有根CA证书,也可以包含有多个中级CA证书(根CA以下的CA证书都称为中级CA证书),甚至可以是仅包含一个自签名的最终实体证书(这种自签名最终实体证书通常用于特殊的场合)。

因此,在判断一个最终实体证书是否有效时,根CA证书起着极其重要的作用,它是证书信任的“根”[4]。验证一个实体证书的可信性,需要找到相关的各级中级CA证书和根CA证书,构造证书链,并需要确定证书链的根CA证书是否可信。

但是,全部最终实体CA证书都是以明文形式存放在CA认证中心的证书数据库中,对全部最终实体CA证书进行签名的中级证书,以及该中级CA证书的上一级的其他中级CA和根CA证书,也都是以明文形式存放在证书数据库里,这就给PKI的CA认证中心留下了安全隐患。

3 证书漏洞分析

证书的主要漏洞是:全部用户的最终实体CA证书、各个中级CA证书和根CA证书,都是以明文形式[5]分别存放在CA认证中心的证书数据库里,PKI的各种安全协议是在CA认证中心的服务器里运行,仅仅依靠CA认证中心的防火墙和防病毒系统无法保证它们的存储安全,国际标准化(公开)的PKI各种安全协议也为黑客攻击PKI系统提供了途经。

图3 实体证书的签发者流程图Fig.3 Flow chart for issuers of physical certificates

攻击者能够使用计算机病毒程序获取CA认证中心证书数据库中全体用户的证书。根据证书公开的内容获得如下重要信息:①该PKI系统采用的公钥密码算法类型和密钥长度,如RSA算法的密钥长度为512bit、1024bit、2048bit、4096bit,ECC算法的密钥长度为160bit、190bit等;②该PKI系统采用的摘要算法类型,如SHA-1摘要算法对文件摘要的长度为256bit,MD5摘要算法对文件摘要的长度为128bit。

攻击者通过对证书进行分析[6],伪造密钥对(公钥和私钥),通过分析确定了证书中哪些是最终实体证书,哪些是证书信任链中的中级CA证书和根CA证书,再伪造证书信任链上的所有证书的密钥对,来躲避PKI的安全自检系统对证书信任链的安全检测(即签名验证)。

4 攻击PKI的具体方法

首先,在客户端,攻击者可以从芯片生产商那里买含有PKI标准安全协议的加密芯片(USB-KEY),将伪造客户端对应的私钥和证书(这两组数据)写入USB-KEY里,存放在USB-KEY芯片里的PKI安全协议不用替换,从而在客户端USB-KEY里建立起基于伪造私钥和证书的各种PKI安全协议[7]。

之后,对CA认证中心端全体证书内容进行修改,主要篡改各个证书中的公钥和数字签名内容,证书中的其他内容都不变。先伪造每个证书的“密钥对”,并用伪造的根CA证书对应的公钥,来替换原根CA证书中的公钥,用伪造的根CA证书对应的私钥,对根CA证书进行签名并将伪造的签名代替根CA证书的原签名。同时,用伪造的根CA证书对应的私钥,对最上一级的中级CA证书进行签名,将该伪造的签名结果来代替原最上一级的中级CA证书中的签名;用伪造的最上一级的中级CA证书对应的公钥,来替换原最上一级的中级CA证书中的公钥,用伪造的最上一级的中级CA证书对应的私钥,对下一级中级证书进行签名,如此类推,用伪造的最下一级的中级CA证书对应的公钥,来替换原最下一级中级CA证书中的公钥,用伪造的最下一级的中级CA证书对应的私钥,分别来对全部用户的最终实体证书进行签名,得到全部用户的最终实体证书中的伪造签名,并用这些伪造签名代替原最终实体证书中的签名。这样,攻击者篡改了CA认证中心全体证书。

攻击者再利用病毒程序,将修改后的全体证书替换原CA认证中心证书数据库中的证书内容。CA认证中心端的公钥密码算法、摘要算法和各种安全协议都保持不变。另外,当证书吊销列表里只存储了证书的标识和证书的状态时,攻击者也不需要篡改证书吊销列表中的内容。若证书吊销列表里存储证书全部内容,则需要将伪造的证书替换证书吊销列表里的存储证书。至此,攻击者基本完成对CA认证中心端的攻击准备。

当CA认证中心为第三方提供密码认证时,攻击者不需要伪造WEB服务器证书就能对第三方WEB服务器进行攻击。由于CA认证中心将认证结果转发给应用系统WEB服务器,攻击者通过PKI安全协议的认证后已经成为合法用户,则CA认证中心里的安全协议直接调用该WEB服务器证书的公钥加密伪造的认证结果,并发送给应用系统的WEB服务器。在WEB服务器里,服务器证书对应的私钥再对认证结果密文进行解密,得到CA认证中心认证结果的明文。这时,认证结果已经被黑客篡改了。

5 基于证书建立PKI的优势

在CA认证中心全部用户的最终实体证书都是以密文形式存储在证书数据库中,证书信任链上各中级证书和根证书存放在芯片硬件里,能保证认证中心全部最终实体证书、信任链上各个中级证书和根证书的存储安全,同时,保证CA认证中心端的各种证书是可信的。即使攻击者想篡改用户的最终实体证书,但在无法获得加密证书的密钥的情况下,也无法将篡改后的最终实体证书加密成攻击者可用的密文,从而防止攻击者通过篡改最终实体证书,来攻击CA认证中心的各种安全协议。

PKI/CA的解决方案也存在一些问题,用户可用性、应用的标准化和安全性是突出问题之一。一般而言CA负责证书的签发和有效性认证并不对应用负责,数字证书的应用在工程层面面临的兼容性、可用性、规范性、安全性问题依然很多,各家CA中心和产业参与者积极推动解决方案和应用创新,制定和推动数字证书应用标准化、规范化的相关行业、国家标准,但应用问题整体上的改观依然遥遥无期。例如,PC浏览器的兼容性就是证书应用挥之不去的噩梦,这也是CA业务推广受限的核心问题之一。同时,不同CA中心证书的互通性受制于信任体系和服务协议的制约,不是一个单纯靠技术可以解决的问题。另外,应用依赖单一服务机构的单点问题,是证书应用的另一个担心,很多以联盟或应用能力平台的解决方案试图解决单个CA中心依赖的问题,其实质是用一个更大的中心单点取代另一个中心单点而已。核心诉求解决匿名、去单点依赖的中心化问题,匿名通过账户地址去实现,账户地址是非对称密钥对的公钥变形,以每次交易生成一个账户的原则,可以避免识别出账户的持有者身份,也就是你可以知道一个账号,但不知道账号的持有者。其实由于数字货币的可分割特性,在一笔交易中如果出现多个关联账号,只要一个账号的泄露或可推测,就存在账号持有身份被推测出来的可能性。由于非法交易和洗钱的嫌疑始终和匿名密不可分,匿名属性是各国政府是否接纳比特币等数字货币的一个判断依据。同时,随着区块链的账本长度增加和比特币账户私钥保管问题的突出,云钱包是一种主流发展趋势,云钱包需要账户的认证,对匿名性原则有较大的影响。从监管、技术的角度上来看,数字货币或区块链记账账户匿名性原则的坚持存在争议。

6 结 语

本方案通过对标准PKI的分析,指出了PKI的CA认证中心普遍存在的用户证书安全漏洞,分析了攻击者能够利用PKI存在的安全漏洞,攻击CA认证中心的方法和过程,提出了在证书初始化阶段对CA认证中心的全体最终实体CA证书进行加密,并将信任链上的各个中级证书和根证书存放在芯片里,以保证CA认证中心全体最终实体CA证书,以及信任链上的各中级CA证书和根CA证书数据的安全存储,防止攻击者利用计算机病毒替换用户的最终实体CA证书。

猜你喜欢
私钥公钥攻击者
清扫机器人避障系统区块链私钥分片存储方法
比特币的安全性到底有多高
案例教学法在公钥密码体制难点教学中的应用——以ssh服务中双向认证为例
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
神奇的公钥密码
正面迎接批判
正面迎接批判
一种基于虚拟私钥的OpenSSL与CSP交互方案
国密SM2密码算法的C语言实现
P2X7 receptor antagonism in amyotrophic lateral sclerosis