19、候选不可区分混淆与安全需求工程本体研究

候选不可区分混淆与安全需求工程本体研究

1. 候选不可区分混淆研究

在密码学和计算机科学领域,候选不可区分混淆是一个重要的研究方向。研究人员的贡献主要体现在以下几个方面:
- 提供了候选不可区分混淆候选方案的首个开源实现,方便社区在此基础上逐步改进。
- 给出了可重现的性能基准,为运行和存储混淆程序所需的时间和空间设定了上限。
- 基于实验探讨了潜在的改进领域。

1.1 预备知识

在深入研究候选不可区分混淆之前,需要了解一些基础概念。
- 布尔电路 :布尔电路是一个有向无环图,节点由与、或、非门表示,每个门最多有 2 个输入(扇入为 2),仅处理布尔值。电路的大小等于其中门的总数,深度是从输入门到输出门的最长路径长度。
- 不可区分混淆器 :一个均匀概率多项式时间图灵机 iO 被称为电路类 {Cλ} 的不可区分混淆器,需满足两个条件:一是保留未混淆电路的输入输出行为;二是给定两个电路 C1、C2 及其混淆后的版本 iO(λ, C1)、iO(λ, C2),一个概率多项式时间的对手无法以显著概率区分哪个混淆电路源自哪个原始电路。
- 线性分支程序 :尽管 iO 应用于布尔电路,但它内部会将所有电路转换为线性分支程序进行操作。这一转换得益于 Barrington 定理,该定理表明任何扇入为 2、深度为 d 的布尔电路都可以转换为长度至多为 4d 的线性分支程序,且计算相同的函数。

下面是一个线性分支程序的定义:
设 A0, A1 ∈{0, 1}5×5 是两个不同的任意选择的置换矩阵。一个长度为 n、输入为 ℓ 位的 (A0, A1) 线性分支程序由一系列指令 BP = ((inp(i), Ai,0, Ai,1))n i=1 表示,其中 Ai,b ∈{0, 1}5×5,inp : {1, n} →{1, ℓ} 是从分支程序指令索引到电路输入位索引的映射。该分支程序计算的函数为:
[
f_{BP,A_0,A_1}(x) =
\begin{cases}
0 & \text{if } \Pi_{i=1}^{n}A_{i,x_{inp(i)}} = A_0 \
1 & \text{if } \Pi_{i=1}^{n}A_{i,x_{inp(i)}} = A_1 \
\text{undef} & \text{otherwise}
\end{cases}
]

电路族 Cλ 的特点是有 ℓ 个输入、λ 个门、O(logλ) 深度和一个输出。Cλ 有一个对应的多项式大小的通用电路 Uλ : {0, 1}f(λ) × {0, 1}ℓ→{0, 1},其中 f(λ) 是 λ 的某个函数。Uλ 可以编码 Cλ 中的所有电路。

通用电路是候选 iO 构造的一部分,因为它们使得 Kilian 协议能够运行。Kilian 协议允许两方(V 和 E)在不互相披露输入的情况下,对联合输入 X = (x|y) 上的任何 NC1 电路(如 Uλ)进行评估。具体步骤如下:
1. 通过应用 Barrington 定理将电路转换为分支程序 BP = ((inp(i), Ai,0, Ai,1))n i=1。
2. V 选择 n 个在 Zp 上的随机可逆矩阵 {Ri}n i=1,计算它们的逆,并创建一个新的随机分支程序 RBP =((inp(i), ˜Ai,0, ˜Ai,1))n i=1,其中 ˜Ai,b = Ri−1Ai,bR−1 i ,对于所有 i ∈{1, n},b ∈{0, 1} 且 R0 = Rn。
3. V 只向 E 发送对应于她部分输入的矩阵,E 通过不经意传输只获得对应于一个特定输入的矩阵。
4. E 现在可以计算 RBP 的结果而不了解 V 的输入。

然而,Kilian 协议的修改版本容易受到部分评估攻击、混合输入攻击和非多线性攻击。为了防止这些攻击,Garg 等人采取了以下措施:
- 防止部分评估攻击 :将 BP 的 5 × 5 矩阵转换为更高阶的矩阵,维度为 2m + 5,其中 m = 2n+5,n 是 BP 的长度。随后添加 2 个大小为 2m + 5 的边界向量,以中和高阶矩阵中随机条目的乘法。
- 防止混合输入攻击 :使用乘法捆绑技术,导致 BP 的输出被编码。为了解码 BP 的输出,生成一个与 BP 长度相同、计算常数 1 函数的额外分支程序,并对其应用相同的乘法捆绑技术。减去在相同输入上执行的两个分支程序的结果,将解码 BP 的输出。
- 防止非多线性攻击 :采用多线性拼图(MJP)。

MJP 由拼图生成器(JGen)和拼图验证器(JVer)两个实体组成。JGen 是电路混淆器的一部分,它接受安全参数(λ)、通用电路(Uλ)和 Uλ 模拟的任何电路的输入位数(ℓ)作为输入。具体流程如下:
1. JGen 首先应用 Barrington 定理将 Uλ 转换为长度为 n 的通用分支程序 UBP。
2. 实例生成器以 λ 和多线性参数(k = n+2)为输入,输出一个素数 p 和一组公共系统参数。
3. UBP 通过以下步骤转换为随机分支程序:
- 将分支程序矩阵转换为高阶矩阵。
- 应用乘法捆绑。
- 执行 Kilian 协议的第一步。
4. JGen 的输出是一组公共系统参数和随机化的通用分支程序(RND(UBPλ)),所有矩阵由编码器组件编码。

通过固定 RND(UBPλ) 的一部分输入(混淆),可以对电路 C ∈Cλ 进行混淆,使得它对所有 z ∈{0, 1}ℓ 编码 C。混淆的结果是 iO(λ, C),它被发送到一个不可信的方,该方通过固定其余输入并将其作为输入提供给 JVer 来评估它。JVer 如果评估成功则输出 1,否则输出 0。

1.2 实现

研究人员的概念验证实现是用 Python 完成的,借助了 SAGE 计算机代数系统,可从互联网下载。实现包括以下模块:
1. 通用电路创建的构建块。
2. 用于将布尔电路转换为分支程序的 Barrington 定理。
3. 将分支程序矩阵转换为高阶矩阵并应用乘法捆绑。
4. Kilian 协议的第一步,用于从分支程序创建随机分支程序。
5. MJP 的实例生成器。
6. MJP 的编码器。
7. 将电路编码为通用电路的输入。
8. 随机分支程序的部分输入固定器。
9. 拼图验证器的零测试。

在实现过程中,研究人员面临了一些技术挑战:
- 通用电路实现 :虽然通用电路在文献中常用,但研究人员未能找到一个易于适应他们设置的现成实现,因此决定按照 [9] 中性能较低的算法实现自己的 UC 组件。为了提高性能,可以采用 [9] 或 [10] 中更高效(但更复杂)的算法。
- 解读候选构造描述 :在解读候选构造描述时,研究人员遇到了一些挑战,特别是他们建议的编码函数。例如,很难为一些参数想出具体的值,因为它们之间的关系是用大 O 符号表示的。此外,编码器函数要求将元素 a ∈Zp 模一个次数 ≥1 的多项式 g 进行约简,但研究人员想不出比 a 本身更好的规范代表,这使得他们认为要么模约简是多余的,要么作者心中有另一个规范代表(一个多项式),但不清楚如何计算。

目前,研究人员的实现可以执行候选构造的大多数步骤,但零测试除外。他们认为这可能是由于对 a 模 g 的规范代表的错误选择或/和上述具体参数的问题导致的。

1.3 基准测试

研究人员在一个具有 4 个核心和 64 GB 内存的虚拟机上进行了实验。
- 第一个实验 :旨在研究混淆一个仅由 AND 门组成的电路所需的资源,作为其输入数量和门数量的函数。实验的第一步是生成通用电路,记录的输出包括门的数量、内存使用、输出文件和生成时间。结果表明,增加输入数量会导致每个测量输出线性增加,而增加门的数量会导致指数增加。由于用于存储 UCs 的压缩算法,内存使用比文件大小大约高一个数量级。
- 第二个实验 :将之前生成的 UCs 转换为分支程序(BPs)。然而,由于内存使用和文件大小的快速多项式增长,无法转换所有之前生成的 UCs。研究人员通过应用以下递归公式估计生成一个编码电路的 UC 的 BP 的大小:
[
l(gate) =
\begin{cases}
1 & \text{if type(gate) = Input} \
l(gate.input) & \text{if type(gate) = NOT} \
2l(gate.input1) + 2l(gate.input2) & \text{if type(gate) = AND}
\end{cases}
]
对于图 2 中显示的最大 UC,编码 4 个输入和 6 个门的通用 BP 的估计内存使用超过 4.47 Peta 字节,在虚拟机上无法生成。
- 第三个实验 :将之前生成的 BPs 转换为随机分支程序(RBPs)。除了输入数量和门数量外,这个实验还涉及矩阵维度增加(m)和 Kilian 协议操作所在的 Zp 中的素数(p)的选择。m 的选择对生成时间和文件大小有多项式影响,p 对生成时间有线性影响。由于技术限制,内存使用无法可靠测量,但估计大约比文件大小高一个数量级。

2. 安全需求工程本体研究

在信息系统开发中,安全是一个重要问题,需要在各个阶段考虑,包括早期需求获取。早期的安全分析可以预测威胁及其影响,并在系统到位之前定义适当的安全需求。然而,安全需求难以获取、分析和管理,因为分析师关于安全的知识往往是隐性的,这使得安全需求获取任务更加困难。

2.1 本体的作用

本体是一种很好的知识形式化方法,特别是在支持可重用性方面已被证明是有用的。基于预定义本体的需求工程可以使需求工程工作更加容易和快速,但这很大程度上取决于所使用本体的质量。虽然文献中已经提出了一些用于安全需求的安全本体,但没有一个是完整的。

2.2 核心安全本体的提出

为了应对上述问题,本文提出了一个核心和通用的安全本体,用于安全需求工程。“核心”指的是它涵盖了文献中其他安全本体中存在的知识(高级概念、关系、属性)的并集。一个好的安全本体应该包括静态知识(概念、关系和属性)和动态知识(公理),并且必须是可重用的。

该本体的主要目标是解决以下研究问题:
1. 核心安全本体中需要存在哪些概念和关系?
2. 如何使这个本体易于需求工程师使用?

这个本体应该能够:
- 创建一个不同安全概念(威胁、风险、需求等)的通用平台。
- 为各种项目中的安全需求获取创建一个可重用知识的来源。

研究人员实现了该本体,并开发了一个交互式环境,以方便在安全需求工程过程中使用该本体。通过与其他本体进行比较,检查其有效性和完整性,并进行了一个与最终用户的受控实验,以评估其可用性。

下面是一个简单的表格总结了候选不可区分混淆和安全需求工程本体研究的主要内容:
| 研究内容 | 主要贡献 | 面临挑战 |
| — | — | — |
| 候选不可区分混淆 | 提供开源实现、性能基准,探讨改进领域 | 通用电路实现、解读构造描述 |
| 安全需求工程本体 | 提出核心和通用安全本体,开发交互式环境 | 无 |

mermaid 流程图展示候选不可区分混淆的主要流程:

graph TD;
    A[布尔电路] --> B[通用电路 Uλ];
    B --> C[分支程序 BP];
    C --> D[随机分支程序 RBP];
    D --> E[混淆电路 iO(λ, C)];
    E --> F[JVer 评估];

通过以上研究,我们可以看到在候选不可区分混淆和安全需求工程本体领域取得了一定的进展,但也面临着一些挑战。未来的研究可以针对这些挑战进行改进,以推动这些领域的发展。

3. 候选不可区分混淆研究的深入分析
3.1 性能瓶颈分析

从基准测试的结果来看,候选不可区分混淆在实际应用中面临着严重的性能瓶颈。以 2 - 位乘法电路为例,在特定参数下,混淆生成需要约 1027 年,执行该电路需要约 1.3 × 108 年,并且需要 20 Zetta 字节的内存。这表明当前的候选构造在实际应用中几乎是不可行的。

造成这些性能瓶颈的原因主要有以下几点:
- 算法复杂度 :在生成通用电路、分支程序和随机分支程序的过程中,涉及到大量的矩阵运算和复杂的转换步骤。例如,将布尔电路转换为分支程序时,根据 Barrington 定理,分支程序的长度与电路深度相关,这会导致内存使用和计算时间的快速增长。
- 参数选择 :矩阵维度增加(m)和素数(p)的选择对性能有显著影响。m 的选择会多项式地影响生成时间和文件大小,p 会线性地影响生成时间,并且当 p 的数据类型宽度增长时,会影响内存使用和文件大小。

下面是一个简单的列表总结性能瓶颈的影响因素:
1. 算法复杂度高,涉及大量矩阵运算和复杂转换。
2. 参数选择对生成时间、文件大小和内存使用有显著影响。
3. 通用电路生成和分支程序转换过程中存在重复计算和数据冗余。

3.2 改进方向探讨

为了提高候选不可区分混淆的性能,有以下几个改进方向值得探讨:
- 算法优化 :寻找更高效的算法来生成通用电路和执行其他步骤。例如,可以采用 [9] 或 [10] 中更高效的通用电路生成算法,避免当前实现中性能较低的算法。
- 避免 Barrington 定理 :由于使用 Barrington 定理会导致分支程序中矩阵的重复,从而增加内存使用和计算时间,可以考虑采用 Ananth 等人 [11] 提出的技术,避免使用该定理。
- 参数优化 :通过合理选择矩阵维度(m)和素数(p)等参数,减少生成时间和内存使用。可以进行更多的实验和分析,找到最优的参数组合。

以下是一个 mermaid 流程图展示改进方向的逻辑关系:

graph LR;
    A[算法优化] --> B[提高性能];
    C[避免 Barrington 定理] --> B;
    D[参数优化] --> B;
4. 安全需求工程本体的应用与拓展
4.1 本体在安全需求获取中的应用

安全需求工程本体为安全需求获取提供了一个强大的工具。在实际应用中,可以按照以下步骤使用该本体:
1. 概念理解 :需求工程师首先需要熟悉本体中定义的各种安全概念,如威胁、风险、需求等,以及它们之间的关系。
2. 需求识别 :在与利益相关者进行沟通时,借助本体中的概念和关系,识别出潜在的安全需求。例如,根据本体中定义的威胁类型,判断系统可能面临的威胁,并据此提出相应的安全需求。
3. 需求规范 :使用本体中的术语和结构,将识别出的安全需求进行规范描述,确保需求的准确性和一致性。

通过使用该本体,可以提高安全需求获取的效率和质量,减少需求遗漏和误解的可能性。

4.2 本体的拓展与更新

随着信息技术的不断发展和安全威胁的不断变化,安全需求工程本体需要不断拓展和更新。可以从以下几个方面进行:
- 概念扩展 :添加新的安全概念,如新兴的安全技术和攻击类型相关的概念。
- 关系更新 :更新概念之间的关系,以反映新的安全场景和需求。
- 公理完善 :根据新的安全理论和实践,完善本体中的公理,提高本体的推理能力。

以下是一个列表总结本体拓展与更新的具体内容:
1. 扩展安全概念,涵盖新兴技术和攻击类型。
2. 更新概念关系,适应新的安全场景。
3. 完善公理,增强本体的推理和分析能力。

5. 总结与展望
5.1 研究总结

本文对候选不可区分混淆和安全需求工程本体进行了深入研究。在候选不可区分混淆方面,提供了开源实现和性能基准,但面临着严重的性能瓶颈,需要进一步改进。在安全需求工程本体方面,提出了一个核心和通用的本体,为安全需求获取提供了有效的支持,并通过实验评估了其可用性。

5.2 未来展望

未来的研究可以在以下几个方面展开:
- 候选不可区分混淆 :继续优化算法和参数,探索新的技术来避免性能瓶颈,使候选构造更具实用性。
- 安全需求工程本体 :不断拓展和更新本体,提高其在不同安全场景下的适用性,同时开发更多的工具和方法,以更好地利用本体进行安全需求工程。

通过持续的研究和改进,有望在候选不可区分混淆和安全需求工程本体领域取得更大的突破,为信息安全领域的发展做出贡献。

下面是一个表格总结研究内容和未来展望:
| 研究内容 | 现状 | 未来展望 |
| — | — | — |
| 候选不可区分混淆 | 有开源实现和性能基准,但性能瓶颈严重 | 优化算法和参数,提高实用性 |
| 安全需求工程本体 | 提出核心本体,评估可用性 | 拓展更新本体,开发更多工具方法 |

mermaid 流程图展示未来研究方向的整体框架:

graph LR;
    A[候选不可区分混淆研究] --> B[算法优化];
    A --> C[参数优化];
    D[安全需求工程本体研究] --> E[本体拓展];
    D --> F[工具开发];

综上所述,候选不可区分混淆和安全需求工程本体研究虽然取得了一定成果,但仍有许多工作需要进一步开展。未来的研究将聚焦于解决现有问题,推动这两个领域不断向前发展。

本指南详细阐述基于Python编程语言结合OpenCV计算机视觉库构建实时眼部状态分析系统的技术流程。该系统能够准确识别眼部区域,并对眨眼动作持续闭眼状态进行判别。OpenCV作为功能强大的图像处理工具库,配合Python简洁的语法特性丰富的第三方模块支持,为开发此类视觉应用提供了理想环境。 在环境配置阶段,除基础Python运行环境外,还需安装OpenCV核心模块dlib机器学习库。dlib库内置的HOG(方向梯度直方图)特征检测算法在面部特征定位方面表现卓越。 技术实现包含以下关键环节: - 面部区域检测:采用预训练的Haar级联分类器或HOG特征检测器完成初始人脸定位,为后续眼部分析建立基础坐标系 - 眼部精确定位:基于已识别的人脸区域,运用dlib提供的面部特征点预测模型准确标定双眼位置坐标 - 眼睑轮廓分析:通过OpenCV的轮廓提取算法精确勾勒眼睑边缘形态,为状态判别提供几何特征依据 - 眨眼动作识别:通过连续帧序列分析眼睑开合度变化,建立动态阈值模型判断瞬时闭合动作 - 持续闭眼检测:设定更严格的状态持续时间闭合程度双重标准,准确识别长时间闭眼行为 - 实时处理架构:构建视频流处理管线,通过帧捕获、特征分析、状态判断的循环流程实现实时监控 完整的技术文档应包含模块化代码实现、依赖库安装指引、参数调优指南及常见问题解决方案。示例代码需具备完整的错误处理机制性能优化建议,涵盖图像预处理、光照补偿等实际应用中的关键技术点。 掌握该技术体系不仅有助于深入理解计算机视觉原理,更为疲劳驾驶预警、医疗监护等实际应用场景提供了可靠的技术基础。后续优化方向可包括多模态特征融合、深度学习模型集成等进阶研究领域。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值