CRYPTOGRAPHY USING RF POWER MEASUREMENT
20180013553 · 2018-01-11
Assignee
Inventors
Cpc classification
H04W12/65
ELECTRICITY
H04L9/0866
ELECTRICITY
H04L9/0861
ELECTRICITY
International classification
H04L9/08
ELECTRICITY
Abstract
The embodiments provide a cryptography key for two communicating devices that is based on information known only to the devices. The information may only be determined by the devices. Each device determines the information without communicating key information related to the encryption key with the other. Channel characteristic reciprocity between the devices allows creation of identical keys in each device. Each device sends a signal to the other device at the same power level based on the distance between the devices. The power level may be set to result in a target receive power level at the other device. Each device samples the received signal, generates sampling results, creates a key based on the sampling results and a threshold power level, and utilizes the key. The threshold power level may be based on the target receive power level, or a median power determined from the sampling results.
Claims
1. A first device comprising: one or more processors; and, memory in communication with the one or more processors, the memory comprising code that, when executed, causes the one or more processors to control the first device to: determine a transmission power for sending a first setup signal to a second device based on a target receive power of the first setup signal at the second device; send the first setup signal to the second device using the determined transmission power; receive a second setup signal from the second device sample the second setup signal and generate sampling results; create a key using the sampling results and a threshold power based on the target receive power; and, utilize the key to exchange at least one data signal with the second device.
2. The first device of claim 1, wherein the code further causes the one or more processors to control the first device to: send a first location from the first device to the second device; receive a second location from the second device; and, determine the transmission power for sending the first setup signal to the second device based on the first and second location and the target receive power.
3. The first device of claim 1, wherein the first setup signal and the second setup signal are sent on the same frequency channel.
4. The first device of claim 1, wherein the first setup signal is sent on a first frequency channel and the second setup signal is sent on a second frequency channel that is offset from the first frequency channel.
5. The first device of claim 1, wherein the code further causes the one or more processors to control the first device to: sample the second setup signal and generate the sampling results by sampling the second setup signal at each of a plurality of time intervals to generate a plurality of sets of bits, wherein each of the sets of bits indicates a magnitude of a sampled level; and, create the key based on the sampling results by using selected bits of each of the plurality of sets of bits having a magnitude above the threshold power.
6. The first device of claim 5, wherein the selected bits of each of the plurality of sets of bits comprise most significant bits of each of the plurality of sets of bits.
7. The first device of claim 1, wherein the code further causes the one or more processors to control the first device to: sample the second setup signal and generate the sampling results by sampling the second setup signal at each of a plurality of time intervals to generate a plurality of sets of bits, wherein each of the sets of bits indicates a magnitude of a sampled level; and, create the key by inputting selected bits of each of the plurality of sets of bits having a magnitude above the threshold power into a decoder to generate a set of code words as the key.
8. The first device of claim 7, wherein the selected bits of each of the plurality of sets of bits comprise most significant bits of each of the plurality of sets of bits.
9. A first device comprising: one or more processors; and, memory in communication with the one or more processors, the memory comprising code that, when executed, causes the one or more processors to control the first device to: receive a first setup signal from a second device sample the first setup signal and generate sampling results; determine a threshold power based on one or more power levels of the sampling results; create a key using the sampling results and the threshold power; and, utilize the key to exchange at least one data signal with the second device.
10. The first device of claim 9, wherein the code further causes the one or more processors to control the first device to: sample the first setup signal and generate the sampling results by sampling the first setup signal at each of a plurality of time intervals to generate a plurality of sets of bits, wherein each of the sets of bits indicates a magnitude of a sampled level; determine the threshold power using the magnitudes of each of the sets of bits; and, create the key based on the sampling results by using selected bits of each of the plurality of sets of bits having a magnitude above the threshold power.
11. The first device of claim 9, wherein the code further causes the one or more processors to control the first device to: sample the first setup signal and generate the sampling results by sampling the first setup signal at each of a plurality of time intervals to generate a plurality of sets of bits, wherein each of the sets of bits indicates a magnitude of a sampled level; determine the threshold power using the magnitudes of each of the sets of bits; and, create the key by inputting selected bits of each of the plurality of sets of bits having a magnitude above the threshold power into a decoder to generate a set of code words as the key.
12. The first device of claim 9, wherein the code causes the one or more processors to control the first device to: receive a location from the second device; and, determine a transmission power for sending a second setup signal to the second device based on the location and a target receive power of the second setup signal at the second device.
13. The first device of claim 12, wherein the location comprises a second location and the code further causes the one or more processors to control the first device to send a first location to the second device and determine the transmission power for sending the second setup signal to the second device based on the first and second locations and the target receive power of the second setup signal at the second device.
14. The first device of claim 12, wherein the first setup signal and the second setup signal are sent on the same frequency channel.
15. A first device comprising: one or more processors; and, memory in communication with the one or more processors, the memory comprising code that, when executed, causes the one or more processors to control the first device to: receive a setup signal from a second device; sample the setup signal and generate sampling results; generate a first sequence based on the sampling results; transform the first sequence into a second sequence using a function; generate a key based on the second sequence; and, utilize the key to exchange at least one data signal with the second device.
16. The first device of claim 15, wherein the function comprises a linear feedback shift register.
17. The first device of claim 15, wherein the sampling results comprise a plurality of sets of bits, each of the sets of bits indicating a magnitude of a sampled level, and the first sequence comprises selected bits of each of the plurality of sets of bits having a magnitude above a threshold power.
18. The first device of claim 17, wherein the selected bits comprise most significant bits.
19. The first device of claim 15, wherein the sampling results comprise a plurality of sets of bits, each of the sets of bits indicating a magnitude of a sampled level, and the code causes the one or more processors to control the first device to generate the first sequence by inputting selected bits of each of the plurality of sets of bits having a magnitude above a threshold power into a decoder to generate a set of code words as the first sequence.
20. The first device of claim 19, wherein the selected bits comprise most significant bits.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
DETAILED DESCRIPTION
[0022] The system, devices, and methods will now be described by use of example embodiments. The example embodiments are presented in this disclosure for illustrative purposes, and not intended to be restrictive or limiting on the scope of the disclosure or the claims presented herein.
[0023] The disclosed embodiments provide a technical advantage in that two devices may configure encryption/decryption for secure communications on a channel between the two devices without exchanging keys or key related information over any channel, or by any other exchange methods, as a part of configuring or initiating the encryption/decryption. An advantage is also provided in that keys or key related information need not be provided to, or stored on, any of the devices prior to configuring the secure communications. As compared to cryptography methods that require exchange of keys or key related information by communicating devices when setting up secure communications, the embodiments prevent the possibility of exchanged key information being intercepted when exchanged between devices. As compared to cryptography methods in which devices rely on prior knowledge of keys or key information stored in the devices, the embodiments prevent the possibility that keys or key information may be compromised by theft or other misappropriation from a device or network.
[0024] The embodiments utilize the fact that a channel comprising communication links that are on the same frequency and opposite in direction between two devices shows reciprocity by exhibiting the same unique channel characteristics at each device. In order to maintain reciprocity of the channel during key generation, the time window within which the key generation occurs at each of the two devices may be relatively short. In an example implementation, time windows on the order of less than 1 millisecond may be used. Cryptography used to send secure signals between the two devices may be based on these reciprocal unique channel characteristics. The unique channel characteristics may be determined at each of the two devices by sampling a setup signal. The embodiments allow each of the two devices to create identical keys in both devices, where the key is based on the reciprocal unique channel characteristics determined by and known only to each of the two devices. The identical keys may then be used to decrypt and encrypt data signals sent between the two devices.
[0025] Because the unique channel characteristics are based on the conditions of the channel between the two devices at the time of key generation, the unique channel characteristics may be only known to each of the two devices on that channel. Only the two devices may determine these channel characteristics. A third device that attempts to intercept communications will not be able to decode the communications. The third device cannot intercept the keys or key information because the keys or key information are not exchanged on any channel. Neither will the third device be able to determine the keys by determining the keys from the unique channel characteristics of the channel, which by the nature of the channel can be known only to each of the two communicating devices that communicate on that channel. The embodiments also provide an advantage in that the keys generated in each of two devices may be updated as appropriate to provide additional security. Because the keys are generated based on the characteristics of the channel between the two devices at the time of key generation, each time new keys are generated the keys will be based on different channel characteristics and will be different from previously generated keys.
[0026] The embodiments have application to provide secure communications, for example, in time division duplex networks or systems such as those operating according to Wi-Fi implementations based on the IEEE 802.11 Standards. In Wi-Fi variants (using 802.11a, b, g, n and c), a device may communicate with an access point of a network on a wireless bi-directional time division half-duplex frequency channel. The device and access point use the same channel frequency (i.e., same channel) for transmissions sent from the device to the access point and transmissions sent from the access point to the device. Implementations of the embodiments in a Wi-Fi network may utilize the characteristics of the bi-directional frequency channel between the device and access point to generate keys for encrypting/decrypting communications. The embodiments also have application to networks or systems using communication channels configured according to other standards. For example, setup signals sent on a single frequency setup channel between two devices may be used to create identical keys in both devices, while actual encrypted communications between the two devices may be sent over communication channels different than the setup channel.
[0027] Example implementations of the embodiments also provide advantages in that the implementations may be used in networks or systems having devices with low quality reception or transmission capability. In these situations, one or both of the two communicating devices may not be capable of precisely sampling a setup signal to determine the unique channel characteristics of a channel between the two devices. In these cases, one or more bit errors may exist in the results of setup signal measurement and sampling in one or both of the devices and the sampling results may not be identical in both devices. If the keys were created directly from the sampling results the keys may not be identical in the two devices. Implementations of the embodiments may be used in order to make the process more reliable and robust in the type of situation when one or both of the devices are not capable of providing the same measurement accuracy or resolution of the received power level. These implementations provide for the situation in which the sampling results in the two devices may differ by one or more bits. In one implementation, sets of bits representing each of the sampling results may be fed into an error correction decoder in each device to generate a set of code words for use as the key. In another implementation, sets of bits each representing one or more most significant bits (MSBs) from each of the sampling results may be fed into an error correction decoder in each device to generate a set of code words for use as the key. Depending on the capability of the decoder, use of the decoder to generate the code words from the sampling results allows bit errors and discrepancies between the sampling results in the two devices to be removed. This helps ensure that the same key is created in both devices.
[0028] Referring now to
[0029]
[0030]
[0031] The process begins at 202 where device 102 sends signal S.sub.A 106 to device 104 on channel 114 using cryptography setup transceiver 116. Signal S.sub.A 106 may be an analog signal such as a sinusoidal signal sent on the frequency of channel 114. At 204, device 104 receives signal S.sub.A using cryptography setup transceiver 134 and loops back signal S.sub.A 106 to device 102 as signal S.sub.A, B 108 on channel 114. Signal S.sub.A, B 108 may be identical to the signal S.sub.A 106 as it was received at cryptography setup transceiver 134. At 206 device 104 sends signal S.sub.B 110 to device 102 on channel 114 in the opposite direction using cryptography setup transceiver 134. Signal S.sub.B 110 may be an analog signal identical to signal S.sub.A. At 208, device 102 receives signal S.sub.B 110 using cryptography setup transceiver 116 and loops back signal S.sub.B 110 to device 104 as signal S.sub.B, A 112 on channel 114. Signal S.sub.B, A 112 may be identical to the signal S 110 as it was received at cryptography setup transceiver 116.
[0032] At 210, device 102 samples signal S.sub.A, B 108. To perform the sampling, cryptography setup transceiver 116 provides the received signal S.sub.A, B 108 to sampler 128 as signal 126 and sampler 128 performs sampling on signal S.sub.A, B 108 to generate sampling results. Sampler 128 may perform the sampling by generating a series of samples, S.sub.1, S.sub.2 . . . . S.sub.N, with each sample taken from signal S.sub.A, B 108 at a predetermined time interval. Each sample of S.sub.1, S.sub.2 . . . S.sub.N may comprise bits that represent a value of power of signal S.sub.A, B 108 at the time the sample was taken.
[0033] Next, at 212, device 102 generates a bit string from the results of the sampling on signal S.sub.A, B 108. In performing the bit string generation, sampler 128 provides the sampling results to bit string generator 130 as signal 142. Bit string generator 130 may then generate the bit string, B.sub.1, B.sub.2 . . . . B.sub.M, from the sampling results. In generating the bit string, bit string generator 130 may use only the samples of S.sub.1, S.sub.2 . . . S.sub.N that indicate a value of power above a threshold level. The threshold may be set to the median power level of the received signal S.sub.A, B 108 calculated over the time period within which the samples are taken. If the power of a sample S.sub.X is below the threshold it may be ignored. If the power of the sample S.sub.X is above the threshold the bits representing the power sample S.sub.X may be placed as a set in the bit string. The bit string generator 130 may process the complete sampling results in this manner to generate a bit string B.sub.1, B.sub.2 . . . . B.sub.M for use in key creation in device 102.
[0034] At 214, device 104 may initiate the same sampling and bit string generation operations on the signal S.sub.B, A 112 as performed in device 102 at operations 210 and 212 on the signal S.sub.A, B 108. To perform the sampling at device 104, cryptography setup transceiver 134 provides the received signal S.sub.B, A 112 to sampler 136 as signal 146 and sampler 136 performs sampling on signal S.sub.A, B 112 to generate sampling results. Sampler 136 may perform the sampling by generating a series of samples, S′.sub.1, S′.sub.2 . . . S′.sub.N, with each sample taken from signal S.sub.B, A 112 at a predetermined time interval. Each sample of S′.sub.1, S′.sub.2 . . . S′.sub.N may comprise bits that represent a value of the power of signal S.sub.B, A 112 at the time the sample was taken. The time interval used for sampling in device 104 may be the same as the time interval used for sampling in device 102.
[0035] Next, at 216, device 104 generates a bit string from the results of the sampling on signal S.sub.B, A 112. In performing the bit string generation, sampler 136 provides the sampling results as signal 148 to bit string generator 138. Bit string generator 138 may then generate a bit string, C.sub.1, C.sub.2 . . . C.sub.M, from the sampling results. In generating the bit string, bit string generator 138 may use only the samples of S′.sub.1, S′.sub.2 . . . S′.sub.N that indicate a value of power or amplitude above a threshold level. The threshold may be set to the median power level of the received signal S.sub.B, A 112 calculated over the time period within which the samples are taken. If the power of a sample S′.sub.X is below the threshold it may be ignored. If the power of the sample S′.sub.X is above the threshold the bits representing the power sample S′.sub.X may be placed as a set of bits in the bit string. The bit string generator 138 may process the complete sampling results in this manner to generate a bit string C.sub.1, C.sub.2 . . . C.sub.M for use in key creation in device 104.
[0036] Use of signals S.sub.A and S.sub.B that are the identical, and use of processes for signal sampling and bit string generation that are the same in each of the devices 102 and 104, provides a bit string, B.sub.1, B.sub.2 . . . B.sub.M, and a bit string, C.sub.1, C.sub.2 . . . C.sub.M, that are identical, or nearly identical, to one another.
[0037] At 218, device 102 creates a key based on bit string B.sub.1, B.sub.2 . . . B.sub.M. The key is created in device 102 when bit string generator 130 provides bit string B.sub.1, B.sub.2 . . . B.sub.M to key creator 132 as signal 144. Key creator 132 then creates the key from the bit string B.sub.1, B.sub.2 . . . B.sub.M. In one example implementation, key creator 132 may create the key using all of the bits in the bit string B.sub.1, B.sub.2 . . . B.sub.M taken sequentially. For example, if the bit string B.sub.1, B.sub.2 . . . B.sub.M is a string in which B.sub.1=11011011, B.sub.2=10111011 . . . B.sub.M=11111101, a key may be created as k.sub.102=110110111011011 . . . 1111101. In another example, key creator 132 may create key k.sub.102 using a subset of bits from each of B.sub.1, B.sub.2 . . . B.sub.M. For example, if the bit string B.sub.1, B.sub.2 . . . B.sub.M is a string in which B.sub.1=11011011, B.sub.2=10111011 . . . B.sub.M=11111101, k.sub.102 may be created by taking the four most significant bits from each of B.sub.1, B.sub.2 . . . B.sub.M to create k.sub.102=11011011 . . . 1111. Keys of different lengths may be created by varying the sampling, bit string generation, and key creation operations. Key creator 132 then outputs k.sub.102 at output 152 for use by device 102 in encryption/decryption.
[0038] At 220, device 104 creates a key based on C.sub.1, C.sub.2 . . . C.sub.M using the same operations that device 102 uses to create k.sub.102 from B.sub.1, B.sub.2 . . . B.sub.M. The key is created in device 104 when bit string generator 138 provides bit string C.sub.1, C.sub.2 . . . C.sub.M to key creator 140 as signal 150. Key creator 138 then creates a key, k.sub.104, from the bit string C.sub.1, C.sub.2 . . . C.sub.M. In one example implementation, key creator 138 may create k.sub.104 using all of the bits in the bit string C.sub.1, C.sub.2 . . . C.sub.M. For example, if the bit string C.sub.1, C.sub.2 . . . C.sub.M is a string in which C.sub.1=11011011, C.sub.2=10111011 . . . C.sub.1=11111101, k.sub.104, may be created as k.sub.104=1101101110111011 . . . 11111101. In another example, key creator 132 may create k.sub.104 using a subset of bits from each of C.sub.1, C.sub.2 . . . C.sub.M. For example, if the bit string C.sub.1, C.sub.2 . . . C.sub.M is a string in which C.sub.1=11011011, C.sub.2=10111011 . . . C.sub.M=11111101, k.sub.104 may be created by taking the four most significant bits from each of C.sub.1, C.sub.2 . . . . C.sub.M to create k.sub.104=11011011 . . . 1111. Keys of different lengths may be created by varying the sampling, bit string generation, and key creation operations. The operations used for creating k.sub.104 in device 104 may be identical to the operations used for creating k.sub.102 in device 102. Key creator 140 then outputs k.sub.104 at output 154 for use by device 104 in encryption/decryption.
[0039] In a situation in which devices 102 and 104 include transceivers that are capable of signal transmission at precise power levels and are also capable of precise measurement of received signals, the keys in both devices will have a high probability of being identical. In this situation, an implementation may be used in which k.sub.102 and k.sub.104 may be created directly from the sampling results by using all the bits of each of the sampling results S.sub.1, S.sub.2 . . . S.sub.M and S′.sub.1, S′.sub.2 . . . S′.sub.M, respectively. In situations in which devices 102 and 104 include lower quality transceivers that are not capable of transmitting signals at precise power levels and/or are not capable of precise measurement of received signals, the keys created in each device may have a lower probably of being identical. In this type of situation, the implementation may be used in which k.sub.102 and k.sub.104 are created using only a subset of most significant bits from each of the sampling results S.sub.1, S.sub.2 . . . S.sub.M and S′.sub.1, S′.sub.2 . . . S′.sub.M, respectively, to provide a more robust key creation process. Use of a subset of the most significant bits from each of the sampling results allows errors that occur in the less important bits of the sampling results to be removed and not cause differences between k.sub.102 and k.sub.104.
[0040] At 222, when the keys have been created in each of device 102 and 104, devices 102 and 104 may then communicate data signals with each other while encrypting and/or decrypting communications using, respectively, keys k.sub.102 and k.sub.104. If k.sub.102 and k.sub.104 have not been generated identically, because of transmission or reception conditions in the network, neither of the devices 102 or 104 will be capable of decrypting communications sent by the other. In this case one of the devices may determine that it cannot correctly decode transmissions and cause new keys to be created by initiating repetition of the process of
[0041] In an alternative implementation of
[0042] Also, in another implementation, one or more of the setup signals may be sent using channels offset from one another. For example, one or more of the signals sent in the direction from device 102 to device 104 (i.e., S.sub.B, A 112 and S.sub.A 106), and one or more of the signals sent in the direction from device 104 to device 102 (i.e., S.sub.A, B 108 and S.sub.B 110), may be sent on one or more frequency channels that are offset from the center frequency of channel 114. The amount of frequency offset may be chosen so that the reciprocity of the channel characteristics still allows generation of identical, or nearly identical, keys. For example, the offset may be a frequency offset of several percent of the center frequency of channel 114. Additionally, other offsets may be used as long as the offsets are of a magnitude that allows generation of the same encryption/decryption keys in each of the devices from the setup signals.
[0043]
[0044]
[0045] Referring again to
[0046] The bit string generated in operations 212 and 216 of
[0047]
[0048]
[0049]
[0050]
[0051] Because of the way in which an error correction decoder operates, when any string of y bits entered into the decoder falls within the decoding space of a code word CW.sub.X, the decoder will output code word CW.sub.X. The size of the decoding space depends on the error correction capability of the decoder. Depending on the error correction code implemented in the decoder, two y-bit strings input into the decoder may contain different bits but still result in the same code word CW.sub.X being output if the two different y-bit strings are both within the decoding space of CW.sub.X. For example, B.sub.1 and C.sub.1 may each include different bits as input into the decoder, but both may be within the decoding space of CW.sub.1 as long as the difference is within the error correction capability of the decoder. This error correction capability is commonly given in terms of capability to correct a certain number of bit errors in the decoder input as compared to an expected input for generating CW.sub.X. For example,
[0052] If the decoder used in device 102 and device 104 has an error correction capability of x bits, then B.sub.X and C.sub.X may each differ from a code word CW.sub.X by up to x bits, but each still result in CW.sub.X being output from the decoder when B.sub.X and C.sub.X are input into the decoder. Because identical signals and the same process are used in both device 102 and 104 to generate the bit strings B.sub.1, B.sub.2 . . . B.sub.M and C.sub.1, C.sub.2 . . . C.sub.M, these bit strings should be identical or, allowing for differences in the devices and/or RF environment, nearly identical. Use of the same decoder configuration in both of devices 102 and 104 allows bit strings B.sub.1, B.sub.2 . . . B.sub.M and C.sub.1, C.sub.2 . . . C.sub.M to be input into the decoder to generate identical sets of code words in device 102 and 104, even when B.sub.1, B.sub.2 . . . B.sub.M and C.sub.1, C.sub.2 . . . C.sub.M are not identical. As long as the differences between B.sub.X and C.sub.X are within a threshold that keeps them in the domain of the same code word, the same code words should be generated in each device. This provides more robust generation of identical keys in both devices.
[0053] Referring now to
[0054] User interfaces 606 may include any type of interface such as a touchscreen, a keypad, a voice controlled interface, interfaces that are gesture or motion based, an interface that receives input wirelessly, or any other type of interface that allows a user to provide appropriate control of device 600 for performing the operations of the embodiments.
[0055] In example implementations, device 600 may be any type of device that may be configured to communicate with a network or other device using encrypting/decrypting of data communications. For example, device 600 may be implemented in a smart phone, a tablet computer, a desktop computer, laptop computer device, gaming devices, media devices, smart televisions, multimedia cable/television boxes, smart phone accessory devices, tablet accessory devices, or personal digital assistants (PDAs). In an implementation, device 600 may operate according to a timed division half-duplexed communications standard. For example, device 600 may operate using half-duplex channels specified in the IEEE 802.11 Wi-Fi standards.
[0056] Referring now to
[0057] Memory 708 may be implemented as any type of computer readable storage media, including non-volatile and volatile memory. Access point 700 connects to a network, such as the internet, over network interface 702. Processing unit 706 may comprise one or more processors, or other control circuitry or any combination of processors and control circuitry that provide overall control of the access point according to the disclosed embodiments. Transceivers 712 provide the capability for device 700 to communicate with devices, for example device 102 of
[0058] The example embodiments disclosed herein may be described in the general context of processor-executable code or instructions stored on memory that may comprise one or more computer readable storage media (e.g., tangible non-transitory computer-readable storage media such as memory 608 or 708). As should be readily understood, the terms “computer-readable storage media” or “non-transitory computer-readable media” include the media for storing of data, code and program instructions, such as memory 608, 708, and do not include portions of the media for storing transitory propagated or modulated data communication signals.
[0059]
[0060]
[0061]
[0062] The process begins at 902 where device 802 sends signal H.sub.1 806 to device 804 on channel 801 using cryptography setup transceiver 820. Signal H.sub.1 806 is a handshake signal indicating to device 804 that device 802 is attempting to initiate key generation. At 904, device 804 receives signal H.sub.1 806 using cryptography setup transceiver 834 and sends signal H.sub.A 814 to device 802 on channel 801. Signal H.sub.A 814 is a handshake acceptance signal indicating to device 802 that device 804 is ready to perform key generation. As part of handshake acceptance, at 904, device 804 also sends location information L.sub.B 816 about device 804's location determined by GPS function 874 to device 802. At 906, device 802 receives signals H.sub.A 814 and L.sub.B 816, and sends acceptance signal H.sub.A 808 to device 804 to confirm the initiation of key generation. At 906, device 802 also sends location information L.sub.A 810 about device 802's location determined by GPS function 870 to device 804.
[0063] At 908, device 802 sends signal S.sub.A 812 to device 804 at transmission power level P on channel 114. Signal S.sub.A 812 may be an analog signal such as a sinusoidal signal sent on the frequency of channel 114. The power level P may be determined by power level determiner 819 in device 802. Power level determiner 819 receives the location information L.sub.B 816 for device 804 (sent from device 804) and location information L.sub.A 810 for device 802 (which was sent to device 804) from cryptography setup transceiver 820 as signal 844. Power level determiner 819 then determines P based on the relative locations of devices 802 and 804, and a target received power level at device 804. Power level determiner 819 then provides the power level P as signal 846 to cryptography setup transceiver 820 for use in sending S.sub.A. In one implementation, the target received power level at device 804 may be a predetermined level that is stored in device 802. The target received power level may be stored for use in key generation upon configuration of key generation programs in device 802. In other implementations, the target received power level may be received from/negotiated with device 804 during key generation setup. The target receive power level may also be a power level that is based on preferences of network 800 and received, for example, through device 804 implemented as an access point of network 800.
[0064] At 910, device 804 sends signal S.sub.B 818 to device 802 at transmission power level P on channel 114. Signal S.sub.B 818 may be an analog signal identical to signal S.sub.A 812 such as a sinusoidal signal sent on the frequency of channel 114. The power level P may be determined by power level determiner 842 in device 804. Power level determiner 842 receives the location information L.sub.A 810 for device 802 (sent from device 802) and location information L.sub.B 816 for device 804 (which was sent to device 802) from cryptography setup transceiver 834 as signal 856. Power level determiner 842 then determines P based on the relative locations of devices 802 and 804, and a target received power level at device 802. The target received power level may be the same target received power level used by device 802. Because the target received power level is the same in both devices, the transmission power level P at each device 802 and 804 should be the same. Power level determiner 842 then provides the power level P to cryptography setup transceiver 834 as signal 858 for use in sending S.sub.B 818. In one implementation, the target received power level at device 802 may be a predetermined level that is stored in device 804. The target received power level may be stored for use in key generation upon configuration of key generation programs in device 804. In other implementations, the target received power level may be received from/negotiated with device 802 during key generation setup. The target receive power level may also be a power level that is based on preferences of network 800 and received, for example, by device 804 from a network controller.
[0065] At 912, device 102 samples signal S.sub.B 818. To perform the sampling, cryptography setup transceiver 820 provides the received signal Se 818 to sampler 822 as signal 850 and sampler 822 performs sampling on signal S.sub.B 818 to generate sampling results. Sampler 822 may perform the sampling by generating a series of samples, S.sub.1, S.sub.2 . . . S.sub.N, with each sample taken from signal S.sub.B 818 at a predetermined time interval. Each sample of S.sub.1, S.sub.2 . . . . S.sub.N may comprise bits that represent a value of power of signal S.sub.B 818 at the time the sample was taken.
[0066] Next, at 914, device 102 generates a bit string from the results of the sampling on signal S.sub.B 818. In performing the bit string generation, sampler 822 provides the sampling results to bit string generator 824 as signal 852. Bit string generator 824 may then generate the bit string, B.sub.1, B.sub.2 . . . B.sub.M, from the sampling results. In generating the bit string, bit string generator 824 may use only the samples of S.sub.1, S.sub.2 . . . S.sub.N that indicate a value of power above a threshold level.
[0067] The threshold level used for generating the bit string in device 802 may be set by bit string generator 824 to the median power level of the samples in the received signal S.sub.B818. The median power level may be determined over the time period within which the samples are taken. If the power of a sample S.sub.X is below the threshold it may be ignored. If the power of the sample S.sub.X is above the threshold, the bits representing the power sample S.sub.X may be placed as a set in the bit string. This may be performed as shown in
[0068] At 916, device 804 may initiate the same sampling and bit string generation operations on the signal S.sub.A 812 as performed in device 802 at operations 912 and 914 on the signal S.sub.A 812. To perform the sampling at device 804, cryptography setup transceiver 834 provides the received signal S.sub.A 812 to sampler 836 as signal 862 and sampler 836 performs sampling on signal S.sub.A 812 to generate sampling results. Sampler 836 may perform the sampling by generating a series of samples, S′.sub.1, S′.sub.2 . . . . S′.sub.N, with each sample taken from signal S.sub.A 812 at a predetermined time interval. Each sample of S′.sub.1, S′.sub.2 . . . S′.sub.N may comprise bits that represent a value of the power of signal S.sub.A 812 at the time the sample was taken. The time interval used for sampling in device 104 may be the same as the time interval used for sampling in device 802.
[0069] Next, at 918, device 804 generates a bit string from the results of the sampling on signal S.sub.A 812. In performing the bit string generation, sampler 836 provides the sampling results as signal 864 to bit string generator 838. Bit string generator 838 may then generate a bit string, C.sub.1, C.sub.2 . . . C.sub.M, from the sampling results. In generating the bit string, bit string generator 838 may use only the samples of S′.sub.1, S′.sub.2 . . . S′.sub.N that indicate a value of power or amplitude above a threshold level.
[0070] The threshold used for generating the bit string in device 804 may be set by bit string generator 838 to the median power level of the samples in the received signal S.sub.A 812. The median power level may be determined over the time period within which the samples are taken. If the power of a sample S′.sub.X is below the threshold it may be ignored. If the power of the sample S′.sub.X is above the threshold the bits representing the power sample S′.sub.X may be placed as a set of bits in the bit string. This may be performed as shown in
[0071] Use of signals S.sub.A 812 and S.sub.B 818 that are identical, and use of processes for signal sampling and bit string generation that are the same in each of the devices 802 and 804, provides a bit string, B.sub.1, B.sub.2 . . . B.sub.M, and a bit string, C.sub.1, C.sub.2 . . . C.sub.M, that are identical, or nearly identical, to one another. Because S.sub.A 812 and S.sub.B 818 are sent at the same transmission power level P, the threshold levels PL.sub.1 and PL.sub.2 determined from the sampling results and used, respectively, in devices 802 and 804 should be identical or nearly identical.
[0072] At 920, device 802 creates a key based on bit string B.sub.1, B.sub.2 . . . B.sub.M. The key is created in device 802 when bit string generator 824 provides bit string B.sub.1, B.sub.2 . . . B.sub.M to key creator 826 as signal 854. Key creator 826 then creates the key from the bit string B.sub.1, B.sub.2 . . . . B.sub.M. In one example implementation, key creator 826 may create the key using all of the bits in the bit string B.sub.1, B.sub.2 . . . B.sub.M taken sequentially. For example, if the bit string B.sub.1, B.sub.2 . . . B.sub.M is a string in which B.sub.1=11011011, B.sub.2=10111011 . . . Bu=11111101, a key may be created as k.sub.802=1101101110111011 . . . 11111101. In another example, key creator 826 may create key k.sub.802 using a subset of bits from each of B.sub.1, B.sub.2 . . . B.sub.M. For example, if the bit string B.sub.1, B.sub.2 . . . B.sub.M is a string in which B.sub.1=11011011, B.sub.2=10111011 . . . B.sub.M=1111101, k.sub.802 may be created by taking the four most significant bits from each of B.sub.1, B.sub.2 . . . . B.sub.M to create k.sub.802=110101111 . . . 1111. Keys of different lengths may be created by varying the sampling, bit string generation, and key creation operations. Key creator 826 then outputs k.sub.802 at output 855 for use by device 802 in encryption/decryption.
[0073] At 922, device 804 creates a key based on C.sub.1, C.sub.2 . . . C.sub.M using the same operations that device 802 uses to create k.sub.802 from B.sub.1, B.sub.2 . . . . B.sub.M. The key is created in device 804 when bit string generator 838 provides bit string C.sub.1, C.sub.2 . . . C.sub.M to key creator 840 as signal 866. Key creator 840 then creates a key, k.sub.804, from the bit string C.sub.1, C.sub.2 . . . C.sub.M. In one example implementation, key creator 840 may create k.sub.804 using all of the bits in the bit string C.sub.1, C.sub.2 . . . C.sub.M. For example, if the bit string C.sub.1, C.sub.2 . . . C.sub.M is a string in which C.sub.1=11011011, C.sub.2=10111011 . . . C.sub.M=111101, k.sub.804, may be created as k.sub.804=1101101110111011 . . . 1111101. In another example, key creator 840 may create k.sub.804 using a subset of bits from each of C.sub.1, C.sub.2 . . . C.sub.M. For example, if the bit string C.sub.1, C.sub.2 . . . C.sub.M is a string in which C.sub.1=11011011, C.sub.2=1011011 . . . C.sub.M=11111101, k.sub.804 may be created by taking the four most significant bits from each of C.sub.1, C.sub.2 . . . C.sub.M to create k.sub.804=11011011 . . . 1111. Keys of different lengths may be created by varying the sampling, bit string generation, and key creation operations. The operations used for creating k.sub.804 in device 804 may be identical to the operations used for creating k.sub.802 in device 802. Key creator 840 then outputs k.sub.804 at output 868 for use by device 804 in encryption/decryption.
[0074] In a situation in which devices 802 and 804 include transceivers that are capable of signal transmission at precise power levels and are also capable of precise measurement of received signals, the keys in both devices will have a high probability of being identical. In this situation, an implementation may be used in which k.sub.802 and k.sub.804 may be created directly from the sampling results by using all the bits of each of the sampling results S.sub.1, S.sub.2 . . . S.sub.M and S′.sub.1, S′.sub.2 . . . . S′.sub.M, respectively. In situations in which devices 802 and 804 include lower quality transceivers that are not capable of transmitting signals at precise power levels and/or are not capable of precise measurement of received signals, the keys created in each device may have a lower probably of being identical. In this type of situation, the implementation may be used in which k.sub.802 and k.sub.804 are created using only a subset of most significant bits from each of the sampling results S.sub.1, S.sub.2 . . . S.sub.M and S′.sub.1, S′.sub.2 . . . . S′.sub.M, respectively, to provide a more robust key creation process. Use of a subset of the most significant bits from each of the sampling results allows errors that occur in the less important bits of the sampling results to be removed and not cause differences between k.sub.802 and k.sub.804.
[0075] At 924, when the keys have been created in each of device 802 and 804, devices 802 and 804 may then communicate data signals with each other while encrypting and/or decrypting communications using, respectively, keys k.sub.802 and k.sub.804. If k.sub.802 and k.sub.804 have not been generated identically, because of transmission or reception conditions in the network, neither of the devices 802 or 804 will be capable of decrypting communications sent by the other. In this case one of the devices may determine that it cannot correctly decode transmissions and cause new keys to be created by initiating repetition of the process of
[0076] In an alternative implementation, the key creation operation of 918 of
[0077] In other implementations of
[0078] Also, in other implementations of
[0079] While implementations have been disclosed and described as having functions implemented on particular wireless devices operating in a network, one or more of the described functions for the devices may be implemented on a different one of the devices than shown in the figures, or on different types of equipment operating in different systems.
[0080] The disclosed embodiments include a first device comprising one or more processors and memory in communication with the one or more processors, the memory comprising code that, when executed, causes the one or more processors to control the first device to receive a setup signal from a second device, sample the setup signal and generate sampling results, create a key based on the sampling results, and, utilize the key to exchange secure data signals with the second device. The setup signal may comprise a second setup signal and the code may cause the one or more processors to control the first device to send a first setup signal to the second device, and, receive the second setup signal from the second device, wherein the second setup signal comprises a looped back version of the first setup signal. The code may further cause the one or more processors to control the first device to receive a third setup signal from the second device, and, send a fourth setup signal to the second device, the fourth setup signal comprising a looped back version of the third setup signal. The first setup signal and the second setup signal may be sent on the same frequency channel. The first setup signal may be sent on a first frequency channel and the second setup signal may be sent on a second frequency channel that is offset from the first frequency channel.
[0081] The code may further cause the one or more processors to control the first device to sample the setup signal and the generate sampling results by sampling the setup signal at each of a plurality of time intervals to generate a plurality of sets of bits, wherein each of the sets of bits indicates a magnitude of a sampled level, and, create the key based on the sampling results by using only selected sets of the plurality of sets of bits having a magnitude above a threshold level. The sampling results may comprise one or more sets of bits and the code further may cause the one or more processors to control the first device to create the key by inputting each of the one or more sets of bits into a decoder to generate a set of code words as the key. The sampling results may comprise one or more sets of bits and the code may further cause the one or more processors to control the first device to create the key by inputting a set of most significant bits of each of the one or more sets of bits into a decoder to generate a set of code words as the key.
[0082] The disclosed embodiments also include a method in a first device comprising receiving a setup signal from a second device, sampling the setup signal and generating sampling results, creating a key based on the sampling results, and, utilizing the key to exchange data signals with the second device. The setup signal may comprise a second setup signal, and the method may further comprise sending a first setup signal to the second device on a channel, and the receiving the second setup signal may comprise receiving the second setup signal from the second device on the channel, wherein the second setup signal comprises a looped back version of the first setup signal. The method may further comprise receiving a third setup signal from the second device, and, sending a fourth setup signal to the second device, the fourth setup signal comprising a looped back version of the third setup signal. The sampling the setup signal and generating sampling results may comprise sampling the setup signal at each of a plurality of time intervals to generate a plurality of sets of bits, wherein each of the plurality of sets of bits indicates a magnitude of a sampled level, and the creating the key from the sampling results may comprise creating the key using only selected sets of the plurality of sets of bits having a magnitude above a threshold level. The sampling results may comprise one or more sets of bits, each representing a sample in the sampling results, and the creating the key may comprise inputting each of the one or more sets of bits into a decoder to generate a set of code words as the key. The sampling results may comprise one or more sets of bits, each representing a sample in the sampling results, and the creating the key may comprise inputting a set of most significant bits of each of the one or more sets of bits into a decoder to generate a set of code words as the key.
[0083] The disclosed embodiments further include a system comprising a first device and a second device configured to communicate with one another, wherein the first device receives a first setup signal from the second device, and the second device receives a second setup signal from the first device, and, wherein the first device samples the first setup signal and creates a first key and the second device samples the second setup signal and creates a second key, and the first device encrypts and decrypts data signals communicated between the first and second device using the first key, and the second device encrypts and decrypts the data signals communicated between the first and second device using the second key. The first setup signal may comprise a looped back setup signal initially sent by the first device, and the second setup signal may comprise a looped back setup signal initially sent by the second device. The first device may sample the first setup signal at each of a plurality of time intervals to generate first sets of bits, each set of the first sets of bits indicating a magnitude sampled at the first device, and the second device may sample the second setup signal at each of the plurality of time intervals to generate second sets of bits, each set of the second sets of bits indicating a magnitude sampled at the second device, and, the first and second devices may create the first and second keys using, respectively, only first selected sets of bits of the first sets of bits and only second selected sets of bits of the second sets of bits that indicate a magnitude, respectively, above a first and second threshold level. The first device may create the first key by inputting the first selected sets of bits into a decoder to generate a first set of code words as the first key, and the second device may create the second key by inputting the second selected sets of bits into a decoder to generate a second set of code words as the second key. The first device may create the first key by inputting at least one most significant bit of each of the first selected sets of bits into a decoder to generate a first set of code words as the first key, and the second device may create the second key by inputting at least one most significant bit of each of the second selected sets of bits into a decoder to generate a second set of code words as the second key. The first and second setup signals may comprise analog signals sent on the same channel.
[0084] The disclosed embodiments further include a first device comprising one or more processors and memory in communication with the one or more processors, the memory comprising code that, when executed, causes the one or more processors to control the first device to determine a transmission power for sending a first setup signal to a second device based on a target receive power of the first setup signal at the second device, send the first setup signal to the second device using the determined transmission power, receive a second setup signal from the second device, sample the second setup signal and generate sampling results, create a key using the sampling results and a threshold power based on the target receive power, and, utilize the key to exchange at least one data signal with the second device. The code may further causes the one or more processors to control the first device to send a first location from the first device to the second device, receive a second location from the second device, and, determine the transmission power for sending the first setup signal to the second device based on the first and second location, and the target receive power. The first setup signal and the second setup signal may be sent on the same frequency channel. The first setup signal may be sent on a first frequency channel and the second setup signal may be sent on a second frequency channel that is offset from the first frequency channel. The code further causes the one or more processors to control the first device to sample the second setup signal and generate the sampling results by sampling the second setup signal at each of a plurality of time intervals to generate a plurality of sets of bits, wherein each of the sets of bits indicates a magnitude of a sampled level, and, create the key based on the sampling results by using selected bits of each of the plurality of sets of bits having a magnitude above the threshold power. The selected bits of each of the plurality of sets of bits may comprise most significant bits of each of the plurality of sets of bits. The code may further cause the one or more processors to control the first device to sample the second setup signal and generate the sampling results by sampling the second setup signal at each of a plurality of time intervals to generate a plurality of sets of bits, wherein each of the sets of bits indicates a magnitude of a sampled level, and, create the key by inputting selected bits of each of the plurality of sets of bits having a magnitude above the threshold power into a decoder to generate a set of code words as the key. The selected bits of each of the plurality of sets of bits may comprise most significant bits of each of the plurality of sets of bits.
[0085] The disclosed embodiments also disclose a first device comprising one or more processors and memory in communication with the one or more processors, the memory comprising code that, when executed, causes the one or more processors to control the first device to receive a first setup signal from a second device, sample the first setup signal and generate sampling results, determine a threshold power based on one or more power levels of the sampling results, create a key using the sampling results and the threshold power, and, utilize the key to exchange at least one data signal with the second device. The code may further cause the one or more processors to control the first device to sample the first setup signal and generate the sampling results by sampling the first setup signal at each of a plurality of time intervals to generate a plurality of sets of bits, wherein each of the sets of bits indicates a magnitude of a sampled level, determine the threshold power using the magnitudes of each of the sets of bits, and, create the key based on the sampling results by using selected bits of each of the plurality of sets of bits having a magnitude above the threshold power. The code further causes the one or more processors to control the first device to sample the first setup signal and generate the sampling results by sampling the first setup signal at each of a plurality of time intervals to generate a plurality of sets of bits, wherein each of the sets of bits indicates a magnitude of a sampled level, determine the threshold power using the magnitudes of each of the sets of bits, and, create the key by inputting selected bits of each of the plurality of sets of bits having a magnitude above the threshold power into a decoder to generate a set of code words as the key. The code may cause the one or more processors to control the first device to receive a location from the second device, and, determine a transmission power for sending a second setup signal to the second device based on the location and a target receive power of the second setup signal at the second device. The location may comprise a second location and the code may further cause the one or more processors to control the first device to send a first location to the second device and determine the transmission power for sending the second setup signal to the second device based on the first and second locations and the target receive power of the second setup signal at the second device. The first setup signal and the second setup signal may be sent on the same frequency channel.
[0086] The disclosed embodiments also include a first device comprising one or more processors and memory in communication with the one or more processors, the memory comprising code that, when executed, causes the one or more processors to control the first device to, receive a setup signal from a second device, sample the setup signal and generate sampling results, generate a first sequence based on the sampling results, transform the first sequence into a second sequence using a function, generate a key based on the second sequence, and, utilize the key to exchange at least one data signal with the second device. The function may comprise a linear feedback shift register. The sampling results may comprise a plurality of sets of bits, each of the sets of bits indicating a magnitude of a sampled level, and the first sequence may comprise selected bits of each of the plurality of sets of bits having a magnitude above a threshold power. The selected bits may comprise most significant bits. The sampling results may comprise a plurality of sets of bits, each of the sets of bits indicating a magnitude of a sampled level, and the code may causes the one or more processors to control the first device to generate the first sequence by inputting selected bits of each of the plurality of sets of bits having a magnitude above a threshold power into a decoder to generate a set of code words as the first sequence. The selected bits may comprise most significant bits.
[0087] While the functionality disclosed herein has been described by illustrative example using descriptions of the various components and devices of embodiments by referring to functional blocks and processors or processing units, controllers, and memory including instructions and code, the functions and processes of the embodiments may be implemented and performed using any appropriate functional blocks, type of processor, circuitry or combinations of processors and/or circuitry and code. This may include, at least in part, one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), application specific standard products (ASSPs), system-on-a-chip systems (SOCs), complex programmable logic devices (CPLDs), etc. Use of the term processor or processing unit in this disclosure is mean to include all such implementations.
[0088] Although the subject matter has been described in language specific to structural features and/or methodological operations or acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features, operations, or acts described above. Rather, the specific features, operations, and acts described above are disclosed as example embodiments, implementations, and forms of implementing the claims and these example configurations and arrangements may be changed significantly without departing from the scope of the present disclosure. Moreover, although the example embodiments have been illustrated with reference to particular elements and operations that facilitate the processes, these elements, and operations may or combined with or, be replaced by, any suitable devices, components, architecture or process that achieves the intended functionality of the embodiment. Numerous other changes, substitutions, variations, alterations, and modifications may be ascertained to one skilled in the art and it is intended that the present disclosure encompass all such changes, substitutions, variations, alterations, and modifications as falling within the scope of the appended claims.