# AES ## 觀察&思路 由本題提供的"stm32f0_aes"檔案可以看到50條Record,每條包含明文、sampling、密文 而根據老師簡報中的某個解題流程 ![](https://i.imgur.com/xSCKOfF.png) 解題必須知道Sbox,在aes.c檔案中可以找到此Sbox: ![](https://i.imgur.com/Bu8unrB.png) 利用這Sbox加上老師簡報中的Analytics Workflow即可開始解題 ## Code & Algorithm ### 1. 計算Sbox(p^k) ![](https://i.imgur.com/LkOgSWG.png) 算出此D*256大小的矩陣Code如下: ![](https://i.imgur.com/x45qCJb.png) 過程主要就是做XOR,並將XOR的結果去查詢Sbox,將Sbox得到的結果利用Hamming Weight Model取得Hypothetical Power Consumptions 並將所有Hypothetical Power Consumptions儲存在matrix中 而我的Hamming Weight Model Code如下: ![](https://i.imgur.com/lisuAXh.png) 過程只是將數字轉成二進位字串,計算字串中有幾個1,將計算結果回傳即可 ### 2. 以Correlation Coefficient做Statistic Analysis 此過程需先將我們的D*256矩陣matrix與題目給的Traces進行Correlation ![](https://i.imgur.com/aP9gqUU.png) 詳細Code如下: 此Code負責將所有Traces收集起來並湊成一個跟上圖一樣的Traces矩陣 ![](https://i.imgur.com/Kw1a1Ay.png) 此Code負責計算Correlation Coefficient,並找出最大的Coefficient值 以取得最有可能的key,並將此key轉成char加入到FLAG字串中 ![](https://i.imgur.com/UQLnswN.png) 如此最後即可取得FLAG字串!! ![](https://i.imgur.com/4VQxIuC.png) # 結果 ![](https://i.imgur.com/MjeoSGI.png)