Aes
使白盒密碼學 AES 實現更難被破解的方法
**背景:**我想使用白盒密碼術來隱藏儲存在客戶端應用程序中的密鑰。
我正在尋找白盒密碼學的現有實現,例如 AES 128 或 256。但我發現幾乎所有現有的實現都可以在合理的時間內破解。例如,參見CHES 2017 挑戰和對原始 Chow 方案的BGE 攻擊等。到目前為止,我還沒有找到成熟/完整的實現。
我的目標是讓 WBC 實施很難被破壞。據我們所知,
1) WBC 旨在保護密碼算法免受密鑰恢復
2) 程式碼混淆旨在防止密碼算法的逆向工程。
因此,我想使用已發布的 WBC 實現(可能已經被破壞),然後對程式碼應用混淆(例如,C++)。
- 上述方式是否合理(如果我們找不到合適的實現)?
- 請推薦任何成熟的 WBC 實現(尚未損壞)
- 有更好的想法嗎?(除了重新設計和評估新的 WBC 算法)
上述方式是否合理(如果我們找不到合適的實現)?
不,目前沒有這樣的程式碼混淆算法可以將程式碼安全地混淆到很難對其進行逆向工程的程度。
請推薦任何成熟的 WBC 實現(尚未損壞)
我不知道 AES 的任何 WBC 實現。
請注意,WB-AES 算法的成功實現意味著“單向性”(非常難以反轉)將把該算法變成公鑰密碼系統,而不需要非對稱加密(您只需發布WBC-AES 實現和密鑰不會洩漏)。所以我很確定沒有完整的實現。
可能存在一些完整的 WBC 實現,但我認為如果它們能吸引加密社區的大量關注,它們不會長期保持完整。
還有其他更好的主意嗎?(除了重新設計和評估新的 WBC 算法)
不。正如 Geoffroy Couteau 和我所評論的那樣,自製程式碼混淆可能出於多種原因是不安全的,主要原因是安全性取決於沒有人會了解您的混淆算法的事實。