高级加密标准AES候选算法之一Serpent

高级加密标准AES候选算法之一Serpent

1997年,美国国家标准和技术研究所(NIST)发布公告在全世界范围内征集新的加密标准。值的一提的是,在征集过程的最后一轮五个算法的评选中,Rijndael得87票,Serpent得59票,排名第二。Serpent是一个非常经典的SPN式分组密码体制,同时它的安全强度非常高。与Rijndael一样,Serpent尚未有重大安全漏洞被发现。

分组大小:128Bit

种子密钥长度:256Bit

加密(解密)轮数:32

混淆层:8个4X4的S盒(S0~S7)轮流使用(第i轮使用32个S(i%8))i=0,1,2,……31

8个S盒详见常见对称加密算法的混淆层(S盒)及其密码学指标

扩散层(Aj+1,Bj+1,Cj+1,Dj+1)=L(Aj,Bj,Cj,Dj)

线性扩散层LT结构图

(LT变换由移位,循环移位,异或运算组成)

(其中Aj、Bj、Cj、Dj和Aj+1、Bj+1、Cj+1、Dj+1均为32位字)

线性变换LT:

Serpent的密钥扩展算法:Serpent使用的是256比特密钥,同时也支持128和192比特密钥。若密钥长度不足256比特(即128和192比特情况),则通过这样的方案扩展到256比特:在原密钥数据尾部添加一比特0,再添加若干比特1,直到到达256比特为止。

由此我们得到了Serpent的256比特密钥,但在Serpent加密方案中使用的是33个128比特的轮密钥K0,K1,……K32。需要使用Serpent的密钥扩展方案将256比特密钥扩展为33*128比特的轮密钥,Serpent的密钥扩展方案如下:

将256比特密钥分为8个32比特的字,记为W-8,W-7......W-1,对他们进行如下操作扩展至W0,W1......W131

Wi=(Wi-8⊕Wi-5⊕Wi-3⊕Wi-1⊕M⊕i)<<<11                      i=0,1,2……131

其中M=0x9e3779b9为黄金分割点。

这样,我们得到了W0,W1......W131,再对它们进行S盒替换操作,如下

(k0,k1,k2,k3)=S3(W0,W1,W2,W3)

(k4,k5,k6,k7)=S2(W4,W5,W6,W7)

(k8,k9,k10,k11)=S1(W8,W9,W10,W11)

(k12,k13,k14,k15)=S0(W12,W13,W14,W15)

(k16,k17,k18,k19)=S7(W16,W17,W18,W19)

...…

..….

(k124,k125,k126,k127)=S4(W124,W125,W126,W127)

(k128,k129,k130,k131)=S3(W128,W129,W130,W131)

Serpent加密过程

{

B0=IP(P)

Bi+1=R(Bi)

C=FP(B32)

其中

R(X)=L(Si(X⊕Ki))         i=0,1,2……30

R(X)=Si(X⊕Ki)⊕K32         i=31

}

P表示明文

C表示密文

B表示中间数据

R表示第i次循环迭代

S表示第i次所用S盒变换

L表示线性变换

IP{

Bk-> B4k

Bk+32-> B4k+1

Bk+64-> B4k+2

Bk+96-> B4k+3

}

FP{

B4k ->Bk

B4k+1 ->Bk+32

B4k+2 ->Bk+64

B4k+3 ->Bk+96

}

其中k=0,1,2……31

Serpent作为AES的5个候选算法之一,综合得分为59,排名第二。其安全性最高,只是加解密效率不高(32轮迭代),因此被淘汰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄金龙PLUS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值