白话数字签名(1)——基本原理(新!) (ZT)
上一篇 / 下一篇 2010-07-29 12:43:54 / 个人分类:安全
摘要
iP:D"gv F&I051Testing软件测试网%i$W"I+hp[
本系列通过通俗易懂的讲解,让您就像读小说一般,轻轻松松就能理解数字签名的基本原理和应用方法(即使您是一个并不精通计算机的企业老总,也能读懂本篇文章)。然后我们再逐步深入技术细节,最后将给出一个在B/S信息系统中使用数字签名的DEMO。51Testing软件测试网AcP2BsRgP(]7b-Z
)V#Nm1|r0由于数字签名基于非对称加密技术,所以我们需要先啰嗦一下对称加密和非对称加密技术。51Testing软件测试网Z|5L?L@h
51Testing软件测试网?'J8O\4PntD&dD
对称加密51Testing软件测试网/Bc Y!Z*mR
qB L%iW+R(_$H,kU0何谓加密?加密是一种“把数据搞乱掉”的技术。加密技术涉及到4种东东:
!|Ve*R&b/ms'E(g0明文:可以被人或程序识别的数据。例如一个文本文件、一段歌词、一个Word文档、一首MP3、一个图片文件、一段视频等等。
C3{(hDJ-a0加密算法:将数据搞乱掉的方法。51Testing软件测试网r Wf$Bmdq1U
密钥(密码):一个你在进行加密操作时给出的字符串,让加密算法不但把明文“搞乱掉”,而且要乱得“与众不同”。这样即使别人搞到了解密算法,如果没有当初加密时所使用的密码,一样无法进行解密操作。
;hz ]1S8e Au)x0密文:明文被加密算法和密钥加密后的结果。它看上去就是一堆乱码,没有人或程序能知道它到底表示什么信息。51Testing软件测试网+z'| E!n2MRK
51Testing软件测试网2Q V#i9NHxMK:f$r
作为加密的一个实例,我将使用由我杜撰的“景氏替换加密算法”演示一下加密过程。
j:puLRBEW^*Z}0明文:good good study, day day up.
cJtYM%b/t0密钥:google51Testing软件测试网WpRLWVmm
景氏替换加密算法:将明文中的所有的字母“d”替换成密钥。
TKU~X\0密文:将“good good study, day day up.”中的所有字母“d”替换成“google”,就得到密文“googoogle googoogle stugoogley, googleay googleay up.”。这个密文乱得还可以吧?一般人看了肯定不知道它是什么意思。
-_$Hp0CA%K&];E051Testing软件测试网)}9?"Pf ^E
那么什么是解密呢?解密就是把密文再变回明文的过程。51Testing软件测试网?{aGb}6Y&GAhb9n
例如“景氏替换解密算法”就是:将密文中所有与密钥相同的字符串替换成“d”。51Testing软件测试网&Nb.d k-^;j2a u
密文:googoogle googoogle stugoogley, googleay googleay up.
7{Ks w'qQ0密钥:google51Testing软件测试网}F,~])Mv
景氏替换解密算法:将密文中所有与密钥相同的字符串替换成“d”。
b~jT6u4s0明文:将“googoogle googoogle stugoogley, googleay googleay up.”中的所有“google”替换成“d”,就得到了明文“good good study, day day up.”。51Testing软件测试网@|)bR5bP4|0t
0Z:V{*^5s] o0G0您肯定已经注意到了,我们在进行加密和解密时使用的密钥必须是相同的,例如在上例中,加密和解密都必须使用相同的密钥“google”。所以像“景氏替换加密算法”这种就被称为对称加密算法。目前最为流行的对称加密算法是DES和AES,此外,对称加密算法还有IDEA、FEAL、LOKI、Lucifer、RC2、RC4、RC5、Blow fish、GOST、CAST、SAFER、SEAL等。WinRAR的文件加密功能就是使用的AES加密算法。
j.J-|'CeV051Testing软件测试网"AakSrZM
非对称加密
[:W_v`]l}{(A051Testing软件测试网;`4`$h)CQ-\l8S
非对称加密算法是一类与众不同的加密算法,它的密钥不是1个,而是2个(一对),我们先姑且称它们为密钥K1和密钥K2。非对称加密算法的特点是,如果用密钥K1进行加密,则有且仅有密钥K2能进行解密;反之,如果使用密钥K2进行了加密,则有且仅有密钥K1能进行解密。注意“有且仅有”的意思——如果用密钥K1进行了加密,是不能用密钥K1进行解密的;同样,如果用密钥K2进行了加密,也无法用密钥K2进行解密。这是一个非常重要的特性,至于如何在实际中运用这个特性,请看下文。
7Z D|he&mV0
']n$J[I+h}g0我想给Clark传送一个AV小电影,又怕被他的老婆发现......
z(|5@l]0
)p3Kzy^}0话说俺得了一个很不错的AV小电影,想通过网络传送给Clark,可是又怕被他的老婆发现(因为Clark的老婆是一个超级黑客,她可以使用sniffer技术截获任何通过网线传送给Clark的数据。别跟我说用VPN,它超出了本文讨论的范围),怎么办呢?对了,我们需要一个“将数据搞乱掉”的技术——加密技术。我先使用WinRAR对小电影进行压缩,然后加上密码“TswcbyyqjsjhfL”(还记得么?WinRAR的文件加密功能使用的是叫作AES的对称加密算法)。接着,将这个加密后的文件通过QQ传送给Clark。然后,兴冲冲地拨打Clark的手机:
"~~J&X6bu_8f^0“喂?Clark么?好久不见,呵呵......我给你发了个好东东呦,在QQ上,收到没?......密码是TswcbyyqjsjhfL,对,就是天生我才必有用,千金散尽还复来的首字母,第一个和最后一个字母要大写呦......”
:o`)aK9`h'vC0可是,Clark,我是真的不知道你的老婆大人刚刚就在你的身边呀!而且你也知道,我打电话从来都是喜欢很大声的......呜呜呜......51Testing软件测试网 m3FL3oid
在Clark跪了一夜的搓衣板之后,我们都明白:如果是已经保存在自己硬盘上的文件,使用对称加密技术进行加密是没有问题的;如果是两个人通过网络传输文件,使用对称加密就很危险——因为在传送密文的同时,还必须传送解密密钥。我们需要一个与众不同的加密算法,一个不需要传递解密密钥的加密算法。非对称加密正好可以满足我们的需要。基本思路是这样的:首先,生成一对满足非对称加密要求的密钥对(密钥K1和密钥K2)。然后,将密钥K1公布在网上,任何人都可以下载它,我们称这个已经公开的密钥K1为公钥;密钥K2自己留着,不让任何人知道,我们称这个只有自己知道的密钥K2为私钥。当我想给Clark传送小电影时,我可以用Clark的公钥对小电影进行加密,之后这个密文就连我也无法解密了。这个世界上只有一个人能将密文解密,这个人就是拥有私钥的Clark。
iP:D"gv F&I051Testing软件测试网%i$W"I+hp[
本系列通过通俗易懂的讲解,让您就像读小说一般,轻轻松松就能理解数字签名的基本原理和应用方法(即使您是一个并不精通计算机的企业老总,也能读懂本篇文章)。然后我们再逐步深入技术细节,最后将给出一个在B/S信息系统中使用数字签名的DEMO。51Testing软件测试网AcP2BsRgP(]7b-Z
)V#Nm1|r0由于数字签名基于非对称加密技术,所以我们需要先啰嗦一下对称加密和非对称加密技术。51Testing软件测试网Z|5L?L@h
51Testing软件测试网?'J8O\4PntD&dD
对称加密51Testing软件测试网/Bc Y!Z*mR
qB L%iW+R(_$H,kU0何谓加密?加密是一种“把数据搞乱掉”的技术。加密技术涉及到4种东东:
!|Ve*R&b/ms'E(g0明文:可以被人或程序识别的数据。例如一个文本文件、一段歌词、一个Word文档、一首MP3、一个图片文件、一段视频等等。
C3{(hDJ-a0加密算法:将数据搞乱掉的方法。51Testing软件测试网r Wf$Bmdq1U
密钥(密码):一个你在进行加密操作时给出的字符串,让加密算法不但把明文“搞乱掉”,而且要乱得“与众不同”。这样即使别人搞到了解密算法,如果没有当初加密时所使用的密码,一样无法进行解密操作。
;hz ]1S8e Au)x0密文:明文被加密算法和密钥加密后的结果。它看上去就是一堆乱码,没有人或程序能知道它到底表示什么信息。51Testing软件测试网+z'| E!n2MRK
51Testing软件测试网2Q V#i9NHxMK:f$r
作为加密的一个实例,我将使用由我杜撰的“景氏替换加密算法”演示一下加密过程。
j:puLRBEW^*Z}0明文:good good study, day day up.
cJtYM%b/t0密钥:google51Testing软件测试网WpRLWVmm
景氏替换加密算法:将明文中的所有的字母“d”替换成密钥。
TKU~X\0密文:将“good good study, day day up.”中的所有字母“d”替换成“google”,就得到密文“googoogle googoogle stugoogley, googleay googleay up.”。这个密文乱得还可以吧?一般人看了肯定不知道它是什么意思。
-_$Hp0CA%K&];E051Testing软件测试网)}9?"Pf ^E
那么什么是解密呢?解密就是把密文再变回明文的过程。51Testing软件测试网?{aGb}6Y&GAhb9n
例如“景氏替换解密算法”就是:将密文中所有与密钥相同的字符串替换成“d”。51Testing软件测试网&Nb.d k-^;j2a u
密文:googoogle googoogle stugoogley, googleay googleay up.
7{Ks w'qQ0密钥:google51Testing软件测试网}F,~])Mv
景氏替换解密算法:将密文中所有与密钥相同的字符串替换成“d”。
b~jT6u4s0明文:将“googoogle googoogle stugoogley, googleay googleay up.”中的所有“google”替换成“d”,就得到了明文“good good study, day day up.”。51Testing软件测试网@|)bR5bP4|0t
0Z:V{*^5s] o0G0您肯定已经注意到了,我们在进行加密和解密时使用的密钥必须是相同的,例如在上例中,加密和解密都必须使用相同的密钥“google”。所以像“景氏替换加密算法”这种就被称为对称加密算法。目前最为流行的对称加密算法是DES和AES,此外,对称加密算法还有IDEA、FEAL、LOKI、Lucifer、RC2、RC4、RC5、Blow fish、GOST、CAST、SAFER、SEAL等。WinRAR的文件加密功能就是使用的AES加密算法。
j.J-|'CeV051Testing软件测试网"AakSrZM
非对称加密
[:W_v`]l}{(A051Testing软件测试网;`4`$h)CQ-\l8S
非对称加密算法是一类与众不同的加密算法,它的密钥不是1个,而是2个(一对),我们先姑且称它们为密钥K1和密钥K2。非对称加密算法的特点是,如果用密钥K1进行加密,则有且仅有密钥K2能进行解密;反之,如果使用密钥K2进行了加密,则有且仅有密钥K1能进行解密。注意“有且仅有”的意思——如果用密钥K1进行了加密,是不能用密钥K1进行解密的;同样,如果用密钥K2进行了加密,也无法用密钥K2进行解密。这是一个非常重要的特性,至于如何在实际中运用这个特性,请看下文。
7Z D|he&mV0
']n$J[I+h}g0我想给Clark传送一个AV小电影,又怕被他的老婆发现......
z(|5@l]0
)p3Kzy^}0话说俺得了一个很不错的AV小电影,想通过网络传送给Clark,可是又怕被他的老婆发现(因为Clark的老婆是一个超级黑客,她可以使用sniffer技术截获任何通过网线传送给Clark的数据。别跟我说用VPN,它超出了本文讨论的范围),怎么办呢?对了,我们需要一个“将数据搞乱掉”的技术——加密技术。我先使用WinRAR对小电影进行压缩,然后加上密码“TswcbyyqjsjhfL”(还记得么?WinRAR的文件加密功能使用的是叫作AES的对称加密算法)。接着,将这个加密后的文件通过QQ传送给Clark。然后,兴冲冲地拨打Clark的手机:
"~~J&X6bu_8f^0“喂?Clark么?好久不见,呵呵......我给你发了个好东东呦,在QQ上,收到没?......密码是TswcbyyqjsjhfL,对,就是天生我才必有用,千金散尽还复来的首字母,第一个和最后一个字母要大写呦......”
:o`)aK9`h'vC0可是,Clark,我是真的不知道你的老婆大人刚刚就在你的身边呀!而且你也知道,我打电话从来都是喜欢很大声的......呜呜呜......51Testing软件测试网 m3FL3oid
在Clark跪了一夜的搓衣板之后,我们都明白:如果是已经保存在自己硬盘上的文件,使用对称加密技术进行加密是没有问题的;如果是两个人通过网络传输文件,使用对称加密就很危险——因为在传送密文的同时,还必须传送解密密钥。我们需要一个与众不同的加密算法,一个不需要传递解密密钥的加密算法。非对称加密正好可以满足我们的需要。基本思路是这样的:首先,生成一对满足非对称加密要求的密钥对(密钥K1和密钥K2)。然后,将密钥K1公布在网上,任何人都可以下载它,我们称这个已经公开的密钥K1为公钥;密钥K2自己留着,不让任何人知道,我们称这个只有自己知道的密钥K2为私钥。当我想给Clark传送小电影时,我可以用Clark的公钥对小电影进行加密,之后这个密文就连我也无法解密了。这个世界上只有一个人能将密文解密,这个人就是拥有私钥的Clark。