序言
近日,微软宣布开源了一种人工智能系统的安全测试工具——Counterfit。微软最初开发该工具来测试自己的AI系统的安全性,在评估其漏洞之后,微软决定开源Counterfit,以帮助组织验证他们使用的AI算法是否“健壮、可靠且值得信赖”。Counterfit最初是为针对单个AI模型编写的攻击脚本的集合,但Microsoft却将其变成了自动化工具,可以大规模攻击多个AI系统。“今天,我们常规地将Counterfit用作我们的AI红队运营的一部分。我们发现,自动化MITRE的Adversarial ML威胁矩阵中的技术并将其与Microsoft自己的生产环境AI服务进行重放以主动扫描特定于AI的漏洞很有帮助。微软公司的Azure Trustworthy ML团队的Will Pearce和Ram Shankar Siva Kumar解释说:“我们在AI开发阶段就导入Counterfit,以在AI系统中的漏洞投入生产之前发现它们。”Counterfit是一种命令行工具,可以在云中或本地安装和部署。该工具与环境无关:评估后的AI模型可以托管在本地或边缘的云环境中。“该工具将其AI模型的内部工作抽象化,以便安全专业人员可以专注于安全评估。Counterfit使安全社区可以访问已发布的攻击算法,并有助于提供一个可扩展的接口,通过该接口可以开发、管理和发起对AI模型的攻击。”Counterfit还可以用于渗透测试和红队AI系统(通过使用预加载的已发布攻击算法),扫描其中的漏洞并进行日志记录(记录针对目标模型的攻击)。Counterfit的另一个优点是可以在使用不同数据类型(文本、图像或通用输入)的AI模型上运行。在开放源代码之前,Microsoft已要求大型组织、中小企业和政府组织中的合作伙伴针对其环境中的ML模型对该工具进行测试,以确保它可以满足每个人的需求。MITRE在最近的报告中指出:“过去三年中,包括谷歌、亚马逊、微软和特斯拉等公司的机器学习系统都曾被欺骗、绕过或误导,此类攻击将来只会越来越多。”
——“安全牛”微软开源人工智能安全测试工具:Counterfit 2021-05-07
项目连接先放上了 https://github.com/Azure/counterfit/
项目运行部署
环境:pycharm2018\windows10\python 3.9.6(虽然官方给3.7,但决定先踩踩坑) requirements:
cmd2==1.3.11
numpy==1.18.5
requests==2.24.0
hyperopt==0.2.3
scipy==1.7.1
questionary==1.9.0
python-Levenshtein==0.12.2
adversarial-robustness-toolbox>=1.5
textattack
torchvision==0.9.0
torch==1.8.0
tensorflow-hub==0.12.0
torchfile==0.1.0
h5py==2.10
lightgbm==3.1.1
pytest==6.1.1
安装到textattack: https://textattack.readthedocs.io/en/latest/ pycharm直接在setting里面安装报错,pip install textattack也一样,非版本问题、非中文路径问题 报错内容:
_editdistance.cpp
editdistance/_editdistance.cpp: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Uni
code 格式以防止数据丢失
editdistance/_editdistance.cpp(117): error C2059: 语法错误:“if”
editdistance/_editdistance.cpp(118): error C2059: 语法错误:“else”
editdistance/_editdistance.cpp(119): error C2059: 语法错误:“else”
editdistance/_editdistance.cpp(120): error C2059: 语法错误:“else”
editdistance/_editdistance.cpp(121): error C2059: 语法错误:“else”
editdistance/_editdistance.cpp(122): error C2059: 语法错误:“else”
editdistance/_editdistance.cpp(123): error C2059: 语法错误:“else”
editdistance/_editdistance.cpp(124): error C2059: 语法错误:“else”
editdistance/_editdistance.cpp(125): error C2059: 语法错误:“else”
editdistance/_editdistance.cpp(126): error C2059: 语法错误:“else”
editdistance/_editdistance.cpp(127): error C2059: 语法错误:“return”
editdistance/_editdistance.cpp(128): error C2059: 语法错误:“}”
editdistance/_editdistance.cpp(128): error C2143: 语法错误: 缺少“;”(在“}”的前面)
Running setup.py install for editdistance ... error
ERROR: Command errored out with exit status 1:……
解决方法:直接下载 editdistance-0.3.1.tar.gz 找到报错文件,打开.\editdistance-0.3.1\editdistance_editdistance.cpp 发现里面有日文注释line:33、66、104、109-111、129全部删除保存 安装textattack源:
git clone https://github.com/QData/TextAttack.git
cd TextAttack
找到textattack里面的editdistance删除 然后进入textattack执行pip install -e . 安装成功: python3.9: 运行counterfit.py 报错:ImportError: cannot import name ‘gcd’ from ‘fractions’ 解决方法:python3.9 gdc 函数在math中,修改dag.py: counterfit成功执行:
|