U.S. patent application number 10/464891 was filed with the patent office on 2005-01-13 for system and method for encrypting and verifying messages using three-phase encryption.
This patent application is currently assigned to International Business Machines Corporation. Invention is credited to Brokenshire, Daniel Alan, Craft, David, Hofstee, Harm Peter, Peyravian, Mohammad.
Application Number | 20050008162 10/464891 |
Document ID | / |
Family ID | 33563713 |
Filed Date | 2005-01-13 |
United States Patent
Application |
20050008162 |
Kind Code |
A1 |
Brokenshire, Daniel Alan ;
et al. |
January 13, 2005 |
System and method for encrypting and verifying messages using
three-phase encryption
Abstract
A method and system for encrypting and verifying the integrity
of a message using a three-phase encryption process is provided. A
source having a secret master key that is shared with a target
receives the message and generates a random number. The source then
generates: a first set of intermediate values from the message and
the random number; a second set of intermediate values from the
first set of values; and a cipher text from the second set of
values. At the three phases, the values are generated using the
encryption function of a block cipher encryption/decryption
algorithm. The random number and the cipher text are transmitted to
the target, which decrypts the cipher text by reversing the
encryption process. The target verifies the integrity of the
message by comparing the received random number with the random
number extracted from the decrypted cipher text.
Inventors: |
Brokenshire, Daniel Alan;
(Round Rock, TX) ; Craft, David; (Austin, TX)
; Hofstee, Harm Peter; (Austin, TX) ; Peyravian,
Mohammad; (Morrisville, NC) |
Correspondence
Address: |
Joseph T. Van Leeuwen
P.O. Box 81641
Austin
TX
78708-1641
US
|
Assignee: |
International Business Machines
Corporation
Armonk
NY
|
Family ID: |
33563713 |
Appl. No.: |
10/464891 |
Filed: |
June 19, 2003 |
Current U.S.
Class: |
380/277 |
Current CPC
Class: |
H04L 2209/12 20130101;
H04L 9/0618 20130101; H04L 2209/08 20130101 |
Class at
Publication: |
380/277 |
International
Class: |
H04L 009/00 |
Claims
1. A method for encrypting a message, the method comprising:
receiving a plain-text envelope that includes a first block, a last
block and a plurality of middle blocks between the first and last
blocks, wherein each of the middle blocks includes a first
neighboring block and a second neighboring block; generating a
first key, a second key, and a third key; for each middle block:
generating a first intermediate value using the middle block, the
first key, and a first encrypted value based upon the middle
block's first neighboring block; generating a second intermediate
value using the first intermediate value, the second key, and a
second encrypted value based upon the middle block's second
neighboring block; and generating a cipher-text block using the
second intermediate value, the third key, and a third encrypted
value based upon the middle block's first neighboring block.
2. The method of claim 1, further comprising receiving a secret
master key.
3. The method of claim 2, further comprising generating a first
random number and a second random number.
4. The method of claim 3, further comprising generating a pad field
such that a length of a plain-text message, the first random
number, the second random number, the pad field, and a number
indicating a length of the pad field is an integer multiple of a
block size of a block cipher algorithm.
5. The method of claim 4, further comprising constructing the
plain-text envelope, wherein the plain-text envelope includes 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.
6. (Cancelled)
7. The method of claim 3, further comprising constructing a
protected-text envelope comprising: a number indicating a length of
the protected-text envelope; the first random number; a first
cipher-text block created from the first block; a last cipher-text
block created from the last block; and the cipher-text blocks
generated from each of the middle blocks.
8. The method of claim 7, further comprising transmitting the
protected-text envelope to a target over an unsecured medium.
9. The method of claim 3, wherein the generating the first key, the
second key, and the third key comprises generating the first key,
the second key, and the third key from the secret master key and
the first random number.
10. The method of claim 3, wherein the generating the first key,
the second key, and the third key comprises generating the first
key, the second key, and the third key from the secret master key
and the first random number using a decryption function of a block
cipher algorithm.
11. The method of claim 1, wherein the generating the first
intermediate value, generating the second intermediate value, and
generating the cipher-text block comprises using an encryption
function of a block cipher algorithm.
12. A method for decrypting a cipher text message, the method
comprising: receiving a cipher-text envelope that includes a first
block, a last block, and a plurality of middle blocks between the
first and last blocks, wherein each of the middle blocks includes a
first neighboring block and a second neighboring block; generating
a first key, a second key, and a third key; generating a plain-text
envelope, wherein generating the plain-text envelope further
includes performing the following steps for each middle block:
generating a first intermediate value using the middle block, the
first key, and a first decrypted value based upon the middle
block's first neighboring block; generating a second intermediate
value using the first intermediate value, the second key, and a
second decrypted value based upon the middle block's second
neighboring block; and generating a plain-text block using the
second intermediate value, the third key, and a third encrypted
value based upon the middle block's first neighboring block.
13. The method of claim 12, wherein the cipher-text envelope
further includes a first control number; and wherein the plain-text
envelope includes a plain-text message and a second control
number.
14. The method of claim 13, further comprising setting an integrity
of the received cipher-text envelope to: a "Can be Trusted" setting
if the first control number is equal to the second control number;
and a "Cannot be Trusted" setting if the first control number is
not equal to the second control number.
15. The method of claim 13, further comprising receiving a secret
master key.
16. The method of claim 15, wherein the generating the first key,
the second key, and the third key comprises generating the first
key, the second key, and the third key from the secret master key
and the first control number.
17. The method of claim 15, wherein the generating the first key,
the second key, and the third key comprises generating the first
key, the second key, and the third key from the secret master key
and the first control number using a decryption function of a block
cipher algorithm.
18. The method of claim 12, wherein the generating the first
intermediate value, generating the second intermediate value, and
generating the plain-text block comprises using a decryption
function of a block cipher algorithm.
19. The method of claim 12, further comprising receiving the
cipher-text envelope from a source over an unsecured medium.
20. An information handling system comprising: one or more
processors; a memory accessible from the processors; a receiver
accessible from the processors for receiving data; a message
encryption tool that encrypts messages, the message encryption tool
enabled to: receive a plain-text envelope at the receiver, wherein
the plain-text envelope includes a first block, a last block and a
plurality of middle blocks between the first and last blocks,
wherein each of the middle blocks includes a first neighboring
block and a second neighboring block; generate a first key, a
second key, and a third key; for each middle block: generate a
first intermediate value using the middle block, the first key, and
a first encrypted value based upon the middle block's first
neighboring block; generate a second intermediate value using the
first intermediate value, the second key, and a second encrypted
value based upon the middle block's second neighboring block; and
generate a cipher-text block using the second intermediate value,
the third key, and a third encrypted value based upon the middle
block's first neighboring block.
21. The information handling system of claim 20, wherein the
message encryption tool is further enabled to receive a secret
master key.
22. The information handling system of claim 21, wherein the
message encryption tool is further enabled to generate a first
random number and a second random number.
23. The information handling system of claim 22, wherein the
message encryption tool is further enabled to generate a pad field
such that a length of: the plain-text message, the first random
number, the second random number, the pad field, and a number
indicating a length of the pad field is an integer multiple of a
block size of a block cipher algorithm.
24. The information handling system of claim 23, wherein the
message encryption tool is further enabled to construct the
plain-text envelope, and wherein the plain-text envelope includes
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.
25. (Cancelled)
26. The information handling system of claim 22, wherein the
message encryption tool is further enabled to construct a
protected-text envelope comprising: a number indicating a length of
the protected-text envelope, the first random number, a first
cipher-text block created from the first block, a last cipher-text
block created from the last block and the cipher-text blocks
generated from each of the middle blocks.
27. The information handling system of claim 26, wherein the
message encryption tool is further enabled to transmit the
protected-text envelope to a target over an unsecured medium.
28. The information handling system of claim 22, wherein, in order
to generate the first key, the second key, and the third key, the
message encryption tool is further enabled to generate the first
key, the second key, and the third key from the secret master key
and the first random number.
29. The information handling system of claim 22, wherein, in order
to generate the first key, the second key, and the third key, the
message encryption tool is further enabled to generate the first
key, the second key, and the third key from the secret master key
and the first random number using a decryption function of a block
cipher algorithm.
30. The information handling system of claim 20, wherein, in order
to generate the first intermediate value, the second intermediate
value, and the cipher-text block, the message encryption tool is
further enabled to use an encryption function of a block cipher
algorithm.
31. An information handling system comprising: one or more
processors; a memory accessible from the processors; a receiver
accessible from the processors for receiving data; a message
decryption tool that decrypts messages, the message decryption tool
enabled to: receive a cipher-text envelope at the receiver, wherein
the cipher-text envelope includes a first block, a last block, and
a plurality of middle blocks between the first and last blocks,
wherein each of the middle blocks includes a first neighboring
block and a second neighboring block; generate a first key, a
second key, and a third key; generate a plain-text envelope by
doing the following for each middle block: generate a first
intermediate value using the middle block, the first key, and a
first decrypted value based upon the middle block's first
neighboring block; generate a second intermediate value using the
first intermediate value, the second key, and a second decrypted
value based upon the middle block's second neighboring block; and
generate a plain-text block using the second intermediate value,
the third key, and a third encrypted value based upon the middle
block's first neighboring block.
32. The information handling system of claim 31: wherein, in order
to receive the cipher text, the message decryption tool is further
enabled to receive the cipher-text envelope further includes a
first control number; and wherein the plain-text envelope includes
a plain-text message and a second control number.
33. The information handling system of claim 32, wherein the
message decryption tool is further enabled to set an integrity of
the received cipher-text envelope to: a "Can be Trusted" setting if
the first control number is equal to the second control number; and
a "Cannot be Trusted" setting if the first control number is not
equal to the second control number.
34. The information handling system of claim 32, wherein the
message decryption tool is further enabled to receive a secret
master key.
35. The information handling system of claim 34, wherein, in order
to generate the first key, the second key, and the third key, the
message decryption tool is further enabled to generate the first
key, the second key, and the third key from the secret master key
and the first control number.
36. The information handling system of claim 34, wherein, in order
to generate the first key, the second key, and the third key, the
message decryption tool is further enabled to generate the first
key, the second key, and the third key from the secret master key
and the first control number using a decryption function of a block
cipher algorithm.
37. The information handling system of claim 31, wherein, in order
to generate the first intermediate value, the second intermediate
value, and the plain-text block, the message decryption tool is
further enabled to use a decryption function of a block cipher
algorithm.
38. The information handling system of claim 31, wherein the
message decryption tool is further enabled to receive the
cipher-text envelope from a source over an unsecured medium.
39. A computer program product stored on a computer operable media
for encrypting a message, the computer program product comprising:
means for receiving a plain-text envelope that includes a first
block, a last block and a plurality of middle blocks between the
first and last blocks, wherein each of the middle blocks includes a
first neighboring block and a second neighboring block; means for
generating a first key, a second key, and a third key; for each
middle block: means for generating a first intermediate value using
the middle block, the first key, and a first encrypted value based
upon the middle block's first neighboring block; means for
generating a second intermediate value using the first intermediate
value, the second key, and a second encrypted value based upon the
middle block's second neighboring block; and means for generating a
cipher-text block using the second intermediate value, the third
key, and a third encrypted value based upon the middle block's
first neighboring block.
40. The computer program product of claim 39, further comprising
means for receiving a secret master key.
41. The computer program product of claim 40, further comprising
means for generating a first random number and a second random
number.
42. The computer program product of claim 41, further comprising
means for generating a pad field such that a length of a plain-text
message, the first random number, the second random number, the pad
field, and a number indicating a length of the pad field is an
integer multiple of a block size of a block cipher algorithm.
43. The computer program product of claim 42, further comprising
means for constructing the plain-text envelope, wherein the
plain-text envelope includes 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.
44. (Cancelled)
45. The computer program product of claim 41, further comprising
means for constructing a protected-text envelope, the
protected-text envelope comprising: a number indicating a length of
the protected-text envelope, the first random number, a first
cipher-text block created from the first block, a last cipher-text
block created from the last block, and the cipher-text blocks
generated from each of the middle blocks.
46. The computer program product of claim 45, further comprising
means for transmitting the protected-text envelope to a target over
an unsecured medium.
47. The computer program product of claim 41, wherein the means for
generating the first key, the second key, and the third key
comprises means for generating the first key, the second key, and
the third key from the secret master key and the first random
number.
48. The computer program product of claim 41, wherein the means for
generating the first key, the second key, and the third key
comprises means for generating the first key, the second key, and
the third key from the secret master key and the first random
number using a decryption function of a block cipher algorithm.
49. The computer program product of claim 39, wherein the means for
generating the first intermediate value, the second intermediate
value, and the cipher-text block comprises means for using an
encryption function of a block cipher algorithm.
50. A computer program product for decrypting a cipher text
message, the computer program product comprising: means for
receiving a cipher-text envelope that includes a first block, a
last block, and a plurality of middle blocks between the first and
last blocks, wherein each of the middle blocks includes a first
neighboring block and a second neighboring block; means for
generating a first key, a second key, and a third key; means for
generating a plain-text envelope, wherein the means for generating
the plain-text envelope further includes the following for each
middle block: means for generating a first intermediate value using
the middle block, the first key, and a first decrypted value based
upon the middle block's first neighboring block: means for
generating a second intermediate value using the first intermediate
value, the second key, and a second decrypted value based upon the
middle block's second neighboring block; and means for generating a
plain-text block using the second intermediate value, the third
key, and a third encrypted value based upon the middle block's
first neighboring block.
51. The computer program product of claim 50, wherein the
cipher-text envelope further includes a first control number; and
wherein the plain-text envelope includes a plain-text message and a
second control number.
52. The computer program product of claim 51, further comprising
means for setting an integrity of the received cipher-text envelope
to: a "Can be Trusted" setting if the first control number is equal
to the second control number; and a "Cannot be Trusted" setting if
the first control number is not equal to the second control
number.
53. The computer program product of claim 51, further comprising
means for receiving a secret master key.
54. The computer program product of claim 53, wherein the means for
generating the first key, the second key, and the third key
comprises means for generating the first key, the second key, and
the third key from the secret master key and the first control
number.
55. The computer program product of claim 53, wherein the means for
generating the first key, the second key, and the third key
comprises means for generating the first key, the second key, and
the third key from the secret master key and the first control
number using a decryption function of a block cipher algorithm.
56. The computer program product of claim 50, wherein the means for
generating the first intermediate value, the second intermediate
value, and the plain-text block comprises using a decryption
function of a block cipher algorithm.
57. The computer program product of claim 50, further comprising
means for receiving the cipher-text envelope from a source over an
unsecured medium.
Description
BACKGROUND OF THE INVENTION
[0001] 1. Technical Field
[0002] 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.
[0003] 2. Description of the Related Art
[0004] 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.
[0005] 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.
[0006] 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.
[0007] 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
[0008] It has been discovered that the aforementioned challenges
can be addressed by a method and a system for encrypting,
decrypting, and verifying the 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 of
"breaking" 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.
[0009] 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.
[0010] 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.
[0011] 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.
[0012] 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.
[0013] 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.
[0014] 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.
[0015] 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
[0016] 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.
[0017] FIG. 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;
[0018] FIG. 2 is a block diagram illustrating a system for
encrypting a message using a three-phase encryption process;
[0019] FIG. 3 is a block diagram illustrating a system for
decrypting a message using a three-phase decryption process;
[0020] FIG. 4 is a flowchart illustrating a method for receiving,
encrypting, and transmitting a message;
[0021] FIG. 5 is a flowchart illustrating a method for encrypting a
message using a three-phase encryption process;
[0022] FIG. 6 is a flowchart illustrating a method for receiving
encrypted text, decrypting the encrypted text, and extracting a
message from the decrypted text;
[0023] FIG. 7 is a flowchart illustrating a method for decrypting
an encrypted message using a three-phase decryption process;
[0024] FIG. 8 is a flowchart illustrating a method for verifying
the integrity of a received and decrypted message; and
[0025] FIG. 9 illustrates an information handling system that is a
simplified example of a computer system capable of performing the
operations described herein.
DETAILED DESCRIPTION
[0026] 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.
[0027] FIG. 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 P.sub.0-P.sub.N-1 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 C.sub.0-C.sub.N-1 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.
[0028] 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.
[0029] FIG. 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
P.sub.0-P.sub.N-1 of the plain-text envelope P and generate the N
blocks C.sub.0-C.sub.N-1 of cipher text C. Encryption device 210
includes: N-1 exclusive or modules 220, . . . , 222, and 224; N-1
exclusive or modules 242, 244, . . . , 246; N-1 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.sub.K.sub..sub.i(In).
[0030] The function Enc( ) may be the encryption function of any
block cipher encryption/decryption algorithm and K.sub.i is one of
three keys K.sub.1, K.sub.2, and K.sub.3 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.sub.i=Dcc.sub.M(R.sym.i), i=1,2,3.
[0031] Dec( ) may be the decryption function of any block cipher
encryption/decryption algorithm, M is the secret master key, and
.sym. is the "xor" operator.
[0032] Initially, block P.sub.0 is input into encryption module 212
to generate intermediate block A.sub.0. Block A.sub.0 and block
P.sub.1 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 A.sub.1. The process repeats until
block A.sub.N-2 and block P.sub.N-1 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 A.sub.N-1
to complete the first phase of the encryption process.
[0033] The second phase of the encryption process begins with
intermediate block A.sub.N-1 being input into encryption module 232
to generate intermediate block B.sub.N-1. Block A.sub.N-2 is then
input into encryption module 230 and the output from encryption
module 230 and block A.sub.N-1 are input into exclusive or module
246 to generate intermediate block B.sub.N-2. This process repeats
until block A.sub.1 is input into encryption module 226 and the
output from encryption module 226 and block A.sub.0 are input into
exclusive or module 242 to generate intermediate block B.sub.0 to
complete the second phase of the encryption process.
[0034] The third phase of the encryption process begins with
intermediate block B.sub.0 being input into encryption module 248
to generate cipher text block C.sub.0. Block B.sub.1 is then input
into encryption module 250 and the output from encryption module
250 and block B.sub.0 are input into exclusive or module 256 to
generate cipher text block C.sub.1. This process repeats until
block B.sub.N-1 is input into encryption module 254 and the output
from encryption module 254 and block B.sub.N-2 are input into
exclusive or module 260 to generate cipher text block C.sub.N-1 to
complete the third phase of the encryption process.
[0035] FIG. 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.sub.0-C.sub.N-1 of cipher text C and generate the N blocks
P.sub.0-P.sub.N-1 of the plain-text envelope P. Decryption device
310 includes: N-1 exclusive or modules 320, . . . , 322, and 324;
N-1 exclusive or modules 334, 236, . . . , and 338; N-1 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.sub.K.sub..sub.i(In).
[0036] The function Enc( ) may be the decryption function of any
block cipher algorithm and K.sub.i is one of three keys K.sub.1,
K.sub.2, and K.sub.3 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:
K.sub.i=Dcc.sub.M(R.sym.i), i=1,2,3.
[0037] Dec( ) may be the decryption function of any block cipher
encryption/decryption algorithm, M is the secret master key, and
.sym. is the "xor" operator.
[0038] Initially, block C.sub.0 is input into decryption module 312
to generate intermediate block B.sub.0. Block B.sub.0 and block
C.sub.1 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 B.sub.1. The process repeats until
block C.sub.N-2 and block C.sub.N-1 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 B.sub.N-1
to complete the first phase of the decryption process.
[0039] The second phase of the decryption process begins with
intermediate block B.sub.N-1 being input into decryption module 332
to generate intermediate block A.sub.N-1. Block B.sub.N-2 and block
A.sub.N-1 are input into exclusive or module 338 and the output
from module 338 is input into decryption module 330 to generate
intermediate block A.sub.N-2. This process repeats until block
A.sub.1 and intermediate block B.sub.0 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 A.sub.0
to complete the second phase of the decryption process.
[0040] The third phase of the decryption process begins with
intermediate block A.sub.0 being input into decryption module 340
to generate plain text block P.sub.0. Block A.sub.1 is then input
into decryption module 342 and the output from decryption module
342 and block A.sub.0 are input into exclusive or module 348 to
generate plain text block P.sub.1. This process repeats until block
A.sub.N-1 is input into decryption module 346 and the output from
decryption module 346 and block A.sub.N-2 are input into exclusive
or module 352 to generate plain text block P.sub.N-1 to complete
the third phase of the decryption process.
[0041] FIG. 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 (S & R) are generated.
[0042] A determination is then made as to whether a pad field is
required to construct a plain-text 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.
[0043] 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 P.sub.0-P.sub.N-1.
[0044] 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 FIG. 5. At step 460, the protected-text envelope is
transmitted to the target over an unsecured medium such as the
Internet.
[0045] FIG. 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:
K.sub.i=Dec.sub.M(R.sym.i), i=1,2,3.
[0046] Dec( ) may be the decryption function of any block cipher
encryption/decryption algorithm, M is the secret master key, and
.sym. is the "xor" operator.
[0047] At step 515, the first of three phases of the three-phase
encryption is performed. N intermediate blocks A
(A.sub.0-A.sub.N-1) are generated from the N blocks of the
plain-text envelope and the first key using an encryption function
according to the formulas: 1 A i = { Enc K 1 ( P i ) i = 0 Enc K 1
( P i A i - 1 ) i = 1 , 2 , , N - 1 .
[0048] Enc( ) may an encryption function of a block cipher
encryption/decryption algorithm.
[0049] At step 520, the second of three phases of the three-phase
encryption is performed. N intermediate blocks B
(B.sub.0-B.sub.N-1) are generated from the N intermediate A blocks
and the second key K.sub.2 using an encryption function according
to the formulas: 2 B i = { Enc K 2 ( A i ) i = N - 1 A i + 1 Enc K
2 ( A i ) i = N - 2 , N - 3 , , 0 .
[0050] At step 525, the third and final phase of the three-phase
encryption is performed. N cipher text blocks C (C.sub.0-C.sub.N-1)
are generated from the N intermediate blocks B and the third key
K.sub.3 using an encryption function according to the formulas: 3 C
i = { Enc K 3 ( B i ) i = 0 B i - 1 Enc K 3 ( B i ) i = 1 , 2 , , N
- 1 .
[0051] 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.
[0052] FIG. 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 FIG. 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 FIG. 8. Processing ends at 699.
[0053] FIG. 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.sub.i=Dec.sub.M(R.sym.i), i=1,2,3.
[0054] Dec( ) may be the decryption function of any block cipher
encryption/decryption algorithm, M is the secret master key, and
.sym. is the "xor" operator.
[0055] At step 715, the first of three phases of the three-phase
decryption is performed. The N intermediate blocks B
(B.sub.0-B.sub.N-1) are regenerated from the N cipher text blocks C
extracted from the received protected-text envelope and the first
key K.sub.1 using a decryption function according to the formulas:
4 B i = { Dec K 3 ( C i ) i = 0 Dec K 3 ( C i B i - 1 ) i = 1 , 2 ,
, N - 1 .
[0056] At step 720, the second of three phases of the three-phase
decryption is performed. The N intermediate blocks A
(A.sub.0-A.sub.N-1) are regenerated from the N intermediate B
blocks and the second key K.sub.2 using a decryption function
according to the formulas: 5 A i = { Dec K 2 ( B i ) i = N - 1 Dec
K 2 ( B i A i + 1 ) i = N - 2 , N - 3 , , 0 .
[0057] At step 725, the third and final phase of the three-phase
decryption is performed. The N blocks of the plain-text envelope
are (P.sub.0-P.sub.N-1) are regenerated from the N intermediate A
blocks and the third key K.sub.3 using an encryption function
according to the formula: 6 P i = { Dec K 1 ( A i ) i = 0 A i - 1
Dec K 1 ( A i ) i = 1 , 2 , , N - 1 .
[0058] FIG. 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.
[0059] FIG. 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 processor(s) 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 918, 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.
[0060] PCI bus 914 provides an interface for a variety of devices
that are shared by host processor(s) 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 real-time 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/I2C 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.
[0061] 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.
[0062] 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.
[0063] While the computer system described in FIG. 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.
[0064] 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.
[0065] 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.
* * * * *