活动介绍

密码的三子集划分性质探索

立即解锁
发布时间: 2025-08-31 00:55:40 阅读量: 10 订阅数: 35 AIGC
# 密码的三子集划分性质探索 ## 1. 密钥异或操作的BDPT的MILP模型构建 在密码分析中,构建密钥异或操作的BDPT(布尔差分划分性质)的混合整数线性规划(MILP)模型是一项重要任务。下面详细介绍如何构建该模型。 ### 1.1 相关符号说明 设 $E_r$ 是 $r$ 轮分组密码,$f_i$ 是第 $i$ 轮函数,$f_{i}^{k}$ 是第 $i$ 轮密钥异或操作。密钥异或操作的初始和输出BDPT分别表示为 $(K_{i - 1}^*, L_{i - 1}^*)$ 和 $(K_i, L_i)$。 ### 1.2 分解密钥异或操作 根据BDPT规则1,将 $f_{i}^{k}$ 分解为两个操作 $f_{i}^{1}$ 和 $f_{i}^{2}$: - **$f_{i}^{1}$ 操作**:从 $L_{i - 1}^*$ 的每个元素生成一些新元素。 - **$f_{i}^{2}$ 操作**:将新向量和 $K_{i - 1}^*$ 中的向量包含在 $K_i$ 中。 ### 1.3 建模 $f_{i}^{1}$ 操作 在许多密码中,轮密钥仅与块的一部分进行异或操作。不失一般性,假设轮密钥与最左边的 $s$($0 \leq s \leq n - 1$)位进行异或。以 $L_{i - 1}^* \subseteq F_{2}^{4}$ 且 $s = 2$ 为例,即轮密钥与最左边的2位进行异或。根据BDPT规则1,$f_{i}^{1}$ 函数从 $l = (l_0, l_1, l_2, l_3)$ 创建 $l' = (l_0', l_1', l_2', l_3')$,对于每个满足 $l_i = 0$($i \in \{0, 1\}$)的向量 $l \in L_{i - 1}^*$,有 $l_i' = l_i \vee 1$,且对于所有 $j = 2, 3$,$l_j' = l_j$。 对应的传播表如下: | $(l_0, l_1, l_2, l_3)$ | $(l_0', l_1', l_2', l_3')$ | | --- | --- | | $(0, 0, l_2, l_3)$ | $(0, 1, l_2, l_3), (1, 0, l_2, l_3), (1, 1, l_2, l_3)$ | | $(0, 1, l_2, l_3)$ | $(1, 1, l_2, l_3)$ | | $(1, 0, l_2, l_3)$ | $(1, 1, l_2, l_3)$ | | $(1, 1, l_2, l_3)$ | X | 线性不等式描述如下: \[ \begin{cases} l_j' \geq l_j, & \text{for } j = 0, 1 \\ l_j' = l_j, & \text{for } j = 2, 3 \\ 2\sum_{j = 0}^{1} l_j' - \sum_{j = 0}^{1} l_j \geq 2 \\ \sum_{j = 0}^{3} l_j' - \sum_{j = 0}^{3} l_j \geq 1 \end{cases} \] 其中 $l_0', l_1', l_2', l_3', l_0, l_1, l_2, l_3$ 是二进制数。 对于 $n$ 位分组密码,当 $L_{i - 1}^* \subseteq F_{2}^{n}$ 且轮密钥与最左边的 $s$ 位进行异或时,描述 $l \xrightarrow{f_{i}^{1}} l'$ 轨迹的线性不等式如下: \[ \begin{cases} l_j' \geq l_j, & \text{for } j = 0, 1, \cdots, s - 1 \\ l_j' = l_j, & \text{for } j = s, s + 1, \cdots, n - 1 \\ s\sum_{j = 0}^{s - 1} l_j' - (s - 1)\sum_{j = 0}^{s - 1} l_j \geq s \\ \sum_{j = 0}^{n - 1} l_j' - \sum_{j = 1}^{n} l_j \geq 1 \end{cases} \] 其中 $l_0', l_1', \cdots, l_{n - 1}', l_0, l_1, \cdots, l_{n - 1}$ 是二进制数。 ### 1.4 建模 $f_{i}^{2}$ 操作 对集合 $L_{i - 1}^*$ 的每个元素应用 $f_{i}^{1}$ 后,得到集合 $L_{i - 1}'$: $L_{i - 1}' = \{l' \in F_{2}^{n} | f_{i}^{1}(l) = l', \forall l \in L_{i - 1}^*\}$ 根据BDPT规则1,$f_{i}^{2}(K_{i - 1}^*, L_{i - 1}') = K_{i - 1}^* \cup L_{i - 1}' = K_i$。为了建模 $f_{i}^{2}$,定义函数 $g : (F_{2}^{2} \setminus \{(0, 0), (1, 1)\}) \times K_{i - 1}^* \times L_{i - 1}' \to K_i$ 如下: $g(\lambda_0, \lambda_1, k^*, l') = (\lambda_0 \wedge k_0^*, \cdots, \lambda_0 \wedge k_{n - 1}^*) \oplus (\lambda_1 \wedge l_0', \cdots, \lambda_1 \wedge l_{n - 1}')$ 其中 $\lambda = (\lambda_0, \lambda_1) \in F_{2}^{2} \setminus \{(0, 0), (1, 1)\}$,$k^* = (k_0^*, \cdots, k_{n - 1}^*)$,$l' = (l_0', \cdots, l_{n - 1}')$。 为了构建描述 $g$ 函数轨迹的线性不等式,首先需要构建描述 $(a, b) \xrightarrow{\wedge} c$ 传播的线性不等式: \[ \begin{cases} a - c \geq 0 \\ b - c \geq 0 \\ a + b - c \leq 1 \end{cases} \] 其中 $a, b, c$ 是二进制数。 使用上述不等式和 $g$ 函数的定义,可以得到描述 $g$ 函数传播的不等式: \[ \begin{cases} \lambda_0 - p_j \geq 0, & \text{for } j = 0, 1, \cdots, n - 1 \\ k_j^* - p_j \geq 0, & \text{for } j = 0, 1, \cdots, n - 1 \\ \lambda_0 + k_j^* - p_j \leq 1, & \text{for } i = 0, 1, \cdots, n - 1 \\ \lambda_1 - q_j \geq 0, & \text{for } i = 0, 1, \cdots, n - 1 \\ l_j' - q_j \geq 0, & \text{for } i = 0, 1, \cdots, n - 1 \\ \lambda_1 + l_j' - q_j \leq 1, & \text{for } i = 0, 1, \cdots, n - 1 \\ p_j + q_j - k_j = 0, & \text{for } j = 0, 1, \cdots, n - 1 \\ \lambda_0 + \lambda_1 = 1 \end{cases} \] 其中 $p_0, \cdots, p_{n - 1}, q_0, \cdots, q_{n - 1}, l_0', \cdots, l_{n - 1}', k_0, \cdots, k_{n - 1}, k_0^*, \cdots, k_{n - 1}^*, \lambda_0, \lambda_1$ 是二进制数,$p = (p_0, p_1, \cdots, p_{n - 1})$,$q = (q_0, q_1, \cdots, q_{n - 1})$ 是辅助变量。 综上,上述不等式描述了密钥异或操作的完整MILP模型。 ### 1.5 r轮函数的MILP模型构建 对于基于上述操作的所有函数,我们最终得到一组描述一轮BDPT传播的线性不等式。为了构建 $r
corwn 最低0.47元/天 解锁专栏
赠100次下载
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

史东来

安全技术专家
复旦大学计算机硕士,资深安全技术专家,曾在知名的大型科技公司担任安全技术工程师,负责公司整体安全架构设计和实施。
最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看
立即解锁

专栏目录

最新推荐

使用PyTorch构建电影推荐系统

### 使用 PyTorch 构建电影推荐系统 在当今数字化时代,推荐系统在各个领域都发挥着至关重要的作用,尤其是在电影推荐领域。本文将详细介绍如何使用 PyTorch 构建一个电影推荐系统,从数据处理到模型训练,再到最终的推荐生成,为你呈现一个完整的推荐系统构建流程。 #### 1. 数据探索与处理 首先,我们需要对 MovieLens 数据集进行探索和处理。该数据集包含用户对电影的评分信息,其中存在一些缺失的评分值,用 NaN 表示。我们的目标是利用非空评分训练推荐系统,并预测这些缺失的评分,从而为每个用户生成电影推荐。 以下是处理数据集的代码: ```python import p

利用Kaen实现PyTorch分布式训练及超参数优化

### 利用Kaen实现PyTorch分布式训练及超参数优化 #### 1. 启用PyTorch分布式训练支持 在进行模型训练时,我们可以使用Kaen框架来支持PyTorch的分布式训练。以下是相关代码示例: ```python train_glob = os.environ['KAEN_OSDS_TRAIN_GLOB'] if 'KAEN_OSDS_TRAIN_GLOB' in os.environ else 'https://raw.githubusercontent.com/osipov/smlbook/master/train.csv' val_glob = os.environ['

利用PyTorch进行快速原型开发

### 利用 PyTorch 进行快速原型开发 在深度学习领域,快速搭建和验证模型是非常重要的。本文将介绍两个基于 PyTorch 的高级库:fast.ai 和 PyTorch Lightning,它们可以帮助我们更高效地进行模型的训练和评估。 #### 1. 使用 fast.ai 进行模型训练和评估 fast.ai 是一个基于 PyTorch 的高级库,它可以让我们在几分钟内完成模型的训练设置。下面是使用 fast.ai 训练和评估手写数字分类模型的步骤: ##### 1.1 模型训练日志分析 在训练过程中,我们可以看到冻结网络的第一个训练周期,然后是解冻网络的两个后续训练周期。日志中

电力电子中的Simulink应用:锁相环、静止无功补偿器与变流器建模

# 电力电子中的Simulink应用:锁相环、静止无功补偿器与变流器建模 ## 1. 锁相环(PLL) ### 1.1 锁相环原理 锁相环(PLL)是一种控制算法,用于确定正弦输入的频率和相位角。它主要用于两个系统之间的频率匹配,匹配完成后会存在一个恒定的相位差,从而实现相位“锁定”。PLL由相位检测机制、PID控制器和用于生成相位角信息的振荡器组成。此外,系统中还包含一个低通滤波器,用于获取正弦输入的频率信息。在柔性交流输电系统(FACTS)设备中,PLL增益对稳定系统性能起着至关重要的作用。 ### 1.2 Simulink环境下的PLL设置 为了直观展示PLL如何反映频率和相位的变化

MATLAB绘图类型全解析

# MATLAB 绘图类型全解析 ## 1. 阶梯图(Stairstep Graph) 阶梯图是 MATLAB 中一种常见的绘图类型,用于展示数据的阶梯状变化。以下是关于阶梯图的详细介绍: ### 1.1 绘图格式 - `stairs(Y)`:若 `Y` 是向量,则绘制一条阶梯线;若 `Y` 是矩阵,则为矩阵的每一列绘制一条阶梯线。 - `stairs(X,Y)`:在 `X` 指定的位置绘制 `Y` 中的元素。`X` 和 `Y` 必须是相同大小的向量或矩阵,此外,`X` 可以是行向量或列向量,而 `Y` 必须是行数等于 `length(X)` 的矩阵。 ### 1.2 示例代码 ```ma

多视图检测与多模态数据融合实验研究

# 多视图检测与多模态数据融合实验研究 ## 1. 多视图检测实验 ### 1.1 实验数据集 实验参考了Wildtrack数据集和MultiviewX数据集,这两个数据集的特点如下表所示: | 数据集 | 相机数量 | 分辨率 | 帧数 | 区域面积 | | ---- | ---- | ---- | ---- | ---- | | Wildtrack | 7 | 1080×1920 | 400 | 12×36 m² | | MultiviewX | 6 | 1080×1920 | 400 | 16×25 m² | ### 1.2 评估指标 为了评估算法,使用了精度(Precision)、

深度学习量化与处理器IP核使用指南

### 深度学习量化与处理器IP核使用指南 #### 1. 量化工作流程先决条件 在使用深度学习工具箱模型量化库对深度学习网络进行量化、模拟和部署时,所需的产品取决于量化工作流程各阶段的选择。 ##### 1.1 所有量化工作流程的先决条件 以下要求适用于量化工作流程的所有阶段: - 深度学习工具箱 - 深度学习工具箱模型量化库 ##### 1.2 支持的网络和层 不同执行环境支持的网络和层如下: | 执行环境 | 支持的网络和层描述 | | ---- | ---- | | GPU | “支持的网络、层和类”(GPU Coder) | | FPGA | “支持的网络、层、板卡和工具” |

利用gRPCAPI对RoadRunner进行编程控制

### 利用 gRPC API 对 RoadRunner 进行编程控制 #### 1. 连接到 RoadRunner API 服务器 若要使用 RoadRunner API,首先需与 RoadRunner API 服务器建立网络连接。该服务器是本地 RoadRunner 安装的一部分,在打开项目时会自动启动。 可通过调用本地 RoadRunner 安装中的 `AppRoadRunner` 可执行文件,以编程方式打开 RoadRunner 并启动 API 服务器。此可执行文件包含命令行选项,能让你指定以下内容: - RoadRunner 打开的项目 - RoadRunner API 服务器运

PyTorch神经网络构建与训练全解析

### PyTorch 神经网络构建与训练全解析 #### 1. 特征标准化 在很多情况下,对特征进行标准化是一个很好的做法,即使并非总是必要(例如当所有特征都是二元特征时)。标准化的目的是让每个特征的值具有均值为 0 和标准差为 1 的特性。使用 scikit-learn 的 `StandardScaler` 可以轻松完成这一操作。 然而,如果你在创建了 `requires_grad=True` 的张量后需要进行标准化操作,就需要在 PyTorch 中直接实现,以免破坏计算图。以下是在 PyTorch 中实现特征标准化的代码: ```python import torch # Creat

模糊推理系统对象介绍

# 模糊推理系统对象介绍 ## 1. fistree 对象 ### 1.1 概述 fistree 对象用于表示相互连接的模糊推理系统树。通过它可以创建一个相互关联的模糊推理系统网络。 ### 1.2 创建方法 可以使用以下语法创建 fistree 对象: ```matlab fisTree = fistree(fis,connections) fisTree = fistree( ___ ,'DisableStructuralChecks',disableChecks) ``` - `fisTree = fistree(fis,connections)`:创建一个相互连接的模糊推理系统对象