软件研发或嵌入式研发行业,其核心部分往往就是源代码,如何做好源代码的管理至关重要。根据软件研发或嵌入式研发行业的从业者现状,总结出研发从业人员有以下特点:
1.学历较高,都非常聪明,非常懂电脑。
2.每个研发人员都有能力写程序,甚至可以通过写程序,进行各种数据变形。例如:文件读写(输出日志)、socket通信、内存映射,常驻服务等,对于Web开发者,经由IIS或TomCat等web服务器的代码变形更是轻而易举。
3.研发人员的个性较强,比较难管理
而我们软件研发或嵌入式行业特点要求必须对研发成果—源代码进行安全管理。但是现实的工作必须环境特点为:
1、大家必须有局域网,才能协同工作;
2、需要能访问互联网,方便查找资料;
3、必须通过U口串口网口等端口连接外部设备进行调试。
对于一些企业有的采用物理隔离,有的上虚拟化,有的上文档级加密软件,监控软件基本上都是形同虚设。例如常见的物理隔离,就是网络和外网断开,然后禁止使用U盘(软件或机箱),看上起很美好,但是对于懂电脑的研发人员来说,影响了工作效率,还是无法达到安全。
对于软件禁止U盘的,另外找个U盘做PE,然后直接从U盘启动绕开操作系统的管控做任何事。
插拔墙上的网线头直连自己的笔记本电脑进行数据传输。
对于不能封U口/串口的嵌入式调试环境更简单,直接可以把数据通过U口串口写出来。
……
另外,对于虚拟化,所有数据在服务器端,看上去很完美,但是只要外网可用,外设可用,基本上没什么安全可言。
作为一个软件嵌入式研发公司的源代码安全管理者,应该如何呢?
我们先了解一下,嵌入式开发的特性:
(1)连接外设,联网调试
手机品种繁多,不可能做到针对每种设备类型、品牌的兼容;
网口调试时,调试地址不断变更,无法锁定具体调试位置,数据很容易泄密;
数据不能以密文形式烧录至设备,否则设备无法识别,但这样往往最容易造成数据外泄。
(2)开发者水平较高,会各种破解
一个代码开发人员,可以轻松写一个把代码输出到日志或control的程序,类似这种研发场景还有研发设计人员自编socket,内存,管道,com,web解析器发布中转,内存映射,常驻服务等至少30多种。
(3)数据被各种变形,渗透外发
改变文件名称、后缀,压缩起来,跟随项目一起打包,很容易流失。
目前,市场上比较流行几种防泄密手段,均是从外表看来可以满足需求,但终究无法做到真正的防泄密。
1、内外网隔离
将涉密数据存储在公司内网,内网不允许连接互联网,看似数据只能保存在公司里,但任然有很多其他泄密风险,比如外设接口拷贝数据;重装OS时,U盘PE绕开操作系统的管控从WinPE中拷贝数据;外带电脑直连内网中任意一台PC机,数据对拷。
也有人说直接将外设接口全部封掉,用一个铁箱子将电脑机箱锁起来。这样虽然是保障了机箱数据安全,但是不便连接需要外设调试的设备,而且对于开发人员来说,互联网是不可缺少的查资料资源,如果另外配备查资料的电脑,再加上之前的铁箱子成本,也是不小的开销。
2、虚拟化
虚拟化在最近几年越来越热,优点也越来越被人们发觉,比如减少服务器数量、简化服务器部署、提高服务器资源利用率等等。但是将虚拟化与数据安全(防泄密)扯到一起,未免有些牵强。牵强在哪里,简单总结一下,就是通过互联网泄密和外设接口数据传输。而且,虚拟化的软硬成本,是一套加密软件的10倍左右。
3、文档透明加密
早在10年前,人们开始关注数据安全这一块时,文档加密的诞生帮助大多数的生产商,发展至今很多人对加密的见解就是:一个文件在公司内网打开正常,拿到外部打开乱码,效果明显直观。
我们也承认此项技术在业界发展至今,技术之成熟与优秀之处。但如今时代已然不同,更多的需求倾向于嵌入式开发、源代码型数据加密,而这就难倒文档级的透明加密,这种抓进程、绑后缀的加密方法终究止步于源代码开发防泄密需求。在众多开发人员面前,轰然倒塌,溃不成军。
我们来简单列举一些文档透明加密在源代码防泄密需求面前的一些不足之处。
1、U口数据线连手机:数据通过U口连接手机泄密。
2、U口数据线连设备:数据通过U口连接设备泄密。
3、串口数据线连设备:数据通过串口连接设备泄密。
4、网口数据线连设备:数据通过网口连接设备泄密。
5、控制台程输出内容保护:研发人员编写控制台程序,把涉密内容输出到控制台上然后另存。
6、日志内容保护:研发人员编写程序把代码等涉密内容保存到日志文件中然后把日志文件拷贝走。
7、内存保护:研发人员编写程序把代码等涉密内容保存制定内存中,然后再通过另一个程序等把内存内容读走。
8、web解析器保护:研发人员编写程序把代码等涉密内容文件修改成Html文本样式,然后通过IIS或tomcat等web解析器发布成网页,然后用浏览器另存成明文拷贝走。
9、管道保护:研发人员编写管道程序把代码等涉密内容传走。
10、网络通信保护:研发人员编写socket通信程序把代码等涉密内容传走。
11、消息保护:研发人员编写发消息程序把涉密内容发走。
12、屏幕截图保护:由于截图插件等很多,只针对QQ进程是远远不够的。
13、开发进程追踪困难:开发软件在调试过程中,有些插件的进程在后台一闪而逝,无法捕捉添加到绑定进程,后期导致整个调试过程出错。
14、坏文件:文件透明加密发展至今无法逾越的沟渠,原理是加密软件在给源文件写密钥时突然断电或者程序崩溃,导致密钥只完成一半。最后计算机无法识别这个文件。
从加密的整个行业来看,最早的是APIhook应用层,发展至文件过滤驱动透明加密,一直到现如今智能手机、平板电脑普及率原来越广,APP开发者越来越多,嵌入式开发也越来越多,文件过滤驱动透明加密已渐渐不能满足开发商们的需求。开发商们需要一款真正能经得起技术员“推敲”的防泄密软件。而随着这种需求的越来越强烈,沙盒加密也开始在大家的视线里出现。
为什么说沙盒加密能满足源代码级别、嵌入式开发的防泄密需求?
2012年,某全球知名通信设备生产销售商,深圳总部的研发人员向沙盒加密提出这类需求。在当初整个加密市场,这一块还是一片空白。沙盒加密商安全专家组讨论研究,给出适合的解决办法。在后几年实施使用中愈加完善,发展至今可以完全解决这一类难题。
什么是沙盒?
沙盒生效时,接管整个操作环境,文件本身在沙盒环境内如何处理、修改、编译、调试都与沙盒无关,沙盒不会去过问这些行为。然而当这些文件想要从系统里拿出时,受到沙盒严格管控,无论是网络出口,还是硬件接口出入,管理员不授权,所有文件均无法带走。
我们把沙盒当做一间房屋,把数据当做进出这个房屋的人。人在房屋里干了什么,变成刘德华还是周杰伦,变成男的或者女的,变成动物还是植物,房屋都不会去管他,房屋真正控制的是进出的“门”!
沙盒管控的就是这个“门”!
沙盒加密的优势在于不改变文件、不改变动作、不影响开发调试结果,不用刻意定义需要加密的文件后缀,不用担心开发者绕过沙盒造成泄密;安全隔离上网,加密与非加密划分两个区域,互不干涉;沙盒在对服务器保护的同时,也不会对服务器文件做加密处理,方便系统管理员存储、备份、运维;沙盒也可以与ERP、OA、PDM等服务器,与SVN、VSS等版本管理工具无缝集成。
沙盒加密用于嵌入式开发有以下几大特点:
(1)沙盒客户端、服务器的数据在沙盒内受管控,未经授权无法被带走;
(2)调试接口受管控,未经授权,任何调试接口都被拒绝;
(3)打开对外调试接口,并对接口进行约束:只能访问固定的IP、只能从固定的端口调试、只能访问固定的Mac地址;
(4)指定需要调试的沙盒客户端节点,对其只打开U口调试权限、只打开网口调试权限、只打开串口调试权限;
(5)指定需要调试的沙盒客户端节点,所有从这台客户端节点接口出去调试的数据,均由沙盒备份至服务器,方便后期审计与追溯;
(6)对放开调试接口的客户端节点进行摄像头监控,以此作为辅助,约束调试人员,保障数据安全。
总结:术业有专攻。在图纸和office办公文档加密需求为前提下,沙盒过于庞大笨重,有点小题大做的感觉,用户的体验度也比沙盒加密体验度高。但是对于源代码加密和嵌入式开发需求来说,确实只有沙盒可以满足需求。沙盒加密发展至今也就几年时间,体验度、方便率什么的,也给他们一点发展时间,相信后期会有比较好的改善。