iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 29
1
Security

資訊安全大補帖系列 第 29

資安補帖─Day29─Crypto2

  • 分享至 

  • xImage
  •  

前言

古典密碼學的範疇很大,不過現今的CTF題目都是現代密碼學。

社團經驗談

  1. 透過心智圖釐清思路
  2. 加快開會時間

正文

古典密碼

  • 一次性密碼本(one-time pad,縮寫為OTP)
    • 加密演算法
    • 隨機的密鑰(key)組成明文,且只使用一次
    • 產生的時候一定要隨機才有機密性
  • Vigenère cipher
    • n:第n位
    • (明文[n]+金鑰[n])mod 26 = 密文[n]
    • (密文[n]-金鑰[n])mod 26 = 明文[n]
    • ex. PicoCTF Crypto Warmup 1
      • 密文:llkjmlmpadkkc 金鑰:thisisalilkey
      • 利用線上工具,解出明文:secretmessage
    • 線上工具
  • ROT13
    • 位移13位
    • (明文+13)mod 26 = 密文
    • (密文-13)mod 26 = 明文
    • ex. PicoCTF Crypto Warmup 2
      • cvpbPGS{guvf_vf_pelcgb!}
      • 利用線上工具,解出明文:picoCTF{this_is_crypto!}
    • 線上工具

對稱式加密

  • 相同金鑰作加解密
  • DES
    • 金鑰長度 64bits
      • 實際:56 bits
      • 有 8 bits 校驗
    • 區塊長度 64bits
      • 輸入: 64bits
      • 輸出: 64bits
    • DES 產生的資安問題
      1. 金鑰長度只有64bits,太短可以被暴力破解
      2. 存在Weak key、Semi-weak key,加密結果==解密結果
    • 範例CTF: SharifCTF 8 2018 - DES 60
  • AES
    • 用來取代DES
    • 金鑰長度
      1. 128 bits
      2. 192 bits
      3. 256 bits
    • 區塊長度 128 bits
      • 輸入: 128 bits
      • 輸出: 128 bits
    • CTF題型
      • 考 Mode

非對稱式加密

  • 加密跟解密金鑰不同
    • 公鑰
    • 私鑰
  • 類型
    • 公鑰加密,私鑰解密
    • 私鑰加密,公鑰解密
  • 常見加密法
    • RSA
    • ELGamal
    • ECC
  • 未來主流
    • 量子密碼
  • RSA
    • 數論
      • 由拉定理
      • 歐拉函數
      • 模反元素
    • 範例題目─PicoCTF 2018 - Super Safe RSA
      Dr. Xernon made the mistake of rolling his own crypto.. Can you find the bug and decrypt the message?
      
      • nc 2018shell2.picoctf.com 59208
        • c: 12605061682885201204871830852732024266052227263246807442055773905758083149233085
        • n: 22243294067998773953112419096597380960377430785364447320683349637640627099388931
        • e: 65537
      1. 找p,q
    from Crypto.Util.number import *
    import gmpy2
    
    p = 138873400617639818142290700050114985179
    q = 109998464739103330461289147649384134274509
    
    n = 15275860861038824209873749378641369526079415895246568701858306343944764452502111
    e = 65537
    c = 7030597768026774310122104133160676217061526490101791811961111564793541177307659
    
    phi = (p-1)*(q-1)
    d = int(gmpy2.invert(e, phi))
    m = pow(c,d,n)
    print(long_to_bytes(m))
    

上一篇
資安補帖─Day28─Crypto
下一篇
資安補帖─Day30─不是最後一篇─論資安技能點
系列文
資訊安全大補帖53
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言