2024, 35(7):3069-3070. DOI: 10.13328/j.cnki.jos.007114 CSTR:
摘要:
2024, 35(7):3071-3092. DOI: 10.13328/j.cnki.jos.007110 CSTR:
摘要:修复软件缺陷是软件工程领域一个无法回避的重要问题, 而程序自动修复技术则旨在自动、准确且高效地修复存在缺陷的程序, 以缓解软件缺陷所带来的问题. 近年来, 随着深度学习的快速发展, 程序自动修复领域兴起了一种使用深度神经网络去自动捕捉缺陷程序及其补丁之间关系的方法, 被称为神经程序修复. 从在基准测试上被正确修复的缺陷的数量上看, 神经程序修复工具的修复性能已经显著超过了非学习的程序自动修复工具.然而, 近期有研究发现: 神经程序修复系统性能的提升可能得益于测试数据在训练数据中存在, 即数据泄露. 受此启发, 为了进一步探究神经程序修复系统数据泄露的原因及影响, 更公平地评估现有的系统: (1) 对现有神经程序修复系统进行了系统的分类和总结, 根据分类结果定义了神经程序修复系统的数据泄露, 并为每个类别的系统设计了数据泄露的检测方法; (2) 依照上一步骤中的数据泄露检测方法对现有模型展开了大规模检测, 并探究了数据泄露对模型真实性能与评估性能间差异的影响以及对模型本身的影响; (3) 分析现有神经程序修复系统数据集的收集和过滤策略, 加以改进和补充, 在现有流行的数据集上, 基于改进后的策略构建了一个纯净的大规模程序修复训练数据集, 并验证了该数据集避免数据泄露的有效性. 由实验结果发现: 调研的10个神经程序修复系统在基准测试集上均出现了数据泄露, 其中, 神经程序修复系统RewardRepair的数据泄露问题较为严重, 在基准测试集Defects4J (v1.2.0)上的数据泄露达24处, 泄露比例高达53.33%. 此外, 数据泄露对神经程序修复系统的鲁棒性也造成了影响, 调研的5个神经程序修复系统均因数据泄露产生了鲁棒性降低的问题. 由此可见, 数据泄露是一个十分常见的问题, 且会使神经程序修复系统得到不公平的性能评估结果以及影响系统在基准测试集上的鲁棒性. 研究人员在训练神经程序修复模型时, 应尽可能避免出现数据泄露, 且要考虑数据泄露问题对神经程序修复系统性能评估产生的影响, 尽可能更公平地评估系统.
2024, 35(7):3093-3114. DOI: 10.13328/j.cnki.jos.007113 CSTR:
摘要:变异测试是一种有效的软件测试技术, 通过生成变异体来模拟软件缺陷, 帮助提升现有测试套件的缺陷检测能力. 变异体的质量对于变异测试的有效性具有显著影响. 传统的变异测试方法通常采用人工设计的基于语法规则的变异算子生成变异体, 并已取得一定的研究成果. 近年来, 许多研究开始结合深度学习技术, 通过学习开源项目历史代码生成变异体. 目前, 该新方法在变异体生成方面取得了初步的成果. 基于语法规则和基于学习的两种变异技术, 其机理不同, 但其目标均是通过生成变异体来提高测试套件的缺陷检测能力, 因此, 全面比较这两种变异技术对于变异测试及其下游任务至关重要. 针对这一问题, 设计实现了一项针对基于语法规则和基于学习的变异技术的实证研究, 旨在了解不同机理的变异技术在变异测试任务上的性能以及生成的变异体在程序语义上的差异性. 具体地, 以Defect4J v1.2.0数据集为实验对象, 比较以MAJOR和PIT为代表的基于语法规则的变异技术和以DeepMutation、μBERT和LEAM为代表的基于深度学习的变异技术. 实验结果表明: 基于规则与学习的变异技术均可有效支持变异测试实践, 但MAJOR的测试效果最优, 能够检测85.4%的真实缺陷. 在语义表示上, MAJOR具有最强的语义代表能力, 基于其构造的测试套件能够杀死其余变异技术生成的超过95%占比的变异体. 在缺陷表征上, 两类技术均具有独特性.
2024, 35(7):3115-3140. DOI: 10.13328/j.cnki.jos.007104 CSTR:
摘要:微服务软件系统由于其具有大量复杂的服务依赖关系和组件化模块, 一个服务发生故障往往造成与之相关的1个或多个服务发生故障, 导致故障定位的难度不断提高. 因此, 如何有效地检测系统故障、快速而准确地定位故障根因问题, 是当前微服务领域研究的重点. 现有研究一般通过分析故障对服务、指标的作用关系来构建故障关系模型, 但存在运维数据利用不充分、故障信息建模不全面、根因定位粒度粗等问题, 因此提出了AmazeMap方法. 该方法设计了多层次故障影响图建模方法以及基于多层次故障影响图的微服务故障定位方法. 其中: 多层次故障影响图建模方法通过挖掘系统运行时指标时序数据与链路数据, 考虑不同层次间的相互关系, 能够较全面地建模故障信息; 基于多层次故障影响图的微服务故障定位方法通过缩小故障影响范围, 从服务实例和指标两个方面发现根因, 输出最有可能的故障根因节点和指标序列. 基于开源基准微服务系统和AIOps挑战赛数据集, 从有效性和效率两个方面设计了微服务软件故障定位实验, 并与现有方法进行对比, 实验结果验证了AmazeMap的有效性、准确性和效率.
2024, 35(7):3141-3161. DOI: 10.13328/j.cnki.jos.007105 CSTR:
摘要:作为当前被广泛应用的自动化软件测试技术, 模糊测试的首要目标是尽可能多地探索被测程序的代码区域以达到更高的覆盖率, 从而检测出更多的漏洞或者错误. 现有的模糊测试方法大多是根据种子的历史突变数据来调度种子, 实现起来比较简单, 但忽略了种子所探索程序空间的分布情况, 导致测试工作可能会陷入只对程序的某单一区域进行探测, 造成测试资源的浪费. 提出一种基于聚类分析驱动种子调度的模糊测试方法Cluzz. 首先, Cluzz结合种子执行路径覆盖的分布来分析种子在特征空间上的区别, 使用聚类分析对种子在程序空间中的执行分布情况进行划分. 然后, 根据不同种子簇群的路径覆盖模式与聚类分析结果对种子进行优先级评估, 探索稀有代码区域并优先调度评估得分较高的种子. 其次, 通过种子评估得分为种子分配能量, 将突变得到的有趣输入保留并进行归类以更新种子簇群信息. Cluzz根据更新后的种子簇群重新评估种子, 以确保测试过程中种子的有效性, 从而在有限时间内探索更多的未知代码区域, 提高被测程序的覆盖率. 最后, 将Cluzz实现在3个当前主流的模糊器上, 并在8个流行的真实程序上进行大量测试工作. 结果表明: Cluzz检测独特崩溃的平均数量是普通模糊器的1.7倍, 在发现新边缘数量方面, 平均优于基准模糊器22.15%. 此外, 通过与现有种子调度方法进行对比, Cluzz的综合表现要优于其他基准模糊器.
2024, 35(7):3162-3179. DOI: 10.13328/j.cnki.jos.007106 CSTR:
摘要:GUI模糊测试在提升移动应用可靠性和兼容性方面发挥着关键作用. 然而, 现有的GUI模糊测试方法大多效率较低, 主要原因是这些工作过于粗粒度, 仅基于单一模态的特征来整体理解GUI页面, 应用状态的过度抽象使得许多细节信息被忽略, 导致对GUI状态及小部件的理解不足. 为了解决上述问题, 提出了一种基于多模态表征的移动应用GUI模糊测试框架GUIFuzzer. 该框架通过考虑多模态特征, 如视觉特征、布局上下特征和细粒度的元属性特征, 来联合推断GUI小部件的语义; 然后, 训练一个多层次奖励驱动的深度强化学习模型来优化GUI事件选择策略, 提高模糊测试的效率. 在大量的真实应用上对所提框架进行了评估. 实验结果表明: 与现有的竞争性基线相比, GUIFuzzer显著地提升了模糊测试的覆盖率. 还对特定目标的定制化搜索即敏感API触发进行了案例研究, 进一步验证了GUIFuzzer框架的实用性.
2024, 35(7):3180-3203. DOI: 10.13328/j.cnki.jos.007107 CSTR:
摘要:移动应用(APP)软件的版本更新速度正在加快, 对软件缺陷的有效分析, 可以帮助开发人员理解和及时修复软件缺陷. 然而, 现有研究的分析对象大多较为单一, 存在信息孤立、零散、质量差等问题, 并且没有充分考虑数据验证及版本失配问题, 分析结果存在较大误差, 导致无效的软件演化. 为了提供更有效的缺陷分析结果, 提出一种面向版本演化的APP软件缺陷跟踪分析方法(ASD-TAOVE). 首先, 从多源、异构的APP软件数据中抽取APP软件缺陷内容并挖掘缺陷事件的因果关系; 接着, 设计了一种APP软件缺陷内容验证方法, 基于信息熵结合文本特征和结构特征定量分析缺陷怀疑度, 用于缺陷内容验证并构建APP软件缺陷内容异构图; 然后, 为了考虑版本演化带来的影响, 设计了一个APP软件缺陷跟踪分析方法, 用于在版本演化中分析缺陷的演化关系, 并将其转化为缺陷/演化元路径; 最后, 通过一个基于深度学习的异构信息网络完成APP软件缺陷分析. 针对4个研究问题(RQ)的实验结果, 证实了ASD-TAOVE方法在面向版本演化过程中对缺陷内容验证与跟踪分析的有效性, 缺陷识别准确率分别提升约9.9%和5% (平均7.5%). 与同类基线方法相比, ASD-TAOVE方法可分析丰富的APP软件数据, 提供有效的缺陷信息.
2024, 35(7):3204-3226. DOI: 10.13328/j.cnki.jos.007108 CSTR:
摘要:为了对Java虚拟机(JVM)进行测试, 开发人员通常需要手工设计或利用测试生成工具生成复杂的测试程序, 从而检测JVM中潜在的缺陷. 然而, 复杂的测试程序给开发人员定位及修复缺陷带来了极高的成本. 测试程序约简技术旨在保障测试程序缺陷检测能力的同时, 尽可能地删减测试程序中与缺陷检测无关的代码. 现有研究工作基于Delta调试在C程序和XML输入上可以取得较好的约简效果, 但是在JVM测试场景中, 具有复杂语法和语义依赖关系的Java测试程序约简仍存在粒度较粗、约简效果较差的问题, 导致约简后的程序理解成本依然很高. 因此, 针对具有复杂程序依赖关系的Java测试程序, 提出一种基于程序约束的细粒度测试程序约简方法JavaPruner. 首先, 在语句块级别设计细粒度的代码度量方法; 随后, 在Delta调试技术上引入语句块之间的依赖约束关系来对测试程序进行约简. 以Java字节码测试程序为实验对象, 从现有的针对JVM测试的测试程序生成工具中筛选出具有复杂依赖关系的50个测试程序作为基准数据集, 并在这些数据集上验证JavaPruner的有效性. 实验结果表明, JavaPruner可以有效删减Java字节码测试程序中的冗余代码. 与现有方法相比, 在所有基准数据集上, 约简能力平均可提升37.7%. 同时, JavaPruner可以在保障程序有效性及缺陷检测能力的同时, 将Java字节码测试程序最大约简至其原有大小的1.09%, 有效降低了测试程序的分析和理解成本.
2024, 35(7):3227-3244. DOI: 10.13328/j.cnki.jos.007109 CSTR:
摘要:随着规模和复杂性的迅猛膨胀, 软件系统中不可避免地存在缺陷. 近年来, 基于深度学习的缺陷预测技术成为软件工程领域的研究热点. 该类技术可以在不运行代码的情况下发现其中潜藏的缺陷, 因而在工业界和学术界受到了广泛的关注. 然而, 已有方法大多关注方法级的源代码中是否存在缺陷, 无法精确识别具体的缺陷类别, 从而降低了开发人员进行缺陷定位及修复工作的效率. 此外, 在实际软件开发实践中, 新项目通常缺乏足够的缺陷数据来训练高精度的深度学习模型, 而利用已有项目的历史数据训练好的模型往往在新项目上无法达到良好的泛化性能. 因此, 首先将传统的二分类缺陷预测任务表述为多标签分类问题, 即, 使用CWE (common weakness enumeration)中描述的缺陷类别作为细粒度的模型预测标签. 为了提高跨项目场景下的模型性能, 提出一种融合对抗训练和注意力机制的多源域适应框架. 该框架通过对抗训练来减少域(即软件项目)差异,并进一步利用域不变特征来获得每个源域和目标域之间的特征相关性. 同时, 该框架还利用加权最大均值差异作为注意力机制, 以最小化源域和目标域特征之间的表示距离, 从而使模型可以学习到更多的域无关特征. 在构建的包含8个真实世界开源项目的数据集上的实验表明, 所提方法对比最先进的基线方法取得了显著的性能提升.
2024, 35(7):3245-3264. DOI: 10.13328/j.cnki.jos.007111 CSTR:
摘要:构建自动化的缺陷定位方法能够加快程序员利用缺陷报告定位到复杂软件系统缺陷代码的过程. 早期相关研究人员将缺陷定位视为检索任务, 通过分析缺陷报告和相关代码构造缺陷特征, 并结合信息检索的方法实现缺陷定位. 随着深度学习的发展, 利用深度模型特征的缺陷定位方法也取得了一定效果. 然而, 由于深度模型训练的时间成本和耗费资源相对较高, 现有基于深度模型的缺陷定位研究方法存在实验搜索空间和真实情况不符的情况. 这些研究方法在测试时并没有将项目下的所有代码作为搜索空间, 而仅仅搜索了与已有缺陷相关的代码, 例如DNNLOC方法、DeepLocator方法、DreamLoc方法. 这种做法和现实中程序员进行缺陷定位的搜索场景是不一致的. 致力于模拟缺陷定位的真实场景, 提出了一种融合信息检索和深度模型特征的TosLoc方法进行缺陷定位. TosLoc方法首先通过信息检索的方式检索真实项目的所有源代码, 确保已有特征的充分利用; 再利用深度模型挖掘源代码和缺陷报告的语义, 获取最终定位结果. 通过两阶段的检索, TosLoc方法能够对单个项目的所有代码实现快速缺陷定位. 通过在4个常用的真实Java项目上进行实验, TosLoc方法能够在检索速度和准确性上超越已有基准方法. 与最优基准方法DreamLoc相比, TosLoc方法在消耗DreamLoc方法35%的检索时间下, 平均MRR值比DreamLoc方法提高了2.5%, 平均MAP值提高了6.0%.
2024, 35(7):3265-3290. DOI: 10.13328/j.cnki.jos.007112 CSTR:
摘要:随着现代软件规模的不断扩大, 协作开发成为软件开发的主流趋势, 代码审查成为现代化软件开发的重要工作流程. 但由于人工代码评审往往耗费审查者较大精力, 且存在审查者不匹配或审查者水平有限等问题, 人工代码评审的质量和效率难以保证, 且审查后的代码修复也十分费时费力. 因此, 亟需研究人员为代码审查流程进行改进, 提供自动化思路. 对代码审查自动化相关研究进行系统梳理和总结, 并重点介绍4种主要方向: 审查者推荐、代码变更质量评估、审查意见生成和代码自动修复. 整理了相关方向的148篇研究, 对每个方向的研究进行技术分类与分析. 随后, 整理了各方向研究任务的评估方法, 并整理出常用的数据集与开源工具. 最后, 对代码审查自动化领域面临的问题进行梳理, 并对未来研究进行展望.
2024, 35(7):3291-3313. DOI: 10.13328/j.cnki.jos.006919 CSTR:
摘要:缓冲区溢出等内存错误漏洞的产生往往来自对内存拷贝类函数的不当使用. 对二进制程序中的内存拷贝类函数进行识别有利于发现内存错误漏洞. 目前针对二进制程序中内存拷贝类函数的识别方法主要借助静态分析来提取函数的特征、控制流、数据流等信息进行识别, 具有较高的误报率和漏报率. 为了提高对内存拷贝类函数识别的效果, 提出一种基于静态和动态混合分析的技术CPSeeker. 所提方法结合静态分析和动态分析各自的优势, 分阶段对函数的全局静态信息和局部执行信息进行搜集, 对提取到的信息进行融合分析, 进而识别二进制程序中的内存拷贝类函数. 实验结果表明, 尽管CPSeeker在运行时间上有所增加, 但在内存拷贝类函数识别的效果上, 其F1值达到了0.96, 远优于最新的工作BootStomp、SaTC、CPYFinder以及Gemini, 并且不受编译环境(编译器版本、编译器种类、编译器优化等级)的影响. 此外, CPSeeker在真实的固件测试中也有更好的表现.
2024, 35(7):3314-3331. DOI: 10.13328/j.cnki.jos.006922 CSTR:
摘要:SMT求解器作为重要的基础软件, 其存在的缺陷可能会导致依赖于它的软件功能失效, 甚至带来安全事故. 然而, 修复SMT求解器缺陷是一个十分耗时的任务, 因为开发者需要花费大量的时间和精力来理解并找到缺陷的根本原因. 虽然已有许多软件缺陷定位方面的研究, 但尚未有系统的工作研究如何自动定位SMT求解器缺陷. 因此, 提出一种基于多源频谱的SMT求解器缺陷定位方法SMTLOC. 首先, 对于给定的SMT求解器缺陷, SMTLOC提出一种枚举算法, 用以对触发该缺陷的公式进行变异, 从而生成一组不触发缺陷, 但与触发缺陷的公式具有相似执行路径的证人公式. 然后, SMTLOC根据证人公式的执行路径以及SMT求解器的源码信息, 提出一种融合覆盖频谱和历史频谱的文件可疑度计算方法, 从而定位可能存在缺陷的文件. 为了验证SMTLOC的有效性, 收集60个SMT求解器缺陷. 实验结果表明, SMTLOC的缺陷定位效果明显优于传统的频谱缺陷定位方法, SMTLOC可以将46.67%的缺陷定位在TOP-5的文件内, 定位效果提升了133.33%.
2024, 35(7):3332-3354. DOI: 10.13328/j.cnki.jos.006923 CSTR:
摘要:内核堆漏洞是目前操作系统安全的主要威胁之一, 用户层攻击者通过触发漏洞能够泄露或修改内核敏感信息, 破坏内核控制流, 甚至获取root权限. 但是由于漏洞的数量和复杂性剧增, 从漏洞首次被报告到开发者给出修复补丁(patch)往往需要较长时间, 而内核现阶段采用的缓解机制均能被稳定绕过. 为此提出一种基于eBPF的内核堆漏洞动态缓解框架, 用于在修复时间窗口中降低内核安全风险. 动态缓解框架采取数据对象空间随机化策略, 在每次分配时为漏洞报告中涉及的数据对象分配随机地址, 并充分利用eBPF的动态、安全特性将空间随机化对象在运行时注入内核, 使得攻击者无法准确放置攻击负载, 堆漏洞几乎无法被利用. 评估40个真实内核堆漏洞, 并收集12个绕过现有缓解机制的攻击程序进行进一步分析和实验, 证实动态缓解框架提供充足的安全性. 性能测试表明, 即使在严苛情况下, 大量分配的4类数据对象仅对系统造成约1%的性能损耗和可以忽略不计的内存损耗, 同时增加保护对象的数量几乎不引入额外性能损耗. 所提机制对比相关工作适用范围更广, 安全性更强, 而且无需安全专家发布的漏洞补丁, 可以根据漏洞报告生成缓解程序, 具备广阔应用前景.
2024, 35(7):3355-3376. DOI: 10.13328/j.cnki.jos.006925 CSTR:
摘要:正则表达式在计算机科学的许多领域具有广泛应用. 然而, 由于正则表达式语法比较复杂, 并且允许使用大量元字符, 导致开发人员在定义和使用时容易出错. 测试是保证正则表达式语义正确性的实用和有效手段, 常用的方法是根据被测表达式生成一些字符串, 并检查它们是否符合预期. 现有的测试数据生成大多只关注正例串, 而研究表明, 实际开发中存在的错误大部分在于定义的语言比预期语言小, 这类错误只能通过反例串才能发现. 研究基于变异的正则表达式反例测试串生成. 首先通过变异向被测表达式中注入缺陷得到一组变异体, 然后在被测表达式所定义语言的补集中选取反例字符串揭示相应变异体所模拟的错误. 为了能够模拟复杂缺陷类型, 以及避免出现变异体特化而无法获得反例串的问题, 引入二阶变异机制. 同时采取冗余变异体消除、变异算子选择等优化技术对变异体进行约简, 从而控制最终生成的测试集规模. 实验结果表明, 与已有工具相比, 所提算法生成的反例测试串规模适中, 并且具有较强的揭示错误能力.
2024, 35(7):3377-3391. DOI: 10.13328/j.cnki.jos.006931 CSTR:
摘要:对于合同文本中要素和条款两类信息的准确提取, 可以有效提升合同的审查效率, 为贸易各方提供便利化服务. 然而当前的合同信息抽取方法一般训练单任务模型对要素和条款分别进行抽取, 并没有深挖合同文本的特征, 忽略了不同任务间的关联性. 因此, 采用深度神经网络结构对要素抽取和条款抽取两个任务间的相关性进行研究, 并提出多任务学习方法. 所提方法首先将上述两种任务进行融合, 构建一种应用于合同信息抽取的基本多任务学习模型; 然后对其进行优化, 利用Attention机制进一步挖掘其相关性, 形成基于Attention机制的动态多任务学习模型; 最后针对篇章级合同文本中复杂的语义环境, 在前两者的基础上提出一种融合词汇知识的动态多任务学习模型. 实验结果表明, 所提方法可以充分捕捉任务间的共享特征, 不仅取得了比单任务模型更好的信息抽取结果, 而且能够有效解决合同文本中要素与条款间实体嵌套的问题, 实现合同要素与条款的信息联合抽取. 此外, 为了验证该方法的鲁棒性, 在多个领域的公开数据集上进行实验, 结果表明该方法的效果均优于基线方法.
2024, 35(7):3392-3409. DOI: 10.13328/j.cnki.jos.006932 CSTR:
摘要:对抗文本是一种能够使深度学习分类器作出错误判断的恶意样本, 敌手通过向原始文本中加入人类难以察觉的微小扰动制作出能欺骗目标模型的对抗文本. 研究对抗文本生成方法, 能对深度神经网络的鲁棒性进行评价, 并助力于模型后续的鲁棒性提升工作. 当前针对中文文本设计的对抗文本生成方法中, 很少有方法将鲁棒性较强的中文BERT模型作为目标模型进行攻击. 面向中文文本分类任务, 提出一种针对中文BERT的攻击方法Chinese BERT Tricker. 该方法使用一种汉字级词语重要性打分方法——重要汉字定位法; 同时基于掩码语言模型设计一种包含两类策略的适用于中文的词语级扰动方法实现对重要词语的替换. 实验表明, 针对文本分类任务, 所提方法在两个真实数据集上均能使中文BERT模型的分类准确率大幅下降至40%以下, 且其多种攻击性能明显强于其他基线方法.
2024, 35(7):3410-3427. DOI: 10.13328/j.cnki.jos.006936 CSTR:
摘要:作为一种解决标签模糊性问题的新学习范式, 标记分布学习(LDL)近年来受到了广泛的关注. 为了进一步提升标记分布学习的预测性能, 提出一种联合深度森林与异质集成的标记分布学习方法(LDLDF). 所提方法采用深度森林的级联结构模拟具有多层处理结构的深度学习模型, 在级联层中组合多个异质分类器增加集成的多样性. 相较于其他现有LDL方法, LDLDF能够逐层处理信息, 学习更好的特征表示, 挖掘数据中丰富的语义信息, 具有强大的表示学习能力和泛化能力. 此外, 考虑到深层模型可能出现的模型退化问题, LDLDF采用一种层特征重用机制(layer feature reuse)降低模型的训练误差, 有效利用深层模型每一层的预测能力. 大量的实验结果表明, 所提方法优于近期的同类方法.
2024, 35(7):3428-3453. DOI: 10.13328/j.cnki.jos.006948 CSTR:
摘要:遗忘是人工神经网络在增量学习中的最大问题, 被称为“灾难性遗忘”. 而人类可以持续地获取新知识, 并能保存大部分经常用到的旧知识. 人类的这种能持续“增量学习”而很少遗忘是与人脑具有分区学习结构和记忆回放能力相关的. 为模拟人脑的这种结构和能力, 提出一种“避免近期偏好的自学习掩码分区增量学习方法”简称ASPIL. 它包含“区域隔离”和“区域集成”两阶段, 二者交替迭代实现持续的增量学习. 首先, 提出“BN稀疏区域隔离” 方法, 将新的学习过程与现有知识隔离, 避免干扰现有知识; 对于“区域集成”, 提出自学习掩码(SLM)和双分支融合(GBF)方法. 其中SLM准确提取新知识, 并提高网络对新知识的适应性, 而GBF将新旧知识融合, 以达到建立统一的、高精度的认知的目的; 训练时, 为确保进一步兼顾旧知识, 避免对新知识的偏好, 提出间隔损失正则项来避免“近期偏好”问题. 为评估以上所提出方法的效用, 在增量学习标准数据集CIFAR-100和miniImageNet上系统地进行消融实验, 并与最新的一系列知名方法进行比较. 实验结果表明, 所提方法提高了人工神经网络的记忆能力, 与最新知名方法相比识别率平均提升5.27%以上.
2024, 35(7):3454-3468. DOI: 10.13328/j.cnki.jos.006914 CSTR:
摘要:高精度联邦学习模型的训练需要消耗大量的用户本地资源, 参与训练的用户能够通过私自出售联合训练的模型获得非法收益. 为实现联邦学习模型的产权保护, 利用深度学习后门技术不影响主任务精度而仅对少量触发集样本造成误分类的特征, 构建一种基于模型后门的联邦学习水印(federated learning watermark based on backdoor, FLWB)方案, 能够允许各参与训练的用户在其本地模型中分别嵌入私有水印, 再通过云端的模型聚合操作将私有后门水印映射到全局模型作为联邦学习的全局水印. 之后提出分步训练方法增强各私有后门水印在全局模型的表达效果, 使得FLWB方案能够在不影响全局模型精度的前提下容纳各参与用户的私有水印. 理论分析证明了FLWB方案的安全性, 实验验证分步训练方法能够让全局模型在仅造成1%主任务精度损失的情况下有效容纳参与训练用户的私有水印. 最后, 采用模型压缩攻击和模型微调攻击对FLWB方案进行攻击测试, 其结果表明FLWB方案在模型压缩到30%时仍能保留80%以上的水印, 在4种不同的微调攻击下能保留90%以上的水印, 具有很好的鲁棒性.
2024, 35(7):3469-3481. DOI: 10.13328/j.cnki.jos.006929 CSTR:
摘要:匿名凭证作为一种隐私保护的数字身份认证技术, 在认证用户数字身份有效性的同时, 能够保护用户身份隐私, 广泛应用于匿名身份认证、匿名通证、去中心化的数字身份管理系统等. 现有的匿名凭证通常采用承诺-签名-证明的构造范式, 通常要求采用的签名算法具备重随机化特性, 如CL系列签名、PS系列签名及结构保持签名. 现实应用中多采用ECDSA、Schnorr、SM2等数字签名进行数字身份认证, 但其缺乏对用户身份隐私的保护. 因此, 在认证的同时, 保护身份的隐私性, 构造兼容ECDSA、Schnorr、SM2等数字签名的匿名凭证具有一定的现实意义. 探索基于SM2数字签名构造匿名凭证协议的方法. 在申请证书阶段, 借助Pedersen承诺对用户属性进行承诺, 同时依据SM2签名消息为$ H(m) $的结构特点, 证明Pedersen承诺消息与哈希承诺中消息的相等性. 为实现这种代数结构和非代数结构陈述的等价性证明, 借鉴ZKB++技术对承诺消息进行转化, 进而实现跨域证明, 并签发基于SM2数字签名的授权证书. 在匿名凭证展示阶段, 结合零知识证明技术证明持有SM2数字签名, 保证了用户的匿名性. 给出基于SM2数字签名的匿名凭证协议的具体构造, 并进一步证明该协议的安全性. 最后, 通过对协议的计算复杂度分析与算法执行效率测试验证协议的有效性和可用性.
2024, 35(7):3482-3496. DOI: 10.13328/j.cnki.jos.006930 CSTR:
摘要:斯诺登事件后, 以算法替换攻击为代表的后门攻击带来的威胁受到广泛关注. 该类攻击通过不可检测的篡改密码协议参与方的算法流程, 在算法中嵌入后门来获得秘密信息. 为协议参与方配置密码学逆向防火墙(cryptographic reverse firewall, CRF)是抵抗算法替换攻击的主要手段. 基于身份加密(identity-based encryption, IBE)作为一种广泛应用的公钥加密体制, 亟需构建合适的CRF方案. 然而, 已有工作仅实现了CRF再随机化的功能, 忽视了将用户私钥直接发送给作为第三方的CRF的安全风险. 针对上述问题, 首先给出适用于IBE的CRF安全性质的形式化定义和安全模型. 其次提出可再随机化且密钥可延展的无安全信道IBE (rerandomizable and key-malleable secure channel free IBE, RKM-SFC-IBE)的形式化定义并给出传统IBE转化为RKM-SFC-IBE以及增加匿名性的方法. 最后基于RKM-SFC-IBE给出对应CRF的一般性构造方法, 并给出标准模型下IBE方案的CRF构造实例与性能优化方法. 与已有工作相比, 提出完备的适用于IBE的CRF安全模型, 给出一般构造方法, 明确为表达力更强的加密方案构造CRF时的基本原则.
2024, 35(7):3497-3530. DOI: 10.13328/j.cnki.jos.007053 CSTR:
摘要:手绘草图通过绘制简单的线条直观呈现用户的创作意图, 支持用户采用手绘的方式快速表达思维过程及设计灵感, 创作目标图像或视频. 随着深度学习的发展, 基于草图的视觉内容生成通过学习草图和视觉对象(即图像和视频)的特征分布进行跨领域特征映射, 实现图像自动生成草图以及草图自动生成对应的图像或视频, 与传统的人工创作方式相比有效地提高了生成的效率和多样性, 成为计算机视觉、图形学领域的重要研究方向, 并且在设计、视觉创作等领域具有重要作用. 综述基于草图的视觉内容生成深度学习方法的研究现状和发展趋势, 按照视觉对象的不同将现有工作分为基于草图的图像生成和基于草图的视频生成方法, 并结合草图和视觉内容跨域生成、风格转化、视觉内容编辑等任务对生成模型进行详细分析, 然后比较和总结常用的数据集、针对草图数据不足提出的扩充方法以及生成模型的评估方法, 进一步通过草图在视觉内容生成应用中面临的挑战及生成模型未来发展方向对研究趋势进行展望.
2024, 35(7):3531-3550. DOI: 10.13328/j.cnki.jos.006937 CSTR:
摘要:目标检测被广泛应用到自动驾驶、工业、医疗等各个领域. 利用目标检测算法解决不同领域中的关键任务逐渐成为主流. 然而基于深度学习的目标检测模型在对抗样本攻击下, 模型的鲁棒性存在严重不足, 通过加入微小扰动构造的对抗样本很容易使模型预测出错. 这极大地限制了目标检测模型在关键安全领域的应用. 在实际应用中的模型普遍是黑盒模型, 现有的针对目标检测模型的黑盒攻击相关研究不足, 存在鲁棒性评测不全面, 黑盒攻击成功率较低, 攻击消耗资源较高等问题. 针对上述问题, 提出基于生成对抗网络的目标检测黑盒攻击算法, 所提算法利用融合注意力机制的生成网络直接输出对抗扰动, 并使用替代模型的损失和所提的类别注意力损失共同优化生成网络参数, 可以支持定向攻击和消失攻击两种场景. 在Pascal VOC数据集和MS COCO数据集上的实验结果表明, 所提方法比目前攻击方法的黑盒迁移攻击成功率更高, 并且可以在不同数据集之间进行迁移攻击.