AI模型安全学习记录一

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/feibabeibei_beibei/article/details/102766347

一、背景:

        随着5G以及AIOT时代的到来,未来逐渐的成为一个数据主导的时代,AI等技术型的公司,会成为新的主流,和各行各业做大跨度的融合,这种融合当然在学术以及产业中会一直的存在,并且近年来的AI一直在各个世界顶级互联网大会中被频频的提到,现实中的成果也已经很多惠及到我们,比如目前成熟的人脸识别,以及前一段时间比较火的换脸—“ZAO”,还有未来不久百度为主导的无人驾驶车的量产等等。这个时候肯定会有越来越多的安全问题出现,如果AI在使用中出现了主动或者被动的安全问题,后果是不堪设想的,比如,由于攻击者对于图片的处理导致人脸识别出错,一个马路上的指示牌由于物理因素(风吹日晒或者人为)等导致无人车识别出错等等。这些中的安全问题不单单是一个AI在发挥作用过程中的安全问题,同时对于AI角色的使用中也会是一个值得关注的问题,比如黑客利用AI技术进行各种各样的攻击,网站图片验证码的识别进行攻击等等,并且AI安全是一个持久性的,声明周期会很长的安全需求。

二、主动AI安全:

2.1:静态模型安全——PP:

     目前的AI主要是分为训练和预测,一个AI模型是承载着整个结果呈现的核心,需要花费巨大的人力和数据投喂、经过反复的调参训练的一个模型,预测是对于一个输入做出的一个判断。从AI模型的放置位置角度看,虽然目前的很多训练模型会放在云服务端,但是存在的问题是延迟响应慢,对于服务器的压力比较大,所以这个时候可能有人会问:为什么这个时候不借助于手机端本身存在的资源去进行模型的存储和训练以及预测呢,百度安全团队已经做了这个事情并开源了PaddlePaddle:Github:https://github.com/PaddlePaddle/Paddle-Lite, 主要从编译、模型的改进减小模型的体积、利用移动端的指令集增大响应速度等。

接下里拿一个Demo来简单的说明:

这里重点关注三个问题:

第一:copyModels(),对于模型的拷贝,一般会放到手机的sdcardPath中,这样可能对于一个成熟项目进行更好的热更吧,毕竟模型是需要不断的进行调节的,然后服务端下发的。

第二:我们可以看到asset下面存放的是模型和一些图片数据文件。

第三:libpaddle-mobile.so文件为移动端的模型加载解析文件。

从静态代码安全的角度来讲,上面三个里面存在的一个最大安全问题就是,模型被攻击者进行盗取。

    override fun load() {
        val assetPath = "pml_demo"
        val sdcardPath = (Environment.getExternalStorageDirectory().toString()
                + File.separator + assetPath + File.separator + type)
        PML.load(sdcardPath,false)
    }

根据以上的代码模型的加载可以看出,我们可以做的是对于模型的加密以及对于libpaddle-mobile.so load函数的处理等。

2.2静态模型安全——Tensorflow:

         Tensorflow作为谷歌开源的深度学习框架目前已经被广泛的应用,包括谷歌出针对移动设备优化的Tensorflow版本——Tensorflow Lite。

对于Tensorflow Lite存在的静态安全问题,不进行详细的介绍,已经有详细的文章进行了说明。参考:Tensorflow + Android应用安全初探

2.3动态模型安全:

         2.1和2.2只是重点从静态的保护角度讲到模型的安全问题,比较偏向于防止白盒的攻击,让攻击者得不到你的模型,设想一种情况,攻击者在不知道你的模型的情况下,通过输入,输出等无限的逼近于你的模型,从而找到你模型的攻击点和缺点,这个时候静态的防御是不能起到一定的作用的,可以参照百度安全AI实验室的研究成果:“聚焦HITB + CyberWeek 2019 ¦ 云端黑盒模型安全伪命题?攻击只需2步”:云端黑盒模型制造的仅仅是虚假的安全感,当模型架构、参数及输入规则不可知的情况下,攻击者依然可通过有限的查询次数,利用同一张对抗图像,令大部分云端图像分类模型做出错误判断。这个时候就要动态模型的防护,怎么进行数据流的监控和模型的输出监控都是需要考虑的一个问题,后面的文章再进行详细的谈论。

三、被动AI安全:

       AI技术从正义的角度被广泛的进行应用,如果说攻击者利用AI技术去做一些攻击,比如:一套基于GAN的验证码AI识别系统,能在0.5秒之内识别出验证码;用AI破解Captcha验证码等等。

那我们作为一个正义的使者,能不能想出一个办法就是让攻击者无法短时间进行攻击或者需要花费他更多的精力使他难以成功呢?答案是有的:当然我们不是去考虑怎么更大程度上去区分人和机器,比如我们都经历过12306的那些反人类的验证码,这些我们不考虑。我们应该从随机性和样本攻击的角度使得攻击者训练的AI模型进行失效,后面的文章会详细的谈论这一块。

 

四、总结:

      作为一个AI安全的初学研究者,第一篇本文从AI技术的使用角色定义中存在的安全问题分为:主动AI模型安全和被动AI模型安全,然后主动AI模型安全又分为模型的静态防护和动态的防护。希望给想研究这一块的朋友们有个简单的介绍,后面会再详细的更新每一块上具体的实验操作。

猜你喜欢

转载自blog.csdn.net/feibabeibei_beibei/article/details/102766347