工程管理之代码保护

SVN,Git,加密狗,perforce

Views:  times Updated on April 21, 2022 Posted by elmagnifico on April 21, 2022

Foreword

源码泄露,经常能看到某些公司的源码泄露了,这种事说大不大,说小不小。但是总体来说不是大问题,在整个工程中,源码只是一小部分,后续的编译、测试、发布、以及更大的商业模式,那才是核心,只有源码,和我有一个idea,还差一个程序员,差不多。

而到了嵌入式这边,这个问题就比普通软件流程还要多一个层级,还需要物理硬件的支持,只有软件,没有硬件,巧妇难为无米之炊。

当然说一千道一万,还是有需要保护源码的需求,对内也得像防贼一样,防止源码被盗窃。最近了解了一下关于公司代码保护相关的内容,总结一下目前可以实现的代码保护的解决方案。

安全盾\加密狗

这种方法最简单,也最无脑了,整个使用源码的环境都是加密的,所有文件拷贝出都会被强制加密,写代码等环境中则是没问题的(当然不保证某些编译器或者比较hack的做法会导致和加密软件冲突),调试、发布等等也都可以比较顺畅的完成。唯一的问题就是,加密文件过多了,可能某些不需要加密的东西也被加密了。当然加密狗这种东西价格也不低就是了

代码存在于内网

每个人使用的都是云主机,代码只能进,不能出,自然没有泄密的问题了。但是这种方式解决一个问题,引入了更多问题,云主机怎么才能安全,内网怎样才能安全,内网中的数据又要备份多少次呢?同时也要兼顾给程序员外网的搜索功能。

这种也有一些特殊的场景用不了,比如嵌入式的代码,需要在外场联调,远程基本不可能,实时性要求高,走网络必然不行。

基于CI/CD的代码保护

这种方式类似于内网,但是又有所不同。每个人可以拿到归属于他范围的代码,他看不到所有代码,编译、发布都是由CI/CD完成,最终拿到编译后的结果去测试,这相当于是一个大黑盒了,带来的问题也很明显,效率会下降,联调有可能是别人的问题,但是需要多个人分析调试才能发现。原本可能保护源码,看一眼就能改掉的问题,变成了2个人2个工作日才能解决。

同样的,这种方式也丧失了实时性,对于嵌入式应用比较困难。

基于库的代码保护

这种方式比较通用,不属于你范围内的源码,都编译成一个或者多个库文件,进行调用。每个人负责的是各自的库,出了问题,各自debug。这种方式比CI/CD的方式实时性要高一点,嵌入式的代码如果调试比较适合,但是编译成库也有额外的问题,编译成库,这个库的代码大小和代码优化、效率可能对比整个源码编译是要差一点的。

还有一些更复杂的方式,将各种库直接编译成bin或者ram内容,然后转存到Flash中,需要的时候加载,然后解密,调用等等,相比库来说,他已经是编译后的结果了,所以整体效率上比调库要好一些。

SVN

对比Git只能简单的设置大权限,SVN可以比较细的分权到代码路径上,一般基于CI/CD的方式中都会用SVN来分各个人的代码范围,相当于还是一个仓库,只是各自管理各自的小仓库而已。

Git也可以通过submodule,然后把大仓库分成若干个小仓库,但是本质上Git不是给你干这个事情的,能但不适合。

perforce

https://www.perforce.com/

perforce,基本上就是一个大型集合体,取决于你掏多少钱,就能有多少功能。他是基于workspace的,权限管理类似于SVN可以细分到路径,你可以控制的代码就能看到的,也能修改,而不属于你的部分的代码也能看到,只是不能修改,同样也无法copy等操作。当然除了代码,其实很多文件也可以用perforce来管理,它本质上有一个文件管理服务器,然后每个人拿到的只是这个文件目录的一个映射。有些厂的美术资源之类的东西,也是用perforce管理的。

当然他是多个组件组成的,所以他也有后续的CI/CD等流程管理,也有类似Git的工具,类似Github,Gitlab之类的平台,只要你掏钱,就都能拥有。

目前看到的国外价格,一个服务器的license要800刀、一个人的license要160刀,价格不便宜,而且这个可能还只是年费。

perforce国内的也有一家代理,不过价格更高,如果人数偏少,收费非常高,而且是一年一收。

您好~ 目前perforce是按照用户数购买; 低于25u,需要购买订阅许可,一个用户一年4000元含税; 大于等于25u,可以购买永久许可,一个用户8500元,含税。

那就是100个用户

目前目录价是8500元/用户,永久许可,需要贵司具体名称及公司邮箱给到具体报价哦。

如果是人数够多,那么同样的年费价格就变成了永久价格,甚至还有更多优惠什么的。

混淆

这种算是比较无奈的办法了,除了需要知道的代码,其他代码一概混淆,也能解决这个问题,就是有点丑陋而已,真的要copy或者恢复原样,还是可以的。

Summary

以上的任何一种代码的保护方式,都可以通过一些巧妙的办法破解,比如嵌入式的代码,直接通过硬件或者调试器或者什么其他的工具直接对外输出,挡不住有心之人。

代码壁垒,比起商业壁垒,还是小巫见大巫了。

Quote

https://zhuanlan.zhihu.com/p/258038096

https://www.zhihu.com/question/19983270

https://www.zhihu.com/question/22438484

https://www.zhihu.com/question/440806614

https://www.zhihu.com/question/364587513

https://www.sidmartinbio.org/is-perforce-server-free/

https://www.itqlick.com/perforce-software/pricing