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

文档序号:9252672阅读:来源:国知局
c可以是在数据结构或标头块中的不同变量。MAC-Lite算法302可以通过可以大于任何可能的个别输入(例如,k(j][i] ^ p-1)的质数P 314参数化,这可以由于已知用于MAC-Lite算法302的输入特性的假设而确定。此质数P 314可以小于一些可能输入(例如,选定密钥318、选定掩模316、存储器地址312及/或输入310),只要通过双射方式将可能输入的集合有效地映射到均保证小于质数P 314的输入的集合。这还允许小输入组合成一个较大变量。此质数P 314可以公开,但不应由攻击者可改变。
[0053]在替代实施方案中,输入(例如,选定密钥318、选定掩模316、存储器地址312及/或输入310)还可以通过将所述输入映射到域的元素中使用任意有限域GF(2~n)实施。
[0054]在一个实例中,MAC-Lite算法302可以涉及两个阶段。首先,中间多项式值(Val)被计算为:
[0055]Intermediate_Val = addr*k[0][key_index_0]+
[0056]input_l*k[l][key_index_l]+
[0057]input_2*k[2] [key_index_2] +...+
[0058]input_n*k[n][key_index_n]mod p。
[0059]随后MAC值被计算为:
[0060]MAC_value = Intermediate_Val XOR mask[mask_index]。
[0061]以此方式,MAC-Lite算法302可以产生相对安全的输出MAC值320,同时每当存取存储器块时避免迭代计算的多个循环。
[0062]图4说明可以经实施以产生相较于传统MAC更高效的MAC的MAC-Lite算法的一个实例。在装置或会话启动或起始402时预先产生密钥的集合k[0] [O]、…、k[n] [NK-1]。类似地,在装置或会话启动或起始404时预先产生掩模的集合mask[0]、mask[l]、…、mask [NM-1]。获得与数据结构406相关联的多个可变输入(例如,addr、input_l、input_2、…、input_n)。基于输入408中的一或多者从密钥的集合中选择多个密钥(例如,k[0] [key_index_0]、k[l] [key_index_l]、k[2] [key_index_2]及 k[n] [key_index_n])。类似地,基于可变输入410中的一或多者从掩模的集合中选择掩模(例如,mask[mask_index]) ο通过以下方式计算中间值:将多个可变输入中的每一者与对应选定密钥组合以获得多个暂时性值、将多个暂时性值组合及执行模P运算以获得中间值412。在各种实例中,每一输入及对应密钥可以使用逻辑运算、算术运算(例如,乘法)及/或可以用于组合两个值且获得暂时性值的任何其它运算或函数来组合。在一个实例中,Intermediate,val = addr*k[0][key_index_0]+input_l*k[l][key_index_l]+input_2*k[2][key_index_2]+…+input_n*k[n] [key_index_n]mod p,其中p是质数。随后可以在中间值与选定掩模(例如,mask[mask_index])之间执行异或(XOR)运算以获得消息验证代码(MAC)4140
[0063]在一个示例性实施方案中,多个密钥304(例如,密钥的集合)可以索引化(例如,通过key_index_x可选择的)。类似地,多个掩模308 (例如,掩模的集合)可以索引化(例如,通过313可选择的)。因此,可以基于用于数据结构的可变输入中的一者产生key_index值及/或maskjndex。使用可变输入的多个其它方法可以单独地或与其它信息组合用于产生取决于可变输入(例如,其中可变输入变化在整个数据结构中可以是不同的)变化的mask_indexo mask_index可以选自多个NM掩模308之中,其中NM是整数值,并且用于MAC值320的计算中。特定mask_index 313的从多个掩模308之中的选择可以是随机的、伪随机的及/或根据一些选择算法(例如,根据存储器地址312)。在一个实例中,多个掩模308中的掩模的每一者可以具有与质数P 314相同的位长度。
[0064]在一个实例中,多个密钥304可以被细分成子集306a、306b、306c,每一者具有NK元素(即,密钥)。类似于maskjndex的选择,可以基于相同可变输入或不同可变输入选择多个key_index_x。举例来说,密钥304的集合中的子集306a、306b及306c的长度NK可以用于推导用于子集306a、306b、306c中的每一者的密钥索引值。例如,特定key_index313(例如,key_index_l、key_index_2、…、key_index_n)的从多个掩模 308 之中的选择可以是随机的、伪随机的及/或根据一些选择算法(例如,根据存储器地址312)。优选地,到子集306a、306b、306c中的每一者中的key_index是不同的以对抗攻击者提供更高安全性。
[0065]应注意,MAC-Lite算法302可以用于多个不同情形中,而不仅仅用于存储器完整性。在此MAC-Lite算法302用于存储器完整性的情况下,MAC 320可以作为数据结构的一部分存储在用于存储器块的标头块中。在随后存取(例如,读取或写入)相同存储器块后,MAC产生并且与标头块中先前存储的MAC相比较以保全它们是相同的。如果MAC是不同的,那么可以假设或推断存储器块已受损且存储器块可能被清空或忽略。另外,受损存储器块的出现可能还指示存储器区内的其它存储器结构可能已受损。因此,其它存储器块还可能被清空、忽略或系统可以重新启动。
[0066]图5说明其中基于掩模的不同集合及密钥的不同集合的预先产生而产生验证代码的一般方法。预先产生502包括多个不同密钥的密钥的集合。例如,在启动处理电路、开启处理电路及/或起始在处理电路上执行的会话(例如,处理会话、应用会话、通信会话等)后可以产生密钥的集合。在一些实施方案中,密钥的集合可以被细分成如图3中所说明的子集(例如,密钥304的集合及子集306a、306b及306c)。类似地,预先产生304包括不同掩模的掩模的集合。例如,在启动处理电路、开启处理电路及/或起始在处理电路上执行的会话(例如,处理会话、应用会话、通信会话等)后还可以产生掩模的集合。可以基于随机值(例如,来自硬件随机位产生器、基于不可预测系统事件的随机数产生器、软件随机数产生器、基于种子值的伪随机数产生器等)产生密钥的集合及掩模的集合中的至少一者。密钥的集合及掩模的集合可以保持为秘密的。
[0067]随后可以获得506与数据结构(例如,消息、存储器区域、数据、文件、传输、标头块信息等)相关联的多个可变输入。在一些实施方案中,此类可变输入可以包含与数据结构或数据结构的位置相关联的存储器地址。
[0068]多个可变输入中的每一者可以与来自密钥的集合的选定对应密钥组合(例如,通过逻辑或算术运算,例如乘法)以获得多个暂时性值508。随后组合多个暂时性值(例如,通过逻辑或算术运算,例如加法等)以获得单个经组合值510。可以基于多个可变输入中的至少一者选择多个不同密钥中的每一者。随后可以使用固定质数值对单个经组合值执行模运算以获得中间值512。在一个实例中,中间值可以计算为多个可变输入中的每一者与其选定对应密钥相乘以获得多个暂时性值、加上所得的暂时性值及通过预先选定的固定质数执行模运算。所使用的每一密钥的值可以在零与质数之间。
[0069]随后可以在中间值与来自掩模的集合的选定掩模之间执行异或(XOR)运算以获得用于数据结构514的消息验证代码。可以基于多个可变输入中的至少一者(例如,对应于数据结构的可变存储器地址空间)选择掩模。应注意,在替代实施方案中,可以使用不同运算(例如,逻辑运算或算术运算)来组合中间值及选定掩模。
[0070]消息验证代码可以存储在存储器装置516中的数据结构内。在一些实例中,数据结构可以是固定长度的数据结构。
[0071]随后,当再次存取数据结构时,从数据结构518中获得先前存储的消息验证代码。随后,消息验证代码可以与先前存储的消息验证代码相比较以确认数据结构520的完整性。
[0072]图6是说明经调适以执行MAC-Lite算法以保全数据结构的完整性的装置的示例性实施的方框图。所述装置可以包含耦合到独立或集成存储器装置604的处理电路602。处理电路602可以包含消息验证代码(MAC)产生器606,其可以经调适以在存储于存储器装置604中的一或多个数据结构608a、608b
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1