Aes

如何使用現有的 WB-AES 加密程式碼生成白盒 AES 解密算法和程式碼?

  • June 19, 2019

我可以在 Github 上找到幾個 whitebox AES 128 實現,例如wbaes-1wbaes-2wbaes-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 解密實現供我閱讀?

如果我沒記錯的話,下面的實現包含加密和解密方向。您還可以閱讀 James A. Muir 的非常好的教程( pdf )

引用自:https://crypto.stackexchange.com/questions/71431