Source: http://www.google.com/patents/US6802013?ie=ISO-8859-1&dq=7,103,380
Timestamp: 2014-07-30 07:56:38
Document Index: 540845266

Matched Legal Cases: ['art 352', 'art 354', 'art 356', 'art 358', 'art 370', 'art 372', 'art 374', 'art 376']

Patent US6802013 - Cryptographic access and labeling system - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign in<nobr>Advanced Patent Search</nobr>PatentsAn integrated, modular computer program system provides for the encryption and decryption of files utilizing conventional encryption algorithms and a relational key generated by the system. The computer program system also generates a series of labels that are encrypted and appended as a trailer to the...http://www.google.com/patents/US6802013?utm_source=gb-gplus-sharePatent US6802013 - Cryptographic access and labeling systemAdvanced Patent SearchPublication numberUS6802013 B1Publication typeGrantApplication numberUS 09/404,794Publication dateOct 5, 2004Filing dateSep 24, 1999Priority dateJun 1, 1995Fee statusLapsedAlso published asCA2229026A1, EP0870376A1, EP0870376A4, US6011847, WO1996038945A1Publication number09404794, 404794, US 6802013 B1, US 6802013B1, US-B1-6802013, US6802013 B1, US6802013B1InventorsRoy D. Follendore, IIIOriginal AssigneeFollendore, Iii Roy D.Export CitationBiBTeX, EndNote, RefManPatent Citations (8), Referenced by (8), Classifications (8), Legal Events (6) External Links: USPTO, USPTO Assignment, EspacenetCryptographic access and labeling systemUS 6802013 B1Abstract An integrated, modular computer program system provides for the encryption and decryption of files utilizing conventional encryption algorithms and a relational key generated by the system. The computer program system also generates a series of labels that are encrypted and appended as a trailer to the encrypted message. The encrypted labels provide a history behind the particular encryption and they can be individually selected, separated, and decrypted from the total file. A rule based expert system is utilized as an intelligent label selection system to minimize message sensitivity. An access control module permits a user with a preassigned passphrase to have access to the encryption or decryption portion of the program by comparing a generated vector or key with a partially decrypted version of a second vector or key stored on a portable storage medium such as a floppy disk. If successful, the access control module creates a main key that is then used throughout the remainder of the program to encrypt or decrypt the labels. Part of the encryption or decryption process utilizes an internal, reproducible, but not reversible scrambling subroutine in which the bytes of an initializing vector are successively Exclusive ORed with one another and then the result concatenated to the initializing vector until all of the bytes have been so treated, and then the process repeated an integral number of times depending upon an input variable called a spinup number.
15. A cryptographic system as claimed in claim 14 wherein said computer program further comprises an instruction set for rekeying at least one variable in said program, said rekeyed variable being used to encrypt at least one of said labels and said data key.
16. A cryptographic system as claimed in claim 14 wherein said message trailer is comprised of a plurality of concatenated, identifiable and addressable label portions.
17. A cryptographic system as claimed in claim 16 and further including a data base containing a plurality of label strings and a plurality of corresponding weighting factors, each said label portion being an encrypted said label string;
and said instruction set that creates the message trailer including a subset of instructions to permit a user of said cryptographic system to access said data base and to select a label string depending upon the corresponding weighting factors. 18. A cryptographic system as claimed in claim 17 and further including an expert system means for evaluating said weighting factors of the user selected label strings to determine if the combination of selected label strings is a permitted combination.
19. A cryptographic system as claimed in claim 12 wherein said communicating element is a computer and said program is a computer program that can be run by said computer.
20. A cryptographic system as claimed in claim 12 wherein said program instruction set that generates said global vector includes a subset of instructions that provide said global vector only if access is granted to the user.
21. A cryptographic system as claimed in claim 12 wherein said instruction set which manipulates said data key and said passphrase to generate said global vector includes a randomizer subset of instructions that provide an initializing vector, that has a plurality of bits, in a shift register means and provide a spinup number, and which enter digital data to be manipulated into one end of the shift register means, take two of said bits in said shift register and exclusive OR them together, and then load a product of the exclusive OR'd product in said one shift register end shifting all of the numbers in the shift register, and then repeating the loading of said one shift register end a predetermined number of times equal to a factor of said spinup number.
22. A cryptographic method of manipulating a message of digital information, said message having a portion that contains two or more individually addressable labels, each said label containing rational information relevant to the message, said method comprising the steps of:
retrieving a data key from a data key storage means; receiving an input passphrase from a user; manipulating said data key and said input passphrase to generate a global vector; utilizing said data key and said input passphrase to determine if a user should be granted access to a part of a computer program; utilizing said global vector for selectively encrypting or decrypting two or more of said labels; utilizing two of said labels and said global vector to generate a message key; and utilizing said message key to encrypt/decrypt said message. 23. A cryptographic system comprising:
means for retrievably storing a data key; a label storing means for individually, retrievably storing a plurality of labels, each label containing rational information relevant to a message; an input means for providing an input passphrase from a user; a communicating means which manipulates, storing and retrieving the message; means responsive to said data key and said input passphrase for determining if a user should be granted access to said system; means which manipulates said data key and said input passphrase to generate a global vector; means for using said global vector for encrypting each said label and for attaching said labels to a portion of the message; means for using said global vector for individually retrieving and decrypting each said label; means for using a selected number of labels and said global vector for generating a message key; and means for using said message key for selectively encrypting or decrypting a message. 24. A cryptographic system as claimed in claim 12,
wherein said instruction set which manipulates said data key and said passphrase to generate said global vector includes subsets of instructions that result in the independent initialization and validation of said input passphrase, said subsets of instructions including a first subset of instruction that receives and manipulates said input passphrase with at least a first internal vector to produce a manipulated passphrase, and a second subset of instructions that combines said manipulated passphrase with a first data key to produce a resulting first product vector; wherein said instruction set which manipulates said data key and said passphrase to generate said global vector includes a subset of instructions that result in the independent generation of a second product vector, said subset of instructions including a third subset of instructions that independently receive and manipulate a second data key with at least a second internal vector that is different from said first internal vector to produce a second product vector with the result that said second product vector has been independently generated; and wherein said instruction set which manipulates said data key and said passphrase to generate said global vector includes a subset of instructions that result in an interdependent verification and validation of said global vector, said subset of instructions including a fourth subset of instructions that compare said first and second product vector and upon a favorable comparison provide said global vector with a result that said global vector has been validated by an interdependent verification. 25. A cryptographic system as claimed in claim 24,
wherein said instruction set which manipulates said data key and said passphrase to generate said global vector includes a subsets of instructions that utilize a stored initialization data vector and a further subset of instructions that utilize a stored initialization verification vector. 26. A cryptographic system as claimed in claim 25,
wherein said instruction set which manipulates said data key and said passphrase to generate said global vector includes subsets of instructions to generate said data vector and verification vector by using different initialization vectors. 27. A cryptographic system as claimed in claim 12 wherein said instruction set which directs said communicating element to utilize said global vector for encrypting each label utilizes a subset of instructions which select and permutate a rational label bv utilizing independently derived and isolated input vectors.
28. A cryptographic system as claimed in claim 12 wherein said instruction set which directs said communicating element to utilize at least two of said plurality of labels and said global vector to generate a message key utilizes a subset of instructions which select and permutate a rational label bv utilizing independently derived and isolated input vectors.
This application is a continuing application of U.S. patent application Ser. No. 08/457,489, filed Jun. 1, 1995, the entire contents of which are hereby incorporated in their entirety.
FIELD OF THE INVENTION This invention relates in general to a cryptographic control system. Many encryption systems use a publicly known mathematical encryption algorithm that is initialized with a privately known, secret key or vector. The present invention in particular relates to a system of managing the encrypting keys, which is one of the means by which access to private information protected by cryptography is controlled. Because keys or vectors are usually lengthy alphanumeric numbers that are difficult to remember, many encryprtion systems use a rememberable word or phrase, called passwords or passphrases, respectively, to initiate a key generation system. The present invention also relates to a computer program and a programmed computer system which permits or denies access to protected data by the use of a passphrase. Sophisticated encryption systems usually, use labels, which are words or information that are related to the message being encrypted, that are encrypted and removeably, attached to the message. The present invention also relates to a commuter program and a programmed computer system that generates encrypted labels for attachment to a message as a header or trailer thereof. In addition, the present invention is related to a computer program and a programmed computer system that can reverse the process and decrypt a message, including the label information.
BACKGROUND OF THE INVENTION Commercial privacy systems utilize cryptographic algorithms to protect information and limit access thereto. A standard cryptographic algorithm is the Data Encryption Standard (�DES�). As such, cryptographic privacy systems permit individuals within an organization to encode plain text information into �cipher text� using a cryptographic key. Cipher text is mixed up and unreadable. In an encrypted computer system, cipher text characters may be any of the standard ASCII characters that are used in modern computer systems.
In addition to the difficulties of encrypting and decrypting plain text, there is also the problem of designating which ones of a number of organizations and divisions within those organizations, as well as the particular people in those divisions, who can have controlled, controllable access to written information and on-line communications obviously, a unique key can be used for each particular text and each particular use of that text. However, this gives rise to a tracking process that must be applied in order to keep track of the unique keys. This function or role is called key management. It can be manually intensive and it certainly affects organizational performance. Thus, key management is often the most costly part of an organizational security system.
Standard cryptographic privacy systems are traditionally based on manually indexed associations between an irrational key and often some narrow reason for its use. Keys are chosen from essentially random numbers and are used to initialize pointers in a cryptographic algorithm. Often, such keys are generated by a random number generator and are not known to the user, but are instead buried in the particular computer program which that user is using obviously, this type of system has the disadvantage in that the key is integral to the system which is generating or transmitting the data or information. By using an irrational key, that is a key comprised of characters which together have no meaning, it is very difficult to keep track of the reason for the existence of that key. With time, associated with situational conditions, the association between the reasons for the generation of the key and the data degenerates.
Furthermore, cryptographic keys are usually managed under systems that generally provide only a static distribution means. Keys are reused for significant periods of time for many reasons and for many types of messages. Traditional privacy systems are periodically secured, but not transactionally secured. This results in the privacy keys remaining the same for each message passed through a communications node during a defined period of time. Sometimes, keys are expected to be used from 180 days to years, during which time all messages stored or moved use the same key. During this period windows of opportunities exist to exploit �protected� traffic, if one obtains the correct key(s).
Closely associated with the concept of keys is the concept of passwords, passphrases, and labels. Whereas many cryptographic systems utilize irrational numbers for keys, other systems use as an input a password or passphrase which is then encoded, manipulated, or translated into a key. Passwords and phrases are usually in the form of words or a number of words which have a rational meaning and thus are easy to remember. In addition, because they can be longer strings of characters, they have a cryptographic advantage because there are more characters to work with. For example, a passphrase can be simply �The rain in Spain� which is concatenated to be �THERAININSPAIN.� On the other hand, a password could just be the word �Spain� or �rain�. Because passwords and passphrases have meaning, as indicated above, they are called or defined at least herein as being �rational.� On the other hand, bank accountant numbers and a group of numbers and letters randomly generated (e.g. OX342PN17) are called or defined at least herein as being �irrational� because they have no internal meaning.
A primary objective of the present invention is to support the privacy of local area networks and modem user groups through controlled compartmentalization and privatization of information. A principal objective is to minimize organizational information sensitivities through enforced information specification and information flow control. A user given access to a single custom label addressing set for private communications is able to communicate privately with managers who are given a �dictionary� of thousands of labels. All of these labels can be accurately tracked, maintained and controlled. A single label can be used to provide private, secure communications to an entire organization or to any specified subset thereof.
FIGS. 3a and 3 b are a chart of the structure and substructure of the trailer of a message assembled with the present invention;
FIGS. 7a through 7 d are general block diagrams which depict the interrelationships between some of the subroutines of the computer program modules;
FIG. 16 is a schematic flow chart of a subroutine used in FIG. 15.
FIG. 21 is a schematic flow chart of a subroutine used to automatically rekey the recipient of a message.
I. Overview With reference now to the figures in which like numerals represent like elements throughout the several views, an interconnected computer communication organization 100 is depicted in FIG. 1. Communication organization 100 is comprised of a plurality of Local Area Networks (or LAN) 106 interconnected by a telephone wide area network (or WAN) 108. Other links to computer communication organization 100 can include a satellite link (not shown) and a ground based microwave network (not shown).
An Access Control module 210, described hereinbelow with respect to FIG. 8, is used to control access to system computer program 170 and is the first computer program element that is encountered by a user when system computer program 170 is called. A successfully run Access Control module 210 produces an 80 byte or character string that is called the Gamma key or vector and is denoted 211. As seen below, Gamma key 211 is used throughout the rest of the program.
File 218 must be in a predefined format and protocol and consists of the following parts: a header 220, an encrypted file portion 222, and a trailer 224 that contains a plurality of encrypted labels. Reference is now made to FIGS. 3a and 3 b where trailer 224 is depicted in greater detail.
It is the information that is stored in trailer 224 that provides the originator of file 218 the opportunity to add specific information about the file. In the present embodiment, trailer 224 has an exemplary division into the following seven portions and the information in each portion is called a label: the network portion 330 containing the Network label; the purpose portion 332 containing the Purpose label; the place portion 334 containing the Place label; the to portion 336 containing the To label; the from portion 338 containing the From label; the classification portion 340 containing the Classification label; and the environment portion 342 containing the Environment label. Each unencrypted trailer portion has a predefined length of 20 characters and the label in each can have up to 20 characters. However, if the label does not contain 20 characters, then, as described hereinbelow, the computer program packs the label, as shown in FIG. 3c, with a random character, which in the present embodiment is all the same character and is the letter �X.� The encryption process increases each label to 80 characters producing a total of 560 characters or bytes actually carried as an encrypted label for each encrypted file. Because the standard bit length of each character in the conventional computer software is eight, each trailer has a total of 4480 bits.
In the present embodiment of the protocol for trailer 224, certain parts of certain trailer portions have certain character locations reserved to indicate a particular type of information. For example, as shown in FIG. 3b, classification portion 340 has been broken down into 4 parts: a plain text filename part 352 having 11 locations in length; a reserved part 354 having one location in length that is filled by the computer program with a random character, which in FIG. 3b is an �X;� a classification code part 356 having two locations in length, which in the present example is �SG� for �secret� classification and for General Use; and a data code part 358 having six locations, which for example can contain an Organizational Drop Dead data code date, such as �101595,� (Oct. 15, 1995). As another example of subdivisions within a trailer portion, reference is made to environment portion 342 in FIG. 3b in which it is also broken down into four parts: an encrypted date part 370, which in the present example is Oct. 10, 1994; an encrypted time part 372, which in the present example is 9 AM and 15 seconds; an encrypting algorithm code part 374, which in the present example is �D� which represents the DES encrypting algorithm; and a unique digital file signature part 376, which in the present example is �89A3114.�
Two further sets of instructions, 422 and 424, call for the selection by the user of the input file to be encrypted, the name of the output file name and the algorithm to be used for the encryption. This information is used to build part of classification portion 340 and environment portion 342 of trailer 224. Subroutine 426 then uses the entered input information from instruction sets 212, 420, 422 and 424 to build an unencrypted header 220. Some of the same information is used by a subroutine 428 to generate the requisite file key, discussed hereinbelow with respect to FIG. 7d. A subroutine 430 then encrypts the label to create an encrypted label 224. Label 224 is received by a subroutine 432 which combines all of the label information that has been entered by the user and encrypted. The file key generated by subroutine 428 is used by a subroutine 434 to encrypt the selected file 422 in a conventional way to produce an encrypted file 222. When concatenated with header 220 and encrypted label 224 as a trailer, a secure file 218 is produced. File 218 is then stored in a storage medium, such as a hard disk 440, as a secure file. Alternatively or in addition, file 218 could be transmitted to another computer as mentioned above with respect to FIG. 1.
II. Key disk An example of a portable storage medium usable with the present invention has been described above as including floppy disk 160. For the purposes of describing the present invention, the portable storage medium will be referred to as floppy disk or key disk 160, but no limitation on the type of usable portable storage medium that is intended. Key disk 160 contains vital information without which the decrypting station could not decrypt an encrypted message. System computer program 170 includes a Passphrase Keydisk Creation subroutine 500, depicted in FIG. 5, to generate and store the information on key disk 160.
The user's passphrase, entered by the user in input statement 511, is sent to a set of instructions which convert the individual alphanumeric elements of the passphrase to a string of two number ASCII values using conventional well known techniques. The converted passphrase is then padded to 80 ASCII characters in process box 524 utilizing a padding vector 526 to pad the entered passphrase and thereby to generate a key called Betal. Betal is then received by a set of instructions in process box 528 which perform an EXCLUSIVE OR operation on Betal with a generated string called keyup1.
As is well known, the EXCLUSIVE OR (often called XOR) process is extensively used in the cryptographic computer field to reversibly generate a scrambled output. The EXCLUSIVE OR process compares every bit of one input word with a correspondingly located bit of a second input word and produces an output of a �1� if and only if one of the input bits is a �1� and the other input bit is a �0�. Otherwise the output from the comparison is a �0�.
The output from XOR subroutine 528 is sent to a second XOR subroutine 536 which produces an exclusive ORing with a vector located in data box 535 and denoted Gammal. Gammal in the present embodiment is a vector that is stored in system computer program 170. However, Gammal could be unique to a communication network, such as LAN 116, and thus limit access to an encrypted file using this key to a particular LAN, for example. The output from XOR subroutine 536 is sent to a third XOR subroutine 538 which produces an XORing with Gamma Vector 211 generated by Access Control subroutine 210. The output from subroutine 538 is denoted Key1, as depicted in data output box 542, and is stored on key disk 160.
For example, if the results in stages 9 and 10 are 28 and 4, respectively, their binary equivalents are: 0001 1100 and 0000 0100 respectively. The results from XOR subroutine 640 are: 0001 1100 0000 0100 0001 1000 , or the decimal number 24. The ASCII equivalent of 2 is 50 and the ASCII equivalent of 4 is 52 and that is the number that is stored in stage 621.
III. More Detailed Description A more detailed explanation of the computer program modules and subroutines of the present invention will now be presented with initial reference to FIGS. 7a through 7 f which depict the association between the modules and subroutines.
Input statement 210 receives and checks the user's passphrase to ensure that it is both valid and has the requisite 20 byte length. Instructions in process box 820 convert the passphrase string to ASCII values as described hereinabove. Instructions represented by decision diamond 822 check the length of the ASCII string and if the string is less than 80 characters or bytes long, the program branches to instructions represented by process box 824 which uses a padding vector 826 to create an 80 ASCII character string which is called Betal. In the presently preferred embodiment, padding vector 826 is embedded in system program 160, but it need not be and as stated before, can for example be supplied to system program or generated. If the converted passphrase string is equal to 80 characters in length, the program identifies it as Betal and provides it as an input to the first of three concatenated XOR subroutines (XOR) represented by process boxes 828, 830 and 832. The other input to XOR subroutine 828 is a string called �keyup1.� Keyup1 is a random number produced by Spinup Randomizer subroutine 530, described hereinabove with respect to FIG. 5, that uses the same initial input or internal initializing vector 532 and spinup number 534 as were used to create key disk 542 with the module depicted in FIG. 5.
The second inputs to XOR subroutines 830 and 832 are Gammal from data box 535 and Key1 in data box 834 obtained from key disk 160, respectively. The final result is denoted Alpha1 and it is sent to one input of a comparator decision diamond 834.
It is noted that the Gammal vector used to permit access to the system is also the same vector that is used to create Key1 in data box 542. Thus, a random, unknown, but reproducible number, keyup1, has been generated to be XORed with a padded user only known passphrase, the result XORed with a number, Gamma1, located only on a system that has the same system software, and that result XORed with a number, Key1, that only the user has.
The output from XOR subroutine 832 is the input to a set of instructions in process box 836 where the string of characters that forms Alpha1 vector are reversed in their order and form the vector Beta2. Vector Beta 2 is one of the inputs to the first of a second set of three concatenated XOR subroutines (XOR) represented by process boxes 838, 840 and 842. The other input to XOR subroutine 838 is a string called �keyup.� Keyup is a random number produced by Spinup Randomizer subroutine 530, described hereinabove with respect to FIG. 5, that uses the same initial input or internal initializing vector 556 and spinup number 558 as were used to create the second of the inputs to key disk 160 with the module depicted in FIG. 5. The result of XOR subroutine 838 is one of the two inputs to the second XOR subroutine 840, the other input being Gamma2, which is the same as Gamma2 discussed above with respect to FIG. 5. Like Gamma1, Gamma2 is provided by system computer program 170 and thus could, if desired, be the same only with those communicating elements on the same communication link. The result of XOR subroutine 840 is one of the two inputs to XOR subroutine 842, the other input being Key2 in data box 560 and obtained from key disk 160.
The output from XOR subroutine 842 is denoted Alpha2 and is the other input to comparator decision diamond 834. If the comparison is positive, that is if Alpha1 and Alpha2 are the same, then Alpha2 is relabeled Gamma (i.e. Gamma 211) in process box 844, Gamma 211 is made available to the rest of the software modules and subroutines at exit port 846, and access is granted to the rest of the software modules. If the output is not the same, then an increment counter 848 is increased and the result is sent to a decision diamond 850. If no more than three tries have been made, the user is given another opportunity to enter his or her passphrase. If this is the fourth try, then the program branches to a memory box 852 where a record is made of the attempt so as to create an audit trail, and the program exits in exit port 852.
As a safety measure to ensure that only properly designated files are used by the program, all file names are required to have a predetermined extension, such as the extension �kbt�. The extension of a selected output file is checked in decision diamond 922 and a selected input file is checked in decision diamond 924. If the extension is improper, the program branches to issue an appropriate error message in process box 926 or process box 928, respectively, and the program is returned to provide an output directory file 918 or an input directory file 912, respectively. If the file extension of the selected file is proper, the program continues and provides the user with a menu of the types of label to be selected in monitor box 930. As mentioned above, the present invention has selected seven label types, although a greater or lesser number of types can be used. In the present embodiment, the label types are: network labels 932; purpose labels 933; place labels 934; to labels 935; from labels 936; classification labels 938; and environment labels 939.
The user selects the label group of interest in an input box 940, and as each label is selected from the presented list, or generated by the user at the time, the selected label is stored in an appropriate data output box 942 for the network label, 943 for the purpose label, 944 for the place label, 945 for the to label, and 946 for the from label. However, as indicated in FIG. 3a and 3 b above, the classifications and environment labels also contain certain contemporaneously generated information. Thus, when the classification label is selected in input box 940, the selected classification label is sent to process box 950 and 952 where the environment code to be used is looked up and added, and the classification code to be used is looked up and added, respectively. The organizational drop dead date (e.g. the date the file is to be declassified or destroyed) is then added to the modified classification label in process box 954 and the further modified classification label is then stored in a data output box 956. Finally, after the file to be sent is encrypted in user input box 958 (using a conventional algorithm and conventional process, as mentioned above), the program checks in decision diamond 960 that all but the last label, the environment label, have been selected. If all other labels have been selected, then the program branches to a process box 962 where the system time/date stamp are added to the environment label, and the environment label is stored in data output box 962. At this point, the program has had all of the labels selected, and it leaves Label Generation subroutine 420 and enters the Generate Key subroutine 428.
A somewhat opposite process to the encryption label key creation module is the label key creation decryption module depicted in FIG. 11. The decryption module, however, has sufficient difference to warrant a separate detailed description thereof. However, some initial observations are necessary in order to understand the principles of operation. In order for the label decryption process to have occurred, the same information for access control must have been entered. This does not necessarily mean that the pass phrase must have been the same, since the �pass-phrase vector� compensates for the differences in the pass-phrase, and the �mask� being the same, the same key-up variable is generated. Thus the key-up variable must have been the same when it entered the �Spinup engine� in order for the label decryption process to correctly occur. The Spinup(n) must also be the same. With these elements being the same, and by knowing what Beta(n) and Gamma 211 are, one can determine what Alpha(n) must be and therefore a label can be decrypted.
Also, it is important to realize that all encrypted labels have a fixed length and are placed at the end of an encrypted message in a concatenated relationship. The trailer is used to recover the key that is used in the body of the message. The encrypted trailers (n), where in the present embodiment �n� is equal to seven, have a known, fixed length. An advantage of a fixed length encrypted trailer is that each trailer can be easily identified, separated out and decrypted. In the present embodiment, the length of each trailer element is eighty bytes and thus the length of the entire trailer is seven times eighty or 560 bytes. Thus, because the encryption and decryption processes of the present invention are incremental and separable, the encrypted trailer for the �place,� for example, that is trailer number 3 (i.e. n=3), can be isolated with the correct Beta(n) key, the correct Gamma key 211, the correct Spinup number, and the correct keyup variable or initial vector. However, in the present embodiment, the value of the key-up variable is common to each of the label elements (n), although a different variable could be used with each label. Other advantages of using this type of a trailer system is that it is both faster to decrypt and easier to access than a header system. Also this system can be used for routing the information without decrypting the message, and any number of labels can be used in the trailer without significantly affecting the delivery system design. This latter advantage is not true for a header system because such systems require the transfer of the body of the encrypted message to add or delete portions of the file or of the trailer.
From the padding process box 1218, the program proceeds to a plurality of serially connected EXCLUSIVE OR (sometimes denoted XOR) steps. As stated above, the purpose of the labels are to maintain the rationality or reasons for the encryption of the host system files in order to specify the sensitivity of decrypting the file within the constraints of many situations and conditions. This rationality goes with each encrypted file in the form of an encrypted trailer of fixed size having a plurality of encrypted labels. For simplification, the designator �n� is used to identify the explicit label being handled. The internal designation used for the different labels are: the input rational label, the (nth) label, the Alpha(n) key or label, the Beta(n) key or label, and the Gamma key or vector 211. The Alpha(n) key, the Beta(n) key, and the Gamma key 211 are all XORed together along with the product of the vector produced by the Spinup engine subroutine. When all are properly XORed, the encrypted label (n) is created.
The rational for the decryption program flow is to perform the steps opposite to the encryption steps. For example, in encrypting the various alphanumeric elements of the label network portion 330 �BLUENETWORKEASTXXXXX� (FIG. 3), the encrypted packed string could be �9338 1201 5176� for the elements �B,� �L,� and �U.� The encrypting packing subroutine determines if the resulting encryption of an element is three or two digits. If three digits, then the encryption is packed with a random odd least significant digit, and if two digits, then the encryption is packed with a random even least significant digit and with a random most significant digit. Thus, in the above example, the above described subroutine would strip the packed numbers to yield:
�33 120 17�.
Each Label subroutine, depicted in FIG. 16, is substantially the same and thus will be described in general. Essentially, the label subroutine is comprised of MeldKeys subroutine 1032 with four inputs. The labels from FIG. 9 are correspondingly used in turn as an input in FIG. 16, and for convenience are denoted in FIG. 16 as 1610. A particular label is identified as �n,� and in the present embodiment �n� goes from one to seven to identify each of the seven labels. Label 1610 is redesignated in FIG. 16 as Alpha key 1620. A second input in each Label subroutines 1523, 1524, 1525, 1526, 1527, 1528 and 1529 is an individual Beta key for each subroutine 1622, denoted Beta(n) 1622, where �n� is the same as that used for the labels. At this time in the preferred embodiment, Beta(n) is a meaningless, embedded vector, but as should be obvious to those skilled in the art, Beta(n) could have some rational meaning or purpose. A third input is Gamma key 211, and thus it will be the same for each label subroutine. The last input to each label subroutine is a keyup vector 1626 designated keyup(n). Where keyup(1) vector 1626 is the same as keyup 1520 in FIG. 15 for the first run label subroutine 1523 (the Network label), keyup(n) vector 1626 for the other six label subroutines is the trailkey 1533-1538 generated for the previous label subroutine. For example, keyup(2) 1626 in FIG. 16 (the Purpose keyup) is Network Trailkey 1533 and keyup(7) is Classification Trailkey 1538.
In this way, the produced trailkeys and the file key are 100 percent relational to the labels that generated them (i.e. the key has a flat representative function). Although the combination of the keys can be done in a number of ways, in this particular embodiment, Beta Prime key 1712 and Gamma Prime key 1714 are first combined using a bit-by-bit XOR in a MeldIn subroutine 1720, denoted 1720 a and described hereinbelow with respect to the description of FIG. 18. MeldIn subroutine 1720 a produces an intermediate product having the same length as one of the original keys, and is then combined using a bit-by-bit XOR with Alpha Prime key 1710 in MeldIn subroutine 1720 b to produce Key 1716, which also has the same length as the intermediate product and the three input1 primed keys, Alpha′ key 1710, Beta′ key 1712 and Gamma′ key 1714.
The process of creating or making the primed Alpha, Beta and Gamma keys from the unprimed keys will now be described. First, Alpha key 1620 is subjected to Spinup Randomizer subroutine 530 (see FIG. 6) for a predetermined number of spins determined by an internal integer 1718, which in the preferred embodiment is one, but which as one skilled in the art can appreciate could be generated, such as by a Squish Function subroutine 1034 a. Because of the operation of process box 648 in Spinup Randomizer subroutine 530, the output from Spinup Randomizer subroutine 530 will be the ASCII representation of an integer. The output of subroutine 530 is used as the input to a SpinRandom Characters subroutine, which at this point in the program is denoted 1732 a. The SpinRandom Characters Subroutine is identical to Spinup Randomizer subroutine 530 (FIG. 6), except that process box 648 (FIG. 6) which performs the modulo 10 arithmetic is not used. Thus, it is possible to generate all ASCII characters in process box 650 (FIG. 6) and to provide them as an output from the SpinRandom Characters subroutine. The number of spins of subroutine 1732 a is determined by an integer from 1 to 9 from Squish subroutine 1034 a, described hereinbelow with respect to the description of FIG. 18. The number of spins is limited here only in the interest of the time that it takes to operate subroutine 1732 and in a faster computer could be larger than a single digit integer. The output of subroutine 1732 a is used as the input to a conventional concatenation subroutine 1734 a, the packing or filler input of which is keyup 1626. The output from subroutine 1734 a is provided as the input vector to a second SpinRandom Characters subroutine 1732 b. The spinup number for subroutine 1732 b is determined by an embedded internal integer 1736, which for the presently preferred embodiment at this time is one, and thus is the same as internal integer 1718. The output from subroutine 1732 a is Alpha Prime 1710.
The packed vectors Beta Prime 1712 and Gamma Prime 1714 are created in a similar way. Keyup 1626 is used as the input to a SpinRandom Characters subroutine 1732 c. The spinup number, which in this embodiment is a single digit integer (but as mentioned above could be larger), is generated by a Squish Function 1034 b from the unpacked Environment Label, called here the Environment Trailer 964. The output from SpinRandom Characters subroutine 1732 c is used as the filler or packing input to a Concatenation subroutine 1732 b and a second Concatenation subroutine 1734 c. The vector to be packed by sphroutines 1734 b and 1734 c are Beta(n) key 1622 and Gamma key 211, respectively, and the outputs are Beta Prime key 1712 and Gamma Prime key 1714. The Environment label is used to generate the spinup number because it contains the unique time and date at which the file is being encrypted and thus represents a rational connection to the particular encrypted file. It should be obvious that changing any of the Spinup values results in a dramatic change in the output key. Such internal Spinup integers are designed to contain values independent of the others and capable of being derived from external or internal sources or computations, such as by Squish Function 1034.
Initially, the answer will be �no,� and thus the subroutine branches to a process box 1822. In process box 1822, subroutine 1034 adds the integer at the iteration location to the number in the totalizer. Next, the subroutine proceeds to a decision diamond 1826 which determines whether the iteration is greater than the number of elements in the input string. If the answer is no, the subroutine branches back to process box 1822 to begin the loop again. If the answer in decision diamond 1826 is yes, then the subroutine branches to a process box 1828 which sets the last accumulated total to equal the current accumulated total.
Squish subroutine 1034 then continues to a decision diamond 1830 which determines if the number in the totalizer is greater than one. If so, subroutine 1034 loops back to decision diamond 1820. If the answer is �no,� then the process is completed and the resulting integer is stored in an output data box 1834.
As an example, suppose that the input sting of numbers in box 1810 has initially only 3 digits, namely 653. When the subroutine enters decision diamond 1820, the iteration counter will have been initialized to one by process box 1812 and since the number of elements in the input string is three, the subroutine will drop down to process box 1822. The integer at the first iteration location is �6� and this is added in process box 1822 to the Accumulated Total which has been initialized at zero. Thus the new total is now 6. The subroutine then proceeds to process box 1824 which increments the iteration counter and then to decision diamond 1826 which takes the �no� branch because the iteration count is now 2, which is not greater than the number of elements in the string, which is 3. The subroutine again enters process box 1822 and now the iteration location (which is now 2) has the number 5. This is added to the present Accumulated Total of 6 to yield 11. In a similar program flow, the next trip around the loop will yield an Accumulated Total of 14 (11+3). After this third trip around the loop, the iteration number will now be 4 which is greater than the number of string elements which is 3 and the program branches to decision diamond 1830.
Now the Accumulated Total has two digits (a �1� and a �4�) so the program will branch back to decision diamond 1820. The iteration counter not having been reset is now at 3 and thus the subroutine will branch to process box 1832. Here the subroutine again initializes the iteration counter to 1 and the Last Accumulated Total to 0 and it proceeds through the �no� branch of decision diamond 1826 (iteration is now 1 and the new number of string elements is 2). By looping twice the result in the Accumulated Total is �5� (1+4) and is a single digit. Therefore, when the subroutine again enters decision diamond 1830, the result will be �no� and the program will finally end at output data box 1834. Thus, by successive additions of the elements in the input string, the result will be a single digit.
Initially, in steps that are not depicted, a software shift register is initialized to zero and the subroutine loads in parallel each stage of a primary serial-parallel shift register 1910 having �n+1� stages with a first, primary input string and each stage of a secondary serial-parallel shift register 1912 having �n+1� stages with a second, secondary input string. For example, as seen in FIG. 17, a primary string is Alpha′ key 1710 or the output from the first MeldIn subroutine 1720, and a secondary string is Beta′ key 1712 or Gamma′ key 1712. The outputs from Data n+1 stage of each shift register 1910 and 1912 are used as inputs to a subroutine 1914 and 1916, respectively, which convert the value in the data n+1 stage to its ASCII value. Then the elements in each shift register 1910 and 1912 are shifted one place to the right. The output from subroutines 1914 and 1916 are then EXCLUSIVE ORed together in process box 1918 and the counter is advanced one count in process box 1920. Since this is the initial looping, the output from XOR process box 1918 is a one and is stored as an integer in data output box 1922.
The integer in data output box 1922 is then converted to its ASCII character in process box 1924 and concatenated onto a string in a register process box 1926. The subroutine in decision diamond 1928 then checks to see if the count in the Counter is equal to the length of the string in shift register 1910. Since the length of the strings used in Meld Keys subroutine 1032 (FIG. 17) and entered into shift register 1910 is 80, having been packed to that length by subroutine 1732, the result of the test in decision diamond 1928 will be a �NO� on the first loop. Thus, the subroutine 1720 proceeds to process box 1930 where the ASCII character produced in process box 1924 is loaded into the first stage of secondary shift register 1912 and both shift registers 1912 and 1910 are shifted one stage to the right. After 80 iterations, the length of the string in process box 1926 will be 80 and the count in the Counter will be 80. Therefore, the result in decision diamond 1928 will be a �YES� and the program will branch to load the product in process box 1926 into data output box 1932 as the MeldProduct. The MeldProduct produced by the second MeldIn subroutine 1720 in the Meld Keys subroutine 1032 of FIG. 17 is a trailkey for the particular label.
The production of file key 1042 is shown in FIG. 20. The first two trailkeys, 1533 and 1534 are combined in a first use of MeldIn subroutine and then the result of that combination is used as the primary string input to a second MeldIn subroutine 1720 b where the secondary string input is the next trailkey, in this case the place trailkey 1535. This process of using the result of a previous MeldIn subroutine 1720(n) as the primary sting input to the next MeldIn subroutine 1720(n+1) is repeated until all trailkeys are used in turn. The last step produces File Key 1042. In FIG. 20, trailkey 2010 is depicted to illustrate that any number of trailkeys (and thus labels) can be used and the number is not limited to the seven in the presently preferred embodiment.
Subroutine 2100 can be inserted in the program depicted in FIG. 2 between Label Decryption subroutine 232 and Key Creation Combiner subroutine 234. An incoming message 230 is being decrypted by decryption subroutine 232. After the trailer has been decrypted, the subroutine 2100 enters decision diamond 2110 where the decrypted Purpose label is checked to determine if that label has a predetermined series of characters, such as �REKEYKEYBYTE.� If it does not, the program branches out of subroutine 2100 to process box 2112 where the program is directed to continue with the decryption process described hereinabove with respect to FIG. 3. If the comparison in decision diamond 2110 is �yes,� then the subroutine proceeds to a Label Element Decryption subroutine 2114, which then proceeds to decrypt the trailer file on KeyDisk 160. This decryption requires the use of the rekey file trailer labels which are obtained from keydisk 160.
The specification has now described a presently preferred embodiment of the present invention in which a unique transactional key can be generated to initialize a conventional encryption algorithm and seven labels can be encrypted and concatenated to the encrypted message as a trailer. In creating the trailer, key labels from the Network, Purpose, Place, To, From, Classification and Environment categories must exist or be created first. The relationship between any selection of labels contains sufficient information to explain the justification or �story� surrounding the encryption of the message. However, in some circumstances the justification may be acceptable and in some it may not be acceptable. For example, a message may have a minor sensitivity when communicated between two persons through a given network to a given place, but the same message, to and from the same persons may have a high sensitivity when passed through a different network to a different place. The present invention includes a system for producing �sensitivity factors� that can be used to prevent harmful combinations of labels, and thus prevent a harmful message from being sent in the selected combination of categories.
An analysis of all of the labels with respect to the operational environment, and within their respective label categories can be made in advance to produce rational �sensitivity� weights assigned to specific labels. Further separate analysis of the label categories, in context with the organizational security policies of the participants in the network, can be used to produce �sensitivity factors� that in turn can be used to prevent harmful combinations.
IF [Weight(label 5)]>7 AND [Weight(label 3)]<5,
THEN [Weight(label 3)]=3�[Weight(label 3)] AND
[Weight(label 5)]=2�[Weight(label 5)].
In words, this rule can be translated to say that originally if the selected From Label has an assigned weight of �8� or more and the selected Place Label has an assigned weight of from �0� to �4�, then the final weights of both of these labels will be changed to increase both label weights. The weight of the From Label will be increased by a factor of two and the weight of the Place Label will be increased by a factor of three. Thus, the mere fact that the From and Place labels have certain thresholds of sensitivity and both are being used together increases both of their final sensitivities. In combination with the evaluation rules, this combination could have easily excluded the particular label combination from being allowed. However, the particular rule could just as well have reduced the sensitivity of one or both the weights of the labels.
[Weight(label 5)]>7 AND [Weight(label 3)]<5,
IF, SUM [Weight(label n),n=1 to 7]>[Weight(label 4),
THEN [Show Message: �Label Selections Not Allowed�];
ELSE Write label combination to associated label database.
Obviously, any number of databases can be used to make different numbers of label categories. For example, within the label association process, eight separate databases can be used. Seven of the databases contain the label records for the corresponding label category and each record contains a text field for the paticular label and an integer field for the weight of that label. The eight database contains the records of the previously selected labels. Each record has seven text fields to store the seven associated labels and a date/time field to store the �drop dead� date and time of the record.
With reference now to FIG. 22, an expert system subroutine for checking the combination of selected labels is disclosed. Initially, the user selects a label from any of the unassociated Label databases 932 to 939 in manual input box 2210. The program branches upwardly to a process box 2212 where the sum of the label weights is initialized to zero. Then the program proceeds to a subroutine box 2214 where the program, based on the selected label, selects the appropriate rules to use from an Associated label Weight Rulebase 2216. Since there are no other associated labels yet, no rules within Associated Label Weight Rulebase 2216 fires. Subroutine 2214 would then calculate all of the associated label weights for all of the labels selected so far, but on this first round none would be calculated. The program proceeds to a process box 2218 where all of the selected associated label weights of the labels selected so far are summed, and the progress is displayed on a terminal as indicated by output box 2220. On the first round, the Sum of all selected label weights becomes the weight of the single selected label, and the display provided by output box 2220 would simply be the single weight of the first select label. As indicated in FIG. 9, the first selected label could really be any of the seven labels, except for the Environment label, which must be the last label selected so that the system time/date stamp can be added to make the label unique.
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS5319562 *Aug 22, 1991Jun 7, 1994Whitehouse Harry TSystem and method for purchase and application of postage using personal computerUS5638512 *Oct 19, 1993Jun 10, 1997Xlnt Designs, Inc.Ring network security system with encoding of data entering a subnetwork and decoding of data leaving the subnet workUS5671283 *Jun 8, 1995Sep 23, 1997Wave Systems Corp.Secure communication system with cross linked cryptographic codesUS5678046 *May 5, 1995Oct 14, 1997The Chase Manhattan Bank, N.A.Method and apparatus for distributing files on a file storage deviceUS5680452 *Feb 24, 1995Oct 21, 1997Tecsec Inc.Distributed cryptographic object methodUS5715397 *Dec 2, 1994Feb 3, 1998Autoentry Online, Inc.System and method for data transfer and processing having intelligent selection of processing routing and advanced routing featuresUS5764762 *Oct 28, 1996Jun 9, 1998Wave System Corp.Encrypted data package record for use in remote transaction metered data systemUS6456729 *Oct 6, 1999Sep 24, 2002Lewis J. MooreAnti-counterfeiting and tracking system* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS7020843 *Jul 21, 2003Mar 28, 2006Uhc LlcMethod and system for implementing a browser object containerUS7228437 *Jun 19, 2001Jun 5, 2007International Business Machines CorporationMethod and system for securing local database file of local content stored on end-user systemUS7269261 *Sep 21, 2000Sep 11, 2007Raytheon CompanyKey escrow systemsUS7346782 *Dec 9, 2003Mar 18, 2008Lenovo Pte LtdMethod for data protection for removable recording mediumUS7370366 *Nov 16, 2001May 6, 2008International Business Machines CorporationData management system and methodUS7818581Apr 28, 2008Oct 19, 2010International Business Machines CorporationData management systemUS8256010 *Apr 1, 2009Aug 28, 2012Microsoft CorporationProviding access to a data item using access graphsUS20110231657 *Jun 1, 2011Sep 22, 2011Qualcomm IncorporatedApparatus and method for employing codes for telecommunications* Cited by examinerClassifications U.S. Classification726/19International ClassificationG06F21/00, H04L9/32, H04L9/10, G06F1/00Cooperative ClassificationG06F2211/007, G06F21/6209European ClassificationG06F21/62ALegal EventsDateCodeEventDescriptionNov 27, 2012FPExpired due to failure to pay maintenance feeEffective date: 20121005Oct 5, 2012LAPSLapse for failure to pay maintenance feesMay 21, 2012REMIMaintenance fee reminder mailedOct 3, 2008SULPSurcharge for late paymentOct 3, 2008FPAYFee paymentYear of fee payment: 4Apr 14, 2008REMIMaintenance fee reminder mailedRotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services©2012 Google