|
Claims  |
|
|
I claim the following:
1. A device for processing enciphered information comprising:
addressing means for generating a digital address; means for accepting a
portion of enciphered information from storage means at a location
selected by said address;
deciphering means for converting said portion of enciphered information
into deciphered information by combining said portion of enciphered
information with said address, so as to form a substitute portion of
deciphered information; and
processing means for executing a plurality of computer instructions as a
function of said deciphered information.
2. The device of claim 1, wherein said deciphering means comprises:
first substitution means for transforming said portion of enciphered
information into substitute information, said substitution means
comprising table means retaining binary numbers arranged in a secret
arrangement; and
gate means for combining the bits of said substitute information with bits
of said digital address using modulo-2addition, thereby forming combined
information.
3. The device of claim 2, further comprising second substitution means for
transforming said combined information into second substitute information,
said second substitution means comprising table means retaining binary
numbers arranged in a secret arrangement.
4. The device of claim 2, wherein said gate means combines a first portion
of bits of said digital address with said substitute information, and
further comprising second gate means for combining said substitute
information with a second portion of the bits of said digital address.
5. The device of claim 1, wherein said deciphering means comprises:
first substitution means for transforming said portion of enciphered
information into first substitute information;
second substitution means for transforming said digital address into second
substitute information; and
gate means for combining said first substitute information with said second
substitute information using modulo-2 addition, thereby forming combined
information.
6. The device of claim 1, wherein said deciphering means comprises:
scrambling means for performing a substitution transformation on said
digital address, thereby forming a scrambled address; and
gate means for combining the bits of said scrambled address with bits of
said portion of enciphered information using module-2 addition, thereby
forming combined information.
7. The device of claim 6, wherein said scrambling means comprises:
grouping means for grouping the bits of said digital address into m sets;
first substitution means for transforming said m sets of bits into m sets
of substitute bits, said substitution means comprising m tables, each
table retaining numbers arranged in a secret arrangement;
transposition means for regrouping said m sets of substitute bits from said
first substitution means into n groups, such that one bit from each set is
transposed to each group;
second substitution means for transforming said n groups of bits into n
groups of substitute bits, said substitution means comprising n tables,
each table retaining numbers arranged in a secret arrangement; and
forming means for grouping said n groups of substitute bits from said
second substitution means, thereby forming said scrambled address.
8. The device of claim 6, wherein said deciphering means further comprises
substitution means for converting said portion of enciphered information
into substitute information, said substitution means consisting of table
means retaining numbers arranged in a secret arrangement.
9. The device of claim 1 further comprising enciphering means for
converting plain information into enciphered information by combining said
plain information with said address.
10. A cryptographic apparatus for converting a block of binary information
into a product block cipher, said apparatus comprising:
means for accepting said block of binary information and grouping the bits
of said block into m sets of n bits each;
first substitution means for transforming said m sets of bits into m sets
of substitute bits, said substitution means comprising m tables, each
table retaining 2.sup.n different numbers consisting of n bits each,
arranged in said table in one secret arrangement out of 2.sup.n !
arrangements;
transposition means for regrouping said m sets of n substitute bits from
said first substitution means into n groups of m bits each, such that one
and only one bit from each set is transposed to each group;
second substitution means for transforming said n groups of bits into n
groups of substitute bits, said substitution means comprising n tables,
each table retaining 2.sup.m different numbers consisting of m bits each,
arranged in said table in one secret arrangement out of 2.sup.m !
arrangements; and
forming means for grouping said n groups of m bits from said second
substitution means to form said product block cipher.
11. A process for deciphering enciphered information comprising the steps
of:
generating a digital address; obtaining a byte of enciphered information
from a location specified by said digital address;
combining said byte of enciphered information with said address, thereby
forming a substitute byte of deciphered information; and
repeating the above steps for each of a plurality of addresses.
12. The process of claim 11, wherein said combining step comprises:
selecting a first subset of bits from said address;
selecting a second subset of bits from said address;
combining said addressed byte of enciphered information with said first
address subset, thereby forming a combined byte;
forming a substitute byte as a function of said combined byte; and
combining said substitute byte with said second address subset, thereby
forming a deciphered byte.
13. The process of claim 12, wherein said first combining step comprises:
forming a second substitute byte as a function of said addressed byte; and
adding said second substitute byte to said first address subset, using
modulo-2 addition.
14. The process of claim 12, wherein said first combining step comprises:
forming a second substitute byte as a function of said first address
subset; and
adding said second substitute byte to said addressed byte, using modulo-2
addition.
15. The process of claim 11, wherein said combining step comprises:
selecting a first subset of bits from said address;
selecting a second subset of bits from said address;
forming a first substitute byte as a function of said first address subset;
forming a second substitute byte as a function of said second address
subset;
combining said addressed byte of enciphered information with said first
substitute byte, thereby forming a combined byte; and
combining said combined byte with said second substitute byte, thereby
forming a deciphered byte.
16. The process of claim 11, wherein said combining step comprises:
substituting a scrambled address for said generated address;
adding said scrambled address to said byte of enciphered information using
modulo-2 addition, thereby forming a deciphered byte.
17. The process of claim 16, wherein said substituting step comprises the
steps of:
grouping the bits of said generated address into a plurality of sets;
substituting one substitute set of bits for each said set, as determined by
a secret arrangement of numbers in a substitution table means;
transposing said substitute bits to form a plurality of groups of bits,
such that one bit from each said set is transposed to each said group; and
substituting one substitute group of bits for each said group, as
determined by a secret arrangement of numbers in a substitution table
means, thereby producing a scrambled address.
18. The process of claim 16 further comprising a step of combining a first
portion of said scrambled address with a second portion of said address
using modulo-2 addition, thereby producing a doubly scrambled address.
19. The process of claim 11 further comprising a step of enciphering said
digital address such that said location is a secret function of said
digital address.
20. A process for enciphering plain information comprising the steps of:
generating an address for selecting the location where a byte of enciphered
information will be stored during a later storing step;
substituting a scrambled address for said generated address;
adding said scrambled address to one byte of said plain information using
modulo-2 addition, thereby forming an enciphered byte;
storing said enciphered byte into a storage means at a location selected by
said address; and
repeating the above steps for each of a plurality of plain bytes.
21. A process for enciphering a block of binary information comprising the
steps of:
grouping the bits of said block into m sets, each set having n bits, where
m and n are both greater than one;
substituting for each said set of n bits, one combination of n bits out of
2.sup.n ! combinations of n bits, as determined by a secret arrangement of
said combinations in a substitution table means;
transposing said substitute bits to form n groups of m bits each, such that
one and only one bit from each said combination of n bits is transposed to
each said group of m bits; and
substituting for each said group of m bits, one combination of m bits out
of 2.sup.m ! combinations of m bits, as determined by a secret arrangement
of said combinations in a substitution table means, thereby producing a
product block cipher.
22. The process of claim 21 for enciphering a 16-bit number, comprising the
steps of:
grouping the bits of said number into four 4-bit sets;
substituting a 4-bit substitution cipher for each said set;
transposing the 16 bits from said four substitution ciphers to form four
4-bit groups, such that each group obtains one and only one bit from each
said set; and
substituting a 4-bit substitution cipher for each said group, thereby
producing a cipher block of 16 bits.
23. The process of claim 21 for enciphering a 20-bit number, comprising the
steps of:
grouping the bits of said number into four 5-bit sets;
substituting a 5-bit substitution cipher for each said set;
transposing the 20 bits from said four substitution ciphers to form five
4-bit groups, such that each group obtains one and only one bit from each
said set; and
substituting a 4-bit substitution cipher for each said group, thereby
producing a cipher block of 20 bits.
24. The process of claim 21 for enciphering a 25-bit number, comprising the
steps of:
grouping the bits of said number into five 5-bit sets;
substituting a 5-bit substitution cipher for each said set;
transposing the 25 bits from said five substitution ciphers to form five
5-bit groups, such that each group obtains one and only one bit from each
said set; and
substituting a 5-bit substitution cipher for each said group, thereby
producing a cipher block of 25 bits.
25. A microprocessor apparatus for executing a computer program stored in
enciphered form as a plurality of bytes of enciphered information, while
protecting the deciphered form of the program, wherein each said byte of
enciphered information is identified by a digital address, the apparatus
comprising:
deciphering means using alternating steps of substitution and exclusive-OR
addition for combining a byte of said enciphered information with its
corresponding digital address as a function of substitution information so
as to produce a byte of deciphered information;
memory means for storing said substitution information during the
production of said byte of deciphered information by said deciphering
means; and
processing means for fetching a byte of said deciphered information
containing at least a portion of an executable instruction, and for
executing said executable instruction, and for addressing a successor byte
of enciphered information, said processing means being operative to
produce output information from which less than a significant part of said
program in deciphered form can be obtained.
26. The apparatus of claim 25, further comprising protective body means of
rigid material intimately surrounding said deciphering means, said memory
means, and said processing means, for deterring access by anyone to said
deciphering means, memory means, and processing means.
27. The apparatus of claim 26, wherein said memory means comprises volatile
memory means continuously powered by electrical supply means through a
power conductor embedded in said rigid material, wherein damage to said
rigid material opens said power conductor and results in erasure of said
substitution information.
28. The apparatus of claim 26, wherein said deciphering means, said memory
means, and said processing means are constructed as an integrated circuit
on a chip of semiconductor material, wherein said chip of semiconductor
material comprises a portion of said rigid material, and wherein a second
portion of said rigid material consists of opaque glass covering said
integrated circuit.
29. The apparatus of claim 26, wherein said deciphering means, said memory
means, and said processing means are constructed as a hybrid integrated
circuit on chips of semiconductor material, wherein said rigid material
includes potting resin in which said hybrid integrated circuit is
embedded.
30. A microprocessor apparatus for executing a computer program stored in
enciphered form as a plurality of bytes of enciphered information, while
protecting the deciphered form of the program, wherein each said byte of
enciphered information is identified by a digital address, the apparatus
comprising:
scrambling means for performing a substitution transformation on the
digital address of a byte of said enciphered information, so as to produce
a scrambled address:
means for deciphering said byte of enciphered information by combining said
scrambled address with said byte of enciphered information so as to
produce a byte of deciphered information; and
processing means for fetching a byte of said deciphered information
containing at least a portion of an executable instruction, for executing
said executable instruction, and for addressing a successor byte of
enciphered information, said processing means being operative to produce
output information from which less than a significant part of said program
in deciphered form can be obtained.
31. The apparatus of claim 30, further comprising protective body means of
rigid material intimately surrounding said scrambling means, said
deciphering means, and said processing means, for deterring access by
anyone to said scrambling means, deciphering means, and processing means.
32. The apparatus of claim 31, wherein the operation of said scrambling
means is a function of substitution information, wherein said apparatus
further comprises volatile memory means for storing said substitution
information during the production of said scrambled address, and wherein
said protective body means intimately surrounds said volatile memory means
in addition to said scrambling means, said deciphering means and said
processing means.
33. The apparatus of claim 30, wherein said scrambling means comprises
substitution table means retaining binary integers arranged in a secret
arrangement, wherein a portion of said scrambled address is obtained from
said substitution table means by table lookup of a portion of said digital
address.
34. The apparatus of claim 30, wherein said scrambling means comprises:
grouping means for grouping the bits of said digital address into m sets;
first substitution means for transforming said m sets of bits into m sets
of substitute bits, said substitution means comprising m tables, each
table retaining integers arranged in a secret arrangement;
transposition means for regrouping said m sets of substitute bits from said
first substitution means into n groups, such that one bit from each set is
transposed to each group;
second substitution means for transforming said n groups of bits into n
groups of substitute bits, said substitution means comprising n tables,
each table retaining integers arranged in a secret arrangement; and
forming means for grouping said n groups of bits from said second
substitution means, thereby forming said scrambled address.
35. The apparatus of claim 30, wherein said deciphering means comprises
exclusive-OR means for combining said scrambled address with said byte of
enciphered information using modulo-2 addition.
36. The apparatus of claim 30, wherein said deciphering means further
comprises substitution table means for converting said byte of enciphered
information into substitute information.
37. A microprocessor apparatus for executing a computer program stored in
enciphered form as a plurality of bytes of enciphered information, while
protecting the deciphered form of the program, wherein each said byte of
enciphered information is identified by a digital address, the apparatus
comprising:
memory means for storing a plurality of bytes of information;
deciphering means for combining a byte of enciphered information obtained
from said memory means with its corresponding digital address so as to
produce a byte of deciphered information;
processing means for fetching a byte of said deciphered information
containing at least a portion of an executable instruction, for executing
said executable instruction, and for addressing a successor byte of
enciphered information, said processing means being operative to produce
output information from which less than a significant part of said program
in deciphered form can be obtained; and
protective body means of rigid material intimately surrounding said
deciphering means, said memory means, and said processing means, for
deterring access by anyone to said deciphering means, memory means, and
processing means.
38. The apparatus of claim 37, wherein the operation of said deciphering
means is a function of substitution information, wherein said apparatus
further comprises volatile storage means for storing said substitution
information during the production of said deciphered information, and
wherein said protective body means intimately surrounds said volatile
storage means in addition to said memory means, said deciphering means and
said processing means.
39. A microprocessor apparatus for providing restricted access to data
information available to the apparatus in enciphered form, while
controlling the amount of the data information output by the apparatus in
deciphered form, wherein each byte of said enciphered data information is
identified by a digital address, the apparatus comprising:
deciphering means for combining a byte of enciphered information with its
corresponding digital address so as to produce a byte of deciphered
information;
processing means for fetching and executing a plurality of executable
instructions, and for addressing portions of enciphered information
responsive to said instructions, so as to restrict the portions of
enciphered information which are deciphered by said deciphering means, and
for producing output information from said byte of deciphered information;
and
protective body means of rigid material intimately surrounding said
deciphering means and said processing means, for deterring access by
anyone to said deciphering means, processing means, and executable
instructions.
40. A cryptographic microprocessor constructed as an integrated circuit
chip comprising:
substitution table means included in said chip for cryptographically
transforming a byte of an enciphered program of executable instructions
obtained from a storage means location to produce a byte of deciphered
information;
processing means included in said chip for fetching a byte of said
deciphered information containing at least a portion of an executable
instruction in said program, and for executing said executable
instruction, and for fetching a byte of said deciphered information
containing at least a portion of a storage means address, and for
addressing a location in said storage means specified by the storage means
address to select a byte of said enciphered program for transforming by
said table means, the processing means being operative to produce output
information;
external bus means for conveying said output information to a location
externally of the microprocessor; and
internal bus means included in said chip for conveying said instruction
portion and said address portion from said substitution table means to
said processing means, the internal bus means being selectively isolated
from said external bus means so as to prevent external access through said
external bus means to portions of said deciphered information.
41. A cryptographic microprocessor for executing a computer program stored
in enciphered form as a plurality of portions of enciphered information,
while protecting the deciphered form of the program, the apparatus
comprising:
first substitution means comprising m tables of integers, the integers in
each table having a predetermined permutation, for transforming m portions
of said enciphered information into m sets of substitute bits, wherein m
is greater than one;
transposition means for regrouping said m sets of substitute bits into n
groups of bits and for transposing one bit from each set to each group,
wherein n is greater than one;
second substitution means comprising n tables of integers, the integers in
each table having a predetermined permutation, for transforming said n
groups of bits into n groups of substitute bits, wherein said n groups of
substitute bits comprise a portion of deciphered information;
processing means for fetching a byte of said deciphered information
containing at least a portion of an executable instruction, and for
executing said executable instruction, and for fetching a byte of said
deciphered information containing at least a portion of a storage means
address, the processing means being operative to produce output
information; and
external bus means for conveying said output information externally of the
microprocessor.
42. The microprocessor of claim 41, further comprising:
internal bus means for conveying said instruction portion and said address
portion from said second substitution means to said processing means, the
internal bus means being selectively isolated from said external bus means
so as to prevent external access via said external bus means to portions
of said deciphered information.
43. The microprocessor of claim 41, further comprising:
internal bus means for conveying said instruction portion and said address
portion from said second substitution means to said processing means; and
buffer means connected to receive said output information from said
processing means, and connected to said external bus means, and operating
under control of said processing means in either an output state or an
isolation state, and for conveying said output information to said
external bus means during said output state, and for substantially
isolating said internal bus means from said external bus means during said
isolation state, said processing means effecting the isolation state of
the buffer means during said fetching of a byte of said deciphered
information via said internal bus means, thereby preventing external
access via said external bus means to said computer program in deciphered
form.
44. The microprocessor of claim 41, further comprising memory means for
storing said portions of enciphered information.
45. The microprocessor of claim 41, further comprising enciphering means
for transforming a portion of unenciphered information into a portion of
enciphered information.
46. A cryptographic microprocessor for providing limited access to data
information available to the apparatus in enciphered form, while
controlling the amount of the data information output by the apparatus in
deciphered form, the apparatus comprising:
first substitution means comprising m tables of integers, the integers in
each table having a predetermined permutation, for transforming portions
of said enciphered information into m sets of substitute bits, wherein m
is greater than one;
transposition means for regrouping said m sets of substitute bits into n
groups of bits and for transposing one bit from each set to each group,
wherein n is greater than one;
second substitution means comprising n tables of integers, the integers in
each table having a predetermined permutation, for transforming said n
groups of bits into n groups of substitute bits, wherein said n groups of
substitute bits comprise a portion of deciphered information;
processing means for fetching and executing a plurality of executable
instructions, and for addressing portions of said enciphered information
responsive to said instructions, and for producing output information from
said portion of deciphered information;
external bus means for conveying said output information externally of the
apparatus; and
internal bus means selectively isolated from said external bus means, for
conveying said portion of decipered information from said second
substitution means to said processing means, the isolation between said
buses preventing external access via said external bus means to portions
of said deciphered information not output by said processing means.
47. The microprocessor of claim 46, further comprising memory means for
storing said portions of enciphered information.
48. A cryptographic apparatus for converting a block of binary information
into a product block cipher, the apparatus comprising:
first substitution means comprising m tables of integers, the integers in
each table having a predetermined permutation, for transforming m portions
of said block into m sets of substitute bits, wherein m is greater than
one;
transposition means for regrouping said m sets of substitute bits into n
groups of bits and for transposing one bit from each set to each group,
wherein n is greater than one; and
second substitution means comprising n tables of integers, the integers in
each table having a predetermined permutation, for transforming said n
groups of bits into n groups of substitute bits, wherein said n groups of
substitute bits comprise said product block cipher.
49. A cryptographic microprocessor apparatus constructed as an integrated
circuit chip for executing a computer program of instructions stored in
enciphered form in a storage means as a plurality of bytes of enciphered
program information, the apparatus comprising:
deciphering means included in said chip for cryptographically transforming
a portion of said enciphered program information obtained from a storage
means location to produce a portion of deciphered information;
processing means included in said chip for fetching a byte of said
deciphered information containing at least a portion of an executable
instruction in said program, and for executing said executable
instruction, and for fetching a byte of said deciphered information
containing at least a portion of a storage means address, and for
addressing a location in said storage means specified by the storage means
address to select a portion of said enciphered program information for
transforming by said deciphering means, the processing means being
operative to produce output information;
external bus means for conveying said output information to a location
externally of the apparatus; and
internal bus means included in said chip for conveying said instruction
portion and said address portion from said deciphering means to said
processing means, the internal bus means being selectively isolated from
said external bus means so as to prevent external access through said
external bus means to portions of said deciphered information.
50. A cryptographic microprocessor apparatus constructed as an integrated
circuit chip for executing a computer program of instructions stored in
enciphered form in a storage means as a plurality of bytes of enciphered
program information, the apparatus comprising:
deciphering means included in said chip for cryptographically transforming
a portion of said enciphered program information obtained from a storage
means location to produce a portion of deciphered information;
processing means included in said chip for fetching a byte of said
deciphered information containing at least a portion of an executable
instruction in said program, and for executing said executable
instruction, and for fetching a byte of said deciphered information
containing at least a portion of a storage means address, and for
addressing a location in said storage means specified by the storage means
address to select a portion of said enciphered program information for
transforming by said deciphering means, the processing means being
operative to produce output information;
external bus means for conveying said output information to a location
externally of the apparatus;
internal bus means included in said chip for conveying said instruction
portion and said address portion from said deciphering means to said
processing means; and
buffer means included in said chip and connected to receive said output
information from said processing means, and connected to said external bus
means, and operating under control of said processing means in either an
output state or an isolation state, and for conveying said output
information to said external bus means during said output state, and for
substantially isolating said internal bus means for said external bus
means during said isolation state, said processing means effecting the
isolation state of the buffer means during said fetching of a byte of said
deciphered information through said internal bus means, thereby preventing
external access through said external bus means to said computer program
in deciphered form.
51. A cryptographic microprocessor apparatus for executing a computer
program of instructions stored in enciphered form as a plurality of bytes
of enciphered program information, the apparatus comprising:
deciphering means for cryptographically transforming a portion of said
enciphered program information into a portion of deciphered information;
processing means for fetching a byte of said deciphered information
containing at least a portion of an executable instruction, and for
executing said executable instruction, and for fetching a byte of said
deciphered information containing at least a portion of a storage means
address, the processing means being operative to produce output
information;
external bus means for conveying said output information to a location
externally of the apparatus; and
internal bus means for conveying said instruction portion and said address
portion from said deciphering means to said processing means, the internal
bus means being selectively isolated from said external bus means so as to
prevent external access through said external bus means to portions of
said deciphered information.
52. A cryptographic microprocessor apparatus for executing a computer
program of instructions including executable portions stored in enciphered
form as portions of enciphered program information, portions of the
program being stored at respective storage means locations, each location
having a storage means address, the apparatus comprising:
deciphering means for cryptographically transforming a portion of said
enciphered program information from said storage means to produce a
portion of deciphered information;
processing means for fetching a byte of said deciphered information
containing an executable portion of an instruction in said program, and
for executing said instruction, and for fetching a byte containing at
least a portion of a specific address in said program, and for addressing
in said storage means a location specified by said specific address to
select a subsequent portion of said enciphered program information for
transforming by said deciphering means; and
internal bus means for conveying said executable portion form said
deciphering means to said processing means, the internal bus means being
isolated from external access during conveying of said executable portion
so as to prevent external access to portions of said program in deciphered
form.
53. A cryptographic microprocessor apparatus constructed as an integrated
circuit chip for executing a computer program of instructions including
executable portions and address portions stored in enciphered form as a
plurality of bytes of enciphered program information at respective storage
means locations, the apparatus comprising:
deciphering means included in said chip for cryptographically transforming
a portion of said enciphered program information from said storage means
to produce a portion of deciphered information;
processing means included in said chip for fetching a byte of said
deciphered information containing an executable portion of an instruction
in said program, and for executing said instruction, and for fetching a
byte of said deciphered information containing at least a portion of a
deciphered address in said program, and for addressing in said storage
means a location specified by said deciphered address to select a
subsequent portion of said enciphered program information for transforming
by said deciphering means; and
internal bus means included in said chip for conveying said executable
portion and said address portion from said deciphering means to said
processing means, the internal bus means being isolated from external
access during said conveying so as to prevent external access to portions
of said program in deciphered form. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
BACKGROUND OF THE INVENTION
The development of computer programs for microcomputers is often an
expensive and time-consuming enterprise. To recover the development cost
of such programs it is important to the developer that each user pay for
the programs he uses. This is often difficult to accomplish in practice,
because it is generally easy for users to make multiple copies of the
programs for non-paying users, and easy for competitors to repackage and
distribute valuable programs at a fraction of the original developer's
cost. The development of highly human-engineered systems which can be used
by unskilled microcomputer owners has been inhibited by the realization
that a market price high enough to cover costs will also be high enough to
attract pirating and covert distribution of unauthorized copies. This
problem is made worse by the fact that microcomputers are inexpensive
lightweight devices which can be taken apart and analyzed in secret by
their owners who may be numerous and anonymous.
Microcomputers generally contain one or more integrated circuit
microprocessors that execute the program instructions one byte at a time.
(A byte is usually 8 bits or 16 bits but other byte sizes may be used in
the present invention). These microprocessors are usually interchangeable
stock components which are available from many vendors. This
interchangeability makes it easy for a competitor to plagiarize
proprietary programs by using similar but unauthorized microprocessors.
One method of preventing such theft of proprietary programs is to alter
each microprocessor and the programs which accompany it so that neither
the microprocessors nor the programs are interchangeable. This can be
accomplished by enciphering each program in a different cipher so that
each program can be deciphered and executed only by the authorized
microprocessor that accompanies it in the microcomputer. The main
disadvantages of this approach are that prior-art encryption methods are
either not sufficiently secure against cryptanalyst attack, or require too
much space on the microprocessor chip, and/or are too slow when used for
this purpose. The following prior-art encryption methods have one or more
of these disadvantages.
Block cipher systems have been developed for protecting digital information
during transmission over communication networks. Some of these systems are
extremely secure and are suitable for such data as financial transactions
which must be immune from cryptanalyst attack. One method of providing
such high security is to use alternating substitution and transportion as
described in "Communication Theory of Secrecy Systems" by C. E. Shannon,
Bell System Technical Journal, Vol. 28, pages 711-713, October 1949.
Further teachings on such block cipher systems may be found in
"Cryptography and Computer Privacy" by Horst Feistel, Scientific American,
Vol. 228, No. 5, pages 15-23, May 1973. Several inventions have made use
of these teachings, for example the systems disclosed in U.S. Pat. Nos.
3,789,359 and 3,958,081 issued Mar. 19, 1974 and May 18, 1976
respectively. These block cipher systems are suitable for protecting
valuable software used in microprocessors as disclosed in copending
application Ser. No. 750,009 filed Dec. 13, 1976, now abandoned. A
deciphering processor using such a block cipher is highly secure, but is
complex, costly and slow for the kind of microcomputers contemplated for
use with the present invention.
Simple low-cost stream cipher systems are frequently used for enciphering
digital communications data by combining in various ways the message being
transmitted with a long stream of quasi-random bits. This stream of bits
is generated by a random number generator from a cipher key or "seed". An
example of such a system may be found in U.S. Pat. No. 3,911,216 issued
Oct. 7, 1975. If a stream cipher method were used to protect microcomputer
programs, the deciphering circuitry would not be able to decipher the
whole program as a long stream and then execute it, because space
limitations prevent the whole deciphered program from being stored on the
microprocessor chip. Storing it external to the microprocessor is futile,
because the wiring of the microcomputer is accessible to users.
Deciphering the program as it executes is not practical either (using a
stream chiper), because programs do not generally execute and address data
in a strict address sequence, but instead contain many loops and jumps.
Hence a program enciphered in address sequence cannot be deciphered as a
stream. To recompute a portion of the random bit stream every time the
address sequence changed would be a slow process, and would be
prohibitively slow if different portions of the random bit stream had to
be recomputed for each instruction executed. For these reasons such stream
ciphers are not practical for protecting programs which are deciphered as
they are executed in a microprocessor.
Another prior-art encryption method is monoalphabetic substitution. In such
a system each byte of the program would be replaced with a substitute
byte. Each byte of the enciphered program would be deciphered when needed
by a simple table-lookup using a small substitution table which is part of
the circuitry on the microprocessor chip. This method has several
advantages: it is simple, fast, does not take too much space on the chip,
and may proceed in any instruction sequence. Unfortunately, monoalphabetic
substitution is not difficult to break, and hence offers little security
for the program.
Other prior-art encryption methods share one or more of the disadvantages
already mentioned. Hence the prior art does not provide a secure
cryptographic system which is suitable for protecting programs which are
deciphered one byte at a time as the program executes, by an inexpensive
single-chip microprocessor in a computer with easily accessible wiring.
SUMMARY OF THE INVENTION
The primary objects of this invention are:
1. to deter users of microcomputer programs from executing the programs in
unauthorized computers;
2. to make the deciphering process as simple and as inexpensive as
possible, consistent with good security of the enciphered programs;
3. to decipher each byte of an instruction in one clock cycle, so that
deciphering can proceed as fast as execution; and
4. to provide cryptographic methods which have the advantages of
monoalphabetic substitution, but are much more secure.
These and other objects of the invention are accomplished through the use
of a microprocessor constructed as an integrated-circuit chip (FIG. 4) or
hybrid circuit (FIG. 5). This microprocessor includes conventional
processing circuits for executing instructions and circuitry for
deciphering enciphered information through a series of bit-transpositions,
byte-substitutions and exclusive-OR (modulo-2) additions. Each enciphered
byte is separately deciphered by combining it with its address. Several
such combining methods are herein disclosed. The purpose of making each
cipher a function of its address is to avoid the weaknesses of
monoalphabetic substitution and the slowness of a block cipher.
Prior-art inventions based on the teachings of Feistel previously
referenced are complex and slow because they require the use of a variable
cipher key, publicly known substitution functions, and many transposition
and substitution steps. A different approach is used in the present
invention. Since the microprocessor will be used only with the enciphered
programs which are authorized for it, a variable key is not essential.
Since different substitution functions will be used for each software
system or perhaps each unit, the details of the substitution fu | | |