5 个800比特大状态置换算法的设计与分析
下面是 5 个风格完全不同的 800 比特大状态置换设计。它们都只定义在 800 比特状态上的可逆置换,不涉及密钥调度;若要用作带密钥置换,可在轮常量或轮函数中注入密钥材料。这些设计为创意/教学性质,未经过完整密码分析。
1. CUBE-800 :三维晶格与三轴 MDS 扩散
风格 :三维魔方、几何分层扩散
状态布局 :
800 比特 = 100 字节,排列为 5×5×4
的三维字节网格:
A i j k , i,j∈ Z 5 , k∈ Z 4

轮函数 :
- Z 轴 S 盒混淆
对每个固定 i j
,把 4 个字节组成的列做可逆变换:
a 0 a 1 a 2 a 3 ↦ M 4 S a 0 S a 1 S a 2 S a 3
其中 S
是 8 比特可逆 S 盒,M 4
是 AES MixColumns 的 4×4
MDS 矩阵。
- X 轴扩散
对每个固定 j k
,把 5 个字节视为列向量,乘以一个 5×5
可逆 MDS 矩阵 M 5x
。 - Y 轴扩散
对每个固定 i k
,乘以另一个 5×5
可逆 MDS 矩阵 M 5y
。 - Z 轴扩散
对每个固定 i j
,再次乘以 4×4
可逆 MDS 矩阵 M 4z
。 - 轮常量异或
每个字节异或与轮数、位置相关的常量。
建议轮数 :12
可逆性 :每层都可逆,因此整体是置换。
创意点:像三维魔方一样沿三条轴交替进行 MDS 扩散,混淆与扩散完全几何化。
2. ORIGAMI-800 :折纸式非平衡广义 Feistel
风格 :折纸折叠、非平衡广义 Feistel、数据相关旋转
状态布局 :
800 比特 = 5 个 160 比特分支:
X 0 , X 1 , X 2 , X 3 , X 4 ∈ 0 1 160

轮函数 F: 0 1 160 → 0 1 160
:
- 将 160 比特输入拆成 5 个 32 比特字 w 0 ,..., w 4
。 - 对每个 w i
执行可逆 ARX 混合:
w i ← w i ( w i ⋘7 , w i ← w i + w i ⋘13 2 32 , w i ← w i ( w i ⋙17
- 数据相关旋转:由 w 4
的低 5 比特控制每个字的旋转量:
r= w 4 32 , w i ← w i ⋘r
- 对每个 32 比特字按字节应用可逆 S 盒。
一轮广义 Feistel :
T←F X 0
Y 0 Y 1 Y 2 Y 3 Y 4 = X 1 T X 2 X 3 X 4 X 0


建议轮数 :16
可逆性:给定输出 Y 0 ... Y 4
,先恢复 X 0 = Y 4
,再算 F X 0
,即可恢复 X 1 = Y 0 F X 0
,其余直接得到。
创意点:利用折纸折叠的意象,让大量状态只通过一个窄而深的 F
函数与分支旋转逐步混合。
3. SWARM-800 :二维元胞自动机与群体扩散
风格 :仿生群体、元胞自动机、局部邻域规则
状态布局 :
800 比特 = 100 字节,排列为 10×10
二维网格:
C i j , i,j∈ Z 10

轮函数 :
- 可逆 S 盒层
对每个字节独立应用 8 比特可逆 S 盒:
C i j ←S C i j
- 行扩散
对每一行 10 个字节,乘以一个可逆 10×10
循环矩阵。该矩阵由与 x 10 -1
互素的多项式生成,例如:
a x =1+2x+3 x 3 + x 5 +7 x 7 ∈ GF2 8 x
- 列扩散
对每一列 10 个字节,乘以另一个可逆循环矩阵。 - 局部邻域混合
对每个单元加入局部邻域影响:
C i j ←C i j C i+1 j C i j+1 C i+1 j+1
其中下标模 10。
- 轮常量异或
建议轮数 :10
可逆性 :S 盒、循环矩阵、邻域线性混合均为可逆操作。
创意点:用简单局部规则在二维网格上产生长距离扩散,类似群鸟或蚁群的信息素传播。
4. GEAR-800 :非交换齿轮箱与数据相关旋转
风格 :机械齿轮、ARX、三角扫描、非交换混合
状态布局 :
800 比特 = 25 个 32 比特字:
g 0 ,g 1 ,...,g 24

轮函数 :
轮内包含两个方向相反的扫描。
前向扫描 ,i=0
到 24
:
t←0

若 i≥1
:
t←t+ g i-1 ⋘ g i-1 32

若 i≥3
:
t←t ( g i-3 ⋙ g i-2 32

最后:
g i ← g i +t 2 32

后向扫描 ,i=24
到 0
:
t←0

若 i≤23
:
t←t+ g i+1 ⋘ g i+1 32

若 i≤21
:
t←t ( g i+3 ⋙ g i+2 32

最后:
g i ←g i t

最后对整个状态异或轮常量。
建议轮数 :12
可逆性:前向扫描中第 i
个字只依赖已经更新过的低索引字,因此可以逆序减去;后向扫描同理。整个轮函数可逆。
创意点:模拟齿轮箱中主动轮、从动轮与咬合关系,用两个相反方向的三角扫描实现非对称扩散,且旋转量由相邻字的数据实时决定。
5. LATTICE-800 :理想格循环乘法与模 2 32
结构
风格 :格密码、环乘法、循环格扩散
状态布局 :
800 比特 = 25 个 32 比特字:
v 0 ,v 1 ,...,v 24 ∈ Z 2 32

轮函数 :
- 非线性层 S 32

对每个 32 比特字执行可逆变换:- 先拆成 4 个字节,每个字节通过 8 比特可逆 S 盒;
- 再执行 32 比特可逆线性混合:
x←x ( x⋘13 ( x⋙17
- 理想格线性层
将状态视为环
R= Z 2 32 x / x 25 -1
中的元素。乘以一个固定可逆多项式:
a x =1+2x+3 x 2 +5 x 3 +7 x 4 +11 x 5 +13 x 6
即:
v newi = j=0 24 a j ⋅ v oldi-j 25 2 32
其中 a j
是 a x
的系数。
- 轮常量模加
每个字加上轮相关的 32 比特常量。
建议轮数 :10
可逆性:a x
的常数项为奇数,且在模 2 下与 x 25 -1
互素,因此循环矩阵在模 2 32
下可逆,故整轮可逆。
创意点:借用理想格和环 LWE 的结构,用环多项式乘法作为主扩散层,风格接近格密码。
这 5 个设计分别走了三维几何、非平衡 Feistel、元胞自动机、机械 ARX 和理想格乘法五条完全不同的路线。它们共同展示了 800 比特大状态置换可以有很多非常规构造方式。