WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Microprocessor for executing enciphered programs    
United States Patent4168396   
Link to this pagehttp://www.wikipatents.com/4168396.html
Inventor(s)Best; Robert M. (16016 9th Ave. NE., Seattle, WA 98155)
AbstractA microprocessor for executing computer programs which have been enciphered during manufacture to deter the execution of the programs in unauthorized computers. This microprocessor deciphers and executes an enciphered program one instruction at a time, through a combination of substitutions, transpositions, and exclusive-OR additions, in which the address of each instruction is combined with the instruction. Each unit may use a unique set of substitutions so that a program that can be executed in one microprocessor can not be run in any other microprocessor.



 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 4168396
Microprocessor for executing enciphered programs - US Patent 4168396 Drawing
Microprocessor for executing enciphered programs
Inventor     Best; Robert M. (16016 9th Ave. NE., Seattle, WA 98155)
Owner/Assignee    
Patent assignment
All assignments
Publication Date     September 18, 1979
Application Number     05/846,638
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     October 31, 1977
US Classification     713/190 380/37
Int'l Classification     H04L 009/00
Examiner     Buczinski; S. C.
Assistant Examiner    
Attorney/Law Firm     Seed, Berry, Vernon & Baynham
Address
Parent Case    
Priority Data    
USPTO Field of Search     178/22 364/200 364/900 200/61.08 339/19 339/37 339/39 174/52 PE 340/147 MD
Patent Tags     microprocessor executing enciphered programs
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
3504132



[0 after 0 votes]
4120030
Johnstone
713/190
Oct,1978

[0 after 0 votes]
4074066
Ehrsam
713/181
Feb,1978

[0 after 0 votes]
4037215
Birney
711/202
Jul,1977

[0 after 0 votes]
3958081
Ehrsam
380/29
May,1976

[0 after 0 votes]
3944976
France
340/146.2
Mar,1976

[0 after 0 votes]
3911216
Bartek
380/46
Oct,1975

[0 after 0 votes]
3798359
Feistel
380/37
Mar,1974

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


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.
 Description Submit all comments and votes
 


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