549 lines
31 KiB
Plaintext
549 lines
31 KiB
Plaintext
### Hellman-Pohlig: 4,424,414
|
|
|
|
Exponentiation cryptographic apparatus and method
|
|
|
|
US PAT NO: 4,424,414
|
|
DATE ISSUED: Jan. 3, 1984
|
|
TITLE: Exponentiation cryptographic apparatus and method
|
|
INVENTOR: Martin E. Hellman, Stanford, CA
|
|
Stephen C. Pohlig, Acton, MA
|
|
ASSIGNEE: Board of Trustees of the Leland Stanford Junior University,
|
|
Stanford, CA (U.S. corp.)
|
|
APPL-NO: 05/901,770
|
|
DATE FILED: May 1, 1978
|
|
INT-CL: [3] H04K 9/00
|
|
US-CL-ISSUED: 178/22.11, 22.1, 22.14
|
|
US-CL-CURRENT: 380/30, 44, 49
|
|
SEARCH-FLD: 178/22, 22.1, 22.11, 22.14; 179/1.5R
|
|
REF-CITED:
|
|
U.S. PATENT DOCUMENTS
|
|
4,079,188 3/1978 Kinch, Jr. et al. 178/22
|
|
|
|
OTHER PUBLICATIONS
|
|
"New Directions in Cryptography", Hellman et al., IEEE Transactions on
|
|
Information Theory, vol. IT-22, No. 6, Nov. 76, pp. 644-654.
|
|
"Multiuser Cryptographic Techniques", Diffie et al., AFIPS-Conference
|
|
Proceedings, vol. 45, pp. 109-112, Jun. 1976.
|
|
ART-UNIT: 222
|
|
PRIM-EXMR: Sal Cangialosi
|
|
LEGAL-REP: Flehr, Hohbach, Test, Albritton & Herbert
|
|
|
|
ABSTRACT:
|
|
A cryptographic system transmits a computationally secure cryptogram that is
|
|
generated from a secret transformation of the message sent by the authorized
|
|
transmitter; the cryptogram is again transformed by the authorized receiver
|
|
using a secret reciprocal transformation to reproduce the message sent. The
|
|
secret transformations use secret cipher keys that are known only by the
|
|
authorized transmitter and receiver. The transformations are performed with
|
|
nonsecret operations, exponentiation, that are easily performed but extremely
|
|
difficult to invert. It is computationally infeasible for an eavesdropper
|
|
either to solve known plaintext-ciphertext pairs for the secret cipher keys,
|
|
or to invert the nonsecret operations that are used to generate the
|
|
cryptogram.
|
|
2 Claims, 6 Drawing Figures
|
|
EXMPL-CLAIM: 1
|
|
NO-PP-DRAWING: 3
|
|
|
|
GOVT-INT:
|
|
|
|
BACKGROUND OF THE INVENTION
|
|
|
|
The Government has rights in this invention pursuant to grant No. ENG-10173
|
|
of the National Science Foundation and IPA No. 0005.
|
|
|
|
SUMMARY:
|
|
|
|
FIELD OF INVENTION
|
|
|
|
The invention relates to cryptographic systems.
|
|
|
|
DESCRIPTION OF PRIOR ART
|
|
|
|
Cryptographic systems are widely used to ensure the privacy and authenticity
|
|
of messages communicated over insecure communication channels. A privacy
|
|
system prevents unauthorized parties from extracting information from
|
|
messages transmitted over an insecure channel, thus assuring the sender of a
|
|
message that it is being read only by the intended receiver. An
|
|
authentication system prevents the unauthorized injection of messages into an
|
|
insecure channel, assuring the receiver of the message of the legitimacy of
|
|
its sender.
|
|
|
|
One of the principal difficulties with existing cryptographic systems is the
|
|
difficulty of assessing their security level. Most cryptographic systems
|
|
utilize many, complex operations so that a mathematical statement that
|
|
describes their security level is also complex and difficult, if not
|
|
impossible, to evaluate.
|
|
|
|
SUMMARY AND OBJECTS OF THE INVENTION
|
|
|
|
Accordingly, it is an object of the invention to allow authorized parties to
|
|
a conversation (conversers) to establish a secret cipher key and then
|
|
converse privately even though an unauthorized party (eavesdropper)
|
|
intercepts their communications.
|
|
|
|
Another object of this invention is to allow a converser on an insecure
|
|
channel to authenticate another converser's identity.
|
|
|
|
Another object of this invention is to provide a cryptographic system with a
|
|
more easily evaluated security level.
|
|
|
|
An illustrated embodiment of the present invention describes a method and
|
|
apparatus for communicating securely over an insecure channel with
|
|
prearrangement of a secret cipher key. The secret cipher key is used to
|
|
encipher and decipher messages via transformations which are computationally
|
|
infeasible to invert without the secret cipher key; the enciphered message is
|
|
transmitted over an insecure channel with a more easily evaluated security
|
|
level.
|
|
|
|
In the present invention, a secret enciphering key is generated and is known
|
|
by a transmitter but not known by an eavesdropper. A secret deciphering key
|
|
is generated and is known by a receiver but not known by the eavesdropper.
|
|
The transmitter generates an enciphered message by transforming a message
|
|
with the secret enciphering key, which transformation is computationally
|
|
infeasible to invert without the secret deciphering key. The enciphered
|
|
message is transmitted over the insecure channel to the receiver. The
|
|
receiver deciphers the message by inverting said transformation with the
|
|
secret deciphering key, which inversion is computationally infeasible to
|
|
perform without the secret deciphering key.
|
|
|
|
Another illustrated embodiment of the present invention describes a method
|
|
for allowing a receiver to authenticate a transmitter as the source of an
|
|
enciphered message. A secret enciphering key is generated and is known by a
|
|
transmitter but not known by an eavesdropper. A secret deciphering key is
|
|
generated and is known by a receiver but not known by the eavesdropper. The
|
|
receiver receives an enciphered message and deciphers the message by
|
|
transforming the enciphered message with the secret deciphering key, which
|
|
transformation is computationally infeasible to invert without the secret
|
|
deciphering key. The receiver authenticates the transmitter as the source of
|
|
the enciphered message by the transmitter's ability to transmit a meaningful
|
|
enciphered message.
|
|
|
|
DRAWING DESC:
|
|
|
|
BRIEF DESCRIPTION OF THE DRAWINGS
|
|
|
|
FIG. 1 is a block diagram of a cryptographic system that transmits a
|
|
computationally secure cryptogram over an insecure communication channel.
|
|
|
|
FIG. 2 is a block diagram of a cryptographic apparatus for raising various
|
|
numbers to various powers in modulo arithmetic.
|
|
|
|
FIG. 3 is a block diagram of a multiplier for performing multiplications in
|
|
the cryptographic apparatus of FIG. 2.
|
|
|
|
FIG. 4 is a detailed schematic diagram of an adder for performing additions
|
|
in the multiplier of FIG. 3.
|
|
|
|
FIG. 5 is a detailed schematic diagram of a comparator for performing
|
|
magnitude comparisons in the multiplier of FIG. 3.
|
|
|
|
FIG. 6 is a detailed schematic diagram of a subtractor for performing
|
|
subtractions in the multiplier of FIG. 3.
|
|
|
|
DETDESC:
|
|
|
|
DESCRIPTION OF THE PREFERRED EMBODIMENT
|
|
|
|
Referring to FIG. 1, a cryptographic system is shown in which communications
|
|
take place over an insecure communication channel 19, for example a telephone
|
|
line. Two-way communication is exchanged on the insecure channel 19 between
|
|
converser 11 and converser 12 using transmitter/receivers 31 and 32, for
|
|
example modems such as Bell 201 modems. Converser 11 possesses a sequence of
|
|
unenciphered or plaintext messages P.sub.1, P.sub.2, . . . to be communicated
|
|
to converser 12. Converser 11 and converser 12 include cryptographic devices
|
|
15 and 16 respectively, for enciphering and deciphering information under the
|
|
action of a secret enciphering key K and secret deciphering key D,
|
|
respectively. The cryptographic device 15 enciphers the i.sup.th plaintext
|
|
message P.sub.i into an enciphered message or ciphertext C.sub.i that is
|
|
transmitted by converser 11 through the insecure channel 19; the ciphertext
|
|
C.sub.i is received by converser 12 and deciphered by cryptographic device 16
|
|
to obtain the plaintext message P.sub.i. An unauthorized party or
|
|
eavesdropper 13 is assumed to have a cryptographic device 17 and to have
|
|
access to the insecure channel 19, and therefore to C.sub.1, C.sub.2, . . . ,
|
|
C.sub.i. He is also assumed to have access to some or all of the past
|
|
plaintext messages P.sub.1, P.sub.2, . . . , P.sub.i-1, as through the public
|
|
release of previously enciphered messages (e.g., timed press releases)
|
|
represented by the variable delay 22. He uses his knowledge of P.sub.1,
|
|
P.sub.2, . . . , P.sub.i-1 and C.sub.1, C.sub.2, . . . , C.sub.i-1 to attempt
|
|
to determine P.sub.i from C.sub.i or to determine how to alter C.sub.i so
|
|
that when deciphered by the conversor 12 it will convey a false meaning of
|
|
the eavesdropper's choice.
|
|
|
|
Converser 11 includes an independent key source 25 which generates numbers
|
|
or signals that represent numbers. For example, the key source may be a
|
|
random number generator that is implemented from a noisy amplifier (e.g.,
|
|
Fairchild u 709 operational amplifier) with a polarity detector. Key source
|
|
25 generates three signals, q, K and D. Signals q and D are transmitted
|
|
secretly via a secure means 26 such as courier or registered mail to
|
|
converser 12. q is chosen to be a large prime number; K is an independent
|
|
random number chosen uniformly from the set of integers (1,2, . . . , q-2);
|
|
and D is the multiplicative inverse in modular q-1 arithmetic of K, chosen so
|
|
that the product KD is congruent to 1 modulo q-1. That is, if KD is divided
|
|
by q-1, then the remainder is 1.
|
|
|
|
The calculation of D from K and q is easily carried out using Euclid's
|
|
algorithm (see, for example, Knuth, The Art of Computer Programming, Vol. 2,
|
|
Seminumerical Algorithms, Addison-Wesley, Reading, Mass., 1969, p. 315,
|
|
exercise 15, p. 523 solution to exercise 15 and p. 302 algorithm X). Euclid's
|
|
algorithm can be carried out using hardware of the type described later in
|
|
this application. It is well-known that if q is prime then
|
|
|
|
z.sup.q-1 =1 (mod q), 1.ltoreq.z.ltoreq.q-1 (1)
|
|
Consequently arithmetic in the exponent is done modulo q-1, not modulo q.
|
|
That is
|
|
|
|
z.sup.x =z.sup.x(mod q-1) (mod q) (2)
|
|
for all integers x. As an example, 2.sup.8 =256=4 (mod 7) as is 2.sup.2
|
|
because the exponents 8 and 2 are congruent mod q-1=6.
|
|
|
|
To construct a cryptosystem, let P, K, C and D denote the plaintext message,
|
|
secret enciphering key, ciphertext (or cryptogram), and secret deciphering
|
|
key respectively with the restrictions
|
|
|
|
1.ltoreq.P.ltoreq.q-1 (3)
|
|
|
|
1.ltoreq.C.ltoreq.q-1 (4)
|
|
|
|
1.ltoreq.K.ltoreq.q-2 (5)
|
|
|
|
GCD(K, q-1)=1 (6)
|
|
In practice, P probably would be limited to be an l bit integer where
|
|
l=log.sub.2 (q-1). Also, K=1 probably would be excluded because then P=C.
|
|
Equation (6) implies that K is relatively prime to q-1 so that
|
|
|
|
D=K.sup.-1 (mod q-1) (7)
|
|
is well-defined with
|
|
|
|
1.ltoreq.D.ltoreq.q-2; thus, (8)
|
|
D, the secret deciphering key, is generated from a multiplicative inverse in
|
|
modular q-1 arithmetic of the secret enciphering key, K. Now let
|
|
|
|
C=P.sup.K (mod q) (9)
|
|
be the enciphering operation; and, the enciphered message or ciphertext C is
|
|
generated by exponentiating, in modular q arithmetic, a plaintext message P
|
|
with the secret enciphering key K. Then
|
|
|
|
P=C.sup.D (mod q) (10)
|
|
is the deciphering operation; and, the plaintext message P is deciphered from
|
|
the ciphertext C by exponentiating, in modular q arithmetic, the enciphered
|
|
message or ciphertext C with the secret deciphering key D. Each operation,
|
|
enciphering and deciphering, is easily performed with the hardware described
|
|
below. Computing D from K need only be done once and requires only on the
|
|
order of log q operations using Euclid's algorithm (Knuth, op cit, Section
|
|
4.5.2).
|
|
|
|
Cryptanalysis, on the other hand, is equivalent to computing a logarithm
|
|
over GF(q), the finite field with q elements, and is thus computationally
|
|
infeasible for a properly chosen value of q. A task is considered
|
|
computationally infeasible if its cost as measured by either the amount of
|
|
memory used or the computing time is finite but impossibly large, for
|
|
example, on the order of approximately 10.sup.30 operations with existing
|
|
computational methods and equipment. This task is infeasible because
|
|
|
|
K=log.sub.p C over GF(q) (11)
|
|
so that even though the cryptanalyst knows plaintext-ciphertext pairs, it is
|
|
as hard to find the key as to find a logarithm mod q. Such a known plaintext
|
|
cryptanalytic attack is a standard test applied to certify a system as
|
|
secure. It, and variations, occur in practice as well. The best, known
|
|
algorithms for computing a logarithm over GF(q) require at least .sqroot.q
|
|
operations if q is properly chosen. If q is a 200 digit number then .sqroot.q
|
|
is approximately 10.sup.100 and performing this many operations is
|
|
infeasible. On the other hand, enciphering and deciphering require only one
|
|
exponentiation mod q and are easily implemented.
|
|
|
|
The cryptographic devices 15 and 16, for raising various numbers to various
|
|
powers modulo q, can be implemented in electronic circuitry as shown in FIG.
|
|
2. For ease of illustration, FIG. 2 depicts raising P to the K power modulo
|
|
q; raising C to the D power modulo q is obtained by initially loading C and D
|
|
instead of P and K, into the P and K registers 43 and 41.
|
|
|
|
FIG. 2 shows the initial contents of three registers 41, 42, and 43. The
|
|
binary representation of K(k.sub.l-1, k.sub.l-2, . . . , k.sub.1,k.sub.0) is
|
|
loaded into the K register 41; 1 is loaded into the R register 42; and, the
|
|
binary representation of P is loaded into the P register 43, corresponding to
|
|
i=0. The number of bits l in each register is the least integer such that
|
|
2.sup.l .gtoreq.q. If l=200, then all three registers can be obtained from a
|
|
single 1024 bit random access memory (RAM) such as the Intel 2102. The
|
|
implementation of multiplier 44, for multiplying two numbers modulo q, will
|
|
be described in more detail later.
|
|
|
|
Referring to FIG. 2, if the low order bit, containing k.sub.0, of the K
|
|
register 41 equals 1 then the R register 42 and the P register 43 contents
|
|
are multiplied modulo q and their product, also an l bit quantity, replaces
|
|
the contents of the R register 42. If k.sub.0 =0, the R register 42 contents
|
|
are left unchanged. In either case, the P register 43 is then loaded twice
|
|
into the multiplier 44 so that the square, modulo q, of the P register 43
|
|
contents is computed. This value, P.sup.(2.spsp.i+1.sup.), replaces the
|
|
contents of the P register 43. The K register 41 contents are shifted one bit
|
|
to the right and a 0 is shifted in at the left so its contents are now
|
|
0k.sub.l-1,k.sub.l-2, . . . , k.sub.2 k.sub.1.
|
|
|
|
The low order bit, containing k.sub.1, of the K register 41 is examined. If
|
|
it equals one then, as before, the R register 42 and P register 43 contents
|
|
are multiplied modulo q and their product replaces the contents of the R
|
|
register 42. If k.sub.0 =0, the R register 42 contents are left unchanged. In
|
|
either case, the contents of the P register 43 are replaced by the square,
|
|
modulo q, of the previous contents. The K register 41 contents are shifted
|
|
one bit to the right and a 0 is shifted in at the left so its contents are
|
|
now 00k.sub.l-1,k.sub.l-2, . . . k.sub.3,k.sub.2.
|
|
|
|
This process continues until the K register 41 contains all 0's, at which
|
|
point the value of p.sup.K modulo q is stored in the R register 42.
|
|
|
|
An example is helpful is following this process. Taking q=23, we find l=5
|
|
from 2.sup.l .gtoreq.q. If p=7 and K=18, then p.sup.K =7.sup.18
|
|
=1628413597910449=23(70800591213497)+18 so P.sup.K modulo q equals 18. This
|
|
straightforward but laborious method of computing P.sup.K modulo q is used as
|
|
a check to show that the method of FIG. 2, shown below, yields the correct
|
|
result. The R register 42 and P register 43 contents are shown in decimal
|
|
form to facilitate understanding.
|
|
______________________________________
|
|
i K (in binary) R P
|
|
______________________________________
|
|
0 10010 1 7
|
|
1 01001 1 3
|
|
2 00100 3 9
|
|
3 00010 3 12
|
|
4 00001 3 6
|
|
5 00000 18 13
|
|
______________________________________
|
|
The row marked i=0 corresponds to the initial contents of each register,
|
|
K=18, R=1 and P=7. Then, as described above, because the low order bit of K
|
|
register 41 is 0, the R register 42 contents are left unchanged, the contents
|
|
of the P register 43 are replaced by the square, modulo 23, of its previous
|
|
contents (7.sup.2 =49=2.times.23+3=3 modulo 23), the contents of the K
|
|
register 41 are shifted one bit to the right, and the process continues. Only
|
|
when i=1 and 4 do the low order bit of the K register 41 contents equal 1, so
|
|
only going from i=1 to 2 and from i=4 to 5 is the R register 42 replaced by
|
|
RP modulo q. When i=5, K=0 so the process is complete and the result, 18, is
|
|
in the R register 42.
|
|
|
|
Note that the same result, 18, is obtained here as in the straightforward
|
|
calculation of 7.sup.18 modulo 23, but that here large numbers never
|
|
resulted.
|
|
|
|
Another way to understand the process is to note that the P register
|
|
contains P, P.sup.2, P.sup.4, P.sup.8 and P.sup.16 when i=0,1,2,3, and 4
|
|
respectively, and that P.sup.18 =P.sup.16 P.sup.2, so only these two values
|
|
need to be multiplied.
|
|
|
|
FIG. 3 continues the description of this illustrative implementation by
|
|
depicting an implementation of the modulo q multiplier 44 in FIG. 2. The two
|
|
numbers, y and z, to be multiplied are loaded into the Y and Z registers 51
|
|
and 52 respectively, and q is loaded in the Q register 53. The product yz
|
|
modulo q will be produced in the F register 54 which is initially set to 0.
|
|
If l=200, then all four registers can be obtained from a single 1024 bit RAM
|
|
such as the Intel 2102. The implementation of FIG. 3 is based on the fact
|
|
that yz mod q=y.sub.0 z mod q+2y.sub.1 z mod q+4y.sub.2 z mod q+ . . .
|
|
+2.sup.l-1 y.sub.l-1 z mod q.
|
|
|
|
To multiply y times z, if the right-most bit, containing y.sub.0, of the Y
|
|
register 51 is 1, then the contents of the Z register 53 are added to the F
|
|
register 54 by adder 55. If Y.sub.0 =0, then the F register 54 is unchanged.
|
|
Then the Q and F register contents are compared by comparator 56 to determine
|
|
if the contents of the F register 54 are greater than or equal to q, the
|
|
contents of the Q register 53. If the contents of the F register 54 are
|
|
greater than or equal to q then subtractor 57 subtracts q from the contents
|
|
of the F register 54 and places the difference in the F register 54, if less
|
|
than q the F register 54 is unchanged.
|
|
|
|
Next, the contents of Y register 51 are shifted one bit to the right and a 0
|
|
is shifted in at the left so its contents become 0,y.sub.l-1,y.sub.l-2, . . .
|
|
y.sub.2,y.sub.1, so that y.sub.1 is ready for computing 2y.sub.1 z mod q. The
|
|
quantity 2z mod q is computed for this purpose by using adder 55 to add z to
|
|
itself, using comparator 56 to determine if the result, 2z, is less than q,
|
|
and using subtractor 57 for subtracting q from 2z if the result is not less
|
|
than q. The result, 2z mod q is then stored in the Z register 52. The
|
|
right-most bit, containing y.sub.1, of the Y register 51 is then examined, as
|
|
before, and the process repeats.
|
|
|
|
This process is repeated a maximum of l times or until the Y register 51
|
|
contains all 0's, at which point xy modulo q is stored in the F register 54.
|
|
|
|
As an example of these operations, consider the problem of computing
|
|
7.times.7 modulo 23 needed to produce the second state of the P register when
|
|
7.sup.18 mod 23 was computed. The following steps show the successive
|
|
contents of the Y, Z and F registers which result in the answer 7.times.7=3
|
|
modulo 23.
|
|
______________________________________
|
|
i Y (in binary)
|
|
Z F
|
|
______________________________________
|
|
0 00111 7 0
|
|
1 00011 14 0 + 7 = 7
|
|
2 00001 5 7 + 14 = 21
|
|
3 00000 10 21 + 5 = 3 mod 23
|
|
______________________________________
|
|
|
|
FIG. 4 depicts an implementation of an adder 55 for adding two l bit numbers
|
|
p and z. The numbers are presented one bit at a time to the device, low order
|
|
bit first, and the delay element 66, which stores the binary carry bit, is
|
|
initially set to 0. The AND gate 61 determines if the carry bit should be a 1
|
|
based on f.sub.i and z.sub.i both being 1 and the AND gate 62 determines if
|
|
the carry should be a 1 based on the previous carry being a 1 and one of
|
|
f.sub.i or z.sub.i being 1. If either of these two conditions is met, the OR
|
|
gate 63 has an output of 1 indicating a carry to the next stage. The two
|
|
exclusive-or (XOR) gates 64 and 65 determine the i.sup.th bit of the sum,
|
|
s.sub.i, as the modulo-2 sum of f.sub.i, z.sub.i and the carry bit from the
|
|
previous stage. The delay 66 stores the previous carry bit. Typical parts for
|
|
implementing these gates and the delay are SN7400, SN7404, and SN7474.
|
|
|
|
FIG. 5 depicts an implementation of a comparator 56 for comparing two
|
|
numbers f and q. The two numbers are presented one bit at a time, high order
|
|
bit first. If neither the f<q nor the f>q outputs have been triggered after
|
|
the last bits f.sub.0 and q.sub.0 have been presented, then f=q. The first
|
|
triggering of either the f<q or the f>q output causes the comparison
|
|
operation to cease. The two AND gates 71 and 72 each have one input inverted
|
|
(denoted by a circle at the input). An SN7400 and SN7404 provide all of the
|
|
needed logic circuits.
|
|
|
|
FIG. 6 depicts an implementation of a subtractor 57 for subtracting two
|
|
numbers. Because the numbers subtracted in FIG. 3 always produce a
|
|
non-negative difference, there is no need to worry about negative
|
|
differences. The larger number, the minuend, is labelled f and the smaller
|
|
number, the subtrahend, is labelled q. Both f and q are presented serially to
|
|
the subtractor 57, low order bit first. AND gates 81 and 83, OR gate 84 and
|
|
XOR gate 82 determine if borrowing (negative carrying) is in effect. A borrow
|
|
occurs if either f.sub.i =0 and q.sub.i =1, or f.sub.i =q.sub.i and borrowing
|
|
occurred in the previous stage. The delay 85 stores the previous borrow
|
|
state. The i.sup.th bit of the difference, d.sub.i, is computed as the XOR,
|
|
or modulo-2 difference, of f.sub.i, q.sub.i and the borrow bit. The output of
|
|
XOR gate 82 gives the modulo-2 difference between f.sub.i and q.sub.i, and
|
|
XOR gate 86 takes the modulo-2 difference of this with the previous borrow
|
|
bit. Typical parts for implementing these gates and the delay are SN7400,
|
|
SN7404 and SN7474.
|
|
|
|
The eavesdropper 13 is assumed to have a cryptographic device 17 and to have
|
|
access to all signals C.sub.1, C.sub.2, . . . , C.sub.i transmitted through
|
|
the insecure channel 19. He also may have past plaintext messages P.sub.1,
|
|
P.sub.2, . . . , P.sub.i-1 as represented by the variable delay 22. The
|
|
eavesdropper in theory could obtain K or D from q, P.sub.1 and C.sub.1 by
|
|
raising P.sub.1 to the first, second, third, etc., powers until C.sub.1 was
|
|
obtained; the power which successfully yields C.sub.1 may be K. This search
|
|
is prevented by choosing q to be a large number; if q is a 200 bit quantity,
|
|
the average number of trials before success is on the order of 2.sup.199
|
|
=8.times.10.sup.59 and is computationally infeasible. Improved algorithms for
|
|
computing logarithms over GF(q) (if Y=a.sup.X mod q, X is the logarithm of Y
|
|
to the base over GF(q)) are known but, if q=2r+1 with q and r being prime,
|
|
then the most efficient known algorithm requires approximately q.sup.1/2
|
|
operations. Taking q to be a 200 bit number, about 2.sup.100 =10.sup.30
|
|
operations are required, still computationally infeasible. An example of such
|
|
a pair is r=(2.sup.121 .multidot.5.sup.2 .multidot.7.sup.2 .multidot.11.sup.2
|
|
.multidot.13.multidot.17.multidot.19.multidot.23.multidot.29.multidot.31.mult
|
|
idot.37.multidot.41.multidot.43.multidot.47.multidot.53.multidot.59)+1 and
|
|
q=2r+1. Other restrictions on q or K or D may also be imposed.
|
|
|
|
There are many methods for implementing this form of the invention. The
|
|
signal q could be public knowledge rather than generated by the key source
|
|
25; or the key source 25 could be located at conversor 12 instead of at
|
|
conversor 11.
|
|
|
|
In some applications, it will prove valuable to use the insecure channel 19,
|
|
instead of the secure channel 26, to exchange the keying information. This
|
|
can be done as described in the patent application "Cryptographic Apparatus
|
|
and Method," Ser. No. 830,754 filed Sept. 6, 1977.
|
|
|
|
Authentication is obtained because an opponent must determine the key if he
|
|
is to inject a message, in enciphered form, that will be deciphered into a
|
|
meaningful message of his choosing. The difficulty involved in foiling the
|
|
authentication protection of the system is therefore equal to the
|
|
difficulties involved in foiling its privacy protection.
|
|
|
|
Variations on the above described embodiment are possible. For example, in
|
|
the above method based on logarithms over GF(q), m-dimensional vectors, each
|
|
of whose components are between 0 and q-1 also could be used. Then all
|
|
operations are performed in the finite field with q.sup.m elements,
|
|
GF(q.sup.m), which operations are well-described in the literature. Or, q
|
|
need not be prime, in which case D must equal the multiplicative inverse of K
|
|
modulo .phi.(q). The function .phi.(q) is known as Euler's totient function
|
|
and equals the number of positive integers less than q and relatively prime
|
|
to q. When q is prime .phi.(q)=q-1 so equation (7) is a special case of this
|
|
more general rule. As a small example, consider q=15 so
|
|
.phi.(q)=8(1,2,4,7,8,11, 13 and 14 are relatively prime to 15). Taking K=3
|
|
then D=K.sup.-1 mod .phi.(q)=3 (in general K and D will be different). If P=2
|
|
then C=P.sup.K mod q= 8 and P can be recovered by the receiver 12 as C.sup.D
|
|
mod q=8.sup.3 mod 15=2, which is correct. If the factorization of q contains
|
|
a repeated factor then a problem arises in that C=P.sup.K mod q and P=C.sup.D
|
|
mod q are not always inverse transformations, even if D=K.sup.-1 mod
|
|
.phi.(q). This problem can be overcome by avoiding certain values of P. For
|
|
example, if q=44=2.sup.2 .multidot.11, then any value of P which is divisible
|
|
by 2, but not by 4, will not be obtained by enciphering and then deciphering.
|
|
As an example, when K=3, D=7 and .phi.(q)=20, if P=2 then C=P.sup.K mod q=9
|
|
but C.sup.P mod q=8.sup.7 mod 44=24.noteq.P.
|
|
|
|
Thus, although the best mode contemplated for carrying out the present
|
|
invention has been herein shown and described, it will be apparent that
|
|
modification and variation may be made without departing from what is
|
|
regarded to be the subject matter of this invention.
|
|
|
|
CLAIMS:
|
|
|
|
What is claimed is:
|
|
|
|
1. In a method of communicating securely over an insecure communication
|
|
channel of the type which communicates a message from a transmitter to a
|
|
receiver by enciphering the message with a secret enciphering key at the
|
|
transmitter, transmitting the enciphered message from the transmitter to the
|
|
receiver, and deciphering the enciphered message with a secret deciphering
|
|
key at the receiver, the improvement characterized by:
|
|
generating the secret deciphering key as the multiplicative inverse, in
|
|
modular arithmetic, of the secret enciphering key;
|
|
generating the enciphered message by exponentiating, in modular arithmetic,
|
|
the message with the secret enciphering key;
|
|
deciphering the enciphered message by exponentiating, in modular arithmetic,
|
|
the enciphered message with the secret deciphering key, wherein the step
|
|
of:
|
|
generating the secret deciphering key is performed by generating a secret
|
|
deciphering key D, such that
|
|
|
|
D=K.sup.-1 (mod q-1)
|
|
where 1.ltoreq.D.ltoreq.q-2, q is a prime number, and the secret
|
|
enciphering key K is an independent random number chosen uniformly from the
|
|
set of integers (1, 2, . . . q-2) which are relatively prime to q-1;
|
|
generating the enciphered message is performed by generating an enciphered
|
|
message C, such that
|
|
|
|
C=P.sup.K (mod q)
|
|
where P is the message; and
|
|
deciphering the enciphered message is performed by generating the message P,
|
|
where
|
|
|
|
P=C.sup.D (mod q).
|
|
|
|
2. In an apparatus for communicating securely over an insecure communication
|
|
channel of the type which communicates a message from a transmitter to a
|
|
receiver comprising means for enciphering the message with a secret
|
|
enciphering key at the transmitter, means for transmitting the enciphered
|
|
message from the transmitter to the receiver, and means for deciphering the
|
|
enciphered message with a secret deciphering key at the receiver, the
|
|
improvement characterized by:
|
|
means for generating the secret deciphering key as the multiplicative
|
|
inverse, in modular arithmetic, of the secret enciphering key;
|
|
means for generating the enciphered message by exponentiating, in modular
|
|
arithmetic, the message with the secret enciphering key, having an input
|
|
connected to receive the secret enciphering key, having another input
|
|
connected to receive the message, and having an output that generates the
|
|
enciphered message, and
|
|
means for deciphering the enciphered message by exponentiating, in modular
|
|
arithmetic, the enciphered message with the secret deciphering key, having
|
|
an input connected to receive the secret deciphering key, having another
|
|
input connected to receive the enciphered message, and having an output
|
|
that generates the message,
|
|
wherein said means for generating the secret deciphering key includes means
|
|
for generating a secret deciphering key D, such that
|
|
|
|
D=K.sup.-1 (mod q-1)
|
|
where .ltoreq.D.ltoreq.q-2, q is a prime number, and the secret enciphering
|
|
key K is an independent random number chosen uniformly from the set of
|
|
integers (1, 2, . . . , q-2) which are relatively prime to q-1;
|
|
wherein said means, for generating the enciphered message by exponentiating,
|
|
includes means for generating an enciphered message C, such that
|
|
|
|
C=P.sup.K (mod q)
|
|
where P is the message; and
|
|
wherein said means, for deciphering the enciphered message by
|
|
exponentiating, includes means for generating the message P, where,
|
|
|
|
P=C.sup.D (mod q).
|
|
|