Aes
CHES 2017 CTF 挑戰賽中最好的 AES 白盒是如何建構和打破的?
沿著CHES 2017舉辦了奪旗挑戰賽,即WhibOx 比賽。
參賽者送出帶有介面的C原始碼
void AES_128_encrypt(unsigned char ciphertext[16], unsigned char plaintext[16]);
使用一些密鑰執行 AES-128 加密。其他參與者嘗試從送出中找到該密鑰。機械裁判檢查密鑰的猜測是否正確。評級系統根據一個人的送出保持未中斷的時間以及中斷送出的時間來獎勵積分(草莓和香蕉)。生存範圍從 1 分鐘到創紀錄的 28 天 13 小時 42 分。
主要參與者在製作白盒和攻擊白盒時使用了哪些技術?唯一清楚的是,規模膨脹了。獲勝者是 28MByte。
Junwei Wang 就獲獎作品(cryptolux #777)的設計以及團隊密碼專家如何打破它進行了演講。幻燈片,影片。
設計概述(幻燈片 9)是:
多層保護
- 內部:帶錯誤檢測的編碼布爾電路
- 中:位切片
- 外層:虛擬化、隨機命名、重複、虛擬操作
程式碼大小:~28 MB
程式碼行:~2.3k
12 個全域變數,包括:
- 計算狀態 (2.1 MB)
- 程序字節碼 (15.3 MB)
以及他們扭轉它的方法的概述:
- 逆向工程⇒布爾電路
- 單一靜態分配 (SSA) 轉換
- 電路最小化
- 數據依賴分析
- 使用代數分析恢復密鑰