《計(jì)算機(jī)網(wǎng)絡(luò)安全防護(hù)技術(shù)(第二版)》課件 (秦?zé)觯┑?章 數(shù)據(jù)加密技術(shù)_第1頁(yè)
《計(jì)算機(jī)網(wǎng)絡(luò)安全防護(hù)技術(shù)(第二版)》課件 (秦?zé)觯┑?章 數(shù)據(jù)加密技術(shù)_第2頁(yè)
《計(jì)算機(jī)網(wǎng)絡(luò)安全防護(hù)技術(shù)(第二版)》課件 (秦?zé)觯┑?章 數(shù)據(jù)加密技術(shù)_第3頁(yè)
《計(jì)算機(jī)網(wǎng)絡(luò)安全防護(hù)技術(shù)(第二版)》課件 (秦?zé)觯┑?章 數(shù)據(jù)加密技術(shù)_第4頁(yè)
《計(jì)算機(jī)網(wǎng)絡(luò)安全防護(hù)技術(shù)(第二版)》課件 (秦?zé)觯┑?章 數(shù)據(jù)加密技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩138頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章數(shù)據(jù)加密技術(shù)3.1.1古典加密技術(shù)3.1對(duì)稱加密技術(shù)

對(duì)稱加密技術(shù)是指加密和解密,都采用相同的密鑰。正如我們出門反鎖和回家開門,用的都是同一把鑰匙一樣,在加密學(xué)中,用相同密鑰進(jìn)行加密和解密的方法,叫做對(duì)稱密鑰加密算法。數(shù)據(jù)加密之前,要先選好加密算法(相當(dāng)于鎖),還要選擇一把密鑰(相當(dāng)于用于反鎖和開鎖的鑰匙)。對(duì)稱加密算法包括各種古典加密算法和當(dāng)代的一些加密算法,如:DES、3DES、AES、RC4算法等。在1977年非對(duì)稱加密算法RSA被提出來(lái)之前,人們使用的都是對(duì)稱加密算法技術(shù)。

3.1.1古典加密技術(shù)

一、“凱撒密碼”技術(shù)公元前50年,羅馬皇帝凱撒為了在戰(zhàn)爭(zhēng)中傳遞的信息,又要考慮到萬(wàn)一信息落到敵人手里,不能讓敵人看懂信息的內(nèi)容,而發(fā)明了“凱撒密碼”。這是一種單表替換密碼技術(shù)。它的實(shí)現(xiàn)方法是:把字母按順序排列,并首尾相連,明文用其后的某個(gè)字母如第2個(gè)字母代替。比如單詞“YES”,Y之后是Z,Z之后本來(lái)是沒有字母的,但因首尾相連,所以Z后就來(lái)到首字母A了,就是A就是Y加密后的密文;同理,E之后是F、G,G就是E加密之后的密文;S之后是T、U,因此U就是O加密之后的密文。因此,采用凱撒密碼技術(shù),加密算法是循環(huán)右移,密鑰是移動(dòng)2位,明文“YES”經(jīng)過(guò)加密后得到的密文是“AGU”。

二、換位密碼技術(shù)英語(yǔ)中,“the”、“is”等單詞經(jīng)常出現(xiàn),凱撒密碼只是對(duì)單詞做簡(jiǎn)單的替換,攻擊者根據(jù)單詞出現(xiàn)的頻率,很容易試探出明文。而換位密碼技術(shù),將明文各字母的順序打亂,能較好的避免攻擊者按單詞出現(xiàn)的頻率來(lái)試探明文的攻擊。換位密碼技術(shù)是通過(guò)打亂明文的字母順序達(dá)到加密目的的,以列換位密碼技術(shù)為例,加密方法是:將密鑰寫在第一行,明文寫在密鑰下面,明文超過(guò)密鑰長(zhǎng)度時(shí),就換到第二行,第二行寫滿換到第三行,以此類推,直到把明文寫完為止,然后將表中的字母按列讀出來(lái),以便得到密文,注意,不是按第1、2、3、4列這樣的順序來(lái)讀列的,列的讀取順序由密鑰來(lái)決定,具體來(lái)說(shuō),把密鑰的各字母按從小到大排序,按排出的順序讀列,得到的就是密文。例如:使用列換位密碼技術(shù),用字符串“hack”作為密鑰,加密“canyouunderstand”這句話,方法如下:明文:canyouunderstand密鑰:hack表3-1是按照換名密碼技術(shù)使用密鑰“hack”,對(duì)明文“canyouunderstand”進(jìn)行加密的過(guò)程。

按第2、3、1、4列的順序讀出各列的字母,得到的就是密文:aueanurncodtynsd。表3-1換位密碼技術(shù)的應(yīng)用密鑰hack列的序號(hào)1234按密鑰字母大小排序3124明文canyouunderstand三、費(fèi)杰爾密碼

換位密碼技術(shù)雖然避免了攻擊者按單詞出現(xiàn)的頻率猜明文的方法,但英語(yǔ)中,除了單詞出現(xiàn)的頻率有規(guī)律可循,字母出現(xiàn)的頻率也是有規(guī)律的,如:字母e出現(xiàn)的頻率最大,其次是t,根據(jù)密文中字母出現(xiàn)的頻率,按換位密碼加密得到的密文,是有可能被攻擊者匹配出明文來(lái)的,而費(fèi)杰爾密碼的出現(xiàn),則較好解決了這個(gè)問(wèn)題。

使用費(fèi)杰爾密碼技術(shù)進(jìn)行加密,需要用到一張二維表,以表的第一列為縱坐標(biāo),表的第一行為橫坐標(biāo)。在縱坐標(biāo)上,找到密鑰對(duì)應(yīng)的字母所在的行,在橫坐標(biāo)上,找到明文對(duì)應(yīng)的字母所在的列,行和列的交叉點(diǎn)就是密文。表3-2是費(fèi)杰爾密碼技術(shù)所使用的二維表。abcdefghijklmnopqrstuvwxyzaabcdefghijklmnopqrstuvwxyzbbcdefghijklmnopqrstuvwxyzaccdefghijklmnopqrstuvwxyzabddefghijklmnopqrstuvwxyzabceefghijklmnopqrstuvwxyzabcdffghijklmnopqrstuvwxyzabcdegghijklmnopqrstuvwxyzabcdefhhijklmnopqrstuvwxyzabcdefgiijklmnopqrstuvwxyzabcdefghjjklmnopqrstuvwxyzabcdefghikklmnopqrstuvwxyzabcdefghijllmnopqrstuvwxyzabcdefghijkmmnopqrstuvwxyzabcdefghijklnnopqrstuvwxyzabcdefghijklmoopqrstuvwxyzabcdefghijklmnppqrstuvwxyzabcdefghijklmnoqqrstuvwxyzabcdefghijklmnoprrstuvwxyzabcdefghijklmnopqsstuvwxyzabcdefghijklmnopqrttuvwxyzabcdefghijklmnopqrsuuvwxyzabcdefghijklmnopqrstvvwxyzabcdefghijklmnopqrstuwwxyzabcdefghijklmnopqrstuvxxyzabcdefghijklmnopqrstuvwyyzabcdefghijklmnopqrstuvwxzzabcdefghijklmnopqrstuvwxy表3-2費(fèi)杰樂密碼技術(shù)例如:使用費(fèi)杰爾密碼技術(shù)進(jìn)行加密,密鑰為“cat”,明文為“l(fā)ookatthestarts”。加密方法是:在明文下面,反復(fù)寫上密鑰,得到:明文:lookatthestarts密鑰:catcatcatcatcat第一個(gè)字母的加密過(guò)程是:在縱坐標(biāo)上,找到密鑰對(duì)應(yīng)的字母c所在的行,在橫坐標(biāo)上,找到明文對(duì)應(yīng)的字母l所在的列,行與列的交叉點(diǎn)n就是密文。以此類推,可得到加密后的密文為:密文:nohmamvhxuttts謝謝欣賞第3章數(shù)據(jù)加密技術(shù)3.1.2DES加密技術(shù)3.1.2DES加密技術(shù)

DES(DataEncryptionStandard,數(shù)據(jù)加密標(biāo)準(zhǔn))算法,是由IBM公司為非機(jī)密數(shù)據(jù)加密所設(shè)計(jì)的方案,1977年被美國(guó)政府采納,后被國(guó)際標(biāo)準(zhǔn)局采納為國(guó)際標(biāo)準(zhǔn)。DES算法是一種對(duì)稱加密算法,輸入的明文被分成64位的塊;密鑰長(zhǎng)度是64位,其中56位為有效位,8位用于奇偶校驗(yàn)。加密大致分為初始排列、16輪加密和翻轉(zhuǎn)初始排列等三個(gè)過(guò)程。

如圖3-1-1所示,整個(gè)算法的主流程圖如下:圖3-1-1des算法流程圖DES加密的大致過(guò)程如下:將64位的明文經(jīng)初始排列打亂順序,得到左邊32位L0和右邊32位R0兩部分;經(jīng)過(guò)第一輪加密后,變成左邊L1和右邊R1;經(jīng)過(guò)第二輪加密后,變成左邊L2和右邊R2;……如此循環(huán),總共經(jīng)過(guò)十六個(gè)不同子密鑰的16輪加密,得到左邊L16和右邊R16,將左右合并、翻轉(zhuǎn)初始排列后,最終得到64位密文。1.將64位的明文順序打亂,生成32位的左邊L0、32位的右邊R0兩部分;2.第一輪加密:1)新的左邊L1,直接取自原來(lái)的右邊R0;2)新的右邊R1,由原來(lái)的右邊R0、第一輪的子密鑰、原來(lái)的左邊L0,經(jīng)過(guò)加密運(yùn)算,而生成。3.第二~第十六輪加密,與第一輪加密類似。4.翻轉(zhuǎn)初始排列。

下面以密鑰為OVERSEAS,明文為FOOTBALL為例,解釋DES的加密過(guò)程:一、通過(guò)查詢ASCII碼表,將明文和密鑰轉(zhuǎn)換成二進(jìn)制。表3-3是節(jié)選的ASCII碼表。表3-4是二進(jìn)制與十六進(jìn)制的對(duì)應(yīng)關(guān)系表。八進(jìn)制十六進(jìn)制十進(jìn)制字符1004064@1014165A1024266B1034367C1044468D1054569E1064670F1074771G1104872H1114973I1124a74J1134b75K1144c76L1154d77M1164e78N1174f79O1205080P1215181Q1225282R1235383S1245484T1255585U1265686V1275787W1305888X1315989Y1325a90Z表3-3ASCII碼表(節(jié)選)

如:通過(guò)查詢ASCII碼表,得到字符’F’的ASCII碼的16進(jìn)制是:46,轉(zhuǎn)成二進(jìn)制是:01000110通過(guò)查表,可得:明文FOOTBALL的ASCII碼的二進(jìn)制是:0100011001001111010011110101010001000010010000010100110001001100密鑰OVERSEAS的ASCII碼的二進(jìn)制是:0100111101010110010001010101001001010011010001010100000101010011二進(jìn)制十六進(jìn)制000000001100102001130100401015011060111710008100191010A1011B1100C1101D1110E1111F表3-4二進(jìn)制與十六進(jìn)制的對(duì)應(yīng)關(guān)系表二、明文的處理

按置換規(guī)則表,打亂明文的順序,并平分為左邊32位的L0和右邊32位的R0。一)概述:1.將64位的明文順序打亂,并平分為左邊32位的L0和右邊32位的R0;2.把右邊32位R0賦值給下一輪左邊L1;3.把左邊32位的L0、右邊32位R0(擴(kuò)展成48位)、第一輪子密鑰進(jìn)行加密運(yùn)算,生成下一輪的R1。4.相關(guān)表格:1)置換規(guī)則表:其功能是把輸入的64位數(shù)據(jù)塊按位重新組合,并把輸出分為L(zhǎng)0、R0兩部分,每部分各長(zhǎng)32位。表3-5所示的是置換規(guī)則表:表3-5置換規(guī)則表置換規(guī)則是將輸入的第58位換到第一位,第50位換到第2位,...,依此類推,輸入的第7位置換到最后一位。L0、R0則是換位輸出后的兩部分,L0是輸出的左32位,R0是右32位,例:設(shè)置換前的輸入值為D1D2D3......D64,則經(jīng)過(guò)初始置換后的結(jié)果為:L0=D58D50...D8;R0=D57D49...D7。585042342618102605244362820124625446383022146645648403224168574941332517915951433527191136153453729211356355473931231572)擴(kuò)展排列表:用于把右邊32位R0擴(kuò)展為48位。表3-6所示的是擴(kuò)展排列表:表3-6擴(kuò)展排列表3212345456789891011121312131415161716171819202120212223242524252627282928293031321二)詳細(xì)過(guò)程1.明文FOOTBALL的ASCII碼的二進(jìn)制是:0100011001001111010011110101010001000010010000010100110001001100表3-7是明文FOOTBALL的ASCII碼的二進(jìn)制。表3-8是在表3-7的基礎(chǔ)上,進(jìn)行編號(hào)。表3-7明文FOOTBALL的ASCII碼的二進(jìn)制0100011001001111010011110101010001000010010000010100110001001100表3-8為明文FOOTBALL的ASCII碼的二進(jìn)制編號(hào)序12345678910111213141516碼0100011001001111序17181920212223242526272829303132碼0100111101010100序33343536373839404142434445464748碼0100001001000001序49505152535455565758596061626364碼01001100010011002.表3-9是置換規(guī)則表,需將明文按置換規(guī)則表進(jìn)行初始變換。表3-10是明文經(jīng)過(guò)初始變換后,得到的結(jié)果。即:1111111100001000110011110010011000000000000000001100011000010111表3-9置換規(guī)則表58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157表3-10初始變換后的結(jié)果11111111000010001100111100100110000000000000000011000110000101113.把經(jīng)過(guò)初始變換后的明文分成左32位和右32位,得到:L0(32)=11111111000010001100111100100110R0(32)=000000000000000011000110000101114.生成新的左邊L1。把R0(32)賦值給L1(32),即L1(32)=R0(32)=000000000000000011000110000101115.把R0(32)按擴(kuò)展排列表擴(kuò)展為48位。表3-11是擴(kuò)展排列表,表3-12是32位的R0按擴(kuò)展排列表擴(kuò)展成48位的結(jié)果。說(shuō)明:新的右邊R1,由原來(lái)的右邊R0、原來(lái)的左邊L0、第一輪的子密鑰,經(jīng)過(guò)加密運(yùn)算,而生成。為了進(jìn)行上述加密運(yùn)算,要先將R0擴(kuò)展成48位。即:R0(48)=100000000000000000000001011000001100000010101110表3-11擴(kuò)展排列表3212345456789891011121312131415161716171819202120212223242524252627282928293031321表3-12R0擴(kuò)展為48位100000000000000000000001011000001100000010101110三、密鑰的處理分析:密鑰要對(duì)明文進(jìn)行16次加密處理1)明文:前面的明文打亂了順序,平分成了左邊32位,右邊32位;右邊32位擴(kuò)展成了48位的R0(48);2)密鑰:一個(gè)密鑰將生成十六個(gè)子密鑰,十六個(gè)不同子密鑰的長(zhǎng)度都是48位。3)加密:明文需經(jīng)過(guò)十六個(gè)不同子密鑰的十六輪加密,才能產(chǎn)生密文。第一輪加密產(chǎn)生新的左邊32位,新的右邊32位。其中,新的左邊32位,直接取自原來(lái)的右邊32位;新的右邊32位,由原來(lái)的右邊32位擴(kuò)展成48位與第一輪的子密鑰加密運(yùn)算,再轉(zhuǎn)換成32位,再與原來(lái)的左邊32位,經(jīng)過(guò)加密運(yùn)算,而生成。2.以生成第一輪48位的子密鑰為例1)把64位密鑰刪除8、16、24、32、40、48、56、64位,變成56位即,把8*8的表格,刪除最后一列。表3-13是將密鑰從64位變成56位的方法說(shuō)明。得到64位的密鑰OVERSEAS的ASCII碼的二進(jìn)制:0100111101010110010001010101001001010011010001010100000101010011表3-14用于將64位的密鑰ASCII碼值代入,生成56位有效值。得到56位有效值:01001110101011010001001010010101001010001001000000101001表3-13刪除64位表格最后一列變成56位12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364表3-14將密鑰代入刪除最后一列01001111010101100100010101010010010100110100010101000001010100112)將56位的密鑰按下表(置換選擇1)進(jìn)行置換(1)將表3-13的第1列、第2列、第3列、第4列的一半,從下往上取,從左往右寫到表3-15的第1行、第2行、第3行、第4行的一半(即上表的一半順時(shí)針轉(zhuǎn)90度);(2)將表3-13的第7列、第6列、第5列、第4列的一半,從下往上取,從左往右寫到表3-15的第4行的一半、第5行、第6行、第7行:按表3-15的方式,可將表3-14的56位密鑰轉(zhuǎn)換成表3-16所示的新的56位密鑰:表3-15置換選擇1表57494133251791585042342618102595143352719113605044366355473931231576254463830221466153453729211352820124表3-1656位密鑰代入置換選擇1表000000001111111100000000100110011011001001110000000110103)將轉(zhuǎn)換后的56位的密鑰分成左、右兩部分C0=0000000011111111000000001001D0=10011011001001110000000110104)表3-17是各輪移位次數(shù)表。根據(jù)各輪移位次數(shù)表,將左、右兩部分都循環(huán)左移LSi位?,F(xiàn)在是第一輪,LSi=1,左右半部各循環(huán)左移一位后得:C1=0000000111111110000000010010D1=0011011001001110000000110101表3-17各輪移位次數(shù)表LSi·LS1LS2LS3LS4LS5LS6LS7LS8LS9LS10LS11LS12LS13LS14LS15LS16位數(shù)11222222122222215)表3-18是置換選擇2表。C1、D1拼接后得56位,按置換選擇2表進(jìn)行置換,生成48位的第一個(gè)子密鑰K1(其中,第9、18、22、25、35、38、43、54位被剔除)。表3-19是C1、D1拼接后的56位表。表3-20是置換后的得到的48位K1表。表3-18置換選擇2表1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932表3-19C1與D1拼接為56位123456780000000191011121314151611111110171819202122232400000001252627282930313200100011333435363738394001100100414243444546474811100000495051525354555600110101置換后,得48位K1。K1=101100001001001001001010111000001000000110010001表3-20置換后的48位K11417112415328101100001562110231912410010010268167272013201001010415231374755304011100000514533484449395610000001345346425036293210010001四、加密處理1)將R0(48)與K1進(jìn)行異或,得到A值:R0(48)=100000000000000000000001011000001100000010101110K1=101100001001001001001010111000001000000110010001異或后得A=0011000010010010010010111000000001000001001111112)將上面的A分為8組A1=001100A2=001001A3=001001A4=001011A5=100000A6=000100A7=000100A8=111111取A1的第1和第6位,作為數(shù)組的第一個(gè)數(shù);取中間4位,作為數(shù)組的第二個(gè)數(shù),得S1(00,0110),轉(zhuǎn)換為十進(jìn)制得S1(0,6)。同樣方法,得:S2(1,4)、S3(1,4),S4(1,5),S5(2,0),S6(0,2),S7(0,2),S8(3,15)3)表3-21是S盒數(shù)據(jù)變換表。查S盒數(shù)據(jù)變換表得:S1(0,6)=11轉(zhuǎn)成2進(jìn)制是:1011S2(1,4)=15轉(zhuǎn)成2進(jìn)制是:1111S3(1,4)=3轉(zhuǎn)成2進(jìn)制是:0011S4(1,5)=15轉(zhuǎn)成2進(jìn)制是:1111S5(2,0)=4轉(zhuǎn)成2進(jìn)制是:0100S6(0,2)=10轉(zhuǎn)成2進(jìn)制是:1010S7(0,2)=2轉(zhuǎn)成2進(jìn)制是:0010S8(3,15)=11轉(zhuǎn)成2進(jìn)制是:1011合并S1~S8,得:B=10111111001111110100101000101011表3-21S盒數(shù)據(jù)變換表

0123456789101112131415S1:01441312151183106125907101574142131106121195382411481362111512973105031512824917511314100613S2:01518146113497213120510131347152814120110691152014711104131581269321531381013154211671205149S3:01009146315511312711428113709346102851413111512136498153011121251014731101306987415143115212S4:07131430691012851112415113811561503472121101492106901211713151314528433150610113894511127214S5:02124171011685315130149114112124713150151039862421111013781591256301431181271142136150910453S6:01211015926801334147511110154271295611314011382914155281237041011311634321295151011141760813S7:04112141508133129751061113011749110143512215862141113123714101568059236111281410795015142312S8:01328461511110931450127111513810374125611014922711419121420610131535832114741081315129035611

4)表3-22是Permutation置換位置表。表2-23是B值的列表。表3-24是對(duì)B值列表進(jìn)行Permutation置換位置表變換后得到的X0值表。查Permutation置換位置表,對(duì)B值進(jìn)行Permutation置換,得到X0值??梢?,經(jīng)過(guò)P置換后得到X0=110111001110111001011110010101105)L0(32)與X0按位異或,可得R1(32)L0(32)=11111111000010001100111100100110X0=11011100111011100101111001010110R1(32)=00100011111001101001000101110000表3-22Permutation置換位置表1672021291228171152326518311028241432273919133062211425表3-23B值列表123410115678111191011120011131415161111171819200100212223241010252627280010293031321011表3-24X0值167202111012912281711001152326111051831101110282414010132273911101913306010122114250110五、經(jīng)過(guò)第一輪加密,得到64位的加密值:L1+R1其中L1=00000000000000001100011000010111R1=00100011111001101001000101110000第一輪加密的結(jié)果L1+R1:0000000000000000110001100001011100100011111001101001000101110000六、用與第一輪加密類似的方法,進(jìn)行第二輪~第十六輪的加密。七、翻轉(zhuǎn)初始排列,得到最終的加密結(jié)果。3.1.3三重DES加密技術(shù)DES算法經(jīng)過(guò)了16輪的替換和換位迭代運(yùn)算,算法本身足夠安全,唯一的破解方法是窮舉所有可能的密鑰。因此,其的安全性取決于密鑰的長(zhǎng)度。隨著計(jì)算機(jī)性能的不斷提高,56位的密鑰長(zhǎng)度已經(jīng)不夠安全。三重DES就是為了提高安全性而發(fā)展起來(lái)的。三重DES加密有四種不同的模式:1.DES-EEE3模式。使用三個(gè)不同密鑰(k1,k2,k3),采用三次加密算法。2.DES-EDE3模式。使用三個(gè)不同密鑰(k1,k2,k3),采用加密-解密-加密算法。3.DES-EEE2模式。使用兩個(gè)不同密鑰(k1=k3,k2),采用三次加密算法。4.DES-EDE2模式。使用兩個(gè)不同密鑰(k1=k3,k2),采用加密-解密-加密算法。通過(guò)多個(gè)密鑰來(lái)進(jìn)行重復(fù)的加密運(yùn)算,相當(dāng)于增加了密鑰的總長(zhǎng)度。其中,前兩種模式都采用了三個(gè)不同的密鑰,其密鑰總長(zhǎng)度為168位;后兩種模式均采用了兩個(gè)不同的密鑰,其密鑰總長(zhǎng)度為112位。隨著密鑰長(zhǎng)度的增加,安全性也得到了相應(yīng)的提升。謝謝欣賞第3章數(shù)據(jù)加密技術(shù)3.2.1RSA算法和DH算法3.2非對(duì)稱加密技術(shù)通過(guò)前面的學(xué)習(xí),我們知道,對(duì)稱加密技術(shù)要求發(fā)送者和接收者事先將對(duì)稱密鑰共享,如果雙方事先沒有共享密鑰,一方就要想辦法將所用的對(duì)稱密鑰傳送給另一方。萬(wàn)一密鑰在傳送過(guò)程中被攻擊者截獲,攻擊者就可以解密出所有用這個(gè)對(duì)稱密鑰加密的密文了。但如何安全的將對(duì)稱密鑰傳送給對(duì)方,一直是個(gè)大問(wèn)題。直到1976年美國(guó)科學(xué)家WhitfieldDiffie和MartinHellman提出DH算法,才解決了這個(gè)難題。DH算法不直接傳遞密鑰,只傳遞用自己的私鑰加密某數(shù)后的值,最終雙方都能計(jì)算出一把與對(duì)方完全一致的新密鑰,雙方再用這把新密鑰來(lái)加密和解密數(shù)據(jù)。受DH算法啟發(fā),麻省理工學(xué)院的三位科學(xué)家Rivest、Shamir和Adleman于1977年提出了RSA算法,該算法把密鑰分成了兩把,加密和解密使用不同的密鑰,私鑰由擁有者保管,不在網(wǎng)絡(luò)間傳輸,公鑰則是公開的。RSA算法是第一個(gè)能同時(shí)用于加密和數(shù)字簽名的算法。常見的非對(duì)稱加密算法有:RSA、DH、ECC等。下面,借助工具軟件RSA-TOOL,先介紹RSA算法,再介紹DH算法,說(shuō)明如何生成和運(yùn)用非對(duì)稱密鑰。一、RSA算法RSA算法是如何工作的呢?下面以張三與李四通信為例。張三擁有一對(duì)密鑰,分別是張三的公鑰和張三的私鑰。其中,張三的公鑰是公開的,共享給所有人,如何確保張三的公鑰不被偽造,將在后文中講解;張三的私鑰是保密的,只有張三可以使用。李四若要加密數(shù)據(jù)給張三,可用張三的公鑰加密。張三收到后,再用自己的私鑰解密,讀取明文。攻擊者沒有張三的私鑰,只有張三的公鑰和截獲到的密文,是無(wú)法獲取明文的。RSA密鑰對(duì)的生成方法如下:首先,要秘密地選取兩個(gè)大素?cái)?shù)。為了便于計(jì)算和說(shuō)明,這里選兩個(gè)小素?cái)?shù)7和17,還要選取一個(gè)與(7-1)×(17-1)互素的數(shù)(即與96互素的數(shù))作為公鑰,這里選5作為公鑰。接著,打開工具軟件RSA2TOOL,將進(jìn)制設(shè)置為10進(jìn)制,輸入公鑰5,第一個(gè)素?cái)?shù)7,第二個(gè)素?cái)?shù)17,點(diǎn)擊“CalcD”按鈕,即可算出循環(huán)周期是119,私鑰是77。我們可以把循環(huán)周期合并到公鑰和私鑰中書寫,即把公鑰記為(5,119),把私鑰記為(77,119)。3.2.1RSA算法和DH算法為便于理解,下面用不嚴(yán)謹(jǐn)?shù)姆椒枋鲆幌翿SA算法大致是如何工作的。RSA算法要用到歐拉函數(shù)與費(fèi)馬小定理。歐拉函數(shù)的特例:假如a是素?cái)?shù),那么a的歐拉函數(shù)等于a-1。費(fèi)馬小定理的特例:假如a是素?cái)?shù)、b是一個(gè)整數(shù),那么b^(a-1)moda=1。圖3-2-1軟件工具RSA-Tool為便于理解,下面用不嚴(yán)謹(jǐn)?shù)姆椒枋鲆幌翿SA算法大致是如何工作的。RSA算法要用到歐拉函數(shù)與費(fèi)馬小定理。歐拉函數(shù)的特例:假如a是素?cái)?shù),那么a的歐拉函數(shù)等于a-1。費(fèi)馬小定理的特例:假如a是素?cái)?shù)、b是一個(gè)整數(shù),那么b^(a-1)moda=1。以選取兩個(gè)小素?cái)?shù)7和17為例:根據(jù)費(fèi)馬小定理,對(duì)于素?cái)?shù)7,任意取一個(gè)整數(shù)b,可得到:b^(7-1)mod7=1,即b^6mod7=1;根據(jù)費(fèi)馬小定理,對(duì)于素?cái)?shù)17,任意取一個(gè)整數(shù)b,可得到:b^(17-1)mod17=1,即b^16mod17=1;由此可知:b^(6×16)mod(7×17)=1,即:b^96mod119=1如果存在一個(gè)數(shù)mod96等于1,比如385mod96=1,385=4×96+1,那么,b^385mod119=b^(4×96+1)mod119=【(b^(4×96))mod119】×【(b^1)mod119】=1×b=b可見,只要找到兩個(gè)數(shù),它們的乘積mod96等于1,這兩個(gè)數(shù)就是公鑰和私鑰。原因如下:比如,我們可以找到兩個(gè)與96互素的數(shù):5和77,5×77=385,385mod96=1,由上式b^385mod119=b可知:b^(5×77)mod119=b把5×77拆開來(lái)寫,上式也可寫成:【b^5mod119】^77mod119=b其中,【b^5mod119】可以看成對(duì)b進(jìn)行加密,得到的結(jié)果就是密文;接著,(密文^77mod119)是對(duì)密文進(jìn)行解密,得到的結(jié)果就是解密后的明文b。演算過(guò)程中,從7×17求得119很容易。119是公開的,如果能將119分解成7乘以17,再根據(jù)公鑰5就可以破解出私鑰是77了。但實(shí)際應(yīng)用中,采用的是兩個(gè)上百位的十進(jìn)制大素?cái)?shù)。由這兩個(gè)上百位十進(jìn)制數(shù)的乘積得到一個(gè)很大的數(shù),RSA算法的安全性就取決于對(duì)這個(gè)大數(shù)分解的難度。將長(zhǎng)達(dá)1024位或2048位的十進(jìn)制大數(shù)分解成兩個(gè)素?cái)?shù)相乘,這樣的難度非常大,接近不可能。因此,只要密鑰位數(shù)足夠大,RSA算法是安全的。例題:已知RSA公鑰是(5,119),私鑰是(77,119),請(qǐng)用公鑰(5,119)加密字母A(A的ASCII碼是65,即加密:65),再用私鑰對(duì)密文進(jìn)行解密。明文:65用公鑰加密:用公鑰(5,119)進(jìn)行加密,(65^5)mod119=46即加密后,得到密文:46用私鑰解密:用私鑰(77,119)進(jìn)行解密,(46^77)mod119=65,即解密得到明文:65因?yàn)楣€是公開的,即5和119是公開的,若能對(duì)119作因數(shù)分解,就可以破解出私鑰了,對(duì)119進(jìn)行因數(shù)分解很容易,可以分解成7×17。但對(duì)1024位、2048位這樣的大數(shù)進(jìn)行因數(shù)分解是不可行的,因此,只要密鑰位數(shù)夠大,RSA算法是安全的。二、DH算法DH是Diffie-Hellman的首字母縮寫,DH算法是WhitefieldDiffie與MartinHellman在1976年提出了一個(gè)的密鑰交換算法。它可以使用不對(duì)稱加密算法,為通信雙方生成相同的臨時(shí)對(duì)稱密鑰,然后雙方利用這個(gè)臨時(shí)對(duì)稱密鑰進(jìn)一步傳送真正使用的對(duì)稱密鑰。一)原理很簡(jiǎn)單,簡(jiǎn)單的運(yùn)算過(guò)程舉例如下:1.公開兩個(gè)數(shù):5和97。2.A、B雙方各自取一個(gè)保密的數(shù):A方選取36。B方選取58。3.A計(jì)算出5^36mod97給B。B計(jì)算出5^58mod97給A。4.A根據(jù)((5^58mod97)^36)mod97得到對(duì)稱密鑰:((5^58^36)mod97。5.B根據(jù)((5^36mod97)^58)mod97得到對(duì)稱密鑰:((5^36)^58)mod97。可以看出,A、B雙方得到的對(duì)稱密鑰是一至的。二)具體過(guò)程如下:1.各自產(chǎn)生密鑰對(duì)。2.交換公鑰。3.用對(duì)方的公鑰和自己的私鑰運(yùn)行DH算法得到一個(gè)臨時(shí)的對(duì)稱密鑰M。4.A產(chǎn)生一個(gè)對(duì)稱密鑰N,用臨時(shí)密鑰M加密后發(fā)給B。5.B用臨時(shí)密鑰M解密得到對(duì)稱密鑰N。6.B用這個(gè)對(duì)稱密鑰N來(lái)解密A的數(shù)據(jù)。比較關(guān)鍵的一步,雙方是如何對(duì)方的公鑰計(jì)算得到臨時(shí)的對(duì)稱密鑰M的?三)舉例說(shuō)明。1.各自產(chǎn)生密鑰對(duì)。先解釋什么是原根。若存在g∈[2,p-1],對(duì)于所有i∈[1,p-1],計(jì)算(g^i)%p得到的結(jié)果都是互不相同的,那么數(shù)g就是數(shù)p的一個(gè)原根。每個(gè)素?cái)?shù)都有原根。1)雙方協(xié)商一個(gè)素?cái)?shù)和這個(gè)素?cái)?shù)的一個(gè)原根,這個(gè)素?cái)?shù)和它的原根是公開的。如取素?cái)?shù)q=97和97的一個(gè)原根a=5。q和a由雙方協(xié)商,并且都是公開的。2)A、B雙方各自選擇一個(gè)小于q的隨機(jī)數(shù)作為自己的私有密鑰(即小于97的隨機(jī)數(shù))。A選的私鑰XA=36。B選的私鑰XB=58。3)A、B雙方計(jì)算各自的公開密鑰:A的公鑰YA=(5^36)mod97=50B的公鑰YB=(5^58)mod97=442.交換公鑰。3.根據(jù)DH算法,用對(duì)方的公鑰和自己的私鑰進(jìn)行運(yùn)算,得到臨時(shí)的對(duì)稱密鑰M。A計(jì)算得到臨時(shí)密鑰M=(YB)^XAmod97=(44^36)mod97=75B計(jì)算得到臨時(shí)密鑰M=(YA)^XBmod97=(50^58)mod97=75攻擊者的目的是利用素?cái)?shù)97、97原根5、A的公鑰50和B的公鑰44,計(jì)算出臨時(shí)密鑰75。若所選的素?cái)?shù)很大,攻擊者是無(wú)法計(jì)算出臨時(shí)密鑰的。謝謝欣賞第3章數(shù)據(jù)加密技術(shù)3.2.2PGP軟件在加密上的綜合應(yīng)用3.2.3SSH的加密過(guò)程對(duì)稱密鑰算法運(yùn)算速度快,但傳輸密鑰困難;非對(duì)稱密鑰算法不存在傳輸密鑰問(wèn)題,但運(yùn)算速度慢。兩者結(jié)合起來(lái),就能取長(zhǎng)補(bǔ)短。一、為三臺(tái)電腦安裝PGPDesktop,生成密鑰對(duì)。1.啟動(dòng)三臺(tái)windows虛擬機(jī),都安裝上PGPDesktop剛安裝完成,軟件會(huì)彈出PGP密鑰生成助手,若還不想生成密鑰對(duì),可點(diǎn)擊取消按鈕,下次啟動(dòng)PGP后,再生成。3.2.2PGP軟件在加密上的綜合應(yīng)用1.如圖3-2-2所示,啟動(dòng)PGPDesktop,打開如圖3-2-3所示的管理界面。圖3-2-2打開PGPDesktop圖3-2-3PGPDesktop界面2.如圖3-2-4所示,點(diǎn)擊“文件”/“新建PGP密鑰”。圖3-2-4新建PGP密鑰3.彈出如圖3-2-5所示的PGP密鑰生成助手,點(diǎn)擊“下一步”。圖3-2-5PGP密鑰生成助手4.如圖3-2-6所示,輸入全名和主要郵件。圖3-2-6分配名稱和郵件5.創(chuàng)建口令。在需要使用私鑰時(shí),可用現(xiàn)在創(chuàng)建的口令來(lái)調(diào)用。如圖3-2-7所示,按要求輸入不少于8位、包含數(shù)字和字母的口令。輸入完成后,點(diǎn)擊“下一步”。圖3-2-7創(chuàng)建口令6.如圖3-2-8所示,PGP為user1生成了包括公鑰和私鑰的密鑰對(duì)。點(diǎn)擊“下一步”。在出現(xiàn)的PGP全球名錄助手框中,點(diǎn)擊“跳過(guò)”按鈕。圖3-2-8密鑰生成進(jìn)度7.如圖3-2-9所示,可以查看到user1的密鑰對(duì)。圖3-2-9user1的密鑰對(duì)8.PGP默認(rèn)保存私鑰的口令,用到私鑰時(shí)直接調(diào)用,不需要用戶再次輸入口令。若不想我的電話口令,可如圖3-2-10所示,先打開菜單“工具”/“選項(xiàng)”,然后按圖3-2-11所示,將保護(hù)私鑰的口令設(shè)置成“不保存我的口令”。圖3-2-10PGPDesktop選項(xiàng)圖3-2-11PGP選項(xiàng)窗口-不保存我的口令9.如圖3-2-12和圖3-2-13所示,用同樣方法,為第二臺(tái)電腦的user2和第三臺(tái)電腦的user3分別生成密鑰對(duì)。10.用同樣方法,為第二臺(tái)電腦的user2和第三臺(tái)電腦的user3進(jìn)行私鑰“不保存我的口令”的設(shè)置。圖3-2-12user2的密鑰對(duì)圖3-2-13user3的密鑰對(duì)二、導(dǎo)出公鑰,互相交換公鑰。1.如圖3-2-14所示,右擊user1,選擇“導(dǎo)出”。圖3-2-14導(dǎo)出user1的公鑰2.如圖3-2-15所示,選擇存儲(chǔ)位置,不要勾選“包含私鑰”選項(xiàng),點(diǎn)擊“保存”按鈕,為user1導(dǎo)出公鑰。3.如圖3-2-16所示,把user1的公鑰拖放到PC2上。圖3-2-15user1的公鑰保存位置圖3-2-16將user1的公鑰分發(fā)給PC24.如圖3-2-17所示,在PC2上,雙擊user1.asc,點(diǎn)擊“導(dǎo)入”。5.如圖3-2-18所示,User1的公鑰成功的導(dǎo)入到了win2中。圖3-2-17導(dǎo)入user1的公鑰圖3-2-18導(dǎo)入user1的公鑰后的界面6.如圖3-2-19所示,右擊剛導(dǎo)入的user1公鑰,選擇“簽名”。圖3-2-19對(duì)user1的公鑰進(jìn)行簽名7.如圖3-2-20所示,在彈出的“PGP簽名密鑰”框中,點(diǎn)擊“確定”按鈕。8.如圖3-2-21所示,在彈出的“PGP為選擇密鑰輸入口令”對(duì)話框中,輸入調(diào)用user2私鑰的口令,為新導(dǎo)入的公鑰簽名。圖3-2-20確認(rèn)簽名圖3-2-21輸入user2私鑰的口令9.如圖3-2-22所示,簽名后,新導(dǎo)入的公鑰“已校驗(yàn)”狀態(tài)變綠。10.如圖3-2-23、3-2-24、3-2-25所示,用同樣方法,為user1、user2、user3互傳公鑰,并為導(dǎo)入的公鑰簽名。圖3-2-22對(duì)user1的公鑰簽名后的結(jié)果

圖3-2-23為win1導(dǎo)入其它公鑰圖3-2-24為win2導(dǎo)入其它公鑰圖3-2-25為win3導(dǎo)入其它公鑰

三、在PC1上,新建文件,用user2的公鑰加密,發(fā)送到PC2和PC3上,觀察user2能解密打開文件,但user3不能解密,無(wú)法打開加密后的文件。這是因?yàn)閡ser2的公鑰加密的文件,只有user2的私鑰才能解密,user3沒有user2的私鑰,所以無(wú)法解密。1.如圖3-2-26所示,在PC1上新建文件test1.txt,右擊,選擇“PGPDesktop”/“使用密鑰保護(hù)test1.txt”。圖3-2-26使用密鑰保護(hù)文件2.如圖3-2-27所示,在PGP壓縮包助手中,選擇User2的公鑰,并點(diǎn)擊“添加”按鈕。圖3-2-27添加user2的公鑰3.如圖3-2-28所示,在PGP壓縮助手中,簽名密鑰選擇“無(wú)”,點(diǎn)擊“下一步”按鈕。圖3-2-28簽名密鑰選擇無(wú)并保存4.將加密好的文件傳送到win2主機(jī)上。5.如圖3-2-20所示,在win2主機(jī)上,右擊加密好的文件test1.txt.pgp,選擇“PGPDesktop”/“解密&校驗(yàn)test1.txt.pgp”。圖3-2-29win2上解密文件6.如圖3-2-30所示,在Win2上彈出的輸入口令框中,輸入調(diào)用user2私鑰的口令“123”,點(diǎn)擊“確定“按鈕。圖3-2-30輸入user2的私鑰解密文件7.通過(guò)User2的私鑰,能解密并打開測(cè)試文件。8.如圖3-2-31所示,把加密好的文件test1.txt.pgp傳到win3上,右擊文件,選擇“PGPDesktop”/“解密&校驗(yàn)test1.txt.pgp”。提示“因?yàn)槟拿荑€環(huán)不包含user1或user2公鑰對(duì)應(yīng)的可用私鑰,無(wú)法解密“。可見,user3無(wú)法解密此加密文件。圖3-2-31user3無(wú)法解密文件

我們已經(jīng)在上一章中介紹了使用SSH網(wǎng)管防火墻ASA的方法,SSH是如何加密數(shù)據(jù)的呢?SSH綜合運(yùn)用了對(duì)稱密鑰和非對(duì)稱密鑰技術(shù),SSH的運(yùn)行過(guò)程如下:1.服務(wù)端生成密鑰對(duì),包括公鑰和私鑰。公鑰可以公開,用于發(fā)給客戶端加密數(shù)據(jù),對(duì)于采用服務(wù)端公鑰加密的數(shù)據(jù),只有服務(wù)端相應(yīng)的私鑰才能解密;服務(wù)端的私鑰不公開,只有服務(wù)端才擁有,可以解密用服務(wù)端公鑰加過(guò)密的數(shù)據(jù)。2.客戶端向服務(wù)端發(fā)起SSH連接請(qǐng)求。3.服務(wù)端向客戶端發(fā)起版本協(xié)商,確定是使用版本1還是版本2。4.協(xié)商結(jié)束后服務(wù)端發(fā)送服務(wù)端的公鑰給客戶端,在此之前,所有通信都是不加密的。5.客戶端的用戶通過(guò)核驗(yàn)服務(wù)端發(fā)來(lái)的公鑰的MD5值,核驗(yàn)公鑰的真?zhèn)?,如果公鑰沒有問(wèn)題,則接收此公鑰,并產(chǎn)生一個(gè)隨機(jī)數(shù),用此公鑰來(lái)加密這個(gè)隨機(jī)數(shù),這個(gè)隨機(jī)數(shù)可用于計(jì)算雙方加密數(shù)據(jù)用的對(duì)稱密鑰,該對(duì)稱密鑰加密的數(shù)據(jù),可以用該對(duì)稱密鑰來(lái)解密。6.客戶端將已經(jīng)用服務(wù)端公鑰加密過(guò)的隨機(jī)數(shù)發(fā)送給服務(wù)端。7.服務(wù)端獲得已加密的隨機(jī)數(shù)后,用服務(wù)器的私鑰解密,獲得該隨機(jī)數(shù)的值,并用這個(gè)隨機(jī)數(shù)產(chǎn)生雙方加密數(shù)據(jù)用的對(duì)稱密鑰,從而雙方都擁有了這個(gè)對(duì)稱密鑰,之后的通信都經(jīng)過(guò)這個(gè)對(duì)稱密鑰加密,也就是說(shuō),已經(jīng)建立了安全的傳輸通道。8.進(jìn)入認(rèn)證階段,利用上面產(chǎn)生的安全的傳輸通道,使用預(yù)共享密鑰進(jìn)行認(rèn)證。9.認(rèn)證成功后,進(jìn)入交互階段。3.2.3SSH的加密過(guò)程謝謝欣賞第3章數(shù)據(jù)加密技術(shù)3.3HASH算法及數(shù)據(jù)的指紋3.4數(shù)字簽名及PGP軟件在簽名上的應(yīng)用要使信息安全的傳送到目的地,應(yīng)確保傳送過(guò)程具備以下四個(gè)基本特性:私密性(Confidentiality)、完整性(Integrity)、源認(rèn)證(Authentication)和不可否認(rèn)性(Non-repudiation)。對(duì)數(shù)據(jù)、密碼等進(jìn)行加密,使數(shù)據(jù)不被未經(jīng)授權(quán)者讀取,稱為私密性(Confidentiality);確保信息在傳送過(guò)程中,未被篡改,稱為完整性(Integrity);發(fā)送和接收前先確認(rèn)發(fā)送者和接收者不是冒名的,稱為源認(rèn)證(Authentication);發(fā)送者和接收者事后不能否認(rèn)是自己發(fā)送的或是自己接收的,稱為不可否認(rèn)性(Non-repudiation)。加密算法可以實(shí)現(xiàn)數(shù)據(jù)的私密性,數(shù)據(jù)的指紋則可以實(shí)現(xiàn)數(shù)據(jù)的完整性校驗(yàn)(Integrity),一旦數(shù)據(jù)被篡改,數(shù)據(jù)的指紋就會(huì)改變,從而鑒別出數(shù)據(jù)已經(jīng)被篡改,不再完整了。3.3HASH算法及數(shù)據(jù)的指紋一、數(shù)據(jù)的指紋人有指紋,數(shù)據(jù)也有指紋。數(shù)據(jù)指紋也叫做數(shù)據(jù)的哈希值、數(shù)據(jù)的HASH值、數(shù)據(jù)的散列值、數(shù)據(jù)的摘要、數(shù)據(jù)的消息驗(yàn)證碼(MessageAuthenticationCode,MAC)等。在現(xiàn)實(shí)生活中,兩個(gè)人的指紋不會(huì)完全相同,公安部門可以通過(guò)人的指紋來(lái)識(shí)別出罪犯。不同數(shù)據(jù)的數(shù)據(jù)指紋也是互不相同的,一個(gè)長(zhǎng)文件,假如將其中的一個(gè)逗號(hào)改成了句號(hào),那么重新產(chǎn)生的數(shù)據(jù)指紋就會(huì)跟原來(lái)數(shù)據(jù)指紋完全不一樣,這被稱為數(shù)據(jù)指紋的雪崩效應(yīng)。人不管長(zhǎng)得高矮胖瘦,人的指紋大小都是相同的。數(shù)據(jù)的指紋也一樣,不管數(shù)據(jù)的長(zhǎng)短,經(jīng)過(guò)HASH運(yùn)算產(chǎn)生的數(shù)據(jù)指紋,長(zhǎng)度都是固定的。不能通過(guò)人的指紋,還原出整個(gè)人的模樣。數(shù)據(jù)指紋也是單向的,從數(shù)據(jù)也以計(jì)算出數(shù)據(jù)指紋,但不能從數(shù)據(jù)指紋逆推出原始數(shù)據(jù)。二、HASH算法產(chǎn)生數(shù)據(jù)指紋的算法,叫做哈希算法,也稱為HASH算法或散列算法。常見的HASH算法有MD5算法、SHA算法等。對(duì)于任意長(zhǎng)度的數(shù)據(jù),哈希算法輸出的摘要信息長(zhǎng)度是固定的。其中,MD5算法輸出的是128位固定長(zhǎng)度的摘要信息。SHA算法則分為不同檔次的SHA-1和SHA-2。SHA-2又可分為SHA-224、SHA-256、SHA-384和SHA-512等四種。其中,SHA-1產(chǎn)生的報(bào)文摘要是160位,SHA-224產(chǎn)生的報(bào)文摘要是224位,SHA-256產(chǎn)生的報(bào)文摘要是256位,SHA-384產(chǎn)生的報(bào)文摘要是384位,SHA-512產(chǎn)生的報(bào)文摘要是512位。至今還沒有出現(xiàn)對(duì)SHA-2有效的攻擊。但對(duì)于MD5和SHA-1,科學(xué)家已經(jīng)能為指定的HASH值找到可產(chǎn)生這些值的亂碼數(shù)據(jù),當(dāng)然,這些亂碼數(shù)據(jù)是無(wú)法冒充原始數(shù)據(jù)的,因?yàn)樵紨?shù)據(jù)是有意義的,而這些亂碼數(shù)據(jù)則毫無(wú)意義。三、HMAC雖然對(duì)數(shù)據(jù)進(jìn)行Hash運(yùn)算能實(shí)現(xiàn)對(duì)數(shù)據(jù)的完整性校驗(yàn)(Integrity)。但攻擊者截獲報(bào)文后,可以修改報(bào)文內(nèi)容、偽造報(bào)文摘要。針對(duì)這樣的攻擊,HMAC對(duì)HASH算法進(jìn)行了改進(jìn)。HMAC算法要求發(fā)送方與接收方預(yù)先共享一個(gè)密鑰key,將數(shù)據(jù)與預(yù)共享密鑰key合并后,再做hash運(yùn)算,這樣計(jì)算出來(lái)的MAC值,不但取決于輸入的原始數(shù)據(jù),還取決于預(yù)共享密鑰key,攻擊者因?yàn)闆]有預(yù)共享密鑰key,就算修改了截獲的報(bào)文內(nèi)容,也仿造不了報(bào)文摘要。因此,HMAC不僅可以實(shí)現(xiàn)完整性校驗(yàn)(Integrity),還能實(shí)現(xiàn)源認(rèn)證(Authentication)。3.4數(shù)字簽名及PGP軟件在簽名上的應(yīng)用加密算法可以實(shí)現(xiàn)數(shù)據(jù)的私密性,數(shù)據(jù)的指紋即hash運(yùn)算可以實(shí)現(xiàn)數(shù)據(jù)的完整性(Integrity),若將數(shù)據(jù)與預(yù)共享密鑰key合并后再做hash運(yùn)算的HMAC,可實(shí)現(xiàn)數(shù)據(jù)的完整性校驗(yàn)(Integrity),和源認(rèn)證(Authentication)。數(shù)字簽名,則可同時(shí)實(shí)現(xiàn)完整性Integrity、源認(rèn)證Authentication和不可否認(rèn)性Non-repudiation。HMAC和數(shù)字簽名都能實(shí)現(xiàn)完整性Integrity和源認(rèn)證Authentication,但它們的應(yīng)用場(chǎng)合是不一樣的。由于HASH運(yùn)算速度比較快,所以數(shù)據(jù)量比較大時(shí),一般用HMAC進(jìn)行完整性校驗(yàn)(Integrity)和源認(rèn)證(Authentication),比如將來(lái)要學(xué)習(xí)到的IPSECVPN中,ESP的每個(gè)包都會(huì)用到HMAC。數(shù)字簽名的安全性更高,但速度較慢、消耗資源較大,所以在需強(qiáng)認(rèn)證的關(guān)鍵點(diǎn),才會(huì)采用數(shù)字簽名技術(shù)。對(duì)明文進(jìn)行數(shù)字簽名的方法是:求出明文的HASH值,用自己的私鑰對(duì)明文的HASH值進(jìn)行加密,得到的就是數(shù)字簽名。再將明文和數(shù)字簽名同時(shí)發(fā)送給接收方。對(duì)數(shù)字簽名進(jìn)行驗(yàn)證的方法是:接收方用發(fā)送方的公鑰解密數(shù)字簽名,得到發(fā)送方明文的HASH值。接收方對(duì)明文計(jì)算出HASH值,與發(fā)送方提供的HASH值進(jìn)行比較,若相同,則數(shù)字簽名有效。數(shù)字簽名的應(yīng)用很廣泛,比如,蘋果APPStore上的APP必須是經(jīng)過(guò)了蘋果的數(shù)字簽名的,如果沒有蘋果數(shù)字簽名的AAP,客戶是無(wú)法安裝到蘋果手機(jī)上的。在上次PGP加解密實(shí)驗(yàn)中,已經(jīng)為user1、user2、user3所在的三臺(tái)電腦生成了密鑰對(duì),并已經(jīng)互傳公鑰。在此基礎(chǔ)上,我們繼續(xù)完成數(shù)字簽名及驗(yàn)證的實(shí)驗(yàn)。1.在user1、user2、user3所在的電腦上,啟動(dòng)并打開PGPDesktop的主界面。2.在user1所在的電腦上,新建文件test2.txt,輸入內(nèi)容,存盤。如圖3-4-1所示,右擊該文件,選擇“簽名為user1”選項(xiàng)。圖3-4-1文件簽名為user13.如圖3-4-2所示,輸入調(diào)用user1私鑰所需口令,調(diào)用user1的私鑰對(duì)文件test2.txt進(jìn)行數(shù)字簽名。點(diǎn)擊“下一步”。4.如圖3-4-3所示,在test2.txt文件旁邊,會(huì)生成test2.txt.sig文件。圖3-4-2簽名并保存圖3-4-3生成text2.txt.sig

5.如圖3-4-4和圖3-4-5所示,將test2.txt和test2.txt.sig拖放到user2所在的win2和user3所在的win3中。在win2和win3上,分別雙擊test2.txt.sig,在各自的PGPDesktop上,都能看到對(duì)test2.txt文件的簽名信息,包括簽名人、簽名時(shí)間等。圖3-4-4win2上test2.txt文件的簽名信息圖3-4-5win3上test2.txt文件的簽名信息謝謝欣賞第3章數(shù)據(jù)加密技術(shù)3.5數(shù)字證書3.5數(shù)字證書

在人類社會(huì)中,身份證可以證明一個(gè)人的身份。在數(shù)字世界中,數(shù)字證書能證明公鑰的擁有者是誰(shuí),證明某個(gè)公鑰不是冒名頂替的。實(shí)現(xiàn)數(shù)字證書,需要一個(gè)安全體系PKI。3.5.1PKI對(duì)于在網(wǎng)絡(luò)上通信的雙方來(lái)說(shuō),如何綜合運(yùn)用對(duì)稱密鑰技術(shù)和非對(duì)稱密鑰技術(shù),確保信息從源出發(fā),安全傳送到目的地,做到數(shù)據(jù)傳輸?shù)乃矫苄裕–onfidentiality)、源認(rèn)證(Authentication)、完整性(Integrity)、不可否認(rèn)性(Non-repudiation)。都是建立在公鑰真實(shí)性的基礎(chǔ)之上的。非對(duì)稱密鑰包括公鑰和私鑰組成的密鑰對(duì),在之前的研究中,公鑰傳送給通信的另一方的方式,是直接發(fā)送給對(duì)方,這種方式獲取公鑰并不方便,也不安全。獲取和驗(yàn)證公鑰的更好方式是通過(guò)公鑰基礎(chǔ)架構(gòu)PKI來(lái)實(shí)現(xiàn)。PKI(PublicKeyInfrastructure,公鑰基礎(chǔ)結(jié)構(gòu))是通過(guò)非對(duì)稱密鑰技術(shù)和數(shù)字證書來(lái)驗(yàn)證數(shù)字證書所有者的身份,確保系統(tǒng)信息安全的一種體系。由稱為CA的權(quán)威機(jī)構(gòu)把公鑰所有者的信息與公鑰捆綁在一起,用權(quán)威機(jī)構(gòu)的私鑰對(duì)以上捆綁的數(shù)據(jù)進(jìn)行簽名,生成公鑰所有者的證書,頒發(fā)給證書所有者。這就象公安局把公民的身份證號(hào)、姓名等捆綁在一起,用公安局的公章進(jìn)行蓋章,制成公民的身份證,頒發(fā)給該公民。數(shù)字證書的主要作用是證明公鑰擁有者的身份及公鑰的合法性。每個(gè)客戶都擁有權(quán)威機(jī)構(gòu)CA的根證書,權(quán)威機(jī)構(gòu)CA的根證書中包含有權(quán)威機(jī)構(gòu)的公鑰。同時(shí),權(quán)威機(jī)構(gòu)CA對(duì)發(fā)送方的數(shù)字證書進(jìn)行簽名后頒發(fā)給發(fā)送方,發(fā)送方的數(shù)字證書中包含了發(fā)送方的信息以及發(fā)送方的公鑰。接收方從CA的根證書中獲取到權(quán)威機(jī)構(gòu)的公鑰,用它來(lái)解密CA在發(fā)送方數(shù)字證書上的簽名,得到發(fā)送方證書的HASH值,與接收方自己計(jì)算出的HASH值進(jìn)行比較,如果一致,就可證明發(fā)送方身份的真實(shí)性,從而確保了從發(fā)送方數(shù)字證書中獲取到的公鑰的可靠性。1.數(shù)據(jù)私密性(Confidentiality)的實(shí)現(xiàn)數(shù)據(jù)的私密性可通過(guò)對(duì)數(shù)據(jù)加密實(shí)現(xiàn)。數(shù)據(jù)加密分為對(duì)稱加密技術(shù)和非對(duì)稱加密技術(shù)。由于非對(duì)稱密鑰的加密方式占用資源較多,速度較慢,只適用于小數(shù)據(jù)量的加密;而對(duì)稱密鑰加密本身速度快,網(wǎng)絡(luò)設(shè)備整合的對(duì)稱加密硬件加速卡又進(jìn)一步提升了對(duì)稱加密的速度。因此,數(shù)據(jù)加密一般采用對(duì)稱加密技術(shù)。然而,對(duì)稱加密技術(shù)涉及到“對(duì)稱密鑰”的傳送問(wèn)題,一旦“對(duì)稱密鑰”在傳送過(guò)程中被攻擊者截獲,數(shù)據(jù)也就無(wú)私密性可言了。解決“對(duì)稱密鑰“的傳送問(wèn)題,可采用“非對(duì)稱密鑰“加密“對(duì)稱密鑰”后再傳送的方式。用“接收者的公鑰”加密“對(duì)稱密鑰”,傳給接收者后,接收者用自己的私鑰解密,獲得發(fā)送方和接收方共同使用的對(duì)稱密鑰。攻擊者就算截獲了加密過(guò)的對(duì)稱密鑰,由于沒有接收者的私鑰,也是無(wú)法讀取對(duì)稱密鑰的真正內(nèi)容的。2.源認(rèn)證(Authentication)的實(shí)現(xiàn)源認(rèn)證需要發(fā)送方對(duì)數(shù)據(jù)進(jìn)行數(shù)字簽名。發(fā)送者在發(fā)送前先用自己的私鑰對(duì)數(shù)據(jù)的HASH值進(jìn)行加密,再將加密后的HASH值連同數(shù)據(jù)一起傳送給接收者,接收者用發(fā)送者的公鑰解密HASH值,與自己計(jì)算出的HASH值對(duì)比,如果一致,再根據(jù)發(fā)送者是其私鑰的唯一擁有者,就證明了HASH值是發(fā)送者本人提供的。發(fā)送者用自己的私鑰對(duì)數(shù)據(jù)的HASH值進(jìn)行加密,得到的結(jié)果就是數(shù)字簽名。接收方收到發(fā)送方發(fā)來(lái)的數(shù)據(jù)及對(duì)數(shù)據(jù)的數(shù)字簽名,并通過(guò)發(fā)送方的數(shù)字證書獲取到發(fā)送方的公鑰。接收方使用發(fā)送方的公鑰,解密發(fā)送方的數(shù)字簽名,得到發(fā)送方數(shù)據(jù)的HASH值,與接收方自己計(jì)算出來(lái)的數(shù)據(jù)HASH值進(jìn)行比較,如果一致,就可證明發(fā)送方的身份,實(shí)現(xiàn)對(duì)發(fā)送方的源認(rèn)證。3.數(shù)據(jù)完整性校驗(yàn)(Integrity)的實(shí)現(xiàn)要確保數(shù)據(jù)的完整性,可在數(shù)據(jù)發(fā)送前,先對(duì)數(shù)據(jù)做HASH,接收者收到后,對(duì)接收到的數(shù)據(jù)做HASH,與發(fā)送者發(fā)來(lái)的HASH值進(jìn)行比較,如果一致,就證明了數(shù)據(jù)未被篡改,確保了數(shù)據(jù)的完整性。為確保發(fā)送者計(jì)算出的HASH值在傳送給接收者的過(guò)程中沒有被篡改。需要結(jié)合源認(rèn)證來(lái)實(shí)現(xiàn)。因此,實(shí)現(xiàn)數(shù)據(jù)的完整性校驗(yàn),在PKI的基礎(chǔ)上,除了要對(duì)數(shù)據(jù)進(jìn)行HASH計(jì)算,還要結(jié)合數(shù)字簽名的源認(rèn)證功能。4.不可否認(rèn)性(Non-repudiation)的實(shí)現(xiàn)不可否認(rèn)性可從私鑰的唯一擁有特性,結(jié)合公鑰基礎(chǔ)架構(gòu)PKI、由權(quán)威機(jī)構(gòu)CA頒發(fā)的數(shù)字證書,以及數(shù)字簽名來(lái)實(shí)現(xiàn)。由此可見,在PKI的基礎(chǔ)上,數(shù)字簽名實(shí)現(xiàn)了數(shù)據(jù)的源認(rèn)證、完整性校驗(yàn)、不可否認(rèn)性等功能。SSL(SecureSocketsLayer,安全套接層)是一個(gè)工作在TCP與應(yīng)用層之間的安全協(xié)議。提供私密性、信息完整性和身份認(rèn)證。這些特性主要綜合運(yùn)用了各種加密技術(shù),如數(shù)字證書、非對(duì)稱加密算法、對(duì)稱加密算法和HMAC等實(shí)現(xiàn)??捎糜诩用蹾TTP、郵件、VPN等。下面,通過(guò)安裝獨(dú)立根CA,架設(shè)SSL網(wǎng)站,實(shí)現(xiàn)加密技術(shù)的綜合運(yùn)用。需要啟動(dòng)三臺(tái)虛擬機(jī),PC1為win2008,用做獨(dú)立根CA;PC2為win2008,用做網(wǎng)站服務(wù)器,PC3為win7,用作客戶機(jī)。3.5.2SSL應(yīng)用一、配置CA服務(wù)器1.啟動(dòng)第一臺(tái)虛擬機(jī)win2008,用做CA服務(wù)器,虛擬網(wǎng)卡連接到Vmnet1,配置IP地址為0。2.如圖3-5-1所示,打開服務(wù)管理器,點(diǎn)擊服務(wù)器管理器中的“角色”,再點(diǎn)擊“添加角色”。圖3-5-1服務(wù)器管理器添加角色

3.如圖3-5-2所示,勾選“ActiveDirectory證書服務(wù)”,點(diǎn)擊“下一步”,再點(diǎn)擊“下一步”。安裝ActiveDirectory證書服務(wù)。圖3-5-2選擇服務(wù)器角色4.如圖3-5-3所示,默認(rèn)已經(jīng)勾選“證書頒發(fā)機(jī)構(gòu)”,接著勾選“證書頒發(fā)機(jī)構(gòu)Web注冊(cè)”。

圖3-5-3選擇證書頒發(fā)機(jī)構(gòu)Web注冊(cè)5.勾選“證書頒發(fā)機(jī)構(gòu)Web注冊(cè)”后,會(huì)彈出如圖3-5-4所示的“添加角色向?qū)А?,詢?wèn)是否添加證書頒發(fā)機(jī)構(gòu)Web注冊(cè)所需的角色服務(wù)和功能,點(diǎn)擊“添加所需的角色服務(wù)”按鈕。

圖3-5-4

添加角色向?qū)?添加所需的角色服務(wù)6.如圖3-5-5所示,點(diǎn)擊“下一步”繼續(xù)。圖3-5-5添加角色向?qū)?角色服務(wù)7.如圖3-5-6所示,因沒有安裝活動(dòng)目錄,所以默認(rèn)只“獨(dú)立”選項(xiàng)可選,點(diǎn)擊“下一步”。圖3-5-6指定安裝類型8.如圖3-5-7所示,這是第一臺(tái)CA,所以選“根CA”,點(diǎn)擊“下一步”。

圖3-5-7指定CA類型9.如圖3-5-8所示,獨(dú)立根CA需要用自己的私鑰為自己的根證書進(jìn)行簽名、在為申請(qǐng)者頒發(fā)證書時(shí),也要用自己的私鑰進(jìn)行簽名,因此需要選“新建私鑰”,然后點(diǎn)擊“下一步”。圖3-5-8設(shè)置私鑰

10.如圖3-5-9所示,因?yàn)橐擅荑€對(duì)(含公鑰、私鑰),所以要確定使用哪種非對(duì)稱密鑰算法生成,另外,為證書做數(shù)字簽字時(shí),需要先對(duì)證書內(nèi)容做HASH運(yùn)算,再用私鑰對(duì)HASH值進(jìn)行加密,所以要選擇所用的HASH算法。選擇好后,點(diǎn)擊“下一步”。圖3-5-9為CA配置加密11.如圖3-5-10所示,CA的公用名稱可自定義,這里定義為“CA1”,可分辨名稱后綴可不填寫。點(diǎn)擊“下一步”。圖3-5-10配置CA名稱12.如圖3-5-11所示,設(shè)置有效期為5年,然后,點(diǎn)擊“下一步”,隨后用默認(rèn)值,一直點(diǎn)擊“下一步”。

圖3-5-11設(shè)置有效期13.如圖3-5-12所示,確認(rèn)安裝選擇后,點(diǎn)擊“安裝”即可。圖3-5-12確認(rèn)安裝選擇二、配置WEB服務(wù)器1.啟動(dòng)第二臺(tái)虛擬機(jī)win2008,虛擬網(wǎng)卡連接到Vmnet1,配置IP地址為1。2.如圖3-5-13所示,打開服務(wù)管理器,勾選“DNS服務(wù)器”和“Web服務(wù)器(IIS)”,連續(xù)點(diǎn)擊“下一步”,直至安裝完成。圖3-5-13

安裝DNS服務(wù)和Web服務(wù)3.在C:盤中,新建文件夾site1,用于網(wǎng)站的根目錄。4.如圖3-5-14所示,點(diǎn)擊資源管理器中的“組織”/“文件夾和搜索選項(xiàng)”。圖3-5-14資源管理器配置為顯示擴(kuò)展名5.如圖3-5-15所示,在出現(xiàn)的“文件夾選項(xiàng)”的“查看”選項(xiàng)夾中,取消對(duì)“隱藏已知文件類型的擴(kuò)展名”的勾選,以便確認(rèn)新建的首頁(yè)命名為default.htm。

圖3-5-15文件夾選項(xiàng)6.如圖3-5-16所示,在資源管理器的C:\site1中,新建網(wǎng)站的首頁(yè)default.htm。

圖3-5-16新建文件命名為default.htm7.如圖3-5-17所示,在IIS中,停掉默認(rèn)網(wǎng)站。

圖3-5-17停止默認(rèn)網(wǎng)站

8.如圖3-5-18所示,右擊“網(wǎng)站”,選擇“添加網(wǎng)站”。圖3-5-18添加網(wǎng)站9.如圖3-5-19所示,輸入網(wǎng)站名稱“l(fā)cvc”,選擇內(nèi)容目錄的物理路徑為“C:\site1”,點(diǎn)擊“確定”按鈕。

圖3-5-19添加網(wǎng)站的名稱和物理路徑三、配置DNS服務(wù),新建域名和主機(jī)指向1。1.如圖3

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論