来源:知乎

转自:机器学习实验室

问题:

实验室做了一个医疗数据的CNN模型,有公司想商用。模型是用TensorFlow实现的,python代码似乎不好加密,希望只给客户接口函数和传参,如何有效保护模型结构防止泄露?

作者:匿名用户
https://www.zhihu.com/question/299880517/answer/1724009978
想说个脑洞,能不能在模型权重里加钥匙?
比如对于output = Model(input, key),key是采样至一个加密者确定的特定分布的数值,在特定层的时候会与主干网络作用,最终输出与key有关。因为权重参入了key部分运算的权重,(可能)很难被分析出来。而如果只是加密保存的权重(混淆,硬编码等),在上载到硬件的过程里还是可以被捕获和破解的。
不过这里有几个问题,其一是如何控制参入key以后的模型性能,有可能参入key以后模型无论是从头训练还是微调都没法得到合适的性能了。其二是key的信息和过期问题。
key的过期,有个附加脑洞,感觉特别适合embedding输入的模型。key和timestamp输入是否可以构成一种特殊的embedding而对模型施加控制?不过这里timestamp可以作弊。避免作弊的话,还是只能做一部分SAAS了。比如把参入key的小模型部署在云端,图片被加key模型处理后,再返回来在本地用带key的模型推断。不过既然都做成这种两部分式的了,那不如直接把模型推断的几个运算发至云端算,这样本地还是做了主要运算,而且也只是拿着一个也没法被破解的权重了。
作者:Bluebear https://www.zhihu.com/question/299880517/answer/1720967814
将模型导出为pb后使用TFSecured加密模型,然后推断程序中解密,程序本身编译后加壳(防逆向)。或者你们可以提供云端api,数据穿云端处理完返回结果。
使用pyinstaller导出exe由于没啥加密保护会不安全就是了。
作者:苗思奇 https://www.zhihu.com/question/299880517/answer/1722013365
模型加密是保护IP的第一道关卡,提供一个后备计划:模型里嵌入black-box watermark,然后定期检测友商的接口输出。
作者:知乎用户
https://www.zhihu.com/question/299880517/answer/1721391055
署在对方可以接触的物理机上的代码没有绝对安全性,无论你用什么办法。
  1. SAAS服务

  2. 法律协议条款

  3. 技术手段增加破译成本,编译、加壳、混淆,别的回答都说了。

 

作者:知乎用户 https://www.zhihu.com/question/299880517/answer/1741219484

当然是部署到云端给客户api接口调用。就深度学习这种简单直观的计算模型(计算逻辑,数据构成清晰,不是说dl的模型可解释性),一下逆向就出来了,想着怎么加密都是白搭。