高中跨校資安實務素養挑戰賽
歡迎參加高中跨校資安實務素養挑戰賽!本單元將以實作範例複習編碼與解碼技術,例如:Base64、Morse Code等,並通過線上工具講授實作範例題解過程。
這些知識與技能在資安領域中非常重要,許多資安挑戰賽和CTF比賽中都會出現相關題目。掌握這些基礎編碼和加密技術,將幫助你更好地理解資安原理!
在計算機的世界有許多編碼(encoding)與解碼(decoding)的機制與應用,它們在資訊安全領域中扮演重要角色。
編碼 (Encoding)
為了資料傳輸、儲存方便或格式轉換(非保密用途)
加密 (Encryption)
為了資訊保密與安全,只有授權者能還原原文
學習目標
- 了解基本編碼與加密概念
- 熟悉常見的編碼技術:ASCII、Base64、Morse Code
- 學習古典加密法:凱撒密碼、ROT加密、瑪麗·史都華密碼、維吉尼爾密碼
- 運用線上工具解決實際問題
編碼與解碼理論
在計算機的世界有許多編碼(encoding)與解碼(decoding)的機制與應用。理解它們之間的區別非常重要。
編碼 (Encoding)
為了資料傳輸、儲存方便或格式轉換(非保密用途)
- 主要目的:資料傳輸、儲存、格式轉換
- 不考慮安全性,人人可以解碼
- 例如:Base64、ASCII、UTF-8
加密 (Encryption)
為了資訊保密與安全,只有授權者能還原原文
- 主要目的:資訊安全與保密
- 需要密鑰(金鑰)或特殊方法解密
- 例如:凱撒加密、ROT47、AES、RSA
重要提醒: Base64 不是加密演算法!它是一種編碼方式,目的是為了方便數據的傳輸和存儲,而非保密。
原始資料
純文字、二進制資料
編碼/加密
轉換為特定格式
傳輸/儲存
安全地傳送資料
解碼/解密
還原為原始資料
字元編碼 (Character Encoding)
ASCII(American Standard Code for Information Interchange,美國資訊交換標準程式碼)是最基本的字元編碼系統,用於在電腦系統中表示文字。
ASCII 特性
- 發展自電報編碼
- 包含 128 個字元(7位元表示)
- 擴展ASCII(Extended ASCII)增加了額外的 128 個字元(8位元表示)
- 只能表示英文字母、數字和部分符號,不支援中文等其他語言
ASCII 編碼示例
每個字元都對應一個特定的數值:
- 1 bit:一個二進制位元,只能儲存 0 或 1
- 8 bits = 1 byte:一個位元組,基本的資料儲存單位
- 1 byte = 1 word:一般來說一個字元需要一個位元組來表示
字元編碼是將人類可讀的字元映射到一組唯一的數字的過程,使電腦能夠處理文字資料。
Base64 編碼
Base64 是一種將二進制數據轉換為64個可列印ASCII字元的編碼方式。它不是加密方法,而是一種資料表示形式。
重要提醒: Base64 不是加密演算法!Base64 不是加密演算法!Base64 不是加密演算法!(重要的事情說三遍)
Base64 特性
- 使用 64 個可列印字元進行編碼
- 便於攜帶與儲存
- 常用於多用途網際網路郵件擴充 (MIME)
- 用於在只能處理文字的環境中傳輸二進制資料
- 使用 "=" 作為填充字元
Base64 編碼表
| 索引 | 字元 | 索引 | 字元 | 索引 | 字元 | 索引 | 字元 | 索引 | 字元 | 索引 | 字元 | 索引 | 字元 | 索引 | 字元 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 (0x00) | A | 1 (0x01) | B | 2 (0x02) | C | 3 (0x03) | D | 4 (0x04) | E | 5 (0x05) | F | 6 (0x06) | G | 7 (0x07) | H |
| 8 (0x08) | I | 9 (0x09) | J | 10 (0x0A) | K | 11 (0x0B) | L | 12 (0x0C) | M | 13 (0x0D) | N | 14 (0x0E) | O | 15 (0x0F) | P |
| 16 (0x10) | Q | 17 (0x11) | R | 18 (0x12) | S | 19 (0x13) | T | 20 (0x14) | U | 21 (0x15) | V | 22 (0x16) | W | 23 (0x17) | X |
| 24 (0x18) | Y | 25 (0x19) | Z | 26 (0x1A) | a | 27 (0x1B) | b | 28 (0x1C) | c | 29 (0x1D) | d | 30 (0x1E) | e | 31 (0x1F) | f |
| 32 (0x20) | g | 33 (0x21) | h | 34 (0x22) | i | 35 (0x23) | j | 36 (0x24) | k | 37 (0x25) | l | 38 (0x26) | m | 39 (0x27) | n |
| 40 (0x28) | o | 41 (0x29) | p | 42 (0x2A) | q | 43 (0x2B) | r | 44 (0x2C) | s | 45 (0x2D) | t | 46 (0x2E) | u | 47 (0x2F) | v |
| 48 (0x30) | w | 49 (0x31) | x | 50 (0x32) | y | 51 (0x33) | z | 52 (0x34) | 0 | 53 (0x35) | 1 | 54 (0x36) | 2 | 55 (0x37) | 3 |
| 56 (0x38) | 4 | 57 (0x39) | 5 | 58 (0x3A) | 6 | 59 (0x3B) | 7 | 60 (0x3C) | 8 | 61 (0x3D) | 9 | 62 (0x3E) | + | 63 (0x3F) | / |
| 填充 | = | ||||||||||||||
Base64 編碼過程
以 "Man" 為例:
- 將每個字元轉換為 ASCII 值:M (77), a (97), n (110)
- 將 ASCII 值轉換為 8 位二進制:01001101 01100001 01101110
- 將 24 位二進制重新分組為 6 位一組:010011 010110 000101 101110
- 將每組 6 位二進制轉換為對應的 Base64 字元:T W F u
結果:"Man" 的 Base64 編碼為 "TWFu"
應用場景
- 電子郵件附件編碼 (MIME)
- 在 URL 中傳輸二進制資料
- 資料儲存和傳輸中的二進制表示
- 作為基本的資料格式轉換機制
摩斯密碼 (Morse Code)
摩斯密碼是一種使用點(.)和劃(-)的組合來表示字母、數字和標點符號的編碼方式。它最初用於電報通訊,是早期遠距離通訊的重要編碼方法。
國際摩斯密碼表
| 字元 | 摩斯密碼 | 字元 | 摩斯密碼 | 字元 | 摩斯密碼 |
|---|---|---|---|---|---|
| A | • — | N | — • | 1 | • — — — — |
| B | — • • • | O | — — — | 2 | • • — — — |
| C | — • — • | P | • — — • | 3 | • • • — — |
| D | — • • | Q | — — • — | 4 | • • • • — |
| E | • | R | • — • | 5 | • • • • • |
| ... | ... | ... | ... | ... | ... |
摩斯密碼特性
- 由「點」(•)、「劃」(-)和空格組成
- 一個點的長度為一個單位時間
- 一個劃的長度為三個單位時間
- 點劃之間的間隔為一個單位時間
- 字元內部點劃間的間隔為一個單位時間
- 字元之間的間隔為三個單位時間
- 單詞之間的間隔為七個單位時間
摩斯密碼範例
SOS 國際求救信號:
"I love you" 的摩斯密碼:
實作提示
解碼摩斯密碼時可以使用線上工具,例如:
- https://morsecode.scphillips.com/translator.html
- 或使用摩斯密碼表手動解碼
凱撒密碼 (Caesar Cipher)
凱撒密碼(又稱凱撒加密、凱撒變換、變換加密)是一種最簡單且最廣為人知的加密技術。凱撒密碼是一種替換加密技術,明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。
歷史背景
- 這個加密方法是以羅馬共和時期凱撒的名字命名的
- 據稱當年凱撒曾用此方法與其將軍們進行聯繫
- 是最早的加密技術之一
- 也是了解現代密碼學基礎的入門知識
加密原理
凱撒密碼的工作原理是將字母表中的每個字母向前或向後移動固定數量的位置。
例如,位移量為3時:
- A → D
- B → E
- C → F
- ...
- Z → C
凱撒密碼範例
以位移量(密鑰)= 3 為例:
| 明文 | H | E | L | L | O |
|---|---|---|---|---|---|
| 密文 | K | H | O | O | R |
明文 "HELLO" 加密後變成 "KHOOR"
安全性提醒: 凱撒密碼非常容易被破解,因為只有26種可能的密鑰(英文字母表有26個字母)。使用頻率分析就可以輕易破解凱撒密碼。
實作提示
許多線上工具可以幫助加密和解密凱撒密碼:
- https://www.dcode.fr/caesar-cipher
- http://rumkin.com/tools/cipher/caesar.php
破解方法:
- 暴力破解(嘗試所有可能的位移量)
- 頻率分析(英文中E、T、A、O是最常見的字母)
ROT 加密法
ROT(Rotation Cipher)是將字母表中的字母依固定位移量進行輪替替換的加密方式。它是一種凱薩加密(Caesar Cipher)的變體。
| 名稱 | 位移量 | 特點 |
|---|---|---|
| ROT13 | 13 | 最常見,用於英文加密,可逆性強(加密兩次即還原) |
| ROT5 | 5 | 只針對數字 0–9 進行位移 |
| ROT47 | 47 | 針對 ASCII 範圍 33–126(可印字符),可加密英文、數字、符號 |
ROT 加密範例
ROT13 範例:
| 明文 | H | E | L | L | O |
|---|---|---|---|---|---|
| 密文 | U | R | Y | Y | B |
明文 "HELLO" 加密後變成 "URYYB"
ROT 的特性
ROT13 特點: ROT13 在英文字母表中將每個字母向前移動13位,因為英文字母表剛好有26個字母,所以應用 ROT13 兩次會恢復原來的文字。這使它成為一種簡單的自反式加密。
ROT47 原理
ROT47 比 ROT13 更廣泛,它使用 ASCII 表中從字符 33 ('!') 到字符 126 ('~') 的 94 個可打印字符:
- ASCII 字符集中從 33 到 126 的字符被映射為 0 到 93
- 將每個字符值加 47,然後對 94 取模
- 將結果映射回 ASCII 字符
ROT47 不僅限於字母,還包括數字和特殊字符,使其應用更廣泛。
實作提示
解密 ROT 加密的文字可以使用以下線上工具:
- ROT13: https://rot13.com/
- ROT47: https://www.dcode.fr/rot-47-cipher
瑪麗·史都華密碼
瑪麗·史都華密碼是由蘇格蘭瑪麗女王(又被稱為瑪麗·史都華)所使用的一種歷史密碼。這種密碼是一種同音替代密碼,用於在她被囚禁期間與外界聯繫。
歷史背景
- 瑪麗·史都華是十六世紀最著名和最具爭議的君主之一
- 她僅六天就登上了蘇格蘭王位
- 因涉入刺殺伊莉莎白一世的陰謀,使用密碼與外界聯繫
- 信件遭英國間諜破譯,成為定罪關鍵
- 在被囚於此地時,說出了「In my end is my beginning」(我死即我生)這句名言
加密原理
瑪麗·史都華密碼是一種同音替代密碼:
- 每個字母可對應多個不同符號,避免頻率分析
- 使用特殊符號表示整個單詞(稱作「nulls」或「code words」)
- 加入假符號混淆視聽
- 密碼表會定期更改,增加安全性
密碼解析
破解者托馬斯·費利普斯使用了以下方法破解密碼:
- 頻率分析:識別最常出現的符號,可能代表常用字母如 E、T、A
- 釣魚策略:故意傳遞部分已知信息,誘使對方回應並使用相同的詞語
- 上下文猜測:根據上下文推斷某些詞語的可能含義
這展現了古典密碼的脆弱性,也顯示了情報戰的重要性。
實作提示
解碼瑪麗·史都華密碼可以使用線上工具:
- https://www.dcode.fr/mary-stuart-code
維吉尼爾密碼 (Vigenère Cipher)
維吉尼爾密碼(法語:Chiffre de Vigenère,又譯維熱納爾密碼)是使用一系列凱撒密碼組成密碼字母表的加密算法,屬於多表密碼的一種簡單形式。
維吉尼爾密碼比簡單的凱撒密碼更難破解,因為它使用不同的位移量來加密文本中的每個字母。
加密原理
- 選擇一個關鍵詞(如 "LEMON")
- 將關鍵詞重複直到與明文等長(如 "LEMONLEMON...")
- 對明文中的每個字母,使用對應密鑰字母作為凱撒密碼的位移量
- 不同位置的字母可能會有不同的位移量
維吉尼爾表
維吉尼爾密碼使用一個表格(稱為維吉尼爾表)來執行加密:
- 表格有 26 行和 26 列,對應英文字母表
- 第一行是標準字母表,每行向左偏移一個位置
- 使用明文字母和密鑰字母的交叉點作為密文字母
維吉尼爾密碼範例
| 明文 | A | T | T | A | C | K | A | T | D | A | W | N |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 密鑰 | L | E | M | O | N | L | E | M | O | N | L | E |
| 密文 | L | X | F | O | P | V | E | F | R | N | H | R |
明文 "ATTACKATDAWN" 使用密鑰 "LEMON" 加密為 "LXFOPVEFRNHR"
選擇密鑰
如 "LEMON"
重複密鑰
使其與明文等長
逐字加密
使用維吉尼爾表
生成密文
多表替換的結果
安全性提醒: 維吉尼爾密碼比凱撒密碼更安全,但仍然可以通過卡西斯基測試和頻率分析等方法破解,特別是當密鑰較短或明文較長時。
實作提示
解密維吉尼爾密碼可以使用以下線上工具:
- https://www.guballa.de/vigenere-solver
- https://www.dcode.fr/vigenere-cipher
挑戰題目
以下是高中跨校資安實務素養挑戰賽的個人賽題目。試著運用之前學到的知識來解決這些加密挑戰!
題目一:文字變亂碼
描述: 小華向MIS人員說明,客戶寄來的信都變成了亂碼。您能幫他還原成正常的文字嗎?
提示: 檢查亂碼末尾是否有 "=" 符號,可能是 Base64 編碼。
解題工具: https://www.base64decode.org/
題目二:瑪麗皇后的智慧
描述: Mary Queen 瑪麗·史都華密碼。
提示: 你了解附圖的文字意思嗎? 使用瑪麗·史都華密碼解碼器。
解題工具: https://www.dcode.fr/mary-stuart-code
題目三:維吉尼爾密碼
描述: 維吉尼爾密文為?Vhixoieemksktorywzvhxzijqni
提示: "凱撒就是一切,但他把凱撒密法提升到了一個新的層次。"
解題工具: https://www.guballa.de/vigenere-solver
挑戰賽須知: 答案通常需要提交為 CTF{答案} 的格式。確保理解題目要求並仔細檢查你的答案!
實用資源
這些線上工具可以幫助你解決各種編碼和加密挑戰:
- CyberChef: https://gchq.github.io/CyberChef/
- dCode: https://www.dcode.fr/
- Cryptii: https://cryptii.com/
- Base64 Decode: https://www.base64decode.org/
- Vigenère Solver: https://www.guballa.de/vigenere-solver