Clifford Cocks[?], a British mathematician working for GCHQ, described an equivalent system in an internal document in 1973. His discovery, however, was not revealed until 1997 due to its topsecret nature.
The security of the RSA system relies on the difficulty of factoring very large numbers. New fast algorithms in this field could render RSA insecure, but this is generally considered unlikely.
The algorithm was patented by MIT in 1983 in the United States of America. The patent expired in September 2000. Since the algorithm had been published prior to the patent application, it could not be patented in other countries.

Suppose a user Alice wishes to allow Bob to send her a private message over an insecure transmission medium. She takes the following steps to generate a public key and a private key:
N and e are the public key, and N and d are the private key. Alice transmits the public key to Bob, and keeps the private key secret.
Suppose Bob wishes to send a message m to Alice. He knows N and e, which Alice has announced. He turns m into a number n < N, using some previously agreedupon reversible protocol. For example, each character in a plaintext message could be converted to its ASCII code, and the codes concatenated into a single number. If necessary, he can break m into pieces and encrypt each piece separately. He then computes the ciphertext c:
This can be done quickly using the method of exponentiation by squaring. Bob then transmits c to Alice.
Alice receives c from Bob, and knows her private key d. She can recover n from c by the following procedure:
Alice can then extract n, since n < N. Given n, she can recover the original message m.
The decryption procedure works because
and ed ≡ 1 (mod p1) and ed ≡ 1 (mod q1). Fermat's little theorem yields
RSA can also be used to sign a message. Suppose Alice wishes to send a signed message to Bob. She produces a hash value of the message, encrypts it with her secret key, and attaches it as a "signature" to the message. This signature can only be decrypted with her public key. When Bob receives the signed message, he decrypts the signature with Alice's public key, and compares the resulting hash value with the message's actual hash value. If the two agree, he knows that the author of the message was in possession of Alice's secret key, and that the message has not been tampered with since.
Suppose Eve, an eavesdropper, intercepts the public key N and e, and the ciphertext c. However, she is unable to directly obtain d, which Alice keeps secret. The most obvious way for Eve to deduce n from c is to factor N into p and q, in order to compute (p1)(q1) which allows the determination of d from e. No polynomialtime method for factoring large integers on a classical computer has yet been found, but it has not been proven that none exists. See integer factorization for a discussion of this problem.
It has not been proven that factoring N is the only way of deducing n from c, but no easier method has been discovered (at least to public knowledge.)
Therefore, it is generally assumed that Eve is defeated if N is sufficiently large.
If N is 256 bits or shorter, it can be factored in a few hours on a personal computer, using software freely available on the Internet. If N is 512 bits or shorter, it can be factored by several hundred computers as of 1999. It is currently recommended that N be at least 1024 bits long.
In 1993, Peter Shor showed that a quantum computer could in principle perform the factorization in polynomial time. If (or when) quantum computers become a practical technology, Shor's algorithm will make RSA and related algorithms obsolete.
Should an efficient classical factorization code be discovered or a practical quantum computer constructed, using still larger key lengths would provide a stopgap measure. However, any such security break in RSA would be retroactive. An eavesdropper can record the key and the ciphertext, and wait until it becomes practical to decipher the message. Therefore, it is inherently unsafe to exchange longterm secrets with RSA.
Finding the large primes p and q is usually done by testing random numbers of the right size with probabilistic primality tests which quickly eliminate most nonprimes. If such a test finds a "probable prime", a deterministic test can be used to verify that the number is indeed prime.
p and q should not be too close together, because otherwise the Fermat factorization[?] for N will be successful. Furthermore, if either p1 or q1 has only small prime factors, N can be factored quickly and these values of p or q should therefore be discarded as well.
One should not employ a prime search method which gives any information about the primes to the attacker. In particular, a strong random number generator[?] for the start value needs to be employed. If the attacker can guess half of the digits of p or q, they can quickly compute the other half, as was shown by Coppersmith in 1997.
It is important that the secret key d be large enough. Wiener showed in 1990 that if p is between q and 2q (which is quite typical) and d < N^{1/4}/3, then d can be computed efficiently from N and e. The encryption key e = 2 should also not be used.
RSA is much slower than DES and other symmetric cryptosystems. In practice, Bob typically encrypts a secret message with a symmetric algorithm, encrypts the (comparatively short) symmetric key with RSA, and transmits both the RSAencrypted symmetric key and the symmetricallyencypted message to Alice.
This procedure raises additional security issues. For instance, it is of utmost importance to use a strong random number generator[?] for the symmetric key, because otherwise Eve could bypass RSA by guessing the symmetric key.
As with all ciphers, it is important how RSA public keys are distributed. Key distribution must be secured against a maninthemiddle attack. Suppose Eve has some way to give Bob arbitrary keys and make him believe they belong to Alice. Suppose further than Eve can intercept transmissions between Alice and Bob. Eve sends Bob her own public key, which Bob believes to be Alice's. Eve can then intercept any ciphertext sent by Bob, decrypt it with her own secret key, keep a copy of the message, encrypt the message with Alice's public key, and send the new ciphertext to Alice. In principle, neither Alice nor Bob would be able to detect Eve's presence. Defenses against such attacks are often based on digital certificates[?] or other components of a public key infrastructure.
Kocher described an ingenious unexpected new attack on RSA in 1995: if the attacker Eve knows the hardware of Alice and is able to measure the decryption times for several known cyphertexts, she can deduce the decryption key d quickly. To thwart this attack, the decryption code should include a random waiting time loop.
cryptography, digital signature, computational complexity theory
Search Encyclopedia

Featured Article
