---
# System prepended metadata

title: AES

---

# 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)
