a /etc/moduli file contains prime numbers and generators for use by .Xr sshd 8 in the Diffie-Hellman Group Exchange key exchange method.
p New moduli may be generated with .Xr ssh-keygen 1 using a two-step process. An initial .Em candidate generation pass, using c ssh-keygen -G , calculates numbers that are likely to be useful. A second .Em primality testing pass, using c ssh-keygen -T , provides a high degree of assurance that the numbers are prime and are safe for use in Diffie-Hellman operations by .Xr sshd 8 . This .Nm format is used as the output from each pass.
p The file consists of newline-separated records, one per modulus, containing seven space-separated fields. These fields are as follows: l -tag -width Description -offset indent t timestamp The time that the modulus was last processed as YYYYMMDDHHMMSS. t type Decimal number specifying the internal structure of the prime modulus. Supported types are:
p l -tag -width 0x00 -compact t 0 Unknown, not tested. t 2 "Safe" prime; (p-1)/2 is also prime. t 4 Sophie Germain; (p+1)*2 is also prime. .El
p Moduli candidates initially produced by .Xr ssh-keygen 1 are Sophie Germain primes (type 4). Further primality testing with .Xr ssh-keygen 1 produces safe prime moduli (type 2) that are ready for use in .Xr sshd 8 . Other types are not used by OpenSSH. t tests Decimal number indicating the type of primality tests that the number has been subjected to represented as a bitmask of the following values:
p l -tag -width 0x00 -compact t 0x00 Not tested. t 0x01 Composite number \(en not prime. t 0x02 Sieve of Eratosthenes. t 0x04 Probabilistic Miller-Rabin primality tests. .El
p The .Xr ssh-keygen 1 moduli candidate generation uses the Sieve of Eratosthenes (flag 0x02). Subsequent .Xr ssh-keygen 1 primality tests are Miller-Rabin tests (flag 0x04). t trials Decimal number indicating the number of primality trials that have been performed on the modulus. t size Decimal number indicating the size of the prime in bits. t generator The recommended generator for use with this modulus (hexadecimal). t modulus The modulus itself in hexadecimal. .El
p When performing Diffie-Hellman Group Exchange, .Xr sshd 8 first estimates the size of the modulus required to produce enough Diffie-Hellman output to sufficiently key the selected symmetric cipher. .Xr sshd 8 then randomly selects a modulus from .Fa /etc/moduli that best meets the size requirement. .Sh SEE ALSO .Xr ssh-keygen 1 , .Xr sshd 8 .Rs .%R RFC 4419 .%T "Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol" .%D 2006 .Re