CN
EN

公司公告

源代碼怎樣加密?

2016-07-20

軟件研發或嵌入式研發行業,其核心部分往往就是源代碼,如何做好源代碼的管理至關重要。根據軟件研發或嵌入式研發行業的從業者現狀,總結出研發從業人員有以下特點:
 
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辦公文檔加密需求為前提下,沙盒過于龐大笨重,有點小題大做的感覺,用戶的體驗度也比沙盒加密體驗度高。但是對于源代碼加密和嵌入式開發需求來說,確實只有沙盒可以滿足需求。沙盒加密發展至今也就幾年時間,體驗度、方便率什么的,也給他們一點發展時間,相信后期會有比較好的改善。
 
文檔透明加密與沙盒加密有本質上的區別,本文只針對“源代碼、嵌入式開發防泄密”話題做探討,無針對的含義在里面。請相關人員不要對號入座,文章只是就事論事。大家也可以自己去調查研究,去解惑事實的真相。如果有寫的不夠詳細的地方,也歡迎大家補充。
var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?44d5929b98ed1fd093ffc3d47ec712b9"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); document.writeln("");