Crypto

Whoami

  • sicc

  • 輔仁大學資工系四年級

  • 112 NISRA 會長

  • ...

為什麼我們需要密碼

  • 在資訊安全的三個要素

    • 機密性 (Confidentiality)

    • 完整性 (Integrity)

    • 可用性 (Availability)

為什麼我們需要密碼

  • 在資訊安全的三個要素

    • 機密性 (Confidentiality)

    • 完整性 (Integrity)

    • 可用性 (Availability)

為什麼我們需要密碼

  • 在資訊安全的三個要素

    • 機密性 (Confidentiality)

    • 完整性 (Integrity)

    • 可用性 (Availability)

我們需要的是什麼樣的密碼

  • 一個足夠強度的密碼

我們需要的是什麼樣的密碼

密碼學必備 - 現代

  • 機密性(Confidentiality):確保訊息只有被授權者才能取得
     
  • 完整性(Integrity):偵測訊息是否遭受竄改
     
  • 身分認證(Authentication):傳送方與接受方需驗證識別
     
  • 不可否認性(Non-Reputation):提供訊息傳送方與接受方的交易證明

密碼學簡介

密碼學簡介

  • 可分為古典密碼學現代密碼學 
     
  • 源於希臘語 kryptós「隱藏的」,和 gráphein「書寫」
     
  • 古典密碼學
    • 創造力與技巧的展現
  • 現代密碼學
    • 電腦科學與數學

密碼學簡介

  • 密碼學 == 數學 + 邏輯
  • 數學 == 要記得與計算很多東西
  • 邏輯 == 要思考很多東西
  • 記得與計算 == 頭很痛
  • 思考 == 頭很痛
  • 密碼學 == 頭很痛 + 頭很痛
  • 密碼學 == 頭超級痛

密碼學簡介

  • 加密 Encrypt
    • 指將明文經過某種程序轉換成密文,該程序稱為加密。
       
  • 解密 Decrypt
    • 指將密文經過某種程序轉換成明文,該程序稱為解密。
       
  • 明文 Plaintext
    • 加密前的訊息。
       
  • 密文 (ciphertext / cyphertext)
    •  加密後的訊息。 

密碼學簡介

  • 演算法 Algorithm
    • 解決問題的程序或方法。
       
  • 密碼學演算法
    • 密碼學相關問題(如加密、解密、簽章...)的演算法。
       
  • 金鑰 / 密鑰 Key
    • 加解密時所使用的「鑰匙」。 

密碼學簡介

  • Key 的作用

密碼學

  • 本課程不會教如何設立密碼
    • 但可以學到如何建立一個安全的密碼
       
  • 不會教如何破解別人的密碼
    • 最快的方式是社交工程
       
  • 不會因為密碼學而直接變成超強駭客
    • 但可以搭配組合計(請自行研究)

密碼學與資安

  • 不要使用未公開的密碼演算法
     
  • 低強度的密碼 < 直接沒有密碼
    • 聊勝於無 (x)
       
  • 任何密碼總有一天會被破解
     
  • 密碼只是資訊安全的一部分

編碼 vs 加密

介紹編碼和加密的差別

編碼

  • 編碼 (Encoding)
    • 是資訊從一種形式或格式轉換為另一種形式的過程。
       
  • 解碼 (Decoding)
    • 編碼的逆過程,即將資料從另一種形式轉換回來。

 

編碼

  • 編碼是資訊從一種形式或格式轉換為另一種形式的過程;解碼則是編碼的逆過程。
     
  • 編碼不具任何安全性,只要知道編碼方式都可以解碼得到明文

如果去問 Gemini 就 ...

Binary encode

  • 二進位
     
  • 電腦由一堆 0 和 1 組成(bits)
     
  • 常常以八個為一組看(8 bits = 1 byte)
     
  • 相當於短除法連除 16 的結果
Decimal Binary
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
... ...

Hex encode

  • 十六進制
     
  • 0 ~ 9, A, B, C, D, E, F 共 16個符號
     
  • 相當於短除法連除 16 的結果
Decimal Hex
... ...
8 8
9 9
10 A
11 B
12 C
13 D
14 E
15 F
16 10(x10)
17 11(x11)
... ...

ASCII

  • 將常會用到的字進行編碼,讓電腦之間好溝通

Base encode

  • Base 32
    • A ~ Z , 2~7
  • Base 45
    • A ~ Z , 0 ~ 9, $, %, *, +, -, ., /, :, (空白) 
  • Base 58
    • 1 ~ 9 (0 除外), A ~ Z (O 除外), a ~ z (o 除外)
  • Base 62
    • 0 ~ 9, A ~ Z, a ~ z
  • Base 64
    • 0 ~ 9, A ~ Z, a ~ z, +, /

Base64

  • 用於傳輸資料(如圖片)
     
  • ASCII 一個字元 8 bits
     
  • Base64 一字元只有6 bits
     
  • 如果原文不整除3,結尾會出現對應數量的= 用以補足

Base64

Base64

URL encode

  • 為了避開有特殊意義的符號(如 '&', ' ', '=', '#', '?')
     
  • 編碼為 ‘%’ 加上該字元之 ASCII (Hex表示)
     
  • Eg. 昨天 Web II 的內容

Lab 1

Lab 1:Base64

Lab 2: URL

cyberchef 解題

  • 來自 Base64 的神祕句子 

Lab 2

  • 來自 Base64 的神祕句子
     
  • 但轉回去好像又不太一樣 

摩斯密碼

  • 編碼的一種
     
  • 感覺漢堡比較有趣

加密

  • 加密(英語:Encryption)是將原始資訊(稱為明文)轉換為另一種形式(稱為密文),使之不可讀的過程。
     
  • 經過一些酷酷的演算法 (通常都是數學家發明的)
     
  • 舉例: AES、DES ...

古典密碼學

古典密碼學

  • 移項式加密
    • 改變順序
       
  • 替換式加密
    • 改變內容
    • 單表加密
    • 多表加密

 

替換式加密

  • 替換密碼是字母作有系統的代換,直到訊息被替換成其它難以解讀的字。

     
  • 單表加密
    • 凱撒密碼、阿特巴希密碼
       
  • 多表加密
    • 維吉尼亞密碼、自動密鑰密碼

凱薩加密

  • Caesar cipher
    • 凱撒加密、凱撒變換、變換加密
       
  • 明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。
     
  • 容易被頻率分析或暴力破解攻擊

凱薩加密

凱薩加密

  • 假設 ROT 3

明文: ABCDEFGHIJKLMNOPQRSTUVWXYZ

DEFGHIJKLMNOPQRSTUVWXYZABC

ROT 3

Lab3

  • 猜猜我是 ROT ?

阿特巴希密碼

  • 阿特巴希密碼將字母表整個扭轉:
     
  • 第一個字母 "A" 與最後一個 "Z" 相替換,
     
  • 第二個 "B" 與倒數第二個 "Y" 相替換,如此類推。

簡單替換式密碼

  • 簡易替換密碼(可以理解為一種建立替換表的方式)
  • 傳統上會先把一個關鍵詞寫在字母表最前面,再刪去重
    複字母,
  • 這樣就能得到一個替換表。
  • Keyword:"HELLO"
  • HELLOABCDEFGHIJKLMNOPQRSTUVWXYZ
  • HELLOABCDEFGHIJKLMNOPQRSTUVWXYZ
  • HELOABCDFGIJKMNPQRSTUVWXYZ

簡單替換式密碼

  • 簡易替換密碼(可以理解為一種建立替換表的方式)
  • 傳統上會先把一個關鍵詞寫在字母表最前面,再刪去重
    複字母,
  • 這樣就能得到一個替換表。
  • Keyword:"HELLO"
  • HELLOABCDEFGHIJKLMNOPQRSTUVWXYZ
  • HELLOABCDEFGHIJKLMNOPQRSTUVWXYZ
  • HELOABCDFGIJKMNPQRSTUVWXYZ
  • 可以對替換表再進行偏移(凱撒密碼)或翻轉(阿特巴希密碼)

波雷費密碼 - 補充

  • Playfair cipher
     
  • 一種對稱式密碼
     
  • 首種雙字母取代的加密法。

字頻分析

  • 大部分語言中,字母或字符使用的頻率並不是平均的
     
  • 以英文為例,很明顯母音的使用頻率更高
     
  • ETAOINSHRDLU

單表加密攻擊

  • 爆破
    • 已知為凱撒密碼,只有26種可能
       
  • 字頻分析
    • 最常出現的字母:e, t, a, o, i
    • 最常出現的單字:the, to, of, and
    • 自動化分析:https://quipqiup.com/

字頻分析

  • 攻擊者能夠更加容易地進行攻擊
     
  • 因為單表加密只是將字元做替換,所以頻率並不會變。
     
  • 如果我們知道一段英文是由單表加密所得。我們對這段英文做字頻分析,發現 ”X” 的出現的頻率最高。
     
  • 那我們合理猜測 ”X” 很有可能替換了 ”E”

維吉尼亞加密

  • 利用表格內容進行加密
     
  • 包括了26行字母表,每一行都由前一行向左偏移一位得到。

維吉尼亞加密

明文

密鑰

維吉尼亞加密

  • 明文: H
  • 密鑰: O
  • 密文: V

維吉尼亞加密

  • 密文: V
  • 密鑰: O
  • 明文: ?

維吉尼亞加密

  • 密文: V
  • 密鑰: O
  • 明文: H

Lab4

  • 維吉尼亞~

多表加密攻擊

  • 卡西斯基試驗
     
  • Index of coincidence
     
  • ...etc

卡西斯基試驗

  • Kasiski examination
     
  • 針對有邏輯文章的維吉尼亞加密
     
  • 需要明文與密文就能夠得到密鑰組成

卡西斯基試驗

  • 密鑰:ABCDEF AB CDEFA BCD EFABCDEFABCD
     
  • 明文:CRYPTO IS SHORT FOR CRYPTOGRAPHY
     
  • 密文:CSASXT IT UKSWT GQU GWYQVRKWAQJB

卡西斯基試驗

  • 密鑰:ABCDEF AB CDEFA BCD EFABCDEFABCD
     
  • 明文:CRYPTO IS SHORT FOR CRYPTOGRAPHY
     
  • 密文:CSASXT IT UKSWT GQU GWYQVRKWAQJB

卡西斯基試驗

  • 密文:DYDUXRMHTVDVNQDQNWDYDUXRMHARTJGWNQD
  • DYDUXRMH
    • 相距為 18 個字元
    • 可以推測密鑰長度為 2,3,6,9,18
  • NQD
    • ​相距為 20 個字元
    • 可推測密鑰長度為 2,4,5,10,20

卡西斯基試驗

  • 密文:DYDUXRMHTVDVNQDQNWDYDUXRMHARTJGWNQD
  • DYDUXRMH
    • 相距為 18 個字元
    • 可以推測密鑰長度為 2,3,6,9,18
  • NQD
    • ​相距為 20 個字元
    • 可推測密鑰長度為 2,4,5,10,20
  • 取兩者的交集可以知道密鑰長度為 2

IOC

  • Index of coincidence
     
  • 兩個文本並排放置,並計算相同字母在兩個文本中出現
    相同位置的次數。此計數稱為巧合指數,或簡稱IoC

IOC

  • 可以理解為 “文本” 的 “BMI
     
  • 是一段文本 “有序程度” 的指標
     
  • 無序 -> IOC 低
     
  • 有序 -> IOC 高

IOC

  • 假設文本共100字
     
  • 統計每個字母出現的次數
     
  • 如果a出現了8次

a 連續出現的機率 = 

IOC

  • 假設加總完得到0.065
     
  • 我們再將 0.065 乘以 26(字母總數)得到 1.69
     
  • 那我們說這段文本的 IoC 為 1.69

IOC

  • IoC反應一段文本 “有多不隨機”
     
  • 假設一段完全隨機的英文(260個字,每個字母各10個)
     
  • 一段完全隨機的文本的IoC會逼近 1 (當文本長度趨近無限)
    而文本 “越有序” 、 “越不隨機” ,其IoC就會越

IOC

  • 字母機率加總的部分可以理解為一段文字的有序程度。
    (越高越有序)
     
  • 之所以要乘以字母個數,是因為要讓不同語言之間可以互
    相比較。(同語言比較可以不用乘字母個數)

IOC

  • 字母機率加總的部分可以理解為一段文字的有序程度。
    (越高越有序)
     
  • 之所以要乘以字母個數,是因為要讓不同語言之間可以互
    相比較。(同語言比較可以不用乘字母個數)

IOC

  • 字母多的語言,IoC上限更高
     
  • 因為可以理解為字母越多的語言,天生有序化程度就更低。
    (因為他字母多)
     
  • 假設他還能全部文本都是一個字母,則他的IoC會更高
     
  • 30個字母的語言組成的文本只有一個字母和3個字母的語言組成的文本只有一個字母,是不一樣的

IOC

  • 一個猴群分香蕉。(社會化程度)
     
  • 分的越均勻,IoC越低。
     
  • 分的越不均勻,IoC越高。(香蕉集中在某幾個猴子手裡)
  • 這樣我們就得出 IoC的下限 是 1(完全隨機的文本,逼近 1)
     
  • IoC的上限 是1乘以(該語言字母總數)(英文為 26)

IOC

  • 一段有意義的文本:

一次性密碼本

  • 規則:

    • 1 “關鍵字”必須是完全隨機的(有意義就容易被破解)
       

    • 2 關鍵字的長度需要與明文等長
       

    • 3 只能加密一次,用完即銷毀

一次性密碼本

  • 規則:

    • 1 “關鍵字”必須是完全隨機的(有意義就容易被破解)
       

    • 2 關鍵字的長度需要與明文等長
       

    • 3 只能加密一次,用完即銷毀

缺點: 難用

移向式加密

  • 字元本身不改變,但字元位置依照一定規則進行移動變換

移向式加密

1 2 3
4 5 6
7 8 9
1 4 7
2 5 8
3 6 9

密碼棒

  • 1.由一條加工過、且有夾帶訊息的皮革繞在一個木棒所組成
     
  • 2.在古希臘,文書記載著斯巴達人用此於軍事上的訊息傳遞
     
  • 3.密碼接受者需使用一個相同尺寸的棒子讓他將密碼條繞在上面解讀

密碼棒

  • 密碼棒加密
    • 1. 將要加密的明文分為N個一組
       
    • 2. 再從每組的選出一個字母連起來
       
    • 3. 最後,形成一段無規律的密文

密碼棒 - 1

  • 原 THEREISALWAYSONLYONETRUTH(明文長度為25)
    將要加密的明文由左到右變成為5*5的陣列

T H E R E
I S A L W
A Y S O N
L Y O N E
T R U T H

密碼棒 - 2

  • 再從上到下抄一遍的到密文

T H E R E
I S A L W
A Y S O N
L Y O N E
T R U T H

TIALTHSYYREASOURLONTEWNEH

密碼棒

  • 密碼棒解密

    • 由上至下抄一遍密文

    • 由左至右再抄成一段完整的句子

    • 得到原先的明文

密碼棒 - 2

T H E R E
I S A L W
A Y S O N
L Y O N E
T R U T H

TIALTHSYYREASOURLONTEWNEH

  • 由上至下抄一遍密文

密碼棒 - 2

T H E R E
I S A L W
A Y S O N
L Y O N E
T R U T H

THEREISALWAYSONLYONETRUTH

  • 由左至右再抄成一段完整的句子

密碼棒 - practice

  • 密文:SLAOCEYRY1HYT310ASFU
     

  • 這是一個長寬4*5的密碼棒做成的密文,請解出明文

密碼棒 - practice

  • 密文:SLAOCEYRY1HYT310ASFU

S C Y T A
L E 1 3 S
A Y H 1 F
O R Y 0 U

明文:SCYTALE13SAYH1FORY0U

Lab5

  • 密碼棒~

中國式密碼

  • 一種移項式密碼
     
  • 將訊息的字母由右而左、上下交替排列,最後將排列出的結果從左到右,一列一列寫出,成為密文。

中國式密碼

  • 明文: The rabbit is cute.

古典密碼學的總結

  • 總之,就是被時代淘汰的東西
     
  • 算力增長的時代,暴力破解不需要花上多久時間(只要有錢)

現代密碼學

現代密碼學

  • 加密不再限於書寫文字
     
  • 基於各種複雜的數學
     
  • 加密簡單破解難
     
  • 對稱式加密及非對稱式加密

柯克霍夫原則

  • 密碼系統即便做不到數學上不可破解,也應在實際程度上無法破解
     
  • 即使加密方式公開,只要密鑰沒有洩露,密文仍無法破譯。

現代密碼學

  • 對稱式加密:
    • 加密解密用同把金鑰

區塊加密法/串流加密法

  • 區塊加密
    • 常用於已知訊息長度的情況
    • 將明文分成一塊一塊等長的模組分別加密
    • AES DES
       
  • 串流加密
    • 常用於需要即時回應,或是訊息長度未定的情況
    • 對明文逐bit 加密

串流加密法

  • XOR
  • A ⊕ A = 0
  • (A ⊕ B) ⊕ B = A 
A B A ⊕ B (A ⊕ B )⊕ B
0 0 0 0
0 1 1 0
1 0 1 1
1 1 0 1

串流加密法

  • 攻擊:
    • 已知明文與密文時可以直接回推Key (明文⊕密文= 金鑰)
       
    • 遇到一長串Null (0x00) 時會直接寫出Key,而這在二進制檔案中是很常見的事情
       
    • 如果Key 長度等於Plaintext,又Key 完全隨機且不重用,是被證實無法破解的。

非對稱式加密

  • 利用公鑰加密,用私鑰解密
    • RSA

非對稱式加密

  • 利用公鑰加密,用私鑰解密
    • RSA

Hash(雜湊、哈希)

  • 將任意長度的字串轉成固定長度
     
  • 雪崩效應:字串即使只有動一個字,Hash 結果差異很大
    • md5(1234) = 81dc9bdb52d04dc20036dbd8313ed055
    • md5(1235) = 9996535e07258a7bbfd8b132435c5962
       
  • 無法回推:可以從X 算出Hash(X),但無法從Hash(X) 算出X
     
  • 抗碰撞:很難找到兩個不同字串X 與X’ 符合Hash(X) = Hash(X’)
     
  • md5, sha256,bcrypt

數位簽章(Digital Signature)

  • 類似於在紙上簽名,證明這份資料是我認可的
     
  • 只有擁有私鑰的人可以簽章,所有人都可以驗證簽章
     
  • 因為訊息很長,所以通常會先將訊息Hash 過再簽章
     
  • 基於非對稱式加密系統的應用
     
  • 具有不可否認性(Non-repudiation)

資料來源

  • Google 爸爸
     
  • Chatgpt
     
  • NISRA 的各位學長姐
     
  • Gemini ...(?
     
  • 還有網路上的各路大神
Made with Slides.com