30、利用类FFT置换矩阵构造Bent函数

利用类FFT置换矩阵构造Bent函数

在数字信号处理和密码学等领域,Bent函数有着重要的应用。本文将介绍如何利用类FFT置换矩阵来构造Bent函数,通过对相关矩阵的定义、操作和示例的讲解,帮助大家深入理解这一构造方法。

1. 类FFT置换矩阵概述

类FFT置换矩阵源于离散傅里叶变换(DFT)矩阵的特定分解,这种分解引出了快速傅里叶变换(FFT)算法。这些置换矩阵可高效地通过修改给定的Bent函数来构造新的Bent函数。其效率借鉴了FFT算法,但存在一定限制,即通过置换得到的Bent函数,对于二进制函数,非零值的数量相同;对于多值函数,组成相同。不过,通过编码可以构造出非零值数量不同的二进制Bent函数和组成不同的多值Bent函数。

2. 二进制Bent函数的类FFT置换矩阵

所有给定变量数量的二进制Bent函数集合,可根据其真值向量中两种可能的非零值数量,分为两个子集。子集中的函数通过置换相互关联,因为它们的非零元素数量相等。有许多置换矩阵可将给定的二进制Bent函数转换为具有相同非零值数量的另一个二进制Bent函数。其中一些置换矩阵的结构与描述Cooley - Tukey快速傅里叶变换(FFT)的Good - Thomas分解步骤的稀疏因子矩阵结构相对应。

定义两个基本矩阵:

P(1) =
[ 0 1
  1 0
]
I(1) =
[ 1 0
  0 1
]

对于n个变量的函数,相对于第i个变量定义$(2^n × 2^n)$置换矩阵:

Pi(n) =
n
Θ
j=1
D j,
D j =
{ P(1), j = i,
  I(1), otherwise.

矩阵$P_i(n)$的结构与FFT中的因子矩阵$C_i(n)$有很强的相似性,这也是称其为类FFT置换矩阵的原因。这种相似性在于用基本置换矩阵$P(1)$替换了基本变换矩阵$W(1)$。

从变量极化($x_i → x_i ⊕ 1$)的谱不变操作在谱域的定义可知,对给定函数$f$的真值向量$F$应用置换矩阵$P_i$可实现该操作。对分配给不同变量的置换矩阵进行递归应用,将产生各种Bent函数。例如,对分配给变量$x_i$和$x_j$的置换矩阵$P_i$和$P_j$进行递归应用,相当于与通过相应变量的置换矩阵相乘得到的置换矩阵$P_{i,j}$相乘。

3. 示例:利用类FFT置换矩阵构造Bent函数

考虑函数$f(x_1, x_2, x_3, x_4) = x_2 ⊕ x_3 ⊕ x_4 ⊕ x_1x_2 ⊕ x_2x_4 ⊕ x_3x_4$,其真值向量为$F = [0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0]^T$,编码$(0, 1) → (1, -1)$后的Walsh谱为$S_f = [-4, 4, 4, 4, -4, 4, 4, 4, -4, 4, -4, -4, 4, -4, 4, 4]^T$。

以下是一些随机选择的情况:
1. 矩阵$P(1)$在Kronecker积中的两个不同位置
2. 两个矩阵$P(1)$同时在两个不同位置
3. 三个矩阵$P(1)$同时在三个不同位置

具体示例见表1:
| 情况 | 操作 | 置换矩阵 | 真值向量 | Walsh谱 | 函数表达式 |
| ---- | ---- | ---- | ---- | ---- | ---- |
| 1 | $x_2 → x_2 ⊕ 1$ | $P_2 = I(1) ⊗ P(1) ⊗ I(1) ⊗ I(1)$ | $F_2 = [1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1]^T$ | $S_{f2} = [-4, 4, 4, 4, 4, -4, -4, -4, -4, 4, -4, -4, -4, 4, -4, -4]^T$ | $f_2 = 1 ⊕ x_1 ⊕ x_2 ⊕ x_3 ⊕ x_1x_2 ⊕ x_2x_4 ⊕ x_3x_4$ |
| 2 | $x_4 → x_4 ⊕ 1$ | $P_4 = I(1) ⊗ I(1) ⊗ I(1) ⊗ P(1)$ | $F_4 = [1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1]^T$ | $S_{f4} = [-4, -4, 4, -4, -4, -4, 4, -4, -4, -4, -4, 4, 4, 4, 4, -4]^T$ | $f_4 = 1 ⊕ x_4 ⊕ x_1x_2 ⊕ x_2x_4 ⊕ x_3x_4$ |
| 3 | $x_2 → x_2 ⊕ 1$ 在 $x_1 → x_1 ⊕ 1$ 之后 | $Q_1 = P(1) ⊗ P(1) ⊗ I(1) ⊗ I(1)$ | $F_5 = [0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1]^T$ | $S_{f5} = [-4, 4, 4, 4, 4, -4, -4, -4, 4, -4, 4, 4, 4, -4, 4, 4]^T$ | $f_5 = x_1 ⊕ x_3 ⊕ x_1x_2 ⊕ x_2x_4 ⊕ x_3x_4$ |
| 4 | $x_3 → x_3 ⊕ 1$ 在 $x_2 → x_2 ⊕ 1$ 之后 | $Q_2 = I(1) ⊗ P(1) ⊗ P(1) ⊗ I(1)$ | $F_6 = [0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1]^T$ | $S_{f6} = [-4, 4, -4, -4, 4, -4, 4, 4, -4, 4, 4, 4, -4, 4, 4, 4]^T$ | $f_6 = x_1 ⊕ x_2 ⊕ x_3 ⊕ x_4 ⊕ x_1x_2 ⊕ x_2x_4 ⊕ X3x_4$ |
| 5 | $x_3 → x_3 ⊕ 1$ 在 $x_2 → x_2 ⊕ 1$ 到 $x_1 → x_1 ⊕ 1$ 之后 | $R_1 = P(1) ⊗ P(1) ⊗ P(1) ⊗ I(1)$ | $F_{11} = [1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1]^T$ | $S_{f11} = [-4, 4, -4, -4, 4, -4, 4, 4, 4, -4, -4, -4, 4, -4, -4, -4]^T$ | $f_{11} = 1 ⊕ x_1 ⊕ x_3 ⊕ x_4 ⊕ x_1x_2 ⊕ x_2x_4 ⊕ x_3x_4$ |
| 6 | $x_4 → x_4 ⊕ 1$ 在 $x_3 → x_3 ⊕ 1$ 到 $x_2 → x_2 ⊕ 1$ 之后 | $R_4 = I(1) ⊗ P(1) ⊗ P(1) ⊗ P(1)$ | $F_{14} = [1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0]^T$ | $S_{f14} = [-4, -4, -4, 4, 4, 4, 4, -4, -4, -4, 4, -4, -4, -4, 4, -4]^T$ | $f_{14} = 1 ⊕ x_2 ⊕ x_4 ⊕ x_1x_2 ⊕ x_2x_4 ⊕ x_3x_4$ |

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

前面讨论了允许同时对变量子集取反的类FFT置换矩阵,接下来讨论执行不相交谱平移($x_i → x_i ⊕ x_k$)的类FFT置换矩阵。

考虑两个符号$(2 × 2)$矩阵:

L(1) =
[ a b
  b a
]
T(1) =
[ a 0
  0 b
]

定义一个$(2^n × 2^n)$辅助符号矩阵:

Ai,k(n) =
n
Θ
j=1
A j,
A j =
⎧
⎨
⎩
L(1), j = i,
T(1), j = k,
I(1), otherwise.

置换矩阵$Q_{i,k}(n)$定义为从$A_{i,k}(n)$派生的矩阵,其中符号$a^2$和$b^2$替换为1,混合字母$ab$和$ba$替换为0。

从谱域中谱不变操作的定义可知,置换矩阵$Q_{i,k}(n)$执行将变量$x_i$替换为$x_i ⊕ x_k$的操作。

以下是几个示例:
- 示例1
确定符号矩阵$A_{1,2} = L(1) ⊗ T(1) ⊗ I(1) ⊗ I(1)$,经过符号计算和元素替换后,得到置换矩阵:

Q_{1,2} =
⎡
⎢⎢⎣
I(2) 0(2) 0(2) 0(2)
0(2) 0(2) 0(2) I(2)
0(2) 0(2) I(2) 0(2)
0(2) I(2) 0(2) 0(2)
⎤
⎥⎥⎦

其中$I(2)$和$0(2)$是$(4 × 4)$单位矩阵和零矩阵。将$Q_{1,2}$应用于示例中的初始函数的真值向量$F$,得到新函数的真值向量$F_{1,2} = [0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1]^T$,其Walsh谱为$S_{f1,2} = [-4, 4, 4, 4, -4, 4, 4, 4, 4, -4, 4, 4, -4, 4, -4, -4]^T$,表明它是Bent函数,函数表达式为$f_{1,2}(x_1, x_2, x_3, x_4) = x_3 ⊕ x_4 ⊕ x_3x_4 ⊕ x_2x_4 ⊕ x_1x_2$。该函数可通过替换$x_1 → x_1 ⊕ x_2$从原函数得到。

  • 示例2
    定义符号矩阵$A_{2,1} = T(1) ⊗ L(1) ⊗ I(1) ⊗ I(1)$,经过处理后得到置换矩阵:
Q_{2,1} =
⎡
⎢⎢⎣
I(2) 0(2) 0(2) 0(2)
0(2) I(2) 0(2) 0(2)
0(2) 0(2) 0(2) I(2)
0(2) 0(2) I(2) 0(2)
⎤
⎥⎥⎦

将$Q_{2,1}$应用于示例中的函数向量,得到新的Bent函数,其函数向量为$F_{2,1} = [0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1]^T$,Walsh谱为$S_{f2,1} = [-4, 4, 4, 4, 4, -4, 4, 4, -4, 4, -4, -4, -4, 4, 4, 4]^T$,函数表达式为$f_{1,3}(x_1, x_2, x_3, x_4) = x_4 ⊕ x_3 ⊕ x_3x_4 ⊕ x_2 ⊕ x_2x_4 ⊕ x_1x_4 ⊕ x_1x_2$。该函数可通过替换$x_2 → x_2 ⊕ x_1$从原函数得到。

  • 示例3
    考虑矩阵$A_{2,4} = I(1) ⊗ L(1) ⊗ I(1) ⊗ T(1)$,经过符号计算和元素替换后,得到置换矩阵:
Q_{2,4} =
⎡
⎢⎢⎣
C D 0 0
D C 0 0
0 0 C D
0 0 D C
⎤
⎥⎥⎦

其中

C =
⎡
⎢⎢⎣
1 0 0 0
0 0 0 0
0 0 1 0
0 0 0 0
⎤
⎥⎥⎦
D =
⎡
⎢⎢⎣
0 0 0 0
0 1 0 0
0 0 0 0
0 0 0 1
⎤
⎥⎥⎦

将$Q_{2,4}$应用于初始函数的函数向量,得到新函数的函数向量$F_{2,4} = [0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1]^T$,Walsh谱为$S_{f2,4} = [-4, 4, 4, 4, 4, -4, 4, 4, -4, 4, -4, -4, -4, 4, 4, 4]^T$,函数表达式为$f_{1,3}(x_1, x_2, x_3, x_4) = x_4 ⊕ x_3 ⊕ x_3x_4 ⊕ x_2 ⊕ x_2x_4 ⊕ x_1x_4 ⊕ x_1x_2$。该函数可通过替换$x_2 → x_2 ⊕ x_4$从原函数得到。

通过这些示例可以看出,利用类FFT置换矩阵可以有效地构造出满足特定条件的Bent函数,为相关领域的研究和应用提供了有力的工具。

利用类FFT置换矩阵构造Bent函数

4. 更多不相交谱平移置换矩阵示例
  • 示例4
    考虑矩阵$A_{4,2} = I(1) ⊗ T(1) ⊗ I(1) ⊗ L(1)$,经过符号计算和将元素替换为0和1后,得到置换矩阵:
Q_{4,2} =
⎡
⎢⎢⎣
I(2) 0(2) 0(2) 0(2)
0(2) C(2) 0(2) 0(2)
0(2) 0(2) I(2) 0(2)
0(2) 0(2) 0(2) C(2)
⎤
⎥⎥⎦

其中

C(2) =
⎡
⎢⎢⎣
0 1 0 0
1 0 0 0
0 0 0 1
0 0 1 0
⎤
⎥⎥⎦

将此矩阵应用于初始函数的函数向量,得到新函数的函数向量$F_{2,4} = [0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1]^T$,其Walsh谱为$S_{f2,4} = [-4, 4, 4, 4, -4, 4, 4, 4, -4, -4, -4, 4, 4, 4, 4, -4]^T$,函数表达式为$f_{1,3}(x_1, x_2, x_3, x_4) = x_4 ⊕ x_3 ⊕ x_3x_4 ⊕ x_2 ⊕ x_2x_4 ⊕ x_2x_3 ⊕ x_1x_2$,该函数可通过替换$x_4 → x_4 ⊕ x_2$从原函数得到。

  • 示例5
    考虑由两个执行不相交谱平移的置换矩阵$Q_{1,4}$和$Q_{2,3}$相乘得到的矩阵$Q_{1,4,2,3} = Q_{1,4} · Q_{2,3}$,它可以写成如下紧凑形式:
Q_{1,4,2,3} =
⎡
⎢⎢⎣
A(2) B(2) C(2) D(2)
B(2) A(2) D(2) C(2)
C(2) D(2) A(2) B(2)
D(2) C(2) B(2) A(2)
⎤
⎥⎥⎦

其中

A(2) =
⎡
⎢⎢⎣
1 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
⎤
⎥⎥⎦
B(2) =
⎡
⎢⎢⎣
0 0 0 0
0 0 0 0
0 0 1 0
0 0 0 0
⎤
⎥⎥⎦
C(2) =
⎡
⎢⎢⎣
0 0 0 0
0 1 0 0
0 0 0 0
0 0 0 0
⎤
⎥⎥⎦
D(2) =
⎡
⎢⎢⎣
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 1
⎤
⎥⎥⎦

将此矩阵应用于初始函数$f$,得到新函数的真值向量$F_{1,4,2,3} = [0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1]^T$,Walsh谱为$S_{f 1,4,2,3} = [-4, 4, 4, 4, 4, 4, -4, 4, 4, -4, -4, -4, 4, 4, -4, 4]^T$。

5. 操作步骤总结

以下是利用类FFT置换矩阵构造Bent函数的具体操作步骤:
1. 定义基本矩阵
- 定义基本置换矩阵$P(1)$和单位矩阵$I(1)$:

P(1) =
[ 0 1
  1 0
]
I(1) =
[ 1 0
  0 1
]
  1. 构造置换矩阵
    • 对于二进制Bent函数,相对于第$i$个变量定义$(2^n × 2^n)$置换矩阵$P_i(n)$:
Pi(n) =
n
Θ
j=1
D j,
D j =
{ P(1), j = i,
  I(1), otherwise.
- 对于不相交谱平移,定义符号矩阵$L(1)$和$T(1)$:
L(1) =
[ a b
  b a
]
T(1) =
[ a 0
  0 b
]
- 定义辅助符号矩阵$A_{i,k}(n)$:
Ai,k(n) =
n
Θ
j=1
A j,
A j =
⎧
⎨
⎩
L(1), j = i,
T(1), j = k,
I(1), otherwise.
- 从$A_{i,k}(n)$派生置换矩阵$Q_{i,k}(n)$,将符号$a^2$和$b^2$替换为1,混合字母$ab$和$ba$替换为0。
  1. 应用置换矩阵
    • 选择一个初始的Bent函数,得到其真值向量$F$。
    • 根据需要选择合适的置换矩阵(如$P_i(n)$或$Q_{i,k}(n)$)。
    • 将置换矩阵应用于真值向量$F$,得到新函数的真值向量。
  2. 计算Walsh谱和函数表达式
    • 计算新函数的Walsh谱,判断其是否仍为Bent函数。
    • 根据新的真值向量确定新函数的表达式。
6. 总结与展望

通过上述内容可以看出,类FFT置换矩阵为构造Bent函数提供了一种有效的方法。利用这些矩阵,我们可以从已知的Bent函数出发,通过简单的矩阵运算得到新的Bent函数,并且这些新函数在二进制情况下具有相同数量的非零值,在多值情况下具有相同的组成。

在实际应用中,这种构造方法可以为密码学、信号处理等领域提供更多的函数选择,以满足不同的需求。例如,在密码学中,Bent函数的良好性质可以用于设计更安全的加密算法。

未来,我们可以进一步研究如何优化这些置换矩阵的构造和应用,以提高构造效率和得到更多具有特殊性质的Bent函数。同时,也可以探索这些方法在其他领域的应用可能性,为相关领域的发展提供更多的支持。

以下是利用类FFT置换矩阵构造Bent函数的流程mermaid图:

graph LR
    A[定义基本矩阵P(1)和I(1)] --> B[构造置换矩阵Pi(n)或Qi,k(n)]
    B --> C[选择初始Bent函数并获取真值向量F]
    C --> D[应用置换矩阵到F]
    D --> E[计算新函数的Walsh谱]
    E --> F{是否为Bent函数?}
    F -- 是 --> G[确定新函数表达式]
    F -- 否 --> B

通过这个流程图,我们可以更清晰地看到利用类FFT置换矩阵构造Bent函数的整个过程,有助于我们更好地理解和应用这一方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值