Crypto

賴昱錡

Index

Intro

仙貝知識

  • 不是研究怎麼設定安全的密碼,或是破解別人的FB密碼

  • 用到很多數學

  • 而且沒辦法讓你變成天才駭客

什麼是密碼學?

  • 古典密碼學

    • 替換/移項手法

    • 資料保密與傳遞、密碼破譯

  • 現代密碼學
    • 資料的完整性驗證、不可否認性
    • 雜湊函數
    • 隱寫術
    • 古典密碼的所有事

什麼是密碼學?

  • 加密 Encrypt:指將明文經過某種程序轉換成密文,該程序稱為加密
  • 解密 Decrypt:指將密文經過某種程序轉換成明文,該程序稱為解密
  • 明文 Plaintext:加密前的訊息
  • 密文 Cipertext:加密後的訊息
  • 演算法 Algorithm:解決複雜問題的程序
  • 密碼學演算法:做與密碼學相關程序(如加密、解密、簽章...)的演算法
  • 金鑰 / 密鑰 Key:加解密時所使用的「鑰匙」

常用詞彙

柯克霍夫原則(Kerckhoffs's principle)

  • 即使演算法完全洩漏,只要金鑰沒有洩漏,密文就是安全的
  • Claude Shannon: "the enemy knows the system"
  • Bruce Schneier: 任何以隱藏設計作為防護(Security through obscurity)的保安系統必然會失敗
  • Kerckhoffs's principle 不是說密碼學演算法都必須公開,而是要確保即使公開也
    不會傷害安全性

Classical crypto

不能用在現代系統的密碼

凱薩密碼 (CAesar cipher)

  • 家喻戶曉的密碼
  • 簡單來說這個密碼的加密方法,就是把字串中的每個字母偏移 n 位,偏移方向與 n 作為解密的金鑰
  • 解密就做與加密相反的事!

凱薩密碼 (CAesar cipher)

  • 破解的話,最多只需要嘗試偏移 25 次。就是這麼簡單
  • 據說凱薩當初採用偏移3位的方式加密訊息
    • 但他的敵人似乎大多不識字
    • 總之這個密碼相當不安全
  • 簡單來說,就是將明文中每個字母一一對應到不同的字母來進行加密。
  • 換字表 (金鑰):
    • A -> H
    • B -> Z
    • C -> D ... 
  • 加密、解密程序皆完成時,銷毀密碼本

ㄧ次性密碼本 (OTP, One time pad)

  • 最常出現的字母:
    a, t, o, e, i
  • 最常出現的字彙:
    the, of, to, and 
  • 自動化分析:
    https://quipqiup.com/

攻擊: 頻率攻擊 (Frequency analasys)

  • 基本上和前面所講的密碼原理相同,但是...

  • 頻率攻擊不能用了 QQ

  • 明文:platelet is great
    密鑰:hitcon(重複填補到明文長度)
    密文:wttvsylb bu uelim
  • 但還是有破解方法

維吉尼亞密碼(Vigenère Cipher)

卡西斯基試驗(Kasiski examination)

  • 可以參考以下資料,會用到不少高中數學?
  • wiki
  • csdn
  • 通過考慮在英文一段有意義的長文中,隨機取兩字母,相同機率。我們就可以破解密文,即使密文中相同字母可能代表不同的字母原文。

補充: index of coincidence

RSA

經典的非對稱式加密

我們剛剛看到什麼?

  1. Bob 要傳訊息給 Alice
  2.  Bob 拿 Alice 的公鑰 (Public Key) 對訊息加密
  3. Bob 傳加密過後的訊息給 Alice
  4. Alice 拿自己的私鑰 (Private Key)對訊息解密
  • Public Key 可以公開
  • Private Key 必須自己保存
  • 任何人都可以用 Alice 的 Public Key 加密訊息
  • 只有 Alice 能將這些訊息以她的 Private Key 解密
  • 常見演算法:RSA, ElGamal, ECC
  • 運算速度比對稱式加密慢很多,故現在幾乎都是混合對稱式加密(Hybrid cryptosystem)
    1. Alice 生成一個會議金鑰( Session Key),以會議金鑰對稱式加密訊息
    2. Alice 以非對稱式加密拿 Bob 的 Public Key 加密會議金鑰
    3. 兩者合併傳送給 Bob
    4. Bob 用自己的 Private Key 解開會議金鑰
    5. Bob 以會議金鑰解密訊息

重要資訊

  • 最常見的非對稱式加密系統
  • 破解難度高,因為大數質因數分解需要耗費相當多的運算資源
  • 由 Ron Rivest、Adi Shamir、Leonard Adleman 共同發明

RSA

warm up: 同餘

a \equiv b \mod{n}

當 a 和 b 除以 n 的餘數相同時,我們可以將這個關係表現成上面的式子,例如:

13 \equiv 8 \mod{5}
19 \equiv -1 \mod{20}

餘數也可以是負數? 可以

warm up: 同餘性質

a \equiv b \mod{n}

當 a 和 b 除以 n 的餘數相同時,我們可以將這個關係表現成上面的式子,例如:

13 \equiv 8 \mod{5}
19 \equiv -1 \mod{20}

餘數也可以是負數? 可以

補充: 費馬小定理

補充: 費馬小定理

費馬小定理可以濃縮成以下幾行:

  •  若 \( p \) 是質數,且 \( a \) 是一個不被 \( p \) 整除的整數,則: \[\\ a^{p-1} \equiv 1 \pmod{p} \]

  • 更一般地,對於任何整數 \( a \):\[ a^p \equiv a \pmod{p} \]

a 和 p 互質

流程

製作 Public Key 與 Private Key:

  1. 選擇 2 個超大相異質數 p, q 並計算 N = pq
  2. 計算 r = (p-1) × (q-1)
  3. 選一整數 e 滿足 e < r 且 gcd(e, r) = 1
  4. 尋一整數 d 滿足 ed ≡ 1 (mod r)
  5. 銷毀 p 與 q,得 Public Key (N, e) 與 Private
  6. Key (N, d)

加密與解密:

  1. Bob 要傳訊息給 Alice,訊息依據特定方法轉成整數 m 滿足 m < N
  2. Alice 將 Public Key (N, e) 交給 Bob
  3. Bob 運算 c ≡ me (mod N) 得 c 並交給 Alice (加密)
  4. Alice 運算 cd ≡ m (mod N) 得 m ,再依約定方法轉回原始 內容(解密)

流程

製作 Public Key 與 Private Key:

  1. 選擇 2 個超大相異質數 p, q 並計算 N = pq
  2. 計算 r = (p-1) × (q-1)
  3. 選一整數 e 滿足 e < r 且 gcd(e, r) = 1
  4. 尋一整數 d 滿足 ed ≡ 1 (mod r)
  5. 銷毀 p 與 q,得 Public Key (N, e) 與 Private
  6. Key (N, d)

加密與解密:

  1. Bob 要傳訊息給 Alice,訊息依據特定方法轉成整數 m 滿足 m < N
  2. Alice 將 Public Key (N, e) 交給 Bob
  3. Bob 運算 c ≡ me (mod N) 得 c 並交給 Alice (加密)
  4. Alice 運算 cd ≡ m (mod N) 得 m ,再依約定方法轉回原始 內容(解密)

crypto (未完成)

By 賴昱錡

crypto (未完成)

密碼學

  • 34