用于低开销的存储器重播保护的并行化的计数器攀树的制作方法_2

文档序号:8303460阅读:来源:国知局
br>[0041] 当处理器执行写入操作W将经加密的数据线280中的一个写回到受保护的存储 器区域时(例如,当将数据线从管芯上的末级高速缓存清除到主存储器中的受保护的区域 时),MEE 150标识与该数据线相关联的版本节点260和L0, L1,L2和L3计数器(210-240)。 MEE 150更新与数据线相关联的MAC 270并增大标识的版本节点260中的该数据线的版本。 另外,MEE 150还更新该数据线的标识的L0,L1,L2和L3计数器(210-240),W及与更新的 版本和计数器相关联的嵌入的MAC。此更新过程从计数器树的底部级别前进到L3计数器的 根级别,L3计数器安全地存储在处理器管芯上的芯片上,因此,可保证针对攻击的保护。计 数器树的每一级别处的计数器充当下一较低级别的版本,W版本节点260存储数据线的版 本结束。因此,在向数据线写入时,更新所有计数器(包括版本)W及它们的沿着由数据线 的地址所标识的树枝的相关联的嵌入的MC,W反映版本更新。
[0042] 为了确保重播保护,每当从受保护的区域加载数据线时,针对树节点验证真实性, 直到计数器树的根。任何级别处的不匹配表示可能的攻击并引发安全性异常,由此,战胜攻 击。具体而言,当处理器在经加密的数据线280中的一个上执行读取操作时,MEE 150标识 该数据线的版本W及L0, 11,L2和L3计数器(210-240)。读取操作不改变版本和L0, 11, L2和L3计数器的值(210-240)。在读取操作时,MEE 150验证与数据线相关联的MAC 270。 另外,MEE 150验证与版本,L0,11,L2和L3计数器(210-240)中的每一个相关联的嵌入的 MAC。此验证过程从计数器树的底部级别前进到安全的根计数器L3。
[0043] 在一个实施例中,加载到攀树中的树节点被高速缓存在MEE高速缓存(MEE 150的 本地高速缓存)本地。MEE高速缓存存储树节点(包括版本节点和嵌入的MAC)的被W前 的请求验证的值。ffiE高速缓存的内容是安全的,因为它位于处理器管芯上。对于读取操 作,当在MEE高速缓存中发现沿着攀树的分支的第一节点时,结束攀树。对于写入操作,当 在1邸高速缓存中发现沿着攀树的树枝的第一节点,且高速缓存的树节点处于修改的状态 时,结束攀树。
[0044] 为确保计数器树对于所有请求返回正确的计数器值,在写入请求时,在共享那些 树节点中的任何一个的任何其他请求(读取或写入)可W进行之前,MEE 150完成对沿着 写入请求的分枝的全部树节点的更新。由于读取请求不改变计数器树的值,因此,可W并行 地处理某些读取请求,尽管该些读取请求共享计数器树中的树节点中的一个或多个。
[0045] 图3A-3C示出了向MEE 150提交的读取请求之间的依赖关系的示例。假设访问受 保护的存储器区域的四个读取请求(A,B,CW及D)在随后的循环中背对背到达。为确保从 受保护的存储器区域中读取的加密的数据线免遭完整性和重播攻击,MEE 150需要验证与 正在被读取的数据线相关联的树节点值。此示例中的四个请求共享某些树节点,因此,在它 们之间建立依赖关系链。图3A示出了请求A和B在相同高速缓存线上(或等效地,相同树 节点)具有它们的版本,同样,沿着计数器树,共享它们的分枝中的所有节点,直到根L3计 数器。在示例中,共享的树节点被示为带有阴影线。由于请求B在的请求A之后到达W供 处理,因此,使请求B依赖于请求A。
[0046] 图3B示出了请求C到达下一循环。由于请求C与请求B共享相同L3计数器 及L2计数器和L1计数器),因此,使请求C依赖于请求B。图3B所示的共享从级别L1向 上。类似地,图3C示出了请求D与请求C共享L3计数器,并使其依赖于请求C。图3C所示 的共享处于最后一个级别,即,L3。
[0047] 图3A-3C还示出了由请求形成的依赖关系链。在依赖关系链中,使新到达的请求 依赖于链中的最后一个请求。在一个实施例中,MEE 150跟踪数据结构中的每一依赖关系 链中的最后一个请求,其中,到达MEE 150的每一请求都与LinWail字段相关联。一组 LinWail字段表示其相关联的请求是依赖关系链中的最后一个请求。
[0048] 利用串行化的依赖关系算法,只有在对请求A的处理完成的情况下,才释放请求 B(即,开始攀树)。一旦请求B完成了其攀树,请求C的攀树开始。一旦请求C完成了其攀 树,请求D的攀树开始。
[0049] 本发明的各实施例实现允许并行地处理多个读取请求的并行化的攀树。并行化攀 树缩小了用于完整性和重播保护的开销。并行化的攀树基于读取请求不必被串行化的观 察,因为读取不修改计数器树中的任何计数器值。
[0050] 然而,写入操作更新计数器树中的计数器值,如此,需要维护适当的顺序。对于涉 及写入的请求,需要实施依赖关系,W确保正确的计数器值用于执行真实性检查。
[0051] 在一个实施例中,MEE 150在接收到传入的读取请求时,执行依赖关系检查,W判 断传入的读取请求是否与正在由MEE 150处理的W前接收到的读取请求共享树节点中的 任何一个,W及在存在树节点的共享的情况下是否可W执行并行化的攀树。
[0052] 图4是示出了根据本发明的一个实施例的对于读取请求的依赖关系检查方法400 的流程图。在一个实施例中,由图1的MEE 150执行方法400,虽然也可W使用替换实施例。
[0053] 在一个实施例中,当MEE 150接收到传入的读取请求时,,它将此请求的L3计数器 地址与进程中的请求中的每一个(即,当前正在由MEE 150处理的请求)的L3计数器地址 进行比较(框410)。如果在传入的请求和进程中的请求之间有L3计数器地址的匹配(框 420),则MEE 150将该进程中的请求设置为传入的请求的"依赖(cbpendent_on)"请求(框 430)。如果没有匹配(框420),则操作持续,直到全部进程中的请求都被比较(框425)。
[0054] 如果在框420发现匹配的进程中的请求,则MEE 150进一步检查依赖请求是否是 依赖关系链的尾部(框440)。如果不是尾部,则操作返回到框410, W发现具有匹配的L3 计数器地址并且是依赖关系链的尾部的另一个进程中的请求。如果依赖请求是依赖关系链 的尾部(框440),则MEE 150进一步检查依赖请求是否是读取请求并且当前未被挂起(框 450)。如果框450的条件是假,则MEE 150挂起传入的请求(框470)。如果框450的条件 是真(即,依赖请求是读取请求,并且当前未被挂起),则传入的请求的"依赖"被复位为"空 (N化L)",意味着,传入的请求将不会由于此依赖请求被挂起(框460)。方法400的操作持 续,直到MEE 150确定挂起传入的读取请求(框470),或在比较所有进程中的请求之后确定 不挂起传入的请求(框425和480)。
[00巧]MEE 150通过执行方法400,检查传入的读取请求的依赖关系。如果发现传入的读 取请求依赖于当前未挂起的读取,则忽略依赖关系检查的输出,并且允许传入的读取请求 开始其处理。
[0056] 在某些实施例中,在图4中所描述的操作可W与进程中的请求并行地执行。例如, 每一进程中的请求都可W维护其L3地址W及其LinWail位。只有在对应的进程中的请 求是依赖关系链中的最后一个条目的情况下,才设置LinWail位。所有进程中的请求的 LinWail位构成LinWail向量。当传入的请求被准许进入MEE 150时,并行地将传入的请 求的L3地址与所有进程中的请求的L3地址进行比较,并且生成L3Match位向量作为结果。 如果在传入的请求和进程中的请求之间有L3地址的匹配,则设置此L3Match位向量中的对 应于该进程中的请求的位。然后,将L3Match位向量与LinWail向量进行与操作。所产生 的向量中的位值1表示对应的进程中的请求是对传入的请求的依赖请求。操作可W前进到 图4的框450、460和470, W判断是否应该挂起传入的请求。
[0057] 然而,在某些情况下,允许两个请求并行地进行会导致重复的操作。在图3A的示 例中,请求A和B会导致MEE 150发出访问存储器中的相同树节点的请求,如此,浪费存储 器带宽。作为另一个示例,请求A和B会导致MEE 150对于共享的树节点执行重复的认证, 如此,浪费加密资源和功率。本发明的各实施例包括跟踪被并行地处理的读取请求所导致 的重复的请求的电路,并防止重复的操作由MEE 150执行。在一个实施例中,此电路是MEE 150中的请求跟踪器(也被称为记分牌)。
[005引 图5示出了包括请求跟踪器电路510的MEE 150的实施例。请求跟踪器电路510 与MEE跟踪器520 (跟踪向MEE 150发送的读和写请求的进度)、填充缓冲器530 (向存储 器发出对于攀树所使用的树节点的请求)、加密引擎540(执行树节点的加密、解密W及认 证),W及MEE高速缓存550(高速缓存W前的计数器树访问的结果;例如,L0, L1,L2,版本 W及嵌入的MAC)连接。请求跟踪器电路510分别包括填充缓冲器530、加密引擎540和MEE 高速缓存550的未完成的请求队列531,541和551。MEE 150还包括存储器560,用于存储 计数器树状结构的顶级计数器(例如,图2的L3计数器),W及用于执行并行化的攀树的有 限状态机(FSM)570。
[0059] 当传入的请求到达MEE 150时,MEE跟踪器520向请求跟踪器电路510发出请求, 指定由该请求用于其攀树的树节点。请求跟踪器电路510跟踪向MEE高速缓存550、填充 缓冲器530和加密引擎540发送的请求,W便请求只向它们中的每一个发送一次。目P,不向 MEE高速缓存550、填充缓冲器530和加密引擎540中的每一个发送重复的请求。请求跟踪 器电路510通过使用未完成的请求队列531,541和551,来跟踪请求,请求队列531,541和 551分别包含有关对填充缓冲器530、加密引擎540和MEE高速缓存550的重复的请求的信 息。请求跟踪器电路510就重复的请求查询该些未完成的队列531,541和551,并跟踪该些 队列中的重复的请求,W便可W向对应的跟踪器条目发送它们的完成状态,W使来自W前 的请求的结果被转发到随后的重复的请求。如此,将向MEE组件只发送重复的请求一次。
[0060] 再次参考图3A-3C的示例,此处所描述的对于读取请求的并行化的攀树去除在受 保护的存储器访问中的不需要的串行化。请求A和请求B可W由MEE 150并行地处理。利用 请求跟踪器电路510,尽管该两个请求共享整个树分枝,但是,同一存储器请求将不会向存 储器发送两次,并且对于该两个请求,相同密码操作将不会执行多次。请求跟踪器电路510 确保当复制的请求根据需要获得响应时,它们不实际被执行多次。对于请求C,可W与请求 B的处理并行地加载并认证包含版本和L0的树节点。最后,可W在沿着计数器树中的分枝 的所有级别加载并认证请求D,只与W前的请求共享L3计数器。示例示出了并行化的攀树 如何可W实现读取请求处理的显著的并行化同时避免由并行化产生的潜在地重复的工作。 共享的级别越高,优点越多。值得注意的是,由于计数器树中的较高的节点表示受保
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1