用于控制应用程序访问存储器的方法和装置转让专利

申请号 : CN201610586829.3

文献号 : CN107644173B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 山岗李毅唐冬捷

申请人 : 澜起科技股份有限公司

摘要 :

本申请公开了一种用于控制应用程序访问存储器的方法,包括:接收应用程序提供的包含有第一访问密钥的第一访问请求;验证第一访问密钥;在第一访问密钥验证成功时,生成针对应用程序的第二访问密钥;存储第二访问密钥,并将第二访问密钥提供给应用程序;接收应用程序提供的第二访问请求,其中第二访问请求中包含有目标地址和第二访问密钥;监测目标地址是否属于指示存储器中预定存储位置的参考地址空间,并验证第二访问密钥;根据目标地址是否属于参考地址空间的监测结果和第二访问密钥的验证结果生成访问控制命令,以限制或允许应用程序访问存储器。

权利要求 :

1.一种用于控制应用程序访问存储器的装置,其特征在于,包括:访问控制器,其用于接收应用程序提供的包含有第一访问密钥的第一访问请求,并且验证所述第一访问密钥;所述访问控制器还用于接收所述应用程序提供的第二访问请求,其中所述第二访问请求中包含有目标地址和第二访问密钥,并且所述访问控制器监测所述目标地址是否属于指示存储器中预定存储位置的参考地址空间,以及验证所述第二访问密钥;

密钥生成器,其用于在所述第一访问密钥验证成功时,生成针对所述应用程序的第二访问密钥,并将其提供给所述应用程序;以及其中,所述访问控制器还用于从所述密钥生成器接收所述第二访问密钥,并将其存储以用于从所述应用程序接收的第二访问密钥的验证;以及根据所述目标地址是否属于所述参考地址空间的监测结果以及从所述应用程序接收的第二访问密钥的验证结果生成访问控制命令,以限制或允许所述应用程序访问所述存储器。

2.根据权利要求1所述的装置,其特征在于,所述参考地址空间是连续的物理地址空间。

3.根据权利要求1所述的装置,其特征在于,还包括:寄存器时钟驱动器,其被耦接到所述访问控制器以接收所述访问控制命令,并且根据所述访问控制命令限制或允许所述应用程序访问所述存储器。

4.根据权利要求3所述的装置,其特征在于,所述寄存器时钟驱动器符合JEDEC DDR4寄存器标准。

5.根据权利要求1所述的装置,其特征在于,所述密钥生成器是随机密钥生成器。

6.根据权利要求1所述的装置,其特征在于,还包括:计时器,其用于对所生成的第二访问密钥的有效时间进行计时;

所述访问控制器还被用于在所述第二访问密钥的有效时间超出预定时间阈值后,停止将所述第二访问密钥用于验证。

7.根据权利要求1所述的装置,其特征在于,还包括:访问记录器,其被耦接到所述访问控制器,用于在所述第一访问密钥验证失败时记录所述第一访问请求的相关信息。

8.根据权利要求1所述的装置,其特征在于,所述第二访问请求还包括对所述存储器进行的数据访问的操作类型,并且所述访问控制器中具有操作权限,所述访问控制器进一步用于根据所述操作类型是否符合所述操作权限的比较结果、所述目标地址是否属于所述参考地址空间的监测结果以及从所述应用程序接收的第二访问密钥的验证结果生成访问控制命令。

9.根据权利要求1所述的装置,其特征在于,所述第一访问请求还包括密钥标识,所述访问控制器还用于基于所述密钥标识获取用于验证所述第一访问密钥的本地访问密钥。

10.一种用于控制应用程序访问存储器的方法,其特征在于,包括:接收应用程序提供的包含有第一访问密钥的第一访问请求;

验证所述第一访问密钥;

在所述第一访问密钥验证成功时,生成针对所述应用程序的第二访问密钥;

存储所述第二访问密钥,并且将所述第二访问密钥提供给所述应用程序;

接收所述应用程序提供的第二访问请求,其中所述第二访问请求中包含有目标地址和所述第二访问密钥;

监测所述目标地址是否属于指示存储器中预定存储位置的参考地址空间,并且利用存储的第二访问密钥来验证从所述应用程序接收的第二访问密钥;

根据所述目标地址是否属于所述参考地址空间的监测结果以及从所述应用程序接收的第二访问密钥的验证结果生成访问控制命令,以限制或允许所述应用程序访问所述存储器。

11.根据权利要求10所述的方法,其特征在于,所述参考地址空间是连续的物理地址空间。

12.根据权利要求11所述的方法,其特征在于,所述目标地址是虚拟地址,所述方法还包括:将所述目标地址转换为物理地址以与所述参考地址空间进行比较。

13.根据权利要求10所述的方法,其特征在于,所述第二访问密钥是随机生成的。

14.根据权利要求10所述的方法,其特征在于,还包括:对所生成的第二访问密钥的有效时间进行计时;以及

在所述第二访问密钥的有效时间超出预定时间阈值后,停止将所述第二访问密钥用于验证。

15.根据权利要求10所述的方法,其特征在于,还包括:在所述第一访问密钥验证失败时记录所述第一访问请求的相关信息。

16.根据权利要求10所述的方法,其特征在于,所述第二访问请求还包括对所述存储器进行的数据访问的操作类型,所述生成访问控制命令的步骤进一步包括:监测所述操作类型是否符合预设的操作权限;以及

根据所述操作类型是否符合所述操作权限的比较结果、所述目标地址是否属于所述参考地址空间的监测结果以及所述第二访问密钥的验证结果生成访问控制命令。

17.根据权利要求10所述的方法,其特征在于,所述第一访问请求还包括密钥标识,所述方法还包括:基于所述密钥标识获取用于验证所述第一访问密钥的本地访问密钥。

18.一种用于控制应用程序访问存储器的方法,其特征在于,接收应用程序提供的第一配置请求,所述第一配置请求中包含有第一配置密钥;

验证所述第一配置密钥;

在所述第一配置密钥验证成功时,生成针对所述应用程序的第二配置密钥;

存储所述第二配置密钥,并且将所述第二配置密钥提供给所述应用程序;

接收所述应用程序提供的第二配置请求,其中所述第二配置请求中包含访问配置规则数据和所述第二配置密钥,其中所述访问配置规则数据用于定义指示存储器中预定存储位置的参考地址空间的访问权限;

利用存储的第二配置密钥来验证从所述应用程序接收的第二配置密钥;以及在从所述应用程序接收的第二配置密钥验证成功时,存储所述访问配置规则数据以用于所述存储器的安全访问。

19.根据权利要求18所述的方法,其特征在于,所述参考地址空间是连续的物理地址空间。

20.根据权利要求18所述的方法,其特征在于,所述第二配置密钥是随机生成的。

21.根据权利要求18所述的方法,其特征在于,还包括:在所述第一配置密钥验证失败时记录所述第一配置请求的相关信息。

22.根据权利要求18所述的方法,其特征在于,所述访问配置规则数据还包括对所述存储器进行的数据访问的操作权限。

23.一种用于控制应用程序访问存储器的方法,其特征在于,包括:向存储器发送第一访问请求,其中所述第一访问请求中包含有第一访问密钥;

如果所述第一访问密钥验证成功,接收第二访问密钥;

向所述存储器发送第二访问请求,其中所述第二访问请求中包含有目标地址和所述第二访问密钥;以及根据所述目标地址是否属于参考地址空间的监测结果以及所述第二访问密钥的验证结果访问所述存储器,其中所述参考地址空间指示所述存储器中的预定存储位置;

其中当所述目标地址属于所述参考地址空间并且所述第二访问密钥的验证失败时,禁止访问所述存储器。

说明书 :

用于控制应用程序访问存储器的方法和装置

技术领域

[0001] 本申请涉及计算机技术领域,更具体地,涉及一种用于控制应用程序访问存储器的方法和装置。

背景技术

[0002] 互联网技术的迅速发展使得计算机、移动终端等网络设备能够相互连通并进行通信。通过这些相互连通的网络设备,人们能够非常方便地获取信息。然而,在便利信息获取的同时,数据和信息安全问题也日益凸显。联网的设备很容易因偶然或恶意的原因而受到未授权外部设备的攻击,从而造成内部数据的破坏、泄露或更改。
[0003] 因此,有必要改进现有的计算机或其他电子设备,以提高其数据安全性。

发明内容

[0004] 本申请的一个目的在于改进现有的计算机或电子设备,以提高其数据安全性和系统的稳定性。
[0005] 在本申请的一个方面,提供了一种用于控制应用程序访问存储器的装置,包括:访问控制器,其用于接收应用程序提供的包含有第一访问密钥的第一访问请求,并且验证所述第一访问密钥;所述访问控制器还用于接收所述应用程序提供的第二访问请求,其中所述第二访问请求中包含有目标地址和第二访问密钥,并且所述访问控制器还用于监测所述目标地址是否属于指示存储器中预定存储位置的参考地址空间,以及验证所述第二访问密钥;密钥生成器,其用于在所述第一访问密钥验证成功时,生成针对所述应用程序的第二访问密钥,并将其提供给所述应用程序;以及其中,所述访问控制器还用于从所述密钥生成器接收所述第二访问密钥,并将其存储以用于从所述应用程序接收的第二访问密钥的验证;以及根据所述目标地址是否属于所述参考地址空间的监测结果以及从所述应用程序接收的第二访问密钥的验证结果生成访问控制命令,以限制或允许所述应用程序访问所述存储器。
[0006] 在本申请的另一方面,还提供了一种用于控制应用程序访问存储器的方法,包括:接收应用程序提供的包含有第一访问密钥的第一访问请求;验证所述第一访问密钥;在所述第一访问密钥验证成功时,生成针对所述应用程序的第二访问密钥;存储所述第二访问密钥,并且将所述第二访问密钥提供给所述应用程序;接收所述应用程序提供的第二访问请求,其中所述第二访问请求中包含有目标地址和所述第二访问密钥;监测所述目标地址是否属于指示存储器中预定存储位置的参考地址空间,并且利用存储的第二访问密钥来验证从所述应用程序接收的第二访问密钥;根据所述目标地址是否属于所述参考地址空间的监测结果以及从所述应用程序接收的第二访问密钥的验证结果生成访问控制命令,以限制或允许所述应用程序访问所述存储器。
[0007] 在本申请的又一方面,还提供了一种用于控制应用程序访问存储器的方法,包括接收应用程序提供的第一配置请求,所述第一配置请求中包含有第一配置密钥;验证所述第一配置密钥;在所述第一配置密钥验证成功时,生成针对所述应用程序的第二配置密钥;存储所述第二配置密钥,并且将所述第二配置密钥提供给所述应用程序;接收所述应用程序提供的第二配置请求,其中所述第二配置请求中包含访问配置规则数据和所述第二配置密钥,其中所述访问配置规则数据用于定义指示存储器中预定存储位置的参考地址空间的访问权限;利用存储的第二配置密钥来验证从所述应用程序接收的第二配置密钥;以及在从所述应用程序接收的第二配置密钥验证成功时,存储所述访问配置规则数据以用于所述存储器的安全访问。
[0008] 在本申请的再一方面,还提供了一种用于控制应用程序访问存储器的方法,包括:向存储器发送第一访问请求,其中所述第一访问请求中包含有第一访问密钥;接收第二访问密钥;向所述存储器发送第二访问请求,其中所述第二访问请求中包含有目标地址和所述第二访问密钥;以及访问所述存储器。
[0009] 以上为本申请的概述,可能有简化、概括和省略细节的情况,因此本领域的技术人员应该认识到,该部分仅是示例说明性的,而不旨在以任何方式限定本申请范围。本概述部分既非旨在确定所要求保护主题的关键特征或必要特征,也非旨在用作为确定所要求保护主题的范围的辅助手段。

附图说明

[0010] 通过下面说明书和所附的权利要求书并与附图结合,将会更加充分地清楚理解本申请内容的上述和其他特征。可以理解,这些附图仅描绘了本申请内容的若干实施方式,因此不应认为是对本申请内容范围的限定。通过采用附图,本申请内容将会得到更加明确和详细地说明。
[0011] 图1是一种现有计算机系统架构的示意图;
[0012] 图2示出了根据本申请一个实施例的用于控制应用程序访问存储器的装置200;
[0013] 图3示出了根据本申请一个实施例的用于控制应用程序访问存储器的方法300;
[0014] 图4示出了根据本申请一个实施例的用于控制应用程序访问存储器的方法400;
[0015] 图5示出了根据本申请一个实施例的用于控制应用程序访问存储器的方法500。

具体实施方式

[0016] 在下面的详细描述中,参考了构成其一部分的附图。在附图中,类似的符号通常表示类似的组成部分,除非上下文另有说明。详细描述、附图和权利要求书中描述的说明性实施方式并非旨在限定。在不偏离本申请的主题的精神或范围的情况下,可以采用其他实施方式,并且可以做出其他变化。可以理解,可以对本申请中一般性描述的、在附图中图解说明的本申请内容的各个方面进行多种不同构成的配置、替换、组合,设计,而所有这些都明确地构成本申请内容的一部分。
[0017] 本申请的发明人发现,对于计算机系统、移动终端或其他智能化电子设备而言,内存接口是其系统架构中的关键接口。图1是一种现有计算机系统的示意图。如图1所示,该计算机系统(例如服务器)包括硬件系统10,其中具有中央处理器12和内部存储器18,这两个模块通过存储器接口16(例如,DDR3、DDR4接口等)相互连接。此外,中央处理器12还可以通过PCIE(PCI Express)接口20连接以太网接口22(进而连接到互联网),以及通过DMI(直接媒体接口)接口24连接主板芯片26。
[0018] 该计算机系统还包括操作系统30,其由硬件系统10运行,并且用于管理和控制硬件系统10与软件资源(例如应用程序40)。当该计算机系统正常运行时,各种应用程序40均运行于操作系统30(例如Linux、Windows操作系统等)中。中央处理器12执行以机器码形式编译并存储的应用程序40,并且向内部存储器18中写入数据或者从内部存储器18中读出数据。
[0019] 对于图1所示的计算机系统所进行的针对内部存储器18的数据访问操作,其通常都需要由中央处理器12经由存储器接口16访问内部存储器18来实现。本申请的发明人发现,可以通过在存储器接口16中设置访问控制机制来限制访问请求(例如,读出、写入请求或其他请求)对内部存储器18的访问,从而避免内部存储器18中的数据未经授权地调用或修改,其中该访问请求来自于中央处理器12,并且是由中央处理器12运行的应用程序40所提供的。
[0020] 基于上述发明构思,本申请的发明人提供了一种通过控制中央处理器与存储器之间的数据访问来限制应用程序非法访问存储器的方法和装置。该方法和装置结合地使用了软件和硬件手段来进行数据访问的安全验证,并且通过设置多次密钥验证来提高数据访问的安全性。
[0021] 图2示出了根据本申请一个实施例的用于控制应用程序访问存储器的装置200。在一些实施例中,装置200可以集成在存储器中,作为存储器接口的一部分。
[0022] 如图2所示,该装置200可以被设置在中央处理器(CPU)201和存储器的存储模组203之间,其提供了特定的安全访问机制,以针对性地控制CPU 201与存储模组203之间的数据交互。其中,中央处理器201可以运行某个或某些应用程序,并且基于这些应用程序中代码、指令等生成相应的访问请求,从而请求对存储模组203的访问,例如向其中写入数据或者从其中读出数据。
[0023] 在图2所示的实施例中,存储器被表示为存储模组203,其可以是符合JEDEC双倍速率同步动态随机存取存储器(SDRAM)标准的内部存储器,例如,JEDEC DDR4寄存器标准,或者包括JEDEC DDR1、DDR2、DDR3、DDR4等的其他存储器标准。此外,存储模组203也可以是例如单倍速率的SDRAM或RAMBUS内部存储器。在此所述的存储模组203可以包括一颗或多颗内存颗粒。
[0024] 在一些实施例中,装置200可以包括寄存器时钟驱动器(RCD)205。RCD 205通过命令/地址(Command/Address,C/A)信道耦接到CPU 201,以从CPU 201接收应用程序提供的命令/地址信号(C/A信号),应用程序提供的访问请求即以C/A信号的形式发送给RCD 205。对于符合DDR4标准的存储器系统,C/A信道可以包括管脚A0-A17、管脚BG0-BG1和/或管脚BA0-BA1。其中,管脚BG0-BG1用于确定存储模组203中的哪个存储体组(Memory Bank Group)被处理,例如被写入或被读取;管脚BA0-BA1用于确定存储模组203中的哪个存储体(Memory Bank)被处理;而管脚A0-A17则用于寻址并确定一个存储体中的哪一个存储单元被处理。此外,管脚A16(RAS_n)、A15(CAS_n)以及A14(WE_n)的输入还用于确定被提供的访问请求的操作类型,例如读取命令、写入命令以及其他被预先定义的访问命令。因此,访问请求中包括目标地址,其指示应用程序希望访问的存储模组203中的某个或某些存储地址。此外,访问请求中还可以包括访问请求的操作类型。对于可以以C/A信号形式传输的访问请求或命令的具体定义,可以参见存储模组203采用的存储器标准(例如JEDEC DDR4 SDRAM标准),在此不再赘述。
[0025] 在常规应用情况下,RCD 205可以对其接收到的C/A信号进行处理,从而响应于C/A信号实现CPU 201与存储模组203之间的正常数据交互;然而,在非常规应用情况下,也即安全访问机制启动的情况下,装置200中用于控制安全访问的模块可以向RCD 205提供访问控制命令,RCD 205可以根据该访问控制命令限制或允许CPU 201与存储模组203之间的数据交互。在实际应用中,CPU 201与存储模组203之间的数据交互可以借助于数据缓冲模块(图中未示出)来实现。关于数据缓冲模块的运行,可以参考现有的存储器工作机制,在此不再赘述。
[0026] 具体地,装置200包括访问控制器211,其也耦接到C/A信道,以从CPU 201接收以C/A信号形式传输的访问请求。除了目标地址和操作类型之外,访问请求中还包含有访问密钥,该访问密钥可以通过C/A信道中未使用的管脚来传输。例如,对于符合DDR4标准的存储器系统,例如前述C/A信道的管脚A0-A17中的一部分(例如A0-A11)被用于传输目标地址。为了传输访问密钥,C/A信道中未传输目标地址或其他信息(例如操作类型)的空闲或保留管脚,例如管脚A12至A17,可以被用于传输访问密钥。
[0027] 相应地,访问控制器211可以从访问请求中提取目标地址,并且监测目标地址是否属于指示存储模组203中预定存储位置的参考地址空间,例如将目标地址与参考地址空间逐位地进行比较。参考地址空间可以是计算机系统的管理者或提供者出于数据安全或其他因素考虑而预先设置的存储模组203中的某些区域,其中应用程序对于参考地址空间中的存储位置进行的数据访问是受限的。例如,参考地址空间可以是存储模组203中用于存储指令的区域。如果访问请求中包含的目标地址属于该参考地址空间,则装置200会通过启动特定的安全访问机制来验证该访问请求,例如通过访问密钥和/或其他要素,从而判断访问请求是否具有访问权限。
[0028] 为了监测目标地址并验证访问密钥,装置200还可以包括访问配置规则215,其例如为一具有预定容量的小容量存储设备,例如寄存器或固件,上述的参考地址空间的具体信息(例如位置信息)即被存储在访问配置规则215中。在一些例子中,用于验证访问密钥的本地访问密钥也被存储在访问配置规则215中。访问控制器211可以耦接于访问配置规则215,从而从中读取访问配置规则数据并用于访问控制。在一些实施例中,访问配置规则215中可以包含有一条或多条访问配置规则数据,其中每条访问配置规则数据可以包含有一部分参考地址空间(多条数据的情况)的开始地址和/或结束地址,以及可选地,针对该参考地址空间的操作权限。
[0029] 在一些实施例中,装置200还可以包括配置接口217,其通过不同于C/A信道的SMBus(System Management Access Bus,系统管理访问总线)总线耦接到CPU 201。由于SMBus总线与C/A信道相互分离,因此可以为配置接口217设置独立的访问权限。在一些优选的实施例中,访问配置规则215可以耦接到配置接口217,从而计算机系统的管理者可以经由配置接口217来对访问配置规则215中的具体数据进行初始化、修改、替换和/或设置,这2
将在下文中详述。在一些实施例中,配置接口217也可通过I C(Inter-Integrated Circuit)总线耦接到CPU 201,即SMBus总线也可由I2C总线来代替。在一些替代的实施例中,也可以利用C/A信道来对访问配置规则215中的数据进行设置。
[0030] 装置200还包括密钥生成器213,其可以在CPU 201访问存储模组203的过程中,动态地生成访问密钥。密钥生成器213可以耦接到访问配置规则215和/或访问控制器211,以向这些模块提供所生成的访问密钥。例如,密钥生成器213生成的访问密钥可以被存储到访问配置规则215中,作为本地访问密钥以用于验证从外部接收的访问密钥。替代地,访问密钥也可以被发送给访问控制器211并存储在其中,作为本地访问密钥以用于验证从外部接收的访问密钥。
[0031] 图3是根据本申请一个实施例的用于控制应用程序访问存储器的方法300。在实际应用中,该方法300可以由图2所示的装置200执行,从而实现对存储模组的访问控制。为了提高数据访问的安全性,该方法300采用并实现多次的安全验证步骤。接下来,参考图2和图3,对方法300的具体实现进行进一步地说明。
[0032] 首先,在步骤S302中,访问控制器211经由C/A信道从CPU 201接收应用程序提供的第一访问请求。该第一访问请求包含有第一访问密钥。此外,在一些实施例中,第一访问请求以及其他访问请求中可以包括预定义的访问命令。由于RCD 205同样耦接到C/A信道,因此RCD 205也可以接收该第一访问请求以及其他后续访问请求。在一些情况下,第一访问请求中不包括对存储模组203进行读写等操作的操作指令,因此RCD 205不会响应该第一访问请求而动作。
[0033] 接着,在步骤S304中,访问控制器211验证第一访问密钥。
[0034] 访问控制器211在接收到第一访问密钥后,会利用其中存储的本地访问密钥来验证第一访问请求中包含的第一访问密钥。如果第一访问密钥验证失败,也即第一访问密钥与访问控制器211中的本地访问密钥不一致,则可以认为第一访问请求是不具有安全访问权限的非法访问请求。在此情况下,访问控制器211可以生成访问控制命令,其指示RCD 205禁止或限制该应用程序的后续数据访问。访问控制器211接着将所生成的访问控制命令提供给RCD 205。根据该访问控制命令,RCD 205不会执行对存储模组203的数据访问操作。
[0035] 在一些情况下,应用程序提供的第一访问密钥以及访问控制器211中用于验证第一访问密钥的本地访问密钥都是预先设置的,例如由计算机系统的管理者提供给应用程序的设计者或使用者,并且由其加入到应用程序中。在另一些情况下,访问控制器211中可以包括有多个本地访问密钥,以分别地验证不同应用程序发送的第一访问请求中携带的不同第一访问密钥。为了从多个本地访问密钥中识别出正确的本地访问密钥,第一访问请求中还可以包含有密钥标识,其例如为本地访问密钥的标识符或本地访问密钥的存储地址,从而访问控制器211可以利用该密钥标识获取用于验证第一访问密钥的本地访问密钥。
[0036] 相反,如果访问控制器211验证第一访问密钥成功,例如其与本地访问密钥匹配,那么,访问控制器211会指示密钥生成器213生成针对应用程序的第二访问密钥,正如步骤S306所示。密钥生成器213可以基于预设的密钥生成机制来生成第二访问密钥,例如,密钥生成器可以以各种现有的随机密钥生成算法生成第二访问密钥。密钥生成器213可以将生成的第二访问密钥发送给访问控制器211和/或访问配置规则215。可以看出,第二访问密钥是在应用程序访问存储模组的过程中动态生成的,而非预先确定的,因此第二访问密钥具有较高的安全性。
[0037] 接着,在步骤S308中,访问控制器211可以将第二访问密钥提供给CPU 201,从而发起第一访问请求的应用程序可以得到该第二访问密钥。相应地,应用程序可以将该第二访问密钥添加到其后续生成并发送给存储器的第二访问请求中,以用于访问验证。另一方面,密钥生成器213生成的第二访问密钥还被提供给访问配置规则215,并且存储在其中。访问控制器211可以读取访问配置规则215,以用于应用程序的后续访问请求的验证。替代地,第二访问密钥也可以被直接存储在访问控制器211中。
[0038] 之后,在步骤S310中,访问控制器211接收应用程序提供的第二访问请求,该第二访问请求中包含有目标地址和第二访问密钥。
[0039] 接着,在步骤S312中,访问控制器211监测目标地址是否属于指示存储器中预定存储位置的参考地址空间,并且利用存储的第二访问密钥来验证从应用程序接收的第二访问密钥。可以理解,由于应用程序在步骤S308接收到装置200提供的第二访问密钥并且将其加入到第二访问请求中,因此步骤S310中接收到的第二访问请求中的第二访问密钥应与装置200中存储的第二访问密钥相同。但是,如果应用程序提供的第二访问密钥不同,则说明应用程序的此次访问存在问题。
[0040] 之后,在步骤S314中,访问控制器211根据目标地址是否属于参考地址空间的监测结果以及从应用程序接收的第二访问密钥的验证结果生成访问控制命令,以限制或允许应用程序访问存储模组203。
[0041] 具体地,如果目标地址不属于参考地址空间,则访问控制器211可以生成允许应用程序后续数据访问操作的访问控制命令,并且将该访问控制命令发送给RCD 205,RCD 205根据该访问控制命令控制应用程序访问存储模组203。如果访问控制器211监测后发现目标地址属于参考地址空间,但是从应用程序接收的第二访问密钥却验证失败,则访问控制器211可以生成指示RCD 205禁止后续数据访问操作的访问控制命令,并且将该访问控制命令提供给RCD 205。
[0042] 如果目标地址属于参考地址空间,并且从应用程序接收的第二访问密钥验证成功,也即与装置200中存储的第二访问密钥相同,那么访问控制器211可以生成允许后续数据访问操作的访问控制命令,并且将该访问控制命令发送给RCD 205。RCD 205可以根据该访问控制命令执行第二访问请求,即对存储模组203进行数据读出或写入操作。
[0043] 类似地,在装置200响应第二访问请求之后,基于实际应用的需要,应用程序还可以提供后续访问请求,例如第三访问请求、第四访问请求…等等。这些后续访问请求中均可以包含有装置200之前提供的第二访问密钥,以用于访问验证。由于第二访问密钥是在应用程序访问存储模组203的过程中动态生成的,其他应用程序不能够预先获知该第二访问密钥,这大大提高了存储模组访问的安全性。此外,不同的应用程序可以被分配不同的第二访问密钥,这也避免了不同应用程序之间的数据访问的相互干扰或错误。
[0044] 在一些实施例中,方法300还可以对第二访问密钥的有效性进行设置。具体地,可以在装置200中提供一计时器(图中未示出),其用于对所生成的第二访问密钥的有效时间进行计时。在一些例子中,在密钥生成器213生成第二访问密钥后,计时器即可以开始计时,所计时的时间即为第二访问密钥的有效时间。访问控制器211还可以比较第二访问密钥的有效时间与一预定时间阈值:当该有效时间超出预定时间阈值后,即可将第二访问密钥设置为无效。在此情况下,访问控制器211停止将第二访问密钥用于验证。相应地,在第二访问密钥被设置为无效后,如果访问控制器211仍然接收到应用程序提供的包含有第二访问密钥的访问请求,那么该访问请求会验证失败,RCD 205不会执行该访问请求。为了继续后续数据访问,应用程序以及装置200可以通过重复前述步骤S302至S308来更新第二访问密钥。可以看出,通过将第二访问密钥设置为仅在一段时间内有效,存储模组数据访问的安全性进一步提高。
[0045] 正如前述,在密钥生成器213生成第二访问密钥后,计时器即可以开始计时,所计时的时间即为第二访问密钥的有效时间。可选地,在第二访问密钥生成后,如果装置200确定该第二访问密钥被应用程序接收(例如应用程序向装置200发送已经接收到第二访问密钥的响应),则该有效时间可以被置为0。换言之,如果第二访问密钥在生成后被应用程序使用,则可以认为其是始终有效的。相反,如果第二访问密钥生成后,装置200确定应用程序在一段时间内(例如前述的预定时间阈值内)没有接收到该第二访问密钥,则可以认为第二访问密钥的有效时间已经过期,因而可以将其设置为无效。上述设置可以避免第二访问密钥的验证影响应用程序的正常处理,因为有些应用程序提供的两个访问请求之间的间隔可能相对较长。
[0046] 在另一些例子中,第二访问密钥的有效时间也可以从装置200响应第二访问请求并读取装置200本地存储的第二访问密钥时开始计时,如果在预定时间阈值内不能够从第二访问请求获取其中包含的第二访问密钥,则可以将该第二访问密钥设置为无效,从而不再允许以第二访问密钥进行安全验证。
[0047] 正如前述,在验证访问密钥的过程中,有可能出现访问密钥验证失败的情况,这通常是由未经授权的应用程序的非法访问所引起的,例如CPU 201可能运行了木马程序等。为了记录非法访问的情况,参考图2所示,装置200可以包括访问记录器219。该访问记录器219可以耦接到访问控制器211和配置接口217。访问记录器219用于记录由访问控制器211确定的第一访问密钥和/或第二访问密钥验证失败时访问请求的相关信息,例如该访问请求包含的目标地址、接收访问请求的时间或提供该访问请求的应用程序的信息,等等。借助于配置接口217,访问记录器219中记录的数据和信息可以被读取出来,以便于后续分析和处理。
[0048] 正如前述,访问配置规则215中可以包含有参考地址空间和访问密钥,以用于与访问请求中的对应信息进行比较。在一些实施例中,访问配置规则215中还可以包括对存储模组203进行的数据访问的操作权限,例如只读、只写、可读且可写或者不可读且不可写,等等。相应地,访问请求中也可以包括操作类型,例如写入操作、读出操作等。这样,访问控制器211可以读取访问配置规则215中已设置的操作权限,并且将其与访问请求中包括的操作类型进行比较。如果访问请求中的操作类型不符合访问配置规则中设置的操作权限(例如,访问配置规则中设置为可读不可写,而访问请求中为写入操作),那么访问控制器211可以禁止基于该访问请求访问存储模组203,并且生成相应的访问控制命令并提供给RCD 205。
[0049] 需要说明的是,当装置200检测目标地址是否属于参考地址空间时,其对这两种地址的比较均是基于这两者的物理地址,而非虚拟地址。如果参考地址空间是存储模组203中一些分散的物理地址,那么将目标地址与参考地址空间的比较需要通过复杂的比较逻辑才能实现。为此,在一些优选的实施例中,可以将参考地址空间设置为连续的物理地址空间,这可以降低用于比较参考地址空间与目标地址的比较逻辑的复杂度。然而,应用程序提供的访问请求中的目标地址通常都是虚拟地址,因此,当接收到访问请求后,访问请求会被操作系统预处理,以将其中包含的目标地址由虚拟地址转换为物理地址。
[0050] 此外还需要说明的是,在上述实施例中,第一访问请求主要用于验证第一访问密钥以及获取第二访问密钥,因而其中可以不包含访问命令和目的地址等信息。在一些实施例中,第一访问请求中也可以包括访问命令和目的地址,并且可选地,装置200在接收到第一访问请求后,可以同时验证第一访问密钥以及确定目的地址是否属于限制访问的参考地址空间。这样,装置200可以根据目的地址是否属于限制访问的参考地址空间的判断结果以及第一访问密钥的验证结果来确定是否需要执行后续操作。
[0051] 另外可以理解,如果一个应用程序发送的访问请求中不包含任何访问密钥而仅包含目的地址和访问命令(也即符合通常定义的访问请求),则装置200可以根据其中包含的目的地址是否属于参考地址空间来确定是否允许该应用程序基于该访问请求来访问存储模组203,具体地:如果目的地址属于参考地址空间,则需要启用安全访问机制,并且由于该访问请求没有携带访问密钥,因此禁止该访问请求访问存储模组203中的其所要请求访问的目标区域相反,如果目的地址不属于参考地址空间,则可按照上述常规应用情况处理,即允许该访问请求访问存储模组203中的其所要请求访问的目标区域。
[0052] 正如前述,装置200中包括访问配置规则215,其通常包含有访问控制所需的各种信息和参数,例如参考地址空间、本地访问密钥以及操作权限等。存储模组203的管理者可以通过配置接口217来修改、配置访问配置规则215中的数据,从而管理存储模组203的访问权限。为了进一步提高访问控制的安全性,在修改、配置访问配置规则215时,可以设置与图3所示的方法300类似的安全机制,避免访问配置规则215被非法程序篡改。
[0053] 图4是根据本申请一个实施例的用于控制应用程序访问存储器的方法400。该方法400可以用于对访问配置规则215中的数据进行修改和配置,进而控制应用程序对存储器的访问权限。接下来,结合图2和图4,对方法400进行进一步地说明。
[0054] 如图4所示,在步骤S402中,访问控制器211经由C/A信道从CPU 201接收应用程序提供的第一配置请求,该第一配置请求中包含有第一配置密钥。在实际应用中,配置请求可以以与访问请求类似的方式进行定义,例如利用C/A信道中的部分管脚来定义配置请求(包括其中的配置密钥)。可以理解,第一配置密钥中可以仅包含第一配置密钥以用于验证,而不包括其他指令或数据(例如目标地址)。
[0055] 接着,在步骤S404中,访问控制器211验证第一配置密钥是否与装置200中存储的本地配置密钥匹配。本地配置密钥可以存储在访问配置规则215中,或者存储在访问控制器211中。
[0056] 如果访问控制器211发现第一配置密钥验证失败,则可以认为第一配置请求是不具有安全配置权限的非法配置请求。在此情况下,访问控制器211可以禁止该第一配置请求修改访问配置规则215。相反,如果访问控制器211发现第一配置密钥验证成功,那么访问控制器211可以指示密钥生成器213生成针对应用程序的第二配置密钥,正如步骤S406所示。密钥生成器213可以基于预设的密钥生成机制来生成第二配置密钥,例如,密钥生成器可以以各种现有的随机密钥生成算法生成第二配置密钥。
[0057] 接着,在步骤S408中,访问控制器211将生成的第二配置密钥存储起来,例如存储在访问控制器211中或访问配置规则215中。同时,访问控制器211将该第二配置密钥提供给CPU 201,从而发起第一配置请求的应用程序可以得到第二配置密钥。应用程序可以将该第二配置密钥添加到新的第二配置请求中,以用于配置验证。
[0058] 之后,在步骤S410中,访问控制器211接收应用程序提供的第二配置请求,该第二配置请求中包含有访问配置规则数据和第二配置密钥。其中,访问配置规则数据用于定义指示存储模组203中预定存储位置的参考地址空间的访问权限。
[0059] 接着,在步骤S412中,访问控制器211利用存储的第二配置密钥来验证从应用程序接收的第二配置密钥。
[0060] 之后,在步骤S414中,在从应用程序接收的第二配置密钥验证成功时,访问控制器211控制将访问配置规则数据存储到访问配置规则215中。这样,访问配置规则215即可被更新和修改。当应用程序或其他程序访问存储器时,访问控制器可以根据访问配置规则中的更新数据来控制对存储器的访问。在实际应用中,取决于访问配置规则数据的数据量,步骤S410至步骤S414可以重复执行多次,以将所需的访问配置规则数据全部存储到访问配置规则215中。
[0061] 在一些实施例中,访问配置规则数据可以经由C/A信道发送给访问控制器211,并且由访问控制器211将访问配置规则数据写入到访问配置规则215中。在一些替代的实施例中,第二配置请求可以被分为两个部分,包括第二配置密钥的一部分数据可以通过C/A信道发送给访问控制器211,从而访问控制器211可以验证该第二配置密钥;而包括访问配置规则数据的另一部分数据可以通过SMBus信道或其他信道发送给装置200,装置200经由其配置接口217来接收访问配置规则数据,从而访问控制器211可以根据第二配置密钥的验证结果确定是否将访问配置规则数据存储到访问配置规则215中。
[0062] 与方法300类似,在方法400的步骤S404和步骤S412中,应用程序提供的第一/第二配置密钥会被访问控制器211验证。如果这些配置密钥验证失败,则访问控制器211可以将验证失败的信息提供给访问记录器219,以由访问记录器219记录该信息。
[0063] 正如之前所说明的,参考地址空间是物理地址空间,优选为连续的物理地址空间,但是应用程序仅能够对虚拟地址进行操作。因此,在生成访问配置规则数据时,可以首先分配一物理地址空间,该物理地址空间将被预留为参考地址空间以用于访问控制。以Linux操作系统为例,可以通过函数“malloc”来分配该物理地址空间,或者优选地通过函数“kmalloc”来分配连续的物理地址空间。然后,可以通过函数“remap_pfn_range”将应用程序希望限制访问的地址(虚拟地址)与该物理地址空间关联起来。这样,对于应用程序来说,存储模组中该应用程序不能够直接访问或不能识别的物理地址就转换为了可以访问或可识别的虚拟地址。接着,可以将该虚拟地址的参考地址空间添加到一条访问配置规则数据中,并且之后将访问配置规则数据通过图4所示的方法400存储到访问配置规则中。
[0064] 图5示出了根据本申请一个实施例的用于控制应用程序访问存储器的方法500。该方法500可以由图2所示的CPU 201执行应用程序的指令或代码来实现,以便与执行图3所示的方法300的装置200进行交互。
[0065] 如图5所示,在步骤S502中,CPU 201向存储器发送第一访问请求,其中该第一访问请求包含有第一访问密钥。装置200接收第一访问请求,并且验证第一访问密钥。如果装置200验证第一访问密钥成功,则装置200向CPU 201发送第二访问密钥。相应地,在步骤S504中,CPU 201接收第二访问密钥。接着,在步骤S506中,CPU 201将第二访问密钥添加到第二访问请求中,并且向存储器发送第二访问请求,该第二访问请求中包含有目标地址和第二访问密钥。在接收到第二访问请求后,装置200检测目标地址是否属于指示存储器中预定存储位置的参考地址空间,并且验证第二访问密钥。如果装置200确定目标地址属于参考地址空间,并且第二访问密钥验证成功,则CPU 201根据该访问控制命令访问存储器,例如向存储器中写入数据,或者从存储器中读出数据,正如步骤S508所示。
[0066] 本技术领域的一般技术人员可以通过研究说明书、公开的内容及附图和所附的权利要求书,理解和实施对披露的实施方式的其他改变,上述实施方案仅仅是为了说明的目的而列举的示例,而不是对本申请的限制,本申请的实施方式可以通过硬件、软件或其组合的形式来实现。凡在本申请的教导和权利要求保护范围下所作的任何修改、等同替换等,均应包含在本申请要求保护的范围内。在权利要求中,措词“包括”不排除其他的元素和步骤,并且措辞“一”、“一个”不排除复数。在本申请的实际应用中,一个零件可能执行权利要求中所引用的多个技术特征的功能。权利要求中的任何附图标记不应理解为对范围的限制。