附圖說明
從下文給出的具體實(shí)施方式和本公開的各種實(shí)現(xiàn)方式的附圖會(huì)更全面地理解本公開。
圖1圖示了根據(jù)一些實(shí)施例的使用用于加密操作的乘法掩碼部件的示例設(shè)備。
圖2是按照本公開的一些實(shí)施例的執(zhí)行用于加密操作的乘法掩碼的示例方法的流程圖。
圖3是根據(jù)一些實(shí)施例的提供用于加密操作的乘法掩碼的乘法掩碼部件的框圖。
圖4是根據(jù)一些實(shí)施例的執(zhí)行與加密操作相關(guān)聯(lián)的輸入的乘法掩碼的示例方法的流程圖。
圖5是根據(jù)一些實(shí)施例的執(zhí)行輸入的乘法掩碼以允許與加密操作相關(guān)聯(lián)的逐位操作的示例方法的流程圖。
圖6是根據(jù)一些實(shí)施例的使用具有乘法掩碼的輸入執(zhí)行加密操作中的邏輯xor操作的示例方法的流程圖。
圖7是根據(jù)一些實(shí)施例的使用具有乘法掩碼的輸入執(zhí)行加密操作中的邏輯and操作的示例方法的流程圖。
圖8圖示了其中本公開的一些實(shí)施例可以操作的計(jì)算機(jī)系統(tǒng)的實(shí)施例的框圖。
具體實(shí)施方式
本公開的各方面涉及用于加密操作的乘法掩碼。集成電路可以執(zhí)行可能導(dǎo)致集成電路對(duì)側(cè)信道攻擊的易感性的加密操作,其中,集成電路的攻擊者可以在執(zhí)行加密操作時(shí)獲得信息。側(cè)信道攻擊的示例包括但不限于差分功率分析(dpa),其中,尋求獲得加密操作中使用的密鑰的攻擊者可以研究在執(zhí)行加密操作時(shí)集成電路的功耗差異。攻擊者可能是未經(jīng)授權(quán)的實(shí)體,其可以通過分析一段時(shí)間內(nèi)的集成電路的功耗測(cè)量值來獲得加密操作的輸入。因而,當(dāng)發(fā)送者經(jīng)由加密操作通過編碼明文來向接收器傳送密文時(shí),攻擊者可以通過觀察在執(zhí)行加密操作來將明文編碼成密文時(shí)集成電路的功耗來取回用于將明文加密為密文的密鑰。例如,在集成電路執(zhí)行加密操作時(shí),攻擊者可以發(fā)現(xiàn)用于加密明文的密碼(例如,秘密或私有)密鑰。
掩碼可以用于使用隨機(jī)數(shù)據(jù)模糊或隱藏加密操作的輸入,然后加密操作可以用掩碼輸入來執(zhí)行。當(dāng)集成電路的攻擊者觀察到執(zhí)行加密操作時(shí)的集成電路的功耗時(shí),這種掩碼可以使得加密操作的中間狀態(tài)與隨機(jī)數(shù)據(jù)不可區(qū)分。例如,在加密操作將明文編碼成密文之前,明文可以使用隨機(jī)值進(jìn)行異或(xor)操作。然而,明文和隨機(jī)值之間的xor操作可能導(dǎo)致一些dpa泄漏(例如,攻擊者從可觀察到的功耗差異中標(biāo)識(shí)信息),使得攻擊者仍然可以獲得在加密操作中使用的秘密密鑰。
乘法掩碼可以應(yīng)用于加密操作的明文輸入。例如,加密操作的明文輸入可以乘以隨機(jī)值。然而,執(zhí)行使用乘法掩碼的加密操作的集成電路仍然可能易于受到觀察加密操作的中間狀態(tài)值為零的攻擊者的dpa攻擊的影響。因此,如果明文輸入乘以隨機(jī)值零,則所得到的零值可能導(dǎo)致dpa泄漏。
因此,可以在集成電路中實(shí)現(xiàn)避免與零數(shù)據(jù)值相乘的加密操作的乘法掩碼,以防止允許攻擊者取回對(duì)加密操作的輸入的dpa泄漏。在一些實(shí)施例中,這種乘法掩碼可以將明文輸入的位乘以基于以質(zhì)數(shù)取模后的隨機(jī)數(shù)相乘的值的加密操作。使用模乘法提供了對(duì)加密操作的輸入的乘法掩碼,其可以防止為掩碼輸入生成零數(shù)據(jù)值,并且因此在它正在通過集成電路執(zhí)行時(shí),可以防止與加密操作相關(guān)聯(lián)的dpa泄漏。
圖1圖示了包括乘法掩碼部件的示例設(shè)備。一般而言,設(shè)備100可以包括集成電路,其與乘法掩碼部件111、存儲(chǔ)器112和各種設(shè)備部件113相關(guān)聯(lián)。集成電路的乘法掩碼部件111可以將掩碼應(yīng)用于輸入(例如,明文),以在由設(shè)備部件113執(zhí)行的加密操作中使用。
如圖1所示,設(shè)備100可以包括乘法掩碼部件111。在一些實(shí)施例中,乘法掩碼部件111可以將掩碼應(yīng)用輸入或于輸入的各部分。例如,乘法掩碼部件111可以接收輸入(例如,從存儲(chǔ)器112),并且可以將輸入或輸入的位與以質(zhì)數(shù)取模后的隨機(jī)數(shù)相乘的結(jié)果相乘。設(shè)備部件113隨后可以在加密操作中使用掩碼輸入。這種加密操作的示例包括但不限于:生成消息的簽名,其中,消息可以用于允許訪問設(shè)備100的特定功能性或允許設(shè)備100執(zhí)行特定操作。因而,乘法掩碼部件111可以修改輸入以生成對(duì)設(shè)備部件113的掩碼輸入。此外,設(shè)備部件113的部件可以基于掩碼輸入來執(zhí)行加密操作,以生成消息的簽名或可以用于確定是否可以允許與簽名相對(duì)應(yīng)的消息的發(fā)送者訪問設(shè)備100(例如,各種設(shè)備部件113)的功能性的其他信息,或者是否可以允許設(shè)備100響應(yīng)于消息而執(zhí)行操作。
與設(shè)備相關(guān)聯(lián)的功能性或操作的示例包括但不限于訪問設(shè)備的某些硬件能力(例如,啟用或禁用設(shè)備100的某些硬件能力)、訪問設(shè)備的調(diào)試或診斷狀態(tài)、以及對(duì)與設(shè)備相關(guān)聯(lián)的存儲(chǔ)器的寫入、調(diào)整設(shè)備100的性能設(shè)置或其他值、加密密鑰以供設(shè)備100使用、修改設(shè)備100的存儲(chǔ)器112等等。
當(dāng)來自發(fā)送者的消息伴隨著由加密操作生成的有效簽名時(shí),可以允許消息的發(fā)送者訪問設(shè)備100的功能性或操作。這種加密操作的示例包括但不限于:生成與高級(jí)加密標(biāo)準(zhǔn)(aes)和數(shù)據(jù)加密標(biāo)準(zhǔn)(des)算法相關(guān)聯(lián)的簽名,其中,簽名在公共-私人密鑰密碼系統(tǒng)中使用。在一些實(shí)施例中,加密操作可以使用掩碼輸入來生成簽名。在一些實(shí)施例中,掩碼輸入可以對(duì)應(yīng)于具有附加值(例如,為‘1’的值)的輸入的一部分(例如,輸入的一半)與以質(zhì)數(shù)取模后的隨機(jī)數(shù)相乘的結(jié)果相乘。在相同實(shí)施例或備選實(shí)施例中,隨機(jī)數(shù)可以是被除數(shù),質(zhì)數(shù)可以是模數(shù)操作的除數(shù)。
圖2是執(zhí)行加密操作的乘法掩碼的示例方法200的流程圖。一般而言,方法200可以通過處理邏輯來執(zhí)行,該處理邏輯可以包括硬件(例如,處理設(shè)備、電路、專用邏輯、可編程邏輯、微代碼、設(shè)備的硬件、集成電路等)、軟件(例如,在處理設(shè)備上運(yùn)行或執(zhí)行的指令)或其組合。在一些實(shí)施例中,方法200可以通過圖1的乘法掩碼部件111來執(zhí)行。
如圖2所示,方法200可以從接收輸入的處理邏輯開始(框210)。例如,可以接收要被編碼為密文的明文。處理邏輯還可以通過將輸入的各部分乘以基于與以質(zhì)數(shù)取模后的隨機(jī)數(shù)的相乘的值來生成掩碼輸入(框220)。例如,輸入可以乘以rmodp的結(jié)果,其中,r是隨機(jī)數(shù),而p是質(zhì)數(shù)。在一些實(shí)施例中,如關(guān)于圖4進(jìn)一步所描述的,輸入(例如,明文)可以被劃分為前半部分和后半部分,并且可以將乘法掩碼應(yīng)用于每個(gè)半部分。例如,已經(jīng)接收到的輸入的半部分可以被加上一值‘1’,并且結(jié)果可以乘以質(zhì)數(shù)取模后的隨機(jī)數(shù)。在備選實(shí)施例中,乘法掩碼可以應(yīng)用于結(jié)合圖5所描述的輸入的每個(gè)位。例如,每個(gè)位的表示可以已經(jīng)改變并且每個(gè)位寫入單獨(dú)的計(jì)算機(jī)字,其中,該位然后乘以以質(zhì)數(shù)取模后的隨機(jī)數(shù)(例如,這種表示的改變的一個(gè)示例是將位的值映射到正隨機(jī)數(shù)或與隨機(jī)數(shù)相同的絕對(duì)值的負(fù)隨機(jī)數(shù))。盡管本文中描述了輸入的半部分,但是輸入可以被劃分為或分割為任何數(shù)目個(gè)部分。處理邏輯還可以基于掩碼輸入來執(zhí)行加密操作(框230)。在一些實(shí)施例中,加密操作可以通過使用經(jīng)修改的邏輯操作集合來執(zhí)行。例如,掩碼輸入可以與要被編碼為密文的明文相對(duì)應(yīng)。在一些實(shí)施例中,密文可以與簽名和/或秘密密鑰相對(duì)應(yīng)。
圖3是提供加密操作的乘法掩碼的乘法掩碼部件300的框圖。一般而言,乘法掩碼部件300可以與圖1的乘法掩碼部件111相對(duì)應(yīng)。乘法掩碼部件300可以通過處理邏輯來實(shí)現(xiàn)或者在處理邏輯中來實(shí)現(xiàn),該處理邏輯可以包括硬件(例如,處理設(shè)備、電路、專用邏輯、可編程邏輯、微代碼、集成電路、設(shè)備的硬件等)、軟件(例如,在處理設(shè)備上運(yùn)行或執(zhí)行的指令)或其組合。在一些實(shí)施例中,乘法掩碼部件300可以包括輸入分割模塊310、隨機(jī)數(shù)生成器模塊320、加法操作模塊330、模數(shù)操作模塊340、乘法模塊350以及加密操作模塊360。在備選實(shí)施例中,子模塊中的一個(gè)或多個(gè)子模塊的功能性可以被組合或分割。
如圖3所示,乘法掩碼部件300可以包括輸入分割模塊310。在一些實(shí)施例中,輸入分割模塊310可以接收輸入并且可以將輸入劃分為部分。例如,輸入可以與明文相對(duì)應(yīng),并且輸入分割模塊310可以將明文輸入分割為或劃分為第一半部分和第二半部分。在一些實(shí)施例中,輸入可以與總共八個(gè)位相對(duì)應(yīng),并且輸入分割模塊310可以將八位輸入分割為或劃分為四位的第一半部分和四位的第二半部分??商娲?,如下面進(jìn)一步詳細(xì)所描述的,輸入分割模塊310可以單獨(dú)地處理輸入的每個(gè)位。
隨機(jī)數(shù)生成器模塊320可以生成隨機(jī)數(shù)。在一些實(shí)施例中,由隨機(jī)數(shù)生成器模塊320生成的隨機(jī)數(shù)可以在應(yīng)用到輸入或輸入的部分的乘法掩碼中使用。例如,所生成的隨機(jī)數(shù)可以用于掩碼輸入的半部分,或者可以用于掩碼輸入的每個(gè)位。在相同實(shí)施例或備選實(shí)施例中,隨機(jī)數(shù)生成器模塊320可以生成多個(gè)隨機(jī)數(shù)。例如,可以生成第一隨機(jī)數(shù),以在第一模數(shù)操作中使用,其中,質(zhì)數(shù)是除數(shù),并且還可以生成第二隨機(jī)數(shù)以在第二模數(shù)操作中使用,其中,數(shù)是第二模數(shù)操作的除數(shù),該數(shù)是質(zhì)數(shù)的倍數(shù)。
加法操作模塊330可以對(duì)輸入或輸入的一部分執(zhí)行加法操作。例如,加法操作模塊330可以將值‘1’加到輸入的每個(gè)半部分。因此,輸入可以劃分為第一半部分和第二半部分,并且可以將值‘1’加到第一半部分和第二半部分中的每個(gè)半部分。在一些實(shí)施例中,當(dāng)輸入被分割為半部分(例如,與aes密碼算法相對(duì)應(yīng))時(shí),可以應(yīng)用這種加法操作,并且當(dāng)輸入被分割為單獨(dú)位時(shí)(例如,與逐位des密碼算法相對(duì)應(yīng)),不能應(yīng)用這種加法操作。
模數(shù)操作模塊340可以執(zhí)行模數(shù)操作(還被稱為模數(shù)約減),以在應(yīng)用于輸入或輸入的一部分的乘法掩碼中使用。在一些實(shí)施例中,模數(shù)操作可以是算術(shù)操作,其可以找出一個(gè)數(shù)除以另一個(gè)數(shù)的余數(shù)。例如,模數(shù)操作可以在將第一數(shù)除以第二數(shù)之后返回余數(shù)。第一數(shù)a可以是模數(shù)操作中的被除數(shù),第二數(shù)n可以是模數(shù)操作中的除數(shù)。這種關(guān)系可以被稱為模n(或縮寫為modn)。作為示例,因?yàn)?7除以3的商為5并且余數(shù)為2,所以與17mod3相對(duì)應(yīng)的模數(shù)操作可以返回值2。此外,因?yàn)?除以3的商為3并且余數(shù)為0,與9mod3相對(duì)應(yīng)的模數(shù)操作可以返回值0。因此,當(dāng)被除數(shù)是除數(shù)的倍數(shù)時(shí),模數(shù)操作可以返回值0(例如,因?yàn)榇嬖谟鄶?shù)為0),但是如果被除數(shù)不是除數(shù)的倍數(shù),則模數(shù)操作可能返回非零值。此外,如果除數(shù)是質(zhì)數(shù)(例如,除1以外沒有正除數(shù)的大于1的數(shù)),并且被除數(shù)值不為0,以及在1到質(zhì)數(shù)之間的范圍之間,則因?yàn)橘|(zhì)數(shù)本身不具有除值1之外的任何其他正除數(shù),所以模數(shù)操作可能永遠(yuǎn)不會(huì)返回值零。
乘法操作模塊350可以在輸入或輸入的一部分與模數(shù)操作的結(jié)果之間執(zhí)行乘法操作。例如,如關(guān)于圖4進(jìn)一步所描述的,由于模數(shù)操作,所以乘法操作模塊350可以將輸入的半部分與加上‘1’后的值相乘,該模數(shù)操作基于隨機(jī)數(shù)和質(zhì)數(shù)。
加密操作模塊360可以對(duì)掩碼輸入執(zhí)行加密操作。例如,加密操作可以基于但不限于aes或des算法來將明文輸入加密為密文。
圖4是執(zhí)行與加密操作相關(guān)聯(lián)的輸入的乘法掩碼的示例方法400的流程圖。一般而言,方法400可以通過處理邏輯執(zhí)行,該處理邏輯可以包括硬件(例如,處理設(shè)備、電路、專用邏輯、可編程邏輯、微代碼、設(shè)備的硬件、集成電路等)、軟件(例如,在處理設(shè)備上運(yùn)行或執(zhí)行的指令)或其組合。在一些實(shí)施例中,方法400可以通過圖1的乘法掩碼部件111或圖3的乘法掩碼部件300來執(zhí)行。
方法400可以提供不基于逐位操作(例如,基于aes的加密操作)的加密操作的乘法掩碼。方法400可以從接收輸入的處理邏輯開始(框410)。例如,可以接收對(duì)應(yīng)于與設(shè)備的操作相關(guān)聯(lián)的簽名的明文輸入。處理邏輯還可以將輸入分割為第一半部分和第二半部分(框420)。例如,所接收的輸入可以是與aes加密操作相對(duì)應(yīng)的八位數(shù)據(jù)。因此,處理邏輯可以將八位輸入劃分為兩個(gè)四位半部分(例如,四位的第一半部分和四位的第二半部分)。此外,處理邏輯可以將值‘1’加到第一半部分和第二半部分中的每個(gè)半部分(框430)。處理邏輯可以基于以質(zhì)數(shù)取模后的隨機(jī)數(shù)的結(jié)果來附加地計(jì)算每個(gè)半部分的操作(框440)。例如,模數(shù)操作的余數(shù)可以乘以已經(jīng)增加值‘1’的每個(gè)半部分,其中,質(zhì)數(shù)是除數(shù),而隨機(jī)數(shù)是被除數(shù)。處理邏輯還可以計(jì)算第一半部分和第二半部分中的每個(gè)上的操作以生成第一半部分結(jié)果和第二半部分結(jié)果(框450)。這樣的第二操作可以產(chǎn)生值零,并且可以用于提供附加的功耗,而不會(huì)對(duì)第一所計(jì)算的操作的值產(chǎn)生影響。此外,處理邏輯可以組合第一半部分結(jié)果和第二半部分結(jié)果(框460)。
在一些實(shí)施例中,方法400可能需要諸如逐位xor操作之類的操作的計(jì)算。這樣的操作可以采用允許將計(jì)算機(jī)字映射到具有小位長度的一系列字(例如,將字節(jié)映射到兩個(gè)四位字)的預(yù)計(jì)算表的形式。還可以生成預(yù)計(jì)算表以將兩個(gè)四位字映射到表示兩個(gè)輸入值的xor的四位字。然后,其他預(yù)計(jì)算表可以用于將所得到的四位字映射到計(jì)算機(jī)字(例如,將兩個(gè)四位字映射到字節(jié))。在一些實(shí)施例中,這些表的所有輸入值和輸出值可以用如本文中所描述的乘法掩碼技術(shù)來掩碼。
圖5是執(zhí)行輸入的乘法掩碼以允許與加密操作相關(guān)聯(lián)的逐位操作的示例方法500的流程圖。一般而言,方法500可以通過處理邏輯執(zhí)行,該處理邏輯可以包括硬件(例如,處理設(shè)備、電路、專用邏輯、可編程邏輯、微代碼、設(shè)備硬件、集成電路等)、軟件(例如,在處理設(shè)備上運(yùn)行或執(zhí)行的指令)或其組合。在一些實(shí)施例中,方法500可以通過圖1的乘法掩碼部件111或圖3的乘法掩碼300來執(zhí)行。
當(dāng)加密算法(例如,des)基于逐位操作時(shí),可以使用方法500。方法500可以用于將位值從‘0’或‘1’變換到或掩碼到與正數(shù)和負(fù)數(shù)(例如,1和-1)相對(duì)應(yīng)的值。從‘0’到‘1’值和從‘1’到‘-1’的變換可以允許使用逐位操作(例如,xor)以在加密操作中使用掩碼輸入數(shù)據(jù)。在一些實(shí)施例中,方法500可以基于以下等式來執(zhí)行乘法掩碼:
xo=(r1modp)+r2·pmodp2
x1=(-r1modp)+r2·pmodp2
在一些實(shí)施例中,x0可以是指用于當(dāng)該位值為‘0’時(shí)為輸入位提供乘法掩碼的等式,并且xi可以是指用于當(dāng)位值為‘1’時(shí)為輸入位提供乘法掩碼的等式。此外,r1可以表示第一隨機(jī)數(shù),r2可以表示第二隨機(jī)數(shù),p可以表示質(zhì)數(shù),并且p2可以表示質(zhì)數(shù)p的倍數(shù)。在一些實(shí)施例中,隨機(jī)數(shù)r1和/或-r1可以小于質(zhì)數(shù)p的值(例如,值r1在1到p-1的范圍內(nèi))。此外,在一些實(shí)施例中,r1和-r1的絕對(duì)值相同。附加地,如先前關(guān)于圖4所描述的,r2與p的相乘可以產(chǎn)生與p2相同的值,或者可以產(chǎn)生p2的倍數(shù),使得r2和p與p2的相乘之間的模數(shù)操作產(chǎn)生值為0。
如圖5所示,方法500可以開始于處理邏輯接收加密操作的輸入的位(框510)。例如,輸入的位可以是與要由密碼算法(例如,des)編碼為密文的輸入(例如,明文)相對(duì)應(yīng)的多個(gè)位中的一個(gè)位。處理邏輯還可以確定所接收的位值是否為‘0’(框520)。在520中測(cè)試的值可以被設(shè)置為‘1’或者可以被隨機(jī)地選擇為‘0’或‘1’。例如,處理邏輯可以標(biāo)識(shí)輸入的位值是為‘0’還是為‘1’。如果該位值為‘0’,則處理邏輯可以計(jì)算以質(zhì)數(shù)取模后的正隨機(jī)數(shù)的操作(框530)。此外,處理邏輯可以隨后將以質(zhì)數(shù)的固定倍數(shù)取模后的質(zhì)數(shù)的隨機(jī)倍數(shù)加到第一計(jì)算值(框540)。附加地,處理邏輯可以計(jì)算值分配給值為‘0’的位(框550)。例如,可以將位的值從值‘0’轉(zhuǎn)換或替換為計(jì)算結(jié)果。然而,如果處理邏輯確定該位值不是‘0’,取而代之為‘1’,則處理邏輯可以計(jì)算以質(zhì)數(shù)取模后的負(fù)隨機(jī)數(shù)的操作(與正隨機(jī)數(shù)相比,如果位值為‘0’)(框560)。類似地,處理邏輯可以隨后將以質(zhì)數(shù)的固定倍數(shù)取模后的質(zhì)數(shù)的隨機(jī)倍數(shù)加到計(jì)算(框570)。附加地,處理邏輯可以將該計(jì)算值分配給值為‘1’值的位(框580)。例如,該位的值可以被從值‘1’變換或替換為計(jì)算結(jié)果(例如,負(fù)值)。
如上文所描述的,可以將負(fù)值(例如,基于使用負(fù)隨機(jī)數(shù)的計(jì)算)分配給位值‘1’并且正值(例如,基于使用正隨機(jī)數(shù)的計(jì)算)被分配給位值‘0’。在備選實(shí)施例中,可以將負(fù)值分配給位值‘0’,并且將正值分配給位值‘1’。此外,處理邏輯可以在值‘0’和‘1’的第一變換與值‘0’和‘1’的第二變換之間隨機(jī)選擇。例如,在接收到輸入之后,處理邏輯可以在將負(fù)值分配給位值‘1’并且將正值分配給位值‘0’的第一變換和將負(fù)值分配給位值‘0’并且將正值分配給位值‘1’的第二變換之間隨機(jī)選擇。在一些實(shí)施例中,處理邏輯可以在每個(gè)輸入基礎(chǔ)上來在第一變換和第二變換之間進(jìn)行選擇(例如,輸入的每個(gè)位可以與已經(jīng)為輸入選擇的相同的第一變換或第二變換的使用相對(duì)應(yīng))。第一變換和第二變換之間的選擇可以是隨機(jī)的(例如,值為‘0’的位可以被隨機(jī)選擇為負(fù)值或正值中的一個(gè),并且值為‘1’的位可以是未被選擇以變換值為‘0’的位的負(fù)值或正值中的另一個(gè)。
圖6是使用具有乘法掩碼的輸入執(zhí)行加密操作中的邏輯xor操作的示例方法600的流程圖。一般而言,方法600可以通過處理邏輯執(zhí)行,該處理邏輯可以包括硬件(例如,處理設(shè)備、電路、專用邏輯、可編程邏輯、微代碼、設(shè)備的硬件、集成電路等)、軟件(例如,在處理設(shè)備上運(yùn)行或執(zhí)行的指令)或其組合。在一些實(shí)施例中,方法600可以通過圖1的乘法掩碼部件111或圖3的乘法掩碼部件300來執(zhí)行。
方法600可以用于執(zhí)行在使用具有乘法掩碼的輸入的加密操作期間使用的邏輯異或(xor)操作。例如,方法600可以用于執(zhí)行如關(guān)于圖3的框230所描述的邏輯xor操作。如先前所描述的,這種加密操作的示例可以是aes、des或其他這樣的加密、解密、生成簽名或驗(yàn)證簽名的操作。在一些實(shí)施例中,方法600可以用于執(zhí)行與第一輸入位和第二輸入位之間的xor操作相對(duì)應(yīng)的逐位操作。
方法600可以以接收已經(jīng)被掩碼的第一輸入的處理邏輯開始(框610)。例如,可以接收已經(jīng)被乘法掩碼的第一輸入位。處理邏輯還可以接收已經(jīng)被掩碼的第二輸入(框620)。第二輸入可以是已經(jīng)被乘法掩碼的第二輸入位。如結(jié)合圖5所描述的,第一輸入位和第二輸入位可以被乘法掩碼并且變換為正數(shù)和負(fù)。例如,可以經(jīng)由掩碼將值為‘0’的位變換為負(fù)值(例如,負(fù)掩碼值),并且可以將值為‘1’的位變換為正值(例如,正掩碼值),其中,負(fù)掩碼值和正掩碼值具有相同的絕對(duì)數(shù)。處理邏輯還可以執(zhí)行第一掩碼輸入與第二掩碼輸入之間的乘法操作(框630)。例如,在每個(gè)對(duì)應(yīng)的輸入位已被變換或被掩碼之后(例如,從‘0’到負(fù)掩碼值或從‘1’到正掩碼值),可以在第一輸入位和第二輸入位之間執(zhí)行乘法操作。處理邏輯可以進(jìn)一步將乘法操作的結(jié)果乘以基于正掩碼值的值的倒數(shù),以生成中間值(框640)。例如,如先前所描述的,位值為‘1’的輸入可以被掩碼為正掩碼值。如此,乘法操作的結(jié)果可以乘以正掩碼值的倒數(shù)以生成中間值,其與值為‘1’的輸入位所變換為的值相對(duì)應(yīng)。處理邏輯還可以執(zhí)行與以質(zhì)數(shù)取模后的中間值相對(duì)應(yīng)的操作(框650)。在一些實(shí)施例中,如結(jié)合圖5所描述的,質(zhì)數(shù)可以與用于掩碼輸入位的質(zhì)數(shù)相對(duì)應(yīng)。
在一些實(shí)施例中,當(dāng)值為‘0’的輸入位被變換為負(fù)掩碼值并且值為‘1’的輸入位被變換為正掩碼值時(shí),方法600可以基于以下等式來執(zhí)行邏輯xor操作:
xor的結(jié)果=xym-1modp
在一些實(shí)施例中,x可以與第一掩碼輸入位相對(duì)應(yīng),y可以與第二掩碼輸入位相對(duì)應(yīng),m可以與正掩碼值相對(duì)應(yīng),并且p可以與質(zhì)數(shù)相對(duì)應(yīng)。當(dāng)執(zhí)行邏輯xor操作時(shí),還可以使用上述等式,其中,值為‘0’的輸入位被變換為正掩碼值,并且值為‘1’的輸入位被變換為負(fù)掩碼值。
圖7是使用具有乘法掩碼的輸入執(zhí)行加密操作的邏輯and操作的示例方法700的流程圖。一般而言,方法700可以通過處理邏輯執(zhí)行,該處理邏輯可以包括硬件(例如,處理設(shè)備、電路、專用邏輯、可編程邏輯、微代碼、設(shè)備的硬件、集成電路等)、軟件(例如,在處理設(shè)備上運(yùn)行或執(zhí)行的指令)或其組合。在一些實(shí)施例中,方法700可以通過圖1的乘法掩碼部件111或圖3的乘法掩碼部件300來執(zhí)行。
方法700可以用于執(zhí)行在使用具有乘法掩碼的輸入的加密操作期間使用的邏輯and操作。例如,方法700可以用于執(zhí)行如關(guān)于圖2的框230所描述的邏輯and操作。如先前所描述的,這種加密操作的示例可以是aes、des或其他這樣的加密、解密、生成簽名或驗(yàn)證簽名的操作。在一些實(shí)施例中,方法700可以用于執(zhí)行與第一輸入位和第二輸入位之間的and操作相對(duì)應(yīng)的逐位操作。
方法700可以從處理邏輯接收第一掩碼輸入或輸入位、以及第二掩碼輸入或輸入位(框710)開始。進(jìn)一步地,處理邏輯可以將如關(guān)于圖6所描述的正掩碼值加到第一輸入和第二輸入中的每個(gè)輸入(框720)。此外,處理邏輯可以將正掩碼值和第一輸入的組合乘以正掩碼值和第二輸入的組合以生成中間值(框730)。此外,處理邏輯可以將中間值乘以正掩碼值的倒數(shù)并且乘以2的倒數(shù)(框740)。隨后,處理邏輯可以從結(jié)果中減去與以質(zhì)數(shù)取模后的正掩碼值相對(duì)應(yīng)的值(框750)。例如,在第一輸入和第二輸入的掩碼中使用的與以質(zhì)數(shù)取模后的正掩碼值相對(duì)應(yīng)的值可以從中間值乘以正掩碼值的倒數(shù)并且乘以2的倒數(shù)的結(jié)果中減去。
在一些實(shí)施例中,當(dāng)值為‘0’的輸入位被變換為負(fù)掩碼值并且值為‘1’的輸入位被變換為正掩碼值時(shí),方法700可以基于以下等式執(zhí)行邏輯and操作:
and的結(jié)果=2-1m-1(x+m)(y+m)-mmodp
在一些實(shí)施例中,x可以與第一掩碼輸入位相對(duì)應(yīng),y可以與第二掩碼輸入位相對(duì)應(yīng),m可以與正掩碼值相對(duì)應(yīng),并且p可以與質(zhì)數(shù)相對(duì)應(yīng)。在備選實(shí)施例中,當(dāng)執(zhí)行邏輯and操作時(shí),其中,值為‘0’的輸入位被變換為正掩碼值并且值為‘1’的輸入位被變換為負(fù)掩碼值,則下列等式可以用于執(zhí)行邏輯and操作:
and的結(jié)果=2-1m-1(x-m)(y-m)+mmodp
如此,當(dāng)執(zhí)行邏輯and操作時(shí),其中,值為‘0’的輸入位被變換為正掩碼值并且值為‘1’輸入位被變換為負(fù)掩碼值,第一輸入位和第二輸入位可以被減去正掩碼值的值,而不是如圖7中的框720所描述的那樣加上正掩碼值的值。
進(jìn)一步地,當(dāng)值為‘0’的輸入位被變換為與1mod5相對(duì)應(yīng)的正掩碼值時(shí)并且值為‘1’的輸入位被變換為與-1mod5相對(duì)應(yīng)的負(fù)掩碼值時(shí),邏輯and操作和邏輯and操作的執(zhí)行可以基于由以下操作表示的約減模255方程:
z←x+5r*
z←(zλ255)+(z/28)
在一些實(shí)施例中,z可以與約減模255的輸出相對(duì)應(yīng),x可以與第一輸入位相對(duì)應(yīng),并且r可以與16位隨機(jī)生成的值相對(duì)應(yīng)。如此,約減模255方程可以包括第一步驟,其將與隨機(jī)生成的值相乘的掩碼值相關(guān)聯(lián)的質(zhì)數(shù)加到輸入位以生成第一結(jié)果。此外,第一結(jié)果與對(duì)應(yīng)于255的值進(jìn)行xor操作,并且該結(jié)果加上除以2的8次冪的第一結(jié)果。約減模255可以用于執(zhí)行如下的xor操作:
z←reductionmodulo255(yr,r*)
z←reductionmodulo255(xz,r*)
z←reductionmodulo255(xr',r*)
z←reductionmodulo255(z,r*)
在一些實(shí)施例中,redumodulo255可以與如之前使用各種第一輸入和第二輸入描述的約減模255方程的調(diào)用或執(zhí)行相對(duì)應(yīng),該第二輸入是隨機(jī)16位數(shù)。此外,x可以與第一輸入位相對(duì)應(yīng),y可以與第二輸入位相對(duì)應(yīng),z可以與輸出相對(duì)應(yīng),r可以與1到254之間的隨機(jī)數(shù)相對(duì)應(yīng),r'可以與(mr)-1(mod5)相對(duì)應(yīng),并且r可以與16位隨機(jī)數(shù)相對(duì)應(yīng)。如此,xor操作可以通過迭代地執(zhí)行縮減模255四次來執(zhí)行。
此外,約減模255可以用于執(zhí)行如下的not操作:
z←4((xλ63)+r)+((x/26)+r)
z←reductionmodulo255(z,r*)
附加地,可以執(zhí)行如下的and操作:
z←reductionmodulo255(r((x+r")+4(m+r"),r*)
z←reductionmodulo255(z,r*)
z←reductionmodulo255(z((y+r'")+4(m+r'")),r*)
z←reductionmodulo255(r'z,r*)
z←reductionmodulo255(2(z+r")+(m+3r"),r*)
在一些實(shí)施例中,z的初始值可以與值‘0’相對(duì)應(yīng),r可以是1至254之間的隨機(jī)值,r'與值(mr)-1(mod5)相對(duì)應(yīng),r*是1到65,535(即,216-1)之間的16位隨機(jī)數(shù),并且其中,r"和r'"中的每個(gè)是1和254之間不同的8位隨機(jī)數(shù)。因此,and操作可以通過迭代計(jì)算約減模255等式五次來執(zhí)行。
圖8圖示了在其內(nèi)可以執(zhí)行用于使機(jī)器執(zhí)行本文中所討論的方法中的任一種或多種方法的指令集合的計(jì)算機(jī)系統(tǒng)800的示例機(jī)器。在備選實(shí)現(xiàn)方式中,機(jī)器可以連接(例如,聯(lián)網(wǎng))到lan、內(nèi)聯(lián)網(wǎng)、外聯(lián)網(wǎng)和/或互聯(lián)網(wǎng)中的其他機(jī)器。該機(jī)器可以作為客戶端-服務(wù)器網(wǎng)絡(luò)環(huán)境中的服務(wù)器或客戶端機(jī)器來操作,作為點(diǎn)對(duì)等(或分布式)網(wǎng)絡(luò)環(huán)境中的對(duì)等機(jī)器來操作,或作為云計(jì)算基礎(chǔ)設(shè)施或環(huán)境中的服務(wù)器或客戶端機(jī)器來操作。
機(jī)器可以是個(gè)人計(jì)算機(jī)(pc)、平板電腦、機(jī)頂盒(stb)、個(gè)人數(shù)字助理(pda)、蜂窩電話、網(wǎng)絡(luò)設(shè)備、服務(wù)器、網(wǎng)絡(luò)路由器、開關(guān)或橋接器、或能夠執(zhí)行指定該機(jī)器要采取的動(dòng)作的指令集合(順序或其他方式)的任何機(jī)器。進(jìn)一步地,當(dāng)說明單個(gè)機(jī)器時(shí),術(shù)語“機(jī)器”還應(yīng)當(dāng)被視為包括單獨(dú)或共同執(zhí)行一指令集合(或多個(gè)指令集合)以執(zhí)行本文中所討論的方法中的任一種或多種方法的機(jī)器的任何集合。
示例計(jì)算機(jī)系統(tǒng)800包括處理設(shè)備802、主存儲(chǔ)器804(例如,只讀存儲(chǔ)器(rom))、閃速存儲(chǔ)器、諸如同步dram(sdram)或rambusdram(rdram)之類的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)等等)、靜態(tài)存儲(chǔ)器806(例如,閃速存儲(chǔ)器、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)等等)、以及經(jīng)由總線830相互通信的數(shù)據(jù)存儲(chǔ)設(shè)備818。
處理設(shè)備802表示一個(gè)或多個(gè)通用處理設(shè)備,諸如微處理器、中央處理單元等。更具體地,處理設(shè)備可以是復(fù)雜指令集計(jì)算(cisc)微處理器、精簡(jiǎn)指令集計(jì)算(risc)微處理器、非常長指令字(vijw)微處理器、或?qū)崿F(xiàn)其他指令集的處理器、或?qū)崿F(xiàn)指令集的組合的處理器。處理設(shè)備802還可以是一個(gè)或多個(gè)專用處理設(shè)備,諸如專用集成電路(asic)、現(xiàn)場(chǎng)可編程門陣列(fpga)、數(shù)字信號(hào)處理器(dsp)、網(wǎng)絡(luò)處理器等。處理設(shè)備802被配置成執(zhí)行用于執(zhí)行本文中所討論的操作和步驟的指令826。
計(jì)算機(jī)系統(tǒng)800還可以包括網(wǎng)絡(luò)接口設(shè)備808,以通過網(wǎng)絡(luò)820進(jìn)行通信。計(jì)算機(jī)系統(tǒng)800還可以包括視頻顯示單元810(例如,液晶顯示器(lcd)或陰極射線管(crt))、字母數(shù)字輸入設(shè)備812(例如,鍵盤)、光標(biāo)控制設(shè)備814(例如,鼠標(biāo))、圖形處理單元822、信號(hào)發(fā)生設(shè)備816(例如,揚(yáng)聲器)、圖形處理單元822、視頻處理單元828和音頻處理單元832。
數(shù)據(jù)存儲(chǔ)設(shè)備818可以包括機(jī)器可讀存儲(chǔ)介質(zhì)824(也被稱為計(jì)算機(jī)可讀介質(zhì)),在該機(jī)器可讀存儲(chǔ)介質(zhì)上存儲(chǔ)了一個(gè)或多個(gè)指令或軟件826集合,其實(shí)現(xiàn)了本文中所描述的方法或功能中的任一種或多種方法或功能。指令826還可以完全地或至少部分地駐留在主存儲(chǔ)器804內(nèi)和/或處理設(shè)備802內(nèi),在其由計(jì)算機(jī)系統(tǒng)800執(zhí)行期間,主存儲(chǔ)器804和處理設(shè)備802也構(gòu)成機(jī)器可讀存儲(chǔ)介質(zhì)。
在一個(gè)實(shí)現(xiàn)方式中,指令826包括實(shí)現(xiàn)與乘法掩碼部件(例如,圖1的乘法掩碼部件111或圖3的乘法掩碼部件300)相對(duì)應(yīng)的功能性的指令。雖然機(jī)器可讀存儲(chǔ)介質(zhì)824在示例實(shí)現(xiàn)方式中被示為單個(gè)介質(zhì),但是術(shù)語“機(jī)器可讀存儲(chǔ)介質(zhì)”應(yīng)當(dāng)被認(rèn)為包括單個(gè)介質(zhì)或多個(gè)介質(zhì)(例如,集中式數(shù)據(jù)庫或分布式數(shù)據(jù)庫,以及/或相關(guān)聯(lián)的高速緩存和服務(wù)器),其存儲(chǔ)一個(gè)或多個(gè)指令集合。術(shù)語“機(jī)器可讀存儲(chǔ)介質(zhì)”還應(yīng)被視為包括能夠存儲(chǔ)或編碼指令集合以供機(jī)器執(zhí)行并且使機(jī)器執(zhí)行本公開的方法中的任一種或多種方法的任何介質(zhì)。因此,術(shù)語“機(jī)器可讀存儲(chǔ)介質(zhì)”應(yīng)被認(rèn)為包括但不限于固態(tài)存儲(chǔ)器、光學(xué)介質(zhì)和磁性介質(zhì)。
依據(jù)對(duì)計(jì)算機(jī)存儲(chǔ)器內(nèi)的數(shù)據(jù)位的操作的算法和符號(hào)表示來呈現(xiàn)前述詳細(xì)描述的一些部分。這些算法描述和表示是由數(shù)據(jù)處理領(lǐng)域的技術(shù)人員最有效地將其工作的實(shí)質(zhì)傳達(dá)給本領(lǐng)域技術(shù)人員的方式。算法在這里并且通常被認(rèn)為是導(dǎo)致期望結(jié)果的自我一致的操作序列。這些操作是需要物理量的物理操縱的操作。通常,盡管不一定,但是這些數(shù)量采用能夠被存儲(chǔ)、組合、比較和以其他方式操縱的電信號(hào)或磁信號(hào)的形式。原則上,由于通常使用的原因,已經(jīng)證明稱這些信號(hào)為位、數(shù)值、元素、符號(hào)、字符、術(shù)語、數(shù)字等是方便的。
然而,應(yīng)該記住,所有這些和類似的術(shù)語都應(yīng)該與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián),并且僅僅是適用于這些量的方便的標(biāo)簽。除非另有明確說明,否則從上述討論中可以明顯看出,應(yīng)當(dāng)領(lǐng)會(huì),在整個(gè)說明書中,例如諸如“標(biāo)識(shí)”或“確定”或“執(zhí)行”或“進(jìn)行”或“收集”或“創(chuàng)建”或“發(fā)送”等之類的術(shù)語是指計(jì)算機(jī)系統(tǒng)或類似的電子計(jì)算設(shè)備的動(dòng)作和過程,其操縱并且將表示為計(jì)算機(jī)系統(tǒng)的寄存器和存儲(chǔ)器內(nèi)的物理(電子)量的數(shù)據(jù)變換為類似地表示為計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器或寄存器或其他這樣的信息存儲(chǔ)設(shè)備內(nèi)的物理量的其他數(shù)據(jù)。
本公開還涉及一種用于執(zhí)行本文中的操作的裝置。該裝置可以為預(yù)期目的而特別構(gòu)造,或者其可以包括由存儲(chǔ)在計(jì)算機(jī)中的計(jì)算機(jī)程序選擇性地激活或重新配置的通用計(jì)算機(jī)。這樣的計(jì)算機(jī)程序可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,諸如但不限于包括軟盤、光盤、cd-rom和磁光盤在內(nèi)的任何類型的盤、只讀存儲(chǔ)器(rom)、隨機(jī)存取存儲(chǔ)器(ram)、eprom、eeprom、磁卡或光卡、或適合于存儲(chǔ)電子指令的任何類型的介質(zhì),每個(gè)均耦合至計(jì)算機(jī)系統(tǒng)總線。
本文中所呈現(xiàn)的算法和顯示器并非固有地與任何特定計(jì)算機(jī)或其他裝置有關(guān)。各種通用系統(tǒng)可以按照本文中的教導(dǎo)與程序一起使用,或者可以證明構(gòu)造更專用裝置來執(zhí)行該方法是方便的。如在下文的描述中所闡述的,多種這些系統(tǒng)的結(jié)構(gòu)將出現(xiàn)。另外,本公開不參考任何特定的編程語言來描述。應(yīng)當(dāng)領(lǐng)會(huì),多種編程語言可以用于實(shí)現(xiàn)本文中所描述的本公開的教導(dǎo)。
本公開可以被提供作為計(jì)算機(jī)程序產(chǎn)品或軟件,其可以包括其上存儲(chǔ)有指令的機(jī)器可讀介質(zhì),該機(jī)器可讀介質(zhì)可以用于對(duì)計(jì)算機(jī)系統(tǒng)(或其他電子設(shè)備)進(jìn)行編程以執(zhí)行根據(jù)本公開的過程。機(jī)器可讀介質(zhì)包括用于存儲(chǔ)可由機(jī)器(例如,計(jì)算機(jī))讀取的形式的信息的任何機(jī)構(gòu)。例如,機(jī)器可讀(例如,計(jì)算機(jī)可讀)介質(zhì)包括機(jī)器(例如,計(jì)算機(jī))可讀存儲(chǔ)介質(zhì),諸如只讀存儲(chǔ)器(“rom”)、隨機(jī)存取存儲(chǔ)器(“ram”)、磁盤存儲(chǔ)介質(zhì)、光存儲(chǔ)介質(zhì)、閃速存儲(chǔ)器設(shè)備等。
在前面的說明書中,已經(jīng)參照本發(fā)明的具體示例實(shí)現(xiàn)方式來描述本公開的實(shí)現(xiàn)方式。顯而易見的是,在不背離如所附權(quán)利要求中闡述的本公開的實(shí)現(xiàn)方式的更廣泛的精神和范圍的情況下,可以對(duì)其進(jìn)行各種修改。因而,說明書和附圖被認(rèn)為是說明性的而非限制性的。