This disclosure relates generally to close-proximity communications and, more particularly, to methods and devices for establishing trust on first use for close proximity communications.
Close-proximity communications, such as near field communications, enable convenient transfers of data by bringing devices into proximity. Transferrable data may include contact information such as phone numbers and addresses, media such as photos or songs, and other information such as web links or web pages.
Example methods and devices for establishing trust on first use (TOFU) for close proximity communications, are disclosed herein. In some examples, two users, having respective mobile devices, seek to establish a secure NFC connection between their mobile devices. The users “tap” their devices together (e.g., bring the devices into close proximity or make actual contact), at which time their devices exchange respective keys. Each of the example mobile devices then requests (e.g., via a user interface) that their respective users acknowledge or verify that the key or an identifier associated with the key is trusted. If the users acknowledge or verify the trust, each of the example mobile devices accepts the key received from the other mobile device as trusted and stores the key, the identifier, and/or a shared key calculated using the received key. For subsequently establishing secure NFC connections between mobile devices that have established trust, the keys exchanged between the mobile devices are used to verify trust, such as by looking up the exchanged key(s) and/or retrieving the stored identifiers and/or the shared key. The shared key is then used to exchange data between the mobile devices without further verification by the user (although there may be user verification for specific types of data transactions to occur).
Disclosed example apparatus include a processor, a close proximity communications module coupled to the processor; and a memory coupled to the processor and storing instructions. When executed by the processor, the example instructions cause the processor to obtain, via a user interface, an indication that a device is trusted, and store at least one of a public key or an identifier for the device, the public key being received from the device via a close proximity communications connection.
In some examples, the instructions are to further cause the processor to obtain a shared key based on the public key, the public key being received from the device via a second close proximity communications connection. In some such examples, the instructions are to cause the processor to obtain the shared key based on the identifier. In some example apparatus, the instructions are to further cause the processor to obtain verification that the identifier is trusted.
In some example apparatus, the instructions are to further cause the processor to, prior to obtaining the shared key based on the public key, verify that the public key is trusted by performing a lookup of the public key in a storage. In some examples, storing at least one of the public key or the identifier comprises storing the public key in association with the identifier. In some example apparatus, the instructions are to further cause the processor to determine a shared key based on the public key in response to obtaining the indication. In some example apparatus, the instructions are to further cause the processor to store a shared key in association with the at least one of the public key or the identifier.
In some examples, the instructions are to further cause the processor to obtain the identifier via the user interface. In some example apparatus, the instructions are to further cause the processor to obtain the identifier via the close proximity communications connection. In some examples, the instructions are to further cause the processor to send the at least one of the identifier or the public key to a server, and store at least one of a second identifier or a second public key received from the server, the at least one of the second identifier or the second public key corresponding to a second trusted device.
In some example apparatus, the instructions are to further cause the processor to store a first counter value associated with at least one of the identifier, a shared key, or the public key, compare the first counter value with a second counter value received from the device, perform a data transaction using the shared key based on the comparison, and store the second counter value received from the device. In some example apparatus, the close proximity communications connection comprises a near field communications connection. In some examples, the device comprises a mobile device.
Disclosed example methods include receiving a public key from a device via a close proximity communications connection, obtaining, via a user interface, an indication that the device is trusted, and storing at least one of the public key or an identifier for the device.
Some example methods further include receiving the public key from the device via a second close proximity communications connection, and obtaining a shared key based on the public key. In some such example methods obtaining the shared key is based on the identifier. Some such example methods further include obtaining verification that the identifier is trusted. Some example methods include verifying, prior to obtaining the shared key based on the public key, that the public key is trusted by performing a lookup of the public key in a storage.
In some example methods, storing at least one of the public key or the identifier comprises storing the public key in association with the identifier. Some examples further include determining a shared key based on the public key in response to obtaining the indication. Some such example methods further include storing the shared key in association with the at least one of the public key or the identifier.
Some example methods further include obtaining the identifier via the user interface. Some example methods further include obtaining the identifier via the close proximity communications connection. Some examples further include sending the at least one of the identifier or the public key to a server, and receiving at least one of a second identifier or a second public key from the server, the at least one of the second identifier or the second public key corresponding to a second trusted device.
Some example methods further include storing a first counter value associated with at least one of the identifier, a shared key, or the public key, receiving a second counter value from the device, comparing the first and second counter values, performing a data transaction using the shared key based on the comparison, and storing the second counter value in association with the at least one of the identifier, the shared key, or the public key. In some examples, the close proximity communications connection comprises a near field communications connection. In some examples, the device comprises a mobile device.
In some examples, the mobile devices 102, 104 establish a trust relationship on a first occasion or first use that the mobile devices 102, 104 are connected via NFC. As used herein, a trust relationship exists when both parties to an NFC transaction have verified that the other party is authentic (e.g., there is no attacker, such as a man-in-the-middle attacker). When a trust relationship is established between the mobile devices 102, 104, the example mobile device 102 may store a key, an identifier corresponding to the mobile device 104, and/or a shared key. Similarly, the example mobile device 104 stores a key, an identifier corresponding to the mobile device 102, and/or the shared key. When subsequently establishing NFC connections between the mobile devices 102, 104, the example mobile devices 102, 104 access the respective stored keys, identifiers and/or shared keys to determine that there is a trust relationship between the mobile devices 102, 104 and that the NFC connection is not subject to a man-in-the-middle attack.
As used herein, a public key refers to a non-secret key and a private key refers to a secret key. A shared key refers to a secret key known to the parties (e.g., devices) involved in a secure transaction.
The example system 100 of
The example server 106 communicates with the mobile devices 102, 104 via any type(s) of wired and/or wireless communication methods. In the example of
While the example system 100 of
Block diagrams of apparatus and flowcharts representative of example processes that may be executed to implement some or all of the elements and devices described herein are described below and shown in the drawings. In these examples, the process represented by each flowchart may be implemented by one or more programs comprising machine readable instructions for execution by a processor or controller, such as shown in
The one or more programs may be embodied in software or software instructions stored on a tangible storage medium such as, for example, a flash memory, a CD-ROM, a hard drive, a DVD, or a memory associated with a processor, but the entire program or programs and/or portions thereof could alternatively be executed by a device other than the microprocessor and/or embodied in firmware or dedicated hardware (e.g., implemented by an application specific integrated circuit (ASIC), a programmable logic device (PLD), a field programmable logic device (FPLD), discrete logic, etc.). For example, any one, some or all of the example mobile device components could be implemented by any combination of software, hardware, and/or firmware. Also, some or all of the methods represented by the flowcharts may be implemented manually. As used herein, the term tangible computer readable storage medium is expressly defined to include any type of computer readable storage.
Additionally or alternatively, the example methods described herein may be implemented using coded instructions (e.g., computer readable instructions) stored on a non-transitory computer readable medium such as a hard disk drive, a flash memory, a read-only memory, a compact disk, a digital versatile disk, a cache, a random-access memory and/or any other storage media in which information is stored for any duration (e.g., for extended time periods, permanently, brief instances, for temporarily buffering, and/or for caching of the information). As used herein, the term non-transitory computer readable medium is expressly defined to include any type of computer readable medium.
The processor 202 may be implemented using any suitable microcontroller or microprocessor capable of executing instructions. Additionally, the processor 202 may include hardware implementations, such as application-specific integrated circuits (ASIC), programmable logic devices (PLDs), or any other suitable logic circuit(s) and/or device(s).
The NFC module 204 includes a memory 206 and an antenna 208. In one example, the NFC module 204 is implemented according to the International Standards Organization standard ISO 14443. Implementation according to other standards is possible. The memory 206 may store information related to the user of the mobile device 200, such as a public key for the mobile device 200 that may be transferred to another NFC-enabled communication device upon the NFC module 204 being interrogated. The information may be input into the memory 206 manually, via close-proximity communication (e.g., NFC), via scanning, or through any other suitable technique. In addition, the NFC module 204 may receive public keys or other authentication information (e.g., from other mobile devices). The received public keys may be stored in the memory 206 of the NFC module 204 and/or in a storage 210 in the mobile device 200, and/or may be transferred to one or more data stores (e.g., the server 106 of
The NFC module 204 may store information (e.g., credentials) or may store pointers to information that may be retrieved over the network by the processor 202 via a Bluetooth interface 212 and/or via a network interface 214. In some examples, all of the information may be stored across a network, and/or the NFC module 204 may store information and may store pointers to information.
The network interface 214 may be implemented using any wired or wireless communication interface. For example, the network interface 214 may be implemented using an Ethernet connection, or any other wired connection. Alternatively, the network interface 214 may be implemented using a WiFi interface, a cellular modem, which may be a second generation (2G) and/or third generation (3G) and/or fourth generation (4G) cellular modem, or the like, and/or any other wireless network interface. Although shown as having a single network interface 214 the mobile device 102 may include several different network interfaces using one or more different wireless access technologies.
The example mobile device 200 of
When the example mobile device 200 is to establish a secure NFC connection with another mobile device (e.g., the mobile device 104 of
The process 300 of
The attacker 402 performs the MITM attack by intercepting 406 the transmissions of the public keys QA and QB between the mobile devices 302, 304, and substituting the attacker's key QE for the public keys of the mobile devices 302, 304. After the exchange, the mobile devices 302, 304 do not share a common key (Z). Instead, the mobile device 302 shares a common key Z′ with the attacker 402, while the mobile device 304 shares a different common key Z″ with the attacker 402. While both mobile devices 302, 304 believe that they are communicating securely with each other, they are in fact both communicating securely with the attacker 402. The attacker 402 can now monitor or modify communications as desired.
Each of the example mobile devices 102, 104 has a private key/public key pair 502. The devices 102, 104 exchange 504 the public key portions of the private key/public key pair. After exchanging the public keys, each of the example mobile devices 102, 104 obtains verification 506 (e.g., from their respective users, via user interfaces of the mobile devices 102, 104) that the other mobile device 102, 104 is trusted. For example, the mobile device 102 prompts a user of the mobile device 102 to confirm that the other mobile device 104, from which the mobile device 102 has received a public key, is trusted. For example, the mobile device 102 may display the name and/or other identifier of the user of the mobile device 104. The user may know that the other mobile device 104 is trusted because of the close-proximity nature of the NFC connection (e.g., she is standing next to the user of the device 104). Verification that the other mobile device is trusted may additionally or alternatively be accomplished using other methods.
When the users verify that the mobile devices 102, 104 are trusted, the example mobile devices 102, 104 assign identifiers to the public keys. For example, the mobile device 102 assigns an identifier BQB to the mobile device 104. The identifier BQB may be input by the user of the mobile device 102 and/or may be received from the mobile device 104 as a suggested identifier. Similarly, the example mobile device 104 assigns an identifier AQA to the mobile device 102. In some examples, the mobile devices 102, 104 exchange suggested identifiers when exchanging the public keys QA, QB. In some examples, the public keys QA, QB, or a derivative of the public keys QA, QB, is used as the identifiers.
The suggested identifiers may then be used when prompting the respective users to verify that the mobile devices are trusted.
The example display interface 600 of
Other methods of verifying that the mobile device 104 is trusted via a display interface may be used. For example, the users of the mobile devices 102, 104 may be prompted to enter a common identification number or other agreed-upon key.
Returning to the example of
The example mobile devices 102, 104 calculate 510 the shared key Z based on the exchanged public keys QA, QB and the respective private keys dA, dB. The example mobile devices 102, 104 then store 512 the shared key Z in association with the identifier associated with the opposite mobile device 102, 104. For example, the mobile device 102 stores the shared key Z and the identifier BQB. The stored key and the identifier may then be used for subsequent secure NFC connections between the mobile devices 102, 104. Additionally or alternatively, the stored key and the identifier may be used between the mobile device 102 and another mobile device associated with the user of the mobile device 104.
A subsequent secure NFC connection process 514 may be used between the two mobile devices 102, 104 that have previously established a secure NFC connection according to the example process 500. Unlike prior art processes, the secure NFC connection process 514 reduces (e.g., prevents) the possibility of a man-in-the-middle attack between the mobile devices 102, 104. The example subsequent secure NFC connection process 514 may be performed when the mobile devices 102, 104 are tapped together.
Each of the example mobile devices 102, 104 has a private key/public key pair 516. The devices 102, 104 exchange 518 the public key portions of the private key/public key pair. The example mobile devices 102, 104 look up 520 the identifiers (e.g., stored during the first secure NFC transaction) based on the received public key. For example, the mobile device 102 looks up the identifier BQB based on the public key QB. Similarly, the mobile device 102 looks up the identifier AQA based on the public key QA. When the mobile devices 102, 104 have determined the identifiers, the mobile devices 102, 104 determine that the other mobile device 102, 104 is trusted and a secure NFC connection may be established. The mobile devices 102, 104 then use 522 the shared key Z (e.g., previously stored during a first NFC connection between the mobile devices 102, 104) to securely communicate via NFC.
The method of
The example mobile device 102 requests a user to verify that the NFC connection is trusted (block 708). For example, the mobile device 102 may display a message to the user via the user interface 216 of
The example mobile device 102 stores the public key (e.g., QB), the shared key (e.g., Z), and the identifier of the mobile device 104 (e.g., BQB) (block 714). For example, the mobile device 102 stores the shared key and the identifier in the memory 206 and/or the storage 210 of
If the connection is not trusted (e.g., based on the user input via the user interface 216) (block 710), the example mobile device 102 may skip blocks 712-716 because the NFC connection may not be secure. The example method 700 may then end and/or iterate for an NFC connection with a different mobile device.
The example method 800 begins when the mobile device 102 initiates establishment of (and/or establishes) a close proximity communications connection with another device (e.g., the mobile device 104 of
The example mobile device 102 retrieves (e.g., from the storage 210 of
If the retrieval results in finding a trusted identifier (block 810), the example mobile device 102 retrieves a shared key (e.g., Z) (block 812) that is stored in association with the stored identifier and/or the stored public key. For example, the shared key may have been stored as a result of establishing trust on first use for an earlier NFC connection between the mobile devices 102, 104. Alternatively, the shared key may be computed on every instance of establishment of a connection.
At this time, the example mobile devices 102, 104 may establish a secure NFC connection. However, the trust between the mobile devices 102, 104 does not necessarily extend to every type of data transaction being performed by the mobile devices 102, 104. Accordingly, the example mobile device 102 may request a user of the mobile device to authorize a data transaction (block 814). For example, the mobile device 102 may request and receive permission via the user interface 216 to perform a data transaction (e.g., a particular type of data transaction). If the transaction is authorized by the user (e.g., via the user interface 216) (block 816), the example mobile device 102 uses the shared key Z to exchange data (block 818). The example method 800 may then end and/or iterate to perform another data transaction.
If the look up does not result in finding an identifier (block 810), the example mobile device 102 does not perform blocks 812-818 (e.g., does not establish an NFC connection or exchange data). If the data transaction is not authorized (block 816), the example mobile device 102 does not exchange data. In some examples, the mobile devices 102, 104 may treat the NFC connection as a first NFC connection with no prior trust.
The example method 900 begins when the mobile device 102 initiates establishment of (and/or establishes) an NFC connection with another mobile device (e.g., the mobile device 104 of
The example mobile device 102 sends (e.g., via the NFC module 204) a public key (e.g., QA) and the counter value A to the mobile device 104 (block 906). The example mobile device 102 also receives a public key (e.g., QB) and a counter value B from the mobile device 104 (block 908). The example mobile device 102 looks up (e.g., retrieves from the storage 210 of
If the look up results in finding an identifier (block 912), the example mobile device 102 retrieves a shared key (e.g., Z) (block 914) that is stored in association with the stored identifier BQB and/or the stored public key QB. The example mobile device 102 determines whether the received counter value B is greater than the previous counter value B (block 916). In the example of
If the received value of counter B (e.g., X+1) is greater than the previous value of counter B (e.g., X) (block 916), the example mobile device 102 optionally requests the user to authorize the data transaction (block 918). For example, the mobile device 102 may request and receive permission via the user interface 216 to perform a data transaction (e.g., a particular type of data transaction). If the transaction is authorized (e.g., by the user via the user interface 216) (block 920), the example mobile device 102 uses the shared key Z to exchange data (block 922). The updated (e.g., incremented) value of counter B (e.g., X+1) may be stored as the value of the counter B (block 924) for use in future transactions to authenticate the transactions. The example method 900 may then end and/or iterate to perform another data transaction.
If the look up does not result in finding an identifier (block 912), the example mobile device 102 does not perform blocks 914-922 (e.g., does not establish an NFC connection or exchange data). If the received counter value B is not greater than the previous counter value B (block 916), the example mobile device 102 cancels the data transaction (e.g., does not prompt the user to go forward with the data transaction). If the data transaction is not authorized (block 920), the example mobile device 102 does not exchange data.
The example method 1000 sends (e.g., via the network interface 214 of
The example mobile device 102 receives from the server 106 a (different) identifier and a public key for a trusted NFC connection associated with the user identifier (block 1004). For example, the received identifier and public key may represent a trusted connection made by the user using a different mobile device. The received identifier, public key, and shared key may be used to establish secure NFC connections without the user verifying that the connection is trusted. In some examples, such as when there is a secure connection between the mobile device 102 and the server 106, the mobile device 102 receives the shared key associated with the received identifier and public key.
Each of the example mobile devices 102, 104 has a private key/public key pair 1102. The devices 102, 104 exchange 1104 the public key portions of the private key/public key pair. After exchanging the public keys, each of the example mobile devices 102, 104 obtains verification 1106 (e.g., from their respective users, via user interfaces of the mobile devices 102, 104) that the other mobile device 102, 104 is trusted. For example, the mobile device 102 prompts a user of the mobile device 102 to confirm that the other mobile device 104, from which the mobile device 102 has received a public key, is trusted. For example, the mobile device 102 may display the name and/or other identifier of the user of the mobile device 104. The user may know that the other mobile device 104 is trusted because of the close-proximity nature of the NFC connection (e.g., she is standing next to the user of the device 104).
When the users verify that the mobile devices 102, 104 are trusted, the example mobile devices 102, 104 assign identifiers to the public keys. For example, the mobile device 102 assigns an identifier BQB to the mobile device 104. The identifier BQB may be input by the user of the mobile device 102 and/or may be received from the mobile device 104 as a suggested identifier. Similarly, the example mobile device 104 assigns an identifier AQA to the mobile device 102. In some examples, the mobile devices 102, 104 exchange suggested identifiers when exchanging the public keys QA, QB.
The suggested identifiers may then be used when prompting the respective users to verify that the mobile devices are trusted. Assuming the users of the mobile devices 102, 104 have verified that the opposite mobile devices are trusted, the mobile devices 102, 104 assign 1108 respective identifiers to the received public keys. For example, the mobile device 102 assigns an identifier BQB to the received public key QB and the mobile device 104 assigns an identifier AQA to the received public key QA. In some examples, the assigned identifiers AQA and/or BQB are suggested identifiers provided (e.g., exchanged) with the public keys.
The example mobile devices 102, 104 calculate 1110 the shared key Z based on the exchanged public keys QA, QB and the respective private keys dA, dB. The example mobile devices 102, 104 then store 1112 the public key QA, QB and/or the identifier AQA, BQB in association the opposite mobile device 102, 104. For example, the mobile device 102 stores the public key QB. The public key QB may then be used for subsequent secure NFC connections between the mobile devices 102, 104. Additionally or alternatively, the public key QB may be used between the mobile device 102 and another mobile device associated with the user of the mobile device 104.
A subsequent secure NFC connection process 1114 may be used between the two mobile devices 102, 104 that have previously established a secure NFC connection according to the example process 1100. Unlike prior art processes, the secure NFC connection process 1114 reduces (e.g., prevents) the possibility of a man-in-the-middle attack between the mobile devices 102, 104. The example subsequent secure NFC connection process 1114 may be performed when the mobile devices 102, 104 are tapped together.
Each of the example mobile devices 102, 104 has a private key/public key pair 1116. The devices 102, 104 exchange 1118 the public key QA, QB portions of the private key/public key pair and/or the identifiers AQA, BQB. The example mobile devices 102, 104 verify that the received public keys QA, QB are in the respective storages. For example, the mobile device 102 verifies that the public key QA and/or the identifier AQA are in its storage (e.g., the public key QA matches a public key in a stored table of trusted public keys, the identifier AQA matches an identifier in a stored table of identifiers, or both). Similarly, the mobile device 102 verifies that the public key QB and/or the identifier BQB are in its storage (e.g., the public key QB matches a public key in a stored table of trusted public keys, the identifier BQB matches an identifier in a stored table of identifiers, or both). When the mobile devices 102, 104 have verified the public keys and/or the identifiers, the mobile devices 102, 104 determine that the other mobile device 102, 104 is trusted and a secure NFC connection may be established. The mobile devices 102, 104 then use 1122 the shared key Z (e.g., calculate the shared key Z from the public keys QA, QB and the private keys dA, dB) to securely communicate via NFC.
Example blocks 1202-1212 are substantially identical to respective blocks 702-712 of
Example blocks 1302 and 1304 are substantially identical to respective blocks 802 and 804 of
At this time, the example mobile devices 102, 104 may establish a secure NFC connection. However, the trust between the mobile devices 102, 104 does not necessarily extend to every type of data transaction being performed by the mobile devices 102, 104. Accordingly, the example mobile device 102 requests a user of the mobile device 102, 104 to authorize a data transaction (block 1314). For example, the mobile device 102 may request and receive permission via the user interface 216 to perform a data transaction (e.g., a particular type of data transaction). If the transaction is authorized by the user (e.g., via the user interface 216) (block 1316), the example mobile device 102 uses the shared key Z to exchange data (block 1318). The example method 1300 may then end and/or iterate to perform another data transaction.
If the public key QB and/or the identifier are not in the storage 210 (block 1310), the example mobile device 102 does not perform blocks 1312-1318 (e.g., does not establish an NFC connection or exchange data). If the data transaction is not authorized (block 1316), the example mobile device 102 does not exchange data. Instead, the example method 1300 may end and/or the mobile device 102, 104 may treat the NFC connection as a first NFC connection with no prior trust.
Although certain methods, apparatus, and articles of manufacture have been described herein, the scope of coverage of this patent is not limited thereto. To the contrary, this patent covers all methods, apparatus, and articles of manufacture falling within the scope of the claims.
Number | Date | Country | |
---|---|---|---|
61664725 | Jun 2012 | US |