文件加密与数字签名

news/2024/7/3 12:26:11 标签: 加密, 解密, file, excel, 网络, exchange

目录:  (to myself: 文件图片已发送到自己的hotmail中,docx格式的文件。)

前述

文件

数字签

获得私钥和密

私钥和公钥特性 

 

    谈到文件加密或许有人马上联想起WORDEXCEL等文档文件的密码保护,要注意在此我所要讲的绝不是这种密码保护,而WIN2000所拥有的利用加密钥匙来实现的文件加密和数字签名,它是数字化的。WORDEXCEL的密码保护仅是保证文件在没有密码时不能打开或修改,这个保护级别相对来说较低,一般这种保护密码很容易通过一些专用程序解密。而现在要讲的文件加密和数字签名,加密后的文件在解密之前会面目全非,没有对应的密码是无法进行阅读的,更别谈修改了,况且这种密码比起前者所使用的密码长许多倍,而且是配对使用的,据专家分析用任何程序解密的可能性几乎为零,即使能解密,也起码要10000年,你说这样的解密又有什么意义呢?所以说这里所讲的文件加密与数字签名的密级相对来讲高了许多许多! 软件开发网

在正式讲解文件加密和数字签名之前我们要先了解加密的工具,在这里我们用的是用户的公钥(Public Key)和私钥(Private Key)来实现的,加密解密必须用同一个用户的一对公钥和私钥来配对使用,也就是说如果加密时用的某用户的公钥,那么解密时就必须用其人的私钥来解,反之如加密时用的是某人的私钥,那么解密时必须用其人的公钥来解,不能同时用公钥或私钥,更不能用不同用户的公钥或私钥来解密。公钥可以告诉别人,但私钥却一般不能告诉别人,除非授权。就象我们的大楼一样,大门钥匙我们可以给各住户,但各家自己门的钥匙却只能给住户本人,不能随便给。下面我要讲的文件加密数字签名虽然其过程不一样,但原理是一样的,大家注意理解。

 

 

 一, 文件加密 。。。。。。。。。。。。。。。。。。。。。。。。。。Back

 加密">

  我们知道加密的目的就是在于证明用户身份,防止别人偷截你的文件或内容。我们同样知道现在网络还存在许多不安全因素,在我们发送电子邮件或传输文件时或许有很多人在别处密切监视着我们,特别是对一些大公司伟输一些机密文件时,怎样实现安全传输呢?WIN2000中为我们提供了具有相当安全级别的加密措施,那就是用个人的公钥和私钥配对使用加密解密。下面就以一个具体例子来讲解加密解密,以及保护加密文件的过程。

  现假设有A公司的老板名叫BObB公司的老板名叫Alice,现BOb想传输一个文件File BSAlice,这个文件是有关于一个合作项目标书议案,属公司机密,不能给其它人知道,而恰好有一个C公司的老板LindaAB公司有关那项合作标书非常关注,总想取得A公司的标书议案,于是他时刻监视他们的网络通信,想如果Bob通过网络传输这份标书议案时从网络上截取它。为了防止Linda截取标书议案,实现安全传输,我们可以采用以下步骤:

  1、首先Alice把自己的公钥(设为Public Key A)通过网络传给Bob;

  2BobAlice的公钥(Public Key)给标书议案文件File BS加密;

  3Bob把经过加密的文件传给Alice;

软件开发网

4Alice收到Bob传来的File BS后再用自己的私钥(设为 Private Key)解密

以上四步可用下图表示:

  或许有朋友会要问,在第一步中C公司的老板Linda同样可以截取Alice的公钥(Public Key),且在第3步中也可以截取加密后的标书议案文件File BS,但首先要知道这都没有任何意义。因为虽然Linda获取了Alice的公钥和标书议案文件File BS,但用Alice公钥加密后的文件只能用Alice的私钥来解开,即使使用Alice的公钥也无法自己解密,因为公钥和私钥必须配对使用,这就是发明这种加密方法的绝妙之处。所以在这个传输中可算是比较安全的,当然安全是相对的,据说曾经有黑客专家宣称可以利用个人的公钥推算出其私钥,结果事实证明可能性几乎为零,即使可能也要10000年后才可以,你说这又有什么意义呢?至于这个人公钥和私钥如何获得我下面将详细介绍,在此不作重叙。

 

,  数字签名 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。Back

 

  数字签名也主要是为了证明发件人身份,就象我们来看到的某文件签名一样,但现在要说的签名是采取数字的方式,它可以防止别人仿签,以过加密后的签名就变得面目全非,别人根本不可能看到真正的签名样子,它与前面所讲的文件加密机理是一样的,但方法不太一样,下面介绍如下。

仍就和文件加密所举的例子一样,Bob要在所发的文件File BS后面要加以签名,以证明这份标书的有效性(因为BobA公司的老板),同样是发给B公司的老板Alice,公司C的老板如果想要假冒Bob的签名发另一份标书给Alice,以达到破坏A公司中标的目的。

  1Bob首先把自己的公钥发给Alice;

  2Bob再要对File BS文件签名以Bob的私钥进行加密,加密后再发给Alice;

  3Bob把经过加密的签名文件传给Alice;

  4Alice在收到加密后签名文件File BS后用Bob的公钥进行解密

  因为File BS已经用加密方式进行加密,同上例,我们知道Linda无法获得Alice的私钥,也就无法阅读到文件内容,但它可以用Bob的公钥解读File BS的签名。但这同样没有意义,因为如果Linda要仿冒Bob的数字签名必须要有Bob的私钥,否则Alice无法用Bob的公钥对签名进行解密,或许你又要说如果Linda也把自己的公钥发给Alice,那么Alice怎样区别哪一个公钥是真正的Bob的公钥呢?这就要涉及到后面要讲的公钥的获得途径了,先要说的就是Alice可以到发证机关进行查询来辨别,就这样Linda的阴谋也就不能得逞。

 

在讲证书如何获得之前,先做下小节。

总结:

 

文件加密- 发送方用接受的公钥加密,接受方用自己的私钥解密。(接受方首先把自己的公钥给发送方,然后发送用接受的公钥加密要发送的文件数据,接受方接收不具可读性的文件后,用自己相应的私钥解密文件)

 

数据签名-发送方用自己的私钥加密数据,然后把加密公钥给接收方,接受方用发送方的公钥解密数据,以此证实此数据确实是期望的发送方发送的。

 

,  公钥和私钥的获得。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。Back

 

  上面我们讲了文件加密和数字签名都必须用到个人用户的公钥和私钥,到底如何获取这两个钥匙呢?下就分别介绍:

 1、私钥的获取

  要获取私钥首先必须要申请证书,一般一个用户一在系统中注册系统就会自动分配一个私钥给用户,它是通过系统的安全认证后获得自动获得的,要获取私钥也就必须先获取系统给用户的安全证书,获取安全证书和私钥的步骤如下:

  首先要查看管理工具栏中是否有控制台这一项,如图3所示。如有打开控制台,如没有则运行弹出菜单项(如图4)中键入“mmc”,则出现如下图5所示的的对话框,系统会自动为用户添加一个名为控制台1”的控制台。


3


4


5

如果在控制台中没有证书这一项,就选择控制台菜单下单击添加/删除管理单元(M...”子菜单,即出现如图6所示的对话框。再单击图6中的添加按钮,出现如图7所示对话框,在这个对话框中我们选择证书项后,按添加按钮。


6


7

 出现的对话框如图8所示。在这个对话框中我们选择第一个单选项我的用户账户,按完成后出现如图9所示的对话框。这样我们在图9中我们选择个人证书项,如图示,即在控制台右边出现个人用户获得证书的情况,其实这个时候系统就已经为用户分配了一个私钥,只不过还看不到而已。


8


9

 要看到这个私钥就必须先导出这个私钥,注意私钥一般和个人用户安全证书一起,所以要导出私钥就必须先导出个人证书。选择自己的账号,然后在操作菜单下的所有任务下的导出...”,如图10所示,选择后即出现如图11所示的对话框,它是一个导出证书的向导。跟着按下一步,出现如图12所示的对话框。在这个对话框中选择是,导出私钥单选项,按默认选择一直按下一步,当出现如图13所示的对话框时键入导出后私钥文件的保存密码(这个就有点象WORDEXCEL等文档文件的保存密码了),确认后继续按下一步。在后面出现的对话框中我们只要输入相应提示内容即可完成证书导出向导。


10


11


12


13

2、公钥的获取

  上面讲了个人用户私钥是由相应用户或系统管理员在本机上由系统在安全证书导出时导出,在证书中其实也就包含了用户的公钥,如图14所示。从图中可以看出公钥是相当长的一段代码,比起我们平时WORDEXCEL所用的密码不知长多少倍,图中显示的还是较短的。用这种方式只是系统内得到承认,系统外用户就无法证实其真实性,也不具有法律效力,所以我们一般向专门的电子安全机构申请,这个机构就叫做公钥组织(即Public Key Ifrastructure,也即通常所讲的PKI),在申请证书的后PKI会分配一个公钥给申请用户。具体的申请过程途径有多种,现介绍两种方法。


14

  方法一:就是在控制台中选择用户然后在操作菜单下选择所有任务下的几种申请方法,如图15

 

15

方法二:就是在OUTLOOK中我们打开工具菜单下的选项...”子菜单,如图16所示。在安全邮件中选择获取数字标识(G...”项,如果已联网,则会自动进入微软公司获数字标识的默认网址,在这其中会出现许多发证机关,但要记住这是要收费的,如图17和图18所示。


16

 

,  公钥和私钥的特性。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。Back

上面我们讲了有关文件加密、数字签名的方法以及公钥和私钥的获取方法,到底公钥和私钥又有哪些特性呢?我们还是不得而知。下面就简单介绍如下:

  1、公钥和私钥在文件加密和数字签名上必须配对使用,且必须是同一个账号用户的。
  这一点我在上面也讲过,一个文件不能同时用某一个用户账号的公钥或私钥来加密解密,必须配对使用,就是说如果加密时用的是一个账号的公钥,那解密时必须用那个账号用户的私钥,反之,如加密时用的是某个账号用户的私钥,那解密时就必须用那账号用户的公钥。

  2、公钥是可以公开的,私钥是属个人用户账号所有,不可公开的(除非自己愿意)
  这一点在上面也提到过,所以我们的公钥可以通过网络传输给某人,不怕别人截取,但私钥绝不要这样传输。

  3、公钥和私钥加密文件是在背后操作的
  加密后的文件会变得面目全非,但我们不要知道这是怎么做,只需执行加密即可。

  4、私钥只对作者用户提供
  也就是说并不是所有用户都可以获得账号用户的私钥,但至少还可以通过以下两种途径获得:

  a、作者授权;
  b、具有系统管理员账号组的用户可以覆盖原私钥数据库

  所以一般来说不要怕某个人用自己的私钥对某些重要文件进行加密,而造成公司损失,至少系统管理员可以覆盖原来这个用户的私钥,至于如何覆盖,请查有关书籍。

  好了,讲了这么多,基本上有关文件加密和数字签名的基础知识讲得也差不多了,当然WIN2000给文件加密的方法远不止这一种,且目前为止WIN2000的这种加密方式也只有在IEIISOUTLOOKEXCHANGE SERVER等有限的几个软件中应用,并不是所有软件都可以用。

 


17


18

 

         


http://www.niftyadmin.cn/n/1221538.html

相关文章

软件版本GA,RC,alpha,beta,Build 含义。

为什么80%的码农都做不了架构师?>>> (1)RC:(Release Candidate) Candidate是候选人的意思,用在软件上就是候选版本。Release.Candidate.就是发行候选版本。和Beta版最大的差别在于Beta阶段会一直加入新的…

java的property配置文件的用法

各种语言都有自己所支持的配置文件类型。比如 Python ,他支持 .ini 文件。因为他内部有一个 ConfigParser类来支持 .ini 文件的读写,根据该类提供的方法程序员可以自由的来操作 .ini 文件。而在 Java 中, Java 支持的是.properties 文件的读写…

--技术视频 淘宝前台系统优化实践 懂产品的程序员

http://www.infoq.com/cn/presentations/jjw-taobao-front-optimization-practice 做个懂产品的程序员(架构师/技术人员/etc.)? http://www.luanxiang.org/blog/archives/1469.html

关于存储过程的重复调用 about Stored Procedure

Stored Procure SP1, 有两个个输入参数 a 和b, 有三个输出参数x, y, z, 在table A中,有多个字段,其中有两个字段a和b,这两个字段可以作为SP1的输入参数,如何找到表A中的所有满足在SP1中输入A.a 和A.b后, 返回x&#…

服务器端的office字段化

花了两天时间来做doc,docx,ppt,pptx文件到pdf的转换。核心问题在于,虽然微软的interrop系列组件可以使用,但部署在iis上后却无法运行。搜索一番后发现是一个经典问题。按照提示,配置了一些权限,仍然不行。 后来我找了openoffice系…

数据库连接池的原理

数据库连接池,简称dbcp database connection pool存在意义:数据库的连接是非常耗费系统资源的,一个应用通常都是需要与数据库打交道,也就需要经常连接数据库,这样导致浪费大量系统资源;连接池的原理就是&am…

SNK 和PDF

snk 1用来证明这个生成的程序集是你发布的; 2如果你写的程序集要用在多个应用程序上的话,那么这个程序集必须要拥有唯一的名称,这个强名称是程序集唯一名称的一部分。 3只要你保护好你的snk文件不要公布出去,那么没有任何人可以…

服务器管理器损坏求怎样修复

MMC无法创建管理单元。此管理单元可能没有正确安装。 名称:服务器管理器 CLSID:FX:{18ea3f92-d6aa-41d9-a205-2023400c8fbb} 貌似是由于.Net Framework出现故障。以下是网络上查找到的方法,希望对你有用:方案一:把系统升级安装的.…