|Publication number||US5455862 A|
|Application number||US 08/160,897|
|Publication date||Oct 3, 1995|
|Filing date||Dec 2, 1993|
|Priority date||Dec 2, 1993|
|Also published as||WO1995015629A1|
|Publication number||08160897, 160897, US 5455862 A, US 5455862A, US-A-5455862, US5455862 A, US5455862A|
|Inventors||John D. Hoskinson|
|Original Assignee||Crest Industries, Inc.|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (24), Non-Patent Citations (4), Referenced by (105), Classifications (12), Legal Events (6)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This invention generally relates to apparatus and method for encrypting data, and more specifically, for encrypting data using an encryption key produced by combining keys randomly determined at two stations initiating communications.
The U.S. government has developed and published an encryption scheme known as the Data Encryption Algorithm (DEA) that cannot be broken by the most powerful high-speed computer, or, at least not in a time frame that would be acceptable. Integrated circuits designed specifically for encryption and decryption of data in accordance with the DEA are readily available from several vendors, such as Western Digital™ and are widely used by industry. This algorithm, like most encryption schemes, uses an encryption key to encrypt data for transmission to a remote site. At the receiving site, the encrypted data are decoded using the same algorithm and the same encryption key used by the transmitting site. Successful use of the DEA, and almost any other encryption/decryption algorithm commonly employed to provide secure communications, requires that the station receiving the encrypted transmission have the necessary encryption key to decode an encrypted signal, but that no unauthorized party know or have access to that encryption key.
For most prior art encryption/decryption systems, extensive security measures are required for managing and periodically changing the encryption keys that are used at different sites. Any third party who gains access to the encryption key being used to encrypt data can tap into a non-secure line over which encrypted messages are transmitted and then use the key to decrypt messages that are intercepted. Even if knowledge of the encryption key used is limited to those operating the encryption/decryption equipment in a network, it is possible for others outside the organization to breach the security and learn the encryption key due to the failure of someone to follow security procedures that should be followed by those using the system.
Since any person with access to the encryption keys can breach the security of encrypted communications between members of a secure network, encryption keys are typically changed on a regular basis. Frequent changes in the encryption keys in use minimize the risk of disclosure by individuals that previously had access to the keys. However, any such change requires that the new encryption keys be distributed to all stations comprising the network. In many cases, the new encryption keys must be hand-carried to each station site by bonded couriers, any of whom might breach security. Even if a security breach does not occur, the cost of regularly distributing encryption keys to each station of a large network in this manner may be prohibitive.
For these reasons, it is preferable to use encryption keys at each station in a network that are not known to anyone, even those operating the encryption/decryption apparatus. Various techniques have been developed to access encryption keys stored in an electronic memory for this purpose. For example, a new encryption key can be selected for subsequent encryption of communications between stations based on the last encryption key that was used, by applying a secret formula to generate the new key. However, if the formula is discovered or otherwise becomes known by someone who is outside the organizational network, security of the encryption system is breached, since that person can generate the encryption keys that will subsequently be used, simply by applying the formula to any previously discovered key.
Clearly, it would be preferable to randomly generate the encryption key that is used to encrypt data transmitted to another station each time that communications are initiated between any two stations on a network. Yet, random generation of an encryption key at one station inherently renders the receiving station unable to decrypt the message, because it does not have the encryption key used.
A solution to this problem is disclosed in U.S. Pat. Nos. 5,237,611 and 5,222,136, both of which are commonly assigned to the same assignee as the present invention. The apparatus and method disclosed in these patents uses an encryption/decryption unit (EDU) that includes a central processing unit (CPU) to control the operation of the EDU, and random access memory (RAM) in which tables of key exchange keys (KEKs) are stored. Also provided is a data encryption standard (DES) coprocessor that implements the DES algorithm. These components comprise a module that is embedded in potting material. Any attempt to remove the potting material, either mechanically or by using solvents is likely to result in loss of the data and program code stored in the module. The CPU includes special circuitry enabling it to operate in an encrypted mode and to be locked so that it cannot be interrogated to discover the program or data stored in the module. This program enables the EDU to establish secure communications with another, similar EDU over a non-secure link. Each EDU involved in establishing a secure communication session randomly generates a portion of a session data encryption key (DEK) that is encoded by using a KEK from either a public or private table of KEKs stored in the embedded RAM. The two EDUs exchange the encrypted portions of the DEK, along with first and second check values, decrypt the portions by using the first and second check values to determine the KEK used by the EDU at the other site to encrypt the portion of the DEK received, and then logically combine the two portions of the DEK to determine the complete DEK that will be used to encrypt and decrypt data during the current communication session. Each EDU is identified by a stored ID assigned when manufactured that subsequently cannot be altered. Use of a third EDU to bridge the link between two EDUs attempting to communicate securely is prevented because the ID of the third EDU does not match the expected ID of either of the other two. If the ID does not match the expected value, the embedded program in the EDU detecting the mismatch terminates the communications.
While the key management technique just described is generally superior to other prior art techniques, it is possible that a party intercepting communications between two EDUs might eventually be able to work backwards from the check values that are exchanged in a number of sessions to determine the KEKs stored in the RAM. Even though each public and private table of KEKs includes over 64,000 keys, the possibility that with sufficient intercepted traffic, the stored table of keys might be discovered has justified developing a different and better approach. Clearly, the solution to this problem must avoid exchanging any value between stations that could serve as a basis for working toward discovery of information that might compromise secure communications. The previously developed approach provided access to only the public network and one private network of KEKs. A better key management technique would provide for selective access to many more private networks, without requiring a different table of KEKs to be stored in RAM for each different network.
In accordance with the present invention, a method for establishing secure communications between a first station and a second station that are coupled together by an unsecure communication link comprises the step providing the first and the second stations with a plurality of seed keys that are common to both stations, but are not publicly known. At the first station, a first pointer value is randomly selected, and at the second station, a second pointer value is randomly selected. At each station, a succession of values are cyclically and repetitively encrypted using one of the seed keys as an encryption key. Each encrypted value determines a new value that is then encrypted. A first value of the succession of values that is initially thus encrypted is determined as a function of at least one of the plurality of seed keys. Encryption of the succession of values cyclically repeats for a number of times that determined as a function of the first pointer value at the first station, and as a function of the second pointer value at the second station. A last encrypted value that is thus determined at the first station corresponds to a first portion of a session data encryption key; and a last encrypted value that is thus determined at the second station corresponds to a second portion of the session data encryption key. The first and second portions of the session data encryption keys are temporarily stored at the respective stations.
Using one of the seed keys as an encryption key, the first pointer at the first station and the second pointer at the second station are respectively encrypted, to produce a first encrypted header at the first station and a second encrypted header at the second station. The first and the second encrypted headers are interchanged between the first and the second stations. Using the one seed key, the first encrypted header is decrypted at the second station, and the second encrypted header is decrypted at the first station, to recover the first and second pointers, respectively.
Based upon the plurality of seed keys, the repetitive cyclic encryption step is repeated to determine the first portion of the session data encryption key as a function of the first pointer at the second station, and to determine the second portion of the session data encryption key as a function of the second pointer at the first station, respectively. At each station, the first and second portions of the session data encryption key are combined to determine a final session data encryption key. Using the final session data encryption key at each station, data exchanged between the two stations are encrypted and decrypted.
Each station is provided with identical first, second, and third seed keys. In producing each portion of the session data encryption key, the third seed key is logically combined with the second seed key to form the first value. Then, the first value is encrypted with the first seed key to form an encrypted value. Next, the encrypted value is logically combined with the first value to form a new value. The new value is encrypted with the first seed key to form a new encrypted value. And finally, the last two steps are repeated for the number of times determined by the appropriate one of the first and second pointers to obtain the last encrypted value. The first and second pointers are used as a counter indices to determines the number of times that the steps of logically combining and encrypting are implemented. Preferably, the first and second pointers each comprise a plurality of bytes, each byte serving as a successive counter index to determine the number of times that the steps of logically combining and encrypting are implemented, until the number of times determined by a last byte of the pointer is completed.
The method further comprises the steps of accumulating a cyclic redundancy check value for each portion of the session data encryption key; and encrypting the cyclic redundancy check values at each station as part of the first and second encrypted headers. The cyclic redundancy check values are decrypted after the first and second encrypted headers are interchanged between the first and the second stations and used to determine whether an error has occurred in the determination of the first and second portions of the session data session encryption key by the second and the first stations, respectively.
In addition, the method includes the step of including network cyclic redundancy check values as part of the first and second encrypted headers that are interchanged by the first and the second stations. These network cyclic redundancy check values are decrypted to confirm that the first and the second stations are both members of a common network.
Each station is identified by a unique station identification code that is unalterable. The station identification code is included in at least one of the first and second encrypted headers and is used to ensure that a secure communication link is established only between two stations intending to communicate.
The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same becomes better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
FIG. 1 is a block diagram of a communications network comprising two stations, each provided with an encryption/decryption unit (EDU) in accordance with the present invention;
FIG. 2 is a schematic block diagram of one of the EDUs shown in FIG. 1;
FIG. 3 is a flow chart illustrating the logical step implemented by the EDU in a station that is called by another station, to determine a DEK that will be used during a current session of communication;
FIG. 4 is a flow chart showing the steps carried out by the EDU in the station that initiated the communications, to determine the DEK;
FIG. 5 is a flow chart illustrating the steps of a subroutine used by EDUs in both stations joining in a secure communication link, to determine a portion of the DEK; and
FIG. 6 is a block diagram that illustrates the cyclic process that is repeated for a number of times to determine the portion of the DEK, as a function of a pointer that is randomly selected by one of the EDUs.
Referring to FIG. 1, a network 10 comprising a station 12 and a station 14 illustrates how the present invention is used in carrying out encrypted communications. Although network 10 is shown simply as comprising two stations, it should be appreciated that the network can include many other such stations, any two of which are selectively connected together to carry out secure communications using the present invention.
Both stations 12 and 14 employ identical components for encrypting and decrypting communications. Specifically, station 12 includes a data device 16 comprising, for example, a facsimile machine or personal computer, neither of which are separately shown. Lines 18 connect data device 16 to an EDU 20. Station 12 uses EDU 20 to establish secure communications over a non-secure line (or radio link) 22 with station 14. Station 14 also includes an EDU 28, which is connected to a data device 24 over lines 26. Data device 24 typically would be the same type of device as data device 16. Thus, if data device 16 is a facsimile machine, data device 24 would also likely be a facsimile machine. However, with recent advances in modem technology, those of ordinary skill in the art will also appreciate that a personal computer can function as a facsimile machine if provided with the appropriate hardware and software. In any case, communication network 10 permits secure communication of virtually any type information, including facsimile, data, and digitized voice, between stations 12 and 14, over non-secure line 22.
The present invention establishes secure communication between EDU 20 and EDU 28 without use of a public key, making it virtually impossible to tap into non-secure line 22, even if a similar EDU (not shown) is employed for that purpose. Preferably, communication between EDU 20 and EDU 28 are encrypted using a DEK that is changed each time the two EDUs link in a communication session. The DEK comprises two parts, one part determined based upon a pointer value that is randomly selected by EDU 20, and the other part determined as a function of a different pointer value randomly selected by EDU 28. The pointer selected by each EDU is encrypted using one of three secret seed keys that are stored within the EDU to form an encrypted header that is transmitted to the other station.
Both stations 12 and 14 decrypt the transmission received from the other station using the same seed key (now serving as a decryption key) previously used as the encryption key for the header, to recover the pointer selected by the other station. That pointer is then used to determine the portion of the session key that the other station determined. The two portions of the session DEK are logically combined at each station to produce a complete or final DEK used for encrypting data transmitted between stations 12 and 14 during the current session. The EDUs are preprogrammed to ensure that the intended station in a two-way communication link is actually receiving or transmitting the encrypted data, to guard against a third party tapping into non-secure line 22 with another EDU. The program running in the EDUs also ensures that the two pointers, which are exchanged between stations 12 and 14, are correctly received and decrypted and that the two portions of the session DEK are correctly determined using the pointer. This step protects against data errors that might arise in the transmission of the encrypted pointers between the two stations or in the determination of the two portions of the session DEK as a function of the pointers that were exchanged.
Referring now to FIG. 2, a block diagram of EDU 20 is shown; EDU 28 is exactly the same, except that it has a different EDU identification number stored within it. EDU 20 includes a potted module 30 and an external input/output (I/O) bus 32 for providing interconnections between the EDU and the data device (or interconnections with other components, if the EDU is used as part of a more extensive data encryption apparatus). The data device provides the data to be encrypted or receives the data that were decrypted by the EDU. Potted module 30, which comprises substantially the entire EDU, is encapsulated within a radio-opaque and light-opaque potting compound 34 to prevent discovery of the internal circuitry of the module, and to prevent forced electromagnetic or visual tapping, monitoring, or other forms of penetration of potted module 30 that might be attempted to uncover the seed keys and other information stored therein. Potting compound 34 is sufficiently hard and resistant to abrasion to prevent its removal without damaging the components comprising the EDU or at least causing loss of important data stored therein. Of greatest sensitivity for maintaining the security of communications between EDUs comprising a secure network is the requirement for protecting against discovery of the seed keys that are stored within each EDU and used for determining portions of the DEK and for encrypting and decrypting the 64-bit pointers randomly generated by the two stations engaging in the secure communication link. To prevent breaching the security of communications on network 10, it is absolutely essential that these seed keys stored within the EDU not become publicly known.
In the preferred form of the invention, a plurality of sets of seed keys are stored in encrypted form in RAM 42 within potted module 30. One set of seed keys stored within the module is referred to as a "public" set, since each EDU that will be sold will include this set. Each of the other sets of seed keys, if provided, are used in communication with one or more other EDUs comprising a specific "private" network; an identical set of seed keys for a given private network are stored in each of the other EDUs comprising that private network. The private network sets of seed keys are very important to limit secure communications only between certain sites having a need to communicate highly sensitive information and data.
For example, a corporation may elect to establish ten private networks, each private network representing a different segment of the corporation's business. An EDU assigned to the president or chief executive officer of the corporation would likely include all ten sets of seed keys for the private networks, while managers of each business sector assigned to a different one of the private networks might be assigned EDUs with only one or two sets of seed keys for the private networks on which they have a need for carrying out secure communications. In this manner, ultra secure communications (secure even relative to other employees within a corporation) can be accomplished using the appropriate private network set of seed keys, while secure communications throughout the corporation can be accomplished using the public seed keys, or perhaps using one private set of seed keys, to ensure that communications are limited to EDUs at stations only within the corporation.
RAM 42 preferably comprises 128K by 8 bits of storage, i.e., yielding one megabit of non-volatile static RAM. This memory integrated circuit is a dual in-line package (DIP) configuration of generally conventional design and uses an internal battery supply (not separately shown) in a CPU 36, to maintain data integrity in the absence of externally applied power to the EDU for a period in excess of ten years. In the event a chemical solution is used to dissolve potting compound 34 in an attempt to discover the seed keys stored in RAM 42, the material comprising RAM 42 and CPU 36 will also be dissolved, thereby disconnecting the battery supply and erasing the seed keys that are stored therein.
Operation of potted module 30 to establish and conduct secure communications is controlled by CPU 36. In the preferred embodiment, a Dallas Semiconductor™ type DS5002 microchip integrated circuit is used for CPU 36. Data stored within RAM 42 comprise program steps that are carded out by CPU 36 in establishing secure communications; initial loading of the RAM is accomplished with a conventional universal asynchronous receiver/transmitter (UART) interface (not shown) that is connected through external I/O bus 32 via lines 48. UART lines 50 couple the signals from I/O bus 32 to CPU 36, which encrypts the signals for storage in RAM 42. In addition, control lines 52 convey read (RD), write (WR), clear entry (CE), and address zero (A0) signals to I/O bus 32; these signals are in turn conveyed through lines 54 to CPU 36.
To provide the highest level of security, CPU 36 operates in an encrypted mode. Before the initial loading of program code and data into RAM 42 begins (during manufacture of the EDU), a 64-bit encryption mode key is randomly selected by CPU 36 for use in encrypting the program code and data. This internal encryption mode key is not accessible from outside the CPU. A data encrypter circuit and an address encrypter circuit (neither separately shown) within CPU 36 respectively control the form in which the program code is stored in RAM 42 and the addresses at which it is stored. As the initial loading of program steps is performed, the data encrypter circuit uses the 64-bit encryption mode key to transform or encrypt opcodes, operands, and data bytes at each memory location defined by the software. Similarly, the address encrypter circuit uses the encryption mode key in a different encryption algorithm to translate or encrypt a logical address for each data byte location into an encrypted address at which the data are actually stored. The contents of RAM 42 are then verified, and further changes to the data are disabled by setting a security lock bit. After the security lock bit is set, CPU 36 operates in the encryption mode; the encrypted contents of RAM 42 are thus unintelligible to an observer that might attempt to tap into its circuitry to discover the program code and other data stored therein.
The address and data encrypter circuitry provides real time translation or decryption of program code in address locations to CPU 36 during subsequent operation of the EDU. Only program code and data stored in the CPU's scratch-pad RAM that does NOT affect secure operation of the EDU can be changed after the security lock bit is set. Any attempt to externally interrogate the CPU to discover the 64-bit encryption key causes erasure of the key, rendering the contents of RAM 42 useless. Even if the encrypted program code and data are thereafter read back from the RAM, they cannot be decrypted without the 64-bit encryption mode key, which was lost when it was erased.
CPU 36 selects a specific storage location for a seed key within RAM 42 by setting 16-bit address lines 62. (Address bit A0 is set externally by the data device to determine whether the status or data registers are active.) The address set on address lines 62 determines the location to which seed keys are initially written and subsequently retrieved over data lines 58. Data lines 58 comprise data bits D0 through D7. When the seed keys are originally stored in RAM 42 during manufacture of the EDU, they are input to CPU 36 over UART lines 48 and 50 in an encrypted form, from an external storage device (not shown). The seed keys are not known to anyone. Data to be encrypted are conveyed to I/O bus 32 over data lines 44 and 46. These data are conveyed from the bus to CPU 36 over lines 46.
Although CPU 36 controls the operation of potted module 30, the actual encryption and decryption of data during a communication session are implemented by a data encryption standard (DES) coprocessor 38. DES coprocessor 38 is designed to encrypt and decrypt 64-bit blocks of data using the algorithm specified in the Federal Information Processing Data Encryption Standard (46). A transfer rate of approximately 807 kilobytes per second is implemented by DES coprocessor 38 under the control of a 10 MHz clock circuit 40, which is coupled to the DES coprocessor by lines 64. Data are transferred between CPU 36 and DES coprocessor 38 over lines 56.
In the preferred embodiment, a Western Digital™ type DES WD20C03A integrated circuit is used for DES coprocessor 38, although other such devices are available from other suppliers. Lines 60 convey two address bits A0 through A1 and write (WR) and read (RD) signals between DES coprocessor 38 and CPU 36.
The appropriate program steps for controlling EDU 36 are loaded into RAM 42 at the time potted module 30 is manufactured. In addition, RAM 42 is then loaded with one or more sets of seed keys. Any EDU can establish secure encrypted communications with any other EDU using the set of public seed keys that are stored in every EDU manufactured. Also stored within RAM 42 can be one or more private sets of seed keys. As explained above, these private sets of seed keys are used for initiating secure communication with another EDU that is a member of the same private network, and thus has the same private set of seed keys stored within its RAM 42.
In the preferred embodiment, there are only three seed keys for each set. Each of the three seed keys comprises 8 bytes, for a total of 64 bits/seed key. The first seed key is not changed during the process used to determine the portion of the DEK, and thus serves to encrypt a header that includes the pointer randomly generated by the EDU. During the determination of a portion of the DEK, registers initially loaded with the second and third seed keys are used to store intermediate values, as will be apparent from the discussion that follows. As will be apparent to those of ordinary skill in the art, a different number of seed keys could alternatively be used by each EDU in determining the DEK that will be used during a current encrypted communication session.
RAM 42 is also used to store status registers that comprise four organization ID bytes, two network cyclic redundancy check bytes, and two optional flag bytes. In addition, the memory holds eight non-encrypted registers, which comprise two bytes identifying the EDU software version and six bytes that are presently not used, and eight encrypted registers. These encrypted registers hold the network CRC (two bytes), and two bytes representing the key sequence CRC. The remaining four bytes of the encrypted register comprise the EDU ID. In addition, eight bytes are reserved in a header register assignment for the DEK pointer that is randomly generated by the EDU at the start of each communication session.
In FIG. 3, a flow chart 80 identifies the steps taken by the EDU at the station called by another site, in establishing secure communications. Assuming that EDU 28 is the recipient of a call initiated by EDU 20 (referring to FIG. 1), EDU 28 is the "called EDU" in block 82 of flow chart 80. As shown in a block 84, CPU 36 within EDU 28 responds upon receiving an initial request to communicate from EDU 20, by generating a 64-bit random pointer 1. As noted above, the randomly generated pointer is assigned to 8 bytes in the header that will be encrypted by EDU 28 for transmission back to EDU 20, the "calling EDU." In a call to a fetch key subroutine indicated in a block 86, a portion of the DEK is determined using pointer 1. Once this portion of the DEK is determined, it is temporarily stored in the scratchpad RAM of CPU 36.
At this point, it is appropriate to turn to FIG. 5, which shows the steps of the fetch key subroutine used to determine the portion of the DEK. This subroutine is disclosed in a flow chart 150, which begins with a block 152, in which the fetch key subroutine is initiated. In a block 154, DES coprocessor 38 is loaded with the appropriate set of seed keys for the network over which secure communication is being initiated. As explained above, the seed keys loaded at this step can either be the public set of seed keys, with which all EDUs are provided, or may be a specific private set of seed keys unique to a particular network. The set selected depends upon the network ID transmitted by the calling EDU.
In a block 156, the register used to store the portion of the data key that will be developed by the called EDU is cleared, as well as the two bytes that will be used to store the key sequence CRC. These registers are cleared in preparation for loading new values into each register after the called EDU develops its portion of the data encryption key to be used for this communication session.
A first byte of the pointer (pointer 1) randomly generated before the fetch key routine was called is obtained and stored as a DES cycle counter in a block 158. As will be evident from the following explanation, CPU 36 uses successive bytes of this pointer as counter-indices to determine the number of times that a loop is implemented to develop the portion of the DEK. The loop starts with a block 160 in which a CBC method employees the three selected seed keys using DES coprocessor 38 in a ring sequence. Details of this ring sequence are shown in FIG. 6.
Turning now to FIG. 6, in a block 182, the third seed key is initially assigned to the data register that will eventually hold a portion of the DEK. Subsequently, this register is used to store a succession of intermediate values, each time that a loop 180 shown in FIG. 6 is repeated. Next, as indicated by a block 184, the value assigned to the data register in the preceding step is logically XORed with the second seed key. As indicated in a block 186, the second seed key is loaded into an initial vector register. After XORing the data register with the second seed key, the result replaces the second seed key in the initial vector register. Then, as indicated by a block 188, the DES coprocessor is used to encrypt the result of the preceding XOR operation with the first seed key (which is also referred to as the header encrypt key), as indicated in a block 190. The result of this encryption operation replaces the value in the data register, as indicated in a block 192, setting up loop 180 for another repeat cycle.
Referring back to FIG. 5, before loop 180 is repeated, a block 162 provides for decrementing the DES cycle counter. Thereafter, a decision block 164 determines if the DES cycle counter is equal to zero. If not, the logic returns to block 160, to repeat loop 180 in FIG. 6.
To ensure that the CBC method is clearly understood, it may be helpful to work through loop 180 a second time. Referring back to FIG. 6, the value that replaced the third seed key in the data register in block 182 is XORed with the value in the initial vector register. The new result from the current XOR operation replaces the value previously stored in the initial vector register and is then encrypted using the header encryption key, producing a new value that is assigned to the data register in block 182.
As indicated by decision block 164 in FIG. 5, loop 180 cyclically repeats until the cycle counter equals zero, at which point the logic proceeds to a block 166. In block 166, the data produced from encrypting the value in the initial vector register with the first seed key during the last time through the loop are XORed with the contents of the DEK register, which stores the result produced from the last sequence of repetitive loops 180. Following the first sequence of loops corresponding in number to the first byte of the pointer, the value in the DEK cycle counter is zero, so the result of the last encryption operation becomes the value in the DEK register. However, thereafter, as the sequence of loops is repeated for successive times determined by each of the remaining bytes of the pointer, the previous value in the DEK register is XORed with the final result of loop 180, in accordance with block 166.
A decision block 168 determines if the last byte of the point has been used as an index for the DES cycle counter, and if not, the next byte from the pointer is obtained and stored as the index for the DES cycle counter in a block 170, leading back to repeat the sequence of loops in block 160. When the last byte of the pointer has been used, the last encrypted value is XORed with the value last stored in the DEK register and the result is the portion of the DEK developed by the called EDU. A block 172 then returns to flow chart 80 in FIG. 3.
Following a return from the fetch key subroutine, flow chart 80 proceeds with a block 88 in which a network CRC, the key sequence CRC, the EDU ID for the called EDU, the EDU software version, and pointer 1 are all encrypted using the header encrypt key, i.e., the first seed key, by DES coprocessor 38, producing an encrypted key header. In a block 90, the encrypted key header is transmitted to the calling EDU, which in the example, is EDU 20. While EDU 28 is determining one portion of the DEK, EDU 20 is also carrying out a corresponding operation to determine another portion of the DEK, as explained below.
In a block 92, EDU 28 receives an encrypted key header from EDU 20. Thereafter, as provided in a block 94, DES coprocessor 38 in EDU 28 decrypts the encrypted key header received from EDU 20, using the header encrypt key, i.e., the first seed key, yielding the net CRC, another key sequence CRC, a pointer 2 (which was determined by EDU 20 as a randomly generated value), the EDU software version used by EDU 20, and the ID of EDU 20.
In accordance with a block 96, EDU 28 calls the fetch key subroutine and repeats the same series of steps in loop 180, using successive bytes of pointer 2 as the DES loop counter indices. After proceeding through all the requisite repetitions of the loop determined by the bytes of pointer 2, CPU 36 in EDU 28 will have determined the other portion of the DEK that is based upon pointer 2. Since pointer 2 was randomly generated by EDU 20, this portion of the DEK is also in a sense, a randomly generated value--one of literally many quadrillions of possible 64 bit values.
A decision block 98 determines if the key sequence CRC for the portion of the DEK determined as a function of pointer 2 is correct. In this determination, the decrypted key sequence CRC obtained from EDU 20 in the encrypted header received is compared with the key sequence CRC that EDU 28 computed while determinating the portion of the DEK based upon pointer 2. If the two key sequence CRCs are not equal, the logic proceeds to a block 100, where an error is indicated that causes EDU 28 to cease further attempts at encrypted communication with EDU 20, as noted in a block 102.
However, assuming that the result of decision block 98 shows a match between the two key sequence CRC values, a block 104 provides for logically combining the two portions of the DEK determined by EDU 20 and EDU 28, using an XOR operation to produce the final DEK. This final DEK is then used to encrypt and decrypt data transmitted back and forth between EDU 20 and 28 during the current communication session. After all communications are completed, a block 106 resets EDU 28 and then proceeds to block 102 to terminate further communication.
Referring now to FIG. 4, a flow chart 110 illustrates the steps carried out by EDU 20, which was the calling EDU, as indicated in a block 112. In a block 114, EDU 20 receives the encrypted key header from EDU 28. In a block 116, EDU 20 decrypts the encrypted key header that it received using the first seed key, i.e., the header encrypt key, by providing that first seed key as a key input to its DES coprocessor 38. In addition, the decryption of the encrypted key header yields the NET CRC and the key sequence CRC for the portion of the DEK determined by the called EDU. The EDU software version used by the called EDU and its ID are also decrypted. More importantly, in block 116, the value of pointer 1, which was randomly generated by EDU 28, is decrypted.
Next, in a decision block 118, EDU 20 determines if the net CRC decrypted in block 116 corresponds to the net CRC stored in its register. This step ensures that two EDUs entering into a secure communication link are indeed members of the same private network. If the net CRC received from the called EDU does not match that of the calling EDU in decision block 118, the logic proceeds to a block 122, to indicate an error, and then to a block 124, which provides for stopping further communications between the two EDUs. However, assuming that the net CRCs match, a decision block 120 next determines if the decrypted EDU ID of the called EDU matches the expected EDU ID. Since the encryption of the EDU ID is carried out automatically by EDU 28 and cannot be modified or affected by external signals or reprogramming, it is virtually impossible for a third party to use another EDU to break into a communication link being established and/or take part in establishing secure communications, since the encrypted EDU ID that is returned to the station that initiated the communication would then not match the expected EDU ID. A negative response to decision block 120 again causes the logic to proceed to block 122, indicating an error has occurred, and detection of such an error causes the attempted communication link to be halted in block 124.
However, if the decrypted called EDU ID matches the expected EDU ID in decision block 120, the fetch key subroutine is called in a block 126. In this instance, pointer 1 that was decrypted in block 116 provides the successive bytes for the DES counter indices, which determine the number of repetitions of loop 180. The fetch key subroutine as implemented in block 126 thus yields a value for the portion of the data encryption key determined by EDU 28, which is stored as value DEK1 in the scratch-pad RAM of CPU 36. A decision block 128 determines if the key sequence CRC computed by EDU 20 when determining DEK1 matches that decrypted in block 116. If not, the logic proceeds to block 122 to indicate an error, which again causes termination of communications between the two EDUs. If the key sequence CRCs match, the logic proceeds to a block 130, wherein EDU 20 randomly generates its own 64-bit pointer 2.
The fetch key subroutine is called in a block 132, using pointer 2 as the pointer to provide the successive indices for the DES counter loops. The fetch key routine returns the portion of the session DEK determined by EDU 20, which is stored as a value DEK2.
In a block 134, CPU 36 in EDU 20 encrypts the network CRC, the key sequence CRC corresponding to the CRC for the value DEK2, its EDU ID, the EDU software version that EDU 20 is using, and the value of pointer 2, using seed key 1 as the encryption key input to DES coprocessor 38. The result is an encrypted key header which, in a block 136, is transmitted to EDU 28. Finally, in a block 138, CPU 36 of EDU 20 carries out the XOR operation to logically combine DEK1 and DEK2, yielding the final session DEK, i.e., the data encryption key used to encrypt and decrypt data transmitted between the two EDUs during the current session. After all communications are completed, a block 140 resets EDU 20, and the logic proceeds to block 124, wherein further communication between the two EDUs is halted.
During the process of establishing secure communications, neither of the two EDUs linking together transmits DEK1 or DEK2 in the clear or in an encrypted form. Further, either the public set or one of the private sets of seed keys is used for determining the first and second portions of the current session DEK. Consequently, only EDUs provided with the same control program and the same set of seed keys used to encrypt the transmitted encrypted key header are able to recover the first or second pointers, which are necessary to determine the first and second portions of the DEK, respectively. Since the software program controlling the operation of the EDUs requires that the EDU ID be encrypted as part of the key header information that is exchanged between two EDUs, a third EDU cannot be used to surreptitiously substitute for one of the intended EDUs by bridging the line during the establishment of the secured communication link. Consequently, only the EDUs at the receiving and transmitting stations comprising an intended link are able to communicate so as to establish a session DEK and thereafter carry on secure communications.
Furthermore, it will be apparent that only an EDU having the same session DEK used to encrypt data at one station can decrypt the data at another. Finally, although any EDU can establish secure communications with any other EDU using the same public set of seed keys, only EDUs using the same set of private seed keys can establish a session DEK to communicate with each other.
While the DES algorithm is used in the preferred form of the present invention for encrypting data once the DEK has been determined, it will be appreciated that other encryption algorithms or encryption integrated circuits, such as Skipjack (also known as Clipper) can be employed. It should also be apparent that the encrypted key header need not include the EDU ID, it a lower level of security is acceptable, for example, in a local network of EDUs exclusively using private sets of seed keys. These and other modifications to the present invention will be apparent to those of ordinary skill in the art. Accordingly, it is not intended that the invention be in any way limited by the description of the preferred embodiment and modifications thereto, but instead that the scope of the invention be determined entirely by reference to the claims that follow.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US4218582 *||Oct 6, 1977||Aug 19, 1980||The Board Of Trustees Of The Leland Stanford Junior University||Public key cryptographic apparatus and method|
|US4578531 *||Jun 9, 1982||Mar 25, 1986||At&T Bell Laboratories||Encryption system key distribution method and apparatus|
|US4607137 *||Apr 13, 1984||Aug 19, 1986||U.S. Philips Corporation||Method of distributing and utilizing enciphering keys|
|US4677670 *||Jul 1, 1985||Jun 30, 1987||Henderson Jr Paul B||Paired-secure message identification controller for computers and the like|
|US4771429 *||Sep 18, 1986||Sep 13, 1988||Abbott Laboratories||Circuit combining functions of cyclic redundancy check code and pseudo-random number generators|
|US4771462 *||Feb 18, 1987||Sep 13, 1988||Hannan Forrest A||Communication port encryption/decryption method and apparatus|
|US4809327 *||Sep 14, 1987||Feb 28, 1989||Unisys Corporation||Encrtption of messages employing unique control words and randomly chosen encryption keys|
|US4876716 *||Aug 24, 1987||Oct 24, 1989||Nec Corporation||Key distribution method|
|US4888802 *||Jun 17, 1988||Dec 19, 1989||Ncr Corporation||System and method for providing for secure encryptor key management|
|US4910776 *||Feb 24, 1989||Mar 20, 1990||Miu Automation||Encryption printed circuit board|
|US4985919 *||Sep 27, 1989||Jan 15, 1991||Aisin Seiki Kabushiki Kaisha||Secure communication control system|
|US5001750 *||Mar 7, 1990||Mar 19, 1991||Aisin Seiki Kabushiki Kaisha||Secret communication control apparatus|
|US5003597 *||Dec 21, 1989||Mar 26, 1991||Xerox Corporation||Method and apparatus for data encryption|
|US5029208 *||Mar 5, 1990||Jul 2, 1991||Nec Corporation||Cipher-key distribution system|
|US5073935 *||Dec 17, 1990||Dec 17, 1991||Jose Pastor||Method for secure communication|
|US5081678 *||Jun 28, 1989||Jan 14, 1992||Digital Equipment Corporation||Method for utilizing an encrypted key as a key identifier in a data packet in a computer network|
|US5124117 *||Mar 25, 1991||Jun 23, 1992||Matsushita Electric Industrial Co., Ltd.||Cryptographic key distribution method and system|
|US5144665 *||Feb 21, 1991||Sep 1, 1992||Hitachi, Ltd.||Cryptographic communication method and system|
|US5146498 *||Jan 10, 1991||Sep 8, 1992||Motorola, Inc.||Remote key manipulations for over-the-air re-keying|
|US5204901 *||Aug 1, 1991||Apr 20, 1993||General Electric Company||Public key cryptographic mechanism|
|US5222136 *||Jul 23, 1992||Jun 22, 1993||Crest Industries, Inc.||Encrypted communication system|
|US5222141 *||Mar 25, 1992||Jun 22, 1993||Motorola, Inc.||Apparatus and method for encoding data|
|US5237611 *||Jul 23, 1992||Aug 17, 1993||Crest Industries, Inc.||Encryption/decryption apparatus with non-accessible table of keys|
|USRE33189 *||Sep 18, 1989||Mar 27, 1990||Communications Satellite Corporation||Security system for SSTV encryption|
|1||*||A. Konheim, Cryptography: A Primer, John Wiley and Sons, Inc., 1981, pp. 288 293 and 331 347.|
|2||A. Konheim, Cryptography: A Primer, John Wiley and Sons, Inc., 1981, pp. 288-293 and 331-347.|
|3||B. Schneier, "Untangling Public-Key Cryptography," Dr. Dobb's Journal, May 1992, 8 pages.|
|4||*||B. Schneier, Untangling Public Key Cryptography, Dr. Dobb s Journal, May 1992, 8 pages.|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US5563945 *||Feb 28, 1994||Oct 8, 1996||Motorola Inc.||Data storage device|
|US5606613 *||Dec 22, 1994||Feb 25, 1997||Pitney Bowes Inc.||Method for identifying a metering accounting vault to digital printer|
|US5734720 *||Jun 7, 1995||Mar 31, 1998||Salganicoff; Marcos||System and method for providing digital communications between a head end and a set top terminal|
|US5748739 *||Oct 16, 1995||May 5, 1998||International Computers Limited||Access control for sensitive functions|
|US5768381 *||Sep 14, 1994||Jun 16, 1998||Chantilley Corporation Limited||Apparatus for key distribution in an encryption system|
|US5799089 *||Oct 7, 1994||Aug 25, 1998||Irdeto B.V.||System and apparatus for blockwise encryption/decryption of data|
|US5958073 *||May 30, 1997||Sep 28, 1999||Motorola, Inc.||Reliability enhanced processing system and method for optimizing|
|US6058477 *||Mar 23, 1998||May 2, 2000||Sony Corporation||System and method for authentication, and device and method for authentication|
|US6169802 *||Dec 17, 1996||Jan 2, 2001||Motorola, Inc.||Dynamic private key security system for personal messaging devices|
|US6275939||Sep 3, 1998||Aug 14, 2001||Westcorp Software Systems, Inc.||System and method for securely accessing a database from a remote location|
|US6944762||Sep 3, 1999||Sep 13, 2005||Harbor Payments Corporation||System and method for encrypting data messages|
|US7023991 *||Nov 17, 2000||Apr 4, 2006||Sony Corporation||Method and apparatus for digital signal processing|
|US7039938||Dec 13, 2002||May 2, 2006||Sony Corporation||Selective encryption for video on demand|
|US7058179 *||Mar 29, 2000||Jun 6, 2006||Sony Corporation||Method and system for a secure high bandwidth bus in a transceiver device|
|US7120250 *||Dec 13, 2002||Oct 10, 2006||Sony Corporation||Content distribution for multiple digital rights management|
|US7124303||Jan 2, 2002||Oct 17, 2006||Sony Corporation||Elementary stream partial encryption|
|US7127619||Jan 2, 2002||Oct 24, 2006||Sony Corporation||Decoding and decryption of partially encrypted information|
|US7139398||Jan 2, 2002||Nov 21, 2006||Sony Corporation||Time division partial encryption|
|US7151831||Jan 2, 2002||Dec 19, 2006||Sony Corporation||Partial encryption and PID mapping|
|US7151833||Mar 19, 2003||Dec 19, 2006||Sony Corporation||Selective encryption to enable trick play|
|US7155012||Oct 18, 2002||Dec 26, 2006||Sony Corporation||Slice mask and moat pattern partial encryption|
|US7215770||Mar 31, 2003||May 8, 2007||Sony Corporation||System and method for partially encrypted multimedia stream|
|US7218738 *||Oct 18, 2002||May 15, 2007||Sony Corporation||Encryption and content control in a digital broadcast system|
|US7233669||Dec 13, 2002||Jun 19, 2007||Sony Corporation||Selective encryption to enable multiple decryption keys|
|US7263187||Apr 21, 2004||Aug 28, 2007||Sony Corporation||Batch mode session-based encryption of video on demand content|
|US7286667||Sep 15, 2003||Oct 23, 2007||Sony Corporation||Decryption system|
|US7287168||Jun 26, 2006||Oct 23, 2007||Sony Corporation||Partial encryption and PID mapping|
|US7292690||Oct 18, 2002||Nov 6, 2007||Sony Corporation||Video scene change detection|
|US7292691||Nov 25, 2002||Nov 6, 2007||Sony Corporation||Progressive video refresh slice detection|
|US7292692||Jan 29, 2004||Nov 6, 2007||Sony Corporation||Content scrambling with minimal impact on legacy devices|
|US7302058||Jan 22, 2004||Nov 27, 2007||Sony Corporation||Method and apparatus for securing control words|
|US7302059||Oct 18, 2002||Nov 27, 2007||Sony Corporation||Star pattern partial encryption|
|US7336787||Jan 2, 2002||Feb 26, 2008||Sony Corporation||Critical packet partial encryption|
|US7343013||Apr 13, 2004||Mar 11, 2008||Sony Corporation||Composite session-based encryption of video on demand content|
|US7346163||Mar 16, 2004||Mar 18, 2008||Sony Corporation||Dynamic composition of pre-encrypted video on demand content|
|US7350082||Nov 13, 2002||Mar 25, 2008||Sony Corporation||Upgrading of encryption|
|US7376233||Oct 18, 2002||May 20, 2008||Sony Corporation||Video slice and active region based multiple partial encryption|
|US7409702||Mar 20, 2003||Aug 5, 2008||Sony Corporation||Auxiliary program association table|
|US7483871||Oct 1, 2002||Jan 27, 2009||Pinpoint Incorporated||Customized electronic newspapers and advertisements|
|US7500098 *||Mar 19, 2004||Mar 3, 2009||Nokia Corporation||Secure mode controlled memory|
|US7502466||Jan 6, 2005||Mar 10, 2009||Toshiba Corporation||System and method for secure communication of electronic documents|
|US7508942||Oct 22, 2003||Mar 24, 2009||Sony Corporation||Multi-process descrambler|
|US7530084||May 28, 2002||May 5, 2009||Sony Corporation||Method and apparatus for synchronizing dynamic graphics|
|US7536540||Nov 21, 2005||May 19, 2009||Sandisk Corporation||Method of hardware driver integrity check of memory card controller firmware|
|US7555464||Mar 1, 2006||Jun 30, 2009||Sony Corporation||Multiple DRM management|
|US7565546||Jan 23, 2004||Jul 21, 2009||Sony Corporation||System, method and apparatus for secure digital content transmission|
|US7567939||Aug 8, 2006||Jul 28, 2009||Sony Corporation||Method and apparatus for implementing revocation in broadcast networks|
|US7620180||Mar 16, 2004||Nov 17, 2009||Sony Corporation||Preparation of content for multiple conditional access methods in video on demand|
|US7630986||Oct 27, 2000||Dec 8, 2009||Pinpoint, Incorporated||Secure data interchange|
|US7653802||Aug 27, 2004||Jan 26, 2010||Microsoft Corporation||System and method for using address lines to control memory usage|
|US7702589||Jul 30, 2002||Apr 20, 2010||Sony Corporation||Method for simulcrypting scrambled data to a plurality of conditional access devices|
|US7711115||Oct 21, 2003||May 4, 2010||Sony Corporation||Descrambler|
|US7724907||Mar 12, 2003||May 25, 2010||Sony Corporation||Mechanism for protecting the transfer of digital content|
|US7730300||Mar 11, 2003||Jun 1, 2010||Sony Corporation||Method and apparatus for protecting the transfer of data|
|US7734926||Aug 27, 2004||Jun 8, 2010||Microsoft Corporation||System and method for applying security to memory reads and writes|
|US7743409||Dec 27, 2005||Jun 22, 2010||Sandisk Corporation||Methods used in a mass storage device with automated credentials loading|
|US7747853||Mar 31, 2004||Jun 29, 2010||Sony Corporation||IP delivery of secure digital content|
|US7748031||Dec 27, 2005||Jun 29, 2010||Sandisk Corporation||Mass storage device with automated credentials loading|
|US7751560||Jun 26, 2006||Jul 6, 2010||Sony Corporation||Time division partial encryption|
|US7752407 *||Sep 7, 2006||Jul 6, 2010||Altera Corporation||Security RAM block|
|US7765567||Dec 13, 2002||Jul 27, 2010||Sony Corporation||Content replacement by PID mapping|
|US7822993 *||Aug 27, 2004||Oct 26, 2010||Microsoft Corporation||System and method for using address bits to affect encryption|
|US7823174||Apr 13, 2004||Oct 26, 2010||Sony Corporation||Macro-block based content replacement by PID mapping|
|US7853600||May 20, 2005||Dec 14, 2010||Pinpoint, Incorporated||System and method for providing access to video programs and other data using customer profiles|
|US7853980||Jan 23, 2004||Dec 14, 2010||Sony Corporation||Bi-directional indices for trick mode video-on-demand|
|US7864954||Mar 26, 2001||Jan 4, 2011||Impsys Ab||Method and system for encryption and authentication|
|US7895616||Feb 27, 2002||Feb 22, 2011||Sony Corporation||Reconstitution of program streams split across multiple packet identifiers|
|US7895617||Jan 31, 2006||Feb 22, 2011||Sony Corporation||Content substitution editor|
|US7925016||Nov 13, 2007||Apr 12, 2011||Sony Corporation||Method and apparatus for descrambling content|
|US7929696||Jun 5, 2006||Apr 19, 2011||Sony Corporation||Receiving DBS content on digital TV receivers|
|US7934049||Dec 22, 2005||Apr 26, 2011||Sandisk Corporation||Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory|
|US8041190||Dec 1, 2005||Oct 18, 2011||Sony Corporation||System and method for the creation, synchronization and delivery of alternate content|
|US8108691||Dec 22, 2005||Jan 31, 2012||Sandisk Technologies Inc.||Methods used in a secure memory card with life cycle phases|
|US8185921||Feb 28, 2006||May 22, 2012||Sony Corporation||Parental control of displayed content using closed captioning|
|US8220039||Feb 26, 2010||Jul 10, 2012||Sandisk Technologies Inc.||Mass storage device with automated credentials loading|
|US8259935 *||May 11, 2007||Sep 4, 2012||John Thomas Riedl||Secure communication method and system|
|US8321686||Dec 22, 2005||Nov 27, 2012||Sandisk Technologies Inc.||Secure memory card with life cycle phases|
|US8423788||Feb 7, 2005||Apr 16, 2013||Sandisk Technologies Inc.||Secure memory card with life cycle phases|
|US8423794||Jun 20, 2007||Apr 16, 2013||Sandisk Technologies Inc.||Method and apparatus for upgrading a memory card that has security mechanisms for preventing copying of secure content and applications|
|US8438401 *||Sep 22, 2009||May 7, 2013||Raytheon BBN Technologies, Corp.||Device and method for securely storing data|
|US8488788||Dec 15, 2009||Jul 16, 2013||Sony Corporation||Method for simulcrypting scrambled data to a plurality of conditional access devices|
|US8572408||Oct 11, 2004||Oct 29, 2013||Sony Corporation||Digital rights management of a digital device|
|US8645988||Mar 9, 2006||Feb 4, 2014||Sony Corporation||Content personalization for digital content|
|US8667525||Mar 9, 2006||Mar 4, 2014||Sony Corporation||Targeted advertisement selection from a digital stream|
|US8670566||May 12, 2006||Mar 11, 2014||Blackberry Limited||System and method for exchanging encryption keys between a mobile device and a peripheral output device|
|US8681976 *||May 12, 2011||Mar 25, 2014||Apple Inc.||System and method for device dependent and rate limited key generation|
|US8818896||Apr 1, 2005||Aug 26, 2014||Sony Corporation||Selective encryption with coverage encryption|
|US8966284||Nov 21, 2005||Feb 24, 2015||Sandisk Technologies Inc.||Hardware driver integrity check of memory card controller firmware|
|US8989242 *||Feb 7, 2012||Mar 24, 2015||Nec Corporation||Encoding/decoding processor and wireless communication apparatus|
|US9071426||Nov 29, 2013||Jun 30, 2015||Blackberry Limited||Generating a symmetric key to secure a communication link|
|US20040158721 *||Jan 23, 2004||Aug 12, 2004||Candelore Brant L.||System, method and apparatus for secure digital content transmission|
|US20050210287 *||Mar 19, 2004||Sep 22, 2005||Nokia Corporation||Secure mode controlled memory|
|US20090161866 *||May 11, 2007||Jun 25, 2009||John Thomas Riedl||Secure communication method and system|
|US20090196421 *||Oct 30, 2008||Aug 6, 2009||Fujitsu Limited||Method of encryption and decryption, transmitter, and receiver in radio communication system|
|US20110072279 *||Sep 22, 2009||Mar 24, 2011||Bbn Technologies Corp.||Device and method for securely storing data|
|US20110113248 *||May 12, 2011||Kocher Paul C||Leak-Resistant Cryptographic Token|
|US20120017089 *||Jan 19, 2012||Kocher Paul C||Cryptographic token with leak-resistant key derivation|
|US20120063597 *||Sep 15, 2010||Mar 15, 2012||Uponus Technologies, Llc.||Apparatus and associated methodology for managing content control keys|
|US20120288089 *||Nov 15, 2012||Apple Inc.||System and method for device dependent and rate limited key generation|
|US20130067215 *||Mar 14, 2013||AvaLAN Wireless Systems, Inc.||System for Enabling a Virtual Private Network ("VPN") Over an Unsecured Network|
|US20130322501 *||Feb 6, 2012||Dec 5, 2013||Nec Corporation||Encoding/decoding processor and wireless communication apparatus|
|USRE39622 *||May 2, 2002||May 8, 2007||Sony Corporation||System and method for authentication, and device and method for authentication|
|WO2000014918A1 *||Sep 3, 1999||Mar 16, 2000||Westcorp Software Systems Inc||System and method for encrypting data messages|
|WO2001074007A1 *||Mar 26, 2001||Oct 4, 2001||Impsys Ab||Method and system for encryption and authentication|
|WO2005060148A1 *||Jul 2, 2004||Jun 30, 2005||Tuhh Tech Gmbh||Method and device for generating a secret key|
|U.S. Classification||380/262, 380/244, 380/46, 380/284, 713/194, 713/181|
|Cooperative Classification||H04L9/16, H04L2209/34, H04L9/0844, H04L2209/60|
|Dec 2, 1993||AS||Assignment|
Owner name: CREST INDUSTRIES, INC., WASHINGTON
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HOSKINSON, JOHN D.;REEL/FRAME:006791/0363
Effective date: 19931122
|Apr 30, 1996||CC||Certificate of correction|
|May 11, 1998||AS||Assignment|
Owner name: CRESTECH, LLC, WASHINGTON
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CREST INDUSTRIES, INC.;REEL/FRAME:009178/0823
Effective date: 19980417
|Dec 7, 1998||FPAY||Fee payment|
Year of fee payment: 4
|Apr 1, 2003||FPAY||Fee payment|
Year of fee payment: 8
|Mar 16, 2007||FPAY||Fee payment|
Year of fee payment: 12