掌桥专利:专业的专利平台
掌桥专利
首页

一种Flash内容保护方法及装置

文献发布时间:2023-06-19 11:44:10


一种Flash内容保护方法及装置

技术领域

本发明涉及集成电路芯片设计技术领域,尤其涉及一种Flash内容保护方法及装置。

背景技术

将Flash(闪烁存储器)作为程序和数据存储器(嵌入芯片或与芯片合封在一起)已经成为SoC(System on Chip,片上系统)芯片设计领域的通用做法,其一方面较传统的ROM(Read Only Memory,只读存储器)或OTP(One Time Program,一次编程)方式具有可反复擦写的优点,另一方面可以减少用户额外使用单独Flash芯片的价格成本和产品电路的面积成本。然而,在缺乏专门软硬件设计的产品中,从SoC Flash中将程序和数据读取出来是非常容易的,在日趋激烈的市场竞争环境下,越来越多使用SoC芯片设计嵌入式产品的企业开始关注知识产权的保护,而存储在产品芯片Flash内的程序和数据作为核心竞争力,如何避免其被竞争对手窃取已经成为芯片使用者(企业)迫切面临的挑战。

一般地,保护Flash内容的思路有如下几种:

1、引入纯软件加密/解密机制,将待保护Image(程序映像)中的固定几个位置插入几段加密的数据,这个数据与Flash某些唯一固定参数(如序列号)强相关,当程序执行时按照既定算法检查Flash的固定参数和几处固定位置解密后的数据是否匹配,决定是否向下执行,其特点是完全拷贝Flash程序到另一个Flash是无法执行的,因为ID和固定几处位置数据不匹配,缺点是此机制理论上可以通过调试或Image分析的方法找到“固定几处位置”,然后直接修改Image文件中的汇编指令即可绕过检测流程,从而使破解后的Image可以在其他Flash上运行;如专利号为CN201710744563.5的中国专利公开的方法即是此类思想;另一个专利号为CN202010270867.4的中国专利公开的方法也是此类思想,只不过其使用的是非对称加密算法;

2、引入硬件密钥校验机制,同时引入硬件权限管理模块,SoC设计的时候预留不同的执行模式、各自模式下对存储器有不同的读、写、执行权限,在密钥校验通过的前提下才可以修改特定存储器的访问权限,这样只要SoC在烧录Image后将权限切换为不可读写,即可保证第三方在无密钥的情况下无法访问到Flash中的内容,如专利号为CN201410534831.7的中国专利公开的方法即为此思想;

3、专利“一种基于AES算法实现对FLASH加解密的方法”中公开了一种方法,引入特殊的硬件加密/解密机制,直接将需保护的内容(代码或数据)加密后写入Flash,当硬件需要使用受保护内容的时候,由某种软件不可见的机制解密后使用,这样即可保证软件直接读取Flash受保护区域的时候,得到的是加密数据,而不影响硬件正常使用这段数据;

4、引入基于非对称加密技术的签名/验签机制,保证只有合法的Image才能被执行,这样只要保证合法的程序中没有后门或漏洞来执行读取Flash内容的代码,就可以确保Flash内容不会被非法读出;例如专利号为CN201310655436.X的中国专利公开了一种基于非对称加密的嵌入式设备,其使用了专用的加密芯片来保证设备关键数据的安全;另一个专利号为CN202011260030.8的中国专利公开了一种芯片安全防御方法,其将公钥保存在一个OTP区域内,校验算法保存在ROM中,然后通过对不同的固件使用此公钥执行ROM校验程序来分阶段验证各固件的哈希值,从而识别固件是否合法。

然而,专利号为CN201710744563.5和专利号CN202010270867.4的中国专利公开的方法,采用纯软件的加密/解密机制来保护Flash内容,此类方法可以保证完全拷贝Flash程序到另一个Flash是无法执行的,但其缺点也是明显的:理论上可以通过调试或Image分析的方法找到关键的校验判断汇编指令,然后直接修改Image文件中的相应指令即可绕过检测流程,从而使破解后的Image可以在其他Flash上运行;

专利号为CN201410534831.7的中国专利公开的方法,采用硬件密钥校验机制和硬件权限管理模块共同作用的方法,实现只有在校验通过的前提下才能操作(读、写、擦除)Flash特定区域的内容,从而保证Image无法被非法获取,但是,此专利公开的方法,需要在Image中存储控制密钥,如果第三方获取了一个合法Image的控制密钥,则可能通过将其复制到一个伪造Image中的方式绕过硬件校验;

专利“一种基于AES算法实现对FLASH加解密的方法”中公开了一种方法,引入特殊的硬件加密/解密机制,直接将需保护的内容(代码或数据)加密后写入Flash的方法,可以保证即使Flash内容被读出,因为其数据是加密的,所以第三方无法得知其真正的内容,但此方法由于使用对称加密方式,因此要求密钥必须妥善保存;

专利号为CN202011260030.8和专利号为CN202011260030.8的中国专利公开的方法,均引入了非对称签名和验签机制,其中前一个专利采用了专门的第三方加密芯片,保护效果强,但缺点是增加了成本;后一个专利采用了ROM和OTP结合的方式对Flash中的Image进行校验,理论上是可以确保Image合法的,但是这种签名/验签机制,只能保证“非法的Image无法在合法的设备上执行”,但是如果合法的Image代码中有漏洞,第三方可能会利用软件漏洞“合法地”将Image读取出来,然后将此Image使用其他合法的密钥重新签名,这样其就可以在与该密钥对应的第三方“合法的”设备上执行了;

特别地,以上专利中提到的方案,首先都没有牵涉或考虑到当芯片调试路径被打开时(即调试功能未被禁止)的情况下,Flash中的代码或数据被读出的可能性;其次,都牵涉到了“加密”(对称或非对称)的概念,而加密解密过程(无论对于硬件还是软件)是复杂的,直接或间接地增加了产品的成本。

因此,本领域的技术人员致力于设计一种算法,能够以更简单的硬件结构(更低的软硬件成本)实现Flash内容保护;同时在芯片调试路径被打开的情况下实现Flash内容保护。

发明内容

有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是如何以更简单的硬件结构(更低的软硬件成本)实现Flash内容保护;如何在芯片调试路径被打开的情况下实现Flash内容保护。

为实现上述目的,本发明提供了一种Flash内容保护装置,其特征在于,包括权限解析单元,请求源识别单元,调试模式保护单元,运行模式保护单元,其中,所述权限解析单元用来判断是否将eFuse(电子熔丝)中保护信息自动加载到所述权限解析单元中,进行保护权限解析;所述请求源识别单元会将总线上发来的请求信息进行解析;所述调试模式保护单元将所述请求源识别单元发来的调试请求进行解析后,用以判断是否开启调试模式保护的使能;所述运行模式保护单元将所述请求源识别单元发来的CPU请求进行解析后,用以判断是否开启运行模式保护的使能。

进一步地,所述装置交互的模块有系统总线、eFuse控制器以及Flash高速缓存。

进一步地,所述eFuse作为所述保护信息的存储介质,将所述保护信息烧写至所述eFuse的指定区域。

进一步地,所述保护信息包括保护开关控制字、Flash受保护区域起始地址和大小。

进一步地,所述权限解析单元基于所述eFuse中相关保护控制字的内容,在上电复位后将所述eFuse中的所述保护信息自动加载到所述权限解析单元中,进行解析保护权限。

进一步地,所述请求源识别单元会将所述总线上发来的请求信息进行解析,判断当前对Flash存储器的操作是来自CPU的请求,还是调试接口的请求,将请求数据流分开。

进一步地,所述调试模式保护单元会将所述请求源识别单元发来的调试请求进行解析后,用以判断是否开启调试模式保护的使能,保证保护开启后无法通过调试模式实现对Flash保护区域的访问。

进一步地,所述运行模式保护单元会将所述请求源识别单元发来的CPU请求进行解析后,用以判断是否开启运行模式保护的使能,保证保护开启后无法通过程序注入等非法方式实现对所述Flash保护区域的访问。

一种Flash内容保护方法,其特征在于,所述方法包括以下步骤:

步骤1:将位于芯片内部的eFuse作为保护信息的存储介质;按照预设想所需信息,将所述保护信息烧写至所述eFuse的指定区域;

步骤2:在芯片上电复位后,权限解析单元基于所述eFuse中相关保护控制字的内容判断是否将所述eFuse中的所述保护信息自动加载到所述权限解析单元中,进行保护权限解析,解析完成释放CPU,开始程序运行,若解析到未开启保护权限,则直接释放CPU运行程序且不执行后续步骤,否则进入步骤三;

步骤3:在程序运行或者通过调试接口调试过程中,CPU会通过总线将数据数据流信息传递出去,请求源识别单元会将所述总线上发来的请求信息进行解析,判断当前对Flash存储器的操作是来自CPU的请求,还是调试接口的请求,将请求数据流分开;这里仅以AHB总线为例,可以通过hmaster、htran、hsize、hready等总线标志信号去判断当前请求的来源,从而将请求数据流传递到调试模式保护单元或者运行模式保护单元;若判断是调试模式进入步骤4,判断是程序运行模式进入步骤5;

步骤4:所述调试模式保护单元会将所述请求源识别单元发来的调试请求进行解析后,判断所述调试模式下是否存在对Flash保护区域的访问,从而决定是否开启调试模式保护的使能,保证保护开启后无法通过调试模式实现对所述Flash保护区域的访问,若判断开启保护模式下对所述Flash保护区域进行访问将会直接向CPU总线返回全0数据;

步骤5:当请求数据流进入所述运行模式保护单元,所述运行模式保护单元会将所述请求源识别单元发来的CPU请求进行解析后,具体解析htran、hsize、hready、hprot、haddr相关总线信号,其中程序每次跳转或者顺序运行到保护区域时必须是在取指令保证是程序自身运行到所述保护区域,而不是软件的程序注入或者其他非法操作方法;当程序跳转或者顺序运行到所述保护区域第一次操作时是取指令操作得到自身运行模式许可,后续即可以在所述保护区域取数据,当跳出所述保护区域访问别的区域后,这种许可被取消;此时再去所述保护区域取数据判定为程序注入非法操作,返回CPU数据为0,使CPU进入异常处理状态。

进一步地,所述步骤1中所需信息有保护开关控制字、受保护Flash内容的起始地址和受保护Flash区域的大小。

与现有技术相比,本发明具有如下的有益效果:

1、在没有加解密步骤(模块)参与的情况下,实现了芯片内Flash特定区域的内容保护,简化了Flash保护流程,降低了软件应用成本;

2、在即使调试路径被打开的情况下,实现了芯片内Flash特定区域的内容保护;

3、采用芯片内eFuse来存储Flash保护控制信息,而eFuse只能烧写一次的物理特性使得Flash保护功能被打开后无法被关闭,确保Flash内容的安全。

以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。

附图说明

图1是本发明的一个较佳实施例的Flash内容保护模块框图;

图2是本发明的一个较佳实施例的SoC芯片简化框图;

图3是本发明的一个较佳实施例的Flash受保护区域与eFuse内相关控制字映射关系示意图;

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。

参见图1、图2、图3的一种对Flash内容保护方法及装置的较佳实施例,在本实施例中,在上述对对Flash内容保护方法中,包括:

如图2所示为SoC芯片简化框图的简易框图,本发明所保护Flash内容保护模块交互的模块有系统总线、eFuse控制器以及Flash高速缓存。图1所示Flash内容保护模块具体内容,包含1)权限解析单元,2)请求源识别单元,3)调试模式保护单元,4)运行模式保护单元,具体步骤:

步骤1:将位于所述芯片内部的eFuse作为所述保护信息的存储介质;按照预设想信息,将所述保护信息烧写至所述eFuse的指定区域。其中,所需信息有保护开关控制字、受保护Flash内容的起始地址和受保护Flash区域的大小。

步骤2:在芯片上电复位后,权限解析单元基于eFuse中相关保护控制字的内容判断是否将eFuse中的保护信息(受保护Flash内容的起始地址和受保护区域的大小)自动加载到权限解析单元中,进行保护权限解析。解析完成释放CPU,开始程序运行,若解析到未开启保护权限,则直接释放CPU运行程序且不执行后续步骤,否则进入步骤三。

步骤3:在程序运行或者通过调试接口调试过程中,CPU会通过总线将数据数据流信息传递出去,请求源识别单元会将总线上发来的请求信息进行解析,判断当前对Flash存储器的操作是来自CPU的请求,还是调试接口的请求,将请求数据流分开。这里仅以AHB总线为例,可以通过hmaster、htran、hsize、hready等总线标志信号去判断当前请求的来源,从而将请求数据流传递到调试模式保护单元或者运行模式保护单元。若判断是调试模式进入步骤4,判断是程序运行模式进入步骤5。

步骤4:调试模式保护单元会将请求源识别单元发来的调试请求进行解析后,判断调试模式下是否存在对Flash保护区域的访问,从而决定是否开启调试模式保护的使能,保证保护开启后无法通过调试模式实现对Flash保护区域的访问。若判断开启保护模式下对Flash保护区域进行访问将会直接向CPU总线返回全0数据。

步骤5:当请求数据流进入运行模式保护单元,运行模式保护单元会将请求源识别单元发来的CPU请求进行解析后,具体解析htran、hsize、hready、hprot、haddr

相关总线信号,其中程序每次跳转或者顺序运行到保护区域时必须是在取指令保证是程序自身运行到保护区域,而不是软件的程序注入或者其他非法操作方法。当程序跳转或者顺序运行到保护区域第一次操作时是取指令操作得到自身运行模式许可,后续即可以在保护区域取数据,当跳出保护区域访问别的区域后,这种许可被取消。此时再去保护区域取数据判定为程序注入非法操作,返回CPU数据为0,使CPU进入异常处理状态。

最终在步骤4、步骤5中实现对Flash内容的保护,在避免对Flash进行加密解密等繁琐步骤的前提下,提高了芯片内Flash内容的安全性。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

相关技术
  • 一种Flash内容保护方法及装置
  • 一种芯片的FLASH加密保护方法、装置、FLASH控制器及芯片
技术分类

06120113034182