正文

  本文講解對(duì)稱(chēng)加密、非對(duì)稱(chēng)加密、消息摘要、MAC、數(shù)字簽名、公鑰證書(shū)的用途、不足和解決的問(wèn)題。

回到頂部

0.概述

  當(dāng)發(fā)送方A向接收方B發(fā)送數(shù)據(jù)時(shí),需要考慮的問(wèn)題有:

  1.數(shù)據(jù)的安全性

  2.數(shù)據(jù)的完整性,即數(shù)據(jù)不被篡改。

  3.數(shù)據(jù)的真實(shí)性,即數(shù)據(jù)確實(shí)來(lái)自于發(fā)送方,傳輸過(guò)程中沒(méi)有被替換。

  4.數(shù)據(jù)的不可否認(rèn)性,即驗(yàn)證發(fā)送方確實(shí)發(fā)送了數(shù)據(jù)。

  本文只是對(duì)整套體系做一個(gè)整體的介紹,后續(xù)文章詳細(xì)講解各個(gè)步驟和算法。

  本文的整體結(jié)構(gòu)見(jiàn)下圖。

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 

  基本概念: 

  密碼:按特定法則編成,用以對(duì)通信雙方的信息進(jìn)行明密變換的符號(hào)。

  密鑰:在現(xiàn)代密碼學(xué)中,秘鑰指的是一組特定的秘密數(shù)據(jù),在加密時(shí),它控制密碼算法按照指定的方式將明文變換為相應(yīng)的密文,并將一組信源標(biāo)識(shí)信息變換不可偽造的簽名;在解密時(shí),它控制密碼算法按照指定的方式將密文變換為相應(yīng)的明文,并將簽名信息變換成不可否認(rèn)的信源證據(jù)。

回到頂部

1.數(shù)據(jù)傳輸?shù)陌踩?/span>

  保證數(shù)據(jù)傳輸安全的方法就是對(duì)數(shù)據(jù)進(jìn)行加密了,常用的加密算法有對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密。

1.1 對(duì)稱(chēng)加密

  又稱(chēng)共享加密,加解密使用相同的密鑰。

常見(jiàn)算法

  DES 3DES AES RC5 RC6

  1).為了安全,A將數(shù)據(jù)加密發(fā)送給B。

  2).密文即使在傳送過(guò)程中被截獲,因?yàn)椴恢烂荑€也無(wú)法解密。

  3).B接收到密文之后,需要使用加密相同的密鑰來(lái)解密。

  4).需要A將密鑰傳給B,但保證密鑰傳輸過(guò)程中的安全又成了問(wèn)題。

優(yōu)點(diǎn)

  計(jì)算速度快。

缺點(diǎn)

  為了傳送數(shù)據(jù)的安全,將數(shù)據(jù)加密后進(jìn)行傳輸,但是對(duì)稱(chēng)加密需要發(fā)送方將密鑰安全地傳給接收方以便接收方解密,因此密鑰如何安全傳送又成了一個(gè)問(wèn)題

問(wèn)題

  如何保證密鑰的安全性?

1.2 非對(duì)稱(chēng)加密

  也稱(chēng)公鑰加密,這套密鑰算法包含配套的密鑰對(duì),分為加密密鑰和解密密鑰。加密密鑰時(shí)公開(kāi)的,又稱(chēng)為公鑰;解密密鑰時(shí)私有的,又稱(chēng)為私鑰。數(shù)據(jù)發(fā)送者使用公鑰加密數(shù)據(jù),數(shù)據(jù)接收者使用私鑰進(jìn)行數(shù)據(jù)解密

常見(jiàn)算法

  RSA

  1).B生成密鑰對(duì),將公鑰傳給A,私鑰自己保留。公鑰即使被其他人獲得也沒(méi)有關(guān)系。

  2).A用B傳過(guò)來(lái)的密鑰將要發(fā)送的明文數(shù)據(jù)加密,然后將密文發(fā)送給A。其他人即使獲得密文也無(wú)法解密,因?yàn)闆](méi)有配對(duì)的用來(lái)解密的私鑰。

  3).B接收到A傳送過(guò)來(lái)的密文,用自己保留的私鑰對(duì)密文解密,得到明文。

優(yōu)點(diǎn)

  解決了密鑰的安全性問(wèn)題。

缺點(diǎn)

  一是計(jì)算速度慢;

  二是無(wú)法保證公鑰的合法性,因?yàn)榻邮盏降墓€不能保證是B發(fā)送的,比如,攻擊者截獲B的消息,將公鑰替換。

  這里先留下一個(gè)問(wèn)題,后面敘述解決辦法:如何保證公鑰是合法的?

回到頂部

2.保證數(shù)據(jù)完整性

消息摘要

  消息摘要函數(shù)時(shí)一種用于判斷數(shù)據(jù)完整性的算法,也稱(chēng)為散列函數(shù)或哈希函數(shù),函數(shù)的返回值就散列值,散列值又稱(chēng)為消息摘要或者指紋。

  這種算法是不可逆的,即無(wú)法通過(guò)消息摘要反向推導(dǎo)出消息,因此又稱(chēng)為單向散列函數(shù)。

常見(jiàn)算法

  MD5 SHA

  當(dāng)我們使用某一軟件時(shí),下載完成后需要確認(rèn)是否是官方提供的完整版,是否被人篡改過(guò)。通常軟件提供方會(huì)提供軟件的散列值,用戶(hù)下載軟件之后,在本地使用相同的散列算法計(jì)算散列值,并與官方提供的散列值向?qū)Ρ?。如果相同,說(shuō)明軟件完整,未被修改過(guò)。

優(yōu)點(diǎn)

  可以保證數(shù)據(jù)的完整性

缺點(diǎn)

  無(wú)法保證數(shù)據(jù)的真實(shí)性,即不能確定數(shù)據(jù)和散列值是來(lái)自發(fā)送方的,因?yàn)楣粽咄耆梢詫?shù)據(jù)和散列值一起替換。

問(wèn)題

  如何驗(yàn)證發(fā)送的數(shù)據(jù)確實(shí)來(lái)自于發(fā)送方?

回到頂部

3.保證數(shù)據(jù)的真實(shí)性

  要保證數(shù)據(jù)來(lái)自發(fā)送方,即確認(rèn)消息來(lái)自正確的發(fā)送者,稱(chēng)為消息認(rèn)證。

3.1 消息認(rèn)證碼

  消息認(rèn)證碼(Message Authentication Code,簡(jiǎn)稱(chēng)MAC)是一種可以確認(rèn)消息完整性并進(jìn)行認(rèn)證的技術(shù)。消息認(rèn)證碼可以簡(jiǎn)單理解為一種與密鑰相關(guān)的單向散列函數(shù)。

  1).A把消息發(fā)送給B前,先把共享密鑰發(fā)送給B。

  2).A把要發(fā)送的消息使用共享密鑰計(jì)算出MAC值,然后將消息和MAC發(fā)送給B。

  3).B接收到消息和MAC值后,使用共享密鑰計(jì)算出MAC值,與接收到的MAC值對(duì)比。

  4).如果MAC值相同,說(shuō)明接收到的消息是完整的,而且是A發(fā)送的。

  這里還是存在對(duì)稱(chēng)加密的密鑰配送問(wèn)題,可以使用公鑰加密方式解決。

優(yōu)點(diǎn)

  可以保證數(shù)據(jù)的完整性和真實(shí)性。

缺點(diǎn)

  接收方雖然可以確定消息的完整性和真實(shí)性,解決篡改和偽造消息的問(wèn)題,但不能防止A否認(rèn)發(fā)送過(guò)消息。

  加入A給B發(fā)送了消息,B接收到之后,A否認(rèn)自己發(fā)送過(guò)消息給B,并抵賴(lài)說(shuō),“雖然我和B都能計(jì)算處正確的MAC值,但是可能是B的密鑰被攻擊者盜取了,攻擊者給B發(fā)的消息。”

問(wèn)題

  如何讓發(fā)送方無(wú)法否認(rèn)發(fā)送過(guò)數(shù)據(jù)?

3.2 數(shù)字簽名

  數(shù)字簽名(Digital Signature)可以解決發(fā)送方否認(rèn)發(fā)送過(guò)消息的問(wèn)題

  數(shù)字簽名的重點(diǎn)在于發(fā)送方和接收方使用不同的密鑰來(lái)進(jìn)行驗(yàn)證,并且保證發(fā)送方密鑰的唯一性,將公鑰算法反過(guò)來(lái)使用可以達(dá)到此目的:A發(fā)送消息前,使用私鑰對(duì)消息進(jìn)行簽名,B接收到消息后,使用配對(duì)的公鑰對(duì)簽名進(jìn)行驗(yàn)證;如果驗(yàn)證通過(guò),說(shuō)明消息就是A發(fā)送的,因?yàn)橹挥蠥采用配對(duì)的私鑰;第三方機(jī)構(gòu)也是依據(jù)此來(lái)進(jìn)行裁決,保證公正性。

  1).A把消息用哈希函數(shù)處理生成消息摘要,并報(bào)摘要用私鑰進(jìn)行加密生成簽名,把簽名和消息一起發(fā)送給B。

  2). 數(shù)據(jù)經(jīng)過(guò)網(wǎng)絡(luò)傳送給B,當(dāng)然,為了安全,可以用上述的加密方法對(duì)數(shù)據(jù)進(jìn)行加密。

  3). B接收到數(shù)據(jù)后,提取出消息和簽名進(jìn)行驗(yàn)簽。采用相同的哈希函數(shù)生成消息摘要,將其與接收的簽名用配對(duì)的公鑰解密的結(jié)果對(duì)比,如果相同,說(shuō)明簽名驗(yàn)證成功。消息是A發(fā)送的,如果驗(yàn)證失敗,說(shuō)明消息不是A發(fā)送的。

問(wèn)題

  依然是,如何確保公鑰的合法性

回到頂部

4.公鑰證書(shū)

  我們看到,上面的公鑰加密,數(shù)字簽名的問(wèn)題都在于如何保證公鑰的合法性。

  解決辦法是將公鑰交給一個(gè)第三方權(quán)威機(jī)構(gòu)——認(rèn)證機(jī)構(gòu)(Certification Authority)CA來(lái)管理。接收方將自己的公鑰注冊(cè)到CA,由CA提供數(shù)字簽名生成公鑰證書(shū)(Public-Key Certificate)PKC,簡(jiǎn)稱(chēng)證書(shū)。證書(shū)中有CA的簽名,接收方可以通過(guò)驗(yàn)簽來(lái)驗(yàn)證公鑰的合法性

  1).接收方B生成密鑰對(duì),私鑰自己保存,將公鑰注冊(cè)到CA。

  2).CA通過(guò)一系列嚴(yán)格的檢查確認(rèn)公鑰是B本人的。

  3).CA生成自己的密鑰對(duì),并用私鑰對(duì)B的公鑰進(jìn)行數(shù)字簽名,生成數(shù)字證書(shū)。證書(shū)中包含B的公鑰和CA的簽名。這里進(jìn)行簽名并不是要保證B的公鑰的安全性,而是要確定公鑰確實(shí)屬于B。

  4).發(fā)送方A從CA獲取B的證書(shū)。

  5).A使用CA的公鑰對(duì)從CA獲取的證書(shū)進(jìn)行驗(yàn)簽,如果成功就可以確保證書(shū)中的公鑰確實(shí)來(lái)自B。

  6).A使用證書(shū)中B的公鑰對(duì)消息進(jìn)行加密,然后發(fā)送給B。

  7).B接收到密文后,用自己的配對(duì)的私鑰進(jìn)行解密,獲得消息明文。

回到頂部

5.算法詳解索引

   1.DES算法詳解(已完成)

  2.RSA算法詳解

  3.SHA算法詳解

  4.AES算法詳解

  5.待定

 

標(biāo)簽: 加密解密對(duì)稱(chēng)加密非對(duì)稱(chēng)加密消息摘要消息認(rèn)證MAC數(shù)字簽名公鑰證書(shū)

好文要頂 關(guān)注我 收藏該文 平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn) 平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)