现在有个问题: 公司训练好的模型以及服务,希望加密后给到用户。
Java Web 服务使用 JNI 调用 C++的.so 接口,C++代码载入模型文件和调用推理。
希望这些文件交付给用户的时候,加密好模型,也对此进行一些限制:
比如限制实例数,限制时长,( TPS 不重要,有这个有更好) 且不能将所有文件(模型,.so )拷贝到其他更多的机器上分发给别人用。
毕竟客户没有购买和买断这些模型。
|  |      1Rheinmetal      2021-07-02 11:50:55 +08:00 。为啥不能远程调用?说明还是不够强势。 | 
|  |      2learningman      2021-07-02 12:04:02 +08:00 | 
|  |      33dwelcome      2021-07-02 12:19:31 +08:00 你可以在模型里额外加个以服务器系统时间为基准的 relu 噪声层。 这个时间必须是 ntp 苹果服务器官方返回的,只要时间大于现在起的三个月,就在模型权重里添加额外噪音,到半年后自然就没办法继续用了。 | 
|  |      4Jat001      2021-07-02 12:30:53 +08:00 这些都可以在代码里控制啊,把模型文件加密,运行的时候在内存里解密,除非你的客户是做安全相关的,会反汇编,能找到绕过限制的方法,还知道如何从内存里拿需要的数据,那你要研究的就是 Intel SGX 这样的 Trusted execution environment 了 | 
|      5gxw86      2021-07-02 14:14:29 +08:00 我认为这是两个问题,模型加密和服务授权,模型加密是为了避免别人直接写代码调用模型,这一块我简单用了 AES 加密,然后加载时在内存中解密;授权是为了避免别人直接复制整套部署环境,这一块比较麻烦,坑也比较多,直接采购了外部方案,用的德国威步,校验机器码 | 
|      6wangxiaoaer      2021-07-02 14:16:02 +08:00 @gxw86 #5 机器码方案在 docker 环境下有用吗? | 
|  |      7fl2d      2021-07-02 14:19:17 +08:00 加密的虚拟机? | 
|      8gxw86      2021-07-02 14:22:02 +08:00 @wangxiaoaer 会有问题,但是我印象里这家有 docker 的方案,好像是授权做到宿主机上,docker 容器里面通过 tcp/ip 访问宿主机的授权,具体没有测试过 | 
|  |      9EPr2hh6LADQWqRVH      2021-07-02 14:25:06 +08:00 前两天谷歌不是刚开源了那个 FHE 同态加密的东西嘛,可以用这个试试 | 
|      10paopjian      2021-07-02 15:29:33 +08:00 via Android 百度有个加密模型方法,不过可能得转 paddle | 
|      11lplk      2021-07-02 15:33:57 +08:00 @Rheinmetal #1 有的公司的数据不可能提供给给你的服务的,比如银行,我现在做的就是 to B,就算是采购测试,也要到银行内部部署好服务,在他们内部测试 | 
|      12youxiachai      2021-07-02 15:36:35 +08:00 买供应商解决吧..... | 
|  |      13Rheinmetal      2021-07-02 16:28:42 +08:00 @lplk  银行爸爸那的确..... | 
|  |      14inframe      2021-07-02 20:32:17 +08:00 考虑物理方法: 1 直接搞个三防本子设置好密码丢客户现场,关键服务放三防本上,测试完了三防本收回来。 2 U 盘加密狗,模型放一些关键参数在加密狗上,一机一狗 | 
|  |      15xuanbg      2021-07-03 07:54:49 +08:00 模型才多大,肯定是远程调用啊。 | 
|      16bthulu      2021-07-03 09:36:12 +08:00 u 盘加密啊, 插上 u 盘才能用, 一个 u 盘就是一个授权 | 
|  |      17wangzhangup      2021-07-04 13:03:30 +08:00 模型就是一个大字典,你们可以自己加密。 | 
|  |      18bitdepth      2021-07-04 22:17:08 +08:00 via iPad Synaptics 也有一個系列的 arm 晶片提供全 trustpath 的 AI 環境,模型是加密過的無法明文訪問 可以考慮部署到相關硬體上 |