图片,工程文件,视频,数据和文档等一共 500G 左右的文件,用什么方式加密比较好

2021-06-18 21:50:32 +08:00
 shayuvpn0001

一个项目需要部署在客户现场那边的工作站上,客户在现场工作站上输入一系列内容,程序根据输入计算并结合历史数据给出若干个最优解,如果最优解落在某个示例区间内,则还需要展示文档、图片和视频告诉客户怎么操作。

整个过程我们的历史数据、图片、文档等关键资料都不希望给客户那边脱壳拿到原始资料,特别是历史数据和算法。同时因为客户那边工作站是在封闭环境下运行,无法联网,因此也无法使用互联网实时下发,必须在开始部署的时候全部拷贝到现场工作站上。

目前能想到的是:
1,使用商业方案,USB 加密狗等方法。
2,根据现场工作站的物理特征,比如 MAC 地址,序列号等生成密钥,绑定我们的软件到该工作站上。

想问问还有什么比较好的加密方法,能够最大限度保护我们的知识产权。

2786 次点击
所在节点    程序员
18 条回复
3dwelcome
2021-06-18 22:36:02 +08:00
丢进 linux 的 docker 里,文件强加密,相当于一个加密后的 VM 。

对外提供文件访问 API,给现场发布一个访问 KEY 。限制 KEY 访问频率,限制一下失效时间。

超过服务时间,docker 内部启动自毁程序,这样数据神仙也救不回来。
shuizhuyu
2021-06-18 22:41:53 +08:00
等一个压缩包强加密方法
felixcode
2021-06-19 00:44:14 +08:00
做一个加密磁盘的虚拟机,对外提供 api,vmware workstation 本地运行。
dingwen07
2021-06-19 00:51:02 +08:00
@3dwelcome #1 不懂就问,运行加密的 VM 不需要提供能够解密整个 VM 的密钥吗。
3dwelcome
2021-06-19 01:12:05 +08:00
@dingwen07 黑盒运行可以不需要登录吧,只需要能启动网络,调用到 API 。

比如 windows 的 vm, 你启动后不需要用密码登录进系统,就能直接用它的网络服务了。
dingwen07
2021-06-19 01:35:17 +08:00
@3dwelcome #5 但是加密的数据需要解密才能执行吧,比如 BitLocker 加密的 Windows 必须先解密才能开机
3dwelcome
2021-06-19 01:52:01 +08:00
@dingwen07 我没懂你的意思,BitLocker 全盘加密,在 Windows 系统引导时候,就已经开始发挥作用了。
并不是到输用户密码的时候,才开始解密磁盘文件。
dingwen07
2021-06-19 02:10:46 +08:00
@3dwelcome #7 对,所以说 VM 里的数据就算被加密了,密钥也在内存里,而 op 的情况是机器都是对方控制的,他们完全可以 dump 内存获取解密整个 VM 的密钥。
xiangyuecn
2021-06-19 08:23:06 +08:00
数据用个简单高效的加密方式加密就可以了,AES 足够胜任

密钥用密钥的密钥的密钥来加密一道,解密密钥的密钥的密钥丢到授权密钥里面,通过某种算法或解密方式从授权密钥里面提取出来,某个阶段循环个几千万下,谁要来破解绕晕他😂😂
winglight2016
2021-06-19 09:01:35 +08:00
使用 wtg 的 SSD 移动硬盘不是最方便吗?演示完,带走。
typetraits
2021-06-19 09:05:57 +08:00
带一个 USB key,将全部数据放进 VeraCrypt 或者 Cryptomator 加密,设置强密码,现场使用 USB key 解密,走的时候拔掉就可以,直接把加密后的镜像送给他们都没事
yujiang
2021-06-19 11:01:05 +08:00
提供一个另类思路,如果客户的储存空间够大,你可以在素材中添加大量垃圾数据,做成屎山。然后在主程序的逻辑里屏蔽掉这些垃圾数据,接下来只要对主程序进行强加密就行了,比如用加密狗,混淆代码,还要偶尔对那些垃圾数据进行一些调用混淆视听。素材用 AES-256 甚至 512 加密就够了,就算对方解密出来,只要主程序没被破解,想在屎山里找出有用的东西还是挺困难的。为了防止调试,可以再起个本地挖矿还是算圆周率之类的需要大量算力的进程,根据客户设备的算力把 CPU 拉到比较高的程度同时运行软件又不会卡,进程还要与主程序守护(像 qqprotect 的逻辑)甚至写死在一起,如果想要放在虚拟机调试考虑到虚拟机的性能损耗,为了破解他们需要租用或购买性能更强大的设备,花费额外的资金,但他们发现所有的这些花费不如再找你们公司买个许可证的话,你的目的也就达到了
Huelse
2021-06-19 11:16:58 +08:00
最好办法是东西部署在自己这儿,客户那边只是个请求客户端(或者说,给客户定制个本地服务,但是“上锁”的,可检测拆封和异常访问等)

话说有图片和视频岂不是录个屏就破了?难不成加水印?

好的协议与合同是更方便的手段吧?
dianso
2021-06-19 13:19:52 +08:00
把笔记本放箱子里,给箱子换个密码锁
shayuvpn0001
2021-06-19 13:42:33 +08:00
@Huelse 不能联网,图片和视频已经打了我们的水印,他们录屏也只能他们自己内部使用,无法二次分发,而且录屏效果差。
而且在最差条件下,他们拿走图片和视频的损失我们也能承受,但是历史数据和算法是绝对不允许的。

协议和合同对某些甲方几乎等于无效,这个东西本来也含有专利在里面,我们专利提都没提,因为提到专利对方可以通过合法手段进行征用,那个损失更大。
titan2006
2021-06-20 00:26:38 +08:00
改个扩展名
rosees
2021-06-20 03:01:56 +08:00
使用带 TPM 的笔记本,不给管理员权限,其他规则设置好即可
cjq8z
2021-06-20 13:34:21 +08:00
你如此担心用户获取相关的数据,为啥不搞个硬件模块呢?
找人开发个硬件模块,上面有 CPU 、EPROM 、RAM 、存储芯片等等,把你们的程序、算法、资料啥的全部放在上面,然后再提供给硬件接口给用户使用不就可以了吗?
再写个软件调用硬件模块和用户本地设备硬件。

工业方面那些大型设备的计算卡不就是这类思路嘛。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/784359

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX