Skip to content

Latest commit

 

History

History
141 lines (84 loc) · 18.2 KB

12.3-人工智能服务安全与隐私.md

File metadata and controls

141 lines (84 loc) · 18.2 KB

12.3 人工智能服务安全与隐私

本节介绍人工智能服务时的安全与隐私问题及缓解方法。这些问题涉及到人工智能推理的完整性与机密性,反映了可信人工智能推理系统的重要性。

12.2.1 服务时安全

对于一个部署好的深度学习服务,推理系统通常将模型参数存储在内存中。但是,内存在长期的使用后是可能发生错误的,例如其中的一些比特发生了反转。Guanpeng Li 等人[1]在 2017 年研究发现深度学习推理系统常常使用的高性能硬件更容易出现这种内存错误(如果这种错误可以通过重启消除,则称为软错误),而软错误会在深度神经网络中传导,导致模型的结果出错。这种现象如果被恶意攻击者利用,就可以通过故障注入攻击(Fault Injection Attack)来篡改内存中存储的模型参数,从而影响模型的行为。Sanghyun Hong 等人[2]在 2019 年提出如果精心选择,一个比特翻转就能让模型的精度下降超过 90%。他们还通过 Rowhammer 故障注入攻击(恶意程序通过大量反复读写内存的特定位置来使目标内存位置的数据出错)成功让运行在同一台机器上的受害模型下降 99% 的分类精度。这种攻击的危害之处在于它无需攻击者物理访问目标设备,只需要软件干扰就能让模型失效。如果模型部署在手机、自动驾驶汽车等不受部署者控制的终端设备上,可能会造成更严重的安全问题。

对于这种攻击,最简单的缓解方式是使用量化后的模型,因为量化后的模型参数是以整数存储的,而整数对于比特翻转的敏感性比浮点数小。但是,Adnan Siraj Rakin 等人[3]在 2019 年提出了一种针对量化深度神经网络的攻击,利用梯度下降的思想来搜索模型中最敏感的几个参数。例如,对于一个有九千多万比特参数的量化深度神经网络,找到并翻转其中最敏感的 13 个比特,成功地使其分类精度降到只有 0.1%。

由此可见,对于攻击者来说深度神经网络是非常脆弱的,这颠覆了之前很多人的观点——之前认为深度神经网络是健壮的,一些微小的改动并不会产生大的影响。对此弱点,比较好的缓解方法是将模型部署到拥有纠错功能的内存(ECC 内存)中,因为 ECC 内存会在硬件中自动维护纠错码(Error Correction Code),其能够对于每个字节自动更正一比特的错误,或者发现但不更正(可以通知系统通过重启解决)两比特的错误。这是基于汉明码(Hamming Code)来实现的,下面简单介绍:

<style> table { margin: auto; } </style> 表 12.3.1 带附加奇偶校验位的 (7, 4)-汉明码
p1 p2 d1 p3 d2 d3 d4 p4
p1 x x x x
p2 x x x x
p3 x x x x
p4 x x x x x x x x

如果要编码 4 位数据 $(d_1, d_2, d_3, d_4)$,需要增加 3 位奇偶校验位 $(p_1, p_2, p_3)$ 以及附加的一位奇偶校验位 $p_4$,总共 8 位排列成 $(p_1, p_2, d_1, p_3, d_2, d_3, d_4, p_4)$ 的顺序,构成所谓“带附加奇偶校验位的汉明码”(其前 7 位称为“(7, 4)-汉明码”,最后一位为附加的奇偶校验位 $p_4$)。奇偶校验位的取值应该使所覆盖的位置(即表中的 x 所在的位置)中有且仅有偶数个 1,即: $$ p_1=d_1\oplus d_2\oplus d_4 \ p_2=d_1\oplus d_3\oplus d_4 \ p_3=d_2\oplus d_3\oplus d_4 \ p_4=p_1\oplus p_2\oplus d_1\oplus p_3\oplus d_2\oplus d_3\oplus d_4 $$ 其中 $\oplus$ 表示异或。这样,如果出现了位翻转错误,无论是 $(p_1, p_2, d_1, p_3, d_2, d_3, d_4, p_4)$ 中的哪一位出错,都可以通过上面的公式推算出错的是哪一个,并且进行更正。通过验证上面的公式是否成立,也可以确定是否发生了(两位以内的)错误。目前流行的 ECC 内存一般采用的是带附加奇偶校验位的 (71,64)-汉明码,即每 64 比特的数据需要 72 比特进行编码。

12.2.2 服务时的用户隐私

深度学习服务时最直接的隐私就是用户隐私。服务以用户传来的数据作为输入,那么这些数据可能会直接暴露给服务方,服务方能够看到、甚至收集这些输入数据(以及最后的输出数据),在很多时候这是可能侵犯到用户隐私的。例如使用医疗模型进行辅助诊断时,用户很可能并不希望自己的输入数据被模型拥有者或者运营商知晓。

这时候,可以使用 12.2.2 节中提到过的安全多方计算技术来保护用户隐私,同时完成深度神经网络的推理计算。2017 年,Jian Liu 等人[4]设计了针对深度神经网络推理计算的安全多方计算协议,这个协议的参与方是用户和服务方两方,在个算过程中用户的输入和中间结果都是保持着秘密共享的状态,因此服务方无法知道关于用户数据的信息。虽然安全多方计算可能有成千上万倍的开销,但对于小规模的模型推理计算(例如 LeNet-5)来说可以做到一秒以内的延迟了。近几年来,有大量的研究工作致力于提升安全多方计算的效率。目前,最新的工作[5]可以在十几秒的时间内完成 ResNet32 的安全推理计算。

除了安全多方计算之外,同态加密和可信执行环境都是进行安全推理计算的常用隐私计算技术。其目的与安全多方计算一样,都是保护模型推理时的输入(以及输出)数据隐私,使服务方在不知道输入的情况下完成计算。用同态加密做深度神经网络计算的代表工作是 2016 年由 Ran Gilad-Bachrach 等人提出的 CryptoNets[6]:通过对输入数据进行同态加密,可以将密文发送给服务方并让服务方在密文上做计算,最终将密文结果发回用户,用户用私钥对其解密得到计算结果。CryptoNets 使用的微软 SEAL 库也是目前最为广泛使用的同态加密库。然而,同态加密也有非常大的开销,目前来看其计算开销比安全多方计算的计算开销更大,但通信开销更小。此外,同态加密有一个与安全多方计算相似的局限:对于加法、乘法的支持很好,计算开销也比较小;但对于其他类型的计算(如深度神经网络中的非线性激活函数)的支持并不好,计算开销非常大,因此为了提升性能会用多项式来进行近似,从而有计算开销与计算精度(近似的程度)之间的权衡问题。

相比于安全多方计算、同态加密的性能瓶颈,基于可信执行环境的方案有着很最高的性能。可信执行环境是处理器在内存中隔离出的一个安全的区域,由处理器硬件保证区域内数据的机密性、完整性。以 Intel 处理器的 SGX(Software Guard Extensions)技术为例,处理器中的内存控制器保证其他进程无法访问或篡改可信执行环境(Intel 称之为 enclave)中的代码和数据,并且保证这些数据在存储、传输过程中都是加密保护的,密钥只掌握在处理器硬件中;只有使用这些数据时,才会在处理器内部对其解密并使用。基于这种技术,只要将模型推理系统部署在服务器的可信执行环境中,就能保护用户数据的隐私,因为这种技术让服务方自己都不能获取可信执行环境中的数据。尽管早期的 SGX 有可用容量的问题(不到 128 MB),但这个问题可以通过软件设计[7]或硬件设计[8]的方法进行改善。目前,更先进的 TEE 架构设计已经出现在了商用产品上:Intel 的 Ice Lake 架构的服务器端 CPU 已经支持了 SGX 2,大大扩展了可用容量;NVIDIA 最新的 H100 处理器成为了首个提供 TEE 的 GPU。可信执行环境的缺点是开发难度高,又存在引入额外信任的问题——这一方案只有在信任处理器制造方的情况下才是安全的。近年来针对可信执行环境的攻击也非常多,暴露了许多安全缺陷[9][10],说明这一信任并不一定是可靠的。

以上三种隐私计算技术都各有利弊,需要根据实际场景的特点进行选择和适配。这些领域还在快速发展中,相信未来一定会有高效、易用的解决方案,让保护用户隐私的深度学习服务能更广泛地部署在人们的日常生活中。

12.2.3 服务时的模型隐私

上一小节主要站在用户的角度,探讨了输入数据的隐私保护问题。事实上,站在开发者以及模型拥有者的角度,模型也是一种高度敏感的数据。考虑到模型在实际使用中可能涉及到知识产权问题,以及训练该模型所需要的大量数据和大量计算成本,保证其机密性对于深度学习服务来说是个重要问题。本小节将讨论跟模型数据保护相关的攻击。

一种最常见的针对模型数据的攻击就是模型窃取攻击(Model Stealing Attack)。模型窃取有两种方式,第一种是直接窃取,即通过直接攻克模型的开发、存储或部署环境,获得原模型的拷贝;第二种是间接窃取,通过不断调用服务提供的 API(Application Programming Interface),重构出一个与原模型等效或近似等效的模型。前者的例子有 Lejla Batina 等人在 2019 年提出的通过侧信道攻击进行的模型窃取[11]。而人工智能安全领域关注的模型窃取攻击通常属于第二种,因为这种攻击看上去并没有违背深度学习服务系统的完整性与机密性,只通过 API 调用这一看起来正常的手段就窃取了模型;而且,即使使用了 12.2.2 节中的隐私计算技术保护了用户隐私,但攻击者(伪装成普通用户)仍然知道自己的输入和服务返回的结果,因此隐私计算对于防御这种攻击无能为力。

最简单的模型窃取攻击是针对线性模型 $f(x)=\textrm{sigmoid}(wx+b)$ 的:通过选取足够多个不同的 $x$ 并调用服务 API 得到相应的 $y$,将其组成一个以 $w$$b$ 为未知数的线性方程组,就可以解出该线性方程组,得到模型参数 $w$$b$。2016 年,Florian Tramèr 等人将这种方法扩展到了多层的神经网络上:由于深度神经网络的非线性层,组成的方程组不再是一个线性方程组,没有解析解,所以改用优化方法来求解近似解[12]。这种方法本质上就像把深度学习服务当作一个标注机,然后利用它来进行监督学习。

不过需要注意的是,调用服务 API 是有成本的,因为这些服务往往是按次收费的。所以,如果所需的调用次数太多导致成本过高,攻击就变得没有意义了。近几年关于模型窃取攻击的一大研究方向就是如何提升攻击的效率,即如何用更少的询问次数来得到与目标模型等效或近似等效的模型。2020 年 Matthew Jagielski 等人优化了学习策略,通过半监督学习的方式大大提升了攻击的效率[13]。同时,他们还讨论了另一种攻击目标:精准度,即能否像攻击线性模型那样准确地恢复出模型的参数。他们注意到采用 ReLU 激活函数的深度神经网络其实是一个分段线性函数,因此可以在各个线性区域内确定分类面的位置,从而恢复出模型参数。同样是 2020 年,Nicholas Carlini 等人通过密码分析学的方法进行模型提取攻击,也精确恢复了深度神经网络的参数[14]。事实上,如果模型参数被精确提取出来了,那除了模型参数泄露之外还会有更大的安全问题:这时模型对于攻击者来说变成白盒了,因此更容易发起成员推断攻击和模型反向攻击了(见 12.1.2),从而导致训练模型时所用的训练数据的隐私泄露。

如何保护模型的隐私呢?由于模型窃取攻击往往需要大量请求服务 API,可以通过限制请求次数来进行缓解。另一种防御方法是去检测模型窃取攻击:Mika Juuti 等人在 2019 年提出模型窃取攻击时发出的请求和正常的请求有不同的特征,可以由此判断什么样的请求是的攻击者发起的请求[15]。还有一种防御的策略是事后溯源以及追责:如果模型被窃取,假如可以验证模型的所有权,那么可以通过法律手段制裁攻击者。这种策略可以通过模型水印技术(见 12.2.1)来实现。

小结与讨论

本小节主要围绕深度学习的服务安全与隐私问题,讨论了故障注入攻击、模型提取攻击等攻击技术,服务时的用户隐私与模型隐私问题,以及 ECC 内存、安全多方计算、同态加密、可信执行环境等防御技术。

看完本章内容后,我们可以思考以下几点问题:

  • 纠错码检查错误和纠错的具体过程是什么?如何用硬件实现?效率如何?
  • 不同隐私计算技术的异同是什么?
  • 能否利用可信执行环境来防止模型窃取攻击?

参考文献

  1. Guanpeng Li, Siva Kumar Sastry Hari, Michael B. Sullivan, Timothy Tsai, Karthik Pattabiraman, Joel S. Emer, and Stephen W. Keckler. 2017. Understanding Error Propagation in Deep Learning Neural Network (DNN) Accelerators and Applications. In International Conference for High Performance Computing, Networking, Storage and Analysis (SC), 8:1-8:12.
  1. Sanghyun Hong, Pietro Frigo, Yigitcan Kaya, Cristiano Giuffrida, and Tudor Dumitras. 2019. Terminal Brain Damage: Exposing the Graceless Degradation in Deep Neural Networks Under Hardware Fault Attacks. In USENIX Security Symposium, 497–514.
  1. Adnan Siraj Rakin, Zhezhi He, and Deliang Fan. 2019. Bit-Flip Attack: Crushing Neural Network With Progressive Bit Search. In IEEE International Conference on Computer Vision (ICCV), 1211–1220.
  1. Jian Liu, Mika Juuti, Yao Lu, and N. Asokan. 2017. Oblivious Neural Network Predictions via MiniONN Transformations. In ACM Conference on Computer and Communications Security (CCS), 619–631.
  1. Zhicong Huang, Wen-jie Lu, Cheng Hong, and Jiansheng Ding. 2022. Cheetah: Lean and Fast Secure Two-Party Deep Neural Network Inference. In USENIX Security Symposium.
  1. Ran Gilad-Bachrach, Nathan Dowlin, Kim Laine, Kristin E. Lauter, Michael Naehrig, and John Wernsing. 2016. CryptoNets: Applying Neural Networks to Encrypted Data with High Throughput and Accuracy. In International Conference on Machine Learning (ICML), 201–210.
  1. Taegyeong Lee, Zhiqi Lin, Saumay Pushp, Caihua Li, Yunxin Liu, Youngki Lee, Fengyuan Xu, Chenren Xu, Lintao Zhang, and Junehwa Song. 2019. Occlumency: Privacy-preserving Remote Deep-learning Inference Using SGX. In International Conference on Mobile Computing and Networking (MobiCom), 46:1-46:17.
  1. Stavros Volos, Kapil Vaswani, and Rodrigo Bruno. 2018. Graviton: Trusted Execution Environments on GPUs. In USENIX Symposium on Operating Systems Design and Implementation (OSDI), 681–696.
  1. David Cerdeira, Nuno Santos, Pedro Fonseca, and Sandro Pinto. 2020. SoK: Understanding the Prevailing Security Vulnerabilities in TrustZone-assisted TEE Systems. In IEEE Symposium on Security and Privacy (S&P), 1416–1432.
  1. Shufan Fei, Zheng Yan, Wenxiu Ding, and Haomeng Xie. 2021. Security Vulnerabilities of SGX and Countermeasures: A Survey. ACM Computing Surveys 54, 6 (2021), 126:1-126:36.
  1. Lejla Batina, Shivam Bhasin, Dirmanto Jap, and Stjepan Picek. 2019. CSI NN: Reverse Engineering of Neural Network Architectures Through Electromagnetic Side Channel. In USENIX Security Symposium, 515–532.
  1. Florian Tramèr, Fan Zhang, Ari Juels, Michael K. Reiter, and Thomas Ristenpart. 2016. Stealing Machine Learning Models via Prediction APIs. In USENIX Security Symposium, 601–618.
  1. Matthew Jagielski, Nicholas Carlini, David Berthelot, Alex Kurakin, and Nicolas Papernot. 2020. High Accuracy and High Fidelity Extraction of Neural Networks. In USENIX Security Symposium, 1345–1362.
  1. Nicholas Carlini, Matthew Jagielski, and Ilya Mironov. 2020. Cryptanalytic Extraction of Neural Network Models. In Annual International Cryptology Conference (CRYPTO), 189–218.
  1. Mika Juuti, Sebastian Szyller, Samuel Marchal, and N. Asokan. 2019. PRADA: Protecting Against DNN Model Stealing Attacks. In European Symposium on Security and Privacy (EuroS&P), 512–527.