[英]How to protect (obfuscate/DRM) trained model weights in Tensorflow.js?
客户端代码混淆永远不会完全阻止它。 改用服务器。
如果您的客户端应用程序包含模型,那么用户将能够以某种方式提取它。 你可以让用户更难,但它永远是可能的。 一些使它更难的技术是:
model.predict
函数处设置断点并从那里调试代码会很容易。 通过混淆库及其 API,这将变得更加困难。即使您的代码已完全混淆并受到良好保护,您的客户端代码仍会在某处包含您的模型。 使用这些方法总是可以以某种方式提取您的模型。
为了使您的模型无法获得,您需要一种不同的方法。 只把你的“愚蠢的逻辑”放在客户端上。 排除要保护的代码部分。 相反,您在服务器上提供一个 API 来执行代码的“受保护部分”。
这样,您无需在客户端运行model.predict
,而是向后端发出 AJAX 请求(带有参数),然后返回结果。 这样用户只能看到输入和输出,而不能提取模型本身。
请记住,这意味着更多的工作,因为您不仅需要为客户端应用程序编写代码,还需要为服务器端应用程序编写代码,包括 API。 根据您的应用程序的外观(例如:它有登录名吗?),这可能需要更多的代码。
另一种保护模型的方法是将模型拆分为多个块。 在服务器端放置一些块,在客户端放置一些块。 这种方法也可能会引入很多工程工作,但是一旦你这样做了,你就可以权衡服务器和客户端之间的计算负载和网络延迟。 用户只能得到一些无用的模型块,而无需与服务器端块配合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.