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