加密密鑰
保持加密應(yīng)用程序的安全依賴于對(duì)稱密鑰和私鑰,這些密鑰和私鑰始終保密。用于保密的方法也受到保護(hù)。
非對(duì)稱密鑰和對(duì)稱密鑰是現(xiàn)代密碼學(xué)中使用的兩種基本算法類型。非對(duì)稱密鑰算法使用私鑰和公鑰的組合,而對(duì)稱算法僅使用私鑰,通常稱為密鑰。表 1 提供了每種算法方法的主要特征的快照。
安全服務(wù)和功能實(shí)現(xiàn) | 算法方法 | |
對(duì)稱密鑰 | 非對(duì)稱密鑰 | |
保密性 | 是的 | 是的 |
識(shí)別和 認(rèn)證 |
是的 | 是的 |
正直 | 是的 | 是的 |
不可否認(rèn)性 | 是,結(jié)合公鑰/私鑰算法 | 是的 |
加密 | 是,快速 | 是,慢 |
解密 | 是,快速 | 是,慢 |
整體安全性 | 高 | 高 |
密鑰管理 | 需要在發(fā)送方和接收方交換密鑰并保護(hù)密鑰 | 需要保護(hù)發(fā)件人和收件人端的每個(gè)私鑰 |
算法復(fù)雜性 | 易于理解 | 可能難以理解 |
密鑰大小 | 128 位、192 位或 256 位或更長,但不需要像非對(duì)稱密鑰一樣長(取決于密鑰的保密性) | 256 位、1024 位、2048 位、3072 位或更長。取決于棘手性(需要解決的時(shí)間和資源量)。 |
系統(tǒng)漏洞 |
密鑰管理、 生成和使用不當(dāng) |
實(shí)施不當(dāng) |
攻擊方法 | 蠻力,線性/差分密碼分析 | 蠻力、線性/差分密碼分析和甲骨文 |
讓我們來看看如何使用這兩種類型的算法來實(shí)現(xiàn)每個(gè)加密目標(biāo)。
使用對(duì)稱密鑰算法的機(jī)密性
保密的主要目標(biāo)是使信息遠(yuǎn)離所有不知情的人。在對(duì)稱密鑰加密系統(tǒng)中,這非常簡單,是通過加密發(fā)送方和接收方之間交換的數(shù)據(jù)來實(shí)現(xiàn)的。發(fā)送方和接收方都可以訪問用于加密和解密交換消息的同一密鑰,如圖 1 所示。
圖1.對(duì)稱密鑰算法有助于使用私鑰或密鑰實(shí)現(xiàn)機(jī)密性。
只要密鑰是安全的,并且只有發(fā)送方和接收方可以訪問加密/解密密鑰,即使傳輸過程中被截獲,其他人也無法接收傳輸?shù)南ⅰR虼耍⒈3帧皺C(jī)密”。
使用非對(duì)稱密鑰算法的機(jī)密性
在非對(duì)稱密鑰系統(tǒng)中,接收者可以自由分發(fā)她/他的公鑰。發(fā)送方獲取公鑰并驗(yàn)證其真實(shí)性。完成此操作需要幾個(gè)步驟,如圖 2 所示。為了簡單起見,讓我們假設(shè)發(fā)件人可以訪問收件人的已驗(yàn)證公鑰。然后,發(fā)件人使用該公鑰加密郵件并將其發(fā)送給收件人。
圖2.非對(duì)稱密鑰算法有助于通過使用公鑰和私鑰來實(shí)現(xiàn)機(jī)密性。
收件人的公鑰在數(shù)學(xué)上與收件人的私鑰相關(guān)。發(fā)件人和其他任何人都無法訪問收件人的私鑰。收件人收到消息后,私鑰將用于解密消息。收件人的私鑰是唯一可用于解密使用相關(guān)公鑰加密的消息的私鑰。由于私鑰僅駐留在收件人手中,因此其他人或組織無法解密已發(fā)送的郵件。因此,消息保持“機(jī)密”。
使用對(duì)稱密鑰算法進(jìn)行識(shí)別和身份驗(yàn)證
識(shí)別和身份驗(yàn)證的目標(biāo)是首先識(shí)別對(duì)象或用戶,然后對(duì)它們進(jìn)行身份驗(yàn)證,以便我們知道我們正在與我們真正想要與之通信的人進(jìn)行通信。
如何使用對(duì)稱密鑰方案實(shí)現(xiàn)這一點(diǎn)?圖 3 顯示了對(duì)稱密鑰識(shí)別和身份驗(yàn)證過程的簡單示例。查看步驟 1 到 6 以更好地理解。步驟 4 使用稱為“摘要”的概念。摘要或哈希是在大型數(shù)據(jù)集上計(jì)算的固定長度值。
圖3.此圖顯示了對(duì)稱密鑰標(biāo)識(shí)和身份驗(yàn)證過程的簡單示例。
為什么我們需要“隨機(jī)數(shù)”?
冒名頂替者可以擁有收件人傳輸?shù)淖詈笠粋€(gè)摘要,然后使用該摘要發(fā)出“驗(yàn)證我”。這些類型的攻擊稱為“重放攻擊”,即重新發(fā)送以前使用的摘要。使用“nonce”或一次性隨機(jī)數(shù)進(jìn)行身份驗(yàn)證可防止此類攻擊。在這種情況下,身份驗(yàn)證將失敗,因?yàn)閷?duì)于每個(gè)身份驗(yàn)證,發(fā)送方都需要一個(gè)帶有全新隨機(jī)數(shù)的新摘要。這些數(shù)字通常使用批準(zhǔn)的隨機(jī)數(shù)生成器生成。
現(xiàn)在,讓我們研究一個(gè)使用 SHA3-256 算法進(jìn)行標(biāo)識(shí)和身份驗(yàn)證的真實(shí)示例。
使用 SHA-3 算法進(jìn)行識(shí)別和身份驗(yàn)證
圖 4 顯示了對(duì)稱密鑰標(biāo)識(shí)和身份驗(yàn)證過程的更完整示例。這使用 SHA-3 對(duì)稱密鑰算法,該算法是安全哈希算法 (SHA) 系列中的最新算法。Maxim Integred是首家在量產(chǎn)中采用SHA3-256安全認(rèn)證器件的公司。查看圖中的步驟 1 到 6,以更好地了解該過程。圖 4 中的“隨機(jī)數(shù)”基本上是防止重放攻擊所需的“隨機(jī)數(shù)”,如前面一節(jié)中的簡單示例中所述。
圖4.此圖顯示了使用 SHA-3 的對(duì)稱密鑰算法的詳細(xì)示例。
使用非對(duì)稱密鑰算法進(jìn)行識(shí)別和身份驗(yàn)證
如前所述,識(shí)別和身份驗(yàn)證的目標(biāo)是首先識(shí)別對(duì)象或用戶,然后對(duì)它們進(jìn)行身份驗(yàn)證,以便我們知道我們正在與我們真正想要與之通信的人進(jìn)行通信。
如何使用非對(duì)稱密鑰方案實(shí)現(xiàn)這一點(diǎn)?圖 5 顯示了對(duì)稱密鑰識(shí)別和身份驗(yàn)證過程的簡單示例。查看圖中的步驟 1 到 6 以了解該過程。
圖5.此圖顯示了使用非對(duì)稱密鑰算法進(jìn)行標(biāo)識(shí)和身份驗(yàn)證的簡單示例。
為什么我們需要一個(gè)隨機(jī)數(shù)?
冒名頂替者可以獲得收件人傳輸?shù)淖詈笠粋€(gè)簽名,然后使用該簽名發(fā)出“驗(yàn)證我”。這些類型的攻擊稱為“重放攻擊”,即重新發(fā)送以前使用的特征碼。使用隨機(jī)數(shù)或一次性隨機(jī)數(shù)進(jìn)行身份驗(yàn)證可防止此類攻擊。在這種情況下,身份驗(yàn)證將失敗,因?yàn)榘l(fā)件人需要一個(gè)新的簽名,每個(gè)身份驗(yàn)證都有一個(gè)全新的隨機(jī)數(shù)。這些數(shù)字通常使用批準(zhǔn)的隨機(jī)數(shù)生成器生成。
現(xiàn)在,讓我們研究一個(gè)使用橢圓曲線數(shù)字簽名算法 (ECDSA) 算法進(jìn)行識(shí)別和身份驗(yàn)證的真實(shí)示例。
使用 ECDSA 算法進(jìn)行識(shí)別和身份驗(yàn)證
圖 6 顯示了使用 ECDSA 非對(duì)稱密鑰算法的非對(duì)稱密鑰識(shí)別和身份驗(yàn)證過程的更完整示例。圖中的步驟 1 到 6 可以幫助您更好地了解該過程。
圖6.使用 ECDSA 非對(duì)稱密鑰算法進(jìn)行標(biāo)識(shí)和身份驗(yàn)證的詳細(xì)示例。
盡管此方法完成設(shè)備身份驗(yàn)證,但它不涵蓋完整的系統(tǒng)身份驗(yàn)證過程。這包括驗(yàn)證收件人是否是系統(tǒng)的一部分,以及所需的設(shè)備數(shù)字證書驗(yàn)證。
比較加密算法
圖 7 顯示了對(duì)稱和非對(duì)稱密鑰算法的密鑰使用情況的并排比較。在進(jìn)入下一個(gè)主題之前,我們需要了解以下兩個(gè)概念之間的區(qū)別:
安全哈希
HMAC(散列消息身份驗(yàn)證代碼)
圖7.這是對(duì)稱密鑰和非對(duì)稱密鑰加密算法的比較。
圖 8 說明了 HMAC 和安全哈希之間的差異。本質(zhì)上,安全哈希使用哈希算法(如 SHA-3)來生成消息的固定長度哈希,而不考慮消息長度。HMAC 與此類似,但使用密鑰作為哈希引擎的附加輸入。它還生成固定長度的哈希,而不考慮輸入消息長度。
圖8.HMAC 和安全哈希之間存在相似之處但主要區(qū)別。
使用對(duì)稱密鑰算法保持完整性
保持消息完整性的目標(biāo)是確保收到的任何消息或連接的任何新設(shè)備都不會(huì)攜帶不需要的代碼或信息。讓我們看一個(gè)如何使用對(duì)稱密鑰算法(如 SHA-3)實(shí)現(xiàn)此目的的示例。稍后,我們將回顧這些算法如何工作的細(xì)節(jié)。
在圖 9 中,發(fā)送方使用特定鍵計(jì)算消息的摘要。由于這是一個(gè)對(duì)稱密鑰方案,因此此密鑰在發(fā)送方和接收方之間共享。使用密鑰生成的摘要或哈希稱為 HMAC(基于哈希的消息身份驗(yàn)證代碼)。
圖9.SHA-3 對(duì)稱密鑰算法可保持完整性。
這是通過將消息和密鑰提供給 SHA-3 引擎生成的。然后將生成的 HMAC 和消息發(fā)送給收件人。然后,接收者使用她擁有的密鑰生成自己的 HMAC。然后比較兩個(gè) HMAC,如果它們匹配,則消息未被篡改。在這種情況下,有人可以截獲 HMAC 和消息,然后更改消息并生成新的 HMAC 并將其發(fā)送給收件人。但是,這將不起作用,因?yàn)閿r截器將沒有收件人的密鑰,并且HMAC將不匹配。
使用非對(duì)稱密鑰算法保持完整性
保持消息完整性的目標(biāo)是確保收到的任何消息或連接的任何新設(shè)備都不會(huì)攜帶不需要的代碼或信息。讓我們看一個(gè)如何使用非對(duì)稱密鑰算法(如 ECDSA(橢圓曲線數(shù)字簽名算法)實(shí)現(xiàn)此目的的示例。
這背后的基本思想是,發(fā)件人使用數(shù)字簽名對(duì)消息進(jìn)行簽名,收件人驗(yàn)證簽名,以確保收到的消息的完整性。
在圖 10 中,發(fā)送方通過將消息饋送到 SHA-2 哈希引擎來計(jì)算消息的摘要。由于這是一個(gè)非對(duì)稱密鑰方案,因此發(fā)送方和接收方之間不共享此密鑰。發(fā)送方有一個(gè)永遠(yuǎn)不會(huì)共享的私鑰,而接收方有一個(gè)可以與許多人共享的公鑰,反之亦然,與對(duì)稱密鑰算法不同,生成的摘要/哈希不使用密鑰。
圖 10.ECDSA 非對(duì)稱密鑰算法有助于保持消息完整性。
然后將生成的摘要與發(fā)送方的私鑰一起饋送到 ECDSA 引擎,以生成消息的數(shù)字簽名。此簽名與郵件一起發(fā)送給收件人。這樣就完成了已發(fā)送郵件的簽名過程。
現(xiàn)在收件人已收到發(fā)件人的郵件和數(shù)字簽名,她可以開始驗(yàn)證過程。此過程包括兩個(gè)不同的步驟:
步驟1:收件人從收到的消息中計(jì)算消息摘要。
第 2 步:這個(gè)新計(jì)算的摘要、從發(fā)件人收到的數(shù)字簽名以及發(fā)件人的公鑰隨后被輸入 ECDSA 引擎進(jìn)行驗(yàn)證。
在驗(yàn)證過程中,ECDSA 引擎會(huì)產(chǎn)生“是”或“否”結(jié)果。如果結(jié)果為“是”,則保留了消息完整性。如果結(jié)果為“否”,則消息完整性已受到損害。
使用非對(duì)稱密鑰算法實(shí)現(xiàn)不可否認(rèn)性
由發(fā)件人的數(shù)字簽名簽名的郵件可用于證明郵件是由發(fā)件人發(fā)送的,并且郵件未被更改。但是,數(shù)字簽名無法證明發(fā)件人的身份。身份證明是使用數(shù)字證書實(shí)現(xiàn)的。圖 11 到 14 顯示了實(shí)現(xiàn)完整公鑰系統(tǒng)所需的完整步驟,在該系統(tǒng)中,交換的消息不能被任何一方否認(rèn)。
圖 11.發(fā)件人和收件人交換受信任的第三方簽名的數(shù)字證書。
圖 12.發(fā)件人和收件人驗(yàn)證受信任的第三方簽名數(shù)字證書的真實(shí)性。
圖 13.發(fā)件人和收件人從數(shù)字證書中提取彼此的公鑰。
圖 14.發(fā)件人和收件人交換無法否認(rèn)的消息。
主要思想是發(fā)送者和接收者都需要相互證明他們的身份,并且他們各自的公鑰需要由受信任的第三方證明真實(shí)。
為什么使用數(shù)字證書如此重要?沒有它,假裝是發(fā)件人的人(即冒名頂替者)可以發(fā)送一條用收件人的公鑰加密的消息以及用冒名頂替者的私鑰簽名的數(shù)字簽名。然后,冒名頂替者將向收件人發(fā)送他/她虛構(gòu)的公鑰。然后,收件人將使用該公鑰來驗(yàn)證數(shù)字簽名,并且所有內(nèi)容都將得到驗(yàn)證。但是來自冒名頂替者的消息可能包含收件人永遠(yuǎn)不會(huì)懷疑的惡意信息。這是通過使用數(shù)字證書可以避免的問題,該證書驗(yàn)證收到的公鑰確實(shí)屬于發(fā)件人而不是冒名頂替者。
審核編輯:郭婷
-
密鑰
+關(guān)注
關(guān)注
1文章
138瀏覽量
19754 -
引擎
+關(guān)注
關(guān)注
1文章
361瀏覽量
22547 -
SHA
+關(guān)注
關(guān)注
0文章
16瀏覽量
8446
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論