对称密码算法(分组密码算法 序列密码算法 密码杂凑算法)中的基本操作

目录

对称密码算法(分组密码算法 序列密码算法 密码杂凑算法)中的基本操作

(1)异或运算(XOR)

(2)逻辑与运算(AND)

(3)逻辑或运算(OR)

(4)取反运算(NOT)

(5)模加运算(ModAdd)

(6)逻辑移位(Shift)

(7)循环移位(Rotation)

(8)S盒替换(SBOX)

(9)P盒置换(PBOX)

(10)矩阵乘法(Matrix)

(11)比特置换(BitPermutation)

(12)字节置换(BytePermutation)

(13)比特连接(BitLink)

(14)线性反馈移位寄存器(LFSR)

(15)非线性反馈移位寄存器(NFSR)


对称密码算法(分组密码算法 序列密码算法 密码杂凑算法)中的基本操作

     相比非对称加密算法,对称加密算法因为加解密效率较高,因而在日常使用中更加广泛。为了让大家更加熟悉常见的对称加密算法,本文列举出了对称密码算法设计中经常用到的15种基本操作。如果有遗漏和不足的地方,欢迎大家在评论中提出。

(1)异或运算(XOR)

符号:

运算规则:相同为0,不同为1。

例如:A=an-1||an-2||……||a1||a0,B=bn-1||bn-2||……||b1||b0,则C= cn-1||cn-2||……||c1||c0=A⊕B=an-1⊕bn-1||an-2⊕bn-2||……||a1⊕b1||a0⊕b0,其中||表示比特串的连接。

若ai=bi,则ci=0,否则ci=1。

(2)逻辑与运算(AND)

符号:

运算规则:除了1∧1为1,其它3种情况都为0。

例如:A=an-1||an-2||……||a1||a0,B=bn-1||bn-2||……||b1||b0,则C= cn-1||cn-2||……||c1||c0=A∧B=an-1∧bn-1||an-2∧bn-2||……||a1∧b1||a0∧b0,其中||表示比特串的连接。

若ai=bi=1,则ci=1,否则ci=0。

(3)逻辑或运算(OR)

符号:

运算规则:除了0∨0为0,其它3种情况都为1。

例如:A=an-1||an-2||……||a1||a0,B=bn-1||bn-2||……||b1||b0,则C= cn-1||cn-2||……||c1||c0=A∨B=an-1∨bn-1||an-2∨bn-2||……||a1∨b1||a0∨b0,其中||表示比特串的连接。

若ai=bi=0,则ci=0,否则ci=1。

(4)取反运算(NOT)

符号:~

运算规则:0变为1,1变为0。

例如:A=an-1||an-2||……||a1||a0,B=bn-1||bn-2||……||b1||b0,则B= bn-1||bn-2||……||b1||b0=~A=~an-1||~an-2||……||~a1 ||~a0,其中||表示比特串的连接。

若ai= 0,则bi=1,否则bi=0。

(5)模加运算(ModAdd)

符号:

运算规则:先算加法,再求模。

例如:A=an-1||an-2||……||a1||a0,B=bn-1||bn-2||……||b1||b0,则D= dn-1||dn-2||……||d1||d0=A⊞B=an-1bn-1⊕cn-1||an-2⊕bn-2⊕cn-2||……||a1⊕b1⊕c1||a0⊕b0⊕c0,其中c0=0,cj=(aj-1∧bj-1)⊕(bj-1∧cj-1)⊕(cj-1∧aj-1),其中||表示比特串的连接。

(6)逻辑移位(Shift)

左移位

符号:<<

例如:A=an-1||an-2||……||a1||a0,则B=A<<N= an-N-1||an-N-2||……|| an-1||0||……||0||0

右移位

符号:>>

例如:A=an-1||an-2||……||a1||a0,则B=A>>N= 0||……||0||0|| an-1||……|| aN+1||aN

(7)循环移位(Rotation)

左循环移位

符号:<<<

例如:A=an-1||an-2||……||a1||a0,则B=A<<N= an-N-1||an-N-2||……|| an-1||……|| an-N+1||an-N

右循环移位

符号:>>>

例如:A=an-1||an-2||……||a1||a0,则B=A>>N= aN-1||aN-2||……|| an-1||……|| aN+1||aN

(8)S盒替换(SBOX)

S盒作为大多数对称密码算法中唯一的非线性组件,它提供了安全密码算法必须的混淆性。轻量级分组密码Present的S盒(6X4)和认证加密算法ASCON(5X5)和高级加密标准AES算法的S盒(8X8)通过查表来实现。详见常见对称加密算法的混淆层(S盒)及其密码学指标。

不使用查表实现的S盒为Simon(循环移位和与运算),Keccak(异或运算和与运算),Alzette(ARX结构)。

(9)P盒置换(PBOX)

P盒作为大多数对称密码算法中的线性组件,它提供了安全密码算法必须的扩散性。轻量级分组密码Present的P盒和高级加密标准AES算法的P盒分别通过比特置换和乘以MDS矩阵来实现。详见常见对称加密算法的扩散层(P盒)及其密码学指标。

Camellia,MIBS,Midori等分组加密算法使用MDBL矩阵作为线性扩散层。

(10)矩阵乘法(Matrix)

在AES算法中,中间状态排列成4X4矩阵形式。列混合变换操作将中间状态矩阵左乘4X4的MDS矩阵。如图所示(其中x为列混合的输入状态,y为列混合的输出状态):

只不过这里的乘法为有限域上的多项式乘法,而不是十进制乘法。

(11)比特置换(BitPermutation)

轻量级分组加密算法Present算法的扩散层为基于比特的置换变换,如图为该变换对应的置换表。线性置换表P可由以下公式表示:

Bi=B4*i   Bi+16=B4*i+1   Bi+32=B4*i+2   Bi+48=B4*i+3(0i≤15)。

(12)字节置换(BytePermutation)

字节置换的原理同比特置换,只不过置换的单元为字节而已。

(13)比特连接(BitLink)

符号:||

该操作将两个短的比特串连接为一个长的比特串。

例如:A=am-1||am-2||……||a1||a0,B=bn-1||bn-2||……||b1||b0,则C=A||B= am-1||am-2||……||a1||a0||bn-1||bn-2||……||b1||b0。

(14)线性反馈移位寄存器(LFSR)

例如:流密码算法Grain V1的80级LFSR当前状态为S=(si,si+1,……,si+78,si+79)

则更新1拍后状态为Si+1=(si+1,si+2,……,si+79,si+80)

(15)非线性反馈移位寄存器(NFSR)

例如:流密码算法Grain V1的80级NFSR当前状态为B=(bi,bi+1,……,bi+78,bi+79)

则更新1拍后状态为Bi+1=(bi+1,bi+2,……,bi+79,bi+80)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黄金龙PLUS

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

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

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

打赏作者

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

抵扣说明:

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

余额充值