SlideShare a Scribd company logo
密碼學漏洞與他們的產地
zuan@chroot.org
Who am I
- Zuan
- chroot 讀書會成員
- 什麼都略懂一點,但什麼都不精通
- 愛玩資訊跟電子領域的各種事務
- 興趣是騎腳踏車跟買學生證
Content
- 非對稱式演算法
- 對稱式演算法
- 雜湊
- 其他
這邊有人沒有聽過 RSA 的嗎 ?
請舉個手
c ≡ ne
(mod (N))
n ≡ cd
(mod (N))
ed ≡ 1 (mod φ(N))
c -> 密文
n -> 明文
(e,N) -> 公鑰
(d,N) -> 私鑰
一般為了加速計算, e 會取很小
(e=65537 or e=17 or e=3)
如果 ne
< N 且 e = 3
那不是開方根就能解密了?
...
OK ,那如果效能不是問題,我 e 選大一
點總可以吧?
如果要加密 0 或 1
0^e = 0
1^e = 1
...
Encrypt(‘A’) = YCD6WGtUMNDedQ2HjC5KzSVT
Encrypt(‘B’) = REfHH3SCzed6jkRhP6JZwytH
Encrypt(‘C’) = aSWP4Z6cX2VYWMxwA9bGMKRA
Encrypt(‘D’) = sRuHR8t8Vmy3th8Gf2RAVfkz
Encrypt(‘E’) = F4ahebRHXUyzzeNgcBzN4r26
Encrypt(t) = aSWP4Z6cX2VYWMxwA9bGMKRA
t = ?
就說該都猜 C
一個加密演算法不該有那麼多毛
以上這些弱點都可以透過 Padding 來解決
加解密: PKCS #1 v1.5, OAEP
簽章: PKCS #1 v1.5, PSS
Plaintext n
Padded Plaintext n
Ciphertext n
OAEP
RSA
如果自己實作 Signature Padding
應依照標準驗證簽章
Python RSA 出過類似包
CVE-2016-1494
[ 問掛 ] 有沒有 RSA 很慢的八卦?
密碼學漏洞與他們的產地   Crypto fail and where to find them
2048 bit/op * 768.3 op/s ≈ 200 kB/s
2048 bit/op * 26270.6 op/s ≈ 6.7 MB/s
撥接喔?!╯ -____-) ~═╩════╩═╯
密碼學漏洞與他們的產地   Crypto fail and where to find them
密碼學漏洞與他們的產地   Crypto fail and where to find them
加解密 (AES): 75~90 MB/s
簽章 (SHA2): 30~300 MB/s
RSA iPad AES/SHA!
RSA Weak Key
RSA 的 Key 不是找兩個大質數就夠了
CVE-2008-0166
亂數產生器不夠亂,某些質數出現機率高
=> 直接猜那些質數可破密
=> 拿一堆 N 來 GCD 也可以破一發
( shared factor)
N1 = p1*q1
N2 = p2*q2
若 p1 = p2, p1 = GCD(N1,N2)
Weiner’s Attack
不常見,記得 d > ⅓ N¼
就好
Pollard p-1 Factorization
也不常見,建議 (p-1)/2 也要是質數
TL;DR 懶人包 : 生 Key? OpenSSL
[ 問掛 ] 有沒有 RSA 很慢的八卦?
...
你有聽過橢圓曲線嗎?
對稱 RSA ECC
80 1024 160
112 2048 224
128 3072 256
192 7680 384
密碼學漏洞與他們的產地   Crypto fail and where to find them
總時間上,橢圓曲線遠比同級的 RSA 快
ECDSA 256 bit Public Key:
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyN
TYAAABBBCv5hlgEJBGfQfF/4RdBDMv0hiaeNbwqwkyW4n
tYsUUroqqFQMROgYSdHr2bqmX0BCX87l95Hynh2nUPxbO
vWtg=
RSA 2048 bit Public Key:
AAAAB3NzaC1yc2EAAAADAQABAAABAQD4XK2ooKXQZFIrz
Tlu6sIVOTdnLDcKc1Qn/WvrGCBFRx5jTfKlJflCVb0Bdh
PayaYwibMzu87rn6IzfKdc3yEivcRIKJ0Vv/z86jjbK1V
7zlTXyhvp0I2IUgL46HTFQVykn88dcj0CX0vuuITfr+sH
jSLG8icBrZHOoiAXYI8xdbZFZ5BZFp5IbeD5QZ2BNotK1
SkMAt1ls2AZD48toBoX0lMiWf7pufdviQw8GIkQo7Jm52
QDFPj2QPUocVLeqCvzreWgu0SSfaIEDUMScM9alS/OBaj
rorQI9/eT85H57sv3che8ascbwN48EpQngBwwzylUl0Wm
sjYneybGW8xT
Key 小就是爽啦
下次也考慮下 ECC 系列吧
但如果 Public 端為嵌入式,則可考慮
RSA
如果用 ECDSA 一定要記得
不要 Sony
密碼學漏洞與他們的產地   Crypto fail and where to find them
Sony 進行 PS3 的 ECDSA 簽章時每次 k 都
一樣
兩次 k 一樣的簽章 = 洩漏私鑰
RSA 有 Side Channel 問題
想想 Modular Exponentiation
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
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
量測 CPU Cache Hit/ 執行時間 / 使用功
率可以看出這步有沒有執行
執行在同一顆 CPU 的其他程式或是對
CPU 有實體權限的攻擊者有機會破密
RSA 要避免類似 Side channel 較麻煩
ECC 也有類似問題 (Double or add)
進幾年 HITCON 有示範過
bit 0 1 2 3 4 ...
0 1 1 1 1 1 ...
1 M^1 M^2 M^4 M^8 M^16 ...
如果有這考量,可以用現成的 Library ,
或是用 Ed25519
玩夠非對稱式的,來聊聊對稱式的吧
用過 Stream Cipher 吧?
RC4, OFB/CTR Mode 的 Block Cipher,
Salsa20, ChaCha20
Stream Cipher 的 IV/Nounce 每次加密一
定要不一樣,否則加密多少,就能解密多
少
Win32/Dircrypt.A
如果有使用某些舊的 Block Cipher,
需要注意 Weak Key
尤其是 Blowfish
AES 沒這煩惱,把把都是好 Key
Block Cipher 跟 RSA 一樣不能單用
要搭配 Cipher Mode of Operation
看維基百科秒懂
密碼學漏洞與他們的產地   Crypto fail and where to find them
那不然要用什麼?
大多人會推薦 CBC
Source: Wikipedia
但是 CBC 有 Padding Oracle 問題
解密時如果 Padding 不對,不能讓對方知
道
if not VerifyPadding( … ):
// ERROR
return
if not VerifyHMAC( … ):
// ERROR
return
除了 CBC 以外,還有什麼可以用?
看看 Google 用什麼吧
密碼學漏洞與他們的產地   Crypto fail and where to find them
密碼學漏洞與他們的產地   Crypto fail and where to find them
[ 問掛 ] 有沒有 GCM 的八卦
GCM 其實很好用
內帶驗證,且效能高
考慮拿 GCM 取代 CBC+HMAC
Hash
還在用 md5 的舉手
md5 跟 sha1 都已經過時
讓他們安息吧
大家密碼都怎麼存?
a)明碼
md5
sha1
sha256/sha512
md5+salt
sha1+salt
sha256/sha512+salt
salt 可以避免 Rainbow Table
不要再猜了,答案是以上階非
Source:
https://gist.github.com/epixoip/973da7352f4cc005746c627527e4d073
hash 的設計都是在安全的狀況下盡量快
所以要用另一類專門的函數 -- KDF
Key Derivation Function
設計就是要慢
Source:
https://gist.github.com/epixoip/973da7352f4cc005746c627527e4d073
考慮使用 PBKDF2, scrypt, bcrypt
內建 Salt, 可調運算強度
純 Hash 不應該拿來做驗證
不少 Hash 有 Length Extension 的
bug feature
給 H(A), 不知道 A, 可以求 H(A+B)
H(secret || msg) 不安全
如果有驗證需求,請用 HMAC
HMAC = H( K1 || H(K2 || M) )
其他
亂數 ?
rand()
當然不是
如果需要少量的亂數 ( 生 Key)
就跟系統拿 Entropy
*nix: /dev/random
Win: RtlGenRandom()
/dev/random 是稀有資源
urandom 沒有快到哪裡去
需要大量亂數 ? 用 entropy 去 seed
PRNG
Hash_DBRG, CTR_DBRG
不要 Dual_EC_DBRG
封包大小有 Side Channel 問題
透過 ssh tunnel 上網
Google 台科大官網
不難看出誰是誰
GFW 就是這樣抓 VPN 的
若要避免,可以用 obfs4/ScrambleSuit
語音也有一樣問題
密碼學漏洞與他們的產地   Crypto fail and where to find them
HTTPS 很好用
但是它其實會洩漏 Server 的 Domain
密碼學漏洞與他們的產地   Crypto fail and where to find them
最後,東西用完記得收
密碼學漏洞與他們的產地   Crypto fail and where to find them
有些勒索軟體可以用刪除復原 / 硬碟救援
工具還原
因為他們檔案用完沒有 Shred
*nix: shred
win: sdelete
記憶體也可能殘留,用完記得複寫再釋放
結論
能用現成整套的,就用
HTTPS/TLS, SSH, GnuPG
如果需要單獨使用密碼學的元素
請用現成 Library
Crypto++, CryptoJS, libsodium… etc
END
謝謝大家
小抄 / 懶人包
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 ,如果使用現成套件,用完要釋放。

More Related Content

PDF
HITCON GIRLS 成大講座 密碼學(阿毛)
PDF
HITCON GIRLS_惡意程式分析介紹_in 成功大學_by Turkey_2016.04.28
PPT
アルゴリズムイントロダクション15章 動的計画法
PPTX
с++ хэл
PDF
Lec3 c++operator
DOC
2 факториал
DOCX
VPN сүлжээ түүний аюулгүй байдал
PDF
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 4
HITCON GIRLS 成大講座 密碼學(阿毛)
HITCON GIRLS_惡意程式分析介紹_in 成功大學_by Turkey_2016.04.28
アルゴリズムイントロダクション15章 動的計画法
с++ хэл
Lec3 c++operator
2 факториал
VPN сүлжээ түүний аюулгүй байдал
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 4

What's hot (20)

DOCX
файлын систем бүгд
PDF
Η Γλώσσα C - Μάθημα 3
PDF
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
PPTX
Do..while presentation
PDF
ΠΛΗ31 ΤΕΣΤ 31
PDF
ΠΛΗ30 ΜΑΘΗΜΑ 1.6
PDF
ΠΛΗ31 ΤΕΣΤ 29
PDF
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
PDF
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
PPTX
PDF
утасгүй сүлжээ
DOC
U.cs101 лаборатори 5
PDF
Άλγεβρα - Β' Λυκείου - Μάθημα 28ο
PPTX
Лекц №13
PPTX
Nealkohola taukainā aknu slimība. Jekaterīna Kucina
PDF
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
PDF
утасгүй сүлжээний аюулгүй байдлын тухай.
PDF
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 6
PDF
Η Γλώσσα C - Μάθημα 1
PDF
ΠΛΗ20 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 6
файлын систем бүгд
Η Γλώσσα C - Μάθημα 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
Do..while presentation
ΠΛΗ31 ΤΕΣΤ 31
ΠΛΗ30 ΜΑΘΗΜΑ 1.6
ΠΛΗ31 ΤΕΣΤ 29
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
утасгүй сүлжээ
U.cs101 лаборатори 5
Άλγεβρα - Β' Λυκείου - Μάθημα 28ο
Лекц №13
Nealkohola taukainā aknu slimība. Jekaterīna Kucina
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
утасгүй сүлжээний аюулгүй байдлын тухай.
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 6
Η Γλώσσα C - Μάθημα 1
ΠΛΗ20 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 6
Ad

Similar to 密碼學漏洞與他們的產地 Crypto fail and where to find them (17)

PDF
應用密碼學入門 - HITCON CMT 2018
PDF
[Crypto Course] RSA
PPTX
🔐 密碼學入門|從理論到實作,掌握資訊安全核心技術!introduction to cryptology.pptx
PDF
非對稱加密-以橢圓曲線密碼學ECC為例
PPTX
RSA and Elliptic Curve Cryptography
PDF
20181120 NISRA - 密碼學沒有入門
PPTX
introduce RSA
PDF
[Crypto Course] Block Cipher Mode
PPTX
流行应用的加密算法实现缺陷与利用
PDF
[Crypto Course] Hash
PPTX
Io t security-ameba-ppt
PDF
[Crypto Course] Bleichenbacher RSA Signature Forgery
PPT
Internet Security
PPT
網路安全
PPT
網路安全
PPT
電腦網路 網路安全
PDF
HITCON CTF 2014 BambooFox 解題心得分享
應用密碼學入門 - HITCON CMT 2018
[Crypto Course] RSA
🔐 密碼學入門|從理論到實作,掌握資訊安全核心技術!introduction to cryptology.pptx
非對稱加密-以橢圓曲線密碼學ECC為例
RSA and Elliptic Curve Cryptography
20181120 NISRA - 密碼學沒有入門
introduce RSA
[Crypto Course] Block Cipher Mode
流行应用的加密算法实现缺陷与利用
[Crypto Course] Hash
Io t security-ameba-ppt
[Crypto Course] Bleichenbacher RSA Signature Forgery
Internet Security
網路安全
網路安全
電腦網路 網路安全
HITCON CTF 2014 BambooFox 解題心得分享
Ad

密碼學漏洞與他們的產地 Crypto fail and where to find them