利用类傅里叶变换置换矩阵构造Bent函数
在研究二元Bent函数时,我们会关注具有 $P^2 = I$ 性质的置换,这类置换也被称为对合。当将构造方法推广到多变量函数时,需要选择合适的基本Bent函数,使得其阶数与要构造的函数阶数相等。
方法的推广
之前讨论的利用类傅里叶变换(FFT)置换矩阵构造Bent函数的方法可以推广到任意变量数的函数。需要注意的是,置换矩阵可以构造具有相同组成的函数。以三元函数为例,当变量数 $n = 2, 6, 10, 14$ 时,存在具有两种可能组成的函数。具有相同组成的函数可以通过类FFT置换矩阵来构造。因此,对于给定变量数的所有三元Bent函数集合,可以根据三值集合的六种可能置换拆分为66个类。同一类中的函数具有相同的组成,并且可以通过置换矩阵相互转换。不同类之间的函数可以通过编码进行转换。
相应的置换矩阵可以参考Cooley - Tukey FFT步骤的矩阵结构来推导。这些矩阵具有Kronecker积结构,描述第 $i$ 步的矩阵在第 $i$ 个位置是基本变换矩阵,其他位置是单位矩阵。推导任意变量数的类FFT置换矩阵的主要思路是,将Kronecker积中第 $i$ 个位置的基本变换矩阵替换为基本置换矩阵。
我们通过参考Cooley - Tukey FFT步骤的矩阵,并将基本变换矩阵替换为基本置换矩阵,来定义不同的类FFT置换矩阵。考虑矩阵 $Q_1$,定义三个类FFT置换矩阵如下:
[
\begin{align
}
R_1 &= Q(1) \otimes I_1 \otimes I(1)\
R_2 &= I_1 \otimes Q(1) \otimes I(1)\
R_3 &= I(1) \otimes I(1) \otimes Q_1
\end{align
}
]
这里与FFT的相似之处在于,基本变换矩阵被基本置换矩阵所取代。也可以同时将相同或不同的基本置换矩阵作为 $n$ 个矩阵的Kronecker积的分量矩阵,这样可以定义多个不同的类FFT置换矩阵。
以下表格展示了通过置换矩阵 $R_1$、$R_2$、$R_3$ 作用于函数 $q_1 = x_1x_2 \oplus x_3^2$ 得到的函数:
| 函数 | 矩阵 |
| — | — |
| $x_1x_2 \oplus (x_3)^2 \oplus x_1$ | $R_1$ |
| $x_1x_2 \oplus (x_3)^2 \oplus x_2$ | $R_2$ |
| $x_1x_2 \oplus (x_3)^2 \oplus 2x_3 \oplus 1$ | $R_3$ |
这些矩阵分别给函数 $q_1$ 加上了线性项 $x_1$、$x_2$、$2x_3 \oplus 1$,这些项决定了所考虑矩阵中的索引。
函数 $f = x_1x_2 \oplus x_3^2 \oplus x_3$ 也是Bent函数,但其函数向量为:
[
F = [0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 1, 0, 1, 2, 1, 2, 0, 2, 0, 2, 1, 2, 1, 0, 1]^T
]
这是一个不同的组成 $(12, 6, 9)$,因此它属于不同的类,不能通过对 $q_1$ 的函数值进行置换得到,而需要通过编码来获得。
添加二次项的矩阵构造如下:
[
\begin{align
}
R_1 &= A \otimes B \otimes I(1), & R_4 &= B \otimes A \otimes I(1)\
R_2 &= A \otimes I(1) \otimes B, & R_5 &= B \otimes I(1) \otimes A\
R_3 &= I(1) \otimes A \otimes B, & R_6 &= I(1) \otimes B \otimes A
\end{align
}
]
之后按照特定规则将其元素替换为1和0。根据所作用的函数($q_1$ 或 $q_2$),这些矩阵会添加 $x_1^2$、$x_2^2$ 和 $x_3^2$ 项,可能还会与变量组合。在所有情况下,添加项的系数可以是1或2,这增加了可构造的新Bent函数的数量。
以下两个表格分别展示了从函数 $q_1 = x_1x_2 \oplus x_3^2$(组成 $(9, 12, 6)$)和 $q_2 = x_1^2 \oplus x_2^2 \oplus x_3^2$(组成 $(9, 6, 12)$)通过置换矩阵得到的三元Bent函数:
从 $q_1$ 构造的函数
| 函数 | 置换矩阵 | 函数向量 |
| — | — | — |
| $x_1x_2 \oplus x_3^2 \oplus (x_1)^2$ | $P_{1,2} \otimes I(1)$ | $[0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 2, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2, 0, 1, 1, 2, 0, 0]^T$ |
| $x_1x_2 \oplus x_3^2 \oplus x_2^2 \oplus 2x_2x_3$ | $I(1) \otimes P_{1,2}$ | $[0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 2, 2, 1, 0, 2, 0, 0, 1, 1, 0, 0, 2, 2, 1, 2]^T$ |
| $x_1x_2 \oplus x_3^2 \oplus x_2^2$ | $P_{2,2} \otimes I(1)$ | $[0, 1, 1, 1, 2, 2, 1, 2, 2, 0, 1, 1, 2, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 2, 0, 0]^T$ |
| $x_1x_2 \oplus x_3^2 \oplus x_1x_3$ | $I(1) \otimes P_{2,2}$ | $[0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 2, 0, 1, 0, 1, 2, 1, 2, 0, 0, 2, 2, 2, 1, 1, 1, 0]^T$ |
从 $q_2$ 构造的函数
| 函数 | 置换矩阵 | 函数向量 |
| — | — | — |
| $2x_1^2 \oplus x_2^2 \oplus x_3^2 \oplus 2x_1x_2$ | $P_{1,2} \otimes I(1)$ | $[0, 1, 1, 1, 2, 2, 1, 2, 2, 2, 0, 0, 2, 0, 0, 1, 2, 2, 2, 0, 0, 1, 2, 2, 2, 0, 0]^T$ |
| $x_1^2 \oplus 2x_2^2 \oplus x_3^2 \oplus 2x_2x_3$ | $I(1) \otimes P_{1,2}$ | $[0, 1, 1, 2, 2, 1, 2, 1, 2, 1, 2, 2, 0, 0, 2, 0, 2, 0, 1, 2, 2, 0, 0, 2, 0, 2, 0]^T$ |
| $x_1^2 \oplus 2x_2^2 \oplus x_3^2 \oplus 2x_1x_2$ | $P_{2,2} \otimes I(1)$ | $[0, 1, 1, 2, 0, 0, 2, 0, 0, 1, 2, 2, 2, 0, 0, 1, 2, 2, 1, 2, 2, 1, 2, 2, 2, 0, 0]^T$ |
| $x_1^2 \oplus x_2^2 \oplus 2x_3^2 \oplus 2x_2x_3$ | $I(1) \otimes P_{2,2}$ | $[0, 2, 2, 1, 2, 1, 1, 1, 2, 1, 0, 0, 2, 0, 2, 2, 2, 0, 1, 0, 0, 2, 0, 2, 2, 2, 0]^T$ |
给函数 $q_1 = x_1x_2 \oplus x_3^2$ 添加三次项 $x_1^2x_3$ 的矩阵定义为:
[
P_3 = diag(I(1) \otimes I(1), X_1 \otimes X_1, X_1^T \otimes X_1)
]
该矩阵的结构是Cooley - Tukey FFT算法中第 $(n - 1)$ 步的典型结构。函数 $f = x_1x_2 \oplus x_3^2 \oplus x_1^2x_3$ 的函数向量为:
[
F_3 = [0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 2, 0, 1, 0, 1, 2, 1, 2, 0, 2, 0, 2, 1, 2, 1, 0, 1]^T
]
其组成是 $(9, 12, 6)$,并且相同的函数向量可以通过 $F_3 = P_3F_{x_1x_2 \oplus x_3^2}$ 得到。
子向量置换方法
还有一种构造具有选定分布和阶数的三元Bent函数的方法,其基本思想是将函数向量拆分为子向量,然后对这些子向量及其元素进行置换,以构造其他Bent函数。具体算法如下:
1. 给定一个具有分布 $D$ 和阶数 $deg(f)$ 的Bent函数 $f$。
2. 将函数 $f$ 的向量 $F$ 拆分为长度为 $3^k$($1 \leq k \leq n - 1$)的子向量。
3. 对子向量进行编码,构造一个新的函数向量 $F_e$,其元素是分配给子向量的符号。
4. 将类FFT置换矩阵 $R$ 应用于 $F_e$,生成一个新的Bent函数 $f_e$。
5. 将类FFT置换矩阵 $R$ 应用于子向量,生成另一个Bent函数 $f_{e,R}$。
这种对子向量进行置换而不是对整个函数向量进行置换的方法,旨在使该过程便于在并行硬件结构上实现。需要注意的是,参数 $k$ 的选择决定了类FFT置换算法实际执行的步骤,同时也定义了与矩阵 $R$ 对应的谱不变操作是针对哪个变量执行的。用于执行置换的矩阵的选择决定了执行哪种谱不变操作。因此,在这个算法中,可以选择要执行的谱不变操作以及应用这些操作的变量。可以对选定的变量或变量子集执行不同的谱不变操作。
以三元三变量函数 $f(x_1, x_2, x_3) = x_1x_2 \oplus x_3^2 \oplus x_2^2x_3^2$ 为例,它是一个阶数为4的Bent函数,其函数向量为:
[
F = [0, 1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 1, 0, 0, 2, 1, 1, 0, 1, 1, 2, 1, 1, 1, 0, 0]^T
]
函数值的分布是 $(9, 12, 6)$。将该函数向量拆分为三个长度为9的子向量:
[
\begin{align
}
K_0 &= [0, 1, 1, 0, 2, 2, 0, 2, 2]^T\
K_1 &= [0, 1, 1, 1, 0, 0, 2, 1, 1]^T\
K_2 &= [0, 1, 1, 2, 1, 1, 1, 0, 0]^T
\end{align
}
]
则 $F = [K_0, K_1, K_2]^T$。
以下表格展示了基本置换矩阵执行的谱不变操作:
| 矩阵 | 重排序 | 替换 |
| — | — | — |
| $Q_1$ | $F_{Q_1} = [K_1, K_0, K_2]^T$ | $x_1 \to 2x_1 \oplus 1$ |
| $Q_2$ | $F_{Q_2} = [K_0, K_2, K_1]^T$ | $x_1 \to 2x_1$ |
| $X_1$ | $F_{X_1} = [K_2, K_0, K_1]^T$ | $x_1 \to x_1 \oplus 2$ |
| $X_1^T$ | $F_{X_1^T} = [K_1, K_2, K_0]^T$ | $x_1 \to x_1 \oplus 1$ |
| $N_1$ | $F_{N_1} = [K_2, K_1, K_0]^T$ | $x_1 \to 2x_
利用类傅里叶变换置换矩阵构造Bent函数
当矩阵 $Q_1$ 作用于上述子向量时,函数向量 $F$ 会转换为:
[
F_{Q_1} = [K_1, K_0, K_2]^T = [0, 1, 1, 1, 0, 0, 2, 1, 1, 0, 1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 2, 1, 1, 1, 0, 0]^T
]
对应的函数表达式为:
[
f(x_1, x_2, x_3)_{Q_1} = x_3^2 \oplus x_2 \oplus x_2^2x_3^2 \oplus 2x_1x_2
]
这是通过谱不变操作 $x_1 \to 2x_1 \oplus 1$ 得到的。由此可见,将矩阵 $Q_1$ 应用于长度为 9 的子向量时,会执行这个谱不变操作。构造出的函数是 Bent 函数,相对于初始函数,添加了 $x_2$ 和 $x_1x_2$ 项。
以下表格展示了应用矩阵 $Q_1$、$Q_2$、$X_1$、$X_1^T$ 和 $N_1$ 得到的函数:
| 矩阵 | 函数 |
| — | — |
| $Q_1$ | $f(x_1, x_2, x_3)
{Q_1} = x_3^2 \oplus x_2 \oplus x_2^2x_3^2 \oplus 2x_1x_2$ |
| $Q_2$ | $f(x_1, x_2, x_3)
{Q_2} = x_3^2 \oplus x_2^2x_3^2 \oplus 2x_1x_2$ |
| $X_1$ | $f(x_1, x_2, x_3)
{X_1} = x_3^2 \oplus 2x_2 \oplus x_2^2x_3^2 \oplus x_1x_2$ |
| $X_1^T$ | $f(x_1, x_2, x_3)
{X_1^T} = x_3^2 \oplus x_2 \oplus x_2^2x_3^2 \oplus x_1x_2$ |
| $N_1$ | $f(x_1, x_2, x_3)_{N_1} = x_3^2 \oplus 2x_2 \oplus x_2^2x_3^2 \oplus 2x_1x_2$ |
总结与应用展望
通过上述对利用类傅里叶变换置换矩阵构造 Bent 函数的方法介绍,我们可以看到这些方法在构造具有特定分布和阶数的 Bent 函数方面具有很强的灵活性和有效性。
从方法的推广来看,将类 FFT 置换矩阵的应用从二元函数拓展到任意变量数的函数,为多变量 Bent 函数的构造提供了通用的思路。通过选择合适的基本 Bent 函数和置换矩阵,可以构造出大量不同的 Bent 函数。特别是在三元函数的情况下,根据不同的组成和置换方式,可以得到丰富多样的 Bent 函数。
子向量置换方法则为 Bent 函数的构造提供了一种新的视角。它通过将函数向量拆分为子向量进行处理,使得构造过程更适合在并行硬件结构上实现,提高了算法的执行效率。同时,参数 $k$ 和置换矩阵的选择可以灵活控制谱不变操作的执行,从而实现对构造函数的精确控制。
在实际应用中,Bent 函数在密码学、编码理论等领域有着广泛的应用。例如,在密码学中,Bent 函数的良好性质可以用于构造安全的加密算法和哈希函数。通过利用上述构造方法,可以根据具体的应用需求,设计出具有特定性能的 Bent 函数,提高系统的安全性和可靠性。
未来的研究方向可以集中在进一步优化构造方法,提高构造效率和生成函数的质量。例如,探索更高效的置换矩阵设计方法,或者结合其他数学工具和算法,进一步拓展 Bent 函数的构造空间。此外,还可以研究 Bent 函数在新兴领域的应用,如量子密码学、物联网安全等,为这些领域的发展提供有力的支持。
下面是子向量置换构造 Bent 函数的流程图:
graph TD;
A[给定 Bent 函数 f] --> B[拆分函数向量 F 为子向量];
B --> C[对子向量编码得到 Fe];
C --> D[应用类 FFT 置换矩阵 R 到 Fe 得到 fe];
B --> E[应用类 FFT 置换矩阵 R 到子向量得到 fe,R];
综上所述,利用类傅里叶变换置换矩阵构造 Bent 函数是一个充满潜力的研究领域,有着广阔的应用前景和进一步探索的空间。
超级会员免费看

被折叠的 条评论
为什么被折叠?



