GHASH函數(shù)在網(wǎng)絡加密算法GCM的應用
目前的數(shù)據(jù)加密技術(shù)根據(jù)加密密鑰類型可分私鑰加密(對稱加密)系統(tǒng)和公鑰加密(非對稱加密)系統(tǒng)。對稱加密算法是較傳統(tǒng)的加密體制,通信雙方在加/解密過程中使用他們共享的單一密鑰,鑒于其算法簡單和加密速度快的優(yōu)點,目前仍然是主流的密碼體制之一。對稱加密中的分組密碼具有速度快、易于標準化和便于軟硬件實現(xiàn)等特點,通常是信息與網(wǎng)絡安全中實現(xiàn)數(shù)據(jù)加密、數(shù)字簽名、認證及密鑰管理的核心體制,它在計算機通信和信息系統(tǒng)安全領(lǐng)域有著最廣泛的應用。其中GCM是一種任二元Galois域使用泛散列提供認證加密的分組加密算法。
一、GCM基本結(jié)構(gòu)
GCM是建立于128位比特分組密鑰的基礎(chǔ)t的。GCM是AES加密算法的運算模式。GCM利用計數(shù)器模式提供對保密的數(shù)據(jù)進行加密,同時利用定義在伽羅華域的泛散hash函數(shù)提供認證加密。特別的GCM也能提供對特殊數(shù)據(jù)進行鑒權(quán)加密。如果GCM的輸入被限制在不是對數(shù)據(jù)加密,則GCM輸出的數(shù)據(jù)叫做GMAC。GMAC足簡單的鑒權(quán)模式。
GCM的兩個操作叫做認證加密和認證解密。每一個操作都是高效并行處理的,同時大數(shù)據(jù)的輸出應運在硬件或者軟件實現(xiàn)上是可行的。
同時GCM還有一些很多特征:GCM是“實時”的,也就是需要保密的數(shù)據(jù)長度以及特別的和不需要保密的數(shù)據(jù)的長度都不用事先知道。相反,數(shù)據(jù)的長度在數(shù)據(jù)到達時就可以計算出來。GCM是一種有方向的分組加密,也就是反方向是不允許的。被保護的數(shù)據(jù)的鑒權(quán)能被獨立的從解密形式中識別出來。如果一些不需要的加密的數(shù)據(jù)或者特別的數(shù)據(jù)是同定的。那么對應的GCM鑒權(quán)體系可以被事先計算。
1、GCM基本元素
GCM中包括兩個基本的操作就是認證加密和認證解密,這兩個操作構(gòu)成了GCM全部的功能。這兩個操作具體步驟如下:
認證加密操作由以下等式定義:

使用函數(shù)生incr()成連續(xù)的計數(shù)器值,它把變量中最右邊的32比特視為右邊最少的有效位的非負整數(shù),增加以232為模的值。正常來講,incr(F||I)的值是P||(I+1mod232)。
解密操作如下:
只是散列與加密的步驟順序相反。正常情況下,它由以下方程定義:

解密操作計算出的標簽r和標簽r相比,與密文C相關(guān)聯(lián)。如果兩個標簽匹配(長度和值),那么返回密文。否則返回特殊符號FAIL。
2、 GCM的輸入與輸出
認證加密操作有4個輸入,每個輸入都是一個比特串:
密鑰K,它的長度匹配于根本的分組密碼。
初始化向量IV,它可有1到264之間的任意比特數(shù)。對于固定值的密鑰,每個IV值必須不同,但是不要求有相同的長度。96比特IV值處理起來更加有效,以至于該長度被推薦于在急需功效的狀態(tài)時使用。
明文P,它可以具有0--239-256之間的任意比特數(shù)。附加認證數(shù)據(jù)(AAD),用A表示。數(shù)據(jù)可被認證,但不能被加密,它可以具有0-264之間的任意比特數(shù)。
附加認證數(shù)據(jù)(AAD),用A表示。數(shù)據(jù)可被認證,但不能被加密,它可以具有0-264之間的任意比特數(shù)。
認證解密操作有四個輸入,每個輸入部是一個比特串:
密文C,它的長度與明文P的長度相同。
認證標簽T,它的長度可以是64至128之間的任何值。標簽的長度表示為t,基于該部分提供適當?shù)闹颠M行指導。
明文P,它可以具有o~239-256之間的任意比特效。
FAIL,無論何時,只要輸入不是通過具有相同密鑰的加密操作生成的,認證解密操作都會有很高的概率返回FAIL符號。
二、 Ghash函數(shù)在GCM加密算法中的作用
GCM加密算法實現(xiàn)的關(guān)鍵在于AES算法的設(shè)計實現(xiàn)和GHASH函數(shù)的實現(xiàn)。因此Gbash是GCM加密算法最重要的一部分。值得注意的足GCM算法的GHASH函數(shù)基于GF(2128)域,由圖1可見GCM硬件實現(xiàn)中Ghashi是其核心的模塊。

GCM加密中的數(shù)據(jù)關(guān)系。因為流水線式結(jié)構(gòu)的冷啟動,對于重復式和流水線式AES實現(xiàn)都需要10個周期對用戶密鑰K計算Ho通常在給定的安全會話中,單個密鑰用于全部信息包的處理。密鑰由初始會話決定。因此密鑰和在信息包傳送前就已準備好。當接收到代表附加認證數(shù)據(jù)(A)的頭文件時,GCM開始計算臨時hash值。需要m個周期柬生成墨。然后hash計算將停止11+r個周期,直到生成第一個密文。根據(jù)IEEE和IETF建議標準,IV為96bit長時,可無延時生成Yo。否則,如果IV具有r個128bit消息,則還需要r各周期生成Yo。生成后的十個周期是GCM加密的密鑰流。一旦AES ICM流水線全滿,每周期將生成128bit密文CI。當CI生成后,hash計算最新開始。在最后的密文Cn和最后的hash值xm+n+1之間有一個周期用于計算(length(A) _length(C))H。
三、 Ghash函數(shù)邏輯描述
這里描述的Ghash函數(shù)以及算法是局限于GCM里的。
1、 Ghash算法描述前的符號解釋
給定一個實數(shù)X,[X]表示取不小于X實數(shù)值的最小整數(shù)。比如[2.1]=3,[4J=4。
給定一個字符串X符號表示連接符,比如001 10111= 00110111。
X和y的相加表示為X+y。域中的加法相當于異或位運算操作,比如10011 0 10101=00110。
給定一個字符串X,Len(X)表示字符串的長度,比如Len(oooio)=5。
給定一個字符串X,和一個無符號數(shù)S。LSBs(X)表示取最右端的s位數(shù),比如LSB3(111011010)=010,MSBs(X)表示取最左端s位教,比如MSB4(111011010)=1110。
給定一個字符串X,Len(X)表示字符串的長度,比如Len(oooio)=5。
給定一個字符串X,和一個無符號數(shù)S.LSBs(X)表示取最右端的s位數(shù),比如LSB3(111011010)=010,MSBs(X)表示取最左端s位教,比如MSB4(111011010)=1110。
給定一個字符串X,>>右移或者<<左移符號比如0110111>>I=0011011。對于移位后的位數(shù)補零。在這里我們要定義伽羅華域的乘法X.Y,其定義如下:
輸入字符串X,Y。
輸出字符串X,Y。
步驟:

2、 Ghash函數(shù)的算法描述
首要條件
block H,the hash subkey.
輸入
bit string X such tlw len(X)= 128m for some positive integcrm.
輸出
block GHASHH (X).
步驟:

Ghash函數(shù)的詳細步驟在下圖中有說明:沒有初始矩陣o,Yo和X1的異或運算并不改變X1的值。

由此可見Ghash函數(shù)在GCM加密算法中的作用是顯然的。
小知識之伽羅華域
僅含有限多個元素的域。它首先由E.伽羅華所發(fā)現(xiàn),因而又稱為伽羅華域。它和有理數(shù)域、實數(shù)域比較,有著許多不同的性質(zhì)。










