一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

存储安全组件、片上系统、嵌入式系统及代码调用方法与流程

2022-06-05 18:30:59 来源:中国专利 TAG:


1.本发明涉及信息安全领域,特别涉及一种存储安全组件、片上系统、 嵌入式系统及代码调用方法。


背景技术:

2.随着嵌入式技术和物联网的快速发展,越来越多的嵌入式产品推向 市场。在众多的嵌入式产品中,很多涉及到程序的多用户开发。
3.对于多用户开发的程序,需要在不同用户所开发代码相互调用的同 时确保各用户开发的代码不被其它用户窃取。现在市面上的类似产品最 多支持多用户共同开发程序,不同用户之间是无法做到所开发代码的相 互保密的,代码被窃取的风险较大。


技术实现要素:

4.鉴于上述问题,本发明提供一种存储安全组件、片上系统、嵌入式 系统及代码调用方法,旨在解决多用户开发程序存在的代码被窃取的问 题。
5.根据本发明的第一方面,提供一种存储安全组件,包括:
6.存储单元,所述存储单元设有代码区,所述代码区包括多个用户区, 各所述用户区用于存储一个用户开发的代码;
7.处理单元,用于在某一用户区被配置为加密的情况下,控制该用户 区对其它用户区所存储代码执行时的函数调用指令进行响应,且控制该 用户区不响应其它用户区所存储代码执行时的数据访存。
8.可选地,所述存储单元还设有多个配置区,所述配置区和所述用户 区一一对应且各所述配置区用于存储所对应用户区的保护使能信息;
9.所述处理单元还用于根据一个配置区存储的保护使能信息确定该配 置区所对应用户区是否被配置为加密。
10.可选地,所述处理单元还用于在某一用户区被配置为加密的情况下, 控制该用户区不响应来自调试工具或编程工具的数据访存。
11.可选地,所述用户区还用于存储密钥;
12.所述处理单元还用于在某一用户区被配置为加密的情况下,针对指 向该用户区的数据访存获取用户输入的密码,并在所述密码和该用户区 存储的密钥匹配的情况下控制该用户区响应数据访存;
13.其中,所述处理单元还用于在所述密码和该用户区存储的密钥不匹 配的情况下,控制该用户区不响应其它用户区所存储代码执行时的数据 访存,以及控制该用户区不响应来自调试工具或编程工具的数据访存, 是在所述密码和该用户区存储的密钥不匹配的情况下执行的。
14.可选地,所述用户区还用于存储校验码;
15.所述配置区还用于存储所对应用户区的硬件校验使能信息,所述硬 件校验使能
信息用于指示用户区所存储代码是否需要硬件校验;
16.其中,所述硬件对一用户区所存储代码的校验结果和该用户区存储 的校验码不一致的情况下,该用户区存储的代码被篡改。
17.可选地,所述配置区还用于存储所对应用户区的地址信息;
18.所述处理单元还用于根据一个配置区存储的地址信息确定该配置区 所对应用户区的范围。
19.可选地,所述地址信息包括用户区的起始地址和结束地址。
20.可选地,所述代码区还包括至少一个公共区,所述公共区是配置为 不加密的存储区域。
21.可选地,多个所述用户区存储的多个用户开发的代码中,至少一个 用户开发的代码需要调用其它用户开发的代码。
22.根据本发明的第二方面,提供一种片上系统,包括第一方面所述的 任一种存储安全组件。
23.根据本发明的第三方面,提供一种嵌入式系统,包括第一方面所述 的任一种存储安全组件。
24.根据本发明的第四方面,提供一种存储安全组件的配置方法,所述 安全组件包括存储单元和处理单元,所述配置方法包括:
25.在所述存储单元内配置代码区,所述代码区包括多个用户区且各所 述用户区被配置为存储一个用户开发的代码;
26.将所述处理单元配置为:在某一用户区加密的情况下,控制该用户 区对其它用户区所存储代码执行时的函数调用指令进行响应,且控制该 用户区不响应其它用户区所存储代码执行时的数据访存。
27.可选地,所述配置方法还包括:
28.在所述存储单元内配置多个配置区,所述配置区和所述用户区一一 对应且各所述配置区被配置为存储所对应用户区的保护使能信息;
29.所述处理单元还被配置为:根据一个配置区存储的保护使能信息确 定该配置区所对应用户区是否被配置为加密。
30.可选地,所述处理单元还被配置为:在某一用户区被配置为加密的 情况下,控制该用户区不响应来自调试工具或编程工具的数据访存。
31.可选地,所述用户区还被配置为存储密钥;
32.所述处理单元还被配置为:在某一用户区被配置为加密的情况下, 针对指向该用户区的数据访存获取用户输入的密码,并在所述密码和该 用户区存储的密钥匹配的情况下控制该用户区响应数据访存;
33.其中,所述处理单元还被配置为:在所述密码和该用户区存储的密 钥不匹配的情况下,控制该用户区不响应其它用户区所存储代码执行时 的数据访存,以及控制该用户区不响应来自调试工具或编程工具的数据 访存。
34.可选地,所述用户区还被配置为存储校验码;
35.所述配置区还被配置为存储所对应用户区的硬件校验使能信息,所 述硬件校验使能信息用于指示用户区所存储代码是否需要硬件校验;
36.其中,所述硬件对一用户区所存储代码的校验结果和该用户区存储 的校验码不一致的情况下,该用户区存储的代码被篡改。
37.可选地,所述配置区还被配置为存储所对应用户区的地址信息;
38.所述处理单元还被配置为:根据一个配置区存储的地址信息确定该 配置区所对应用户区的范围。
39.可选地,所述代码区还包括至少一个公共区,所述公共区被配置为 不加密的存储区域。
40.根据本发明的第五方面,提供一种代码调用方法,应用于多用户开 发代码间的调用,各用户开发的代码存储在存储单元的一个用户区,所 述方法包括:
41.在某一用户区被配置为加密的情况下,控制该用户区对其它用户区 所存储代码执行时的函数调用指令进行响应,且控制该用户区不响应其 它用户区所存储代码执行时的数据访存。
42.可选地,所述代码调用方法还包括:在某一用户区被配置为加密的 情况下,控制该用户区不响应来自调试工具或编程工具的数据访存。
43.可选地,所述用户区还用于存储密钥,所述代码调用方法还包括:
44.在某一用户区被配置为加密的情况下,针对指向该用户区的数据访 存获取用户输入的密码,并在所述密码和该用户区存储的密钥匹配的情 况下控制该用户区响应数据访存;
45.其中,在所述密码和该用户区存储的密钥不匹配的情况下,控制该 用户区不响应其它用户区所存储代码执行时的数据访存,以及控制该用 户区不响应来自调试工具或编程工具的数据访存。
46.本发明提供的存储安全组件,包括存储单元和处理单元,其中,存 储单元设有代码区,代码区包括多个用户区,各用户区用于存储一个用 户开发的代码,因而代码区分区而配置的多个用户区能够支持程序的多 用户开发;处理单元用于在某一用户区被配置为加密的情况下,控制该 用户区对其它用户区所存储代码执行时的函数调用指令进行响应,且控 制该用户区不响应其它用户区所存储代码执行时的数据访存,因而,其 它用户区无法以数据访问方式读取出加密用户区内的代码。这样,对于 多用户开发的程序,各用户区通过加密即可保护自己的程序不被其它用 户窃取,从而解决了多用户开发程序存在的代码被窃取的问题。
附图说明
47.通过以下参照附图对本发明实施例的描述,本发明的上述以及其他 目的、特征和优点将更为清楚,在附图中:
48.图1示出了是本发明一实施例所提供嵌入式系统的一种架构图;
49.图2示出了本发明一实施例所提供嵌入式处理器的一种架构图;
50.图3示出本发明一实施例所提供存储安全组件的一种架构图;
51.图4示出本发明一实施例所提供存储单元的一种架构图;
52.图5示出本发明一实施例提供代码调用方法的流程图。
具体实施方式
53.以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些 实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部 分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本 公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细 叙述。另外附图不一定是按比例绘制的。
54.嵌入式系统(embedded system)是一种完全嵌入受控器件内部, 为特定应用而设计的专用计算机系统。嵌入了嵌入式系统的受控器件即 嵌入式产品,常见的嵌入式产品有各种消费类电子产品和物联网设备等。 与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带 有特定要求的预先定义的任务。由于嵌入式系统只针对一项特殊的任务, 因而设计人员能够对它进行优化,实现尺寸的尽可能减小和成本的尽可 能的降低。
55.图1是本发明一个实施例所提供嵌入式系统100的一种架构图。尽管 各种具体的嵌入式系统在功能、外观界面和操作等多个方面各不相同, 甚至千差万别,但是基本的硬件结构却是大同小异的,因而图1能较好 地表示嵌入式系统的架构。
56.嵌入式系统和通用计算机的硬件系统有着高度的相似性,但是嵌入 式系统应用上的特点致使嵌入式系统在硬件的组成和实现形式上与通用 计算机系统又有较大区别。
57.首先,为满足嵌入式系统100在速度、体积和功耗上的要求,操作 系统、应用软件、特殊数据等需要长期保存的数据通常不使用磁盘这类 具有大容量且速度较慢的存储介质,图1所示的作为嵌入式系统100的存 储介质的存储器102通常是随机存储器或闪存(flash memory)。
58.其次,在嵌入式系统100中,需要a/d(模拟/数字转换)接口104, 用于测控的需要,这在通用计算机中用得很少。a/d接口104主要完成测 控中所需的模拟信号到数字信号的转换、和数字信号到模拟信号的转换。 由于单片机产生的是数字信号,在测试时需要模拟信号,因此,与通用 计算机不同,需要a/d(模拟/数字转换)接口104完成相关转换。
59.另外,工业中经常需要多个嵌入式系统串接在一起,完成相关功能, 因此嵌入式系统100还需要如图1所示设置将多个嵌入式系统串联的串 行接口105,而在通用计算机中则大多不需要。嵌入式系统100作为一个 基本的处理系统,常常在工业设计中需要将多个嵌入式系统100联成网 络,因此还需要如图1所示设置将嵌入式系统100联入网络的网络接口 106,这在通用计算机中大多也不需要。根据实际应用和规模的不同, 有些嵌入式系统100要采用图1所示的外部总线103。随着嵌入式系统100 应用领域的迅速扩张,嵌入式系统100越来越趋于个性化,根据自身特 点采用总线的种类也越来越多。为了对嵌入式处理器101内部电路进行 测试,处理器芯片普遍采用了边界扫描测试技术,相应地,嵌入式系统 100还设置了图1所示的调试接口107。
60.嵌入式系统100的处理核心是嵌入式处理器101。嵌入式处理器101 用于执行指令序列(即程序)。嵌入式处理器101执行每个指令的过程 包括:从存放指令的存储器102中取出指令、对取出的指令进行译码、 执行译码后的指令、保存指令执行结果等步骤,如此循环,直到执行完 指令序列中的全部指令或遇到停机指令。
61.为了实现上述过程,嵌入式处理器101如图2所示包括算术逻辑单元 (alu)201、寄存器202和控制单元203,其中,算术逻辑单元201完成 实际的运算处理,寄存器202用于存储运算处理过程中的指令和运算处 理中的中间结果等,控制单元203完成对存储器102的
访问的控制。
62.在执行待执行指令时,alu 201将待执行指令从存储器102中搬运到 寄存器202中,并获取下一个取指地址,可以是根据取指算法计算获得 下一个取指地址。取指算法例如包括:根据指令长度递增地址或递减地 址,这在程序存储在存储器102中一个连续区域时较为常用,这种情况 下alu 201需获取程序存储的起始地址来启动程序的执行。alu 201因预 设任务而被指定所执行程序,上述获取程序存储的起始地址及根据取指 算法获得后续取指地址,只是指定alu 201所执行程序的一种方式。这 里指定alu 201所执行程序,不包括指定程序执行时所调用的函数代码, 程序执行时所调用的函数代码由程序内对应指令指定,以下描述亦同。
63.取出指令后,alu 201进入指令译码阶段,其按照预定的指令格式, 对取回的指令进行译码,以获得取回的指令所需的操作数获取信息,从 而为指令的执行做准备。操作数获取信息例如指向存储器102中的地址 等。译码后,alu按照操作数获取信息,获取存储器102中存储的操作 数执行处理。
64.alu 201在执行数据访存指令时,需要访问存储器102,以获取其 中存储的信息或提供需要写入存储器102中的数据。
65.数据访存指令被alu 201获取之后,alu 201可以对数据访存指令 进行译码处理,使得数据访存指令的源操作数可被获取。数据访存指令 的源操作数通常包括地址操作数。alu 201对该地址操作数进行运算以 获得数据访存指令对应的虚拟地址。alu 201根据该虚拟地址向控制单 元203发起地址转译请求,该地址转译请求包括与数据访存指令的地址 操作数对应的虚拟地址。控制单元203响应地址转译请求,并根据与该 虚拟地址匹配的表项将地址转译请求中的虚拟地址转换为物理地址,使 得alu 201可以根据转译后的物理地址以数据访存的方式访问存储器 102。
66.根据功能的不同,数据访存指令包括加载指令和存储指令。加载指 令的执行过程通常不需要对存储器102中的信息进行修改,alu 201只 需要根据加载指令的地址操作数读取存储于存储器102或外部存储设备 中的数据。不同于加载指令,存储指令的源操作数不仅包括地址操作数, 还包括数据信息,存储指令的执行过程通常需要对存储器102进行修改。 存储指令的数据信息可以指向写入数据,该写入数据的来源可以是运算 指令、加载指令等指令的执行结果,也可以是寄存器202中的数据。
67.目前,许多嵌入式产品涉及到程序的多用户开发,即嵌入式处理器 101执行的程序由多个用户开发。对于多用户开发的程序,不同用户所 开发代码常常需要相互调用。例如原厂和方案商共同开发某款程序,方 案商就需要调用原厂开发的全部或部分代码,其中,原厂只要提供函数 名和对应的函数地址,方案商就可以调用需要的函数实现程序开发。因 而,alu 201还涉及到对函数调用指令的执行。
68.alu 201在执行函数调用指令时,需要访问存储器102,以获取其 中所存储代码的运行结果。
69.函数调用指令被alu 201获取之后,alu 201可以对函数调用指令 进行译码处理,使得函数调用指令的源操作数可被获取。不同于数据访 存指令,函数调用指令的源操作数不仅包括地址操作数,还包括函数运 行所需的自变量信息。函数调用指令的执行过程即以函数调用指令的方 式将自变量信息发送给指定地址的函数并接收函数运行所得到的因变
量 信息。
70.对于多用户开发的程序,出于信息安全的考量,不同用户所开发代 码相互调用的同时要确保各用户开发的代码不被其它用户窃取。现在市 面上的类似产品最多支持多用户共同开发程序,不同用户之间是无法做 到所开发代码的相互保密的,代码被窃取的风险较大。鉴于此,本发明 实施例提供了一种存储安全组件。对于嵌入式系统100来说,本发明实 施例提供的存储安全组件用作嵌入式系统100的存储器102,即可确保 嵌入式处理器101执行的多用户开发程序避免代码窃取风险。
71.图3所示为本发明实施例提供的存储安全组件的一种结构示意图。 参照图3,存储安全组件300包括存储单元310和处理单元320。
72.图4所示为本发明实施例提供的存储单元310的一种结构示意图。 参照图4,存储单元310设有代码区311,代码区311包括多个用户区, 各用户区用于存储一个用户开发的代码。一些示例中,多个用户区存储 的多个用户开发的代码中,至少一个用户开发的代码需要调用其它用户 开发的代码。
73.具体地,图4中代码区311包括boot区、user1区和user2区 这三个用户区,其中,boot区存储的代码由原厂开发,user1区存储 的代码由第一方案商开发,user2区存储的代码由第二方案商开发。第 一方案商基于原厂开发的代码进行代码开发,因而user1区存储的代 码执行时会通过函数调用指令调用boot区存储的一些函数代码;第二 方案商基于原厂和第一方案商开发的代码进行代码开发,因而user2 区存储的代码执行时会通过函数调用指令调用boot区和user1区中 的函数代码。
74.上述user2区存储的代码执行,是因为存储安全组件300用在图1 所示的嵌入式系统100后,图2所示alu 201为了完成预设任务而被指 定要启动的,这种情况下user2区存储的代码即为指定alu 201要执 行的程序。上述user1区存储的代码执行,同样可以是因为存储安全 组件300用在图1所示的嵌入式系统100后,图2所示alu 201为了完 成预设任务而被指定要启动的,这种情况下user1区存储的代码即为 指定alu 201要执行的程序;此外,user1区存储的代码执行,也可 以是因user2区所存储代码的调用启动的。
75.应当理解的是,图4所示的存储单元310以及存储单元310所包括 的多个用户区内代码的调用关系,只是一种示例,并不表示对本发明的 限定。实践中,存储单元310因需求设置相应数量的用户区,多个用户 区内的代码也因需求存在调用关系。
76.处理单元320则用于在某一用户区被配置为加密的情况下,控制该 用户区对其它用户区所存储代码执行时的函数调用指令进行响应,且控 制该用户区不响应其它用户区所存储代码执行时的数据访存。
77.例如,图4中user1区被配置为加密,则user2区所存储代码执 行时发起的指向user1区的数据访存,并不能得到user1区的响应, 这样user2区无法以数据访问方式读取user1区所存储的代码, user1区所存储的代码不会被user2区的用户窃取;并且,user2区 也无法以数据访问方式修改user1所存储的代码,user1区所存储的 代码不会被user2区的用户篡改。但是,user2区所存储代码执行时 发起的指向user1区的函数调用指令,会得到user1区的响应,即能 得到user1区内对应函数代码执行而生成的因变量信息。
78.结合图1,存储安全组件300作为存储器102使用时,是通过总线 103和嵌入式处理器101连接的。嵌入式处理器101执行程序时发起的 指向存储器102内某一用户区的数据访
存和函数调用指令,是通过总线 103传输给存储器102包括的处理单元320的。现有技术中,总线103 的接口上有一个特定信号用来区分传输给存储器102的是数据访存还是 函数调用指令。例如,ahb(advanced high-performance bus,高级高 性能总线)接口中上述特定信号高电平代表数据访存,低电平代表函数 调用指令。因而,处理单元320能够对数据访存和函数调用指令进行区 分。
79.本发明实施例提供的存储安全组件300,加密用户区不响应其它用 户区所存储代码执行时的数据访存,因而其它用户区无法以数据访问方 式读取出加密用户区内的代码,各用户区通过加密即可保护自己的代码 不被其它用户窃取;并且,其它用户区也无法以数据访问方式修改加密 用户区内的代码,各用户区通过加密即可保护自己的代码不被其它用户 篡改。对于多用户开发的程序来说,不同用户开发的代码在相互调用的 同时实现了相互保密,信息安全得以保证。
80.参照图4,一个可选实施例中,存储单元310还设有多个配置区312, 配置区312和用户区一一对应且各配置区312用于存储所对应用户区的 保护使能信息peni;处理单元320还用于根据一个配置区312存储的保 护使能信息peni确定该配置区312所对应用户区是否被配置为加密。 上述配置区312存储的保护使能信息peni是所对应用户区的用户写入 的,从而用户区的用户通过在配置区312内写入保护使能信息peni来 实现对用户区是否加密的配置。图4中,boot区的保护使能信息peni 即pen0;user1区的保护使能信息peni即pen1;user2区的保护 使能信息peni即pen2。
81.进一步,处理单元320还用于在某一用户区被配置为加密的情况下, 控制该用户区不响应来自调试工具或编程工具的数据访存。参照图1, 调试工具通过调试接口107连接到嵌入式系统100,调试接口107通过 总线103和存储器102连接,如上所述,作为存储器102的存储安全组 件300可以通过总线103实现对来自调试工具的数据访存的识别,从而 有效防止调试工具窃取代码或篡改代码。对于编程工具来说,嵌入式处 理器101是其所编程序的执行器件,如上所述,嵌入式处理器101执行 程序时发起的数据访存能被处理单元320识别,因而处理单元320能够 控制加密用户区不响应来自编程工具的数据访存,从而编程工具无法窃 取或篡改加密用户区存储的代码。
82.图4中以user2区为例示意了一个用户区存储的数据。参照图4, 一个可选实施例中,用户区除了存储用户的代码(code)外还存储有密 钥(key)。相应地,处理单元320还用于在某一用户区被配置为加密 的情况下,针对指向该用户区的数据访存获取用户输入的密码,并在密 码和该用户区存储的密钥匹配的情况下控制该用户区响应数据访存;上 述处理单元320控制该用户区不响应其它用户区所存储代码执行时的数 据访存,以及控制该用户区不响应来自调试工具或编程工具的数据访存, 是在密码和该用户区存储的密钥不匹配的情况下执行的。
83.具体地,用户区存储的密钥通常包括多位,例如包括128位,如密 钥包括图4所示的key[31:0]、key[63:32]、key[95:64]和key[127:96]。 处理单元320在接收到用户输入的密码后,可以依次分段进行密码和密 钥的匹配。以图4所示的128位密钥为例,可以先将用户输入密码的前 32位和key[31:0]进行对应位的比对,然后将用户输入密码的第33位至 第64位和key[63:32]进行对应位的比对,接着将用户输入密码的第65 位至第96位和key[95:64]进行对应位的比对,最后将用户输入密码的第 97位至第128位和key[127:96]进行
对应位的比对。
[0084]
依次分段进行密码和密钥的匹配中,只要有一位不匹配,则表示用 户输入的密码和该用户区存储的密钥不匹配;只有所有位都匹配,才表 示用户输入的密码和该用户区存储的密钥匹配。
[0085]
实践中,各用户只知道自己用户区所存储的密钥,因而通过输入和 用户区所存储密钥匹配的密码即可取出自己用户区存储的代码,从而实 现代码的执行。
[0086]
当然,该实施例中,若其它用户区的用户获知加密用户区存储的密 钥,同样能够通过数据访存读取和修改加密用户区存储的代码。同理, 若用户通过调试工具或编程工具能够输入和加密用户区所存储密钥匹配 的密码,则调试工具和编程工具同样能够通过数据访存读取和修改加密 用户区存储的代码。
[0087]
上述用户区,若被配置为不加密,则既能够响应函数调用指令,又 能够响应数据访存。应当理解的是,对于一个不加密的用户区来说,无 需用户输入密码。
[0088]
参照图4,一个可选实施例中,用户区除了存储用户的代码(code) 外还存储有校验码(crc)。相应地,配置区312还用于存储所对应用 户区的硬件校验使能信息ceni,硬件校验使能信息ceni用于指示用户 区所存储代码是否需要硬件校验;其中,硬件对一用户区所存储代码的 校验结果和该用户区存储的校验码不一致的情况下,该用户区存储的代 码被篡改。
[0089]
图4中,boot区的硬件校验使能信息ceni即cen0;user1区 的硬件校验使能信息ceni即cen1;user2区的硬件校验使能信息 ceni即cen2。
[0090]
上述硬件可以理解为使用存储安全组件300的电子设备,也可以理 解为使用存储安全组件300的电子设备所包括的处理器。以存储安全组 件300作为嵌入式系统100的存储器102以及硬件理解为嵌入式处理器 101为例,硬件校验使能信息ceni则是用于指示用户区所存储代码是否 需要嵌入式处理器101校验。
[0091]
参照图1,若需要嵌入式处理器101校验,则嵌入式处理器101在 获得用户区内代码的读取权限时,通过总线103自动读取用户区内代码 并对代码进行校验,校验结果可以存储在图2所示的寄存器202中,以 便后续将从寄存器202中读取的校验结果和从用户区读取的校验码进行 比较。对于未加密的用户区,存储安全组件300启动后嵌入式处理器101 就获得该用户区内代码的读取权限;对于加密的用户区,处理单元320 确定用户输入的密码和该用户区存储的密钥匹配的情况下嵌入式处理器 101获得该用户区内代码的读取权限。
[0092]
具体地,对代码进行校验,是为了确定代码是否被篡改。校验方式 例如有循环冗余校验(cyclic redundancy check,简称crc)。在校验 方式为crc校验的情况下,硬件读取用户区内代码并根据预先获得的算 法计算crc校验码,计算得到的crc校验码即为硬件得到的校验结果。 一些示例中,硬件根据预先获得的算法计算得到的crc校验码是32位 的,用户区存储的校验码也是32位的,如图4所示的crc[31:0],该这 样,硬件计算得到的crc校验码和用户区存储的校验码只有各位皆对应 一致的情况下,才表示硬件对一用户区所存储代码的校验结果和该用户 区存储的校验码一致。
[0093]
该实施例中,硬件对一用户区所存储代码的校验结果和该用户区存 储的校验码不一致的情况下,该用户区存储的代码被篡改,硬件可以因 此确定不再执行该用户区的代
码,从而确保自身不因代码被篡改而受到 攻击。当然,硬件对一用户区所存储代码的校验结果和该用户区存储的 校验码一致的情况下,该用户区存储的代码未被篡改,硬件可以放心执 行该用户区的代码。
[0094]
参照图4,一个可选实施例中,配置区312还用于存储所对应用户 区的地址信息;处理单元320还用于根据一个配置区312存储的地址信 息确定该配置区所对应用户区的范围。
[0095]
上述数据访存或函数调用指令指向某一用户区,是因为指令转译后 的物理地址落在地址信息指示的该用户区的范围。
[0096]
具体地,配置区312存储的地址信息可以是用户区的起始地址sai 和结束地址eai。起始地址sai和结束地址eai限定一个连续的存储空 间为用户区。图4中,boot区的起始地址sai即sa0,结束地址eai 即ea0;user1区的起始地址sai即sa1,结束地址eai即ea1;user2 区的起始地址sai即sa2,结束地址eai即ea2。
[0097]
上述配置区312存储的起始地址sai和结束地址eai是所对应用户 区的用户写入的,从而用户区的用户通过在配置区312内写入起始地址 sai和结束地址eai来设定用户区的范围。在用户区被配置为加密的情 况下,用户通过在配置区312内写入起始地址sai和结束地址eai来设 定自己区域受保护的范围。
[0098]
参照图4,一个可选实施例中,代码区311还包括至少一个公共区, 公共区是配置为不加密的存储区域,所有数据访存都可以无需密码直接 读取公共区内存储的数据或向公共区写入数据。图4中,代码区311包 括public0区、public1区和public2区这三个公共区。公共区可以用来存 放用户区所存储代码的标注信息,例如代码版本信息和运行代码设备的 配置信息等,这样利于多用户开发程序更易使用。
[0099]
随着超大规模集成电路(very large scale integration)和半导体工艺 的迅速发展,上述存储安全组件可实现在一个硅片上,即为片上系统 (soc)。该片上系统在使用时,以芯片的形式安装在电子设备中,从而 作为电子设备的一个器件。
[0100]
相应于上述存储安全组件300,本发明实施例还提供了一种存储安 全组件的配置方法,安全组件包括存储单元和处理单元,配置方法包括:
[0101]
在存储单元内配置代码区,代码区包括多个用户区且各用户区被配 置为存储一个用户开发的代码;
[0102]
将处理单元配置为:在某一用户区加密的情况下,控制该用户区对 其它用户区所存储代码执行时的函数调用指令进行响应,且控制该用户 区不响应其它用户区所存储代码执行时的数据访存。
[0103]
进一步,配置方法还包括:
[0104]
在存储单元内配置多个配置区,配置区和用户区一一对应且各配置 区被配置为存储所对应用户区的保护使能信息;
[0105]
处理单元还被配置为:根据一个配置区存储的保护使能信息确定该 配置区所对应用户区是否被配置为加密。
[0106]
进一步,处理单元还被配置为:在某一用户区被配置为加密的情况 下,控制该用户区不响应来自调试工具或编程工具的数据访存。
[0107]
进一步,用户区还被配置为存储密钥;
[0108]
处理单元还被配置为:在某一用户区被配置为加密的情况下,针对 指向该用户区的数据访存获取用户输入的密码,并在密码和该用户区存 储的密钥匹配的情况下控制该用户区响应数据访存;
[0109]
其中,处理单元还被配置为:在密码和该用户区存储的密钥不匹配 的情况下,控制该用户区不响应其它用户区所存储代码执行时的数据访 存,以及控制该用户区不响应来自调试工具或编程工具的数据访存。
[0110]
进一步,用户区还被配置为存储校验码;
[0111]
配置区还被配置为存储所对应用户区的硬件校验使能信息,硬件校 验使能信息用于指示用户区所存储代码是否需要硬件校验;
[0112]
其中,硬件对一用户区所存储代码的校验结果和该用户区存储的校 验码不一致的情况下,该用户区存储的代码被篡改。
[0113]
进一步,配置区还被配置为存储所对应用户区的地址信息;
[0114]
处理单元还被配置为:根据一个配置区存储的地址信息确定该配置 区所对应用户区的范围。
[0115]
进一步,代码区还包括至少一个公共区,公共区被配置为不加密的 存储区域。
[0116]
相应于上述存储安全组件300,本发明实施例还提供了一种代码调 用方法,该代码调用方法应用于多用户开发代码间的调用,各用户开发 的代码存储在存储单元310的一个用户区。该代码调用方法包括:在某 一用户区被配置为加密的情况下,控制该用户区对其它用户区所存储代 码执行时的函数调用指令进行响应,且控制该用户区不响应其它用户区 所存储代码执行时的数据访存。
[0117]
具体地,代码调用方法的执行流程可以如图5所示。参照图5,代 码调用方法包括:
[0118]
步骤s10,判断收到的指令是函数调用指令还是数据访存,其中, 若是函数调用指令则执行步骤s20,若是数据访存则执行步骤s30。
[0119]
步骤s20,响应函数调用指令。
[0120]
步骤s30,判断数据访存指向的用户区是否被配置为加密,其中, 若被配置为加密则执行步骤s40,反之则执行步骤s50。
[0121]
步骤s40,不响应数据访存。
[0122]
步骤s50,响应数据访存。
[0123]
进一步,所述码调用方法,还包括:在某一用户区被配置为加密的 情况下,控制该用户区不响应来自调试工具或编程工具的数据访存。
[0124]
进一步,用户区还用于存储密钥,所述代码调用方法还包括:在某 一用户区被配置为加密的情况下,针对指向该用户区的数据访存获取用 户输入的密码,并在密码和该用户区存储的密钥匹配的情况下控制该用 户区响应数据访存;其中,控制该用户区不响应其它用户区所存储代码 执行时的数据访存,以及控制该用户区不响应来自调试工具或编程工具 的数据访存,是在密码和该用户区存储的密钥不匹配的情况下执行的。
[0125]
上述方法实施例的实现细节已经在前面的装置实施例部分详细描 述,可以参考前面的装置实施例的部分,这里不再赘述。
[0126]
本领域的技术人员能够理解,本发明可以实现为系统、方法和计算 机程序产品。因此,本公开可以具体实现为以下形式,即完全的硬件、 完全的软件(包括固件、驻留软件、
微代码),还可以实现为软件和硬 件结合的形式。此外,在一些实施例中,本发明还可以实现为一个或多 个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包 含计算机可读的程序代码。
[0127]
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质 可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储 介质例如但不限于为电、磁、光、电磁、红外线或半导体的系统、装置 或器件,或其他任意以上的组合。计算机可读存储介质的更具体的例子 包括:具体一个或多个导线的电连接,便携式计算机磁盘、硬盘、随机 存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器 (eprom或者闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、 光存储器、磁存储器或者上述任意合适的组合。在本文中,计算机可读 的存储介质可以是任意包含或存储程序的有形介质,该程序可以被处理 单元、装置或者器件使用,或者与其结合使用。
[0128]
计算机可读信号介质可以包括在基带中或者作为截波一部分传播的 数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可 以采用多种形式,包括但不限于电磁信号、光信号或者其他任意合适的 组合。计算机可读的信号介质还可以是计算机可读存储介质之外的任何 计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指 令系统、装置或器件使用或者与其结合使用的程序。
[0129]
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包 括但不限于无线、电线、光缆、rf等等,以及上述任意合适的组合。
[0130]
可以以一种或者多种程序设计语言或者组合来编写用于执行本公开 实施例的计算机程序代码。程序设计语言包括面向对象的程序设计语言, 例如java、c ,还可以包括常规的过程式程序设计语言,例如c。程 序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、 作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上 执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情 形中,远程计算机可以通过任意种类的网络包括局域网(lan)或广域 网(wan)连接到用户计算机,或者,可以连接到外部计算机(例如利 用因特网服务提供商来通过因特网连接)。
[0131]
以上仅为本公开的优选实施例,并不用于限制本公开,对于本领域 技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原 理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护 范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献