FIPS 186-3 specifies a method to generate DSA parameters.
Is there anything similar (official standard or widely-accepted recommendation) that shows how to generate the primes for multi-prime RSA?
FIPS 186-3 specifies a method to generate DSA parameters.
Is there anything similar (official standard or widely-accepted recommendation) that shows how to generate the primes for multi-prime RSA?
Multi-prime RSA (also known as RSA-MP) is supported by PKCS#1v2. This standard supports a public key $(n,e)$ where the modulus $n$ is the product of $u≥2$ distinct odd primes: $n=\prod_{i=1}^u{r_i}$, with $1<e<n$ and $\gcd(r_i-1,e)=1$ (implying $e$ odd). The private exponent $d$ is such that $1<d<n$, and $e⋅d≡1\pmod{\operatorname{lcm}_{i=1}^u(r_i-1)}$. No other requirement on $(n,e,d)$ is given by PKCS#1v2. RSA-MP is $u>2$. Make $u=2$, $p=r_1$, $q=r_2$, and you are back to RSA in PKCS#1v1.
I know no standard about generation of RSA-MP key. However, for advice on the question of the bit size of $n$ and the number of factors $u$, one recommendable paper is Unbelievable Security: Matching AES security using public key systems, by Arjen K. Lenstra. See in particular the synthetic table giving $u:⌈\log_2\min(r_i)⌉$ for a given security level (in bits, with 2K3DES 95-bit), on a given year (with that parameter accounting for the author's evaluation of improvements on the algorithms, but not Moore's law), and according to two models.
Corrected: Following that size advice even at the 2K3DES level (for any entry starting Y2010), adding about $32/u$ bits per year to account for Moore's law (previously forgot that!), and choosing primes of one key randomly, my opinion is there's no need to worry about factorization attacks on that key till the Y2030 limit of that table. Notice that my endorsement assume that an adversary has no significant interest in factoring a single random key among extremely many.
I also like the short and graphical Multi-prime RSA trade offs, although it is restricted to 2048-bit modulus.
The main things to consider regarding $\log_2n$, $\log_2r_i$, and $u$, are:
$n$ should be large enough that GNFS factorization is not to fear. Considerations are just the same for regular RSA and RSA-MP, since the multiplicity $u$ of factors, or their size $\log_2r_i$, does not influence the expected run time of GNFS; only $\log_2n$ matters.
Each $r_i$ should be large enough that $n$ is safe from factorization by known algorithms primarily influenced by the size of a factor extracted (rather than the size of the composite to factor), in particular ECM (among such algorithms, ECM is the most likely to factor one particular key). In regular RSA, it is customary to choose the two primes of equal (or nearly equal) size: this makes it overwhelmingly likely that GNFS subsumes all other known factorization algorithms, including ECM, by a large factor. However, that does not hold for RSA-MP; and while finding one $r_i$ does not by itself make it possible to forge signatures or decipher, it must still be considered a fatal disaster, for GNFS can then tackle the factorization of the composite $n/r_i$ at greatly reduced cost. Therefore, it is customary to choose the minimum size of a factor based on estimation of the running time of ECM (considered a function of $\log_2r_i$, often ignoring the relatively marginal influence of $\log_2n$).
Then the best choice of $u$ is ${\log_2n}\over{\log_2r_i}$, rounded in some direction.
For this, I trust the aforementioned Unbelievable Security.
Details on the choice should take into account that typically $⌈\log_2n⌉$ is prescribed, in which case we'll probably use $\log_2r_i\approx ⌈\log_2n⌉/u$; if not, there is often little or no performance cost in rounding up $⌈\log_2r_i⌉$ up to the next multiple of a word size, like 32 or 64 bits, then use $log_2n\approx ⌈\log_2r_i⌉⋅u$.
It is customary that key generation standards for RSA key pairs add extra requirements in addition to those in PKCS#1v2. FIPS 186-3, a widely accepted standard, has the following requirements in section B.3.1; I'm trying my best to give the rationale:
If I had to propose an adaptation of FIPS 186-3 for generating RSA-MP keys, it could be:
If you consider the security of an RSA key to be the ease of factoring (there are other considerations), then you should pretty obviously make them the same size.
You can think of a conventional N-bit key to be composed of two primes, but you can also look at it the other way -- that you take two primes that are $M_1$ and $M_2$ bits long and produce a key that is $M_1 + M_2$ bits long.
It's pretty obvious that you want the primes to be reasonably close in size and having them be the same bit-length long is just good practice. If they were lopsided, then it would be easier to factor the number.
We can extend that to say that you want multi-prime RSA, you want them all to be approximately the same size, as well. Take the example of a 2048-bit RSA key that consists of two 1000-bit primes and a 48-bit prime. It is straightforward to just declare this key to have the same strength as a 2000-bit two-prime key because it's easy to factor out the 48-bit prime. If you told people you had done that, they'd say that you had thrown away 48 bits.
If you create a two-prime RSA key with lopsided primes and tell people, they will get rightfully irritated. One could argue that the major reason for a multi-prime RSA key at all is to have a long key with shortened security. I believe that this is the reason you typically don't see them. It's hard to know what problem you're solving other than making the crypto weaker.