5个800比特大状态置换算法的设计与分析

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

轮函数

  1. 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 矩阵。

  1. X 轴扩散
    对每个固定 j k,把 5 个字节视为列向量,乘以一个 5×5 可逆 MDS 矩阵 M 5x
  2. Y 轴扩散
    对每个固定 i k,乘以另一个 5×5 可逆 MDS 矩阵 M 5y
  3. Z 轴扩散
    对每个固定 i j,再次乘以 4×4 可逆 MDS 矩阵 M 4z
  4. 轮常量异或
    每个字节异或与轮数、位置相关的常量。

建议轮数 :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

  1. 将 160 比特输入拆成 5 个 32 比特字 w 0 ,..., w 4
  2. 对每个 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

  1. 数据相关旋转:由 w 4 的低 5 比特控制每个字的旋转量:

r= w 4   32 , w i w i ⋘r

  1. 对每个 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

轮函数

  1. 可逆 S 盒层
    对每个字节独立应用 8 比特可逆 S 盒:

C i j ←S C i j

  1. 行扩散
    对每一行 10 个字节,乘以一个可逆 10×10 循环矩阵。该矩阵由与 x 10 -1 互素的多项式生成,例如:

a x =1+2x+3 x 3 + x 5 +7 x 7 GF2 8 x

  1. 列扩散
    对每一列 10 个字节,乘以另一个可逆循环矩阵。
  2. 局部邻域混合
    对每个单元加入局部邻域影响:

C i j ←C i j C i+1 j C i j+1 C i+1 j+1

其中下标模 10。

  1. 轮常量异或

建议轮数 :10
可逆性 :S 盒、循环矩阵、邻域线性混合均为可逆操作。
创意点:用简单局部规则在二维网格上产生长距离扩散,类似群鸟或蚁群的信息素传播。


4. GEAR-800 :非交换齿轮箱与数据相关旋转

风格 :机械齿轮、ARX、三角扫描、非交换混合
状态布局
800 比特 = 25 个 32 比特字:

g 0 ,g 1 ,...,g 24

轮函数

轮内包含两个方向相反的扫描。

前向扫描i=024

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=240

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

轮函数

  1. 非线性层 S 32
    对每个 32 比特字执行可逆变换:
    • 先拆成 4 个字节,每个字节通过 8 比特可逆 S 盒;
    • 再执行 32 比特可逆线性混合:

x←x ( x⋘13 ( x⋙17

  1. 理想格线性层
    将状态视为环

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 ja x 的系数。

  1. 轮常量模加
    每个字加上轮相关的 32 比特常量。

建议轮数 :10
可逆性a x 的常数项为奇数,且在模 2 下与 x 25 -1 互素,因此循环矩阵在模 2 32 下可逆,故整轮可逆。
创意点:借用理想格和环 LWE 的结构,用环多项式乘法作为主扩散层,风格接近格密码。


这 5 个设计分别走了三维几何、非平衡 Feistel、元胞自动机、机械 ARX 和理想格乘法五条完全不同的路线。它们共同展示了 800 比特大状态置换可以有很多非常规构造方式。

相关推荐
政企项目老覃1 小时前
大模型 Agent 自主任务编排:电商客服地址解析从 12% 失败率到 2.1% 的落地复盘
人工智能·程序人生·算法
kukubuzai1 小时前
双指针系列二--末尾篇(3道题)
c++·算法·leetcode
杜 硕1 小时前
单链表经典算法题
数据结构·算法
sbjdhjd2 小时前
从日志包含到临时文件竞争:文件包含进阶复盘中的 Docker、Windows 与 Session 限制
网络·安全·web安全·网络安全·数据挖掘·php·rce
白猫不黑2 小时前
网络安全面试题大全:22道高频题附解析与答案
web安全·计算机·网络安全·信息安全·渗透测试·编程·面试题
小O的算法实验室2 小时前
IEEE TCYB,着色旅行商问题:模型、求解与应用
算法
h_a_o777oah2 小时前
【图论】网络流:Dinic 算法模板实现原理及解题技巧
c++·算法·图论·acm·网络流·最小割·dinic算法
我不会起名字3222 小时前
一天一道力扣Hot100(37):深度优先算法--括号生成
java·数据结构·c++·后端·python·算法·go
白猫不黑3 小时前
网络安全和信息安全的区别:全方位解析与学习路径
计算机·网络安全·黑客·信息安全·程序员·渗透测试·编程