CA
------------ 银行的数字证书说明:
如果用户想得到一份属于自己的证书,他应先向银行(可看作CA机构)提出申请。在银行(CA)判明申请者的身份后,便为他分配一个公钥,并且CA将该公钥与申请者的身份信息绑在一起,并为之签字(用CA的私钥对申请人的证书进行加密)后,便形成证书发给那个用户(申请者)。用户即可凭借该证书登陆网上银行进行相关银行业务>>>>>>
如果银行想鉴别登陆人员的真伪,需严正登陆者的数字证书的真伪,他就用CA给申请人的公钥对那个证书上的签字进行验证(如前所述,CA签字实际上是经过CA私钥加密的信息,签字验证的过程还伴随使用CA公钥解密的过程),一旦验证通过,该证书就被认为是有效的。
CA除了签发证书之外,它的另一个重要作用是证书和密钥的管理。
由此可见,证书就是用户在网上的电子个人身份证,同日常生活中使用的个人身份证作用一样。CA相当于网上公安局,专门发放、验证身份证。
------------
密钥
不像有的加密技术中采用相同的密钥加密、解密数据,公共密钥加密技术采用一对匹配的密钥进行加密、解密。每把密钥执行一种对数据的单向处理,每把的功能恰恰与另一把相反,一把用于加密时,则另一把就用于解密。 公共密钥是由其主人加以公开的,而私人密钥必须保密存放。为发送一份保密报文,发送者必须使用接收者的公共密钥对数据进行加密,一旦加密,只有接收方用其私人密钥才能加以解密。 相反地,用户也能用自己私人密钥对数据加以处理。换句话说,密钥对的工作是可以任选方向的。这提供了"数字签名"的基础,如果要一个用户用自己的私人密钥对数据进行了处理,别人可以用他提供的公共密钥对数据加以处理。由于仅仅拥有者本人知道私人密钥,这种被处理过的报文就形成了一种电子签名----一种别人无法产生的文件。 数字证书中包含了公共密钥信息,从而确认了拥有密钥对的用户的身份
---------------- 秘密/通用或对称加密技术 : DES
例如:恺撒密码的原理是,对于明文的各个字母,根据它在26个英文字母表中的位置,按某个固定间隔n变换字母,即得到对应的密文。这个固定间隔的数字n就是加密密钥,同时也是解密密钥。例cryptograsphy是明文,使用密钥n=4,加密过程如图所示:
在通用密码体制中,目前得到广泛应用的典型算法是DES算法。DES是由“转置”方式和“换字”方式合成的通用密钥算法,先将明文(或密文)按64位分组,再逐组将64位的明文(或密文),用56位(另有8位奇偶校验位,共64位)的密钥,经过各种复杂的计算和变换,生成64位的密文(或明文),该算法属于分组密码算法。
DES算法可以由一块集成电路实现加密和解密功能。该算法是对二进制数字化信息加密及解密的算法,是通常数据通信中,用计算机对通信数据加密保护时使用的算法。DES算法在1977年作为数字化信息的加密标准,由美国商业部国家标准局制定,称为“数据加密标准”,并以“联邦信息处理标准公告”的名称,于1977年1月15日正式公布。使用该标准,可以简单地生成DES密码。
----------------- 公钥密码体系/非对称加密技术 :RSA RSA的一个比较知名的应用是SSL,在美国和加拿大SSL用128位RSA算法,由于出口限制,在其它地区(包括中国)通用的则是40位版本。SSL 的英文全称是 “Secure Sockets Layer” ,中文名为 “ 安全套接层协议层 ” ,它是网景( Netscape )公司提出的基于 WEB 应用的安全协议。 SSL 协议指定了一种在应用程序协议(如 HTTP 、 Telenet 、 NMTP 和 FTP 等)和 TCP/IP 协议之间提供数据安全性分层的机制,它为 TCP/IP 连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。
(密钥对: 发送或接受方都有2个密钥:匙 公钥和私钥
这样,一个具体用户就可以将自己设计的加密密钥和算法公诸于众,而只保密解密密钥。任何人利用这个加密密钥和算法向该用户发送的加密信息,该用户均可以将之还原。公共密钥密码的优点是不需要经安全渠道传递密钥,大大简化了密钥管理。它的算法有时也称为公开密钥算法或简称为公钥算法。
)
1976年提出公共密钥密码体制,其原理是加密密钥和解密密钥分离。加密技术采用一对匹配的密钥进行加密、解密,具有两个密钥,一个是公钥一个是私钥,它们具有这种性质:每把密钥执行一种对数据的单向处理,每把的功能恰恰与另一把相反,一把用于加密时,则另一把就用于解密。用公钥加密的文件只能用私钥解密,而私钥加密的文件只能用公钥解密。 公共密钥是由其主人加以公开的,而私人密钥必须保密存放。为发送一份保密报文,发送者必须使用接收者的公共密钥对数据进行加密,一旦加密,只有接收方用其私人密钥才能加以解密。 相反地,用户也能用自己私人密钥对数据加以处理。换句话说,密钥对的工作是可以任选方向的。这提供了"数字签名"的基础,如果要一个用户用自己的私人密钥对数据进行了处理,别人可以用他提供的公共密钥对数据加以处理。由于仅仅拥有者本人知道私人密钥,这种被处理过的报文就形成了一种电子签名----一种别人无法产生的文件。 数字证书中包含了公共密钥信息,从而确认了拥有密钥对的用户的身份。
----------------------------------------------------
下面列出了实现信息安全的手段和说明:
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文件。