本發(fā)明涉及信息技術的領域,且具體來說,涉及加密函數(shù)和解密函數(shù)生成方法、加密和解密方法以及相關裝置。
背景技術:
:白盒模型是現(xiàn)有密碼攻擊模型中的典型模型。在白盒模型中,可以認為攻擊者已進入用于加密和解密計算的計算模塊的系統(tǒng)并且已完全控制所述系統(tǒng)。也就是說,計算模塊F()對攻擊者完全透明且攻擊者可以在任何時候查看或修改所有數(shù)據(jù)的值,并且還可以查看和修改任何計算步驟的中間結果。因為已完全控制系統(tǒng),所以白盒攻擊者可以查看存儲器中的所有數(shù)據(jù)。在常規(guī)密碼算法中,密鑰在計算過程期間直接存儲在存儲器中。攻擊者可以通過僅定位存儲器中相對隨機的數(shù)據(jù)而以較高概率找到密鑰。因此,常規(guī)密碼算法非常易受白盒攻擊者的攻擊。為了防止攻擊者竊取白盒模型中的密鑰,喬等人在2002年提出白盒密碼術的概念并且設計用于高級加密標準(AdvancedEncryptionStandard,AES)和數(shù)據(jù)加密標準(DataEncryptionStandard,DES)的白盒實施方法。白盒密碼算法C一般包含兩個部分:一個部分是白盒加密和解密函數(shù)生成算法G,以及另一部分是生成的白盒加密函數(shù)E,和白盒解密函數(shù)D,。如圖1中所示,白盒加密和解密函數(shù)生成算法G接收兩個輸入:原始密鑰K和隨機種子,并且生成白盒加密函數(shù)E,和白盒解密函數(shù)D,。白盒密碼算法C=E,(P)將明文P加密成密文C,并且白盒密碼算法P=D'(C)將密文C解密成明文P。在E,和D,的數(shù)據(jù)段中并且在計算過程期間,原始密鑰K本身完全隱藏并且因此可以防止黑客竊取密鑰。目前,白盒加密和解密函數(shù)生成算法的設計想法類似并且一般實踐具有以下兩點:首先,計算改變成表查找并且隨機仿射掩碼層被添加到表的輸入和輸出。輸出掩碼將在下一輪中通過輸入掩碼倒轉。因此,最終輸出值保持不變。第二,考慮到查找表的大小,如果原始表格需要分成若干子表,單獨計算出子表并且將計算結果XOR運算為原始表格的輸出,其中掩碼層必須進行仿射變換。然而,目前白盒加密和解密函數(shù)生成算法的設計是不完美的,因為白盒AES中的加密和解密函數(shù)一般可以分成若干8位至8位預計算表T。表T可以被認為分別在AES中的S盒之前和之后添加未知的仿射掩碼層和未知的仿射掩碼層F1,其中輸入掩碼層包含密鑰的1字節(jié)信息。目前,在已知S和T的情況下存在可以恢復輸入和輸出掩碼層的算法。在恢復兩個連續(xù)連接輪中的T盒的掩碼層之后,攻擊者可以獲得密鑰的1字節(jié)信息。隨后,通過重復前述過程,可以恢復整個密鑰。因此,實際上可以低攻擊復雜性破解所有所揭示的白盒加密和解密函數(shù)生成算法。技術實現(xiàn)要素:本發(fā)明的實施例提供加密和解密函數(shù)生成方法、加密和解密方法以及相關裝置,這可以在揭示白盒加密和解密函數(shù)生成算法時確保用于白盒加密和解密函數(shù)中的密鑰的機密性并且增加攻擊者恢復密鑰的攻擊復雜性。以下技術方案用于本發(fā)明的實施例中。根據(jù)第一方面,提供一種加密函數(shù)生成方法,其中所述方法包括:接收用戶輸入的隨機種子和原始密鑰;根據(jù)原始密鑰生成R輪迭代計算所需的輪密鑰,其中R輪迭代計算所需的輪密鑰包含第r輪的輪密鑰,R表示生成加密函數(shù)所需的迭代計算的輪數(shù),R是正整數(shù)并且1≤r≤R;通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成R輪迭代計算所需的仿射擴張掩碼以及R輪迭代計算所需的隨機干擾數(shù)據(jù),其中仿射擴張掩碼用于將m比特數(shù)據(jù)變換成n比特數(shù)據(jù),m和n是預設正整數(shù),n>m,R輪迭代計算所需的仿射擴張掩碼包含第r輪的仿射擴張掩碼,并且R輪迭代計算所需的隨機干擾數(shù)據(jù)包含第r輪的隨機干擾數(shù)據(jù);以及生成加密函數(shù),其中加密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)以及第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)。在第一方面的第一可能實施方式中,參考第一方面,仿射擴張掩碼是根據(jù)F(x)=A*x+b確定的,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。在第一方面的第二可能實施方式中,參考第一方面或第一方面的第一可能實施方式,第r輪的仿射擴張掩碼包含第r輪的輸入仿射擴張掩碼和第r輪的輸出仿射擴張掩碼。在第一方面的第三可能實施方式中,參考第一方面或第一方面的第二可能實施方式,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同;根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。根據(jù)第二方面,提供加密方法,其中所述方法包括:接收用戶輸入的明文;根據(jù)包含在預存儲的仿射擴張掩碼和明文中的輸入仿射擴張掩碼計算輸入掩碼數(shù)據(jù),其中仿射擴張掩碼用于將m比特數(shù)據(jù)仿射地變換成n比特數(shù)據(jù),其中m和n是預設正整數(shù)并且n>m;使用預存儲的加密函數(shù)根據(jù)輸入掩碼數(shù)據(jù)獲得輸出掩碼數(shù)據(jù),其中預存儲的加密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù),根據(jù)接收到的隨機種子通過加密函數(shù)生成裝置并且通過使用隨機數(shù)產(chǎn)生器生成第r輪的仿射擴張掩碼和第r輪的隨機干擾數(shù)據(jù),1≤r≤R,R表示生成加密函數(shù)所需的迭代計算的輪數(shù);以及根據(jù)輸出掩碼數(shù)據(jù)和包含在預存儲的仿射擴張掩碼中的輸出仿射擴張掩碼計算對應于明文的密文。在第二方面的第一可能實施方式中,參考第二方面,仿射擴張掩碼是根據(jù)F(x)=A*x+b確定的,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。在第二方面的第二可能實施方式中,參考第二方面或第二方面的第一可能實施方式,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同;以及根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。根據(jù)第三方面,提供解密函數(shù)生成方法,其中所述方法包括:接收用戶輸入的隨機種子和原始密鑰;根據(jù)原始密鑰生成R輪迭代計算所需的輪密鑰,其中R輪迭代計算所需的輪密鑰包含第r輪的輪密鑰,R表示生成解密函數(shù)所需的迭代計算的輪數(shù),R是正整數(shù)并且1≤r≤R;通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成R輪迭代計算所需的仿射擴張掩碼和R輪迭代計算所需的隨機干擾數(shù)據(jù),其中仿射擴張掩碼用于將m比特數(shù)據(jù)仿射地變換成n比特數(shù)據(jù),m和n是預設正整數(shù),n>m,R輪迭代計算所需的仿射擴張掩碼包含第r輪的仿射擴張掩碼,并且R輪迭代計算所需的隨機干擾數(shù)據(jù)包含第r輪的隨機干擾數(shù)據(jù);以及生成解密函數(shù),其中解密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)。在第三方面的第一可能實施方式中,參考第三方面,仿射擴張掩碼是根據(jù)F(x)=A*x+b確定是,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。在第三方面的第二可能實施方式中,參考第三方面或第三方面的第一可能實施方式,第r輪的仿射擴張掩碼包含第r輪的輸入仿射擴張掩碼和第r輪的輸出仿射擴張掩碼。在第三方面的第三可能實施方式中,參考第三方面或第三方面的第二可能實施方式,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同;根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。根據(jù)第四方面,提供解密方法,其中所述方法包括:接收用戶輸入的密文;根據(jù)包含在預存儲的仿射擴張掩碼和密文中的輸入仿射擴張掩碼計算輸入掩碼數(shù)據(jù),其中仿射擴張掩碼用于將m比特數(shù)據(jù)仿射地變換成n比特數(shù)據(jù),其中m和n是預設正整數(shù)并且n>m;使用預存儲的加密函數(shù)根據(jù)輸入掩碼數(shù)據(jù)獲得輸出掩碼數(shù)據(jù),其中預存儲的解密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù),根據(jù)接收到的隨機種子通過解密函數(shù)生成裝置并且通過使用隨機數(shù)產(chǎn)生器生成第r輪的仿射擴張掩碼和第r輪的隨機干擾數(shù)據(jù),1≤r≤R,并且R表示生成解密函數(shù)所需的迭代計算的輪數(shù);以及根據(jù)輸出掩碼數(shù)據(jù)和包含在預存儲的仿射擴張掩碼中的輸出仿射擴張掩碼計算對應于密文的明文。在第四方面的第一可能實施方式中,參考第四方面,仿射擴張掩碼是根據(jù)F(x)=A*x+b確定的,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。在第四方面的第二可能實施方式中,參考第四方面或第四方面的第一可能實施方式,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同;根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。根據(jù)第五方面,提供加密函數(shù)生成裝置,其中所述裝置包含隨機種子接收單元、密鑰接收單元、密鑰生成單元、隨機數(shù)生成單元和加密函數(shù)生成單元;隨機種子接收單元用于接收用戶輸入的隨機種子;密鑰接收單元用于接收用戶輸入的原始密鑰;密鑰生成單元用于根據(jù)原始密鑰生成R輪迭代計算所需的輪密鑰,其中R輪迭代計算所需的輪密鑰包含第r輪的輪密鑰,R表示生成加密函數(shù)所需的迭代計算的輪數(shù),R是正整數(shù)并且1≤r≤R;隨機數(shù)生成單元用于通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成R輪迭代計算所需的仿射擴張掩碼和R輪迭代計算所需的隨機干擾數(shù)據(jù),其中仿射擴張掩碼用于將m比特數(shù)據(jù)仿射地變換成n比特數(shù)據(jù),m和n是預設正整數(shù),n>m,R輪迭代計算所需的仿射擴張掩碼包含第r輪的仿射擴張掩碼,并且R輪迭代計算所需的隨機干擾數(shù)據(jù)包含第r輪的隨機干擾數(shù)據(jù);以及加密函數(shù)生成單元用于生成加密函數(shù),其中加密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)。在第五方面的第一可能實施方式中,參考第五方面,仿射擴張掩碼是根據(jù)F(x)=A*x+b確定的,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。在第五方面的第二可能實施方式中,參考第五方面或第五方面的第一可能實施方式,第r輪的仿射擴張掩碼包含第r輪的輸入仿射擴張掩碼和第r輪的輸出仿射擴張掩碼。在第五方面的第三可能實施方式中,參考第五方面或第五方面的第二可能實施方式,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同;根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。根據(jù)第六方面,提供加密裝置,其中所述加密裝置包含明文接收單元、輸入掩碼數(shù)據(jù)計算單元、搜索單元和密文計算單元;明文接收單元用于接收用戶輸入的明文;輸入掩碼數(shù)據(jù)計算單元用于根據(jù)包含在預存儲的仿射擴張掩碼和明文中的輸入仿射擴張掩碼計算輸入掩碼數(shù)據(jù),其中仿射擴張掩碼用于將m比特數(shù)據(jù)仿射地變換成n比特數(shù)據(jù),其中m和n是預設正整數(shù)并且n>m;搜索單元用于使用預存儲的加密函數(shù)根據(jù)輸入掩碼數(shù)據(jù)獲得輸出掩碼數(shù)據(jù),其中所述預存儲的加密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù),根據(jù)接收到的隨機種子通過加密函數(shù)生成裝置并且通過使用隨機數(shù)產(chǎn)生器生成第r輪的仿射擴張掩碼和第r輪的隨機干擾數(shù)據(jù),1≤r≤R,并且R表示生成加密函數(shù)所需的迭代計算的輪數(shù);以及密文計算單元用于根據(jù)輸出掩碼數(shù)據(jù)和包含在預存儲的仿射擴張掩碼中的輸出仿射擴張掩碼計算對應于明文的密文。在第六方面的第一可能實施方式中,參考第六方面,仿射擴張掩碼是根據(jù)F(x)=A*x+b確定的,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。在第六方面的第二可能實施方式中,參考第六方面或第六方面的第一可能實施方式,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同;根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。根據(jù)第七方面,提供解密函數(shù)生成裝置,其中所述裝置包含隨機種子接收單元、密鑰接收單元、密鑰生成單元、隨機數(shù)生成單元和解密函數(shù)生成單元;隨機種子接收單元用于接收用戶輸入的隨機種子;密鑰接收單元用于接收用戶輸入的原始密鑰;密鑰生成單元用于根據(jù)原始密鑰生成R輪迭代計算所需的輪密鑰,其中R輪迭代計算所需的輪密鑰包含第r輪的輪密鑰,R表示生成解密函數(shù)所需的迭代計算的輪數(shù),R是正整數(shù)并且1≤r≤R;隨機數(shù)生成單元用于通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成R輪迭代計算所需的仿射擴張掩碼和R輪迭代計算所需的隨機干擾數(shù)據(jù),其中仿射擴張掩碼用于將m比特數(shù)據(jù)仿射地變換成n比特數(shù)據(jù),m和n是預設正整數(shù),n>m,R輪迭代計算所需的仿射擴張掩碼包含第r輪的仿射擴張掩碼,并且R輪迭代計算所需的隨機干擾數(shù)據(jù)包含第r輪的隨機干擾數(shù)據(jù);以及解密函數(shù)生成單元用于生成解密函數(shù),其中解密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)。在第七方面的第一可能實施方式中,參考第七方面,仿射擴張掩碼是根據(jù)F(x)=A*x+b確定的,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。在第七方面的第二可能實施方式中,參考第七方面或第七方面的第一可能實施方式,第r輪的仿射擴張掩碼包含第r輪的輸入仿射擴張掩碼和第r輪的輸出仿射擴張掩碼。在第七方面的第三可能實施方式中,參考第七方面或第七方面的第二可能實施方式,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同;根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。根據(jù)第八方面,提供解密裝置,其中所述解密裝置包含密文接收單元、輸入掩碼數(shù)據(jù)計算單元、搜索單元和明文計算單元;密文接收單元用于接收用戶輸入的密文;輸入掩碼數(shù)據(jù)計算單元用于根據(jù)包含在預存儲的仿射擴張掩碼和密文中的輸入仿射擴張掩碼計算輸入掩碼數(shù)據(jù),其中仿射擴張掩碼用于將m比特數(shù)據(jù)仿射地變換成n比特數(shù)據(jù),其中m和n是預設正整數(shù)并且n>m;搜索單元用于使用預存儲的加密函數(shù)根據(jù)輸入掩碼數(shù)據(jù)獲得輸出掩碼數(shù)據(jù),其中預存儲的解密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù),根據(jù)接收到的隨機種子通過解密函數(shù)生成裝置并且通過使用隨機數(shù)產(chǎn)生器生成第r輪的仿射擴張掩碼和第r輪的隨機干擾數(shù)據(jù),1≤r≤R,并且R表示生成解密函數(shù)所需的迭代計算的輪數(shù);以及明文計算單元用于根據(jù)輸出掩碼數(shù)據(jù)和包含在預存儲的仿射擴張掩碼中的輸出仿射擴張掩碼計算對應于密文的明文。在第八方面的第一可能實施方式中,參考第八方面,仿射擴張掩碼是根據(jù)F(x)=A*x+b確定的,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。在第八方面的第二可能實施方式中,參考第八方面或第八方面的第一可能實施方式,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同;根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。本發(fā)明的實施例提供加密函數(shù)和解密函數(shù)生成方法、加密和解密方法以及相關裝置。加密函數(shù)生成方法包括:接收用戶輸入的隨機種子和原始密鑰;根據(jù)原始密鑰生成R輪迭代計算所需的輪密鑰,其中R輪迭代計算所需的輪密鑰包含第r輪的輪密鑰,R表示生成加密函數(shù)所需的迭代計算輪數(shù),R是正整數(shù)并且1≤r≤R;通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成R輪迭代計算所需的仿射擴張掩碼和R輪迭代計算所需的隨機干擾數(shù)據(jù),其中仿射擴張掩碼用于將m比特數(shù)據(jù)仿射地變換成n比特數(shù)據(jù),m和n是預設正整數(shù),n>m,R輪迭代計算所需的仿射擴張掩碼包含第r輪的仿射擴張掩碼,并且R輪迭代計算所需的隨機干擾數(shù)據(jù)包含第r輪的隨機干擾數(shù)據(jù);以及生成加密函數(shù),其中加密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)。解密函數(shù)生成方法包括:接收用戶輸入的隨機種子和原始密鑰;根據(jù)原始密鑰生成R輪迭代計算所需的輪密鑰,其中R輪迭代計算所需的輪密鑰包含第r輪的輪密鑰,R表示生成解密函數(shù)所需的迭代計算的輪數(shù),R是正整數(shù)并且1≤r≤R;通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成R輪迭代計算所需的仿射擴張掩碼和R輪迭代計算所需的隨機干擾數(shù)據(jù),其中仿射擴張掩碼用于將m比特數(shù)據(jù)仿射地變換成n比特數(shù)據(jù),m和n是預設正整數(shù),n>m,R輪迭代計算所需的仿射擴張掩碼包含第r輪的仿射擴張掩碼,并且R輪迭代計算所需的隨機干擾數(shù)據(jù)包含第r輪的隨機干擾數(shù)據(jù);以及生成解密函數(shù),其中解密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)。因為大量隨機干擾數(shù)據(jù)添加在對應于加密函數(shù)和解密函數(shù)的預計算表中,所以在攻擊者找到現(xiàn)實預計算表之前,攻擊者無法使用現(xiàn)有技術來以225的計算復雜性恢復包含在預計算表中的密鑰字節(jié)。因此,攻擊者必須嘗試所有可能的仿射子集。也就是說,攻擊者需要窮盡性地嘗試所有N(n,m)個不同的m維仿射子集且隨后嘗試恢復密鑰,其中計算復雜性是這顯著增加攻擊的復雜性并且在揭示白盒加密函數(shù)或解密函數(shù)生成方法的情況下確保用于白盒加密函數(shù)或解密函數(shù)中的密鑰的機密性。附圖說明為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單介紹。顯而易見地,下面描述中的附圖僅僅示出本發(fā)明的一些實施例,并且對于本領域普通技術人員來說,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它附圖。圖1是根據(jù)本發(fā)明的實施例的白盒加密的示意圖;圖2-1是根據(jù)本發(fā)明的實施例的在AES-128加密過程中的AK操作的示意圖;圖2-2是根據(jù)本發(fā)明的實施例的在AES-128加密過程中的SB操作的示意圖;圖2-3是根據(jù)本發(fā)明的實施例的在AES-128加密過程中的SR操作的示意圖;圖2-4是根據(jù)本發(fā)明的實施例的在AES-128加密過程中的MC操作的示意圖;圖3是根據(jù)本發(fā)明的實施例的在未拆分列計算的情況下生成預計算表的示意圖;圖4是根據(jù)本發(fā)明的實施例的拆分列計算且生成預計算表的示意圖;圖5是根據(jù)本發(fā)明的實施例的在拆分列計算之后在連續(xù)兩輪迭代輸入和輸出數(shù)據(jù)之間的關系的示意圖;圖6是根據(jù)本發(fā)明的實施例的在拆分列計算之后在連續(xù)兩輪迭代輸入和輸出數(shù)據(jù)之間的另一關系的示意圖;圖7是根據(jù)本發(fā)明的實施例的加密和解密系統(tǒng)的架構的示意圖;圖8是根據(jù)本發(fā)明的實施例的加密函數(shù)生成方法的示意性流程圖;圖9是根據(jù)本發(fā)明的實施例的預計算表的示意性組成圖;圖10是根據(jù)本發(fā)明的實施例的加密方法的示意性流程圖;圖11是根據(jù)本發(fā)明的實施例的明文的示意性組成圖;圖12是根據(jù)本發(fā)明的實施例的解密函數(shù)生成方法的示意性流程圖;圖13是根據(jù)本發(fā)明的實施例的解密方法的示意性流程圖;圖14是根據(jù)本發(fā)明的實施例的加密函數(shù)生成裝置的第一示意性結構圖;圖15是根據(jù)本發(fā)明的實施例的加密裝置的第一示意性結構圖;圖16是根據(jù)本發(fā)明的實施例的解密函數(shù)生成裝置的第一示意性結構圖;圖17是根據(jù)本發(fā)明的實施例的解密裝置的第一示意圖;圖18是根據(jù)本發(fā)明的實施例的加密函數(shù)生成裝置的第二示意性結構圖;圖19是根據(jù)本發(fā)明的實施例的加密裝置的第二示意性結構圖;圖20是根據(jù)本發(fā)明的實施例的解密函數(shù)生成裝置的第二示意性結構圖;以及圖21是根據(jù)本發(fā)明的實施例的解密裝置的第二示意圖。具體實施方式首先,為了清楚且簡潔地描述每個實施例,下文簡單描述若干概念:二進制字段(GF2):界定加法和乘法的二進制集合{0,1},其中加法等效于按位XOR并且乘法等效于按位AND。在表1和表2中示出二進制字段GF2上的運算規(guī)則:表1加法01001110表2乘法01000101仿射變換:仿射變換等效于線性變換加上轉換,并且可以通過使用矩陣運算表達為F(x)=A*x+b,其中x是m維度列向量,A是n*m矩陣,b是n維列向量并且輸出值是n維列向量。在位長度擴張的情況下,n>m。示例性地,用于將3維列向量映射到4維列向量的仿射變換可以表達為:應注意,線性變換L(x)=A*x和仿射變換F(x)=A*x+b兩者滿足線性關系L(x)+L(y)=L(x+y)=A*(x+y)。此專利中的仿射變換默認地包含線性變換(也就是說,當轉換量b=0時的特定仿射變換)。另外,此專利中提及的仿射變換都界定在多維二進制字段空間中。仿射子集:仿射子集是指借助于從m維二進制字段空間到n維二進制字段空間的仿射變換F(x)Ax+b通過將m維二進制字段空間的通用集合映射到目標n維空間中形成的m維子集,其定義為如下:Y={y=A·x+b|x∈(GF2)m}白盒密碼術:一般是指在標準對稱密碼算法中的特定實施方法,并且功能上等效于使用特定密鑰的加密或解密函數(shù)。所生成的加密和解密函數(shù)將所使用的密鑰整合到計算過程中,而不是直接顯示密鑰。即使攻擊者檢查白盒加密或解密計算過程中的任何中間值,攻擊者也無法直接看到密鑰。因此,白盒密碼術可以用于保護用于密碼算法中的密鑰。S盒:通常用于密碼算法中的基本模塊和計算單元,其一般是具有固定長度輸入和固定長度輸出的固定函數(shù)。例如,用于AES中的S盒是具有8位輸入和8位輸出的固定函數(shù);并且用于DES中的S盒是具有6位輸入和4位輸出的固定函數(shù)。DES:國際塊密碼標準聯(lián)邦信息處理標準(FederalInformationProcessingStandards,F(xiàn)IPS)公開案(公開案,PUB)46-2,其中塊長度是64位并且密鑰是64位(僅56位是有效的),其目前已被破解。AES:國際塊密碼標準FIPSPUB127,其支持三種長度的密鑰:128位、122位和256位,其中三個版本的所有明文和密文長度是128位(16字節(jié))。例如,下文通過使用AES-128闡述AES:AES-128處理16字節(jié)明文(4*4字節(jié)矩陣)并且迭代10輪,其中每一輪包含四個操作:(1)添加輪密鑰(AddRoundKey,AK):將輪密鑰XOR運算到當前狀態(tài)。(2)替代字節(jié)(SubBytes,SB);以S盒替代所有當前字節(jié)。(3)移位行(ShiftRow,SR):將第i行周期性地向左移位i字節(jié),0<=i<=3。(4)混合列(MixColumn,MC):將每個列的4字節(jié)乘以有限域GF256上的矩陣,其中示例性地,矩陣可為如下:假設在一輪迭代期間的四個操作的過程中,AK過程的輸入是并且密鑰是則可以執(zhí)行圖2-1中所示的AK過程以產(chǎn)生第一運算結果第一運算結果用作SB過程的輸入并且可以執(zhí)行圖2-2中所示的SB過程以產(chǎn)生第二運算結果第二運算結果用作SR過程的輸入并且可以執(zhí)行圖2-3中所示的SR過程以產(chǎn)生第三運算結果并且第三運算結果用作MC過程的輸入并且有限域GF256上的矩陣設定成C(x),則可以執(zhí)行圖2-4中所示的MC過程以產(chǎn)生第四運算結果應注意,最后一輪迭代不包含MC操作,但包含又一個AK,即,AK->SB->SR->AK。應注意,因為SB和SR操作兩者與單個字節(jié)有關,所以順序可以改變,使得AES加密操作為:(AKSRSBMC)(AKSRSBMC)(AKSRMC)……(AKSRSBMC);此外,因為AK將在迭代狀態(tài)下將每一輪的密鑰的字節(jié)XOR運算到每個字節(jié)上,所以可以打亂密鑰的字節(jié),并且隨后AK與SR交換,使得AES等效地表達為SR(AK'SBMC)SR(AK'SBMC)SR(AK'SBMC)……SR(AK'SBMC)。類似地,AES的設計精密并且還可以用類似等效形式寫出解密過程:SR-1(AK'SB-1MC-1)SR-1(AK'SB-1MC-1)……SR-1(AK'SB-1MC-1),本文不再進一步對其進行詳細描述。AES的實施方式如下:如
背景技術:
中所提及,可以借助于表查找實施AES的加密和解密過程,并且可以逐列計算(AKSBMC)。然而,考慮到表大小,列(4字節(jié)輸入和4字節(jié)輸出)中的一者的計算過程可以分成表查找的4次嘗試。所述過程如下;首先,布置若干符號。在預計算表的計算過程期間,每個中間狀態(tài)值用對應符號表示:其中是第r輪的輸入仿射掩碼并且Fr是第r輪的輸出仿射掩碼。在拆分計算過程之前,如圖3中所展示,假設根據(jù)輸入列(y0,y1,y2,y3)計算此列的第一輪的輸出值(z0,z1,z2,z3),隨后從圖3中可以看出,yi經(jīng)受輸入仿射掩碼的仿射變換以產(chǎn)生xi,并且xi經(jīng)受AKSBMC過程的變換以產(chǎn)生wi,并且wi經(jīng)受輸出仿射掩碼F1i的仿射變換以產(chǎn)生輸出結果zi,其中0≤i≤3。在此過程中,主要表格需要從整個操作中形成并且占據(jù)4n*24n位的空間。在表查找中,可以通過使用yi來在第i預計算表中查找而獲得zi。在前述計算過程分成圖4中所示的4個計算子過程之后,圖3可以與圖4比較以示出MC分成MC0、MC1、MC2和MC3,F(xiàn)1i分成F1i[0]、F1i[1]、F1i[2]和F1i[3],并且zi分成zi0、zi1、zi2和zi3。因為MC是線性運算且MC等效于單獨地將S盒的輸出值的特定行乘以不同常數(shù),并且將乘積用作輸出列向量的不同行的元素。示例性地,使用圖4中所示的第一示意性子圖作為實例,假設S盒的輸出值是t0并且MC運算所需的有限域GF256上的矩陣是則因此,圖的計算結果可以細分成具有最小單元的4個預計算表。每個預計算表的輸入長度和輸出長度相同,并且獲得預計算表的方式的數(shù)據(jù)如下:在拆分此列的運算之后,每個運算可以用于形成具有n*2n位大小的4個子表,其僅占用4n*2n位,并且因此顯著節(jié)省了存儲空間。在表查找中,通過使用yi來在第j預計算表中查找,可以獲得zij(0≤j≤3)。下文描述前述拆分過程的合理性,使用i=0作為實例:在不添加輸入或輸出仿射掩碼的情況下,本領域的普通技術人員可以容易地證明通過對當前輪(第1輪)的同一列中的w0j(0≤j≤3)執(zhí)行XOR運算獲得下一輪(第2輪)的現(xiàn)實數(shù)據(jù)w0,即,w0=w00+w01+w02+w03,并且當前輪(第1輪)的輸出w0用作下一輪的輸入x0以繼續(xù)進行下一輪(第2輪)的表查找。所述過程在圖5中示出。在添加輸入和輸出仿射掩碼之后,假設i=0,第1輪的輸入仿射掩碼是F00-1,第1輪的輸出掩碼F10(x)=A*x+b分成4個等式:F10[j](x)=A*x+b[j](0≤j≤3),其中b=b[0]+b[1]+b[2]+b[3]。因為z0j=F10[j](w0j),所以z0=z00+z01+z02+z03=F10[0](w00)+F10[1](w01)+F10[2](w02)+F10[3](w03)=(A*w00+b[0])+(A*w01+b[1])+(A*w02+b[2])+(A*w03+b[3])=A*(w00+w01+w02+w03)+(b[0]+b[1]+b[2]+b[3])=A(w0)+b=F10(w0)也就是說,計算出z0=F10(L*S(x0+k0)),其中L是MCj運算引入的乘數(shù),并且k0是在此輪運算中對應于x0的密鑰字節(jié)。當前輪(第1輪)的輸出z0用作下一輪的輸入y0以繼續(xù)進行下一輪(第2輪)的表查找。在生成下一輪(第2輪)的表的過程期間,輸入仿射掩碼是F10-1并且輸出掩碼是F10-1。因此,根據(jù)F10-1的變換,z0可以被正確地映射回現(xiàn)實數(shù)據(jù)x0。所述過程如圖6中所示。z1=z10+z11+z12+z13z2=z20+z21+z22+z23類似地,z3=z30+z31+z32+z33。出于前述等式的合理性,可以參考z0的描述,并且此處不再給出非詳盡描述。下文參考本發(fā)明的實施例中的附圖清楚地描述本發(fā)明的實施例中的技術方案。顯然,所描述的實施例僅是本發(fā)明的實施例的一部分,而不是全部的實施例。本領域的普通技術人員在不付出創(chuàng)造性勞動的前提下基于本發(fā)明的實施例獲得的所有其它實施例應處于本發(fā)明的保護范圍內(nèi)。為了有助于清楚地描述本發(fā)明的實施例中的技術方案,例如“第一”和“第二”的詞語用于本發(fā)明的實施例中以區(qū)分提供基本上相同功能或目的的相同項或類似項。本領域的普通技術人員應理解,例如“第一”和“第二”的詞語并未限制數(shù)目和實施順序。首先,簡單地描述提供于本發(fā)明的實施例中的加密和解密系統(tǒng)架構。如圖7中所示,加密和解密系統(tǒng)700包含加密函數(shù)生成裝置1400、加密裝置1500、解密函數(shù)生成裝置1600和解密裝置1700。在接收用戶輸入的隨機種子和原始密鑰之后,加密函數(shù)生成裝置1400生成加密函數(shù)701,并且隨后將加密函數(shù)701發(fā)送到加密模塊部署節(jié)點的加密裝置1500。在接收用戶輸入的隨機種子和原始密鑰之后,解密函數(shù)生成裝置1600生成解密函數(shù)702,并且隨后將解密函數(shù)702發(fā)送到解密模塊部署節(jié)點的解密裝置1700。加密裝置1500存儲加密函數(shù)701。解密裝置1700存儲解密函數(shù)702。加密函數(shù)701和解密函數(shù)702兩者包含R輪迭代計算的預計算表,其中R是正整數(shù)。在接收用戶輸入的明文之后,加密裝置1500根據(jù)存儲于加密裝置1500中的輸入仿射擴張掩碼和輸出仿射擴張掩碼借助于在對應于加密函數(shù)701的輪迭代計算的預計算表中的查找而獲得對應于輸入明文的密文。在接收用戶輸入的密文之后,解密裝置1700根據(jù)存儲于解密裝置1700中的輸入仿射擴張掩碼和輸出仿射擴張掩碼借助于在對應于解密函數(shù)702的R輪迭代計算的預計算表中的查找而獲得對應于輸入密文的明文。具體來說,對于用于通過加密函數(shù)生成裝置1400生成加密函數(shù)的詳細方法,在加密函數(shù)生成裝置接收用戶輸入的隨機種子和原始密鑰之后,可以參考實施例1中的解決方案;對于由加密裝置1500執(zhí)行的加密方法,在加密裝置接收用戶輸入的明文之后,可以參考實施例2中的解決方案;對于用于通過解密函數(shù)生成裝置1600生成解密函數(shù)的詳細方法,在解密函數(shù)生成裝置接收用戶輸入的隨機種子和原始密鑰之后,可以參考實施例3中的解決方案;以及對于由解密裝置1700執(zhí)行的解密方法,在解密裝置接收用戶輸入的密文之后,可以參考實施例4中的解決方案,并且此處不再闡述。應注意,預計算表是在根據(jù)所有可能輸入值預計算出所有輸出結果之后相應地存儲的數(shù)據(jù)表。示例性地:為了計算例如f(x)=x'2+3x+2的函數(shù),可以首先計算x的平方,隨后可以逐步計算3x,且最后將三項相加?;蛘撸梢詧?zhí)行例如f(0)=2,f(1)=6,…的預計算。x,f(x)置于表格中作為記錄,并且f(x)的值置于表的第x行中。當需要計算f(x)時,僅需要查詢對應于第x列的值,并且不需要根據(jù)前述詳細步驟執(zhí)行逐步計算。因為在表格中執(zhí)行預計算,所以表格稱為預計算表。實施例1本發(fā)明實施例提供一種加密函數(shù)生成方法。具體來說,如圖8中所示,所述方法包括以下步驟:801。加密函數(shù)生成裝置獲得隨機種子和原始密鑰。具體來說,在本發(fā)明實施例中提供的加密函數(shù)生成方法中,加密函數(shù)生成裝置首先需要獲得隨機種子和原始密鑰。隨機種子是固定長度位串,并且可以用于通過使用隨機數(shù)產(chǎn)生器產(chǎn)生隨機數(shù)。隨機數(shù)產(chǎn)生器可以被認為是函數(shù)g(x),其中輸入是例如k位串的固定長度隨機種子并且輸出是具有任何數(shù)目位的長度的隨機數(shù)序列且用作隨后使用的隨機數(shù)源;以及密鑰是一組信息碼并且密鑰參與密碼術的“運算”且對密碼術的“運算”施加特定控制影響。DES支持64位長度的密鑰,并且AES支持具有三種類型的長度的密鑰:128位、122位和256位。802。加密函數(shù)生成裝置根據(jù)原始密鑰生成R輪迭代所需的輪密鑰,其中R輪迭代計算所需的輪密鑰包含第r輪的輪密鑰,R表示加密函數(shù)所需的迭代計算的輪數(shù),R是正整數(shù)并且1≤r≤R。具體來說,對于其中加密函數(shù)生成裝置生成R輪迭代計算所需的輪密鑰的方法,在獲得原始密鑰之后,可以參考AES標準并且在本發(fā)明的此實施例不描述細節(jié)。803。加密函數(shù)生成裝置通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成R輪迭代計算所需的仿射擴張掩碼和R輪迭代計算所需的隨機干擾數(shù)據(jù)。具體來說,在本發(fā)明實施例中,仿射擴張掩碼用于將m比特數(shù)據(jù)變換成n比特數(shù)據(jù),m和n是預設正整數(shù),n>m,R輪迭代計算所需的仿射擴張掩碼包含第r輪的仿射擴張掩碼,并且輪迭代計算所需的隨機干擾數(shù)據(jù)包含第r輪的隨機干擾數(shù)據(jù)。本領域的普通技術人員可以理解,第r輪的仿射擴張掩碼可以包含第r輪的輸入仿射擴張掩碼和第r輪的輸出仿射擴張掩碼,這具體來說在本發(fā)明實施例中不受限制。優(yōu)選地,在本發(fā)明實施例中,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是二進制字段上的具有n*m大小的列滿秩矩陣,換句話說,A是(n*m)大小的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。應注意,在本發(fā)明實施例中,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,矩陣A的行數(shù)n大于列數(shù)m,并且因此借助于仿射變換,x可以從m維列向量擴張成n維列向量。特別地,為了防止在仿射變換之后的信息損耗,矩陣A需要是列滿秩矩陣(也就是說,所有列向量是線性獨立的,秩(A)=m);對于列向量b,不強加任何要求并且其值是任意的。本領域的普通技術人員可以理解,在生成第r輪的預計算表的過程期間,如果第r輪的預設輸入數(shù)據(jù)包含第(r-1)輪的掩碼數(shù)據(jù),即,如果第r輪的預設輸入數(shù)據(jù)是0-(2n-1),為了確保對應于彼此的串列的掩碼層之間的相互抵消,第r輪的迭代計算所需的輸入仿射擴張掩碼相反地為第(r-1)輪迭代計算所需的輸出仿射擴張掩碼的逆函數(shù),并且1≤r≤R。示例性地,假設r=1,第1輪迭代計算所需的輸入仿射擴張掩碼是并且F0是加密過程中的輸入仿射擴張掩碼;假設r=3,第3輪迭代計算所需的輸入仿射擴張掩碼是并且F2是第2輪迭代計算所需的輸出仿射擴張掩碼。本領域的普通技術人員可以理解,根據(jù)隨機種子,實際上通過使用隨機數(shù)產(chǎn)生器生成A和b。在確定A和b之后,可以確定F(x)=A*x+b,并且還可以確定其逆函數(shù)。因此,根據(jù)隨機種子,可以通過使用隨機數(shù)產(chǎn)生器生成上文所列的所有仿射擴張掩碼。另外,在本發(fā)明實施例中,與現(xiàn)有技術相比較,進一步需要根據(jù)隨機種子生成R輪迭代計算所需的隨機干擾數(shù)據(jù),使得隨機干擾數(shù)據(jù)用于隨后的步驟804。應注意,不存在執(zhí)行步驟802和步驟803的特定順序;可以在步驟803之前執(zhí)行步驟802;或可以在步驟802之前執(zhí)行步驟803,這具體來說在本發(fā)明實施例中不受限制。804。加密函數(shù)生成裝置生成加密函數(shù),其中加密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)。掩碼數(shù)據(jù)是在現(xiàn)實數(shù)據(jù)經(jīng)受仿射擴張變換之后產(chǎn)生的數(shù)據(jù)。優(yōu)選地,m可以預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同。根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。應注意,輸入長度與輸出長度相同的S盒可以是AES中的S盒,并且還可以是中國商業(yè)加密標準4(SM標準4,SMS4)中的S盒,其具體來說不受本發(fā)明限制。具體來說,對于用于獲得掩碼數(shù)據(jù)的方法,可以參考現(xiàn)有技術中的白盒掩碼數(shù)據(jù)獲得方法,并且本文不再描述細節(jié)。應注意,在本發(fā)明實施例中的預設初始值是所有可能表查找輸入值的例舉例舉。例如,預設初始值可以是0-(2n-1)的例舉,或預設初始值可以是0-(2m-1)的例舉,這具體來說在本發(fā)明實施例中不受限制??梢詮膶嵤├拿枋龅那把詢?nèi)容中獲悉,每一輪迭代計算可以包含具有最小單元的多個預計算表。在本發(fā)明實施例中,在生成具有最小單元的每個預計算表的過程期間執(zhí)行輸出仿射擴張掩碼的仿射變換。因此,具有最小單元的預計算表可以包含2n個記錄,但是對應于現(xiàn)實數(shù)據(jù)的掩碼數(shù)據(jù)實際上僅占據(jù)2m個記錄,使得在具有最小單元的預計算表中的(2n-2m)個記錄可用于填寫隨機干擾數(shù)據(jù)。特別地,在本發(fā)明實施例中的加密函數(shù)可以具體來說是白盒AES加密函數(shù),這具體來說在本發(fā)明實施例中不受限制。示例性地,對于AES中的特定輪的迭代計算中的特定S盒以及對應輪密鑰字節(jié)k,隨機地選擇其輸入和輸出仿射擴張掩碼。此處,輸入仿射擴張掩碼用作實例:假設F0(x)=A*x+b,其中x是8維列向量,A是(n*m)的二元域上的列滿秩矩陣,這表示A是二進制字段上的列滿秩矩陣并且A是具有n×m大小的矩陣;b是n維列向量,并且每個矩陣元素的運算是二進制字段上的運算。在選擇F0(x)和F1(x)之后,假設對應于仿射變換F0(x)=A*x+b的仿射子集是Y。Y定義為:Y={y=A·x+b|x∈(GF2)8},隨后可以通過以下方式計算圖9中所示的預計算表T,(y):(1)如果n位輸入值是子集Y中的元素,也就是說,存在使F0(x)=y(tǒng)的x,假設T,(y)為F1(L*S(x+k)),其中F1(x)是輸出仿射擴張掩碼,L是通過MCj運算引入的乘數(shù),并且T,(y)是掩碼數(shù)據(jù);(2)如果n位輸入值是子集Y之外的元素,也就是說,不存在使F0(x)=y(tǒng)的x,T,(y)設定成隨機干擾數(shù)據(jù),其隨機性來自隨機種子和隨機數(shù)產(chǎn)生器。參考前述加密函數(shù)生成方法,以下提供通過加密函數(shù)生成裝置生成加密函數(shù)的整個過程的實例。假設m=8、n=16、R=10以及I=16,其中I是每一輪迭代計算所需的輪密鑰的字節(jié)數(shù),則:首先,接收用戶輸入的隨機種子和原始密鑰K;第二,原始密鑰K擴張到1016字節(jié)輪密鑰RK[r],其中RK[r][i]表示第r輪的第i輪密鑰字節(jié),1≤r≤10且0≤i≤15;第三,通過使用通過隨機數(shù)產(chǎn)生器產(chǎn)生的隨機流,產(chǎn)生10輪迭代計算所需的仿射擴張掩碼和10輪迭代計算所需的隨機干擾數(shù)據(jù);其中隨機流是包括多個隨機數(shù)的隨機數(shù)序列或位流;以及第四,產(chǎn)生加密函數(shù):假設預計算表Table[round][col][row_in][row_out](y)表示第round輪和第col列的預計算表,其中輸入字節(jié)在第row_in行中并且輸出字節(jié)在第row_out行中,并且所述預計算表包含216個記錄。輸入值y是16位,并且輸出值也是16位。(a)檢查以下參數(shù),并且隨后執(zhí)行后續(xù)步驟:i.round:輪數(shù);ii.col:當前輪的列數(shù);ii.row_in:其中定位當前列的輸入字節(jié)的行的行數(shù);以及iv.row_out:其中定位當前列的輸出字節(jié)的行的行數(shù);清空預計算表Table[round][col][row_in][row_out](216個空位)(b)預計算掩碼數(shù)據(jù)首先,布置若干符號。在預計算表中的掩碼數(shù)據(jù)的計算過程期間,每個中間狀態(tài)值用對應符號表示:其中是第r輪的輸入仿射擴張掩碼,并且Fr是第r輪的輸出仿射擴張掩碼。具體來說,假設對應于仿射變換Fr(x)=A*x+b的仿射子集為Y。Y定義為:Y={y=A·x+b|x∈(GF2)8}。根據(jù)y的例舉值0000-FFFF,如果y的16位輸入值是子集Y={y=A·x+b|x∈(GF2)8}中的元素,也就是說,存在使Fr(x)=y(tǒng)的x,x可經(jīng)受(AK'SB,MCj)運算以產(chǎn)生w,并且w經(jīng)受輸出仿射擴張掩碼Fr(x)的仿射變換以產(chǎn)生掩碼數(shù)據(jù)T,(y),其中T,(y)=Fr(L*S(x+k)),并且L是通過MCj運算引入的乘數(shù)。示例性地,生成預計算表Table[1][1][1][1]中的掩碼數(shù)據(jù)的過程如下:對于所有例舉的數(shù)據(jù)(y=0-FFFF):如果存在使F0(x)=y(tǒng)的x,z=F1(MC1(SB(AK(x)))并且預計算表Table[1][1][1][1]的第y個空位寫有值z,并且因此當使用表格時,可以通過Table[1][1][1][1](y)獲得z的值。當然,x的例舉值還可以是00-FF,以便獲得預計算表中的掩碼數(shù)據(jù)。在計算掩碼數(shù)據(jù)的過程期間,每個中間狀態(tài)值用對應符號表示:x-->AKSBMCj-->w-->Fr-->z、x-->Fr-1-->y,其中Fr-1是第r輪的輸入仿射擴張掩碼并且也是第(r-1)輪的輸出仿射擴張掩碼;并且Fr是第r輪的輸出仿射擴張掩碼并且也是第(r+1)輪的輸入仿射擴張掩碼。示例性地,生成預計算表Table[0][1][1][1]中的掩碼數(shù)據(jù)的過程如下:對于所有現(xiàn)實數(shù)據(jù)(x=0-FF):y=F0(x)、z=F1(MC1(SB(AK(x)))預計算表Table[0][1][1][1]的第y個空位寫有值z,并且因此當使用表格時,可以通過Table[0][1][1][1](y)獲得z的值。(c)寫有隨機干擾數(shù)據(jù)預計算表Table[round][col][row_in][row_out]的所有其余空位(216-28)寫有通過隨機數(shù)產(chǎn)生器生成的16位值的隨機干擾數(shù)據(jù)。以下測量本發(fā)明的安全性,并且下文分析安全性:因為大量隨機干擾數(shù)據(jù)添加在加密函數(shù)的預計算表中,所以在攻擊者找到現(xiàn)實預計算表之前,攻擊者無法使用現(xiàn)有技術來以225的計算復雜性恢復包含在預計算表中的密鑰字節(jié)。因此,攻擊者必須嘗試所有可能的仿射子集,其中嘗試的次數(shù)取決于仿射子集的數(shù)目。在n維二進制字段空間(GF2)n中的m維仿射子空間的數(shù)目N(n,m)是其在下文中提供:考慮仿射變換y=Ax+b,其中A是(n*m)的二元域上的列滿秩矩陣,換句話說,A是二進制字段上的具有n*m大小的列滿秩矩陣;b是n維向量,并且n>=m。存在n*n可逆矩陣P和m*m可逆矩陣Q,其使得:其中Im是具有m*m大小的單位矩陣并且代入y=Ax+b中以產(chǎn)生因為Qx可以具有任何值,等式等于P2y=P2b=b,,其中P2是秩為n-m的(n-m)*n矩陣(P2是A的對偶矩陣),并且b,是(n-m)維列向量。此外,可以看出,y屬于仿射子集Y={y=A·x+b|x∈(GF2)m}并且等于P2y=b,。因此,通過P2的值和b,,可以唯一地確定仿射子集Y。另外,考慮到對于具有任何(n-m)*(n-m)大小的可逆矩陣R,由P2y=b,定義的仿射子集與由(RP2)y=Rb,的仿射子集相同,并且因此,當計算仿射子集的數(shù)目時需要去除復制計數(shù)。因此,可以獲悉,n維二進制字段空間中的m維仿射子集的數(shù)目N(n,m)等于:因為n維二進制字段空間(GF2)n中的m維仿射子空間的數(shù)目N(n,m)是以便破解n位仿射擴張后的加密函數(shù)的生成算法,所以攻擊者必須窮盡性地嘗試所有N(n,m)個不同的m維仿射子集且隨后嘗試恢復密鑰,其中計算復雜性是其在下文中證明:攻擊者必須逐個地嘗試所有N(n,m)個可能的仿射子集。當選擇仿射子集時,攻擊者可以使用以下方法來確定選定仿射子集是否正確:根據(jù)生成預計算表的過程,可以獲悉仿射子集Y中的所有元素的表查找和XOR求和的結果必須等于0。假設X是原始m維二進制字段空間,則對于擴張后的輸入字節(jié)y,存在四個此類預計算表T,,并且因此,四個預計算表提供4n位確定條件。通過隨機值,所有四個預計算表的總和為0的可能性是2-4n。在選擇仿射子集之后,如果攻擊者發(fā)現(xiàn)預計算表的XOR總和為非零,可以確定仿射子集肯定不正確。當N(n,m)<24n并且當找到XOR總和是0的仿射子集時,攻擊者幾乎可以唯一地確定這是正確子集,并且隨后執(zhí)行密鑰恢復的第二步驟。當N(n,m)>=24n并且當攻擊者找到XOR總和是0的仿射子集時,子集未必正確。因此,攻擊者必須嘗試密鑰恢復的第二步驟,并且所需嘗試的總數(shù)目是N(n,8)/24n。因此,此攻擊方法的總計算復雜性是除了嘗試恢復密鑰的第二步驟之外檢查所有仿射子集的復雜性,其可以表達為:并且證明完成。示例性地,根據(jù)前述公式,以下展示當m=8并且n在9至23的范圍內(nèi)時在本發(fā)明實施例中的安全性和存儲器占用,如表3中所示:表3因為主機計算機的極值計算能力當前適當?shù)貫?60,所以可以從表3中看出,當n≥15時,此解決方案的安全性可以滿足大部分應用情形的安全需求。另外,在揭示白盒加密函數(shù)生成方法的情況下,即使攻擊者已破解預計算表,我們也可以改變隨機種子以防止攻擊者破解隨后產(chǎn)生的新預計算表。因此,在本發(fā)明實施例中,可以通過保護隨機種子進一步減小攻擊范圍。因此,基于在本發(fā)明實施例中提供的前述加密函數(shù)生成方法,可以從前述分析中獲悉,本發(fā)明可以在揭示白盒加密函數(shù)生成方法時確保用于白盒加密函數(shù)中的密鑰的機密性。實施例2本發(fā)明實施例提供一種加密方法。具體來說,如圖10中所示,所述方法包括以下步驟:1001.加密裝置接收用戶輸入的明文。1002.加密裝置根據(jù)預存儲的仿射擴張掩碼和明文中的輸入仿射擴張掩碼計算輸入掩碼數(shù)據(jù)。具體來說,在本發(fā)明實施例中,仿射擴張掩碼是用于將m比特數(shù)據(jù)映射到n比特數(shù)據(jù)的仿射變換矩陣,其中m和n是預設正整數(shù),并且n>m。以此方式,在執(zhí)行步驟1002中的仿射擴張變換之后,明文可以從m維列向量擴張到n維列向量。示例性地,假設在本發(fā)明實施例中的明文輸入是128位,則輸入明文可以借助于輸入仿射擴張掩碼的仿射變換從128位長度擴張到16n位長度。1003.加密裝置使用預存儲的加密函數(shù)的預計算表根據(jù)輸入掩碼數(shù)據(jù)獲得輸出掩碼數(shù)據(jù)。預存儲的加密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù),根據(jù)接收到的隨機種子通過加密函數(shù)生成裝置并且通過使用隨機數(shù)產(chǎn)生器生成第r輪的仿射擴張掩碼和第r輪的隨機干擾數(shù)據(jù),1≤r≤R,R表示生成加密函數(shù)所需的迭代計算的輪數(shù)。本領域的普通技術人員可以理解,第r輪的仿射擴張掩碼可以包含第r輪的輸入仿射擴張掩碼和第r輪的輸出仿射擴張掩碼,這具體來說在本發(fā)明實施例中不受限制。優(yōu)選地,在本發(fā)明實施例中,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。具體來說,在本發(fā)明實施例中的加密過程中所需的預存儲的加密函數(shù)是在實施例1中生成的加密函數(shù)。對于特定生成方法,可以參考實施例1中的描述并且在本發(fā)明實施例中不再描述細節(jié)。1004.加密裝置根據(jù)輸出掩碼數(shù)據(jù)和包含在預存儲的仿射擴張掩碼中的輸出仿射擴張掩碼計算對應于明文的密文。參考前述加密方法,以下提供其中加密裝置對輸入明文進行加密的實例。假設m=8、n=16、R=10以及I=16,其中I是每一輪迭代計算所需的輪密鑰的字節(jié)數(shù),則:首先,加密裝置接收用戶輸入的明文。假設給定明文是總共包含16字節(jié)的P。如圖13中所示,P[i]用于表示第i字節(jié)。也就是說,P=P[0]||P[1]||…||P[15],其中a||b是指連接二進制串a(chǎn)和b。第二,假設預存儲的輸入仿射擴張掩碼是F[0],如果F[0][i](x)表示第i字節(jié)的輸入仿射擴張掩碼,F(xiàn)[0][i](x)=A[0][i](x)+b[0][i]。因此,加密計算根據(jù)輸入仿射擴張掩碼計算對應于輸入明文的輸入掩碼數(shù)據(jù)P,=F[0][P],其中P,[i]=F[0][i](P[i])是指借助于仿射擴張映射將明文的第i字節(jié)P[i]改變成具有2字節(jié)(16位)長度的P[i]。因此,P,的總長度是32字節(jié),即256位,其為明文P的長度的兩倍。第三,加密過程(迭代表查找)可以從實施例1中的描述獲悉,加密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),并且輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù)。因此,加密裝置可以使用以下方法來使用預存儲的加密函數(shù)根據(jù)輸入掩碼數(shù)據(jù)獲得輸出掩碼數(shù)據(jù):假設預計算表Table[r][col][row_in][row_out](y)表示第r輪和第col列的預計算表,其中輸入字節(jié)在第row_in行中并且輸出字節(jié)在第row_out行中,并且所述預計算表包含216個記錄。輸入值y是16位,并且輸出值也是16位。a.假設初始迭代狀態(tài)S[0]為P,,并且使用S[r][k]來表示第r輪迭代狀態(tài)S[r]的第k子塊(每個子塊具有2字節(jié))。b.循環(huán)迭代r個輪、從S[r]執(zhí)行表查找并且計算S[r+1];對于r=1…10(輪數(shù))對于col=0…3(目前計算出的輸入字節(jié)的列數(shù))對于row_in=0…3(目前計算出的輸入字節(jié)的行數(shù))對于row_out=0…3(目前計算出的列的哪個行中的輸出字節(jié))也就是說,表格分成用于單獨計算的4個子表格,并且最后,對結果進行XOR運算,其中表示XOR。示例性地,假設col=0并且row_out=3,在子塊k=4*col+row_out=3經(jīng)受10輪表查找之后,對應掩碼數(shù)據(jù)是輸出掩碼數(shù)據(jù)是=s[10][0]||s[10][1]||......||s[10][15]。第四,輸出掩碼數(shù)據(jù)的逆運算過程。在獲得輸出掩碼數(shù)據(jù)之后,加密裝置獲得狀態(tài)S[10],其為256位二進制串。在這種情況下,S[10]通過使用最后一輪的仿射擴張掩碼的逆函數(shù)映射回密文C=F[10]-1(S[10])。具體來說,每個密文字節(jié)C[i]的計算過程是C[i]=F[10][i]-1(S[10][i])?;谠诒景l(fā)明實施例中提供的加密方法,因為本發(fā)明實施例使用在實施例1中生成的加密函數(shù)來對明文進行加密,所以考慮到實施例1中的加密函數(shù)安全分析示出加密函數(shù)可以在揭示白盒加密函數(shù)生成方法時確保用于白盒加密函數(shù)中的密鑰的機密性,則在本發(fā)明實施例中提供的加密函數(shù)也可以在揭示白盒加密函數(shù)生成方法時確保用于白盒加密函數(shù)中的密鑰的機密性。實施例3本發(fā)明實施例提供一種解密函數(shù)生成方法。具體來說,如圖12中所示,所述方法包括以下步驟:1201.解密函數(shù)生成裝置獲得隨機種子和原始密鑰。具體來說,在本發(fā)明實施例中提供的解密函數(shù)生成方法中,解密函數(shù)生成裝置首先需要獲得隨機種子和原始密鑰。隨機種子是固定長度位串,并且可以用于通過使用隨機數(shù)產(chǎn)生器產(chǎn)生隨機數(shù)。隨機數(shù)產(chǎn)生器可以被視為函數(shù)g(x),其中輸入是固定長度隨機種子,例如k位串,并且輸出是具有任何數(shù)目位的長度的隨機數(shù)序列并且用作隨后使用的隨機數(shù)源;并且密鑰是一組信息碼,并且密鑰參與密碼術的“運算”且對密碼術的“運算”施加特定控制影響。DES支持64位長度的密鑰,并且AES支持具有三種類型的長度的密鑰:128位、192位和256位。1202.解密函數(shù)生成裝置根據(jù)原始密鑰生成R輪迭代所需的輪密鑰,其中R輪迭代計算所需的輪密鑰包含第r輪的輪密鑰,R表示解密函數(shù)所需的迭代計算的輪數(shù),R是正整數(shù)并且1≤r≤R。具體來說,對于用于在獲得原始密鑰之后通過解密函數(shù)生成裝置生成R輪迭代計算所需的輪密鑰的方法,可以參考AES標準算法并且在本發(fā)明實施例中不描述細節(jié)。1203.解密函數(shù)生成裝置通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成R輪迭代計算所需的仿射擴張掩碼和R輪迭代計算所需的隨機干擾數(shù)據(jù)。在本發(fā)明實施例中,仿射擴張掩碼是用于將m比特數(shù)據(jù)仿射地變換成n比特數(shù)據(jù)的仿射變換矩陣,m和n是預設正整數(shù),n>m,R輪迭代計算所需的仿射擴張掩碼包含第r輪的仿射擴張掩碼,并且R輪迭代計算所需的隨機干擾數(shù)據(jù)包含第r輪的隨機干擾數(shù)據(jù)。本領域的普通技術人員可以理解,第r輪的仿射擴張掩碼可以包含第r輪的輸入仿射擴張掩碼和第r輪的輸出仿射擴張掩碼,這具體來說在本發(fā)明實施例中不受限制。優(yōu)選地,在本發(fā)明實施例中,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。應注意,在本發(fā)明實施例中,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,矩陣A的行數(shù)n大于列數(shù)m,并且因此,借助于仿射變換,x可以從m維列向量擴張成n維列向量。特別地,為了防止在仿射變換之后的信息損耗,矩陣A需要是列滿秩矩陣(也就是說,所有列向量是線性獨立的,秩(A)=m);對于列向量b,不強加任何要求并且其值是任意的。本領域的普通技術人員可以理解,在生成第r輪的預計算表的過程期間,如果第r輪的預設輸入數(shù)據(jù)包含第(r-1)輪的掩碼數(shù)據(jù),即,如果第r輪的預設輸入數(shù)據(jù)是0-(2n-1),為了確保對應于彼此的串列的掩碼層之間的相互抵消,第r輪的迭代計算所需的輸入仿射擴張掩碼相反地為第(r-1)輪迭代計算所需的輸出仿射擴張掩碼的逆函數(shù),并且1≤r≤R。示例性地,假設r=1,第1輪迭代計算所需的輸入仿射擴張掩碼是并且F0是解密過程中的輸入仿射擴張掩碼;假設r=3,第3輪迭代計算所需的輸入仿射擴張掩碼是并且F2是第2輪迭代計算所需的輸出仿射擴張掩碼。本領域的普通技術人員可以理解,根據(jù)隨機種子,實際上通過使用隨機數(shù)產(chǎn)生器生成A和b。在確定A和b之后,可以確定F(x)=A*x+b,并且還可以確定其逆函數(shù)。因此,根據(jù)隨機種子,可以通過使用隨機數(shù)產(chǎn)生器生成上文所列的所有仿射擴張掩碼。另外,在本發(fā)明實施例中,與現(xiàn)有技術相比較,進一步需要根據(jù)隨機種子生成R輪迭代計算所需的隨機干擾數(shù)據(jù),使得隨機干擾數(shù)據(jù)用于隨后的步驟1204。應注意,不存在執(zhí)行步驟1202和步驟1203的特定順序;可以在步驟1203之前執(zhí)行步驟1202;或可以在步驟1202之前執(zhí)行步驟1203,這具體來說在本發(fā)明實施例中不受限制。1204.解密函數(shù)生成裝置生成解密函數(shù),其中解密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)。掩碼數(shù)據(jù)是在現(xiàn)實數(shù)據(jù)經(jīng)受仿射擴張變換之后產(chǎn)生的數(shù)據(jù)。優(yōu)選地,m可以預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同。根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。應注意,輸入長度與輸出長度相同的S盒可以是AES中的S盒,并且還可以是SMS4中的S盒,這具體來說不受本發(fā)明的限制。具體來說,對于用于獲得掩碼數(shù)據(jù)的方法,可以參考現(xiàn)有技術中的白盒掩碼數(shù)據(jù)獲得方法,并且本文不再描述細節(jié)。應注意,在本發(fā)明實施例中的預設初始值是所有可能表查找輸入值的例舉。例如,預設初始值可以是0-(2n-1)的例舉,或預設初始值可以是0-(2m-1)的例舉,這具體來說在本發(fā)明實施例中不受限制。可以從實施例的描述的前言內(nèi)容中獲悉,每一輪迭代計算可以包含具有最小單元的多個預計算表。在本發(fā)明實施例中,在生成具有最小單元的每個預計算表的過程期間執(zhí)行輸出仿射擴張掩碼的仿射變換。因此,具有最小單元的預計算表可以包含2n個記錄,但是對應于現(xiàn)實數(shù)據(jù)的掩碼數(shù)據(jù)實際上僅占據(jù)2m個記錄,使得在具有最小單元的預計算表中的(2n-2m)個記錄可用于填寫隨機干擾數(shù)據(jù)。示例性地,對于AES中的特定輪的迭代計算中的特定S盒以及對應輪密鑰字節(jié)k,隨機地選擇其輸入和輸出仿射擴張掩碼。此處,輸入仿射擴張掩碼用作實例:假設F0(x)=A*x+b,其中x是8維列向量,A是二進制字段上具有n*8大小的列滿秩矩陣,b是n維列向量,并且每個矩陣元素的運算是二進制字段上的運算。在選擇F0(x)和F1(x)之后,假設對應于仿射變換F0(x)=A*x+b的仿射子集為Y。Y定義為:Y={y=A·x+b|x∈(GF2)8},隨后可以通過以下方式計算圖8中所示的預計算表T,(y):(1)如果n位輸入值是子集Y中的元素,也就是說,存在使F0(x)=y(tǒng)的x,假設T,(y)為F1(L*S(x+k)),其中F1(x)是輸出仿射擴張掩碼,L是通過MCj運算引入的乘數(shù),并且T,(y)是掩碼數(shù)據(jù);(2)如果n位輸入值是子集Y之外的元素,也就是說,不存在使F0(x)=y(tǒng)的x,T,(y)設定成隨機干擾數(shù)據(jù),其隨機性來自隨機種子和隨機數(shù)產(chǎn)生器。應注意,如在實施例的描述的前言部分中所提及,由于AES的精密設計,還可以類似于SR-1(AK'SB-1MC-1)SR-1(AK'SB-1MC-1)......SR-1(AK'SB-1MC-1)的等效形式寫出解密過程。因此,對于參考前述解密函數(shù)生成方法使用解密函數(shù)生成裝置來生成解密函數(shù)的實例,可以參考使用加密函數(shù)生成裝置來生成實施例1中的加密函數(shù)的實例,并且此處本發(fā)明實施例不再提供生成解密函數(shù)的實例。具體來說,對于本發(fā)明的安全性分析,可以參考用于通過實施例1中的加密函數(shù)生成裝置生成加密函數(shù)的方法中的安全性分析,并且本文不再描述細節(jié)。因此,基于在本發(fā)明實施例中提供的前述解密函數(shù)生成方法,可以從安全性分析中獲悉,本發(fā)明可以在揭示白盒解密函數(shù)生成方法的情況下保持白盒解密函數(shù)中的密鑰的安全性。實施例4本發(fā)明實施例提供一種解密方法。具體來說,如圖13中所示,所述方法包括以下步驟:1301.解密裝置接收用戶輸入的密文。1302.解密裝置根據(jù)預存儲的仿射擴張掩碼和密文中的輸入仿射擴張掩碼計算輸入掩碼數(shù)據(jù)。具體來說,在本發(fā)明實施例中,仿射擴張掩碼是用于將m比特數(shù)據(jù)映射到n比特數(shù)據(jù)的仿射變換矩陣,其中m和n是預設正整數(shù),并且n>m。以此方式,在執(zhí)行步驟1302中的仿射擴張變換之后,密文可以從m維列向量擴張到n維列向量。示例性地,假設在本發(fā)明實施例中的密文輸入是128位,則輸入密文可以借助于輸入仿射擴張掩碼的仿射變換從128位長度擴張到16n位長度。1303.解密裝置使用預存儲的加密函數(shù)的預計算表根據(jù)輸入掩碼數(shù)據(jù)獲得輸出掩碼數(shù)據(jù)。預存儲的解密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù),根據(jù)接收到的隨機種子通過解密函數(shù)生成裝置并且通過使用隨機數(shù)產(chǎn)生器生成第r輪的仿射擴張掩碼和第r輪的隨機干擾數(shù)據(jù),1≤r≤R,R表示生成解密函數(shù)所需的迭代計算的輪數(shù)。本領域的普通技術人員可以理解,第r輪的仿射擴張掩碼可以包含第r輪的輸入仿射擴張掩碼和第r輪的輸出仿射擴張掩碼,這具體來說在本發(fā)明實施例中不受限制。優(yōu)選地,在本發(fā)明實施例中,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。具體來說,在本發(fā)明實施例中的解密過程中所需的預存儲的解密函數(shù)是在實施例3中生成的解密函數(shù)。對于特定生成方法,可以參考實施例3中的描述并且在本發(fā)明實施例中不再描述細節(jié)。1304.解密裝置根據(jù)輸出掩碼數(shù)據(jù)和包含在預存儲的仿射擴張掩碼中的輸出仿射擴張掩碼計算對應于密文的明文。具體來說,對于使用解密裝置來解密密文的實例,可以參考使用加密裝置來對實施例2中的明文進行加密的實例,并且在本發(fā)明實施例中不再描述細節(jié)?;谠诒景l(fā)明實施例中提供的解密方法,因為本發(fā)明實施例使用在實施例3中生成的解密函數(shù)來對密文進行解密,所以考慮到解密函數(shù)安全性分析示出解密函數(shù)可以在揭示白盒解密函數(shù)生成方法的情況下保持白盒解密函數(shù)中的密鑰的安全性,則在本發(fā)明實施例中提供的解密函數(shù)也可以在揭示白盒解密函數(shù)生成方法的情況下保持白盒解密函數(shù)中的密鑰的安全性。實施例5本發(fā)明實施例提供一種加密函數(shù)生成裝置1400。具體來說,如圖14中所示,裝置1400包含隨機種子接收單元1401、密鑰接收單元1402、密鑰生成單元1403、隨機數(shù)生成單元1404和加密函數(shù)生成單元1405。隨機種子接收單元1401用于接收用戶輸入的隨機種子。密鑰接收單元1402用于接收用戶輸入的原始密鑰。密鑰生成單元1403用于根據(jù)原始密鑰生成R輪迭代計算所需的輪密鑰,其中R輪迭代計算所需的輪密鑰包含第r輪的輪密鑰,R表示用于生成加密函數(shù)所需的迭代計算的輪數(shù),R是正整數(shù)并且1≤r≤R。隨機數(shù)生成單元1404用于通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成R輪迭代計算所需的仿射擴張掩碼和R輪迭代計算所需的隨機干擾數(shù)據(jù),其中仿射擴張掩碼是用于將m比特數(shù)據(jù)映射到n比特數(shù)據(jù)的仿射變換矩陣,m和n是預設正整數(shù),n>m,R輪迭代計算所需的仿射擴張掩碼包含第r輪的仿射擴張掩碼,并且R輪迭代計算所需的隨機干擾數(shù)據(jù)包含第r輪的隨機干擾數(shù)據(jù)。加密函數(shù)生成單元1405用于生成加密函數(shù),其中加密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包含第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)。優(yōu)選地,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定的F(x)。具體來說,第r輪的仿射擴張掩碼可以包含第r輪的輸入仿射擴張掩碼和第r輪的輸出仿射擴張掩碼。特別地,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同。根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。具體來說,對于用于通過使用加密函數(shù)生成裝置1400生成加密函數(shù)的方法,可以參考實施例1中的描述,并且在本發(fā)明實施例中不再描述細節(jié)。因為在此實施例中提供的加密函數(shù)生成裝置可以用于實施前述方法,所以可以通過參考前述方法實施例中的描述獲悉從此產(chǎn)生的技術效果,并且本文不再描述細節(jié)。實施例6本發(fā)明實施例提供一種加密裝置1500。具體來說,如圖15中所示,加密裝置1500包含明文接收單元1501、輸入掩碼數(shù)據(jù)計算單元1502、搜索單元1503和密文計算單元1504。明文接收單元1501用于接收用戶輸入的明文;輸入掩碼數(shù)據(jù)計算單元1502用于根據(jù)包含于預存儲的仿射擴張掩碼和明文中的輸入仿射擴張掩碼計算輸入掩碼數(shù)據(jù),其中仿射擴張掩碼是用于將m比特數(shù)據(jù)映射到n比特數(shù)據(jù)的仿射變換矩陣,其中m和n是預設正整數(shù)并且n>m。搜索單元1503用于使用預存儲的加密函數(shù)的預計算表根據(jù)輸入掩碼數(shù)據(jù)獲得輸出掩碼數(shù)據(jù),其中所述預存儲的加密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù),根據(jù)接收到的隨機種子通過加密函數(shù)生成裝置1500并且通過使用隨機數(shù)產(chǎn)生器生成第r輪的仿射擴張掩碼和第r輪的隨機干擾數(shù)據(jù),1≤r≤R,并且R表示生成加密函數(shù)所需的迭代計算的輪數(shù)。密文計算單元1504用于根據(jù)輸出掩碼數(shù)據(jù)和包含在預存儲的仿射擴張掩碼中的輸出仿射擴張掩碼計算對應于明文的密文。優(yōu)選地,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。特別地,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同。根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。具體來說,對于用于通過使用加密裝置1500對明文進行加密的方法,可以參考實施例2中的描述并且在本發(fā)明實施例中不再描述細節(jié)。因為在此實施例中提供的加密裝置可以用于實施前述方法,所以可以通過參考前述方法實施例中的描述獲悉從此產(chǎn)生的技術效果并且本文不再描述細節(jié)。實施例7本發(fā)明實施例提供一種解密函數(shù)生成裝置1600。具體來說,如圖16中所示,裝置1600包含隨機種子接收單元1601、密鑰接收單元1602、密鑰生成單元1603、隨機數(shù)生成單元1604和解密函數(shù)生成單元1605。隨機種子接收單元1601用于接收用戶輸入的隨機種子。密鑰接收單元1602用于接收用戶輸入的原始密鑰。密鑰生成單元1603用于根據(jù)原始密鑰生成R輪迭代計算所需的輪密鑰,其中R輪迭代計算所需的輪密鑰包含第r輪的輪密鑰,R表示生成解密函數(shù)所需的迭代計算的輪數(shù),R是正整數(shù)并且1≤r≤R。隨機數(shù)生成單元1604用于通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成R輪迭代計算所需的仿射擴張掩碼和R輪迭代計算所需的隨機干擾數(shù)據(jù),其中仿射擴張掩碼是用于將m比特數(shù)據(jù)映射到n比特數(shù)據(jù)的仿射變換矩陣,m和n是預設正整數(shù),n>m,R輪迭代計算所需的仿射擴張掩碼包含第r輪的仿射擴張掩碼,并且R輪迭代計算所需的隨機干擾數(shù)據(jù)包含第r輪的隨機干擾數(shù)據(jù)。解密函數(shù)生成單元1605用于生成解密函數(shù),其中解密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包含第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)。優(yōu)選地,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。具體來說,第r輪的仿射擴張掩碼可以包含第r輪的輸入仿射擴張掩碼和第r輪的輸出仿射擴張掩碼。特別地,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同。根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。具體來說,對于用于通過使用解密函數(shù)生成裝置1600生成解密函數(shù)的方法,可以參考實施例3中的描述,并且在本發(fā)明實施例中不再描述細節(jié)。因為在此實施例中提供的解密函數(shù)生成裝置可以用于實施前述方法,所以可以通過參考前述方法實施例中的描述獲悉從此產(chǎn)生的技術效果,并且本文不再描述細節(jié)。實施例8本發(fā)明實施例提供一種解密裝置1700。具體來說,如圖17中所示,解密裝置1700包含密文接收單元1701、輸入掩碼數(shù)據(jù)計算單元1702、搜索單元1703和明文計算單元1704。密文接收單元1701用于接收用戶輸入的密文。輸入掩碼數(shù)據(jù)計算單元1702用于根據(jù)包含在預存儲的仿射擴張掩碼和密文中的輸入仿射擴張掩碼計算輸入掩碼數(shù)據(jù),其中仿射擴張掩碼是用于將m比特數(shù)據(jù)映射到n比特數(shù)據(jù)的仿射變換矩陣,其中m和n是預設正整數(shù)并且n>m。搜索單元1703用于使用預存儲的加密函數(shù)的預計算表根據(jù)輸入掩碼數(shù)據(jù)獲得輸出掩碼數(shù)據(jù),其中預存儲的解密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù),根據(jù)接收到的隨機種子通過解密函數(shù)生成裝置1700并且通過使用隨機數(shù)產(chǎn)生器生成第r輪的仿射擴張掩碼和第r輪的隨機干擾數(shù)據(jù),1≤r≤R,并且R表示生成解密函數(shù)所需的迭代計算的輪數(shù)。明文計算單元1704用于根據(jù)輸出掩碼數(shù)據(jù)和包含在預存儲的仿射擴張掩碼中的輸出仿射擴張掩碼計算對應于密文的明文。優(yōu)選地,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。特別地,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同。根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。具體來說,對于用于通過使用解密裝置1700對密文進行解密的方法,可以參考實施例4這噢乖的描述,并且在本發(fā)明實施例中不再描述細節(jié)。因為在此實施例中提供的解密裝置可以用于實施前述方法,所以可以通過參考前述方法實施例中的描述獲悉從此處產(chǎn)生的技術效果,并且本文不再描述細節(jié)。實施例9本發(fā)明實施例提供一種加密函數(shù)生成裝置1800。具體來說,如圖18中所示,裝置1800包含:接收器1801、處理器1802和隨機數(shù)產(chǎn)生器1803。接收器1801用于接收用戶輸入的隨機種子。接收器1801進一步用于接收用戶輸入的原始密鑰。處理器1802用于根據(jù)原始密鑰生成R輪迭代計算所需的輪密鑰,其中R輪迭代計算所需的輪密鑰包含第r輪的輪密鑰,R表示生成加密函數(shù)所需的迭代計算的輪數(shù),R是正整數(shù)并且1≤r≤R。隨機數(shù)產(chǎn)生器1803用于根據(jù)隨機種子生成R輪迭代計算所需的仿射擴張掩碼和R輪迭代計算所需的隨機干擾數(shù)據(jù),其中仿射擴張掩碼是用于將m比特數(shù)據(jù)映射到n比特數(shù)據(jù)的仿射變換矩陣,m和n是預設正整數(shù),n>m,R輪迭代計算所需的仿射擴張掩碼包含第r輪的仿射擴張掩碼,并且R輪迭代計算所需的隨機干擾數(shù)據(jù)包含第r輪的隨機干擾數(shù)據(jù)。處理器1802用于生成加密函數(shù),其中所述加密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)。優(yōu)選地,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。具體來說,第r輪的仿射擴張掩碼可以包含第r輪的輸入仿射擴張掩碼和第r輪的輸出仿射擴張掩碼。特別地,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同。根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。具體來說,對于用于通過使用加密函數(shù)生成裝置1800生成加密函數(shù)的方法,可以參考實施例1中的描述,并且在本發(fā)明實施例中不再描述細節(jié)。因為在此實施例中提供的加密函數(shù)生成裝置可以用于實施前述方法,所以可以通過參考前述方法實施例中的描述獲悉從此產(chǎn)生的技術效果,并且本文不再描述細節(jié)。實施例10本發(fā)明實施例提供一種加密裝置1900。具體來說,如圖19中所示,加密裝置1900包含接收器1901和處理器1902。接收器1901用于接收用戶輸入的明文。處理器1902用于根據(jù)包含在預存儲的仿射擴張掩碼和明文中的輸入仿射擴張掩碼計算輸入掩碼數(shù)據(jù),其中仿射擴張掩碼是用于將m比特數(shù)據(jù)映射到n比特數(shù)據(jù)的仿射變換矩陣,其中m和n是預設正整數(shù)并且n>m。處理器1902進一步用于使用預存儲的加密函數(shù)的預計算表根據(jù)輸入掩碼數(shù)據(jù)獲得輸出掩碼數(shù)據(jù),其中所述預存儲的加密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù),根據(jù)接收到的隨機種子通過加密函數(shù)生成裝置并且通過使用隨機數(shù)產(chǎn)生器生成第r輪的仿射擴張掩碼和第r輪的隨機干擾數(shù)據(jù),1≤rR,并且R表示生成加密函數(shù)所需的迭代計算的輪數(shù)。處理器1902進一步用于根據(jù)輸出掩碼數(shù)據(jù)和包含在預存儲的仿射擴張掩碼中的輸出仿射擴張掩碼計算對應于明文的密文。優(yōu)選地,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。優(yōu)選地,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同。根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。具體來說,對于用于通過使用加密裝置1900對明文進行加密的方法,可以參考實施例2中的描述并且在本發(fā)明實施例中不再描述細節(jié)。因為在此實施例中提供的加密裝置可以用于實施前述方法,所以可以通過參考前述方法實施例中的描述獲悉從此產(chǎn)生的技術效果,并且本文不再描述細節(jié)。實施例11本發(fā)明實施例提供一種解密函數(shù)生成裝置。具體來說,如圖20中所示,裝置2000包含:接收器2001、處理器2002和隨機數(shù)產(chǎn)生器2003。接收器2001用于接收用戶輸入的隨機種子。接收器2001進一步用于接收用戶輸入的原始密鑰。處理器2002用于根據(jù)原始密鑰生成R輪迭代計算所需的輪密鑰,其中R輪迭代計算所需的輪密鑰包含第r輪的輪密鑰,R表示生成解密函數(shù)所需的迭代計算的輪數(shù),R是正整數(shù)并且1≤r≤R。隨機數(shù)產(chǎn)生器2003用于根據(jù)隨機種子生成R輪迭代計算所需的仿射擴張掩碼和R輪迭代計算所需的隨機干擾數(shù)據(jù),其中仿射擴張掩碼是用于將m比特數(shù)據(jù)映射到n比特數(shù)據(jù)的仿射變換矩陣,m和n是預設正整數(shù),n>m,R輪迭代計算所需的仿射擴張掩碼包含第r輪的仿射擴張掩碼,并且R輪迭代計算所需的隨機干擾數(shù)據(jù)包含第r輪的隨機干擾數(shù)據(jù)。處理器2002用于生成解密函數(shù),其中解密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)。優(yōu)選地,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。具體來說,第r輪的仿射擴張掩碼可以包含第r輪的輸入仿射擴張掩碼和第r輪的輸出仿射擴張掩碼。特別地,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同。根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。具體來說,對于用于通過使用解密函數(shù)生成裝置2000生成解密函數(shù)的方法,可以參考實施例3中的描述,并且在本發(fā)明實施例中不再描述細節(jié)。因為在此實施例中提供的解密函數(shù)生成裝置可以用于實施前述方法,所以可以通過參考前述方法實施例中的描述獲悉從此產(chǎn)生的技術效果并且本文不再描述細節(jié)。實施例12本發(fā)明實施例提供一種解密裝置2100。具體來說,如圖21中所示,解密裝置2100包含接收器2101和處理器2102。接收器2101用于接收用戶輸入的密文。處理器2102用于根據(jù)包含在預存儲的仿射擴張掩碼和密文中的輸入仿射擴張掩碼計算輸入掩碼數(shù)據(jù),其中仿射擴張掩碼是用于將m比特數(shù)據(jù)映射到n比特數(shù)據(jù)的仿射變換矩陣,其中m和n是預設正整數(shù)并且n>m。處理器2102進一步用于使用預存儲的加密函數(shù)的預計算表根據(jù)輸入掩碼數(shù)據(jù)獲得輸出掩碼數(shù)據(jù),其中所述預存儲的解密函數(shù)包含R輪迭代計算的預計算表,R輪迭代計算的預計算表中的第r輪的預計算表包括第r輪的預設輸入數(shù)據(jù)與對應于輸入數(shù)據(jù)的輸出數(shù)據(jù)之間的一對一映射關系,第r輪的預設輸入數(shù)據(jù)包含第r輪的預設輸入掩碼數(shù)據(jù),輸出數(shù)據(jù)包含第r輪的輸出掩碼數(shù)據(jù)和第r輪的隨機干擾數(shù)據(jù),并且根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù),根據(jù)接收到的隨機種子通過解密函數(shù)生成裝置并且通過使用隨機數(shù)產(chǎn)生器生成第r輪的仿射擴張掩碼和第r輪的隨機干擾數(shù)據(jù),1≤rR,并且R表示生成解密函數(shù)所需的迭代計算的輪數(shù)。處理器2102進一步用于根據(jù)輸出掩碼數(shù)據(jù)和包含在預存儲的仿射擴張掩碼中的輸出仿射擴張掩碼計算對應于密文的明文。優(yōu)選地,根據(jù)F(x)=A*x+b確定仿射擴張掩碼,其中x是m維列向量,A和b是通過使用隨機數(shù)產(chǎn)生器并且根據(jù)隨機種子生成的矩陣,A是(n*m)的二元域上的列滿秩矩陣,b是n維列向量,并且可以根據(jù)A和b確定F(x)。優(yōu)選地,m預設為S盒的輸入/輸出長度,所述S盒的輸入長度與輸出長度相同。根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼計算第r輪的輸出掩碼數(shù)據(jù)包含:根據(jù)預設初始值、第r輪的輪密鑰和第r輪的仿射擴張掩碼參考S盒計算第r輪的輸出掩碼數(shù)據(jù)。具體來說,對于用于通過使用解密裝置2100對密文進行解密的方法,可以參考實施例4中的描述,并且在本發(fā)明實施例中不再描述細節(jié)。因為在此實施例中提供的解密裝置可以用于實施前述方法,所以可以通過參考前述方法實施例中的描述獲悉從此產(chǎn)生的技術效果并且本文不再描述細節(jié)。本領域的普通技術人員可以清楚地理解,出于描述的簡易性和簡潔性,在前述裝置中,前述功能模塊的劃分用作說明的實例。在實際應用中,前述功能可以分配到不同模塊并且根據(jù)需求實施,也就是說,裝置的內(nèi)部結構分成不同功能模塊以實施全部或部分上述功能。對于前述系統(tǒng)、裝置和單元的詳細工作過程,可以參考前述方法實施例中的對應過程并且本文不再描述細節(jié)。在本申請案中提供若干實施例中,應理解,所揭示的系統(tǒng)、裝置和方法可以通過其它方式實現(xiàn)。例如,所描述的裝置實施例僅僅是示例性的。例如,模塊或單元劃分僅僅是邏輯功能劃分并且可以是實際實施方案中的其它劃分。例如,可以將多個單元或組件組合或整合到另一系統(tǒng)中,或可以忽略或不執(zhí)行一些特征。另外,所顯示或所論述的相互耦合或直接耦合或通信連接可以通過某一接口實施。裝置或單元之間的間接耦合或通信連接可以通過電氣、機械或其它形式實施。作為單獨部分描述的單元可以或可以不物理分離,并且作為單元顯示的部分可以為或可以不為物理單元、可以位于一個位置或可以在多個網(wǎng)絡單元上分布??梢愿鶕?jù)實際需要選擇部分或全部單元以實現(xiàn)實施例的解決方案的目的。另外,本發(fā)明的實施例中的功能單元可以集成到一個處理單元中,或每個單元可以物理上單獨存在,或兩個或更多單元集成到一個單元中。集成單元可以硬件的形式實施,或可以軟件功能單元的形式實施。當集成單元以軟件功能單元的形式實施以及作為單獨產(chǎn)品銷售或使用時,所述集成單元可以存儲在計算機可讀存儲媒體中?;诖死斫?,本實質(zhì)上發(fā)明的技術方案,或促進現(xiàn)有技術的部分,或全部或部分技術方案可以軟件產(chǎn)品的形式實施。軟件產(chǎn)品存儲于存儲媒體中并且包含用于指示計算機裝置(可以是個人計算機、服務器或網(wǎng)絡裝置)或處理器執(zhí)行本發(fā)明的實施例中所描述的方法步驟的全部或部分的若干指令。前述存儲媒體包含:可以存儲程序代碼的任何媒體,例如USB閃存盤、可拆卸硬盤、只讀存儲器(Read-OnlyMemory,ROM)、隨機存取存儲器(RandomAccessMemory,RAM)、磁盤或光學光盤。上述描述僅是本發(fā)明的具體實施方式但并非旨在限制本發(fā)明的保護范圍。本領域的普通技術人員容易想到的在本發(fā)明所揭示的技術范圍內(nèi)的任何變化或替代應處于本發(fā)明的保護范圍內(nèi)。因此,本發(fā)明的保護范圍應受制于權利要求書的保護范圍。當前第1頁1 2 3