102 lines
4.7 KiB
Plaintext
102 lines
4.7 KiB
Plaintext
![]() |
|
||
|
Archive-name: cryptography-faq/part06
|
||
|
|
||
|
|
||
|
This is the sixth of ten parts of the sci.crypt FAQ. The parts are
|
||
|
mostly independent, but you should read the first part before the rest.
|
||
|
We don't have the time to send out missing parts by mail, so don't ask.
|
||
|
Notes such as ``[KAH67]'' refer to the reference list in the last part.
|
||
|
|
||
|
|
||
|
|
||
|
Contents:
|
||
|
|
||
|
6.1. What is public-key cryptography?
|
||
|
6.2. What's RSA?
|
||
|
6.3. Is RSA secure?
|
||
|
6.4. How fast can people factor numbers?
|
||
|
6.5. What about other public-key cryptosystems?
|
||
|
|
||
|
|
||
|
6.1. What is public-key cryptography?
|
||
|
|
||
|
In a classic cryptosystem, we have encryption functions E_K and
|
||
|
decryption functions D_K such that D_K(E_K(P)) = P for any plaintext
|
||
|
P. In a public-key cryptosystem, E_K can be easily computed from some
|
||
|
``public key'' X which in turn is computed from K. X is published, so
|
||
|
that anyone can encrypt messages. If D_K cannot be easily computed
|
||
|
from X, then only the person who generated K can decrypt messages.
|
||
|
That's the essence of public-key cryptography, published by Diffie
|
||
|
and Hellman in 1976.
|
||
|
|
||
|
In a classic cryptosystem, if you want your friends to be able to
|
||
|
send secret messages to you, you have to make sure nobody other than
|
||
|
them sees the key K. In a public-key cryptosystem, you just publish X,
|
||
|
and you don't have to worry about spies.
|
||
|
|
||
|
This is only the beginning of public-key cryptography. There is an
|
||
|
extensive literature on security models for public-key cryptography,
|
||
|
applications of public-key cryptography, other applications of the
|
||
|
mathematical technology behind public-key cryptography, and so on.
|
||
|
|
||
|
6.2. What's RSA?
|
||
|
|
||
|
RSA is a public-key cryptosystem defined by Rivest, Shamir, and
|
||
|
Adleman. Here's a small example. See also [FTPDQ].
|
||
|
|
||
|
Plaintexts are positive integers up to 2^{512}. Keys are quadruples
|
||
|
(p,q,e,d), with p a 256-bit prime number, q a 258-bit prime number,
|
||
|
and d and e large numbers with (de - 1) divisible by (p-1)(q-1). We
|
||
|
define E_K(P) = P^e mod pq, D_K(C) = C^d mod pq.
|
||
|
|
||
|
Now E_K is easily computed from the pair (pq,e)---but, as far as
|
||
|
anyone knows, there is no easy way to compute D_K from the pair
|
||
|
(pq,e). So whoever generates K can publish (pq,e). Anyone can send a
|
||
|
secret message to him; he is the only one who can read the messages.
|
||
|
|
||
|
6.3. Is RSA secure?
|
||
|
|
||
|
Nobody knows. An obvious attack on RSA is to factor pq into p and q.
|
||
|
See below for comments on how fast state-of-the-art factorization
|
||
|
algorithms run. Unfortunately nobody has the slightest idea how to
|
||
|
prove that factorization---or any realistic problem at all, for that
|
||
|
matter---is inherently slow. It is easy to formalize what we mean by
|
||
|
``RSA is/isn't strong''; but, as Hendrik W. Lenstra, Jr., says,
|
||
|
``Exact definitions appear to be necessary only when one wishes to
|
||
|
prove that algorithms with certain properties do _not_ exist, and
|
||
|
theoretical computer science is notoriously lacking in such negative
|
||
|
results.''
|
||
|
|
||
|
6.4. How fast can people factor numbers?
|
||
|
|
||
|
It depends on the size of the numbers. In October 1992 Arjen Lenstra
|
||
|
and Dan Bernstein factored 2^523 - 1 into primes, using about three
|
||
|
weeks of MasPar time. (The MasPar is a 16384-processor SIMD machine;
|
||
|
each processor can add about 200000 integers per second.) The
|
||
|
algorithm there is called the ``number field sieve''; it is quite a
|
||
|
bit faster for special numbers like 2^523 - 1 than for general numbers
|
||
|
n, but it takes time only exp(O(log^{1/3} n log^{2/3} log n)) in any
|
||
|
case.
|
||
|
|
||
|
An older and more popular method for smaller numbers is the ``multiple
|
||
|
polynomial quadratic sieve'', which takes time exp(O(log^{1/2} n
|
||
|
log^{1/2} log n))---faster than the number field sieve for small n,
|
||
|
but slower for large n. The breakeven point is somewhere between 100
|
||
|
and 150 digits, depending on the implementations.
|
||
|
|
||
|
Factorization is a fast-moving field---the state of the art just a few
|
||
|
years ago was nowhere near as good as it is now. If no new methods are
|
||
|
developed, then 2048-bit RSA keys will always be safe from
|
||
|
factorization, but one can't predict the future. (Before the number
|
||
|
field sieve was found, many people conjectured that the quadratic
|
||
|
sieve was asymptotically as fast as any factoring method could be.)
|
||
|
|
||
|
6.5. What about other public-key cryptosystems?
|
||
|
|
||
|
We've talked about RSA because it's well known and easy to describe.
|
||
|
But there are lots of other public-key systems around, many of which
|
||
|
are faster than RSA or depend on problems more widely believed to be
|
||
|
difficult. This has been just a brief introduction; if you really want
|
||
|
to learn about the many facets of public-key cryptography, consult the
|
||
|
books and journal articles listed in part 10.
|