AES GCM加密演算法

2021-09-29 10:50:09 字數 1840 閱讀 4324

aes是一種對稱加密演算法,它的相關概念在此不贅述。

gcm ( galois/counter mode) 指的是該對稱加密採用counter模式,並帶有gmac訊息認證碼。

在詳細介紹aes-gcm之前,我們先了解一些相關概念。

下文**現的符號:

ek使用秘鑰k對輸入做對稱加密運算

xor異或運算

mh將輸入與秘鑰h在有限域gf(2^128)上做乘法

當我們有一段明文,需要對其進行aes加密時,需要對明文進行分組,分組長度可為128,256,或512bits。採用ecb模式的分組密碼演算法加密過程如下圖:

由上圖可以看出,明文中重複的排列會反映在密文中。

並且,當密文被篡改時,解密後對應的明文分組也會出錯,且解密者察覺不到密文被篡改了。也就是說,ecb不能提供對密文的完整性校驗。

因此,在任何情況下都不推薦使用ecb模式。

在計數器模式下,我們不再對密文進行加密,而是對乙個逐次累加的計數器進行加密,用加密後的位元序列與明文分組進行 xor得到密文。過程如下圖:

計數器模式下,每次與明文分組進行xor的位元序列是不同的,因此,計數器模式解決了ecb模式中,相同的明文會得到相同的密文的問題。cbc,cfb,ofb模式都能解決這個問題,但ctr的另兩個優點是:1)支援加解密平行計算,可事先進行加解密準備;2)錯誤密文中的對應位元只會影響明文中的對應位元等優點。

但ctr仍然不能提供密文訊息完整性校驗的功能。

有的人可能會想到,如果將密文的hash值隨密文一起傳送,密文接收者對收到的密文計算hash值,與收到的hash值進行比對,這樣是否就能校驗訊息的完整性呢?

再仔細想想,就能發現這其中的漏洞。當篡改者截獲原始的密文訊息時,先篡改密文,而後計算篡改後的密文hash, 替換掉原始訊息中的密文hash。這樣,訊息接收者仍然沒有辦法發現對源密文的篡改。可見,使用單向雜湊函式計算hash值仍然不能解決訊息完整性校驗的問題。

密文的收發雙發需要提前共享乙個秘鑰。密文傳送者將密文的mac值隨密文一起傳送,密文接收者通過共享秘鑰計算收到密文的mac值,這樣就可以對收到的密文做完整性校驗。當篡改者篡改密文後,沒有共享秘鑰,就無法計算出篡改後的密文的mac值。

如果生成密文的加密模式是ctr,或者是其他有初始iv的加密模式,別忘了將初始的計時器或初始向量的值作為附加訊息與密文一起計算mac。

對應到上圖中的訊息認證碼,gmac就是利用伽羅華域(galois field,gf,有限域)乘法運算來計算訊息的mac值。假設秘鑰長度為128bits, 當密文大於128bits時,需要將密文按128bits進行分組。應用流程如下圖:

gcm中的g就是指gmac,c就是指ctr。

gcm可以提供對訊息的加密和完整性校驗,另外,它還可以提供附加訊息的完整性校驗。在實際應用場景中,有些資訊是我們不需要保密,但資訊的接收者需要確認它的真實性的,例如源ip,源埠,目的ip,iv,等等。因此,我們可以將這一部分作為附加訊息加入到mac值的計算當中。下圖的ek表示用對稱秘鑰k對輸入做aes運算。最後,密文接收者會收到密文、iv(計數器ctr的初始值)、mac值。

什麼是 AES GCM加密演算法

原文 aes是一種對稱加密演算法,它的相關概念在此不贅述。gcm galois counter mode 指的是該對稱加密採用counter模式,並帶有gmac訊息認證碼。在詳細介紹aes gcm之前,我們先了解一些相關概念。下文中出現的符號 ek使用秘鑰k對輸入做對稱加密運算 xor異或運算 mh...

對稱加密演算法 DES加密演算法

一 對稱加密演算法 對稱加密也稱為常規加密 私鑰或單鑰加密。乙個對稱加密由5部分組成 明文 plaintext 這是原始資訊或資料,作為演算法的輸入。加密演算法 encryption algorithm 加密演算法對明文進行各種替換和轉換。金鑰 secret key 金鑰也是演算法的輸入。演算法進行...

gentry同態加密演算法 同態加密演算法

本文對同態加密演算法進行學習。參考文章同態加密演算法。定義同態加密演算法保證對聯合密文的解密結果等價於聯合明文。若存在同態加密演算法f,針對明文a和b,加密後分別得到a f a b f b 將其和a b 解密後得到a b,則同態加密演算法f被成為加法同態加密演算法。加法同態演算法的加密和解密分別用e...