MIT开发新型加密方法,使基于云的机器学习更具安全性
2018年08月17日 由 浅浅 发表
974137
0
麻省理工学院研究人员设计的一种新型加密方法可以保护在线神经网络中使用的数据,而不会减慢其运行时间。这种方法有望在基于云的神经网络进行医学图像分析和其他使用敏感数据的应用程序中使用。
外包机器学习是行业的上升趋势。大型科技公司已经推出了云平台,可以执行计算繁重的任务,例如,通过卷积神经网络(CNN)运行数据进行图像分类。资源匮乏的小型企业和其他用户可以收取费用上传数据到这些服务,并在几个小时内收回结果。
但是,如果有私人数据泄漏怎么办?近年来,研究人员探索了各种安全计算技术来保护这些敏感数据。但是这些方法存在性能缺陷,使得神经网络评估(测试和验证)缓慢,有时慢了几百万倍,这限制了它们的广泛采用。
在本周举行的USENIX安全会议上发表的一篇论文中,麻省理工学院的研究人员描述了一种系统,它融合了两种传统技术,同态加密和乱码电路(homomorphic encryption and garbled circuits),以一种有助于网络运行速度比传统方法快几个数量级的系统。
研究人员在两方图像分类任务上测试了这个名为GAZELLE的系统。用户将加密的图像数据发送到评估在GAZELLE上运行的CNN的在线服务器。在此之后,双方来回共享加密信息以便对用户的图像进行分类。在整个过程中,系统确保服务器永远不会学习任何上传的数据,而用户从不了解网络参数。然而,与传统系统相比,GAZELLE的运行速度比最先进的模型快20到30倍,同时将所需的网络带宽减少了一个数量级。
该系统的一个有希望的应用是培训CNN以诊断疾病。例如,医院可以训练CNN从磁共振图像(MRI)中学习某些医学状况的特征,并在上传的MRI中识别这些特征。医院可以在云中为其他医院提供该模型。但该模型受到私人患者数据的训练,并进一步依赖于私人患者数据。由于没有有效的加密模型,因此该应用程序尚未准备好进入黄金时段。
电气工程和计算机科学系(EECS)的博士生Chiraag Juvekar表示,“在这项工作中,我们展示了如何通过巧妙地结合这两种技术来有效地进行这种安全的双方通信,下一步是采取真实的医疗数据,即使我们根据真实用户关心的应用程序进行扩展,它仍然可以提供可接受的性能。”
该论文的共同作者是欧洲经济共同体的副教授,计算机科学和人工智能实验室的成员Vinod Vaikuntanathan,以及工程学院院长和Vannevar Bush电气工程和计算机科学教授Anantha Chandrakasan。
最大化性能
CNN通过多个线性和非线性计算层处理图像数据。线性图层执行复杂的数学运算,称为线性代数,并为数据指定一些值。在某个阈值处,数据被输出到非线性层,这些非线性层执行一些更简单的计算,做出决定(例如识别图像特征),并将数据发送到下一个线性层。最终结果是具有指定类别的图像,例如车辆,动物,人或解剖学特征。
最近保护CNN的方法涉及应用同态加密或乱码电路来处理整个网络中的数据。这些技术可有效保护数据。Juvekar说,“在表面上,似乎解决了这个问题,但它们使复杂的神经网络效率低下,所以你不会将它们用于任何现实的应用程序。”
在云计算中使用的同态加密在加密数据(称为密文)中接收和执行所有计算,并生成加密结果,然后由用户解密。当应用于神经网络时,这种技术在计算线性代数时特别快速有效。但是,它必须在每层的数据中引入一点噪音。在多个层上,噪声累积,并且过滤噪声所需的计算变得越来越复杂,从而降低了计算速度。
乱码电路是一种安全的双方计算形式。该技术接受来自双方的输入,进行一些计算,并向每一方发送两个单独的输入。通过这种方式,各方相互发送数据,但他们从未看到对方的数据,只看到他们身边的相关输出。然而,在各方之间传递数据所需的带宽与计算复杂性成比例,而不是与输入的大小成比例。在在线神经网络中,这种技术在非线性层中运行良好,其中计算量最小,但在数学密集的线性层中带宽变得难以处理。
相反,麻省理工学院的研究人员将这两种技术结合起来,以解决他们效率低下的问题。
在他们的系统中,用户将密文上传到基于云的CNN。用户必须在自己的计算机上运行乱码电路技术。CNN完成线性层中的所有计算,然后将数据发送到非线性层。此时,CNN和用户共享数据。用户对乱码电路进行一些计算,并将数据发送回CNN。通过拆分和共享工作负载,系统将同态加密限制为一次一层地进行复杂的数学运算,因此数据不会变得太嘈杂。它还限制了乱码电路与非线性层的通信,在非线性层中它的性能最佳。
Juvekar说,“我们只是将这些技术用于最有效的地方。”
密钥共享
最后一步是确保同态和乱码电路层保持一种称为“密钥共享”的通用随机化方案。在该方案中,数据被分成单独的部分,这些部分被提供给单独的各方。各方同步他们的部分以重建完整数据。
在GAZELLE中,当用户将加密数据发送到基于云的服务时,它会在双方之间分配。添加到每个共享的是只有拥有方知道的密钥(随机数)。在整个计算过程中,每一方总是会有一部分数据加上随机数,因此它看起来完全随机。在计算结束时,双方同步他们的数据。只有这样,用户才会向基于云的服务询问其密钥。然后,用户可以从所有数据中减去密钥以获得结果。
Juvekar表示“在计算结束时,我们希望第一方获得分类结果而第二方绝对不会获得任何结果,此外,第一方对模型的参数一无所知。”