<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pdf2xml SYSTEM "pdf2xml.dtd">

<pdf2xml producer="poppler" version="24.02.0">
 link to page 12  link to page 12  link to page 13 <page number="1" position="absolute" top="0" left="0" height="1188" width="918">
	<fontspec id="0" size="27" family="PKRYBV+NimbusSanL" color="#000000"/>
	<fontspec id="1" size="18" family="DOEKLG+NimbusSanL-Regu" color="#000000"/>
	<fontspec id="2" size="9" family="HEONCW+LMMathSymbols6" color="#000000"/>
	<fontspec id="3" size="15" family="DOEKLG+NimbusSanL-Regu" color="#000000"/>
	<fontspec id="4" size="18" family="IVCKUG+NimbusRomNo9L-Medi" color="#000000"/>
	<fontspec id="5" size="13" family="UQBXFR+LMRoman9" color="#000000"/>
	<fontspec id="6" size="10" family="CJYOKF+NimbusRomNo9L-Regu" color="#000000"/>
	<fontspec id="7" size="10" family="PGKVNJ+NimbusRomNo9L-ReguItal" color="#000000"/>
	<fontspec id="8" size="13" family="NYBUOU+LMMathItalic9" color="#000000"/>
	<fontspec id="9" size="9" family="GXWQDH+LMMathItalic6" color="#000000"/>
	<fontspec id="10" size="13" family="APLFGU+LMRomanSlant9" color="#000000"/>
<text top="109" left="281" width="353" height="25" font="0"><b>Imperfect Forward Secrecy:</b></text>
<text top="138" left="229" width="456" height="25" font="0"><b>How Diffie-Hellman Fails in Practice</b></text>
<text top="184" left="98" width="103" height="17" font="1">David Adrian</text>
<text top="185" left="201" width="7" height="8" font="2">¶</text>
<text top="184" left="219" width="185" height="17" font="1">Karthikeyan Bhargavan</text>
<text top="185" left="404" width="6" height="8" font="2">∗</text>
<text top="184" left="422" width="128" height="17" font="1">Zakir Durumeric</text>
<text top="185" left="550" width="7" height="8" font="2">¶</text>
<text top="184" left="568" width="124" height="17" font="1">Pierrick Gaudry</text>
<text top="185" left="692" width="5" height="8" font="2">†</text>
<text top="184" left="710" width="122" height="17" font="1">Matthew Green</text>
<text top="185" left="832" width="5" height="8" font="2">§</text>
<text top="203" left="111" width="146" height="17" font="1">J. Alex Halderman</text>
<text top="203" left="257" width="7" height="8" font="2">¶</text>
<text top="203" left="275" width="125" height="17" font="1">Nadia Heninger</text>
<text top="203" left="400" width="5" height="8" font="2">‡</text>
<text top="203" left="418" width="116" height="17" font="1">Drew Springall</text>
<text top="203" left="534" width="7" height="8" font="2">¶</text>
<text top="203" left="552" width="146" height="17" font="1">Emmanuel Thomé</text>
<text top="203" left="698" width="5" height="8" font="2">†</text>
<text top="203" left="716" width="103" height="17" font="1">Luke Valenta</text>
<text top="203" left="819" width="5" height="8" font="2">‡</text>
<text top="222" left="117" width="177" height="17" font="1">Benjamin VanderSloot</text>
<text top="222" left="294" width="7" height="8" font="2">¶</text>
<text top="222" left="312" width="105" height="17" font="1">Eric Wustrow</text>
<text top="222" left="417" width="7" height="8" font="2">¶</text>
<text top="222" left="435" width="210" height="17" font="1">Santiago Zanella-Béguelin</text>
<text top="222" left="645" width="6" height="8" font="2">k</text>
<text top="222" left="663" width="146" height="17" font="1">Paul Zimmermann</text>
<text top="222" left="809" width="5" height="8" font="2">†</text>
<text top="244" left="158" width="6" height="8" font="2">∗</text>
<text top="246" left="166" width="176" height="14" font="3">INRIA Paris-Rocquencourt</text>
<text top="244" left="373" width="5" height="8" font="2">†</text>
<text top="246" left="380" width="392" height="14" font="3">INRIA Nancy-Grand Est, CNRS, and Université de Lorraine</text>
<text top="260" left="132" width="6" height="8" font="2">k</text>
<text top="261" left="140" width="129" height="14" font="3">Microsoft Research</text>
<text top="260" left="298" width="5" height="8" font="2">‡</text>
<text top="261" left="306" width="174" height="14" font="3">University of Pennsylvania</text>
<text top="260" left="510" width="5" height="8" font="2">§</text>
<text top="261" left="518" width="98" height="14" font="3">Johns Hopkins</text>
<text top="260" left="645" width="7" height="8" font="2">¶</text>
<text top="261" left="653" width="146" height="14" font="3">University of Michigan</text>
<text top="288" left="237" width="442" height="14" font="3">For additional materials and contact information, visit <a href="https://weakdh.org">WeakDH.org.</a></text>
<text top="326" left="81" width="97" height="16" font="4">ABSTRACT</text>
<text top="346" left="80" width="359" height="18" font="5">We investigate the security of Diffie-Hellman key exchange as</text>
<text top="362" left="81" width="359" height="18" font="5">used in popular Internet protocols and find it to be less secure</text>
<text top="378" left="81" width="359" height="18" font="5">than widely believed. First, we present Logjam, a novel flaw</text>
<text top="393" left="81" width="359" height="18" font="5">in TLS that lets a man-in-the-middle downgrade connections</text>
<text top="409" left="81" width="361" height="18" font="5">to “export-grade” Diffie-Hellman. To carry out this attack,</text>
<text top="425" left="80" width="362" height="18" font="5">we implement the number field sieve discrete log algorithm.</text>
<text top="440" left="80" width="360" height="18" font="5">After a week-long precomputation for a specified 512-bit</text>
<text top="456" left="81" width="359" height="18" font="5">group, we can compute arbitrary discrete logs in that group</text>
<text top="472" left="81" width="359" height="18" font="5">in about a minute. We find that 82% of vulnerable servers use</text>
<text top="487" left="81" width="359" height="18" font="5">a single 512-bit group, allowing us to compromise connections</text>
<text top="503" left="81" width="359" height="18" font="5">to 7% of Alexa Top Million HTTPS sites. In response, major</text>
<text top="519" left="81" width="305" height="18" font="5">browsers are being changed to reject short groups.</text>
<text top="534" left="94" width="346" height="18" font="5">We go on to consider Diffie-Hellman with 768- and 1024-bit</text>
<text top="550" left="81" width="361" height="18" font="5">groups. We estimate that even in the 1024-bit case, the com-</text>
<text top="566" left="81" width="359" height="18" font="5">putations are plausible given nation-state resources. A small</text>
<text top="582" left="81" width="359" height="18" font="5">number of fixed or standardized groups are used by millions</text>
<text top="597" left="81" width="359" height="18" font="5">of servers; performing precomputation for a single 1024-bit</text>
<text top="613" left="81" width="359" height="18" font="5">group would allow passive eavesdropping on 18% of popular</text>
<text top="629" left="81" width="359" height="18" font="5">HTTPS sites, and a second group would allow decryption</text>
<text top="644" left="81" width="359" height="18" font="5">of traffic to 66% of IPsec VPNs and 26% of SSH servers. A</text>
<text top="660" left="81" width="359" height="18" font="5">close reading of published NSA leaks shows that the agency’s</text>
<text top="676" left="81" width="359" height="18" font="5">attacks on VPNs are consistent with having achieved such</text>
<text top="691" left="81" width="359" height="18" font="5">a break. We conclude that moving to stronger key exchange</text>
<text top="707" left="81" width="348" height="18" font="5">methods should be a priority for the Internet community.</text>
<text top="750" left="81" width="13" height="16" font="4">1.</text>
<text top="750" left="112" width="143" height="16" font="4">INTRODUCTION</text>
<text top="767" left="94" width="345" height="18" font="5">Diffie-Hellman key exchange is widely used to establish</text>
<text top="783" left="81" width="359" height="18" font="5">session keys in Internet protocols. It is the main key exchange</text>
<text top="799" left="81" width="361" height="18" font="5">mechanism in SSH and IPsec and a popular option in TLS.</text>
<text top="814" left="80" width="359" height="18" font="5">We examine how Diffie-Hellman is commonly implemented</text>
<text top="830" left="81" width="361" height="18" font="5">and deployed with these protocols and find that, in practice,</text>
<text top="846" left="81" width="321" height="18" font="5">it frequently offers less security than widely believed.</text>
<text top="861" left="94" width="345" height="18" font="5">There are two reasons for this. First, a surprising number</text>
<text top="877" left="81" width="359" height="18" font="5">of servers use weak Diffie-Hellman parameters or maintain</text>
<text top="893" left="81" width="359" height="18" font="5">support for obsolete 1990s-era export-grade crypto. More</text>
<text top="909" left="81" width="361" height="18" font="5">critically, the common practice of using standardized, hard-</text>
<text top="965" left="81" width="359" height="9" font="6">Permission to make digital or hard copies of part or all of this work for personal or</text>
<text top="978" left="81" width="359" height="9" font="6">classroom use is granted without fee provided that copies are not made or distributed</text>
<text top="991" left="81" width="359" height="9" font="6">for profit or commercial advantage and that copies bear this notice and the full cita-</text>
<text top="1005" left="81" width="359" height="9" font="6">tion on the first page. Copyrights for third-party components of this work must be</text>
<text top="1018" left="81" width="359" height="9" font="6">honored. For all other uses, contact the Owner/Author(s). Copyright is held by the</text>
<text top="1032" left="81" width="69" height="9" font="6">owner/author(s).</text>
<text top="1045" left="81" width="36" height="9" font="7">CCS’15,</text>
<text top="1045" left="119" width="197" height="9" font="6">October 12–16, 2015, Denver, Colorado, USA.</text>
<text top="1059" left="81" width="137" height="9" font="6">ACM 978-1-4503-3832-5/15/10.</text>
<text top="1072" left="81" width="210" height="9" font="6">DOI: http://dx.doi.org/10.1145/2810103.2813707.</text>
<text top="324" left="475" width="359" height="18" font="5">coded, or widely shared Diffie-Hellman parameters has the</text>
<text top="340" left="475" width="361" height="18" font="5">effect of dramatically reducing the cost of large-scale attacks,</text>
<text top="356" left="475" width="285" height="18" font="5">bringing some within range of feasibility today.</text>
<text top="372" left="489" width="345" height="18" font="5">The current best technique for attacking Diffie-Hellman</text>
<text top="387" left="475" width="333" height="18" font="5">relies on compromising one of the private exponents (</text>
<text top="391" left="808" width="7" height="13" font="8"><i>a</i></text>
<text top="387" left="815" width="4" height="18" font="5">,</text>
<text top="391" left="824" width="6" height="13" font="8"><i>b</i></text>
<text top="387" left="830" width="5" height="18" font="5">)</text>
<text top="403" left="475" width="359" height="18" font="5">by computing the discrete log of the corresponding public</text>
<text top="419" left="475" width="42" height="18" font="5">value (</text>
<text top="423" left="517" width="7" height="13" font="8"><i>g</i></text>
<text top="421" left="524" width="6" height="8" font="9"><i>a</i></text>
<text top="419" left="535" width="26" height="18" font="5">mod</text>
<text top="423" left="565" width="7" height="13" font="8"><i>p</i></text>
<text top="419" left="572" width="4" height="18" font="5">,</text>
<text top="423" left="581" width="7" height="13" font="8"><i>g</i></text>
<text top="421" left="589" width="5" height="8" font="9"><i>b</i></text>
<text top="419" left="598" width="26" height="18" font="5">mod</text>
<text top="423" left="628" width="7" height="13" font="8"><i>p</i></text>
<text top="419" left="635" width="199" height="18" font="5">). With state-of-the-art number</text>
<text top="434" left="475" width="359" height="18" font="5">field sieve algorithms, computing a single discrete log is more</text>
<text top="450" left="475" width="361" height="18" font="5">difficult than factoring an RSA modulus of the same size.</text>
<text top="466" left="475" width="359" height="18" font="5">However, an adversary who performs a large precomputation</text>
<text top="481" left="475" width="63" height="18" font="5">for a prime</text>
<text top="485" left="542" width="7" height="13" font="8"><i>p</i></text>
<text top="481" left="552" width="282" height="18" font="5">can then quickly calculate arbitrary discrete logs</text>
<text top="497" left="475" width="359" height="18" font="5">in that group, amortizing the cost over all targets that share</text>
<text top="513" left="475" width="359" height="18" font="5">this parameter. Although this fact is well known among</text>
<text top="528" left="475" width="359" height="18" font="5">mathematical cryptographers, it seems to have been lost</text>
<text top="544" left="475" width="359" height="18" font="5">among practitioners deploying cryptosystems. We exploit it</text>
<text top="560" left="475" width="185" height="18" font="5">to obtain the following results:</text>
<text top="588" left="474" width="259" height="12" font="10">Active attacks on export ciphers in TLS.</text>
<text top="583" left="750" width="84" height="18" font="5">We introduce</text>
<text top="599" left="475" width="359" height="18" font="5">Logjam, a new attack on TLS by which a man-in-the-middle</text>
<text top="615" left="475" width="361" height="18" font="5">attacker can downgrade a connection to export-grade cryp-</text>
<text top="630" left="475" width="359" height="18" font="5">tography. This attack is reminiscent of the FREAK attack <a href="sample-technical.html#12">[7]</a></text>
<text top="646" left="475" width="359" height="18" font="5">but applies to the ephemeral Diffie-Hellman ciphersuites and</text>
<text top="662" left="475" width="361" height="18" font="5">is a TLS protocol flaw rather than an implementation vulner-</text>
<text top="677" left="475" width="359" height="18" font="5">ability. We present measurements that show that this attack</text>
<text top="693" left="475" width="359" height="18" font="5">applies to 8.4% of Alexa Top Million HTTPS sites and 3.4%</text>
<text top="709" left="475" width="361" height="18" font="5">of all HTTPS servers that have browser-trusted certificates.</text>
<text top="725" left="489" width="345" height="18" font="5">To exploit this attack, we implemented the number field</text>
<text top="740" left="475" width="359" height="18" font="5">sieve discrete log algorithm and carried out precomputation</text>
<text top="756" left="475" width="359" height="18" font="5">for two 512-bit Diffie-Hellman groups used by more than</text>
<text top="772" left="475" width="359" height="18" font="5">92% of the vulnerable servers. This allows us to compute</text>
<text top="787" left="475" width="359" height="18" font="5">individual discrete logs in about a minute. Using our discrete</text>
<text top="803" left="475" width="359" height="18" font="5">log oracle, we can compromise connections to over 7% of Top</text>
<text top="819" left="475" width="359" height="18" font="5">Million HTTPS sites. Discrete logs over larger groups have</text>
<text top="834" left="475" width="359" height="18" font="5">been computed before <a href="sample-technical.html#12">[8], </a>but, as far as we are aware, this</text>
<text top="850" left="475" width="359" height="18" font="5">is the first time they have been exploited to expose concrete</text>
<text top="866" left="475" width="221" height="18" font="5">vulnerabilities in real-world systems.</text>
<text top="881" left="489" width="346" height="18" font="5">We were also able to compromise Diffie-Hellman for many</text>
<text top="897" left="475" width="359" height="18" font="5">other servers because of design and implementation flaws and</text>
<text top="913" left="475" width="359" height="18" font="5">configuration mistakes. These include use of composite-order</text>
<text top="929" left="475" width="359" height="18" font="5">subgroups in combination with short exponents, which is</text>
<text top="944" left="475" width="361" height="18" font="5">vulnerable to a known attack of van Oorschot and Wiener <a href="sample-technical.html#13">[51],</a></text>
<text top="960" left="475" width="359" height="18" font="5">and the inability of clients to properly validate Diffie-Hellman</text>
<text top="976" left="475" width="359" height="18" font="5">parameters without knowing the subgroup order, which TLS</text>
<text top="991" left="475" width="359" height="18" font="5">has no provision to communicate. We implement these</text>
<text top="1007" left="475" width="361" height="18" font="5">attacks too and discover several vulnerable implementations.</text>
<text top="1035" left="474" width="228" height="12" font="10">Risks from common 1024-bit groups.</text>
<text top="1030" left="717" width="119" height="18" font="5">We explore the im-</text>
<text top="1046" left="475" width="359" height="18" font="5">plications of precomputation attacks for 768- and 1024-bit</text>
<text top="1062" left="475" width="359" height="18" font="5">groups, which are widely used in practice and still considered</text>
</page>
 link to page 12  link to page 12  link to page 12  link to page 12  link to page 2  link to page 12  link to page 12  link to page 13  link to page 2  link to page 12  link to page 12  link to page 12 <page number="2" position="absolute" top="0" left="0" height="1188" width="918">
	<fontspec id="11" size="16" family="NYBUOU+LMMathItalic9" color="#000000"/>
	<fontspec id="12" size="16" family="UQBXFR+LMRoman9" color="#000000"/>
	<fontspec id="13" size="16" family="UGXFPC+LMRoman9" color="#000000"/>
	<fontspec id="14" size="13" family="UGXFPC+LMRoman9" color="#000000"/>
	<fontspec id="15" size="13" family="DEEZDF+LMRoman9" color="#000000"/>
	<fontspec id="16" size="9" family="LYFOQG+LMRoman6" color="#000000"/>
	<fontspec id="17" size="13" family="OAKMXN+MSBM10" color="#000000"/>
<text top="167" left="97" width="8" height="16" font="11"><i>p</i></text>
<text top="91" left="152" width="79" height="21" font="12">polynomial</text>
<text top="111" left="161" width="61" height="21" font="12">selection</text>
<text top="93" left="299" width="48" height="21" font="12">sieving</text>
<text top="90" left="434" width="40" height="21" font="12">linear</text>
<text top="109" left="428" width="52" height="21" font="12">algebra</text>
<text top="164" left="526" width="44" height="21" font="12">log db</text>
<text top="215" left="258" width="130" height="21" font="13"><b>precomputation</b></text>
<text top="111" left="639" width="24" height="16" font="11"><i>y, g</i></text>
<text top="99" left="712" width="52" height="21" font="12">descent</text>
<text top="169" left="808" width="9" height="16" font="11"><i>x</i></text>
<text top="215" left="682" width="112" height="21" font="13"><b>individual log</b></text>
<text top="260" left="81" width="55" height="18" font="5">Figure 1:</text>
<text top="260" left="142" width="341" height="18" font="14"><b>The number field sieve algorithm for discrete log</b></text>
<text top="260" left="488" width="346" height="18" font="5">consists of a precomputation stage that depends only on</text>
<text top="276" left="81" width="58" height="18" font="5">the prime</text>
<text top="280" left="143" width="7" height="13" font="8"><i>p</i></text>
<text top="276" left="154" width="680" height="18" font="5">and a descent stage that computes individual logs. With sufficient precomputation, an attacker can quickly break</text>
<text top="291" left="81" width="302" height="18" font="5">any Diffie-Hellman instances that use a particular</text>
<text top="295" left="387" width="7" height="13" font="8"><i>p</i></text>
<text top="291" left="394" width="4" height="18" font="5">.</text>
<text top="338" left="81" width="361" height="18" font="5">secure. We provide new estimates for the computational re-</text>
<text top="354" left="81" width="359" height="18" font="5">sources necessary to compute discrete logs in groups of these</text>
<text top="369" left="81" width="361" height="18" font="5">sizes, concluding that 768-bit groups are within range of aca-</text>
<text top="385" left="81" width="359" height="18" font="5">demic teams, and 1024-bit groups may plausibly be within</text>
<text top="401" left="81" width="359" height="18" font="5">range of state-level attackers. In both cases, individual logs</text>
<text top="416" left="81" width="351" height="18" font="5">can be quickly computed after the initial precomputation.</text>
<text top="432" left="94" width="347" height="18" font="5">We then examine evidence from published Snowden docu-</text>
<text top="448" left="81" width="359" height="18" font="5">ments that suggests NSA may already be exploiting 1024-bit</text>
<text top="463" left="81" width="361" height="18" font="5">Diffie-Hellman to decrypt VPN traffic. We perform measure-</text>
<text top="479" left="81" width="359" height="18" font="5">ments to understand the implications of such an attack for</text>
<text top="495" left="81" width="359" height="18" font="5">popular protocols, finding that an attacker who could perform</text>
<text top="511" left="81" width="361" height="18" font="5">precomputations for ten 1024-bit groups could passively de-</text>
<text top="526" left="81" width="361" height="18" font="5">crypt traffic to about 66% of IKE VPNs, 26% of SSH servers,</text>
<text top="542" left="80" width="345" height="18" font="5">16% of SMTP servers, and 24% of popular HTTPS sites.</text>
<text top="567" left="80" width="148" height="12" font="10">Mitigations and lessons.</text>
<text top="562" left="241" width="198" height="18" font="5">As a short-term countermeasure</text>
<text top="578" left="81" width="359" height="18" font="5">in response to the Logjam attack, all mainstream browsers</text>
<text top="594" left="81" width="359" height="18" font="5">are implementing a more restrictive policy on the size of</text>
<text top="609" left="81" width="359" height="18" font="5">Diffie-Hellman groups they accept. We further recommend</text>
<text top="625" left="81" width="359" height="18" font="5">that TLS servers disable export-grade cryptography and</text>
<text top="641" left="81" width="359" height="18" font="5">carefully vet the Diffie-Hellman groups they use. In the</text>
<text top="656" left="81" width="359" height="18" font="5">longer term, we advocate that protocols migrate to stronger</text>
<text top="672" left="81" width="353" height="18" font="5">Diffie-Hellman groups, such as those based on elliptic curves.</text>
<text top="710" left="81" width="13" height="16" font="4">2.</text>
<text top="710" left="112" width="312" height="16" font="4">DIFFIE-HELLMAN CRYPTANALYSIS</text>
<text top="728" left="94" width="348" height="18" font="5">Diffie-Hellman key exchange was the first published public-</text>
<text top="743" left="81" width="361" height="18" font="5">key algorithm <a href="sample-technical.html#12">[14]. </a>In the simple case of prime groups,</text>
<text top="759" left="80" width="201" height="18" font="5">Alice and Bob agree on a prime</text>
<text top="763" left="286" width="7" height="13" font="8"><i>p</i></text>
<text top="759" left="299" width="99" height="18" font="5">and a generator</text>
<text top="763" left="403" width="7" height="13" font="8"><i>g</i></text>
<text top="759" left="415" width="24" height="18" font="5">of a</text>
<text top="775" left="81" width="199" height="18" font="5">multiplicative subgroup modulo</text>
<text top="779" left="285" width="7" height="13" font="8"><i>p</i></text>
<text top="775" left="292" width="84" height="18" font="5">. Alice sends</text>
<text top="779" left="382" width="7" height="13" font="8"><i>g</i></text>
<text top="777" left="389" width="6" height="8" font="9"><i>a</i></text>
<text top="775" left="400" width="26" height="18" font="5">mod</text>
<text top="779" left="430" width="7" height="13" font="8"><i>p</i></text>
<text top="775" left="437" width="4" height="18" font="5">,</text>
<text top="791" left="81" width="64" height="18" font="5">Bob sends</text>
<text top="795" left="152" width="7" height="13" font="8"><i>g</i></text>
<text top="793" left="159" width="5" height="8" font="9"><i>b</i></text>
<text top="791" left="168" width="26" height="18" font="5">mod</text>
<text top="795" left="199" width="7" height="13" font="8"><i>p</i></text>
<text top="791" left="206" width="234" height="18" font="5">, and each computes a shared secret</text>
<text top="810" left="81" width="7" height="13" font="8"><i>g</i></text>
<text top="808" left="88" width="11" height="8" font="9"><i>ab</i></text>
<text top="806" left="103" width="26" height="18" font="5">mod</text>
<text top="810" left="134" width="7" height="13" font="8"><i>p</i></text>
<text top="806" left="141" width="299" height="18" font="5">. While there is also a Diffie-Hellman exchange</text>
<text top="822" left="81" width="311" height="18" font="5">over elliptic curve groups, we address only the “mod</text>
<text top="826" left="396" width="7" height="13" font="8"><i>p</i></text>
<text top="822" left="403" width="39" height="18" font="5">” case.</text>
<text top="838" left="94" width="348" height="18" font="5">The security of Diffie-Hellman is not known to be equiva-</text>
<text top="853" left="81" width="361" height="18" font="5">lent to the discrete log problem (except in certain groups <a href="sample-technical.html#12">[13,</a></text>
<text top="869" left="80" width="359" height="18" font="5"><a href="sample-technical.html#12">33,34]), </a>but computing discrete logs remains the best known</text>
<text top="885" left="81" width="359" height="18" font="5">cryptanalytic attack. An attacker who can find the discrete</text>
<text top="900" left="81" width="18" height="18" font="5">log</text>
<text top="904" left="103" width="8" height="13" font="8"><i>x</i></text>
<text top="900" left="115" width="28" height="18" font="5">from</text>
<text top="904" left="148" width="7" height="13" font="8"><i>y</i></text>
<text top="900" left="159" width="11" height="18" font="5">=</text>
<text top="904" left="174" width="7" height="13" font="8"><i>g</i></text>
<text top="903" left="181" width="6" height="8" font="9"><i>x</i></text>
<text top="900" left="192" width="26" height="18" font="5">mod</text>
<text top="904" left="222" width="7" height="13" font="8"><i>p</i></text>
<text top="900" left="234" width="197" height="18" font="5">can easily find the shared secret.</text>
<text top="916" left="94" width="345" height="18" font="5">Textbook descriptions of discrete log can be misleading</text>
<text top="932" left="81" width="359" height="18" font="5">about the computational tradeoffs, for example by balancing</text>
<text top="947" left="81" width="318" height="18" font="5">parameters to minimize overall time to compute a</text>
<text top="952" left="405" width="35" height="12" font="15"><i>single</i></text>
<text top="963" left="81" width="359" height="18" font="5">discrete log. In fact, as illustrated in Figure <a href="sample-technical.html#2">1, </a>a single large</text>
<text top="979" left="81" width="118" height="18" font="5">precomputation on</text>
<text top="983" left="205" width="7" height="13" font="8"><i>p</i></text>
<text top="979" left="218" width="199" height="18" font="5">can be used to efficiently break</text>
<text top="984" left="424" width="15" height="12" font="15"><i>all</i></text>
<text top="994" left="81" width="293" height="18" font="5">Diffie-Hellman exchanges made with that prime.</text>
<text top="1015" left="80" width="110" height="18" font="14"><b>The typical case</b></text>
<text top="1015" left="208" width="231" height="18" font="5">Diffie-Hellman is typically implemented</text>
<text top="1030" left="80" width="359" height="18" font="5">with prime fields and large group orders. In this case, the</text>
<text top="1046" left="81" width="359" height="18" font="5">most efficient discrete log algorithm is the number field sieve</text>
<text top="1062" left="79" width="109" height="18" font="5">(NFS) <a href="sample-technical.html#12">[21, 24, </a><a href="sample-technical.html#13">43].</a></text>
<text top="1064" left="188" width="5" height="8" font="16"><a href="sample-technical.html#2">1</a></text>
<text top="1062" left="202" width="237" height="18" font="5">There is a closely related number field</text>
<text top="338" left="475" width="359" height="18" font="5">sieve algorithm for factoring <a href="sample-technical.html#12">[12,31], </a>and in fact many parts of</text>
<text top="354" left="475" width="359" height="18" font="5">the implementations can be shared. The general technique is</text>
<text top="369" left="475" width="361" height="18" font="5">called index calculus and has four stages with different compu-</text>
<text top="385" left="475" width="359" height="18" font="5">tational properties. The first three steps are only dependent</text>
<text top="401" left="475" width="78" height="18" font="5">on the prime</text>
<text top="405" left="557" width="7" height="13" font="8"><i>p</i></text>
<text top="401" left="569" width="238" height="18" font="5">and comprise most of the computation.</text>
<text top="416" left="489" width="43" height="18" font="5">First is</text>
<text top="421" left="536" width="121" height="12" font="15"><i>polynomial selection</i></text>
<text top="416" left="657" width="179" height="18" font="5">, in which one finds a polyno-</text>
<text top="432" left="475" width="26" height="18" font="5">mial</text>
<text top="436" left="505" width="7" height="13" font="8"><i>f</i></text>
<text top="432" left="513" width="5" height="18" font="5">(</text>
<text top="436" left="518" width="6" height="13" font="8"><i>z</i></text>
<text top="432" left="525" width="144" height="18" font="5">) defining a number field</text>
<text top="440" left="673" width="10" height="11" font="17">Q</text>
<text top="432" left="684" width="5" height="18" font="5">(</text>
<text top="436" left="689" width="6" height="13" font="8"><i>z</i></text>
<text top="432" left="696" width="5" height="18" font="5">)</text>
<text top="436" left="701" width="14" height="13" font="8"><i>/f</i></text>
<text top="432" left="716" width="5" height="18" font="5">(</text>
<text top="436" left="721" width="6" height="13" font="8"><i>z</i></text>
<text top="432" left="728" width="108" height="18" font="5">) for the computa-</text>
<text top="448" left="475" width="122" height="18" font="5">tion. (For our cases,</text>
<text top="452" left="602" width="7" height="13" font="8"><i>f</i></text>
<text top="448" left="610" width="5" height="18" font="5">(</text>
<text top="452" left="616" width="6" height="13" font="8"><i>z</i></text>
<text top="448" left="623" width="211" height="18" font="5">) typically has degree 5 or 6.) This</text>
<text top="463" left="475" width="357" height="18" font="5">parallelizes well and is only a small portion of the runtime.</text>
<text top="479" left="489" width="119" height="18" font="5">In the second stage,</text>
<text top="484" left="612" width="40" height="12" font="15"><i>sieving</i></text>
<text top="479" left="652" width="182" height="18" font="5">, one factors ranges of integers</text>
<text top="495" left="475" width="359" height="18" font="5">and number field elements in batches to find many relations of</text>
<text top="511" left="475" width="359" height="18" font="5">elements, all of whose prime factors are less than some bound</text>
<text top="530" left="475" width="10" height="13" font="8"><i>B</i></text>
<text top="526" left="491" width="39" height="18" font="5">(called</text>
<text top="530" left="534" width="10" height="13" font="8"><i>B</i></text>
<text top="526" left="546" width="234" height="18" font="5">-smooth). Modern implementations use</text>
<text top="531" left="784" width="43" height="12" font="15"><i>special-</i></text>
<text top="530" left="827" width="6" height="13" font="8"><i>q</i></text>
<text top="542" left="475" width="232" height="18" font="5">lattice sieving, which for each special</text>
<text top="546" left="712" width="6" height="13" font="8"><i>q</i></text>
<text top="542" left="724" width="110" height="18" font="5">explores a sieving</text>
<text top="558" left="475" width="67" height="18" font="5">region of 2</text>
<text top="560" left="542" width="5" height="8" font="16">2</text>
<text top="560" left="547" width="5" height="8" font="9"><i>I</i></text>
<text top="558" left="559" width="111" height="18" font="5">candidates, where</text>
<text top="562" left="675" width="6" height="13" font="8"><i>I</i></text>
<text top="558" left="687" width="146" height="18" font="5">is a parameter. Sieving</text>
<text top="573" left="475" width="198" height="18" font="5">parallelizes well since each special</text>
<text top="577" left="677" width="6" height="13" font="8"><i>q</i></text>
<text top="573" left="688" width="147" height="18" font="5">is handled independently</text>
<text top="589" left="475" width="359" height="18" font="5">of the others, but is computationally expensive, because we</text>
<text top="605" left="475" width="361" height="18" font="5">must search through and attempt to factor many elements.</text>
<text top="620" left="475" width="359" height="18" font="5">The time for this step depends on heuristic estimates of</text>
<text top="636" left="475" width="192" height="18" font="5">the probability of encountering</text>
<text top="640" left="672" width="10" height="13" font="8"><i>B</i></text>
<text top="636" left="683" width="151" height="18" font="5">-smooth numbers in this</text>
<text top="652" left="475" width="155" height="18" font="5">search; it also depends on</text>
<text top="656" left="635" width="6" height="13" font="8"><i>I</i></text>
<text top="652" left="647" width="176" height="18" font="5">and on the number of special</text>
<text top="656" left="827" width="6" height="13" font="8"><i>q</i></text>
<text top="667" left="475" width="260" height="18" font="5">to consider before having enough relations.</text>
<text top="683" left="489" width="116" height="18" font="5">In the third stage,</text>
<text top="688" left="611" width="83" height="12" font="15"><i>linear algebra</i></text>
<text top="683" left="694" width="142" height="18" font="5">, we construct a large,</text>
<text top="699" left="475" width="359" height="18" font="5">sparse matrix consisting of the coefficient vectors of prime</text>
<text top="715" left="475" width="359" height="18" font="5">factorizations we have found. A nonzero kernel vector of the</text>
<text top="730" left="475" width="151" height="18" font="5">matrix modulo the order</text>
<text top="734" left="631" width="6" height="13" font="8"><i>q</i></text>
<text top="730" left="642" width="192" height="18" font="5">of the group will give us logs of</text>
<text top="746" left="475" width="359" height="18" font="5">many small elements. This database of logs serves as input</text>
<text top="762" left="475" width="257" height="18" font="5">to the final stage. The difficulty depends on</text>
<text top="766" left="736" width="6" height="13" font="8"><i>q</i></text>
<text top="762" left="746" width="88" height="18" font="5">and the matrix</text>
<text top="777" left="475" width="291" height="18" font="5">size and can be parallelized in a limited fashion.</text>
<text top="793" left="489" width="93" height="18" font="5">The final stage,</text>
<text top="798" left="587" width="43" height="12" font="15"><i>descent</i></text>
<text top="793" left="630" width="204" height="18" font="5">, actually deduces the discrete log</text>
<text top="809" left="475" width="72" height="18" font="5">of the target</text>
<text top="813" left="551" width="7" height="13" font="8"><i>y</i></text>
<text top="809" left="559" width="275" height="18" font="5">. We re-sieve until we can find a set of relations</text>
<text top="824" left="475" width="189" height="18" font="5">that allow us to write the log of</text>
<text top="828" left="668" width="7" height="13" font="8"><i>y</i></text>
<text top="824" left="680" width="154" height="18" font="5">in terms of the logs in the</text>
<text top="840" left="475" width="359" height="18" font="5">precomputed database. This step is accomplished in three</text>
<text top="856" left="475" width="359" height="18" font="5">phases: an initialization phase, which tries to write the target</text>
<text top="871" left="475" width="359" height="18" font="5">in terms of medium-sized primes, a middle phase, in which</text>
<text top="887" left="475" width="359" height="18" font="5">these medium-sized primes are further sieved until they can</text>
<text top="903" left="475" width="361" height="18" font="5">be represented by elements in the database of known logs,</text>
<text top="919" left="475" width="359" height="18" font="5">and a final phase that actually reconstructs the target using</text>
<text top="934" left="475" width="359" height="18" font="5">the log database. Crucially, descent is the only NFS stage</text>
<text top="950" left="475" width="78" height="18" font="5">that involves</text>
<text top="954" left="557" width="7" height="13" font="8"><i>y</i></text>
<text top="950" left="569" width="18" height="18" font="5">(or</text>
<text top="954" left="592" width="7" height="13" font="8"><i>g</i></text>
<text top="950" left="599" width="235" height="18" font="5">), so polynomial selection, sieving, and</text>
<text top="966" left="475" width="261" height="18" font="5">linear algebra can be done once for a prime</text>
<text top="970" left="741" width="7" height="13" font="8"><i>p</i></text>
<text top="966" left="752" width="82" height="18" font="5">and reused to</text>
<text top="981" left="475" width="257" height="18" font="5">compute the discrete logs of many targets.</text>
<text top="1024" left="476" width="5" height="8" font="16">1</text>
<text top="1021" left="482" width="352" height="18" font="5">Recent spectacular advances in discrete log algorithms</text>
<text top="1035" left="475" width="361" height="18" font="5">have resulted in a quasi-polynomial algorithm for small-</text>
<text top="1048" left="475" width="359" height="18" font="5">characteristic fields <a href="sample-technical.html#12">[3], </a>but these advances are not known to</text>
<text top="1062" left="475" width="253" height="18" font="5">apply to the prime fields used in practice.</text>
<text top="1107" left="454" width="7" height="18" font="5">2</text>
</page>
 link to page 12  link to page 12  link to page 12  link to page 5  link to page 6  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 3  link to page 13 <page number="3" position="absolute" top="0" left="0" height="1188" width="918">
	<fontspec id="18" size="15" family="ITXTHR+LMMathExtension10" color="#000000"/>
	<fontspec id="19" size="13" family="BIPZIA+LMMathSymbols9" color="#000000"/>
	<fontspec id="20" size="7" family="IAGHLJ+LMMathItalic5" color="#000000"/>
	<fontspec id="21" size="12" family="FWLZSD+LMRoman8" color="#000000"/>
	<fontspec id="22" size="12" family="XYNSKK+LMMono8" color="#000000"/>
	<fontspec id="23" size="12" family="QWTGJF+LMRoman8" color="#000000"/>
	<fontspec id="24" size="12" family="SAXERU+LMSans8" color="#000000"/>
	<fontspec id="25" size="13" family="ECMDET+LMSans9" color="#000000"/>
	<fontspec id="26" size="13" family="LYJWZZ+LMMono9" color="#000000"/>
<text top="82" left="94" width="219" height="18" font="5">The running time of this algorithm is</text>
<text top="86" left="317" width="9" height="13" font="8"><i>L</i></text>
<text top="91" left="326" width="6" height="8" font="9"><i>p</i></text>
<text top="82" left="333" width="12" height="18" font="5">(1</text>
<text top="86" left="345" width="7" height="13" font="8"><i>/</i></text>
<text top="82" left="352" width="7" height="18" font="5">3</text>
<text top="86" left="358" width="4" height="13" font="8"><i>,</i></text>
<text top="82" left="365" width="19" height="18" font="5">(64</text>
<text top="86" left="383" width="7" height="13" font="8"><i>/</i></text>
<text top="82" left="390" width="12" height="18" font="5">9)</text>
<text top="84" left="402" width="5" height="8" font="16">1</text>
<text top="84" left="408" width="6" height="8" font="9"><i>/</i></text>
<text top="84" left="413" width="5" height="8" font="16">3</text>
<text top="82" left="420" width="20" height="18" font="5">) =</text>
<text top="99" left="81" width="43" height="18" font="5">exp (1</text>
<text top="103" left="123" width="4" height="13" font="8"><i>.</i></text>
<text top="99" left="127" width="35" height="18" font="5">923 +</text>
<text top="103" left="165" width="7" height="13" font="8"><i>o</i></text>
<text top="99" left="171" width="46" height="18" font="5">(1))(log</text>
<text top="103" left="220" width="7" height="13" font="8"><i>p</i></text>
<text top="99" left="227" width="5" height="18" font="5">)</text>
<text top="101" left="232" width="5" height="8" font="16">1</text>
<text top="101" left="238" width="6" height="8" font="9"><i>/</i></text>
<text top="101" left="243" width="5" height="8" font="16">3</text>
<text top="99" left="250" width="43" height="18" font="5">(log log</text>
<text top="103" left="295" width="7" height="13" font="8"><i>p</i></text>
<text top="99" left="302" width="5" height="18" font="5">)</text>
<text top="101" left="308" width="5" height="8" font="16">2</text>
<text top="101" left="313" width="6" height="8" font="9"><i>/</i></text>
<text top="101" left="319" width="5" height="8" font="16">3</text>
<text top="101" left="325" width="7" height="7" font="18"></text>
<text top="99" left="332" width="107" height="18" font="5">. This is obtained</text>
<text top="115" left="81" width="318" height="18" font="5">by tuning many parameters, including the degree of</text>
<text top="119" left="403" width="7" height="13" font="8"><i>f</i></text>
<text top="115" left="411" width="28" height="18" font="5">, the</text>
<text top="130" left="81" width="157" height="18" font="5">sieving region parameter</text>
<text top="134" left="245" width="6" height="13" font="8"><i>I</i></text>
<text top="130" left="252" width="187" height="18" font="5">, and, most importantly, the</text>
<text top="146" left="81" width="112" height="18" font="5">smoothness bound</text>
<text top="150" left="197" width="10" height="13" font="8"><i>B</i></text>
<text top="146" left="208" width="231" height="18" font="5">. Early articles (e.g. <a href="sample-technical.html#12">[21]) </a>encountered</text>
<text top="162" left="81" width="361" height="18" font="5">technical difficulties with descent and reported that the com-</text>
<text top="177" left="81" width="361" height="18" font="5">plexity of this step would equal that of the precomputation;</text>
<text top="193" left="81" width="361" height="18" font="5">this may have contributed to misconceptions about the perfor-</text>
<text top="209" left="81" width="359" height="18" font="5">mance of the NFS for discrete logs. More recent analyses have</text>
<text top="224" left="81" width="238" height="18" font="5">improved the complexity of descent to</text>
<text top="228" left="324" width="9" height="13" font="8"><i>L</i></text>
<text top="234" left="334" width="6" height="8" font="9"><i>p</i></text>
<text top="224" left="340" width="13" height="18" font="5">(1</text>
<text top="228" left="353" width="7" height="13" font="8"><i>/</i></text>
<text top="224" left="360" width="7" height="18" font="5">3</text>
<text top="228" left="367" width="4" height="13" font="8"><i>,</i></text>
<text top="224" left="373" width="7" height="18" font="5">1</text>
<text top="228" left="380" width="4" height="13" font="8"><i>.</i></text>
<text top="224" left="384" width="58" height="18" font="5">442) <a href="sample-technical.html#12">[10],</a></text>
<text top="240" left="81" width="72" height="18" font="5">and later to</text>
<text top="244" left="157" width="9" height="13" font="8"><i>L</i></text>
<text top="249" left="166" width="6" height="8" font="9"><i>p</i></text>
<text top="240" left="173" width="12" height="18" font="5">(1</text>
<text top="244" left="185" width="7" height="13" font="8"><i>/</i></text>
<text top="240" left="192" width="7" height="18" font="5">3</text>
<text top="244" left="199" width="4" height="13" font="8"><i>,</i></text>
<text top="240" left="205" width="7" height="18" font="5">1</text>
<text top="244" left="212" width="4" height="13" font="8"><i>.</i></text>
<text top="240" left="216" width="223" height="18" font="5">232) <a href="sample-technical.html#12">[2], </a>which is much cheaper than</text>
<text top="256" left="81" width="191" height="18" font="5">the precomputation in practice.</text>
<text top="271" left="94" width="345" height="18" font="5">The numerous parameters of the algorithm allow some</text>
<text top="287" left="81" width="359" height="18" font="5">flexibility to reduce time on some computational steps at the</text>
<text top="303" left="81" width="359" height="18" font="5">expense of others. For example, sieving more will result in</text>
<text top="318" left="81" width="359" height="18" font="5">a smaller matrix, making linear algebra cheaper, and doing</text>
<text top="334" left="81" width="359" height="18" font="5">more work in the precomputation makes the final descent</text>
<text top="350" left="81" width="359" height="18" font="5">step easier. In <a href="sample-technical.html#5">§3.3, </a>we show how exploiting these tradeoffs</text>
<text top="366" left="81" width="359" height="18" font="5">allows us to quickly compute 512-bit discrete logs in order</text>
<text top="381" left="81" width="349" height="18" font="5">to perform an effective man-in-the-middle attack on TLS.</text>
<text top="402" left="81" width="208" height="18" font="14"><b>Improperly generated groups</b></text>
<text top="402" left="309" width="131" height="18" font="5">A different family of</text>
<text top="418" left="81" width="359" height="18" font="5">algorithms runs in time exponential in group order, and they</text>
<text top="434" left="81" width="359" height="18" font="5">are practical even for large primes when the group order is</text>
<text top="449" left="81" width="359" height="18" font="5">small or has many small prime factors. To avoid this, most</text>
<text top="465" left="81" width="359" height="18" font="5">implementations use “safe” primes, which have the property</text>
<text top="481" left="81" width="26" height="18" font="5">that</text>
<text top="485" left="111" width="7" height="13" font="8"><i>p</i></text>
<text top="485" left="121" width="11" height="13" font="19">−</text>
<text top="481" left="135" width="33" height="18" font="5">1 = 2</text>
<text top="485" left="167" width="6" height="13" font="8"><i>q</i></text>
<text top="481" left="179" width="91" height="18" font="5">for some prime</text>
<text top="485" left="274" width="6" height="13" font="8"><i>q</i></text>
<text top="481" left="281" width="158" height="18" font="5">, so that the only possible</text>
<text top="496" left="81" width="148" height="18" font="5">subgroups have order 2,</text>
<text top="500" left="234" width="6" height="13" font="8"><i>q</i></text>
<text top="496" left="241" width="34" height="18" font="5">, or 2</text>
<text top="500" left="274" width="6" height="13" font="8"><i>q</i></text>
<text top="496" left="281" width="158" height="18" font="5">. However, as we show in</text>
<text top="512" left="81" width="359" height="18" font="5"><a href="sample-technical.html#6">§3.5, </a>improperly generated groups are sometimes used in</text>
<text top="528" left="81" width="208" height="18" font="5">practice and susceptible to attack.</text>
<text top="543" left="94" width="348" height="18" font="5">The baby-step giant-step <a href="sample-technical.html#13">[45] </a>and Pollard rho <a href="sample-technical.html#13">[42] </a>algo-</text>
<text top="559" left="81" width="103" height="18" font="5">rithms both take</text>
<text top="555" left="188" width="12" height="13" font="19">√</text>
<text top="563" left="200" width="6" height="13" font="8"><i>q</i></text>
<text top="559" left="211" width="229" height="18" font="5">time to compute a discrete log in any</text>
<text top="575" left="79" width="122" height="18" font="5">(sub)group of order</text>
<text top="579" left="207" width="6" height="13" font="8"><i>q</i></text>
<text top="575" left="213" width="226" height="18" font="5">, while Pollard lambda <a href="sample-technical.html#13">[42] </a>can find</text>
<text top="594" left="81" width="33" height="13" font="8"><i>x &lt; t</i></text>
<text top="590" left="119" width="44" height="18" font="5">in time</text>
<text top="584" left="168" width="12" height="13" font="19">√</text>
<text top="594" left="180" width="5" height="13" font="8"><i>t</i></text>
<text top="590" left="185" width="257" height="18" font="5">. These parallelize well <a href="sample-technical.html#13">[50], </a>and precom-</text>
<text top="606" left="81" width="359" height="18" font="5">putation can speed up individual log calculations. If the</text>
<text top="622" left="81" width="223" height="18" font="5">factorization of the subgroup order</text>
<text top="626" left="310" width="6" height="13" font="8"><i>q</i></text>
<text top="622" left="324" width="116" height="18" font="5">is known, one can</text>
<text top="638" left="81" width="359" height="18" font="5">use any of the above algorithms to compute the discrete</text>
<text top="653" left="81" width="184" height="18" font="5">log in each subgroup of order</text>
<text top="657" left="270" width="6" height="13" font="8"><i>q</i></text>
<text top="655" left="277" width="5" height="8" font="9"><i>e</i></text>
<text top="658" left="282" width="4" height="7" font="20"><i>i</i></text>
<text top="665" left="276" width="4" height="8" font="9"><i>i</i></text>
<text top="653" left="293" width="50" height="18" font="5">dividing</text>
<text top="657" left="348" width="6" height="13" font="8"><i>q</i></text>
<text top="653" left="355" width="87" height="18" font="5">, and then re-</text>
<text top="669" left="81" width="32" height="18" font="5">cover</text>
<text top="673" left="117" width="8" height="13" font="8"><i>x</i></text>
<text top="669" left="130" width="309" height="18" font="5">using the Chinese remainder theorem. This is the</text>
<text top="685" left="81" width="261" height="18" font="5">Pohlig-Hellman algorithm <a href="sample-technical.html#13">[41], </a>which costs</text>
<text top="687" left="347" width="16" height="7" font="18">P</text>
<text top="697" left="362" width="4" height="8" font="9"><i>i</i></text>
<text top="689" left="369" width="6" height="13" font="8"><i>e</i></text>
<text top="694" left="376" width="4" height="8" font="9"><i>i</i></text>
<text top="680" left="381" width="12" height="13" font="19">√</text>
<text top="689" left="392" width="6" height="13" font="8"><i>q</i></text>
<text top="694" left="398" width="4" height="8" font="9"><i>i</i></text>
<text top="685" left="408" width="32" height="18" font="5">using</text>
<text top="700" left="81" width="216" height="18" font="5">baby-step giant-step or Pollard rho.</text>
<text top="721" left="81" width="115" height="18" font="14"><b>Standard primes</b></text>
<text top="721" left="213" width="229" height="18" font="5">Generating primes with special proper-</text>
<text top="737" left="81" width="361" height="18" font="5">ties can be computationally burdensome, so many implemen-</text>
<text top="753" left="81" width="361" height="18" font="5">tations use fixed or standardized Diffie-Hellman parameters.</text>
<text top="768" left="80" width="359" height="18" font="5">A prominent example is the Oakley groups <a href="sample-technical.html#13">[40], </a>which give</text>
<text top="784" left="79" width="361" height="18" font="5">“safe” primes of length 768 (Oakley Group 1), 1024 (Oakley</text>
<text top="800" left="81" width="359" height="18" font="5">Group 2), and 1536 (Oakley Group 5). These groups were</text>
<text top="815" left="81" width="359" height="18" font="5">published in 1998 and have been used for many applications</text>
<text top="831" left="81" width="257" height="18" font="5">since, including IKE, SSH, Tor, and OTR.</text>
<text top="847" left="94" width="345" height="18" font="5">When primes are of sufficient strength, there seems to be</text>
<text top="862" left="81" width="359" height="18" font="5">no disadvantage to reusing them. However, widespread reuse</text>
<text top="878" left="81" width="359" height="18" font="5">of Diffie-Hellman groups can convert attacks that are at the</text>
<text top="894" left="81" width="361" height="18" font="5">limits of an adversary’s capabilities into devastating breaks,</text>
<text top="909" left="81" width="359" height="18" font="5">since it allows the attacker to amortize the cost of discrete</text>
<text top="925" left="81" width="361" height="18" font="5">log precomputation among vast numbers of potential targets.</text>
<text top="966" left="81" width="13" height="16" font="4">3.</text>
<text top="966" left="112" width="145" height="16" font="4">ATTACKING TLS</text>
<text top="983" left="94" width="345" height="18" font="5">TLS supports Diffie-Hellman as one of several possible</text>
<text top="999" left="81" width="359" height="18" font="5">key exchange methods, and about two-thirds of popular</text>
<text top="1015" left="81" width="361" height="18" font="5">HTTPS sites allow it, most commonly using 1024-bit primes.</text>
<text top="1030" left="81" width="359" height="18" font="5">However, a smaller number of servers also support legacy</text>
<text top="1046" left="79" width="361" height="18" font="5">“export-grade” Diffie-Hellman using 512-bit primes that are</text>
<text top="1062" left="80" width="361" height="18" font="5">well within reach of NFS-based cryptanalysis. Furthermore,</text>
<text top="87" left="484" width="37" height="11" font="21">Source</text>
<text top="87" left="547" width="58" height="11" font="21">Popularity</text>
<text top="87" left="622" width="33" height="11" font="21">Prime</text>
<text top="107" left="484" width="41" height="11" font="21">Apache</text>
<text top="107" left="547" width="23" height="11" font="21">82%</text>
<text top="108" left="622" width="203" height="10" font="22">9fdb8b8a004544f0045f1737d0ba2e0b</text>
<text top="121" left="622" width="203" height="10" font="22">274cdf1a9f588218fb435316a16e3741</text>
<text top="135" left="622" width="203" height="10" font="22">71fd19d8d8f37c39bf863fd60e3e3006</text>
<text top="148" left="622" width="203" height="10" font="22">80a3030c6e4c3757d08f70e6aa871033</text>
<text top="165" left="484" width="47" height="11" font="21">mod_ssl</text>
<text top="165" left="547" width="23" height="11" font="21">10%</text>
<text top="166" left="622" width="203" height="10" font="22">d4bcd52406f69b35994b88de5db89682</text>
<text top="180" left="622" width="203" height="10" font="22">c8157f62d8f33633ee5772f11f05ab22</text>
<text top="193" left="622" width="203" height="10" font="22">d6b5145b9f241e5acc31ff090a4bc711</text>
<text top="207" left="622" width="203" height="10" font="22">48976f76795094e71e7903529f5a824b</text>
<text top="224" left="484" width="5" height="11" font="21">(</text>
<text top="224" left="489" width="34" height="11" font="23"><i>others</i></text>
<text top="224" left="523" width="5" height="11" font="21">)</text>
<text top="224" left="552" width="17" height="11" font="21">8%</text>
<text top="224" left="622" width="116" height="11" font="21">(463 distinct primes)</text>
<text top="248" left="475" width="47" height="18" font="5">Table 1:</text>
<text top="248" left="527" width="220" height="18" font="14"><b>Top 512-bit DH primes for TLS.</b></text>
<text top="248" left="753" width="81" height="18" font="5">8.4% of Alexa</text>
<text top="264" left="475" width="202" height="18" font="5">Top 1M HTTPS domains allow</text>
<text top="270" left="683" width="86" height="11" font="24">DHE_EXPORT</text>
<text top="264" left="770" width="64" height="18" font="5">, of which</text>
<text top="279" left="475" width="359" height="18" font="5">92.3% use one of the two most popular primes, shown here.</text>
<text top="326" left="475" width="359" height="18" font="5">for both normal and export-grade Diffie-Hellman, the vast</text>
<text top="341" left="475" width="318" height="18" font="5">majority of servers use a handful of common groups.</text>
<text top="357" left="489" width="345" height="18" font="5">In this section, we exploit these facts to construct a novel</text>
<text top="373" left="475" width="361" height="18" font="5">attack against TLS, which we call the Logjam attack. First,</text>
<text top="388" left="475" width="359" height="18" font="5">we perform NFS precomputations for the two most popular</text>
<text top="404" left="475" width="359" height="18" font="5">512-bit primes on the web, so that we can quickly compute</text>
<text top="420" left="475" width="359" height="18" font="5">the discrete log for any key-exchange message that uses one</text>
<text top="436" left="475" width="361" height="18" font="5">of them. Next, we show how a man-in-the-middle, so armed,</text>
<text top="451" left="475" width="359" height="18" font="5">can attack connections between popular browsers and any</text>
<text top="467" left="475" width="359" height="18" font="5">server that allows export-grade Diffie-Hellman, by using a</text>
<text top="483" left="475" width="361" height="18" font="5">TLS protocol flaw to downgrade the connection to export-</text>
<text top="498" left="475" width="359" height="18" font="5">strength and then recovering the session key. We find that</text>
<text top="514" left="475" width="359" height="18" font="5">this attack with our precomputations can compromise about</text>
<text top="530" left="475" width="360" height="18" font="5">7.8% of HTTPS servers among Alexa Top Million domains.</text>
<text top="559" left="475" width="22" height="16" font="4">3.1</text>
<text top="559" left="516" width="185" height="16" font="4">TLS and Diffie-Hellman</text>
<text top="577" left="489" width="345" height="18" font="5">The TLS handshake begins with a negotiation to determine</text>
<text top="592" left="475" width="359" height="18" font="5">the crypto algorithms used for the session. The client sends a</text>
<text top="608" left="475" width="296" height="18" font="5">list of supported ciphersuites (and a random nonce</text>
<text top="612" left="775" width="12" height="13" font="8"><i>cr</i></text>
<text top="608" left="787" width="47" height="18" font="5">) within</text>
<text top="624" left="475" width="19" height="18" font="5">the</text>
<text top="629" left="497" width="62" height="12" font="25">ClientHello</text>
<text top="624" left="563" width="272" height="18" font="5">message, where each ciphersuite specifies a key</text>
<text top="639" left="475" width="359" height="18" font="5">exchange algorithm and other primitives. The server selects</text>
<text top="655" left="475" width="359" height="18" font="5">a ciphersuite from the client’s list and signals its selection in</text>
<text top="671" left="475" width="7" height="18" font="5">a</text>
<text top="676" left="487" width="65" height="12" font="25">ServerHello</text>
<text top="671" left="557" width="223" height="18" font="5">message (containing a random nonce</text>
<text top="675" left="784" width="13" height="13" font="8"><i>sr</i></text>
<text top="671" left="797" width="9" height="18" font="5">).</text>
<text top="687" left="489" width="345" height="18" font="5">TLS specifies ciphersuites supporting multiple varieties of</text>
<text top="702" left="475" width="359" height="18" font="5">Diffie-Hellman. Textbook Diffie-Hellman with unrestricted</text>
<text top="718" left="475" width="297" height="18" font="5">strength is called “ephemeral” Diffie-Hellman, or</text>
<text top="724" left="777" width="26" height="11" font="24">DHE</text>
<text top="718" left="803" width="31" height="18" font="5">, and</text>
<text top="734" left="475" width="262" height="18" font="5">is identified by ciphersuites that begin with</text>
<text top="740" left="742" width="64" height="11" font="26">TLS_DHE_*</text>
<text top="734" left="805" width="4" height="18" font="5"><a href="sample-technical.html#3">.</a></text>
<text top="736" left="809" width="5" height="8" font="16"><a href="sample-technical.html#3">2</a></text>
<text top="734" left="821" width="13" height="18" font="5">In</text>
<text top="755" left="475" width="25" height="11" font="24">DHE</text>
<text top="749" left="500" width="333" height="18" font="5">, the server is responsible for selecting the Diffie-Hellman</text>
<text top="765" left="475" width="189" height="18" font="5">parameters. It chooses a group (</text>
<text top="769" left="664" width="20" height="13" font="8"><i>p, g</i></text>
<text top="765" left="684" width="69" height="18" font="5">), computes</text>
<text top="769" left="757" width="7" height="13" font="8"><i>g</i></text>
<text top="767" left="764" width="5" height="8" font="9"><i>b</i></text>
<text top="765" left="769" width="65" height="18" font="5">, and sends</text>
<text top="781" left="475" width="7" height="18" font="5">a</text>
<text top="785" left="486" width="110" height="12" font="25">ServerKeyExchange</text>
<text top="781" left="601" width="233" height="18" font="5">message containing a signature over the</text>
<text top="796" left="475" width="42" height="18" font="5">tuple (</text>
<text top="800" left="517" width="69" height="13" font="8"><i>cr, sr, p, g, g</i></text>
<text top="799" left="587" width="5" height="8" font="9"><i>b</i></text>
<text top="796" left="593" width="241" height="18" font="5">) using the long-term signing key from</text>
<text top="812" left="475" width="359" height="18" font="5">its certificate. The client verifies the signature and responds</text>
<text top="828" left="475" width="38" height="18" font="5">with a</text>
<text top="833" left="518" width="111" height="12" font="25">ClientKeyExchange</text>
<text top="828" left="633" width="116" height="18" font="5">message containing</text>
<text top="832" left="753" width="7" height="13" font="8"><i>g</i></text>
<text top="830" left="761" width="6" height="8" font="9"><i>a</i></text>
<text top="828" left="767" width="4" height="18" font="5">.</text>
<text top="843" left="489" width="345" height="18" font="5">To ensure agreement on the negotiation messages, and to</text>
<text top="859" left="475" width="359" height="18" font="5">prevent downgrade attacks <a href="sample-technical.html#13">[52], </a>each party computes the</text>
<text top="875" left="475" width="139" height="18" font="5">TLS master secret from</text>
<text top="879" left="618" width="7" height="13" font="8"><i>g</i></text>
<text top="877" left="625" width="11" height="8" font="9"><i>ab</i></text>
<text top="875" left="641" width="194" height="18" font="5">and calculates a MAC of its view</text>
<text top="891" left="475" width="359" height="18" font="5">of the handshake transcript. These MACs are exchanged</text>
<text top="906" left="475" width="67" height="18" font="5">in a pair of</text>
<text top="911" left="548" width="47" height="12" font="25">Finished</text>
<text top="906" left="600" width="237" height="18" font="5">messages and verified by the recipients.</text>
<text top="922" left="475" width="359" height="18" font="5">Thereafter, client and server start exchanging application</text>
<text top="938" left="475" width="359" height="18" font="5">data, protected by an authenticated encryption scheme with</text>
<text top="953" left="475" width="135" height="18" font="5">keys also derived from</text>
<text top="957" left="614" width="7" height="13" font="8"><i>g</i></text>
<text top="955" left="622" width="11" height="8" font="9"><i>ab</i></text>
<text top="953" left="633" width="4" height="18" font="5">.</text>
<text top="969" left="489" width="348" height="18" font="5">To comply with 1990s-era U.S. export restrictions on cryp-</text>
<text top="985" left="475" width="359" height="18" font="5">tography, SSL 3.0 and TLS 1.0 supported reduced-strength</text>
<text top="1010" left="476" width="5" height="8" font="16">2</text>
<text top="1008" left="482" width="352" height="18" font="5">TLS also supports a rarely used “static” Diffie-Hellman</text>
<text top="1021" left="475" width="359" height="18" font="5">format, where the server’s key exchange value is fixed and</text>
<text top="1035" left="475" width="359" height="18" font="5">contained in its certificate. New ciphersuites that use elliptic</text>
<text top="1048" left="475" width="132" height="18" font="5">curve Diffie-Hellman (</text>
<text top="1054" left="607" width="41" height="11" font="24">ECDHE</text>
<text top="1048" left="648" width="186" height="18" font="5">) are gaining in popularity, but</text>
<text top="1062" left="475" width="349" height="18" font="5">we focus exclusively on the traditional prime field variety.</text>
<text top="1107" left="454" width="7" height="18" font="5">3</text>
</page>
 link to page 12  link to page 12  link to page 3  link to page 4  link to page 12  link to page 13  link to page 12  link to page 12 <page number="4" position="absolute" top="0" left="0" height="1188" width="918">
<text top="307" left="81" width="55" height="18" font="5">Figure 2:</text>
<text top="307" left="142" width="137" height="18" font="14"><b>The Logjam attack.</b></text>
<text top="307" left="285" width="154" height="18" font="5">A man-in-the-middle can</text>
<text top="323" left="81" width="359" height="18" font="5">force TLS clients to use export-strength DH with any server</text>
<text top="339" left="81" width="66" height="18" font="5">that allows</text>
<text top="344" left="152" width="85" height="11" font="24">DHE_EXPORT</text>
<text top="339" left="236" width="205" height="18" font="5">. Then, by finding the 512-bit dis-</text>
<text top="354" left="81" width="359" height="18" font="5">crete log, the attacker can learn the session key and arbitrarily</text>
<text top="370" left="81" width="167" height="18" font="5">read or modify the contents.</text>
<text top="376" left="253" width="28" height="11" font="26">Data</text>
<text top="372" left="282" width="12" height="8" font="9"><i>f s</i></text>
<text top="370" left="298" width="141" height="18" font="5">refers to False Start <a href="sample-technical.html#12">[30]</a></text>
<text top="386" left="81" width="359" height="18" font="5">application data that some TLS clients send before receiving</text>
<text top="401" left="81" width="69" height="18" font="5">the server’s</text>
<text top="406" left="154" width="47" height="12" font="25">Finished</text>
<text top="401" left="206" width="52" height="18" font="5">message.</text>
<text top="455" left="81" width="83" height="11" font="24">DHE_EXPORT</text>
<text top="449" left="169" width="271" height="18" font="5">ciphersuites that were restricted to primes no</text>
<text top="465" left="81" width="267" height="18" font="5">longer than 512 bits. In all other respects,</text>
<text top="470" left="353" width="86" height="11" font="24">DHE_EXPORT</text>
<text top="480" left="81" width="202" height="18" font="5">protocol messages are identical to</text>
<text top="486" left="287" width="25" height="11" font="24">DHE</text>
<text top="480" left="313" width="127" height="18" font="5">. The relevant export</text>
<text top="496" left="81" width="359" height="18" font="5">restrictions are no longer in effect, but many libraries and</text>
<text top="512" left="81" width="359" height="18" font="5">servers maintain support for backwards compatibility. Many</text>
<text top="527" left="80" width="359" height="18" font="5">TLS servers are still configured with two groups: a strong</text>
<text top="543" left="80" width="156" height="18" font="5">1024-bit group for regular</text>
<text top="549" left="240" width="26" height="11" font="24">DHE</text>
<text top="543" left="270" width="169" height="18" font="5">key exchanges and a 512-bit</text>
<text top="559" left="81" width="101" height="18" font="5">group for legacy</text>
<text top="565" left="187" width="86" height="11" font="24">DHE_EXPORT</text>
<text top="559" left="273" width="166" height="18" font="5">. This has been considered</text>
<text top="574" left="81" width="359" height="18" font="5">safe because most modern TLS clients do not offer or accept</text>
<text top="596" left="81" width="85" height="11" font="24">DHE_EXPORT</text>
<text top="590" left="170" width="75" height="18" font="5">ciphersuites.</text>
<text top="606" left="94" width="347" height="18" font="5">To understand how HTTPS servers in the wild use Diffie-</text>
<text top="622" left="81" width="328" height="18" font="5">Hellman, we modified the ZMap <a href="sample-technical.html#12">[15] </a>toolchain to offer</text>
<text top="627" left="414" width="26" height="11" font="24">DHE</text>
<text top="637" left="81" width="23" height="18" font="5">and</text>
<text top="643" left="109" width="86" height="11" font="24">DHE_EXPORT</text>
<text top="637" left="201" width="239" height="18" font="5">ciphersuites and scanned TCP/443 on</text>
<text top="653" left="81" width="359" height="18" font="5">both the full public IPv4 address space and the Alexa</text>
<text top="669" left="80" width="359" height="18" font="5">Top 1M domains. The scans took place in March 2015. Of</text>
<text top="684" left="81" width="359" height="18" font="5">539,000 HTTPS sites among Top 1M domains, we found that</text>
<text top="700" left="81" width="104" height="18" font="5">68.3% supported</text>
<text top="706" left="190" width="26" height="11" font="24">DHE</text>
<text top="700" left="222" width="125" height="18" font="5">and 8.4% supported</text>
<text top="706" left="352" width="86" height="11" font="24">DHE_EXPORT</text>
<text top="700" left="438" width="4" height="18" font="5">.</text>
<text top="716" left="81" width="359" height="18" font="5">Of 14.3 million IPv4 HTTPS servers with browser-trusted</text>
<text top="731" left="81" width="174" height="18" font="5">certificates, 23.9% supported</text>
<text top="737" left="259" width="26" height="11" font="24">DHE</text>
<text top="731" left="290" width="56" height="18" font="5">and 4.9%</text>
<text top="737" left="351" width="85" height="11" font="24">DHE_EXPORT</text>
<text top="731" left="435" width="4" height="18" font="5">.</text>
<text top="747" left="94" width="345" height="18" font="5">While the TLS protocol allows servers to generate their own</text>
<text top="763" left="81" width="359" height="18" font="5">Diffie-Hellman parameters, the overwhelming majority use</text>
<text top="778" left="81" width="361" height="18" font="5">one of a handful of primes. As shown in Table <a href="sample-technical.html#3">1, </a>just two 512-</text>
<text top="794" left="81" width="359" height="18" font="5">bit primes account for 92.3% of Alexa Top 1M domains that</text>
<text top="810" left="81" width="46" height="18" font="5">support</text>
<text top="816" left="130" width="83" height="11" font="24">DHE_EXPORT</text>
<text top="810" left="213" width="229" height="18" font="5">, and 92.5% of all servers with browser-</text>
<text top="825" left="81" width="190" height="18" font="5">trusted certificates that support</text>
<text top="831" left="275" width="83" height="11" font="24">DHE_EXPORT</text>
<text top="825" left="359" width="81" height="18" font="5">. (Non-export</text>
<text top="847" left="81" width="26" height="11" font="24">DHE</text>
<text top="841" left="111" width="328" height="18" font="5">follows a similar distribution with longer primes.) The</text>
<text top="857" left="81" width="361" height="18" font="5">most popular 512-bit prime was hard-coded into many ver-</text>
<text top="873" left="81" width="359" height="18" font="5">sions of Apache. Introduced in 2005 with Apache 2.1.5, it</text>
<text top="888" left="80" width="359" height="18" font="5">was used until 2.4.7, which disabled export ciphersuites. We</text>
<text top="904" left="81" width="359" height="18" font="5">found it in use by about 564,000 servers with browser-trusted</text>
<text top="920" left="81" width="359" height="18" font="5">certificates. The second most popular 512-bit prime is the</text>
<text top="935" left="81" width="95" height="18" font="5">default used for</text>
<text top="941" left="180" width="85" height="11" font="24">DHE_EXPORT</text>
<text top="935" left="270" width="68" height="18" font="5">when using</text>
<text top="941" left="343" width="49" height="11" font="26">mod_ssl</text>
<text top="935" left="392" width="47" height="18" font="5">. It was</text>
<text top="951" left="81" width="359" height="18" font="5">introduced in version 2.3.0 in 1999. We found it in use by</text>
<text top="967" left="81" width="327" height="18" font="5">about 89,000 servers with browser-trusted certificates.</text>
<text top="997" left="81" width="22" height="16" font="4">3.2</text>
<text top="997" left="121" width="317" height="16" font="4">Active Downgrade to Export-Grade DHE</text>
<text top="1015" left="94" width="345" height="18" font="5">Given the widespread use of these primes, an attacker with</text>
<text top="1030" left="81" width="359" height="18" font="5">the ability to compute discrete logs in 512-bit groups could</text>
<text top="1046" left="81" width="96" height="18" font="5">efficiently break</text>
<text top="1052" left="181" width="85" height="11" font="24">DHE_EXPORT</text>
<text top="1046" left="271" width="168" height="18" font="5">handshakes for about 8% of</text>
<text top="1062" left="80" width="359" height="18" font="5">Alexa Top 1M HTTPS sites, but modern browsers never</text>
<text top="82" left="475" width="359" height="18" font="5">negotiate export-grade ciphersuites. To circumvent this, we</text>
<text top="97" left="475" width="359" height="18" font="5">show how an attacker who can compute 512-bit discrete</text>
<text top="113" left="475" width="24" height="18" font="5">logs</text>
<text top="118" left="504" width="71" height="12" font="15"><i>in real time</i></text>
<text top="113" left="580" width="152" height="18" font="5">can downgrade a regular</text>
<text top="119" left="737" width="26" height="11" font="24">DHE</text>
<text top="113" left="768" width="66" height="18" font="5">connection</text>
<text top="129" left="475" width="49" height="18" font="5">to use a</text>
<text top="134" left="529" width="86" height="11" font="24">DHE_EXPORT</text>
<text top="129" left="620" width="214" height="18" font="5">group, and thereby break both the</text>
<text top="144" left="475" width="291" height="18" font="5">confidentiality and integrity of application data.</text>
<text top="160" left="489" width="346" height="18" font="5">The attack, which we call Logjam, is depicted in Figure <a href="sample-technical.html#4">2</a></text>
<text top="176" left="475" width="297" height="18" font="5">and relies on a flaw in the way TLS composes</text>
<text top="181" left="779" width="26" height="11" font="24">DHE</text>
<text top="176" left="811" width="23" height="18" font="5">and</text>
<text top="197" left="475" width="86" height="11" font="24">DHE_EXPORT</text>
<text top="191" left="562" width="145" height="18" font="5">. When a server selects</text>
<text top="197" left="712" width="86" height="11" font="24">DHE_EXPORT</text>
<text top="191" left="804" width="29" height="18" font="5">for a</text>
<text top="207" left="475" width="245" height="18" font="5">handshake, it proceeds by issuing a signed</text>
<text top="212" left="723" width="110" height="12" font="25">ServerKeyExchange</text>
<text top="223" left="475" width="175" height="18" font="5">message containing a 512-bit</text>
<text top="227" left="654" width="7" height="13" font="8"><i>p</i></text>
<text top="232" left="661" width="16" height="8" font="16">512</text>
<text top="223" left="679" width="155" height="18" font="5">, but the structure of this</text>
<text top="238" left="475" width="330" height="18" font="5">message is identical to the message sent during standard</text>
<text top="244" left="809" width="25" height="11" font="24">DHE</text>
<text top="254" left="475" width="359" height="18" font="5">ciphersuites. Critically, the signed portion of the server’s</text>
<text top="270" left="475" width="361" height="18" font="5">message fails to include any indication of the specific cipher-</text>
<text top="286" left="475" width="359" height="18" font="5">suite that the server has chosen. Provided that a client offers</text>
<text top="307" left="475" width="25" height="11" font="24">DHE</text>
<text top="301" left="500" width="251" height="18" font="5">, an active attacker can rewrite the client’s</text>
<text top="306" left="756" width="62" height="12" font="25">ClientHello</text>
<text top="301" left="822" width="12" height="18" font="5">to</text>
<text top="317" left="475" width="126" height="18" font="5">offer a corresponding</text>
<text top="323" left="606" width="84" height="11" font="24">DHE_EXPORT</text>
<text top="317" left="694" width="140" height="18" font="5">ciphersuite accepted by</text>
<text top="333" left="475" width="359" height="18" font="5">the server and remove other ciphersuites that could be chosen</text>
<text top="348" left="475" width="212" height="18" font="5">instead. The attacker rewrites the</text>
<text top="353" left="693" width="67" height="12" font="25">ServerHello</text>
<text top="348" left="764" width="70" height="18" font="5">response to</text>
<text top="364" left="475" width="106" height="18" font="5">replace the chosen</text>
<text top="370" left="585" width="83" height="11" font="24">DHE_EXPORT</text>
<text top="364" left="672" width="162" height="18" font="5">ciphersuite with a matching</text>
<text top="380" left="475" width="242" height="18" font="5">non-export ciphersuite and forwards the</text>
<text top="384" left="722" width="112" height="12" font="25">ServerKeyExchange</text>
<text top="395" left="475" width="359" height="18" font="5">message to the client as is. The client will interpret the</text>
<text top="411" left="475" width="120" height="18" font="5">export-grade tuple (</text>
<text top="415" left="595" width="7" height="13" font="8"><i>p</i></text>
<text top="420" left="602" width="16" height="8" font="16">512</text>
<text top="415" left="620" width="26" height="13" font="8"><i>, g, g</i></text>
<text top="413" left="646" width="5" height="8" font="9"><i>b</i></text>
<text top="411" left="652" width="55" height="18" font="5">) as valid</text>
<text top="417" left="711" width="25" height="11" font="24">DHE</text>
<text top="411" left="741" width="95" height="18" font="5">parameters cho-</text>
<text top="427" left="475" width="359" height="18" font="5">sen by the server and proceed with the handshake. The</text>
<text top="442" left="475" width="359" height="18" font="5">client and server have different handshake transcripts at this</text>
<text top="458" left="475" width="251" height="18" font="5">stage, but an attacker who can compute</text>
<text top="462" left="731" width="6" height="13" font="8"><i>b</i></text>
<text top="458" left="742" width="92" height="18" font="5">in close to real</text>
<text top="474" left="475" width="359" height="18" font="5">time can then derive the master secret and connection keys</text>
<text top="489" left="475" width="359" height="18" font="5">to complete the handshake with the client, and then freely</text>
<text top="505" left="475" width="361" height="18" font="5">read and write application data pretending to be the server.</text>
<text top="521" left="489" width="345" height="18" font="5">There are two remaining challenges in implementing this</text>
<text top="537" left="475" width="359" height="18" font="5">active downgrade attack. The first is to compute individual</text>
<text top="552" left="475" width="359" height="18" font="5">discrete logs in close to real time, and the second is to delay</text>
<text top="568" left="475" width="359" height="18" font="5">handshake completion until the discrete log computation has</text>
<text top="584" left="475" width="361" height="18" font="5">had time to finish. We address these in the next subsections.</text>
<text top="607" left="475" width="242" height="18" font="14"><b>Comparison with previous attacks</b></text>
<text top="607" left="737" width="100" height="18" font="5">Logjam is remi-</text>
<text top="622" left="475" width="359" height="18" font="5">niscent of the recent FREAK <a href="sample-technical.html#12">[7] </a>attack, in which an attacker</text>
<text top="638" left="475" width="359" height="18" font="5">downgrades a regular RSA key exchange to one that uses</text>
<text top="654" left="475" width="359" height="18" font="5">export-grade 512-bit ephemeral RSA keys, relying on a bug</text>
<text top="670" left="475" width="359" height="18" font="5">in several TLS client implementations. The attacker then</text>
<text top="685" left="475" width="359" height="18" font="5">factors the ephemeral key to hijack future connections that</text>
<text top="701" left="475" width="359" height="18" font="5">use the same key. The cryptanalysis takes several hours on</text>
<text top="717" left="475" width="359" height="18" font="5">commodity hardware and is usable until the server generates</text>
<text top="732" left="475" width="335" height="18" font="5">a fresh ephemeral RSA key (typically when it restarts).</text>
<text top="748" left="489" width="346" height="18" font="5">In contrast, Logjam is due to a protocol flaw in TLS, not</text>
<text top="764" left="475" width="359" height="18" font="5">an implementation bug. From a client perspective, the only</text>
<text top="779" left="475" width="209" height="18" font="5">defense is to reject small primes in</text>
<text top="785" left="689" width="26" height="11" font="24">DHE</text>
<text top="779" left="719" width="115" height="18" font="5">handshakes. (Prior</text>
<text top="795" left="475" width="268" height="18" font="5">to this work, most popular browsers accepted</text>
<text top="799" left="748" width="7" height="13" font="8"><i>p</i></text>
<text top="795" left="759" width="36" height="18" font="5">of size</text>
<text top="799" left="799" width="11" height="13" font="19">≥</text>
<text top="795" left="814" width="20" height="18" font="5">512</text>
<text top="811" left="475" width="359" height="18" font="5">bits.) Logjam affects fewer servers than FREAK, but, as we</text>
<text top="826" left="475" width="361" height="18" font="5">shall see, the cost per compromised connection is far lower,</text>
<text top="842" left="475" width="359" height="18" font="5">since the precomputation for each 512-bit group can be used</text>
<text top="858" left="475" width="359" height="18" font="5">indefinitely against all servers that use that group, and since</text>
<text top="874" left="475" width="332" height="18" font="5">each individual discrete log only takes about a minute.</text>
<text top="889" left="489" width="345" height="18" font="5">Logjam and FREAK both follow the same pattern as other</text>
<text top="905" left="475" width="361" height="18" font="5">cross-protocol attacks discovered in TLS. As early as SSL 3.0,</text>
<text top="921" left="475" width="359" height="18" font="5">Schneier and Wagner noted a related vulnerability that they</text>
<text top="936" left="475" width="35" height="18" font="5">called</text>
<text top="941" left="515" width="130" height="12" font="15"><i>key exchange rollback</i></text>
<text top="936" left="650" width="186" height="18" font="5"><a href="sample-technical.html#13">[52]. </a>Mavrogiannopoulos et al.</text>
<text top="952" left="475" width="361" height="18" font="5">showed how explicit-curve ECDHE handshakes could be con-</text>
<text top="968" left="475" width="359" height="18" font="5">fused with DHE handshakes <a href="sample-technical.html#12">[35]. </a>All these attacks could</text>
<text top="983" left="475" width="359" height="18" font="5">be prevented by additionally signing the ciphersuite in the</text>
<text top="1004" left="475" width="110" height="12" font="25">ServerKeyExchange</text>
<text top="999" left="590" width="244" height="18" font="5">message. We expect that TLS 1.3 will fix</text>
<text top="1015" left="475" width="361" height="18" font="5">this protocol flaw. More generally, Logjam can also be inter-</text>
<text top="1030" left="475" width="359" height="18" font="5">preted as a backwards compatibility attack <a href="sample-technical.html#12">[23] </a>where one</text>
<text top="1046" left="475" width="359" height="18" font="5">party uses only strong cryptography but the other supports</text>
<text top="1062" left="475" width="211" height="18" font="5">both strong and weak ciphersuites.</text>
<text top="1107" left="454" width="7" height="18" font="5">4</text>
</page>
 link to page 12  link to page 2  link to page 3  link to page 2  link to page 2  link to page 12  link to page 13  link to page 12  link to page 5  link to page 3  link to page 4  link to page 13  link to page 13 <page number="5" position="absolute" top="0" left="0" height="1188" width="918">
	<fontspec id="27" size="15" family="WNSJEE+CMR10" color="#000000"/>
	<fontspec id="28" size="15" family="CUJHND+CMMI10" color="#000000"/>
	<fontspec id="29" size="15" family="WNSJEE+CMR10" color="#000000"/>
<text top="83" left="81" width="22" height="16" font="4">3.3</text>
<text top="83" left="121" width="268" height="16" font="4">512-bit Discrete Log Computations</text>
<text top="101" left="94" width="345" height="18" font="5">We modified CADO-NFS <a href="sample-technical.html#12">[1] </a>to implement the number field</text>
<text top="117" left="81" width="359" height="18" font="5">sieve discrete log algorithm from <a href="sample-technical.html#2">§2 </a>and applied it to three</text>
<text top="132" left="81" width="225" height="18" font="5">512-bit primes, including the top two</text>
<text top="138" left="310" width="85" height="11" font="24">DHE_EXPORT</text>
<text top="132" left="399" width="40" height="18" font="5">primes</text>
<text top="148" left="81" width="361" height="18" font="5">shown in Table <a href="sample-technical.html#3">1. </a>Precomputation took 7 days for each prime,</text>
<text top="164" left="81" width="361" height="18" font="5">after which computing individual logs took a median of 70 sec-</text>
<text top="179" left="81" width="359" height="18" font="5">onds. We list the runtime for each stage of the computation</text>
<text top="195" left="81" width="331" height="18" font="5">below. The times were about the same for each prime.</text>
<text top="220" left="81" width="112" height="18" font="14"><b>Precomputation</b></text>
<text top="220" left="211" width="230" height="18" font="5">As illustrated in Figure <a href="sample-technical.html#2">1, </a>the precom-</text>
<text top="236" left="81" width="359" height="18" font="5">putation phase includes the polynomial selection, sieving, and</text>
<text top="252" left="81" width="359" height="18" font="5">linear algebra steps. For this precomputation, we deliberately</text>
<text top="268" left="81" width="361" height="18" font="5">sieved more than strictly necessary. This enabled two opti-</text>
<text top="283" left="81" width="361" height="18" font="5">mizations: first, with more relations obtained from sieving,</text>
<text top="299" left="80" width="359" height="18" font="5">we eventually obtain a larger database of known logs, which</text>
<text top="315" left="81" width="359" height="18" font="5">makes the descent faster. Second, more sieving relations also</text>
<text top="330" left="80" width="359" height="18" font="5">yield a smaller linear algebra step, which is desirable because</text>
<text top="346" left="81" width="336" height="18" font="5">sieving is much easier to parallelize than linear algebra.</text>
<text top="362" left="94" width="345" height="18" font="5">For the polynomial selection and sieving steps, we used</text>
<text top="377" left="81" width="359" height="18" font="5">idle time on 2000–3000 CPU cores in parallel, of which most</text>
<text top="393" left="81" width="359" height="18" font="5">CPUs were Intel Sandy Bridge. Polynomial selection ran</text>
<text top="409" left="81" width="361" height="18" font="5">for about 3 hours, which in total corresponds to 7,600 core-</text>
<text top="424" left="81" width="359" height="18" font="5">hours. Sieving ran for 15 hours, corresponding to 21,400</text>
<text top="440" left="81" width="359" height="18" font="5">core-hours. This sufficed to collect 40,003,519 relations of</text>
<text top="456" left="80" width="359" height="18" font="5">which 28,372,442 were unique, involving 15,207,865 primes</text>
<text top="472" left="81" width="194" height="18" font="5">of at most 27 bits (hence bound</text>
<text top="476" left="279" width="10" height="13" font="8"><i>B</i></text>
<text top="472" left="295" width="72" height="18" font="5">from <a href="sample-technical.html#2">§2 </a>is 2</text>
<text top="474" left="366" width="11" height="8" font="16">27</text>
<text top="472" left="378" width="9" height="18" font="5">).</text>
<text top="487" left="94" width="345" height="18" font="5">From this data set, we obtained a square matrix with</text>
<text top="503" left="80" width="359" height="18" font="5">2,157,378 rows and columns, with 113 nonzero coefficients per</text>
<text top="519" left="81" width="359" height="18" font="5">row on average. We solved the corresponding linear system on</text>
<text top="534" left="81" width="359" height="18" font="5">a 36-node cluster with two 8-core Intel Xeon E5-2650 CPUs</text>
<text top="550" left="81" width="359" height="18" font="5">per node, connected with Infiniband FDR. We used the block</text>
<text top="566" left="80" width="283" height="18" font="5">Wiedemann algorithm <a href="sample-technical.html#12">[11,</a><a href="sample-technical.html#13">49] </a>with parameters</text>
<text top="570" left="368" width="12" height="13" font="8"><i>m</i></text>
<text top="566" left="384" width="55" height="18" font="5">= 18 and</text>
<text top="585" left="81" width="8" height="13" font="8"><i>n</i></text>
<text top="581" left="93" width="349" height="18" font="5">= 6. Using the unoptimized implementation from CADO-</text>
<text top="597" left="81" width="231" height="18" font="5">NFS <a href="sample-technical.html#12">[1] </a>for linear algebra over GF(</text>
<text top="601" left="312" width="7" height="13" font="8"><i>p</i></text>
<text top="597" left="318" width="121" height="18" font="5">), the computation</text>
<text top="613" left="81" width="361" height="18" font="5">finished in 120 hours, corresponding to 60,000 core-hours.</text>
<text top="628" left="80" width="360" height="18" font="5">We expect that optimizations could bring this cost down by</text>
<text top="644" left="81" width="151" height="18" font="5">at least a factor of three.</text>
<text top="660" left="94" width="345" height="18" font="5">In total, the wall-clock time for each precomputation was</text>
<text top="676" left="81" width="359" height="18" font="5">slightly over one week. Each resulting database of known</text>
<text top="691" left="81" width="361" height="18" font="5">logs for the descent occupies about 2.5 GB in ASCII format.</text>
<text top="717" left="81" width="55" height="18" font="14"><b>Descent</b></text>
<text top="717" left="154" width="286" height="18" font="5">Once this precomputation was finished, we were</text>
<text top="732" left="81" width="361" height="18" font="5">able to run the final descent step to compute individual dis-</text>
<text top="748" left="81" width="361" height="18" font="5">crete logs in about a minute for targets in each of these groups.</text>
<text top="764" left="81" width="361" height="18" font="5">In order to save time on individual computations, we imple-</text>
<text top="779" left="81" width="361" height="18" font="5">mented a client-server architecture using the ZeroMQ mes-</text>
<text top="795" left="81" width="359" height="18" font="5">saging library. The server maintains the precomputed data</text>
<text top="811" left="81" width="354" height="18" font="5">in RAM and returns logs for values passed to it by clients.</text>
<text top="826" left="94" width="345" height="18" font="5">We implemented the descent calculation in a mix of Python</text>
<text top="842" left="81" width="359" height="18" font="5">and C. The first and second stages are parallelized and run</text>
<text top="858" left="81" width="361" height="18" font="5">sieving in C, and the final discrete log is deduced in Python.</text>
<text top="874" left="80" width="359" height="18" font="5">We ran the server on a machine with two 18-core Intel Xeon</text>
<text top="889" left="81" width="359" height="18" font="5">E5-2699 CPUs and 128 GB of RAM. On average, computing</text>
<text top="905" left="81" width="359" height="18" font="5">individual logs took about 70 seconds, but the time varied</text>
<text top="921" left="81" width="359" height="18" font="5">from 34 to 206 seconds (see Fig. <a href="sample-technical.html#5">3). </a>This is divided between</text>
<text top="936" left="81" width="359" height="18" font="5">about 20 seconds for descent initialization and the remainder</text>
<text top="952" left="81" width="359" height="18" font="5">on the middle phase. Further optimizations—such as more</text>
<text top="968" left="81" width="359" height="18" font="5">effective parallelization on the middle phase or additional</text>
<text top="983" left="81" width="361" height="18" font="5">sieving—should bring the median time well below a minute.</text>
<text top="999" left="94" width="347" height="18" font="5">For purposes of comparison, a single 512-bit RSA factor-</text>
<text top="1015" left="81" width="359" height="18" font="5">ization using the CADO-NFS implementation takes about</text>
<text top="1030" left="81" width="359" height="18" font="5">eight days of wall-clock time on the computer used for the</text>
<text top="1046" left="81" width="359" height="18" font="5">descent, and about three hours parallelized across 1,800 cores</text>
<text top="1062" left="81" width="96" height="18" font="5">of Amazon EC2</text>
<text top="1068" left="181" width="71" height="11" font="26">c4.8xlarge</text>
<text top="1062" left="257" width="59" height="18" font="5">instances.</text>
<text top="188" left="543" width="15" height="15" font="27">30</text>
<text top="188" left="608" width="15" height="15" font="27">60</text>
<text top="188" left="672" width="15" height="15" font="27">90</text>
<text top="188" left="733" width="23" height="15" font="27">120</text>
<text top="188" left="798" width="23" height="15" font="27">150</text>
<text top="166" left="516" width="8" height="15" font="27">0</text>
<text top="126" left="504" width="8" height="15" font="27">0</text>
<text top="126" left="512" width="4" height="15" font="28">.</text>
<text top="126" left="516" width="8" height="15" font="27">5</text>
<text top="86" left="516" width="8" height="15" font="27">1</text>
<text top="209" left="655" width="53" height="15" font="27">Seconds</text>
<text top="163" left="491" width="0" height="15" font="29">CDF</text>
<text top="125" left="491" width="0" height="15" font="29">of</text>
<text top="108" left="491" width="0" height="15" font="29">keys</text>
<text top="234" left="475" width="53" height="18" font="5">Figure 3:</text>
<text top="234" left="534" width="303" height="18" font="14"><b>Individual discrete log time for 512-bit DH.</b></text>
<text top="250" left="475" width="359" height="18" font="5">After a week-long precomputation for each of the two top</text>
<text top="266" left="475" width="359" height="18" font="5">export-grade primes (see Table <a href="sample-technical.html#3">1), </a>we can quickly break</text>
<text top="282" left="475" width="359" height="18" font="5">any key exchange that uses them. Here we show times for</text>
<text top="297" left="475" width="355" height="18" font="5">computing 3,500 individual logs; the median is 70 seconds.</text>
<text top="350" left="475" width="22" height="16" font="4">3.4</text>
<text top="350" left="516" width="232" height="16" font="4">Active Attack Implementation</text>
<text top="367" left="489" width="345" height="18" font="5">We implemented a man-in-the-middle network attacker</text>
<text top="383" left="475" width="359" height="18" font="5">that sits between a TLS client (web browser) and any server</text>
<text top="399" left="475" width="80" height="18" font="5">that supports</text>
<text top="405" left="560" width="83" height="11" font="24">DHE_EXPORT</text>
<text top="399" left="647" width="189" height="18" font="5">and uses the most common 512-</text>
<text top="414" left="475" width="359" height="18" font="5">bit Apache group. Our implementation follows the message</text>
<text top="430" left="475" width="359" height="18" font="5">sequence in Figure <a href="sample-technical.html#4">2: </a>it downgrades the connection towards</text>
<text top="446" left="475" width="359" height="18" font="5">the server, computes the session keys, and takes over the</text>
<text top="462" left="475" width="354" height="18" font="5">connection towards the client by impersonating the server.</text>
<text top="477" left="489" width="321" height="18" font="5">The main challenge is to compute the shared secret</text>
<text top="481" left="815" width="7" height="13" font="8"><i>g</i></text>
<text top="479" left="822" width="11" height="8" font="9"><i>ab</i></text>
<text top="493" left="475" width="307" height="18" font="5">before the handshake completes in order to forge a</text>
<text top="498" left="787" width="47" height="12" font="25">Finished</text>
<text top="509" left="475" width="361" height="18" font="5">message from the server. With our descent implementation,</text>
<text top="524" left="475" width="359" height="18" font="5">the computation takes an average of 70 seconds, but there</text>
<text top="540" left="475" width="343" height="18" font="5">are several ways an attacker can work around this delay:</text>
<text top="567" left="474" width="121" height="12" font="10">Non-browser clients.</text>
<text top="562" left="609" width="225" height="18" font="5">Different TLS clients impose different</text>
<text top="578" left="475" width="359" height="18" font="5">time limits for the handshake, after which they kill the</text>
<text top="594" left="475" width="268" height="18" font="5">connection. Command-line clients such as</text>
<text top="600" left="749" width="28" height="11" font="26">curl</text>
<text top="594" left="784" width="23" height="18" font="5">and</text>
<text top="600" left="813" width="21" height="11" font="26">git</text>
<text top="609" left="475" width="359" height="18" font="5">often run unattended, so they have long or no timeouts, and</text>
<text top="625" left="475" width="301" height="18" font="5">we can hijack their connections without difficulty.</text>
<text top="652" left="473" width="125" height="12" font="10">TLS warning alerts.</text>
<text top="647" left="614" width="220" height="18" font="5">Web browsers tend to have shorter</text>
<text top="663" left="475" width="359" height="18" font="5">timeouts, but we can keep their connections alive by sending</text>
<text top="679" left="475" width="360" height="18" font="5">TLS warning alerts, which are ignored by the browser but</text>
<text top="694" left="475" width="359" height="18" font="5">reset the handshake timer. For example, this allows us to keep</text>
<text top="710" left="475" width="359" height="18" font="5">Firefox’s TLS connections alive indefinitely. (Other browsers</text>
<text top="726" left="475" width="359" height="18" font="5">we tested close the connection after a minute.) Although</text>
<text top="741" left="475" width="361" height="18" font="5">the victim connection still takes much longer than usual,</text>
<text top="757" left="475" width="359" height="18" font="5">the attacker might choose to compromise a request for a</text>
<text top="773" left="475" width="361" height="18" font="5">background resource that does not delay rendering the page.</text>
<text top="800" left="474" width="147" height="12" font="10">Ephemeral key caching.</text>
<text top="795" left="637" width="197" height="18" font="5">Many TLS servers do not use a</text>
<text top="811" left="475" width="66" height="18" font="5">fresh value</text>
<text top="815" left="547" width="6" height="13" font="8"><i>b</i></text>
<text top="811" left="558" width="258" height="18" font="5">for each connection, but instead compute</text>
<text top="815" left="821" width="7" height="13" font="8"><i>g</i></text>
<text top="813" left="828" width="5" height="8" font="9"><i>b</i></text>
<text top="826" left="475" width="359" height="18" font="5">once and reuse it for multiple negotiations. Without enabling</text>
<text top="842" left="475" width="20" height="18" font="5">the</text>
<text top="848" left="500" width="141" height="11" font="26">SSL_OP_SINGLE_DH_USE</text>
<text top="842" left="646" width="170" height="18" font="5">option, OpenSSL will reuse</text>
<text top="846" left="821" width="7" height="13" font="8"><i>g</i></text>
<text top="844" left="828" width="5" height="8" font="9"><i>b</i></text>
<text top="858" left="475" width="359" height="18" font="5">for the lifetime of a TLS context. While both Apache and</text>
<text top="874" left="475" width="361" height="18" font="5">Nginx internally apply this option, certain load balancers,</text>
<text top="889" left="475" width="359" height="18" font="5">such as stud <a href="sample-technical.html#13">[48], </a>do not. The F5 BIG-IP load balancers</text>
<text top="905" left="475" width="231" height="18" font="5">and hardware TLS frontends will reuse</text>
<text top="909" left="711" width="7" height="13" font="8"><i>g</i></text>
<text top="907" left="718" width="5" height="8" font="9"><i>b</i></text>
<text top="905" left="729" width="105" height="18" font="5">unless the “Single</text>
<text top="921" left="475" width="321" height="18" font="5">DH” option is checked <a href="sample-technical.html#13">[53]. </a>Microsoft Schannel caches</text>
<text top="925" left="801" width="7" height="13" font="8"><i>g</i></text>
<text top="923" left="808" width="5" height="8" font="9"><i>b</i></text>
<text top="921" left="818" width="16" height="18" font="5">for</text>
<text top="936" left="475" width="359" height="18" font="5">two hours—this setting is hard-coded. For these servers, an</text>
<text top="952" left="475" width="238" height="18" font="5">attacker can compute the discrete log of</text>
<text top="956" left="718" width="7" height="13" font="8"><i>g</i></text>
<text top="954" left="725" width="5" height="8" font="9"><i>b</i></text>
<text top="952" left="735" width="101" height="18" font="5">from one connec-</text>
<text top="968" left="475" width="359" height="18" font="5">tion and use it to attack later handshakes, avoiding the need</text>
<text top="983" left="475" width="359" height="18" font="5">to do the computation online. By randomly sampling IPv4</text>
<text top="999" left="475" width="326" height="18" font="5">hosts serving browser-trusted certificates that support</text>
<text top="1005" left="806" width="26" height="11" font="24">DHE</text>
<text top="999" left="832" width="4" height="18" font="5">,</text>
<text top="1015" left="475" width="161" height="18" font="5">we found that 17% reused</text>
<text top="1019" left="641" width="7" height="13" font="8"><i>g</i></text>
<text top="1017" left="648" width="5" height="8" font="9"><i>b</i></text>
<text top="1015" left="658" width="176" height="18" font="5">at least once over the course</text>
<text top="1030" left="475" width="361" height="18" font="5">of 20 handshakes, and that 15% only used one value. How-</text>
<text top="1046" left="475" width="50" height="18" font="5">ever, for</text>
<text top="1052" left="529" width="85" height="11" font="24">DHE_EXPORT</text>
<text top="1046" left="614" width="111" height="18" font="5">, only 0.1% reused</text>
<text top="1050" left="730" width="7" height="13" font="8"><i>g</i></text>
<text top="1048" left="737" width="5" height="8" font="9"><i>b</i></text>
<text top="1046" left="742" width="91" height="18" font="5">, likely because</text>
<text top="1062" left="475" width="356" height="18" font="5">Microsoft IIS does not support 512-bit export ciphersuites.</text>
<text top="1107" left="454" width="7" height="18" font="5">5</text>
</page>
 link to page 12  link to page 13  link to page 12  link to page 13  link to page 13  link to page 5  link to page 13  link to page 13 <page number="6" position="absolute" top="0" left="0" height="1188" width="918">
	<fontspec id="30" size="12" family="QSKEHF+LMSans10" color="#000000"/>
	<fontspec id="31" size="7" family="DUMKJS+LMRoman5" color="#000000"/>
<text top="86" left="78" width="103" height="12" font="10">TLS False Start.</text>
<text top="82" left="196" width="246" height="18" font="5">Even when clients enforce shorter time-</text>
<text top="97" left="81" width="241" height="18" font="5">outs and servers do not reuse values for</text>
<text top="101" left="326" width="6" height="13" font="8"><i>b</i></text>
<text top="97" left="332" width="107" height="18" font="5">, the attacker can</text>
<text top="113" left="81" width="359" height="18" font="5">still break the confidentiality of user requests if the client</text>
<text top="129" left="81" width="359" height="18" font="5">supports the TLS False Start extension <a href="sample-technical.html#12">[30]. </a>This extension</text>
<text top="144" left="81" width="359" height="18" font="5">reduces connection latency by having the client send early</text>
<text top="160" left="81" width="359" height="18" font="5">application data (such as an HTTP request) without waiting</text>
<text top="176" left="81" width="91" height="18" font="5">for the server’s</text>
<text top="180" left="176" width="48" height="12" font="25">Finished</text>
<text top="176" left="229" width="211" height="18" font="5">message to arrive. Recent versions</text>
<text top="191" left="81" width="359" height="18" font="5">of Chrome, Internet Explorer, and Firefox implement False</text>
<text top="207" left="81" width="359" height="18" font="5">Start, but their policies on when to enable it vary between</text>
<text top="223" left="80" width="361" height="18" font="5">versions. Firefox 35, Chrome 41, and Internet Explorer (Win-</text>
<text top="238" left="81" width="219" height="18" font="5">dows 10) send False Start data with</text>
<text top="244" left="305" width="26" height="11" font="24">DHE</text>
<text top="238" left="331" width="109" height="18" font="5">. In these cases, a</text>
<text top="254" left="81" width="359" height="18" font="5">man-in-the-middle can record the handshake and decrypt the</text>
<text top="270" left="81" width="359" height="18" font="5">False Start payload at leisure. We note that this initial data</text>
<text top="286" left="81" width="359" height="18" font="5">sent by a browser often contains sensitive user authentication</text>
<text top="301" left="81" width="266" height="18" font="5">information, such as passwords and cookies.</text>
<text top="336" left="81" width="22" height="16" font="4">3.5</text>
<text top="336" left="121" width="304" height="16" font="4">Other Weak and Misconfigured Groups</text>
<text top="354" left="94" width="346" height="18" font="5">In our scans, we found several other exploitable security</text>
<text top="369" left="81" width="329" height="18" font="5">issues in the DHE configurations used by TLS servers.</text>
<text top="392" left="81" width="207" height="18" font="14"><b>512-bit primes in non-export</b></text>
<text top="398" left="295" width="27" height="11" font="30"><b>DHE</b></text>
<text top="392" left="342" width="99" height="18" font="5">We found 2,631</text>
<text top="408" left="81" width="359" height="18" font="5">servers with browser-trusted certificates (and 118 in the</text>
<text top="424" left="80" width="359" height="18" font="5">Top 1M domains) that used 512-bit or weaker primes for</text>
<text top="439" left="81" width="67" height="18" font="5">non-export</text>
<text top="445" left="155" width="26" height="11" font="24">DHE</text>
<text top="439" left="181" width="259" height="18" font="5">. In these instances, active attacks may</text>
<text top="455" left="81" width="256" height="18" font="5">be unnecessary. If a browser negotiates a</text>
<text top="461" left="341" width="26" height="11" font="24">DHE</text>
<text top="455" left="373" width="67" height="18" font="5">ciphersuite</text>
<text top="471" left="80" width="168" height="18" font="5">with one of these servers, a</text>
<text top="475" left="253" width="42" height="12" font="15"><i>passive</i></text>
<text top="471" left="301" width="139" height="18" font="5">eavesdropper can later</text>
<text top="486" left="81" width="359" height="18" font="5">compute the discrete log and obtain the TLS session keys</text>
<text top="502" left="81" width="359" height="18" font="5">for the connection. An active attack may still be necessary</text>
<text top="518" left="80" width="359" height="18" font="5">when the client’s ordering of ciphersuites would result in the</text>
<text top="533" left="81" width="112" height="18" font="5">server not selecting</text>
<text top="539" left="197" width="25" height="11" font="24">DHE</text>
<text top="533" left="222" width="131" height="18" font="5">. In this case, as in the</text>
<text top="539" left="357" width="83" height="11" font="24">DHE_EXPORT</text>
<text top="549" left="81" width="359" height="18" font="5">downgrade attack, an active attacker can force the server to</text>
<text top="565" left="81" width="118" height="18" font="5">choose a vulnerable</text>
<text top="571" left="203" width="26" height="11" font="24">DHE</text>
<text top="565" left="234" width="69" height="18" font="5">ciphersuite.</text>
<text top="580" left="94" width="348" height="18" font="5">As a proof-of-concept, we implemented a passive eaves-</text>
<text top="596" left="81" width="115" height="18" font="5">dropper for regular</text>
<text top="602" left="200" width="26" height="11" font="24">DHE</text>
<text top="596" left="231" width="209" height="18" font="5">connections and used it to decrypt</text>
<text top="612" left="81" width="359" height="18" font="5">test connections to <a href="http://www.fbi.gov">www.fbi.gov. </a>Until April 2015, this server</text>
<text top="628" left="81" width="359" height="18" font="5">used the default 512-bit DH group from OpenSSL, which</text>
<text top="643" left="80" width="361" height="18" font="5">was the third group for which we performed the NFS pre-</text>
<text top="659" left="81" width="276" height="18" font="5">computation. The website no longer supports</text>
<text top="665" left="361" width="26" height="11" font="24">DHE</text>
<text top="659" left="387" width="4" height="18" font="5">.</text>
<text top="682" left="80" width="276" height="18" font="14"><b>Attacks on composite-order subgroups</b></text>
<text top="682" left="377" width="62" height="18" font="5">Failure to</text>
<text top="697" left="81" width="359" height="18" font="5">generate Diffie-Hellman primes according to best practices</text>
<text top="713" left="81" width="359" height="18" font="5">can result in devastating attacks. Not every TLS server</text>
<text top="729" left="81" width="359" height="18" font="5">uses “safe” primes. Out of approximately 70,000 distinct</text>
<text top="745" left="81" width="361" height="18" font="5">primes seen across both export and non-export TLS scans,</text>
<text top="760" left="80" width="216" height="18" font="5">4,800 were not safe, meaning that (</text>
<text top="764" left="296" width="7" height="13" font="8"><i>p</i></text>
<text top="764" left="306" width="11" height="13" font="19">−</text>
<text top="760" left="320" width="12" height="18" font="5">1)</text>
<text top="764" left="332" width="7" height="13" font="8"><i>/</i></text>
<text top="760" left="339" width="103" height="18" font="5">2 was composite.</text>
<text top="776" left="79" width="249" height="18" font="5">(Incidentally, we also found 9 composite</text>
<text top="780" left="333" width="7" height="13" font="8"><i>p</i></text>
<text top="776" left="340" width="99" height="18" font="5">.) These groups</text>
<text top="792" left="81" width="240" height="18" font="5">are not necessarily vulnerable, as long as</text>
<text top="796" left="324" width="7" height="13" font="8"><i>g</i></text>
<text top="792" left="335" width="104" height="18" font="5">generates a group</text>
<text top="807" left="80" width="360" height="18" font="5">with at least one sufficiently large subgroup order to rule out</text>
<text top="823" left="81" width="262" height="18" font="5">the Pohlig-Hellman algorithm as an attack.</text>
<text top="839" left="94" width="345" height="18" font="5">In some real-life configurations, however, choosing such</text>
<text top="854" left="81" width="359" height="18" font="5">primes can lead to an attack. For efficiency reasons, some</text>
<text top="870" left="81" width="212" height="18" font="5">implementations use ephemeral keys</text>
<text top="874" left="296" width="7" height="13" font="8"><i>g</i></text>
<text top="872" left="303" width="6" height="8" font="9"><i>x</i></text>
<text top="870" left="313" width="127" height="18" font="5">with a short exponent</text>
<text top="890" left="81" width="8" height="13" font="8"><i>x</i></text>
<text top="886" left="89" width="182" height="18" font="5">; commonly suggested sizes for</text>
<text top="890" left="275" width="8" height="13" font="8"><i>x</i></text>
<text top="886" left="287" width="153" height="18" font="5">are as small as 160 or 224</text>
<text top="901" left="81" width="359" height="18" font="5">bits, intended to match the estimated strength of a 1024- or</text>
<text top="917" left="80" width="151" height="18" font="5">2048-bit group. For safe</text>
<text top="921" left="237" width="7" height="13" font="8"><i>p</i></text>
<text top="917" left="244" width="196" height="18" font="5">, such exponent lengths are not</text>
<text top="933" left="81" width="359" height="18" font="5">known to decrease security, as the most efficient attack will</text>
<text top="948" left="81" width="359" height="18" font="5">be the Pollard lambda algorithm. But if the order of the</text>
<text top="964" left="81" width="135" height="18" font="5">subgroup generated by</text>
<text top="968" left="220" width="7" height="13" font="8"><i>g</i></text>
<text top="964" left="232" width="208" height="18" font="5">has small factors, they can be used</text>
<text top="980" left="81" width="359" height="18" font="5">to recover information about exponents. From a subset of</text>
<text top="996" left="81" width="41" height="18" font="5">factors</text>
<text top="1000" left="128" width="7" height="13" font="19">{</text>
<text top="1000" left="135" width="6" height="13" font="8"><i>q</i></text>
<text top="997" left="141" width="5" height="8" font="9"><i>e</i></text>
<text top="1000" left="147" width="5" height="7" font="31">1</text>
<text top="1007" left="141" width="5" height="8" font="16">1</text>
<text top="1000" left="155" width="25" height="13" font="8"><i>. . . q</i></text>
<text top="997" left="181" width="5" height="8" font="9"><i>e</i></text>
<text top="1000" left="186" width="6" height="7" font="20"><i>k</i></text>
<text top="1007" left="180" width="6" height="8" font="9"><i>k</i></text>
<text top="1000" left="193" width="7" height="13" font="19">}</text>
<text top="996" left="206" width="27" height="18" font="5">with</text>
<text top="998" left="239" width="14" height="7" font="18">Q</text>
<text top="1008" left="253" width="4" height="8" font="9"><i>i</i></text>
<text top="1000" left="260" width="6" height="13" font="8"><i>q</i></text>
<text top="997" left="267" width="5" height="8" font="9"><i>e</i></text>
<text top="1000" left="272" width="4" height="7" font="20"><i>i</i></text>
<text top="1007" left="266" width="4" height="8" font="9"><i>i</i></text>
<text top="996" left="284" width="11" height="18" font="5">=</text>
<text top="1000" left="300" width="6" height="13" font="8"><i>z</i></text>
<text top="996" left="307" width="132" height="18" font="5">, Pohlig-Hellman can</text>
<text top="1013" left="81" width="42" height="18" font="5">recover</text>
<text top="1017" left="127" width="8" height="13" font="8"><i>x</i></text>
<text top="1013" left="144" width="26" height="18" font="5">mod</text>
<text top="1017" left="175" width="6" height="13" font="8"><i>z</i></text>
<text top="1013" left="187" width="42" height="18" font="5">in time</text>
<text top="1015" left="233" width="16" height="7" font="18">P</text>
<text top="1026" left="249" width="4" height="8" font="9"><i>i</i></text>
<text top="1017" left="256" width="6" height="13" font="8"><i>e</i></text>
<text top="1022" left="263" width="4" height="8" font="9"><i>i</i></text>
<text top="1008" left="267" width="12" height="13" font="19">√</text>
<text top="1017" left="279" width="6" height="13" font="8"><i>q</i></text>
<text top="1022" left="285" width="4" height="8" font="9"><i>i</i></text>
<text top="1013" left="290" width="19" height="18" font="5">. If</text>
<text top="1017" left="313" width="8" height="13" font="8"><i>x</i></text>
<text top="1017" left="325" width="11" height="13" font="19">≤</text>
<text top="1017" left="340" width="6" height="13" font="8"><i>z</i></text>
<text top="1013" left="347" width="93" height="18" font="5">, this suffices to</text>
<text top="1028" left="81" width="44" height="18" font="5">recover</text>
<text top="1032" left="129" width="8" height="13" font="8"><i>x</i></text>
<text top="1028" left="137" width="303" height="18" font="5">. If not, Pollard lambda can use this information</text>
<text top="1046" left="81" width="60" height="18" font="5">to recover</text>
<text top="1050" left="145" width="8" height="13" font="8"><i>x</i></text>
<text top="1046" left="158" width="43" height="18" font="5">in time</text>
<text top="1047" left="206" width="15" height="7" font="18">p</text>
<text top="1050" left="221" width="21" height="13" font="8"><i>x/z</i></text>
<text top="1046" left="242" width="197" height="18" font="5">. This attack was first described</text>
<text top="1062" left="81" width="300" height="18" font="5">as hypothetical by van Oorschot and Wiener <a href="sample-technical.html#13">[51].</a></text>
<text top="82" left="489" width="345" height="18" font="5">To see if TLS servers in the wild were vulnerable to this</text>
<text top="97" left="475" width="361" height="18" font="5">attack, we tested various non-safe primes found in our scans.</text>
<text top="113" left="475" width="152" height="18" font="5">For each non-safe prime</text>
<text top="117" left="634" width="7" height="13" font="8"><i>p</i></text>
<text top="113" left="641" width="193" height="18" font="5">, we opportunistically factored</text>
<text top="133" left="475" width="7" height="13" font="8"><i>p</i></text>
<text top="133" left="485" width="11" height="13" font="19">−</text>
<text top="129" left="499" width="335" height="18" font="5">1 using Bernstein’s batch method <a href="sample-technical.html#12">[5]. </a>We then ran the</text>
<text top="144" left="475" width="261" height="18" font="5">GMP-ECM implementations of the Pollard</text>
<text top="148" left="740" width="7" height="13" font="8"><i>p</i></text>
<text top="148" left="750" width="11" height="13" font="19">−</text>
<text top="144" left="764" width="70" height="18" font="5">1 algorithm</text>
<text top="160" left="475" width="359" height="18" font="5">and the ECM factoring methods <a href="sample-technical.html#13">[54] </a>for 5 days parallelized</text>
<text top="176" left="475" width="314" height="18" font="5">across 28 cores and discovered 36,447 prime factors.</text>
<text top="191" left="489" width="196" height="18" font="5">We then examined the generators</text>
<text top="195" left="688" width="7" height="13" font="8"><i>g</i></text>
<text top="191" left="699" width="124" height="18" font="5">used with each prime</text>
<text top="195" left="826" width="7" height="13" font="8"><i>p</i></text>
<text top="191" left="833" width="4" height="18" font="5">.</text>
<text top="207" left="475" width="135" height="18" font="5">We classified a tuple (</text>
<text top="211" left="609" width="33" height="13" font="8"><i>p, g, y</i></text>
<text top="207" left="643" width="191" height="18" font="5">) sent by a server as interesting</text>
<text top="223" left="475" width="163" height="18" font="5">if the prime factorization of</text>
<text top="227" left="643" width="7" height="13" font="8"><i>p</i></text>
<text top="227" left="653" width="11" height="13" font="19">−</text>
<text top="223" left="666" width="168" height="18" font="5">1 had revealed prime factors</text>
<text top="238" left="475" width="88" height="18" font="5">of the order of</text>
<text top="242" left="568" width="7" height="13" font="8"><i>g</i></text>
<text top="238" left="575" width="259" height="18" font="5">, and ordered them by the estimated work</text>
<text top="254" left="475" width="359" height="18" font="5">required using Pohlig-Hellman and Pollard lambda to recover</text>
<text top="270" left="475" width="150" height="18" font="5">a target private exponent</text>
<text top="274" left="630" width="8" height="13" font="8"><i>x</i></text>
<text top="270" left="642" width="192" height="18" font="5">of length ranging from 64 to 256</text>
<text top="286" left="475" width="138" height="18" font="5">bits. There were 753 (</text>
<text top="290" left="613" width="20" height="13" font="8"><i>p, g</i></text>
<text top="286" left="634" width="200" height="18" font="5">) pairs where we knew factors of</text>
<text top="301" left="475" width="158" height="18" font="5">the subgroup generated by</text>
<text top="305" left="637" width="7" height="13" font="8"><i>g</i></text>
<text top="301" left="644" width="190" height="18" font="5">; these had been used for 40,903</text>
<text top="317" left="475" width="210" height="18" font="5">connections across all of our scans.</text>
<text top="333" left="489" width="345" height="18" font="5">We implemented the van Oorschot and Wiener algorithm in</text>
<text top="348" left="475" width="359" height="18" font="5">Sage <a href="sample-technical.html#13">[47] </a>using a parallel Pollard rho implementation that we</text>
<text top="364" left="475" width="359" height="18" font="5">wrote in C using the GMP library. We used the distinguished</text>
<text top="380" left="475" width="359" height="18" font="5">points method for collision detection; for a prime known in</text>
<text top="395" left="475" width="359" height="18" font="5">advance, this implementation can be arbitrarily sped up by</text>
<text top="411" left="475" width="274" height="18" font="5">precomputing a table of distinguished points.</text>
<text top="427" left="489" width="346" height="18" font="5">We computed partial information about the server secret</text>
<text top="442" left="475" width="359" height="18" font="5">exponent used in 460 exchanges and were able to recover</text>
<text top="458" left="475" width="359" height="18" font="5">the whole exponent used by 159 different hosts, 53 of which</text>
<text top="474" left="475" width="359" height="18" font="5">authenticated with valid browser-trusted certificates. In all</text>
<text top="489" left="475" width="359" height="18" font="5">cases, the vulnerable hosts used 512-bit prime moduli; three</text>
<text top="505" left="475" width="361" height="18" font="5">of them used 160-bit exponents and the rest used 128 bits.</text>
<text top="521" left="475" width="359" height="18" font="5">The order of the largest-order subgroup ranged from 46 bits</text>
<text top="537" left="474" width="360" height="18" font="5">(which finishes in seconds) to 81 bits (which took between</text>
<text top="552" left="475" width="359" height="18" font="5">50 and 176 hours) implementation. The Pollard lambda</text>
<text top="568" left="475" width="358" height="18" font="5">calculations used interval width varying from 40 to 70 bits.</text>
<text top="584" left="489" width="348" height="18" font="5">Our computations would have allowed us to hijack con-</text>
<text top="599" left="475" width="359" height="18" font="5">nections to a variety of vulnerable TLS servers, including</text>
<text top="615" left="475" width="359" height="18" font="5">web interfaces for VPN devices (48 hosts), communications</text>
<text top="631" left="475" width="359" height="18" font="5">software (21 hosts), web conferencing servers (27 hosts), and</text>
<text top="646" left="475" width="359" height="18" font="5">FTP servers (6 hosts). As a proof-of-concept, we modified</text>
<text top="662" left="475" width="359" height="18" font="5">our man-in-the-middle attacker of <a href="sample-technical.html#5">§3.3 </a>to impersonate a</text>
<text top="678" left="475" width="359" height="18" font="5">vulnerable server and capture user credentials. Compared</text>
<text top="693" left="475" width="359" height="18" font="5">to an attack using NFS, we could compute the discrete log</text>
<text top="709" left="475" width="294" height="18" font="5">with a delay hardly noticeable for browser users.</text>
<text top="732" left="475" width="149" height="18" font="14"><b>Misconfigured groups</b></text>
<text top="732" left="642" width="192" height="18" font="5">The Digital Signature Algorithm</text>
<text top="748" left="474" width="141" height="18" font="5">(DSA) <a href="sample-technical.html#13">[38] </a>uses primes</text>
<text top="752" left="619" width="7" height="13" font="8"><i>p</i></text>
<text top="748" left="631" width="57" height="18" font="5">such that</text>
<text top="752" left="693" width="7" height="13" font="8"><i>p</i></text>
<text top="752" left="703" width="11" height="13" font="19">−</text>
<text top="748" left="716" width="117" height="18" font="5">1 has a large prime</text>
<text top="764" left="475" width="35" height="18" font="5">factor</text>
<text top="768" left="515" width="6" height="13" font="8"><i>q</i></text>
<text top="764" left="526" width="22" height="18" font="5">and</text>
<text top="768" left="553" width="7" height="13" font="8"><i>g</i></text>
<text top="764" left="565" width="211" height="18" font="5">generates only a subgroup of order</text>
<text top="768" left="781" width="6" height="13" font="8"><i>q</i></text>
<text top="764" left="788" width="46" height="18" font="5">. When</text>
<text top="779" left="475" width="359" height="18" font="5">using properly generated DSA parameters, these groups are</text>
<text top="795" left="475" width="359" height="18" font="5">secure for use in Diffie-Hellman key exchanges. Notably, DSA</text>
<text top="811" left="475" width="204" height="18" font="5">groups are hard-coded in Java’s</text>
<text top="817" left="686" width="148" height="11" font="26">sun.security.provider</text>
<text top="826" left="475" width="359" height="18" font="5">package and are used by default in many Java-based TLS</text>
<text top="842" left="475" width="359" height="18" font="5">servers. However, some servers in our scans used Java’s DSA</text>
<text top="858" left="475" width="55" height="18" font="5">primes as</text>
<text top="862" left="533" width="7" height="13" font="8"><i>p</i></text>
<text top="858" left="544" width="243" height="18" font="5">but mistakenly used the DSA group order</text>
<text top="862" left="790" width="6" height="13" font="8"><i>q</i></text>
<text top="858" left="800" width="34" height="18" font="5">in the</text>
<text top="874" left="475" width="127" height="18" font="5">place of the generator</text>
<text top="878" left="607" width="7" height="13" font="8"><i>g</i></text>
<text top="874" left="614" width="220" height="18" font="5">. We found 5,741 hosts misconfigured</text>
<text top="889" left="475" width="53" height="18" font="5">this way.</text>
<text top="905" left="489" width="116" height="18" font="5">This substitution of</text>
<text top="909" left="609" width="6" height="13" font="8"><i>q</i></text>
<text top="905" left="619" width="16" height="18" font="5">for</text>
<text top="909" left="639" width="7" height="13" font="8"><i>g</i></text>
<text top="905" left="650" width="186" height="18" font="5">is likely due to a usability prob-</text>
<text top="921" left="475" width="359" height="18" font="5">lem: the canonical ASN.1 representation of Diffie-Hellman</text>
<text top="936" left="475" width="361" height="18" font="5">key exchange parameters (coming from PKCS#3) is a se-</text>
<text top="952" left="475" width="52" height="18" font="5">quence (</text>
<text top="956" left="527" width="20" height="13" font="8"><i>p, g</i></text>
<text top="952" left="547" width="286" height="18" font="5">), while that of DSA parameters (coming from</text>
<text top="968" left="475" width="64" height="18" font="5">PKIX) is (</text>
<text top="972" left="539" width="32" height="13" font="8"><i>p, q, g</i></text>
<text top="968" left="572" width="262" height="18" font="5">); we conjecture that the confusion between</text>
<text top="983" left="475" width="298" height="18" font="5">these formats led to a simple programming error.</text>
<text top="999" left="489" width="280" height="18" font="5">In a DSA group, the subgroup generated by</text>
<text top="1003" left="774" width="6" height="13" font="8"><i>q</i></text>
<text top="999" left="787" width="48" height="18" font="5">is likely</text>
<text top="1015" left="475" width="346" height="18" font="5">to have many small prime factors in its order, since for</text>
<text top="1019" left="827" width="7" height="13" font="8"><i>p</i></text>
<text top="1030" left="475" width="182" height="18" font="5">generated according to <a href="sample-technical.html#13">[38], </a>(</text>
<text top="1034" left="657" width="7" height="13" font="8"><i>p</i></text>
<text top="1034" left="667" width="11" height="13" font="19">−</text>
<text top="1030" left="681" width="13" height="18" font="5">1)</text>
<text top="1034" left="694" width="13" height="13" font="8"><i>/q</i></text>
<text top="1030" left="712" width="124" height="18" font="5">is a random integer.</text>
<text top="1046" left="475" width="59" height="18" font="5">For Java’s</text>
<text top="1052" left="538" width="148" height="11" font="26">sun.security.provider</text>
<text top="1046" left="690" width="118" height="18" font="5">512-bit prime, using</text>
<text top="1050" left="811" width="6" height="13" font="8"><i>q</i></text>
<text top="1046" left="822" width="12" height="18" font="5">as</text>
<text top="1062" left="475" width="359" height="18" font="5">a generator leaks 290 bits of information about exponents at</text>
<text top="1107" left="454" width="7" height="18" font="5">6</text>
</page>
 link to page 13  link to page 8  link to page 12  link to page 12  link to page 5  link to page 7  link to page 12  link to page 12  link to page 12 <page number="7" position="absolute" top="0" left="0" height="1188" width="918">
<text top="82" left="81" width="112" height="18" font="5">a cost of roughly 2</text>
<text top="84" left="193" width="11" height="8" font="16">40</text>
<text top="82" left="209" width="230" height="18" font="5">operations. Luckily, since the provider</text>
<text top="97" left="81" width="227" height="18" font="5">generates exponents of length max(</text>
<text top="101" left="308" width="15" height="13" font="8"><i>n/</i></text>
<text top="97" left="323" width="7" height="18" font="5">2</text>
<text top="101" left="330" width="4" height="13" font="8"><i>,</i></text>
<text top="97" left="336" width="50" height="18" font="5">384) for</text>
<text top="101" left="393" width="8" height="13" font="8"><i>n</i></text>
<text top="97" left="402" width="22" height="18" font="5">-bit</text>
<text top="101" left="430" width="7" height="13" font="8"><i>p</i></text>
<text top="97" left="437" width="4" height="18" font="5">,</text>
<text top="113" left="81" width="359" height="18" font="5">this does not suffice to recover a full exponent. Still, this</text>
<text top="129" left="81" width="359" height="18" font="5">misconfiguration bug results in a significant loss of security</text>
<text top="144" left="81" width="295" height="18" font="5">and serves as a cautionary tale for programmers.</text>
<text top="181" left="81" width="13" height="16" font="4">4.</text>
<text top="181" left="112" width="272" height="16" font="4">STATE-LEVEL THREATS TO DH</text>
<text top="199" left="94" width="347" height="18" font="5">The previous sections demonstrate the existence of practi-</text>
<text top="215" left="81" width="359" height="18" font="5">cal attacks against Diffie-Hellman key exchange as currently</text>
<text top="230" left="81" width="359" height="18" font="5">used by TLS. However, these attacks rely on the ability to</text>
<text top="246" left="81" width="359" height="18" font="5">downgrade connections to export-grade crypto or on the use</text>
<text top="262" left="81" width="359" height="18" font="5">of unsafe parameters. In this section we address the following</text>
<text top="278" left="81" width="361" height="18" font="5">question: how secure is Diffie-Hellman in broader practice,</text>
<text top="293" left="81" width="361" height="18" font="5">as used in other protocols that do not suffer from downgrade,</text>
<text top="309" left="81" width="243" height="18" font="5">and when applied with stronger groups?</text>
<text top="325" left="94" width="345" height="18" font="5">To answer this question we must first examine how the</text>
<text top="340" left="81" width="359" height="18" font="5">number field sieve for discrete log scales to 768- and 1024-bit</text>
<text top="356" left="81" width="359" height="18" font="5">groups. As we argue below, 768-bit groups, which are still in</text>
<text top="372" left="81" width="359" height="18" font="5">relatively widespread use, are now within reach for academic</text>
<text top="387" left="81" width="359" height="18" font="5">computational resources, and performing precomputations</text>
<text top="403" left="81" width="359" height="18" font="5">for a small number of 1024-bit groups is plausibly within</text>
<text top="419" left="81" width="359" height="18" font="5">the resources of state-level attackers. The precomputation</text>
<text top="434" left="80" width="360" height="18" font="5">would likely require special-purpose hardware, but would not</text>
<text top="450" left="81" width="359" height="18" font="5">require any major algorithmic improvements beyond what is</text>
<text top="466" left="81" width="359" height="18" font="5">known in the academic literature. We further show that even</text>
<text top="482" left="81" width="359" height="18" font="5">in the 1024-bit case, the descent time—necessary to solve</text>
<text top="497" left="81" width="361" height="18" font="5">any specific discrete log instance within a common group—</text>
<text top="513" left="80" width="359" height="18" font="5">would be fast enough to break individual key exchanges in</text>
<text top="529" left="81" width="108" height="18" font="5">close to real time.</text>
<text top="544" left="94" width="348" height="18" font="5">In light of these results, we examine several standard Inter-</text>
<text top="560" left="81" width="359" height="18" font="5">net security protocols—IKE, SSH, and TLS—to determine</text>
<text top="576" left="81" width="361" height="18" font="5">the vulnerability of their key exchanges to attacks by resource-</text>
<text top="591" left="81" width="359" height="18" font="5">ful attackers. Although the cost of the precomputation for a</text>
<text top="607" left="80" width="360" height="18" font="5">1024-bit group is several times higher than for an RSA key</text>
<text top="623" left="81" width="359" height="18" font="5">of equal size, we observe that a one-time investment could be</text>
<text top="638" left="81" width="359" height="18" font="5">used to attack millions of hosts, due to widespread reuse of</text>
<text top="654" left="81" width="361" height="18" font="5">the most common Diffie-Hellman parameters. Unfortunately,</text>
<text top="670" left="81" width="359" height="18" font="5">our measurements also indicate that it may be very difficult</text>
<text top="686" left="81" width="359" height="18" font="5">to sunset the use of fixed 1024-bit Diffie-Hellman groups that</text>
<text top="701" left="81" width="361" height="18" font="5">have long been embedded in standards and implementations.</text>
<text top="717" left="94" width="347" height="18" font="5">Finally, we apply this new understanding to a set of re-</text>
<text top="733" left="81" width="359" height="18" font="5">cently published documents leaked by Edward Snowden <a href="sample-technical.html#13">[46]</a></text>
<text top="748" left="81" width="359" height="18" font="5">to evaluate the hypothesis that the National Security Agency</text>
<text top="764" left="81" width="20" height="18" font="5">has</text>
<text top="769" left="106" width="43" height="12" font="15"><i>already</i></text>
<text top="764" left="154" width="285" height="18" font="5">implemented such a capability. We show that</text>
<text top="780" left="81" width="359" height="18" font="5">this hypothesis is consistent with the published details of</text>
<text top="795" left="81" width="361" height="18" font="5">the intelligence community’s cryptanalytic capabilities, and,</text>
<text top="811" left="81" width="359" height="18" font="5">indeed, matches the known capabilities more closely than</text>
<text top="827" left="81" width="359" height="18" font="5">other proposed explanations, such as novel breaks on RC4</text>
<text top="842" left="81" width="359" height="18" font="5">or AES. We believe that this analysis may help shed light</text>
<text top="858" left="81" width="359" height="18" font="5">on unanswered questions about how NSA may be gaining</text>
<text top="874" left="81" width="227" height="18" font="5">access to VPN, SSH, and TLS traffic.</text>
<text top="903" left="81" width="22" height="16" font="4">4.1</text>
<text top="903" left="121" width="283" height="16" font="4">Scaling NFS to 768- and 1024-bit DH</text>
<text top="921" left="94" width="345" height="18" font="5">Estimating the cost for discrete log cryptanalysis at longer</text>
<text top="936" left="81" width="359" height="18" font="5">key sizes is far from straightforward, due in part to the</text>
<text top="952" left="81" width="359" height="18" font="5">complexity of parameter tuning and to tradeoffs between the</text>
<text top="968" left="81" width="359" height="18" font="5">sieving and linear algebra steps, which have very different</text>
<text top="983" left="81" width="359" height="18" font="5">computational characteristics. (Much more attention has</text>
<text top="999" left="81" width="361" height="18" font="5">gone to understanding 1024-bit factorization, but, even there,</text>
<text top="1015" left="81" width="359" height="18" font="5">many published estimates are crude extrapolations of the</text>
<text top="1030" left="81" width="359" height="18" font="5">asymptotic complexity.) We attempt estimates for 768- and</text>
<text top="1046" left="80" width="359" height="18" font="5">1024-bit discrete log based on the existing literature and</text>
<text top="1062" left="81" width="359" height="18" font="5">our own experiments, but further work is needed for greater</text>
<text top="82" left="475" width="359" height="18" font="5">confidence, particularly for the 1024-bit case. We summarize</text>
<text top="97" left="475" width="291" height="18" font="5">all the costs, measured or estimated, in Table <a href="sample-technical.html#8">2.</a></text>
<text top="119" left="475" width="271" height="18" font="14"><b>DH-768: Feasible with academic power</b></text>
<text top="119" left="764" width="72" height="18" font="5">For the 768-</text>
<text top="135" left="475" width="359" height="18" font="5">bit case, we base our estimates on the recent discrete log</text>
<text top="150" left="475" width="359" height="18" font="5">record at 596 bits <a href="sample-technical.html#12">[8] </a>and the integer factorization record of</text>
<text top="166" left="475" width="359" height="18" font="5">768 bits from 2009 <a href="sample-technical.html#12">[29]. </a>While the algorithms for factorization</text>
<text top="182" left="475" width="359" height="18" font="5">and discrete log are similar, the discrete log linear algebra</text>
<text top="197" left="475" width="359" height="18" font="5">stage is many times more difficult, as the matrix entries are</text>
<text top="213" left="475" width="359" height="18" font="5">no longer Boolean. We can reduce overall time by sieving</text>
<text top="229" left="475" width="359" height="18" font="5">more, thus generating a smaller input matrix to the linear</text>
<text top="244" left="475" width="359" height="18" font="5">algebra step. Since sieving parallelizes better than linear</text>
<text top="260" left="475" width="298" height="18" font="5">algebra, this tradeoff is desirable for large inputs.</text>
<text top="276" left="489" width="346" height="18" font="5">A 596-bit factorization takes about 5 core-years, most</text>
<text top="291" left="475" width="359" height="18" font="5">of it spent on sieving. In comparison, the record 596-bit</text>
<text top="307" left="475" width="359" height="18" font="5">discrete log effort tuned parameters such that they spent</text>
<text top="323" left="475" width="359" height="18" font="5">50 core-years on sieving. This reduced their linear algebra</text>
<text top="339" left="475" width="359" height="18" font="5">calculation to 80 core-years. We used this same strategy in</text>
<text top="354" left="475" width="193" height="18" font="5">our 512-bit experiments in <a href="sample-technical.html#5">§3.3.</a></text>
<text top="370" left="489" width="345" height="18" font="5">Similarly, the 768-bit RSA factoring record spent more</text>
<text top="386" left="475" width="359" height="18" font="5">time on sieving in order to save time on the linear algebra</text>
<text top="401" left="475" width="359" height="18" font="5">step. The cost of sieving was around 1500 core-years, and</text>
<text top="417" left="475" width="361" height="18" font="5">the matrix that was produced had 200M rows and columns.</text>
<text top="433" left="475" width="361" height="18" font="5">As a result, the linear algebra took 150 core-years, but tak-</text>
<text top="448" left="475" width="359" height="18" font="5">ing algorithmic improvements since 2009 into account and</text>
<text top="464" left="475" width="173" height="18" font="5">optimizing for the total <a href="sample-technical.html#7">time,</a></text>
<text top="466" left="649" width="5" height="8" font="16"><a href="sample-technical.html#7">3</a></text>
<text top="464" left="659" width="175" height="18" font="5">we estimate that factoring an</text>
<text top="480" left="475" width="313" height="18" font="5">RSA-768 integer would take 900 core-years in total.</text>
<text top="495" left="489" width="345" height="18" font="5">For a 768-bit discrete log, we can expect that ten times as</text>
<text top="511" left="475" width="359" height="18" font="5">much sieving as the RSA case would reduce the matrix to</text>
<text top="527" left="475" width="359" height="18" font="5">around 150M rows. We extrapolate from experiments with</text>
<text top="542" left="475" width="359" height="18" font="5">existing software that this linear algebra would take 28,500</text>
<text top="558" left="475" width="359" height="18" font="5">core-years, for a total of 36,500 core-years. This is within</text>
<text top="574" left="475" width="303" height="18" font="5">reach by computing power available to academics.</text>
<text top="590" left="489" width="347" height="18" font="5">The descent step takes relatively little time. We experi-</text>
<text top="605" left="475" width="359" height="18" font="5">mented with both CADO-NFS and a new implementation</text>
<text top="621" left="475" width="359" height="18" font="5">with GMP-ECM based on the early-abort strategy described</text>
<text top="637" left="475" width="359" height="18" font="5">in <a href="sample-technical.html#12">[6]. </a>Using these techniques, the initial descent phase took</text>
<text top="652" left="475" width="359" height="18" font="5">an average of around 1 core-day. The remaining phase uses</text>
<text top="668" left="475" width="359" height="18" font="5">sieving much as in the precomputation; extrapolating from</text>
<text top="684" left="475" width="359" height="18" font="5">experiments, the rest of the descent should take at most</text>
<text top="699" left="475" width="359" height="18" font="5">1 core-day. In total, after precomputation, the cost of a</text>
<text top="715" left="475" width="359" height="18" font="5">single 768-bit discrete log computation is around 2 core-days</text>
<text top="731" left="475" width="162" height="18" font="5">and is easily parallelizable.</text>
<text top="752" left="475" width="320" height="18" font="14"><b>DH-1024: Plausible with state-level resources</b></text>
<text top="752" left="814" width="22" height="18" font="5">Ex-</text>
<text top="768" left="475" width="359" height="18" font="5">perimentally extrapolating sieving parameters to the 1024-bit</text>
<text top="784" left="475" width="359" height="18" font="5">case is difficult due to the tradeoffs between the steps of the</text>
<text top="799" left="475" width="359" height="18" font="5">algorithm and their relative parallelism. The prior work</text>
<text top="815" left="475" width="359" height="18" font="5">proposing parameters for factoring a 1024-bit RSA key is</text>
<text top="831" left="475" width="359" height="18" font="5">thin: <a href="sample-technical.html#12">[28] </a>proposes smoothness bounds of 42 bits, but the</text>
<text top="847" left="475" width="288" height="18" font="5">proposed value of the sieving region parameter</text>
<text top="853" left="768" width="7" height="11" font="26">I</text>
<text top="847" left="780" width="55" height="18" font="5">is clearly</text>
<text top="862" left="475" width="361" height="18" font="5">too small, giving too few smooth results per sieving sub-</text>
<text top="878" left="475" width="359" height="18" font="5">task. Since no publicly available software can currently deal</text>
<text top="894" left="475" width="86" height="18" font="5">with values of</text>
<text top="900" left="566" width="7" height="11" font="26">I</text>
<text top="894" left="579" width="256" height="18" font="5">larger than those proposed, we could not</text>
<text top="909" left="475" width="359" height="18" font="5">experimentally update the estimates of this paper with more</text>
<text top="925" left="475" width="164" height="18" font="5">relevant parameter choices.</text>
<text top="941" left="489" width="347" height="18" font="5">Without better parameter choices, we resort to extrapolat-</text>
<text top="956" left="475" width="361" height="18" font="5">ing from asymptotic complexity. For the number field sieve,</text>
<text top="972" left="475" width="149" height="18" font="5">the complexity is exp (</text>
<text top="976" left="624" width="7" height="13" font="8"><i>k</i></text>
<text top="972" left="636" width="11" height="18" font="5">+</text>
<text top="976" left="651" width="7" height="13" font="8"><i>o</i></text>
<text top="972" left="657" width="47" height="18" font="5">(1))(log</text>
<text top="976" left="707" width="11" height="13" font="8"><i>N</i></text>
<text top="972" left="719" width="5" height="18" font="5">)</text>
<text top="974" left="725" width="5" height="8" font="16">1</text>
<text top="974" left="730" width="6" height="8" font="9"><i>/</i></text>
<text top="974" left="736" width="5" height="8" font="16">3</text>
<text top="972" left="742" width="43" height="18" font="5">(log log</text>
<text top="976" left="788" width="11" height="13" font="8"><i>N</i></text>
<text top="972" left="800" width="5" height="18" font="5">)</text>
<text top="974" left="806" width="5" height="8" font="16">2</text>
<text top="974" left="811" width="6" height="8" font="9"><i>/</i></text>
<text top="974" left="817" width="5" height="8" font="16">3</text>
<text top="974" left="823" width="7" height="7" font="18"></text>
<text top="976" left="830" width="4" height="13" font="8"><i>,</i></text>
<text top="988" left="475" width="36" height="18" font="5">where</text>
<text top="992" left="516" width="11" height="13" font="8"><i>N</i></text>
<text top="988" left="533" width="301" height="18" font="5">is the integer to factor or the prime modulus for</text>
<text top="1003" left="475" width="102" height="18" font="5">discrete log, and</text>
<text top="1007" left="582" width="7" height="13" font="8"><i>k</i></text>
<text top="1003" left="595" width="239" height="18" font="5">is an algorithm-specific constant. This</text>
<text top="1019" left="475" width="253" height="18" font="5">formula is inherently imprecise, since the</text>
<text top="1023" left="732" width="7" height="13" font="8"><i>o</i></text>
<text top="1019" left="739" width="97" height="18" font="5">(1) in the expo-</text>
<text top="1051" left="476" width="5" height="8" font="16">3</text>
<text top="1048" left="482" width="352" height="18" font="5">We would lower the smoothness bounds compared to the</text>
<text top="1062" left="475" width="113" height="18" font="5">parameters in <a href="sample-technical.html#12">[29].</a></text>
<text top="1107" left="454" width="7" height="18" font="5">7</text>
</page>
 link to page 12  link to page 12  link to page 12  link to page 12  link to page 12  link to page 12  link to page 12  link to page 8  link to page 13  link to page 12  link to page 8  link to page 13  link to page 13  link to page 13 <page number="8" position="absolute" top="0" left="0" height="1188" width="918">
	<fontspec id="32" size="12" family="GSJZLO+LMMathItalic8" color="#000000"/>
	<fontspec id="33" size="10" family="LGIJZT+LMRoman7" color="#000000"/>
<text top="87" left="222" width="40" height="11" font="21">Sieving</text>
<text top="87" left="338" width="83" height="11" font="21">Linear Algebra</text>
<text top="87" left="452" width="43" height="11" font="21">Descent</text>
<text top="108" left="179" width="6" height="10" font="22">I</text>
<text top="107" left="202" width="16" height="11" font="21">log</text>
<text top="112" left="218" width="5" height="8" font="16">2</text>
<text top="107" left="227" width="10" height="11" font="32"><i>B</i></text>
<text top="107" left="256" width="55" height="11" font="21">core-years</text>
<text top="107" left="332" width="25" height="11" font="21">rows</text>
<text top="107" left="376" width="55" height="11" font="21">core-years</text>
<text top="107" left="448" width="52" height="11" font="21">core-time</text>
<text top="127" left="108" width="49" height="11" font="21">RSA-512</text>
<text top="127" left="173" width="13" height="11" font="21">14</text>
<text top="127" left="224" width="13" height="11" font="21">29</text>
<text top="127" left="295" width="16" height="11" font="21">0.5</text>
<text top="127" left="330" width="28" height="11" font="21">4.3M</text>
<text top="127" left="409" width="23" height="11" font="21">0.33</text>
<text top="128" left="527" width="242" height="9" font="33">Timings with default CADO-NFS parameters.</text>
<text top="140" left="114" width="43" height="11" font="21">DH-512</text>
<text top="140" left="173" width="13" height="11" font="21">15</text>
<text top="140" left="224" width="13" height="11" font="21">27</text>
<text top="140" left="295" width="16" height="11" font="21">2.5</text>
<text top="140" left="330" width="28" height="11" font="21">2.1M</text>
<text top="140" left="415" width="16" height="11" font="21">7.7</text>
<text top="140" left="458" width="41" height="11" font="21">10 mins</text>
<text top="141" left="527" width="294" height="9" font="33">For the computations in this paper; may be suboptimal.</text>
<text top="160" left="108" width="49" height="11" font="21">RSA-768</text>
<text top="160" left="173" width="13" height="11" font="21">16</text>
<text top="160" left="224" width="13" height="11" font="21">37</text>
<text top="160" left="292" width="19" height="11" font="21">800</text>
<text top="160" left="327" width="31" height="11" font="21">250M</text>
<text top="160" left="413" width="19" height="11" font="21">100</text>
<text top="161" left="527" width="186" height="9" font="33">Est. based on <a href="sample-technical.html#12">[29] </a>with less sieving.</text>
<text top="174" left="114" width="43" height="11" font="21">DH-768</text>
<text top="174" left="173" width="13" height="11" font="21">17</text>
<text top="174" left="224" width="13" height="11" font="21">35</text>
<text top="174" left="282" width="29" height="11" font="21">8,000</text>
<text top="174" left="327" width="31" height="11" font="21">150M</text>
<text top="174" left="396" width="35" height="11" font="21">28,500</text>
<text top="174" left="466" width="33" height="11" font="21">2 days</text>
<text top="175" left="527" width="244" height="9" font="33">Est. based on <a href="sample-technical.html#12">[8, 29] </a>and our own experiments.</text>
<text top="194" left="101" width="56" height="11" font="21">RSA-1024</text>
<text top="194" left="173" width="13" height="11" font="21">18</text>
<text top="194" left="224" width="13" height="11" font="21">42</text>
<text top="194" left="259" width="52" height="11" font="21">1,000,000</text>
<text top="194" left="332" width="25" height="11" font="21">8.7B</text>
<text top="194" left="390" width="42" height="11" font="21">120,000</text>
<text top="195" left="527" width="179" height="9" font="33">Est. based on complexity formula.</text>
<text top="207" left="108" width="49" height="11" font="21">DH-1024</text>
<text top="207" left="173" width="13" height="11" font="21">19</text>
<text top="207" left="224" width="13" height="11" font="21">40</text>
<text top="207" left="253" width="58" height="11" font="21">10,000,000</text>
<text top="207" left="332" width="25" height="11" font="21">5.2B</text>
<text top="207" left="374" width="58" height="11" font="21">35,000,000</text>
<text top="207" left="460" width="40" height="11" font="21">30 days</text>
<text top="208" left="527" width="290" height="9" font="33">Est. based on complexity formula and our experiments.</text>
<text top="232" left="80" width="48" height="18" font="5">Table 2:</text>
<text top="232" left="134" width="321" height="18" font="14"><b>Estimating costs for factoring and discrete log</b></text>
<text top="232" left="455" width="379" height="18" font="5">. For sieving, we give two important parameters: the number of</text>
<text top="247" left="81" width="175" height="18" font="5">bits of the smoothness bound</text>
<text top="253" left="260" width="7" height="11" font="26">B</text>
<text top="247" left="272" width="196" height="18" font="5">and the sieving region parameter</text>
<text top="253" left="473" width="7" height="11" font="26">I</text>
<text top="247" left="480" width="354" height="18" font="5">. For linear algebra, all costs for DH are for safe primes; for</text>
<text top="263" left="81" width="105" height="18" font="5">DSA primes with</text>
<text top="267" left="190" width="6" height="13" font="8"><i>q</i></text>
<text top="263" left="201" width="557" height="18" font="5">of 160 bits, this should be divided by 6.4 for 1024 bits, 4.8 for 768 bits, and 3.2 for 512 bits.</text>
<text top="310" left="81" width="361" height="18" font="5">nent can hide polynomial factors. This complexity formula,</text>
<text top="325" left="80" width="27" height="18" font="5">with</text>
<text top="329" left="112" width="7" height="13" font="8"><i>k</i></text>
<text top="325" left="123" width="22" height="18" font="5">= 1</text>
<text top="329" left="145" width="4" height="13" font="8"><i>.</i></text>
<text top="325" left="149" width="290" height="18" font="5">923, describes the overall time for both discrete</text>
<text top="341" left="81" width="359" height="18" font="5">log and factorization, which are both dominated by sieving</text>
<text top="357" left="81" width="361" height="18" font="5">and linear algebra in the precomputation. The space com-</text>
<text top="372" left="81" width="359" height="18" font="5">plexity (the size of the matrix in memory) is the square root</text>
<text top="388" left="81" width="287" height="18" font="5">of this function, i.e., the same function, taking</text>
<text top="392" left="372" width="7" height="13" font="8"><i>k</i></text>
<text top="388" left="384" width="22" height="18" font="5">= 0</text>
<text top="392" left="406" width="4" height="13" font="8"><i>.</i></text>
<text top="388" left="410" width="32" height="18" font="5">9615.</text>
<text top="404" left="81" width="359" height="18" font="5">Discrete log descent has a complexity of the same form as</text>
<text top="419" left="80" width="156" height="18" font="5">well; <a href="sample-technical.html#12">[2, </a>Chapter 4] gives</text>
<text top="423" left="242" width="7" height="13" font="8"><i>k</i></text>
<text top="419" left="255" width="24" height="18" font="5">= 1</text>
<text top="423" left="278" width="4" height="13" font="8"><i>.</i></text>
<text top="419" left="282" width="157" height="18" font="5">232, using an early-abort</text>
<text top="435" left="81" width="306" height="18" font="5">strategy similar to the one in <a href="sample-technical.html#12">[6] </a>mentioned above.</text>
<text top="451" left="94" width="276" height="18" font="5">Evaluating the formula for 768- and 1024-bit</text>
<text top="455" left="374" width="11" height="13" font="8"><i>N</i></text>
<text top="451" left="392" width="48" height="18" font="5">gives us</text>
<text top="466" left="81" width="359" height="18" font="5">estimated multiplicative factors by which time and space will</text>
<text top="482" left="81" width="361" height="18" font="5">increase from the 768- to the 1024-bit case. For precompu-</text>
<text top="498" left="81" width="359" height="18" font="5">tation, the total time complexity will increase by a factor</text>
<text top="514" left="81" width="359" height="18" font="5">of 1220, while space complexity will increase by a factor of</text>
<text top="529" left="80" width="361" height="18" font="5">35. These are valid for both factorization and discrete log,</text>
<text top="545" left="81" width="359" height="18" font="5">since they have the same asymptotic behavior. Hence, for</text>
<text top="561" left="81" width="359" height="18" font="5">DH-1024, we get a total cost for the precomputation of about</text>
<text top="576" left="80" width="359" height="18" font="5">45M core-years. The time complexity for each individual</text>
<text top="592" left="81" width="361" height="18" font="5">log after the precomputation should be multiplied by 95.</text>
<text top="608" left="80" width="359" height="18" font="5">This last number does not correspond to what we observed</text>
<text top="623" left="81" width="359" height="18" font="5">in practice; we attribute that to the fact that the descent</text>
<text top="639" left="81" width="359" height="18" font="5">step has been far less studied both in theory and in practice</text>
<text top="655" left="81" width="174" height="18" font="5">compared to the other steps.</text>
<text top="670" left="94" width="347" height="18" font="5">For 1024-bit descent, we experimented with our early-</text>
<text top="686" left="81" width="359" height="18" font="5">abort implementation to inform our estimates for descent</text>
<text top="702" left="81" width="359" height="18" font="5">initialization, which should dominate the individual discrete</text>
<text top="718" left="81" width="361" height="18" font="5">log computation. For a random target in Oakley Group 2,</text>
<text top="733" left="81" width="359" height="18" font="5">initialization took 22 core-days, yielding a few primes of at</text>
<text top="749" left="81" width="361" height="18" font="5">most 130 bits to be descended further. In twice this time,</text>
<text top="765" left="80" width="359" height="18" font="5">we reached primes of about 110 bits. At this point, we were</text>
<text top="780" left="81" width="359" height="18" font="5">certain to have bootstrapped the descent, and could continue</text>
<text top="796" left="81" width="359" height="18" font="5">down to the smoothness bound in a few more core-days if</text>
<text top="812" left="81" width="359" height="18" font="5">proper sieving software were available. Thus we estimate</text>
<text top="827" left="81" width="359" height="18" font="5">that a 1024-bit descent would take about 30 core-days, once</text>
<text top="843" left="81" width="158" height="18" font="5">again easily parallelizable.</text>
<text top="874" left="81" width="127" height="18" font="14"><b>Costs in hardware</b></text>
<text top="874" left="226" width="213" height="18" font="5">Although 45M core-years is a huge</text>
<text top="889" left="81" width="359" height="18" font="5">computational effort, it is not necessarily out of reach for a</text>
<text top="905" left="81" width="359" height="18" font="5">nation state. Moreover, at this scale, significant cost savings</text>
<text top="921" left="81" width="361" height="18" font="5">could be realized by developing application-specific hardware.</text>
<text top="936" left="94" width="348" height="18" font="5">Sieving is a natural target for hardware implementation.</text>
<text top="952" left="80" width="359" height="18" font="5">To our knowledge, the best prior description of an ASIC</text>
<text top="968" left="81" width="361" height="18" font="5">implementation of 1024-bit sieving is the 2007 work of Geisel-</text>
<text top="983" left="81" width="359" height="18" font="5">mann and Steinwandt <a href="sample-technical.html#12">[18]. </a>In the following, we update their</text>
<text top="999" left="81" width="359" height="18" font="5">estimates for modern techniques and adjust parameters for</text>
<text top="1015" left="81" width="359" height="18" font="5">discrete log. We increase their chip count by a factor of ten to</text>
<text top="1030" left="81" width="361" height="18" font="5">sieve more and save on linear algebra as above, giving an esti-</text>
<text top="1046" left="81" width="359" height="18" font="5">mate of 3M chips to complete sieving in one year. Shrinking</text>
<text top="1062" left="81" width="359" height="18" font="5">the dies from the 130 nm technology node used in the paper to</text>
<text top="310" left="475" width="359" height="18" font="5">a more modern size reduces costs, as transistors are cheaper</text>
<text top="325" left="475" width="361" height="18" font="5">at newer technologies. With standard transistor costs and uti-</text>
<text top="341" left="475" width="361" height="18" font="5">lization, this would cost about $2 per chip to manufacture, af-</text>
<text top="357" left="475" width="359" height="18" font="5">ter fixed design and tape-out costs of roughly $2M <a href="sample-technical.html#12">[32]. </a>This</text>
<text top="372" left="475" width="359" height="18" font="5">suggests that an $8M investment would buy enough ASICs</text>
<text top="388" left="475" width="361" height="18" font="5">to complete the DH-1024 sieving precomputation in one year.</text>
<text top="404" left="475" width="359" height="18" font="5">Since a step of descent uses sieving, the same hardware could</text>
<text top="419" left="475" width="336" height="18" font="5">likely be reused to speed calculations of individual logs.</text>
<text top="435" left="489" width="345" height="18" font="5">Estimating the financial cost for the linear algebra is more</text>
<text top="451" left="475" width="359" height="18" font="5">difficult, since there has been little work on designing chips</text>
<text top="466" left="475" width="361" height="18" font="5">that are suitable for the larger fields involved in discrete log.</text>
<text top="482" left="475" width="359" height="18" font="5">To derive a rough estimate, we can begin with general purpose</text>
<text top="498" left="475" width="359" height="18" font="5">hardware and the core-year estimate from Table <a href="sample-technical.html#8">2. </a>The</text>
<text top="514" left="475" width="360" height="18" font="5">Titan supercomputer <a href="sample-technical.html#13">[39]</a>—at 300,000 CPU cores, currently</text>
<text top="529" left="475" width="359" height="18" font="5">the most powerful supercomputer in the U.S.—would take</text>
<text top="545" left="475" width="359" height="18" font="5">117 years to complete the 1024-bit linear algebra stage. Titan</text>
<text top="561" left="475" width="359" height="18" font="5">was constructed in 2012 for $94M, suggesting a cost of $11B</text>
<text top="576" left="475" width="359" height="18" font="5">in supercomputers to finish this step in a year. In the context</text>
<text top="592" left="475" width="359" height="18" font="5">of factorization, moving linear algebra from general purpose</text>
<text top="608" left="475" width="359" height="18" font="5">CPUs to ASICs has been estimated to reduce costs by a</text>
<text top="623" left="475" width="359" height="18" font="5">factor of 80 <a href="sample-technical.html#12">[17]. </a>If we optimistically assume that a similar</text>
<text top="639" left="475" width="359" height="18" font="5">reduction can be achieved for discrete log, the hardware cost</text>
<text top="655" left="475" width="359" height="18" font="5">to perform the linear algebra for DH-1024 in one year is</text>
<text top="670" left="475" width="340" height="18" font="5">plausibly on the order of hundreds of millions of dollars.</text>
<text top="686" left="489" width="347" height="18" font="5">To put this dollar figure in context, the FY 2012 bud-</text>
<text top="702" left="475" width="359" height="18" font="5">get for the U.S. Consolidated Cryptologic Program (which</text>
<text top="718" left="475" width="227" height="18" font="5">includes the NSA) was $10.5 <a href="sample-technical.html#8">billion</a></text>
<text top="720" left="703" width="5" height="8" font="16"><a href="sample-technical.html#8">4</a></text>
<text top="718" left="715" width="119" height="18" font="5"><a href="sample-technical.html#13">[57]. </a>The agency’s</text>
<text top="733" left="475" width="359" height="18" font="5">classified 2013 budget request, which prioritized investment</text>
<text top="749" left="475" width="361" height="18" font="5">in “groundbreaking cryptanalytic capabilities to defeat ad-</text>
<text top="765" left="475" width="359" height="18" font="5">versarial cryptography and exploit internet traffic,” included</text>
<text top="780" left="475" width="359" height="18" font="5">notable $100M increases in two programs <a href="sample-technical.html#13">[57]: </a>“cryptanalytic</text>
<text top="796" left="475" width="361" height="18" font="5">IT services” (to $247M), and a cryptically named “cryptanal-</text>
<text top="812" left="475" width="359" height="18" font="5">ysis and exploitation services program C” (to $360M). NSA’s</text>
<text top="827" left="475" width="359" height="18" font="5">leaked strategic plan for the period called for it to “continue</text>
<text top="843" left="475" width="359" height="18" font="5">to invest in the industrial base and drive the state of the</text>
<text top="859" left="475" width="359" height="18" font="5">art for high performance computing to maintain pre-eminent</text>
<text top="874" left="475" width="268" height="18" font="5">cryptanalytic capability for the nation” <a href="sample-technical.html#13">[63].</a></text>
<text top="907" left="475" width="22" height="16" font="4">4.2</text>
<text top="907" left="516" width="237" height="16" font="4">Is NSA Breaking 1024-bit DH?</text>
<text top="925" left="489" width="345" height="18" font="5">Our calculations suggest that it is plausibly within NSA’s</text>
<text top="941" left="475" width="361" height="18" font="5">resources to have performed number field sieve precomputa-</text>
<text top="956" left="475" width="359" height="18" font="5">tions for at least a small number of 1024-bit Diffie-Hellman</text>
<text top="972" left="475" width="359" height="18" font="5">groups. This would allow them to break any key exchanges</text>
<text top="988" left="475" width="359" height="18" font="5">made with those groups in close to real time. If true, this</text>
<text top="1003" left="475" width="359" height="18" font="5">would answer one of the major cryptographic questions raised</text>
<text top="1019" left="475" width="359" height="18" font="5">by the Edward Snowden leaks: How is NSA defeating the</text>
<text top="1035" left="475" width="261" height="18" font="5">encryption for widely used VPN protocols?</text>
<text top="1064" left="476" width="5" height="8" font="16">4</text>
<text top="1062" left="482" width="348" height="18" font="5">The National Science Foundation’s budget was $7 billion.</text>
<text top="1107" left="454" width="7" height="18" font="5">8</text>
</page>
 link to page 13  link to page 12  link to page 12  link to page 12  link to page 12  link to page 9  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 12  link to page 12  link to page 10  link to page 9  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13  link to page 13 <page number="9" position="absolute" top="0" left="0" height="1188" width="918">
<text top="82" left="94" width="347" height="18" font="5">Classified documents published by Der Spiegel <a href="sample-technical.html#13">[46] </a>indi-</text>
<text top="97" left="81" width="359" height="18" font="5">cate that NSA is passively decrypting IPsec connections at</text>
<text top="113" left="81" width="361" height="18" font="5">significant scale. The documents do not describe the crypt-</text>
<text top="129" left="81" width="359" height="18" font="5">analytic techniques used, but they do provide an overview of</text>
<text top="144" left="81" width="359" height="18" font="5">the attack system architecture. After reviewing how IPsec</text>
<text top="160" left="81" width="361" height="18" font="5">key establishment works, we will use the published informa-</text>
<text top="176" left="81" width="359" height="18" font="5">tion to evaluate the hypothesis that the NSA is leveraging</text>
<text top="191" left="81" width="302" height="18" font="5">precomputation to calculate discrete logs at scale.</text>
<text top="211" left="81" width="29" height="18" font="14"><b>IKE</b></text>
<text top="211" left="129" width="312" height="18" font="5">Internet Key Exchange (IKE) is the main key es-</text>
<text top="226" left="81" width="359" height="18" font="5">tablishment protocol used for IPsec VPNs. There are two</text>
<text top="242" left="80" width="361" height="18" font="5">versions, IKEv1 <a href="sample-technical.html#12">[22] </a>and IKEv2 <a href="sample-technical.html#12">[25], </a>which differ in mes-</text>
<text top="258" left="81" width="359" height="18" font="5">sage structure but are conceptually similar. For the sake of</text>
<text top="274" left="81" width="239" height="18" font="5">brevity, we will use IKEv1 terminology.</text>
<text top="289" left="94" width="345" height="18" font="5">Each IKE session begins with a Phase 1 handshake, in</text>
<text top="305" left="80" width="359" height="18" font="5">which the client and server select a Diffie-Hellman group</text>
<text top="321" left="81" width="359" height="18" font="5">from a small set of standardized parameters and perform a</text>
<text top="336" left="81" width="359" height="18" font="5">key exchange to establish a shared secret. The shared secret</text>
<text top="352" left="81" width="359" height="18" font="5">is combined with other cleartext values transmitted by each</text>
<text top="368" left="81" width="359" height="18" font="5">side, such as nonces and cookies, to derive a value called</text>
<text top="389" left="81" width="46" height="11" font="24">SKEYID</text>
<text top="383" left="126" width="315" height="18" font="5">. IKE provides several authentication mechanisms,</text>
<text top="399" left="81" width="359" height="18" font="5">including symmetric pre-shared keys (PSK); when IKEv1 is</text>
<text top="415" left="81" width="359" height="18" font="5">authenticated with a PSK, this value is incorporated into</text>
<text top="430" left="81" width="100" height="18" font="5">the derivation of</text>
<text top="436" left="186" width="45" height="11" font="24">SKEYID</text>
<text top="430" left="231" width="4" height="18" font="5">.</text>
<text top="446" left="94" width="80" height="18" font="5">The resulting</text>
<text top="452" left="179" width="44" height="11" font="24">SKEYID</text>
<text top="446" left="227" width="212" height="18" font="5">is used to encrypt and authenticate</text>
<text top="462" left="81" width="359" height="18" font="5">a Phase 2 handshake. Phase 2 establishes the parameters</text>
<text top="478" left="81" width="109" height="18" font="5">and key material,</text>
<text top="483" left="195" width="53" height="11" font="24">KEYMAT</text>
<text top="478" left="248" width="192" height="18" font="5">, for a cryptographic transport</text>
<text top="493" left="81" width="361" height="18" font="5">protocol used to protect subsequent traffic, such as Encapsu-</text>
<text top="509" left="81" width="359" height="18" font="5">lating Security Payload (ESP) <a href="sample-technical.html#12">[27] </a>or Authenticated Header</text>
<text top="525" left="79" width="360" height="18" font="5">(AH) <a href="sample-technical.html#12">[26]. </a>In some circumstances, this phase includes an</text>
<text top="540" left="81" width="288" height="18" font="5">additional round of Diffie-Hellman. Ultimately,</text>
<text top="546" left="373" width="53" height="11" font="24">KEYMAT</text>
<text top="540" left="430" width="9" height="18" font="5">is</text>
<text top="556" left="81" width="78" height="18" font="5">derived from</text>
<text top="562" left="164" width="46" height="11" font="24">SKEYID</text>
<text top="556" left="210" width="229" height="18" font="5">, additional nonces, and the result of</text>
<text top="572" left="81" width="279" height="18" font="5">the optional Phase 2 Diffie-Hellman exchange.</text>
<text top="591" left="81" width="224" height="18" font="14"><b>NSA’s VPN exploitation process</b></text>
<text top="591" left="322" width="120" height="18" font="5">The documents pub-</text>
<text top="607" left="81" width="359" height="18" font="5">lished by Der Spiegel describe a system named TURMOIL</text>
<text top="622" left="81" width="359" height="18" font="5">that is used to collect and decrypt VPN traffic. The evidence</text>
<text top="638" left="81" width="359" height="18" font="5">indicates that this decryption is performed using passive</text>
<text top="654" left="81" width="359" height="18" font="5">eavesdropping and does not require message injection or</text>
<text top="670" left="81" width="359" height="18" font="5">man-in-the-middle attacks on IPsec or IKE. Figure <a href="sample-technical.html#9">4, </a>an</text>
<text top="685" left="81" width="359" height="18" font="5">excerpt from one of the documents <a href="sample-technical.html#13">[67], </a>illustrates the flow</text>
<text top="701" left="81" width="280" height="18" font="5">of information through the TURMOIL system</text>
<text top="717" left="94" width="345" height="18" font="5">The initial phases of the attack involve collecting IKE and</text>
<text top="732" left="81" width="359" height="18" font="5">ESP payloads and determining whether the traffic matches</text>
<text top="748" left="81" width="359" height="18" font="5">any tasked selector <a href="sample-technical.html#13">[65]. </a>If so, TURMOIL transmits the</text>
<text top="764" left="81" width="359" height="18" font="5">complete IKE handshake and may transmit a small amount</text>
<text top="779" left="81" width="359" height="18" font="5">of ESP ciphertext to NSA’s Cryptanalysis and Exploitation</text>
<text top="795" left="81" width="359" height="18" font="5">Services (CES) <a href="sample-technical.html#13">[56,65] </a>via a secure tunnel. Within CES, a</text>
<text top="811" left="81" width="359" height="18" font="5">specialized VPN Attack Orchestrator (VAO) system manages</text>
<text top="826" left="81" width="359" height="18" font="5">a collection of high-performance grid computing resources</text>
<text top="842" left="81" width="359" height="18" font="5">located at NSA Headquarters and in a data center at Oak</text>
<text top="858" left="81" width="359" height="18" font="5">Ridge National Laboratory, which perform the computation</text>
<text top="874" left="81" width="359" height="18" font="5">required to generate the ESP session key <a href="sample-technical.html#13">[61, 62, 67]. </a>VAO</text>
<text top="889" left="81" width="361" height="18" font="5">also maintains a database, CORALREEF, that stores cryp-</text>
<text top="905" left="81" width="359" height="18" font="5">tographic values, including a set of known PSKs and the</text>
<text top="921" left="81" width="302" height="18" font="5">resulting “recovered” ESP session keys <a href="sample-technical.html#13">[60,61,67].</a></text>
<text top="936" left="94" width="347" height="18" font="5">The ESP traffic itself is buffered for up to 15 minutes <a href="sample-technical.html#13">[64],</a></text>
<text top="952" left="81" width="359" height="18" font="5">until CES can respond with the recovered ESP keys if they</text>
<text top="968" left="80" width="359" height="18" font="5">were generated correctly. Once keys have been returned, the</text>
<text top="983" left="81" width="359" height="18" font="5">ESP traffic is decrypted via hardware accelerators <a href="sample-technical.html#13">[59] </a>or</text>
<text top="999" left="81" width="359" height="18" font="5">in software <a href="sample-technical.html#13">[68,69]. </a>From this point, decrypted VPN traffic</text>
<text top="1015" left="81" width="359" height="18" font="5">is reinjected into TURMOIL processing infrastructure and</text>
<text top="1030" left="81" width="359" height="18" font="5">passed to other systems for storage and analysis <a href="sample-technical.html#13">[69]. </a>The</text>
<text top="1046" left="81" width="359" height="18" font="5">documents indicate that NSA is recovering ESP keys at large</text>
<text top="1062" left="81" width="268" height="18" font="5">scale, with a target of 100,000 per hour <a href="sample-technical.html#13">[64].</a></text>
<text top="277" left="475" width="53" height="18" font="5">Figure 4:</text>
<text top="277" left="534" width="268" height="18" font="14"><b>NSA’s VPN decryption infrastructure.</b></text>
<text top="277" left="807" width="26" height="18" font="5">This</text>
<text top="293" left="475" width="359" height="18" font="5">classified illustration published by Der Spiegel <a href="sample-technical.html#13">[67] </a>shows</text>
<text top="308" left="475" width="361" height="18" font="5">captured IKE handshake messages being passed to a high-</text>
<text top="324" left="475" width="359" height="18" font="5">performance computing system, which returns the symmetric</text>
<text top="340" left="475" width="359" height="18" font="5">keys for ESP session traffic. The details of this attack are</text>
<text top="355" left="475" width="359" height="18" font="5">consistent with an efficient break for 1024-bit Diffie-Hellman.</text>
<text top="403" left="475" width="235" height="18" font="14"><b>Evidence for a discrete log attack</b></text>
<text top="403" left="729" width="105" height="18" font="5">While the ability</text>
<text top="419" left="475" width="359" height="18" font="5">to decrypt VPN traffic does not by itself indicate a defeat</text>
<text top="434" left="475" width="359" height="18" font="5">of Diffie-Hellman, there are several features of IKE and the</text>
<text top="450" left="475" width="281" height="18" font="5">VAO’s operation that support this hypothesis.</text>
<text top="466" left="489" width="347" height="18" font="5">The IKE protocol has been extensively analyzed <a href="sample-technical.html#12">[9, 36],</a></text>
<text top="481" left="475" width="361" height="18" font="5">and is not believed to be exploitable in standard configu-</text>
<text top="497" left="475" width="359" height="18" font="5">rations under passive eavesdropping attacks. In order to</text>
<text top="513" left="475" width="359" height="18" font="5">recover the session keys for the ESP or AH protocols, the</text>
<text top="528" left="475" width="242" height="18" font="5">attacker must at minimum recover the</text>
<text top="534" left="723" width="46" height="11" font="24">SKEYID</text>
<text top="528" left="774" width="60" height="18" font="5">generated</text>
<text top="544" left="475" width="359" height="18" font="5">by the Phase 1 exchange. Absent a vulnerability in the key</text>
<text top="560" left="475" width="359" height="18" font="5">derivation function or transport encryption, this requires</text>
<text top="575" left="475" width="359" height="18" font="5">the attacker to recover a Diffie-Hellman shared secret after</text>
<text top="591" left="475" width="236" height="18" font="5">passively observing an IKE handshake.</text>
<text top="607" left="489" width="345" height="18" font="5">While IKE is designed to support a range of Diffie-Hellman</text>
<text top="622" left="475" width="359" height="18" font="5">groups, our Internet-wide scans <a href="sample-technical.html#10">(§4.3) </a>show that the vast</text>
<text top="638" left="475" width="359" height="18" font="5">majority of IKE systems select one particular 1024-bit DH</text>
<text top="654" left="475" width="359" height="18" font="5">group, Oakley Group 2, even when offered stronger groups.</text>
<text top="670" left="489" width="345" height="18" font="5">Given an efficient oracle for solving the discrete logarithm</text>
<text top="685" left="475" width="359" height="18" font="5">problem, attacks on IKE are possible provided that the</text>
<text top="701" left="475" width="359" height="18" font="5">attacker can obtain the following: (1) a complete two-sided</text>
<text top="717" left="475" width="359" height="18" font="5">IKE transcript, including the Diffie-Hellman ephemeral keys</text>
<text top="736" left="475" width="7" height="13" font="8"><i>g</i></text>
<text top="735" left="482" width="6" height="8" font="9"><i>a</i></text>
<text top="732" left="494" width="22" height="18" font="5">and</text>
<text top="736" left="521" width="7" height="13" font="8"><i>g</i></text>
<text top="735" left="528" width="5" height="8" font="9"><i>b</i></text>
<text top="732" left="538" width="296" height="18" font="5">as well as the nonces and cookies transmitted by</text>
<text top="748" left="475" width="359" height="18" font="5">both sides of the connection, and (2) in IKEv1 only, the PSK</text>
<text top="764" left="475" width="96" height="18" font="5">used in deriving</text>
<text top="770" left="576" width="45" height="11" font="24">SKEYID</text>
<text top="764" left="621" width="4" height="18" font="5">.</text>
<text top="779" left="489" width="345" height="18" font="5">Both of the above requirements are also present in the</text>
<text top="795" left="475" width="359" height="18" font="5">NSA’s VPN attack system. As Figure <a href="sample-technical.html#9">4 </a>illustrates, a hard</text>
<text top="811" left="475" width="302" height="18" font="5">requirement of the VAO is the need to obtain the</text>
<text top="816" left="782" width="52" height="12" font="15"><i>complete</i></text>
<text top="826" left="475" width="359" height="18" font="5">two-sided IKE transcript <a href="sample-technical.html#13">[60]. </a>The published documents</text>
<text top="842" left="475" width="359" height="18" font="5">indicate that this requirement substantially increases the</text>
<text top="858" left="475" width="359" height="18" font="5">complexity of the attack execution, since IKE transcripts</text>
<text top="874" left="475" width="359" height="18" font="5">must be reassembled (“paired”) whenever the interaction</text>
<text top="889" left="475" width="286" height="18" font="5">traverses multiple network paths <a href="sample-technical.html#13">[55,56,58,66].</a></text>
<text top="905" left="489" width="345" height="18" font="5">The attack system also seems to require knowledge of the</text>
<text top="921" left="475" width="359" height="18" font="5">PSK. Several documents describe techniques for analysts</text>
<text top="936" left="475" width="361" height="18" font="5">to locate a PSK, including using a database of router con-</text>
<text top="952" left="475" width="359" height="18" font="5">figurations <a href="sample-technical.html#13">[70, 71], </a>the CORALREEF database of known</text>
<text top="968" left="475" width="359" height="18" font="5">PSKs <a href="sample-technical.html#13">[60], </a>previously decrypted SSH traffic <a href="sample-technical.html#13">[60], </a>or system</text>
<text top="983" left="475" width="359" height="18" font="5">administrator “chatter” <a href="sample-technical.html#13">[70]. </a>Additionally, NSA is willing to</text>
<text top="999" left="473" width="216" height="18" font="5">“[r]un attacks to recover PSK” <a href="sample-technical.html#13">[60].</a></text>
<text top="1015" left="489" width="348" height="18" font="5">Of course, this explanation is not dispositive. The possi-</text>
<text top="1030" left="475" width="359" height="18" font="5">bility remains that NSA could defeat IPsec using alternative</text>
<text top="1046" left="475" width="361" height="18" font="5">means. Certain published NSA documents refer to soft-</text>
<text top="1062" left="475" width="359" height="18" font="5">ware “implants” on VPN devices, indicating that the use of</text>
<text top="1107" left="454" width="7" height="18" font="5">9</text>
</page>
 link to page 13  link to page 12 <page number="10" position="absolute" top="0" left="0" height="1188" width="918">
<text top="87" left="423" width="320" height="11" font="23"><i>Vulnerable servers, if the attacker can precompute for . . .</i></text>
<text top="107" left="356" width="97" height="11" font="21">all 512-bit groups</text>
<text top="107" left="470" width="97" height="11" font="21">all 768-bit groups</text>
<text top="107" left="583" width="104" height="11" font="21">one 1024-bit group</text>
<text top="107" left="704" width="108" height="11" font="21">ten 1024-bit groups</text>
<text top="127" left="103" width="212" height="11" font="21">HTTPS Top 1M w/ active downgrade</text>
<text top="127" left="377" width="76" height="11" font="21">45,100 (8.4%)</text>
<text top="127" left="491" width="76" height="11" font="21">45,100 (8.4%)</text>
<text top="127" left="599" width="89" height="11" font="21">205,000 (37.1%)</text>
<text top="127" left="723" width="89" height="11" font="21">309,000 (56.1%)</text>
<text top="140" left="103" width="92" height="11" font="21">HTTPS Top 1M</text>
<text top="140" left="394" width="60" height="11" font="21">118 (0.0%)</text>
<text top="140" left="507" width="60" height="11" font="21">407 (0.1%)</text>
<text top="140" left="605" width="83" height="11" font="21">98,500 (17.9%)</text>
<text top="140" left="723" width="89" height="11" font="21">132,000 (24.0%)</text>
<text top="154" left="103" width="211" height="11" font="21">HTTPS Trusted w/ active downgrade</text>
<text top="154" left="371" width="83" height="11" font="21">489,000 (3.4%)</text>
<text top="154" left="485" width="83" height="11" font="21">556,000 (3.9%)</text>
<text top="154" left="589" width="99" height="11" font="21">1,840,000 (12.8%)</text>
<text top="154" left="713" width="99" height="11" font="21">3,410,000 (23.8%)</text>
<text top="167" left="103" width="91" height="11" font="21">HTTPS Trusted</text>
<text top="167" left="384" width="70" height="11" font="21">1,000 (0.0%)</text>
<text top="167" left="491" width="76" height="11" font="21">46,700 (0.3%)</text>
<text top="167" left="599" width="89" height="11" font="21">939,000 (6.56%)</text>
<text top="167" left="713" width="99" height="11" font="21">1,430,000 (10.0%)</text>
<text top="190" left="103" width="67" height="11" font="21">IKEv1 IPv4</text>
<text top="190" left="447" width="6" height="11" font="21">–</text>
<text top="190" left="491" width="76" height="11" font="21">64,700 (2.6%)</text>
<text top="190" left="589" width="99" height="11" font="21">1,690,000 (66.1%)</text>
<text top="190" left="713" width="99" height="11" font="21">1,690,000 (66.1%)</text>
<text top="203" left="103" width="67" height="11" font="21">IKEv2 IPv4</text>
<text top="203" left="447" width="6" height="11" font="21">–</text>
<text top="203" left="491" width="76" height="11" font="21">66,000 (5.8%)</text>
<text top="203" left="599" width="89" height="11" font="21">726,000 (63.9%)</text>
<text top="203" left="723" width="89" height="11" font="21">726,000 (63.9%)</text>
<text top="226" left="103" width="54" height="11" font="21">SSH IPv4</text>
<text top="226" left="447" width="6" height="11" font="21">–</text>
<text top="226" left="561" width="6" height="11" font="21">–</text>
<text top="226" left="589" width="99" height="11" font="21">3,600,000 (25.7%)</text>
<text top="226" left="713" width="99" height="11" font="21">3,600,000 (25.7%)</text>
<text top="250" left="80" width="50" height="18" font="5">Table 3:</text>
<text top="250" left="136" width="307" height="18" font="14"><b>Estimated impact of Diffie-Hellman attacks.</b></text>
<text top="250" left="450" width="386" height="18" font="5">We use Internet-wide scanning to estimate the number of real-</text>
<text top="266" left="80" width="756" height="18" font="5">world servers for which typical connections could be compromised by attackers with various levels of computational resources.</text>
<text top="281" left="81" width="753" height="18" font="5">For HTTPS, we provide figures with and without downgrade attacks on the chosen ciphersuite. All others are passive attacks.</text>
<text top="328" left="81" width="361" height="18" font="5">targeted malware is a piece of the collection strategy <a href="sample-technical.html#13">[60];</a></text>
<text top="344" left="81" width="359" height="18" font="5">however, the same documents also note that decryption of</text>
<text top="359" left="81" width="119" height="18" font="5">the resulting traffic</text>
<text top="364" left="204" width="51" height="12" font="15"><i>does not</i></text>
<text top="359" left="260" width="179" height="18" font="5">require IKE handshakes, and</text>
<text top="375" left="81" width="359" height="18" font="5">thus appears to be an alternative mechanism to the VAO</text>
<text top="391" left="81" width="359" height="18" font="5">attack described above. The most compelling argument for</text>
<text top="406" left="81" width="359" height="18" font="5">a pure cryptographic attack is the generality of the VAO</text>
<text top="422" left="81" width="359" height="18" font="5">approach, which appears to succeed across a broad swath of</text>
<text top="438" left="81" width="157" height="18" font="5">non-compromised devices.</text>
<text top="472" left="81" width="22" height="16" font="4">4.3</text>
<text top="472" left="121" width="204" height="16" font="4">Effects of a 1024-bit Break</text>
<text top="490" left="94" width="345" height="18" font="5">In this section, we use Internet-wide scanning to assess</text>
<text top="506" left="81" width="361" height="18" font="5">the impact of a hypothetical DH-1024 break on three popu-</text>
<text top="521" left="81" width="359" height="18" font="5">lar protocols: IKE, SSH, and HTTPS. Our measurements</text>
<text top="537" left="81" width="361" height="18" font="5">indicate that these protocols, as they are commonly used,</text>
<text top="553" left="80" width="359" height="18" font="5">would be subject to widespread compromise by a state-level</text>
<text top="568" left="81" width="359" height="18" font="5">attacker who had the resources to invest in precomputation</text>
<text top="584" left="81" width="288" height="18" font="5">for a small number of common 1024-bit groups.</text>
<text top="607" left="81" width="29" height="18" font="14"><b>IKE</b></text>
<text top="607" left="128" width="311" height="18" font="5">We measured how IPsec VPNs use Diffie-Hellman in</text>
<text top="622" left="81" width="359" height="18" font="5">practice by scanning a 1% random sample of the public IPv4</text>
<text top="638" left="81" width="359" height="18" font="5">address space for IKEv1 and IKEv2 (the protocols used to</text>
<text top="654" left="81" width="359" height="18" font="5">initiate an IPsec VPN connection) in May 2015. We used</text>
<text top="670" left="81" width="359" height="18" font="5">the ZMap UDP probe module to measure support for Oakley</text>
<text top="685" left="81" width="359" height="18" font="5">Groups 1 and 2 (two popular 768- and 1024-bit, built-in</text>
<text top="701" left="81" width="359" height="18" font="5">groups) and which group servers prefer. To test support</text>
<text top="717" left="81" width="359" height="18" font="5">for individual groups, we offered only the single group in</text>
<text top="732" left="81" width="359" height="18" font="5">question. To detect default behavior, we offered servers a</text>
<text top="748" left="80" width="359" height="18" font="5">variety of DH groups, with the lowest priority groups being</text>
<text top="764" left="81" width="361" height="18" font="5">Oakley Groups 1 and 2. When measuring server preference,</text>
<text top="779" left="80" width="360" height="18" font="5">we scanned with the 3DES symmetric cipher—the most</text>
<text top="795" left="81" width="359" height="18" font="5">commonly supported symmetric cipher in our single group</text>
<text top="811" left="81" width="360" height="18" font="5">scans. Because of this, the percentages we present for IKEv1</text>
<text top="826" left="81" width="359" height="18" font="5">and IKEv2 are a lower bound for the number of servers that</text>
<text top="842" left="81" width="184" height="18" font="5">prefer Oakley Groups 1 and 2.</text>
<text top="858" left="94" width="347" height="18" font="5">Of the 80K hosts that responded with a valid IKE packet,</text>
<text top="874" left="80" width="359" height="18" font="5">44.2% were willing to accept an offered proposal from at least</text>
<text top="889" left="81" width="359" height="18" font="5">one scan. The majority of the remaining hosts responded</text>
<text top="905" left="80" width="39" height="18" font="5">with a</text>
<text top="911" left="124" width="127" height="11" font="26">NO-PROPOSAL-CHOSEN</text>
<text top="905" left="256" width="186" height="18" font="5">message regardless of our pro-</text>
<text top="921" left="81" width="359" height="18" font="5">posal. Many of these may be site-to-site VPNs that reject</text>
<text top="936" left="81" width="359" height="18" font="5">our source address. We consider these hosts “unprofiled” and</text>
<text top="952" left="81" width="197" height="18" font="5">omit them from the results here.</text>
<text top="968" left="94" width="345" height="18" font="5">We found that 31.8% of IKEv1 and 19.7% of IKEv2 servers</text>
<text top="983" left="81" width="359" height="18" font="5">support Oakley Group 1 (768-bit) while 86.1% and 91.0%</text>
<text top="999" left="81" width="359" height="18" font="5">respectively supported Oakley Group 2 (1024-bit). In our</text>
<text top="1015" left="81" width="359" height="18" font="5">sample of IKEv1 servers, 2.6% of profiled servers preferred</text>
<text top="1030" left="81" width="359" height="18" font="5">the 768-bit Oakley Group 1—which is within cryptanalytic</text>
<text top="1046" left="81" width="359" height="18" font="5">reach today for moderately resourced attackers—and 66.1%</text>
<text top="1062" left="81" width="359" height="18" font="5">preferred the 1024-bit Oakley Group 2. For IKEv2, 5.8%</text>
<text top="328" left="475" width="359" height="18" font="5">of profiled servers chose Oakley Group 1, and 63.9% chose</text>
<text top="344" left="475" width="359" height="18" font="5">Oakley Group 2. This coincides with our anecdotal findings</text>
<text top="359" left="475" width="361" height="18" font="5">that most VPN clients only offer Oakley Group 2 by default.</text>
<text top="381" left="475" width="30" height="18" font="14"><b>SSH</b></text>
<text top="381" left="525" width="309" height="18" font="5">All SSH handshakes complete either a finite field</text>
<text top="397" left="475" width="359" height="18" font="5">Diffie-Hellman or elliptic curve Diffie-Hellman exchange as</text>
<text top="412" left="475" width="359" height="18" font="5">part of the SSH key exchange. The SSH protocol explicitly</text>
<text top="428" left="475" width="359" height="18" font="5">defines support for Oakley Group 2 (1024-bit) and Oakley</text>
<text top="444" left="475" width="361" height="18" font="5">Group 14 (2048-bit) but also allows a server-defined group,</text>
<text top="460" left="475" width="359" height="18" font="5">which can be negotiated through an auxiliary Diffie-Hellman</text>
<text top="475" left="475" width="270" height="18" font="5">Group Exchange (DH-GEX) handshake <a href="sample-technical.html#12">[16].</a></text>
<text top="491" left="489" width="345" height="18" font="5">In order to measure how SSH uses DH in practice, we</text>
<text top="507" left="475" width="359" height="18" font="5">implemented the SSH protocol in the ZMap toolchain and</text>
<text top="522" left="475" width="359" height="18" font="5">scanned 1% random samples of the public IPv4 address space</text>
<text top="538" left="475" width="359" height="18" font="5">in April 2015. We find that 98.9% of SSH servers support</text>
<text top="554" left="475" width="359" height="18" font="5">the 1024-bit Oakley Group 2, 77.6% support the 2048-bit</text>
<text top="569" left="475" width="291" height="18" font="5">Oakley Group 14, and 68.7% support DH-GEX.</text>
<text top="585" left="489" width="345" height="18" font="5">During the SSH handshake, the client and server select the</text>
<text top="601" left="475" width="359" height="18" font="5">client’s highest priority mutually supported key exchange</text>
<text top="616" left="475" width="361" height="18" font="5">algorithm. Therefore, we cannot directly measure what algo-</text>
<text top="632" left="475" width="361" height="18" font="5">rithm servers will prefer in practice. In order to estimate this,</text>
<text top="648" left="475" width="359" height="18" font="5">we performed a scan in which we mimicked the algorithms</text>
<text top="664" left="475" width="361" height="18" font="5">offered by OpenSSH 6.6.1p1, the latest version of OpenSSH.</text>
<text top="679" left="475" width="359" height="18" font="5">In this scan, 21.8% of servers preferred the 1024-bit Oakley</text>
<text top="695" left="475" width="359" height="18" font="5">Group 2, and 37.4% preferred a server-defined group. 10% of</text>
<text top="711" left="475" width="359" height="18" font="5">the server-defined groups were 1024-bit, but, of those, near</text>
<text top="726" left="475" width="349" height="18" font="5">all provided Oakley Group 2 rather than a custom group.</text>
<text top="742" left="489" width="347" height="18" font="5">Combining these equivalent choices, we find that a state-</text>
<text top="758" left="475" width="359" height="18" font="5">level attacker who performed NFS precomputations for the</text>
<text top="773" left="475" width="360" height="18" font="5">1024-bit Oakley Group 2 (which has been in standards for</text>
<text top="789" left="475" width="359" height="18" font="5">almost two decades) could passively eavesdrop on connections</text>
<text top="805" left="475" width="293" height="18" font="5">to 3.6M (25.7%) publicly accessible SSH servers.</text>
<text top="826" left="475" width="54" height="18" font="14"><b>HTTPS</b></text>
<text top="832" left="547" width="25" height="11" font="24">DHE</text>
<text top="826" left="575" width="259" height="18" font="5">is commonly deployed on web servers. 68.3%</text>
<text top="842" left="475" width="193" height="18" font="5">of Alexa Top 1M sites support</text>
<text top="848" left="673" width="26" height="11" font="24">DHE</text>
<text top="842" left="700" width="134" height="18" font="5">, as do 23.9% of sites</text>
<text top="858" left="475" width="360" height="18" font="5">with browser-trusted certificates. Of the Top 1M sites that</text>
<text top="874" left="475" width="46" height="18" font="5">support</text>
<text top="879" left="525" width="25" height="11" font="24">DHE</text>
<text top="874" left="550" width="284" height="18" font="5">, 84% use a 1024-bit or smaller group, with 94%</text>
<text top="889" left="475" width="198" height="18" font="5">of these using one of five groups.</text>
<text top="905" left="489" width="188" height="18" font="5">Despite widespread support for</text>
<text top="911" left="681" width="26" height="11" font="24">DHE</text>
<text top="905" left="707" width="130" height="18" font="5">, a passive eavesdrop-</text>
<text top="921" left="475" width="359" height="18" font="5">per can only decrypt connections that organically agree to</text>
<text top="936" left="475" width="359" height="18" font="5">use Diffie-Hellman. We can estimate the number of sites for</text>
<text top="952" left="475" width="359" height="18" font="5">which this will occur by offering the same sets of ciphersuites</text>
<text top="968" left="475" width="359" height="18" font="5">as Chrome, Firefox, and Safari. While the offered ciphers</text>
<text top="983" left="475" width="359" height="18" font="5">differ slightly between browsers, this turns out to result in</text>
<text top="999" left="475" width="193" height="18" font="5">negligible differences in whether</text>
<text top="1005" left="673" width="26" height="11" font="24">DHE</text>
<text top="999" left="704" width="57" height="18" font="5">is chosen.</text>
<text top="1015" left="489" width="348" height="18" font="5">Approximately 24.0% of browser connections with HTTPS-</text>
<text top="1030" left="475" width="360" height="18" font="5">enabled Top 1M sites (and 10% with browser-trusted sites)</text>
<text top="1046" left="475" width="79" height="18" font="5">will negotiate</text>
<text top="1052" left="558" width="25" height="11" font="24">DHE</text>
<text top="1046" left="588" width="247" height="18" font="5">with one of the ten most popular 1024-bit</text>
<text top="1062" left="475" width="359" height="18" font="5">primes; 17.9% of connections with Top 1M sites could be</text>
<text top="1107" left="450" width="14" height="18" font="5">10</text>
</page>
 link to page 5  link to page 12  link to page 12  link to page 13  link to page 13  link to page 12  link to page 12  link to page 12 <page number="11" position="absolute" top="0" left="0" height="1188" width="918">
<text top="82" left="81" width="359" height="18" font="5">passively eavesdropped given the precomputation for a single</text>
<text top="97" left="80" width="359" height="18" font="5">1024-bit prime. The most popular site that negotiates a</text>
<text top="119" left="81" width="25" height="11" font="24">DHE</text>
<text top="113" left="111" width="329" height="18" font="5">ciphersuite using one of the two most common 1024-bit</text>
<text top="129" left="81" width="255" height="18" font="5">primes is sohu.com (ranked 31st globally).</text>
<text top="149" left="81" width="32" height="18" font="14"><b>Mail</b></text>
<text top="149" left="131" width="310" height="18" font="5">TLS is also used to secure email transport. SMTP,</text>
<text top="165" left="81" width="361" height="18" font="5">the protocol used to relay messages between mail servers,</text>
<text top="180" left="81" width="359" height="18" font="5">allows a connection to be upgraded to TLS by issuing the</text>
<text top="202" left="81" width="56" height="11" font="26">STARTTLS</text>
<text top="196" left="142" width="298" height="18" font="5">command. POP3S and IMAPS, used by end users</text>
<text top="212" left="81" width="351" height="18" font="5">to fetch received mail, wrap the entire connection in TLS.</text>
<text top="227" left="94" width="345" height="18" font="5">We studied 1% samples of the public IPv4 address space</text>
<text top="243" left="81" width="359" height="18" font="5">for IMAPS, POP3S, and SMTP+StartTLS. We found that</text>
<text top="259" left="81" width="218" height="18" font="5">50.7% of SMTP servers supported</text>
<text top="265" left="305" width="56" height="11" font="26">STARTTLS</text>
<text top="259" left="362" width="80" height="18" font="5">, 41.4% sup-</text>
<text top="275" left="81" width="40" height="18" font="5">ported</text>
<text top="280" left="127" width="26" height="11" font="24">DHE</text>
<text top="275" left="153" width="143" height="18" font="5">, and 14.8% supported</text>
<text top="280" left="302" width="86" height="11" font="24">DHE_EXPORT</text>
<text top="275" left="395" width="47" height="18" font="5">ciphers.</text>
<text top="290" left="80" width="359" height="18" font="5">15.5% of SMTP servers used one of the ten most common</text>
<text top="306" left="80" width="98" height="18" font="5">1024-bit groups.</text>
<text top="322" left="94" width="231" height="18" font="5">For IMAPS, 8.4% of servers supported</text>
<text top="327" left="329" width="83" height="11" font="24">DHE_EXPORT</text>
<text top="322" left="417" width="22" height="18" font="5">and</text>
<text top="337" left="80" width="88" height="18" font="5">75% supported</text>
<text top="343" left="171" width="25" height="11" font="24">DHE</text>
<text top="337" left="197" width="243" height="18" font="5">. However, the ten most common 1024-bit</text>
<text top="353" left="81" width="359" height="18" font="5">primes account for only 5.4% of servers. POP3S deployment</text>
<text top="369" left="81" width="267" height="18" font="5">is similar, with 8.9% of servers supporting</text>
<text top="374" left="353" width="86" height="11" font="24">DHE_EXPORT</text>
<text top="384" left="81" width="132" height="18" font="5">and 74.9% supporting</text>
<text top="390" left="217" width="26" height="11" font="24">DHE</text>
<text top="384" left="243" width="196" height="18" font="5">, but with the ten most common</text>
<text top="400" left="80" width="314" height="18" font="5">1024-bit primes accounting for only 4.8% of servers.</text>
<text top="416" left="94" width="345" height="18" font="5">If each of the top ten 1024-bit primes used by each protocol</text>
<text top="431" left="80" width="359" height="18" font="5">were compromised, this would affect approximately 1.7M</text>
<text top="447" left="81" width="359" height="18" font="5">SMTP, 276K IMAPS, and 245K POP3S servers. Using our</text>
<text top="463" left="81" width="359" height="18" font="5">downgrade attack of <a href="sample-technical.html#5">§3.3, </a>an attacker with modest resources</text>
<text top="478" left="81" width="359" height="18" font="5">can hijack connections to approximately 1.6M SMTP, 429K</text>
<text top="494" left="81" width="210" height="18" font="5">IMAPS, and 454K POP3S servers.</text>
<text top="533" left="81" width="13" height="16" font="4">5.</text>
<text top="533" left="112" width="190" height="16" font="4">RECOMMENDATIONS</text>
<text top="550" left="94" width="347" height="18" font="5">Our findings indicate that one of the key recommenda-</text>
<text top="566" left="81" width="359" height="18" font="5">tions from security experts in response to the threat of mass</text>
<text top="582" left="81" width="359" height="18" font="5">surveillance—promotion of DHE-based TLS ciphersuites</text>
<text top="597" left="81" width="361" height="18" font="5">offering “perfect forward secrecy” over RSA-based cipher-</text>
<text top="613" left="81" width="361" height="18" font="5">suites—may have actually reduced security for many hosts.</text>
<text top="629" left="81" width="361" height="18" font="5">In this section, we present concrete recommendations to re-</text>
<text top="644" left="81" width="359" height="18" font="5">cover the expected security of Diffie-Hellman as it is used in</text>
<text top="660" left="81" width="187" height="18" font="5">mainstream Internet protocols.</text>
<text top="681" left="80" width="201" height="18" font="14"><b>Transition to elliptic curves.</b></text>
<text top="681" left="305" width="137" height="18" font="5">Transitioning to ellip-</text>
<text top="696" left="81" width="361" height="18" font="5">tic curve Diffie-Hellman (ECDH) key exchange with appro-</text>
<text top="712" left="81" width="359" height="18" font="5">priate parameters avoids all known feasible cryptanalytic</text>
<text top="728" left="81" width="359" height="18" font="5">attacks. Current elliptic curve discrete log algorithms for</text>
<text top="743" left="81" width="359" height="18" font="5">strong curves do not gain as much of an advantage from</text>
<text top="759" left="81" width="359" height="18" font="5">precomputation. In addition, ECDH keys are shorter than</text>
<text top="775" left="81" width="49" height="18" font="5">in “mod</text>
<text top="779" left="134" width="7" height="13" font="8"><i>p</i></text>
<text top="775" left="141" width="298" height="18" font="5">” Diffie-Hellman, and shared-secret computations</text>
<text top="790" left="81" width="359" height="18" font="5">are faster. Unfortunately, the most widely supported ECDH</text>
<text top="806" left="81" width="359" height="18" font="5">parameters, those specified by NIST, are now viewed with</text>
<text top="822" left="81" width="359" height="18" font="5">suspicion due to NSA influence on their design, despite no</text>
<text top="837" left="81" width="361" height="18" font="5">known or suspected weaknesses. These curves are under-</text>
<text top="853" left="81" width="359" height="18" font="5">going scrutiny, and new curves, such as Curve25519, are</text>
<text top="869" left="81" width="361" height="18" font="5">being standardized by the IRTF for use in Internet proto-</text>
<text top="885" left="81" width="359" height="18" font="5">cols. We recommend transitioning to elliptic curves where</text>
<text top="900" left="81" width="359" height="18" font="5">possible; this is the most effective long-term solution to the</text>
<text top="916" left="80" width="232" height="18" font="5">vulnerabilities described in this paper.</text>
<text top="936" left="81" width="234" height="18" font="14"><b>Increase minimum key strengths.</b></text>
<text top="936" left="338" width="102" height="18" font="5">Server operators</text>
<text top="952" left="81" width="84" height="18" font="5">should disable</text>
<text top="958" left="169" width="83" height="11" font="24">DHE_EXPORT</text>
<text top="952" left="256" width="80" height="18" font="5">and configure</text>
<text top="958" left="340" width="25" height="11" font="24">DHE</text>
<text top="952" left="370" width="69" height="18" font="5">ciphersuites</text>
<text top="968" left="81" width="359" height="18" font="5">to use primes of 2048 bits or larger. Browsers and clients</text>
<text top="983" left="81" width="359" height="18" font="5">should raise the minimum accepted size for Diffie-Hellman</text>
<text top="999" left="81" width="361" height="18" font="5">groups to at least 1024 bits in order to avoid downgrade at-</text>
<text top="1015" left="81" width="359" height="18" font="5">tacks when communicating with servers that still use smaller</text>
<text top="1030" left="81" width="361" height="18" font="5">groups. Primes of less than 1024 bits should not be con-</text>
<text top="1046" left="81" width="361" height="18" font="5">sidered secure, even against an attacker with moderate re-</text>
<text top="1062" left="81" width="47" height="18" font="5">sources.</text>
<text top="82" left="489" width="345" height="18" font="5">Our analysis suggests that 1024-bit discrete log may be</text>
<text top="97" left="475" width="328" height="18" font="5">within reach for state-level actors. As such, 1024-bit</text>
<text top="103" left="808" width="26" height="11" font="24">DHE</text>
<text top="113" left="474" width="363" height="18" font="5">(and 1024-bit RSA) must be phased out in the near term.</text>
<text top="129" left="475" width="359" height="18" font="5">NIST has recommended such a transition since 2010 <a href="sample-technical.html#12">[4]. </a>We</text>
<text top="144" left="475" width="251" height="18" font="5">recommend that clients raise the minimum</text>
<text top="150" left="730" width="25" height="11" font="24">DHE</text>
<text top="144" left="759" width="75" height="18" font="5">group size to</text>
<text top="160" left="475" width="361" height="18" font="5">2048 bits as soon as server configurations allow. Server opera-</text>
<text top="176" left="475" width="359" height="18" font="5">tors should move to 2048-bit or larger groups to facilitate this</text>
<text top="191" left="475" width="359" height="18" font="5">transition. Precomputation for a 2048-bit non-trapdoored</text>
<text top="207" left="475" width="113" height="18" font="5">group is around 10</text>
<text top="209" left="588" width="5" height="8" font="16">9</text>
<text top="207" left="599" width="237" height="18" font="5">times harder than for a 1024-bit group,</text>
<text top="223" left="475" width="359" height="18" font="5">so 2048-bit Diffie-Hellman will remain secure barring a major</text>
<text top="238" left="475" width="155" height="18" font="5">algorithmic improvement.</text>
<text top="258" left="475" width="242" height="18" font="14"><b>Avoid fixed-prime 1024-bit groups.</b></text>
<text top="258" left="736" width="100" height="18" font="5">For implementa-</text>
<text top="274" left="475" width="359" height="18" font="5">tions that must continue to use or support 1024-bit groups</text>
<text top="290" left="475" width="359" height="18" font="5">for compatibility reasons, generating fresh groups may help</text>
<text top="305" left="475" width="361" height="18" font="5">mitigate some of the damage caused by NFS-style precom-</text>
<text top="321" left="475" width="359" height="18" font="5">putation for very common fixed groups. However, we note</text>
<text top="337" left="475" width="359" height="18" font="5">that it is possible to create trapdoored primes <a href="sample-technical.html#12">[20,</a><a href="sample-technical.html#13">44] </a>that</text>
<text top="352" left="475" width="359" height="18" font="5">are computationally difficult to detect. At minimum, clients</text>
<text top="368" left="475" width="359" height="18" font="5">should check that servers’ parameters use safe primes or a</text>
<text top="384" left="475" width="359" height="18" font="5">verifiable generation process, such as that proposed in FIPS</text>
<text top="399" left="475" width="359" height="18" font="5">186 <a href="sample-technical.html#13">[38]. </a>Ideally, the process for generating and validating</text>
<text top="415" left="475" width="359" height="18" font="5">parameters in TLS should be standardized so as to thwart</text>
<text top="431" left="475" width="128" height="18" font="5">the risk of trapdoors.</text>
<text top="451" left="475" width="240" height="18" font="14"><b>Don’t deliberately weaken crypto.</b></text>
<text top="451" left="738" width="96" height="18" font="5">Our downgrade</text>
<text top="466" left="475" width="359" height="18" font="5">attack on export-grade 512-bit Diffie-Hellman groups in TLS</text>
<text top="482" left="475" width="361" height="18" font="5">illustrates the fragility of cryptographic “front doors”. Al-</text>
<text top="498" left="475" width="235" height="18" font="5">though the key sizes originally used in</text>
<text top="504" left="715" width="86" height="11" font="24">DHE_EXPORT</text>
<text top="498" left="806" width="28" height="18" font="5">were</text>
<text top="513" left="475" width="361" height="18" font="5">intended to be tractable only to NSA, two decades of algo-</text>
<text top="529" left="475" width="359" height="18" font="5">rithmic and computational improvements have significantly</text>
<text top="545" left="475" width="359" height="18" font="5">lowered the bar to attacks on such key sizes. Despite the</text>
<text top="560" left="475" width="361" height="18" font="5">eventual relaxation of crypto export restrictions and subse-</text>
<text top="576" left="475" width="238" height="18" font="5">quent attempts to remove support for</text>
<text top="582" left="718" width="86" height="11" font="24">DHE_EXPORT</text>
<text top="576" left="805" width="29" height="18" font="5">, the</text>
<text top="592" left="475" width="359" height="18" font="5">technical debt induced by the additional complexity has left</text>
<text top="608" left="475" width="361" height="18" font="5">implementations vulnerable for decades. Like FREAK <a href="sample-technical.html#12">[7],</a></text>
<text top="623" left="475" width="359" height="18" font="5">our attacks warn of the long-term debilitating effects of</text>
<text top="639" left="475" width="225" height="18" font="5">deliberately weakening cryptography.</text>
<text top="676" left="475" width="13" height="16" font="4">6.</text>
<text top="676" left="507" width="259" height="16" font="4">DISCLOSURE AND RESPONSE</text>
<text top="693" left="489" width="346" height="18" font="5">We notified major client and server developers about</text>
<text top="709" left="475" width="359" height="18" font="5">the vulnerabilities discussed in this paper before we made</text>
<text top="725" left="475" width="361" height="18" font="5">our findings public. Prior to our work, Internet Explorer,</text>
<text top="741" left="475" width="361" height="18" font="5">Chrome, Firefox, and Opera all accepted 512-bit primes,</text>
<text top="756" left="475" width="359" height="18" font="5">whereas Safari allowed groups as small as 16 bits. As a</text>
<text top="772" left="475" width="359" height="18" font="5">result of our disclosures, Internet Explorer <a href="sample-technical.html#12">[37], </a>Firefox, and</text>
<text top="788" left="475" width="288" height="18" font="5">Chrome are transitioning the minimum size of the</text>
<text top="793" left="766" width="25" height="11" font="24">DHE</text>
<text top="788" left="795" width="39" height="18" font="5">groups</text>
<text top="803" left="475" width="361" height="18" font="5">they accept to 1024 bits, and OpenSSL and Safari are ex-</text>
<text top="819" left="475" width="361" height="18" font="5">pected to follow suit. On the server side, we notified Apache,</text>
<text top="835" left="475" width="361" height="18" font="5">Oracle, IBM, Cisco, and various hosting providers. Aka-</text>
<text top="850" left="475" width="359" height="18" font="5">mai has removed all support for export ciphersuites. Many</text>
<text top="866" left="475" width="359" height="18" font="5">TLS developers plan to support a new extension that allows</text>
<text top="882" left="475" width="359" height="18" font="5">clients and servers to negotiate a few well-known groups of</text>
<text top="897" left="475" width="353" height="18" font="5">2048-bits and higher and to gracefully reject weak ones <a href="sample-technical.html#12">[19].</a></text>
<text top="934" left="475" width="13" height="16" font="4">7.</text>
<text top="934" left="507" width="122" height="16" font="4">CONCLUSION</text>
<text top="952" left="489" width="345" height="18" font="5">Diffie-Hellman key exchange is a cornerstone of applied</text>
<text top="968" left="475" width="359" height="18" font="5">cryptography, but we find that, as used in practice, it is often</text>
<text top="983" left="475" width="359" height="18" font="5">less secure than widely believed. The problems stem from</text>
<text top="999" left="475" width="359" height="18" font="5">the fact that the number field sieve for discrete log allows an</text>
<text top="1015" left="475" width="359" height="18" font="5">attacker to perform a single precomputation that depends</text>
<text top="1030" left="475" width="359" height="18" font="5">only on the group, after which computing individual logs in</text>
<text top="1046" left="475" width="359" height="18" font="5">that group has a far lower cost. Although this fact is well</text>
<text top="1062" left="475" width="359" height="18" font="5">known to cryptographers, it apparently has not been widely</text>
<text top="1107" left="450" width="14" height="18" font="5">11</text>
</page>
<page number="12" position="absolute" top="0" left="0" height="1188" width="918">
<text top="82" left="81" width="361" height="18" font="5">understood by system builders. Likewise, many cryptogra-</text>
<text top="97" left="81" width="359" height="18" font="5">phers did not appreciate that the security of a large fraction</text>
<text top="113" left="81" width="359" height="18" font="5">of Internet communication depends on Diffie-Hellman key</text>
<text top="129" left="81" width="326" height="18" font="5">exchanges that use a few small, widely shared groups.</text>
<text top="144" left="94" width="347" height="18" font="5">A key lesson from this state of affairs is that cryptogra-</text>
<text top="160" left="81" width="359" height="18" font="5">phers and creators of practical systems need to work together</text>
<text top="176" left="81" width="359" height="18" font="5">more effectively. System builders should take responsibility</text>
<text top="191" left="81" width="361" height="18" font="5">for being aware of applicable cryptanalytic attacks. Cryp-</text>
<text top="207" left="81" width="359" height="18" font="5">tographers, for their part, should involve themselves in how</text>
<text top="223" left="81" width="359" height="18" font="5">crypto is actually being applied, such as through engagement</text>
<text top="238" left="80" width="361" height="18" font="5">with standards efforts and software review. Bridging the per-</text>
<text top="254" left="81" width="359" height="18" font="5">ilous gap that separates these communities will be essential</text>
<text top="270" left="81" width="204" height="18" font="5">for keeping future systems secure.</text>
<text top="309" left="81" width="140" height="16" font="4">Acknowledgments</text>
<text top="329" left="80" width="361" height="18" font="5">The authors wish to thank Michael Bailey, Daniel Bernstein,</text>
<text top="345" left="81" width="361" height="18" font="5">Ron Dreslinski, Tanja Lange, Adam Langley, Kenny Paterson,</text>
<text top="361" left="80" width="361" height="18" font="5">Andrei Popov, Ivan Ristic, Edward Snowden, Brian Smith,</text>
<text top="376" left="81" width="359" height="18" font="5">Martin Thomson, and Eric Rescorla. This material is based</text>
<text top="392" left="81" width="359" height="18" font="5">in part upon work supported by the U.S. National Science</text>
<text top="408" left="81" width="361" height="18" font="5">Foundation under contracts CNS-1345254, CNS-1409505,</text>
<text top="423" left="81" width="359" height="18" font="5">CNS-1518741, and EFRI-1441209, by the Office of Naval</text>
<text top="439" left="81" width="359" height="18" font="5">Research under contract N00014-11-1-0470, by the ERC</text>
<text top="455" left="81" width="361" height="18" font="5">Starting Grant 259639 (CRYSP), by the French ANR re-</text>
<text top="470" left="81" width="359" height="18" font="5">search grant ANR-12-BS02-001-01, by the NSF Graduate</text>
<text top="486" left="81" width="361" height="18" font="5">Research Fellowship Program under grant DGE-1256260,</text>
<text top="502" left="81" width="359" height="18" font="5">by the Mozilla Foundation, by a gift from Supermicro, by</text>
<text top="518" left="81" width="359" height="18" font="5">the Google Ph.D. Fellowship in Computer Security, by the</text>
<text top="533" left="81" width="361" height="18" font="5">Morris Wellman Faculty Development Assistant Professor-</text>
<text top="549" left="81" width="361" height="18" font="5">ship, and by an Alfred P. Sloan Foundation Research Fellow-</text>
<text top="565" left="81" width="359" height="18" font="5">ship. Some experiments were conducted using the Grid’5000</text>
<text top="580" left="81" width="361" height="18" font="5">testbed, which is supported by INRIA, CNRS, RENATER,</text>
<text top="596" left="81" width="359" height="18" font="5">and several other universities and organizations; additional</text>
<text top="612" left="81" width="310" height="18" font="5">experiments used UCS hardware donated by Cisco.</text>
<text top="651" left="81" width="13" height="16" font="4">8.</text>
<text top="651" left="112" width="121" height="16" font="4">REFERENCES</text>
<text top="678" left="87" width="313" height="11" font="21">[1] S. Bai, C. Bouvier, A. Filbois, P. Gaudry, L. Imbert,</text>
<text top="691" left="107" width="312" height="11" font="21">A. Kruppa, F. Morain, E. Thomé, and P. Zimmermann.</text>
<text top="706" left="107" width="51" height="10" font="22">cado-nfs</text>
<text top="705" left="158" width="252" height="11" font="21">, an implementation of the number field sieve</text>
<text top="718" left="107" width="170" height="11" font="21">algorithm, 2014. Release 2.1.1.</text>
<text top="733" left="87" width="102" height="11" font="21">[2] R. Barbulescu.</text>
<text top="733" left="193" width="246" height="11" font="23"><i>Algorithmes de logarithmes discrets dans les</i></text>
<text top="746" left="106" width="57" height="11" font="23"><i>corps finis</i></text>
<text top="746" left="163" width="279" height="11" font="21">. PhD thesis, Université de Lorraine, France, 2013.</text>
<text top="761" left="87" width="319" height="11" font="21">[3] R. Barbulescu, P. Gaudry, A. Joux, and E. Thomé. A</text>
<text top="775" left="107" width="328" height="11" font="21">heuristic quasi-polynomial algorithm for discrete logarithm</text>
<text top="788" left="107" width="221" height="11" font="21">in finite fields of small characteristic. In</text>
<text top="788" left="332" width="55" height="11" font="23"><i>Eurocrypt</i></text>
<text top="788" left="387" width="37" height="11" font="21">, 2014.</text>
<text top="803" left="87" width="331" height="11" font="21">[4] E. Barker, W. Barker, W. Burr, W. Polk, and M. Smid.</text>
<text top="817" left="106" width="333" height="11" font="23"><i>NIST Special Publication 800-57: Recommendation for Key</i></text>
<text top="830" left="106" width="72" height="11" font="23"><i>Management</i></text>
<text top="830" left="178" width="37" height="11" font="21">, 2007.</text>
<text top="845" left="87" width="354" height="11" font="21">[5] D. J. Bernstein. How to find smooth parts of integers, 2004.</text>
<text top="859" left="107" width="316" height="11" font="21"><a href="http://cr.yp.to/factorization/smoothparts-20040510.pdf">http://cr.yp.to/factorization/smoothparts-20040510.pdf.</a></text>
<text top="873" left="87" width="270" height="11" font="21">[6] D. J. Bernstein and T. Lange. Batch NFS. In</text>
<text top="873" left="361" width="78" height="11" font="23"><i>Selected Areas</i></text>
<text top="887" left="106" width="90" height="11" font="23"><i>in Cryptography</i></text>
<text top="887" left="196" width="37" height="11" font="21">, 2014.</text>
<text top="902" left="87" width="307" height="11" font="21">[7] B. Beurdouche, K. Bhargavan, A. Delignat-Lavaud,</text>
<text top="915" left="107" width="335" height="11" font="21">C. Fournet, M. Kohlweiss, A. Pironti, P.-Y. Strub, and J. K.</text>
<text top="929" left="107" width="304" height="11" font="21">Zinzindohoue. A messy state of the union: Taming the</text>
<text top="942" left="107" width="204" height="11" font="21">composite state machines of TLS. In</text>
<text top="942" left="315" width="117" height="11" font="23"><i>IEEE Symposium on</i></text>
<text top="956" left="107" width="117" height="11" font="23"><i>Security and Privacy</i></text>
<text top="956" left="224" width="37" height="11" font="21">, 2015.</text>
<text top="971" left="87" width="354" height="11" font="21">[8] C. Bouvier, P. Gaudry, L. Imbert, H. Jeljeli, and E. Thomé.</text>
<text top="984" left="107" width="323" height="11" font="21">New record for discrete logarithm in a prime finite field of</text>
<text top="997" left="107" width="321" height="11" font="21">180 decimal digits, 2014. <a href="http://caramel.loria.fr/p180.txt">http://caramel.loria.fr/p180.txt.</a></text>
<text top="1012" left="87" width="330" height="11" font="21">[9] R. Canetti and H. Krawczyk. Security analysis of IKE’s</text>
<text top="1026" left="107" width="233" height="11" font="21">signature-based key-exchange protocol. In</text>
<text top="1026" left="344" width="38" height="11" font="23"><i>Crypto</i></text>
<text top="1026" left="382" width="37" height="11" font="21">, 2002.</text>
<text top="1041" left="81" width="336" height="11" font="21">[10] A. Commeine and I. Semaev. An algorithm to solve the</text>
<text top="1054" left="107" width="324" height="11" font="21">discrete logarithm problem with the number field sieve. In</text>
<text top="1068" left="106" width="27" height="11" font="23"><i>PKC</i></text>
<text top="1068" left="134" width="37" height="11" font="21">, 2006.</text>
<text top="87" left="475" width="343" height="11" font="21">[11] D. Coppersmith. Solving linear equations over GF(2) via</text>
<text top="101" left="502" width="161" height="11" font="21">block Wiedemann algorithm.</text>
<text top="101" left="667" width="74" height="11" font="23"><i>Math. Comp.</i></text>
<text top="101" left="741" width="86" height="11" font="21">, 62(205), 1994.</text>
<text top="116" left="475" width="218" height="11" font="21">[12] R. Crandall and C. B. Pomerance.</text>
<text top="116" left="698" width="107" height="11" font="23"><i>Prime Numbers: A</i></text>
<text top="130" left="500" width="149" height="11" font="23"><i>Computational Perspective</i></text>
<text top="130" left="649" width="91" height="11" font="21">. Springer, 2001.</text>
<text top="145" left="475" width="351" height="11" font="21">[13] B. den Boer. Diffie-Hellman is as strong as discrete log for</text>
<text top="159" left="502" width="99" height="11" font="21">certain primes. In</text>
<text top="159" left="604" width="38" height="11" font="23"><i>Crypto</i></text>
<text top="159" left="643" width="37" height="11" font="21">, 1988.</text>
<text top="174" left="475" width="293" height="11" font="21">[14] W. Diffie and M. E. Hellman. New directions in</text>
<text top="188" left="502" width="76" height="11" font="21">cryptography.</text>
<text top="188" left="582" width="162" height="11" font="23"><i>IEEE Trans. Inform. Theory</i></text>
<text top="188" left="745" width="88" height="11" font="21">, 22(6):644–654,</text>
<text top="201" left="501" width="29" height="11" font="21">1976.</text>
<text top="216" left="475" width="344" height="11" font="21">[15] Z. Durumeric, E. Wustrow, and J. A. Halderman. ZMap:</text>
<text top="230" left="502" width="332" height="11" font="21">Fast Internet-wide scanning and its security applications. In</text>
<text top="243" left="500" width="87" height="11" font="23"><i>Usenix Security</i></text>
<text top="243" left="586" width="37" height="11" font="21">, 2013.</text>
<text top="259" left="475" width="359" height="11" font="21">[16] M. Friedl, N. Provos, and W. Simpson. Diffie-Hellman group</text>
<text top="272" left="502" width="335" height="11" font="21">exchange for the secure shell (SSH) transport layer protocol.</text>
<text top="286" left="502" width="123" height="11" font="21">RFC 4419, Mar. 2006.</text>
<text top="301" left="475" width="354" height="11" font="21">[17] W. Geiselmann, H. Kopfer, R. Steinwandt, and E. Tromer.</text>
<text top="315" left="502" width="327" height="11" font="21">Improved routing-based linear algebra for the number field</text>
<text top="328" left="502" width="46" height="11" font="21">sieve. In</text>
<text top="328" left="552" width="272" height="11" font="23"><i>Information Technology: Coding and Computing</i></text>
<text top="328" left="823" width="4" height="11" font="21">,</text>
<text top="341" left="501" width="29" height="11" font="21">2005.</text>
<text top="357" left="475" width="357" height="11" font="21">[18] W. Geiselmann and R. Steinwandt. Non-wafer-scale sieving</text>
<text top="370" left="502" width="297" height="11" font="21">hardware for the NFS: Another attempt to cope with</text>
<text top="384" left="501" width="65" height="11" font="21">1024-bit. In</text>
<text top="384" left="570" width="55" height="11" font="23"><i>Eurocrypt</i></text>
<text top="384" left="624" width="37" height="11" font="21">, 2007.</text>
<text top="399" left="475" width="359" height="11" font="21">[19] D. Gillmor. Negotiated finite field Diffie-Hellman ephemeral</text>
<text top="413" left="502" width="296" height="11" font="21">parameters for TLS. IETF Internet Draft, May 2015.</text>
<text top="428" left="475" width="324" height="11" font="21">[20] D. M. Gordon. Designing and detecting trapdoors for</text>
<text top="442" left="502" width="165" height="11" font="21">discrete log cryptosystems. In</text>
<text top="442" left="671" width="38" height="11" font="23"><i>Crypto</i></text>
<text top="442" left="709" width="37" height="11" font="21">, 1992.</text>
<text top="457" left="475" width="263" height="11" font="21">[21] D. M. Gordon. Discrete logarithms in GF(</text>
<text top="457" left="738" width="6" height="11" font="32"><i>p</i></text>
<text top="457" left="745" width="60" height="11" font="21">) using the</text>
<text top="470" left="502" width="103" height="11" font="21">number field sieve.</text>
<text top="470" left="609" width="136" height="11" font="23"><i>SIAM J. Discrete Math.</i></text>
<text top="470" left="745" width="67" height="11" font="21">, 6(1), 1993.</text>
<text top="486" left="475" width="361" height="11" font="21">[22] D. Harkins and D. Carrel. The Internet key exchange (IKE).</text>
<text top="499" left="502" width="123" height="11" font="21">RFC 2409, Nov. 1998.</text>
<text top="515" left="475" width="332" height="11" font="21">[23] T. Jager, K. G. Paterson, and J. Somorovsky. One bad</text>
<text top="528" left="502" width="325" height="11" font="21">apple: Backwards compatibility attacks on state-of-the-art</text>
<text top="542" left="502" width="92" height="11" font="21">cryptography. In</text>
<text top="542" left="598" width="34" height="11" font="23"><i>NDSS</i></text>
<text top="542" left="632" width="37" height="11" font="21">, 2013.</text>
<text top="557" left="475" width="322" height="11" font="21">[24] A. Joux and R. Lercier. Improvements to the general</text>
<text top="571" left="502" width="330" height="11" font="21">number field sieve for discrete logarithms in prime fields. A</text>
<text top="584" left="502" width="260" height="11" font="21">comparison with the Gaussian integer method.</text>
<text top="584" left="766" width="33" height="11" font="23"><i>Math.</i></text>
<text top="597" left="500" width="37" height="11" font="23"><i>Comp.</i></text>
<text top="597" left="537" width="134" height="11" font="21">, 72(242):953–967, 2003.</text>
<text top="613" left="475" width="361" height="11" font="21">[25] C. Kaufman, P. Hoffman, Y. Nir, P. Eronen, and T. Kivinen.</text>
<text top="626" left="502" width="279" height="11" font="21">Internet key exchange protocol version 2 (IKEv2).</text>
<text top="640" left="502" width="121" height="11" font="21">RFC 7296, Oct. 2014.</text>
<text top="655" left="475" width="344" height="11" font="21">[26] S. Kent. IP authentication header. RFC 4302, Dec. 2005.</text>
<text top="671" left="475" width="306" height="11" font="21">[27] S. Kent. IP encapsulating security payload (ESP).</text>
<text top="684" left="502" width="122" height="11" font="21">RFC 4303, Dec. 2005.</text>
<text top="700" left="475" width="359" height="11" font="21">[28] T. Kleinjung. Cofactorisation strategies for the number field</text>
<text top="713" left="502" width="332" height="11" font="21">sieve and an estimate for the sieving step for factoring 1024</text>
<text top="726" left="502" width="306" height="11" font="21">bit integers, 2006. <a href="http://www.hyperelliptic.org/tanja/SHARCS/talks06/thorsten.pdf">http://www.hyperelliptic.org/tanja/</a></text>
<text top="740" left="502" width="176" height="11" font="21"><a href="http://www.hyperelliptic.org/tanja/SHARCS/talks06/thorsten.pdf">SHARCS/talks06/thorsten.pdf.</a></text>
<text top="755" left="475" width="359" height="11" font="21">[29] T. Kleinjung, K. Aoki, J. Franke, A. K. Lenstra, E. Thomé,</text>
<text top="769" left="501" width="333" height="11" font="21">J. W. Bos, P. Gaudry, A. Kruppa, P. L. Montgomery, D. A.</text>
<text top="782" left="502" width="301" height="11" font="21">Osvik, H. te Riele, A. Timofeev, and P. Zimmermann.</text>
<text top="796" left="502" width="242" height="11" font="21">Factorization of a 768-bit RSA modulus. In</text>
<text top="796" left="748" width="38" height="11" font="23"><i>Crypto</i></text>
<text top="796" left="786" width="37" height="11" font="21">, 2010.</text>
<text top="811" left="475" width="355" height="11" font="21">[30] A. Langley, N. Modadugu, and B. Moeller. Transport layer</text>
<text top="825" left="502" width="298" height="11" font="21">security (TLS) false start. IETF Internet Draft, 2010.</text>
<text top="840" left="475" width="284" height="11" font="21">[31] A. K. Lenstra and H. W. Lenstra, Jr., editors.</text>
<text top="840" left="763" width="22" height="11" font="23"><i>The</i></text>
<text top="853" left="501" width="222" height="11" font="23"><i>Development of the Number Field Sieve</i></text>
<text top="853" left="723" width="91" height="11" font="21">. Springer, 1993.</text>
<text top="869" left="475" width="332" height="11" font="21">[32] M. Lipacis. Semiconductors: Moore stress = structural</text>
<text top="882" left="502" width="262" height="11" font="21">industry shift. Technical report, Jefferies, 2012.</text>
<text top="898" left="475" width="335" height="11" font="21">[33] U. M. Maurer. Towards the equivalence of breaking the</text>
<text top="911" left="502" width="330" height="11" font="21">Diffie-Hellman protocol and computing discrete logarithms.</text>
<text top="925" left="502" width="12" height="11" font="21">In</text>
<text top="925" left="518" width="38" height="11" font="23"><i>Crypto</i></text>
<text top="925" left="556" width="37" height="11" font="21">, 1994.</text>
<text top="940" left="475" width="315" height="11" font="21">[34] U. M. Maurer and S. Wolf. Diffie-Hellman oracles. In</text>
<text top="940" left="795" width="37" height="11" font="23"><i>Crypto</i></text>
<text top="940" left="832" width="3" height="11" font="21">,</text>
<text top="954" left="501" width="29" height="11" font="21">1996.</text>
<text top="969" left="475" width="348" height="11" font="21">[35] N. Mavrogiannopoulos, F. Vercauteren, V. Velichkov, and</text>
<text top="982" left="502" width="332" height="11" font="21">B. Preneel. A cross-protocol attack on the TLS protocol. In</text>
<text top="996" left="501" width="60" height="11" font="23"><i>ACM CCS</i></text>
<text top="996" left="560" width="111" height="11" font="21">, pages 62–72, 2012.</text>
<text top="1011" left="475" width="359" height="11" font="21">[36] C. Meadows. Analysis of the Internet key exchange protocol</text>
<text top="1025" left="502" width="202" height="11" font="21">using the NRL protocol analyzer. In</text>
<text top="1025" left="707" width="117" height="11" font="23"><i>IEEE Symposium on</i></text>
<text top="1038" left="501" width="117" height="11" font="23"><i>Security and Privacy</i></text>
<text top="1038" left="618" width="37" height="11" font="21">, 1999.</text>
<text top="1054" left="475" width="330" height="11" font="21">[37] Microsoft Security Bulletin MS15-055. Vulnerability in</text>
<text top="1067" left="502" width="308" height="11" font="21">Schannel could allow information disclosure, May 2015.</text>
<text top="1107" left="450" width="14" height="18" font="5">12</text>
</page>
<page number="13" position="absolute" top="0" left="0" height="1188" width="918">
<text top="87" left="81" width="350" height="11" font="21">[38] NIST. FIPS PUB 186-4: Digital signature standard, 2013.</text>
<text top="102" left="81" width="348" height="11" font="21">[39] Oak Ridge National Laboratory. Introducing Titan, 2012.</text>
<text top="116" left="107" width="180" height="11" font="21"><a href="https://www.olcf.ornl.gov/titan">https://www.olcf.ornl.gov/titan.</a></text>
<text top="131" left="81" width="313" height="11" font="21">[40] H. Orman. The Oakley key determination protocol.</text>
<text top="144" left="107" width="123" height="11" font="21">RFC 2412, Nov. 1998.</text>
<text top="159" left="81" width="359" height="11" font="21">[41] S. C. Pohlig and M. E. Hellman. An improved algorithm for</text>
<text top="173" left="107" width="176" height="11" font="21">computing logarithms over GF(</text>
<text top="173" left="283" width="6" height="11" font="32"><i>p</i></text>
<text top="173" left="290" width="128" height="11" font="21">) and its cryptographic</text>
<text top="186" left="107" width="124" height="11" font="21">significance (corresp.).</text>
<text top="186" left="235" width="127" height="11" font="23"><i>Trans. Inform. Theory</i></text>
<text top="186" left="362" width="73" height="11" font="21">, 24(1), 1978.</text>
<text top="201" left="81" width="331" height="11" font="21">[42] J. M. Pollard. A Monte Carlo method for factorization.</text>
<text top="201" left="416" width="23" height="11" font="23"><i>BIT</i></text>
<text top="215" left="106" width="133" height="11" font="23"><i>Numerical Mathematics</i></text>
<text top="215" left="239" width="121" height="11" font="21">, 15(3):331–334, 1975.</text>
<text top="230" left="81" width="223" height="11" font="21">[43] O. Schirokauer. Virtual logarithms.</text>
<text top="230" left="308" width="76" height="11" font="23"><i>J. Algorithms</i></text>
<text top="230" left="384" width="4" height="11" font="21">,</text>
<text top="243" left="107" width="114" height="11" font="21">57(2):140–147, 2005.</text>
<text top="258" left="81" width="344" height="11" font="21">[44] I. A. Semaev. Special prime numbers and discrete logs in</text>
<text top="272" left="107" width="100" height="11" font="21">finite prime fields.</text>
<text top="272" left="212" width="74" height="11" font="23"><i>Math. Comp.</i></text>
<text top="272" left="286" width="134" height="11" font="21">, 71(237):363–377, 2002.</text>
<text top="287" left="81" width="337" height="11" font="21">[45] D. Shanks. Class number, a theory of factorization, and</text>
<text top="300" left="107" width="55" height="11" font="21">genera. In</text>
<text top="300" left="167" width="148" height="11" font="23"><i>Proc. Sympos. Pure Math.</i></text>
<text top="300" left="314" width="101" height="11" font="21">, volume 20. 1971.</text>
<text top="315" left="81" width="359" height="11" font="21">[46] Spiegel Staff. Prying eyes: Inside the NSA’s war on Internet</text>
<text top="329" left="107" width="175" height="11" font="21">security. Der Spiegel, Dec 2014.</text>
<text top="342" left="107" width="261" height="11" font="21"><a href="http://www.spiegel.de/international/germany/inside-the-nsa-s-war-on-internet-security-a-1010361.html">http://www.spiegel.de/international/germany/</a></text>
<text top="355" left="107" width="321" height="11" font="21"><a href="http://www.spiegel.de/international/germany/inside-the-nsa-s-war-on-internet-security-a-1010361.html">inside-the-nsa-s-war-on-internet-security-a-1010361.html.</a></text>
<text top="371" left="81" width="108" height="11" font="21">[47] W. Stein et al.</text>
<text top="371" left="193" width="234" height="11" font="23"><i>Sage Mathematics Software (Version 6.5)</i></text>
<text top="371" left="427" width="4" height="11" font="21">.</text>
<text top="384" left="107" width="200" height="11" font="21">The Sage Development Team, 2015.</text>
<text top="397" left="107" width="148" height="11" font="21"><a href="http://www.sagemath.org">http://www.sagemath.org.</a></text>
<text top="412" left="81" width="311" height="11" font="21">[48] stud: The scalable TLS unwrapping daemon, 2012.</text>
<text top="426" left="107" width="235" height="11" font="21"><a href="https://github.com/bumptech/stud/blob/19a7f19686bcdbd689c6fbea31f68a276e62d886/stud.c#L593">https://github.com/bumptech/stud/blob/</a></text>
<text top="439" left="107" width="330" height="11" font="21"><a href="https://github.com/bumptech/stud/blob/19a7f19686bcdbd689c6fbea31f68a276e62d886/stud.c#L593">19a7f19686bcdbd689c6fbea31f68a276e62d886/stud.c#L593.</a></text>
<text top="454" left="81" width="352" height="11" font="21">[49] E. Thomé. Subquadratic computation of vector generating</text>
<text top="468" left="107" width="307" height="11" font="21">polynomials and improvement of the block Wiedemann</text>
<text top="481" left="107" width="57" height="11" font="21">algorithm.</text>
<text top="481" left="169" width="117" height="11" font="23"><i>J. Symbolic Comput.</i></text>
<text top="481" left="285" width="121" height="11" font="21">, 33(5):757–775, 2002.</text>
<text top="496" left="81" width="336" height="11" font="21">[50] P. C. Van Oorschot and M. J. Wiener. Parallel collision</text>
<text top="510" left="107" width="300" height="11" font="21">search with application to hash functions and discrete</text>
<text top="523" left="107" width="78" height="11" font="21">logarithms. In</text>
<text top="523" left="189" width="60" height="11" font="23"><i>ACM CCS</i></text>
<text top="523" left="249" width="37" height="11" font="21">, 1994.</text>
<text top="538" left="81" width="346" height="11" font="21">[51] P. C. Van Oorschot and M. J. Wiener. On Diffie-Hellman</text>
<text top="552" left="107" width="220" height="11" font="21">key agreement with short exponents. In</text>
<text top="552" left="332" width="55" height="11" font="23"><i>Eurocrypt</i></text>
<text top="552" left="386" width="37" height="11" font="21">, 1996.</text>
<text top="567" left="81" width="361" height="11" font="21">[52] D. Wagner and B. Schneier. Analysis of the SSL 3.0 protocol.</text>
<text top="580" left="107" width="12" height="11" font="21">In</text>
<text top="580" left="123" width="263" height="11" font="23"><i>2nd Usenix Workshop on Electronic Commerce</i></text>
<text top="580" left="386" width="37" height="11" font="21">, 1996.</text>
<text top="595" left="81" width="359" height="11" font="21">[53] J. Wagnon. SSL profiles part 5: SSL options, 2013. <a href="https://devcentral.f5.com/articles/ssl-profiles-part-5-ssl-options">https://</a></text>
<text top="609" left="107" width="314" height="11" font="21"><a href="https://devcentral.f5.com/articles/ssl-profiles-part-5-ssl-options">devcentral.f5.com/articles/ssl-profiles-part-5-ssl-options.</a></text>
<text top="87" left="475" width="253" height="11" font="21">[54] P. Zimmermann et al. GMP-ECM, 2012.</text>
<text top="101" left="502" width="202" height="11" font="21"><a href="https://gforge.inria.fr/projects/ecm">https://gforge.inria.fr/projects/ecm.</a></text>
<text top="116" left="475" width="346" height="11" font="21">[55] APEX active/passive exfiltration. Media leak, Aug. 2009.</text>
<text top="130" left="502" width="266" height="11" font="21"><a href="http://www.spiegel.de/media/media-35671.pdf">http://www.spiegel.de/media/media-35671.pdf.</a></text>
<text top="146" left="475" width="356" height="11" font="21">[56] Fielded capability: End-to-end VPN SPIN 9 design review.</text>
<text top="159" left="502" width="334" height="11" font="21">Media leak. <a href="http://www.spiegel.de/media/media-35529.pdf">http://www.spiegel.de/media/media-35529.pdf.</a></text>
<text top="175" left="475" width="335" height="11" font="21">[57] FY 2013 congressional budget justification. Media leak.</text>
<text top="188" left="502" width="286" height="11" font="21"><a href="http://cryptome.org/2013/08/spy-budget-fy13.pdf">http://cryptome.org/2013/08/spy-budget-fy13.pdf.</a></text>
<text top="204" left="475" width="236" height="11" font="21">[58] GALLANTWAVE@scale. Media leak.</text>
<text top="217" left="502" width="266" height="11" font="21"><a href="http://www.spiegel.de/media/media-35514.pdf">http://www.spiegel.de/media/media-35514.pdf.</a></text>
<text top="233" left="475" width="241" height="11" font="21">[59] Innov8 experiment profile. Media leak.</text>
<text top="246" left="502" width="266" height="11" font="21"><a href="http://www.spiegel.de/media/media-35509.pdf">http://www.spiegel.de/media/media-35509.pdf.</a></text>
<text top="262" left="475" width="342" height="11" font="21">[60] Intro to the VPN exploitation process. Media leak, Sept.</text>
<text top="275" left="501" width="299" height="11" font="21">2010. <a href="http://www.spiegel.de/media/media-35515.pdf">http://www.spiegel.de/media/media-35515.pdf.</a></text>
<text top="291" left="475" width="235" height="11" font="21">[61] LONGHAUL – WikiInfo. Media leak.</text>
<text top="304" left="502" width="266" height="11" font="21"><a href="http://www.spiegel.de/media/media-35533.pdf">http://www.spiegel.de/media/media-35533.pdf.</a></text>
<text top="320" left="475" width="240" height="11" font="21">[62] POISONNUT – WikiInfo. Media leak.</text>
<text top="333" left="502" width="266" height="11" font="21"><a href="http://www.spiegel.de/media/media-35519.pdf">http://www.spiegel.de/media/media-35519.pdf.</a></text>
<text top="349" left="475" width="191" height="11" font="21">[63] SIGINT strategy. Media leak.</text>
<text top="362" left="502" width="299" height="11" font="21"><a href="http://www.nytimes.com/interactive/2013/11/23/us/politics/23nsa-sigint-strategy-document.html">http://www.nytimes.com/interactive/2013/11/23/us/</a></text>
<text top="376" left="502" width="254" height="11" font="21"><a href="http://www.nytimes.com/interactive/2013/11/23/us/politics/23nsa-sigint-strategy-document.html">politics/23nsa-sigint-strategy-document.html.</a></text>
<text top="392" left="475" width="208" height="11" font="21">[64] SPIN 15 VPN story. Media leak.</text>
<text top="405" left="502" width="266" height="11" font="21"><a href="http://www.spiegel.de/media/media-35522.pdf">http://www.spiegel.de/media/media-35522.pdf.</a></text>
<text top="421" left="475" width="358" height="11" font="21">[65] TURMOIL/APEX/APEX high level description document.</text>
<text top="434" left="502" width="334" height="11" font="21">Media leak. <a href="http://www.spiegel.de/media/media-35513.pdf">http://www.spiegel.de/media/media-35513.pdf.</a></text>
<text top="450" left="475" width="361" height="11" font="21">[66] TURMOIL IPsec VPN sessionization. Media leak, Aug. 2009.</text>
<text top="463" left="502" width="266" height="11" font="21"><a href="http://www.spiegel.de/media/media-35528.pdf">http://www.spiegel.de/media/media-35528.pdf.</a></text>
<text top="479" left="475" width="315" height="11" font="21">[67] TURMOIL VPN processing. Media leak, Oct. 2009.</text>
<text top="492" left="502" width="266" height="11" font="21"><a href="http://www.spiegel.de/media/media-35526.pdf">http://www.spiegel.de/media/media-35526.pdf.</a></text>
<text top="508" left="475" width="321" height="11" font="21">[68] VALIANTSURF (VS): Capability levels. Media leak.</text>
<text top="521" left="502" width="266" height="11" font="21"><a href="http://www.spiegel.de/media/media-35517.pdf">http://www.spiegel.de/media/media-35517.pdf.</a></text>
<text top="537" left="475" width="254" height="11" font="21">[69] VALIANTSURF – WikiInfo. Media leak.</text>
<text top="550" left="502" width="266" height="11" font="21"><a href="http://www.spiegel.de/media/media-35527.pdf">http://www.spiegel.de/media/media-35527.pdf.</a></text>
<text top="566" left="475" width="206" height="11" font="21">[70] VPN SigDev basics. Media leak.</text>
<text top="579" left="502" width="266" height="11" font="21"><a href="http://www.spiegel.de/media/media-35520.pdf">http://www.spiegel.de/media/media-35520.pdf.</a></text>
<text top="595" left="475" width="356" height="11" font="21">[71] What your mother never told you about SIGDEV analysis.</text>
<text top="608" left="502" width="334" height="11" font="21">Media leak. <a href="http://www.spiegel.de/media/media-35551.pdf">http://www.spiegel.de/media/media-35551.pdf.</a></text>
<text top="1107" left="450" width="14" height="18" font="5">13</text>
</page>
<outline>
<item page="1">Introduction</item>
<item page="2">Diffie-Hellman Cryptanalysis</item>
<item page="3">Attacking TLS</item>
<outline>
<item page="3">TLS and Diffie-Hellman</item>
<item page="4">Active Downgrade to Export-Grade DHE</item>
<item page="5">512-bit Discrete Log Computations</item>
<item page="5">Active Attack Implementation</item>
<item page="6">Other Weak and Misconfigured Groups</item>
</outline>
<item page="7">State-Level Threats to DH</item>
<outline>
<item page="7">Scaling NFS to 768- and 1024-bit DH</item>
<item page="8">Is NSA Breaking 1024-bit DH?</item>
<item page="10">Effects of a 1024-bit Break</item>
</outline>
<item page="11">Recommendations</item>
<item page="11">Disclosure and Response</item>
<item page="11">Conclusion</item>
<item page="12">References</item>
</outline>
</pdf2xml>
