用于保护动态随机访问存储器的方法和设备与流程

文档序号:12824662阅读:255来源:国知局
用于保护动态随机访问存储器的方法和设备与流程

本发明涉及动态随机访问存储器,并且更具体地,但不限于用于保护动态随机访问存储器的方法和设备。



背景技术:

由于现有的机顶盒(stb)芯片在安全方面的不足,用户不付费观看限制的节目是很常见的,甚至用户的密码被盗也频频出现。为了保护运营商、机顶盒制造商以及用户的利益,需要从芯片设计阶段就考虑提高产品的安全性能。因此,具有高级安全特性的数字电视芯片应运而生。

然而,也有一些方法来摆脱或规避高级安全特性。其一是在dram接口上检测dram的数据访问,从而获得用户的密码和其他关键性的安全数据。其二是在用户安装的软件中嵌入程序直接从dram获取并导出安全数据(例如用户密码、受版权保护的明文节目等)。因此,希望提供方法来处理这个问题。

概述

本发明的实施方式公开了一种用于动态随机访问存储器(dram)保护的方法,包括:分别分配地址空间用于第一普通区域、第二普通区域、第一安全区域和第二安全区域;检测普通数据是否具有用于该第一安全区域的该地址空间内的地址;如果该普通数据具有用于该第一安全区域的该地址空间内的地址,则输出数字信号,指示重映射该普通数据的地址到用于该第二普通区域的该地址空间;检测安全数据是否具有用于该第一普通区域的该地址空间内的地址;如果该安全数据具有用于该第一普通区域的该地址空间内的该地址,则输出数字信号,指示重映射该安全数据的地址到用于该第二安全区域的该地址空间。

可选地,该方法还包括生成随机密钥;通过置换原始dram写数据的位的顺序,生成更新的写数据;通过对使用的所生成的随机密钥与所述更新的写数据执行函数,生成加密的数据;以及当不存在任何访问所述dram的请求时,根据时刻动态地更新所使用的随机密钥。

可选地,该方法还包括方法,还包括通过使用随机密钥在读数据上执行逆函数,生成解密的读数据;通过反置换所解密的数据的位的顺序,生成明文读数据。

本发明的另一实施方式公开了一种用于动态随机访问存储器(dram)保护的设备,包括:分配电路,其被配置为分别分配地址空间用于第一普通区域、第二普通区域、第一安全区域和第二安全区域;检测器,其被配置为检测普通数据是否具有用于该第一安全区域的该地址空间内的地址;重映射电路,其被配置为如果该普通数据具有用于该第一安全区域的该地址空间内的地址,则重映射该普通数据的地址到用于该第二普通区域的该地址空间;该检测器进一步被配置为检测安全数据是否具有用于该第一普通区域的该地址空间内的地址;该重映射电路被进一步配置为如果该安全数据具有用于该第一普通区域的该地址空间内的地址,则重映射该安全数据的地址到用于该第二安全区域的该地址空间。

可选地,用于dram保护的设备还包括密钥生成器,其被配置为生成随机密钥;第一数据生成器,其被配置为通过置换原始dram写数据的位的顺序,生成更新的写数据;所述数据生成器进一步被配置为通过对使用的所生成的随机密钥与所述更新的写数据执行函数,生成加密的数据;以及第一更新电路,其被配置为当不存在任何访问所述dram的请求时,根据时刻动态地更新所使用的随机密钥。

可选地,用于dram保护的设备还包括密钥生成器,第二数据生成器,其被配置为通过使用随机密钥在读数据上执行逆函数,生成解密的读数据;所述第二数据生成器进一步被配置为通过反置换所解密的数据的位的顺序,生成明文读数据。

附图说明

本发明通过所附的附图用示例形式展示。附图应当被理解为作为示例而非限制,因为本发明的范围是由权利要求所限定的。在附图中,相同的附图标记代表相同的元件。

图1示出了根据本发明的实施方式的包括动态随机访问存储器(dram)的保护电路的系统的视图。

图2示出了根据本发明的实施方式的地址重映射的视图。

图3示出了根据本发明的实施方式的用于动态随机访问存储器(dram)的保护的方法300的流程图。

图4是根据本发明的实施方式的地址映射表的视图。

图5示出了根据本发明的实施方式的用于dram保护的设备500的框图。

图6示出了根据本发明的实施方式的数据加密算法电路的数据流的视图。

图7示出了根据本发明的实施方式的用于数据加密的电路的框图。

图8示出了根据本发明的实施方式的随机密钥的动态更新的方法的视图。

图9示出了根据本发明另一实施方式的用于dram密钥的动态更新的时序的视图。

图10示出了根据本发明的实施方式的解密的方法的流程图。

具体实施例

本发明的各种方面和示例现在将被描述。下面的描述提供了具体的细节以透彻理解并有利于这些示例的描述。然而,本领域技术人员将理解,本发明可以在没有许多这些细节的情况下实施。此外,某些众所周知的结构或功能可能不会被详细示出或描述,以避免不必要地模糊相关描述。

图1示出了根据本发明的实施方式的包括动态随机访问存储器(dram)的保护电路110的系统的视图。该系统100包括dram保护电路110或也称为dram_prot110、axi仲裁器120,以及双数据速率控制器(ddrc或ddr)130。axi仲裁器120是被用于共享的存储器系统中的设备,用于为每个存储器周期决定,哪个主机(master)将被允许访问该共享的存储器。请注意,主机可以包括处理核、视频解码器和访问共享的存储器的其它模块。该dram_prot110位于axi仲裁器120和ddrc130之间。该axi仲裁器120可以通过使用axislave(从或附属)接口与dram_prot110可通信地耦接。axi总线在axi标准中被定义,其的描述可以被省略,以避免不必要地模糊本发明的范围。ddrc130可以通过使用aximaster(主)接口与dram_prot110可通信地耦接。整个系统实现了对dram数据的保护功能。dram_prot110可分为访问控制电路(简称为dram_ac112)和数据加密电路(简称为dram_denc114),这两者都被显示为虚线框。

dram_ac112分为地址重映射电路1120和访问控制电路1122。地址重映射电路1120根据配置映射表实现从rcom0到rsec1以及从rsec0到rcom1的地址转换,以兼容不同软件的地址空间方案。访问控制电路1122针对不同的访问设备控制对普通区域/安全区域的访问,以滤除未经授权的访问。本发明的实施方式涉及的配置信息能够由可信任的处理核140进行访问,并且拒绝来自公共处理核150对配置信息的访问请求。可信任的处理核140被设计为执行安全相关的代码,其安全性通常被慎重考虑。此外,常见的第三方软件是不允许在可信任的处理核140上运行的(除了安全相关的第三方软件,如银行客户端等)。注意,开放的产品(例如,基于安卓操作系统)将允许客户端安装各种第三方软件应用,其通常在公共处理核150上运行。因此,在可信任的处理核140运行的过程中,在存储器中生成的安全数据需要被保护,并且不能被公共处理核150随意地访问。这些安全数据包括明文形式的音频和视频数据、由安全软件(银行的客户端软件,等等)生成的中间数据等等。dram访问设备包括axi接口上的axi主机,其启动在系统中的传输。根据本发明的实施方式,每个dram访问设备具有唯一的awid/arid。awid表示写地址id。这个信号是用于写址组的信号的识别标记。此外,arid是读取地址的id。此信号是用于读地址组的信号的识别标记。(注:awid/arid/awprot/arprot都是axi协议信号。awprot/arprot的细节将在以下进行讨论)。

图2示出了根据本发明的实施方式的地址重映射的视图。

根据图2,地址重映射电路1120的工作原理是:地址重映射电路1120配置,第一安全区域rsec0,第一普通区域rcom0,第二安全区域rsec1和第二普通区域rcom1。第一安全区域rsec0还可以被称为基本安全区域。第一普通区域rcom0还可以被称为基本普通区域。第二安全区域rsec1也可以被称为补充(supplement)安全区域。第二普通区域rcom1也可以被称为补充普通区域。

配置映射表将原有落于rsec0地址空间的普通数据的地址重映射到rcom1地址空间。类似地,配置映射表将原落于rcom0地址空间的安全数据的地址重映射到rsec1地址空间,如图2所示。注意,图2还显示在第一普通区域rcom0中的普通数据没有被重映射,因为该普通数据已经在正确的地址空间内,也即该普通数据被保持在原有的地址空间中。类似地,在第一安全区域rsec0中的安全数据未被重映射,因为该安全数据已经在正确的地址空间内,也即该普通数据被保持在原有的地址空间中。

图3示出了用于动态随机访问存储器(dram)的保护的方法300的流程图。该方法300包括在框310分别为第一普通区域rcom0、第二普通区域rcom1、第一安全区域rsec0和第二安全区域rsec1分配地址空间,如图2中所示;并在框320,检测普通数据或安全数据是否被获得。

当获得普通数据时,方法300还包括在框330检测该获得的普通数据是否具有用于第一安全区域的地址空间内的地址,并在框340,如果普通数据具有用于第一安全区域的在地址空间内的地址,则输出数字信号,指示重映射普通数据的地址到用于第二普通区域的地址空间。

当获得安全数据时,方法300还包括在框350,检测该获得的安全数据是否具有用于第一普通区域的地址空间内的地址;并在框360,如果安全数据具有用于第一普通区域的地址空间内的地址,则输出数字信号,指示重映射安全数据的地址到用于第二安全区域的地址空间。

该方法300根据axi协议信号,例如,awprot或arprot信号,确定数据是安全数据还是普通数据,如将相对于图4和以下的权限表1对细节进行进一步的讨论。表1示出了访问控制表。其中位对应于在配置信息中的对应位。

以写数据作为示例,例如,方法300首先检测awid,如图4所示。awid被用于识别发起该传输的设备。每对awid/arid都有相应的权限表1。注意,awid和arid是配对的。为了便于理解,该awid被首先讨论。

例如,首先讨论写操作。方法300首先检测awid=0。例如,下面的权限表1对应于awid=0。然后,该方法300使用以下权限表1和区域(rcom0,rcom1,rsec0,rsec1)以确定传输的类型以及传输是否可以进行。如果根据权限表传输是允许的,那么传输是可以进行的。换言之,数据允许被写入ddr130。如果该传输是禁止的,那么该传输是不可以进行的。换句话说,数据不允许被写入ddr130。注意,awid和awprot都是位于传输的命令部分,并对应于数据。该对应关系是由axi协议保证的。

在另一示例中,读操作被讨论。方法300首先检测arid=0。例如,下面的权限表1对应于arid=0。然后,该方法300使用以下权限表1和区域(rcom0,rcom1,rsec0,rse1)以确定传输的类型以及传输是否可以进行。如果根据权限表传输是允许的,那么传输是可以进行的。换言之,设备被允许从ddr130读取数据。如果该传输是禁止的,那么该传输是不可以进行的。换句话说,设备不被允许从ddr130读取数据。注意,awid和awprot都是位于传输的命令部分,并对应于数据。该对应关系是由axi协议保证的。注意,根据权限表1,awprot/arprot表示数据是否是普通数据或安全数据。

权限表1

如权限表1中所示,以位[0](bit[0])作为一示例,当位[0]等于1时,表示允许awprot=0的写操作。否则,当位[0]等于0时,表示禁止awprot=0的写操作。以位[7]作为另一个示例,当位[7]等于1时,表示允许arprot=1的读操作。当位[7]为0时,表示禁止arprot=1的读操作。注意,位信息被存储在配置信息中。注意,权限表1仅是为了说明目的。那些本领域技术人员可用不同的数字、顺序或组合来配置访问控制表,这都是在本发明的实施方式的范围之内。

写数据被作为一示例以进一步说明权限表1。例如,在当前写入的数据具有awprot=0时,这意味着当前写入的数据包括安全数据。然后在权限表1中的位[0]被用于确定当前的传输是否允许数据被写入到rcom0/rcom1。此外,在权限表1中的位[4]被用于确定当前的传输是否允许数据被写到rsec0/rsec1。

图4是根据本发明的一实施方式的地址映射表视图。

地址映射表结构示于图4,它包括两个表:重映射表0和重映射表1。使用两个表的优点在于允许动态地更新映射关系。当不存在传输时,地址重映射电路1120更新当前使用的重映射表。每个重映射表包括16组映射信息,并且信息的每个组包括addr_h、addr_l和偏移(offset)。addr_h和addr_l定义地址的一个范围。当地址重映射电路1120检测到访问地址(addr)落于addr_h和addr_l之间时,地址重映射电路1120将访问地址addr替换为addr+offset。以这种方式,最初位于第一安全区域内的地址空间中的普通数据已被重映射到用于第二普通区域的地址空间内的地址。可替代地,最初位于第一普通区域内的地址空间中的安全数据已被重映射到用于第二安全区域的地址空间内的地址。请注意,虽然图4示出了两套重映射表,即重映射表0和重映射表1,但本发明的实施方式可以只用一个重映射表来实现。

地址重映射电路1120允许对每个设备的不同的传输类型设置不同的或相同的重映射使能选项。该重映射使能选项如图4所示,其具有值0或1。1可表示使能选项是开启的,换言之,该设备允许重映射地址。0可表示使能选项是关闭的,换言之,该设备禁止重映射地址。可替代地,本领域技术人员可以交换0和1的含义。当不需要重映射时,该使能选项被关闭,换句话说,该设备禁止重映射地址,以最大化传输效率。

例如,虽然没有在图3中示出,方法300还可以包括确定设备是否被允许重映射地址;如果设备不允许重映射地址,则保留设备要访问的普通数据的原始地址或安全数据的原始地址;如果该设备允许重映射地址,如果普通数据具有用于第一安全区域的地址空间内的地址,则重映射普通数据的地址到用于第二普通区域的地址空间;或如果安全数据具有用于第一普通区域的地址空间内的地址,则重映射安全数据的地址到用于第二安全区域的地址空间。

可替代地,方法300进一步包括保持第一重映射表和第二重映射表,用于普通数据的地址到用于第二安全区域的地址空间之间的第一映射,以及安全数据的地址到用于第二普通区域的地址空间之间的第二映射。第一重映射表当前正被使用,并且第二重映射表是空闲的。方法300还包括用更新的第一映射和第二重映射以更新第二重映射表;当更新第一重映射表且第二重映射表的更新完成时,直接使用第二重映射表。使用两个重映射表的优点,例如,在图4中所示的重映射表0和重映射表1,是允许重映射表的动态更新,而不会生成可能影响地址的重映射的中间无效值。

重映射表可根据地址的顺序安排映射信息,例如,按升序或降序排列。地址重映射电路1120采用二进制搜索方法来定位地址,以便增加检索效率。

例如,虽然没有在图3中示出,方法300可以进一步包括检测普通数据是否具有用于第一安全区域的地址空间内的地址,或检测安全数据是否具有用于第一普通区域的地址空间内的地址是通过使用二进制搜索来实现的。

返回参考权限表1和图4,该awprot或arprot等于0(也表示为awprot/arprot=0)表示该数据是安全数据,并且awprot或arprot等于1(也表示为awprot/arprot=1)表示该数据是普通数据。

可替代地,返回参考权限表1,访问控制电路1122基于授权配置信息针对dram访问设备的不同的传输类型进行传输控制。rsec0/rsec1/rcom0/rcom1的边界划分通过寄存器进行设定。该组寄存器是由可信任的处理核进行配置的。rsec0和rsec1具有相同的授权,并且rcom0和rcom1具有相同的授权。访问控制电路1122根据awid/arid识别不同的dram访问设备,并根据awprot/arprot识别不同的传输类型(注:awprot表示写地址信道保护位(writeaddresschanne1protectionbits),以及arprot表示读地址信道保护位(readaddresschanne1protectionbits))。每一个dram访问设备具有一套如权限表1所示的相应的配置信息。访问控制电路1122根据该配置信息执行传输控制。当来自dram访问设备的请求是非法写操作时,访问控制电路1122将拒绝写入数据;或当来自dram访问设备的请求是无效的读操作时,访问控制电路1122将返回零。

例如,虽然没有在图3中示出,方法300进一步包括为访问地址的设备配置设备id和传输类型;并且通过与授权表比较,根据传输的类型和设备id,确定设备是否被允许访问该地址。

图5示出了根据本发明的实施方式的用于dram保护的设备500的框图。设备500包括分配电路510、检测器520和重映射电路530。该分配电路510分别分配地址空间用于第一普通区域、第二普通区域、第一安全区域和第二安全区域。检测器520检测普通数据是否具有用于第一安全区域的地址空间内的地址。如果普通数据具有用于第一安全区域中的地址空间内的地址,则重映射电路530重映射普通数据的地址到用于第二普通区域的地址空间。检测器520进一步检测安全数据是否具有用于第一普通区域的地址空间内的地址。如果安全数据具有用于第一普通区域的地址空间内的地址,重映射电路530进一步重映射安全数据的地址到用于第二安全区域的地址空间。在另一个实施例中,检测器520可以确定安全数据或普通数据的地址是否需要被重映射,并将重映射确定结果以数字信号的形式输出至重映射电路530。然后,重映射电路530根据检测器520的输出进行相应的重映射操作。

可选地,设备500还包括在图5中未示出的判定电路。该判定电路确定访问普通数据或安全数据的设备是否是被允许重映射地址。重映射电路530被进一步配置为,如果设备未被允许重映射地址,则保持普通数据的原始地址或安全数据的原始地址;如果设备被允许重映射地址,且如果该普通数据具有用于第一安全区域的地址空间内的地址,则重映射电路530进一步被配置为重映射普通数据的地址到用于第二普通区域的地址空间;或如果该安全数据具有用于第一普通区域的地址空间内的地址,则重映射安全数据的地址到用于第二安全区域的地址空间。

可替代地,检测器520检测普通数据是否具有用于第一安全区域的地址空间内的地址或检测安全数据是否具有用于第一普通区域的地址空间内的地址是通过使用二进制搜索实现的。

可替代地,分配电路510还被配置为为访问地址的设备配置设备id和传输类型;并且判定电路还进一步被配置为通过与授权表比较,根据传输类型和设备id,确定设备是否被允许访问地址。

可替代地,重映射电路530被进一步配置为保持第一重映射表和第二重映射表,其每一个均用于普通数据的地址到用于第二安全区域的地址空间之间的第一映射,以及安全数据的地址到用于第二普通区域的地址空间之间的第二映射;其中第一重映射表是当前正被使用的,并且第二重映射表是空闲;使用更新的第一映射和第二映射以更新第二重映射表;以及当第一映射和第二映射的更新完成时,直接使用第二重映射表。

通过将重映射电路530引入到本发明的实施方式中,在不同的软件地址空间分配之间的映射机制被引入。该映射电路530帮助软件完成从逻辑地址到底层普通区域和安全区域的软件可见的映射。在这种情况下,软件只需维持不同产品的映射,并且对原始的软件代码结构仅需要很少甚至没有变化。此外,根据本发明的实施方式的地址映射方法与不同的软件程序地址空间的地址重映射方式相兼容。

图6示出了根据本发明的实施方式的数据加密的数据流的视图。数据加密的数据流将参考图1和图7详细地被讨论。

返回参考图1,dram_denc114实现了dram数据加密和解密功能。dram_denc114主要分为数据加密电路1142和dram_key动态更新电路1144。数据加密电路1144使用例如,64位密钥对写入dram的数据进行加密,并且对从dram读出的数据进行解密。该加密算法易于soc(片上系统)来实现,并且不影响dram访问效率。动态更新电路1144允许在系统操作过程中使用n个dram加密密钥,以及允许密钥更新,从而大大提高系统的安全性。

图7示出了用于数据加密的电路的框图。如图7所示,用于数据加密的电路700主要包括密钥生成器710、数据生成器720和更新电路730。该密钥生成器710被配置为生成随机密钥。该数据生成器720被配置为通过置换原始的dram写数据的位的顺序,生成更新的写数据。数据生成器710进一步通过对所生成的随机密钥与更新的写数据执行函数以进一步生成加密的数据。当不存访问dram的任何请求时,更新的电路730根据时刻动态地更新所生成的随机密钥。

密钥生成器710可以包括,例如,随机数生成器。数据生成器720可通过位置换单元(也称为比特置换单元)来实现。数据生成器720还可以进一步包括可逆函数f(x)单元,使用由随机数生成器产生的64位密钥作为输入。该算法相较于高级加密标准(aes)、三重数据加密标准(tdes)算法更易于soc实现,而不会造成对dram传输效率的损失。通过随机数生成器的引入,相同的数据将具有用于不同芯片的不同加密结果,不同的芯片将具有不同的加密结果,并且当芯片在不同的时刻被启动时,每个芯片将具有不同的加密结果,这会大大增强数据的安全性。

具体来说,例如,密钥生成器710产生64位dram保护密钥(dram_key)。该密钥值在每次上电时是不同的,并且密钥值对于芯片是唯一的。dram_key是保密的,这不能够由公共处理核读取。注意,虽然根据本发明的实施方式,dram的密钥是64位的,本领域技术人员可以使用其他位的dram密钥。

数据生成器720可以置换原始写数据wdata,从而生成新的写数据wdata′。例如,数据生成器720可执行对dram访问的单个传输的字节内的位置换。可替代地,在64位数据内的每个字节使用不同于在相同的64位数据内的其它字节的唯一的置换方法。例如,如图6中所示,第一字节(即,位[0]-位[7])使用不同于第八字节(即,位[56]-位[63])使用的置换方法,如图6所示,置换是基于位单元的。可替代地,置换可以是以二位为基础,或者以字节为基础等。

该数据生成器720可以进一步使用64位dram密钥和wdata′来执行f(x)函数,以便生成最终的加密数据。f(x)函数可以是任何可逆函数,被馈以64位密钥,诸如异或(xor)操作。例如,最终加密数据可以通过以下运算生成:

由于dram访问对访问效率非常敏感,一方面,它不可能使用复杂的数据加密算法,诸如高级加密标准(aes)、三重数据加密标准(tdes),其消耗大量的时间用于加密和解密。另一方面,使用简单的加密算法将不可避免地降低安全级别。当产品开机后处于长时间的运行过程中,存在加密算法被破解的风险。本发明的实施方式提供了动态更新dram_key的方法,这使得在运行过程中n组dram加密的密钥被更换,并且进一步增加了破解的难度。n可以选择大于等于2的任意值。n等于4作为一示例被示于图9。

图8示出了根据本发明的实施方式的随机密钥的动态更新的方法800的视图。该方法800包括在框810中生成随机密钥;在框820,通过对原始dram写数据的位的顺序进行置换以生成更新的写数据;在块框830,通过对所生成的随机密钥与更新的写数据执行函数以生成加密的数据;在框840中,当不存在访问dram的任何请求时,根据时刻动态地更新所产生的随机密钥。

可替代地,方法800还可以包括在预定的时间间隔内动态地更新随机密钥;以及用更新的随机密钥加密数据。

图9示出了根据本发明另一实施方式的dram密钥的动态更新的方法的视图。

具体而言,密钥生成器710,例如,随机数生成器生成四组dram加密密钥,dram_key0~dram_key3。默认情况下,在包括dram的系统启动后,系统首先使用dram_key0用于dram访问数据进行加密和解密。

返回参照图1并参考图9,dram_key动态更新电路1144被配置为自动地更新密钥。例如,

(1)在随机时间间隔time0之后,则dram_denc114从地址0开始依次地使用dram_key1对存储器数据进行重新加密,然后将重新加密的存储器数据写入存储器,并且将当前更新的指针update_ptr0反馈给数据加密电路1142。该update_ptr0移动的方向由箭头0表示。加密或重新加密的存储器数据,例如,可以是整个dram的内部数据(包含安全与普通的数据)。可选地,加密或重新加密的存储器数据,在一种实施方式中,可以只包含安全数据。

(2)在随机时间间隔time1之后,如果系统100无任何dram访问请求,则dram_denc114从地址0开始依次使用dram_key2对存储器数据进行重新加密,然后将重新加密的存储器数据写回到存储器,并且将当前更新的指针update_ptr1反馈给数据加密电路1142。该update_ptr1移动的方向由箭头1表示。

(3)在随机时间间隔time2之后,如果系统100无任何dram访问请求,则dram_denc114从地址0开始依次使用dram_key3对存储器数据进行重新加密,然后将重新加密的存储器数据写回到存储器,并且将当前更新的指针update_ptr2反馈给数据加密电路1142。该update_ptr2移动的方向由箭头2表示。

数据加密和解密电路1142根据以下规则加密和解密数据:

(1)当设备访问地址小于update_ptr2的地址时,该地址由在dram区域内填充有垂直线的框表示。

dram_denc114使用dram_key3用于加密和解密正常读取和写入的数据。

(2)当设备访问地址大于update_ptr2的地址但小于update_ptr1的地址时,该地址由在dram区域内填充有水平线的框表示。

a)对于包含在dram_denc114中的动态更新电路,在系统100中的dram_denc114使用dram_key2解密读数据,并使用dram_key3加密写数据。

b)对于例如通过dram访问设备,或axi主机,如公共处理核、或视频解码器进行的正常的读/写操作,dram_denc114使用dram_key2对正常的读数据进行解密,或对正常的写数据进行加密。

(3)当设备访问地址大于update_ptr1的地址但小于update_ptr0的地址时,该地址由在dram区域内填充有斜线的框表示。

a)对于包含在dram_denc114中的动态更新电路,在系统100中的dram_denc114使用dram_key1对读数据进行解密,并使用dram_key2对写数据进行加密。

b)对于正常的读/写操作,dram_denc114使用dram_key1对正常的读数据进行解密,或对正常的写数据进行加密。

(4)当设备访问地址大于update_ptr0的地址时,该地址由在dram区域内填充有交叉线的框表示。

a)dram_denc114使用dram_key0对正常的读和写数据进行加密和解密。

b)对于包含在dram_denc114中的动态更新电路,在系统100中的dram_denc114使用dram_key0对读数据进行解密,使用dram_key1对写数据进行加密。

此外,当dram_key动态更新电路1144完成存储器数据的完整的一轮更新,例如,dram_key3已完成在dram末端,例如在dram底部的dram数据的更新时,dram_denc114执行以下操作并重复:

(1)dram_denc114将dram_key1赋值给dram_key0,将dram_key2赋值给dram_key1,将dram_key3赋值给dram_key2,并请求64位新的随机数作为dram_key3。

(2)dram_denc114将update_ptr1赋值给update_ptr0,将update_ptr2赋值给update_ptr1,并重置update_ptr2为0。然后新一轮的动态加密开始。

可替代地,dram_denc114可以具有暂停功能,从而允许系统100暂停动态更新功能,以满足带宽要求。

上面的实施方式使用4组动态密钥作为示例用于说明数据加密。可替代地,如果使用n个密钥,本实施方式可以如下被实现:

1、dram_keyn-1表示由相应的地址区域使用的原始密钥,以及dram_keyn表示更新的密钥:

对于由dram_key动态更新电路发送的数据读请求,dram_keyn-1被用于解密读数据。

对于由dram_key动态更新电路发送的数据写请求,dram_keyn被用于加密写数据。

2、对于由dram访问设备,也称为axi主机(如公共处理核,或视频解码器)的正常的数据读和写请求:

(1)当设备(如在芯片内的模块,其请求访问地址,如cpu、视频解码器)请求访问地址小于update_ptrn的数据时,dram_denc114使用dram_keyn+1进行数据加密和解密;

(2)当设备请求访问地址大于update_ptrn的数据时,dram_denc114使用dram_keyn进行数据加密和解密。

综上所述,dram_key的动态更新包括:

1、dram_key动态更新电路1144当且仅当系统100中没有接收到任何dram访问请求时执行存储器数据更新。

2、基于dram_keyn的数据更新从地址0开始,并且动态更新电路1144采用dram_keyn重新加密存储器数据,然后将重新加密的存储器数据写回存储器,并将当前更新的指针update_ptrn-1返回给数据加密电路1142。虽然在图1中,动态更新电路1144和数据加密电路1142被示出为独立的电路,但它们可以被并入为单个的电路。

3、当存储器数据的完整周期被更新,即,所有的dram_keyn已完成对数据的加密时,update_ptrn和dram_keyn分别被更替。

4、上述步骤1-3在产品运行过程中始终被执行,以确保dram_key始终处于动态更新中。

5、当系统100需要时动态更新可以被暂停。

关于图8的描述示出了用于加密的动态地更新随机密钥的方法。可替代地,图10示出了根据本发明的实施方式的解密的方法的视图。方法1000用于动态随机访问存储器(dram)的保护,包括在框310,分别对第一普通区域、第二普通区域、第一安全区域和第二安全区域分配地址空间;在框320,确定读数据是普通数据还是安全数据。如果读数据是普通数据,则方法1000还包括在框330检测普通数据是否具有用于第一安全区域的地址空间内的地址;以及在框340,如果普通数据具有用于第一安全区域的地址空间内的地址,则输出数字信号,指示重映射普通数据的地址到用于第二普通区域的地址空间。该方法1000进一步包括在框1010a,通过使用随机密钥对读数据执行逆函数以生成解密的读数据;以及在框1020a,通过反置换解密数据的位的顺序生成明文读数据。注意,相对于图10的用于解密的随机密钥与相对于图8在方法800中用于加密的随机密钥是相同的。

如果读数据是安全数据,该方法1000还包括在框350检测安全数据是否具有用于第一普通区域的地址空间内的地址;在框360,如果安全数据具有用于第一普通区域的地址空间内的地址,则输出数字信号,指示重映射安全数据的地址到用于第二安全区域的地址空间。该方法1000进一步包括在框1010b通过使用随机密对读数据执行逆函数以生成解密的读数据;以及在框1020b,通过反置换解密数据的位的顺序生成明文读数据。注意,相对于图10的用于解密的随机密钥与相对于图8在方法800中用于加密的随机密钥是相同的。

图11示出了根据本发明的实施方式的用于数据解密的电路。如图11所示,用于数据解密的电路1100包括数据生成器1110,和更新电路1120。数据生成器1110被配置为通过使用随机密钥在读数据上执行逆函数,生成解密的读数据;以及通过反置换所解密的数据的位的顺序,生成明文读数据。更新电路1120被配置为当不存在任何访问所述dram的请求时,根据时刻动态地更新所生成的随机密钥。可选地,当不进行随机密钥的动态更新时,更新电路1120是可以省略的。

本发明的实施方式使用了简单的数据加密算法,并且64位加密密钥使用随机数生成器。密钥对于芯片而言是唯一的,并且在电路每次上电时密钥都是不同的。此外,本发明的实施方式允许使用n组dram动态加密密钥,从而大大增加了破解的难度。

不同实施方式的特征和方面可以被整合到另外的实施方式中,并且本文件所示的实施方式可以在没有所有示例或者描述的特征或者方面的情况下实施。本领域技术人员会注意到,虽然本系统和方法的特定的示例和实施方式为了示例目的而被描述,在不背离本发明的精神和范围的情况下可以做出不同的修改。此外,一实施方式的特征可以被包含到另一个实施方式中,即使这些特征并未在本文件中在一个单一的实施方式中被一起描述。因此,本发明被所附的权利要求所描述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1