随机化的存储器访问的制作方法

文档序号:9375485阅读:453来源:国知局
随机化的存储器访问的制作方法
【技术领域】
[0001 ] 本发明的各个实施例涉及存储器访问,该存储器访问是至少部分地随机化的。

【发明内容】

[0002] 第一实施例涉及一种用于存储器访问的设备,该设备包括:
[0003] -第一部件,用于对存储器进行操作,
[0004] -第二部件,用于按随机化的方式来访问存储器,
[0005] -其中第一部件经由第二部件来进行操作中的至少部分。
[0006] 第一部件可以是处理器或控制器。第二部件可以是另一处理设备,其也可以称作 地址随机化单元。
[0007] 第二实施例涉及一种第二部件,其被布置用于:
[0008] -从第一部件接收关于存储器的信息,
[0009] -基于该信息并且基于随机值,按随机化的方式来访问存储器。
[0010] 第三实施例涉及一种用于访问存储器的方法,包括:
[0011]-由第二部件按随机化的方式来访问存储器,其中第一部件经由第二部件来进行 操作的至少部分。
[0012] 第四实施例涉及一种计算机程序产品,其可以直接载入到数字处理设备的存储器 中,该计算机程序产品包括用于执行本文所描述的方法的步骤的软件代码部分。
【附图说明】
[0013] 参照附图对各个实施例进行图示和说明。附图用于说明基本原理,使得仅仅说明 了用于理解基本原理所必须的各个方面。附图并未按比例绘制。在附图中,相同的附图标 记表示相似的特征。
[0014] 图1示出了允许将执行队列随机化的示意图,其中该随机化自身利用不同部件, 例如,多件硬件。
【具体实施方式】
[0015] 针对对于智能卡或嵌入式系统的许多攻击,攻击者需要知道哪个数据值在何时被 处理。攻击者可以对值进行探测,进行模板攻击,或者篡改该值。一个示例是加密算法的实 施例:如果攻击者知道中间值在何时被处理,那么他可以对这类中间值执行各种攻击。
[0016] 为了提升成功进行攻击的负担,算法的步骤可以被随机化,即,操作可以按随机顺 序被执行。然而,并不是所有的步骤都需要经受这类重排序,这是因为为了算法正确工作并 且产生所需结果,特定的接续可能是固有的和必要的。
[0017] 然而,存在若干算法,其具有关于它们的执行操作的相应序列的自由度。例如,在 高级加密标准(AES)中,对16字节执行AES子字节操作。其中执行16操作的队列可以被 随机化,即,16查找可以按随机顺序被执行。例如,可并行地进行的操作在按序列被执行时 可以经历随机化。
[0018] 然而,缺点是,对于软件实施方式的随机化也以软件实现。因此,用于对软件实施 方式的执行队列进行随机化的随机值正是由该软件产生。因此,该随机值自身经历与需要 被保护的数据相同的攻击。
[0019] 例如:如果攻击者(例如通过将探针放在其上)对CPU数据总线进行探测,那么他 得知随机值以及按随机化的顺序被处理的所有数据(由所述随机值确定)。在该情形中,随 机化没有作用,这是因为攻击者知道它,并且可以在没有显著困难的情况下消除它。
[0020] 类似的考虑可以适用于确定经受攻击的设备的功率损耗:如果攻击者能够建立关 于由CPU处理的值的模板,那么该模板可以用于泄漏随机值以及被保护的值,这就可能使 得随机化失效。
[0021] 本文所展示的各个示例特别地允许对在硬件中的软件实施方式的执行队列进行 随机化,其中随机化可以优选地对于软件隐藏。因此用于生成随机化序列的随机值可以不 由软件提供和/或处理,并且不能由针对软件的攻击所确定。由于软件并不知道随机化序 列,因此处理器(例如,CPU)或者软件不能泄漏(或者供给)关于这类随机化的任何信息。
[0022] 注意到,随机化可以是伪随机化。因此,任何随机值可以是真随机值,或者它可以 由确定性机制计算得到。在本文中,好的随机数可以由如下性质证明:如果攻击者知道所有 先前生成的随机数,他也不具有猜到下一随机数的优势。
[0023] 本方案的一个优势是,其将保护一个大的部件(例如,CPU)的相当困难的问题,向 保护若干部件转化,即,向保护除了该大的部件之外更小的部件(例如,随机生成器和/或 地址随机化单元)转化。因此,攻击者需要将其努力指向若干部件(即,该大的部件和该小 的部件),而不是仅仅指向一个部件。
[0024] 图1示出了允许将执行队列随机化的示意图,其中随机化自身利用不同部件,例 如,多件硬件。软件可以对所谓的地址随机化单元ARU 102进行配置,用于对从CPU 101发 送的用于访问存储器103的地址进行随机化。如果ARU 102被激活,那么它通过使用来自 随机数生成器104的随机值105,将用于访问存储器103的该地址随机化。对于不同的算法 或者算法的部分,可以利用这类随机化的不同的配置。由此,ARU 102可以被配置。
[0025] ARU 102将输入地址a映射到数据地址a'。映射可以基于下列各项中的至少一 项:
[0026] -ARU 102 的配置 c,
[0027] -访问类型t,
[0028] -数据地址a,
[0029] -随机值r,以及
[0030] -ARU 102的内部状态s。
[0031] 映射可以特别地基于地址a,配置c可以被明确地提供,或者配置c可以在ARU 102中被硬编码。可选地,地址a可以是配置c的部分。另外可选的是,访问类型t由CPU 101 向 ARU 102 提供。
[0032] 内部状态s可以通过不同手段更新。例如,内部状态s可以在加载配置c时被设 置为内部状态,并且它可以通过对CPU 101的读出或写入访问而更新。注意到,该读出和/ 或写入操作可能导致不同的状态转换,并且可能因此对地址a的随机化具有(不同的)作 用。
[0033] ARU 102的配置可以包括下列各项中的至少一项:
[0034] -用于随机化的范围al的下阈值,
[0035] -用于随机化的范围a2的上阈值,
[0036] -随机化的特性分配(例如,置换,permutation) 〇
[0037] 在运行时间期间,ARU 102的下列配置中的至少一个可以被切换,并且从而可以作 为随机化的主体:
[0038] -将对查找表的访问的顺序随机化;特别地:将AES S-box查找操作的顺序随机 化;
[0039] -将在可交换组操作中的操作的顺序随机化;
[0040] -将在关联组操作中的操作的顺序随机化;
[0041] -将条目的求和或求积的累积的顺序随机化;
[0042] -将条目的计算标积的累积的顺序随机化;
[0043] -将对中间值的按矢量或矩阵求积的计算的顺序随机化;特别是:将对AES混合列 (mix column)操作的计算中的步骤的顺序随机化;
[0044] -将对按秘密共享模式的共享值的操作(假设,例如,一些变量被划分为共享量) 的顺序随机化;
[0045] -将在读取来自存储器的秘密秘钥的组份或共享值时的访问的顺序随机化;
[0046] -将在对称加密算法(DES、AES等)中的操作的顺序随机化;
[0047] -将在非对称加密算法(RSA、ECC等)中的操作的顺序随机化;
[0048] -将在加密哈希算法(Whirlpool、SHA-1、SHA-2、SHA-3等)中的操作的顺序随机 化。
[0049] 示例件实施例:将AES舍入的16S_box杳找的队列随机化
[0050] 可以将其中软件执行对16字节值的AES S-box操作的队列随机化。执行这类16 字节值的AES S-box操作意味着,计算y; = S(Xi),其中χα.15是输入字节,而7。..15是输出字 节,即,16操作可以并行地进行。
[0051] 在一个普通软件实施例中,这是通过对每个字节重复下列操作而实现的:
[0052] -读出输入字节X1,
[0053] -执行 S-box 操作 S (Xi),
[0054] -写入输出字节yi。
[0055] 通过使用ARU 102将其中字节被处理的队列随机化,软件代码可以(基本上)是 相同的。ARU 102仅仅需要在执行代码前被配置。
[0056] 在该示例中,ARU 102可能被配置有16字节的读出存储器区域、和16字节的写入 存储器区域。针对读出操作,ARU 102可以被配置为,使得从读出存储器区域的下一 16读 出操作将导致存储在读出存储器区域中的16字节值的随机置换。因此ARU 102可以用随 机置换来替换在由CPU 101提供的16字节内的寻址。因此,在没有ARU 102的情况下,CPU 将使用预定的方式以对16字节进行寻址,
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1