用于对访问存储器的应用程序进行身份验证的方法和装置转让专利

申请号 : CN201611115077.9

文献号 : CN108171041B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 山岗

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

摘要 :

本申请公开了一种用于对访问存储器的应用程序进行身份验证的方法,包括:获取应用程序提供的身份验证请求;响应于所述身份验证请求,获取所述应用程序提供的特征指令;获取所述特征指令对应的指令指针;基于所述指令指针,从存储器获取其中预先存储的所述应用程序的特征信息;以及将所获取的特征信息与所述应用程序对应的验证信息进行比较,从而确定对所述应用程序的身份验证是否成功。

权利要求 :

1.一种用于对访问存储器的应用程序进行身份验证的方法,其特征在于,包括:获取应用程序提供的身份验证请求;

响应于所述身份验证请求,获取所述应用程序提供的特征指令;

当所述特征指令被处理器执行时,从所述处理器的程序计数器中获取所述特征指令对应的指令指针;

基于所述指令指针,从存储器获取其中预先存储的所述应用程序的特征信息,其中所述特征信息包括所述特征指令对应的所述应用程序的至少一部分代码;以及将所获取的特征信息与所述应用程序对应的验证信息进行比较,从而确定对所述应用程序的身份验证是否成功。

2.根据权利要求1所述的方法,其特征在于,获取所述特征指令对应的指令指针的步骤包括:存储所述指令指针。

3.根据权利要求1所述的方法,其特征在于,所述指令指针是所述特征指令在所述存储器中的存储地址。

4.根据权利要求1所述的方法,其特征在于,所述应用程序的至少一部分代码是所述指令指针相邻的预定地址范围内的代码。

5.根据权利要求1所述的方法,其特征在于,所述特征信息是基于所述特征指令对应的应用程序的至少一部分代码得到的。

6.根据权利要求1所述的方法,其特征在于,将所获取的特征信息与所述应用程序对应的验证信息进行比较,从而确定对所述应用程序的身份验证是否成功的步骤包括:如果所述特征信息与所述验证信息一致,则确定所述身份验证成功;而如果所述特征信息与所述验证信息不一致,则确定所述身份验证失败。

7.根据权利要求1所述的方法,其特征在于,将所获取的特征信息与所述应用程序对应的验证信息进行比较,从而确定对所述应用程序的身份验证是否成功的步骤是由所述存储器的控制器执行的。

8.根据权利要求7所述的方法,其特征在于,所述验证信息被只读地存储在所述存储器的控制器中,或者通过专用接口写入到所述存储器的控制器中。

9.根据权利要求7所述的方法,其特征在于,所述方法还包括:由所述存储器的控制器输出身份验证的结果。

10.一种用于对访问存储器的应用程序进行身份验证的装置,其特征在于,包括:处理器,所述处理器包括程序计数器,并用于获取应用程序提供的身份验证请求,响应于所述身份验证请求获取所述应用程序提供的特征指令,并且当所述特征指令被所述处理器执行时,从所述程序计数器中获取所述特征指令对应的指令指针;

存储器,用于存储所述应用程序;

存储器控制器,其耦接到所述处理器与所述存储器,用于接收所述指令指针,基于所述指令指针从所述存储器存储的所述应用程序中获取所述应用程序的特征信息,其中所述特征信息包括所述特征指令对应的应用程序的至少一部分代码,并且将所获取的特征信息与所述应用程序对应的验证信息进行比较,从而确定对所述应用程序的身份验证是否成功。

11.根据权利要求10所述的装置,其特征在于,所述处理器还包括:指针寄存器,其用于存储所述处理器获取的特征指令对应的指令指针;

所述处理器还被用于在所述特征指令被执行时,控制将所述程序计数器的指令指针存储在所述指针寄存器中,作为所述特征指令对应的指令指针。

12.根据权利要求10所述的装置,其特征在于,所述指令指针是所述特征指令在所述存储器中的存储地址。

13.根据权利要求10所述的装置,其特征在于,所述应用程序的至少一部分代码是所述指令指针相邻的预定地址范围内的代码。

14.根据权利要求10所述的装置,其特征在于,所述特征信息是基于所述特征指令对应的应用程序的至少一部分代码得到的。

15.根据权利要求10所述的装置,其特征在于,所述存储器控制器还被用于:如果所述特征信息与所述验证信息一致,则确定所述身份验证成功;而如果所述特征信息与所述验证信息不一致,则确定所述身份验证失败。

16.根据权利要求10所述的装置,其特征在于,所述存储器控制器还被用于只读地存储所述验证信息。

17.根据权利要求10所述的装置,其特征在于,所述装置还包括验证信息写入接口,其耦接到所述存储器控制器,并且经由所述验证信息写入接口验证信息被写入到所述存储器控制器中。

18.根据权利要求17所述的装置,其特征在于,所述验证信息写入接口不同于所述存储器的数据读取/写入接口。

19.根据权利要求10所述的装置,其特征在于,所述存储器控制器还被用于将所述应用程序的身份验证的结果提供给所述处理器。

20.根据权利要求10所述的装置,其特征在于,所述存储器控制器是寄存器时钟驱动器。

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

说明书 :

用于对访问存储器的应用程序进行身份验证的方法和装置

技术领域

[0001] 本申请涉及存储器技术领域,更具体地,涉及一种用于对访问存储器的应用程序进行身份验证的方法和装置。

背景技术

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

发明内容

[0004] 本申请的一个目的在于提供一种具有高安全性和可靠性的应用程序身份验证方法和装置。
[0005] 在本申请的一个方法,提供了一种用于对访问存储器的应用程序进行身份验证的方法,包括:获取应用程序提供的身份验证请求;响应于所述身份验证请求,获取所述应用程序提供的特征指令;获取所述特征指令对应的指令指针;基于所述指令指针,从存储器获取其中预先存储的所述应用程序的特征信息;以及将所获取的特征信息与所述应用程序对应的验证信息进行比较,从而确定对所述应用程序的身份验证是否成功。
[0006] 在本申请的另一个方面,提供了一种用于对访问存储器的应用程序进行身份验证的装置,该装置包括:处理器,用于获取应用程序提供的身份验证请求,响应于所述身份验证请求获取所述应用程序提供的特征指令,并且获取所述特征指令对应的指令指针;存储器,用于存储所述应用程序;存储器控制器,其耦接到所述处理器与所述存储器,用于接收所述指令指针,基于所述指令指针从所述存储器存储的所述应用程序中获取所述应用程序的特征信息,并且将所获取的特征信息与所述应用程序对应的验证信息进行比较,从而确定对所述应用程序的身份验证是否成功。
[0007] 对于本申请实施例的用于对访问存储器的应用程序进行身份验证的装置和方法,其利用正在访问存储器的“活体”应用程序提供的特征指令来获取该应用程序的特征信息,进而利用存储器内部预先存储的验证信息对特征信息进行验证。这避免了非法应用程序恶意冒充该应用程序访问存储器,并且也不需要向外部提供可转移的特征信息。这种方式大大提高了存储器系统的安全性和可靠性。
[0008] 以上为本申请的概述,可能有简化、概括和省略细节的情况,因此本领域的技术人员应该认识到,该部分仅是示例说明性的,而不旨在以任何方式限定本申请范围。本概述部分既非旨在确定所要求保护主题的关键特征或必要特征,也非旨在用作为确定所要求保护主题的范围的辅助手段。

附图说明

[0009] 通过下面说明书和所附的权利要求书并与附图结合,将会更加充分地清楚理解本申请内容的上述和其他特征。可以理解,这些附图仅描绘了本申请内容的若干实施方式,因此不应认为是对本申请内容范围的限定。通过采用附图,本申请内容将会得到更加明确和详细地说明。
[0010] 图1示出了根据本申请一个实施例的用于对访问存储器的应用程序进行身份验证的装置100;
[0011] 图2示出了根据本申请一个实施例的用于对访问存储器的应用程序进行身份验证的方法200。

具体实施方式

[0012] 在下面的详细描述中,参考了构成其一部分的附图。在附图中,类似的符号通常表示类似的组成部分,除非上下文另有说明。详细描述、附图和权利要求书中描述的说明性实施方式并非旨在限定。在不偏离本申请的主题的精神或范围的情况下,可以采用其他实施方式,并且可以做出其他变化。可以理解,可以对本申请中一般性描述的、在附图中图解说明的本申请内容的各个方面进行多种不同构成的配置、替换、组合,设计,而所有这些都明确地构成本申请内容的一部分。
[0013] 本申请的发明人发现,对于计算机、移动终端或其他智能化电子设备而言,用于连接存储器(在此所述的存储器是主存储器,也即通常所称的内存)和处理器(例如计算机的中央处理器,或者移动终端的微处理器)的存储器接口(也即内存接口)是其系统架构中的关键接口。当计算机或智能电子设备正常运行时,应用程序运行所依赖的指令和非指令数据均被存储在存储器中,以供处理器调用。因此,处理器需要经由存储器接口不断地访问存储器,以获取其中存储的指令和非指令数据。
[0014] 有鉴于此,本申请的发明人在存储器接口中设置了新的访问控制机制,用以对请求访问存储器的应用程序进行身份验证。只有在身份验证通过后,应用程序才能够继续访问存储器。这种访问控制机制能够避免未被授权的应用程序非法访问存储器,并且调用或修改其中存储的数据和指令。这样,计算机或智能电子设备的稳定性和安全性可以显著提高。
[0015] 图1示出了根据本申请一个实施例的用于对访问存储器的应用程序进行身份验证的装置100。其中,存储器可以是符合JEDEC双倍速率同步动态随机存取存储器(SDRAM)标准的存储器,包括JEDEC DDR1、DDR2、DDR3、DDR4以及其他双倍速率存储器标准。此外,存储器也可以是符合其他标准或协议的存储器,例如SDRAM或RAMBUS存储器,也可以是符合未来存储器标准或协议的存储器。在一些实施例中,存储器的存储模块可以包括易失性存储器(例如随机存储器)、非易失性存储器(快闪存储器)或者这两者的组合。
[0016] 如图1所示,该装置100包括存储器101,其具有存储模块103。该存储模块103可以是一颗内存颗粒,也可以包括由两颗或更多颗内存颗粒构成的存储模组。存储模块103可以包括多个存储单元,其中每个存储单元都具有一个可被寻址的存储地址,并且用于存储一定大小的指令或数据(例如应用数据)。通过根据每个存储单元对应的存储地址对存储模块103进行寻址,存储模块103中的每个存储单元都可以被分别地进行操作。
[0017] 存储器101还具有存储器接口105,经由该存储器接口105,存储模块103可以与处理器107进行数据交互。例如,经由存储器接口105,处理器107从存储模块103中读出其中存储的指令和数据,或者处理器将指令或数据写入到存储模块103中。
[0018] 存储器101还包括存储器控制器109,其分别直接或间接耦接到处理器107和存储模块103,以用于控制这两者之间的数据交互。在一些实施例中,例如如图1所示的实施例中,存储器控制器109被设置在存储器接口105外部,并通过存储器接口105耦接至处理器107。存储器101还包括数据缓冲器106,数据缓冲器106可以耦接在存储器接口105与存储模块103之间,并且还耦接到存储器控制器109。通过控制数据缓冲器106,存储器控制器109能够控制处理器107与存储模块103之间的数据交互。在符合DDR4标准的存储器中,存储器控制器109例如为寄存器时钟驱动器(RCD),其可以通过数据缓冲器控制总线(BCOM)控制数据缓冲器106的运行,而且通过命令/地址(C/A)总线耦接至存储器接口105。此外,寄存器时钟驱动器中可以设置一些控制逻辑和寄存器,用于实现该装置100。在一些替代的实施例中,存储器控制器也可以被设置在存储器接口105的内部。
[0019] 处理器107被配置为运行各种应用程序,并且根据应用程序的运行需求访问存储器101,例如向其中写入指令/数据或者从其中读出指令/数据。具体地,当处理器107运行某一个应用程序时,不论该应用程序是本地的应用程序(例如存储在计算机的大容量存储器中,例如硬盘中)还是外部应用程序(例如来自外部网络设备的应用程序),处理器107都会将该应用程序载入到存储器101中,之后不断地访问存储器101来获取载入在存储器101中应用程序的各个指令,并且按照一定的顺序执行所获取的指令,从而实际地运行该应用程序。
[0020] 可以理解,当载入到存储器101中之后,某一个应用程序的代码在存储模块103中的存储位置是相对确定的。因此,某一指令的代码前后的一个或多个指令的代码往往也是确定的。因此,存储模块103中已存储的应用程序的代码等信息可以用于标识将要或正在运行的应用程序。在本申请的实施例中,处理器107能够与存储器控制器109配合,完成对请求访问存储器的应用程序的身份验证。在通过身份验证后,应用程序存储在存储模块103中的后续指令可以被处理器107继续执行。
[0021] 基于上述概念,本申请提供了一种用于对访问存储器的应用程序进行身份验证的方法,图2示出了根据本申请一个实施例的身份验证方法200的流程图。该方法200可以被实施在图1所示的装置100中。
[0022] 接下来,参考图1和图2,以对一个应用程序111进行身份验证为例,具体说明本申请的方法200和装置100的具体功能和操作。
[0023] 该方法200起始于步骤S202,处理器107获取应用程序提供的身份验证请求。该身份验证请求可以是预先设置在应用程序中的一条指令。在一些例子中,身份验证请求可以被设置于应用程序的起始位置,以在应用程序刚开始运行时就进行身份验证,从而确定是否可以继续执行存储在存储器101中的应用程序的剩余指令。在另一些例子中,身份验证请求也可以设置在应用程序的其他位置。例如,应用程序的部分指令的运行可能需要访问存储器101中的某些受限区域,这种情况下,可以将身份验证请求的指令设置在这部分指令之前。此外,可以理解,在一些实施例中,在获取身份验证请求的同时,处理器107还可以接收或获取应用程序的程序名称或类似标识信息,以便于确定是哪个应用程序提供的身份验证请求。
[0024] 在得到身份验证请求之后,验证应用程序身份的流程启动。
[0025] 具体地,在步骤S204中,响应于身份验证请求,处理器107获取应用程序提供的特征指令。与身份验证请求类似,特征指令也是预先设置在应用程序中的一个指令。该特征指令可以紧接着身份验证请求设置,也可以间隔一个或多个指令设置于身份验证请求的后面。在一些实施例中,处理器107可以运行特定的身份验证程序,从而识别应用程序提供的特征指令。可以理解,特征指令也是处理器107访问存储器101得到的。
[0026] 接着,在步骤S206中,处理器107获取特征指令对应的指令指针。通常来说,处理器107中包括程序计数器(program counter)(图中未示出),其被设置成包含当前正在执行的指令在存储模块103中的存储地址,也即指令指针。在处理器107执行一条指令之后,程序计数器中的指令指针会变化,通常是自动加一,从而指向应用程序中下一条指令在存储模块
103的存储地址。这样,处理器107可以接着从该存储地址读取下一条指令的代码。
[0027] 可以看出,在执行特征指令时,利用程序计数器,处理器107可以确定存储模组103中的一个存储位置,该存储位置是特征指令在存储模块103中的存储地址。处理器107还可以包括指针寄存器(图中未示出),其用于存储指令指针。例如,当处理器107借由程序计数器确定当前执行的特征指令的指令指针后,其紧接着将该指令指针存储到指针寄存器中,以用于后续处理。
[0028] 对于处理器来说,如果可以由程序计数器确定一个应用程序中包含的指令的指令指针,说明该应用程序是处理器正在运行的应用程序,也即“活体”应用程序。对于一些非法应用程序,其可能会将另一合法应用程序的指令发送给处理器107以进行身份验证;但由于该合法应用程序并未实际运行,因此处理器107中并不具有其对应的指令指针,因而处理器107无法获取有效的指令指针以用于身份验证。因此,只有实际正在运行的应用程序提供的指令才可以被处理器识别,并且确定其对应的指令指针。可以看出,采用“活体”应用程序的指令指针用于身份验证,可以有效地提高身份验证的安全性和可靠性。
[0029] 之后,在步骤S208中,基于所获取的指令指针,存储器控制器109从存储模块103中获取其中预先存储的应用程序的特征信息。
[0030] 具体地,处理器107将所获取的指令指针经由存储器接口105发送给存储器控制器109。基于该指令指针,存储器控制器109确定存储模块103中的一个存储位置,并且由该存储位置或其相邻区域中存储的应用程序111的代码确定应用程序111的特征信息。在一些实施例中,应用程序111的特征信息被用于标识应用程序111,其例如是应用程序111的至少一部分代码。例如,应用程序111的特征信息可以为与指令指针相邻的预定地址长度范围内的代码,例如指令指针前后数百字节至数十兆字节范围内的应用程序111的代码。正如前述,由于应用程序111的代码在存储器103中的存储位置是相对确定的。因此,特征指令对应的指令指针相邻范围的代码也是确定的,其可以用于标识应用程序111本身,从而作为应用程序111的特征信息。
[0031] 在一些例子中,特征信息也可以是基于所述特征指令对应的应用程序的至少一部分代码得到的。例如,可以对这部分代码进行加密处理,或者进行其他特定的编码处理,然后可以以处理后的信息或数据作为应用程序的特征信息。这种方式可以具有更好的安全性和可靠性。
[0032] 接着,在步骤S210中,存储器控制器109将所获取的特征信息与应用程序对应的验证信息进行比较,从而确定对应用程序的身份验证是否成功。
[0033] 为了验证该特征信息,存储器控制器109还存储了验证信息,其是预先存储在存储器控制器109中的与特征信息对应的数据,例如应用程序111的部分代码,或者进一步地包括应用程序的名称或其他标识信息。存储器控制器109可以将利用特征指令得到的特征信息与验证信息进行比较,从而确定对应用程序111的身份验证是否成功。具体地,如果特征信息与验证信息一致,则确定身份验证成功;而如果特征信息与验证信息不一致,则确定身份验证失败。例如,所存储的每个验证信息关联于一个程序名称。存储器控制器109可以获取应用程序111的程序名称,并且基于该程序名称检索对应的验证信息,其中该程序名称可以是应用程序111在发送身份验证请求时提供的。可以理解,在特征信息是一部分代码经处理后的数据或信息时,验证信息也需要被预先进行类似的处理。
[0034] 在一些例子中,存储器控制器109中可以存储关于应用程序111的多个验证信息,只要应用程序111的特征信息与其中的一个验证信息一致,即可确定身份验证成功。换言之,可以有多个验证信息对应于一个程序名称。例如,应用程序111的整个程序中包含有3个特征指令,其中每个特征指令的代码存储于存储模块103中的不同位置。因此,每个特征指令的存储位置均对应于一个特征信息,其可以预先存储在存储器控制器109中作为备选的验证信息。当处理器107执行应用程序111提供的特征指令时,该特征指令可以是前述3个特征指令中的一个。处理器107利用该特征指令的指令指针可以确定对应的特征信息。接着,即可将该特征信息与3个备选的验证信息进行比较,只要应用程序111的特征信息与其中的一个验证信息一致,即可确定身份验证成功。
[0035] 在得到验证结果之后,在步骤S212中,存储器控制器109可以向处理器107输出身份验证结果。进一步地,处理器107可以根据该身份验证结果,决定是否允许或限制应用程序111对存储器101的后续访问,也即存储在存储器101中的应用程序111的后续指令是否可以被继续执行。可选地,存储器控制器109也可以将身份验证结果直接提供给数据缓冲器106,借由数据缓冲器106来允许或限制应用程序111的后续访问。可以看出,由于用于验证特征信息的验证信息被设置于存储器101中,并且处理器107无法取得该验证信息,因此该装置100能够有效防止因验证信息泄露引起的安全问题。
[0036] 在一些实施例中,在得到验证结果之后,存储器控制器109可以生成一个访问密钥。随后,该访问密钥可以被提供给应用程序,并且同时存储在存储器控制器109。应用程序随后访问存储器的请求或指令中均可以包含该访问密钥。存储器控制器109利用本地存储的秘钥验证应用程序提供的访问密钥,即可确定应用程序是否可以继续访问存储器101。
[0037] 在一些实施例中,为了进一步提高存储器的安全性,验证信息可以被只读地存储在存储器控制器109中,从而不能够通过修改该验证信息来破坏对应用程序的身份验证。例如,存储器控制器109中可以集成一个用于存储验证信息的只读存储器。在一些替代的实施例中,验证信息可以被可修改地存储在存储器控制器109中,但是仅能够通过专用的验证信息写入接口113才能够向存储器控制器109中写入新的验证信息。该验证信息写入接口113不同于存储器接口中用于在处理器107与存储模组103直接交互数据的数据读取/写入接口(例如C/A接口)。在一些例子下,该验证信息写入接口113可以是SMBus(System Management Access Bus,系统管理访问总线)接口,或者类似的独立接口。这样,只有存储器或系统的管理者能够通过验证信息写入接口113对验证信息进行初始化、修改、替换和/或设置,这同样保证了存储器101的安全性。
[0038] 可以看出,对于本申请实施例的用于对访问存储器的应用程序进行身份验证的装置,其利用正在访问存储器的“活体”应用程序提供的特征指令来获取该应用程序的特征信息,进而利用存储器内部预先存储的验证信息对特征信息进行验证。这避免了非法应用程序恶意冒充该应用程序访问存储器,并且也不需要向外部提供可转移的特征信息。这种方式大大提高了存储器系统的安全性和可靠性。
[0039] 应当注意,尽管在上文详细描述中提及了用于对访问存储器的应用程序进行身份验证的方法和装置的若干模块或子模块,但是这种划分仅仅是示例性的而非强制性的。实际上,根据本申请的实施例,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
[0040] 那些本技术领域的一般技术人员可以通过研究说明书、公开的内容及附图和所附的权利要求书,理解和实施对披露的实施方式的其他改变。在权利要求中,措词“包括”不排除其他的元素和步骤,并且措辞“一”、“一个”不排除复数。在本申请的实际应用中,一个零件可能执行权利要求中所引用的多个技术特征的功能。权利要求中的任何附图标记不应理解为对范围的限制。