Aes
如何使用現有的 WB-AES 加密程式碼生成白盒 AES 解密算法和程式碼?
我可以在 Github 上找到幾個 whitebox AES 128 實現,例如wbaes-1、wbaes-2、wbaes-3等。它們都是基於 WB AES加密開發的。理想情況下,大多數實現包括兩個部分:
(1)。Table_Generator.c (或 .cpp、.h …)。輸入:16字節密鑰;輸出:一個大的查找表(例如,table.h),其中關鍵資訊已經隱藏在這個查找表中
(2)。AES_Encrypt.c。輸入:從(1)生成的純文字和表格;輸出:密文
但我也需要解密實現。
首先,讓我確認一個基本問題:
- 加密表和解密表是分開生成的,使用一個相同的密鑰(例如,AES128 的 16 字節密鑰)?正確的?這意味著有兩種表生成算法(因此有兩個單獨的查找表)-一種加密,一種用於解密。
然後,主要問題:
- 將WB加密項目修改為WB解密項目有哪些重要步驟?
- 是否有任何 WB AES 解密實現供我閱讀?
加密表和解密表是分開生成的,使用一個相同的密鑰(例如,AES128 的 16 字節密鑰)?正確的?這意味著有兩種表生成算法(因此有兩個單獨的查找表)-一種加密,一種用於解密。
是的,這是正確的。您需要兩組不同的表來實現加密和解密算法。當然,這兩個集合都是使用相同的秘密 AES 密鑰生成的。
將WB加密項目修改為WB解密項目有哪些重要步驟?
要實現 AES 解密,應該一個一個地撤消所有操作,做相反的事情:因此,您可以按照這個邏輯重寫表生成器算法,然後編寫相應的解密函式,其中輪結構被反轉。否則,人們會注意到可以使用與加密相同的輪結構來實現解密,但密鑰調度稍作修改(並且操作被它們的逆操作替換)。我建議使用第二種方式來實現解密,因為您只需要更改密鑰調度功能,其餘實現保持不變。
編輯:更多詳細資訊可在第 5.3.5 節的AES 標准出版物中獲得,其中描述了等效逆密碼。
是否有任何 WB AES 解密實現供我閱讀?