劉建軍,潘國峰,華 中,寇志強,王其民
(1.河北工業大學 微電子研究所,天津 300130;2.天津中環電子信息集團有限公司,天津 300190;3.天津鉑創國茂電子科技發展有限公司,天津 300384)
一種基于Android機頂盒的終端軟件使用認證系統
劉建軍1,潘國峰1,華 中2,寇志強3,王其民1
(1.河北工業大學 微電子研究所,天津 300130;2.天津中環電子信息集團有限公司,天津 300190;3.天津鉑創國茂電子科技發展有限公司,天津 300384)
對Android應用軟件的安全使用和保護技術研究,是當前Android終端的重要研究領域之一。通過對Android軟件使用認證功能的研究與分析,采用基于S盒直驅表法的AES高級加密標準對數據信息進行加密的方法,在Hi3716C平臺的基礎之上,提出并實現了一種基于Android機頂盒序列號的終端軟件使用認證系統,從而有效提升了軟件使用的安全性和防止終端軟件被濫用的可能。測試結果表明,該認證系統穩定性好,認證流程簡化,計算速度快,有效地縮短了軟件認證時間。
Android機頂盒;AES加密;認證流程;優化
當前Android操作系統以其優異的可移植性、開放的開發平臺,使它獲得了強勁的發展潛力和廣闊的市場,應用于Android系統的終端軟件亦是層出不窮,增長強勁。
然而如何保證軟件不被濫用,加強對基于Android系統應用軟件的安全使用,使用戶和軟件發布者得到有效的權益保障,是當前Android終端的重要研究領域之一。為此本文提出了一種基于Android機頂盒序列號的終端軟件使用認證系統,采用基于輪變換過程優化的S盒直驅表法的AES高級加密標準對數據信息進行加密方法,該系統以機頂盒序列號經過運算產生的隨機數作為認證依據,使得用戶的機頂盒聯通過聯網方式與認證服務器取得認證。軟件發布者通過網上認證的方式控制軟件在綁定的機頂盒上運行[1]。通過對輪變換過程的優化,可以把AES加密過程中復雜運算變為簡單的查表,移位和異或運算,從而簡化實現算法代碼,提高運算的執行效率。經過測試,該認證系統簡便易行,軟件破解難度大,提高了軟件的安全使用性,有效防止軟件被濫用,保護了軟件使用者和發布者的合法權益。
當機頂盒用戶使用安裝在機頂盒中的終端軟件時,需要用戶經過軟件中認證功能模塊的認證,認證界面如圖1所示,整體認證流程如圖2所示,圖2認證流程中機頂盒軟件終端負責向服務器提供密文信息,此信息是經過加密的軟件操作信息,通過網絡傳至認證服務端。認證服務端經過解密文,校驗認證終端軟件發送的操作信息是否與認證服務端數據庫中的數據一致,將驗證結果回饋至機頂盒軟件終端。

圖1 認證界面(截圖)

圖2 認證流程
為保證認證信息傳遞的安全性和保密性,通常采用對需要傳遞和交互的信息進行加密[2]的方法。數據加密方案使用AES加密算法,本文的AES加密算法使用128位密鑰,并且用128位(16 byte)分組加密和解密數據。等待加密的明文數據是機頂盒序列號經過運算得到的一組動態隨機數。AES加密算法的數學理論為GF(28)(域),即伽羅瓦域,它由一組從 0x00 到0xff的256個值組成[3],并采用對稱密鑰加密。
系統按程序運行流程分為隨機數發生器模塊,組合序列數模塊,客戶端加密模塊和服務器解密模塊。系統運行時通過獲取固化在機頂盒Flash分區中的序列號,經隨機數發生器生成動態隨機數,之后組合序列數模塊將隨機數與序列號進行組合,等待客戶端對數據進行加密,最后將加密數據發往服務器進入解密認證流程完成最后的認證操作。
認證的整個過程中都以機頂盒序列號為基礎,并對序列號經過人工設計的運算規則進行處理,得到動態隨機數,之后再與序列號進行重新組合。
3.1 軟件終端隨機數發生器設計
明文信息由兩部分組成分別為機頂盒序列號部分和隨機數部分。隨機數保證了每次加密后產生不同的密文,并用作服務器端認證時的校驗碼,機頂盒序列號用作用戶識別碼。
作為校驗碼,在認證過程中,認證服務器和機頂盒的終端軟件在信息交互時,必須保證產生隨機數的一致性。通過對提取出來的隨機事件信息進行整理計算,并利用數學方法使用短位元長度種子產生一組外界無法預測的隨機數字[4]。本文中的隨機數發生器是密鑰產生及達成完整性、鑒別性及隱密性等不可或缺的重要元件[5]。不同的機頂盒產生對應的初始種子值必須保證機頂盒客戶端和保存此機頂盒數據的服務器數據庫產生的種子值一致。因為種子值是產生隨機數的參數,只要種子值相同即可產生相同的隨機數。這里采用遞推公式產生統計性良好的動態隨機數[6]
seedn=f(xn,xn-1,xn-2,…,xn-k)
秸稈倉庫接地干線采用熱鍍鋅扁鋼50*5埋入地下0.8米深以上,倉庫屋頂是鋼板結構,直接利用其作為屋面接閃器,屋面不做防雷帶,直接用扁鋼引至屋頂可靠接地作為防雷裝置,現場勘察發現#1、#2料庫只有一點接地,規定為至少2點接地,站柱根部發現屋頂連接至接地體的扁鋼已消失,根部有斷裂痕跡,建議有登高資質外包商進行接地扁鋼修復
(1)
式中:在給出一組初值x0后,可逐步求出x1,x2,x3,x4,…,這里,x1,x2,x3,…,xn代表第1,2,3,…,n次的隨機數種子;seedn是第n次由隨機數種子得到的隨機數。
xn與xn-1的關系為
xn=xn-1+1
(2)
x0為初始種子,是機頂盒序列號相加的結果,認證服務器也會做同樣的動作。
通過測試,使用此方案產生的隨機數符合均勻性,抽樣性等隨機數特點。隨機數產生流程圖如圖3所示,每次認證成功時,客戶端與服務器必須對本次操作用到的隨機數種子進行存儲,客戶端隨機數種子存儲采用Shared Preferences方式存儲隨機數種子,這樣保證了種子文件只可被客戶端訪問[7],每次認證啟動時客戶端均先讀取種子文件是否存在,如果存在則按照約定程序算法對種子進行操作,產生隨機數,如果種子文件不存在,則判斷為用戶初次使用認證功能,客戶端產生一個初始的隨機數種子。

圖3 隨機數產生流程圖
3.2 數據加密設計
AES加密過程主要包括:輪變化、圈數和密鑰擴展,其中輪變換Round由4個變換(字節替換、行移位、列混合、密鑰加)組成,每次輪變化均使用不同的密鑰進行加密。本文使用AES的區塊長度固定為128 bit數據序列,密鑰長度128 bit,加密過程如圖4所示,明文數據及密鑰和輪數分組對應關系如表1所示。本文在不影響認證速度,使用安全性和用戶體驗和存儲空間的情況下,對S盒進行直接初始化操作,并以列變化為基礎進行優化。經過優化后的AES加密流程如圖5所示。

圖4 AES加密過程

表1 密文數據及密鑰和輪數分組對應關系

圖5 經過優化后的AES加密流程
在加密過程中4個字為1個密鑰,新密鑰的第1個字由上1個密鑰的最后1個字依次左移1位后查S盒并與Rcon(i/4)進行異或操作。得出新密鑰的第1個字后,新密鑰與第2、3、4個字與上1個密鑰的第2、3、4個字與新密鑰的第1個字,異或得出,由輪數可以得出共11個密鑰即44個字的大小。
S盒是由在GF(28)域上乘法求逆運算和在GF(2)域上的一個仿射運算對字節運算后由數學算法描述生成[8]。本文的字節替換環節使用替換表(S盒)作用于狀態矩陣的每個字節,在數據加密的時候,為保證數據加密的時間和效率,減少運算,對分組長度和密鑰長度均為128 bit的10輪AES算法進行一定改進。采用直接初始化的方法生成替換表[8],同時對Rijindael算法輪變換步驟中涉及到的矩陣運算,通過等價變換,把復雜的數學運算變為簡單的查表,移位和異或運算,從而簡化實現算法代碼,提高實現算法執行效率。
在完成行移位狀態變換后的狀態矩陣中的字節設為Rij,輪密鑰中字節表示為kij,列變換的字節數據表為rij,輪變換后的狀態矩陣中的字節替換表為eij,s(w)表示字節替換,計算過程中引入固定多項式c(x),滿足


(3)
式中;rij經過c(x)與多項式x4+1取模乘獲得;aij為初始狀態矩陣。在這里做列向量的線性組合計算

(4)

(5)

(6)

(7)
可以把狀態矩陣中的列表示為

(8)
在輪變換前先計算出T1w,T2w,T3w,T4w,并存儲在S盒中,其中被定義的S盒為16×16個字節組成的矩陣,每個字節均被映射為新的字節,將該字節的高4位作為行值,低4位作為列值,取出S盒中對應值作為輸出,每次運算時經過查表操作,每個元素均為1 byte,S[A]=S[X,Y]。如A=10010001時S[A]=S[9,1],取出對應坐標值。
在這里定義經過輪變換前的狀態矩陣為c0,經過優化后的過程如下:
1) 對c0經過偏移量為0,1,2,3行變換得到新矩陣c1。
2) 假設c1每列的4個字節數據為r0j,r1j,r2j,r3j,在上述的16×16字節矩陣中查表得出T1(r0j),T2(r1j),T3(r2j),T4(r3j)的值,記為t0,t1,t2,t3,依次將t0,t1,t2,t3中的第i個字節進行異或運算,能夠得到對應的4個新的字節數據,同理按上述方法,將狀態矩陣中的c1的其他列進行同樣的操作得到新的狀態矩陣c2[5]。
3) 將狀態矩陣c2和輪密鑰中的對應位置做數據異或運算,在進行密鑰加操作,完成本輪變換,得到本輪中的最終狀態矩陣c3。
3.3 數據解密
數據解密操作在服務器端完成,可以將解密操作理解為數據加密的逆過程,根據圖2所示流程圖,服務器對密文解密后,將得到的明文信息中的隨機數部分與服務器自身計算得到的隨機數進行校驗,校驗無誤后將校驗結果發往客戶端完成最后認證操作。解密流程圖如圖6所示。

圖6 服務器解密流程
3.4 測試結果分析
本文利用Android通用框架與設備無關的應用程序開發平臺,在功能設計中充分考慮了Android系統的易移植、高效率等優點[9],集中使用jni本地方法調用,NDK文件編譯工具編譯jni下C文件和Android系統各接口API模塊,使程序從開發效率和運行效率上都有較大的提升。測試平臺終端Android機頂盒配置如下:運行內存為1 Gbyte,Flash 4 096 Mbyte,CPU為Hi3716CV100,軟件系統為Android4.0.3,表2為經過優化前后的用時對比。

表2 AES-128優化前后的用時對比
通過對Android軟件認證功能的原理進行研究與分析,并結合本文認證系統的使用環境提出了基于Android機頂盒終端軟件使用認證系統。系統采用經過輪變換過程優化的S盒直驅表法,對S盒與逆S盒數據表采用直接進行初始化方法,優化了輪變化計算的運算流程,使得認證運算數據所占用的存儲空間有所減少,同時具有認證所需時間短,系統運行穩定,較高的加密運算執行效率等特點,而且能夠保護軟件發布者和使用者的合法權益。
[1]江永池.基于機器碼的軟件簡便認證方法研究[J].長江大學學報,2011,8(12):82-84.
[2] STALINGS W.密碼編碼學與網絡安全原理與實踐[M].劉玉珍,王麗娜,傅建明,等,譯.北京:電子工業出版,2001.
[3]趙雪梅.AES加密算法的實現及應用[J].常熟理工學院學報,2010,24(2):105-107.
[4]LIAO J,LIANG C,WEI Y J,et al.True random number generator based on a photon beams plitterf[J].Acta Phys.Sin.,2001,50(3):467-472.
[5]楊雪.關于隨機數發生器的綜述[D].長春:吉林大學,2012.
[6]鄭列,宋正義.偽隨機數生成算法及比較[J].湖北工業大學學報,2008,23(5):65-67.
[7]YASUDA S,SATAKE H,TANAMOTO T,et al. Physical random number generator based on MOS structure after soft breakdown[J].IEEE Journal of Solid-State Circuits,2004,8(39)1375-1377.
[8]楊軒.高級數據加密標準AES的Java實現與應用研究[D].南京:南京信息工程大學,2006.
[9]HWANG S M,YEO S S. Software process certication system based on K-model for high-performance software engineering[J]. Concurrency and Computation:Practice and Experience,2012,24(4):394-404.
Software Authentication System Based on Android STB Terminal Software
LIU Jianjun1,PAN Guofeng1,HUA Zhong2,KOU Zhiqiang3,WANG Qimin1
(1.MicroelectronicsTechnologyInstitute,HeibeiUniversityofTechnology,Tianjin300130,China;2.TianjinZhonghuanElec. &ITGroupCo.,Ltd.,Tianjin300190,China;3.TianjinBotroElectronicalScienceandTech.Co.,Ltd.,Tianjin300384,China)
Safe use and protection technology of research on the Android application software,is one of the focus areas of the current Android devices. Android system software authentication is researched and analyzed,using the S-boxes with directly driving table method of AES Advanced Encryption Standard to encrypt data,based on Hi3716C platform, an Android terminal software system authentication system based on STB serial number is proposed and implemented. The system effectively improves software security and prevent the software from being abused. The results show that this scheme optimizes authentication processes and computing speed and reduces the time required for certification.
Android set top boxes(STB);AES encryption;certification process;optimization

國家自然科學基金項目(60972106)
TN949.2
A
10.16280/j.videoe.2015.01.009
2014-05-26
【本文獻信息】劉建軍,潘國峰,華中,等.一種基于Android機頂盒的終端軟件使用認證系統[J].電視技術,2015,39(1).
劉建軍(1988— ),碩士生,主要研究方向為數字智能化技術;
潘國峰(1968— ),教授,碩士生導師,主要研究方向為敏感器件、電子信息薄膜、半導體測試技術等。
責任編輯:時 雯