Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

[若渴計畫2015.8.18] SMACK

891 views

Published on

對於SMACK好奇,於是開始閱讀研究與整理。

Published in: Technology
  • Be the first to comment

[若渴計畫2015.8.18] SMACK

  1. 1. SMACK: State Machine AttaCKs AJ (張仁傑) <ajblane0612@gmail.com> 2015.8.18 若渴計畫
  2. 2. 因為沒實際看過code,跑過TLS流程,所以很多 內容都是看paper文字推敲,歡迎指教討論。
  3. 3. 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
  4. 4. Outline • Public key system • Certificate authority (CA) • Diffie–Hellman key exchange • RSA key exchange • Transport Layer Security (TLS) • SMACK: State Machine AttaCKs
  5. 5. 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)
  6. 6. 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
  7. 7. https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange Diffie–Hellman Key Exchange 可當作為要交換的key, 例如: public key system中, sender把public key傳給 receiver就可以用這個方 法傳遞。
  8. 8. RSA Key Exchange https://technet.microsoft.com/en-us/library/cc962035.aspx 可來自CA
  9. 9. TLS(Transport Layer Security)使用以上技巧, 在閱讀TLS時,太多key一時搞不清楚這些 key是有哪些不同,拿來幹麻的!有些文件 沒提,必須自己想像,好痛苦阿 RSA Key Exchange Diffie–Hellman Key Exchange Certificate Authority (CA) Public Key System
  10. 10. The TLS State Machine Client/Server雙方say hello • 同步他們的狀態 • 同意的session ID • 同意的ciphersuite • 各自交換的 Random numbers (nonces) • …
  11. 11. The TLS State Machine ServerCertificate • CA概念,所以client 會有個signature, server必須傳public key來給client進行 server的認證。 用哪種key exchange? ciphersuite決定 Server可當CA? 可 (這就有問題了)
  12. 12. Client擁有server signature是怎來的@@? • First, the client sends a client hello message with a maximum protocol version pvmax, a random nonce cr, and a set of proposed ciphersuites and extensions. The server chooses a version pv, a ciphersuite, and a subset of these extensions, and responds with its own nonce sr and session identifier sid . The server then sends its X.509 certificate chain certS and public key pkS. • 這..於是這篇paper開始用MAN-IN-THE-MIDDLE攻擊,下次會介紹。 “Triple Handshakes and Cookie Cutters: Breaking and Fixing Authentication over TLS”
  13. 13. The TLS State Machine ServerKeyExchange • 使用public key system 需交換public key透過 DHE 那使用RSA,如何進行 server認證? 概念是cleint/server都 用一把相同的private key來解,假設中間人 沒有此private key。
  14. 14. The TLS State Machine ServerHelloDone • 經過server key exchange, client會有一把CA’s public key來解signature。 解完signature,client會 有一把public key, 之後用此key傳訊息給 server。之後其實沒有 多久,就會在換一把 key了。 • 當然此時,也會依據 negotiation parameters , 是否要不要client認證。
  15. 15. ClientKeyExchange • 剛所提的之後來了, client會依據nonces 來產生client/server 之間傳遞訊息的secrete Key。 • RSA的key exchange
  16. 16. ClientCCS/ServerCCS • Change Cipher Spec(CCS). 通訊間所使用的key又可 以改,到底是要改幾次 阿~“~。
  17. 17. 上述的TLS是基本形式,根據ciphersuite/ negotiation parameters ,你會沒有看過的加密 使用方法,超複雜的! 而且key改那麼多次,到 底是怎攻擊的阿@@? SMACK: State Machine AttaCKs
  18. 18. Threat Model Key idea: 中間人想要竊取資訊,有沒有找到一個 未預期TLS state machine,假裝client/server,並可 以正常運作。
  19. 19. 如何找出TLS State Machine未預期的行為 • 在TLS每階段結束時,client/server各自送出illegal message,並各自等待回 • 回傳的訊息會有三種: correct/ unsupported/ buggy (期待client/server會有怎樣 的illegal message處理) • 在”Protocol state fuzzing of TLS implementations”,他送的不只illegal message, 來找TLS state machine的非預期行為。 為了automated testing發 展了FLEXTLS script (compiler) ~”~
  20. 20. 驚人的事發生了 OpenSSL Client and Server State machine for HTTPS configurations. Unexpected transitions: client in red on the right, server in green on the left 你要知道,紅色綠色是OpenSSL可 能會執行的行為
  21. 21. 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驗證。
  22. 22. 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,多一個ServerKeyExchange (FREAK: Downgrade to RSA_EXPORT/ Inject ServerkeyExchange) Export RSA Static DH
  23. 23. 有了這些Unexpected的狀況(其實還不只),如 何來攻擊? 例子: FREAK,其實還很多可參考 ”A Messy State of the Union: Taming the Composite State Machines of TSL“
  24. 24. FREAK: Downgrade to RSA_EXPORT
  25. 25. 心得 • TLS他運作超複雜感覺非常強,為什麼可以找出非預期狀況執行, 因為本身考慮到”方便性”,因為有了”方便”,就會是漏洞的開始。

×