安全的多固件融合系统及多固件融合控制方法
技术领域
本发明属于电子电路
技术领域
,涉及一种多固件系统,尤其涉及一种安全的多固件融合系统及多固件融合控制方法。背景技术
随着嵌入式系统与半导体产业的飞速发展,越来越多的系统中引入了多固件架构,即一个具备完整功能系统中的固件,是由多个部分组成,而每一个固件的开发者可能是来自不同的公司,他们之间定义好固件应用程序接口,各自发挥擅长的部分,通过这种合作方式,共同实现产品功能的开发,加速产品上市时间,提高各自的竞争力。
典型的多固件融合案例包括智能门锁案例、家电厂商与芯片厂商合作案例等。在智能门锁案例中,指纹算法公司提供指纹算法固件,方案公司基于指纹算法固件,实现整个智能门锁方案。在家电厂商与芯片厂商合作案例中,芯片厂商提供芯片驱动固件,家电厂商基于芯片厂商的芯片和驱动固件,实现家电完整功能。
然而在现有的多固件架构中,存在以下问题。
(1)固件升级复杂,升级耗时长。
现有架构的多固件融合系统中,由于系统中的固件使用的是单一系统地址映射,固件之间使用的运行地址有一个相对偏移,从而要求存储地址也要存在与之相同的地址偏移,这样当一个固件升级后,存储地址发生变化,为了保持这些固件的可用性,其它固件同样要升到到与之相对应的地址偏移处。在该系统中,只要有一个固件需要升级,其它固件都需要与之一起挪动位置,不仅增加了固件升级的复杂度,而且延长了固件升级时间,更增大了固件升级失败的风险。
现有系统的缺点详细举例说明如下,假设固件X其运行地址空间起始地址为0x2300000,固件Xa位于存储器0x00100000地址处,固件Ya位于存储器0x00180000地址处,示意如图1所示。
为使系统能正常运行,系统映射关系为:运行地址0x23000000à存储地址0x00100000,由于系统中只有一个地址映射器,则固件Ya的运行地址空间起始地址为0x23080000,这也意味着,固件Xa调用固件Ya使用的起始地址空间为0x23080000。
假设现在固件Xa需要升级到Xb,出于稳定性考虑,固件升级时候,都会将新的固件写到另一个区域,这里假设固件Xa升级后写入的存储器地址为0x00200000,这时候如果新固件Xb要正常工作,需要修改地址映射为:运行地址0x23000000à存储地址0x00200000,但是这时新固件Xb调用固件Y使用的地址应该仍是0x23080000,根据映射关系,固件Y对应的存储器地址应该是0x00280000,由图2可见,此处可能不存在固件Yb或者存在的固件Yb并不一定是最新的固件,需要从固件Xa升级之前的区域,将固件Ya从0x00180000拷贝到0x00280000区域,才能使系统正常运行,这样不仅增加了系统升级复杂度,延长了升级的时间,也增大了由于固件拷贝带来的失败风险。
(2)安全性差。
以家电厂商与芯片厂商合作为例,为了充分发挥不同厂商的优势,家电厂商希望芯片厂商直接提供芯片的驱动固件,而家电厂商只要定义好驱动调用接口,可以不用关心驱动厂商的具体实现方式,把重点放在应用固件的逻辑功能和云应用等功能上,不仅如此,家电厂商在更换芯片厂商时,只要新的芯片厂商提供具备相同功能的驱动接口即可,家电厂商的应用固件可以不用修改,这样可大大降低更换成本。但是在传统的多固件融合系统中,家电厂商固件的安全性是无法保证的,因为芯片厂商可以在厂商固件中植入后台代码,在家电厂商调用芯片厂商固件接口时,去获取家电厂商的核心代码或者数据,对家电厂商固件的安全性造成了很大的风险。
再以门锁应用为例,门锁产品中的固件通常分为两个,一个是指纹算法固件,一个是应用固件,指纹算法固件主要完成指纹的特征提取,特征存储和特征匹配等核心指纹算法,应用固件主要完成指纹门锁的显示,设定,开锁等其它功能。在该系统中,指纹算法固件作为核心算法固件,不希望被复制克隆。传统的做法是将固件加密,但是在传统的多固件融合系统中,算法固件和应用固件是使用同一个密钥,作为整体加密,虽然解决了算法固件无法被第三方窃取的风险,但是无法解决算法固件被应用固件读取的问题,算法固件仍然存在被应用固件窃取的风险,指纹算法固件的知识产权利益无法得到保障。
有鉴于此,如今迫切需要设计一种新的多固件融合系统,以便克服现有多固件融合系统存在的上述至少部分缺陷。
发明内容
本发明提供一种安全的多固件融合系统及多固件融合控制方法,可降低多固件融合系统中,固件升级的复杂性,提高系统的稳定性和多固件融合的安全性。
为解决上述技术问题,根据本发明的一个方面,采用如下技术方案:
一种安全的多固件融合系统,所述多固件融合系统包括:至少一处理器、存储介质、存储介质控制器、多地址映射模块、运行地址空间检测模块、访问控制模块、密钥存储控制实体以及解密模块。
存储介质用以存储各个应用固件。
存储介质控制器用以根据处理器或者其它模块的访问请求,完成存储介质上应用固件或数据的读取。
多地址映射模块用以完成不同应用固件的地址空间映射,将处理器访问应用固件的逻辑运行地址转换成应用固件的存储地址,每个应用固件都有独立的运行地址空间。
运行地址空间检测模块用以根据处理器当前运行的地址和执行的指令,判定当前处在的地址空间。
访问控制模块用以设定地址空间的访问权限;在使能以后用以判断当前的访问是否合法。
密钥存储控制实体用以存储应用固件加密密钥和应用固件加解密控制,并提供密钥的读写保护机制,保障密钥的安全性。
解密模块用以完成对指定存储区域的代码进行解密。
作为本发明的一种实施方式,当一个应用固件升级后,所述多地址映射模块只更改升级应用固件的运行地址和存储地址的映射关系,其它应用固件数据保持不变。
作为本发明的一种实施方式,所述访问控制模块用以根据访问控制白名单或者黑名单的设定,结合运行地址空间检测模块的检测结果,判断当前的访问是否合法。
作为本发明的一种实施方式,所述密钥存储控制实体存储的密钥在工厂随应用固件一起烧录,当系统运行后,能被解密模块使用,完成应用固件的解密。
作为本发明的一种实施方式,所述解密模块中包含多个地址段解密控制单元,能实现不同的地址段使用不同的解密密钥。
根据本发明的另一个方面,采用如下技术方案:一种安全的多固件融合控制方法,所述多固件融合控制方法包括:
存储介质存储各个应用固件。
存储介质控制器根据处理器或者其它模块的访问请求,完成存储介质上应用固件或数据的读取。
多地址映射模块完成不同应用固件的地址空间映射,将处理器访问应用固件的逻辑运行地址转换成应用固件的存储地址,每个应用固件都有独立的运行地址空间。
运行地址空间检测模块根据处理器当前运行的地址和执行的指令,判定当前处在的地址空间。
访问控制模块设定地址空间的访问权限;在使能以后判断当前的访问是否合法。
密钥存储控制实体存储应用固件加密密钥和应用固件加解密控制,并提供密钥的读写保护机制,保障密钥的安全性。
解密模块完成对指定存储区域的代码进行解密。
作为本发明的一种实施方式,当一个应用固件升级后,所述多地址映射模块只更改升级应用固件的运行地址和存储地址的映射关系,其它应用固件数据保持不变。
作为本发明的一种实施方式,所述访问控制模块根据访问控制白名单或者黑名单的设定,结合运行地址空间检测模块的检测结果,判断当前的访问是否合法。
作为本发明的一种实施方式,所述密钥存储控制实体存储的密钥在工厂随应用固件一起烧录,当系统运行后,能被解密模块使用,完成应用固件或者数据的解密。
作为本发明的一种实施方式,所述解密模块中包含多个地址段解密控制单元,能实现不同的地址段使用不同的解密密钥。
本发明的有益效果在于:本发明提出的安全的多固件融合系统及多固件融合控制方法,可降低多固件融合系统中,固件升级的复杂性,提高系统的稳定性和多固件融合的安全性。
本发明可以增加多固件融合系统中,固件之间的访问安全性,保障固件的数据安全和系统安全。此外,本发明还可以保护多固件融合系统中,各个固件的知识产权,防止固件被克隆复制。
附图说明
图1为现有多固件系统固件升级前处理器运行地址的示意图。
图2为现有多固件系统固件升级后处理器运行地址的示意图。
图3为本发明一实施例中多固件融合系统的组成示意图。
图4为本发明一实施例中多固件融合系统的组成示意图。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
为了进一步理解本发明,下面结合实施例对本发明优选实施方案进行描述,但是应当理解,这些描述只是为进一步说明本发明的特征和优点,而不是对本发明权利要求的限制。
该部分的描述只针对几个典型的实施例,本发明并不仅局限于实施例描述的范围。相同或相近的现有技术手段与实施例中的一些技术特征进行相互替换也在本发明描述和保护的范围内。
说明书中各个实施例中的步骤的表述只是为了方便说明,本申请的实现方式不受步骤实现的顺序限制。
说明书中的“连接”既包含直接连接,也包含间接连接,如通过一些有源器件、无源器件或电传导媒介进行的连接;还可包括本领域技术人员公知的在可实现相同或相似功能目的的基础上通过其他有源器件或无源器件的连接,如通过开关、跟随电路等电路或部件的连接。
本发明揭示了一种安全的多固件融合系统,图3为本发明一实施例中多固件融合系统的组成示意图;请参阅图3,所述安全的多固件融合系统包括:至少一CPU1(处理器)、存储介质实体2(也可以称之为存储介质)、存储介质控制器3、多地址映射模块4、运行地址空间检测模块5、访问控制模块6、密钥存储控制实体7(如可以为EFUSE存储控制实体,实体指比如EFUSE或者OTP)及解密模块8。
所述存储介质2用以存储各个应用固件。所述存储介质控制器3用以根据CPU1或者其它模块的访问请求,完成存储介质上应用固件或数据的读取。
所述多地址映射模块4用以完成不同应用固件的地址空间映射,将处理器访问应用固件的逻辑运行地址转换成应用固件的存储地址,每个应用固件都有独立的运行地址空间。在本发明的一实施例中,当一个应用固件升级后,所述多地址映射模块4只更改升级应用固件的运行地址和存储地址的映射关系,其它应用固件数据保持不变。
所述运行地址空间检测模块5用以根据处理器当前运行的地址和执行的指令,判定当前处在的地址空间。
所述访问控制模块6用以设定地址空间的访问权限;在使能以后用以判断当前的访问是否合法。在本发明的一实施例中,所述访问控制模块6用以根据访问控制白名单或者黑名单的设定,结合运行地址空间检测模块的检测结果,判断当前的访问是否合法。
所述密钥存储控制实体7用以存储应用固件加密密钥和应用固件加解密控制,并提供密钥的读写保护机制,保障密钥的安全性。在本发明的一实施例中,所述密钥存储控制实体7存储的密钥在工厂随应用固件一起烧录,当系统运行后,能被解密模块使用,完成应用固件的解密。
所述解密模块8用以完成对指定存储区域的代码进行解密。在本发明的一实施例中,所述解密模块8中包含多个地址段解密控制单元,能实现不同的地址段使用不同的解密密钥。
基于该系统中的多地址映射模块,由于各个固件之间使用独立的地址空间,一个固件升级后,只要对该固件使用的地址空间重映射即可,不会影响到其它固件的地址空间映射。可以有效解决固件升级过程中存在的上述问题,简化升级流程,提高产品的稳定性。基于该系统的升级流程原理及示意如下:
以系统中存在两个固件,其运行地址起始空间分别为0x23000000和0x25000000为例,详细介绍其升级与地址映射关系。
在初始状态,固件Xa位于存储地址0x00100000处,固件Ya位于存储地址0x00180000处,映射关系如表1所示:
表1
当固件Xa升级后,新的固件位于存储器0x00200000地址处,此时只要将多地址映射模块0,固件偏移由0x00100000改为为0x00200000,则新固件Xb的执行地址仍为0x23000000,保持不变,固件Ya的固件偏移仍然设定为0x00180000,固件Ya的执行起始地址仍为0x25000000,升级后的固件Xb调用固件Ya仍然使用地址0x25000000段即可完成调用,固件Xa升级为固件Xb后的地址映射关系如表2所示:
表2
同理,如果此时固件Ya升级到存储器0x00280000地址处,那么只要修改Yb的硬件偏移为0x00280000即可,此时固件Xb仍然使用地址0x25000000段访问固件Yb,从而保证了固件X和固件Y可以独立的进行升级而不影响整个系统的整个功能。
基于该系统的访问控制模块,可以有效解决固件之间的安全访问问题,以家电厂商固件和芯片厂商固件融合系统为例,假设家电厂商固件为固件X,运行地址空间起始地址为0x23000000,芯片厂商固件为固件Y,运行地址空间起始地址为0x25000000,当家电厂商固件X要限制芯片厂商固件Y访问时,只要在该系统中的访问控制模块中设定地址空间0x23000000的访问白名单地址段中,不包括0x25000000地址段即可。假设芯片厂商固件发起了对家电厂商应用固件的访问,即访问了0x23000000地址段,该系统中的访问控制模块检测到当前的运行地址空间为0x25000000段,不在0x23000000地址段访问权限的白名单中,即可终止系统对0x23000000地址段的访问操作,例如复位系统或者禁止掉总线的时钟等。采用黑名单机制同样如此。
基于该系统的访问控制模块和解密模块,可以有效解决固件代码容易被克隆复制问题。以智能门锁应用中,指纹算法固件需要保护自身代码安全,防止第三方克隆代码为例,应用程序可以根据自身的安全需求,选择是否加密,这里以应用固件无需加密为例。假设算法固件Y的执行地址空间为0x25000000,留给应用固件调用的API大小为4K,即,0x25000000-0x25000FFF区域为非安全区域,是可以公开的算法API接口,0x25001000起始处是安全区域,存放的是算法核心代码,不可以被窃取;应用固件X的执行地址空间为0x23000000,基于该系统,一种可行的设计方案包括如下方案。
(1)将指纹算法固件Y核心代码加密后烧录到程序存储器0x00180000地址处,将解密密钥烧录到系统的EFUSE区域,并对该区域进行读写保护,防止解密密钥泄露,同时,通过该系统的解密模块,设定指纹算法固件的解密密钥,以及解密区域0x25001000,解密区域长度可按照固件实际大小设定。
(2)将应用算法固件X烧录到程序存储器0x00100000地址处,应用固件使用的运行地址空间为0x23000000。
(3)使能系统的访问控制模块,设定0x25000000-0x25000FFF区域可以被其它运行地址空间的代码访问,而0x25001000起始地址区域只可以被0x25000000起始区域代码访问,区域大小可按照固件实际大小设定。
(4)应用固件与算法固件的运行地址与存储地址映射关系如表3所示:
表3
图4为本发明一实施例中多固件融合系统的设计方案示意图,请参阅图4,在本发明的一实施例中,在该方案中,受限于访问控制模块的安全设定,应用固件无法直接使用0x25001000开始的地址空间访问算法固件,从而无法直接通过软件方式读取算法代码,应用固件只能通过使用0x25000000-0x25000FFF地址空间的API接口间接执行算法代码。由于存储器的核心算法固件被加密,第三方无法通过其它方式获取解密后的算法固件,应用系统在调用算法API后,进入的执行空间是0x25000000-0x25000FFF,是0x25001000段允许的运行地址空间,访问请求可以正常发出,当访问请求传递到解密模块时,解密模块会根据设定,自动提取0x25001000段的解密密钥,完成算法固件的解密执行,从而构建一个安全可执行的多固件系统。
本发明还解释一种安全的多固件融合控制方法,所述多固件融合控制方法包括如下步骤。
【步骤S1】存储介质存储各个应用固件。
【步骤S2】存储介质控制器根据处理器或者其它模块的访问请求,完成存储介质上应用固件或数据的读取。
【步骤S3】多地址映射模块完成不同应用固件的地址空间映射,将处理器访问应用固件的逻辑运行地址转换成应用固件的存储地址,每个应用固件都有独立的运行地址空间。在本发明的一实施例中,当一个应用固件升级后,所述多地址映射模块只更改升级应用固件的运行地址和存储地址的映射关系,其它应用固件数据保持不变。
【步骤S4】运行地址空间检测模块根据处理器当前运行的地址和执行的指令,判定当前处在的地址空间。
【步骤S5】访问控制模块设定地址空间的访问权限;在使能以后判断当前的访问是否合法。在本发明的一实施例中,所述访问控制模块根据访问控制白名单或者黑名单的设定,结合运行地址空间检测模块的检测结果,判断当前的访问是否合法。
【步骤S6】密钥存储控制实体存储应用固件加密密钥和应用固件加解密控制,并提供密钥的读写保护机制,保障密钥的安全性。在本发明的一实施例中,所述密钥存储控制实体存储的密钥在工厂随应用固件一起烧录,当系统运行后,能被解密模块使用,完成应用固件的解密。
【步骤S7】解密模块完成对指定存储区域的代码进行解密。在本发明的一实施例中,所述解密模块中包含多个地址段解密控制单元,能实现不同的地址段使用不同的解密密钥。
综上所述,本发明提出的安全的多固件融合系统及多固件融合控制方法,可降低多固件融合系统中,固件升级的复杂性,提高系统的稳定性和多固件融合的安全性。
本发明可以增加多固件融合系统中,固件之间的访问安全性,保障固件的数据安全和系统安全。此外,本发明还可以保护多固件融合系统中,各个固件的知识产权,防止固件被克隆复制。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施;例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一些实施例中,本申请的软件程序可以通过处理器执行以实现上文步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中;例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现;例如,作为与处理器配合从而执行各个步骤或功能的电路。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。实施例中所涉及的效果或优点可因多种因素干扰而可能不能在实施例中体现,对于效果或优点的描述不用于对实施例进行限制。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种文件检测方法、装置、存储介质及服务器