1. 程式人生 > >密碼學_資料完整性演算法_訊息認證碼 2

密碼學_資料完整性演算法_訊息認證碼 2

訊息認證函式

任何訊息認證或數字簽名都有上下兩層,下層有產生認證符的函式,認證符是一個用來認證訊息的值,上層協議將該函式作為原語使接收方可以驗證訊息的真實性。

產生認證符的函式有哪些?

  • Hash函式:將任意的訊息對映為定長的Hash值的函式,以該Hash值作為認證符
  • 訊息加密:對整個訊息加密後的密文作為認證符
  • 訊息認證碼(MAC):它是訊息和祕鑰的函式,它產生定長的值,以該值作為認證符

 

訊息加密

訊息加密提供了一種認證手段,對稱密碼公鑰密碼體制中對訊息加密的方法是不同的,

  • 對稱加密
  • 公鑰加密

下面的我們先談談公鑰加密

直接使用公鑰加密可以提供保密性但不能提供認證。傳送發A使用接收方B提供的公鑰PUb對M加密,因為只有B有對應的私鑰PRb,所以只有B能對訊息解密,但是任何攻擊者可以假冒A用B的公鑰對訊息加密,僅僅用公鑰加密不能保證真實性。

若鑰提供認證,則A用自己的私鑰對訊息加密,而B用A的公鑰對接收的訊息解密

和對稱密碼情形的推理一樣,這提供了認證功能,因為只有A有PRa,能產生用PUa可解密的密文,所以該訊息一定來自於A,

同樣,對明文也必須有某種內部結構能使接收方區分是否是真實的明文還是隨機的位串

但大家有沒有發現問題?傳送方A用自己的私鑰對訊息加密(也就是簽名),接收方能用A的公鑰對接收到的訊息解密,同樣攻擊者也可以用公開的公鑰對其解密,所以這種方法不能提供保密性

如果既要提供保密性又要提供認證,那麼A可以先用自己的私鑰對M加密(也就是數字簽名),然後A用B的公鑰對上訴結果加密,這可保證保密性。但這種方法的缺點是,一次通訊中要執行4次而不是兩次複雜的公鑰演算法

 

Reference:《cryptography and networking security》6th ,William Stalling