iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
Security

資安小白的密碼學從0到1-CryptoHack平台解題紀錄系列 第 19

【Day 18】Symmetric CryptoGraphy01 - AES小入門 &架構

  • 分享至 

  • xImage
  •  

前言

今天要來開啟Symmetric CryptoGraphy課程!開始學非對稱加密-AES
網址 : https://cryptohack.org/courses/symmetric/course_details/

https://ithelp.ithome.com.tw/upload/images/20230928/20162613AO8Z8B80Mh.png

點進去之後會看到這些題目
https://ithelp.ithome.com.tw/upload/images/20230928/20162613SH93PIJUbt.png

根據題目名稱,我相信它會一步一步帶我們認識AES
好! 廢話不多說,按下START COURSE開始吧( •̀ ω •́ )y

今天會接觸這三題
https://ithelp.ithome.com.tw/upload/images/20230928/20162613pF1Mdw3j92.png


Writeup

Keyed Permutations

題目

網址 : https://cryptohack.org/courses/symmetric/aes0/
https://ithelp.ithome.com.tw/upload/images/20230928/20162613MU66O9bFcj.png

思路

這題在跟我們介紹甚麼是AES,詳細內容會在最後統整時提到
介紹完後問了 :
What is the mathematical term for a one-to-one correspondence?

"一對一"在數學中的術語為何

flag為這個問題的答案

解法

直接把問句複製貼上到古狗找
找到答案為 bijection (對射)

flag : crypto{bijection}


Resisting Bruteforce

題目

網址 : https://cryptohack.org/courses/symmetric/aes1/
https://ithelp.ithome.com.tw/upload/images/20230928/20162613PgyICU51Hy.png

思路

這題在介紹AES的安全性,很難被暴力破解
最後題目問說 :
What is the name for the best single-key attack against AES?

針對AES最好的單密鑰攻擊的名稱是

flag為這問題的答案

解法

其實這個在題目中就有提到
https://ithelp.ithome.com.tw/upload/images/20230928/20162613zXNYbatD3B.png

點一下那個an attack,之後就會跳轉到一個介紹 Biclique attack 的介面
由此可知針對AES最好的單密鑰攻擊的名稱為Biclique

flag : crypto{biclique}


Structure of AES

題目

網址 : https://cryptohack.org/courses/symmetric/aes2/
https://ithelp.ithome.com.tw/upload/images/20230928/20162613z7upapjOrW.png

思路

這題在跟我們講解AES的加密流程
最後題目要求我們:
Write a matrix2bytes function to turn that matrix back into bytes, and submit the resulting plaintext as the flag.

把matrix矩陣內容轉為bytes型別來得到flag

解法

把題目給的matrix.py下載下來,之後題目要求把matrix矩陣轉回bytes形式
所以利用Crypto.Util.number裡的long_to_bytes實現

[long_to_bytes(i) for row in matrix for i in row]
為python的列表推導式應用
for row in matrix跑了matrix的每一行
for i in row 跑了matrix的每一行裡面的值
用二維陣列表示就是matrix[row][i]

  • code
    我把def bytes2matrix刪掉惹 因為用不到
from Crypto.Util.number import *

def matrix2bytes(matrix):
    """ Converts a 4x4 matrix into a 16-byte array.  """
    byte_output_arr =  [long_to_bytes(i) for row in matrix for i in row]
    byte_output = b"".join(byte_output_arr)
            
    return byte_output.decode()

matrix = [
    [99, 114, 121, 112],
    [116, 111, 123, 105],
    [110, 109, 97, 116],
    [114, 105, 120, 125],
]

print(matrix2bytes(matrix))
  • output
    https://ithelp.ithome.com.tw/upload/images/20230928/20162613DkujlrAKb9.png

flag : crypto{inmatrix}

統整

題目出現的名詞 :

  • keyed permutation : 密鑰置換
    • 將每個可能的輸入塊映射到一個唯一的輸出塊
      • 一對一關係

        one-to-one correspondence between input and output blocks

      • 數學術語
        • Bijection 對射

        數學中,一個由集合X映射至集合Y的函數,
        若對每一個Y內的y,存在唯一一個在X內的x與其對應,
        且對每一在X內的x,存在唯一一個在Y內的y與其對應

  • AES 安全性
    • AES-128, AES-256
    • 蠻安全的
    • 很難被暴力破解
      • Biclique attack
        • 針對AES的攻擊,可以把AES-128的安全等級降到126.1 bits

        it lowers the security level of AES-128 down to 126.1 bits, and hasn't been improved on for over 8 years

  • AES流程(來源為第三題題目Structure of AES)

中文解釋來源為 : https://ithelp.ithome.com.tw/articles/10234844

https://ithelp.ithome.com.tw/upload/images/20230929/20162613vDFutYj3XC.png

  1. Key Expansion 金鑰擴充
  • 從128 bit key裡,生成出11個單獨的128 bit round key


2. Initial key addition 新增初始密鑰

  • AddRoundKey
    • 將資料跟回合金鑰做XOR
  1. Round 回合
    • 會循環10次,也就是循環9回合後再加上最後1回合
  • SubBytes

    • 將資料作替換
  • ShiftRows

    • 位移資料
  • MixColumns

  • AddRoundKey

    • 將資料跟回合金鑰做XOR

小結

這幾題根本就是考英文閱讀阿ˊ_>ˋ再次感謝google大神的協助 \ | /
學密碼學的同時也學了英文w 今天也了解了AES的架構

參考資料

對射(Bijection) : https://en.wikipedia.org/wiki/Bijection

AES介紹 : https://ithelp.ithome.com.tw/articles/10235060

AES動畫呈現 : https://www.youtube.com/watch?v=gP4PqVGudtg&ab_channel=AppliedGo

AES動畫網址 : https://formaestudio.com/rijndaelinspector/archivos/Rijndael_Animation_v4_eng-html5.html


上一篇
【Day 17】柵欄密碼&密碼棒實作
下一篇
【Day 19】Symmetric CryptoGraphy02 - AES過程
系列文
資安小白的密碼學從0到1-CryptoHack平台解題紀錄31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言