System and Method for Encrypting and Verifying Messages Using Three-Phase Encryption
Background of the Invention The present invention relates in general to a system and method for encrypting, decrypting, and verifying the integrity of messages. In particular, the present invention relates to a system and method for using a three-phase encryption process to encrypt, decrypt, and verify the integrity of a message. The Internet provides an efficient and inexpensive means of communication between large numbers of users. The same infrastructure can be shared among the different users; it is unnecessary for each pair of communicating users to establish a separate channel of communication as is the case, for example, with users of standard telephones and fax machines. The sharing of the channels of communication provided by the Internet significantly increases the probability of intercepted communication, eavesdropping, tampering with the messages, etc. Thus, it has become increasingly important to have available means of communication that provide an efficient way of securing the transmission of messages between a source and a target over shared channels of communication such as the Internet. The most common method of secured communication is to encrypt the message at the source in such a way that practically only the target can decrypt the message. Many types of encryption/decryption have been developed to address the need for secured communications. There are two main types of encryption techniques: secret key encryption and private/public key encryption. In secret key encryption, the same secret key is used both for the encryption of the message at the source and the decryption of the message at the target. An example of secret key encryption is the Data Encryption Standard (DES). In public/private key encryption, each user has a private key (which is kept secret from the other users) and a public key (which each user publicly distributes). The two keys are mathematically related in such a way that a source uses the target's
public key to encrypt a message such that practically only the target can decrypt the message. A good encryption standard must be computationally efficient for the source and the target, and at the same time, the standard must be not be easy to "break" using cryptanalysis: the art and science of breaking encryption algorithm. It is also important for the encryption standard to provide means for verifying the integrity of a message — whether a message was altered during its transmission through an unsecured medium. What is needed, therefore, is a system and method that could provide an efficient encryption/decryption standard between a source and a target while not being susceptible to cryptanalysis. The system and method should also provide the capability to verify the integrity of a transmitted message to a high degree of probability. Summary
It has been discovered that the aforementioned challenges can be addressed by a method and a system for ©nesryptMig9 deciyptings, and verifying tie integrity of a message using a three-phase encryption process. The structure of the three-phase encryption process makes cryptanalysis of the algorithm extremely difficult, which significantly reduces the probability ©f 46breϋMng" the encryption. In addition, the current method and system provide a means for verifying the integrity of a transmitted message by comparing, at the target, a received control number to a decrypted control number. The source and target share a secret master key, which the source uses to encrypt a message, and after the message is transmitted to the target, the target uses to decrypt the message. The message to be encrypted and transmitted to the target is received by the source in plain-text form. The source first generates a first and second random number and constructs a plain-text envelope comprising: the plain-text message; the first random number; the second random number; a pad field; and a number indicating the length of the pad field. The pad field is generated such that a length of: the plain-text message; the first random number; the second random number; the pad field; and the number indicating the length of the pad field is an integer multiple of a block size of a block
cipher algorithm used in the encryption/decryption process. A first, second, and third key are subsequently generated. The three keys are used one at each of the three phases of the encryption process. The keys are generated from the secret master key and the first random number using a decryption function of a block cipher algorithm used in the encryption/decryption process. At the fist phase of the encryption process, a first set of N intermediate blocks is generated from the N plain-text blocks and the first key using the function of a block cipher algorithm encryption/decryption. At the second phase of the encryption process, a second set of N intermediate blocks is generated from the first set of N intermediate blocks and the second key using the encryption function of the block cipher encryption/decryption algorithm. At the third and final phase of the encryption process, N cipher text blocks are generated from the second set of N intermediate blocks and the third key using the encryption function of the block cipher encryption/decryption algorithm. A protected-text envelope is then constructed containing: a number indicating the length of the protected-text envelope; the first random value; and the N cipher-text blocks. The protected-text envelope is transmitted to a target over an unsecured medium such as the Internet. The protected-text envelope is received by the target, which shares the source's secret master key. The target extracts from the protected-text envelope: the number indicating the length of the protected-text envelope; the first random value; and the N cipher-text blocks. The first, second, and third keys are then generated from the extracted first random number and the secret master key using the decryption function of the block cipher encryption/decryption algorithm. At the fist phase of the decryption process, the second set of the N intermediate blocks is generated from the N cipher-text blocks and the third key using the decryption function of the block cipher encryption decryption algorithm. At the second phase of the decryption process, second set of the N intermediate blocks is generated from the first set of N intermediate blocks and the second key using the decryption function of the block cipher encryption/decryption algorithm. At the third and final phase of the decryption
process, the N plain-text blocks are generated from the first set of N intermediate blocks and the first key using the decryption function of the block cipher encryption/decryption algorithm. The plain-text message is then extracted from the N plain-text blocks of the plain-text envelope. In order to verify the integrity of the message, a first random number included in the N plain-text blocks is then extracted and compared to the first random number extracted from the protected-text envelope. If the two numbers are not equal the received message is not trusted since it can be concluded that the message was most likely altered during its transmission from the source to the target. If the two numbers are equal, the message can be trusted. The foregoing is a summary and thus contains, by necessity, simplifications, generalizations, and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way . limiting. Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.
Brief Description of the Drawings The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings. The use of the same reference symbols in different drawings indicates similar or identical items. Figure 1 is a block diagram illustrating the encryption of a message at a source, transmission in encrypted form over an unsecured medium, and decryption of the message at a target; Figure 2 is a block diagram illustrating a system for encrypting a message using a three-phase encryption process; Figure 3 is a block diagram illustrating a system for decrypting a message using a three-phase decryption process; Figure 4 is a flowchart illustrating a method for receiving, encrypting, and transmitting a message; Figure 5 is a flowchart illustrating a method for encrypting a message using a three-phase encryption process; Figure 6 is a flowchart illustrating a method for receiving encrypted text, decrypting the encrypted text, and extracting a message from the decrypted text; Figure 7 is a flowchart illustrating a method for decrypting an encrypted message using a three-phase decryption process; Figure 8 is a flowchart illustrating a method for verifying the integrity of a received and decrypted message; and Figure 9 illustrates an information handling system that is a simplified example of a computer system capable of performing the operations described herein.
Detailed Description The following is intended to provide a detailed description of an example of the invention and should not be taken to be limiting of the invention itself. Rather, any number of variations may fall within the scope of the invention defined in the claims following the description. Figure 1 is a block diagram illustrating encryption of a message at a source, transmission in encrypted form over an unsecured medium, and decryption of the message at a target. Source 110 is configured to receive a plain-text message and construct plain-text envelope 120. In one embodiment, plain-text envelope 120 includes the plain-text message and additional numbers and fields generated at the source. Oval
160 shows a larger image of plain-text envelope 120. In one embodiment, envelope 120 contains N blocks PO-PN-I that include the random number S, a number indicating the length of the pad field, the message "Hello!", a pad field, and the random number R. Source 110 encrypts plain-text envelope 120 to create N cipher text blocks CO-CN-I using master key M 115 and the three-phase encryption process. Protected-text envelope 130 is then constructed using the cipher text and other control numbers and transmitted through unsecured medium 125. Oval 160 shows a larger image of protected-text envelope 130. In one embodiment, envelope 130 contains a number indicating the length of the protected-text envelope, the control random number R, and the cipher text. Target 135 is configured to receive the message and decrypt the extracted cipher text using master key M 140, which is shared between the source and the target. After decryption, the target recovers plain-text envelope 145, which should be identical to plain-text envelope 120 unless the cipher text was altered during transmission through unsecured medium 125. Figure 2 is a block diagram illustrating a system for encrypting a message using the three-phase encryption process. Encryption device 210 is configured to receive the N blocks P0 -PN_i of the plain-text envelope P and generate the N blocks C0 -CN_X of cipher text C. Encryption device 210 includes: N-l exclusive or modules 220, ..., 222, and 224; N-l exclusive or modules 242, 244, ..., 246; N-l exclusive or modules 256, ..., 258, and 260; N encryption modules 212, 214, ..., 216, and 218; N encryption modules
226, 228, ..., 230, and 232; and N encryption modules 248, 250, ..., 252, and 254. The exclusive or modules are configured to generate an output by performing a bitwise "xor" operation on the two inputs to the modules. The encryption modules are configured to generate an output according to the formula Out = Enc^ (In) .
The function Enc() may be the encryption function of any block cipher encryption/decryption algorithm and Kj is one of three keys Ki, K2, and K3 generated at the source. The first key is used in encryption modules 212-218, the second key is used in encryption modules 226-232, and the third key is used in encryption modules 248-254. The three keys are generated according to the formula: K. = O∞M(R@i), i = 1,2,3.
Dec() may be the decryption function of any block cipher encryption/decryption algorithm, M is the secret master key, and Θ is the "xor" operator. Initially, block Po is input into encryption module 212 to generate intermediate block Ao. Block Ao and block Pt are then input into exclusive or module 220 and the output from exclusive or module 220 is input into encryption module 214 to generate intermediate block
The process repeats until block AN-2 and block PN-
I are input into exclusive or module 224 and the output from exclusive or module 224 is input into encryption module 218 to generate intermediate block AN-
I to complete the first phase of the encryption process. The second phase of the encryption process begins with intermediate block AN-
I being input into encryption module 232 to generate intermediate block B
N-
I. Block AN-
2 is then input into encryption module 230 and the output from encryption module 230 and block AN-
I are input into exclusive or module 246 to generate intermediate block BN-2- This process repeats until block Ai is input into encryption module 226 and the output from encryption module 226 and block Ao are input into exclusive or module 242 to generate intermediate block Bo to complete the second phase of the encryption process. The third phase of the encryption process begins with intermediate block Bo being input into encryption module 248 to generate cipher text block Co. Block Bj is then input
into encryption module 250 and the output from encryption module 250 and block B
0 are input into exclusive or module 256 to generate cipher text block C-i. This process repeats until block BN-I is input into encryption module 254 and the output from encryption module 254 and block B
N-2 are input into exclusive or module 260 to generate cipher text block CN-I to complete the third phase of the encryption process. Figure 3 is a block diagram illustrating a system for decrypting a message using a three-phase decryption process. Decryption device 310 is configured to receive the N blocks C
0 - C
w_, of cipher text C and generate the N blocks P
0 - P
N_
X of the plain-text envelope P. Decryption device 310 includes: N-l exclusive or modules 320, ... , 322, and 324; N-l exclusive or modules 334, 236, ..., and 338; N-l exclusive or modules 348,
350, and 352; N decryption modules 312, 314, ..., 316, and 318; N decryption modules 326, 328, ..., 330, and 332; and N decryption modules 340, 342, ..., 344, and 346. The exclusive or modules are configured to generate an output by performing a bitwise "xor" operation on the two inputs to the modules. The decryption modules are configured to generate an output according to the formula: Out = Dec^ (In) .
The function Enc() may be the decryption function of any block cipher algorithm and Kj is one of three keys Ki, K2, and K3 generated by the target. The third key is used in decryption modules 312-318, the second key is used in decryption modules 326-332, and the first key is used in decryption modules 340-346. The three keys are generated according to the formula: i , = Becw(/?Θi), i = 1,2,3.
Dec() may be the decryption function of any block cipher encryption/decryption algorithm, M is the secret master key, and Θ is the "xor5' operator. Initially, block Co is input into decryption module 312 to generate intermediate block Bo. Block Bo and block Ci are then input into exclusive or module 320 and the output from exclusive or module 320 is input into decryption module 314 to generate intermediate block Bi. The process repeats until block CN-2 and block CN-I are input into exclusive or module 324 and the output from exclusive or module 324 is input into
decryption module 318 to generate intermediate block BN-! to complete the first phase of the decryption process. The second phase of the decryption process begins with intermediate block BN-I being input into decryption module 332 to generate intermediate block AN-I. Block BN-2 and block A -! are input into exclusive or module 338 and the output from module 338 is input into decryption module 330 to generate intermediate block A -2- This process repeats until block A] and intermediate block Bo are input into exclusive or module 334 and the output from exclusive or module 334 is input into decryption module 326 to generate intermediate block Ao to complete the second phase of the decryption process. The third phase of the decryption process begins with intermediate block Ao being input into decryption module 340 to generate plain text block Po. Block Ai is then input into decryption module 342 and the output from decryption module 342 and block Ao are input into exclusive or module 348 to generate plain text block Pi. This process repeats until block AN-I is input into decryption module 346 and the output from decryption module 346 and block AN-2 are input into exclusive or module 352 to generate plain text block PN-I to complete the third phase of the decryption process. Figure 4 is a flowchart illustrating a method for receiving, encrypting, and transmitting a message. Processing begins at 400 whereupon, at step 410, secret master key M is received by the source. The same secret master key M is shared between the source and the target. Secret master key M may be received from storage unit 415. The secret master key may be changed frequently to ensure the key's confidentiality. At step 420, the message to be encrypted may be received from storage unit 425. At step 430, two fixed-size random numbers (§ & R) are generated. A determination is then made as to whether a pad field is required to construct a plain-te∑ ; envelope at decision 435. The plain-text envelope is formed using fixed-size random number S, a number indicating the length of the pad field (if any), the message to be encrypted, the pad field, and the fixed-size random number R. In an embodiment where a block cipher encryption algorithm is to be used in the encryption of the plain-text envelope, the size (length) of the envelope must be an integral multiple of the cipher's block size. For example, the block size for the AES block cipher algorithm is 128 bits. If
the length of the message, S, R, and the number indicating the length of the pad field is an integral multiple of the cipher's block size, decision 435 branches to "yes" branch 445 whereupon processing continues at step 455. If the length of the message, S, R, and the number indicating the length of the pad field is not an integral multiple of the cipher's block size, decision 435 branches to "no" branch 440 whereupon, at step 450, a pad field containing any arbitrary pattern is generated. The length of the pad field is chosen so as to provide a plain-text envelope having a length that is an integral multiple of the cipher's block size. At step 455, a plain-text envelope P is generated. In one embodiment, envelope P contains: the fixed- size random number S, a number indicating the length of the pad field, the message to be encrypted, the pad field, and the fixed-size random number R. Envelope P contains N equal-size blocks PO-PN-I • At step 460, the plain-text envelope P is encrypted using the three-phase encryption process to construct a protected-text envelope. More details of the encryption process are shown in the flowchart of Figure 5. At step 460, the protected-text envelope is transmitted to the target over an unsecured medium such as the Internet. Figure 5 is a flowchart illustrating a method for encrypting a message using a three-phase encryption process. Processing begins at 500 whereupon at 510, three keys are generated from the random number R and the secret master key using the decryption function of a block cipher algorithm. In one embodiment, the three keys may be generated according to the formula: JC. = BecM(i2θ ), = ls2,3.
Dec() may be the decryption function of any block cipher encryption/decryption algorithm, M is the secret master key, and Θ is the "xor" operator. At step 515, the first of three phases of the three-phase encryption is performed.
N intermediate blocks A (AO-AN-I) are generated from the N blocks of the plain-text envelope and the first key using an encryption function according to the formulas:
Enc() may an encryption function of a block cipher encryption/decryption algorithm. At step 520, the second of three phases of the three-phase encryption is performed. N intermediate blocks B (BO-BN- are generated from the N intermediate A blocks and the second key K
2 using an encryption function according to the formulas: _ f En
Cj,
2(4) i = N-ϊ
B' [4
+I ΘEn
Cj,
2 (4) t = N-2,N-3,...,0-
At step 525, the third and final phase of the three-phase encryption is performed. N cipher text blocks C (CO-CN-I) are generated from the N intermediate blocks B and the third key K3 using an, encryption function according to the formulas: f EncK (Bl) i = 0 C = \ 3 ' {R,_1 ΘEncJf3(R-) t = l,2,...,N-l
A protected-text envelope is then constructed. In one embodiment, the protected- text envelope contains: the length of the envelope, the random number R, and the cipher text blocks C. Processing ends at 599. Figure 6 is a flowchart illustrating a method for receiving encrypted text, decrypting the encrypted text, and extracting a message from the decrypted text.
Processing begins at 600 whereupon, at step 610, a protected-text envelope is received through an unsecured medium such as the Internet. In one embodiment, the protected- text envelope contains: the length of the envelope, a random number R, and N cipher text blocks C. The cipher text blocks typically contain a message in encrypted form. At step 615, the length of the envelope, the random number R, and the cipher text blocks C are extracted from the protected-text envelope. At step 620, the cipher text blocks are decrypted to recover N blocks of a plain-text envelope. More details on the decryption are provided in the flowchart of Figure 7. In one embodiment, the plain-text envelope contains: a fixed-size random number R, a number representing the length of a pad field contained in the envelope, a message, the pad field, and an additional copy of random number R. The plain-text message is then extracted at step 625. At step 630, the
integrity of the message is determined. More details on the integrity determination are provided in the flowchart of Figure 8. Processing ends at 699. Figure 7 is a flowchart illustrating a method for decrypting an encrypted message using a three-phase process. Processing begins at 700 whereupon at 710, three keys are generated from the extracted random number R and the secret master key M using the decryption function of a cipher algorithm. In one embodiment, the three keys may be generated according to the formula: K, = OecM(R@i), i = 1,2,3.
Dec() may be the decryption function of any block cipher encryption/decryption algorithm, M is the secret master key, and θ is the "xor" operator. At step 715, the first of three phases of the three-phase decryption is performed. The N intermediate blocks B (BO-BN-I) are regenerated from the N cipher text blocks C extracted from the received protected-text envelope and the first key Ki using a decryption function according to the formulas:
_J Decff3(C,) t' = 0 ^ " [Dec^ς ©£,_,) i = \,2,...,N-Y
At step 720, the second of three phases of the three-phase decryption is performed. The N intermediate blocks A (AO-AN- are regenerated from the N intermediate B blocks and the second key K2 using a decryption function according to the formulas: J Dec^ tø) i = N-l ' ' Dec^φ ® 4+1) i = M-2,N-3,...,0 '
At step 725, the third and final phase of the three-phase decryption is performed. The N blocks of the plain-text envelope are (PQ-PN-I) are regenerated from the N intermediate A blocks and the third key K3 using an encryption function according to the formula:
Figure 8 is a flowchart illustrating a method for verifying the integrity of a decrypted message. At step 810, a second copy of the random number R is extracted from the decrypted plain-text envelope P. A first copy of the random number R is extracted from the protected-text envelope C. A determination is then made as to whether the random number R extracted from the plain-text envelope is equal to the random number R extracted from the protected-text envelope R at decision 815. If the two numbers are equal, decision 815 branches to "yes" branch 820 whereupon, at step 830, it is determined that the decrypted message can be trusted. In other words, it is determined that it is highly unlikely that anyone has tampered with the message while the message was being transmitted though the unsecured medium. If the two numbers are not equal, decision 815 branches to "no" branch 825 whereupon, at step 835, it is determined that the decrypted message cannot be trusted. In other words, it is determined that it is highly likely that someone has tampered with the message while the message was being transmitted though the unsecured medium. Processing ends at 899. Figure 9 illustrates information handling system 901 which is a simplified example of a computer system capable of performing the computing operations described herein. Computer system 901 includes processor 900 which is coupled to host bus 902. A level two (L2) cache memory 904 is also coupled to host bus 902. Host-to-PCI bridge 906 is coupled to main memory 908, includes cache memory and main memory control functions, and provides bus control to handle transfers among PCI bus 910, processor
900, L2 cache 904, main memory 908, and host bus 902. Main memory 908 is coupled to Host-to-PCI bridge 906 as well as host bus 902. Devices used solely by host processors) 900, such as LAN card 930, are coupled to PCI bus 910. Service Processor Interface and ISA Access Pass-through 912 provides an interface between PCI bus 910 and PCI bus 914. In this manner, PCI bus 914 is insulated from PCI bus 910. Devices, such as flash memory IS, are coupled to PCI bus 914. In one implementation, flash memory 918 includes BIOS code that incorporates the necessary processor executable code for a variety of low-level system functions and system boot functions. PCI bus 914 provides an interface for a variety of devices that are shared by host processors) 900 and Service Processor 916 including, for example, flash memory 918.
PCI-to-ISA bridge 935 provides bus control to handle transfers between PCI bus 914 and
ISA bus 940, universal serial bus (USB) functionality 945, power management functionality 955, and can include other functional elements not shown, such as a realtime clock (RTC), DMA control, interrupt support, and system management bus support. Nonvolatile RAM 920 is attached to ISA Bus 940. Service Processor 916 includes JTAG and I2C busses 922 for communication with processor(s) 900 during initialization steps.
JTAG/T2C busses 922 are also coupled to L2 cache 904, Host-to-PCI bridge 906, and main memory 908 providing a communications path between the processor, the Service Processor, the L2 cache, the Host-to-PCI bridge, and the main memory. Service Processor 916 also has access to system power resources for powering down information handling device 901. Peripheral devices and input/output (I/O) devices can be attached to various interfaces (e.g., parallel interface 962, serial interface 964, keyboard interface 968, and mouse interface 970 coupled to ISA bus 940. Alternatively, many I/O devices can be accommodated by a super I/O controller (not shown) attached to ISA bus 940. In order to attach computer system 901 to another computer system to copy files over a network, LAN card 930 is coupled to PCI bus 910. Similarly, to connect computer system 901 to an ISP to connect to the Internet using a telephone line connection, modem 975 is connected to serial port 964 and PCI-to-ISA Bridge 935. While the computer system described in Figure 9 is capable of executing the processes described herein, this computer system is simply one example of a computer system. Those skilled in the art will appreciate that many other computer system designs are capable of performing the processes described herein. One of the preferred implementations of the invention is an application, namely, a set of instructions (program code) in a code module which may, for example, be resident in the random access memory of the computer. Until required by the computer, the set of instructions may be stored in another computer memory, for example, on a hard disk drive, or in removable storage such as an optical disk (for eventual use in a CD ROM) or floppy disk (for eventual use in a floppy disk drive), or downloaded via the Internet or other computer network. Thus, the present invention may be implemented as a computer program product for use in a computer. In addition, although the various methods
described are conveniently implemented in a general purpose computer selectively activated or reconfigured by software, one of ordinary skill in the art would also recognize that such methods may be carried out in hardware, in firmware, or in more specialized apparatus constructed to perform the required method steps. While particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that, based upon the teachings herein, changes and modifications may be made without departing from this invention and its broader aspects and, therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this invention. Furthermore, it is to be understood that the invention is solely defined by the appended claims. It will be understood by those with skill in the art that if a specific number of an introduced claim element is intended, such intent will be explicitly recited in the claim, and in the absence of such recitation no such limitation is present. For a non-limiting example, as an aid to understanding, the following appended claims contain usage of the introductory phrases "at least one" and "one or more" to introduce claim elements. However, the use of such phrases should not be construed to imply that the introduction of a claim element by the indefinite articles "a" or "an" limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases "one or more" or "at least one" and indefinite articles such as "a" or "an"; the same holds true for the use in the claims of definite articles.
lEsiassaoiaS AppieaFaiiiy This invention is used in systems requiring transmitting and receiving secure messages which is accomplished by way of encrypting, decrypting and verifying the integrity of the messages.