Upgrade to Pro — share decks privately, control downloads, hide ads and more …

密碼學漏洞與他們的產地

 密碼學漏洞與他們的產地

整理常見的密碼學漏洞與問題以及一些使用密碼學時的建議。主要內容分成非對稱式加密,對稱式加密,Hash以及其他雜項,個別討論這些問題怎麼樣會出現,以及怎麼樣解決。

於TDoHConf 2017演講

Chen John L

October 14, 2017
Tweet

More Decks by Chen John L

Other Decks in Programming

Transcript

  1. Who am I - Zuan - chroot讀書會成員 - 什麼都略懂一點,但什麼都不精通 -

    愛玩資訊跟電子領域的各種事務 - 興趣是騎腳踏車跟買學生證
  2. ...

  3. ...

  4. Encrypt(‘A’) = YCD6WGtUMNDedQ2HjC5KzSVT Encrypt(‘B’) = REfHH3SCzed6jkRhP6JZwytH Encrypt(‘C’) = aSWP4Z6cX2VYWMxwA9bGMKRA Encrypt(‘D’)

    = sRuHR8t8Vmy3th8Gf2RAVfkz Encrypt(‘E’) = F4ahebRHXUyzzeNgcBzN4r26 Encrypt(t) = aSWP4Z6cX2VYWMxwA9bGMKRA t = ?
  5. ...

  6. def modexp( base, exp, mod ): out = base if

    (exp[0] == 1) else 1 for i in range(1,len(exp)): out = (out * out) % mod; if exp[i] == 1: out = (out * base) % mod return out
  7. def modexp( base, exp, mod ): out = base if

    (exp[0] == 1) else 1 for i in range(1,len(exp)): out = (out * out) % mod; if exp[i] == 1: out = (out * base) % mod return out
  8. bit 0 1 2 3 4 ... 0 1 1

    1 1 1 ... 1 M^1 M^2 M^4 M^8 M^16 ...
  9. if not VerifyPadding( … ): // ERROR return if not

    VerifyHMAC( … ): // ERROR return
  10. a) 明碼 b) md5 c) sha1 d) sha256/sha512 e) md5+salt

    f) sha1+salt g) sha256/sha512+salt
  11. 小抄/懶人包 1. 非對稱加密相關問題與建議 1a. 非對稱式加密應該搭配對稱式加密使用。 1b. RSA不能直接用,需要搭配專門的 Padding Scheme。 1c.

    RSA存在Weak Key。(Pollard p-1 Factorization, Shared Factor, Weiner)。 1d. 可以考慮ECC系列演算法,因為安全性下,需要較少運算。 1e. RSA跟ECC都存在Timing/Power Side Channel,如果要避免, 可以考慮Ed25519。 1f. ECDSA每次簽章的k必須隨機不重複。(PS3因此被破解) 1g. 簽章驗證應該依照標準檢測所有參數。 (ie. CVE-2016-1494) 2. 對稱演算法相關問題與建議 2a. Stream Cipher必須有Nounce,且必須每次不一樣。 2b. 部份Blocker Cipher有Weak Key。(例如Blowfish)。 2c. Block Cipher應注意Cipher Mode,不該單純用ECB。 2d. Block Cipher的Padding Oracle問題。 2e. Block Cipher Mode建議使用GCM模式,因為性能較優異且帶有驗證功能。 3. Hash相關問題與建議 3a. md5/sha1應淘汰。 3b. 密碼不應該用單純Hash存,應該使用PBKDF或scrypt。 3c. 注意Length Extension Attack,因此HMAC請照標準HMAC格式走。 4. 其他 4a. 亂數應該使用標準的亂數演算法 (NIST系列,DUAL_EC_DRBG除外)。 4b. 亂數應確保有足夠的Entropy。 4c. 封包的大小與Timing有Side Channel。 4d. 承4c,該漏洞可利用於破解通話加密,以及分析 TLS裡面瀏覽的網站內容。 4e. TLS有SNI會洩漏你瀏覽哪個網站。 4f. 除非必要,建議使用現成,常用的套件或協定 (ie. OpenSSL+TLS) 4g. 注意殘留,硬碟/記憶體需要Shred,如果使用現成套件,用完要釋放。