CN112905962B - 一种mcu内程序代码保护的方法、智能终端及存储介质 - Google Patents
一种mcu内程序代码保护的方法、智能终端及存储介质 Download PDFInfo
- Publication number
- CN112905962B CN112905962B CN202110239091.4A CN202110239091A CN112905962B CN 112905962 B CN112905962 B CN 112905962B CN 202110239091 A CN202110239091 A CN 202110239091A CN 112905962 B CN112905962 B CN 112905962B
- Authority
- CN
- China
- Prior art keywords
- user
- program
- data
- cpu
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000013500 data storage Methods 0.000 claims description 72
- 230000002159 abnormal effect Effects 0.000 claims description 7
- 238000007726 management method Methods 0.000 claims description 7
- 238000012508 change request Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本发明所提供的一种MCU内程序代码保护的方法、智能终端及存储介质,所述方法包括:接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户;当接收到所述CPU的数据访问请求时,根据所述数据访问请求确定访问的目标地址对应的用户空间;根据所述用户空间设置的访问权限判断是否执行所述数据访问请求对应的数据访问操作。本发明实现了对非易失性存储器中不同用户程序数据分别保护,防止程序数据被窃取。
Description
技术领域
本发明涉及智能终端技术领域,尤其涉及的是一种MCU内程序代码保护的方法、智能终端及存储介质。
背景技术
微控制单元(MCU),是把中央处理器的频率与规格做适当缩减,并将周边接口、LED驱动电路等整合在单一芯片上,形成芯片级的计算机。MCU内部一般包含非易失性存储器,用于存储程序指令和数据,当程序开发商将程序开发出来之后,则将开发的程序编译后保存到非易失性存储器中。在MCU运行时,MCU内部的CPU会从非易失性存储器中读取指令并执行程序,然后根据程序执行的不同状态发出获取指令或者获取数据的总线请求。
但在对程序进行开发时,往往会涉及到多个开发商协同开发或者多次开发同一个程序的情形,此种情况下则会造成多个开发商开发数据在非易失性存储器中透明化,造成开发数据存在被盗用的风险,同时,用户在使用程序时也存在一定的安全隐患;再者,当未对非易失性存储器进行保护时,则易存在通过调试器窃取程序数据的风险。
因此,现有技术存在缺陷,有待改进与发展。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种MCU内程序代码保护的方法、智能终端及存储介质,旨在解决现有技术中MCU片内非易失性存储器里的程序代码被盗用或非法植入的风险的问题。
本发明解决技术问题所采用的技术方案如下:
一种MCU片内程序代码的保护方法,其中,包括:
接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户;
当接收到所述CPU的数据访问请求时,根据所述数据访问请求确定访问的目标地址对应的用户空间;
根据所述用户空间设置的访问权限判断是否执行所述数据访问请求对应的数据访问操作。
进一步地,所述接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户,之前还包括:
将非易失性存储器分成多个容量大小相同的页,并进行分页管理;
以所述页为单位为不同用户在非易失性存储器中分配数据和指令的用户空间,并对所述数据存储空间的不同页分别设置所述数据访问保护权限。
进一步地,所述接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户,还包括:
接收所述CPU的访问信号;
当所述访问信号中存在取指访问请求时,根据取指访问的目标地址确定在所述非易失性存储器中对应的所述页,并确定所述页所属的用户空间;
若所述页不属于当前用户空间,则切换占用CPU的用户为所述页所属的用户空间,并同时更新所述数据访问保护权限;
若所述页属于当前用户空间,保持占用CPU的用户不变。
进一步地,所述当接收到所述CPU的数据访问请求时,根据所述数据访问请求确定访问的目标地址对应的用户空间,包括:
接收所述CPU的访问信号;
当所述访问信号中存在数据访问请求时,确定所访问数据的目标地址在所述非易失性存储器中所属的页,并确定所述页所属的用户空间。
进一步地,所述根据所述用户空间设置的访问权限判断是否执行所述数据访问请求对应的数据访问操作,包括:
当所访问数据的目标地址所属的页属于所述用户空间或者未被其所属用户设置数据访问保护时,根据所述数据访问请求从所述数据存储空间获取数据;
当所访问数据的目标地址所属的页不属于所述用户空间且被其所属用户设置了数据访问保护时,则拒绝访问所述数据存储空间。
进一步地,所述非易失性存储器包括信息区,所述信息区用于存储所述用户空间的权限配置数据和访问保护权限数据。
进一步地,所述根据所述用户空间设置的访问权限判断是否执行所述数据访问请求对应的数据访问操作,之前还包括:
判断所述数据存储空间是否已被分配给用户;
若未分配,则根据所述数据访问请求从所述数据存储空间获取数据。
进一步地,所述当所访问数据的目标地址所属的页不属于所述用户空间且被其所述用户设置了数据访问保护时,则拒绝访问所述数据存储空间,之后还包括:
将访问所述数据存储空间的异常信息返回给所述CPU。
进一步地,所述接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户,之后还包括:
当检测到用于改变目标用户设置的数据访问保护权限的用户请求时,擦除所述目标用户所对应程序的数据。
进一步地,所述当检测到用于改变目标用户设置的数据访问保护权限的用户请求时,擦除所述目标用户所对应程序的数据,包括:
当检测到用于改变目标用户设置的数据访问保护权限的用户请求时,判断改变权限的页是否属于所述目标用户的用户空间;
若是,则修改所述用户空间设置的数据保护权限;
若否,判断改变权限的页是否被分配给其他用户;
若未分配,则将所述页分配给发出所述用户请求的用户,并修改所述数据保护权限;
若已分配,查看所述页被分配的所述目标用户,并将所述目标用户对应程序的权限和数据擦除。
本发明还提供一种智能终端,其中,所述智能终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码保护程序,所述代码保护程序被所述处理器执行时实现如上所述的MCU片内程序代码的保护方法的步骤。
本发明还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有代码保护程序,所述代码保护程序被处理器执行时实现如上所述的MCU片内程序代码的保护方法的步骤。
本发明所提供的一种MCU内程序代码保护的方法、智能终端及存储介质,所述方法包括:接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户;当接收到所述CPU的数据访问请求时,根据所述数据访问请求确定访问的目标地址对应的用户空间;根据所述用户空间设置的访问权限判断是否执行所述数据访问请求对应的数据访问操作。本发明通过对非易失性存储器分页管理,进而支持不同用户的数据存储空间不同页分别设置数据访问权限,当收到数据访问请求时,通过判断目标地址所属用户是否对该目标地址所属页设置了保护权限,实现了对非易失性存储器中不同用户程序数据分别保护,防止程序数据被窃取。
附图说明
图1是本发明中MCU片内程序代码的保护方法的较佳实施例的流程图;
图2是本发明MCU片内程序代码的保护方法的较佳实施例中步骤S100的流程图;
图3是本发明MCU片内程序代码的保护方法的较佳实施例中步骤S200的流程图;
图4是本发明MCU片内程序代码的保护方法的较佳实施例中步骤S300的流程图;
图5是本发明MCU片内程序代码的保护方法的较佳实施例中步骤S300之前的流程图;
图6是本发明MCU片内程序代码的保护方法的较佳实施例中步骤S400的流程图;
图7是本发明中智能终端的较佳实施例的功能原理框图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
现有技术中是将程序编译数据存储到非易失性存储器中,但每个程序开发商所开发的程序均属于自身的技术机密,若泄露则对公司造成诸多危害。但现存的问题是当一个程序由多个开发商联合开发,或者一个程序由多个开发商多次开发时,存储在非易失性存储器中的程序数据会对相关联的开发商可见,进而导致开发商的程序数据被泄露。另一种方式则为当非易失性存储器中的程序数据未被保护时,则可通过调试器窃取存储器中的程序数据。
为解决这一问题,现有技术中提出了诸多解决方案,但均存在弊端,现有的解决方案如下:
第一种,在MCU中预先安装操作系统,由操作系统设置不同的访问权限。但存在的问题是大多MCU并不需要安装操作系统或者没有操作系统,此种方式则不能保护非易失性存储器中存储的程序数据。
第二种,对MCU中的Flash统一设置读保护标志,当读保护标志生效后,芯片中的Flash只能被已经存储在Flash中的程序访问。此种方式虽然能有效防止通过调试器窃取程序数据,但是并不适用于一个程序被多个开发商协同开发或者一个程序被不同开发商多次开发的情况,因为当第一家开发商开发完成程序后直接将读保护标志置位,则后续的开发商则无法访问Flash,则不能对程序进行二次开发,若第一家开发商不对程序进行读保护标志置位,则不能实现对程序数据的保护。
第三种,由MCU内的Flash控制器将Flash空间分为不同的用户区域,进而通过控制器为用户进行分区,则禁止数据总线跨区域访问。通过限定用户访问区域,能够实现对每个开发商的程序数据保护,但当一个程序由多个开发商协同开发时,则不能实现开发商之间共享程序数据,则造成协同开发困难。再者,此种方案还依赖于CPU总线为哈佛结构,若不是哈佛结构则无法实施该方案。
由此可见,现有技术中针对联合开发程序或者多次开发程序时,无法对程序数据分别进行保护的问题尚未有更好的解决方案,且现有解决方案均存在弊端。基于此,本发明提出一种MCU片内程序代码的保护方法,请参见图1,图1是本发明中一种MCU片内程序代码的保护方法的流程图。如图1所示,本发明实施例所述的一种MCU片内程序代码的保护方法包括以下步骤:
S100、接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户。
具体地,在MCU内部设置一个请求识别模块,该请求识别模块用于检测用户对不同用户数据存储空间的取指访问和数据访问。当请求识别模块检测到取指请求时,取指请求中则携带待取指地址,通过取值地址即可得到取指地址属于哪一个用户空间,如果当次取指地址不在上一次取指地址所属用户的空间范围内,则切换用户为地址空间包含当次取指地址的用户。
S200、当接收到所述CPU的数据访问请求时,根据所述数据访问请求确定访问的目标地址对应的用户空间。
当请求识别模块检测到数据访问请求时,记录下数据访问请求的目标地址供权限判断处理。
S300、根据所述用户空间设置的访问权限判断是否执行所述数据访问请求对应的数据访问操作。
具体地,当检查到数据访问请求时,确定数据访问的目标地址属于哪一个非易失性存储器页,并确定该页属于哪一个用户空间;当所述数据访问的目标页属于本用户空间或者不属于任何已配置的用户空间,则允许执行本次数据访问;当所述数据访问的目标页属于其他某用户空间,但这个用户没有对该目标页设置数据访问保护权限,则允许执行本次数据访问;当所述数据访问的目标页属于其他某用户空间,并且这个用户对该目标页设置了数据访问保护权限,则拒绝执行本次数据访问,并返回异常信息给CPU,通知CPU发生数据访问权限发生异常。
在一具体实施例中,步骤S100之前还包括:
S10、将非易失性存储器分成多个容量大小相同的页,并进行分页管理。
S20、以所述页为单位为不同用户在非易失性存储器中分配数据和指令的用户空间,并对所述数据存储空间的不同页分别设置所述数据访问保护权限。
将非易失性存储器分成若干容量大小相同的页,进行分页管理,以一页为单位为不同用户在非易失性存储器中分配程序数据存储空间,并对所述数据存储空间的不同页分别设置数据访问保护权限;同时把非易失性存储分成两大部分,一部分为用户区,一部分为信息区,所有用户的程序数据都存储在用户区,信息区里记录每个用户空间的权限配置数据,包括每个用户的程序数据占用空间范围和每个用户的空间里不同页的数据访问保护权限。
具体地,对MCU中的非易失性存储器进行分页管理,当不同开发商开发的程序数据存储到非易失性存储器中时,根据每个开发商开发的程序数据存储情况,对其在非易失性存储器中所占用的页进行标记并记录到信息区,每个开发商所占用的页构成一个数据存储空间。且对每个开发商占用的不同页分别进行数据访问权限设置,即实现对用户能够访问的数据存储空间进行了权限保护。当一个用户对自己数据存储空间的若干页设置了数据访问保护后,使得这些页的数据存储空间只允许该用户自己进行数据访问,而不允许其他用户或者调试器进行数据访问。
进一步地,上述的数据访问权限可以为读访问也可以为写访问。
可以理解地,非易失性存储器包括已分配给用户的数据存储空间,也包括未分配给任一用户的数据存储空间,当访问的是分配给任一用户的数据存储空间,则不需要判断权限,该数据存储空间可被任意用户访问。
在步骤S10之前还包括:
载入所有用户数据存储空间配置信息。
具体地,在MCU内设置有权限保护模块,用于记录设置所有用户占用的非易失性存储器页信息和该用户对每一页设置的数据访问保护信息,即权限保护模块可以记录非易失性存储器中记录的用户信息及对应的用户、每个用户占用的数据页以及对每个数据页设置的访问权限信息。
当MCU复位或上电之后,权限保护模块获取存储在非易失性存储器信息区中的每个用户信息和每个用户数据页的保护权限信息,并将每个用户对应的数据存储空间进行统计划分,信息区里记录的用户配置信息是在用户发行并存储程序数据于非易失性存储器中后完成的。
在一具体实施例中,如图2所示,步骤S100包括:
S110、接收所述CPU的访问信号。
S120、当所述访问信号中存在取指访问请求时,根据取指访问的目标地址确定在所述非易失性存储器中对应的所述页,并确定所述页所属的用户空间。
S130、若所述页不属于当前用户空间,则切换占用CPU的用户为所述页所属的用户空间,并同时更新所述数据访问保护权限。
S140、若所述页属于当前用户空间,保持占用CPU的用户不变。
具体地,当请求识别模块接收到访问信号时,需要判断访问信号中是否包含取指访问请求,不同类型CPU发出的访问信号不同,比如哈佛结构的CPU可以直接判断指令总线是否有访问请求,如果指令总线有访问请求即表示有取指访问请求;冯洛伊曼结构的CPU只有一组总线,不区分指令总线和数据总线,可以根据总线信号译码判断访问请求中是否存在取指访问请求,如ARM Cortex-M0 CPU可以通过HTRANS、HPROT和HMASTER信号组合译码判断取指访问请求。
当存在取指访问请求时,即可判断占用当前CPU的程序所属用户,即得到用户信息,从而得到该程序所属用户对应的数据访问保护权限,之后权限保护模块就可以判断不同用户的数据访问权限。
根据待访问数据存储空间对应的用户从CPU上查找对应的用户,进而根据查找到的用户更新CPU的占用信息,以将查找到的用户更换成当前占用CPU的用户。
可以理解地,若当前CPU未被占用,则直接将当前待访问数据存储空间对应的用户设置为占用CPU的用户。
在一具体实施例中,如图3所示,步骤S200包括:
S210、接收所述CPU的访问信号。
S220、当所述访问信号中存在数据访问请求时,确定所访问数据的目标地址在所述非易失性存储器中所属的页,并确定所述页所属的用户空间。
在一具体实施例中,如图4所示,步骤S300包括:
S310、当所访问数据的目标地址所属的页属于所述用户空间或者未被其所属用户设置数据访问保护时,根据所述数据访问请求从所述数据存储空间获取数据。
S320、当所访问数据的目标地址所属的页不属于所述用户空间且被其所属用户设置了数据访问保护时,则拒绝访问所述数据存储空间。
在一具体实施例中,步骤S320之后还包括:
S330、将访问所述数据存储空间的异常信息返回给所述CPU。
具体地,当接收到数据访问请求之后,则可得到发出数据访问请求的用户信息,即当前占用CPU的程序对应的用户信息,当得到程序对应的用户信息之后,则可根据数据访问地址判断待访问数据存储空间所属的用户,当所属用户与发起取指请求的用户属于同一用户,或者发起取指请求的用户具有所访问的数据存储空间的访问权限时,则可根据取指请求访问数据存储空间的程序数据。其中,数据存储空间的访问权限是预先根据需求而设定的,可以设置能够访问给数据存储空间的用户,以及每个用户可以访问的权项。
而当待访问数据存储空间的对应的用户与发起数据访问请求的用户不属于同一个用户时,则拒绝访问该数据存储空间,或者需要判断待访问数据存储空间是否对发起取指请求的用户开设有访问权限,若设置有访问权限则可访问该数据存储空间,若未设置访问权限,则发出拒绝访问或者访问失败或者访问异常或者越权访问的提示。
可以理解地,当待访问的数据存储空间未设置访问权限时,即可直接从该数据存储空间获取程序数据或者指令。
当取指请求对某一数据存储空间没有访问权限时,若还需要继续访问该数据存储空间,则需要对发出取指指令的用户进行切换,进而实现访问该数据存储空间。
在一具体实施例中,如图5所示,步骤S300之前还包括:
S230、判断所述数据存储空间是否已被分配给用户。
S240、若未分配,则根据所述数据访问请求从所述数据存储空间获取数据。
在一具体实施例中,步骤S100之后还包括:
S400、当检测到用于改变目标用户设置的数据访问保护权限的用户请求时,擦除所述目标用户所对应程序的数据。
具体地,当改写的是其它用户数据存储空间的配置,则需要发起擦除请求将原有配置进行擦除之后才能对该数据存储空间进行重新配置。
在一具体实施例中,如图6所示,步骤S400包括:
S410、当检测到用于改变目标用户设置的数据访问保护权限的用户请求时,判断改变权限的页是否属于所述目标用户的用户空间。
S420、若是,则修改所述用户空间设置的数据保护权限。
S430、若否,判断改变权限的页是否被分配给其他用户。
S440、若未分配,则将所述页分配给发出所述用户请求的用户,并修改所述数据保护权限。
S450、若已分配,查看所述页被分配的所述目标用户,并将所述目标用户对应程序的权限和数据擦除。
具体地,权限保护模块可以对非易失性存储器中的每个数据页设置访问权限,也可更改每个数据页的访问权限。当权限保护模块接收到用户配置变更请求后,则判断发出用户配置变更请求的发出端是否对待变更数据存储空间具有变更权限,即判断是否为用户变更自身的数据存储空间,若是则直接对数据存储空间的配置进行变更,并将配置信息存储进所述数据存储空间,若没有变更权限,则无法对数据存储空间进行配置变更。
进一步地,发出用户配置变更请求的发出端可以来自CPU或者调试器或者其他主设备。
而当配置的是初始信息时,可根据用户配置变更请求将配置信息存储在非易失性存储器中未分配给用户的数据存储空间中。
具体地,当被访问的数据存储空间未被分配时,可直接将配置信息存入该数据存储空间,而当被访问的数据存储空间已被分配时,若变更的是自身的数据存储空间的配置则可直接进行变更,若否则需要发出擦除请求,进而将配置信息存入擦除了历史数据的数据存储空间中,以防止该数据存储空间被恶意更改配置。其中,发出用户配置变更请求的可以为微处理单元在运行某个程序时由该程序发出的用户配置变更请求,也可以是调试器发出的用户配置变更请求,也可以是烧录工具发现用户程序时发出的写入配置信息的请求。
为进一步说明本发明方案,此处进行具体举例说明,但并不用于限定本发明。
比如,某开发商在MCU内部预装了底层驱动程序和嵌入式操作系统,用户可以调用这些预装的驱动程序和操作系统进行应用程序开发。MCU内部的非易失性存储器容量为2Mbytes,预装的底层驱动和操作系统的大小一共为512Kbytes,剩余是16Kbytes的数据空间,该数据空间记录了芯片和系统初始运行时生成的一些环境状态信息,以作为用户程序的参数使用。预装的底层驱动程序和操作系统存储在片内非易失性存储器从0地址开始的连续512KBytes区域。其中,对0到496Kbytes空间的程序和数据设置了读访问权限,防止核心程序被窃取,496K到512Kbytes空间的数据可以被任意读取。
将预装的驱动和操作系统部分定义为系统用户,并把2Mbytes的非易失性存储器分成4096个大小为512Bytes的页。在信息区里配置系统用户的空间信息为0到1023页的连续空间,保护权限区分读保护和写保护,把0到991页设置为读保护和写保护,把992到1023页设置为写保护。在启用CPU时,0到496Kbytes空间的核心程序不能被窃取,但是可以任意调用和读取496Kbytes到512Kbyes区间的共享数据。
若某个终端用户不使用预装的驱动程序和操作系统,则有2Mbytes的非易失性存储空间可以使用,在芯片复位后,通过调试器或者程序去改变信息区里系统用户的配置,此时就会触发MCU中权限保护模块先把预装的512Kbytes空间所有内容都擦除掉,然后把信息区的系统用户配置也清除。
当多个开发商协同开发一个程序时,举例说明如下:有A,B,C三家公司基于一个非易失性存储器容量为2Mbytes的MCU开发产品方案。A,B,C三家公司都可能调用其他家公司提供的函数接口。其中A公司的方案需要占用512Kbytes的空间,其中0~468Kbytes部分的内容为需要保护的空间,剩下部分的空间可以被别人读写;公司B的方案需要占用120Kbytes的空间,整个空间都不希望被别人读取;公司C的方案需要占用600Kbytes的空间,其中0~500Kbytes部分的内容不希望被别人读取,剩下的100Kbytes空间可以被其他用户读,但是不希望被其他用户写。
在设置时,可将在MCU芯片上公司A的方案放在片内非易失性存储器的0~512Kbytes空间,公司B的方案放在片内非易失性存储器的512K~632Kbytes空间,公司C的方案放在片内非易失性存储器的632K~1232Kbytes空间。
之后把2Mbytes的非易失性存储器分成2048个大小为1KBytes的页。在信息区里配置A公司空间信息为0到511页的连续空间,并把0到467页设置为读保护和写保护都使能;把B公司空间信息配置为512到631页的连续空间,并把512到631页都设置为读保护和写保护都使能;把C公司空间信息配置为632到1231页的连续空间,并把632到1131页设置为读保护和写保护都使能,把1132到1231页设置为读保护使能。
可以理解地,本发明中的非易失性存储器可以是Flash、FRAM、MRAM、EEPROM等不同存储介质。
本发明通过对非易失性存储器不同的页分别设置访问权限,能够起到不同的保护作用,比如设置有读保护的页则禁止其他用户读取数据,设置有写保护的页则禁止其他用户写入数据,同时设置有读和写保护的页则禁止其他用户读或写入数据。而未设置访问权限的页则可被随意访问,以此实现在CPU正常运行的情况下能够对程序数据进行单独保护。
进一步地,如图7所示,基于上述MCU片内程序代码的保护方法,本发明还相应提供了一种智能终端,所述智能终端包括处理器10、非易失性存储器20及显示器30。图7仅示出了智能终端的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
所述非易失性存储器20在一些实施例中可以是所述智能终端的内部存储单元,例如智能终端的硬盘或内存。所述非易失性存储器20在另一些实施例中也可以是所述智能终端的外部存储设备,例如所述智能终端上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述非易失性存储器20还可以既包括所述智能终端的内部存储单元也包括外部存储设备。所述非易失性存储器20用于存储安装于所述智能终端的应用软件及各类数据,例如所述安装智能终端的程序代码等。所述非易失性存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,非易失性存储器20上存储有代码保护程序40,该代码保护程序40可被处理器10所执行,从而实现本申请中MCU片内程序代码的保护方法。
所述处理器10在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行所述非易失性存储器20中存储的程序代码或处理数据,例如执行所述MCU片内程序代码的保护方法等。
所述显示器30在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。所述显示器30用于显示在所述智能终端的信息以及用于显示可视化的用户界面。所述智能终端的部件10-30通过系统总线相互通信。
在一实施例中,当处理器10执行所述非易失性存储器20中代码保护程序40时实现以下步骤:
接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户;
当接收到所述CPU的数据访问请求时,根据所述数据访问请求确定访问的目标地址对应的用户空间;
根据所述用户空间设置的访问权限判断是否执行所述数据访问请求对应的数据访问操作。
进一步地,所述接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户,之前还包括:
将非易失性存储器分成多个容量大小相同的页,并进行分页管理;
以所述页为单位为不同用户在非易失性存储器中分配数据和指令的用户空间,并对所述数据存储空间的不同页分别设置所述数据访问保护权限。
进一步地,所述接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户,还包括:
接收所述CPU的访问信号;
当所述访问信号中存在取指访问请求时,根据取指访问的目标地址确定在所述非易失性存储器中对应的所述页,并确定所述页所属的用户空间;
若所述页不属于当前用户空间,则切换占用CPU的用户为所述页所属的用户空间,并同时更新所述数据访问保护权限;
若所述页属于当前用户空间,保持占用CPU的用户不变。
进一步地,所述当接收到所述CPU的数据访问请求时,根据所述数据访问请求确定访问的目标地址对应的用户空间,包括:
接收所述CPU的访问信号;
当所述访问信号中存在数据访问请求时,确定所访问数据的目标地址在所述非易失性存储器中所属的页,并确定所述页所属的用户空间。
进一步地,所述根据所述用户空间设置的访问权限判断是否执行所述数据访问请求对应的数据访问操作,包括:
当所访问数据的目标地址所属的页属于所述用户空间或者未被其所属用户设置数据访问保护时,根据所述数据访问请求从所述数据存储空间获取数据;
当所访问数据的目标地址所属的页不属于所述用户空间且被其所属用户设置了数据访问保护时,则拒绝访问所述数据存储空间。
进一步地,所述根据所述用户空间设置的访问权限判断是否执行所述数据访问请求对应的数据访问操作,之前还包括:
判断所述数据存储空间是否已被分配给用户;
若未分配,则根据所述数据访问请求从所述数据存储空间获取数据。
进一步地,所述当所访问数据的目标地址所属的页不属于所述用户空间且被其所述用户设置了数据访问保护时,则拒绝访问所述数据存储空间,之后还包括:
将访问所述数据存储空间的异常信息返回给所述CPU。
进一步地,所述接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户,之后还包括:
当检测到用于改变目标用户设置的数据访问保护权限的用户请求时,擦除所述目标用户所对应程序的数据。
进一步地,所述当检测到用于改变目标用户设置的数据访问保护权限的用户请求时,擦除所述目标用户所对应程序的数据,包括:
当检测到用于改变目标用户设置的数据访问保护权限的用户请求时,判断改变权限的页是否属于所述目标用户的用户空间;
若是,则修改所述用户空间设置的数据保护权限;
若否,判断改变权限的页是否被分配给其他用户;
若未分配,则将所述页分配给发出所述用户请求的用户,并修改所述数据保护权限;
若已分配,查看所述页被分配的所述目标用户,并将所述目标用户对应程序的权限和数据擦除。
本发明还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有代码保护程序,所述代码保护程序被处理器执行时实现如上所述的MCU片内程序代码的保护方法的步骤。
当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的计算机可读存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的计算机可读存储介质可为存储器、磁碟、光盘等。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (11)
1.一种MCU片内程序代码的保护方法,其特征在于,包括:
接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户;
当接收到所述CPU的数据访问请求时,根据所述数据访问请求确定访问的目标地址对应的用户空间;
根据所述用户空间设置的访问权限判断是否执行所述数据访问请求对应的数据访问操作;
当所访问数据的目标地址所属的页属于所述用户空间或者未被其所属用户设置数据访问保护时,根据所述数据访问请求从所述数据存储空间获取数据;
当所访问数据的目标地址所属的页不属于所述用户空间且被其所属用户设置了数据访问保护时,则拒绝访问所述数据存储空间。
2.根据权利要求1所述的MCU片内程序代码的保护方法,其特征在于,所述接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户,之前还包括:
将非易失性存储器分成多个容量大小相同的页,并进行分页管理;
以所述页为单位为不同用户在非易失性存储器中分配数据和指令的用户空间,并对所述数据存储空间的不同页分别设置所述数据访问保护权限。
3.根据权利要求2所述的MCU片内程序代码的保护方法,其特征在于,所述接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户,还包括:
接收所述CPU的访问信号;
当所述访问信号中存在取指访问请求时,根据取指访问的目标地址确定在所述非易失性存储器中对应的所述页,并确定所述页所属的用户空间;
若所述页不属于当前用户空间,则切换占用CPU的用户为所述页所属的用户空间,并同时更新所述数据访问保护权限;
若所述页属于当前用户空间,保持占用CPU的用户不变。
4.根据权利要求3所述的MCU片内程序代码的保护方法,其特征在于,所述当接收到所述CPU的数据访问请求时,根据所述数据访问请求确定访问的目标地址对应的用户空间,包括:
接收所述CPU的访问信号;
当所述访问信号中存在数据访问请求时,确定所访问数据的目标地址在所述非易失性存储器中所属的页,并确定所述页所属的用户空间。
5.根据权利要求2所述的MCU片内程序代码的保护方法,其特征在于,所述非易失性存储器包括信息区,所述信息区用于存储所述用户空间的权限配置数据。
6.根据权利要求1所述的MCU片内程序代码的保护方法,其特征在于,所述根据所述用户空间设置的访问权限判断是否执行所述数据访问请求对应的数据访问操作,之前还包括:
判断所述数据存储空间是否已被分配给用户;
若未分配,则根据所述数据访问请求从所述数据存储空间获取数据。
7.根据权利要求6所述的MCU片内程序代码的保护方法,其特征在于,所述当所访问数据的目标地址所属的页不属于所述用户空间且被其所述用户设置了数据访问保护时,则拒绝访问所述数据存储空间,之后还包括:
将访问所述数据存储空间的异常信息返回给所述CPU。
8.根据权利要求1所述的MCU片内程序代码的保护方法,其特征在于,所述接收CPU的取指请求,并根据所述取指请求确定并记录所述CPU当前执行的程序及所述程序对应的用户,如果判断所述程序对应的用户和上一条执行的程序对应的用户不同,则将占用所述CPU的用户切换成当前所述程序对应的用户,之后还包括:
当检测到用于改变目标用户设置的数据访问保护权限的用户请求时,擦除所述目标用户所对应程序的数据。
9.根据权利要求8所述的MCU片内程序代码的保护方法,其特征在于,所述当检测到用于改变目标用户设置的数据访问保护权限的用户请求时,擦除所述目标用户所对应程序的数据,包括:
当检测到用于改变目标用户设置的数据访问保护权限的用户请求时,判断改变权限的页是否属于所述目标用户的用户空间;
若是,则修改所述用户空间设置的数据保护权限;
若否,判断改变权限的页是否被分配给其他用户;
若未分配,则将所述页分配给发出所述用户请求的用户,并修改所述数据保护权限;
若已分配,查看所述页被分配的所述目标用户,并将所述目标用户对应程序的权限和数据擦除。
10.一种智能终端,其特征在于,所述智能终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码保护程序,所述代码保护程序被所述处理器执行时实现如权利要求1-9任一项所述的MCU片内程序代码的保护方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有代码保护程序,所述代码保护程序被处理器执行时实现如权利要求1-9任一项所述的MCU片内程序代码的保护方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110239091.4A CN112905962B (zh) | 2021-03-04 | 2021-03-04 | 一种mcu内程序代码保护的方法、智能终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110239091.4A CN112905962B (zh) | 2021-03-04 | 2021-03-04 | 一种mcu内程序代码保护的方法、智能终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112905962A CN112905962A (zh) | 2021-06-04 |
CN112905962B true CN112905962B (zh) | 2021-11-30 |
Family
ID=76106945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110239091.4A Active CN112905962B (zh) | 2021-03-04 | 2021-03-04 | 一种mcu内程序代码保护的方法、智能终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112905962B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113961246A (zh) * | 2021-10-28 | 2022-01-21 | 深圳市航顺芯片技术研发有限公司 | 微控制芯片上的权限配置方法、装置及存储介质 |
CN114580005B (zh) * | 2022-05-09 | 2023-02-28 | 深圳市航顺芯片技术研发有限公司 | 数据访问方法、计算机设备及可读存储介质 |
CN115033394B (zh) * | 2022-05-23 | 2023-05-26 | 深圳市航顺芯片技术研发有限公司 | 一种多核mcu访问共享外设的控制系统及相关设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007323149A (ja) * | 2006-05-30 | 2007-12-13 | Matsushita Electric Ind Co Ltd | メモリデータ保護装置及びicカード用lsi |
CN101110702A (zh) * | 2007-08-14 | 2008-01-23 | 中兴通讯股份有限公司 | 一种命令行接口权限分级的方法及其系统 |
CN103037312B (zh) * | 2011-10-08 | 2016-03-16 | 阿里巴巴集团控股有限公司 | 消息推送方法及装置 |
US20130091561A1 (en) * | 2011-10-11 | 2013-04-11 | Keisey L. Bruso | Executing commands provided during user authentication |
CN104536912B (zh) * | 2014-12-22 | 2017-10-31 | 昆腾微电子股份有限公司 | 在小型操作系统中实现内存保护模式的装置和方法 |
CN104573421B (zh) * | 2014-12-30 | 2017-12-22 | 北京兆易创新科技股份有限公司 | 一种基于若干分区的mcu芯片信息保护方法和装置 |
CN108268790A (zh) * | 2016-12-30 | 2018-07-10 | 北京国双科技有限公司 | 数据权限的配置方法及装置 |
CN107247899B (zh) * | 2017-05-22 | 2020-02-07 | 珠海格力电器股份有限公司 | 一种基于安全引擎的角色权限控制方法、装置及安全芯片 |
CN109901816A (zh) * | 2017-12-08 | 2019-06-18 | 中国科学院上海高等研究院 | 基于容器的保护版权的协同开发方法、终端、介质及系统 |
CN109063439A (zh) * | 2018-08-17 | 2018-12-21 | 杭州数梦工场科技有限公司 | 一种用于Spark SQL的用户权限控制方法和系统 |
-
2021
- 2021-03-04 CN CN202110239091.4A patent/CN112905962B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112905962A (zh) | 2021-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112905962B (zh) | 一种mcu内程序代码保护的方法、智能终端及存储介质 | |
JP6306578B2 (ja) | メモリ保護装置及び保護方法 | |
JP3710671B2 (ja) | 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法 | |
JP4759059B2 (ja) | メモリページをプログラムに対応付けるページカラーリング | |
CN1029336C (zh) | 保护个人计算机中系统应用程序的装置 | |
CN103198450B (zh) | 图像形成装置 | |
US8161258B2 (en) | Method to qualify access to a block storage device via augmentation of the device'S controller and firmware flow | |
JP4939382B2 (ja) | 情報処理装置及びそのプログラム実行制御方法 | |
JP4939387B2 (ja) | データ処理装置及びアドレス空間保護方法 | |
CN105190570A (zh) | 用于虚拟机器的完整性保护的存储器自省引擎 | |
JPH09500469A (ja) | メモリカード及びその作動方法 | |
EP3242214B1 (en) | Method and device for protecting information of mcu chip | |
KR101000543B1 (ko) | 데이터 프로세서의 보안을 개선하기 위한 방법 및 장치 | |
EP1855226A1 (en) | Security system of flash memory and method thereof | |
WO1999059049A1 (en) | Protected storage device for computer system | |
JP3878134B2 (ja) | データキャリアのためのマイクロプロセッサ回路、および、メモリ内に格納されたデータへのアクセスを組織化するための方法 | |
CN112256396B (zh) | 内存管理方法、系统及安全处理装置、数据处理装置 | |
CN110647764B (zh) | 针对用户态非易失性内存文件系统的保护方法及系统 | |
CN108009039B (zh) | 终端信息的记录方法、装置、存储介质及电子设备 | |
US20060129744A1 (en) | Method and apparatus for enabling non-volatile content filtering | |
CN113467844A (zh) | 适用于工业级应用场景的嵌入式系统的控制方法、嵌入式系统和计算机可读存储介质 | |
US20080046724A1 (en) | Method for governing interaction between code within a code base | |
CN112947861A (zh) | 存储设备的数据读取方法及电子设备系统 | |
US11150887B2 (en) | Secure code patching | |
US20240362049A1 (en) | Using virtual machine privilege levels to control write access to kernel memory in a virtual machine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |