33、利用类快速傅里叶变换置换矩阵构造Bent函数

利用类快速傅里叶变换置换矩阵构造Bent函数

在函数构造领域,利用类快速傅里叶变换(FFT)置换矩阵来构造Bent函数是一种重要的方法。下面将详细介绍相关的操作和原理。

1. 基于特定矩阵运算得到函数表达式

通过应用与矩阵 $\mathbf{P}_1$ 和 $\mathbf{P}_5$ 对应的两个谱不变操作,可以推导出函数表达式。具体的谱不变操作包括 $x_1 \to x_1 \oplus 1$ 和 $x_3 \to 2x_3 \oplus 2$。

例如,定义 $\mathbf{P}_7 = \mathbf{P}_1 \cdot \mathbf{P}_2 \cdot \mathbf{P}_3$,根据 $\mathbf{P}_1$、$\mathbf{P}_2$ 和 $\mathbf{P}_3$ 的定义:
[
\begin{align }
\mathbf{P}_7 &= (\mathbf{X}_1^T \otimes \mathbf{I}(1) \otimes \mathbf{I}(1)) \cdot (\mathbf{I}(1) \otimes \mathbf{X}_1 \otimes \mathbf{I}(1)) \cdot (\mathbf{I}(1) \otimes \mathbf{I}(1) \otimes \mathbf{Q}_2)\
&= \mathbf{X}_1^T \otimes \mathbf{X}_1 \otimes \mathbf{Q}_2
\end{align
}
]

函数 $f_7$ 的函数向量为 $\mathbf{F}_7 = \mathbf{P}_7 \cdot \mathbf{F}$,即:
[
\mathbf{F}_7 = [2, 0, 0, 0, 1, 1, 1, 2, 2, 1, 2, 2, 0, 1, 1, 2, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1]^T
]

其函数表达式为 $f_7(x_1, x_2, x_3) = 2 \oplus x_3^2 \oplus x_2 \oplus 2x_1 \oplus x_1x_2$,这是通过谱不变操作 $x_1 \to x_1 \oplus 1$,$x_2 \to x_2 \oplus 2$ 和 $x_3 \to 2x_3$ 从函数 $f$ 的表达式推导而来的。

2. 不相交谱平移的置换矩阵

在布尔域中,将一个变量替换为该变量与另一个变量的和,即 $x_i \to x_i \oplus x_j$,是一种谱不变操作,通常称为不相交谱平移。这种操作在布尔函数的表示和实现简化方面有广泛应用。

对于三元函数,将变量 $x_i$ 的替换定义为 $x_i \to k_1x_i \oplus k_2x_j$,其中 $k_1, k_2 \in {1, 2}$。

为了执行这种谱不变操作,使用辅助符号矩阵来确定置换矩阵。首先定义符号Kronecker积可表示矩阵 $\mathbf{Q} {i,j}$:
[
\mathbf{Q}
{i,j} = \bigotimes_{r = 1}^{n} \mathbf{M} r
]
其中
[
\mathbf{M}_r =
\begin{cases}
\mathbf{A}
{k_1}, & \text{if } r = i\
\mathbf{B}_{k_2}, & \text{if } r = j\
\mathbf{I}(1), & \text{otherwise}
\end{cases}
]

这里
[
\mathbf{A}_1 =
\begin{bmatrix}
a & b & c\
c & a & b\
b & c & a
\end{bmatrix},
\mathbf{A}_2 =
\begin{bmatrix}
a & b & c\
b & c & a\
c & a & b
\end{bmatrix}
]

[
\mathbf{B}_1 =
\begin{bmatrix}
a & 0 & 0\
0 & b & 0\
0 & 0 & c
\end{bmatrix},
\mathbf{B}_2 =
\begin{bmatrix}
a & 0 & 0\
0 & c & 0\
0 & 0 & b
\end{bmatrix}
]

在进行符号矩阵计算后,将平方项替换为 $1$,符号乘积项替换为 $0$。形式上,符号替换规则如下:
[
\begin{align }
z \cdot 1 &= z\
z \cdot 0 &= 0\
z_1 \cdot z_2 &=
\begin{cases}
0, & \text{for } z_1 \neq z_2\
1, & \text{for } z_1 = z_2
\end{cases}
\end{align
}
]
其中 $z, z_1, z_2 \in {a, b, c}$。

以下通过具体例子说明不相交谱平移在三元函数中的实现:
定义符号矩阵 $\mathbf{Q}_1 = \mathbf{A}_1 \otimes \mathbf{I}(1) \otimes \mathbf{B}_1$,经过计算和项替换后得到置换矩阵 $\mathbf{Q}_1$。将该矩阵应用于例8.11中的 $\mathbf{F}$,得到另一个Bent函数,其函数向量为:
[
\begin{align }
\mathbf{G}_1 &= \mathbf{Q}_1 \cdot \mathbf{F}\
&= [0, 1, 1, 0, 2, 0, 0, 0, 2, 0, 1, 1, 1, 0, 1, 2, 2, 1, 0, 1, 1, 2, 1, 2, 1, 1, 0]^T
\end{align
}
]

函数表达式为 $g_1(x_1, x_2, x_3) = x_3^2 \oplus x_2x_3 \oplus x_1x_2$,对应于谱不变操作 $x_1 \to x_1 \oplus x_3$。

下面的表格展示了更多通过辅助符号Kronecker积可表示的类FFT置换矩阵生成的Bent函数的函数向量和函数表达式,以及相应的谱不变操作:
|序号|矩阵定义|谱不变操作|函数向量 $\mathbf{G} i$|函数表达式 $g_i(x_1, x_2, x_3)$|
|----|----|----|----|----|
|1|$\mathbf{Q}_1 = \mathbf{A}_1 \otimes \mathbf{I}(1) \otimes \mathbf{B}_1$|$x_1 \to x_1 \oplus x_3$|$[0, 1, 1, 0, 2, 0, 0, 0, 2, 0, 1, 1, 1, 0, 1, 2, 2, 1, 0, 1, 1, 2, 1, 2, 1, 1, 0]^T$|$x_3^2 \oplus x_2x_3 \oplus x_1x_2$|
|2|$\mathbf{Q}_2 = \mathbf{B}_1 \otimes \mathbf{I}(1) \otimes \mathbf{A}_1$|$x_3 \to x_1 \oplus x_3$|$[0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 2, 2, 1, 0, 0, 2, 1, 0, 1, 0, 2, 0, 2, 1, 2]^T$|$x_3^2 \oplus 2x_1x_3 \oplus x_1x_2 \oplus x_1^2$|
|3|$\mathbf{Q}_3 = \mathbf{A}_1 \otimes \mathbf{I}(1) \otimes \mathbf{B}_2$|$x_1 \to x_1 \oplus 2x_3$|$[0, 1, 1, 0, 0, 2, 0, 2, 0, 0, 1, 1, 1, 1, 0, 2, 1, 2, 0, 1, 1, 2, 2, 1, 1, 0, 1]^T$|$x_3^2 \oplus 2x_2x_3 \oplus x_1x_2$|
|4|$\mathbf{Q}_4 = \mathbf{B}_2 \otimes \mathbf{I}(1) \otimes \mathbf{A}_1$|$x_3 \to 2x_1 \oplus x_3$|$[0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 2, 1, 2, 0, 2, 0, 1, 1, 0, 0, 0, 2, 2, 2, 1]^T$|$x_3^2 \oplus x_1x_3 \oplus x_1x_2 \oplus x_1^2$|
|5|$\mathbf{Q}_5 = \mathbf{A}_2 \otimes \mathbf{I}(1) \otimes \mathbf{B}_1$|$x_1 \to 2x_1 \oplus x_3$|$[0, 1, 1, 0, 2, 0, 0, 0, 2, 0, 1, 1, 2, 1, 2, 1, 1, 0, 0, 1, 1, 1, 0, 1, 2, 2, 1]^T$|$x_3^2 \oplus x_2x_3 \oplus 2x_1x_2$|
|6|$\mathbf{Q}_6 = \mathbf{B}_1 \otimes \mathbf{I}(1) \otimes \mathbf{A}_2$|$x_3 \to x_1 \oplus 2x_3$|$[0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 2, 1, 2, 0, 2, 0, 1, 1, 0, 0, 0, 2, 2, 2, 1]^T$|$x_3^2 \oplus x_1x_3 \oplus x_1x_2 \oplus x_1^2$|
|7|$\mathbf{Q}_7 = \mathbf{A}_2 \otimes \mathbf{I}(1) \otimes \mathbf{B}_2$|$x_1 \to 2x_1 \oplus 2x_3$|$[0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 2, 1, 2, 0, 2, 0, 1, 1, 0, 0, 0, 2, 2, 2, 1]^T$|$x_3^2 \oplus x_1x_3 \oplus x_1x_2 \oplus x_1^2$|
|8|$\mathbf{Q}_8 = \mathbf{B}_2 \otimes \mathbf{I}(1) \otimes \mathbf{A}_2$|$x_3 \to 2x_1 \oplus 2x_3$|$[0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 2, 2, 1, 0, 0, 2, 1, 0, 1, 0, 2, 0, 2, 1, 2]^T$|$x_3^2 \oplus 2x_1x_3 \oplus x_1x_2 \oplus x_1^2$|
|9|$\mathbf{Q}_9 = \mathbf{Q}_1 \cdot \mathbf{Q}_5$|$x_1 \to 2x_1 \oplus x_3$,$x_1 \to x_1 \oplus x_3$|$[0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 2, 0, 0, 1, 2, 2, 0, 1, 1, 1, 2, 2, 2, 0, 0]^T$|$x_3^2 \oplus 2x_1x_2$|
|10|$\mathbf{Q}
{10} = \mathbf{Q}_1 \cdot \mathbf{P}_5 \cdot \mathbf{Q}_4$|$x_3 \to 2x_1 \oplus x_3$,$x_3 \to 2x_3 \oplus 2$,$x_1 \to x_1 \oplus x_3$|$[1, 0, 1, 1, 1, 0, 1, 2, 2, 1, 1, 0, 2, 0, 0, 0, 2, 0, 0, 1, 1, 2, 1, 2, 1, 1, 0]^T$|$1 \oplus x_3 \oplus x_3^2 \oplus x_2x_3 \oplus 2x_1 \oplus x_1x_3 \oplus x_1x_2 \oplus x_1^2$|

3. 变量置换的置换矩阵

变量置换也是一种谱不变操作,可以通过以下定义的置换矩阵来实现。对于置换两个变量 $x_i$ 和 $x_j$,定义符号矩阵:
[
\mathbf{R} = \bigotimes_{k = 1}^{n} \mathbf{M}_k
]
其中
[
\mathbf{M}_k =
\begin{cases}
\mathbf{S}, & \text{if } k = i\
\mathbf{S}^T, & \text{if } k = j\
\mathbf{I}(1), & \text{otherwise}
\end{cases}
]

这里 $\mathbf{S} =
\begin{bmatrix}
a & b & c\
d & e & f\
g & h & i
\end{bmatrix}$。

在将平方项替换为 $1$,符号乘积项替换为 $0$ 后,构造出相应的置换矩阵。

例如,当 $n = 3$ 时,定义 $\mathbf{S} {2,3} = \mathbf{I}(1) \otimes \mathbf{S} \otimes \mathbf{S}^T$:
[
\mathbf{S}
{2,3} = \mathbf{I}(1) \otimes
\begin{bmatrix}
a & b & c\
d & e & f\
g & h & i
\end{bmatrix}
\otimes
\begin{bmatrix}
a & d & g\
b & e & h\
c & f & i
\end{bmatrix}
]

经过符号计算和项替换后,得到:
[
\mathbf{Q} {S {2,3}} =
\begin{bmatrix}
1 & 0 & 0\
0 & 1 & 0\
0 & 0 & 1
\end{bmatrix}
\otimes
\begin{bmatrix}
1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\
0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0\
0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0\
0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0\
0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0\
0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0\
0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0\
0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1
\end{bmatrix}
]

如果 $\mathbf{F}$ 是函数 $f(x_1, x_2, x_3) = x_1x_2 \otimes x_3^2$ 的函数向量,且 $\mathbf{F} s = \mathbf{Q} {S_{2,3}} \cdot \mathbf{F}$,则可以构造出函数 $f_s(x_1, x_2, x_3) = x_1x_3 \otimes x_2^2$ 的函数向量 $\mathbf{F}_s$。

综上所述,通过类FFT置换矩阵进行谱不变操作,包括不相交谱平移和变量置换,可以有效地构造Bent函数。这些方法在布尔函数和三元函数的处理中具有重要的应用价值。

利用类快速傅里叶变换置换矩阵构造Bent函数(续)

4. 构造Bent函数的操作流程分析

为了更清晰地理解如何利用类FFT置换矩阵构造Bent函数,下面对整个操作流程进行详细分析。

4.1 基于特定矩阵运算的函数构造流程
  • 定义矩阵 :首先根据需求定义相关矩阵,如 $\mathbf{P}_7 = \mathbf{P}_1 \cdot \mathbf{P}_2 \cdot \mathbf{P}_3$,并按照矩阵运算规则计算出最终矩阵形式,像 $\mathbf{P}_7 = \mathbf{X}_1^T \otimes \mathbf{X}_1 \otimes \mathbf{Q}_2$。
  • 计算函数向量 :通过矩阵与原函数向量相乘得到新的函数向量,即 $\mathbf{F}_7 = \mathbf{P}_7 \cdot \mathbf{F}$。
  • 推导函数表达式 :依据谱不变操作,从原函数表达式推导出新的函数表达式,例如通过 $x_1 \to x_1 \oplus 1$,$x_2 \to x_2 \oplus 2$ 和 $x_3 \to 2x_3$ 得到 $f_7(x_1, x_2, x_3) = 2 \oplus x_3^2 \oplus x_2 \oplus 2x_1 \oplus x_1x_2$。

下面用 mermaid 流程图展示该流程:

graph TD;
    A[定义矩阵] --> B[计算矩阵形式];
    B --> C[计算函数向量];
    C --> D[推导函数表达式];
4.2 不相交谱平移的函数构造流程
  • 定义符号矩阵 :根据规则定义符号矩阵,如 $\mathbf{Q} {i,j} = \bigotimes {r = 1}^{n} \mathbf{M}_r$,其中 $\mathbf{M}_r$ 根据不同条件取值。
  • 矩阵计算与项替换 :进行符号矩阵计算,并将平方项替换为 $1$,符号乘积项替换为 $0$,得到置换矩阵。
  • 生成新函数 :用置换矩阵与原函数向量相乘得到新的函数向量,进而得到新的函数表达式。

其 mermaid 流程图如下:

graph TD;
    E[定义符号矩阵] --> F[矩阵计算];
    F --> G[项替换];
    G --> H[得到置换矩阵];
    H --> I[与原函数向量相乘];
    I --> J[生成新函数];
4.3 变量置换的函数构造流程
  • 定义符号矩阵 :按照变量置换规则定义符号矩阵,如 $\mathbf{R} = \bigotimes_{k = 1}^{n} \mathbf{M}_k$。
  • 项替换构造置换矩阵 :将平方项替换为 $1$,符号乘积项替换为 $0$,构造出相应的置换矩阵。
  • 生成置换后的函数 :用置换矩阵与原函数向量相乘得到置换后函数的函数向量。

对应的 mermaid 流程图为:

graph TD;
    K[定义符号矩阵] --> L[项替换];
    L --> M[构造置换矩阵];
    M --> N[与原函数向量相乘];
    N --> O[生成置换后的函数];
5. 不同操作对函数性质的影响

不同的谱不变操作,如不相交谱平移和变量置换,会对函数的性质产生不同的影响。

5.1 不相交谱平移的影响

不相交谱平移操作 $x_i \to k_1x_i \oplus k_2x_j$ 可以改变函数的表达式形式,从而影响函数的复杂度和表示方式。从前面的表格可以看出,不同的 $k_1$ 和 $k_2$ 取值以及不同的变量替换组合,会得到不同的函数表达式。例如,当 $k_1 = 1$,$k_2 = 1$ 且 $x_1 \to x_1 \oplus x_3$ 时,函数 $g_1(x_1, x_2, x_3) = x_3^2 \oplus x_2x_3 \oplus x_1x_2$;而当 $k_1 = 2$,$k_2 = 1$ 且 $x_1 \to 2x_1 \oplus x_3$ 时,函数 $g_5(x_1, x_2, x_3) = x_3^2 \oplus x_2x_3 \oplus 2x_1x_2$。这种变化可以用于简化函数的表示和实现,在实际应用中有助于提高计算效率。

5.2 变量置换的影响

变量置换操作可以改变函数中变量的顺序,从而改变函数的输入输出关系。以 $\mathbf{Q} {S {2,3}}$ 为例,将函数 $f(x_1, x_2, x_3) = x_1x_2 \otimes x_3^2$ 中的 $x_2$ 和 $x_3$ 进行置换,得到函数 $f_s(x_1, x_2, x_3) = x_1x_3 \otimes x_2^2$。这种操作在某些情况下可以使函数更符合特定的应用需求,例如在数据处理中,根据数据的排列顺序对函数进行变量置换,以提高数据处理的准确性和效率。

6. 实际应用场景与展望

利用类FFT置换矩阵构造Bent函数的方法在多个领域有实际应用。

6.1 密码学领域

在密码学中,Bent函数具有良好的密码学性质,如高非线性度等。通过类FFT置换矩阵构造Bent函数,可以生成更复杂、更安全的加密算法。具体操作步骤如下:
1. 选择合适的原函数,并确定其函数向量。
2. 根据加密需求选择合适的谱不变操作,如不相交谱平移或变量置换。
3. 按照前面介绍的流程构造相应的置换矩阵。
4. 用置换矩阵与原函数向量相乘得到新的函数向量,从而得到新的Bent函数。
5. 将新的Bent函数应用到加密算法中,提高加密的安全性。

6.2 信号处理领域

在信号处理中,Bent函数可以用于信号的编码和解码。利用类FFT置换矩阵构造Bent函数可以优化信号处理的性能。操作步骤如下:
1. 分析信号处理的需求,确定原函数。
2. 选择合适的谱不变操作和置换矩阵。
3. 构造新的Bent函数,并将其应用到信号处理算法中,如信号的调制和解调过程。

展望未来,随着对Bent函数研究的不断深入,利用类FFT置换矩阵构造Bent函数的方法可能会有更广泛的应用。例如,在量子计算领域,Bent函数可能会用于量子算法的设计和优化。同时,不断探索新的谱不变操作和置换矩阵形式,有望构造出具有更优良性质的Bent函数,为各个领域的发展提供更强大的支持。

总之,利用类FFT置换矩阵构造Bent函数是一种非常有价值的方法,通过深入理解其原理和操作流程,并结合实际应用场景,可以充分发挥其优势,推动相关领域的发展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值