[若渴計畫2015.7.25] SMACK

Preview:

Citation preview

SMACK: State Machine AttaCKsAJ ( 張仁傑 )

<ajblane0612@gmail.com>2015.7.25若渴計畫

SMACK 作者提供的資訊• Slides from IEEE S&P 2015• Preprint of the paper• OpenSSL state monitor code verified with Frama-C• Proof of transcript injectivity verified in F*• Source code for the flexTLS tool

https://www.smacktls.com/

請自備 8G 記憶體以上的電腦 GG

Outline

• Public key system• Certificate authority (CA)• Diffie–Hellman key exchange• RSA key exchange• Transport Layer Security (TLS)• SMACK: State Machine AttaCKs

Public Key System

• P+ : public key, P- : private key

Sender• P+• P-

Receiver• P+ ( 經 Sender 傳輸 )

P+(P-(Sender’s message) ) = Sender’s message

P+(Receiver’s message)

P-(P+(Receiver’s message) ) = Receiver's message

P+, P-(Sender’s message)

Certificate Authority (CA)

Dick 以為中間人的 Public key 為Tom 的 public key ,所以有 CA是提供一個機制來驗證是不是Tom 的 public key 。

CA certificate public key( 提早就拿好的 )

signature 

sign Tom’s public key certificate(CA’s private key)

+

Net 2.0 – cryptographic - functionality is now complete , http://www.nxtgenug.net/Article.aspx?ArticleID=42

https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

Diffie–Hellman Key Exchange

可當作為要交換的key ,例如 : public key system 中, sender 把public key 傳給 receiver 就可以用這個方法傳遞。

RSA Key Exchange

https://technet.microsoft.com/en-us/library/cc962035.aspx

可來自CA

TLS(Transport Layer Security) 使用以上技巧,在閱讀TLS 時,太多 key 一時搞不清楚這些 key 是有哪些不同,拿來幹麻的 ! 有些文件沒提,必須自己想像,好痛苦阿

RSA Key Exchange

Diffie–Hellman Key Exchange

Certificate Authority (CA)

Public Key System

The TLS State Machine

Client/Server 雙方 say hello• 同步他們的狀態• 同意的 session ID• 同意的 ciphersuite• 各自交換的Random numbers(nonces)

The TLS State MachineServerCertificate• CA 概念,所以 client會有個 signature ,server 必須傳 publickey 來給 client 進行server 的認證。

用哪種 key exchange?ciphersuite 決定Server 可當 CA?可

The TLS State Machine

ServerKeyExchange為什麼使用 DH 會比RSA 多ServerKeyExchange?

你還記得它嗎 ?

那使用 RSA , server所用的 public key 不用交換嗎 ?client 可透過 CA 知道。

The TLS State MachineServerHelloDone• 經過 key exchangeclient 會有一把 key 來解signature 。解完signature , client 會有一把 public key ,之後用此 key 傳訊息給server 。之後其實沒有多久,就會在換一把 key 了。

• 當然此時,也會依據Negotiation Parameters ,是否要不要 clinet 認證。

ClientKeyExchange• 剛所提的之後來了,client 會依據 nonces來產生 clien/server之間傳遞訊息的 secreteKey 。

ClientCCS/ServerCCS• Change Cipher Spec(CCS).

靠通訊間所使用的 key又可以改,到底是要改幾次阿 ~“~ 。

上述的 TLS 是基本形式,根據 ciphersuite/ Negotiation Parameters ,你會沒有看過的加密使用方法,超複雜的 ! 而且 key 改那麼多次,到底是怎攻擊的阿 @@?

SMACK: State Machine AttaCKs

Threat ModelKey idea: 中間人想要竊取資訊,有沒有找到一個未預期 TLS state machine ,假裝 client/server ,並可以正常運作。

如何找出 TLS State Machine 未預期的行為• 在 TLS 每階段結束時, client/server 各自送出 illegal message ,並各自等待回• 回傳的訊息會有三種 : correct/ unsupported/ buggy• 在” Protocol state fuzzing of TLS implementations” ,他送的不只 illegal

message ,來找 TLS state machine 的非預期行為。

為了 automated testing發展了 FLEXTLS script (compiler) ~”~

驚人的事發生了

OpenSSL Client and Server State machine for HTTPS configurations. Unexpected transitions: client in red on the right, server in green on the left

你要知道,紅色綠色是 OpenSSL可能會執行的行為

Revealing Unexpected State Machine

• Server-Gated Crypto(SGC)• client 在 ServerHello 階段, 可以重新 handshake

• Early CCS• OpenSSL 允許未初始的 session key 做 session key 的計算• CVE-2014-0224

• DH Certificate (Client impersonation)• OpenSSL 允許 DH 的 public key 來計算 session 的 pre-master secrete ,所以可 skip ClientCertificateVerify• 此流程可以新增假 client 來攻擊, 因為你沒做 client 驗證。

Revealing Unexpected State Machine• Export RSA (skip ServerKeyExchange)

• RSA exchange 是 weak 的• 在 server 送簽證時,要交換 key , 硬是只能用 RSA (downgrade attack)

• Static DH • 假設使用 DH 且要執行 ServerKeyExchnage ,

但是 client 沒有接收到 ServerKeyExchnage ,驗證所需 public key 將會rollback 到 public key of server’s certificate 。 rollback 涵義是 DH 交換的public key 機制比較強。

• RSA 也會有這狀況,從 RSA->RSA_EXPORT ,只是 RSA_EXPORT 的 public key 需要 ServerKeyExchange 來交換,原本的 RSA public key 是 client 事先拿好的。 (FREAK: Downgrade to RSA_EXPORT/ Inject ServerkeyExchange)

Export RSAStatic DH

有了這些 Unexpected 的狀況 ( 其實還不只 ) ,如何來攻擊 ?例子 : FREAK ,其實還很多可參考 ” A Messy State of the Union: Taming the Composite State Machines of TSL“

FREAK: Downgrade to RSA_EXPORT

心得• TLS 他運作超複雜感覺非常強,為什麼可以找出非預期狀況執行,

因為本身考慮到”方便性”,因為有了”方便”,就會是漏洞的開始。

Recommended