Shared secret for wireless devices

In some examples, a device may include a communication interface configured to exchange signals with another device, and a computing component configured to autonomously calculate a centroid of a plurality of devices of which the device is a part, based at least in part on relative distances between the device and others of the plurality of devices and relative distances among the others of the plurality of devices, and autonomously establish the centroid as a shared secret.

TECHNICAL FIELD

The embodiments described herein pertain generally to secure communication among devices.

BACKGROUND

The proliferation of intelligent embedded devices has changed the landscape of communications within a system. However, inter-device communications depend on effective security mechanisms.

SUMMARY

In one example embodiment, a device may include a communication interface configured to exchange signals with another device, and a computing component configured to autonomously calculate a centroid of a plurality of devices of which the device is a part, based at least in part on relative distances between the device and others of the plurality of devices and relative distances among the others of the plurality of devices, and autonomously establish the centroid as a shared secret.

In another example embodiment, an encryption method to develop a shared secret by each of a plurality of devices may include, by each of the plurality of devices, identifying others of the plurality of devices, calculating a relative distance to the others of the plurality of devices, sharing calculated relative distances with the others of the plurality of devices, autonomously calculating a centroid of the plurality of devices based at least in part on the shared calculated relative distances, and communicating using the calculated centroid as a shared secret.

In still another example embodiment, a non-transitory computer-readable medium may store executable instructions that, if 0 executed, cause a computing component of a device to perform operations that may include autonomously calculating a centroid of a plurality of devices of which the device is a part, based at least in part on relative distances between the device and others of the plurality of devices and relative distances among the others of the plurality of devices, and autonomously establishing the centroid as a shared secret.

DETAILED DESCRIPTION

Generally speaking, using a combination of mutual identification, relative distance determination, relative distance information sharing, and centroid determination, a shared secret may be generated inside each of a multiple number of devices without the shared secret being communicated between a communication-initiating device and any of the devices, or between any of the devices themselves. In some examples, the communication-initiating device may be configured to initiate a process by which: each of a plurality of communicating devices respectively identifies itself to the others of the plurality of communicating devices; determines a relative distance to each of the others of the plurality of communicating devices; shares the relative distances with each of the others of the plurality of communicating devices; and determines a centroid (e.g., a volume centroid) of the positions relative to each of the others of the plurality of communicating devices. The centroid calculated autonomously by each of the communicating devices may serve as, or serve as a portion of, the shared secret (e.g., an encryption key, password, passphrase, etc.) by which the communicating devices may communicate securely with one another. Furthermore, the shared secret may be used in combination with other encryption techniques to enable secure communication.

FIG. 1shows an example configuration of a system100of devices by which secure communication may be implemented, arranged in accordance with at least some embodiments described herein. As depicted, system100includes, at least, a first device105and a plurality of second devices110A,110B,110C, . . . ,110N. Hereafter, unless context requires otherwise, collective reference may be made to “second devices110” or singular reference may be made to “second device110.” In some embodiments, one or more of second devices110may be an embedded wireless device that, for example, includes a wireless interface. As referenced herein, an embedded wireless device may refer to a device that has limited or no user interface, keypad, accelerometer, microphone, or speaker. That is, an embedded wireless device has what may be considered reduced function capabilities in the present era of multi-functional devices; and therefore, in accordance with some embodiments, an embedded wireless device may function primarily as an autonomous device that substantially lacks or provides limited or reduced user-input functionality and requires no network connection.

In some embodiments of system100, first device105and second device110A, second device110B, second device110C, . . . , second device110N may be, for example, mobile devices or non-mobile devices, or a combination of mobile devices and non-mobile devices. Non-limiting examples for implementing first device105and second devices110(or at least second devices110) may include systems and components in a processing plant, a hospital, a vehicle, a communications system, and a commercial or residential building (including power systems; heating, ventilation, and air conditioning (HVAC) systems; lighting; doors; and windows), monitoring equipment, engines, and hydraulic system components. This short list is illustrative only and should not be construed as limiting in any way.

First device105, as described herein, may be referred to as a “master device”, and may be configured to select devices from among second devices110to form a group of second devices110and to initiate calibration of the selected second devices110. In some embodiments, the group is formed to enable its members (e.g., selected second devices110) to communicate securely among themselves using a shared secret that is unique to the group. The shared secret may be generated autonomously by each of second devices110selected to be in the group, and need not be communicated to first device105or to any of second devices110. However, the term “master device” is merely illustrative and is used for the purpose of easier understanding, and should not be construed as limiting in any way. First device105may actually be one of second devices110. The role of first device105in selecting second devices110is described next; the role of first device105in initiating calibration of second devices110is described below with reference toFIG. 6.

In at least one embodiment, first device105, acting as the master device, may be configured to form the group of second devices110by sending one or more unencrypted signals to each of the selected second devices110. The unencrypted signal may be sent to the selected second devices110as an indication of the selection. In at least some embodiments, first device105(as a master device) may then withdraw from the overall shared secret generation subsequent to sending the unencrypted signals.

First device105may be a laptop computer, a mobile phone, or other device capable of communicating with one or more of second devices110wirelessly.

Second devices110, selected by first device105to be in a group to be able to communicate securely among themselves, may each be configured to implement secure wireless communication using a shared secret that is autonomously determined by each of the selected second devices110based on the relative distances separating them from each other. In some examples, one or more of second devices110, selected by first device105, may be included with a fixed article or a portable article such as a laptop, tablet, or smart device (including, but not limited to, a smartphone or article embodying a smart device), or with a component mounted on or associated with a fixed article or a portable article. In at least one embodiment described below, movement of the fixed article or portable article may be detected in accordance with the secret communication (for example, encrypted communication may fail because second devices110no longer determine the same key due to the movement of the devices).

FIG. 2shows an example configuration of first device105by which various aspects of secure communication, including initiation, may be implemented, arranged in accordance with at least some embodiments described herein. As depicted, first device105may be configured to include a user interface205, a processor210, a memory215, a communications interface220, a signal detector225, a signal generator230, and a selector235. Any one or more of user interface205, processor210, memory215, communications interface220, signal detector225, signal generator230, and selector235may be implemented as hardware, software, firmware, or any combination thereof. Further, first device105is not limited to such components, as modifications may be made by combining two or more of the components described herein, eliminating at least one of the components, adding further components, substituting components, or even having various components assuming sub-processing roles accorded to other components in the following description.

User interface205may refer to one or more components configured, designed, and/or programmed to receive input from a user and/or provide an output to a user. In this sense, user may include a human or non-human user, and no limitation on the meaning of “user” should be inferred.

Processor210may refer to one or more components configured, designed, and/or programmed to control one or more operations of first device105.

Memory215may refer to any hardware and/or one or more virtual components configured to store at least executable instructions and/or data. In some examples, memory215may include a system memory configured to store, inter alia, instructions to be executed by one or more embodiments of processor210. Memory215may also, or alternatively, include one or more storage devices configured to store data for various purposes, including retrieval to system memory for use by the one or more embodiments of processor210.

Communications interface220may refer to one or more components configured, designed and/or programmed to conduct or facilitate communications with, at least, one or more of second devices110. In some embodiments, communications interface220may be a wireless interface or a Near-Field Communication (NFC) interface, but such are merely examples.

Signal detector225may refer to one or more components configured, designed and/or programmed to detect one or more communication signals from, for example, one or more of second devices110. In accordance with such example, signal detector225may be configured to receive signals from one or more of second devices110to, e.g., confirm receipt of a signal from first device105.

Signal generator230may refer to one or more components configured, designed and/or programmed to generate one or more communication signals to be sent to, for example, one or more second devices110to initiate a calibration process. In accordance with such example, signal generator230may be configured to, e.g., transmit a calibration instruction signal at an arbitrary level. The signal level of a “transmit signal” (e.g., a calibration instruction signal transmitted by first device105) may be referred to hereafter as a “transmit signal level” or “transmit level.” “Transmit signal level,” “transmit level,” “received signal level,” “receive level,” or “signal level” may refer to signal strength, signal power, or any measure of a transmit signal or receive signal, as the case may be, that may be quantified in accordance with at least the embodiments described herein. For convenience, “signal level” will represent any such measure.

Selector235may refer to one or more components configured, designed and/or programmed to select devices from among second devices110to be members of a group formed to enable its members (e.g., second devices110) to communicate securely among themselves using a shared secret that is unique to the group.

FIG. 3shows an example configuration of a second device110by which various aspects of secure communication may be implemented, arranged in accordance with at least some embodiments described herein. As depicted, second device110may be configured to include a processor305, a memory310, a communications interface315, a shared secret creator and encryptor320, a decryptor325, a signal detector330, a signal generator335, a calibrator340, a timer345, a counter350, a distance calculator355, a centroid calculator360, an identifier365, and a manager370. Any one or more of processor305, memory310, communications interface315, shared secret creator and encryptor320, decryptor325, signal detector330, signal generator335, calibrator340, timer345, counter350, distance calculator355, centroid calculator360, identifier365, and manager370may be implemented as hardware, software, firmware, or any combination thereof. Further, second device110is not limited to such components, as modifications may be made by combining two or more of the components described herein, eliminating at least one of the components, adding further components, substituting components, or even having various components assuming sub-processing roles accorded to other components in the following description.

Processor305may refer to one or more components configured, designed, and/or programmed to control one or more operations of second device110.

Memory310may refer to any hardware and/or one or more virtual components configured to store, e.g., executable instructions and/or data. In some examples, memory310may include system memory configured to store, inter alia, instructions for execution by one or more embodiments of processor305. Memory310may also, or alternatively, include one or more storage devices to store data for various purposes, including retrieval to system memory for use by the one or more embodiments of processor305.

Communications interface315may refer to one or more components configured, designed and/or programmed to conduct or facilitate communication with another device (e.g., with first device105or any of second devices110). In some embodiments, communications interface315may be a wireless interface or an NFC interface, but such are merely examples.

Shared secret creator and encryptor320may refer to one or more components configured, designed and/or programmed to generate a shared secret by which information may be encrypted to provide secure transfer between second device110and others of second devices110. In some embodiments, each of second devices110may generate its own shared secret, thus avoiding the need to transfer a corresponding secret to others of second devices110. Shared secret creator and encryptor320may be a component distinct from processor305, but some or all functions performed by shared secret creator and encryptor320may be performed by processor305, in which case processor305may be considered to include part or all of shared secret creator and encryptor320. Details of shared secret creator and encryptor320are further discussed below with respect toFIG. 4.

Decryptor325may refer to one or more components configured, designed and/or programmed to decrypt encrypted data received from, e.g., others of second devices110and/or stored on second device110.

Signal detector330may refer to one or more components configured, designed and/or programmed to detect one or more communication signals from, for example, first device105and/or another second device110. In accordance with such example, signal detector330may be configured to, e.g., receive a calibration signal from first device105and/or a message from another second device110communicating a signal level at which a signal from second device110was received by the other second device110. The signal level of such a “received signal” (e.g., a signal received by the other second device110) may be referred to hereafter as a “received signal level” or “receive level.”

Signal generator335may refer to one or more components configured, designed and/or programmed to generate one or more communication signals to be sent to, for example, first device105as part of the calibration process and/or another second device110in a message communicating a signal level.

Calibrator340may refer to one or more components configured, designed and/or programmed to calibrate signal generator335, e.g., in response to receiving a calibration instruction signal from first device105. In some examples, signal generator335may be calibrated to transmit at a signal level that matches the transmit signal level of the calibration instruction signal. Accordingly, the transmit signal levels of all second devices110may be matched to the transmit signal level of first device105and thus made equal. Matching transmit signal levels may enable two of second devices110to determine their relative distance from each other, as described below with respect to some embodiments.

Timer345may refer to one or more components configured, designed, and/or programmed to measure, output, or control one or more components of second device110in regards to generation of a shared secret. In accordance with at least one embodiment, timer245may be configured to invalidate the shared secret after a preset time has elapsed from its creation.

Counter350may refer to one or more components configured, designed, and/or programmed to measure, output, or control one or more components of second device110in regards to usage of a shared secret. In accordance with at least one embodiment, counter350may be configured to invalidate the shared secret after a preset number of such instances has elapsed from its creation.

Distance Calculator355may refer to one or more components configured, designed, and/or programmed to calculate a relative distance separating second device110from another second device110.

Centroid Calculator360may refer to one or more components configured, designed, and/or programmed to calculate a centroid of points corresponding to the locations of second devices110relative to an origin.

Identifier365may refer to one or more components configured, designed, and/or programmed to identify second devices110to be members of a group.

Manager370may refer to one or more components configured, designed, and/or programmed to manage, e.g., arrange, second devices110in, e.g., an order in which calibration instruction signals were transmitted to each of second devices110by first device105.

FIG. 4shows an example configuration of shared secret creator and encryptor320that may be implemented in a device by which at least aspects of secure communication may be implemented, arranged in accordance with at least some embodiments described herein. As depicted, shared secret creator and encryptor320may include a shared secret creator405and an encryptor410. Further, shared secret creator and encryptor320may be implemented as hardware, software, and/or firmware. Further still, shared secret creator and encryptor320is not limited to such components, as obvious modifications may be made by combining two or more of the components described herein, eliminating at least one of the components, adding further components, substituting components, or even having various components assuming sub-processing roles accorded to other components in the following description.

Shared secret creator405may refer to one or more components configured, designed, and/or programmed to generate at least portions of a shared secret by which information may be encrypted. In at least some embodiments, “information” may include a signal that comprises a command, text, video data, audio data, still image data, etc., or any combination of these. In at least some embodiments, a shared secret may correspond to a received signal level of a signal received by second device110from another of second devices110, for the purpose of determining their relative distance of separation. In at least some embodiments, a shared secret may correspond to a centroid of second devices110. Examples of generating the shared secret are described below.

Encryptor410may refer to one or more components configured, designed and/or programmed to encrypt information by use of, e.g., a shared secret created by shared secret creator405. In some examples, by use of the shared secret, encryptor410of a second device110may encrypt information for secure transfer to another second device110. In some examples, encryptor410of a second device110may encode a signal to be transmitted to another second device110with the signal level at which a signal was received by second device110.

FIG. 5shows an example processing flow500by which a system of devices may attempt to develop a secret key to implement at least various aspects of secure communication, in accordance with at least some embodiments described herein. Processing flow500may be implemented by first device105and second devices110. Further, processing flow500may include one or more operations, actions, or functions depicted by one or more blocks505,510, and515. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the desired implementation. Processing flow500may begin at block505.

Block505(Select Group Devices) may refer to selector235corresponding to first device105implementing selection of second devices110A,110B,110C, . . . ,110N to be members of a group comprising at least part of system100. In some embodiments, selection is implemented in accordance with processor210controlling signal generator230to transmit wireless signals to the selected second devices110. In some embodiments, first device105may present to a user many wireless devices, including second devices110, to be members of a group formed for secure communication. In some examples, the group may be formed by the user inputting information via user interface205, according to which selector235may select second devices110to be members of the group in accordance with the transmitted wireless signals (hereinafter, “second device(s)110” will refer to the one or more second devices110that are selected as members of the group). In some embodiments, a program running on first device105may automatically control selector235to select second devices110to be members of the group. In some embodiments, the group may instead or additionally be pre-configured and/or provided to first device105(e.g., without selection via user interface205or automatically by first device105). Block510may follow block505.

Block510(Determine Relative Distances) may refer to distance calculator355corresponding to each of second devices110determining the relative distances between itself and the others of second devices110based on a transfer of messages (e.g. messages received by signal detector330and transmitted by signal generator335) encoded with the receive levels of the respective messages. The distances may be measured in units that suit the environment in which second devices are located. In some examples, in a building environment, the relative distances may be measured in feet or meters. In a more compact environment, such as a machine or laboratory, the relative distances may be measured in inches or centimeters. Details of determining the relative distances are described below with respect toFIG. 6. Block515may follow block510.

Block515(Determine Centroid) may refer to centroid calculator360corresponding to each of second devices110independently (i.e., independently of other second devices110) determining the centroid of points corresponding to the locations of all second devices110in the group relative to an origin, based on the relative distances determined by distance calculator355in block510. The centroid may be used as an encryption/decryption key for subsequent communications among second devices110.

FIG. 6shows an example processing flow600illustrating further details of processing flow500illustrated inFIG. 5, in accordance with at least some embodiments described herein. Processing flow600may correspond to determining relative distances between second devices110as described above with reference to processing flow500. Processing flow600may be implemented by first device105and second devices110or by second devices110. Further, processing flow600may include one or more operations, actions, or functions depicted by one or more blocks605,610,615,620,625,630,635,640,645, and650. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the desired implementation. Processing flow600may begin at block605.

Block605(Calibrate Second Devices) may refer to signal generator230corresponding to first device105transmitting respective wireless signals to instruct second devices110to calibrate their respective wireless transmit levels. In some embodiments, signal generators335corresponding to second devices110may send a confirmation signal to first device105to confirm receipt of the calibration instruction signal. In some embodiments, the wireless signals may be the same signals transmitted by signal generator230to select second devices110to be members of the group in Block505. In some examples, signal generator may send a signal to second device110A, second device110B, second device110C, . . . , second device110N in turn, instructing them to adjust their respective wireless transmit levels to an arbitrary signal level. In some embodiments, the arbitrary signal level may be provided by a program running on first device105or by a user of first device105. The arbitrary signal level may be the wireless transmit level of the calibration instruction sent by first device105. The instructing of second devices110A through110N to calibrate their wireless transmit levels may cause each of second devices110in the group to transmit at the same wireless signal level (e.g., a signal level that is within a tolerance, or that is equal to a degree of precision, preset for the calibration). Further, the order in which the calibration instruction signals are sent to second devices110A through110N may determine the order in which second devices110A through110N will query one another in the process of determining their relative distances of separation. Block610may follow block605.

Block610(Identify Group Devices) may refer to identifier365corresponding to each of second devices110A through110N identifying the members of the group (i.e., the others of second devices110A through110N included in the group). In some examples, signal detector330may detect the calibration instruction signals sent by first device105to second devices110A through110N, and identifier365may identify second devices110A through110N from their respective calibration instruction signals. Block615may follow block610.

Block615(Arrange Group Devices) may refer to manager370corresponding to each of second devices110A through110N arranging all second devices110A through110N in a manner or arrangement that conveys or represents an order in which signal detector330detected the calibration instruction signals sent by first device105(i.e., the order in which second devices110A through110N were instructed to be calibrated by first device105). Manager370corresponding to each of second devices110A through110N may determine the order of calibration from the calibrate instructions themselves (i.e., each of second devices110may detect each calibration instruction sent by first device105to each of second devices110, and may thus determine the order of calibration in accordance with the order of calibration instruction). In some embodiments, the order of calibration may determine the order in which each of second devices110determines its relative distance to the other second devices110. A person of ordinary skill in the art will readily determine other arrangements or representations of the order in which second devices110were calibrated, all of which are considered to be within the scope of this disclosure. Thus, second devices110A through110N have arranged themselves into the same order in which they were calibrated. Block620may follow block615.

Block620(Request Signal Level) may refer to signal generator335corresponding to second device110A transmitting a wireless signal to second device110B to request the signal level at which second device110B received the request of second device110A. Second device110A and second device110B may be first and second in the order in which second devices110A through110N were calibrated by first device105in block605and arranged in block615. Second device110A may begin relative distance measurement because it has identified itself as the first one of second devices110to be calibrated. Block625may follow block620.

Block625(Respond to Request) may refer to second device110B signal generator335responding to the request from second device110A with a coded message that is encoded with a key by encryptor410. In some embodiments, the key with which the response is encoded is the receive level of signal detector330corresponding to second device110B (i.e., the level at which signal detector330corresponding to second device110B received the query from second device110A). Decision block630may follow block625.

Decision block630(Signal Levels Match?) may refer to signal detector330corresponding to second device110A determining whether the signal level of the signal received from second device110B is equal to the signal level of the signal generated by signal generator335and received by second device110B from second device110A. Upon a negative determination (i.e., “NO” at decision block630), processing flow600may revert to block605(Calibrate Second Devices) for recalibration of some or all of second devices110; however, upon a positive determination (i.e., “YES” at decision block630), block635may follow decision block630.

Block635(Decode Message) may refer to decryptor325corresponding to second device110A decoding the message received from second device110B and detected by signal detector330corresponding to second device110A. In some embodiments, decryptor325corresponding to second device110A is able to decrypt the coded message because, assuming that calibrators340corresponding to second devices110A and110B properly calibrated signal generators335in block605, the receive level (i.e., the received signal level) at which signal detector330corresponding to second device110A received the coded message should be equal to the receive level at which signal detector330corresponding to second device110B received the request from second device110A, to a degree of precision preset for the decoding. Because the key may be determined in accordance with the locations of second devices110A and110B, security may be enhanced: An eavesdropper cannot be in the exact same physical location as either second device110A or second device110B so as to learn the key and decode the message. As a result, second devices110A and110B may independently determine how far they are from each other, as described below with reference to block640.

In general, the coded message received by a querying second device110from a queried second device110may include any information related to the components or functioning of the system, including relative distances between the queried second device and each of the other second devices that precede the querying second device in the arrangement determined in block615. Examples are described below with respect to queried devices other than second device110B. However, because there are no querying second devices that precede second device110A in the arrangement determined in block615, the coded message received by second device110A from second device110B does not include relative distance information between second device110B and any other second device110in this embodiment. Block640may follow block635.

Block640(Calculate Relative Distance) may refer to distance calculator355of second devices110A and110B determining the relative distance separating one from the other using the transmit and receive signal levels of the signals generated and detected, respectively, by signal generator335and signal detector330corresponding to each of second devices110A and110B. The relative distance may be determined by the person of ordinary skill using known techniques, given the transmit and receive signal levels of both devices. Decision block645may follow block640.

Decision block645(All Second Devices Queried?) may refer to identifier365corresponding to second device110A determining and then indicating whether all second devices110B through110N have been queried by second device110A with a request for the signal level at which each respective second device110B through110N receives the request of second device110A. Upon a negative determination, i.e., “NO,” at decision block645, processing flow600may revert to block620where second device110A may request the receive signal level from the second device110that follows in the arrangement (e.g., following the above-described request/response communications with second device110B, second device110A may request the receive signal level from second device110C); however, upon a positive determination, i.e., “YES,” at decision block645, the querying by second device110A is complete with respect to second devices110B through110N in the arrangement determined in block615(i.e., second device110A has queried all of second devices110B through110N); and memory310corresponding to second device110A stores the relative distances between second device110A and each of second devices110B through110N. Block650(End) then follows decision block645and processing flow600ends with respect to second device110A as the querying device.

As described above, processing flow600may be implemented using each of second devices110A through110N. In some examples, processing flow600may be implemented by second device110B as the querying second device. Second device110B, however, need not query second device110A with a request for its receive signal level because second device110B may determine that the receive signal level of second device110A of a signal received from second device110B is equal to the receive signal level of second device110B of the signal received from second device110A, to a degree of precision preset for the decoding, as described above. Instead, processing flow600may proceed in the manner described above, with second device110B as the querying device, requesting of second device110C the signal level at which second device110C received the request signal from second device110B.

With second device110B as the querying device, blocks610and615need not be repeated because second device110B has already performed the identifying and arranging as described above (unless a negative determination (i.e., “NO”) is made at decision block630). Thus, blocks620through645may be repeated with second device110B as the querying second device and second devices110C through110N, in turn, as the queried second device. Thus, for example, block620(Request Signal Level) may refer to signal generator335corresponding to second device110B sending a request to second device110C for the signal level at which second device110C received the request of second device110B. Block625may follow block620.

Here, block625(Respond to Request) may refer to second device110C responding to the request from second device110B via signal generator335with a coded message that is encoded with a key by encryptor410. In some embodiments, the key with which the response is encoded is the receive level of signal detector330corresponding to second device110C (i.e., the level at which signal detector330corresponding to second device110C received the query from second device110B). This signal level may be different from the receive signal level received by second device110B from second device110A, for example because the relative distance between second device110C and second device110B may be different from the relative distance between second device110B and second device110A. Thus, the key with which encryptor410corresponding to second device110C encoded the message for responding to the request from second device110B may be correspondingly different from the key with which encryptor410corresponding to second device110B encoded the message for responding to the request from second device110A.

Decision block630(Signal Levels Match?) may refer to signal detector330corresponding to second device110B determining whether the signal level of the signal received from second device110C is equal to the signal level of the signal generated by signal generator335and received by second device110C from second device110B. Upon a negative determination (i.e., “NO” at decision block630), processing flow600may revert to block605(Calibrate Devices) for recalibration of at least one of second device110B and second device110C. In some embodiments, some or all of second devices110A and110D through110N may be recalibrated as well. However, upon a positive determination (i.e., “YES” at decision block630), block635may follow decision block630.

Block635(Decode Message) may refer to decryptor325corresponding to second device110B decoding the message received from second device110C and detected by signal detector330corresponding to second device110B. In some embodiments, decryptor325corresponding to second device110B may decrypt the coded message because, assuming second devices110B and110C properly calibrated themselves under instruction by first device105, the receive level at which signal detector330corresponding to second device110B received the coded message should be equal to the receive level at which signal detector330corresponding to second device110C received the request from second device110B, to a degree of precision preset for the decoding. As a result, second devices110B and110C may independently determine how far they are from each other, as described below with reference to block640.

As described above, the coded message received by a querying second device110from a queried second device110may include any information related to the components or functioning of the system, including relative distances between the queried second device and each of the other second devices that precede the querying second device in the arrangement determined in block615. Thus, with respect to second device1106as the querying device and second device110C as the queried device, the coded message received by second device1106may include the relative distance between second device110C and second device110A, which may have been determined in accordance with the request for a receive signal level made of second device110C by second device110A during the query-response processing described above. As a result of this sharing of the relative distance, second device1106may store in its memory310the relative distance between itself and second device110A and the relative distance between second device110C and second device110A.

In block640, distance calculators355of second device1106and second device110C may calculate the relative distance between second device1106and second device110C; this relative distance may be added to the relative distance information already stored in memory310corresponding to second device1106. Thus, second device1106may store in memory310the relative distances between itself and second device110A, between itself and second device110C, and between second device110C and second device110A.

With respect to second device1106as the querying second device, decision block645(All Second Devices Queried?) may refer to identifier365corresponding to second device1106determining whether all second devices110C through110N have been queried by second device1106with a request for the signal level at which each respective second device110C through110N received the request of second device1106. Upon a negative determination, i.e., “NO,” at decision block645, processing flow600may revert to block620where second device1106may request the receive signal level from the next second device110in the arrangement (e.g., following the above-described request/response communications with second device110C, second device110B may request the receive signal level from second device110D); however, upon a positive determination, i.e., “YES,” at decision block645, the querying by second device110B is complete with respect to second devices110that follow second device110B in the arrangement determined in block615(i.e., second device110B has queried all of second devices110C through110N); and memory310corresponding to second device110B stores the relative distances between second device110B and each of second devices110A and110C through110N. Moreover, in a manner similar to that described above, the coded message received by second device110B from each of second devices110D through110N may include the respective relative distances between second devices110D through110N and second device110A, which may have been determined in accordance with the request for a receive signal level made of second devices110D through110N, respectively, by second device110A during the query-response processing with second device110A as querying device and second devices110D through110N as queried devices. As a result of this sharing of relative distances, memory310corresponding to second device110B may also store the relative distances between second device110A and second devices110D through110N, respectively. Block650(End) thus follows decision block645and processing flow600ends with respect to second device110B as the querying device.

Processing flow600may be implemented in a similar manner with respect to each of second devices110C through110(N−1) as querying second device and each of second devices110A through110N as queried second device (second device110N is a queried second device to all of second devices and may not act as querying second device in this embodiment). The result is that each of second devices110A through110N has accumulated N received signal levels, all communicated in encrypted form using keys that may change rapidly. In addition, each of second devices110A through110N has also gathered signal levels measured by the other second devices110. Thus, each one of second devices110A through110N may determine the relative distances between all of second devices110, for example without use or configuration in a network or with networked components such as base stations or hubs to triangulate each other. At the end of this process, each of second devices110A through110N may have an identical collection of relative distances.

Thus, there exists a relationship between second devices110A through110N and the relative distances. In some examples, the relationship may be expressed as an array of the relative distances, such as an N×N array or equivalent of the N second devices and N relative distances. In some examples, the N×N array may be an N×N matrix A of relative distances, in which the rows and columns each correspond to the N second devices and each element Ai,jis the relative distance between the second devices110corresponding to row i and column j, respectively. Using known mathematical techniques, centroid calculator360of each of second devices110A through110N may thus independently calculate the centroid of the entire group of second devices110A through110N using the relationship, relative to a reference point such as an origin (0,0) in a two-dimensional space as depicted inFIG. 1or (0,0,0) in a three-dimensional space. In some embodiments, second device110A may be the reference point. In some embodiments, first device105may designate the reference point and communicate the same to all second devices110in the group. In some embodiments, centroid calculator360of each of second devices110A through110N may autonomously determine coordinates (XA, YA) through (XNYN) of second devices110A through110N, respectively, and the coordinates of the centroid, or a coordinate system including the coordinates (XAYA) through (XNYN) of second devices110A through110N, respectively, and the coordinates of the centroid. Whether in two or three dimensions, the coordinates of the centroid may be the secret key for future secure communications.

As noted above, security is enhanced because an eavesdropper cannot be in the exact same physical location as any querying second device110or queried second device110so as to learn the key and decode the message of any single exchange. Notably, because the message exchanges may be encoded with keys that depend on the relative locations of the various pairs of querying and queried second devices110, all message exchanges may be encoded with different keys.

Alternatively, or in conjunction with one or more of the examples described above, one or more second devices110may randomly query one or more other second devices110to request the signal level at which the other second device(s)110received the request, as described with respect to blocks625-645. That is, any of second devices110belonging to the group may query any of the other second devices110of the group at random. As described above, each queried second device110may respond with a coded message that is encoded with a key which is the receive level at which the query was received by the queried second device110. As in the foregoing examples, the coded message may include any information related to the components or functioning of the system. In accordance with random querying, the coded message may additionally include relative distances that have been determined or gathered by all queried second devices from other previously queried devices, without regard to the arrangement determined in block615.

In some embodiments, the physical position of the centroid may be monitored, whether constantly, periodically, or intermittently, and the secret key may become invalid if there is any change in the physical position of the centroid. In this sense, the coordinates of the centroid may be said to “lock” second devices110together in space and thus provide spatial as well as communication security. “Locking” thus may mean that the movement of one of second devices110in the group changes the centroid, consequently causing the established secure communication to be lost.

If, for example, any of second devices110moves or fails, monitoring may reveal a change in the physical position of the centroid. In some embodiments, second devices110may collectively perform the monitoring by repeating processing flow500and processing flow600constantly, periodically, or intermittently. For example, in some embodiments, in response to a detected change, each of second devices110may recalculate a relative distance to the other second devices110, share the recalculated relative distances with the other second devices110, autonomously recalculate the centroid based at least in part on the shared recalculated relative distances, and communicate using the recalculated centroid as a shared secret.

Alternatively or additionally, any single second device110may randomly monitor one or more other second devices110constantly, periodically, or intermittently for, e.g., movement or failure relative to the second device110performing the monitoring. Such monitoring by a single second device110may be performed in accordance with the previously determined relative distance or signal without repeating processing flow500and processing flow600in their entirety; that is, detecting a change in the relative distance or signal itself may be sufficient to judge that the centroid has changed.

In some embodiments, an entity (e.g., a motion detector, power sensor, security personnel using a security camera, etc.) may perform physical monitoring of second devices110. If motion or a power level change is detected, for example, the monitoring entity may communicate with, e.g., first device105or one of second devices110, to initiate processing flow500.

By way of one non-limiting example, consider a processing plant or portion thereof including first device105and second devices110(which may include pumps, flow control valves, level detectors, temperature sensors, etc.) to perform cooperatively and securely. A supervising application may be run on first device105, which in some embodiments may be a tablet displaying representations of second devices110and operative interconnections therebetween such as electrical circuitry or fluid pipework. Any or all displayed items may be color-coded on the display.

In some embodiments, an operator may use first device105to select second devices110for a group as described above. In some examples, a human operator may implement selection using the display as a tactile interface. In a similar manner, an operator may use first device105to initiate calibration as described above. In some examples, after selection is completed, the operator may initiate calibration of second devices110. In some examples, calibration may automatically begin with respect to each selected second device110in response to its selection.

In some embodiments, as each second device110is calibrated, its corresponding representation displayed on first device105may change to indicate a calibrated state. For example, the displayed representation corresponding to a calibrated second device110may flash green.

Following calibration and identification of all second devices110, each second device110may begin to collect relative distance information or related signal levels for all other second devices110, randomly or according to an ordered arrangement described above with respect to block615, or by some combination of random and ordered collection. As described above, each second device110may transmit at an identical signal level. In some embodiments, this device-to-device polling may result in collisions or signal interference, which may be resolved by, e.g., a querying second device110retrying after a random interval.

In accordance with the gathered and determined relative distances or received signal levels, each of second devices110may have accumulated an identical collection of N relative distances or received signal levels. In a manner similar to that described above, centroid calculator360of each of second devices110may thus independently calculate the centroid of the entire group of second devices110using the N relative distances, relative to a reference point.

In some embodiments, each second device110may send a signal to first device105confirming calculation of the centroid. The confirmation signal may include an identifier of the device and need not be encoded. In some embodiments, if the displayed representation on first device105corresponding to a calibrated second device110changes (e.g., flashes green), the displayed representation may again change to indicate confirmation of the centroid calculation (e.g., the flashing green may change to a constant green). In some embodiments, when the display of first device105indicates confirmation of centroid calculation by all second devices110in the group, the operator may interpret the display to further indicate that the group is interlocked and secure.

In some embodiments, one or more second devices110may move by design at a predetermined time. In some embodiments, such movements may be made according to a predetermined pattern or patterns. In such embodiments, new keys may be generated by all of second devices110without input by first device105. In other words the centroid does not have to be static, and first device105may be omitted from subsequent generation of secret keys.

In some embodiments as described, received signal levels may be determined by second devices110, and relative distances between second devices110determined from the received signal levels by distance calculator355. In such embodiments, the relative distances may be determined, accumulated, gathered, and/or shared among second devices110, and the relationship may be created from the relative distances (e.g., an N×N matrix may be created from the relative distances). Furthermore, the relative distance between a querying second device110and a queried second device110may be used as the key by which encryptor410encodes the coded message responding to the request, e.g., in block625. In this regard, because signal level varies with the inverse square of the distance between the transmitter and the receiver, in some embodiments the signal levels may be determined, accumulated, gathered, and/or shared among second devices110without converting them to relative distances prior to existence of the relationship. That is, rather than calculating relative distances as the query-response process is performed, signal levels may form the basis of the relationship (e.g., signal levels may be the elements Ai,jof the N×N signal level matrix A, and a relative distance matrix calculated from the signal level matrix by known techniques).

FIG. 7shows a block diagram illustrating an example computing device by which various examples of secret communication may be implemented, arranged in accordance with at least some embodiments described herein.

In a very basic configuration702, computing device700typically includes one or more processors704and a system memory706. A memory bus708may be used for communicating between processor704and system memory706.

Depending on the desired configuration, processor704may be of any type including but not limited to a microprocessor (μP), a microcontroller (μC), a digital signal processor (DSP), or any combination thereof. Processor704may include one more levels of caching, such as a level one cache710and a level two cache712, a processor core714, and registers716. An example processor core714may include an arithmetic logic unit (ALU), a floating point unit (FPU), a digital signal processing core (DSP Core), or any combination thereof. An example memory controller718may also be used with processor704, or in some implementations memory controller718may be an internal part of processor704.

Depending on the desired configuration, system memory706may be of any type including but not limited to volatile memory (such as RAM), non-volatile memory (such as ROM, flash memory, etc.) or any combination thereof. System memory706may include an operating system720, one or more applications722, and program data724. Application722may include a shared secret creation process726that is arranged to perform the functions as described herein including those described with respect to processing flow500ofFIG. 5and processing flow600ofFIG. 6. Program data724may include shared secret creation data728that may be useful for operation with shared secret creation process726as described herein. In some embodiments, application722may be arranged to operate with program data724on operating system720such that implementations of shared secret creation may be provided as described herein. This described basic configuration702is illustrated inFIG. 7by those components within the inner dashed line.

Computing device700may have additional features or functionality, and additional interfaces to facilitate communications between basic configuration702and any required devices and interfaces. For example, a bus/interface controller730may be used to facilitate communications between basic configuration702and one or more data storage devices732via a storage interface bus734. Data storage devices732may be removable storage devices736, non-removable storage devices738, or a combination thereof. Examples of removable storage and non-removable storage devices include magnetic disk devices such as flexible disk drives and hard-disk drives (HDD), optical disk drives such as compact disk (CD) drives or digital versatile disk (DVD) drives, solid state drives (SSD), and tape drives to name a few. Example computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data.

Computing device700may also include an interface bus740for facilitating communication from various interface devices (e.g., output devices742, peripheral interfaces744, and communication devices746) to basic configuration702via bus/interface controller730. Example output devices742include a graphics processing unit748and an audio processing unit750, which may be configured to communicate to various external devices such as a display or speakers via one or more A/V ports752. Example peripheral interfaces744include a serial interface controller754or a parallel interface controller756, which may be configured to communicate with external devices such as input devices (e.g., keyboard, mouse, pen, voice input device, touch input device, etc.) or other peripheral devices (e.g., printer, scanner, etc.) via one or more I/O ports758. An example communication device746includes a network controller760, which may be arranged to facilitate communications with one or more other computing devices762over a network communication link via one or more communication ports764.

Computing device700may be implemented as a portion of a small-form factor portable (or mobile) electronic device such as a cell phone, a personal data assistant (PDA), a personal media player device, a wireless web-watch device, a personal headset device, an application specific device, or a hybrid device that include any of the above functions. Computing device700may also be implemented as a server or a personal computer including both laptop computer and non-laptop computer configurations.