块密码中的 SWAPMOVE 函数是什么?
What is the SWAPMOVE function in block cipher?
我在下面看到一个名为 'SWAPMOVE' 的函数。
SWAPMOVE(A,B,M,n):
T = (B ^ (A >> n)) & M
B = B ^ T
A = A ^ (T << n)
而且我不知道这个函数到底做了什么。
好像是计算了一些分组密码的线性层,但是使用这个函数我看不懂整个步骤。
那么,这个函数到底做了什么?
这是我看到的研究论文:Alexandre Adomnicai、Zakaria Najm 和 Thomas Peyrin。 Fixslicing:一种新的 GIFT 表示:GIFT 和 GIFT-COFB 在 ARM Cortex-M 上的快速恒定时间实现。 IACR Transactions on Cryptographic Hardware and Embedded Systems, 2020(3):402–427, Jun. 2020.
查阅本文第15~16页
让我们更详细地看一下。
假装我们没有 M
,这是一个面具。在这种情况下,B = B ^ T
等同于 B = B ^ B ^ (A >> n)
。这本身就等同于 B = A >> n
。那么最后一行相当于 A = A ^ B ^ ((A >> n) << n)
,其中 B
是我们原来的 B。(A >> n) << n
本质上清除底部 n
位并保留其余位。所以最后一行将计算 B
与 A
.[=24= 的顶部 K-n
(其中 K
是字中的总位数)的异或]
所以这里唯一的区别是我们有一个掩码 M
,它调整单词 T
中的位,从而影响我们的结果值中包含哪些位。稍微想一想应该可以推断出是什么影响了结果,虽然用文字描述起来有点困难。
这个函数被认为是线性的,因为它只包括 XOR、AND 和移位,而这些在 GF(2) 中是线性的。在 GF(2) 中线性的其他类似操作包括 CRC。此处无需过多讨论密码学,这不是主题,大多数密码算法包括线性运算(通常提供廉价的扩散)和 non-linear 运算(以防止使用线性密码分析轻松解决它们)。如果您想了解更多关于此函数的加密目的,您应该在 Cryptography Stack Exchange 上询问,在那里您会得到更好的 on-topic 由比我更擅长密码学的人的回应。
如 the paper 第 6 页所述,SWAPMOVE 技术
consists in swapping the bits in B masked by M with the bits in A masked by (M << n)
所以目标只是根据掩码 M 和移位索引 n 在两个输入变量(A 和 B)之间交换一些位。
我在下面看到一个名为 'SWAPMOVE' 的函数。
SWAPMOVE(A,B,M,n):
T = (B ^ (A >> n)) & M
B = B ^ T
A = A ^ (T << n)
而且我不知道这个函数到底做了什么。
好像是计算了一些分组密码的线性层,但是使用这个函数我看不懂整个步骤。
那么,这个函数到底做了什么?
这是我看到的研究论文:Alexandre Adomnicai、Zakaria Najm 和 Thomas Peyrin。 Fixslicing:一种新的 GIFT 表示:GIFT 和 GIFT-COFB 在 ARM Cortex-M 上的快速恒定时间实现。 IACR Transactions on Cryptographic Hardware and Embedded Systems, 2020(3):402–427, Jun. 2020.
查阅本文第15~16页
让我们更详细地看一下。
假装我们没有 M
,这是一个面具。在这种情况下,B = B ^ T
等同于 B = B ^ B ^ (A >> n)
。这本身就等同于 B = A >> n
。那么最后一行相当于 A = A ^ B ^ ((A >> n) << n)
,其中 B
是我们原来的 B。(A >> n) << n
本质上清除底部 n
位并保留其余位。所以最后一行将计算 B
与 A
.[=24= 的顶部 K-n
(其中 K
是字中的总位数)的异或]
所以这里唯一的区别是我们有一个掩码 M
,它调整单词 T
中的位,从而影响我们的结果值中包含哪些位。稍微想一想应该可以推断出是什么影响了结果,虽然用文字描述起来有点困难。
这个函数被认为是线性的,因为它只包括 XOR、AND 和移位,而这些在 GF(2) 中是线性的。在 GF(2) 中线性的其他类似操作包括 CRC。此处无需过多讨论密码学,这不是主题,大多数密码算法包括线性运算(通常提供廉价的扩散)和 non-linear 运算(以防止使用线性密码分析轻松解决它们)。如果您想了解更多关于此函数的加密目的,您应该在 Cryptography Stack Exchange 上询问,在那里您会得到更好的 on-topic 由比我更擅长密码学的人的回应。
如 the paper 第 6 页所述,SWAPMOVE 技术
consists in swapping the bits in B masked by M with the bits in A masked by (M << n)
所以目标只是根据掩码 M 和移位索引 n 在两个输入变量(A 和 B)之间交换一些位。