数字证书和数字签名.docx
《数字证书和数字签名.docx》由会员分享,可在线阅读,更多相关《数字证书和数字签名.docx(24页珍藏版)》请在冰点文库上搜索。
数字证书和数字签名
数字证书和数字签名
本文力图以最浅显的语言解释数字证书和数字签名的科学原理,以及它们对网上交易信息的安全保障机制,可供各位网民参考。
数字证书是一段包含用户身份信息、用户公钥信息以及身份验证机构数字签名的数据。
身份验证机构的数字签名可以确保证书信息的真实性,用户公钥信息可以保证数字信息传输的完整性,用户的数字签名可以保证数字信息的不可否认性。
数字证书是各类终端实体和最终用户在网上进行信息交流及商务活动的身份证明,在电子交易的各个环节,交易的各方都需验证对方数字证书的有效性,从而解决相互间的信任问题。
数字证书是一个经证书认证中心(CA)数字签名的包含公开密钥拥有者信息以及公开密钥的文件。
认证中心(CA)作为权威的、可信赖的、公正的第三方机构,专门负责为各种认证需求提供数字证书服务。
认证中心颁发的数字证书均遵循X.509V3标准。
X.509标准在编排公共密钥密码格式方面已被广为接受。
X.509证书已应用于许多网络安全,其中包括IPSec(IP安全)、SSL、SET、S/MIME。
网上银行交易中的安全问题
在网上交易中,交易双方互不见面,有两个安全问题是会引起担心的。
第一个问题是交易双方身份是否真实,会不会被人假冒。
换句话说,就是在网上发送交易信息的主体是否是真实的。
第二个问题是有关交易的信息,如对方的银行账号、金额等是否属实,有没有被人篡改过。
在传统交易中,交易者身份的真实性通过各种证件的出示和验证得到检验;交易信息的真实有效性则通过签名盖章来解决。
然而在网上交易中,传统的实物证件的查验和手写的签名盖章都不可能实现。
那这两个问题又是怎么解决的呢?
有办法。
那就是用含有先进科技的数字证书和数字签名。
公钥密码技术保护交易信息的安全
我们还是从网上传递的信息讲起。
两个人在互联网上作交易,保护交易信息的手段有多种,其中最重要的手段是信息加密技术。
加了密的信息只有用密钥才能解开,双方可以提前约定密钥,只要密钥妥善保管,只有买卖双方知道,任何其他人破不了密,交易信息的传递就安全。
现代的密码技术强度很大,可以充分地保证密码信息的安全。
(请读者牢记这一事实,它是数字签名和数字证书存在的基础。
)
但是在互联网上,参加交易的人很多,例如银行,要面对成千上万的客户。
想要一个一个地与每个客户约定密钥就变得不可能了。
为了解决这个问题,一种新型的密码技术——公钥密码技术应运而生。
在这种密码技术中,每个通信者拥有一对独特的密钥——公钥和私钥。
公钥可以在网上公开,私钥则密不示人,而且是唯一的。
如果某甲要向某乙发送交易信息,就用在网上公开的某乙的公钥来加密信息,送出去,某乙收到加密的信息后可以用自己的私钥来解密。
其他人即使截获了加密的信息也无计可施,因为没有某乙的私钥是解不了密的。
这样就保证了交易信息的安全。
反过来,某乙向某甲发信息的过程可依此类推。
数字签名的原理
利用公钥技术还可以达到另一个目的,就是解决信息的完整性和有效性。
如果某甲用自己的私钥加密交易信息,传给某乙,某乙可以用某甲的公钥来解密信息。
这时,这个被加密的交易信息,例如支付的金额,账号等就是完整、有效的,同时也是不可抵赖的。
这是因为某甲的私钥是世界唯一的,别人不可能掌握,如果有人篡改了加密信息,某乙将无法解密。
那么,从效用上讲,这个用私钥加密交易信息的动作就像为一个文件签名盖章一样,经过“签名”后的信息是完整、有效的,不可篡改,也不可抵赖。
当然,实际上的数字签名机制和过程比这要复杂一些。
如果交易信息很长,用私钥去加密信息将花费较长的时间,效率太低,用户无法接受。
因此需要使用一种数学算法——哈希算法——先对这段信息作一次数学变换,把这段信息进行压缩,形成了一段短短的“数字摘要”,让数字摘要来“代表”信息本身。
可以通过检验数字摘要,借以判断信息本身是否发生了改变。
这样,我们才可以构建真正实用的数字签名。
某甲在发信前使用哈希算法求出待发信息的数字摘要,然后用私钥对这个数字摘要进行加密而形成一段信息,这段信息就称为数字签名。
某甲将这个数字签名信息附在待发信息后面,一起发送过去。
某乙收到信息后,一方面用某甲的公钥对数字签名解密,得到了摘要H;另一方面把收到的信息本身用同样的哈希算法求出另一个摘要H’,可称为摘要的副本。
再把H和H’相比较,看看两者是否相同。
根据哈希算法的特性,如果两个摘要H和H’完全符合,证明信息是完整的;如果不符合,就说明信息被人篡改了。
由于摘要一般只有128位或160位比特,比信息本身要短千百倍,数字签名的过程一般在一秒钟内即可完成。
由于数字签名具有数学严格性,黑客对交易信息哪怕只改动一个字一个比特,系统都会发现识破。
又因为私钥是不可仿造、伪造的,因此从某种意义上说,数字签名比手写签名更严格可靠。
2004年国家颁发的《中华人民共和国电子签名法》赋予了电子签名的法律意义,其规定,“可靠的电子签名能够与手写签名、盖章一样,受到法律保护”。
数字证书的原理
说到这,明眼的观众一定会发现一个关键的问题,就是网上公开的公钥必须真实可靠,因为黑客也可以公布一个假的公钥冒充某甲或某乙来引你上钩呀。
怎么来保证这个公钥是真的呢?
这时候就要用到数字证书了。
我们知道,身份证是由权威机关公安局颁发的,我们相信公安局,因而我们能够通过检验身份证,相信持有某甲身份证的个人就是某甲本人。
同样,数字证书也是要由权威的认证机构来颁发。
例如,中国金融认证中心就是一个权威可信的认证机构,它为数百万网上银行的用户颁发了数字证书。
那么,数字证书怎样完成网上身份的认证呢?
把数字证书说成是网上身份证,这是一种形象的比喻。
实际上,数字证书所证明的是公钥的真实性。
认证中心对用户的身份进行严格的审核后,为用户颁发数字证书。
它通过公钥加密技术对用户的公钥信息和用户的身份信息作了数字签名,把用户所宣称的身份信息与公钥绑定在一起。
于是,包含有用户个人身份信息、公钥和数字签名的一个特殊的电子文件就形成了数字证书。
数字证书可以存储在硬盘里,也可以存储在软盘或USBKey里。
存储数字证书的USBKey
在网上交易中,用户双方要互相验证这个证书,用户相信认证中心的数字签名,也就相信这个公钥是真实的,因而相信公钥的持有者所发来的信息是真实的。
虽然看上去数字证书认证过程与传统的身份证认证有很大差别,但从目的和效用上看,两者是一致的。
都是证明发送交易信息主体的真实性。
数字证书的认证、数字签名的发生与核验都是由专用的应用软件来自动实现的,速度极快,眨眼间就完成了,用户并不需要费心做什么操作。
数字证书在网上交易中能够保证交易的安全。
刚才我们提到了,黑客利用种种手段,盗取银行客户的密码、账号,进而企图盗窃客户帐户上的资金。
如果网上银行业务采用了数字证书和数字签名的安全机制,黑客即使输入了正确的密码、账号也不能够盗走客户帐户里的资金,因为黑客不掌握客户的数字证书,也不能进行数字签名,网上银行系统就会拒绝交易,使黑客最终功亏一篑。
中国人民银行、中国银监会、公安部、国家工商总局曾联合下发了《关于加强银行卡安全管理预防和打击银行卡犯罪的通知》,其中强调:
持卡人开通网上银行转账的,应采用数字证书、电子签名等安全认证方式,否则单笔转账金额不应超过1000元人民币,每日累计转账金额不得超过5000元人民币。
中国金融认证中心发布的2008年度网上交易调查结果中显示,数字证书版网上银行由于其较高的安全性而被超过半数(51.7%)的个人用户所选择,而在企业网银中这一比例高达65.1%。
有人把数字证书昵称为网上交易的卫兵。
请广大网上银行用户务必重视它,使用它。
PKI的核心——CA
一、什么是CA?
为解决互联网的安全问题,世界各国信息安全业者进行了多年的研究,形成了全方位、多层次的安全解决方案。
其中,目前被广泛采用的PKI技术,在安全解决方案中占据了重要位置,它可以保证信息传输的机密性、真实性、完整性和不可否认性,从而保证信息的安全传输。
一个完整地PKI系统是由认证机构、密钥管理中心(KMC)、注册机构、目录服务、以及安全认证应用软件、证书应用服务等部分组成,其中认证机构(CertificationAuthority,CA)在PKI系统中居于核心地位。
我们知道,为了在信息传输的过程中,确保信息的机密性、真实性、完整性和不可否认性,采用了公开密钥加密机制。
而公钥机制所涉及的公钥是公开的、需要通过互联网传送。
因此,需要解决的一个重要问题就是公钥的信任问题。
必须有一个可信任的机构对任何一个主体公钥进行公证,证明主体的身份以及它与公钥的匹配关系。
CA就是这样的机构。
为了确保CA的公信力,它必须具有高度的权威性、公正性和第三方性。
目前在国内存在的CA基本上可以分为三类:
第一类是行业性的CA,如中国金融认证中心(CFCA)、海关CA、商务部CA(国富安CA)等,这些CA是由相应行业的主管部门牵头建立的;第二类是地方性CA,如北京CA、上海CA、浙江CA等,这些CA是由当地地方政府牵头建立的;第三类CA是商业性CA,如天威诚信CA。
这类CA进行商业化经营,并不从属于任何行业或地域,但它们也必须具有良好的公信力,必须由国家主管部门审批通过才能投入运营,以确保其权威、公正性。
二、CA的基本功能
作为CA,必须具有如下基本功能:
(1)签发数字证书
(2)CA密钥的管理
(3)接受证书申请,审核申请者身份
(4)证书管理
(5)提供证书和证书状态的查询
以上功能中,最为重要的是签发证书。
CA对其签发的数字证书全部内容,包括证书用户姓名标识、公钥信息、颁发者标识、证书有效期、签名算法标识等信息,进行数字签名。
从而权威地证明了证书持有者和公钥的唯一匹配关系。
CA的另一项重要功能是证书查询。
CA的证书库可以作为公钥的来源地。
此外,证书有效性的查询对于安全认证也是至关重要的。
由于证书遗失或其他原因,证书可能需要在失效期未到时就予以撤销。
CA提供证书撤销列表(CertificateRevocationList,CRL)或其他方法供证书依赖方实时查询。
CA自己的一对密钥管理,必须确保其具备高度的机密性,防止其被伪造而颠覆CA的权威性。
在CFCA,根密钥被存放在安全的屏蔽机房,其访问受到了严格的管理。
CA的密钥由通过国家认证的加密机产生,私钥一经产生将不能通过明文方式离开加密机。
这些措施保证了CFCA根密钥的安全与CFCA的权威性。
三、CA的组成部分
CA主要由以下部分组成:
1、CA服务器:
这是CA的核心,是数字证书生成、发放的运行实体,同时提供发放证书的管理、证书废止列表(CRL)的生成和处理等服务。
2、证书下载中心:
该中心连接在互联网上,用户通过登录CA网站访问证书下载中心,CA服务器生成的证书通过证书下载中心供用户下载。
3、目录服务器:
它的功能是提供数字证书的存储,以及数字证书和证书撤销列表(CRL)的查询。
业者有时把它称为”LDAP”,这是因为目录服务的技术标准遵循LDAP(轻量级目录访问协议)的缘故。
4、OCSP服务器:
该服务器向用户提供证书在线状态的查询。
5、密钥管理中心(KMC):
根据国家密码管理规定,加密用私钥必须由权威、可靠的机构进行备份和保管。
CFCA被授权建立KMC,以备份和保管用户的加密密钥。
6、证书注册机构(RegistrationAuthority,RA):
它负责受理证书的申请和审核,其主要功能是接受客户证书申请并进行审核。
RA主要是远程的,CFCA的RA部署在各家用户银行、税务机关、或企业所在地。
因为,这样一方面便于进行客户资料的审查,另一方面也便于银行将证书与客户的帐号进行绑定,以实现认证。
但即使RA部署在远程所在地,这些RA也仍然是CA的组成部分。
此外,CFCA还在其所在地部署了直属CA,对一些比较零散的,不适合或者不必要建立RA的用户提供注册服务。
图一 CA组成示意图
四、CA的结构
一般的PKI/CA系统都为层次结构,这里就以CFCA系统结构为例来说明:
在系统设计之初,CA系统由根CA(1个)、政策CA(3个)和运营CA(多个)三部分组成,其树形结构如图二所示。
图二最初设计的CFCA系统结构
当初设计这种结构的初衷是,CFCA希望做成全国性的金融CA,向公众提供服务。
这样根CA的作用主要是负责制定和审批CA的总策略,向政策CA发放证书,以及与国际其他PKI域的CA进行交叉认证。
三个政策CA则分别负责制定和审批银行、证券、保险领域CA的策略,向运营CA发放证书。
运营CA则负责颁发最终用户的证书。
由于三层结构CA的证书链较长,认证速度效率较低,而且认证业务并没有按原来所设想的方向发展,政策CA实际上只建了1个,原来的初衷未能实现。
因此,CFCA后来新建的CA系统全部采用RCA—OCA两层的扁平结构,省却了政策CA这层。
图三 扁平结构CA系统
五、CA的运作
从权威性、公正性出发,大部分CA都是作为独立的机构运营,为用户提供PKI数字证书认证服务,也有一些CA是作为本系统的IT单位之一,为系统内提供证书认证服务。
由于CA是PKI系统的核心,CA的运作要求是很高的。
如果CA出现故障停止对外服务,整个PKI系统就会瘫痪。
因此,CA自身的安全性显得无比重要。
CA的安全是多方面的。
从物理安全上讲,要求CA机房建筑必须防火、防水、防震、防电磁辐射、防物理破坏和外人侵入。
防电磁辐射是防止入侵者企图通过仪器接收计算机运算时发出的电磁波,来分析密码信息。
为了达到这些目的,CA机房墙面地板和天花板一般采用厚钢板六面体焊接,门也要采用电磁屏蔽门。
此外,除了一般的人工把守的门禁外,还要安装双人双指纹检测的门禁系统以及磁卡门禁记录系统。
CA系统重要的操作必须有两人以上同时在场。
由于CA要与互联网相连,所以CA在网络安全防护上也要采取严密的措施以防止病毒、非授权访问和恶意攻击。
为了确保7乘24小时的不中断服务,系统必须采取高冗余度的配置,要求部署灾难备份中心。
CA在人事管理上也是很严格的,在CA工作的员工必须安全可靠,要签署保密协议。
按照信息产业部《电子认证服务管理办法》的规定,CA的密码方案必须经过国家密码管理局的审批认证,CA信息系统必须通过国家信息安全产品的评测认证,取得国家认可的资质,才能投入运营。
CA的运作必须符合《认证运作规范(CPS)》。
六、认证运作规范(CPS)
CPS(CertificationPracticeStatement)也叫认证运作规范,是关于认证机构在全部数字证书服务生命周期中的业务实践(如签发、吊销、更新)所遵循规范的详细描述和声明。
在CPS中,提供了相关业务、法律和技术方面的细节。
它涉及CA的运营范围,遵循标准、证书生命周期管理、CA的运作管理、安全管理、CRL管理等全部范围。
根据IETFRFC3647(公钥基础设施证书策略和证书运行框架)以及国家信息产业部《电子认证服务管理办法》、《电子认证业务规则规范》等规定,中国的CPS由九部分组成,分别是:
(1)概述性描述
(2)信息发布与信息管理
(3)身份识别与鉴别
(4)证书生命周期操作要求
(5)认证机构设施管理和操作控制
(6)认证系统技术安全控制
(7)证书、证书吊销列表和在线证书状态协议
(8)认证机构的审计
(9)法律责任
这九部分内容详细地阐述了一个CA从诞生、运营,到生命终止的方方面面规定,是CA的纲领性的文件。
有人形象地把CPS比作CA的宪法。
不但CA的运营者必须严格遵守CPS中的规定,CA的CPS还必须在网站上公布,以接受证书持有者和依赖方的查询和监督。
七、CFCA的国产化
中国的PKI市场起步较晚,CFCA作为国内较早的运营CA,在2000年正式对公众提供服务。
由于当时国内并没有成熟的CA软件提供商,经过严格的国际招标流程,结果,CFCA选择采用Entrust公司提供的CA系统软件产品进行认证服务。
在CFCA运营之初,EntrustCA软件由于其严谨的设计,强大丰富的功能,对CFCA业务发展起到了积极的推动作用。
但随着客户的增加,其弊端也不断的暴露出来:
由于其本土化能力有限,产品支持是一个难题,困扰着CFCA的业务拓展;同时其高昂的收费策略也影响了CFCA的持续发展。
随着国内CA产品系统的日渐成熟,以及国家对于CA业务的重视程度不断提高,2002年,在科技部和人民银行的大力支持下,CFCA国产化改造作为国家863项目之一正式启动了。
经过各方努力,2004年底CFCA国产化CA项目宣告完成,正式对外提供服务。
截至2007年9月,CFCA国产化系统共发放证书50万余张。
同时,CFCA开发人员经过多年的开发和经验积累,不断向客户提供具有自主知识产权的丰富多彩的证书应用软件。
国产PKI系统正成为CFCA的骄傲,推动着中国的信息安全事业更好地向前发展。
安全认证应用软件
安全认证应用软件是一类基于PKI机制实现的信息安全软件。
主要用来在PKI的基础上为用户提供数字签名、数字信封、身份认证、安全传输等安全服务。
PKI是“PublicKeyInfrastructure”的缩写,意为“公钥基础设施”。
简单地说,PKI技术就是利用公钥理论和技术建立的提供信息安全服务的基础设施。
安全认证应用软件为应用系统和PKI之间架起了一道桥梁。
PKI利用非对称密码算法为身份认证、数字签名、安全传输提供了基础。
安全认证软件利用PKI提供的基础实现了身份认证、数字签名、安全传输的功能。
而上层应用软件则是通过安全认证软件来使用PKI所提供的基础安全服务。
安全认证软件按照功能划分可分为两大类:
安全传输和签名加密。
每一大类又可以分成不同的小类。
安全传输软件,顾名思义,就是通过这类软件可以实现数据的安全传输。
按照使用的协议进行划分又可以分为SSL传输软件和SPKM传输软件。
SSL和SPKM两类安全传输软件实现的原理大同小异,他们的区别是SPKM类安全传输软件安全性更高些,但效率要低些。
综合安全性和效率的考虑,SSL类安全传输软件使用的范围更广些。
SSL类安全传输软件包括:
SSL安全代理软件、SSL安全网关软件和实现了SSL功能的应用服务器软件。
签名加密软件,就是利用PKI机制实现了签名验签、加密解密功能的软件。
按照实现方式的不同,又可以分为安全开发包和安全软件两类。
安全开发包是在PKI基础上实现的应用调用接口,包括控件、动态链接库、jar包等形式。
安全开发包实现了最基本的签名验签、加密解密的功能,同时还实现了一些基本的证书管理功能。
安全软件是在PKI基础上实现的能够独立运行的软件。
安全软件包括电子印章、桌面安全工具、代码签名工具等。
安全软件在PKI的基础上实现了较为完善的签名验签、加密解密的功能,同时又集成了一些应用的需求在里边。
下边我们就以CFCA自主开发的软件为例对安全认证软件做进一步的说明。
安宝,这是一款可以在单机上独立运行的安全认证软件。
按照上边的分类,它应该属于签名加密软件中的安全软件。
它实现的功能包括:
加密传输、加密保存、解密、签名、验签、签名加密、解密验签、证书管理。
CFCA证书应用工具包,这是一套安全开发接口。
按照上边的分类,它应该属于签名加密软件中的安全开发包。
它实现的方式包括:
控件、动态链接库、jar包。
实现的功能包括:
消息的签名验签、消息的加密解密、文件的签名验签、文件的加密解密、证书管理。
安全代理软件,这是一款支持SSL功能的安全认证软件。
按照上边的分类,它应该属于SSL类的安全传输软件,它实现的主要功能就是建立安全通道,保证数据的安全传输,同时还实现了一些管理功能。
安全认证软件有两种使用方式:
直接为最终用户提供安全服务;集成在应用系统中为用户提供服务。
直接为最终用户提供服务的方式,我们就不在这里介绍了。
那么,安全认证软件是怎么和应用系统进行结合的呢,我们在这里举一个例子进行说明。
网上银行是一个使用安全认证软件的很好的例子。
网上银行的安全通常是通过PKI机制来实现的。
在网上银行中使用了两种安全认证软件,SSL安全传输软件和安全开发包。
我们假设在网银中使用的是CFCA自主开发的证书应用工具包和安全代理软件,那么他们的结合方式和实现过程如下图所示:
在客户端使用的是CFCA的签名验签控件,服务端使用的SSL安全代理服务器和java版证书应用工具包。
证书应用工具包包括客户端的控件和服务端的工具包是通过接口调用的方式集成在网银应用中的。
SSL安全代理软件是独立的部署在客户和网银应用之间的,通过网络协议和网银应用进行结合。
具体结合过程简单介绍如下:
1.网银客户端首先与SSL安全代理服务器建立HTTPS安全连接;
2.网银客户端通过HTTPS连接向SSL安全代理服务器发送数据;
3.SSL安全代理服务器收到网银客户端的数据后以HTTP方式将数据转发给网银应用;
4.网银应用将响应数据以HTTP方式发送给SSL安全代理服务器;
5.SSL安全代理服务器收到网银应用的响应数据后,以HTTPS的方式转发给网银客户端;
6.在交易过程中,网银客户端调用CFCA的签名验签控件对交易数据进性签名,然后把签名数据发送给网银应用;
7.网银应用收到客户端发来的签名数据后,调用CFCA证书应用工具包进行验证签名。
总之,安全认证应用软件可以和电子商务、电子政务和网上银行等应用系统结合,完成身份认证、数字签名、安全传输的功能,确保应用系统的安全。
CFCA自主开发的安全认证应用产品也逐渐丰富,满足了市场对安全认证的需求。
数字证书的存储和USBKey的安全性
数字证书的产生、分发和存储
首先,让我们来回顾一下数字证书产生和分发的简要过程。
一个网上用户怎样才能得到一张数字证书呢?
①他先要向RA提出注册申请。
②用户的申请经RA审批通过后,RA向CA提交注册建立请求。
③CA建立对于该用户的注册,并将注册建立结果返回给RA。
④RA将注册结果通知用户。
注册结果中包含了两组数字,分别称为“参考号”和“授权码”。
⑤用户方的软件生成一对公钥和私钥。
⑥用户向CA提出证书请求。
这个请求信息中还包含了用户的公钥和用户的可甄别名等信息,这些信息在CA创建证书时要用到。
⑦CA创建该用户的数字证书。
⑧通过适当方式将证书分发给用户。
CA将证书分发给用户的途径有多种。
第一种途径是带外分发(Out-of-bandDistribution),即离线方式。
例如,在北京国税的证书项目中,密钥对是由软件运营商代替客户生成,证书也是由运营商代替客户从CA下载,然后把私钥和下载的证书一起储存在软盘里,再交给用户的。
这样做的好处是免去了用户上网下载证书的麻烦。
第二种途径是带内分发(In-banddistribution),即用户从网上下载数字证书到自己的电脑中。
下载时,用户要向CA出示“参考号”和“授权码”,以向CA证明自己的身份。
这样做成本较低,但对使用计算机不太熟悉的用户来说,可能在下载时会碰到一些麻烦。
除了以上两种方式外,CA还把证书集中放置在公共的数据库中公布,用户可以随用随查询随调用。
数字证书和私钥储存的介质有多种,可以存储在计算机硬盘、软盘、智能卡或USBkey里。
需要澄清的概念
一、关于私钥的唯一性
严格地讲,私钥既然是世上唯一且只由主体本身持有,它就必须由主体的计算机程序来生成。
因为如果在别处生成将会有被拷贝的机会。
然而在实际应用上并非如此,出于某些特殊