數(shù)字證書之密碼技術(shù)

美名軟件MMSoftware
辛達(dá)
我們將簡單討論一下三種常見的密碼技術(shù):單項散列函數(shù)(One way hash function)、對稱密碼技術(shù)(Symmetric encryption)、公鑰密碼技術(shù)(Public key encryption),以及它們是怎么可以被用來滿足這些需求的。

密碼技術(shù)

我們將簡單討論一下三種常見的密碼技術(shù):單項散列函數(shù)(One way hash function)、對稱密碼技術(shù)(Symmetric encryption)、公鑰密碼技術(shù)(Public key encryption),以及它們是怎么可以被用來滿足這些需求的。

單向散列函數(shù)

單向散列函數(shù)是一種將任意長度的輸入數(shù)值轉(zhuǎn)換成另一個固定長度數(shù)值的數(shù)學(xué)函數(shù),通常大家把轉(zhuǎn)換后的數(shù)值叫哈希值。

1.jpg

圖1:單向散列函數(shù)

單向散列函數(shù)有兩個重要的特點:第一、整個過程是單向的,即無法從轉(zhuǎn)換后的數(shù)值(哈希值)反向推斷出原始的輸入數(shù)值;第二、輸入數(shù)值的任意微小變化,都會導(dǎo)致轉(zhuǎn)換出完全不同的哈希值。

看到這兩個特點,聰明的你是不是隱約覺得,單向散列函數(shù)可以用來檢測篡改呢?如果把輸入數(shù)值比作一個人,那么轉(zhuǎn)換后的哈希值就是這個人的指紋(finger print)。圖2展示了如何通過散列函數(shù)做完整性檢測。

2.jpg

圖2:完整性檢測

對稱密碼技術(shù)

對稱加密定義很簡單:用同樣的密鑰對信息進(jìn)行加密和解密。

如果你看過諜戰(zhàn)片就很容易理解對稱加密。兩個情報人員分別擁有一本相同書。情報發(fā)送人員會在書中找到原始情報中的每一個字,這樣就可以把情報中的每一個字轉(zhuǎn)換成頁碼、行數(shù)、行中第幾個字,例如1001015可以表示第100頁第10行的第15個字。這樣整份情報就被加密成只有數(shù)字的信息。

情報接收人員就會根據(jù)這些數(shù)字和那本書,將加密后的情報解密成原始情報。這就是典型的對稱加密,而兩個情報人員都擁有的那本相同的書就是密鑰。

對稱加密有兩個主要用途:信息加密和消息認(rèn)證碼。

對稱密碼技術(shù)-加密

當(dāng)用于加密時,發(fā)送方在發(fā)送之前用密鑰對明文信息進(jìn)行加密,然后發(fā)送給接收方。接收方接收到加密信息后,用相同的密鑰把加密信息解密成明文信息。

對稱密碼技術(shù)的加密用途能夠滿足保密性的需求。

3.jpg

圖3:對稱加密

對稱加密-消息認(rèn)證碼

消息認(rèn)證碼(MAC-Message Authentication Code)和單向散列函數(shù)相似,能將任意長度的輸入數(shù)值轉(zhuǎn)換成另一個固定長度數(shù)值,通常大家把轉(zhuǎn)換后的數(shù)值叫MAC值。同樣,對輸入的任意改動都會導(dǎo)致輸出完全不同的MAC值。

消息認(rèn)證碼與單向散列函數(shù)不同之處在于,消息認(rèn)證碼同時需要密鑰作為輸入。如圖2所示,原始信息和密鑰同時作為輸入,通過消息認(rèn)證碼轉(zhuǎn)換成固定長度的MAC值。

4.jpg

圖4:消息認(rèn)證碼

和單向散列函數(shù)一樣,消息認(rèn)證碼可以用來滿足完整性需求。同時由于消息認(rèn)證碼額外需要密鑰作為輸入,使得其同時具備身份驗證的能力。那消息認(rèn)證碼是怎么工作的呢?

如果圖5所示,消息發(fā)送方和接收方都持有相同的密鑰。消息發(fā)送方將需要發(fā)送的消息和密鑰作為輸入計算出MAC值,然后將消息和MAC值一起發(fā)送給消息接收方。

消息接收方將接收到的消息和持有的密鑰轉(zhuǎn)換成MAC值。如果這個MAC值和接受到MAC值相等,則說明消息來自于持有同樣密鑰的人(身份驗證),且在傳輸過程中沒有被篡改過(完整性)。

5.jpg

圖5:消息認(rèn)證碼的工作機(jī)制

對稱加密有加密、解密速度快的特點,因此比較適合滿足信息傳輸保密性需求。同時由于加密和解密采用相同密鑰的特點,導(dǎo)致密鑰分發(fā)變得困難,因為如果密鑰在分發(fā)過程中被復(fù)制,那么信息傳輸就不再安全。另外由于對稱加密會有兩人或多人擁有相同的密鑰,這導(dǎo)致其無法做到不可抵賴性,因為我們無法判斷信息或文檔來自于哪一個密鑰持有者。

優(yōu)點:

·加密、解密速度快

缺點:

·密鑰分發(fā)困難

·無法滿足不可抵賴性需求

公鑰密碼技術(shù)

公鑰加密技術(shù)其實是一種非對稱加密技術(shù),公鑰加密采用公鑰和私鑰密碼對來進(jìn)行加密和解密。公鑰加密的特點是:用公鑰加密的數(shù)據(jù)只能用對應(yīng)的私鑰解密,用私鑰加密的數(shù)據(jù)只能用對應(yīng)的公鑰解密。

那私鑰到底是什么呢?私鑰其實是一個極其大且很隨機(jī)的一個數(shù),它只能被所有者持有且需要妥善保管不能泄露,因此稱為私鑰。

公鑰也是一個很大的數(shù),公鑰是從私鑰推算出來的。推算是單向的,因此無法從公鑰推算出私鑰。公鑰可以公開的分發(fā)給其它人,因此稱為公鑰。

公鑰加密技術(shù)有兩個主要的用途:加密和數(shù)字簽名。

公鑰密碼技術(shù)-加密

當(dāng)用于加密時,信息發(fā)送者用公鑰對明文信息進(jìn)行加密,信息接受者用私鑰解密。由于用公鑰加密的信息只能用對應(yīng)的私鑰來解密,所以公鑰可以隨意公開的分發(fā)。公鑰即便落入壞人的手中,他們也無法用獲取的公鑰解密用公鑰加密的信息。這克服了對稱加密密鑰分發(fā)困難的問題。

公鑰加密技術(shù)的加密用途能夠滿足保密性的需求。

6.jpg

圖6:公鑰加密技術(shù)-加密

公鑰密碼技術(shù)-數(shù)字簽名

數(shù)字簽名可以用于驗證數(shù)字信息或文檔的真實性。這里的真實性包含幾層意思:第一、數(shù)字信息或文檔的來源是否可靠,比如它是不是來自于宣稱的那個人或組織(身份驗證和不可抵賴);第二、數(shù)字信息或文檔是否被篡改過(數(shù)據(jù)完整性)。

你會發(fā)現(xiàn)這和我們在數(shù)字證書-需求篇中討論的在合同上簽字是一樣的效果。數(shù)字簽名可以用來滿足完整性、身份驗證以及不可抵賴性的需求。

那數(shù)字簽名是怎么工作的呢?下圖7展示了數(shù)字簽名是如何工作的。從圖中可以看出數(shù)字簽名分簽名和驗證兩個階段。

簽名階段

首先通過單向散列函數(shù)將文檔內(nèi)容轉(zhuǎn)換成固定長度的哈希值;然后用私鑰對哈希值進(jìn)行加密,哈希值被加密后就變成了數(shù)字簽名;最后將數(shù)字簽名和文檔放在一起就是數(shù)字簽名過的文檔。先將文檔轉(zhuǎn)換成哈希值再加密,相當(dāng)于我們再簽合同的時候,在合同頁的側(cè)面也簽上名字。

驗證階段

首先用公鑰將文檔中的數(shù)字簽名解密成哈希值;然后將文檔內(nèi)容(除去數(shù)字簽名部分)通過單向散列函數(shù)轉(zhuǎn)換成哈希值;最后通過比較兩個哈希值是否相等,來判斷文檔是否被篡改過。

那么身份驗證和不可抵賴性在這里是怎么體現(xiàn)的呢?我們知道私鑰一定是和一個人或組織綁定的,而且用私鑰加密的信息,只能用對應(yīng)的公鑰來解密。在驗證階段我們需要用公鑰把數(shù)字簽名解密成哈希值,如果解密成功,那么說明信息或文檔一定來自于私鑰的持有者,這就做到了身份驗證和不可抵賴性。

7.jpg

圖7:公鑰加密技術(shù)-數(shù)字簽名

優(yōu)點

·滿足身份驗證需求

·滿足不可抵賴性需求

·滿足完整性需求

·公鑰可以公開的分發(fā)

缺點

·加密、解密速度慢

·存在公鑰認(rèn)證問題(中間人攻擊問題)

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論