打造自己的密钥中心

发表于:2007-06-23来源:作者:点击数: 标签:
随着信息交换的激增,对信息保密的 需求 也从军事,政治和外交等领域迅速扩展到民用和商用领域。计算机技术为信息安全的研究和实现提供了强有力的手段和工具。数据加密是计算机 网络安全 很重要的一个部分。 由于因特网本身的不安全性,为了确保安全,不仅要

   

随着信息交换的激增,对信息保密的需求也从军事,政治和外交等领域迅速扩展到民用和商用领域。计算机技术为信息安全的研究和实现提供了强有力的手段和工具。数据加密是计算机网络安全很重要的一个部分。

由于因特网本身的不安全性,为了确保安全,不仅要对口令进行加密,有时也对在网上传输的文件进行加密。为了保证电子邮件的安全,人们采用了数字签名这样的加密技术,并提供基于加密的身份认证技术。

现在加密主要分为对称加密和非对称加密,如果发送方式用的加密密钥和接受方使用的解密密钥相同,或者从其中一个密钥易于得出另一个密钥,这样的系统就叫做对称的密钥系统。如果发送方式用的加密密钥和接受方使用的解密密钥不相同,从其中一个密钥难以推出另一个密钥,这样的系统就叫做非对称密钥系统。对称密钥使用单个密钥对数据进行加密或解密,而非对称加密算法是有两个密钥(即公有密钥和私有密钥),只有二者搭配使用才能完成加密和解密的全过程。由于非对称算法拥有两个密钥,在因特网上得到广泛应用。



下面列出了实现信息安全的手段和说明:



1. 公钥加密技术:公钥密码体制有两个不同的密钥,它可将加密功能和解密功能分开,一个密钥成为私有密钥,它被秘密保存,另一个是公有密钥,不需要保密,对于公钥来说,正如其名,是公开的,公钥可能公开与英特网上。主要公钥算法:RSA算法。

2. 消息认证技术:用于为数字签名技术提供技术保证,信息认证又称为完整性校验。安全单向散列函数(哈希函数),安全单向散列函数的作用是对任意长度的输入消息输出一个固定长度的散列值,这个散列值就是消息摘要,就像文件的指纹,散列值是唯一的,因而提供了消息完整性认证,主要信息摘要算法:MD5和SHA。

3. 数字签名技术:使用消息认证技术用于确认发送者身份和信息完整性。



下面介绍以上三种技术的实际应用和关系

1. 假如A要给B发送一幅图片,为了防止第三者拦截,所以需要加密,B生成一对密钥对(包含公钥和私钥),B的公钥是公开的,任何人可以以公钥为密钥发送机密消息给B,A可以用B的公钥加密图片,然后通过网络传递,当B受到加密后的图片后利用自己的私钥进行解密,得到原始图片,其他接受方由于没有私钥,所以无法解密。如图一,(其中public key是指公钥,private key是指私钥,encryption是指加密,decryption是指解密。)

2.假如A要给B发送一幅图片,为了防止第三者修改,破坏图片的完整性,所以需要进行验证数据的完整性,A用MD5或SHA算法对图片进行哈希运算,生成消息摘要,然后将消息摘要和图片一起发送给B,B收到后,用同样的哈系算法对图片重新生成消息摘要,如果第二次的消息摘要与原始的一样,就可以认为原始图像没有被修改过,有点像CRC。如图二

3.假如A要给B发送一幅图片,B收到后可以认定是A所发送的,而且A也不能否认他所发的图片,且要保证图片在传递中没有被修改过。A生成一对密钥对,A将公钥发送给B,A用MD5或SHA算法对图片进行哈希运算,生成消息摘要,A用自己的私钥加密消息摘要,就得到了数字签名,然后B使用A发送过来的公钥对数字签名进行解密,得到原始图片的消息摘要,然后使用相同的哈希算法对图片重新生消息摘要,然后比较这两个消息摘要,就可以验证图片的完整性。

其中对于第一种情况,只是对数据进行加密,并不能保证数据在传输过程中没有被第三方修改,而且接受方也不能保证发送方的身份,因为公钥是公开的,任何人都能对B发送文件。

对于第二种情况,对数据的完整性进行了检查,可以保证数据在传输中不被修改,但是如果第三方同时修改了数据和消息摘要,使数据和消息摘要相匹配,这样就不能保证安全了,而且接受方不能验证发送方的身份。

对于第三种情况,接受方可以保证发送方的身份,而且发送方也不能否认自己的发送行为,并能保证数据的完整性,但是数据并没有加密,第三者可以看到数据的内容,这种技术主要用于合同,用户不需要防止第三者的偷看,只要保证合同的完整性和发送者的身份,往往消息的来源比隐藏消息的内容更加重要。

数字签名和消息认证的区别是,消息认证使对方能验证消息发送者及其所发的消息是否被篡改过。当收发双方有利害冲突时,单纯用消息认证无法解决他们之间的纠纷,只有借助于数字签名。

数字签名和公钥加密的区被是,数字签名--发送者使用自己的私钥加密消息,接收方使用发送者的公钥解密消息,公钥加密--发送者使用接收方的公钥加密消息,接收方使用自己的私钥解密消息。

好了,说了这么多理论,让我们来实践一下,由于是个人加密,并不是企业的加密,所以用不着使用Windows 2000 Server的证书服务,因为个人之间并不需要验证发放公钥的机构,我们使用的是http://www.d--b.webpark.pl 出品的Crypton,下载地址:http://www.d--b.webpark.pl/down/crypton1-2.zip 主界面如图三,我们分别对上面介绍的三种情况进行实践:

1. 点击Create new public/private key pair ,程序将会生成随机的512位的RSA密钥对,Export public key 是导出公钥,Export public/private key pair 是导出密钥对,import public key 是导入公钥,import public/private key pair 是导入密钥对,首先我们分别导出公钥和密钥对,以备后用,在导出密钥对时,会要求输入密码,如图五,因此生成.pbl和.ppk文件,然后我们将公钥发布出去,私钥自己妥善保管,发送方(当然也是我),假如我有一个“敏感信息.txt”文件需要发送给对方,并得到了接受方的公钥.pbl文件,然后我们将其导入软件中,如图六,导入后,我们正式开始加密文件,我们将“敏感信息.txt”拖到软件界面上,如图七,我们选择encrypt加密,Delete and vipe 是指加密后是否删除源文件,生成“敏感信息.crp”文件,然后我们将加密后的文件通过因特网发送到接受方,接收方收到后,先导入密钥对并输入密码,因为里面包括私钥,并且将”敏感信息.crp“拖入程序,选择decrypt,就可以解密成功并还原“敏感信息.txt”。



2. 发送方首先导入密钥对,然后将“敏感信息.txt”拖入程序,选择Sign file(s) ,当前目录会生成“敏感信息.sgn”消息摘要,然后接收方导入发送方的公钥,然后将“敏感信息.txt”拖入程序中,要保证“敏感信息.sgn”和“敏感信息.txt”在同一目录,选择Verify signed file(s),如果出现Signature is OK 说明文件没有被修改过,否则就是文件被修改了。

3. 关于第三种数字签名请读者自己练习,应该不难,主要是加密.sgn文件。

主要扩展名及其说明如下:

.crp 加密后的文件. 

.pbl 公钥. 

.ppk 密钥对.

.sgn 消息摘要. 

高级应用:

上面介绍的第三种情况,数据并没有加密,所以也会有安全问题,有些人希望数据也要加密传输,所以介绍一下双环加密方式,发送方和接收方各自生成密钥对,双方彼此都知道对方的公钥,首先发送方导入密钥对使用哈希算法对数据运算产生消息摘要,然后对数据和消息摘要进行打包,再利用接收方的公钥对打包好的文件进行加密,然后发送给接收方,接收方收到后,先用自己的密钥对解密打包的文件,然后再用发送方的公钥验证消息摘要,然后比较,这样就可以判断数据的完整性,还可以验证发送方的身份,由于采用了双方的公钥,所以有双层加密的效果。

下载地址: http://www.d--b.webpark.pl/down/crypton1-2.zip



原文转自:http://www.ltesting.net