公钥密码数字签名和数字证书相关知识及原理介绍

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

公钥密码、数字签名和数字证书相关知识及原理介绍一、从对称密码谈起自从人类有了战争,智慧的人们就想出了很多的办法来解决通信保密问题,把需要通信的消息按固定规律转变成没有意义的乱码,而只有指定的合法接收者才能恢复解读出来,这就是密码学的基本思想。通常,人们总是会有很多的秘密信息需要保护,比如个人的信用卡账号,个人的医疗记录和财政细节等等;企业也有秘密,例如战略报告、销售预测、公司财务、技术产品的细节、研究成果、人员档案等,密码学上将这些需要保护的原始信息称为明文。为了确保明文信息不被别人获知,在将这些明文保存在某个地方或从网络上传送出去之前,需要用某种方法(通常是数学方法)把它伪装起来以隐藏它的真实内容,我们把伪装的这个过程称为加密,把伪装采用的方法称之为加密算法,(明文)伪装后得到的结果称之为密文;相反地,把密文恢复成明文的过程称为解密,恢复时所用的方法称为解密算法。上述这个过程还不是一个足够安全的过程。因为无论是加密算法还是解密算法,我们都可以用软件(一段程序)或硬件(加密机或加密卡)来实现。如果我们能绝对地保证加密和解密算法是保密的(例如只有通信双方知道),那么自然可以达到保密的效果。可事实上并非如此,实践证明,保护一段程序或者保护一个硬件是秘密的,和直接保护明文信息是秘密的,是一样的困难,高明的密码破译者们总能找到我们用来保密的加密算法和解密算法,从而找到我们要保密的信息。更何况,如果我们有办法保全加密算法或解密算法是秘密的,那么我们何不用之以直接保全我们的明文信息呢?因此密码学家们最终放弃了保密加解密算法的念头,而选择了设计一类新的加解密算法,在用这类算法加密时需要引入一个只有自己知道的秘密参数,密码学家把它称为密钥,而且只有拥有同样密钥的人才能解密阅读被加密的明文。顾名思义,“密钥”就是秘密的钥匙,起初人们总是把加解密比喻成利用钥匙给坚固的保险箱上锁开锁。这里“带锁的保险箱”好比是密码算法,可以用来保存明文文件,“钥匙”好比是密钥,“将明文文件放入保险箱并用钥匙锁上”就是加密过程,相反地,用钥匙将“锁有文件的保险箱”打开取出文件就是解密过程。整个过程如果没有钥匙,其他人即使能看到上锁的保险箱(密文),也不可能取出该文件,从而达到了保密的效果。通常,人们用同一把钥匙进行上锁或开锁,上锁时,把钥匙插入锁里并旋转,锁的栓和结构就以预定好的方式形成障碍以阻止门被打开;开锁时,插入钥匙并反方向旋转,锁的栓和结构就会以相反的方式工作,使门可以打开。在这里,我们用了同一把钥匙进行上锁和开锁,也就是说我们用于加密(上锁)和解密(开锁)的密钥(钥匙)是完全相同的,我们把这种加密密钥和解密密钥相同的密码称之为对称密码。现在国际上广泛采用的而且被证明足够安全的对称密码算法有3DES,IDEA,RC2,RC4,RC5等,当然还有很多其他好的算法,我们不必记住这些名字,只需知道这些算法,再加上一个具有足够长度的密钥,就能确保我们要保护的信息是秘密的、安全的,而且在任何情况下都不会被他人获知。还有一点不容忽视,由于对称密码用于加密和解密的密钥是完全相同的,因此,当A想和B传递一个秘密消息时,A不得不和B事先单独找个地方一起协商好相互间的密钥并非常小心地保管好它;如果A同时又要和C传递秘密消息,那么A也不得不和C事先协商好另外一个密钥,这也就意味着和A通信的人越多,A需要协商和保存的不同密钥就越多。那么,有没有更简单的方法,不用保存密钥,而只是在需要通信的时候临时产生密钥?如果临时产生密钥,又该如何将密钥安全地传递给通信的对方呢?二、公钥密钥的诞生如果和100个人通信,就要保管100个密钥,和1000个人通信,就要保管1000个密钥,这绝对不是一个好主意。这个问题不解决,将极大影响密码技术在更大范围的推广使用。然而1976年,美国斯坦福大学的研究生Diffie和教授Hellman极富想象力和创造力的设想,注定要引来密码学思想上的一场深刻变革。Diffie和Hellman是基于这样一种考虑的,即用于加密和解密的密钥是两个不同的但又相互关联的密钥(这与对称密码不同,对称密码中加密和解密密钥是相同的)。让我们仍然以前面提到的“带锁的保险箱”为例,来看看这将有什么不同。前面我们说过,一般来说,对一个普通的锁,我们总是用相同的钥匙进行上锁和开锁的。现在,我们假设有一位聪明绝顶和锁匠打造了这样一种“独特的锁”,之所以说独特,是因为这种锁配备有两把不同的钥匙,而且当我们用其中一把钥匙把锁锁上时,必须而且只能用另外一把钥匙才能打开。这种锁确实有点独特,但不管怎样,我们每个人都拥有了这样一把锁,并且拥有了属于自己的两把钥匙。那么,我们是否必须要保管好这两把钥匙并保证它们是绝对秘密的呢?我们说不完全是这样的。Diffie和Hellman的想法是,我们每个人都只需要保管好其中的一把钥匙并保证它是秘密和安全的,而另一把钥匙则需要大家慷慨解囊贡献出来,并放在一个任何人都能够看到,都能够取到的地方,也就是说另一把钥匙是需要公开的。我们把上面所说的这种独特的锁称为公钥密码算法(也可称为非对称密码),与锁配对的两把钥匙称为密钥,其中公开的那把钥匙称为公钥,自己保管的那把钥匙称为私钥。用公钥把锁锁上的过程称为公钥加密,用私钥把锁打开的过程称为私钥解密。例如A要给B发送一条信息,A希望能绝对保密,并只让B能知道。为此,A可把信息放入“保险箱”中,并用B的公钥(A总是能取到)给“保险箱”上锁(加密),然后通过Internet将“保险箱”邮寄给B。B收到“保险箱”后使用自己的私钥打开锁(解密)阅读信息。由于“保险箱”是用B的公钥锁上的,只有B才能用他的私钥打开“保险箱”,任何其他人因为没有B的私钥而无法做到这一点。整个过程如图1所示:图1公钥密码算法到现在为止,我们介绍了两种不同的“保险箱”,一种是带有普通锁的对称密码保险箱,另一种是带有独特锁的公钥密码保险箱,也称非对称密码保险箱。而且,非对称密码保险箱看起来似乎更好,因为它不需要我们保存很多很多的密钥。但事实是,两种保险箱各有优缺点:对称密码保险箱的诞生和使用由来已久,迄今为止,各式各样的对称密码保险箱(算法)不断被设计、被使用,目前在国际上广泛使用的对称密码保险箱(算法)具有足够的安全强度,且加解密速度非常快,其缺点是所有这些对称密钥保险箱(算法)均无一例外地需要事先协商好密钥,因此带来密钥管理上的困难;公钥密码保险箱的思想自1976年由Diffie和Hellman提出来以后,在两年后的1978年,才正式由美国麻省理工大学的三位知名教授Rivest、Shamir和Adleman等人联合设计出来,密码学上称为RSA(三人名字的第一个字母)公钥密码系统。公钥密码用全新的方式解决了对称密码存在的密钥管理难的问题,但其缺点是加密解密速度较慢,大概仅是对称密码的几千分之一。因此,公钥密码一般不用于直接加密消息。现实的做法是,将对称密码和公钥密码结合起来使用。例如当A要向B传递一个秘密消息的时候,A临时(随机)产生一个对称密钥,用对称密码保险箱加密消息文件,同时用公钥密码保险箱加密刚才产生的对称密钥(因为对称密钥一般数据量很小,加密起来只需用很短的时间),然后将两个保险箱同时传递给B。B可以首先用自己的私钥打卡公钥密钥保险箱取出对称密钥,然后用对称密钥打开对称密码保险箱取出消息文件阅读。整个过程如图2所示:图2组合对称密码和公钥密码这种传递秘密的方式,既克服了对称密码需要事先商量好密钥的问题,又弥补了公钥密码直接加密消息速度慢的缺点。同时,用公钥密码保险箱安全传递对称密钥,就好比用保密信封邮寄钥匙一样,因此我们形象地称之为“数字信封”。公钥密码保险箱还存在另一种使用的方法。通信的一方A如果用自己的私钥给保险箱上锁,就能够保证让对方相信文件是自己发出的并且文件内容是真实的,如图3所示:图3数字签名原理如果是A以外的人锁上并发出保险箱的话,则用A的公钥将无法打开,并且任何除A以外的人要想篡改保险箱中的内容并且不让他人发现的话,他必须首先用A的公钥打开保险箱,取出文件更改后放入其中,然后再用A的私钥将保险箱锁上,这样看起来才和原来的一模一样,但他却无法做到这一点,因为他永远得不到A的私钥,A的私钥只有A本人拥有。这有点类似现实生活中人们用笔在文件上署名,或者公司在合同上盖章来证明文件或合同的真实性一样,我们也给它起了一个形象的名字叫做“数字签名”。三、数字证书的工作原理有了密码学中对称密码、公钥密码和数字签名技术,我们就可以完全解决网络世界的信息安全问题了。唯一还需要解决的问题就是我们应该如何公布自己的那把需要公开的钥匙(公钥)并且使之和我们的身份信息联系在一起。当人们谈到身份时,自然而然就会想到公安机关给每个人颁发的居民身份证。在现实生活中,人们用身份证去办很多事情,如住宿酒店、到银行提款或者参加国家举办的某个统一考试等等,身份证总能为我们免去许多麻烦。那么在虚拟的网络世界呢?我们是否也需要这样一个类似的网络身份证呢?答案是肯定的。密码学家们以现实世界的居民身份证为参考模型,设计了一种用于虚拟世界的网络身份证——数字证书(DigitalCertificate),并且通过数字证书巧妙地将公钥及其拥有者的真实身份绑定在一起,有点类似于现实生活中的居民身份证。所不同的是数字证书不再是纸质的证照,而是一段含有证书持有者身份信息并经过认证中心审核签发的电子数据,可以更加方便灵活地运用在电子商务和电子政务中。目前数字证书的格式普遍采用的是X.509V3国际标准,内容包括证书序列号、证书持有者名称、证书颁发者名称、证书有效期、公钥、证书颁发者的数字签名等。数字证书和居民身份证内容大致对应关系如下表:表1数字证书和居民身份证内容对比数字证书居民身份证证书序列号身份证编号证书持有者名称姓名/性别/民族/出生日期/住址有效期起始日期/终止日期颁发日期/有效年限证书颁发者(认证中心)发证公安机关公钥照片颁发者的数字签名发证公安机关盖章和防伪标志数字证书与居民身份证不仅在内容上极为相似,而且在使用和验证上也显得颇有雷同。回想一下您拿着存折到银行取款的情形吧。在您取到款之前,银行柜员将做些什么呢?如果前台柜员是足够负责任的话,会要您出示您的存折和个人身份证,然后比对身份证的名字与存折的账户名是否一致,接着会查验您的身份证是否有效,比如身份证是否在有效期之内、是否有公安机关的盖章、防伪标志是不是真实的等等。当验明您的身份证是有效的之后,柜员还将做最后一步操作,比照身份证上的照片和您本人是否一模一样。只有上述所有步骤均通过以后,柜员才会放心地把款发放给您,您也才能正大光明地取到款项。那么,这些如果是在网络上进行呢?假如您要从名叫Alice的账户上划拨一笔款项,怎么样才能够安全地进行呢?这回您和银行是互不见面的,您不用也不会亲自去银行,但您仍然需要做两件事情:第一,您需要通过网络向银行出示您的数字证书;第二,您需要向银行提交您的划款请求,当然您的请求需要放在保险箱中并用您的私钥锁上(因为请求中将涉及到账号或金额等敏感信息)。(注:实际中将有一段程序为您完成这两件事情,而并非要您亲自去做,该程序还能确保您和银行之间在网络上的通信过程是秘密的。)那么银行在收到您的数字证书及划款请求后将怎么做呢?首先,银行将确信数字证书的持有人就是Alice(看看数字证书中“证书持有者名称”一项即可);然后银行将验证该数字证书是否是有效的,这点和验证居民身份证的有效性完全类似,即验证数字证书是否在有效期之内,是否是可信的认证中心颁发的,是否有认证中心的签名(类似于盖章)等等;接着,银行还将用数字证书中绑定的公钥(类似于身份证上的照片)来验证您向银行提交的保险箱(里面有您的划款请求),比如用公钥能打开保险箱的话,则证明保险箱就是您本人,也就是Alice提交的(因为只有您才有锁上保险箱的私钥),这有点类似于比对身份证上的照片和您本人,因为只有您才能照出您自己的照片。数字证书真的是和居民身份证一模一样!理解了居民身份证,就不难理解数字证书。与身份证一样,数字证书也需要发放到用户手中。但由于

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功