如何綜合運用對稱加密技術、非對稱加密技術(公鑰密碼體制)和Hash函數 保證信息的保密性、完整性、可用性和不可否認性?


一、幾個問題

在提出問題之前,先創建一個使用場景,發送方(甲方)要給接收方(乙方)發送投標書。大家知道,投標書都包括發送方的標的,這個標的是不能被競標者知曉,更不能被競標者修改的。在傳輸的投標書時,提出了以下三個問題:

1、怎么保證發送方(甲方)發送的投標書不泄密給攻擊者呢

2、在傳輸過程中,攻擊者雖然解密不了密文,但是對密文進行編輯,比如截掉了一段信息,加上了一段亂碼,怎么辦?在這個場景中,舉一個極端的例子,修改了標的,怎么辦

3、接收者(乙方)接到了投標書,怎么確定是甲方發出的呢?就是說甲方抵賴,說沒有發送過這樣的一份標書怎么辦?

帶着這三個問題,來學習一下對稱加密技術、非對稱加密機制、Hash函數等密碼學基礎理論。

 

一、基本概念

保密性:防止信息泄露給未授權個人、實體,信息僅被合法用戶使用的特性。

完整性:是指所有資源只能由授權方或以授權的方式修改,即信息未經授權不能進行改變的特性。

可用性:是指所有資源在適當的時候可以由授權方訪問,即信息可被授權實體訪問並按需求使用的特性

不可否認性:也就是不可抵賴性,確認發送方是發送方本人的特性。

 

信道的傳輸 模型如下圖一。

 

 

二、第一個問題:怎么保證保密性呢?

很顯然,加密!

對於較大文件,需要使用對稱加密算法。

 

在對稱加密算法中,數據發送方將明文(原始數據)和加密密鑰一起經過特殊加密算法處理使其變成復雜的加密密文,然后在信道中傳輸。

接收方收到密文后,需要使用同一個密鑰及加密算法的逆算法對密文進行解密,得到明文。

在對稱加密算法中,使用的密鑰只有一個,收發雙方使用同一個密鑰對數據進行加密和解密,這就要求解密方事先知道加密密鑰。

如果攻擊者截獲了在信道中傳輸的信息了,由於攻擊者沒有密鑰,沒辦法得到明文,也就是標書,這就保證了數據的保密性。

對稱加密算法的優點:對稱密鑰保密,算法公開、計算量小、加密速度快、加密效率高。

對稱加密算法的缺點:怎樣安全無誤地將對稱密鑰傳輸給接收方?這是對稱加密算法的天生的缺點,胎里帶來的。

 

 

圖二:對稱加密技術的原理圖

 

2.2對稱加密的算法

對稱加密的算法包括兩種,一種是分組加密,包括DES、AES、SM4算法等;

另一種是序列密碼,包括RSA密碼、ElGamal密碼、SM2橢圓曲線公鑰加密算法等。

2.3對稱加密的問題

對稱加密算法最大的問題,就是怎樣安全無誤地將密鑰傳輸給接收方?


 

 

三、第二個問題:怎樣傳輸對稱加密算法的密鑰K呢?

實際上,圖一中安全信道是不存在的,如果有安全信道,那么就不需要加密了,直接把明文丟進安全信道內,一切都解決了。這樣的安全信道是不存在的。那么怎樣傳輸對稱加密技術中的密鑰呢?在此我們引入了另一項加密技術,公鑰密碼體制。公鑰是指公開的密鑰。

在對稱加密技術中,發送方和接收方公用一套密鑰,而公鑰密碼技術中,發送方和接收方分別有公鑰和私鑰,公鑰公開,私鑰只有自己知道,並且公鑰和私鑰是成對的,可以並且只能相互加解密。原理見圖三。

 

圖三 非對稱加密技術

 

 

  公鑰密碼算法,由於加密、解密的密鑰不同,也叫作非對稱加密算法。

  在公鑰密碼體制中,發送方和接收方都有兩套密碼,一套公鑰,一套私鑰。也就是說發送方有自己的公鑰、私鑰和接收方的公鑰。接收方有自己的公鑰、私鑰和發送方的公鑰。公鑰和私鑰互為加解密密鑰。也就是說用公鑰加密可以用同一方的私鑰解密;用私鑰加密,可以用同一方的公鑰解密。

  對稱加密算法簡單,加解密密鑰相同且密鑰較短,並且需要傳輸密鑰,因此安全性較弱,加密耗時短,常用來加密大數據。

  非對稱加密算法,算法復雜,密鑰相對於對稱加密算法比較長,因此安全性強,加密耗時時間也長,適合加密少量數據。那么可以用對稱加密技術加密真正的明文(通常是大數據),而后用非對稱加密技術加密對稱加密的密鑰(通常數據量較少),這樣綜合利用兩種加密技術,配合堪稱完美。這就是數字信封技術。相當於將對稱加密的密鑰放在一個安全的信封內,在信道中傳輸。

圖4 數字信封技術

 

 


 

 

 第三個問題:怎么保證不可否認性呢?怎么樣保證是甲方發送的標書,如果有人冒充甲方用同樣的加密算法加密了一份假的標書,發送給乙方,乙方誤認為是甲方發送的,甲方怎么證明不是自己發送的呢?或者甲方發給了乙方一份標書,后續又否認自己發過這份標書,這樣的情況怎樣用技術避免呢?

 

在現實場景中,可以用手工簽名保證不可否認,同樣在網絡場景中,可以用數字簽名來確保不可否認性。

在公鑰密碼體制中,發送方和接收方都有公鑰和私鑰,公鑰是公開的,私鑰只有自己知道。如果用發送方的私鑰加密,用公鑰解密,就可以確保是發送方本人發送的,不是偽造的。這就是數字簽名技術,也是公鑰密碼體制的另一個應用:認證。原理見圖5。

 

 

圖5 數字簽名技術

 

提出一個問題:公鑰密碼體制加密算法復雜,加密時間較長,不適合加密大數據,那么用發送方的私鑰加密標書明文需要很長時間,怎么樣解決這樣的問題呢?

 

 


第四個問題:怎么樣知道標書的密文在傳輸過程中沒有被攻擊者篡改呢?

攻擊者截獲了密文,由於不知道密鑰,沒辦法解密,看不到標書的明文;但是可以修改密文,添加一段亂碼或者截掉一段密文,尤其截掉的密文是標的時。那么怎樣知道在傳輸的過程中,信息有沒有被修改過呢?在這里再次引入一個函數,散列函數,也就是常說的Hash函數。Hash函數可以將任意長度的輸入,映射成固定長度的輸出h,輸出h稱作報文摘要,輸出的位數要比輸入的位數小很多。

Hash函數的定義:Hash函數將任意長度的輸入M映射成固定長度的輸出hash碼h。

定義中有兩個點:①任意長度的輸入②固定長度的輸出。

為什么Hash函數可以知道密文在傳輸過程中沒有被篡改呢?這就牽扯到Hash函數的兩個特性

 

①無論是多長的輸入,改變輸入的任意一位或者多位,都會導致輸出的改變。也就是說是不存在x、y,x不等於y,但是x、y的hash值是一樣的。在傳輸的過程中,如果改變了密文的任一位,那么解密出來的明文的Hash值和原來的Hash值是不一樣的,接收方就可以知道密文在信道中被篡改了。

②Hash函數的單向性。也就是由Hash值不能得到相應的報文。如果Hash函數不具有單向性,攻擊者截獲了明文的Hash值之后,就可以得到明文了,Hash函數也就失去了保證報文完整性的基礎。

 

 

 

 

使用Hash函數保證數據的完整性、可用性原理件圖三。

 

步驟:

①對標書明文,用對稱密鑰K進行對稱加密,形成密文

②對標書明文求Hash值,步驟①和步驟②可以互換

③將標書的Hash值拼接在密文后面,形成新的密文,在信道上傳輸

④接收方收到拼接成的密文后,先將密文和Hash值分開,用對稱密鑰K進行解密,得到標書的明文

⑤對步驟④中得到的明文求Hash值

⑥將步驟⑤中的Hash值和步驟④中的原始Hash值進行比較,


 

 

綜上所述,我們運用了對稱加密算法、非對稱加密算法(加密、認證兩個功能)、數字信封技術、Hash函數等技術保證了標書在傳輸過程中的保密性、完整性、不可否認性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM