劉建軍,潘國(guó)峰,華 中,寇志強(qiáng),王其民
(1.河北工業(yè)大學(xué) 微電子研究所,天津 300130;2.天津中環(huán)電子信息集團(tuán)有限公司,天津 300190;3.天津鉑創(chuàng)國(guó)茂電子科技發(fā)展有限公司,天津 300384)
一種基于Android機(jī)頂盒的終端軟件使用認(rèn)證系統(tǒng)
劉建軍1,潘國(guó)峰1,華 中2,寇志強(qiáng)3,王其民1
(1.河北工業(yè)大學(xué) 微電子研究所,天津 300130;2.天津中環(huán)電子信息集團(tuán)有限公司,天津 300190;3.天津鉑創(chuàng)國(guó)茂電子科技發(fā)展有限公司,天津 300384)
對(duì)Android應(yīng)用軟件的安全使用和保護(hù)技術(shù)研究,是當(dāng)前Android終端的重要研究領(lǐng)域之一。通過對(duì)Android軟件使用認(rèn)證功能的研究與分析,采用基于S盒直驅(qū)表法的AES高級(jí)加密標(biāo)準(zhǔn)對(duì)數(shù)據(jù)信息進(jìn)行加密的方法,在Hi3716C平臺(tái)的基礎(chǔ)之上,提出并實(shí)現(xiàn)了一種基于Android機(jī)頂盒序列號(hào)的終端軟件使用認(rèn)證系統(tǒng),從而有效提升了軟件使用的安全性和防止終端軟件被濫用的可能。測(cè)試結(jié)果表明,該認(rèn)證系統(tǒng)穩(wěn)定性好,認(rèn)證流程簡(jiǎn)化,計(jì)算速度快,有效地縮短了軟件認(rèn)證時(shí)間。
Android機(jī)頂盒;AES加密;認(rèn)證流程;優(yōu)化
當(dāng)前Android操作系統(tǒng)以其優(yōu)異的可移植性、開放的開發(fā)平臺(tái),使它獲得了強(qiáng)勁的發(fā)展?jié)摿蛷V闊的市場(chǎng),應(yīng)用于Android系統(tǒng)的終端軟件亦是層出不窮,增長(zhǎng)強(qiáng)勁。
然而如何保證軟件不被濫用,加強(qiáng)對(duì)基于Android系統(tǒng)應(yīng)用軟件的安全使用,使用戶和軟件發(fā)布者得到有效的權(quán)益保障,是當(dāng)前Android終端的重要研究領(lǐng)域之一。為此本文提出了一種基于Android機(jī)頂盒序列號(hào)的終端軟件使用認(rèn)證系統(tǒng),采用基于輪變換過程優(yōu)化的S盒直驅(qū)表法的AES高級(jí)加密標(biāo)準(zhǔn)對(duì)數(shù)據(jù)信息進(jìn)行加密方法,該系統(tǒng)以機(jī)頂盒序列號(hào)經(jīng)過運(yùn)算產(chǎn)生的隨機(jī)數(shù)作為認(rèn)證依據(jù),使得用戶的機(jī)頂盒聯(lián)通過聯(lián)網(wǎng)方式與認(rèn)證服務(wù)器取得認(rèn)證。軟件發(fā)布者通過網(wǎng)上認(rèn)證的方式控制軟件在綁定的機(jī)頂盒上運(yùn)行[1]。通過對(duì)輪變換過程的優(yōu)化,可以把AES加密過程中復(fù)雜運(yùn)算變?yōu)楹?jiǎn)單的查表,移位和異或運(yùn)算,從而簡(jiǎn)化實(shí)現(xiàn)算法代碼,提高運(yùn)算的執(zhí)行效率。經(jīng)過測(cè)試,該認(rèn)證系統(tǒng)簡(jiǎn)便易行,軟件破解難度大,提高了軟件的安全使用性,有效防止軟件被濫用,保護(hù)了軟件使用者和發(fā)布者的合法權(quán)益。
當(dāng)機(jī)頂盒用戶使用安裝在機(jī)頂盒中的終端軟件時(shí),需要用戶經(jīng)過軟件中認(rèn)證功能模塊的認(rèn)證,認(rèn)證界面如圖1所示,整體認(rèn)證流程如圖2所示,圖2認(rèn)證流程中機(jī)頂盒軟件終端負(fù)責(zé)向服務(wù)器提供密文信息,此信息是經(jīng)過加密的軟件操作信息,通過網(wǎng)絡(luò)傳至認(rèn)證服務(wù)端。認(rèn)證服務(wù)端經(jīng)過解密文,校驗(yàn)認(rèn)證終端軟件發(fā)送的操作信息是否與認(rèn)證服務(wù)端數(shù)據(jù)庫中的數(shù)據(jù)一致,將驗(yàn)證結(jié)果回饋至機(jī)頂盒軟件終端。
圖1 認(rèn)證界面(截圖)
圖2 認(rèn)證流程
為保證認(rèn)證信息傳遞的安全性和保密性,通常采用對(duì)需要傳遞和交互的信息進(jìn)行加密[2]的方法。數(shù)據(jù)加密方案使用AES加密算法,本文的AES加密算法使用128位密鑰,并且用128位(16 byte)分組加密和解密數(shù)據(jù)。等待加密的明文數(shù)據(jù)是機(jī)頂盒序列號(hào)經(jīng)過運(yùn)算得到的一組動(dòng)態(tài)隨機(jī)數(shù)。AES加密算法的數(shù)學(xué)理論為GF(28)(域),即伽羅瓦域,它由一組從 0x00 到0xff的256個(gè)值組成[3],并采用對(duì)稱密鑰加密。
系統(tǒng)按程序運(yùn)行流程分為隨機(jī)數(shù)發(fā)生器模塊,組合序列數(shù)模塊,客戶端加密模塊和服務(wù)器解密模塊。系統(tǒng)運(yùn)行時(shí)通過獲取固化在機(jī)頂盒Flash分區(qū)中的序列號(hào),經(jīng)隨機(jī)數(shù)發(fā)生器生成動(dòng)態(tài)隨機(jī)數(shù),之后組合序列數(shù)模塊將隨機(jī)數(shù)與序列號(hào)進(jìn)行組合,等待客戶端對(duì)數(shù)據(jù)進(jìn)行加密,最后將加密數(shù)據(jù)發(fā)往服務(wù)器進(jìn)入解密認(rèn)證流程完成最后的認(rèn)證操作。
認(rèn)證的整個(gè)過程中都以機(jī)頂盒序列號(hào)為基礎(chǔ),并對(duì)序列號(hào)經(jīng)過人工設(shè)計(jì)的運(yùn)算規(guī)則進(jìn)行處理,得到動(dòng)態(tài)隨機(jī)數(shù),之后再與序列號(hào)進(jìn)行重新組合。
3.1 軟件終端隨機(jī)數(shù)發(fā)生器設(shè)計(jì)
明文信息由兩部分組成分別為機(jī)頂盒序列號(hào)部分和隨機(jī)數(shù)部分。隨機(jī)數(shù)保證了每次加密后產(chǎn)生不同的密文,并用作服務(wù)器端認(rèn)證時(shí)的校驗(yàn)碼,機(jī)頂盒序列號(hào)用作用戶識(shí)別碼。
作為校驗(yàn)碼,在認(rèn)證過程中,認(rèn)證服務(wù)器和機(jī)頂盒的終端軟件在信息交互時(shí),必須保證產(chǎn)生隨機(jī)數(shù)的一致性。通過對(duì)提取出來的隨機(jī)事件信息進(jìn)行整理計(jì)算,并利用數(shù)學(xué)方法使用短位元長(zhǎng)度種子產(chǎn)生一組外界無法預(yù)測(cè)的隨機(jī)數(shù)字[4]。本文中的隨機(jī)數(shù)發(fā)生器是密鑰產(chǎn)生及達(dá)成完整性、鑒別性及隱密性等不可或缺的重要元件[5]。不同的機(jī)頂盒產(chǎn)生對(duì)應(yīng)的初始種子值必須保證機(jī)頂盒客戶端和保存此機(jī)頂盒數(shù)據(jù)的服務(wù)器數(shù)據(jù)庫產(chǎn)生的種子值一致。因?yàn)榉N子值是產(chǎn)生隨機(jī)數(shù)的參數(shù),只要種子值相同即可產(chǎn)生相同的隨機(jī)數(shù)。這里采用遞推公式產(chǎn)生統(tǒng)計(jì)性良好的動(dòng)態(tài)隨機(jī)數(shù)[6]
seedn=f(xn,xn-1,xn-2,…,xn-k)
秸稈倉(cāng)庫接地干線采用熱鍍鋅扁鋼50*5埋入地下0.8米深以上,倉(cāng)庫屋頂是鋼板結(jié)構(gòu),直接利用其作為屋面接閃器,屋面不做防雷帶,直接用扁鋼引至屋頂可靠接地作為防雷裝置,現(xiàn)場(chǎng)勘察發(fā)現(xiàn)#1、#2料庫只有一點(diǎn)接地,規(guī)定為至少2點(diǎn)接地,站柱根部發(fā)現(xiàn)屋頂連接至接地體的扁鋼已消失,根部有斷裂痕跡,建議有登高資質(zhì)外包商進(jìn)行接地扁鋼修復(fù)
(1)
式中:在給出一組初值x0后,可逐步求出x1,x2,x3,x4,…,這里,x1,x2,x3,…,xn代表第1,2,3,…,n次的隨機(jī)數(shù)種子;seedn是第n次由隨機(jī)數(shù)種子得到的隨機(jī)數(shù)。
xn與xn-1的關(guān)系為
xn=xn-1+1
(2)
x0為初始種子,是機(jī)頂盒序列號(hào)相加的結(jié)果,認(rèn)證服務(wù)器也會(huì)做同樣的動(dòng)作。
通過測(cè)試,使用此方案產(chǎn)生的隨機(jī)數(shù)符合均勻性,抽樣性等隨機(jī)數(shù)特點(diǎn)。隨機(jī)數(shù)產(chǎn)生流程圖如圖3所示,每次認(rèn)證成功時(shí),客戶端與服務(wù)器必須對(duì)本次操作用到的隨機(jī)數(shù)種子進(jìn)行存儲(chǔ),客戶端隨機(jī)數(shù)種子存儲(chǔ)采用Shared Preferences方式存儲(chǔ)隨機(jī)數(shù)種子,這樣保證了種子文件只可被客戶端訪問[7],每次認(rèn)證啟動(dòng)時(shí)客戶端均先讀取種子文件是否存在,如果存在則按照約定程序算法對(duì)種子進(jìn)行操作,產(chǎn)生隨機(jī)數(shù),如果種子文件不存在,則判斷為用戶初次使用認(rèn)證功能,客戶端產(chǎn)生一個(gè)初始的隨機(jī)數(shù)種子。
圖3 隨機(jī)數(shù)產(chǎn)生流程圖
3.2 數(shù)據(jù)加密設(shè)計(jì)
AES加密過程主要包括:輪變化、圈數(shù)和密鑰擴(kuò)展,其中輪變換Round由4個(gè)變換(字節(jié)替換、行移位、列混合、密鑰加)組成,每次輪變化均使用不同的密鑰進(jìn)行加密。本文使用AES的區(qū)塊長(zhǎng)度固定為128 bit數(shù)據(jù)序列,密鑰長(zhǎng)度128 bit,加密過程如圖4所示,明文數(shù)據(jù)及密鑰和輪數(shù)分組對(duì)應(yīng)關(guān)系如表1所示。本文在不影響認(rèn)證速度,使用安全性和用戶體驗(yàn)和存儲(chǔ)空間的情況下,對(duì)S盒進(jìn)行直接初始化操作,并以列變化為基礎(chǔ)進(jìn)行優(yōu)化。經(jīng)過優(yōu)化后的AES加密流程如圖5所示。
圖4 AES加密過程
表1 密文數(shù)據(jù)及密鑰和輪數(shù)分組對(duì)應(yīng)關(guān)系
圖5 經(jīng)過優(yōu)化后的AES加密流程
在加密過程中4個(gè)字為1個(gè)密鑰,新密鑰的第1個(gè)字由上1個(gè)密鑰的最后1個(gè)字依次左移1位后查S盒并與Rcon(i/4)進(jìn)行異或操作。得出新密鑰的第1個(gè)字后,新密鑰與第2、3、4個(gè)字與上1個(gè)密鑰的第2、3、4個(gè)字與新密鑰的第1個(gè)字,異或得出,由輪數(shù)可以得出共11個(gè)密鑰即44個(gè)字的大小。
S盒是由在GF(28)域上乘法求逆運(yùn)算和在GF(2)域上的一個(gè)仿射運(yùn)算對(duì)字節(jié)運(yùn)算后由數(shù)學(xué)算法描述生成[8]。本文的字節(jié)替換環(huán)節(jié)使用替換表(S盒)作用于狀態(tài)矩陣的每個(gè)字節(jié),在數(shù)據(jù)加密的時(shí)候,為保證數(shù)據(jù)加密的時(shí)間和效率,減少運(yùn)算,對(duì)分組長(zhǎng)度和密鑰長(zhǎng)度均為128 bit的10輪AES算法進(jìn)行一定改進(jìn)。采用直接初始化的方法生成替換表[8],同時(shí)對(duì)Rijindael算法輪變換步驟中涉及到的矩陣運(yùn)算,通過等價(jià)變換,把復(fù)雜的數(shù)學(xué)運(yùn)算變?yōu)楹?jiǎn)單的查表,移位和異或運(yùn)算,從而簡(jiǎn)化實(shí)現(xiàn)算法代碼,提高實(shí)現(xiàn)算法執(zhí)行效率。
在完成行移位狀態(tài)變換后的狀態(tài)矩陣中的字節(jié)設(shè)為Rij,輪密鑰中字節(jié)表示為kij,列變換的字節(jié)數(shù)據(jù)表為rij,輪變換后的狀態(tài)矩陣中的字節(jié)替換表為eij,s(w)表示字節(jié)替換,計(jì)算過程中引入固定多項(xiàng)式c(x),滿足
(3)
式中;rij經(jīng)過c(x)與多項(xiàng)式x4+1取模乘獲得;aij為初始狀態(tài)矩陣。在這里做列向量的線性組合計(jì)算
(4)
(5)
(6)
(7)
可以把狀態(tài)矩陣中的列表示為
(8)
在輪變換前先計(jì)算出T1w,T2w,T3w,T4w,并存儲(chǔ)在S盒中,其中被定義的S盒為16×16個(gè)字節(jié)組成的矩陣,每個(gè)字節(jié)均被映射為新的字節(jié),將該字節(jié)的高4位作為行值,低4位作為列值,取出S盒中對(duì)應(yīng)值作為輸出,每次運(yùn)算時(shí)經(jīng)過查表操作,每個(gè)元素均為1 byte,S[A]=S[X,Y]。如A=10010001時(shí)S[A]=S[9,1],取出對(duì)應(yīng)坐標(biāo)值。
在這里定義經(jīng)過輪變換前的狀態(tài)矩陣為c0,經(jīng)過優(yōu)化后的過程如下:
1) 對(duì)c0經(jīng)過偏移量為0,1,2,3行變換得到新矩陣c1。
2) 假設(shè)c1每列的4個(gè)字節(jié)數(shù)據(jù)為r0j,r1j,r2j,r3j,在上述的16×16字節(jié)矩陣中查表得出T1(r0j),T2(r1j),T3(r2j),T4(r3j)的值,記為t0,t1,t2,t3,依次將t0,t1,t2,t3中的第i個(gè)字節(jié)進(jìn)行異或運(yùn)算,能夠得到對(duì)應(yīng)的4個(gè)新的字節(jié)數(shù)據(jù),同理按上述方法,將狀態(tài)矩陣中的c1的其他列進(jìn)行同樣的操作得到新的狀態(tài)矩陣c2[5]。
3) 將狀態(tài)矩陣c2和輪密鑰中的對(duì)應(yīng)位置做數(shù)據(jù)異或運(yùn)算,在進(jìn)行密鑰加操作,完成本輪變換,得到本輪中的最終狀態(tài)矩陣c3。
3.3 數(shù)據(jù)解密
數(shù)據(jù)解密操作在服務(wù)器端完成,可以將解密操作理解為數(shù)據(jù)加密的逆過程,根據(jù)圖2所示流程圖,服務(wù)器對(duì)密文解密后,將得到的明文信息中的隨機(jī)數(shù)部分與服務(wù)器自身計(jì)算得到的隨機(jī)數(shù)進(jìn)行校驗(yàn),校驗(yàn)無誤后將校驗(yàn)結(jié)果發(fā)往客戶端完成最后認(rèn)證操作。解密流程圖如圖6所示。
圖6 服務(wù)器解密流程
3.4 測(cè)試結(jié)果分析
本文利用Android通用框架與設(shè)備無關(guān)的應(yīng)用程序開發(fā)平臺(tái),在功能設(shè)計(jì)中充分考慮了Android系統(tǒng)的易移植、高效率等優(yōu)點(diǎn)[9],集中使用jni本地方法調(diào)用,NDK文件編譯工具編譯jni下C文件和Android系統(tǒng)各接口API模塊,使程序從開發(fā)效率和運(yùn)行效率上都有較大的提升。測(cè)試平臺(tái)終端Android機(jī)頂盒配置如下:運(yùn)行內(nèi)存為1 Gbyte,F(xiàn)lash 4 096 Mbyte,CPU為Hi3716CV100,軟件系統(tǒng)為Android4.0.3,表2為經(jīng)過優(yōu)化前后的用時(shí)對(duì)比。
表2 AES-128優(yōu)化前后的用時(shí)對(duì)比
通過對(duì)Android軟件認(rèn)證功能的原理進(jìn)行研究與分析,并結(jié)合本文認(rèn)證系統(tǒng)的使用環(huán)境提出了基于Android機(jī)頂盒終端軟件使用認(rèn)證系統(tǒng)。系統(tǒng)采用經(jīng)過輪變換過程優(yōu)化的S盒直驅(qū)表法,對(duì)S盒與逆S盒數(shù)據(jù)表采用直接進(jìn)行初始化方法,優(yōu)化了輪變化計(jì)算的運(yùn)算流程,使得認(rèn)證運(yùn)算數(shù)據(jù)所占用的存儲(chǔ)空間有所減少,同時(shí)具有認(rèn)證所需時(shí)間短,系統(tǒng)運(yùn)行穩(wěn)定,較高的加密運(yùn)算執(zhí)行效率等特點(diǎn),而且能夠保護(hù)軟件發(fā)布者和使用者的合法權(quán)益。
[1]江永池.基于機(jī)器碼的軟件簡(jiǎn)便認(rèn)證方法研究[J].長(zhǎng)江大學(xué)學(xué)報(bào),2011,8(12):82-84.
[2] STALINGS W.密碼編碼學(xué)與網(wǎng)絡(luò)安全原理與實(shí)踐[M].劉玉珍,王麗娜,傅建明,等,譯.北京:電子工業(yè)出版,2001.
[3]趙雪梅.AES加密算法的實(shí)現(xiàn)及應(yīng)用[J].常熟理工學(xué)院學(xué)報(bào),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]楊雪.關(guān)于隨機(jī)數(shù)發(fā)生器的綜述[D].長(zhǎng)春:吉林大學(xué),2012.
[6]鄭列,宋正義.偽隨機(jī)數(shù)生成算法及比較[J].湖北工業(yè)大學(xué)學(xué)報(bào),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]楊軒.高級(jí)數(shù)據(jù)加密標(biāo)準(zhǔn)AES的Java實(shí)現(xiàn)與應(yīng)用研究[D].南京:南京信息工程大學(xué),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
國(guó)家自然科學(xué)基金項(xiàng)目(60972106)
TN949.2
A
10.16280/j.videoe.2015.01.009
2014-05-26
【本文獻(xiàn)信息】劉建軍,潘國(guó)峰,華中,等.一種基于Android機(jī)頂盒的終端軟件使用認(rèn)證系統(tǒng)[J].電視技術(shù),2015,39(1).
劉建軍(1988— ),碩士生,主要研究方向?yàn)閿?shù)字智能化技術(shù);
潘國(guó)峰(1968— ),教授,碩士生導(dǎo)師,主要研究方向?yàn)槊舾衅骷?、電子信息薄膜、半?dǎo)體測(cè)試技術(shù)等。
責(zé)任編輯:時(shí) 雯