前言
生活中的深度学习
深度学习自2006年产生之后就受到科研机构、工业界的高度关注。最初,深度学习主要用于图像和语音领域。从2011年开始,谷歌研究院和微软研究院的研究人员先后将深度学习应用到语音识别,使识别错误率下降了20%~30%。2012年6月,谷歌首席架构师jeff dean和斯坦福大学教授andrew ng主导著名的google brain项目,采用16万个cpu来构建一个深层神经网络,并将其应用于图像和语音的识别,最终大获成功。
2016年3月,alphago与围棋世界冠军、职业九段棋手李世石进行围棋人机大战,以4比1的总比分获胜;2016年年末2017年年初,该程序在中国棋类网站上以“大师”(master)为注册账号与中日韩数十位围棋高手进行快棋对决,连续60局无一败绩;2017年5月,在中国乌镇围棋峰会上,它与排名世界第一的围棋世界冠军柯洁对战,以3比0的总比分获胜。alphago的成功更是把深度学习的热潮推向了全球,成为男女老少茶余饭后关注的热点话题。
现在,深度学习已经遍地开花,在方方面面影响和改变着人们的生活,比较典型的应用包括智能家居、智能驾驶、人脸支付和智能安防。
深度学习的脆弱性
深度学习作为一个非常复杂的软件系统,同样会面对各种黑客攻击。黑客通过攻击深度学习系统,也可以威胁到财产安全、个人隐私、交通安全和公共安全(见图0-1)。针对深度学习系统的攻击,通常包括以下几种。
图0-1 深度学习的脆弱性
1. 偷取模型
各大公司通过高薪聘请ai专家设计模型,花费大量资金、人力搜集训练数据,又花费大量资金购买gpu设备用于训练模型,最后得到深度学习模型。深度学习模型的最终形式也就是从几百kb到几百mb不等的一个模型文件。深度学习模型对外提供服务的形式也主要分为云模式的api,或者私有部署到用户的移动设备或数据中心的服务器上。针对云模式的api,黑客通过一定的遍历算法,在调用云模式的api后,可以在本地还原出一个与原始模型功能相同或者类似的模型;针对私有部署到用户的移动设备或数据中心的服务器上,黑客通过逆向等传统安全技术,可以把模型文件直接还原出来供其使用。偷取深度学习模型的过程如图0-2所示。
2. 数据投毒
针对深度学习的数据投毒主要是指向深度学习的训练样本中加入异常数据,导致模型在遇到某些条件时会产生分类错误。如图0-3所示。早期的数据投毒都存在于实验室环境,假设可以通过在离线训练数据中添加精心构造的异常数据进行攻击。这一攻击方式需要接触到模型的训练数据,而在实际环境中,绝大多数情况都是公司内部在离线数据中训练好模型再打包对外发布服务,攻击者难以接触到训练数据,攻击难以发生。于是攻击者把重点放到了在线学习的场景,即模型是利用在线的数据,几乎是实时学习的,比较典型的场景就是推荐系统。推荐系统会结合用户的历史数据以及实时的访问数据,共同进行学习和判断,最终得到推荐结果。黑客正是利用这一可以接触到训练数据的机会,通过一定的算法策略,发起访问行为,最终导致推荐系统产生错误。
图0-2 偷取深度学习模型
图0-3 针对深度学习的数据投毒
3. 对抗样本
对抗样本由christian szegedy等人提出,是指在数据集中通过故意添加细微的干扰所形成的输入样本,这种样本导致模型以高置信度给出一个错误的输出。在正则化背景下,通过对抗训练减少原有独立同分布的测试集的错误率,在对抗扰动的训练集样本上训练网络。
简单地讲,对抗样本通过在原始数据上叠加精心构造的人类难以察觉的扰动,使深度学习模型产生分类错误。以图像分类模型为例,如图0-4所示,通过在原始图像上叠加扰动,对于肉眼来说,扰动非常细微,图像看起来还是熊猫,但是图像分类模型却会以很大的概率识别为长臂猿。
图0-4 针对图像分类模型的对抗样本
下面以一个图像分类模型为例,更加直接地解释对抗样本的基本原理。通过在训练样本上学习,学到一个分割平面,在分割平面一侧的为绿球,在分割平面另外一侧的为红球。生成攻击样本的过程,就是在数据上添加一定的扰动,让其跨越分割平面,从而把分割平面一侧的红球识别为绿球,如图0-5所示。
图0-5 对抗样本的基本原理
对抗样本按照攻击后的效果分为targeted attack(定性攻击)和non-targeted attack(无定向攻击)。区别在于targeted attack在攻击前会设置攻击的目标,比如把红球识别为绿球,或者把面包识别为熊猫,也就是说在攻击后的效果是确定的;non-targeted attack在攻击前不用设置攻击目标,只要攻击后,识别的结果发生改变即可,可能会把面包识别为熊猫,也可能识别为小猪佩琪或者小猪乔治,如图0-6所示。
图0-6 targeted attack和non-targeted attack
对抗样本按照攻击成本分为white-box attack(白盒攻击)、black-box attack(黑盒攻击)和real-world attack/physical attack(真实世界/物理攻击)。
white-box attack(见图0-7)是其中攻击难度最低的一种,前提是能够完整获取模型的结构,包括模型的组成以及隔层的参数情况,并且可以完整控制模型的输入,对输入的控制粒度甚至可以到比特级别。由于white-box attack前置条件过于苛刻,通常作为实验室的学术研究或者作为发起black-box attack和real-world attack/physical attack的基础。
图0-7 white-box attack
black-box attack相对white-box attack攻击难度具有很大提高,black-box attack完全把被攻击模型当成一个黑盒,对模型的结构没有了解,只能控制输入,通过比对输入和输出的反馈来进行下一步攻击,见图0-8。
图0-8 black-box attack
real-world attack/physical attack(见图0-9)是这三种攻击中难度最大的,除了不了解模型的结构,甚至对于输入的控制也很弱。以攻击图像分类模型为例(见图0-10),生成的攻击样本要通过相机或者摄像头采集,然后经过一系列未知的预处理后再输入模型进行预测。攻击中对抗样本会发生缩放、扭转、光照变化、旋转等。
图0-9 real-world attack/physical attack
图0-10 图像分类模型的真实世界/物理攻击
常见检测和加固方法
1. 深度学习脆弱性检测
检测深度学习脆弱性的过程,其实就是发起攻击的过程,常见的白盒攻击算法列举如下。
? ilcm(最相似迭代算法)
? fgsm(快速梯度算法)
? bim(基础迭代算法)
? jsma(显著图攻击算法)
? deepfool(deepfool算法)
? c/w(c/w算法)
常见的黑盒攻击方法列举如下。
? single pixel attack(单像素攻击)
? local search attack(本地搜索攻击)
2. 深度学习脆弱性加固
针对深度学习脆弱性进行加固的常见方法主要包括以下几种,我们将重点介绍adversarial training。
? feature squeezing(特征凝结)
? spatial smoothing(空间平滑)
? label smoothing(标签平滑)
? adversarial training(对抗训练)
? virtual adversarial training(虚拟对抗训练)
? gaussian data augmentation(高斯数据增强)
adversarial training如图0-11所示,其基本思路是,常见的对抗样本生成算法是已知的,训练数据集也是已知的,那么可以通过常见的一些对抗样本工具箱,比如advbox或者foolbox,在训练数据的基础上生成对应的对抗样本,然后让深度学习模型重新学习,让它认识这些常见的对抗样本,这样新生成的深度学习模型就具有了一定的识别对抗样本的能力。
与adversarial training思路类似的是gaussian data augmentation。gaussian data augmentation的基本原理是,对抗样本是在原始数据上叠加一定的扰动,这些扰动非常接近随机的一些噪声。adversarial training虽然简单易于实现,但是技术上难以穷尽所有的攻击样本。gaussian data augmentation直接在原始数据上叠加高斯噪声,如图0-12所示,k为高斯噪声的系数,系数越大,高斯噪声越强,其他参数分别表示高斯噪声的均值和标准差。gaussian data augmentation把训练数据叠加了噪声后,重新输入给深度学习模型学习,通过增加训练轮数、调整参数甚至增加模型层数,在不降低原有模型准确度的情况下,让新生成的深度学习模型具有了一定的识别对抗样本的能力。
图0-11 adversarial training原理图
图0-12 图像增加高斯噪声
对抗样本领域的最新进展
对抗样本是ai安全研究的一个热点,新的攻击算法和加固方法层出不穷,而且攻击场景也从实验室中的简单图像分类,迅速扩展到智能音箱、无人驾驶等领域。百度安全实验室的最新研究报告《感知欺骗:基于深度神经网络(dnn)下物理性对抗攻击与策略》成功入选blackhat europe 2018。报告展现了让物体在深度学习系统的“眼”中凭空消失,在ai时代重现了大卫·科波菲尔的经典魔法。针对深度学习模型漏洞进行物理攻击可行性研究有着广泛的应用前景,在自动驾驶领域、智能安防领域、物品自动鉴定领域都有重要的实际意义。
如图0-13所示,在时间t0的时候,当在车后显示器中显示正常logo时,yolov3可以正确识别目标车辆,而在t1时,切换到扰动后的图片时,它可以立刻让目标车辆在yolov3面前变得无法辨识;在t2时,如图0-14所示切换回正常的图片,yolov3重新可以识别目标车辆。这是首次针对车辆的物理攻击的成功展示,与以往的学术论文相比,在攻击目标的大小、分辨率的高低以及物理环境的复杂性等方面,在影响和难度上都是一个巨大提升。
图0-13 t0时可以正常识别出车辆,t1时无法识别出车辆
图0-14 t2时可以正常识别出车辆
kan yuan和di tang等人在论文《stealthy porn:understanding real-world adversarial images for illicit online promotion》中介绍了黑产如何通过单色化、加噪声、增加文字、仿射变化、滤波模糊化和遮盖等方式让违规图片绕过目前主流的图片内容检测服务。这也标志着对抗样本技术已经从实验室环境真正进入了网络对抗实战。
国内安全人员在对抗样本领域的研究成果得到了国际的普遍认可。朱军等人指导的清华大学团队曾在nips 2017对抗样本攻防竞赛中夺冠,纪守领老师所在的nesa lab提出了一种新型的对抗性验证码,能防范来自打码平台等黑产的破解。
生活中的深度学习
深度学习自2006年产生之后就受到科研机构、工业界的高度关注。最初,深度学习主要用于图像和语音领域。从2011年开始,谷歌研究院和微软研究院的研究人员先后将深度学习应用到语音识别,使识别错误率下降了20%~30%。2012年6月,谷歌首席架构师jeff dean和斯坦福大学教授andrew ng主导著名的google brain项目,采用16万个cpu来构建一个深层神经网络,并将其应用于图像和语音的识别,最终大获成功。
2016年3月,alphago与围棋世界冠军、职业九段棋手李世石进行围棋人机大战,以4比1的总比分获胜;2016年年末2017年年初,该程序在中国棋类网站上以“大师”(master)为注册账号与中日韩数十位围棋高手进行快棋对决,连续60局无一败绩;2017年5月,在中国乌镇围棋峰会上,它与排名世界第一的围棋世界冠军柯洁对战,以3比0的总比分获胜。alphago的成功更是把深度学习的热潮推向了全球,成为男女老少茶余饭后关注的热点话题。
现在,深度学习已经遍地开花,在方方面面影响和改变着人们的生活,比较典型的应用包括智能家居、智能驾驶、人脸支付和智能安防。
深度学习的脆弱性
深度学习作为一个非常复杂的软件系统,同样会面对各种黑客攻击。黑客通过攻击深度学习系统,也可以威胁到财产安全、个人隐私、交通安全和公共安全(见图0-1)。针对深度学习系统的攻击,通常包括以下几种。
图0-1 深度学习的脆弱性
1. 偷取模型
各大公司通过高薪聘请ai专家设计模型,花费大量资金、人力搜集训练数据,又花费大量资金购买gpu设备用于训练模型,最后得到深度学习模型。深度学习模型的最终形式也就是从几百kb到几百mb不等的一个模型文件。深度学习模型对外提供服务的形式也主要分为云模式的api,或者私有部署到用户的移动设备或数据中心的服务器上。针对云模式的api,黑客通过一定的遍历算法,在调用云模式的api后,可以在本地还原出一个与原始模型功能相同或者类似的模型;针对私有部署到用户的移动设备或数据中心的服务器上,黑客通过逆向等传统安全技术,可以把模型文件直接还原出来供其使用。偷取深度学习模型的过程如图0-2所示。
2. 数据投毒
针对深度学习的数据投毒主要是指向深度学习的训练样本中加入异常数据,导致模型在遇到某些条件时会产生分类错误。如图0-3所示。早期的数据投毒都存在于实验室环境,假设可以通过在离线训练数据中添加精心构造的异常数据进行攻击。这一攻击方式需要接触到模型的训练数据,而在实际环境中,绝大多数情况都是公司内部在离线数据中训练好模型再打包对外发布服务,攻击者难以接触到训练数据,攻击难以发生。于是攻击者把重点放到了在线学习的场景,即模型是利用在线的数据,几乎是实时学习的,比较典型的场景就是推荐系统。推荐系统会结合用户的历史数据以及实时的访问数据,共同进行学习和判断,最终得到推荐结果。黑客正是利用这一可以接触到训练数据的机会,通过一定的算法策略,发起访问行为,最终导致推荐系统产生错误。
图0-2 偷取深度学习模型
图0-3 针对深度学习的数据投毒
3. 对抗样本
对抗样本由christian szegedy等人提出,是指在数据集中通过故意添加细微的干扰所形成的输入样本,这种样本导致模型以高置信度给出一个错误的输出。在正则化背景下,通过对抗训练减少原有独立同分布的测试集的错误率,在对抗扰动的训练集样本上训练网络。
简单地讲,对抗样本通过在原始数据上叠加精心构造的人类难以察觉的扰动,使深度学习模型产生分类错误。以图像分类模型为例,如图0-4所示,通过在原始图像上叠加扰动,对于肉眼来说,扰动非常细微,图像看起来还是熊猫,但是图像分类模型却会以很大的概率识别为长臂猿。
图0-4 针对图像分类模型的对抗样本
下面以一个图像分类模型为例,更加直接地解释对抗样本的基本原理。通过在训练样本上学习,学到一个分割平面,在分割平面一侧的为绿球,在分割平面另外一侧的为红球。生成攻击样本的过程,就是在数据上添加一定的扰动,让其跨越分割平面,从而把分割平面一侧的红球识别为绿球,如图0-5所示。
图0-5 对抗样本的基本原理
对抗样本按照攻击后的效果分为targeted attack(定性攻击)和non-targeted attack(无定向攻击)。区别在于targeted attack在攻击前会设置攻击的目标,比如把红球识别为绿球,或者把面包识别为熊猫,也就是说在攻击后的效果是确定的;non-targeted attack在攻击前不用设置攻击目标,只要攻击后,识别的结果发生改变即可,可能会把面包识别为熊猫,也可能识别为小猪佩琪或者小猪乔治,如图0-6所示。
图0-6 targeted attack和non-targeted attack
对抗样本按照攻击成本分为white-box attack(白盒攻击)、black-box attack(黑盒攻击)和real-world attack/physical attack(真实世界/物理攻击)。
white-box attack(见图0-7)是其中攻击难度最低的一种,前提是能够完整获取模型的结构,包括模型的组成以及隔层的参数情况,并且可以完整控制模型的输入,对输入的控制粒度甚至可以到比特级别。由于white-box attack前置条件过于苛刻,通常作为实验室的学术研究或者作为发起black-box attack和real-world attack/physical attack的基础。
图0-7 white-box attack
black-box attack相对white-box attack攻击难度具有很大提高,black-box attack完全把被攻击模型当成一个黑盒,对模型的结构没有了解,只能控制输入,通过比对输入和输出的反馈来进行下一步攻击,见图0-8。
图0-8 black-box attack
real-world attack/physical attack(见图0-9)是这三种攻击中难度最大的,除了不了解模型的结构,甚至对于输入的控制也很弱。以攻击图像分类模型为例(见图0-10),生成的攻击样本要通过相机或者摄像头采集,然后经过一系列未知的预处理后再输入模型进行预测。攻击中对抗样本会发生缩放、扭转、光照变化、旋转等。
图0-9 real-world attack/physical attack
图0-10 图像分类模型的真实世界/物理攻击
常见检测和加固方法
1. 深度学习脆弱性检测
检测深度学习脆弱性的过程,其实就是发起攻击的过程,常见的白盒攻击算法列举如下。
? ilcm(最相似迭代算法)
? fgsm(快速梯度算法)
? bim(基础迭代算法)
? jsma(显著图攻击算法)
? deepfool(deepfool算法)
? c/w(c/w算法)
常见的黑盒攻击方法列举如下。
? single pixel attack(单像素攻击)
? local search attack(本地搜索攻击)
2. 深度学习脆弱性加固
针对深度学习脆弱性进行加固的常见方法主要包括以下几种,我们将重点介绍adversarial training。
? feature squeezing(特征凝结)
? spatial smoothing(空间平滑)
? label smoothing(标签平滑)
? adversarial training(对抗训练)
? virtual adversarial training(虚拟对抗训练)
? gaussian data augmentation(高斯数据增强)
adversarial training如图0-11所示,其基本思路是,常见的对抗样本生成算法是已知的,训练数据集也是已知的,那么可以通过常见的一些对抗样本工具箱,比如advbox或者foolbox,在训练数据的基础上生成对应的对抗样本,然后让深度学习模型重新学习,让它认识这些常见的对抗样本,这样新生成的深度学习模型就具有了一定的识别对抗样本的能力。
与adversarial training思路类似的是gaussian data augmentation。gaussian data augmentation的基本原理是,对抗样本是在原始数据上叠加一定的扰动,这些扰动非常接近随机的一些噪声。adversarial training虽然简单易于实现,但是技术上难以穷尽所有的攻击样本。gaussian data augmentation直接在原始数据上叠加高斯噪声,如图0-12所示,k为高斯噪声的系数,系数越大,高斯噪声越强,其他参数分别表示高斯噪声的均值和标准差。gaussian data augmentation把训练数据叠加了噪声后,重新输入给深度学习模型学习,通过增加训练轮数、调整参数甚至增加模型层数,在不降低原有模型准确度的情况下,让新生成的深度学习模型具有了一定的识别对抗样本的能力。
图0-11 adversarial training原理图
图0-12 图像增加高斯噪声
对抗样本领域的最新进展
对抗样本是ai安全研究的一个热点,新的攻击算法和加固方法层出不穷,而且攻击场景也从实验室中的简单图像分类,迅速扩展到智能音箱、无人驾驶等领域。百度安全实验室的最新研究报告《感知欺骗:基于深度神经网络(dnn)下物理性对抗攻击与策略》成功入选blackhat europe 2018。报告展现了让物体在深度学习系统的“眼”中凭空消失,在ai时代重现了大卫·科波菲尔的经典魔法。针对深度学习模型漏洞进行物理攻击可行性研究有着广泛的应用前景,在自动驾驶领域、智能安防领域、物品自动鉴定领域都有重要的实际意义。
如图0-13所示,在时间t0的时候,当在车后显示器中显示正常logo时,yolov3可以正确识别目标车辆,而在t1时,切换到扰动后的图片时,它可以立刻让目标车辆在yolov3面前变得无法辨识;在t2时,如图0-14所示切换回正常的图片,yolov3重新可以识别目标车辆。这是首次针对车辆的物理攻击的成功展示,与以往的学术论文相比,在攻击目标的大小、分辨率的高低以及物理环境的复杂性等方面,在影响和难度上都是一个巨大提升。
图0-13 t0时可以正常识别出车辆,t1时无法识别出车辆
图0-14 t2时可以正常识别出车辆
kan yuan和di tang等人在论文《stealthy porn:understanding real-world adversarial images for illicit online promotion》中介绍了黑产如何通过单色化、加噪声、增加文字、仿射变化、滤波模糊化和遮盖等方式让违规图片绕过目前主流的图片内容检测服务。这也标志着对抗样本技术已经从实验室环境真正进入了网络对抗实战。
国内安全人员在对抗样本领域的研究成果得到了国际的普遍认可。朱军等人指导的清华大学团队曾在nips 2017对抗样本攻防竞赛中夺冠,纪守领老师所在的nesa lab提出了一种新型的对抗性验证码,能防范来自打码平台等黑产的破解。