Paper 2016/995

Measuring small subgroup attacks against Diffie-Hellman

Luke Valenta, David Adrian, Antonio Sanso, Shaanan Cohney, Joshua Fried, Marcella Hastings, J. Alex Halderman, and Nadia Heninger

Abstract

Several recent standards, including NIST SP 800- 56A and RFC 5114, advocate the use of “DSA” parameters for Diffie-Hellman key exchange. While it is possible to use such parameters securely, additional validation checks are necessary to prevent well-known and potentially devastating attacks. In this paper, we observe that many Diffie-Hellman implementations do not properly validate key exchange inputs. Combined with other protocol properties and implementation choices, this can radically decrease security. We measure the prevalence of these parameter choices in the wild for HTTPS, POP3S, SMTP with STARTTLS, SSH, IKEv1, and IKEv2, finding millions of hosts using DSA and other non-“safe” primes for Diffie-Hellman key exchange, many of them in combination with potentially vulnerable behaviors. We examine over 20 open-source cryptographic libraries and applications and observe that until January 2016, not a single one validated subgroup orders by default. We found feasible full or partial key recovery vulnerabilities in OpenSSL, the Exim mail server, the Unbound DNS client, and Amazon’s load balancer, as well as susceptibility to weaker attacks in many other applications.

Metadata
Available format(s)
PDF
Category
Public-key cryptography
Publication info
Published elsewhere. NDSS 2017
Keywords
diffie-hellmansmall subgroup attack
Contact author(s)
lukev @ seas upenn edu
History
2017-02-28: last of 4 revisions
2016-10-17: received
See all versions
Short URL
https://ia.cr/2016/995
License
Creative Commons Attribution
CC BY

BibTeX

@misc{cryptoeprint:2016/995,
      author = {Luke Valenta and David Adrian and Antonio Sanso and Shaanan Cohney and Joshua Fried and Marcella Hastings and J.  Alex Halderman and Nadia Heninger},
      title = {Measuring small subgroup attacks against Diffie-Hellman},
      howpublished = {Cryptology ePrint Archive, Paper 2016/995},
      year = {2016},
      note = {\url{https://eprint.iacr.org/2016/995}},
      url = {https://eprint.iacr.org/2016/995}
}
Note: In order to protect the privacy of readers, eprint.iacr.org does not use cookies or embedded third party content.