余向陽,余向陽講師,余向陽聯(lián)系方式,余向陽培訓(xùn)師-【中華講師網(wǎng)】
縣域涉農(nóng)電子商務(wù)(長期政府合作)新零售互聯(lián)網(wǎng)+物流管理電商
49
鮮花排名
0
鮮花數(shù)量
余向陽:白話數(shù)字簽名
2016-01-20 1706
摘要

本系列通過通俗易懂的講解,讓您就像讀小說一般,輕輕松松就能理解數(shù)字簽名的基本原理和應(yīng)用方法(即使您是一個(gè)并不精通計(jì)算機(jī)的企業(yè)老總,也能讀懂本篇文章)。然后我們再逐步深入技術(shù)細(xì)節(jié),最后將給出一個(gè)在B/S信息系統(tǒng)中使用數(shù)字簽名的DEMO。

由于數(shù)字簽名基于非對(duì)稱加密技術(shù),所以我們需要先啰嗦一下對(duì)稱加密和非對(duì)稱加密技術(shù)。

對(duì)稱加密

何謂加密?加密是一種“把數(shù)據(jù)搞亂掉”的技術(shù)。加密技術(shù)涉及到4種東東:
明文:可以被人或程序識(shí)別的數(shù)據(jù)。例如一個(gè)文本文件、一段歌詞、一個(gè)Word文檔、一首MP3、一個(gè)圖片文件、一段視頻等等。
加密算法:將數(shù)據(jù)搞亂掉的方法。
密鑰(密碼):一個(gè)你在進(jìn)行加密操作時(shí)給出的字符串,讓加密算法不但把明文“搞亂掉”,而且要亂得“與眾不同”。這樣即使別人搞到了解密算法,如果沒有當(dāng)初加密時(shí)所使用的密碼,一樣無法進(jìn)行解密操作。
密文:明文被加密算法和密鑰加密后的結(jié)果。它看上去就是一堆亂碼,沒有人或程序能知道它到底表示什么信息。

作為加密的一個(gè)實(shí)例,我將使用由我杜撰的“景氏替換加密算法”演示一下加密過程。
明文:good good study, day day up.
密鑰:google
景氏替換加密算法:將明文中的所有的字母“d”替換成密鑰。
密文:將“good good study, day day up.”中的所有字母“d”替換成“google”,就得到密文“googoogle googoogle stugoogley,  googleay googleay up.”。這個(gè)密文亂得還可以吧?一般人看了肯定不知道它是什么意思。

那么什么是解密呢?解密就是把密文再變回明文的過程。
例如“景氏替換解密算法”就是:將密文中所有與密鑰相同的字符串替換成“d”。
密文:googoogle googoogle stugoogley,  googleay googleay up.
密鑰:google
景氏替換解密算法:將密文中所有與密鑰相同的字符串替換成“d”。
明文:將“googoogle googoogle stugoogley,  googleay googleay up.”中的所有“google”替換成“d”,就得到了明文“good good study, day day up.”。

您肯定已經(jīng)注意到了,我們在進(jìn)行加密和解密時(shí)使用的密鑰必須是相同的,例如在上例中,加密和解密都必須使用相同的密鑰“google”。所以像“景氏替換加密算法”這種就被稱為對(duì)稱加密算法。目前最為流行的對(duì)稱加密算法是DES和AES,此外,對(duì)稱加密算法還有IDEA、FEAL、LOKI、Lucifer、RC2、RC4、RC5、Blow fish、GOST、CAST、SAFER、SEAL等。WinRAR的文件加密功能就是使用的AES加密算法。

非對(duì)稱加密

非對(duì)稱加密算法是一類與眾不同的加密算法,它的密鑰不是1個(gè),而是2個(gè)(一對(duì)),我們先姑且稱它們?yōu)槊荑€K1和密鑰K2。非對(duì)稱加密算法的特點(diǎn)是,如果用密鑰K1進(jìn)行加密,則有且僅有密鑰K2能進(jìn)行解密;反之,如果使用密鑰K2進(jìn)行了加密,則有且僅有密鑰K1能進(jìn)行解密。注意“有且僅有”的意思——如果用密鑰K1進(jìn)行了加密,是不能用密鑰K1進(jìn)行解密的;同樣,如果用密鑰K2進(jìn)行了加密,也無法用密鑰K2進(jìn)行解密。這是一個(gè)非常重要的特性,至于如何在實(shí)際中運(yùn)用這個(gè)特性,請(qǐng)看下文。

我想給Clark傳送一個(gè)AV小電影,又怕被他的老婆發(fā)現(xiàn)......

話說俺得了一個(gè)很不錯(cuò)的AV小電影,想通過網(wǎng)絡(luò)傳送給Clark,可是又怕被他的老婆發(fā)現(xiàn)(因?yàn)镃lark的老婆是一個(gè)超級(jí)黑客,她可以使用sniffer技術(shù)截獲任何通過網(wǎng)線傳送給Clark的數(shù)據(jù)。別跟我說用VPN,它超出了本文討論的范圍),怎么辦呢?對(duì)了,我們需要一個(gè)“將數(shù)據(jù)搞亂掉”的技術(shù)——加密技術(shù)。我先使用WinRAR對(duì)小電影進(jìn)行壓縮,然后加上密碼“TswcbyyqjsjhfL”(還記得么?WinRAR的文件加密功能使用的是叫作AES的對(duì)稱加密算法)。接著,將這個(gè)加密后的文件通過QQ傳送給Clark。然后,興沖沖地?fù)艽駽lark的手機(jī):
“喂?Clark么?好久不見,呵呵......我給你發(fā)了個(gè)好東東呦,在QQ上,收到?jīng)]?......密碼是TswcbyyqjsjhfL,對(duì),就是天生我才必有用,千金散盡還復(fù)來的首字母,第一個(gè)和最后一個(gè)字母要大寫呦......”
可是,Clark,我是真的不知道你的老婆大人剛剛就在你的身邊呀!而且你也知道,我打電話從來都是喜歡很大聲的......嗚嗚嗚......
在Clark跪了一夜的搓衣板之后,我們都明白:如果是已經(jīng)保存在自己硬盤上的文件,使用對(duì)稱加密技術(shù)進(jìn)行加密是沒有問題的;如果是兩個(gè)人通過網(wǎng)絡(luò)傳輸文件,使用對(duì)稱加密就很危險(xiǎn)——因?yàn)樵趥魉兔芪牡耐瑫r(shí),還必須傳送解密密鑰。我們需要一個(gè)與眾不同的加密算法,一個(gè)不需要傳遞解密密鑰的加密算法。非對(duì)稱加密正好可以滿足我們的需要?;舅悸肥沁@樣的:首先,生成一對(duì)滿足非對(duì)稱加密要求的密鑰對(duì)(密鑰K1和密鑰K2)。然后,將密鑰K1公布在網(wǎng)上,任何人都可以下載它,我們稱這個(gè)已經(jīng)公開的密鑰K1為公鑰;密鑰K2自己留著,不讓任何人知道,我們稱這個(gè)只有自己知道的密鑰K2為私鑰。當(dāng)我想給Clark傳送小電影時(shí),我可以用Clark的公鑰對(duì)小電影進(jìn)行加密,之后這個(gè)密文就連我也無法解密了。這個(gè)世界上只有一個(gè)人能將密文解密,這個(gè)人就是擁有私鑰的Clark。

后來......

后來,Clark痛定思痛,決定申請(qǐng)一個(gè)數(shù)字證書。流程是這樣的:首先,登錄當(dāng)?shù)氐臄?shù)字證書認(rèn)證中心網(wǎng)站,填表->出示個(gè)人有效證件原件和復(fù)印件->繳費(fèi)->等待數(shù)字證書認(rèn)證中心制作數(shù)字證書->領(lǐng)取數(shù)字證書。如果您的公司需要申請(qǐng)大量的數(shù)字證書,還可以與認(rèn)證中心的銷售人員商量,先領(lǐng)取免費(fèi)的試用版的數(shù)字證書供技術(shù)人員試用。
后來的后來,我又得到了一本電子版的不良漫畫,當(dāng)然,我又想到了Clark。我先在數(shù)字證書認(rèn)證中心下載了Clark的公鑰證書(就是一個(gè)含有公鑰信息的文件),使用非對(duì)稱加密算法對(duì)不良漫畫進(jìn)行加密,再將密文通過QQ傳送給Clark。然后,我興沖沖地?fù)艽駽lark的手機(jī):
“喂?Clark么?好久不見,呵呵......我給你發(fā)了個(gè)好東東呦,在QQ上,收到?jīng)]?......已經(jīng)用你的公鑰加密了。用你的私鑰解密就行了^_^”
Clark興沖沖地插入他的私鑰(忘了說了,私鑰并不是一個(gè)文件,而是一個(gè)USB設(shè)備,外形就跟U盤一樣,至于為什么要這樣,下一篇再說),解密,然后開始看漫畫,完全沒察覺他的老婆大人就在身后......

Clark,俺這個(gè)月手頭有點(diǎn)緊......

唉,這個(gè)月買了太多的書,到月底揭不開鍋了。正巧在QQ上遇到了Clark:
1-2-3:“Clark,我需要200兩紋銀,能否借給我?”
Clark:“沒問題。我這就給你轉(zhuǎn)賬。請(qǐng)給我一張借條?!?br />1-2-3:“太謝謝了,我這就用Word寫一個(gè)借條給你?!?br />然后,我新建一個(gè)Word文檔,寫好借條,存盤。然后,然后怎么辦呢?我不能直接把借條發(fā)送給Clark,原因有:
    1. 我無法保證Clark不會(huì)在收到借條后將“紋銀200兩”改為“紋銀2000兩”。
    2. 如果我賴賬,Clark無法證明這個(gè)借條就是我寫的。
    3. 普通的Word文檔不能作為打官司的證據(jù)。
好在我早就申請(qǐng)了數(shù)字證書。我先用我的私鑰對(duì)借條進(jìn)行加密,然后將加密后的密文用QQ發(fā)送給Clark。Clark收到了借條的密文后,在數(shù)字證書認(rèn)證中心的網(wǎng)站上下載我的公鑰,然后使用我的公鑰將密文解密,發(fā)現(xiàn)確實(shí)寫的是“借紋銀200兩”,Clark就可以把銀子放心的借給我了,我也不會(huì)擔(dān)心Clark會(huì)篡改我的借條,原因是:
    1. 由于我發(fā)給Clark的是密文,Clark無法進(jìn)行修改。Clark倒是可以修改解密后的借條,但是Clark沒有我的私鑰,沒法模仿我對(duì)借條進(jìn)行加密。這就叫防篡改。
    2. 由于用我的私鑰進(jìn)行加密的借條,有且只有我的公鑰可以解密。反過來講,能用我的公鑰解密的借條,一定是使用我的私鑰加密的,而只有我才擁有我的私鑰,這樣Clark就可以證明這個(gè)借條就是我寫的。這就叫防抵賴
    3. 如果我一直賴著不還錢,Clark把我告上了法庭,這個(gè)用我的私鑰加密過的Word文檔就可以當(dāng)作程堂證供。因?yàn)槲覈呀?jīng)出臺(tái)了《中華人民共和國電子簽名法》,使數(shù)字簽名具有了法律效力。
您一定已經(jīng)注意到了,這個(gè)使用我的私鑰進(jìn)行了加密的借條,具有了防篡改、防抵賴的特性,并且可以作為程堂證供,就跟我對(duì)這個(gè)借條進(jìn)行了“簽名”的效果是一樣的。對(duì)了,“使用我的私鑰對(duì)借條進(jìn)行加密”的過程就叫做數(shù)字簽名。(由于數(shù)字簽名算法的速度比較慢,所以在實(shí)際對(duì)文件簽名的過程比上面提到的方法稍稍復(fù)雜一些,這個(gè)在下一篇再講)。

我是1-2-3,我真的是1-2-3,我是真的1-2-3

正如您已經(jīng)知道的,Clark的老婆是一名超級(jí)黑客——就是傳說中能用計(jì)算機(jī)作任何事的人。這不,不久前她就輕松入侵了QQ數(shù)據(jù)庫,下載了Clark的所有好友的ID和密碼以及聊天記錄。然后,時(shí)不時(shí)地偽裝成Clark的好友跟Clark聊天,搞得Clark最近總是神經(jīng)兮兮、疑神疑鬼的。這不,昨天我在QQ上遇到了Clark:
1-2-3:“Clark,最近還好吧?我又搞到一個(gè)好東東呦,要不要?”
Clark:“48475bbt556”
Clark并不是瘋掉了,那個(gè)“48475bbt556”也不是我跟Clark之間的什么通關(guān)暗語。這個(gè)“48475bbt556”就是Clark在鍵盤上胡亂敲上去的,不過,我卻知道Clark是什么意思。我立刻把“48475bbt556”粘貼到Word里,然后用我的私鑰對(duì)這個(gè)Word文檔加密,再將這個(gè)Word文檔發(fā)送給Clark。Clark在那邊用我的公鑰將Word文檔解密,打開,發(fā)現(xiàn)里面寫的就是“48475bbt556”,就知道QQ這邊的確就是真正的我本人了。因?yàn)閾碛形业乃借€的人在這個(gè)世界上就只有我一人而已,Clark的老婆大人就是再神通廣大也模仿不了,這就是數(shù)字簽名的驗(yàn)證功能。

順便提一句,不但人可以申請(qǐng)數(shù)字證書,設(shè)備(例如Web服務(wù)器)也可以申請(qǐng)數(shù)字證書(叫作設(shè)備證書)。利用數(shù)字簽名的驗(yàn)證功能,就可以驗(yàn)證服務(wù)器的身份了,這可是防釣魚的終極解決方案呦。

思考題

如果Clark每次都向我發(fā)送相同的字符串(例如“1234”),而不是每次在鍵盤上胡亂地(隨機(jī)地)敲一些字符,Clark的老婆就會(huì)利用Clark的懶惰模仿我跟Clark聊QQ,這是為什么?
?
全部評(píng)論 (0)

Copyright©2008-2025 版權(quán)所有 浙ICP備06026258號(hào)-1 浙公網(wǎng)安備 33010802003509號(hào) 杭州講師網(wǎng)絡(luò)科技有限公司
講師網(wǎng) 3969a.com 直接對(duì)接10000多名優(yōu)秀講師-省時(shí)省力省錢
講師網(wǎng)常年法律顧問:浙江麥迪律師事務(wù)所 梁俊景律師 李小平律師