![]() |
Proofs for the mathematical relationships are found in [1154]. Table 20.1 provides a summary. Speed Precomputations Table 20.2 gives sample software speeds of DSA [918]. Real-world implementations of DSA can often be speeded up through precomputations. Notice that the value r does not depend on the message. You can create a string of random k values, and then precompute r values for each of them. You can also precompute k-1 for each of those k values. Then, when a message comes along, you can compute s for a given r and k-1. This precomputation speeds up DSA considerably. Table 20.3 is a comparison of DSA and RSA computation times for a particular smart card implementation [1479].
DSA Prime Generation Lenstra and Haber pointed out that certain moduli are much easier to crack than others [950]. If someone forced a network to use one of these "cooked" moduli, then their signatures would be easier to forge. This isn't a problem for two reasons: These moduli are easy to detect and they are so rare that the chances of using one when choosing a modulus randomly are almost negligiblesmaller, in fact, than the chances of accidentally generating a composite number using a probabilistic prime generation routine. In [1154] NIST recommended a specific method for generating the two primes, p and q, where q divides p 1. The prime p is L bits long, between 512 and 1024 bits long, in some multiple of 64 bits. The prime q is 160 bits long. Let L 1 = 160n + b, where L is the length of p, and n and b are two numbers and b is less than 160.
|