刘建军,潘国峰,华 中,寇志强,王其民
(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— ),教授,硕士生导师,主要研究方向为敏感器件、电子信息薄膜、半导体测试技术等。
责任编辑:时 雯