摘 要:在現有的軟件超市平臺中,授權機制不能避免無限制地分散合法下載的軟件,在此對此提出修正方案,對不同的下載軟件設計出不同的流程,這意味攻擊者不易開發出給一般人使用的通用工具,這樣就可以增加軟件的存活時間,而這也剛好解決了軟件超市所出售軟件生命周期短暫的問題。
關鍵詞:軟件超市平臺; 授權系統; 密鑰分享問題; 軟件生命周期
中圖分類號:TN91934 文獻標識碼:A 文章編號:1004373X(2012)22001803
自從Apple AppStroe的商業模式成功,使得許多大廠紛紛跟進,想要建立自己的軟件超市平臺,其中較著名的廠商包括Google和即將推出自主平臺的Amazon等不同領域的主流廠商。這些廠商的軟件超市都使用類似AppStore的架構,主要包括安裝在客戶端的近端商店軟件以及服務器端的遠端商店服務器:前者負責下載、更新、安裝以及檢查客戶的軟件狀況;后者則負責軟件上下架、展示以及遠端管理客戶的軟件。與傳統的電子商務不同之處在于近端商店軟件,這個軟件安裝在消費者終端,平臺運行商會比傳統電子商務業者更了解消費者需求,增加消費者對平臺運行商的忠誠度。而這樣的趨勢,使得客戶端的軟件保護更加重要,因為若上架軟件很容易被非法復制,則就會減低開發者上架意愿,進而降低平臺的下載量,造成惡性循環。從消費者觀點來看,如果已經安裝近端商店軟件,但還是下載到了不安全軟件,這同樣會降低平臺的下載量。因此,一個適當的軟件授權機制關系到軟件超市平臺的運營情況[12]。但為了提高下載速度,平臺的運營會使用內容傳遞網絡(Content Delivery Network,CDN)技術[34],從而限制軟件授權機制的設計,因為內容傳遞網絡技術就是將上架軟件事先復制到全球各區域的服務器,通過分散下載點來加快反應速度,這意味著每一個消費者下載的軟件都會一樣,當平臺的運營商無法下載時,針對不同消費者對下載軟件做個別處理,而使得非法復制軟件的情況更難防范。針對這點,本文將進行討論并提出其改進方案。
1 相關工作
首先介紹傳統的軟件授權方式,不外乎如微軟的使用者授權(EndUser License Agreement,EULA),原始設備商授權(OEM)以及大量授權。前兩者的授權方式都是將授權信息隨軟件套件或終端給使用者,再加上安裝完畢的啟動動作來加強安全性,因為會對每一個軟件套件做差異化,并不適合應用在內容傳遞網絡技術,而后者則是在企業或組織的內部網絡架設授權服務器,軟件啟動會連到這臺授權服務器,除此之外還會定期檢查軟件授權狀態檢查,要是太久沒有做授權更新,就會被停止使用,這樣的使用情境類似現有的軟件超市應用,其差異是沒有考慮跨網域的安全性。
在不考慮軟件上/下架管理情況下,軟件超市平臺其實就是一個跨網域的授權系統,由于要授權多種軟件給消費者,所以需要于客戶端終端安裝近端商店軟件來管理不同軟件的授權。而不同的軟件超市平臺的差異在于包裝授權方式不同,如Amazon AppStore及Android Market會以非對稱方式密碼算法,而Apple Appstore則使用對稱方式密碼算法,但無論是哪種方式,都因為使用 CDN技術,而易遭受取代攻擊,造成合法下載的軟件被非法復制傳播。關于這兩個軟件超市平臺運作流程,將在下一段說明。Android Market的授權系統核心License Verification Library(LVL),軟件開發者將LVL相關程序加入自己的軟件后,當消費者執行此程序,就會與Android Market的授權系統通信檢查授權狀況。軟件開發者使用LVL的步驟包含:
上網申請公開密鑰,相對應的私密密鑰會存放于Android Market 的授權系統。申請好的公開密鑰,將軟件開發者直接復制在源代碼中,并通過函數傳遞LVL模組,主要用來驗證由遠端傳來的授權文件。所申請的公開密鑰會以Base64方式編碼,如圖1所示,開發者只要復制/粘貼就可以放進源代碼。
開發者復制/粘貼此公開密鑰并嵌入LVL相關的程序后,所發展的軟件就可經由近端商店軟件(Market App)向遠端的授權服務器做查詢,保護自己的軟件。
圖1 LVL License Key遠端的授權流程如圖2所示。流程概述如下,當消費者想要執行程序(myAPP),步驟2內嵌的LVL程序會與近端商店軟件溝通,傳遞軟件信息(App Data),收到信息的近端商店軟件便會加上消費者信息(User Data),與遠端的授權服務器溝通,遠端的授權服務器用傳來的信息查詢數據庫,然后傳回經過簽章的授權狀態(License Status),這個經過簽章的授權狀態最后會傳到myAPP,先使用公開密鑰驗簽章,再依授權狀態內容決定是否執行。而這樣的設計,會由于授權狀態是明文,別的消費者只要依據內容改變自己終端的設定就可以將復制過來的軟件執行起來。
圖2 Android Market 授權架構至于Apple Appstore并沒有實際的授權檢查,Appstore將所有軟件加密起來,只有近端商店軟件(iTunes)可以解密,運作流程如圖3所示。流程概述如下,使用者通知iTunes要下載ap1,iTunes 產生(暫時密鑰)sk,在向后端授權系統要求下載ap1,收到要求的授權系統先將加密ap1的主密鑰(Master Key)查詢出來并以sk加密,最后將加密的ap1及Master Key密文傳給iTunes,如此以來iTunes就可解密ap1。
而這樣的設計,基本上只要可以模擬圖3的流程,就可發布合法下載的軟件。
與現有的軟件超市平臺相同,所提方案也包括在客戶端的近端商店軟件以及服務器端的遠端商店服務器,與上述軟件超市平臺的不同在于增加了下載的差異性同時可用于采取CDN技術的環境。所謂的差異性指的是消費者下載的軟件或執行軟件所需參數,無法拿給另一臺終端使用,例如Appstore 的主密鑰以及Android Market的授權狀態。 首先說明本方案的基本說明如下:
(1) 每一個上架的軟件都被一把主密鑰(KEY)加密。
(2) 每個客戶端的裝置,都安裝近端商店軟件,且此近端商店軟件事先擁有部分密鑰K1。
(3) 服務器端的遠端商店服務器,擁有數據庫,可以依據近端商店軟件送出的消費者信息(User Data)查詢到K1,以及依據送出的軟件信息(App Data)查詢KEY。最后,遠端商店服務器計算出部分密鑰K2滿K2=f(KEY,K1),最后傳給近端商店軟件。
(4) 上架的軟件,被分解成多個模組,只有程序需要時,才會被解密放入內存執行。
在本方案中,軟件要執行時,才由近端商店軟件將K1及K2組合(使用秘密分享技術)出KEY,以便解密必要的模組。工作原理如圖4所示。
圖4 本文所提出的軟件執行流程圖4中的上架的軟件及K2都無法在別的終端上使用,因為K2會因K1不同而不同,因此只要在近端商店軟件被安裝時,所分配到的K1不同,本方案就可達到上述的差異性。
3 討 論
本文提出一個跨網域的軟件授權機制,可以達成每個使用者需使用不同密鑰解密下載軟件,同時下載軟件可事先被發布到CDN上的服務器。本文將包含兩個子系統如下:
近端商店軟件負責與受保護執行檔溝通解密文,并負責與后端服務器溝通取得安全參數及回報軟件安裝狀態;
遠端商店服務器:使用秘密分享技術實作的遠端商店服務器,用于產生安全參數供給近端商店軟件。
這兩個子系統可達成每個使用者的裝置(保護中介軟件)有不同的秘密值(K1),并可以事先將下載軟件放到CDN的服務器以減少下載反映時間。同時改善原設計的弱點,增加攻擊者解密難度。要達成這目的,本文先以主密鑰(KEY)將下載軟件(執行文件)分析成數個區塊做加密,每當使用者下載時,會送出下載軟件ID及自己的ID,讓遠端商店服務器取得對應的K1, 再由下載軟件ID取得KEY,然后算出安全參數(K2),使得KEY=f(K1,K2)。當遠端商店服務器產生K2后,就可傳送給保護近端商店軟件。當近端商店軟件收到安全參數,就會與下在軟件溝通,一起解開/管理需要的模組。
4 結 語
由于Android平臺的開放性,近年來智能手機市場呈爆炸性成長趨勢,Android系統已逐漸成為主流,但也因開放的特性,使得Android軟件易遭受逆向攻擊。因此,破解Android Marke 的主要方法是反編譯執行檔,而要減緩這類攻擊的方法有遠端動態加載模組及混淆兩種技術,雖然這些技術都已經發展多年,但發展出一個可協助軟件開發者加入混淆程序以及與近端商店軟件的程序的轉換器未出現,而本方案的未來目標將朝此前進,包括開發一個轉換器以及一個可以整合軟件開發流的軟件超市平臺。
參 考 文 獻
[1] 董黎明,何鴻君.基于用戶授權的惡意軟件防護方法[J].微計算機應用,2010,35(18):6165.
[2] 董黎明,何鴻君.Power Builder與Delphi相結合實現軟件授權許可[J].電腦編程技巧與維護,2009,26(3):5153.
[3] CHOW S, GU Y, JOHNSON H, et al. An approach to the obfuscation of controlflow of sequential computer programs \[J\]. Computer Science, 2001, 2200/2201: 144155.
[4] FUKUSHIMA K, KIYOMOTO S, TANAKA T. KAZUHIDE F. Obfuscation mechanism in conjunction with tamperproof module \[C\]// 2009 International Conference on Computational Science and Engineering. Vancouver, BC: CSE, 2009: 665670.
[5] LI Gong, SHACHAM N. Elements of trusted multicasting \[C\]// Proceedings of 1994 International Conference on Network Protocols. Boston, Massachusetts: IEEE,1994: 2330.
[6] HOLLABAUGH Craig. Embedded Linux: hardware, software and interfacing \[M\]. \[S.l.\]: Addison Wesley, 2002.
作者簡介: 李 莉 女,1979年出生,河北滄州人,碩士,講師。主要研究方向為計算機應用。