神经网络混淆

数据挖掘 神经网络
2021-09-27 09:53:52

神经网络经过训练以最小化神经连接权重上的一些误差函数。在某些应用中,这些权重可以被视为知识产权。有没有办法加密这些权重并且仍然有一个可操作的神经网络?

一些背景:我正在尝试扩展神经网络算法,但现在我们正在一个集中式服务器上进行所有计算,并且它陷入了困境。我们可以将计算转移到客户端,但我们不希望有人解包可执行文件并获得网络的权重。是否有某种方法可以分发“加密神经网络”以保护我们的 IP?

澄清一下:我不是在谈论对加密数据进行操作的“遗忘”神经网络,而是在谈论神经网络本身的权重。

我对替代混淆技术很好。

编辑:我找到了这篇论文,但它指出

非常注意避免任何不必要的信息泄露,以便在协议结束时用户只知道最终的 NN 输出,而所有内部计算都是保密的。通过这种方式,可以防止恶意用户提供一组正确选择的虚假输入来泄露网络机密。还概述了一种允许混淆网络拓扑的解决方案,但是,该方向的更深入研究留待未来研究。

表明这篇论文是关于一个相关概念的,但我正在寻找一个拓扑被混淆的资源。

2个回答

不,您想要的可能在实践中无法实现,因为您正在考虑的方法仅混淆权重,但不会混淆网络的输入和输出在我能想象的任何合理的缺​​血中,输入X到被混淆的网络将是已知的并且在攻击者的控制之下,并且输出是的攻击者将知道来自混淆网络的信息。特别是,攻击者可以选择任何X 他的选择,并观察输出 是的.

如果这是真的,你的鹅就熟了。攻击者可以使用调用你的神经网络的能力来学习他自己的神经网络,它和你的一样好。特别是,攻击者可以通过选择许多潜在的输入来组装一个任意大的训练集X 并且对于每一个计算相应的 是的 通过在 X,然后把对 (X,是的)在训练集中。这不需要标记示例它只需要对手能够将大量未标记的实例放在一起(然后使用您的混淆网络来标记这些实例)。通常,创建大量未标记实例并不难。

最后,一旦对手组装了这个训练集,对手就可以使用标准技术训练自己的神经网络。生成的神经网络很可能与您的神经网络一样好——即,具有大致相同的准确度。(这似乎在实践中发生。)

因此,任何混淆权重的混淆方案都不会非常有效,因为这不会隐藏网络的输入和输出。您最多可以期望的是一种充当“减速带”的方案,它会稍微增加去混淆的成本或稍微提高标准,但您所做的任何事情都无法为知识渊博的对手提供强大的安全性。因此,不要花费太多时间、精力或金钱来尝试完成这项工作。相反,您最好寻找其他方法来处理此问题。


PS 即使您可以隐藏输出并仅显示最终分类(即,隐藏softmax 中的连续概率值并仅显示最高概率类别),这可能仍然不够。暴露类仍然足以让对手标记一堆实例,创建一个训练集,然后训练他们自己的网络。

我的回答只适用于一个利基市场,即数据库服务器市场。如果您将权重存储在 SQL Server 数据库中,则可以使用透明数据加密 (TDE)。这将加密您的整个数据库,以便只有授权用户才能读取其内容;还可以对各个列进行加密以进一步限制访问,这样即使是授权用户也无法在不首先解密表的情况下读取表的内容。

这是有关如何使用 TDE 的一些文档的链接。它实际上真的很容易使用,但与任何东西一样,在设置时有一些潜在的“陷阱”。有关我遇到的一些问题的简短列表,请参阅我在 TDE 中的不幸事件:如何完全错误地还原加密的 SQL Server 数据库

通常,您无需在前端应用程序(例如带有电子表格的 GUI 用户访问界面等)中进行任何编码即可使用启用 TDE 的数据库;访问数据的用户只需要足够的权限。我知道 .Net 语言(如 VB 和 C#)也有自己的加密命令,如果出于某种原因您也需要在前端进行加密,您也可以使用;我怀疑其他编程生态系统(如 Java 等)也有自己的对应物。我也相当肯定 SQL Server 在数据库服务器市场上的竞争对手,例如 Oracle 和 MySQL,都有自己的数据库加密版本,但我不熟悉它们的工作原理。我坚信,在适当的时候,由于这个和许多其他优势,许多神经网络和其他机器学习算法最终将在此类数据库服务器上运行。我很确定 Oracle 等拥有类似于 SQL Server 的免费数据库版本,它可以让您在大约 10 GB 上存储和操作。如果你的神经网络有足够的空间,那么你可以将它们设置在专用服务器上,而无需支付数据库服务器许可证。免责声明:我与 Microsoft 没有任何关系,也无法从中获利;我只是很了解这一项技术。我用它来加密我自己的神经网络权重,所以我从个人经验知道这个解决方案会很好用。它使您可以在大约 10 GB 上存储和操作。如果你的神经网络有足够的空间,那么你可以将它们设置在专用服务器上,而无需支付数据库服务器许可证。免责声明:我与 Microsoft 没有任何关系,也无法从中获利;我只是很了解这一项技术。我用它来加密我自己的神经网络权重,所以我从个人经验知道这个解决方案会很好用。它使您可以在大约 10 GB 上存储和操作。如果你的神经网络有足够的空间,那么你可以将它们设置在专用服务器上,而无需支付数据库服务器许可证。免责声明:我与 Microsoft 没有任何关系,也无法从中获利;我只是很了解这一项技术。我用它来加密我自己的神经网络权重,所以我从个人经验知道这个解决方案会很好用。

如果您只是将权重存储在文件中而不是数据库中,您可能可以使用磁盘和文件加密软件,例如 TrueCrypt 或 EFS 以及 Windows 的 BitLocker。我在网络方面很弱,所以我不能评论互联网上的传输安全,尽管我怀疑 SSL 等技术可以完成这项工作。我希望这有帮助。