In RSA, some security authorities and/or standards allow the public exponent $e=3$, others require or recommend $e>2^{16}$ (or perhaps some other minimum). I gathered the following:
- PKCS#1 allows $e=3$ for both RSA digital signature and encryption (but see 3. below).
- ISO/IEC 9796-2 allows $e=3$ (in the context of RSA digital signature).
- FIPS 186-4 section B.3.1 requires $e>2^{16}$ (in the context of RSA digital signature); no rationale is given.
- ANSSI's RGS 1.0 annex B1 (French official recommendations), section 2.2.1.1, requires $e>2^{16}$ for encryption and recommends it for every application of RSA. The rationale mentions existing attacks on RSA encryption schemes with very small exponents, but they are left unspecified.
I'm asking the status with other standards and authorities, and any justification to the ban of low public exponent they give, or otherwise exists, including in the context of attacks on implementations (e.g. side-channel attacks).
Ultimately, I want to understand the conditions to use RSA with $e=3$ safely, and inasmuch as possible without clash with official security recommendations, or at least their rationale. That's because I am considering using $e=3$ for some RSA digital signature scheme, and for authentication based on RSA encryption of a random challenge. In such applications, $e=2^{16}+1$ would make the verifier's job like eight times slower than $e=3$.
My list of reasons not to use low public exponent, in particular $e=3$, has grown to:
- RSA without padding is vulnerable to a non-modular $e^{th}$ root attack, for some bound on the size of input which is a concern for low $e$ only.
- Attacks on RSA decryption implementations thru side channels in padding check, including Bleichenbacher's attack on RSAES-PKCS1-v1_5, are practical for very low $e$ like $e=3$, and seem adequately mitigated for $e=65537$. Implementations vulnerable to that were the norm when today's RSA key generation standards have been written.
- RSA encryption is vulnerable when sending the same message to $e$ recipients using the same padding for each recipient. For this (and a gentle introduction to the attack in 4. below) see Dan Boneh's Twenty Years of Attacks on the RSA Cryptosystem, section 4. Note: a nice comment by @CodesInChaos explain how the recipient's public key could be used rather than randomness to fix the multiple-recipients vulnerability; however some randomness is still required for semantic security, as in any public-key encryption scheme.
- With less than about $n/e^2$ bits of random padding (where $n$ is the bit length of the public modulus N), RSA encryption is vulnerable; see Don Coppersmith's Small solutions to polynomial equations, and low exponent RSA vulnerabilities. This bound has been extended in practical use cases by Coron, Joye, Naccache, and Paillier in New Attacks on PKCS#1 v1.5 Encryption, assuming that a suitable section of the plaintext is all-zero. PKCS#1v2.2 now warns to guard against these attacks when using RSAES-PKCS1-V1_5 in combination with low public exponent and recommends not using this scheme to encipher arbitrary plaintext (which, contrary to random keys, could exhibit the characteristic enabling the new attack, which remains threatening to some lesser degree for any public exponent).
- Some questionable RSA signature padding schemes are worse with low exponents. An example is the INCITS/ISO/IEC 9796:1991 digital signature standard (also in section 11.3.5 of the Handbook of Applied Cryptography), that was withdrawn following attacks: the padding scheme turned out to be slightly worse for $e=3$ than for $e=2^{16}+1$ (forgery from the signature of a single chosen messages for $e=3$, versus a grand three chosen messages for $e=2^{16}+1$).
- A more general class of attacks based on the factorization of poorly padded messages, introduced by Desmedt and Odlyzko in A chosen text attack on the RSA cryptosystem and some discrete logarithm schemes, is slightly easier for low public exponent $e$, in particular when applied to chosen-message attacks on some ad-hoc signature schemes, like ISO/IEC 9796-2 scheme 1, as in this attack (because the limiting step is picking a non-trivial linear combination of sparse vectors summing to zero, with elements of the vectors in $\mathbb Z_e$).
- (update) Some attacks on implementations based on partial information about the private key (e.g. obtained by approximate extraction of DRAM content by cold-boot attack) have reported cost growing with $e$; e.g. Heninger and Shacham's Reconstructing RSA Private Keys from Random Key Bits, and perhaps Constantinos Patsakis's RSA private key reconstruction from random bits using SAT solvers.
With the exception of the attack on implementations, I have so far located no attack enabled by low RSA public exponent:
- in an encryption scheme raising an essentially random element in $\mathbb Z_N$ to the public exponent, as in naked RSA with the message random and about the size of the public modulus; RSAES-PKCS1-v1_5 when enciphering random plaintext of any size; and RSAES-PSS with any plaintext;
- in a signature scheme with otherwise fully unbroken padding, including those randomized following the principle of full domain hash (giving a strong argument of equivalence to the underlying RSA problem with $e=3$), such as RSASSA-PSS of PKCS#1v2, and ISO/IEC 9796-2 schemes 2 and 3 (introduced in the 2002 edition, unmodified in the 2010 edition; scheme 1, also known as ISO/IEC 9796-2:1997, does not have such proof).