掌桥专利:专业的专利平台
掌桥专利
首页

一种可拓展的人工智能攻击基准测试方法及系统

文献发布时间:2024-04-18 19:52:40


一种可拓展的人工智能攻击基准测试方法及系统

技术领域

本发明涉及人工智能安全、人工智能测评领域,尤其涉及一种可拓展的人工智能攻击基准测试方法及系统。

背景技术

近年来,人工智能技术发展迅速,人工智能算法在各行各业的应用越来越普遍。但随着研究人员对人工智能算法的深入研究,多种针对人工智能模型的恶意攻击算法被发明出来。这些算法有些会生成恶意数据来欺骗人工智能模型,令其产生错误的预测结果;有些会通过在训练数据中投放恶意数据在人工智能模型中安插后门;有些则会根据人工智能模型给出的结果来反推其训练数据。

针对以上问题,为方便对人工智能模型的稳健性进行测试,一些集成了多种攻击方法的攻击框架或系统被提出,这些框架或系统可以方便地对模型使用多种攻击方法进行攻击以测试模型对这些攻击方法的抵抗性。但是这些方法或多或少在兼容性,可拓展性和易用性上存在以下问题:

第一,现有的攻击框架或系统往往只针对一种类型的人工智能模型,目前没有能同时支持攻击NLP模型和图像识别模型的框架。

第二,现有的攻击框架或系统往往对被测人工智能模型构建时使用的框架和语言有所要求,框架和语言之间有壁垒,如针对TensorFlow模型的攻击框架不能对PyTorch模型使用。针对python版本TensorFlow模型的攻击框架无法对Java版本TensorFlow模型进行攻击。

第三,自动化程度低,即便是采用攻击框架或系统进行攻击测量,也需要每次攻击都重新构建攻击脚本代码,若需进行多个攻击测试依然需要很大的工作量。这是由于这些框架或系统往往都是根据一些标准模型或者作者自己使用的模型来构建的,当用户测试自己构建的模型时还需要改写自己的模型来适配作者构建的攻击框架或系统。得到的攻击结果也大都以字符形式在命令行显示,用户查看和保存结果都不方便。

第四,由于学术界对于攻击方法的研究处于探索阶段,各种新的攻击方法出现较快,目前的工具缺少灵活性,难以快速集成新出现的攻击方法。

所以如何能够提供一种能够不受被测模型和语言限制的测试方法(框架)成为亟待解决的问题。

发明内容

本发明提供一种可拓展的人工智能攻击基准测试方法及系统,用以解决现有技术中测试方法(框架)受到被测模型和语言限制的问题。

为了实现上述目的,本发明技术方案提供了可拓展的人工智能攻击基准测试方法,方法包括:选择被测模型的框架以及攻击测试时采用的攻击类型;模型转换模块对所述被测模型进行转化,转化包括根据所述被测模型的类型对其框架进行转化,转化后得到与攻击框架匹配的所述被测模型的转换模型。载入数据集及所述转换模型,采用所述数据集对所述转换模型进行攻击,得到一测试结果。攻击框架调取格式统一的各攻击算法并生成相应攻击脚本,根据所述攻击脚本对所述转换模型进行若干次攻击,从而得到若干攻击结果。后一被测模型进行测试时所述模型转换模块再次根据其类型对其框架进行转化后进行攻击。

作为上述技术方案的优选,较佳的,构建所述模型转换模块,包括:设置一能够描述共有元素的总基类,设置一具有不同类型模型与不同函数之间的映射关系的类型模块;设置框架模块,所述框架模块中包括与各类型模型对应的不同机器学习框架及不同函数,使得被测模型的类型和框架在分别被转化后能够结合。设置人工智能模型功能模块,包括回归功能模块和分类功能模块。

作为上述技术方案的优选,较佳的,设置一分类模块,其包含功能为分类功能的各人工智能模型对应的分类基类;设置一回归模块,其包含功能为回归功能的各人工智能模型对应的回归基类;当所述被测模型被转化完毕后,所述回归模块或所述分类模块输出最终的所述转换模型。

作为上述技术方案的优选,较佳的,包括:若所述攻击框架中没有本次所需使用的攻击算法,则可采用外挂攻击模块,序列化模块和命令生成模块协同工作,将所述外挂攻击模块中攻击算法的格式与所述攻击算法统一;还可以在拓展编写前端中添加所需的攻击算法,所述拓展编写前端将新的攻击算法添加至所述攻击框架中。

作为上述技术方案的优选,较佳的,若所述被测模型的类型和/或框架种类未在所述模型转换模块找到,则用户在拓展编写前端中添加当前被测模型的类型和/或框架种类,所述拓展编写前端将新的类型和/或框架种类添加至所述模型转换模块中。

作为上述技术方案的优选,较佳的,当所述后一被测模型的回归基类/ 分类基类未在所述模型转换模块内,则在所述模型转换模块的最后一层复写一对应类以实现对所述后一被测模型的转换。

本发明还提供一种可拓展的人工智能攻击基准测试系统,包括,可视化界面前端、拓展编写前端、后台处理端、结果显示端。

可视化界面端,包含图形显示界面,用于用户选择目标模型文件的路径、测试集路径、模型类型、模型使用框架、攻击名称、攻击参数设置。

拓展编写前端,包含模型转换拓写模块和攻击算法拓写模块类,用于拓写所述后台运行端中模型转换模块和攻击算法模块中没有的人工智能模型基类、人工智能模型类型、人工智能模型框架、攻击算法。

后台运行端,包含由序列化模块、命令生成模块、数据集格式转化模块、攻击脚本生成模块组成的攻击准备模块,还包含模型转换模块和攻击算法模块,用于根据所述可视化界面端接收的用户选择命令对被测模型进行转化,对转化后得到的转换模型进行攻击测试;其中,攻击测试包括数据集测试和攻击模块攻击测试。

结果显示模块用于显示被测人工智能模型名称、被测人工智能模型类型、被测人工智能模型的BLAKE2码、测试集结果、攻击结果列表。

作为上述技术方案的优选,较佳的,包括:序列化模块用于,将用户在所述图形界面所做的选项转化成序列化的参数字符串。命令生成模块用于,当使用外挂攻击模块时,根据所述序列化参数生成对所述转换模型进行攻击测试的命令。数据集格式转化模块用于,若用户选择的数据集格式与转化后的转换模型不匹配,将数据集格式转换为与所述转换模型匹配的格式。攻击脚本生成模块用于,根据所述攻击算法模块调取的攻击算法生成相应攻击脚本用于攻击测试。

作为上述技术方案的优选,较佳的,模型转换模块包括:总基类,用于描述各人工智能模型共有的元素;类型模块,用于向框架模块输入被测模型的类型,所述类型模块有不同类型模型与不同函数之间的映射关系。框架模块,用于将各类型模型与不同机器学习框架及不同函数对应,使得被测模型的类型和框架在分别被转化后能够结合。人工智能模型功能模块,用于对所述被测模型的功能进行分类,其包括回归功能模块和分类功能模块。当根据所述人工智能模型功能模块对所述被测模型的分类结果为分类功能,所述分类模块用于,根据所述框架模块对所述被测模型的框架分类结果对所述被测模型进行基于分类基类的转化。当根据所述人工智能模型功能模块对所述被测模型的分类结果为回归功能,所述回归模块用于,根据所述框架模块对所述被测模型的框架分类结果对所述被测模型进行基于回归基类的转化。转化输出模块,用于当所述被测模型被所述分类模块或所述回归模块转化完毕后,输出最终的所述转换模型。

作为上述技术方案的优选,较佳的,攻击算法模块包括:攻击算法模块为一攻击框架,所述攻击框架包括但不限于Evasion攻击、投毒攻击、提取攻击、推断攻击、重构攻击、所述拓展编写前端输入的攻击算法。

本发明技术方案提供了一种可拓展的人工智能攻击基准测试方法及系统,选择被测模型的框架以及攻击测试时采用的攻击类型;模型转换模块对所述被测模型进行转化,转化包括根据所述被测模型的类型对其框架进行转化,转化后得到与攻击框架匹配的所述被测模型的转换模型。载入数据集及所述转换模型,采用所述数据集对所述转换模型进行攻击,得到一测试结果。攻击框架调取格式统一的各攻击算法并生成相应攻击脚本,根据所述攻击脚本对所述转换模型进行若干次攻击,从而得到若干攻击结果。后一被测模型进行测试时所述模型转换模块再次根据其类型对其框架进行转化后进行攻击。

本发明的优点是能够对不同根据不同的人工智能模型灵活转换,对转换后模型进行攻击得到攻击结果,无需针对不同人工智能模型重新搭建测试模组,提升攻击效率降低测试成本,解决现有技术中测试方法(框架)受到被测模型和语言限制的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种可拓展的人工智能攻击基准测试方法及系统的模型转换模块示意图。

图2为本发明实施例提供的一种可拓展的人工智能攻击基准测试方法及系统的内置攻击框架示意图。

图3为本发明实施例提供的一种可拓展的人工智能攻击基准测试方法及系统的架构示意图。

图3a为本发明实施例提供的一种可拓展的人工智能攻击基准测试方法及系统的流程示意图。

图4为本发明实施例提供的一种可拓展的人工智能攻击基准测试方法及系统的流程示意图。

图5为本发明实施例提供的一种可拓展的人工智能攻击基准测试方法及系统的开始界面示意图。

图6为本发明实施例提供的一种可拓展的人工智能攻击基准测试方法及系统的结果显示界面示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

现结合实施例对本发明提供的一种可拓展的人工智能攻击基准测试方法进行说明,在本实施例中,基类以Tensorflow、Scikitlearn、Pytorch 三种基类为例进行说明,但并不以此作为本发明的限制。

首先构建模型转换模块,如图1所示:

设置一能够描述共有元素的总基类,共有元素指的是:在本基类包括所有机器学习模型都共有的元素。总基类的作用在于,减少用户在自定义新的机器学习种类时的工作量。

设置类型模块,它含有不同类型的人工智能模型和函数之间的映射关系。具体的,人工智能模型(机器学习)的类型进行分类,包括但不限于:树模型、神经网络、损失梯度、梯度基类模型等。不同类别的模型包含各自类型的特有元素或方法,通过各自元素或方法对各自的输入输出进行定义。例如:神经网络模型中包含构建所有神经网络都需要的训练函数、预测函数、获取激活层函数等,而梯度模型则包含计算损失函数梯度等函数;从而神经网络模型和梯度模型根据其各自的函数(元素或方法)定义其适用的输入和输出。从而,将总基类和类型类进行选取结合就可以实现含有完整功能的类。

类型模块还包括一自定义类型基类,用于用户定义特有模型。具体的,若用户本次需测试的模型不属于类型模块中任一种,则可以在自定义类型模块中自定义此测试模型特有的函数。

设置框架模块,框架模块包括与类型模块中各人工智能模型类型对应的及其学习框架。具体的,框架模块中包括与工智能模型类型(机器学习类型) 类型对应的基类。如图1所示,包括但不限于Tensorflow基类、Scikitlearn 基类,Pytorch基类等。这些基类中引入了对应的机器学习框架,并配置了相关函数来确保输入符合框架的格式要求。由于用户的模型大多是根据常用框架来进行构建的,框架模块中包含的框架基类可以将用户采用的框架的模型格式转换成本方法适用的标准格式。

进一步的,框架模块包括一自定义框架基类模块,用于用户定义特有框架基类。具体的,若用户本次需测试的模型不属于框架模块中任一种,则可以在自定义框架基类模块中自定义此测试模型的框架基类。

接下来需要将拥有完整功能的类和框架模块中的框架基类进行结合。针对不同的机器学习框架,进一步设定不同的对应基类。本实施例按人工只能模型功能设置了两个不同的功能模块:起到预测作用的回归功能模块、起到分类作用的分类功能模块。这两种模型实现的最终目的不同,其所使用的功能函数也各不相同。

所以进一步的,根据功能设置不同的基类模块:回归模块和分类模块。根据前述框架模块包含的基类,回归模块包括Tensorflow回归基类、Scikitlearn回归基类,Pytorch回归基类;分类模块包括Tensorflow分类基类、Scikitlearn分类基类,Pytorch分类基类。

输入需测试的人工智能模型后,总基类模块向框架模块输入共有元素,从类型模块中选择人工智能模型所属的类型。再从框架模型中选择被测模型使用的框架,识别人工智能模型的功能(回归或分类),将选择的框架模型与功能对应的基类进行结合得到适用于不同功能的基类。例如,xgboost模型本身既能作为回归模型也能作为分类模型,在选择完xgboost模型的框架后,就要明确该模型的功能类型。

在框架模块和功能模块合并完成后,我们已经得到了确定了功能和功能对应的基类,从而构造最终的转换模型。具体的,对于scikitlearn回归基类,本申请能够在此基础上根据不同具体模型的差别构建更具体的转换模型,包括但不限于Scikitlearn决策树转换模型、ScikitlearnAdaBoost转换模型、 Scikitlearn逻辑回归转换模型、Scikitlearn随机森林转换模型。

假如要进行攻击测试的是一个Scikitlearn随机森林模型,本申请能够使用以下转换命令:test_model=Scikitlearn_randomforest(model),将不符合格式的转换模型转化成能够直接用内置攻击算法来攻击的模型。

模型转换模块的输出层能够根据用户需求复写,具体的:

假如转换模型是一种基于scikitlearn自定义的树模型,本申请只需要根据该模型特有的部分在回归模块和分类模块后(也就是最后一层输出层)复写一个对应的类(scikitlearn回归树,scikitlearn分类树,)即可,不需要再从头进行完整构建。综上,模型转换模块是通过对各种框架分别进行适配来将把模型的各组件替换成与本方法中攻击算法匹配的统一格式的模块。

本发明中攻击框架内置于系统中,该攻击框架中集成了现有的主流攻击算法,包括但不限于:Evasion攻击、投毒攻击、提取攻击、推断攻击和重构攻击。攻击框架以基类方法为基础构建具体的攻击算法,具体的:

由于本发明已经通过模型转化层将输入模型转化成为统一格式的转换模型,则本发明的攻击框架内的攻击算法针对系统标准模型来构建攻击,无需再考虑适配的问题。对于攻击框架,采用模块化的形式从底层开始向上构建。首先将攻击类型分为几个大类,包括闪避攻击,投毒攻击,提取攻击,推断攻击,重构攻击等。对这几个大类分别写出其基类然后再对每类攻击的基类上进行构建,例如推断攻击有成员推断攻击和属性推断攻击。则在攻击框架中的集成推断攻击基类的基础上在分别构建成员推断攻击类和属性推断攻击类。进一步的,成员推断攻击又有一些具体不同的实施方法,比如 shadow_model和labelonly等,则在成员推断攻击类基础上构建不同的攻击,从而攻击框架构建完毕。

除内置攻击框架外,由于本发明是通过生成命令脚本来调用攻击框架的,所以通过将用户在所述图形界面所做的选项转化成序列化的参数字符串,命令生成模块将包含系统命令的参数字符串转换成已有第三方攻击框架的命令来使用第三方攻击框架,这大大提高了系统的可拓展性,减少了测试人员的工作量。

至此,模型转换模块和针对标准模型的攻击框架构建完成。这样就实现了本发明能够在大部分常见框架下训练出的模型采用内置的攻击方法可以对进行攻击的目的。进一步的,本发明构建模型转换模块和攻击框架方法均是从底层采用模块拼接进行构建的,所以容易将多内置不支持的模型和攻击方法进行适配。使用者只需要编写顶层的部分代码(模型转换模块的最后一层) 就可以扩展模型支持和攻击方法。

进一步的,如需要增添新的攻击框架,用户可以根据框架的命令规则填写命令转化脚本,该脚本可以让指令转化成框架兼容的指令进而令直接调用外部攻击框架。由于当前已有的框架都是通过命令指令的方式来发起攻击,理论上本发明可以支持任何外部框架。但需要注意的是,用户需确保用户的被测模型和外挂攻击框架之间的兼容性,如两者之间存在兼容问题用户需要在使用本系统前在后台编写相关兼容性代码来确保外挂攻击框架可以在被测模型上使用。

为了更好的实现本发明提供的方法,本发明还提供了一种可拓展的人工智能攻击基准测试系统,其结构如图3所示,其结构流程如图3a所示,包括,可视化界面前端1(图像界面)、拓展编写前端2、后台运行端3、结果显示端4。

可视化界面前端1,包括:目标模型文件路径模块11、测试集路径模块 12、模型类型模块13、模型使用框架模块14、攻击参数设置模块15。

目标模型文件路径模块11和测试集路径模块12分别用于用户选择目标模型文件的路径,测试集路径。模型类型模块13用于用户选择被测模型的类型。模型使用框架模块14,用于用户选择被测模型的框架基类。攻击参数设置模块15,用于用户设置攻击参数(可选)。

拓展编写前端2,包含模型转换拓写模块21和攻击算法拓写模块22,分别用于拓写后台运行端3中模型转换模块和攻击算法模块中没有的人工智能模型基类、人工智能模型类型、人工智能模型框架、攻击算法。具体的,模型转换拓写模块和攻击算法拓写模块均包括样例显示模块和辅助编写模块。模型转换拓写模块中的样例显示模块211用于向用户显示类型模块、框架模块、输出层的编写样例,辅助编写模块212用于纠正用户的编写错误。攻击算法拓写模块中的样例显示模块221用于向用户显示攻击框架的编写样例,辅助编写模块222用于纠正用户的编写错误。

后台运行端3,包含由序列化模块31、命令生成模块32、数据集格式转化模块33、攻击脚本生成模块34组成的攻击准备模块A,还包含模型转换模块B和攻击算法模块C。后台运行端3用于根据可视化界面端接收的用户选择命令和/或从拓展编写前端2编写输入的新的模型信息和/或攻击算法对被测模型进行转化得到图3a中的转换模型,调用攻击算法对转化后得到的转换模型进行攻击测试;其中,攻击测试包括数据集测试和攻击模块攻击测试。

对于攻击准备模块A:

序列化模块31用于,将用户在图形界面所做的选项转化成序列化的参数字符串。

命令生成模块32用于,当使用外挂攻击模块时,根据序列化模块31生成的序列化的参数字符串生成对所述转换模型进行攻击测试的命令,对外挂攻击模块的攻击算法格式进行转换,得到能够用于对待测模型(此处待测模型指的是已经转换完成的待测模型)进行攻击的攻击算法格式。

数据集格式转化模块33用于,若用户选择的数据集格式与转化后的转换模型不匹配,将数据集格式转换为与转换模型匹配的格式。

攻击脚本生成模块34用于,根据攻击算法模块调取的攻击算法生成相应攻击脚本用于攻击测试。

模型转换模块A,如图1所示包括:总基类,用于描述各人工智能模型共有的元素。类型模块,用于向框架模块输入被测模型的类型,类型模块有不同类型模型与不同函数之间的映射关系。框架模块,用于将各类型模型与不同机器学习框架及不同函数对应,使得被测模型的类型和框架在分别被转化后能够结合。人工智能模型功能模块,用于对被测模型的功能进行分类,其包括回归功能模块和分类功能模块。当根据人工智能模型功能模块对所述被测模型的分类结果为分类功能,分类模块用于,根据框架模块对被测模型的框架分类结果对被测模型进行基于分类基类的转化。当根据人工智能模型功能模块对被测模型的分类结果为回归功能,回归模块用于,根据框架模块对所述被测模型的框架分类结果对被测模型进行基于回归基类的转化。转化输出模块,用于当被测模型被所述分类模块或回归模块转化完毕后,输出最终的转换模型。

攻击算法模块C为一攻击框架,如图2所示,攻击算法模块C包括但不限于:Evasion攻击、投毒攻击、提取攻击、推断攻击和重构攻击。Evasion攻击包括具体的ZooAttack攻击、CarliniL2攻击、Wasserstein攻击。投毒攻击包括白盒投毒攻击和黑盒投毒攻击。提取攻击包括KnockoffNets、 FunctioanllyEquicalentExtracton、CopycatCNN。推断攻击包括属性推断攻击和成员推断攻击。

结果显示端4,用于在其结果汇总模块对攻击结果汇总后,显示被测人工智能模型名称、被测人工智能模型类型、被测人工智能模型的BLAKE2码、测试集结果、攻击结果列表。

现结合具体场景对本发明技术方案进行详细说明,流程图参考图4:

步骤S1,用户在图形界面输入要被测模型的文件路径,要使用测试集的相关路径(如需要内置测试集可直接在列表中选取),并选择被测模型使用的框架以及需要进行测试的攻击(可多选,默认是系统内置攻击框架的攻击算法),选择完要进行的攻击后系统会提示是否使用默认的攻击参数。如果需要调整用户还可手动为攻击算法设置参数。

如果用户要选择使用外挂框架进行攻击,则需要先进行攻击算法拓写,再选择要使用的攻击框架,这时攻击算法列表里的攻击算法会自动变成所选攻击框架中的算法,其他步骤则和使用内置框架相同。

步骤S2,用户在图形界面将所有选项配置并点击开始按钮后,后台运行端3首先会执行序列化模块31将刚才用户在图形界面所做的选项转化成序列化的参数字符串,如果是选用了外挂攻击模块,序列化的参数还会经过命令生成模块32将其转换成符合外挂框架格式的命令。

然后命令首先会根据用户发出的载入模型命令从用户输入的路径中载入模型文件,载入后加载待测模型使用模型转换模块转换成本系统的标准化模型(转换模型),并将标准化模型分别存入本地硬盘的临时缓存和内存中。然后命令会执行用户发出的载入数据集命令,根据用户选择的数据集路径加载数据集,如数据集格式与模型不匹配,则经当前数据集经数据集转换模块进行转换,得到标准化数据集。具体的,数据集转换模块对输入数据集的文件格式进行检测,模块支持对常见数据格式比如:CSV、HDF5、pandas、JSON 等格式以及各种常见框架专有格式比如:TFRecord等数据格式的识别。当用户上传数据集时,转换模块会根据上传数据集的格式来识别数据集的特征名与对应特征值,并将特征名与特征值按照与标准化模型相匹配的标准化格式来生成标准化的数据集。

待模型和数据集都载入完成后,系统首先会用测试集对模型进行一次测试,测试的结果将会以文本文件的格式将结果存在本地,该结果将作为基准来和后续攻击的结果进行对比。

然后系统会从攻击框架中启动用户选择的框架,同时执行与此框架对应的攻击命令,相应攻击算法来成一个攻击脚本,攻击脚本连续对转换模型使用用户所选的攻击算法一次进行攻击测试。系统接着就根据脚本开始调用攻击框架中其他攻击算法对转换模型进行攻击,每个攻击完成后系统会将攻击结果存在本地。

步骤S3,当所有攻击都完成后,结果显示端4会调用结果汇总模块,汇总模块会读取本地保存的测试集结果和攻击结果并生成列表显示在图形界面。此外结果显示界面还包括模型名称,模型文件的BLAKE2码,模型的类型。

本发明通过对现有的模型进行分类,对不同的分类提供不同的基类,将网络模型拆解为模块化搭建,使得用户能够简单的输出转换模型,而无需每次重新搭建测试模型。对攻击算法分类,针对模块化后的搭建的测试模型的格式对分类的攻击算法统一格式,使得用户可快速在基类上构建自己自定义的攻击算法,大大减少了用户向系统中集成新攻击方法的工作量。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

技术分类

06120116329858