Cryptographic decoder for computer programs
First Claim
1. A cryptographic apparatus for deterring unauthorized execution of computer programs of instructions, the apparatus comprising:
- table means for storing a plurality of digital addresses and a corresponding plurality of multiple-bit digital words;
means for determining whether a memory address matches one of the digital addresses in said table means;
means for enciphering a plurality of instructions or portions of instructions in a selected program to produce enciphered instructions to be stored at memory locations specified by memory addresses, the enciphering being performed on an instruction or portion thereof if said determining means determines that the memory address of the instruction matches one of the digital addresses in said table means, the enciphering being a function of the digital word in said table means corresponding to the matching digital address; and
means for deciphering one of said enciphered instructions whenever the instruction is fetched for execution from a memory location specified by a memory address matching one of the digital addresses in said table means, the deciphering being performed as a function of the digital word in said table means corresponding to the digital address that matches the memory address of the instruction, thereby restoring enciphered instructions to unenciphered form during execution of said selected program.
1 Assignment
0 Petitions
Accused Products
Abstract
An integrated circuit decoder for providing microcomputer users with access to several proprietary programs selected from a large group of such programs that have been distributed to users in cipher. The decoder chip can decipher a program if an enciphered key called a "permit code" is presented to the decoder chip. Permit codes are not interchangeable between decoders, are issued only to customers that have paid for use of a program product, and each code will work only with one program. As the program is being deciphered in a user'"'"'s microcomputer, the decoder chip places random errors into the program which make copies of the program malfunction in other microcomputers. The decoder chip keeps a table of addresses where it has placed errors and dynamically corrects the errors on the data bus whenever an error word is addressed during execution. Using such a decoder, thousands of individually priced proprietary software products can be delivered securely to prospective customers in advance of sales on laserdiscs, diskettes, TV-cables, and digital radio broadcasts.
-
Citations
17 Claims
-
1. A cryptographic apparatus for deterring unauthorized execution of computer programs of instructions, the apparatus comprising:
-
table means for storing a plurality of digital addresses and a corresponding plurality of multiple-bit digital words; means for determining whether a memory address matches one of the digital addresses in said table means; means for enciphering a plurality of instructions or portions of instructions in a selected program to produce enciphered instructions to be stored at memory locations specified by memory addresses, the enciphering being performed on an instruction or portion thereof if said determining means determines that the memory address of the instruction matches one of the digital addresses in said table means, the enciphering being a function of the digital word in said table means corresponding to the matching digital address; and means for deciphering one of said enciphered instructions whenever the instruction is fetched for execution from a memory location specified by a memory address matching one of the digital addresses in said table means, the deciphering being performed as a function of the digital word in said table means corresponding to the digital address that matches the memory address of the instruction, thereby restoring enciphered instructions to unenciphered form during execution of said selected program. - View Dependent Claims (2)
-
-
3. A cryptographic apparatus for deterring unauthorized execution of computer programs of instructions, the apparatus comprising:
-
table means for storing a plurality of digital addresses and a corresponding plurality of multiple-bit digital words; means for determining whether a memory address matches one of the digital addresses in said table means; means for enciphering a plurality of instructions or portions of instructions in a selected program to produce enciphered instructions to be stored at memory locations specified by memory addresses, the enciphering being performed on an instruction or portion thereof if said determining means determines that the memory address of the instruction matches one of the digital addresses in said table means, the enciphering being a function of the digital word in said table means corresponding to the matching digital address; and means for deciphering one of said enciphered instructions or portion thereof whenever the instruction is fetched for execution from a memory location specified by a memory address if said determining means determines that the memory address of the fetched instruction matches one of the digital addresses in said table means, the deciphering being performed as a function of the digital word in said table means corresponding to the digital address that matches the memory address of the instruction, thereby restoring enciphered instructions to unenciphered form during execution of said selected program. - View Dependent Claims (4)
-
-
5. A cryptographic apparatus for deterring unauthorized execution of computer programs of instructions, the apparatus comprising:
-
table means for storing a plurality of digital addresses, each digital address being addressable in the table means by a table address; means for determining whether a portion of a memory address matches one of the digital addresses in said table means; means for enciphering a plurality of instructions or portions of instructions in a selected program to produce enciphered instructions, each instruction to be stored at a memory location specified by a memory address having a first portion thereof equal to a specific table address for addressing said table means, the enciphering being performed on the instruction or portion thereof if said determining means determines that a second portion of the memory address of the instruction matches the digital address in said table means addressed by said specific table address; and means for deciphering one of said enciphered instructions whenever the instruction is fetched for execution from a memory location specified by a memory address having a first portion thereof equal to the table address that addresses in said table means a digital address that matches a second portion of the memory address of the instruction, thereby restoring enciphered instructions to unenciphered form during execution of said selected program. - View Dependent Claims (6)
-
-
7. A cryptographic apparatus for deterring unauthorized execution of computer programs of instructions stored in enciphered form as a plurality of portions of enciphered information, the apparatus comprising:
-
means for deciphering portions of said enciphered information to produce deciphered instructions in a selected program; table means for storing a plurality of digital addresses and a corresponding plurality of multiple-bit digital words; means for determining whether a memory address matches one of the digital addresses in said table means; means for reenciphering a plurality of said deciphered instructions or portions thereof to produce reenciphered instructions to be stored at memory locations specified by memory addresses, the reenciphering being performed on an instruction or portion thereof if said determining means determines that the memory address of the instruction matches one of the digital addresses in said table means, the reenciphering being a function of the digital word in said table means corresponding to the matching digital address; and means for redeciphering one of said reenciphered instructions whenever the instruction is fetched for execution from a memory location specified by a memory address matching one of the digital addresses in said table means, the redeciphering being performed as a function of the digital word in said table means corresponding to the digital address that matches the memory address of the instruction, thereby restoring reenciphered instructions to unenciphered form during execution of said selected program. - View Dependent Claims (8, 9)
-
-
10. A cryptographic apparatus for deterring unauthorized execution of computer programs of instructions stored in enciphered form as a plurality of portions of enciphered information, the apparatus comprising:
-
means for controlling deciphering of portions of said enciphered information to produce deciphered instructions in a selected program; table means for storing a plurality of digital addresses and a corresponding plurality of multiple-bit digital words; means for determining whether a memory address matches one of the digital addresses in said table means; means for reenciphering a plurality of said deciphered instructions or portions thereof to produce reenciphered instructions to be stored at memory locations specified by memory addresses, the reenciphering being performed on an instruction or portion thereof if said determining means determines that the memory address of the instruction matches one of the digital addresses in said table means, the reenciphering being a function of the digital word in said table means corresponding to the matching digital address; and means for redeciphering one of said reenciphered instructions whenever the instruction is fetched for execution from a memory location specified by a memory address matching one of the digital addresses in said table means, the redeciphering being performed as a function of the digital word in said table means corresponding to the digital address that matches the memory address of the instruction, thereby restoring reenciphered instructions to unenciphered form during execution of said selected program. - View Dependent Claims (11)
-
-
12. A cryptographic apparatus for deterring unauthorized execution of computer programs of instructions stored in enciphered form as a plurality of portions of enciphered information, the apparatus comprising:
-
means for controlling deciphering of portions of said enciphered information to produce deciphered instructions in a selected program stored at memory locations specified by digital addresses, some of the deciphered instructions having been reenciphered; table means for storing a plurality of digital addresses and a corresponding plurality of multiple-bit digital words; tag means for each address in said table means indicating whether the corresponding instruction is reenciphered or not reenciphered; means for determining whether a memory address matches one of the digital addresses in said table means; and means for redeciphering one of said reenciphered instructions whenever the instruction is fetched for execution from a memory location specified by a memory address that said determining means indicates as matching one of the digital addresses in said table means and if said tag means indicates that the instruction is reenciphered, the redeciphering being a function of the digital word in said table means corresponding to the digital address that matches the memory address of the instruction, thereby restoring reenciphered instructions to unenciphered form during execution of said selected program.
-
-
13. A cryptographic apparatus for deterring unauthorized execution of computer programs of instructions, the apparatus comprising:
-
means for deciphering a plurality of enciphered addresses to produce deciphered addresses specifying locations in a memory; table means for storing a plurality of said deciphered addresses and a corresponding plurality of multiple-bit digital words; means for determining whether a memory address matches one of the deciphered addresses in said table means; means for enciphering a plurality of instructions or portions of instructions in a selected program to produce enciphered instructions to be stored at memory locations specified by memory addresses, the enciphering being performed on an instruction or portion thereof if said determining means determines that the memory address of the instruction matches one of the deciphered addresses in said table means, the enciphering being a function of the digital word in said table means corresponding to the matching deciphered address; and means for deciphering one of said enciphered instructions whenever the instruction is fetched for execution from a memory location specified by a memory address matching one of the deciphered addresses in said table means, the deciphering being performed as a function of the digital word in said table means corresponding to the deciphered address that matches the memory address of the instruction, thereby restoring enciphered instructions to unenciphered form during execution of said selected program.
-
-
14. A cryptographic apparatus for deterring unauthorized execution of computer programs of instructions stored in enciphered form as a plurality of portions of enciphered information, the apparatus comprising:
-
means for deciphering an enciphered program key as a function of a secret chip key to produce a deciphered program key corresponding to a selected program; means for deciphering portions of said enciphered information as a function of said deciphered program key to produce deciphered instructions in said selected program; table means for storing a plurality of digital addresses and a corresponding plurality of multiple-bit digital words; means for determining whether a memory address matches one of the digital addresses in said table means; means for reenciphering a plurality of said deciphered instructions or portions thereof to produce reenciphered instructions to be stored at memory locations specified by memory addresses, the reenciphering being performed on an instruction or portion thereof if said determining means determines that the memory address of the instruction matches one of the digital addresses in said table means, the reenciphering being a function of the digital word in said table means corresponding to the matching digital address; and means for redeciphering one of said reenciphered instructions whenever the instruction is fetched for execution from a memory location specified by a memory address matching one of the digital addresses in said table means, the redeciphering being performed as a function of the digital words in said table means corresponding to the digital address that matches the memory address of the instruction, thereby restoring reenciphered instructions to unenciphered form during execution of said selected program.
-
-
15. A cryptographic apparatus for deterring unauthorized execution of computer programs of instructions stored in enciphered form as a plurality of portions of enciphered information, the apparatus comprising:
-
means for deciphering portions of said enciphered information to produce deciphered instructions in a selected program stored at memory locations specified by digital addresses, some of the deciphered instructions being erroneous instructions; table means for specifying the digital addresses of said erroneous instructions; means for suppressing execution of a fetched instruction whenever the instruction is being fetched from a memory location specified by an address in said table means; and means for incrementing the digital address of said suppressed instruction to produce the address of the next sequential instruction whenever the instruction is being fetched from a memory location specified by an address in said table means, thereby bypassing said erroneous instructions during execution of the selected program. - View Dependent Claims (16, 17)
-
Specification