1.7 GOST加密算法
GOST加密算法是俄羅斯現行的加密標準,在1989年4月22日由1409號決議通過,在1990年7月1日正式實施。
GOST是32層DES型迭代分組密碼,分組長度為64比特,密鑰長度為256比特。
與DES加密算法相比,GOST加密算法除了增加了迭代層數和密鑰長度,還有下列主要差別。
(1)由初始密鑰生成層密鑰的過程十分簡單。將256比特密鑰分成8個32比特的字,記為K0, K1, …, K7,則32層的層密鑰分別為:
K0~K7, K0~K7, K0~K7, K7~K0
記為SK1~SK32。
(2)層變換的差別是:①GOST加密算法沒有輸入分組擴展;②GOST加密算法與層密鑰進行的是模232加,而DES加密算法進行的是模2加;③GOST加密算法用8個GF(24)→GF(24)的非線性代替;④GOST加密算法用簡單的循環移位代替不規則置換。
(3)S盒保密,不同系統可用不同的S盒,從而使密鑰為:
256+log2(16! )×8=610比特
GOST加密算法的F函數由三部分組成:
● 與32比特層密鑰SKi進行模232加;
● 經8個4比特S盒;
● 循環左移11比特。
輸入的明文從低位到高位排列構成(X0, X1), X0和X1各32比特,迭代計算為:
Xi+1=F(Xi)⊕Xi-1, i=1, …,32
經過32層迭代可得(X33, X32),自低位到高位的輸出就是密文。
GOST加密算法有以下4種工作方式:
(1)簡單代替方式,即電子密本(ECB)方式。
(2)亂數加密方式,即64比特的輸出反饋方式OFB(64),以64比特同步信號作為初始向量。
(3)反饋亂數加密方式,即64比特的密文反饋方式CFB(64)。
(4)驗證方式,即按初始向量為0的密文分組連接方式進行計算,在最后一組輸出中選L比特(L≤64)作為消息驗證碼。
GOST加密算法框圖如圖1.7.1所示。

圖1.7.1 GOST加密算法框圖