c可以是在數(shù)據(jù)結構或標頭塊中的不同變量。MAC-Lite算法302可以通過可以大于任何可能的個別輸入(例如,k(j][i] ^ p-1)的質數(shù)P 314參數(shù)化,這可以由于已知用于MAC-Lite算法302的輸入特性的假設而確定。此質數(shù)P 314可以小于一些可能輸入(例如,選定密鑰318、選定掩模316、存儲器地址312及/或輸入310),只要通過雙射方式將可能輸入的集合有效地映射到均保證小于質數(shù)P 314的輸入的集合。這還允許小輸入組合成一個較大變量。此質數(shù)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可以產(chǎn)生相對安全的輸出MAC值320,同時每當存取存儲器塊時避免迭代計算的多個循環(huán)。
[0062]圖4說明可以經(jīng)實施以產(chǎn)生相較于傳統(tǒng)MAC更高效的MAC的MAC-Lite算法的一個實例。在裝置或會話啟動或起始402時預先產(chǎn)生密鑰的集合k[0] [O]、…、k[n] [NK-1]。類似地,在裝置或會話啟動或起始404時預先產(chǎn)生掩模的集合mask[0]、mask[l]、…、mask [NM-1]。獲得與數(shù)據(jù)結構406相關聯(lián)的多個可變輸入(例如,addr、input_l、input_2、…、input_n)?;谳斎?08中的一或多者從密鑰的集合中選擇多個密鑰(例如,k[0] [key_index_0]、k[l] [key_index_l]、k[2] [key_index_2]及 k[n] [key_index_n])。類似地,基于可變輸入410中的一或多者從掩模的集合中選擇掩模(例如,mask[mask_index]) ο通過以下方式計算中間值:將多個可變輸入中的每一者與對應選定密鑰組合以獲得多個暫時性值、將多個暫時性值組合及執(zhí)行模P運算以獲得中間值412。在各種實例中,每一輸入及對應密鑰可以使用邏輯運算、算術運算(例如,乘法)及/或可以用于組合兩個值且獲得暫時性值的任何其它運算或函數(shù)來組合。在一個實例中,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是質數(shù)。隨后可以在中間值與選定掩模(例如,mask[mask_index])之間執(zhí)行異或(XOR)運算以獲得消息驗證代碼(MAC)4140
[0063]在一個示例性實施方案中,多個密鑰304(例如,密鑰的集合)可以索引化(例如,通過key_index_x可選擇的)。類似地,多個掩模308 (例如,掩模的集合)可以索引化(例如,通過313可選擇的)。因此,可以基于用于數(shù)據(jù)結構的可變輸入中的一者產(chǎn)生key_index值及/或maskjndex。使用可變輸入的多個其它方法可以單獨地或與其它信息組合用于產(chǎn)生取決于可變輸入(例如,其中可變輸入變化在整個數(shù)據(jù)結構中可以是不同的)變化的mask_indexo mask_index可以選自多個NM掩模308之中,其中NM是整數(shù)值,并且用于MAC值320的計算中。特定mask_index 313的從多個掩模308之中的選擇可以是隨機的、偽隨機的及/或根據(jù)一些選擇算法(例如,根據(jù)存儲器地址312)。在一個實例中,多個掩模308中的掩模的每一者可以具有與質數(shù)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 之中的選擇可以是隨機的、偽隨機的及/或根據(jù)一些選擇算法(例如,根據(jù)存儲器地址312)。優(yōu)選地,到子集306a、306b、306c中的每一者中的key_index是不同的以對抗攻擊者提供更高安全性。
[0065]應注意,MAC-Lite算法302可以用于多個不同情形中,而不僅僅用于存儲器完整性。在此MAC-Lite算法302用于存儲器完整性的情況下,MAC 320可以作為數(shù)據(jù)結構的一部分存儲在用于存儲器塊的標頭塊中。在隨后存取(例如,讀取或寫入)相同存儲器塊后,MAC產(chǎn)生并且與標頭塊中先前存儲的MAC相比較以保全它們是相同的。如果MAC是不同的,那么可以假設或推斷存儲器塊已受損且存儲器塊可能被清空或忽略。另外,受損存儲器塊的出現(xiàn)可能還指示存儲器區(qū)內的其它存儲器結構可能已受損。因此,其它存儲器塊還可能被清空、忽略或系統(tǒng)可以重新啟動。
[0066]圖5說明其中基于掩模的不同集合及密鑰的不同集合的預先產(chǎn)生而產(chǎn)生驗證代碼的一般方法。預先產(chǎn)生502包括多個不同密鑰的密鑰的集合。例如,在啟動處理電路、開啟處理電路及/或起始在處理電路上執(zhí)行的會話(例如,處理會話、應用會話、通信會話等)后可以產(chǎn)生密鑰的集合。在一些實施方案中,密鑰的集合可以被細分成如圖3中所說明的子集(例如,密鑰304的集合及子集306a、306b及306c)。類似地,預先產(chǎn)生304包括不同掩模的掩模的集合。例如,在啟動處理電路、開啟處理電路及/或起始在處理電路上執(zhí)行的會話(例如,處理會話、應用會話、通信會話等)后還可以產(chǎn)生掩模的集合。可以基于隨機值(例如,來自硬件隨機位產(chǎn)生器、基于不可預測系統(tǒng)事件的隨機數(shù)產(chǎn)生器、軟件隨機數(shù)產(chǎn)生器、基于種子值的偽隨機數(shù)產(chǎn)生器等)產(chǎn)生密鑰的集合及掩模的集合中的至少一者。密鑰的集合及掩模的集合可以保持為秘密的。
[0067]隨后可以獲得506與數(shù)據(jù)結構(例如,消息、存儲器區(qū)域、數(shù)據(jù)、文件、傳輸、標頭塊信息等)相關聯(lián)的多個可變輸入。在一些實施方案中,此類可變輸入可以包含與數(shù)據(jù)結構或數(shù)據(jù)結構的位置相關聯(lián)的存儲器地址。
[0068]多個可變輸入中的每一者可以與來自密鑰的集合的選定對應密鑰組合(例如,通過邏輯或算術運算,例如乘法)以獲得多個暫時性值508。隨后組合多個暫時性值(例如,通過邏輯或算術運算,例如加法等)以獲得單個經(jīng)組合值510??梢曰诙鄠€可變輸入中的至少一者選擇多個不同密鑰中的每一者。隨后可以使用固定質數(shù)值對單個經(jīng)組合值執(zhí)行模運算以獲得中間值512。在一個實例中,中間值可以計算為多個可變輸入中的每一者與其選定對應密鑰相乘以獲得多個暫時性值、加上所得的暫時性值及通過預先選定的固定質數(shù)執(zhí)行模運算。所使用的每一密鑰的值可以在零與質數(shù)之間。
[0069]隨后可以在中間值與來自掩模的集合的選定掩模之間執(zhí)行異或(XOR)運算以獲得用于數(shù)據(jù)結構514的消息驗證代碼??梢曰诙鄠€可變輸入中的至少一者(例如,對應于數(shù)據(jù)結構的可變存儲器地址空間)選擇掩模。應注意,在替代實施方案中,可以使用不同運算(例如,邏輯運算或算術運算)來組合中間值及選定掩模。
[0070]消息驗證代碼可以存儲在存儲器裝置516中的數(shù)據(jù)結構內。在一些實例中,數(shù)據(jù)結構可以是固定長度的數(shù)據(jù)結構。
[0071]隨后,當再次存取數(shù)據(jù)結構時,從數(shù)據(jù)結構518中獲得先前存儲的消息驗證代碼。隨后,消息驗證代碼可以與先前存儲的消息驗證代碼相比較以確認數(shù)據(jù)結構520的完整性。
[0072]圖6是說明經(jīng)調適以執(zhí)行MAC-Lite算法以保全數(shù)據(jù)結構的完整性的裝置的示例性實施的方框圖。所述裝置可以包含耦合到獨立或集成存儲器裝置604的處理電路602。處理電路602可以包含消息驗證代碼(MAC)產(chǎn)生器606,其可以經(jīng)調適以在存儲于存儲器裝置604中的一或多個數(shù)據(jù)結構608a、608b