基于软件Keyladder的NB-IoT产品安全启动升级探索
2019-03-21缑步清
□郭 凯 缑步清
探索基于软件Keyladder的NB-IoT产品安全启动升级,主要是针对窄带物联网(NB-IoT)的3GPP LTE R13版本标准体系,基于物联网发展对网络安全以及软件升级启动和合法性校验的要求,开发与设计新的基于NB-IoT终端的安全启动和升级方法,确保窄带物联网技术(NB-IoT)的安全启动和升级。本文基于软件Keyladder的性能,针对NB-IOT技术与产品运行的安全与风险现状,阐述如何在软件Keyladder上实现NB-IoT产品安全启动升级。
一、系统模块设计
现阶段的NB-IoT产品安全性不强,实施强调细化NB-IoT软件启动机制,科学设置安全校验法这套解决方案,可以使用高中低的配置和自适应性,解决当下物联网产品安全启动与校验升级存在的安全问题。基于软件Keyladder实现NB-IoT产品的安全启动升级,是利用软件实现的Keyladder作为NB-IoT终端的启动加密方式,按照信息安全分割执行程度,将原有的启动机制细化成APP1和APP2,根据内存资源由原来的软件裁剪出来的APP1,在Flash执行,App2在内存执行用来做签名校验[1]。将终端软件分割成两段,裁剪出从Flash直接启动的APP1,与安全相关需要解密在内存里执行的APP2,并提供一种根据产品性能可配置的安全校验方法,确保终端产品的安全性和防抄版的能力。具体过程如下。
(一)切割程序,组建小模块。利用软件Keyladder实现信息的多级加解密,然后使用程序编译文件,将启动程序切割成从Flash执行的APP1、在内存中实现信息加密与执行的APP2。
(二)设置信息模块。信息模块主要是包含了APP1和APP2在Flash的地址和长度信息、数据块描述区地址和长度信息、安全配置模块地址和长度信息,完善组件信息模块,是要为确保信息的完整性。
(三)提高模块的安全性。在APP1与APP2中配置安全模块,使用加解密算法配置(AES、TDES、RSA等)、完整性校验算法配置(SHA、MD5、CRC等),使用软件Keyladder实现设备版本信息、配置版本信息的多级加密,保护产品信息。
(四)设置数据块描述区。数据块描述区的设定,在于将升级数据进行分组与加密标识,通过数据块分组数、数据块加密标识以及对应采用的加密算法标识和数据加密key,标识数据块校验标识,使用校验算法[3]。
(五)设置打包工具。采用程序打包工具对APP1与APP2内的数据与程序进行打包处理,按照百分比配置APP1的校验算法配置和确定APP1的校验比例;配置APP2的加密算法和确定APP2的加密比例,APP2的校验算法配置和APP2的校验比例(按百分比计),确保软件Keyladder的加密使用,确保解密数据块描述区和安全配置模块的root key的使用。
二、启动流程设计
比对常规的程序启动,基于软件Keyladder的NB-IoT产品设计中,通过数据描述区的加密和校验百分比,解密对应的数据,完成启动合法性校验,完成APP1与APP2的配合运行。具体环节如下。第一,上电启动后初始化芯片;第二,用根密钥解密组件信息,解析获取APP1、APP2、安全配置、数据块描述区在flash中存储地址、大小;第三,根据组件信息中提取的安全策略地址和大小,用根密钥解密安全配置数据,解析获取本地安全配置版本,产品ID,支持的加密和校验方式等;第四,根据组件信息中提取数据块描述区地址和大小,用root key解密数据块描述区后,获取APP1及APP2的分组数、各组加密方式、校验方式、加密密钥、各组校验值等;第五,解析数据,先解析APP1分组数据,由APP1校验进行校验。先用设备ID解密APP2,然后并根据数据块描述区的校验比例配置进行逐块校验,校验成功后将APP2加载到指定内存地址进行校验与启动操作;第六,如果APP1或是APP2数据校验失败则复位重启;第七,APP1和APP2的签名校验都成功,则跳转到APP1,程序开始从APP1 flash地址执行,根据裁剪信息加载内存中的APP2。
三、升级流程设计
基于软件Keyladder的NB-IoT产品安全升级的方案,是通过打包工具将配置好校验加密比例的APP1和APP2以及用RootKey加密的安全配置信息、数据描述区等数据打包成一个升级文件,再对整个升级分解做RSA和SHA的数字签名计算,确保升级软件的合法性和完整性,具体环节如下:第一,将打包的升级软件通过NB-IoT的私有协议下载到本机的OTA临时存放区后,设置升级标志重启。第二,程序启动后从OTA临时存放区获取升级数据,并用根密钥解密数据头信息,获取打包数据的大小、签名,然后用BOOT模块的公钥对整个升级数据做签名校验。第三,RootKey解密组件信息,数据块描述区,以及安全配置信息;解析组件信息,获取APP1、APP2、安全策略、数据块描述区在flash中存储地址、大小;解析安全策略,获取安全策略版本、产品ID、支持加密方式、支持校验方式,跟本地安全策略进行对比,检查版本是否增加,产品ID是否匹配,加密校验方式是否匹配;解析数据块描述区,获取APP1及APP2的分组数、各组加密方式、校验方式、加密密钥、各组校验值等。第四,校验APP1和APP2的合法性和完整性,根据设备ID信息二次加密APP2,将所有数据按组件信息的地址升级Flash的指定区域。第五,完成升级后复位重启跳转到启动流程。
四、结语
综上所述,针对目前的NB-IOT软件终端,要确保软件的安全校验,第一种,将终端软件切割成两段,将安全启动程序分割成以flash直接启动的APP1;第二种是进行加密内存、执行安全操作的APP2,利用两种App特点与功能,设计产品性能的安全校验方法,以提高终端产品的安全性与防抄版能力,实现产品安全升级。