基于PKI的匿名数字证书系统的研究
扫描二维码
随时随地手机看文章
0 引言
目前在Internet上广泛使用基于公共密钥的身份认证机制,公钥基础设施PKI(Public KeyInfrastructure)就是通过使用公开密钥技术和数字证书来确保系统信息安全并负责验证数字证书持有者身份的一种体系。在PKI中所有安全操作都是通过数字证书实现的,但基于X.509标准,数字证书的主体名域中会标有证书持有者的真实名称等个人信息,这就造成了用户个人身份信息的泄露。因此,这种实名数字证书就不能用在保护个人隐私的匿名服务中,如电子投票、电子选举、匿名通信,所以,关于匿名证书的发布成为近几年研究的热点,本文提出一种匿名数字证书发布方案,并在现有的PKI系统中构建了一个匿名数字证书系统。
一、方案的描述
匿名证书发布方案中共有四个实体,分别是用户、CA、AI和BI,其中AI和BI组成匿名证书域PCA.CA、AI和BI分别拥有自己的数据库,用来存储追踪匿名证书时所用的加密信息。
PCA、AI和BI均由CA授权的机构来担任,并且分别拥有CA发布的数字证书。方案中使用RSA算法,定义AI和BI共享相同的公钥参数.
对于PCA的RSA私钥d,为了产生各自的证书,把它分成两部份,这样AI和BI各自的私钥分别是d2,d1,在这里d 有= dd1=dd21dm2mooddΦ((NN))。用户至少应该知道三个公钥,PCA,AI和BI的公钥,方案的假设条件是AI和BI不能串通。方案中使用的主要符号见表1.
1.匿名证书的发布
(1)CA通过安全信道为用户U发布一个实名证书Cert,此时CA已经确认用户的真实身份,并把实名证书存储在CA库中。
(2)用户U设置匿名PNU,并产生匿名密钥对.用户通过选择一个128位的随机数ρ 来计算匿名证书的序列号SNU=H(APUU,ρ )。
用户构建一个X.509匿名证书的头部b为:,这个匿名证书的内容M为:.随后,用户计算h=H(M)。最后,用户计算u=h·remodN,这里r在{0,1}之间随机选择(k=128),计算后把u的值以及用户用自己的私钥签名的信息m传给BI.
(3)当BI收到信息后,BI通过用户的公钥验证签名,确定用户的身份。然后BI计算w=ud1modN,再把信息存储在BI库中,其中IDU为实名证书中用户的主体唯一标识。BI计算Ee(w),并把这个值返回给用户U.
(4)当用户接到信息Ee(w)后,用户计算sigAPRU(M),并把信息发送给AI.
(5)当AI收到这个信息后,AI先验证sigAPRU(M)是否是合法有效的。然后,AI计算z=wd2modN.
AI验证z·r-1modN能否被证明。最后,AI把信息
2.匿名证书的撤销
当发现匿名证书被滥用、私钥泄露或者证书过期时就需要对匿名证书进行撤销,由于本方案中的匿名证书是在用户已获得实名证书的基础上由实名证书构造而成的,所以匿名证书的撤销就必须分两步:撤销实名证书和撤销匿名证书,按照以下步骤就可以撤销匿名证书。
(1)用户向PCA提出匿名证书的撤销请求,并提供相关个人信息。
(2)PCA根据匿名证书的序列号通过匿名证书追踪功能追踪到用户的IDU.
(3)PCA把用户的撤销申请连同用户的身份IDU发送给CA.
(4)CA根据用户的IDU在CA库中检索出用户的实名证书,核准用户信息后,批准撤销,把实名证书放入CRL中,并给PCA发送应答信息。
(5)PCA对匿名证书进行撤销,把匿名证书放入CRL中,并把执行结果发送给用户。
3.方案的应用
在实际的应用中,很多网上活动都可以使用本方案中发布的匿名数字证书,特别是需要保护用户的隐私又要能够证实用户身份的应用中。在具体的实现方面,可以采用以下两种情况:
(1)PCA域由AI和BI构成,而AI和BI可以分别由CA授权的实体来担任。例如,一个站点(或者由站点授权的CA)可以成为AI,而BI可以是法院,银行,行事机关或其它政府代理机构。
(2)这个方案最大的特点是允许在现有PKI体系中使用,在这种情况下,不需要对现行的PKI体系作任何修改就可以实现本方案,此时,PCA域就由CA和RA来构成,AI就可以由CA来担任,BI可以由RA来担任,则获得匿名证书的过程如下:
①用户向RA申请实名证书,填写证书申请表。
②RA对用户的身份进行审核,审核通过后向CA提交证书申请请求。
③CA生成用户实名证书,并把证书返回给RA.
④RA将实名证书发放给用户。
⑤用户根据实名证书构造匿名证书,并对其哈希值盲化后发送给RA.
⑥RA对盲化后的匿名证书签名,把签名值给用户。
⑦用户把经RA签名后的值发送给CA.
⑧CA再对该值进行签名并发送给用户,此时用户就到了匿名证书及RA和CA对其进行的签名。
二、构建匿名数字证书系统
本文根据提出的匿名证书发布方案设计了一个匿名数字证书系统,本系统是按照通用的标准设计的,是采用先进的信息安全技术开发的匿名数字证书签发与管理系统。该匿名数字证书系统严格遵守ITU-TX.509标准,其中应用的全部协议都是被国际上广泛采用的标准协议。本系统中公钥/私钥对的生成以及利用公钥/私钥对的加密/解密运算采用可靠性极高的RSA算法,加密用的公开密钥和私有密钥的长度都是1024位。数字签名中的摘要技术采用MD5算法,它是目前可靠性较好和应用最为广泛的算法。匿名数字证书系统的总体结构如图1所示。
匿名数字证书系统包括下述主要功能:
1.申请匿名证书:若用户已获得由CA发布的实名证书,则用户可以通过该功能由实名证书构成匿名证书;若用户没有实名证书,则可以通过该功能先申请一个实名证书,再由此实名证书构造匿名证书。此时,申请人需要填写申请实名证书的相关资料,由RA进行审核,核准后由CA签发实名证书,并由RA颁发给用户。
2.签发匿名证书:构造生成匿名证书后,经由BI和AI处理器共同处理,得到由PCA签发的匿名证书。
3.查询匿名证书:用户可以通过互连网直接访问系统的LDAP证书库查询匿名证书和匿名证书撤销列表CRL.
4.追踪匿名证书:当需要对匿名证书进行追踪时,可通过此功能由匿名证书的序列号追踪到用户的真实身份。
5.撤销匿名证书:系统可以根据用户提出的匿名证书撤销请求对指定的匿名证书及实名证书予以撤销,并同时更新LDAP证书库和证书撤销列CRL.
三、匿名数字证书系统的实现
本系统中的CA,BI,AI都采用三层B/S架构,设计主要采用Java技术、数字签名和加密等技术,在实现过程中把RA集成在CA中,该系统主要有四个核心模块:Web服务器模块、CA服务器模块、BI服务器模块和AI服务器模块。该匿名数字证书系统需要三台服务器,分别是CA服务器、BI服务器和AI服务器。在三台服务器上分别安装WebLogic 8.1作为应用服务器,安装Oracel 10g企业版作为后台数据库。
1.申请匿名数字证书
由于本系统中的匿名证书是通过用户已有的实名证书构造而成的,所以若用户没有实名证书,可以先申请一个实名证书,若用户已经获得一个实名证书,就可以直接进入签发匿名证书模块。
(1)用户申请和签发实名证书
用户申请实名证书需要填写实名证书申请表并提交给CA服务器,CA服务器需要验证用户的有效证书是否存在,如果不存在则首先生成自签名证书,再使用服务器签名证书私钥进行签名,将证书存入证书数据库,并将证书压缩成zip格式通过Email发送给用户。
①申请实名证书
用户需要填写申请个人证书申请表,其中公共名称和单位名称为确认用户或单位身份的主要字段。组织名称、省、市、邮编为可选项。密钥大小可选择1024或2048.Email地址为生成证书时传递证书时使用,必须输入有效的地址,否则申请不成功。
②生成密钥
通过c o m . i b m . s e c u r i t y . x 5 0 9包中的CertAndKeyGen类设置生成证书的公钥算法、签名算法和Provider.若公钥算法是RSA,则签名算法为MD5withRSA;若公钥算法为DSA,则签名算法为SHA1withDSA.
③生成证书
生成证书过程又可以分为五个步骤,分别是生成主体信息,生成自签名证书,提取自签名证书信息,对自签名证书信息进行设置和形成证书。
④签发证书
通过KeyStore对象获得服务器证书的私钥caprk,通过证书的签名方法对新证书进行签名。
⑤把证书保存在证书库中
在密钥库中生成新实体,并将新实体与新签发的证书对应。
⑥将证书压缩发送给用户
设计中使用BASE64Encoder类转换为证书标准格式--BASE64编码,编码后的证书字符就可以在屏幕上显示、复制或打印。为了作为Email附件进行发送,必须将生成的证书编码进行压缩,设计中使用ZipOutputStream类进行处理,处理后生成zip格式的压缩文件,然后通过编写的发送邮件类MailandFile给用户发送Email,申请证书过程完成。
(2)签发匿名数字证书
签发匿名证书的过程是由BI服务器和AI服务器共同来完成。该过程主要包括:构造匿名证书、生成摘要并盲化、由BI服务器签名和由AI服务器签名。
①构造匿名证书
匿名证书的构造是通过应用程序生成的匿名证书的主体名、匿名密钥和匿名证书的序列号与取来的实名证书的其它字段的值共同构造成匿名证书。通过调用KeyPairGenerator方法来生成匿名密钥对,采用RSA算法,生成匿名证书序列号,通过使用SecureRandom类生成一个128位的随机数r1,再使用MessageDigest对匿名公钥及随机数生成摘要形成匿名证书序列号sn,然后,通过调用X500Name类重新设置通用名,公钥及序列号来构造匿名证书。
②生成摘要及盲化
通过MD5算法对匿名证书生成摘要,并取随机数进行盲化,并调用定义的签名类对证书进行签名以便BI对用户身份验证,为BI验证用户身份,用户需要对证书进行签名。
③BI签名
BI通过调用自定义的验证签名类验证证书上的签名来确认用户的身份,验证通过后记录其身份标识,然后BI调用签名类对其进行盲签名。
④AI签名
AI通过调用Verify Signature类验证用户对匿名证书的签名是否正确,验证通过后,再调用Signature类对BI签名后的值进行签名。AI和BI联合签名后即为PCA对匿名证书的签名。
2.追踪匿名数字证书
匿名数字证书的追踪是由站点提出追踪匿名数字证书的申请请求,由AI服务器和BI服务器通过所存储的值通过调用加密类PublicEncryption与解密类PrivateDecryption共同恢复出用户的真实身份。
3.撤销匿名数字证书
证书撤销是在证书还未到期,提前停止证书的使用。撤销证书的原因可能有许多,包括用户密钥泄露、身份改变、证书的使用用途终止、CA私钥泄露等。
最常用的证书吊销机制是经常发布证书撤销列表(CRL)。CRL是由CA签发的包括己经撤销的未过期证书的证书序列号及撤销日期和撤销原因的数据结构。根据CRL列表更新方法不同CRL可分为:传统CRL证书撤销机制,重复发布CRL证书撤销机制,增量CRL证书撤销机制。本设计中使用的是CRL证书撤销机制,它是一种有效的并具有较好伸缩性的方法。
由于匿名证书的匿名性,所以在撤销时必须先由匿名证书追踪到实名证书,由实名证书对用户真实身份的进行证实的基础上才能对匿名证书进行撤销,此过程可以完成只撤销匿名证书或者同时撤销实名证书和匿名证书两种功能。
①撤销申请:用户需要填写撤销匿名证书的申请表,其中证书别名只能为用户名,系统自动生成,用户不能进行修改,公共名称为申请匿名证书的公共名称。
②撤销实名证书:通过系统提供的匿名证书的追踪功能可以由匿名证书的序列号追踪到用户的真实身份,从而可以确定用户的实名证书,若需要对实名证书进行撤销,此时,可以由CA把实名证书的的序列号签发到CRL中。
③撤销匿名证书:在由追踪到的实名证书对申请人的身份进行核实后,可以对匿名证书进行撤销,由PCA对匿名证书的序列号签发到CRL中,用户可以通过访问LDAP目录等方式进行查询。
四、结束语
本文提出了一个匿名数字证书发布方案并依此构建了一个匿名数字证书管理系统,它的实现还要受到很技术因素的影响,但随着人们对隐私与安全问题的日益关注,基于PKI的匿名数字证书发布方案的研究也会逐步成熟,可以预测伴随着网络和信息安全技术的不断发展,关于匿名数字证书的研究将会取得实质性的突破,匿名数字证书将会得到更广泛的应用。