GCM是分組加密算法(NIST的AES,我國國標SM4)的一種操做模式算法
須要選擇分組加密算法兩個函數中的一個做爲向前函數函數
兩個GCM函數成爲authenticated encryption 和 authenticated decryption加密
authenticated encryption進行數據加密運算,並計算出一個authentication tag3d
authenticated decryption驗證authentication tag,解密。component
當輸入數據限定爲非機密數據時,這種變種GCM成爲GMACblog
相應的authenticated encryption 和 authenticated decryption變成了對非機密數據的authentication tag的產生和驗證ip
對於給定的分組塊和密鑰,認證加密函數有3組輸入:ci
1. 明文,成爲Prem
2. 額外的認證信息,稱爲AADit
3. 初始化向量,稱爲IV
GCM須要確保明文和AAD的真實性,保證實文的保密性,不保護AAD的保密性;如AAD能夠是一些端口,地址等非祕密信息
信息長度要求:
len(P) ≤ 2^39-256;
len(A) ≤ 2^64-1;
1 ≤ len(IV) ≤ 2^64-1.
明文,AAD以及IV應當是8bit的整數倍長度
函數的輸出以下:
1. 加密後的密文,長度同明文,用C表示
2. authentication tag,用T表示
給定IV,AAD,C,T的值,認證解密函數輸出爲以下其中之一:
1. 解密後的明文
2. 錯誤代碼
輸出明文則代表T是正確的關於IV,A,C的authentication tag,不然輸出錯誤代碼,
TBD....