# moduli

## NAME



           **moduli** — Diffie-Hellman moduli
    


## DESCRIPTION



           The _/etc/moduli_ file contains prime numbers and generators for use
           by _sshd_(8) in the Diffie-Hellman Group Exchange key exchange
           method.
    
           New moduli may be generated with _ssh-keygen_(1) using a two-step
           process.  An initial _candidate generation_ pass, using **ssh-keygen**
           **-M generate** , calculates numbers that are likely to be useful.  A
           second _primality testing_ pass, using **ssh-keygen -M screen** ,
           provides a high degree of assurance that the numbers are prime and
           are safe for use in Diffie-Hellman operations by _sshd_(8).  This
           **moduli** format is used as the output from each pass.
    
           The file consists of newline-separated records, one per modulus,
           containing seven space-separated fields.  These fields are as
           follows:
    
                 timestamp    The time that the modulus was last processed as
                              YYYYMMDDHHMMSS.
    
                 type         Decimal number specifying the internal
                              structure of the prime modulus.  Supported
                              types are:
    
                              0     Unknown, not tested.
                              2     "Safe" prime; (p-1)/2 is also prime.
                              4     Sophie Germain; 2p+1 is also prime.
    
                              Moduli candidates initially produced by
                              _ssh-keygen_(1) are Sophie Germain primes (type
                              4).  Further primality testing with
                              _ssh-keygen_(1) produces safe prime moduli (type
                              2) that are ready for use in _sshd_(8).  Other
                              types are not used by OpenSSH.
    
                 tests        Decimal number indicating the type of primality
                              tests that the number has been subjected to
                              represented as a bitmask of the following
                              values:
    
                              0x00  Not tested.
                              0x01  Composite number – not prime.
                              0x02  Sieve of Eratosthenes.
                              0x04  Probabilistic Miller-Rabin primality
                                    tests.
    
                              The _ssh-keygen_(1) moduli candidate generation
                              uses the Sieve of Eratosthenes (flag 0x02).
                              Subsequent _ssh-keygen_(1) primality tests are
                              Miller-Rabin tests (flag 0x04).
    
                 trials       Decimal number indicating the number of
                              primality trials that have been performed on
                              the modulus.
    
                 size         Decimal number indicating the size of the prime
                              in bits.
    
                 generator    The recommended generator for use with this
                              modulus (hexadecimal).
    
                 modulus      The modulus itself in hexadecimal.
    
           When performing Diffie-Hellman Group Exchange, _sshd_(8) first
           estimates the size of the modulus required to produce enough
           Diffie-Hellman output to sufficiently key the selected symmetric
           cipher.  _sshd_(8) then randomly selects a modulus from _/etc/moduli_
           that best meets the size requirement.
    


## STANDARDS



           M. Friedl, N. Provos, and W. Simpson, _Diffie-Hellman Group_
           _Exchange for the Secure Shell (SSH) Transport Layer Protocol_ , RFC
           4419, March 2006.
    


* * *