密码算法应用实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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层的层密钥分别为:

K0K7, K0K7, K0K7, K7K0

记为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), X0X1各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加密算法框图