An encryption system is a security device that converts data into a disguised or encrypted form to render it unintelligible to anyone without a decryption key. Its intended purpose is to ensure privacy by keeping the information hidden from anyone for whom it is not intended. Many techniques and algorithms are known for the conversion of the original data, referred to herein as plain text, into its encrypted form, referred to herein as cipher text.
In a simple encryption system, for example, the sender and the recipient hold identical copies of a secret key, and also an algorithm with which they each generate identical pseudorandom bit sequences. During encryption, the sender modifies the plain text by combining it with the pseudorandom sequence to produce the cipher text. The cipher text is then transmitted. The recipient performs the reverse process by subtracting an identical pseudorandom sequence from the received cipher text to recover the plain text.
An alternative encryption technique is the use of a simple codebook system where the sender and the recipient hold copies of a secret substitution table. The table lists the codes to be transmitted as the cipher text, depending on the value of each byte of the plain text. Practical codebook schemes normally use substitution codes corresponding to longer blocks of plain text, typically sixty-four bits. In such schemes, the substitution codes are generated algorithmically by the sender and recipient since the size of the substitution table usually precludes its explicit storage.
Encryption systems are conventionally implemented in a combination of software algorithms and custom encryption hardware that contains redundant encryption functions. The redundant encryption functions of the custom encryption hardware include operational checks that ensure that the plain text is being effectively encrypted. Unfortunately, some communication equipment, such as commercial portable cellular handsets, cannot implement the custom encryption hardware for security due to size and power constraints.
To avoid the problems associated with custom encryption hardware, some encryption systems are implemented entirely in software algorithms programmed into conventional microprocessor systems. These software encryption algorithms can then be programmed into memory of the existing communication equipment, thereby overcoming the size and power constraints. However, encryption systems implemented in software have traditionally been perceived to be less secure than hardware implementations because software encryption algorithms can become modified or corrupted. Moreover, software encryption algorithms generally do not contain the same operational checks as algorithms implemented in the custom encryption hardware. Thus, it is difficult to ensure that the correct software encryption algorithms are being properly executed.
In addition, it is difficult to verify that the prior art software encryption algorithms are operating in real time, especially in multitasking environments. The term "real time" refers to the ability of the encryption system to output cipher text at substantially the same rate as the plain text is being input into the system. In multitasking systems, the encryption activities may have a lower processing priority than other activities, such as error checking, system housekeeping, and so forth. Accordingly, the conversion of plain text to cipher text may not occur within the time constraints of the system, leading to the output of unencrypted plain text. Moreover, conventional software encryption algorithms are unable to detect any discrepancy and inform the sender. This is an undesirable situation for maintaining security of communications between transmitting and receiving systems.
Accordingly, what is needed is a system and a method for encrypting plain text to produce cipher text which provide a high level of assurance that encryption is being properly executed. In addition, what is needed is a system and a method that incorporate high assurance software encryption algorithms into existing communications systems, such as commercial portable cellular handsets. Furthermore, a system and method is needed that can be incorporated into communications systems that have size, power, and bill-of-material constraints.