本技術(shù)涉及數(shù)據(jù)處理,尤其涉及s盒數(shù)據(jù)計(jì)算方法、s盒、設(shè)備和存儲介質(zhì)。
背景技術(shù):
1、s盒是sm4算法中唯一的非線性計(jì)算單元,s盒在sm4算法的密鑰擴(kuò)展和輪函數(shù)中都有使用,s盒主要執(zhí)行替換操作,將接收的輸入中每個字節(jié)通過一個固定的查表表進(jìn)行轉(zhuǎn)換得到輸出,以增加密碼算法的混淆度。因此s盒的設(shè)計(jì)與sm4算法的電路面積和時延有直接關(guān)系,當(dāng)需要在資源受限的硬件設(shè)備上實(shí)現(xiàn)sm4算法時,通常需要對s盒進(jìn)行優(yōu)化。
2、由于查找表本質(zhì)上是一個內(nèi)存陣列,其大小直接關(guān)聯(lián)到所需的電路面積,較大的查找表需要更大的電路面積來支持,其響應(yīng)時延也較高。相關(guān)技術(shù)中通過減少查找表規(guī)模的方式來優(yōu)化s盒的電路,但是查找表規(guī)模變小后,會降低s盒的計(jì)算性能。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例的主要目的在于提出s盒數(shù)據(jù)計(jì)算方法、s盒、設(shè)備和存儲介質(zhì),降低s盒的響應(yīng)時間,提升計(jì)算性能。
2、為實(shí)現(xiàn)上述目的,本技術(shù)實(shí)施例的第一方面提出了一種s盒數(shù)據(jù)計(jì)算方法,包括:
3、利用輸入變換模塊對輸入數(shù)據(jù)進(jìn)行第一映射,得到映射輸入數(shù)據(jù),所述輸入變換模塊中依次利用仿射變換矩陣進(jìn)行仿射變換、利用線性變換矩陣進(jìn)行線性變換以及利用同構(gòu)映射矩陣進(jìn)行同構(gòu)映射;
4、將所述映射輸入數(shù)據(jù)輸入頭部模塊進(jìn)行第一逆運(yùn)算處理得到第一數(shù)據(jù),將所述第一數(shù)據(jù)輸入中部模塊進(jìn)行第二逆運(yùn)算處理得到第二數(shù)據(jù),將所述映射輸入數(shù)據(jù)和所述第二數(shù)據(jù)輸入尾部模塊進(jìn)行第三逆運(yùn)算處理得到映射輸出數(shù)據(jù);
5、利用輸出變換模塊對所述映射輸出數(shù)據(jù)進(jìn)行第二映射,得到目標(biāo)輸出數(shù)據(jù),所述輸出變換模塊中依次利用仿射變換逆矩陣進(jìn)行仿射逆變換、利用線性變換逆矩陣進(jìn)行線性逆變換以及利用同構(gòu)映射逆矩陣進(jìn)行同構(gòu)逆映射。
6、在一些實(shí)施例,所述利用輸入變換模塊對輸入數(shù)據(jù)進(jìn)行第一映射,得到映射輸入數(shù)據(jù)之前,所述方法還包括:
7、獲取第一多項(xiàng)式、第二多項(xiàng)式和第三多項(xiàng)式,所述第一多項(xiàng)式為系數(shù)屬于gf(28)域的不可約多項(xiàng)式,所述第二多項(xiàng)式為系數(shù)屬于gf(22)域上的多項(xiàng)式,所述第三多項(xiàng)式為產(chǎn)生子域gf(,22)的二進(jìn)制多項(xiàng)式;
8、根據(jù)所述第一多項(xiàng)式、所述第二多項(xiàng)式和所述第三多項(xiàng)式得到所述同構(gòu)映射矩陣,所述同構(gòu)映射矩陣用于在gf(28)域和gf((22)2)域之間建立映射關(guān)系。
9、在一些實(shí)施例,所述根據(jù)所述第一多項(xiàng)式、所述第二多項(xiàng)式和所述第三多項(xiàng)式得到所述同構(gòu)映射矩陣,包括:
10、進(jìn)行初始化,假設(shè)復(fù)合域的素元是所述第二多項(xiàng)式的根,令計(jì)算參數(shù)為1,獲取所述同構(gòu)映射矩陣的第一列,所述復(fù)合域?yàn)間f((22)2)域;
11、選取一個所述素元,基于所述素元計(jì)算所述第一多項(xiàng)式除以所述第二多項(xiàng)式和所述第三多項(xiàng)式后的余數(shù);
12、若所述余數(shù)為零,則所述素元為映射素元,基于所述映射素元和所述計(jì)算參數(shù)確定第一候選參數(shù),若所述第一候選參數(shù)都不是所述第一多項(xiàng)式的根對應(yīng)的映射元素,遞增所述計(jì)算參數(shù),基于所述計(jì)算參數(shù)和所述映射素元計(jì)算第二候選參數(shù),直至所述第二候選參數(shù)為所述復(fù)合域的素元;
13、基于所述第二候選參數(shù)和所述第一列得到所述同構(gòu)映射矩陣。
14、在一些實(shí)施例,所述利用輸入變換模塊對輸入數(shù)據(jù)進(jìn)行第一映射,得到映射輸入數(shù)據(jù)之前,所述方法還包括:
15、獲取第一參數(shù)和第二參數(shù);
16、基于所述第一參數(shù)和第一變換矩陣的第一轉(zhuǎn)換關(guān)系,得到第一變換矩陣;
17、基于所述第二參數(shù)和第二變換矩陣的第二轉(zhuǎn)換關(guān)系和第三轉(zhuǎn)換關(guān)系,得到第二變換矩陣:
18、根據(jù)所述第一變換矩陣和所述第二變換矩陣得到所述線性變換矩陣。
19、在一些實(shí)施例,所述將所述映射輸入數(shù)據(jù)輸入頭部模塊進(jìn)行第一逆運(yùn)算處理得到第一數(shù)據(jù),包括:
20、獲取所述映射輸入數(shù)據(jù)進(jìn)行線性變換得到的中間輸入數(shù)據(jù);
21、根據(jù)所述中間輸入數(shù)據(jù)得到第一比特?cái)?shù)據(jù);
22、根據(jù)所述映射輸入數(shù)據(jù)和所述中間輸入數(shù)據(jù)得到第二比特?cái)?shù)據(jù);
23、根據(jù)所述第一比特?cái)?shù)據(jù)和所述第二比特?cái)?shù)據(jù)得到所述第一數(shù)據(jù)。
24、在一些實(shí)施例,所述將所述映射輸入數(shù)據(jù)和所述第二數(shù)據(jù)輸入尾部模塊進(jìn)行第三逆運(yùn)算處理得到映射輸出數(shù)據(jù),包括:
25、獲取所述映射輸入數(shù)據(jù)進(jìn)行線性變換得到的中間輸入數(shù)據(jù);
26、根據(jù)所述第二數(shù)據(jù)得到中間計(jì)算數(shù)據(jù);
27、根據(jù)所述中間輸入數(shù)據(jù)、所述映射輸入數(shù)據(jù)、所述第二數(shù)據(jù)和所述中間計(jì)算數(shù)據(jù)得到所述映射輸出數(shù)據(jù)。
28、為實(shí)現(xiàn)上述目的,本技術(shù)實(shí)施例的第二方面提出了一種s盒,應(yīng)用于如第一方面任一項(xiàng)所述的s盒數(shù)據(jù)計(jì)算方法,所述s盒包括:
29、輸入布爾電路,用于對輸入數(shù)據(jù)進(jìn)行第一映射,得到映射輸入數(shù)據(jù);
30、頭部模塊,用于對所述映射輸入數(shù)據(jù)進(jìn)行第一逆運(yùn)算處理得到第一數(shù)據(jù);
31、中部模塊,用于對所述第一數(shù)據(jù)進(jìn)行第二逆運(yùn)算處理得到第二數(shù)據(jù);
32、尾部模塊,用于根據(jù)所述映射輸入數(shù)據(jù)和所述第二數(shù)據(jù)進(jìn)行第三逆運(yùn)算處理得到映射輸出數(shù)據(jù);
33、輸出布爾電路,用于對所述映射輸出數(shù)據(jù)進(jìn)行第二映射,得到目標(biāo)輸出數(shù)據(jù)。
34、在一些實(shí)施例,所述輸入布爾電路的構(gòu)建過程如下:
35、獲取所述輸入數(shù)據(jù)的第一位數(shù)和所述映射輸入數(shù)據(jù)的第二位數(shù),基于所述第一位數(shù)和所述第二位數(shù)生成第一初始矩陣,所述第一初始矩陣用于將所述輸入數(shù)據(jù)映射至所述映射輸入數(shù)據(jù);
36、獲取輸入布爾電路的第一最大允許深度和第一初始節(jié)點(diǎn)集合,所述第一初始節(jié)點(diǎn)集合中包括多個對應(yīng)于所述第一初始矩陣的布爾表達(dá)式的節(jié)點(diǎn);
37、獲取輸入電路優(yōu)化參數(shù),并獲取與所述輸入電路優(yōu)化參數(shù)數(shù)量對應(yīng)的所述節(jié)點(diǎn)的節(jié)點(diǎn)組合,利用所述節(jié)點(diǎn)組合更新所述第一初始節(jié)點(diǎn)集合,計(jì)算更新后的所述第一初始節(jié)點(diǎn)集合與所述映射輸入數(shù)據(jù)中每個元素的距離分量,并計(jì)算所述初第一始節(jié)點(diǎn)集合對應(yīng)的第一最大節(jié)點(diǎn)深度;
38、在所述第一最大節(jié)點(diǎn)深度小于所述第一最大允許深度的約束下,確定每個所述距離分量都為零的所述節(jié)點(diǎn)組合對應(yīng)的第一初始節(jié)點(diǎn)集合為第一目標(biāo)節(jié)點(diǎn)集合;
39、根據(jù)所述第一目標(biāo)節(jié)點(diǎn)集合得到所述輸入布爾電路,所述輸入布爾電路用于實(shí)現(xiàn)基于所述仿射變換矩陣、所述線性變換矩陣和所述同構(gòu)映射矩陣的第一映射的過程。
40、在一些實(shí)施例,所述輸出布爾電路的構(gòu)建過程如下:
41、獲取所述映射輸出數(shù)據(jù)的第三位數(shù)和所述目標(biāo)輸出數(shù)據(jù)的第四位數(shù),基于所述第一位數(shù)和所述第二位數(shù)生成第二初始矩陣,所述第二初始矩陣用于將所述映射輸出數(shù)據(jù)映射至所述目標(biāo)輸出數(shù)據(jù);
42、獲取輸出布爾電路的第二最大允許深度和第二初始節(jié)點(diǎn)集合,所述第二初始節(jié)點(diǎn)集合中包括多個對應(yīng)于所述第二初始矩陣的布爾表達(dá)式的節(jié)點(diǎn);
43、獲取輸出電路優(yōu)化參數(shù),并獲取與所述輸出電路優(yōu)化參數(shù)數(shù)量對應(yīng)的所述節(jié)點(diǎn)的節(jié)點(diǎn)組合,利用所述節(jié)點(diǎn)組合更新所述第二初始節(jié)點(diǎn)集合,計(jì)算更新后的所述第二初始節(jié)點(diǎn)集合與所述目標(biāo)輸出數(shù)據(jù)中每個元素的距離分量,并計(jì)算所述第二初始節(jié)點(diǎn)集合對應(yīng)的第二最大節(jié)點(diǎn)深度,所述輸出電路優(yōu)化參數(shù)小于所述輸入電路優(yōu)化參數(shù);
44、在所述第二最大節(jié)點(diǎn)深度小于所述第二最大允許深度的約束下,確定每個所述距離分量都為零的所述節(jié)點(diǎn)組合對應(yīng)的第二初始節(jié)點(diǎn)集合為第二目標(biāo)節(jié)點(diǎn)集合;
45、根據(jù)所述第二目標(biāo)節(jié)點(diǎn)集合得到所述輸出布爾電路,所述輸出布爾電路用于實(shí)現(xiàn)基于所述仿射變換逆矩陣、所述線性變換逆矩陣和所述同構(gòu)映射逆矩陣的第二映射的過程。
46、在一些實(shí)施例,所述頭部模塊的構(gòu)建過程包括:
47、獲取目標(biāo)邏輯操作和所述映射輸入數(shù)據(jù)的每個輸入信號,如果所述輸入信號在所述中部模塊中的處理過程未參與目標(biāo)邏輯操作,則跳過所述輸入信號,否則將所述輸入信號作為待處理信號;
48、進(jìn)行初始化,得到所述待處理信號的回溯節(jié)點(diǎn)集合,所述回溯節(jié)點(diǎn)集合包括多個用于生成所述待處理信號的節(jié)點(diǎn);
49、對所述回溯節(jié)點(diǎn)集合中每個所述節(jié)點(diǎn)執(zhí)行回溯操作,如果所述節(jié)點(diǎn)是由其對應(yīng)的父節(jié)點(diǎn)通過所述目標(biāo)邏輯操作得到,則將所述節(jié)點(diǎn)替換為所述父節(jié)點(diǎn),否則停止對所述節(jié)點(diǎn)的回溯,直至所述回溯節(jié)點(diǎn)集合中任一所述節(jié)點(diǎn)都停止回溯;每個所述待處理信號由所述目標(biāo)邏輯操作表示;
50、基于所述目標(biāo)邏輯操作得到所述頭部模塊。
51、為實(shí)現(xiàn)上述目的,本技術(shù)實(shí)施例的第三方面提出了一種電子設(shè)備,所述電子設(shè)備包括存儲器和處理器,所述存儲器存儲有計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時實(shí)現(xiàn)上述第一方面所述的方法。
52、為實(shí)現(xiàn)上述目的,本技術(shù)實(shí)施例的第四方面提出了一種存儲介質(zhì),所述存儲介質(zhì)為存儲介質(zhì),所述存儲介質(zhì)存儲有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)上述第一方面所述的方法。
53、本技術(shù)實(shí)施例提出的s盒數(shù)據(jù)計(jì)算方法、s盒、設(shè)備和存儲介質(zhì),利用輸入變換模塊對輸入數(shù)據(jù)進(jìn)行第一映射,得到映射輸入數(shù)據(jù),輸入變換模塊中依次利用仿射變換矩陣進(jìn)行仿射變換、利用線性變換矩陣進(jìn)行線性變換以及利用同構(gòu)映射矩陣進(jìn)行同構(gòu)映射,再將映射輸入數(shù)據(jù)輸入頭部模塊進(jìn)行第一逆運(yùn)算處理得到第一數(shù)據(jù),將第一數(shù)據(jù)輸入中部模塊進(jìn)行第二逆運(yùn)算處理得到第二數(shù)據(jù),將映射輸入數(shù)據(jù)和第二數(shù)據(jù)輸入尾部模塊進(jìn)行第三逆運(yùn)算處理得到映射輸出數(shù)據(jù),最后利用輸出變換模塊對映射輸出數(shù)據(jù)進(jìn)行第二映射,得到目標(biāo)輸出數(shù)據(jù),輸出變換模塊中依次利用仿射變換逆矩陣進(jìn)行仿射逆變換、利用線性變換逆矩陣進(jìn)行線性逆變換以及利用同構(gòu)映射逆矩陣進(jìn)行同構(gòu)逆映射。本技術(shù)實(shí)施例基于多個矩陣進(jìn)行數(shù)據(jù)轉(zhuǎn)換,僅需少量參數(shù)即可定義整個變換,無需查找表,不僅能提高計(jì)算效率,提升運(yùn)算速度,降低響應(yīng)時間,另外,還可以節(jié)省存儲空間,降低整體功耗。