含错方程与非线性滤波模型的逼近攻击

news/2025/11/9 17:10:47/文章来源:https://www.cnblogs.com/luminescence/p/19204498

对序列密码线性滤波模型的攻击:https://www.cnblogs.com/luminescence/p/19204373

一、问题描述

1. 非线性滤波模型结构

L 级本原 LFSR

状态序列 \(S^{(i)} = (s_0^{(i)}, s_1^{(i)}, ..., s_{L-1}^{(i)})\)

非线性变换 \(g: \mathbb{Z}_2^n \rightarrow \mathbb{Z}_2\)

乱数输出 \(d_i = g(s_{j_1}^{(i)}, s_{j_2}^{(i)}, ..., s_{j_n}^{(i)})\)

2. 攻击者已知信息

  • 公开:LFSR结构(反馈多项式)、非线性函数\(g(x)\)、滤波位置\((j_1,...,j_n)\)
  • 保密:LFSR的初始状态 \(Key = (k_{L-1}, k_{L-2}, ..., k_0)\)
  • 可观测:乱数序列 \(d_0, d_1, d_2, ...\)

3. 攻击目标

从乱数序列恢复LFSR的初始状态

二、线性逼近的核心思想

1. 基本

即使\(g(x)\)是非线性的,也可能存在线性函数\(L(x) = \alpha \cdot x\),使得:

\(P(g(x) = L(x)) = p \neq 0.5\)

\(g(x)\)与某个线性函数以偏离1/2的概率相等。

2. 数学表述

寻找\(\alpha \in \mathbb{Z}_2^n, \beta \in \mathbb{Z}_2\),使得:

\(P(\beta \cdot d_i = \alpha \cdot x^{(i)}) = p = \frac{1}{2} + \frac{1}{2}\rho\)

其中\(\rho\)称为优势,\(|\rho|\)越大,逼近效果越好。

三、Walsh谱分析

寻找最佳线性逼近

1. Walsh循环谱定义

对于多输出函数\(g: \mathbb{Z}_2^n \rightarrow \mathbb{Z}_2\),定义:

\(W_g(\alpha \rightarrow \beta) = \frac{1}{2^n} \sum_{x \in \mathbb{Z}_2^n} (-1)^{\beta \cdot g(x) \oplus \alpha \cdot x}\)

2. 物理意义

  • \(W_g(\alpha \rightarrow \beta)\) 衡量了线性函数\(\alpha \cdot x\)\(\beta \cdot g(x)\)的相关性
  • 优势\(\rho\)与Walsh谱的关系:

\(\rho_{\alpha,\beta} = W_g(\alpha \rightarrow \beta)\)

\(p = \frac{1}{2} + \frac{1}{2}W_g(\alpha \rightarrow \beta)\)

3. 寻找最佳逼近

遍历所有非零的\(\alpha \in \mathbb{Z}_2^n, \beta \in \mathbb{Z}_2\),找到使\(|W_g(\alpha \rightarrow \beta)|\)最大的对\((\alpha, \beta)\)

最佳线性逼近:

\(\beta \cdot d_i \approx \alpha \cdot x^{(i)} \quad \text{以概率 } p = \frac{1}{2} + \frac{1}{2}\rho_{max}\)

四、建立含错方程组

1. 状态序列的线性表示

LFSR状态转移:\(S^{(i)} = A^i \cdot Key\)

其中\(A\)是LFSR的状态转移矩阵。

滤波输入:\(x^{(i)} = (s_{j_1}^{(i)}, s_{j_2}^{(i)}, ..., s_{j_n}^{(i)})\)

2. 线性逼近的系数计算

\(\alpha \cdot x^{(i)} = (\alpha_1, \alpha_2, ..., \alpha_n) \cdot (s_{j_1}^{(i)}, s_{j_2}^{(i)}, ..., s_{j_n}^{(i)})\)

每个\(s_{j_k}^{(i)}\)都可以表示为\(A^i Key\)的线性组合。

定义向量\(b^{(i)}\),使得:

\(\alpha \cdot x^{(i)} = b^{(i)} \cdot Key\)

其中\(b^{(i)}\)是已知的\(L\)维向量。

3. 含错方程组

根据线性逼近,对于\(i = i_1, i_2, ..., i_{n+\varepsilon}\)

\[\begin{cases} b^{(i_1)} \cdot Key \approx \beta \cdot d_{i_1} \quad (\text{以概率 } p)\\ b^{(i_2)} \cdot Key \approx \beta \cdot d_{i_2} \quad (\text{以概率 } p)\\ \vdots \\ b^{(i_{n+\varepsilon})} \cdot Key \approx \beta \cdot d_{i_{n+\varepsilon}} \quad (\text{以概率 } p) \end{cases} \]

五、求解含错方程组

1. 问题重述

已知:

  • 系数矩阵:\(B = [b^{(i_1)}; b^{(i_2)}; ...; b^{(i_{n+\varepsilon})}]\) (大小为\((N+\varepsilon) \times L\))
  • 观测值:\(b_1, b_2, ..., b_{N+\varepsilon}\),其中\(b_i = \beta \cdot d_{i_i}\)
  • 概率:\(P(b^{(i)} \cdot Key = b_i) = p\)

求解:\(Key \in \mathbb{Z}_2^L\)

2. 求解方法

方法一:穷举搜索

for candidate in all_possible_keys:match_count = 0for i in range(N):if B[i]·candidate == b[i]:match_count += 1if match_count > threshold:return candidate
  • 复杂度:\(O(2^L \cdot N)\)
  • 成功条件:\(N \approx c/\rho^2\),其中\(c\)为常数

方法二:快速相关攻击

利用LFSR的线性递推关系,将问题转化为译码问题:

  • 将LFSR状态看作信息位
  • 将非线性变换+噪声看作信道
  • 使用迭代译码算法

优势:复杂度可降至\(O(2^{\alpha L})\),其中\(\alpha < 1\)

攻击实例分析

场景设置

  • LFSR:级数\(L=40\),本原多项式已知
  • 滤波函数:\(g: \mathbb{Z}_2^4 \rightarrow \mathbb{Z}_2\),从4个固定位置抽取比特
  • 观测:获得10,000个乱数比特

攻击步骤

步骤1:Walsh谱分析

计算\(g(x)\)的Walsh谱,发现:

\(W_g(\alpha=(1,0,1,1) \rightarrow \beta=1) = 0.1\)

⇒ 优势\(\rho = 0.1\),正确概率\(p = 0.55\)

步骤2:建立方程组

收集\(N = L + 1000 = 1040\)个方程:

\[\begin{cases} b^{(0)} \cdot Key \approx d_0\\ b^{(1)} \cdot Key \approx d_1\\ \vdots \\ b^{(1039)} \cdot Key \approx d_{1039} \end{cases} \]

步骤3:求解

使用穷举法:

  • 期望匹配数:正确密钥\(\approx 1040 \times 0.55 = 572\),错误密钥\(\approx 1040 \times 0.5 = 520\)
  • 设置阈值:550
  • 搜索空间:\(2^{40} \approx 10^{12}\),在现代计算机上可行

对抗线性逼近攻击的设计策略

1. 选用抗逼近的非线性函数

目标:使\(\max|W_g(\alpha \rightarrow \beta)|\)最小

理想选择:bent函数

  • 性质:\(\forall \alpha,\beta\)\(|W_g(\alpha \rightarrow \beta)| = 2^{-n/2}\)
  • 效果:优势\(\rho\)最小化,攻击所需方程数最大化

2. 增加滤波输入维度

  • 增大\(n\),使得Walsh谱分析计算量指数增长
  • 但需注意实现复杂度

3. 使用稠密反馈多项式

防止快速相关攻击利用稀疏性简化计算。

4. 引入钟控机制

打乱乱数与LFSR状态的时序对应关系,使攻击者无法建立准确的方程组。

线性逼近攻击的完整流程

非线性滤波模型↓
Walsh谱分析 → 寻找最佳(α,β),计算优势ρ↓
建立含错方程组:b⁽ⁱ⁾·Key ≈ β·dᵢ↓
选择求解方法:
├── 穷举法(L较小)
└── 快速相关攻击(L较大)↓
恢复LFSR初始状态

关键参数关系

  • 优势:\(\rho = |W_g(\alpha \rightarrow \beta)|\)
  • 正确概率:\(p = \frac{1}{2} + \frac{\rho}{2}\)
  • 所需方程数:\(N \propto \frac{1}{\rho^2}\)
  • 攻击复杂度:\(O(2^L \cdot N)\)\(O(2^{\alpha L})\)

设计

密码设计者应确保:

  1. 非线性函数的Walsh谱绝对值均匀且小
  2. LFSR级数足够大
  3. 反馈多项式稠密
  4. 考虑引入钟控等额外保护机制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/960582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重生之我在大学自学鸿蒙构建第一天-《基础篇》

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

点云配准基础知识

引言 什么是点云配准呢,我们分别看下点云和配准点云:你可以想象成 “3D 世界的像素”—— 比如用激光雷达扫描一个桌子,会得到成千上万的 3D 坐标点(每个点有 X、Y、Z 位置信息),这些点凑在一起就形成了桌子的 “…

完整教程:Android监听第三方播放获取音乐信息及包名

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

git的各种HEAD以及使用示例

gitrevisions - git docs git-rev-parse - git docs中文 HEAD 命名工作区中的更改所基于的提交。 这个很常用了,HEAD为当前分支最新提交,经常用HEAD^、HEAD^^^、HEAD~n来定位之前的提交。 # 清除工作区和暂存区的所有…

OneDrive上传和下载速度慢?有什么解决办法吗? - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

win10安装广东省正版化检查工具

win10安装广东省正版化检查工具这个工具如果用管理员账户进行默认安装,启动后加载是不会弹出用户账户控制的,但如果切换到标准用户,启动则会弹出用户账户控制,需要管理员授权才能启动。 经过尝试,发现除了要禁用系…

详细介绍:深入浅出MATLAB数据可视化:超越plot()

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【JEECG 组件扩展】JSwitch开关组件扩展单个多选框样式 - 详解

【JEECG 组件扩展】JSwitch开关组件扩展单个多选框样式 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

既然道可道相当道,那么传道授业解惑的根基是什么?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

P10592 BZOJ4361 isn

遇到这种题还是太吃操作了。 首先看如果没有必须为非降序列的限制怎么办,那么就是求出一种长度种类的方案,然后删除的时候剩下的随便删即可。 然后考虑容斥,每次减去上一次操作不合法的位置即可,还是比较套路的。

阿道夫

阿道夫报告名称:[二刻BU--G0-P2工艺] 业务需求与数据目标报告 版本:V1.0 日期:[2025-11-07] 编制人:[易志伟/数字智能部] 审核人:[张迪/数字智能部]引言 1.1 背景与业务场景 • 工艺类型:AR(Active Area Revers…

软件开发公司常犯的5个设计误区,看看你中招了吗?

软件开发公司常犯的5个设计误区,看看你中招了吗?在软件开发行业,“功能实现” 往往被视为核心目标,而 “设计” 常被当作 “锦上添花” 的环节 —— 要么凭经验拍脑袋设计,要么照搬竞品框架,要么忽视用户真实需求…

使用jmeter做压力测试 - 实践

使用jmeter做压力测试 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

CSP2025游记总结

J组 好难!2.5个小时一道题都没做出来。 --前言 赛时 8:30~9:30 开 T1,原本想着还要分讨,但一看数据范围,秒了。 T2 也是分讨。应该是最没把握的,不仅很难对拍,而且大样例又水。 T3 一眼 dp,稍微优化一下,就过大…

连续出现的字符

点击查看代码 #include<iostream> #include<string> using namespace std; string s; int main() {int n;cin >> n; cin.ignore();getline(cin, s);int len = s.length();int cnt = 1;for (int i = …

详解WebSocket及其妙用 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 csp_j 游忌

1.number 赛事 AC 思路 此题比较简单, AC 思路比较多,我的思路如下 因为他让我们求字符串 \(s\) 中数字能组成的最大数字是多少,我们用一个 \(mp[x]\) 来存数字 \(x\) 在 \(s\) 中出现的次数,而能组成的最大数就是…

利用序列ID漏洞下载整个公司用户数据库的技术分析

本文详细描述了作者如何通过发现序列ID漏洞,成功获取某公司完整用户数据库的技术过程。文章涉及API安全测试、会话管理漏洞等实际渗透测试技术,展示了从基础侦察到完整数据泄露的完整攻击链。如何利用序列ID漏洞下载…

详细介绍:STM32 定时中断逻辑拆解:为什么 “每 2 次中断翻一次 LED”,却是 1 秒亮 1 秒灭?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

11.8 NOIP模拟4 改题记录

该文被密码保护。HZOJ 写在前面 突袭放假日。为啥我们不能跟高一的一起放。为啥我们假期比高一少一坤时。进入NOIP模拟套题阶段后好像没咋写过改题记录了。一个是干其他事去了,另一个是如果每场都只改一两个写着好像也…