Raccoon Attack: Finding and Exploiting Most-Significant-Bit

Raccoon Attack: Finding and Exploiting Most-Significant-Bit

<p>Raccoon Attack: Finding and Exploiting <br>Most-Significant-Bit-Oracles in TLS-DH(E) </p><p>Robert Merget,<sup style="top: -0.3125em;">1 </sup>Marcus Brinkmann,<sup style="top: -0.3125em;">1 </sup>Nimrod Aviram,<sup style="top: -0.3125em;">2 </sup>Juraj Somorovsky,<sup style="top: -0.3125em;">3 </sup>Johannes Mittmann,<sup style="top: -0.3125em;">4 </sup>Jörg Schwenk<sup style="top: -0.3125em;">1 </sup></p><p><strong>Real World Crypto 2021 </strong></p><p><sup style="top: -0.3125em;">1 </sup>Ruhr University Bochum <sup style="top: -0.3125em;">2 </sup>Department of Electrical Engineering, Tel Aviv University <sup style="top: -0.3125em;">3 </sup>Paderborn University <sup style="top: -0.3125em;">4 </sup>Bundesamt für Sicherheit in der Informationstechnik (BSI), Germany </p><p>Transport Layer Security </p><p><strong>ClientHello </strong><br><strong>ServerHello, Certificate, ServerKeyExchange, ServerHelloDone </strong><br><strong>ClientKeyExchange, ChangeCipherSpec, Finished </strong></p><p><strong>ChangeCipherSpec, Finished </strong></p><p>TLS-DH(E) </p><p><em>n</em><sub style="top: 0.4375em;"><em>C </em></sub><em>n</em><sub style="top: 0.4375em;"><em>S </em></sub></p><p><em>g, p, g</em><sup style="top: -0.4375em;"><em>b </em></sup><em>mod p, signature g</em><sup style="top: -0.4375em;"><em>a </em></sup><em>mod p </em></p><p>b ∊ ℤ<sub style="top: 0.4375em;"><em>p </em></sub>a ∊ ℤ<sub style="top: 0.4375em;"><em>p </em></sub></p><p>g<sup style="top: -0.4375em;"><em>ab </em></sup><em>mod p </em><br><em>PRF(g</em><sup style="top: -0.4375em;"><em>ab</em></sup><em>, n</em><sub style="top: 0.4375em;"><em>c</em></sub><em>, n</em><sub style="top: 0.4375em;"><em>S</em></sub><em>, “master secret”) = </em>master_secret </p><p>TLS-DH(E) </p><p><em>n</em><sub style="top: 0.4375em;"><em>C </em></sub><em>n</em><sub style="top: 0.4375em;"><em>S </em></sub></p><p><em>g, p, g</em><sup style="top: -0.4375em;"><em>b </em></sup><em>mod p, signature </em></p><p>b ∊ ℤ<sub style="top: 0.4375em;"><em>p </em></sub></p><p><sup style="top: -0.7455em;">RFC 5246: The Transpor</sup>a<sup style="top: -0.7455em;">t L</sup>∊<sup style="top: -0.7455em;">ay</sup>ℤ<sup style="top: -0.7455em;">er</sup><sub style="top: 0.4375em;"><em>p </em></sub><sup style="top: -0.7455em;">Security (TLS) Protocol Version 1.2 </sup></p><p>8.1. Computing&nbsp;the Master Secret </p><p><em>g</em><sup style="top: -0.4375em;"><em>a </em></sup><em>mod p </em></p><p>master_secret = PRF(pre_master_secret, "master secret", <br>ClientHello.random + ServerHello.random) [0..47]; </p><p><em>ab </em></p><p>g <em>mo d p </em></p><p><strong>Some servers reuse ephemeral keys </strong></p><p>8.1.2. Diffie-Hellman </p><p><em>ab </em></p><p>A conventional Diffie-Hellman computation is performed.&nbsp;The </p><p><sub style="top: 0.5968em;">negotiated key (Z) is used as the </sub><em>P</em><sub style="top: 0.5968em;">pr</sub><em>R</em><sub style="top: 0.5968em;">e_</sub><em>F</em><sub style="top: 0.5968em;">ma</sub><em>(</em><sub style="top: 0.5968em;">s</sub><em>g</em><sub style="top: 0.5968em;">ter_</sub><em>,</em><sub style="top: 0.5968em;">s</sub><em>n</em><sub style="top: 0.5968em;">ec</sub><sub style="top: 0.4375em;"><em>c</em></sub><sub style="top: 0.5968em;">r</sub><em>,</em><sub style="top: 0.5968em;">et</sub><em>n</em><sub style="top: 0.5968em;">,</sub><sub style="top: 0.4375em;"><em>S</em></sub><em>,</em><sub style="top: 0.5968em;">an</sub><em>“</em><sub style="top: 0.5968em;">d</sub><em>m</em><sub style="top: 0.5968em;">i</sub><em>a</em><sub style="top: 0.5968em;">s </sub><em>ster se cret ”) = </em>master_secret </p><p>converted into the master_secret, as specified above.&nbsp;Leading bytes of Z that contain all zero bits are stripped before it is used as the pre_master_secret. </p><p>Key derivation and Constant Time Execution </p><p>TLS key derivation is based on hash functions Hash functions operate in O(n) not O(1) This creates various side-channels: <br>- Compression&nbsp;function invocation - Hash&nbsp;function invocation - Key&nbsp;padding - Direct&nbsp;side-channel </p><p><strong>Example: SHA-256 in OpenSSL </strong></p><p>From Side-channel to Exploit </p><p>CKE(g<sup style="top: -0.7813em;"><em>a</em></sup><em>), CCS, FIN</em><sub style="top: 0.7813em;"><em>Inv </em></sub></p><p>ALERT </p><p>MSB<sub style="top: 0.7813em;">k</sub>(g<sup style="top: -0.7813em;"><em>ab</em></sup>) = 0? </p><p>Attack Overview </p><p>g<sup style="top: -0.75em;"><em>b </em></sup>g<sup style="top: -0.75em;"><em>a </em></sup>g<sup style="top: -0.75em;"><em>a </em></sup>· g<sup style="top: -0.75em;"><em>r </em></sup></p><p>PMS =(g<sup style="top: -0.4063em;">a</sup>·g<sup style="top: -0.4063em;">r</sup>)<sup style="top: -0.4063em;">b </sup></p><p>=g<sup style="top: -0.5625em;">ab</sup>·g<sup style="top: -0.5625em;">rb </sup></p><p>Retrieving the PMS </p><p>g<sup style="top: -0.375em;"><em>a </em></sup>· g<sup style="top: -0.375em;"><em>r </em></sup>MSB<sub style="top: 0.375em;">k</sub>(g<sup style="top: -0.375em;"><em>ab </em></sup>· g<sup style="top: -0.375em;"><em>rb</em></sup>) = 0 </p><p>Constructing Instance of Hidden Number Problem: </p><p>⍺ = <em>g</em><sup style="top: -0.4375em;"><em>ab</em></sup>, <em>t</em><sub style="top: 0.4375em;"><em>i </em></sub>= <em>g</em><sup style="top: -0.4375em;"><em>rᵢꢀb</em></sup><em>, </em>0 &lt; <em>y</em><sub style="top: 0.4375em;"><em>i </em></sub>&lt; 2<sup style="top: -0.4375em;"><em>n-k </em></sup></p><p>g<sup style="top: -0.375em;"><em>a </em></sup>· g<sup style="top: -0.375em;"><em>r’ </em></sup>MSB<sub style="top: 0.375em;">k</sub>(g<sup style="top: -0.375em;"><em>ab </em></sup>· g<sup style="top: -0.375em;"><em>r’b</em></sup>) ≠ 0 </p><p>⍺ · <em>t</em><sub style="top: 0.4375em;"><em>1 </em></sub>= <em>y</em><sub style="top: 0.4375em;"><em>1 </em></sub>(mod <em>p</em>), ⍺ · <em>t</em><sub style="top: 0.4375em;"><em>2 </em></sub>= <em>y</em><sub style="top: 0.4375em;"><em>2 </em></sub>(mod <em>p</em>), ⍺ · <em>t</em><sub style="top: 0.4375em;"><em>3 </em></sub>= <em>y</em><sub style="top: 0.4375em;"><em>3 </em></sub>(mod <em>p</em>), … </p><p>HNP Solver </p><p><strong>⍺ </strong>= <em>g</em><sup style="top: -0.4375em;"><em>ab </em></sup></p><p>g<sup style="top: -0.375em;"><em>a </em></sup>· g<sup style="top: -0.375em;"><em>r’’ </em></sup>MSB<sub style="top: 0.375em;">k</sub>(g<sup style="top: -0.375em;"><em>ab </em></sup>· g<sup style="top: -0.375em;"><em>r’’b</em></sup>) ≠ 0 </p><p>g<sup style="top: -0.375em;"><em>a </em></sup>· g<sup style="top: -0.375em;"><em>r’’’ </em></sup>MSB<sub style="top: 0.375em;">k</sub>(g<sup style="top: -0.375em;"><em>ab </em></sup>· g<sup style="top: -0.375em;"><em>r’’’b</em></sup>) = 0 </p><p><strong>... </strong></p><p>Performance </p><p></p><ul style="display: flex;"><li style="flex:1">DH Group </li><li style="flex:1">Bit length </li><li style="flex:1">k=24 </li><li style="flex:1">k=20 </li><li style="flex:1">k=16 </li><li style="flex:1">k=12 </li><li style="flex:1">k=8 </li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1"><strong>RFC 5114 </strong></li><li style="flex:1"><strong>1024 </strong></li></ul><p></p><p>d=50 T=6s d=60 T=10s d=80 T=26s d=100 T=111s d=200 T=9295s </p><p><strong>LibTomCrypt 1036 </strong></p><p>d=50 T=6s d=60 T=10s d=80 T=28s d=100 T=52s d=180 T=5613s </p><p></p><ul style="display: flex;"><li style="flex:1"><strong>SKIP </strong></li><li style="flex:1"><strong>2048 </strong></li></ul><p></p><p></p><ul style="display: flex;"><li style="flex:1">d=100 </li><li style="flex:1">d=120 </li><li style="flex:1">d=160 </li></ul><p></p><ul style="display: flex;"><li style="flex:1">T=112s </li><li style="flex:1">T=207s </li><li style="flex:1">T=977s </li><li style="flex:1">Unsolved </li><li style="flex:1">Unsolved </li></ul><p></p><p>d = Number of equations required T = Time required to solve HNP k = Leading Zero bits leaked </p><p>Impact </p><p><strong>Scan of Alexa Top 100k: </strong></p><p>● 32%&nbsp;of the scanned servers supported DHE cipher suites ● 10.9%&nbsp;of those servers reused their ephemeral keys </p><p>Firefox was the last to drop support in September 2020 No major browser supports DHE anymore </p><p>Countermeasure </p><p><strong>Generally: </strong></p><p>● Do&nbsp;not leak partial information about secret values ● Make&nbsp;secrets constant size </p><p><strong>For TLS: </strong></p><p>● Clients&nbsp;should avoid DH(E) ● Servers&nbsp;should not reuse ephemeral keys ● Servers&nbsp;and clients should not use DH </p><p>Raccoon and ECDH(E) </p><p>TLS does not strip leading zero bytes of shared ECDH secrets Requires implementation specific side-channels Further research required, currently not exploitable </p><p>Raccoon and TLS 1.3 </p><p>TLS 1.3 does not strip leading zero bytes of shared secrets Foresight by David Benjamin in Draft-13 proved useful Ephemeral key reuse is uncommon </p><p>Conclusion </p><p>● No&nbsp;need to panic, exploitation is difficult ● The&nbsp;Raccoon attack is not TLS specific ● First&nbsp;time HNP is used to attack DH </p><p><strong>More info: </strong><a href="/goto?url=https://raccoon-attack.com" target="_blank"><strong>https://raccoon-attack.com </strong></a></p><p><strong>Tool to scan your servers: </strong></p><p><a href="/goto?url=https://github.com/tls-attacker/TLS-Scanner" target="_blank">https://github.com/tls-attacker/TLS-Scanne</a><a href="/goto?url=https://github.com/tls-attacker/TLS-Scanner" target="_blank"><strong>r </strong></a></p><p>@ic0nz1 </p><p><a href="mailto:[email protected]" target="_blank">[email protected] </a></p>

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    14 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us