深度学习应用,不但要考虑准确性,更要考虑安全

162 阅读3分钟
原文链接: click.aliyun.com

近日,TensorFlow、Caffe、Torch 等深度学习框架被爆出存在大量的安全隐患,主要是因为第三方开源基础库造成的。TensorFlow、Caffe、Torch 等深度学习框架的使用可以让应用开发人员无需关注底层实现细节,大大提高了人工智能应用的开发效率。但是这些深度学习框架所提供的高效性也注定了框架自身的复杂性,而系统越复杂,就越有可能存在安全隐患,特别是这三大框架又都是搭建在众多第三方开源基础库之上的。如下图所示:
4e6e5fc74f5f451c94b62a83c0abccbc_jpeg
目前公众对人工智能的关注,尤其是深度学习方面, 缺少对安全的考虑。导致这个盲点的主要原因是由于算法与实现的距离。 近期对于深度学习的讨论主要停留在算法和前景展望的层面,对应用场景和程序输入有很多假设。受到关注的应用往往假定处于善意的或封闭的场景。例如高准确率的语音识别中的输入都是自然采集而成,图片识别中的输入也都来自正常拍摄的照片。这些讨论没有考虑人为恶意构造或合成的场景。

现实中的开放应用需要处理的输入不仅来源于正常用户,也可以是来自黑产等恶意用户。 人工智能的应用必须考虑到应用所面临的现实威胁。程序设计人员需要考虑输入数据是否可控,监测程序是否正常执行,并验证程序执行结果是否真实反映应用的本来目的。

深度学习框架掩盖了它所使用的组件依赖,同时也隐藏了系统的复杂程度。 每种深度学习框架又都是实现在众多基础库和组件之上,很多深度学习框架里还包括图像处理、矩阵计算、数据处理、GPU加速等功能。图2展示了典型的深度学习应用组件和它们的依赖关系。例如Caffe除了自身神经元网络模块实现以外,还包括137个第三方动态库,例如libprotobuf, libopencv, libz 等。 谷歌的TensorFlow框架也包含对多达97个python模块的依赖,包括librosa,numpy 等。

系统越复杂,就越有可能包含安全隐患。任何在深度学习框架以及它所依赖的组件中的安全问题都会威胁到框架之上的应用系统。另外模块往往来自不同的开发者,对模块间的接口经常有不同的理解。当这种不一致导致安全问题时,模块开发者甚至会认为是其它模块调用不符合规范而不是自己的问题。在发现的导致深度学习框架崩溃的漏洞中就遇到过这种情况。这些漏洞,比如内存访问越界漏洞,都能被黑客用来执行上述所说的三种网络攻击类型,都能被黑客用来篡改数据流,欺骗我们的人工智能应用。以下是已经发现的一些漏洞。
780ff22e2d454441a6e3c26345458843_jpeg

那么问题来了:
大家认为出现这些漏洞的主要原因是什么?
大家在应用深度学习,或者其他人工智能框架的时候是否遇到过类似的安全问题?
大家认为在应用深度学习框架的时候应该如何保证系统安全?
大家认为下一步深度学习框架应该通过那些方式来增强系统安全性?