Randomness and random numbers have traditionally been used for a variety of purposes such as games of chance. With the advent of computers, people recognized the need for a means of introducing randomness into a computer program and computer generated output. Surprising as it may seem, however, it is difficult to get a computer to do something by chance. A computer running a program follows its instructions blindly and is therefore completely predictable.
Software engineers ordinarily choose to introduce randomness into computer algorithms in the form of pseudo-random number generators. As the name suggests, pseudo-random numbers are not truly random. Rather, they are computed from mathematical formulae or simply taken from a pre-calculated list. A lot of research has gone into pseudo-random number theory and modern algorithms for generating them are so good that the numbers look as if they are purely random. Pseudo-random numbers, however, have the characteristic that they are deterministic, meaning they can be predicted if one knows where in the sequence the first number is taken or one analyzes a sufficiently long sequence of pseudo-random numbers. For some purposes, predictability is a good characteristic, for others it is not.
Random numbers are used for computer games as well as for more serious applications such as the generation of cryptographic keys and for some classes of scientific experiments. For scientific experiments, it is convenient that a series of random numbers can be replayed for use in several experiments, and pseudo-random numbers are well suited for this purpose. For cryptographic use, however, it is important that the numbers used to generate keys are not just seemingly random; they should be truly unpredictable.
Cryptographic algorithms come in a variety of flavors. Some are strong (meaning difficult to crack) but make substantial demands on processing power and key management. Others are weak (meaning easier to crack) but generally less demanding and therefore better suited for some applications. All strong cryptography requires true random numbers to generate keys, but the number of random numbers required depends on the encryption scheme. The strongest possible method, One Time Pad (OTP for short) encryption, is the most demanding of all; it requires as many random bits as there are bits of information to be encrypted.
True random numbers are typically generated by sampling and processing a source of entropy outside the computer. A source of entropy can be very simple, like the little variations in somebody's mouse movements or in the amount of time between keystrokes. In practice, however, it can be tricky to use user input as a source of entropy. Keystrokes, for example, are often buffered by the computer's operating system, meaning that several keystrokes are collected before they are sent to the program waiting for them. To the program, it will seem as though the keys were pressed almost simultaneously. Additionally, the behavior of a single user may be cyclical or predictable over a period of time. A good source of entropy is a radioactive source. The points in time at which a radioactive source decays are completely unpredictable, and can be sampled and fed into a computer, avoiding any buffering mechanisms in the operating system. Another source of entropy could be atmospheric noise from a radio, or even just background noise from an office or laboratory.
Electronic data such as a file or packet can be encrypted by means of an algorithm acting on a cryptographic key at one end of a communication path. Where the algorithm is symmetric, the same cryptographic key is used to decrypt the data at the other end of the communication path. Where the algorithm is asymmetric, two keys are required—an encrypting key to encrypt the data and a paired key to decrypt the data. In many common paired key schemes the encrypting key is publicly available while the decrypting key is a private one. An adversary able to intercept a communication and desiring to break an encryption must acquire the decryption key and calculate or guess its value. If an asymmetric algorithm is in play, the decrypting key is not shared or transferred so the adversary will likely not be able to acquire the key. However, the adversary may well have access to the encrypting key and, with time and resources, will be able to calculate the value of the decrypting key. If a symmetric algorithm is in play, the adversary will have a much more difficult time calculating or guessing the value of the key. However, the fact that the key in symmetric algorithms has to be shared renders the key susceptible to interception by an adversary.
Once an adversary has guessed, calculated, or acquired a decryption key, the adversary will have free access to encrypted data until the encryption key is changed. If the encryption key is changed based upon a predictable pattern, the adversary, given time, will be able to predict when the change will occur as well as the value of any new pseudo-random key.
What is needed is a method for allowing programming at each end of a communication path to simultaneously generate identical cryptographic keys in a manner that is not predictable to others. In this way a key does not have to be transferred and is therefore much less likely to be acquired nefariously. In the event a third party is able to calculate a key, the method should allow the same programming to periodically generate, in a manner not predictable to others, new cryptographic keys identical to each other, but different from the previously generated keys. The new keys can then be used to obscure and reveal communications between each end of the communication path. Providing an additional layer or layers of security, the method or methods used to obscure the communication should be randomly chosen using the keys.
I
The terms data stream and network communication will be defined and distinguished in the sections to follow. Obscuring means altering network communications from an expected form. This can include encrypting. It can also include altering the manner in which the network communication is transmitted. Multiple methods may be employed to obscure the same network communication. A number of possible methods for obscuring will be described. Revealing, then, means to restore an obscured network communication to its expected form.
E
Computers 12 and 14 represent generally any devices capable of transmitting and receiving electronic data. While shown as a desktop and laptop computers, devices 12 and 14 could, for example, be personal digital assistants or cellular telephones. Network interface devices 16 and 18 represent generally any combination of hardware and/or programming capable of transmitting and receiving network communications. Link 20 represents generally any combination of hardware and/or programming capable of receiving network communication from computers 12 and 14 and from external network 26 and routing the communication to its intended destination. Where the communication is between computers 12 and 14, link 20 functions as a hub. Where communication is between computer 12 or 14 and external network 26, link 20 functions as a router. The connections between link 20 and paths 22 and 24 are referred to as internal ports, and the connection between link 20 and path 28 to external network 26 is referred to as an external port.
Communication paths 22, 24, and 28 represent generally any medium for transmitting network communications. A path may be wireless or include one or more physical wires, optical cables or any other media through which data may be transmitted One path 22, 24, or 28 may use one medium, while another path may use a different medium. For example, path 24 may use a telephone line, path 22 may use cat-5 cable, and path 28 may use radio frequency.
N
If, for example, computer 12 wants to send data to external network 26, computer 12 places the data into a packet. The packet includes the source address, 192.168.1.2, and the destination address, 192.45.8.1. In a manner not described here, computer 12 can determine that the destination address is not on the same local area network, so computer 12 includes an intermediate address in the packet—the internal address for link 20—and sends the packet to link 20. Link 20 then rebroadcasts the packet through its external port to external network 26.
Where link 20 receives a packet addressed to computer 12 from external network 26, link 20 rebroadcasts the packet through each of its internal ports, Computers 12 and 14 each receive the packet and read the packet's destination address. Recognizing that it is not the intended destination, computer 14 ignores the packet. Computer 12, on the other hand, recognizes that it is the intended recipient of the packet and reads it.
In operation, link 20 continually and simultaneously broadcasts the same data stream through each of its internal ports. Computers 12 and 14 continually monitor the data stream ignoring some packets and reading others. The data stream broadcast by link 20 and monitored by computers 12 and 14 is generated as a result of various human interactions with computers 12 and 14 and external network 26. Given a sufficiently large number of human interactions contributing to the data stream, that stream is for all intents and purposes truly random and unpredictable. When broadcast by link 20, the data stream is instantaneously received by computers 12 and 14. Link 20 and computers 12 and 14 can simultaneously sample and process the data stream at each end of communication paths 22 and 24 allowing each to generate identical cryptographic keys.
The term network communications refers to all electronic communication between a network of two or more devices. In the example of
G
Embodiments of the present invention can be implemented in sync module 30 and state module 32 present at each node 12 and 14 as well as link 20. Referring back to
Referring now to
Referring back to
An intruder desiring to calculate a new key must have access to an existing key, the network data stream, and the algorithms used to calculate the new key. To further decrease the likelihood of an intruder's success, new keys are periodically generated.
As an example, a new key 50 used to obscure and reveal network communications for the interval 54 between T3 and T4 may be assembled from bytes taken from one or more packets 56 broadcast during the previous interval 54 between T2 and T3. The particular packet 56 used may be determined by old key 42—the key used to obscure and reveal network communications between T2 and T3. Alternately, the particular packet used may be fixed. For example it may always be the first or last packet of an interval 54.
It is extremely unlikely if not impossible for an intruder to successfully calculate a key. Because the keys are not transferred, they cannot be intercepted. Even if a key were calculated or guessed, that key is only valid for a short period of time. Possession of a single key provides insufficient knowledge to reveal data obscured through use of that key; knowledge of each obscuring method employing that key and, possibly, previous keys, must also be obtained before the key may be used to compromise data. Further, possession of a single key does not provide the means for predicting any future or prior key. Therefore, network communications obscured using keys generated in the manner described above are extremely secure when compared to currently exiting levels of security.
O
O
Referring first to
Each state module 32 obtains a key from a connected sync module 30. The keys obtained by each state module 32 are identical. Using the keys, state modules 32 simultaneously place switches 72 in position B, isolating nodes 12 and 14 and link 20 from paths 22 and 24. State modules 32 then cause spike generators 74 to send a voltage spike over paths 22 and 24 damaging or at least temporarily blinding intruder 76. State modules 32 then return switches 72 to position A.
With reference to
Referring next to
State modules 32 each include line selector 78. Line selector 78 represents any combination of hardware and programming capable of selecting the four wires of path 22 to be used to transmit and receive network communications. With reference to
For a subsequent interval, the line selections may be switched as follows:
State modules 32 use keys obtained from sync modules 30 to determine the line selections. As the keys are changed, so are the line selections. As long as identical keys are used by state modules 32, line selectors 78 will correctly select the same lines for complimentary purposes. For example, where a line is selected to transmit network communications from node 12, the same line is used by link 20 to receive the communication.
It is noted that this same technique for obscuring network communications is not limited to situations where Cat 5 cable is being used. For example, with wireless communication, one frequency may be used to transmit and another frequency to receive. The same technique described with reference to
Referring now to
To achieve these purposes, state modules 32 include encoders 80 and decoders 82. Encoders 80 represent any combination of hardware and/or programming capable of using a key to encode network communications. Decoders 82 represent any combination of hardware and/or programming capable of using a key to decode network communications. With reference to
As noted above, a method for encoding packets includes encryption. Another method includes adding meaningless data such as cryptographic nulls. A packet is made up of a series of bits—ones and zeros. A packet can be encoded by inserting meaningless bits into the packet at varying points. Encoders 80 do this in a manner determined using a key obtained from sync module 30. Decoders 82 use the same key to determine which of the bits in a packet are meaningless and then remove those bits.
Another method for encoding a packet involves adjusting the voltage levels used to transmit the packets. Typically two voltage levels are used. A zero is represented by one level and a one is represented by the other level.
In a protocol commonly referred to as 2B1Q (2 Binary 1 Quaternary), four voltage levels are used. Each level represents two bits.
Similarly, eight voltage levels could be used with each level representing three bits.
A data stream may be encoded by periodically switching the number of voltage levels used to represents bits in that data stream.
In addition to switching the number of voltage levels used, encoding can be accomplished by periodically switching the bias point. For example, where two voltage levels A and B are used, level A may be at ten volts relative to a ground and level B may be at fifteen volts. Relative to each other level A is at zero volts and level B is at five volts. The bias point is ten volts. Switching the bias point to twenty five volts sets level A at twenty-five volts relative to the ground and level B at thirty volts relative to the ground. Changing the bias makes it difficult for intruder 76 to set up the equipment necessary to read the data stream. Each change of bias requires new calibration of monitoring equipment.
The voltage level used to represent a given bit or bits can also be changed periodically. Using the 2B1Q protocol described above, voltage levels during a given interval 54 (
During a subsequent interval, the levels may be altered as follows.
C
State monitors 32, using an existing key, determine and employ the method or methods used to obscure and then reveal network communications during a given interval.
While the above description involves obscuring and revealing network communications between computers. The same techniques can be used to obscure any digital communication. For example, the techniques described may for example be employed to obscure digital voice communications or digital audio/video signals. All that is required is a data stream that can be sampled and processed at each end of a communication path, sync modules at each end that use the data stream to calculate keys, and state modules at each end that use the keys to obscure and reveal network communications.
Also, the present invention can be embodied in any computer-readable medium for use by or in connection with an instruction execution system such as a computer/processor based system or an ASIC (Application Specific Integrated Circuit) or other system that can fetch or obtain the logic from computer-readable media and execute the instructions contained therein. “Computer-readable medium” can be any of one or more computer readable media that can contain, store, or maintain programs and data for use by or in connection with the instruction execution system. Computer readable media can comprise any one of many physical media such as, for example, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor media. More specific examples of suitable computer-readable media include, but are not limited to, a portable magnetic computer diskette such as floppy diskettes or hard drives, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory, or a portable compact disc.
Although the flow charts of
Embodiments of the present invention have been shown and described with reference to the foregoing exemplary implementations. It is to be understood, however, that other forms, details, and embodiments may be made without departing from the spirit and scope of the invention which is defined in the following claims.
This application claims the priority of provisional application Ser. No. 60/470,693 filed May 15, 2003.
Number | Date | Country | |
---|---|---|---|
60470693 | May 2003 | US |