Counterfit 部署教程

序言

近日,微软宣布开源了一种人工智能系统的安全测试工具——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:

# counterfit
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
# frameworks
adversarial-robustness-toolbox>=1.5
textattack
torchvision==0.9.0
torch==1.8.0
tensorflow-hub==0.12.0 # to run textbugger, bae_garg and textfooler attacks
torchfile==0.1.0 # to run fga_jia_2019 attack
h5py==2.10
lightgbm==3.1.1
# testing framework
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全部删除保存
editdistance_editdistance.cpp文件日文注释
安装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成功执行:
在这里插入图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值