数字签名技术及其实现

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’进行比较,验证原文是否被修改。如果二者相等,说明数据没有被篡改,是保密传输的,签名是真实的;否则拒绝该签名。

这样就做到了敏感信息在数字签名的传输中不被篡改,未经认证和授权的人,看不见原数据,起到了在数字签名传输中对敏感数据的保密作用。 <script language="JavaScript" src="http://cpro.baidu.com/cpro/ui/cp.js" type="text/javascript"></script>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值