Computer software security system
First Claim
1. In a computer system including means for generating a sequence of instruction signals which represent program instructions for performing designated computer operations, some instruction signals having data address portions which represent the addresses at which data involved in the corresponding operations is stored, said instruction signals being stored in memory means in said computer system, the improvement for disguising said program instructions comprising:
- a data memory in said memory means, said data memory having address input conductors and data output conductors;
means for storing in said data memory data signals representing quantities referred to in said program instructions at the addresses specified in said data address portions of said instruction signals;
scrambler means for scrambling the data address portions of said instruction signals in accordance with a predetermined cipher key;
an instruction memory in said memory means;
means for storing said instruction signals including those with scrambled data address portions in said instruction memory;
means for reading said instruction signals out of said instruction memory;
an unscrambler coupled in series with said data memory address conductors, said unscrambler being operable in accordance with said cipher key to unscramble any scrambled data address signals applied to the input thereof and to apply the unscrambled data address signals to said data memory address conductors;
means for applying said scrambled data address signals read out of said instruction memory to the input of said unscrambler; and
means for reading data out of said data memory at said unscrambled addresses in accordance with said program instructions for use in the corresponding computer operations.
1 Assignment
0 Petitions
Accused Products
Abstract
The data address portions of a set of computer instructions are scrambled in accordance with a predetermined cipher key before the instructions are loaded into the instruction memory. The instructions with the scrambled data address portions are then loaded into the instruction memory at addresses corresponding to the original program sequence. The data involved in the program is loaded into a separate data memory at the addresses specified in the original unscrambled program. An unscrambler circuit which operates in accordance with the cipher key is coupled in series with the data memory address input conductors and is mounted on the data memory unit and is encapsulated therewith to prevent anyone from examining the unscrambler to determine the cipher key or from electrically interrogating the unscrambler in such a manner as to determine the cipher key. The scrambled data addresses do not interfere with normal computer operations or maintenance procedures but do prevent anyone from reproducing the original unscrambled program with the information available in the instruction and data memories.
303 Citations
9 Claims
-
1. In a computer system including means for generating a sequence of instruction signals which represent program instructions for performing designated computer operations, some instruction signals having data address portions which represent the addresses at which data involved in the corresponding operations is stored, said instruction signals being stored in memory means in said computer system, the improvement for disguising said program instructions comprising:
-
a data memory in said memory means, said data memory having address input conductors and data output conductors; means for storing in said data memory data signals representing quantities referred to in said program instructions at the addresses specified in said data address portions of said instruction signals; scrambler means for scrambling the data address portions of said instruction signals in accordance with a predetermined cipher key; an instruction memory in said memory means; means for storing said instruction signals including those with scrambled data address portions in said instruction memory; means for reading said instruction signals out of said instruction memory; an unscrambler coupled in series with said data memory address conductors, said unscrambler being operable in accordance with said cipher key to unscramble any scrambled data address signals applied to the input thereof and to apply the unscrambled data address signals to said data memory address conductors; means for applying said scrambled data address signals read out of said instruction memory to the input of said unscrambler; and means for reading data out of said data memory at said unscrambled addresses in accordance with said program instructions for use in the corresponding computer operations. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method of disguising a computer program which is to be stored in first and second memories and which comprises a sequence of instruction signals to be stored in said first memory, said instruction signals representing program instructions for performing designated computer operations, some instruction signals having data address portions which represent the addresses at which data signals involved in the corresponding operation are to be stored in said second memory, said method comprising the steps of:
-
(A) storing said data signals in said second memory at the locations specified by said data address portions of said instruction signals; (B) scrambling said data address portions of said instruction signals in accordance with a predetermined cipher key before said instruction signals are stored in said first memory; (C) storing said instruction signals including said scrambled data address portions thereof in said first memory; (D) reading said instruction signals out of said first memory; (E) unscrambling each scrambled data address portion of the instruction signals read out of said first memory before the corresponding data signals are read out of said second memory; and (F) reading said data signals specified by the unscrambled data address portion of said instruction signals out of said second memory for use in the corresponding computer operations. - View Dependent Claims (9)
-
Specification