用于保护固定长度的数据结构的完整性的方法

文档序号:9252672阅读:436来源:国知局
用于保护固定长度的数据结构的完整性的方法
【技术领域】
[0001]多个特征涉及通过使用消息验证代码保护数据结构免受攻击。
【背景技术】
[0002]堆存储器由处理器保留且通过元数据结构的使用组织。元数据结构可以是固定长度的数据结构,所述数据结构含有关于哪一变量“控制”存储器的下一部分(如果指派存储器)及保留在对应存储器块中的存储器的量的信息(例如,在标头块中)。攻击者可能希望破坏这些元数据结构(例如,修改标头块),以便减小自由存储器的量或保全某些重要数据片置于存储器的易受损部分中。因此,需要保护此元数据(例如,在数据结构或存储器块的标头块中的数据)以防止数据结构的未经授权的更改。
[0003]因此,需要一种计算量少的解决方案来保护数据结构。

【发明内容】

[0004]提供一种产生验证代码的方法。在启动处理电路或在所述处理电路上执行的会话后,预先产生包括多个不同密钥的密钥的集合。还预先产生包括多个不同掩模的掩模的集合。在启动所述处理电路或在所述处理电路上执行的所述会话后,还可以预先产生掩模的所述集合。可以基于随机值产生密钥的所述集合及/或掩模的所述集合中的至少一者。
[0005]可以获得与固定长度的数据结构相关联的多个可变输入。可以至少部分地基于所述多个可变输入中的至少一者选择所述掩模及选定对应密钥中的每一者。
[0006]所述多个可变输入中的每一者可以与来自密钥的所述集合的选定对应密钥组合以获得多个暂时性值。随后可以组合所述多个暂时性值以获得中间值。随后可以在所述中间值与来自掩码的所述集合的选定掩模之间执行运算以获得用于所述固定长度的数据结构的消息验证代码。密钥的所述集合可以被细分成密钥的子集且从密钥的任一单个子集选择仅密钥的一子集(例如,一个密钥、两个密钥等)来计算所述消息验证代码。
[0007]所述多个可变输入中的所述至少一者可以是与所述固定长度的数据结构相关联的存储器地址。可以基于所述存储器地址选择所述选定对应密钥中的每一者。可以基于所述存储器地址选择所述选定掩模。
[0008]所述多个暂时性值可以通过以下方式组合:(a)将所述多个暂时性值相加以获得经组合值,及/或(b)通过预先选定的固定质数对经组合值执行模运算以获得所述中间值。密钥的所述集合中的每一密钥的值可以在零与所述预先选定的固定质数之间。所述中间值与所述选定掩模之间的运算可以是(例如)按位异或运算。
[0009]掩模的所述集合及密钥的所述集合中的至少一者可以在启动之间或会话之间的持续时间内存储在安全的存储器位置中。所述消息验证代码可以存储在存储器装置中的所述固定长度的数据结构内。所述消息验证代码可以存储在用于所述固定长度的数据结构的标头块中。
[0010]在随后的验证阶段期间,可以从所述数据结构中获得先前存储的消息验证代码。所述消息验证代码随后可以与所述先前存储的消息验证代码相比较以确认所述数据结构的完整性。
[0011]类似地,可以提供包括存储器装置及耦合到所述存储器装置的处理电路的装置。所述存储器装置可以用于存储固定长度的数据结构。所述处理电路可以经配置或经调适以:(a)在启动处理电路或在所述处理电路上执行的会话后预先产生包括多个不同密钥的密钥的集合;(b)预先产生包括多个不同掩模的掩模的集合;(C)获得与所述固定长度的数据结构相关联的多个可变输入;(d)将所述多个可变输入中的每一者与来自密钥的所述集合的选定对应密钥组合以获得多个暂时性值;(e)将所述多个暂时性值组合以获得中间值;(f)在所述中间值与来自掩模的所述集合的选定掩模之间执行运算以获得用于所述固定长度的数据结构的消息验证代码。
[0012]在启动所述处理电路或在所述处理电路上执行的所述会话后,还可以预先产生掩模的所述集合。
[0013]基于随机值产生密钥的所述集合及掩模的所述集合中的至少一者。
[0014]所述多个暂时性值可以通过以下方式组合:(a)将所述多个暂时性值相加以获得经组合值,及/或(b)通过预先选定的固定质数对所述经组合值执行模运算以获得所述中间值。密钥的所述集合中的每一密钥的值可以在零与所述预先选定的固定质数之间。所述中间值与所述选定掩模之间的运算可以是按位异或运算。
[0015]基于所述多个可变输入中的至少一者选择所述掩模及所述选定对应密钥中的每一者。所述多个可变输入中的所述至少一者是与所述固定长度的数据结构相关联的存储器地址。基于所述存储器地址选择所述选定对应密钥中的每一者。可以基于所述存储器地址选择所述选定掩模。
[0016]密钥的所述集合可以被细分成密钥的子集且从密钥的任一单个子集选择仅密钥的一子集(例如,一个密钥、两个密钥等)来计算所述消息验证代码。
[0017]所述处理电路可以进一步经调适以在启动之间或会话之间的持续时间内将掩模的所述集合及密钥的所述集合中的至少一者存储在安全的存储器位置中。
[0018]所述处理电路还可以进一步经调适以将所述消息验证代码存储在存储器装置中的所述固定长度的数据结构内。所述消息验证代码可以存储在用于所述固定长度的数据结构的标头块中。
[0019]所述处理电路可以进一步经调适以:(a)从所述数据结构获得先前存储的消息验证代码;及/或(b)将所述消息验证代码与所述先前存储的消息验证相比较以确认所述数据结构的完整性。
【附图说明】
[0020]图1是说明使用加密密钥通过消息验证代码(MAC)保护存储器中的数据结构的一个方法的方框图,所述加密密钥存储在安全的长期存储装置中或每当相关联的存储器控制器启动时随机产生且保存在安全的易失性存储器中。
[0021]图2是说明使用相较于图1的加密MAC计算更高效的MAC-Lite产生器保护数据结构的另一方法的方框图。
[0022]图3说明MAC-Lite算法302的实例,其相较于图1的加密MAC计算更高效,同时相较于循环冗余检查(CRC)或探测值具有更高安全性。
[0023]图4说明可以经实施以产生相较于传统MAC更高效的MAC的MAC-Lite算法的一个实例。
[0024]图5说明其中基于掩模的不同集合及密钥的不同集合的预先产生而产生验证代码的一般方法。
[0025]图6是说明经调适以执行MAC-Lite算法以保全数据结构的完整性的装置的示例性实施的方框图。
[0026]图7说明基于掩模的不同集合及密钥的不同集合的预先产生而产生用于存储器空间的验证代码的实例。
【具体实施方式】
[0027]在以下描述中,给出具体细节以提供对本发明的各种方面的彻底理解。然而,所属领域的技术人员应理解,可以在不具有这些具体细节的情况下实践所述方面。举例来说,可以通过框图展示电路以便避免以不必要的细节混淆所述方面。在其它情况下,可以不详细展示众所周知的电路、结构及技术以便不混淆本发明的方面。
[0028]词语“示例性”在本文中用以意味着“充当实例、例子或说明”。本文中描述为“示例性”的任何实施方案或方面未必应解释为比本发明的其它方面优选或有利。同样,术语“方面”不要求本发明的所有方面包含所论述的特征、优点或操作模式。
[0029]概述
[0030]一个特征提供用以通过使用计算高效的算法来保全数据结构的机制。在启动或起始会话后,可以预先产生多个密钥及/或掩模。通过选择多个预先产生的密钥的子集及/或从多个预先产生的掩模中选择掩模,可以针对每一数据结构(例如,存储器块或标头块)计算验证代码。验证代码可以存储在数据结构内,用于进一步检验数据结构的完整性。在同一周期或会话期间,用于所有验证代码(例如,用于其它数据结构)的密钥及/或掩模可以选自相同的多个密钥及/或掩模。
[0031]此方法相较于其它加密消息验证代码(MAC)方法可以提供较低安全性,但是相较于循环冗余检查(CRC)或探测值可以提供较高安全性,同时具有略低于标准CRC实施方案的实施成本。通过了解输入的格式且通过使用数目比平时多的随机或伪随机密钥,此解决方案会增加效率。
[0032]具有动态产生的消息验证代码的示例性存储器结构
[0033]图1是说明使用加密密钥通过消息验证代码(MAC)保护存储器中的数据结构的一个方法的方框图,所述加密密钥存储在安全的长期存储装置中或每当相关联的存储器控制器启动时随机产生且保存在安全的易失性存储器中。处理电路102可以耦合到及/或集成存储器装置104或存储装置。存储器装置104可以包含布置为存储器块114a、114b及/或114c的存储器空间。每一存储器块114a、114b、114c可以包含标头块106a、106b及106c及对应块保留的存储器空间108a、108b及108c
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1