浙江经贸职业技术学院 孙 勇
一、引言
电子政务建设经过多年发展,G2D、G2C电子政务已初具规模。但是,大部分城市的G2C电子政务却一直停留在单向信息发布阶段,制约面向公众的电子政务开展的根本原因之一在于电子身份认证问题得不到很好的解决。
有人提出在电子政务中采用PKI技术,通过用户私钥的机密性提供用户身份的唯一性验证,并通过自然人公钥数字证书的方式为每个合法用户的公钥提供一个合法性证明,从而解决电子政务中公众的电子身份认证问题。但是,上述构想的实施难度很大(至少在近期内),其主要原因在于:(1)现在的公钥密码系统中每个用户都有一对公钥和私钥,在加密和签名验证时都要使用对方的公钥,公钥一般放在服务器中,需要时从服务器中取回。但使用证书带来了存储和管理开销的问题,建设和运作为上百万、上千万甚至上亿公众服务的自然人信任服务管理体系(包括证书认证中心、证书受理核发点等),其代价将十分昂贵。(2)虽然数字证书和用户私钥可以用各种证卡(如IC卡)的方式发放给公众,但读卡机并不是随处可得。不仅如此,为防止公用计算机造成用户私钥泄密,必须采用具有内置密码算法的密码卡,这也将加大公众必须为参与网上政务付出的成本。
为了减少政府和公众参与网上政务所付出的成本,本文设计一种基于身份(identity-based,简写IB)数字签名方案。该方案直接以市民的公民身份证号作为参数计算用户公钥,并由密钥分发中心(Key Distribution Center,简称KDC)通过一个单向陷门算法计算各用户公钥(即用户身份证号)对应的私钥,并将私钥封装在证卡中,分发给用户。
二、IB数字签名方案构造
1984年,shamir教授提出了基于身份(identity-based,简写IB)的加密、签名、认证设想,其中身份可以是姓名、地址、电子邮件地址等。用户的公钥可以由任何人根据其身份计算出来,而私钥则是由可信中心统一生成。本文采用了一种新的快速公钥算法(以下称为MDP公钥算法),该算法采用一个矩阵构成陷门单向函数,其单向性由矩阵对角分解问题(即通过相似变换将矩阵化为对角型的问题)的复杂性来保障。选择不同的代数体系作为公钥矩阵的定义域还可以给密码体制赋予不同的附加特性。本文此基础上结合IC卡设计了一个基于身份的数字签名方案,该数字签名方案由四个算法组成:系统初始化、密钥提取、签名和验证。系统包含三方:可信中心KDC、签名者和验证者。
三、市民卡的选取
公众先通过各种非专用计算机上网完成申请政府服务所需要的复杂的表单的填写和上载工作,再在规定的时间范围内以事项编码为索引,通过政府提供的专用签名机用市民卡对指定的申请进行数字签名。签名机可以像ATM机一样分布于社区内与街道边。只要签名机的安全性得到保障,市民卡将可以是经济实用的逻辑加密IC卡存储,从而把公众为身份认证必须付出的成本减小到近于零。IC卡即集成电路卡中的简称,又称智能卡(smart card)。它将一个集成电路芯片镶嵌于塑料基片中,封装成卡的形式,芯片上集成了复杂的密码验证与身份鉴别逻辑,对卡上的数据不能任意读、写。
这类卡主要是由EEPROM存储单元阵列和密码控制逻辑单元所构成,采用密码控制逻辑控制对EEPROM存储器的访问和改写,具有安全性高、性能价格比高、种类繁多、应用灵活等一系列优点。每张卡成本不过数元,非常适合用于G2C电子政务系统中的身份验证。
1.芯片特点。芯片采用多存储器结构。2线连接协议,串行接口满足ISO-7816同步协议。采用NMOS工艺技术,每字节的擦除、写入编程时间为2.5ms。存储器具有至少104擦除、写入周期,数据保持时间至少10年。
2.SLE4442芯片内部存储器。逻辑加密存储卡的逻辑加密功能和存储功能是由其内部逻辑结构决定的,SLE4442型芯片的主存储器的容量为256字节,每个字节为8位。主存储器分为保护区和应用区。保护区带位保护功能,一旦实行保护后,被保护的单元不能被擦除和改写,适宜于存储用户姓名、身份证号(也作为卡号)、IC卡发行批次等不需改变的信息。
SLE4442卡上电以后,除了密码以外,整个存储器都是可读的,如要擦除或改写卡中的内容,必须首先校验密码,只有当3个字节的密码完全相同,才可进行相应的读、写操作,从而增加私钥的安全性。
四、IB数字签名具体实现过程
IB数字签名具体实现过程如下:
1.系统初始化:KDC产生秘密大素数p和q作为主密钥(保密),并计算公共模数n=pq,n位长为1024,n公开。系统中所有用户的私钥均由主密钥生成。
2.密钥提取:当用户需要与他的身份对应的私钥时,向KDC提出申请。KDC在验证了用户的身份后根据用户唯一的居民身份证号计算出用户的公钥参数(σ1,σ2),σ1,σ2由如下两个公式求得:
σ1=f(H1(ID),σ2=f(H2(ID);
其中ID为居民身份证号,H1H2为公开的Hash函数,f为KDC构造的系统函数,也可以公开。私钥(λ1,λ2)只能由KDC通过求解以下方程获得:
(λ2-σ1λ+σ2)(mod n)=0
在n的素因子未知的条件下,解此方程的难度相当于对n进行因数分解,从而保证了私钥只能由KDC产生,然后用户的身份证号与私钥封装在IC卡由用户亲自取走。
3.申请事务提交:市民通过各种非专用计算机上网完成申请政府事务所需要的复杂的表单M的填写工作,用MD5算法计算其报文摘要值m,并用KDC的公钥加密m,把(M,m)上载到KDC。
4.数字签名:数字签名过程在签名机上进行,签名机上内置了签名/验证算法,步骤如下:
(1)用户输入正确PIN码验证IC卡的合法性。
(2)签名机读取存储于IC卡中的身份证号(ID),并根据此ID从KDC取得待签名的信息m
(3)产生签名:从IC卡上读取用户私钥(λ1,λ2),为了签名一个消息m,将其分解为两个小于n的正整数m1和m2,建立如下方程组:
解出(k1,k2)作为对(m1,m2)的数字签名。
5.签名验证:按以下公式由(k1,k2)算出(m1,m2)
比较(z1,z2)和(m1,m2),如果相同,则接受签名,并由KDC将表单M送交有关政府部门办理,否则予以拒绝。签名流程如图所示:
在这个实现方法中体现了基于身份的数字签名的优越性,即公钥由市民的身份证号直接计算而得,因此在身份认证过程中不需要通过CA将公钥与市民的个人身份作绑定,数字签名实现了快速、简捷而且又有与传统PKI同等的安全性。
五、结束语
本文采用一种新的快速公钥算法(MPT公钥算法)并结合IC卡构造了一个基于身份的数字签名方案,分析了其实现的过程和系统的优势所在,为我国G2C电子政务进一步开展提供了一种切实可行的公众电子身份认证解决方案。这个方案既具有很强的安全性,又经济实用,值得推广应用。