应用程序文件打包方法、安装方法及启动方法与流程

文档序号:17856985发布日期:2019-06-11 22:37阅读:459来源:国知局

本发明涉及软件控制技术,特别涉及应用程序文件的打包技术、应用程序安装技术和应用程序启动技术。



背景技术:

目前存在一些终端设备,由于其内存ddr的存储大小、flash存储的大小和主芯片性能等的限制(通常flash存储大小远远超过内存ddr),因此无法实现对整个软件进行加密存储和启动,例如nb-iot终端设备。对于上述问题,目前通常采用的是软件明文存储并直接从flash启动的方式,导致终端设备的软件容易被篡改、窃取等,软件安全性较差。



技术实现要素:

本发明为解决现有终端设备软件安全性较差的问题,提供一种应用程序文件打包方法、安装方法及启动方法。

为解决上述问题,本发明采用的技术方案是:

应用程序文件打包方法,包括:

使用程序切割工具将应用程序文件切割为子文件一和子文件二,所述子文件一不需要加密保护,子文件二需要加密保护;

打包工具根据预设的子文件一的校验参数生成子文件一的校验值;

打包工具根据预设的子文件二的校验参数生成子文件二的校验值,根据预设的子文件二的加密参数使用随机密钥对子文件二进行加密;

打包工具组装应用程序文件的配置信息,并使用预设的根密钥对配置信息进行加密;

打包工具将子文件一、子文件二和配置信息打包生成打包文件,然后计算出打包文件的签名信息;

打包工具将打包文件的大小和签名信息合成头信息,并使用根密钥对头信息加密后将头信息插入到打包文件中。

作为进一步优化,所述子文件一的校验参数包括子文件一的分组标志、各组校验方式和校验占比,打包工具根据子文件一的校验占比,随机产生子文件一需要校验的多个数据块,并根据子文件一的分组标志对子文件一需要校验的数据块分组,并按各组校验方式生成各个数据块的校验值;

所述子文件二的校验参数包括子文件二的分组标志、各组校验方式和校验占比,打包工具根据子文件二的校验占比,随机产生子文件二需要校验的多个数据块,并根据子文件二的分组标志对子文件二需要校验的数据块分组,并按各组校验方式生成各个数据块的校验值;

所述子文件二的加密参数包括子文件二的各组加密方式和加密占比,打包工具根据子文件二的加密占比,随机产生子文件二需要加密的多个数据块,并根据子文件二的分组标志对需要加密的数据块分组,并按各组加密方式,用打包工具配置的随机密钥对各个数据块进行加密。

作为进一步优化,所述配置信息包括数据描述区数据、安全配置数据和组件信息数据,所述数据描述区数据包括子文件一的校验参数和各个数据块的校验值以及子文件二的校验参数、各个数据块的校验值、加密参数和各个数据块的加密密钥,所述安全配置数据包括应用程序文件的安全策略版本、加密方式和校验方式,所述组件信息数据包括子文件一、子文件二、安全配置数据和数据描述区数据各自在终端设备flash中的存储地址和大小。

作为进一步优化,所述安全配置数据还包括下载打包文件的终端设备的id。

应用程序安装方法,基于上述的应用程序文件打包方法,待安装应用程序的终端设备中预设有启动模块,所述启动模块用于安装和/或启动应用程序,启动模块中预设有应用程序文件打包时所用的根密钥;

终端设备每次安装应用程序时,包括:启动模块读取打包文件,并用根密钥解密头信息,获取打包文件的大小和签名信息,然后校验签名信息,若校验失败则表示本次安装失败并退出本次安装,若校验成功则用根密钥解密配置信息,然后判断配置信息是否与终端设备的相关参数相匹配,若不匹配则表示本次安装失败并退出本次安装,若匹配则根据配置信息解析子文件一和子文件二,若子文件一和子文件二中任一个解析失败,则表示本次安装失败并退出本次安装,若子文件一和子文件二都解析成功,则根据配置信息将子文件一、子文件二和配置信息更新到终端设备相应的flash区域中,本次安装成功。

作为进一步优化,所述子文件一的解析方法包括:

获取数据描述区数据中子文件一的校验参数和各个数据块的校验值,并根据安全配置数据判断终端设备是否支持子文件一的校验方式,若支持则根据子文件一的校验参数分别对子文件一需要校验的各个数据块计算校验值,若子文件一需要校验的每个数据块经计算得到的校验值都分别与该数据块在打包时得到的校验值相同,则子文件一解析成功,否则解析失败;

所述子文件二的解析方法包括:

获取数据描述区数据中子文件二的校验参数、各个数据块的校验值、加密参数和各个数据块的加密密钥,并根据安全配置数据判断终端设备是否支持子文件二的校验方式和加密方式,若校验方式和加密方式都支持,则根据数据描述区数据中子文件二的加密参数和各个数据块的加密密钥对子文件二中加密的各个数据块解密,然后根据子文件二的校验参数分别对子文件二需要校验的各个数据块计算校验值,若子文件二需要校验的每个数据块经计算得到的校验值都分别与该数据块在打包时得到的校验值相同,则子文件二解析成功,否则解析失败。

作为进一步优化,所述子文件二解析成功后,用安全配置数据中的终端设备的id作为密钥对子文件二加密。

应用程序启动方法,基于上述的应用程序安装方法,包括:

启动模块用根密钥解密终端设备flash中的配置信息,然后根据配置信息解析终端设备flash中的子文件一和子文件二,若子文件一和子文件二中任一个解析失败,则重启应用程序,若子文件一和子文件二都解析成功,则将子文件二加载到预设的终端设备的内存地址,然后根据子文件一在终端设备中的flash地址,直接从flash执行子文件一,并根据子文件二在终端设备中的内存地址,从内存执行子文件二。

作为进一步优化,解析终端设备flash中的子文件二时,先用终端设备的id解密子文件二,解密后再根据配置信息解析子文件二。

作为进一步优化,上述启动方法还包括检测应用程序是否需要升级,若需要升级则从服务器下载应用程序升级数据的打包文件,下载完成后进行安装,安装失败或安装成功后重启应用程序。

有益效果是:本发明在对应用程序文件进行打包时将文件分割为与安全相关需要加密的文件和不需要进行加密的文件,然后和相关配置信息一起打包生成打包文件;终端设备基于上述打包文件的组成结构安装应用程序,启动应用程序时将加密的文件加载到内存执行,未加密的文件直接从flash启动;由于需要进行加密存储和启动的文件只是整个软件的一部分,因此运行时所占用的各种资源较少,使得对于内存、flash和主芯片性能等有限制的终端设备来说,在不增加硬件成本的同时也能够实现软件的加密存储和启动,软件安全性大大提高。本发明特别适用于nb-iot终端设备。

具体实施方式

下面结合实施例,进一步说明本发明的技术方案。

本发明的技术方案是:

应用程序文件打包方法,包括:

使用程序切割工具将应用程序文件切割为子文件一和子文件二,所述子文件一不需要加密保护,子文件二需要加密保护;

打包工具根据预设的子文件一的校验参数生成子文件一的校验值;

打包工具根据预设的子文件二的校验参数生成子文件二的校验值,根据预设的子文件二的加密参数使用随机密钥对子文件二进行加密;

打包工具组装应用程序文件的配置信息,并使用预设的根密钥对配置信息进行加密;

打包工具将子文件一、子文件二和配置信息打包生成打包文件,然后计算出打包文件的签名信息;

打包工具将打包文件的大小和签名信息合成头信息,并使用根密钥对头信息加密后将头信息插入到打包文件中。

上述方法通过程序切割工具将应用程序编译文件切割成不需要加密的子文件一和需要加密的子文件二,并根据子文件一和子文件二的相关信息,组装生成整个应用程序文件的打包文件。

应用程序安装方法,基于上述的应用程序文件打包方法,待安装应用程序的终端设备中预设有启动模块,所述启动模块用于安装和/或启动应用程序,启动模块中预设有应用程序文件打包时所用的根密钥;

终端设备每次安装应用程序时,包括:启动模块读取打包文件,并用根密钥解密头信息,获取打包文件的大小和签名信息,然后校验签名信息,若校验失败则表示本次安装失败并退出本次安装,若校验成功则用根密钥解密配置信息,然后判断配置信息是否与终端设备的相关参数相匹配,若不匹配则表示本次安装失败并退出本次安装,若匹配则根据配置信息解析子文件一和子文件二,若子文件一和子文件二中任一个解析失败,则表示本次安装失败并退出本次安装,若子文件一和子文件二都解析成功,则根据配置信息将子文件一、子文件二和配置信息更新到终端设备相应的flash区域中,本次安装成功。

上述安装方法基于上述打包文件的组成结构,安装时根据密钥及配置信息解析打包文件并进行相关校验,将打包文件中的文件一、子文件二和配置信息写入终端设备的flash中,完成应用程序的安装。

应用程序启动方法,基于上述的应用程序安装方法,包括:

启动模块用根密钥解密终端设备flash中的配置信息,然后根据配置信息解析终端设备flash中的子文件一和子文件二,若子文件一和子文件二中任一个解析失败,则重启应用程序,若子文件一和子文件二都解析成功,则将子文件二加载到预设的终端设备的内存地址,然后根据子文件一在终端设备中的flash地址,直接从flash执行子文件一,并根据子文件二在终端设备中的内存地址,从内存执行子文件二。

上述启动方法基于上述安装完成的应用程序,启动时根据密钥及配置信息解析子文件一和子文件二,未加密的子文件一直接从flash启动,加密的子文件二加载到内存启动。

对上述方法进行进一步优化,具体可以是:

应用程序文件打包时,子文件一的校验参数可以包括子文件一的分组标志、各组校验方式和校验占比,打包工具根据子文件一的校验占比,随机产生子文件一需要校验的多个数据块,并根据子文件一的分组标志对子文件一需要校验的数据块分组,并按各组校验方式生成各个数据块的校验值;子文件二的校验参数可以包括子文件二的分组标志、各组校验方式和校验占比,打包工具根据子文件二的校验占比,随机产生子文件二需要校验的多个数据块,并根据子文件二的分组标志对子文件二需要校验的数据块分组,并按各组校验方式生成各个数据块的校验值;子文件二的加密参数可以包括子文件二的各组加密方式和加密占比,打包工具根据子文件二的加密占比,随机产生子文件二需要加密的多个数据块,并根据子文件二的分组标志对需要加密的数据块分组,并按各组加密方式,用打包工具配置的随机密钥对各个数据块进行加密。基于上述子文件一和子文件二的相关参数,配置信息可以包括数据描述区数据、安全配置数据和组件信息数据,数据描述区数据可以包括子文件一的校验参数和各个数据块的校验值以及子文件二的校验参数、各个数据块的校验值、加密参数和各个数据块的加密密钥,安全配置数据可以包括应用程序文件的安全策略版本、加密方式和校验方式,组件信息数据包括子文件一、子文件二、安全配置数据和数据描述区数据各自在终端设备flash中的存储地址和大小。基于上述应用程序文件打包时具有的相关数据,在安装应用程序时,子文件一的解析方法可以包括:获取数据描述区数据中子文件一的校验参数和各个数据块的校验值,并根据安全配置数据判断终端设备是否支持子文件一的校验方式,若支持则根据子文件一的校验参数分别对子文件一需要校验的各个数据块计算校验值,若子文件一需要校验的每个数据块经计算得到的校验值都分别与该数据块在打包时得到的校验值相同,则子文件一解析成功,否则解析失败。子文件二的解析方法可以包括:获取数据描述区数据中子文件二的校验参数、各个数据块的校验值、加密参数和各个数据块的加密密钥,并根据安全配置数据判断终端设备是否支持子文件二的校验方式和加密方式,若校验方式和加密方式都支持,则根据数据描述区数据中子文件二的加密参数和各个数据块的加密密钥对子文件二中加密的各个数据块解密,然后根据子文件二的校验参数分别对子文件二需要校验的各个数据块计算校验值,若子文件二需要校验的每个数据块经计算得到的校验值都分别与该数据块在打包时得到的校验值相同,则子文件二解析成功,否则解析失败。

上述公开了一种应用程序文件打包时对具体参数的处理方式以及安装应用时对打包文件中具体参数的处理方式,通过上述校验及加密方式,使得应用程序的安全性更好。

进一步的,应用程序文件打包时,安全配置数据还可以包括下载打包文件的终端设备的id。基于上述id信息,安装应用程序时,当子文件二解析成功后,用安全配置数据中的终端设备的id作为密钥对子文件二加密,将经过该id加密后的子文件二更新到终端设备相应的flash区域中。对应于上述经过设备id加密的子文件二,应用程序启动时,对终端设备flash中子文件二的解析,需先用终端设备的id解密子文件二,解密后再根据配置信息解析子文件二。

上述安装时通过终端设备id对子文件二再加密,以确保需要加密的子文件二与终端设备一一对应,提高软件安全性。

进一步的,上述启动方法还包括检测应用程序是否需要升级,若不需要升级则进行正常启动,若需要升级则从服务器下载应用程序升级数据的打包文件,下载完成后进行安装,安装失败或安装成功后重启应用程序。

实施例

下面结合实施例,进一步说明本发明的技术方案。

终端设备的应用程序开始启动后,检测应用程序是否需要升级,本例中假设终端设备的应用程序需要升级,则终端设备向服务器发出下载应用程序升级文件的请求。

服务器响应终端设备的下载请求,对应用程序升级文件进行打包,打包过程采用以下步骤:

s11、使用程序切割工具将应用程序升级文件切割为子文件一和子文件二,所述子文件一不需要加密保护,子文件二需要加密保护。

s12、打包工具根据预设的子文件一的校验参数生成子文件一的校验值。具体操作是:子文件一的校验参数有子文件一的分组标志、各组校验方式和校验占比,打包工具根据子文件一的校验占比,随机产生子文件一需要校验的多个数据块,并根据子文件一的分组标志对子文件一需要校验的数据块分组,并按各组校验方式生成各个数据块的校验值。

s13、打包工具根据预设的子文件二的校验参数生成子文件二的校验值,根据预设的子文件二的加密参数使用随机密钥对子文件二进行加密。具体操作是:子文件二的校验参数有子文件二的分组标志、各组校验方式和校验占比,打包工具根据子文件二的校验占比,随机产生子文件二需要校验的多个数据块,并根据子文件二的分组标志对子文件二需要校验的数据块分组,并按各组校验方式生成各个数据块的校验值;子文件二的加密参数有子文件二的各组加密方式和加密占比,打包工具根据子文件二的加密占比,随机产生子文件二需要加密的多个数据块,并根据子文件二的分组标志对需要加密的数据块分组,并按各组加密方式,用打包工具配置的随机密钥对各个数据块进行加密。

s14、打包工具组装应用程序升级文件的配置信息,并使用预设的根密钥对配置信息进行加密。具体操作是:需组装的配置信息由数据描述区数据、安全配置数据和组件信息数据组成;数据描述区数据有子文件一的校验参数和各个数据块的校验值以及子文件二的校验参数、各个数据块的校验值、加密参数和各个数据块的加密密钥;安全配置数据有应用程序升级文件的安全策略版本、加密方式、校验方式和请求下载打包文件的终端设备的id;组件信息数据有子文件一、子文件二、安全配置数据和数据描述区数据各自在终端设备flash中的存储地址和大小。

s15、打包工具将子文件一、子文件二和配置信息打包生成应用程序升级文件的打包文件,然后采用sha256加rsa算法计算出打包文件的签名信息。

s16、打包工具将打包文件的大小和签名信息合成头信息,并使用根密钥对头信息加密后将头信息插入到打包文件中。

本例采用ota升级技术,应用程序升级文件打包完成后,终端设备从服务器下载该打包文件到ota临时存放区,下载完成后进行安装,本例的终端设备中预设有启动模块,启动模块用于安装和启动应用程序,启动模块中预设有应用程序升级文件打包时所用的根密钥,以及用于校验打包文件的签名信息的公钥,对应用程序升级文件的安装采用以下步骤:

s21、终端设备的启动模块读取ota临时存放区的打包文件,并用根密钥解密头信息,获取打包文件的大小和签名信息。

s22、启动模块利用公钥校验签名信息,若校验失败则表示本次安装失败并退出本次安装,若校验成功则用根密钥解密配置信息,然后执行s23。

s23、判断配置信息中的应用程序升级文件的安全策略版本是否与终端设备支持的安全策略版本相匹配,若不匹配则表示本次安装失败并退出本次安装,若匹配则执行s24。

s24、解析子文件一。具体操作是:获取数据描述区数据中子文件一的校验参数和各个数据块的校验值,并根据安全配置数据中应用程序升级文件的校验方式判断终端设备是否支持子文件一的校验方式,若支持则根据子文件一的校验参数分别对子文件一需要校验的各个数据块计算校验值,若子文件一需要校验的每个数据块经计算得到的校验值都分别与该数据块在打包时得到的校验值相同,则子文件一解析成功,否则解析失败并退出本次安装。

s25、解析子文件二。具体操作是:获取数据描述区数据中子文件二的校验参数、各个数据块的校验值、加密参数和各个数据块的加密密钥,并根据安全配置数据中应用程序升级文件的校验方式和加密方式判断终端设备是否支持子文件二的校验方式和加密方式,若校验方式和加密方式都支持,则根据数据描述区数据中子文件二的加密参数和各个数据块的加密密钥对子文件二中加密的各个数据块解密,然后根据子文件二的校验参数分别对子文件二需要校验的各个数据块计算校验值,若子文件二需要校验的每个数据块经计算得到的校验值都分别与该数据块在打包时得到的校验值相同,则子文件二解析成功,否则解析失败并退出本次安装。子文件二解析成功后用安全配置数据中的终端设备的id作为密钥对子文件二加密。

s26、根据组件信息数据中子文件一、子文件二、安全配置数据和数据描述区数据各自在终端设备flash中的存储地址和大小,将子文件一、安全配置数据、数据描述区数据和经终端设备id加密后的子文件二更新到终端设备相应的flash区域中,安装成功。

s27、重启应用程序。

本例中假设应用程序安装成功,则重启应用程序后,检测到当前安装的应用程序不需要升级。然后启动模块用根密钥解密终端设备flash中的配置信息,然后根据配置信息解析终端设备flash中的子文件一和子文件二,子文件一和子文件二的解析过程分别参照上述s24和s25,这里不再赘述。若子文件一和子文件二中任一个解析失败,则重启应用程序,若子文件一和子文件二都解析成功,则将子文件二加载到预设的终端设备的内存地址,然后根据子文件一在终端设备中的flash地址,直接从flash执行子文件一,并根据子文件二在终端设备中的内存地址,从内存执行子文件二。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1