一、 电子签名的实现方法
目前,可以通过多种技术手段实现电子签名,在确认了签署者的确切身份后,人们可以用多种不同的方法签署一份电子记录。方法有:基于PKI的公钥密码技术的数字签名;以生物特征统计学为基础的识别标识;手印、声音印记或视网膜扫描的识别;一个让收件人能识别发件人身份的密码代号、密码或个人识别码PIN;基于量子力学的计算机等等。但比较成熟的、使用方便具有可操作性的、在世界先进国家和我国普遍使用的电子签名技术,还是基于PKI(Public Key Infrastructure)的数字签名技术。下面对这几种技术做一简单介绍。
1. 手写签名或图章的模式识别
将手写签名或印章作为图像,用光扫描转换后在数据库中加以存储,当对此人进行验证时,用光扫描输入,并将原数据库中对应图像调出,用模式识别的数学计算方法进行比对,以确认该签名或印章的真伪。这种方法曾经在银行会计柜台使用,由于需要大容量数据库存储以及每次手写签名和盖印的差异性,证明了这种方法不适用于互联网上传输。
相关知识
为什么要颁布《电子签名法》?
业界期盼已久的《中华人民共和国电子签名法》(简称《电子签名法》)即将提请全国人民代表大会常务委员会审议。它的颁布将对我国的电子商务和电子政务的发展产生深远的影响。制订这部法律的目的是使电子签名与手写签名或印章具有同等法律效力,它适用于我国的电子商务及电子政务。该法的出台将是我国人民经济生活和社会生活中的一件大事,是我国进入数字化、网络化先进国家的标志之一,对推动我国电子商务、电子政务的顺利发展,提高我国信息化水平,提高我国的国民经济水平,提高银行界的经营效益和质量,将起到非常重大的促进作用。可以说它是“中国首部真正意义上的信息化法律”。
2. 生物识别技术
生物识别技术是利用人体生物特征进行身份认证的一种技术,生物特征是一个人与他人不同的惟一表征,它是可以测量、自动识别和验证的。生物识别系统对生物特征进行取样,提取其惟一的特征进行数字化处理,转换成数字代码,并进一步将这些代码组成特征模板存于数据库中。人们同识别系统交互进行身份认证时,识别系统获取其特征并与数据库中的特征模板进行比对,以确定是否匹配,从而决定确认或否认此人。生物识别技术主要有以下几种:
(1)指纹识别技术。每个人的指纹皮肤纹路都是惟一的,并且终身不变,通过将他的指纹和预先保存在数据库中的指纹采用指纹识别算法进行比对,便可验证他的真实身份。在身份识别的前提下,可以将纸质公文或数据电文按手印签名或放于IC卡中签名。这种签名需要大容量数据库支持,适于本地面对面处理,不适宜网上传输。
(2)视网膜识别技术。视网膜识别技术利用激光照射眼球的背面,扫描摄取几百个视网膜的特征点,经数字化处理后形成记忆模板存储于数据库中,供以后进行比对验证。视网膜是一种极其稳定的生物特征,作为身份认证是精确度较高的识别技术。但使用困难,不适用于直接数字签名和网络传输。
(3)声音识别技术。声音识别技术是一种行为识别技术,用声音录入设备反复不断地测量、记录声音波形变化,进行频谱分析,经数字化处理之后做成声音模板加以存储。使用时将现场采集到的声音同登记过的声音模板进行精确的匹配,识别身份。这种技术精确度较差,使用困难,不适用于直接数字签名和网络传输。
以上身份识别方法适用于面对面场合,不适用远程网络认证及大规模人群认证。
3. 密码、密码代号或个人识别码
传统的对称密钥加/解密的身份识别和签名方法。甲方需要乙方签名一份电子文件,甲方可产生一个随机码传送给乙方,乙方用双方事先约定好的对称密钥加密该随机码和电子文件回送给甲方,甲方用同样对称密钥解密后得到电文并核对随机码,如随机码核对正确,甲方即可认为该电文来自乙方。它适用于远程网络传输,对称密钥管理困难,不适合大规模人群认证。
在对称密钥加/解密认证中,在实际应用方面经常采用的是ID+PIN(身份惟一标识+口令),即发方用对称密钥加密ID和PIN发给收方,收方解密后与后台存放的ID和口令进行比对,达到认证的目的。人们在日常生活中使用的银行卡就是用的这种认证方法。它适用于远程网络传输,对称密钥管理困难,不适用于电子签名。
4. 基于量子力学的计算机
量子计算机是以量子力学原理直接进行计算的计算机,使用的是一种新的量子密码的编码方法,即利用光子的相位特性编码。由于量子力学的随机性非常特殊,无论多么聪明的者,在破译这种密码时都会留下痕迹,甚至在密码被的同时会自动改变。可以说,这将是世界上最安全的密码认证和签名方法。但是,这种计算机还只是停留在理论研究阶段,离实际应用还很遥远。
5. 基于PKI的电子签名
基于PKI(公钥基础设施)的电子签名被称做“数字签名”。有人认为“电子签名”就是“数字签名”,这是错误的。数字签名只是电子签名的一种特定形式。因为电子签名虽然获得了技术中立性,但也带来使用的不便,法律上又对电子签名作了进一步规定,如联合国贸发会的《电子签名示范法》和欧盟的《电子签名共同框架指令》中就规定了“可靠电子签名”和“高级电子签名”。实际上就是规定了数字签名的功能,这种规定使数字签名获得了更好的应用安全性和可操作性。目前,具有实际意义的电子签名只有公钥密码理论。所以,目前国内外实际普遍使用的、技术成熟的还是基于PKI的数字签名技术。作为公钥基础设施,PKI可提供多种网上安全服务,如认证、数据保密性、数据完整性和不可否认性,其中都用到了数字签名技术。这也是本文叙述的重点。
二、 数字签名的技术保障
1. 什么是数字签名?
数字签名在ISO7498-2标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造”。美国电子签名标准(DSS,FIPS186-2)对数字签名作了如下解释:“利用一套规则和一个参数对数据计算所得的结果,用此结果能够确认签名者的身份和数据的完整性”。按上述定义,PKI可以提供数据单元的密码变换,并能使接收者判断数据来源及对数据进行验证。
PKI的核心执行机构是电子认证服务提供者,即通称的认证机构CA(Certificate Authority),PKI签名的核心元素是由CA签发的数字证书。它所提供的PKI服务就是认证、数据完整性、数据保密性和不可否认性认证。它的做法就是利用证书公钥和与之对应的私钥进行加/解密,并产生对数字电文的签名及验证签名。数字签名是利用公钥密码技术和其他密码算法生成一系列符号及代码组成电子密码进行签名,来代替书写签名和印章;这种电子式的签名还可进行技术验证,其验证的准确度是手工签名和图章的验证无法比拟的。这种签名方法可在很大的可信PKI域人群中进行认证,或在多个可信的PKI域中进行交叉认证,它特别适用于互联网和广域网上的安全认证和传输。
2. 公钥密码技术原理
公开密钥密码理论是1976年美国发表的RSA算法,它是以三个发明人的名字命名的,后来又有椭圆算法ECC,但常用的、成熟的公钥算法是RSA。它与传统的对称密钥算法有本质的区别。对称密钥算法常用的是DES算法,加/解密时用的是同一个密钥; 而公钥算法利用的是非对称的密钥,即利用两个足够大的质数与被加密原文相乘产生的积来加/解密。这两个质数无论是用哪一个与被加密的原文相乘(模乘),即对原文件加密,均可由另一个质数再相乘来进行解密。但是,若想用这个乘积来求出另一个质数,就要对大数进行质因子分解,分解一个大数的质因子是十分困难的,若选用的质数足够大,这种求解几乎是不可能的。因此,将这两个质数称为密钥对,其中一个采用私密的安全介质保密存储起来,应不对任何外人泄露,简称为“私钥”;另一个密钥可以公开发表,用数字证书的方式发布在称之为“网上黄页”的目录服务器上,用LDAP协议进行查询,也可在网上请对方发送信息时主动将该公钥证书传送给对方,这个密钥称之为“公钥”。
公/私密钥对的用法是,当发方向收方通信时发方用收方的公钥对原文进行加密,收方收到发方的密文后,用自己的私钥进行解密,其中他人是无法解密的,因为他人不拥有自己的私钥,这就是用公钥加密,私钥解密用于通信;而用私钥加密文件公钥解密则是用于签名,即发方向收方签发文件时,发方用自己的私钥加密文件传送给收方,收方用发方的公钥进行解密。
但是,在实际应用操作中发出的文件签名并非是对原文本身进行加密,而是要对原文进行所谓的“哈希”(Hash)运算,即对原文做数字摘要。该密码算法也称单向散列运算,其运算结果称为哈希值,或称数字摘要,也有人将其称为“数字指纹”。哈希值有固定的长度,运算是不可逆的,不同的明文其哈希值是不同的,而同样的明文其哈希值是相同并且是惟一的,原文有任何改动,其哈希值就要发生变化。数字签名是用私钥对数字摘要进行加密,用公钥进行解密和验证。
公钥证书和私钥是用加密文件存放在证书介质中,证书是由认证服务机构CA所签发的权威电子文档,CA与数字证书等是公钥基础设施PKI的主要组成机构和元素。
3. 什么是PKI
工程学家对PKI是这样定义的:“PKI是一个用公钥概念与技术来实施和提供安全服务的普遍适用的安全基础设施。换句话说,PKI是一个利用非对称密码算法(即公开密钥算法)原理和技术实现并提供网络安全服务的具有通用性的安全基础设施”。它遵循标准的公钥加密技术,为电子商务、电子政务、网上银行和网上证券业,提供一整套安全保证的基础平台。用户利用PKI基础平台所提供的安全服务,能在网上实现安全通信。PKI这种遵循标准的密钥管理平台,能够为所有网上应用,透明地提供加解密和数字签名等安全服务所需要的密钥和证书管理。
还有一种是学者们对PKI的定义:“PKI是硬件、软件、策略和人组成的系统,当安全并正确地实施后,能够提供一整套的信息安全保障,这些保障对保护敏感的通信和交易是非常重要的”。换句话说,PKI是创建、颁发、管理和撤消公钥证书所涉及到的所有软件、硬件系统,以及所涉及到的整个过程安全策略规范、法律法规以及人员的集合。安全、正确地运营这些系统和规范就能提供一整套的网上安全服务。
PKI的核心执行机构是认证机构CA,其核心元素是数字证书。
4. 认证机构CA(Certificate Authority)
认证机构是PKI的核心执行机构,是PKI的主要组成部分,一般简称为CA,在业界通常把它称为认证中心。它是一种具有权威性、可信任性和公正性的第三方机构。认证机构CA的建设要根据国家市场准入政策由国家主管部门批准,具有权威性;CA机构本身的建设应具备条件、采用的密码算法及技术保障是高度安全的,具有可信任性; CA是不参与交易双方利益的第三方机构,具有公正性。CA认证机构在《电子签名法》中被称做“电子认证服务提供者”。
CA的组成主要有证书签发服务器,负责证书的签发和管理,包括证书归档、撤消和更新等等; 密钥管理中心,用硬件加密机产生公/私密钥对,CA私钥不出卡,提供CA证书的签发;目录服务器负责证书和证书撤消列表(CRL)的发布和查询。
CA的组成如图1所示:它是一个层次结构,第一级是根CA(Root CA),负责总政策;第二级是政策CA(PCA),负责制定具体认证策略;第三级为操作CA(OCA),是证书签发、发布和管理的机构。
RA(Registration Authority)是认证中心的组成部分,是数字证书的申请注册、审批、校对和管理机构。证书申请注册机构RA也称为层次结构,RA为注册总中心,负责证书申请注册汇总;LRA为远程本地受理点,负责用户证书申请和审查,只有那些经过身份信用审查合格的用户,才可以接受证书的申请,批准向其签发证书,这是保障证书使用的安全基础。
5. 数字证书
数字证书简称证书,是PKI的核心元素,由认证机构服务者签发,它是数字签名的技术基础保障; 符合X.509标准,是网上实体身份的证明,证明某一实体的身份以及其公钥的合法性及该实体与公钥二者之间的匹配关系。证书是公钥的载体,证书上的公钥惟一与实体身份相绑定。现行的PKI机制一般为双证书机制,即一个实体应具有两个证书,两个密钥对,一个是加密证书,一个是签名证书,加密证书原则上是不能用于签名的。
证书在公钥体制中是密钥管理的媒介,不同的实体可通过证书来互相传递公钥,证书由权威性、可信任性和公正性的第三方机构签发。是权威性电子文档。证书的主要内容,按X.509标准规定其逻辑表达式为:
CA《A》=CA{V,SN,AI,CA,UCA,A,UA,Ap,Ta}
其中:
CA《A》—认证机构CA为用户A颁发的证书
CA{, , ,}—认证机构CA对花括弧内证书内容进行的数字签名
V—证书版本号
SN—证书序列号
AI—用于对证书进行签名的算法标识
CA—签发证书的CA机构的名字
UCA—签发证书的CA的惟一标识符
A—用户A的名字
UA—用户A的惟一标识
Ap—用户A的公钥
Ta—证书的有效期
从V到Ta是证书在标准域中的主要内容。图2给出了一般证书的例子。
证书的这些内容主要用于身份认证、签名的验证和有效期的检查。CA签发证书时,要对上述内容进行签名,以示对所签发证书内容的完整性、准确性负责并证明该证书的合法性和有效性,将网上身份与证书绑定。CA对证书的签名如图3所示。
CA颁发的上述证书与对应的私钥存放在一个保密文件里,最好的办法是存放在IC卡和USBKey介质中,可以保证私钥不出卡,证书不能被拷贝、安全性高、携带方便、便于管理。这就是《电子签名法》中所说的“电子签名生成数据,属于电子签名人所有并由电子签名人控制……”的具体做法。
三、数字签名的技术实现
对一个电子文件进行数字签名并在网上传输,其技术实现过程大致如下:首先要在网上进行身份认证,然后再进行签名,最后是对签名的验证。
1. 认证
PKI提供的服务首先是认证,即身份识别与鉴别,确认实体即为自己所声明的实体。认证的前提是甲乙双方都具有第三方CA所签发的证书,认证分单向认证和双向认证。
(1)单向认证是甲乙双方在网上通信时,甲只需要认证乙的身份即可。这时甲需要获取乙的证书,获取的方式有两种,一种是在通信时乙直接将证书传送给甲,另一种是甲向CA的目录服务器查询索取。甲获得乙的证书后,首先用CA的根证书公钥验证该证书的签名,验证通过说明该证书是第三方CA签发的有效证书。然后检查证书的有效期及检查该证书是否已被作废(LRC检查)而进入黑名单。
(2)双向认证。双向认证是甲乙双方在网上通信时,甲不但要认证乙的身份,乙也要认证甲的身份。其认证过程与单向认证过程相同。如图4所示。
甲乙双方在网上查询对方证书的有效性及黑名单时,采用的是LDAP协议(Light Directory Access Protocol),它是一种轻型目录访问协议。
2. 数字签名与验证过程
网上通信的双方,在互相认证身份之后,即可发送签名的数据电文。数字签名的全过程分两大部分,即签名与验证。数字签名与验证的过程和技术实现的原理如图5所示。
参照上图数字签名过程分两部分:左侧为签名,右侧为验证过程。即发方将原文用哈希算法求得数字摘要,用签名私钥对数字摘要加密得数字签名,发方将原文与数字签名一起发送给接受方;收方验证签名,即用发方公钥解密数字签名,得出数字摘要;收方将原文采用同样哈希算法又得一新的数字摘要,将两个数字摘要进行比较,如果二者匹配,说明经数字签名的电子文件传输成功。
3. 数字签名的操作过程
数字签名的操作过程如图6所示。它需要有发方的签名证书的私钥及其验证公钥。
数字签名操作具体过程如下:首先是生成被签名的电子文件(《电子签名法》中称数据电文),然后对电子文件用哈希算法做数字摘要,再对数字摘要用签名私钥做非对称加密,即做数字签名;之后是将以上的签名和电子文件原文以及签名证书的公钥加在一起进行封装,形成签名结果发送给收方,待收方验证。
4. 数字签名的验证过程
接收方收到发方的签名结果后进行签名验证,其具体操作过程如图7所示。
接收方收到数字签名的结果,其中包括数字签名、电子原文和发方公钥,即待验证的数据。接收方进行签名验证。验证过程是:接收方首先用发方公钥解密数字签名,导出数字摘要,并对电子文件原文做同样哈希算法得出一个新的数字摘要,将两个摘要的哈希值进行结果比较,相同签名得到验证,否则无效。这就做到了《电子签名法》中所要求的对签名不能改动,对签署的内容和形式也不能改动的要求。
5. 数字签名的作用
如果接收方对发方数字签名验证成功,就可以说明以下三个实质性的问题:
(1) 该电子文件确实是由签名者的发方所发出的,电子文件来源于该发送者。因为,签署时电子签名数据由电子签名人所控制。
(2) 被签名的电子文件确实是经发方签名后发送的,说明发方用了自己的私钥做的签名,并得到验证,达到不可否认的目的。
(3) 接收方收到的电子文件在传输中没有被篡改,保持了数据的完整性,因为,签署后对电子签名的任何改动都能够被发现。
以上三点就是对《电子签名法》中所规定的“安全的电子签名具有与手写签名或者盖章同等的效力”的具体体现。
6. 原文保密的数字签名的实现方法
在上述数字签名原理中定义的是对原文做数字摘要和签名并传输原文,在很多场合传输的原文是要求保密的,要求对原文进行加密的数字签名方法如何实现?这里就要涉及到“数字信封”的概念。请参照图8的签名过程。
图8所示的流程是一个典型的“电子信封”处理过程。基本原理是将原文用对称密钥加密传输,而将对称密钥用收方公钥加密发送给对方。收方收到电子信封,用自己的私钥解密信封,取出对称密钥解密得原文。其详细过程如下:
(1) 发方A将原文信息进行哈希运算,得一哈希值即数字摘要MD;
(2) 发方A用自己的私钥PVA,采用非对称RSA算法,对数字摘要MD进行加密,即得数字签名DS;
(3) 发方A用对称算法DES的对称密钥SK对原文信息、数字签名SD及发方A证书的公钥PBA采用对称算法加密,得加密信息E;
(4) 发方用收方B的公钥PBB,采用RSA算法对对称密钥SK加密,形成数字信封DE,就好像将对称密钥SK装到了一个用收方公钥加密的信封里;
(5) 发方A将加密信息E和数字信封DE一起发送给收方B;
(6) 收方B接受到数字信封DE后,首先用自己的私钥PVB解密数字信封,取出对称密钥SK;
(7) 收方B用对称密钥SK通过DES算法解密加密信息E,还原出原文信息、数字签名SD及发方A证书的公钥PBA;
(8) 收方B验证数字签名,先用发方A的公钥解密数字签名得数字摘要MD;
(9) 收方B同时将原文信息用同样的哈希运算,求得一个新的数字摘要MD’;
(10)将两个数字摘要MD和MD’进行比较,验证原文是否被修改。如果二者相等,说明数据没有被篡改,是保密传输的,签名是真实的;否则拒绝该签名。
这样就做到了敏感信息在数字签名的传输中不被篡改,未经认证和授权的人,看不见原数据,起到了在数字签名传输中对敏感数据的保密作用。
相关知识
什么是电子签名?
要理解什么是电子签名,需要从传统手工签名或盖印章谈起。
在传统商务活动中,为了保证交易的安全与真实,一份书面合同或公文要由当事人或其负责人签字、盖章,以便让交易双方识别是谁签的合同,保证签字或盖章的人认可合同的内容,在法律上才能承认这份合同是有效的。而在电子商务的虚拟世界中,合同或文件是以电子文件的形式表现和传递的。在电子文件上,传统的手写签名和盖章是无法进行的,这就必须依靠技术手段来替代。能够在电子文件中识别双方交易人的真实身份,保证交易的安全性和真实性以及不可抵赖性,起到与手写签名或者盖章同等作用的签名的电子技术手段,称之为电子签名。
从法律上讲,签名有两个功能:即标识签名人和表示签名人对文件内容的认可。联合国贸发会的《电子签名示范法》中对电子签名作如下定义:“指在数据电文中以电子形式所含、所附或在逻辑上与数据电文有联系的数据它可用于鉴别与数据电文相关的签名人和表明签名人认可数据电文所含信息”;在欧盟的《电子签名共同框架指令》中就规定:“以电子形式所附或在逻辑上与其他电子数据相关的数据,作为一种判别的方法”称电子签名。
实现电子签名的技术手段有很多种,但目前比较成熟的,世界先进国家普遍使用的电子签名技术还是“数字签名”技术。由于保持技术中立性是制订法律的一个基本原则,目前还没有任何理由说明公钥密码理论是电子签名的惟一技术,因此有必要规定一个更一般化的概念以适应今后技术的发展。但是,目前电子签名法中提到的签名,一般指的就是“数字签名”。所谓“数字签名”就是通过某种密码运算生成一系列符号及代码组成电子密码进行签名,来代替书写签名或印章,对于这种电子式的签名还可进行技术验证,其验证的准确度是一般手工签名和图章的验证无法比拟的。“数字签名”是目前电子商务、电子政务中应用最普遍、技术最成熟的、可操作性最强的一种电子签名方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还能验证出文件的原文在传输过程中有无变动,确保传输电子文件的完整性、真实性和不可抵赖性。
附:看了会很清晰的认识对于Digital Signatures, Digital Certificates, and PKI
几个术语注释一下:
PBB:非对称加密的公钥部分
PVA:非对称加密的私钥部分
SK:对称加密的安全秘钥
DES:Data Encryption Standard
RSA:非对称加密的一种
MD:数字摘要
DS:Digital Signatures
DE:数字信封