Technology for enabling computing devices to recognize when they are in proximity to each other

By implementing security information sharing technology between computing devices, including identifying nearby devices, verifying user information and encrypted key exchange, data sharing security issues between computing devices have been solved, and efficient and secure data access is achieved.

CN112205019BActive Publication Date: 2025-01-28APPLE INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN201980035850.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-06-01
Filing Date
2019-05-31
Publication Date
2025-01-28
Estimated Expiration
2039-05-31

AI Technical Summary

Technical Problem

The prior art is prone to security issues when sharing data between computing devices, and unauthorized personnel may gain access to sensitive data.

Method used

By achieving security information sharing technology between computing devices, including identifying nearby computing devices, verifying user information, using encrypted key exchange and temporary password management to ensure that only authorized devices and users can access shared data and networks.

Benefits of technology

Improving the security of data sharing between computing devices, preventing unauthorized access, and enhancing user privacy and data protection.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN112205019B_ABST
    Figure CN112205019B_ABST
Patent Text Reader

Abstract

Embodiments of the present invention describe a technique for securely identifying nearby related computing devices. The technique can be implemented at a first computing device and includes the following steps: (1) receiving an advertisement packet from a second computing device, the advertisement packet including: (i) a network address associated with the second computing device, and (ii) a hash value calculated using the network address and an encryption key associated with the second computing device; and (2) for each of a plurality of known encryption keys accessible to the first computing device: (i) calculating a temporary hash value using the network address and the known encryption key, and (ii) in response to identifying that the temporary hash value matches the hash value: performing an operation associated with the second computing device.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001]

[0013] The embodiments described herein generally relate to sharing information between nearby computing devices. Background Art

[0002] Conventional methods for sharing data between computing devices are prone to security issues. For example, a common method for sharing a given password includes including the password within a communication (e.g., email, text message) with another person, or directly speaking the password to another person. This common method is undesirable, particularly when considering that an unauthorized person in possession of the password can easily gain access to potentially sensitive data accessible using the password. However, it is also undesirable to significantly increase the difficulty of sharing passwords (e.g., implementing lengthy passwords that are difficult to enter, implementing frequently changing passwords, etc.) in an attempt to deter malicious users.

[0003] Therefore, there is a need for a more efficient and secure technique for sharing data between computing devices. Summary of the invention

[0004] To address the above-mentioned deficiencies, representative embodiments described herein disclose various techniques for enabling a computing device to share information with nearby computing devices known to the computing device.

[0005] According to some embodiments, a computing device may be configured to implement a method for enabling a nearby computing device to access a wireless network by executing the techniques described herein. Specifically, the method may include the following steps: (1) receiving a request to access a wireless network from a nearby computing device, wherein the request includes user information associated with the nearby computing device, (2) in response to determining that the nearby computing device is recognized by the computing device based on the user information, presenting a notification associated with the request, and (3) in response to receiving approval for the nearby computing device to access the wireless network: providing a password for accessing the wireless network to the nearby computing device.

[0006] According to some embodiments, a computing device may be configured to implement another method for enabling a nearby computing device to access a wireless network by executing the techniques described herein. Specifically, the method may include the following steps: (1) receiving an encryption request from a nearby computing device, wherein the encryption request includes an indication that the nearby computing device is attempting to access a wireless network, (2) identifying a key for decrypting the encryption request, (3) decrypting the encryption request using the key to extract the indication, (4) displaying a notification based on the indication, and (5) in response to receiving approval for the nearby computing device to access the wireless network: providing a password for accessing the wireless network to the nearby computing device.

[0007] According to some embodiments, a computing device may be configured to implement another method for enabling a nearby computing device to access a data item by executing the techniques described herein. Specifically, the method may include the following steps: (1) receiving an encrypted request from a nearby computing device, wherein the encrypted request includes an indication that the nearby computing device is attempting to access one or more data items accessible to the computing device, (2) identifying a key for decrypting the encrypted request, (3) decrypting the encrypted request using the key to extract the indication, (4) displaying a notification based on the indication, and (5) in response to receiving approval for the nearby computing device to access the one or more data items: providing the one or more data items to the nearby computing device.

[0008] In addition, embodiments of the present invention describe a method for securely identifying nearby related computing devices. According to some embodiments, the method can be implemented at a first computing device and includes the following steps: (1) receiving an announcement packet from a second computing device, the announcement packet including: (i) a network address associated with the second computing device, and (ii) a hash value calculated using the network address and an encryption key associated with the second computing device; and (2) for each of a plurality of known encryption keys accessible to the first computing device: (i) calculating a temporary hash value using the network address and the known encryption key, and (ii) in response to identifying that the temporary hash value matches the hash value: performing an operation associated with the second computing device.

[0009] In addition, embodiments of the present invention describe a method for enabling computing devices to exchange encryption keys with each other through a server computing device. According to some embodiments, the method can be implemented at a server computing device and includes the following steps: (1) receiving a data item from a first computing device, the data item including: (I) a computing device identifier (ID) unique to the first computing device, (II) a personal identifier (ID) unique to an individual associated with the first computing device, and (III) an encryption key associated with the first computing device; (2) identifying at least one computing device related to the first computing device based on one or more of the computing device ID or the personal ID; and (3) providing the data item to the at least one computing device, wherein the at least one computing device stores the encryption key as a known encryption key linked to the computing device ID and the personal ID.

[0010] In addition, embodiments of the present invention describe another method for enabling computing devices to directly exchange encryption keys with each other. According to some embodiments, the method can be implemented at a first computing device and includes the following steps: (1) identifying a condition that enables a second computing device to know when the first computing device is in proximity to the second computing device; (2) providing a data item to the second computing device, the data item including: (i) a computing device identifier (ID) unique to the first computing device, (ii) a personal identifier (ID) unique to an individual associated with the first computing device, and (iii) an encryption key associated with the first computing device; and (3) periodically generating announcement packets, the announcement packets including: (i) a network address associated with the first computing device, and (ii) a hash value calculated using the network address and the encryption key associated with the first computing device.

[0011] Other embodiments include a non-transitory computer-readable storage medium configured to store instructions that, when executed by a processor included in a computing device, cause the computing device to perform the steps of any of the above methods. Additional embodiments include a computing device configured to perform various steps of any of the above methods.

[0012] Other aspects and advantages of the present invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings which illustrate by way of example the principles of the described embodiments. BRIEF DESCRIPTION OF THE DRAWINGS

[0013] The present disclosure will be more easily understood through the following detailed description in conjunction with the accompanying drawings, in which like reference numerals represent like structural elements.

[0014] Figure 1 Block diagrams illustrating various computing devices that may be configured to implement various aspects of the various techniques described herein, according to some embodiments.

[0015] FIG. 2A to FIG. 2B A conceptual diagram of an exemplary computing device that may be configured to service requests to access a wireless network is shown in accordance with some embodiments.

[0016] Figure 3 A method for servicing a request for access to a wireless network is shown according to some embodiments.

[0017] Figure 4 A method for enabling a computing device to issue a request to access a wireless network is shown according to some embodiments.

[0018] Figure 5 Methods for sharing device keys between different computing devices according to some embodiments are shown.

[0019] Figure 6 A method for servicing a request for access to a wireless network is shown according to some embodiments.

[0020] Figure 7 A method for enabling a computing device to issue a request to access a wireless network is shown according to some embodiments.

[0021] Figure 8 A method for servicing a request for a password for a shared wireless network is shown according to some embodiments.

[0022] 9A to 9D A conceptual diagram of an exemplary user interface that may be configured to service a request to access a particular wireless network is shown in accordance with some embodiments.

[0023] FIG. 10A to FIG. 10D A conceptual diagram of an exemplary user interface that may be configured to service requests to access any wireless network is shown in accordance with some embodiments.

[0024] Fig.11 A method for enabling a computing device to service requests to access a wireless hotspot is shown according to some embodiments.

[0025] Fig.12 A method for enabling a computing device to access secure resources according to some embodiments is shown.

[0026] Fig.13 A method for servicing a request for access to a wireless network issued by a nearby computing device by providing a temporary password to the nearby computing device is shown according to some embodiments.

[0027] Fig.14 A method for enabling a wireless router to provide a computing device with access to a wireless network is shown according to some embodiments.

[0028] Fig.15 Shown is a detailed view of a computing device that can be configured to implement the various techniques described herein, according to some embodiments.

[0029] Fig.16A A block diagram of various computing devices that may be configured to identify when the computing devices are in proximity to each other is shown in accordance with some embodiments.

[0030] Fig. 16B A method for enabling computing devices to exchange encryption keys with each other through an encryption key exchange server according to some embodiments is shown.

[0031] Fig. 16C Methods for enabling computing devices to directly exchange encryption keys with each other are shown according to some embodiments.

[0032] Fig.17A A conceptual diagram of a computing device that transmits an announcement data packet according to some embodiments is shown.

[0033] Fig. 17B Methods for transmitting and analyzing announcement packets according to some embodiments are shown.

[0034] Fig.18 Illustrations of exemplary user interfaces that can be used to adjust the manner in which users can authorize other users to be aware of each other's proximity are provided according to some embodiments.

[0035] Fig.19 Illustrations of exemplary user interfaces that can be used to identify a user's approximate location based on the user's proximity to known computing devices are provided according to some embodiments.

[0036] FIG. 20A to FIG. 20C A sequence diagram illustrating techniques for triggering an alert on a computing device when one or more computing devices of a particular user are in proximity to the computing device, according to some embodiments.

[0037] Fig.21 A conceptual diagram of techniques for grouping nearby computing devices for selection is shown according to some embodiments. DETAILED DESCRIPTION

[0038] Representative applications of the methods and apparatus according to the present application are described in this section. These examples are provided only to add context and aid in understanding the described embodiments. Therefore, it will be apparent to those skilled in the art that the embodiments may be practiced without some or all of these specific details. In other cases, in order to avoid unnecessarily obscuring the embodiments, well-known processing steps are not described in detail. Other applications are possible, so that the following examples should not be considered restrictive.

[0039] In the following detailed description, reference is made to the accompanying drawings which form a part of the specification and in which specific embodiments according to the described embodiments are shown by way of example. Although these embodiments are described in sufficient detail to enable those skilled in the art to practice the embodiments, it should be understood that these examples are not limiting; other embodiments may be used and modifications may be made without departing from the spirit and scope of the described embodiments.

[0040] The embodiments described herein describe techniques for enabling a computing device to discover nearby computing devices known to the computing device in the following manner: by determining whether there is a pre-existing relationship between the two computing devices. Subsequently, when the computing device determines that there is a pre-existing relationship, the computing device may share one or more data items accessible to the computing device with the nearby computing device (e.g., data items managed by the computing device, stored at the computing device, stored at a cloud network storage device, etc.). In some examples, the computing device may share a wireless network password with a nearby computing device. In other examples, the computing device may share media items (e.g., document files, picture files, music files, video files, website links, etc.) with nearby computing devices. Consider a scenario in which, for example, a computing device receives a request from a nearby computing device to share a specific photo (e.g., a photo of a surfing trip in Fiji, etc.) with a user of the nearby computing device. In response to determining that there is a pre-existing relationship between the two computing devices, the computing device may (upon request) present a notification to the user of the computing device to launch a photo application with access rights to the specific photo. Subsequently, the user of the computing device may utilize the photo application to grant access rights to the specific photo to the nearby computing device. Alternatively, if the computing device does not recognize the nearby computing device, the computing device may prevent presentation of the notification.Thus, when sharing one or more data items with nearby computing devices, the computing device may utilize techniques as described in more detail herein to provide an additional layer of security and privacy.

[0041] According to some embodiments, in response to receiving a request to access a wireless network from a nearby computing device, a computing device (which has access to the wireless network) may identify whether there is a pre-existing relationship between the two computing devices. Specifically, before receiving the request, the computing device may initially establish communication with the nearby computing device. In some examples, the computing device may store user information associated with the nearby computing device and establish a contact card based on at least a subset of the user information of the nearby computing device. In other examples, after the computing device establishes an initial pairing with the nearby computing device, the computing device may receive access to a device key associated with the nearby computing device. Subsequently, the computing device may associate the device key with a device identifier (ID) associated with the nearby computing device. In either case, in response to receiving a request from a nearby computing device, the computing device may access at least one of (1) user information or (2) associated device keys to identify whether these computing devices are known to each other. Therefore, the computing device can prevent the user of the computing device from being disturbed by unknown / irrelevant computing devices.

[0042] Next, the computing device may determine whether the request provided by the nearby computing device indicates a specific wireless network. According to some embodiments, if a specific wireless network is not indicated in the request, the user of the computing device may suggest an available wireless network. In either case, the user of the computing device may determine whether to grant access rights to the wireless network to the nearby computing device. In addition, in conjunction with granting access rights to the wireless network to the nearby computing device, the computing device may provide a password associated with the wireless network in a format that prevents the nearby computing device from sharing the password with another computing device. In this way, the computing device can prevent unauthorized persons in possession of the password from gaining access rights to potentially sensitive data accessible via the wireless network.

[0043] A more detailed discussion of these techniques is presented below and in conjunction with Figure 1 , FIG. 2A to FIG. 2B , Figures 3 to 8 , 9A to 9D , FIG. 10A to FIG. 10D and Figures 11 to 15 The following describes and illustrates detailed diagrams of systems and methods that can be used to implement these techniques.

[0044] Figure 1 A block diagram 100 is shown of various computing devices that may be configured to implement various aspects of the techniques described herein according to some embodiments. Specifically, Figure 1 A high-level overview of a computing device 102-1 is shown, which is configured to communicate with different computing devices 102 (e.g., 102-2 through 102-N) and enable these different computing devices to access (at least one) wireless network 130. Figure 1 Although not shown in the figure, it is understood that each computing device in the computing devices 102 may include at least one processor, at least one memory, and at least one storage device, which together enable these computing devices to operate according to the present disclosure. For example, in a given computing device 102, at least one processor together with at least one memory may load instructions stored in at least one storage device into at least one memory to enable the techniques described herein to be implemented. Specifically, an operating system (OS) including a variety of applications / kernels may be executed by at least one processor to implement the various techniques described herein.

[0045] For example, the OS may enable sharing manager 110 to execute on computing device 102-1. According to some embodiments, sharing manager 110 may be configured to service requests received from different computing devices 102 to obtain access rights to wireless network 130. Specifically, sharing manager 110 may be configured to access various data structures (e.g., data structures stored in at least one memory / at least one storage device of computing device 102-1) that enable sharing manager 110 to determine whether to grant access rights to wireless network 130 to different computing devices 102. For example, the data structures may include user information 120, contacts 122, device identifiers 123, device keys 124, paired device keys 126, and wireless network information 128, the purpose of which will be described in more detail below.

[0046] According to some embodiments, the sharing manager 110 may be configured to access the user information 120 and the contacts 122 when attempting to identify whether there is a pre-existing relationship between the computing devices 102. For example, the user information 120 may store data describing registered users of the computing device 102-1 and may take any form that enables the computing device 102-1 to be recognized by other computing devices 102. According to some embodiments, the user information 120 may also be based on hardware / software properties associated with the computing device 102-1. For example, the user information 120 may be based on a phone number associated with the computing device 102-1, a user ID associated with a single sign-on service (e.g., Apple ID), an email account, a social network account, a social media account, a user identity module (SIM) card, etc. In some cases, when the computing device 102-1 establishes communication with other computing devices 102, the sharing manager 110 may provide the corresponding user information 120 of the computing device 102-1 to the other computing devices 102. Then, when establishing communications with other computing devices 102, the sharing manager 110 may also receive corresponding user information 120 associated with the other computing devices 102. In this way, the computing devices 102 may identify each other in conjunction with performing the techniques set forth herein.

[0047] According to some embodiments, when computing device 102-1 stores user information 120 for a given computing device 102 (e.g., a different computing device 102-2), the sharing manager 110 of computing device 102-1 may establish the different computing device 102-2 as a contact that is recognized or known to sharing manager 110. This may involve, for example, establishing a contact card in contacts 122 that is based on at least a subset of the user information 120 of the different computing device 102-2. The subset may include, for example, a first name, last name, alias, physical address, phone number, photo, etc. associated with the different computing device 102-2. As described in more detail herein, storing user information 120 of other computing devices 102 may enable sharing manager 110 to appropriately respond to or ignore requests from other computing devices 102 to access wireless network 130.

[0048] For example, when computing device 102-1 receives a request to access wireless network 130 (to which computing device 102-1 has access rights) from unknown computing device 102, sharing manager 110 may prevent a notification of the request from being presented at a display of computing device 102-1. Specifically, upon identifying that user information 120 associated with unknown computing device 102 is not included in contacts 122 managed by computing device 102-1, computing device 102-1 may choose to ignore the request. This advantageously provides enhanced granularity when presenting relevant notifications only to the user of computing device 102-1. Alternatively, when computing device 102-1 receives a request to access wireless network 130 from known computing device 102 (e.g., friend, relative, colleague, etc.), sharing manager 110 may verify known computing device 102 based on user information 120 associated with known computing device 102. Subsequently, sharing manager 110 may present a notification that known computing device 102 is requesting access to wireless network 130.

[0049] Additionally, it is noted that the sharing manager 110 included in the computing device 102-1 can utilize the corresponding user information 120 and contacts 122 to avoid presenting information about unrelated computing devices 102 attempting to access the wireless network 130. Consider, for example, when the computing device 102-1 receives a request to access the wireless network 130 from a different computing device 102-2, wherein the request includes the user information 120 associated with the different computing device 102-2. In this example, when the computing device 102-1 has not previously communicated with the different computing device 102-2, the sharing manager 110 of the computing device 102-1 can avoid presenting notifications at the computing device 102-1, thereby protecting the privacy of the different computing device 102-2. Therefore, the sharing manager 110 can be configured to implement certain constraints and restrictions on the types of requests presented to the user of the computing device 102-1, thereby enhancing the overall user experience.

[0050] Thus, as described above, the sharing manager 110 may be configured to access the user information 120 and the contacts 122 when servicing requests from different computing devices 102 to obtain access to the wireless network 130. Figure 2A A more detailed description of the technology is provided. Notably, additional embodiments are described below that can provide additional security and enhanced performance when servicing requests from different computing devices 102 to obtain access rights to the wireless network 130. Specifically, the sharing manager 110 of the computing device 102-1 can be configured to utilize the device identifier 123, the device key 124, and the paired device key 126 to identify whether there is a pre-existing relationship between the computing devices 102.

[0051] According to some embodiments, a device identifier (ID) 123 of computing device 102-1 may take any form that enables computing device 102-1 to be identified by other computing devices 102. According to some embodiments, device ID 123 may be based on hardware / software properties associated with computing device 102-1. For example, device ID 123 may be based on a phone number, a subscriber identity module (SIM) card, a manufacturer's serial number, etc. In addition, device key 124 of computing device 102-1 may take the form of an encryption key that is used by computing device 102-1 to encrypt messages transmitted by computing device 102-1 to other computing devices 102.

[0052] According to some embodiments, the corresponding device ID 123 / device key 124 may be shared between two computing devices 102 via a cloud storage system or during initial pairing (e.g., via Bluetooth, NFC, WiFi, etc.) to enable the two computing devices 102 to later identify each other in a secure manner. In one example, computing device 102-1 may store its corresponding device key 124 at the cloud storage system. Subsequently, a different computing device 102 may retrieve the device key 124 from the cloud storage system and then store the device key 124. In another example, when computing device 102-1 initially communicates with a different computing device 102, computing device 102-1 may provide its corresponding device ID 123 to the different computing device 102 for storage. In addition, computing device 102-1 may provide its corresponding device key 124 to the different computing device 102 for storage. In any case, when a different computing device 102 obtains access to a device key 124, the different computing device 102 may make a note of the correlation between the device ID 123 and the device key 124 of computing device 102-1. Similarly, computing device 102-1 may receive (1) a corresponding device ID 123 of a different computing device 102, and (2) a corresponding device key 124 of the different computing device 102. Then, computing device 102-1 may make a note of the correlation between the device ID 123 and the device key 124 of the different computing device 102-2.

[0053] According to some embodiments, the above associations may be managed within the paired device keys 126 at each computing device 102. Specifically, and as Figure 1 As shown, paired device keys 126 of a given computing device 102 (e.g., computing device 102-1) may store entries for each different computing device 102 with which computing device 102-1 has previously established communication (e.g., paired with, stored a phone number, sent a text message, etc.). In this way, computing device 102-1 may receive an encrypted message from a different computing device 102, identify a device key 124 (within paired device keys 126) that successfully decrypted the message, and then identify a device ID 123 corresponding to device key 124. Importantly, this approach enables computing device 102-1 to effectively identify a different computing device 102-2 that transmitted the encrypted message, while preventing other computing devices 102 (specifically, those computing devices that have not previously established communication with different computing device 102-2) from decrypting the encrypted message. A more detailed description of this technique is provided below.

[0054] Consider a scenario, for example, in which computing device 102-1 receives an encrypted message from a different computing device 102, where the underlying content of the encrypted message indicates a request to obtain access to wireless network 130 (to which computing device 102-1 has access). In this example, computing device 102-1 may attempt to decrypt the encrypted message using a different device key 124 that is known to computing device 102-1 (i.e., previously stored). When computing device 102-1 successfully identifies device key 124 (e.g., encryption key) for decrypting the encrypted message, computing device 102-1 may also identify device ID 123 corresponding to device key 124 and (based on device ID 123) effectively identify details about the different computing device 102 that is transmitting the encrypted message (e.g., "Jennifer's iPhone"). It is noteworthy and advantageous that encrypted messages transmitted by different computing devices 102 may not be decrypted by other computing devices 102 with which the different computing device 102 has not previously established communication (e.g., paired, etc.) because these other computing devices cannot possess the device key 124 used by the different computing device 102 to encrypt the message. In this way, the privacy of the different computing device 102 is enhanced because the unrelated / potentially malicious computing device 102 cannot immediately decrypt the encrypted message. Figure 2B A more detailed description of this technique is provided.

[0055] As previously described herein, computing devices 102 may be configured to share WiFi information with each other under appropriate circumstances (e.g., Figure 1 1 as authentication credentials 136). According to some embodiments, authentication credentials 136 may represent an SSID associated with wireless network 130, as well as a password, passcode, passphrase, hexadecimal string, etc. that can be used to authenticate with wireless network 130 and obtain access rights to the wireless network. According to some embodiments, sharing authentication credentials 136 between computing devices 102 may involve, for example, different computing devices 102-2 issuing a request to computing device 102-1 to access a specific wireless network 130 (to which computing device 102-1 has access rights). Alternatively, different computing devices 102-2 may issue a request to computing device 102-1 for a recommendation of an appropriate WiFi network 130 for access. In either case, computing device 102-1 may access authentication credentials 136 for wireless network 130 within its corresponding wireless network information 128, and provide authentication credentials 136 to different computing devices 102-2. The different computing device 102 - 2 may then store the authentication credentials 136 within its corresponding wireless network information 128 and utilize the authentication credentials 136 to access the WiFi network 130 .

[0056] According to some embodiments, the wireless network information 128 of the computing device 102-1 may indicate an active wireless network 134 that is currently being accessed by the computing device 102-1. For example, the sharing manager 110 may distinguish between an active wireless network 134 and other wireless networks 130 that the computing device 102-1 can access. According to some embodiments, the sharing manager 110 may determine whether a specific wireless network 130 requested by a different computing device 102-2 is active. For example, when a specific wireless network 130 requested by a different computing device 102-2 is inactive, the sharing manager 110 may refer to the active wireless network 134 to suggest an alternative wireless network 130 that the different computing device 102-2 should access. In another example, when there are multiple available wireless networks 130 known to the sharing manager 110, the sharing manager 110 may recommend that the different computing devices 102-2 access the available wireless network 130 with the strongest signal strength. In yet another example, where the request from the different computing device 102-2 does not indicate a specific wireless network 130, the sharing manager 110 may suggest that the different computing device 102-2 access the active wireless network 134 (to which the computing device 102-1 is currently connected) or the alternative wireless network 130. Additionally, the sharing manager 110 may suggest a wireless network 130 from among the several available wireless networks 130 based on several wireless network factors, such as signal strength, usage statistics, frequency of use, bandwidth, etc. The sharing manager 110 may then provide appropriate authentication credentials 136 to the different computing device 102-2 to enable access to the active wireless network 134 or the alternative wireless network 130.

[0057] According to some embodiments, in conjunction with providing a password to different computing devices 102-2, a user of computing device 102-1 may specify a time limit for which the password will remain valid on different computing devices 102-2. Specifically, computing device 102-1 may bundle the password with a bit marker (e.g., a time limit indication) in an encrypted message provided to different computing devices 102-2. For example, the time limit indication may specify that the password will only remain valid on different computing devices 102-2 within a 24-hour period. Thus, after the 24-hour period has passed, the time limit indication may provide instructions to cause the password to become invalid / deleted, thereby preventing different computing devices 102-2 from being able to continue to access wireless network 130.

[0058] According to some embodiments, computing device 102-1 may prevent different computing devices 102-2 from sharing received authentication credentials 136 with other computing devices 102. For example, authentication credentials 136 may be stored in wireless network information 128 in a format that prevents different computing devices 102-2 from sharing authentication credentials 136. To implement the aforementioned security techniques, authentication credentials 136 may be shared with other computing devices 102 in a pre-shared key (PSK) format, as described below in conjunction with Figure 8 Described in more detail.

[0059] In addition, and in accordance with some embodiments, the wireless network 130 may include security protocols such as Wi-Fi Protected Access (WPA), Wi-Fi Protected Access II (WPA2), Wired Equivalent Privacy (WEP), Enterprise Server Network, Extensible Authentication Protocol (EAP), etc. Figure 1 Although not shown in the figure, the computing device 102 may include various hardware components, such as one or more wireless communication components. Specifically, the wireless communication component may include at least one of a wireless local area network (Wi-Fi) component, a global positioning system (GPS) component, a cellular component, an NFC component, an Ethernet component, or a Bluetooth component. According to some embodiments, data can be transmitted between computing devices 102 using any wireless communication protocol implemented by the wireless communication component. It should be understood that various computing devices 102 may include hardware elements / software elements that enable the computing device 102 to implement the techniques described herein at different levels.

[0060] According to some embodiments, the sharing manager 110 of the computing device 102 may communicate with the wireless communication component to both issue requests and service requests received from different computing devices 102. According to some embodiments, the wireless communication component may specify a required signal strength threshold to be met in order to establish a proximity requirement for the computing devices 102 to communicate with each other. For example, the required signal strength threshold may be associated with a fixed and / or adjustable received signal strength indication (RSSI) level. In response to determining that the signal strength of the request meets the RSSI level, the wireless communication component may indicate to the sharing manager 110 that the request was received from a different computing device 102. By monitoring the signal strength of the request, the computing device 102 can provide enhanced granularity when presenting relevant notifications that meet the RSSI level at the computing device 102. This advantageously prevents other computing devices 102 that are not near the computing device 102 from burdening the user with unexpected or irrelevant requests. Therefore, the technology described herein can provide additional security and privacy layers to increase the overall user experience. Therefore, Figure 1 A high-level overview of the different components / entities that may be included in each computing device 102 is set forth to enable the embodiments described herein to be properly implemented.

[0061] FIG. 2A to FIG. 2B A conceptual diagram of a computing device 102-1 servicing a request to access a wireless network 130 is shown in accordance with some embodiments. Specifically, Figure 2A A conceptual diagram 202 is shown of an exemplary scenario in which a different computing device 102-2 requests access to a wireless network 130 by utilizing user information 120 stored by computing device 102-1, as previously described herein. In this case, computing device 102-1 is communicatively coupled to wireless network 130 (which different computing device 102-2 is attempting to access).

[0062] According to some embodiments, Figure 2A Steps 210, 220, 230, and 240 shown in the conceptual diagram of FIG. 1 may be preceded by computing device 102-1 storing user information 120 associated with a different computing device 102-2. For example, as part of establishing communication between the two computing devices 102 (e.g., sending a text message, sending an email, etc.), each of computing devices 102-1, 102-2 may provide the other with user information 120. Then, each of computing devices 102-1, 102-2 may store the user information 120 and establish a contact card in its contacts 122, the contact card being based on at least a subset of the user information 120 (e.g., name, photo, etc.).

[0063] In addition, after storing the user information 120 associated with the different computing devices 102-2, the computing device 102-1 may generate a unique hash value for the user information 120 stored in the computing device 102-1. Specifically, the computing device 102-1 may utilize a hash algorithm (to which the different computing device 102-2 also has access) to generate a unique hash value for the user information 120. Then, the computing device 102-1 may record the correlation between the unique hash value and the user information 120. For example, after associating the unique hash value with the user information 120, the computing device 102-1 may establish a hash table to provide an index between the associated unique hash value and the user information 120. According to some examples, as long as the user information 120 associated with the computing device 102 remains static (i.e., unchanged), the unique hash value for the user information 120 also remains fixed. However, in other examples, the unique hash value for the user information 120 may also rotate (i.e., change) continuously.

[0064] Additionally, computing device 102-1 may utilize a hash table to establish a data cache. Thus, when computing device 102-1 receives hashed messages from different computing devices 102-2, computing device 102-1 may access the data cache (rather than recalculating a unique hash value for each of stored user information 120) to identify the hashed messages as being provided by a known computing device 102 (e.g., a friend, relative, co-worker, etc.). Notably and advantageously, the data cache may significantly increase the processing speed at which computing device 102-1 identifies the different computing devices 102-2 that provided the hashed messages.

[0065] like Figure 2A As shown, the first step 210 may involve the computing device 102-1 receiving the hash message 284 including the payload 242 from the different computing device 102-2. Figure 2A 2, but it is noted that other (e.g., nearby) computing devices 102 may also be configured to receive hashed message 284 from a different computing device 102-2. In one example, the wireless component of computing device 102 may specify an RSSI level that needs to be met in order for computing device 102 to process hashed message 284.

[0066] According to some embodiments, payload 242 may include user information 120 associated with different computing devices 102-2. As previously described herein, computing device 102-1 and different computing devices 102-2 have access to the same hash algorithm. Therefore, different computing devices 102-2 may utilize a hash algorithm to generate a unique hash value for user information 120. In some examples, the hash algorithm utilizes a short hash (e.g., 2 characters, etc.). Subsequently, computing device 102-1 may be configured to utilize the same hash algorithm to identify user information 120 of different computing devices 102-2, as described in more detail herein.

[0067] According to some embodiments, payload 242 may also include an indication that different computing device 102-2 is attempting to access wireless network 130. Specifically, different computing device 102-2 may attempt to access (1) a specific wireless network 130 or (2) any wireless network 130 that may be available (e.g., a wireless network 130 recommended by computing device 102-1). When different computing device 102-2 attempts to access a specific wireless network 130, payload 242 may specify a unique wireless network identifier 254 (e.g., SSID, etc.) associated with the specific wireless network 130. Alternatively, when different computing device 102-2 attempts to access any wireless network 130, unique wireless network identifier 254 may take a specific value (e.g., a null value) to indicate that a recommendation for a wireless network 130 is being requested.

[0068] In the event that the payload 242 specifies a unique wireless network identifier 254 associated with a particular wireless network 130, the different computing device 102-2 may utilize the same hashing algorithm (to which the computing device 102-1 has access rights) to generate a unique hash value for the unique wireless network identifier 254 to be included in the payload 242. Notably, if the computing device 102-1 has access rights to the particular wireless network 130, the computing device 102-1 may be configured to verify that the unique hash value for the SSID (provided by the different computing device 102-2) corresponds to the unique hash value for the SSID (which is associated with the particular wireless network 130 and stored in the wireless network information 128), as will be described in greater detail herein.

[0069] According to some examples, each of the user information 120 and the unique wireless network identifier 254 may be hashed separately by a different computing device 102-2. In some examples, the user information 120 and the unique wireless network identifier 254 may be provided in a single hash message or in separate hash messages.

[0070] like Figure 2A As shown, the second step 220 may involve the computing device 102-1 establishing a secure communication link 224 (e.g., a Transport Layer Security (TLS) protocol) with the different computing device 102-2 in response to identifying that a pre-existing relationship exists between the two computing devices 102-1, 102-2. In conjunction with the process for identifying whether a pre-existing relationship exists, the computing device 102-1 may compare (e.g., via a hash table, a data cache, etc.) a unique hash value for the user information 120 (included in the payload 242) with a unique hash value for the user information 120 stored in the computing device 102-1. In response to determining that the unique hash values ​​correspond to each other, the computing device 102-1 may associate the unique hash value with the user information 120 of the known computing device 102. Therefore, the computing device 102-1 may determine the identity of the known computing device 102.

[0071] Returning to establishing secure communication link 224, in conjunction with establishing secure communication link 224, computing device 102-1 may share a symmetric key with a different computing device 102-2. The symmetric key may then be used to encrypt / decrypt messages transmitted between the two computing devices 102-1, 102-2 via secure communication link 224.

[0072] like Figure 2AAs shown, the third step 230 may involve the computing device 102-1 providing the authentication credentials 136 associated with the wireless network 130 to the different computing device 102-2. According to some embodiments, the computing device 102-1 may extract the unique wireless network identifier 254 to determine whether the different computing device 102-2 is attempting to access (1) a specific wireless network 130 or (2) any wireless network 130 that may be available. Specifically, identifying the SSID associated with the specific wireless network 130 requested by the different computing device 102-2 may involve performing a hash value comparison of the unique wireless network identifier 254 (e.g., SSID) included in the payload 242 with the SSID stored in the authentication credentials 136. After identifying the requested SSID, the computing device 102-1 may (as instructed) present a notification to the user of the computing device 102-1. For example, when the unique wireless network identifier 254 indicates the specific wireless network 130, the notification may request the user to grant the different computing device 102-2 access to the specific wireless network 130. In another example, when unique wireless network identifier 254 does not indicate a particular wireless network 130, the notification may request the user to select from available wireless networks 130 to which computing device 102-2 should connect. In either case, in response to receiving approval from the user to grant different computing device 102-2 access to wireless network 130, computing device 102-1 may access (within its corresponding wireless network information 128) authentication credentials 136 for wireless network 130 and provide authentication credentials 136 to different computing device 102-2 in the form of payload 244.

[0073] According to some embodiments, after establishing the secure communication link 224, but before providing the authentication credentials 136 in the form of the payload 244, the different computing device 102-2 may provide a larger hash value (e.g., 32 characters) of its user information 120 to the computing device 102-1, which may be more difficult for an unknown computing device to forge than a shorter hash value. In this way, advantageously, by requiring the different computing device 102-2 to provide a larger hash value of its user information 120, the computing device 102-1 can ensure that the different computing device 102-2 is indeed known or recognizable to the computing device 102-1. In contrast, the user information 120 hashed using the shorter hash value included in the payload 242 may be preferred in enabling the different computing device 102-2 to process the hashed message 284 more quickly.

[0074] According to some embodiments, computing device 102-1 may use a symmetric key shared between the two computing devices 102-1, 102-2 to establish an encrypted message 292. Specifically, encrypted message 292 may include payload 244. In some examples, payload 244 may also include additional information 138, which may be useful for enabling a different computing device 102-2 to access a specific wireless network 130 to which computing device 102-1 has access rights. For example, additional information 138 may indicate a specific wireless channel to which computing device 102-1 has access rights. Subsequently, different computing device 102-2 may obtain authentication credentials 136 by decrypting encrypted message 292 using the symmetric key.

[0075] like Figure 2A As shown in step 240 , the different computing device 102 - 2 may utilize the authentication credentials 136 to access the particular wireless network 130 .

[0076] Specifically, Figure 2B A conceptual diagram 204 of an exemplary scenario is shown in which a different computing device 102-2 requests access to a wireless network 130 by utilizing a device key 124 shared between computing device 102-1 and different computing device 102-2, as previously described herein. In this case, computing device 102-1 is communicatively coupled to a wireless network 130 (which different computing device 102-2 is attempting to access).

[0077] According to some embodiments, steps 260, 270, 280, and 290 shown in conceptual diagram 204 may be preceded by computing device 102-1 receiving access to a device key 124 associated with a different computing device 102-2 to enable the two computing devices 102 to later identify each other in a secure manner. Specifically, computing devices 102-1, 102-2 may establish a bidirectional correlation of their respective device keys 124. In one example, in conjunction with an initial pairing process (e.g., Bluetooth, etc.), each of computing devices 102-1, 102-2 may provide the other with (1) a respective ID 123 and (2) a respective device key 124 (e.g., an encryption key). In another example, in conjunction with previously having established communications between each other (e.g., an email message, a phone call, etc.), each of computing devices 102-1, 102-2 may provide the other with a respective device key 124. Specifically, a cloud storage system may be used to provide each other device with access to the respective device key 124. Then, each of the computing devices 102-1, 102-2 may record the correlation between the respective device key 124 and the respective device ID 123. In this way, and as described in more detail herein, when the computing device 102-1 receives an encrypted message (including the device ID 123) from a different computing device 102-2, the computing device 102-1 may identify the device key 124 for decrypting the encrypted message. Then, the computing device 102-1 may associate the device key 124 with the device ID 123, thereby enabling the computing device 102-1 to identify the different computing device 102-2 in a secure manner. In addition, the correlation between the respective device key 124 and the respective device ID 123 may also be one-way. For example, when computing device 102-1 receives a respective ID 123 and a respective device key 124 associated with a different computing device 102-2, computing device 102-1 may record this association, but it does not provide its respective ID 123 and respective device key 124 to the different computing device 102-2. Advantageously, this imparts an additional layer of privacy to computing device 102-1, which subsequently grants the different computing device 102-2 access to a particular wireless network 130. Additionally, an additional layer of privacy may be imparted by enabling these computing devices 102-1, 102-2 to transform their respective device keys 124 so that their respective device keys 124 are not fixed to their respective device IDs 123. In this way, users of computing devices 102 that have not been in communication with each other (e.g., emails, text messages, phone calls, etc.) for a predetermined period of time may not have the latest device keys 124 associated with the respective computing devices 102.

[0078] like Figure 2BAs shown, the first step 260 may involve the computing device 102-1 receiving an encrypted message 294 including a payload 262 from a different computing device 102-2. According to some embodiments, the encrypted message 294 may be established using a device key 124 (e.g., an encryption key) accessible to the different computing device 102-2. Specifically, the payload 262 may include a device ID 123 associated with the different computing device 102-2. In some examples, the device ID 123 may be periodically updated to notify other computing devices 102 associated with the different computing device 102-2. For example, the different computing device 102-2 may update the device ID 123 (e.g., randomly generate a value for the device ID 123) and provide the updated device ID 123 to a cloud service to which the different computing device 102-2 and the other computing devices 102 are communicatively coupled. Then, the cloud service may distribute the updated device ID 123 to the other computing devices 102. Using this approach, other computing devices 102 may remain able to identify different computing devices 102-2 by utilizing the updated device ID 123 (and device key 124). In this way, overall security may be enhanced because a malicious / unrelated computing device 102 in possession of device ID 123 will not be able to identify different computing device 102-2 when device ID 123 is updated (and may not be provided to malicious computing devices 102).

[0079] According to some embodiments, the payload 262 may also include a unique wireless network identifier 254 (e.g., SSID, etc.) associated with a particular wireless network 130. For example, when the computing device 102-2 attempts to access a particular wireless network 130, the payload 262 may indicate the unique wireless network identifier 254 (e.g., SSID) associated with the particular wireless network 130. Alternatively, when a different computing device 102-2 attempts to access any wireless network 130, the unique wireless network identifier 254 may take a specific value (e.g., a null value) to indicate that a recommendation for a wireless network 130 is being requested. According to some embodiments, each of the user information 120 and the unique wireless network identifier 254 may be transmitted in a single encrypted message or sent in separate encrypted messages.

[0080] like Figure 2BAs shown, the second step 270 may involve the computing device 102-1 establishing a secure communication link 272 (e.g., a Transport Layer Security (TLS) protocol) with the different computing device 102-2. When establishing the secure communication link 272, in conjunction with establishing a secure session for the secure communication link 272, the computing device 102-1 may share a symmetric key with the different computing device 102-2. According to some embodiments, the secure communication link 272 may be established after identifying that there is a pre-existing relationship between the two computing devices 102-1, 102-2. In conjunction with the process for identifying whether a pre-existing relationship exists, the computing device 102-1 may attempt to decrypt the contents of the encrypted message 294 using a different device key 124 known to the computing device 102-1 (i.e., previously stored). When the computing device 102-1 successfully identifies the device key 124 for decrypting the encrypted message 294, the computing device 102-1 may identify the device ID 123 and (e.g., based on the device ID 123) effectively identify details about the different computing device 102-2.

[0081] like Figure 2B As shown, the third step 280 may involve the computing device 102-1 providing the authentication credentials 136 associated with the wireless network 130 to the different computing device 102-2. After decrypting the encrypted message 294, the computing device 102-1 may extract the unique wireless network identifier 254 to determine whether the different computing device 102-2 indicates that it is attempting to access (1) a specific wireless network 130 or (2) any wireless network 130 that may be available. Then, the sharing manager 110 of the computing device 102-1 may present a notification to the user of the computing device 102-1 (in accordance with the indication). For example, when the unique wireless network identifier 254 indicates a specific wireless network 130, the notification may request the user to grant the different computing device 102-2 access to the specific wireless network 130. In another example, when the unique wireless network identifier 254 does not indicate a specific wireless network 130, the notification may request the user to select from the available wireless networks 130 to which the computing device 102-2 should connect.

[0082] In either case, in response to receiving approval from the user to grant access rights to the wireless network 130 to the different computing device 102-2, the computing device 102-1 may access (within its corresponding wireless network information 128) the authentication credentials 136 for the wireless network 130 and provide the authentication credentials 136 to the different computing device 102-2 in the form of a payload 264 included in an encrypted message 296. According to some embodiments, in conjunction with establishing the secure communication link 272, the encrypted message 296 may be established using a symmetric key shared between the two computing devices 102-1, 102-2. Next, the computing device 102-1 may establish the encrypted message 296 using the symmetric key shared between the two computing devices 102-1, 102-2. Subsequently, the different computing device 102-2 may obtain the authentication credentials 136 by decrypting the encrypted message 296 using the symmetric key.

[0083] like Figure 2B As shown in step 290 of , a different computing device 102 - 2 may utilize the authentication credentials 136 to access a particular wireless network 130 .

[0084] Figure 3 A method 300 for servicing a request to access a wireless network issued by a nearby computing device is shown according to some embodiments. Figure 3 As shown, method 300 begins at step 302, where a computing device (e.g., computing device 102-1) receives a request from a nearby computing device (e.g., nearby computing device 102-2) to access a wireless network 130, wherein the request includes user information 120 associated with the nearby computing device 102-2. This may occur, for example, after computing device 102-1 stores the user information 120 of the nearby computing device 102-2 due to communication between the two computing devices 102.

[0085] At step 304, computing device 102-1 may determine whether the signal strength associated with the request satisfies a signal threshold. As previously described herein, sharing manager 110 of computing device 102-1 may interact with wireless communication components to determine whether the signal strength of the request satisfies a required RSSI level for processing the request. If computing device 102-1 determines that the signal strength associated with the request does not satisfy the signal threshold, computing device 102-1 may prevent any notifications associated with the request from being presented to a user of computing device 102-1, as shown in step 306. This may advantageously prevent the user of computing device 102-1 from being disturbed by unknown / unrelated computing devices 102.

[0086] Alternatively, in response to computing device 102-1 determining that the signal strength of the request meets the required RSSI level, computing device 102 may determine whether the user information 120 included in the request is recognized by computing device 102-1, as shown in step 308. Specifically, computing device 102-1 may identify whether there is a pre-existing relationship with nearby computing device 102-2 by comparing the user information 120 included in the request with contacts 122 managed by computing device 102-1. When determining that user information 120 is not included in contacts 122, computing device 102-1 may prevent any notifications associated with the request from being presented to the user of computing device 102-1, as shown in step 306.

[0087] Otherwise, when computing device 102-1 determines that user information 120 is included in its contacts 122, computing device 102-1 may determine, at step 310, whether the request indicates a particular wireless network 130 that nearby computing device 102-2 is attempting to access. FIG. 2A to FIG. 2B As described, the nearby computing device 102 may specify the specific wireless network 130 using, for example, an SSID for the specific wireless network 130. At step 312, in response to determining that the request indicates the specific wireless network 130, the computing device 102-1 may present a notification to ask the user of the computing device 102-1 whether to approve granting the nearby computing device 102-2 access to the specific wireless network 130. In one example, the notification presented to the user may include a contact card that is based on at least a subset of the user information 120 of the nearby computing device 102-2. In this way, the notification may include, for example, a name, a photo, etc., to inform the user of the identity of the nearby computing device 102-2 (and the user who may be operating the computing device).

[0088] At step 314, computing device 102-1 may receive approval from the user to enable nearby computing device 102-2 to access specific wireless network 130. Computing device 102-1 may then provide authentication credentials 136 (e.g., a password, passcode, etc.) associated with specific wireless network 130, which nearby computing device 102-2 may use to authenticate with specific wireless network 130 and gain access to the specific wireless network, as shown in step 316.

[0089] Returning now to step 310, if the nearby computing device 102-2 does not indicate a particular wireless network 130, the computing device 102-1 may provide a suggestion to the nearby computing device 102-2, suggesting that it access, for example, the active wireless network 134 (to which the computing device 102-1 is currently connected) or an alternative wireless network 130 that is available for access, as shown in step 318. At step 320, in response to receiving an acceptance from the nearby computing device 102-2, the computing device 102-1 may provide authentication credentials 136 associated with the suggested wireless network 130. Then, at step 316, the nearby computing device 102-2 may use the authentication credentials 136 to authenticate with the suggested wireless network 130 and obtain access to the suggested wireless network. Then, the method 300 may proceed to Figure 8 Method 800, which will be described in more detail below.

[0090] Figure 4 A method 400 for enabling a computing device to issue a request to a nearby computing device to access a wireless network is shown in accordance with some embodiments. Figure 4 As shown, method 400 begins at step 402, where a computing device (e.g., computing device 102-2) presents a notification at a display of computing device 102-2 to establish access to a wireless network 130. This may occur, for example, when a user of computing device 102-2 attempts to access a wireless network 130 but lacks authentication credentials 136 for accessing the wireless network 130. The notification may also include a list of other wireless networks 130 available in a current location where computing device 102-2 is located. At step 404, computing device 102-2 may determine whether a selection of a particular wireless network 130 has been received (e.g., by a user). In response to determining that a selection of a particular wireless network 130 has been received, computing device 102-2 may issue a request to at least one nearby computing device 102 (e.g., nearby computing device 102-1), the request including (1) user information 120 associated with computing device 102-2, and (2) an indication to access the particular wireless network 130, as shown at step 406.

[0091] When the nearby computing device 102-1 receives the request, the nearby computing device 102-1 may compare the user information 120 associated with the computing device 102-2 with the contacts 122 managed by the computing device 102-2 to identify whether there is a pre-existing relationship between the two computing devices 102-1, 102-2. Then, the nearby computing device 102-1 may receive approval from the user of the nearby computing device 102-1 to grant the computing device 102-2 access to the specific wireless network 130. As shown in step 418, the computing device 102-2 may receive (e.g., via the authentication credentials 136) a password associated with the specific wireless network 130 to enable the computing device 102-2 to access the specific wireless network 130.

[0092] Referring now back to step 404, when no selection of a particular wireless network is received, method 400 may proceed to step 408, which involves identifying nearby computing devices 102 that are capable of being identified by computing device 102-2. For example, computing device 102-2 may compare the corresponding user information 120 associated with nearby computing devices 102 with their contacts 122. Then, the nearby computing devices 102 identified by computing device 102-2 may be presented at a display of computing device 102-2. Then, computing device 102-2 may wait for the user to select one of the identified nearby computing devices 102.

[0093] Next, at step 410, computing device 102-2 may receive a selection of a nearby computing device 102 (e.g., nearby computing device 102-3) that can potentially service a request issued by computing device 102-2 to access a wireless network 130. At step 412, computing device 102-2 may send a request to nearby computing device 102-3 to access a wireless network 130. The request may include (1) user information 120 associated with computing device 102-2, and (2) an indication of a desire to access any available wireless networks 130 to which nearby computing device 102-3 has access rights. Then, nearby computing device 102-3 may indicate the suggested wireless network 130 to computing device 102-2. At step 414, computing device 102-2 may receive an inquiry from nearby computing device 102-3 to accept the suggested wireless network 130. Then, at step 416, computing device 102-2 may accept the query by sending approval to nearby computing device 102-3 to access the suggested wireless network. Finally, at step 418, computing device 102-2 may receive (e.g., via authentication credentials 136) a password associated with the suggested wireless network 130 to enable computing device 102-2 to access the suggested wireless network 130. Then, method 400 may also proceed to Figure 8Method 800, which will be described in more detail below.

[0094] Figure 5 A method 500 for sharing a device key between two computing devices for later identifying each other is shown according to some embodiments. Figure 5 As shown, method 500 begins at step 502, where a computing device (e.g., computing device 102-1) receives a request to establish an initial pairing from a nearby computing device (e.g., nearby computing device 102-2). According to some embodiments, the request may include device ID 123 associated with nearby computing device 102-2. Then, computing device 102-1 may present a notification at a display of computing device 102-1 to ask the user of computing device 102-1 whether to approve the establishment of the initial pairing.

[0095] At step 504, computing device 102-1 may receive approval from the user to enable computing device 102-1 to establish an initial pairing with nearby computing device 102-2. Then, device ID 123 associated with nearby computing device 102-2 may be stored in paired device key 126 of computing device 102-1.

[0096] At step 506, after the initial pairing is established, computing device 102-1 may receive a device key 124 (e.g., an encryption key) associated with nearby computing device 102-2. In some examples, nearby computing device 102-2 may provide device key 124 directly to computing device 102-1. In some examples, nearby computing device 102-2 may provide device key 124 to a cloud network storage system (to which computing device 102-1 has access). In turn, the cloud network storage system may distribute device key 124 to computing device 102-1. In some examples, as a result of the initial pairing process, each of computing devices 102-1, 102-2 may provide (1) a corresponding ID 123 and (2) a corresponding device key 124 (e.g., an encryption key) to the other.

[0097] although Figure 51, but in some embodiments, the nearby computing device 102-2 may provide its device key 124 to the known computing device 102-N, in a process in which an initial pairing between the two computing devices 102 cannot be established. Specifically, the nearby computing device 102-2 may provide its (1) device ID 123 and (2) device key 124 to any known computing device 102-N selected (e.g., the corresponding user information 120 associated with the known computing device 102-N is stored in the contacts 122 of the nearby computing device 102-2). Consider, for example, if the user of the nearby computing device 102-2 lives in Cupertino, and the user's friend (e.g., known computing device 102-3) lives in Tokyo and has his user information 120 stored in the nearby computing device 102-2. Due to the lack of close geographic proximity, the two computing devices 102 may not have the opportunity to utilize the initial pairing process as a mechanism for sharing the device key 124. In addressing this exemplary scenario, the user of nearby computing device 102-2 may distribute its device key 124 to known computing device 102-3 (and any other selected known computing devices 102-N that have user information 120 stored in nearby computing device 102-2) using a cloud network storage system.

[0098] In either case, at step 508, computing device 102 may record the correlation between the corresponding device ID 123 and the corresponding device key 124 associated with nearby computing device 102-2, thereby enabling computing device 102 to later identify nearby computing device 102-2 in a secure manner. In this way, and as described in more detail herein, when computing device 102 receives an encrypted message from nearby computing device 102-2, computing device 102 may identify the device key 124 used to decrypt the encrypted message in order to identify details about nearby computing device 102-2 (e.g., based on device ID 123). Subsequently, method 500 may also proceed to Figure 6 Method 600 or Figure 7 Any of the methods 700, which will be described in more detail below.

[0099] Figure 6 A method 600 for servicing a request to access a wireless network issued by a nearby computing device is shown according to some embodiments. Figure 6As shown, method 600 begins at step 602, where a computing device (e.g., computing device 102-1) receives an encryption request from a nearby computing device (e.g., nearby computing device 102-2), the encryption request including an indication that nearby computing device 102-2 is attempting to access wireless network 130. This may occur, for example, after computing device 102-1 receives (1) a device ID 123 associated with nearby computing device 102-2, and (2) a device key 124 associated with nearby computing device 102-2.

[0100] At step 604, computing device 102-1 may determine whether it has access to a device key 124 associated with nearby computing device 102-2 for decrypting the encrypted request. Specifically, computing device 102-1 may attempt to decrypt the content of the encrypted request using a different device key 124 known to computing device 102-1 (i.e., previously stored). If computing device 102-1 cannot identify the device key 124 for decrypting the encrypted request, computing device 102-1 may continue to monitor for additional encrypted requests.

[0101] At step 606, upon successfully identifying device key 124 for decrypting the encrypted request, computing device 102-1 may identify device ID 123 corresponding to device key 124 and effectively identify details about nearby computing device 102-2 (eg, based on device ID 123).

[0102] At step 608, after decrypting the encrypted request, computing device 102-1 may extract an indication of a unique wireless network identifier associated with a specific wireless network 130 that nearby computing device 102-2 is attempting to access (the indication included in the encrypted request). However, in some examples, the unique wireless network identifier does not indicate a specific wireless network 130. In either case, computing device 102-1 may display a notification to a user of computing device 102-1 (in accordance with the indication). For example, when the unique wireless network identifier indicates a specific wireless network 130, the notification may request the user to approve nearby computing device 102-2 to access the specific wireless network 130. Alternatively, when the unique wireless network identifier does not indicate a specific wireless network 130, the notification may request the user to suggest an available wireless network 130 to which nearby computing device 102-2 should connect.

[0103] In either case, at step 610, computing device 102-1 may determine whether approval has been received for nearby computing device 102-2 to access wireless network 130. Upon determining that approval has not been received, computing device 102-1 may prevent a password (e.g., via authentication credentials 136) from being provided to nearby computing device 102-2 at step 612. Otherwise, if approval is received, computing device 102-1 may provide a password to enable nearby computing device 102-2 to access wireless network 130 at step 614. Method 600 may then proceed to Figure 8 Method 800, which will be described in more detail below.

[0104] Figure 7 A method 700 for enabling a computing device to issue a request to a nearby computing device to access a wireless network is shown according to some embodiments. Figure 7 As shown, method 700 begins at step 702, where a computing device (e.g., computing device 102-2) presents a notification at a display of computing device 102-2 to establish access to wireless network 130. In some examples, the notification may present a list of one or more available wireless networks in a current location where computing device 102-2 is located. At step 704, computing device 102-2 may determine whether a selection of a particular wireless network 130 in the one or more available wireless networks is received. If a selection of a particular wireless network 130 is not received, computing device 102-2 may continue to monitor for additional selections.

[0105] At step 706, in response to determining that a selection of a specific wireless network 130 has been received, the computing device 102-2 may use the device key 124 associated with the computing device 102-2 to establish an encrypted request, wherein the encrypted request includes an indication of access to the specific wireless network 130. The specific wireless network 130 may be indicated by using a unique wireless network identifier. According to some embodiments, a nearby computing device (e.g., 102-1) is communicatively coupled to the specific wireless network 130. In this way, the nearby computing device 102-1 may be configured to service the request received from the computing device 102-2 to obtain access to the specific wireless network 130.

[0106] At step 708, computing device 102-2 may send an encryption request to nearby computing device 102-1. Then, nearby computing device 102-1 may attempt to decrypt the contents of the encryption request using a different device key 124 known to nearby computing device 102-1 (i.e., previously stored). As previously described herein, nearby computing device 102-1 receives access to: (1) a device key 124 associated with computing device 102-2, and (2) a device ID 123 associated with computing device 102-2. Thus, nearby computing device 102-1 may identify details about computing device 102-2 based on the device key 124 (e.g., based on device ID 123) used to decrypt the encryption request. After decrypting the encryption request, nearby computing device 102-1 may determine that the decrypted request indicates a specific wireless network 130. Then, nearby computing device 102-1 may present a notification to ask the user of nearby computing device 102-1 whether to approve granting computing device 102-2 access to the specific wireless network 130.

[0107] At step 710, if the user of the nearby computing device 102-1 approves, the computing device 102-2 may receive a password for accessing the particular wireless network 130 (e.g., via the authentication credentials 136). Returning now to step 704, if the computing device 102-2 does not receive a selection of the particular wireless network 130, the computing device 102-2 may present the nearby computing devices 102 with the corresponding user information 120 identified by the computing device 102-2 at the display of the computing device 102-2, as shown in step 712. Then, the computing device 102-2 may wait for the user to select one of the nearby computing devices 102. At step 714, the computing device 102-2 may determine whether a selection of one of the nearby computing devices 102 is received. If a selection is not received, the computing device 102-2 may continue to monitor for additional selections.

[0108] At step 716, in response to receiving a selection of the nearby computing device 102-2, the computing device 102-2 may use the device key 124 associated with the computing device 102-2 to establish an encrypted request, wherein the encrypted request includes an indication to access any wireless network 130 suggested by the nearby computing device 102-1. Next, the computing device 102-2 may send the encrypted request to the nearby computing device 102-3. Then, the nearby computing device 102-3 may decrypt the encrypted request and present a notification asking the user of the nearby computing device 102-3 whether to allow or deny the computing device 102-2 to access the active wireless network or the alternative wireless network. In either case, if the user of the nearby computing device 102-3 accepts, the nearby computing device 102-3 may provide the suggested wireless network 130 to the computing device 102-2.

[0109] Then, at step 718, computing device 102-2 may receive a query from nearby computing device 102-3 regarding whether to accept access to the proposed wireless network 130. At step 720, computing device 102-2 may accept the query by sending an approval to nearby computing device 102-3. Finally, at step 710, computing device 102-2 may receive (e.g., via authentication credentials 136) a password associated with the proposed wireless network 130 to enable computing device 102-2 to access the proposed wireless network 130. Then, method 700 may also proceed to Figure 8 Method 800, which will be described in more detail below.

[0110] Figure 8 A method 800 is shown that can extend any of the following methods: Figure 3 Method 300 described herein, (combined with Figure 4 Method 400 described herein, (combined with Figure 6 Method 600 described herein or (combined with Figure 7 According to some embodiments, method 800 involves servicing a request from a computing device to share a password for a wireless network with other computing devices. Figure 8 As shown, method 800 begins at step 802, where a computing device (e.g., computing device 102-2) receives (e.g., via authentication credentials 136) a request to provide a password associated with a wireless network 130 to enable a different computing device (e.g., different computing device 102-3) to access the wireless network 130. This may occur, for example, after computing device 102-2 receives a password for a wireless network 130 from a nearby computing device (e.g., nearby computing device 102-1) in response to a request to access (1) a particular wireless network 130 or (2) any wireless network 130.

[0111] At step 804, computing device 102-2 may determine whether to allow sharing of the password with other computing devices 102. According to some embodiments, computing device 102-2 may determine whether the password is stored in a pre-shared key (PSK) format at computing device 102-2. Specifically, when nearby computing device 102-1 provides a password to computing device 102-2, the plain text of the password may be converted to a PSK format (e.g., 64 hexadecimal characters) and shared in the PSK format. In some examples, the PSK format may be generated via a hash algorithm. Therefore, in response to identifying that the password is stored in a PSK format at computing device 102-2, computing device 102-2 may determine that: (1) the password is provided by another computing device 102 (i.e., the password is not manually entered by a user of computing device 102-2), and (2) the password cannot be shared with a different computing device 102-3. Notably and advantageously, a user of a nearby computing device 102-1 that shares a password with computing device 102-2 does not have to worry that computing device 102-2 may obtain a plain text version of the password and share the password with an unauthorized person who, after sharing the password, may gain access to potentially sensitive data accessible via wireless network 130. Additionally, it should be noted that in some examples, the password in PSK format does not represent a literal readout of the password. Thus, even if the keychain is inspected, the plain text of the password cannot be derived.

[0112] However, in some embodiments, it should be noted that no restrictions on the password will prevent the password from being shared by computing device 102-2 with a different computing device 102-3.

[0113] At step 806, computing device 102-2 is enabled to provide the password to different computing device 102-3 in response to determining that sharing the password with other computing devices 102 is permitted. For example, when computing device 102-2 determines that the password is a passphrase (e.g., an 8 to 63 character passphrase), then computing device 102-2 may determine that sharing the password with other computing devices 102 is permitted.

[0114] Returning now to step 804 , if sharing the password with other computing devices 102 is not permitted, computing device 102 - 2 is prevented from providing the password to a different computing device 102 - 3 , as shown in step 808 .

[0115] 9A to 9D A conceptual diagram of an exemplary user interface that may be implemented at different computing devices (e.g., 102-1, 102-2) to service a request to access a particular wireless network is shown in accordance with some embodiments. Fig. 9AAs shown, at step 910, a user interface 912 of a computing device (e.g., target computing device 102-1) may present a list of available wireless networks in the current location where target computing device 102-1 is located. Consider a situation where, for example, the list of available wireless networks presented at user interface 912 are those that meet the required wireless signal strength.

[0116] Fig. 9A It is shown that the user interface 912 can be configured to receive a selection of a particular wireless network from a list of available wireless networks. Fig. 9A As shown, user interface 912 may receive a selection 914 of a specific wireless network ("Linda_Mar") by a user of target computing device 102-1. According to some examples, target computing device 102-1 may determine whether the selected specific wireless network ("Linda_Mar") is accessible (i.e., shared) by other computing devices 102, such as whether the specific wireless network ("Linda_Mar") utilizes the WPA2 security protocol. In response to determining that the specific wireless network ("Linda_Mar") is accessible by other computing devices 102, target computing device 102-1 may transmit a request to source computing device 102-2 that has access to the specific wireless network.

[0117] According to some embodiments, the specific wireless network that the target computing device 102-1 desires to select may not initially be presented at the user interface 912. Instead, the specific wireless network may be requested by selecting the other icon 916. In some examples, the specific wireless network (accessible to the source computing device 102-2) may be a hidden network that is presented invisibly at the user interface 912. According to this example, the target computing device 102-1 may request the source computing device 102-2 to provide the target computing device 102-1 with an accessible hidden specific wireless network. Subsequently, the source computing device 102-2 may provide the target computing device 102-1 with the suggested wireless network.

[0118] Now go to Fig. 9BAt step 920, in response to receiving the selection 914 for the specific wireless network ("Linda_Mar"), the target computing device 102-1 may present a user interface 922 prompting for a password in order for the target computing device 102-1 to access the specific wireless network ("Linda_Mar"). In conjunction with presenting the user interface 922, the target computing device 102-1 may additionally perform a checklist of conditions before transmitting the request to access the specific wireless network ("Linda_Mar") to the source computing device 102-2. Specifically, the conditions in the checklist may include at least one of the following: (1) determining whether the target computing device 102-1 is logged into the single sign-on service, (2) whether a prompt for a password is presented at the user interface 922, or (3) whether other computing devices 102 can access the specific wireless network ("Linda_Mar"), such as whether a password associated with the specific wireless network utilizes a password in a WPA2 format. When at least one of these conditions is met, then the target computing device 102-1 may be enabled to transmit the request to the source computing device 102-2.

[0119] After transmitting the request, target computing device 102-1 may wait for the user of source computing device 102-2 to accept the request. Specifically, while target computing device 102-1 waits for the user of source computing device 102-2 to approve, password input box 926 included in user interface 922 may be unpopulated. In some examples, password input box 926 may receive a password via (1) manual entry or (2) auto-population.

[0120] According to some embodiments, user interface 922 may present instructions 924 that prompt the user to bring target computing device 102-1 closer to (e.g., approach) source computing device 102-2. As previously described herein, source computing device 102-2 may specify a required RSSI level that needs to be met in order for source computing device 102-2 to process the request.

[0121] Now go to Fig. 9CAt step 930 of the source computing device 102-2, the source computing device 102-2 may receive a request from the target computing device 102-1. In response, the source computing device 102-2 may present a user interface 932 that displays a notification 934 to ask the user of the source computing device 102-2 whether to allow or deny the target computing device 102-1 access to the specific wireless network (“Linda_Mar”). In one example, the notification 934 may include a contact card that is based on at least a subset of the user information 120 of the target computing device 102-1. The notification 934 may include, for example, a name to inform the user of the identity of the target computing device 102-1 (and the user who may be operating the target computing device). Then, the user of the source computing device 102-2 may select an allow icon 936 to accept the request for the target computing device 102-1 to access the specific wireless network (“Linda_Mar”).

[0122] Return to Fig.9D As shown in step 940 of the target computing device 102-1, the target computing device 102-1 may receive the acceptance from the source computing device 102-2. Fig.9D As shown, (upon acceptance) the password entry box 944 of the user interface 942 of the target computing device 102-1 is updated to include the automatically populated password associated with the particular wireless network ("Linda_Mar"). The user may then select the join icon 946 to enable the target computing device 102-1 to access the particular wireless network. Alternatively, the target computing device 102-1 may automatically join the particular wireless network. It is noteworthy and advantageous that the characters of the automatically populated password are hashed to prevent the user of the target computing device 102-1 from sharing the password with other computing devices 102. Note that 9A to 9D The user interfaces 912, 922, 932, and 942 shown in FIG. 1 are merely exemplary, and any user interface may be implemented at computing devices 102-1, 102-2 to provide the same or similar functionality.

[0123] FIG. 10A to FIG. 10D A conceptual diagram of an exemplary user interface that may be implemented at different computing devices (e.g., 102-1, 102-2) to service a request to access any wireless network is shown in accordance with some embodiments. Fig. 10A As shown, at step 1010, a user interface 1012 of a computing device (e.g., target computing device 102-2) may present a list of nearby computing devices 102 (and a subset of their corresponding user information 120) that can be identified by target computing device 102-2. Consider a situation where, for example, the list of nearby computing devices 102 presented at user interface 1012 is also close to target computing device 102-2 (e.g., meets a required RSSI level, etc.).

[0124] Fig. 10A 1014. The user interface 1012 is shown to be configured to receive a selection 1014 of the source computing device 102-1 from the list of nearby computing devices 102. For example, Fig. 10A As shown, user interface 1012 may receive a selection 1014 of source computing device 102-1 that may be identified as “Jay.” Target computing device 102-2 may then transmit a request to access any wireless network 130 to source computing device 102-1.

[0125] In conjunction with transmitting the request to the user ("Jay") of source computing device 102-1, Fig. 10B A user interface 1022 of the target computing device 102-2 is shown at step 1020. The user interface 1022 may inform the user of the target computing device 102-2 that an acceptance of the request has not yet been received and will continue to wait for the source computing device 102-1 to accept the request.

[0126] Now go to Fig. 10C 1, source computing device 102-1 may receive a request from target computing device 102-2. In response, source computing device 102-1 may present a user interface 1032 that displays a notification 1034 to ask the user of source computing device 102-1 whether to allow or deny access to the active wireless network ("Mavericks") by the user of target computing device 102-2 ("Mac"). In addition, user interface 1032 may present a list of suggested alternative wireless networks 1038 ("Manresa", "O'Neill_House", "Steamer_Lane", or "Other") that target computing device 102-2 should access. In this way, the user ("Jay") may select from the active wireless network ("Mavericks") or from the list of suggested alternative wireless networks 1038. In addition, the list of suggested alternative wireless networks 1038 may present the respective signal strengths of each of the alternative wireless networks to facilitate the user ("Jay") in making a selection. Next, the user of the source computing device 102 - 1 (“Jay”) may select the allow icon 1036 to send a query to the target computing device 102 - 2 to access a particular wireless network (“Mavericks”).

[0127] Return to Fig. 10D1. At step 1040 of the target computing device 102-2, the target computing device 102-2 may receive an acceptance from the source computing device 102-1. Then, a user interface 1042 of the target computing device 102-2 indicates to the user ("Mac") that the source computing device 102-1 has granted access to the particular wireless network ("Mavericks"). Then, the user ("Jay") may select the join network icon 1044 to enable the target computing device 102-2 to access the particular wireless network. Note that Fig. 10A and Fig. 10D The user interfaces 1012, 1022, 1032, and 1042 shown in FIG. 1 are merely exemplary, and any user interface may be implemented at computing devices 102-1, 102-2 to provide the same or similar functionality.

[0128] Fig.11 A method 1100 for servicing a request from a nearby computing device to use a computing device as a wireless hotspot is shown in accordance with some embodiments. Fig.11 As shown, method 1100 begins at step 1102, where a computing device (e.g., computing device 102-1) transmits an advertisement to a nearby computing device (e.g., nearby computing device 102-2) to use computing device 102-1 as a wireless hotspot. This may occur, for example, after computing device 102-1 establishes a cellular data network connection. According to some examples, computing device 102-1 may include a cellular communication component capable of establishing a cellular data network connection.

[0129] According to some examples, computing device 102-1 may be associated with user information 120. Specifically, computing device 102-1 may utilize a hashing algorithm (to which nearby computing device 102-2 may also have access) to generate a unique hash value for an advertisement and user information 120 that may be transmitted as a hash message to nearby computing device 102-2. Subsequently, upon receiving the hash message, nearby computing device 102-2 may reference a hash table that provides a correlation between the unique hash value and user information 120 associated with computing device 102-1 to identify the hashed advertisement as being provided by a known computing device 102 (e.g., a friend, relative, colleague, etc.). According to other examples, computing device 102-1 may transmit the advertisement as an encrypted message. Specifically, computing device 102-1 may provide a device key 124 (e.g., an encryption key) associated with computing device 102-1 to nearby computing device 102-2 before transmitting the advertisement. Subsequently, when nearby computing device 102-2 receives the encrypted message, nearby computing device 102-2 may attempt to decrypt the contents of the encrypted message using device key 124 known to nearby computing device 102-2 (i.e., previously stored). In either case, the privacy of computing device 102-1 is enhanced because unrelated / unknown computing devices 102 cannot access the contents of the message.

[0130] Next, at step 1104 , computing device 102 - 1 may receive a request from nearby computing device 102 - 2 to use computing device 102 - 1 as a wireless hotspot, wherein the request includes user information 120 associated with nearby computing device 102 - 2 .

[0131] At step 1106, computing device 102-1 may determine whether the signal strength associated with the request satisfies a signal threshold. As previously described herein, sharing manager 110 of computing device 102-1 may interact with wireless communication components to determine whether the signal strength of the request satisfies a required RSSI level for processing the request. If computing device 102-1 determines that the signal strength associated with the request does not satisfy the signal threshold, computing device 102-1 may prevent any notifications associated with the request from being presented to a user of computing device 102-1, as shown in step 1108. Advantageously, the user of computing device 102-1 is prevented from being disturbed by unknown computing device 102.

[0132] Alternatively, in step 1110, in response to computing device 102-1 determining that the signal strength of the request meets the required RSSI level, computing device 102-1 may determine whether the user information 120 included in the request is recognized by computing device 102-1. Specifically, computing device 102-1 may identify whether there is a pre-existing relationship with nearby computing device 102-2 by comparing the user information 120 included in the request with contacts 122 managed by computing device 102-1. When determining that user information 120 is not included in contacts 122, computing device 102-1 may prevent any notifications associated with the request from being presented to the user of computing device 102-1, as shown in step 1108.

[0133] Otherwise, at step 1112, when computing device 102-1 determines that user information 120 is included in its contacts 122, computing device 102-1 may present a notification to ask the user of computing device 102-1 whether to approve granting nearby computing device 102-2 access rights to use computing device 102-1 as a wireless hotspot. In one example, the notification presented to the user may include a contact card with, for example, a name, a photo, etc., to inform the user of the identity of nearby computing device 102-2 (and the user who may be operating the nearby computing device).

[0134] At step 1114, computing device 102-1 may receive approval from the user to enable nearby computing device 102-2 to use computing device 102-1 as a wireless hotspot. Then, as shown in step 1116, computing device 102-1 may provide authentication credentials 136 (e.g., a password, etc.) that nearby computing device 102-2 may use to authenticate with the wireless hotspot and gain access to the wireless hotspot.

[0135] Fig.12 A method 1200 for servicing a request issued by a nearby computing device to obtain access rights to a secure resource managed by computing device 102-1 is shown in accordance with some embodiments. Fig.12 As shown, method 1200 begins at step 1202, where a computing device (e.g., computing device 102-1) receives a request to access a secure resource through authentication credentials from a nearby computing device (e.g., nearby computing device 102-2), wherein the request includes user information 120 associated with the nearby computing device 102-2 and an indication to access the secure resource. According to some examples, the nearby computing device 102-2 may attempt to access the secure resource via a secure application and / or encrypted website established at the nearby computing device 102-2. Specifically, the secure resource may refer to a user account associated with an online banking account, a user account associated with a social network profile, a user account associated with a digital media project service, and the like.

[0136] According to some embodiments, when the nearby computing device 102-2 presents a user interface prompting authentication credentials (e.g., a user name, password, passcode, security question / answer, etc.) for the nearby computing device 102-2 to access a secure resource, the computing device 102-1 may receive a request from the nearby computing device 102-2. In conjunction with presenting the user interface, the nearby computing device 102-2 may transmit a request to access the secure resource to the computing device 102-1. According to some examples, the request may be transmitted to the computing device 102-1 as a hashed message, so that the computing device 102-1 may refer to a hash table to identify the hashed message as being provided by a known computing device 102 (e.g., a friend, parent, colleague, etc.), and the hash table provides a correlation between a unique hash value and user information 120 associated with the nearby computing device 102-2. According to other examples, the request may be transmitted to the computing device 102-1 as an encrypted message, so that the computing device 102-1 may attempt to decrypt the contents of the encrypted message using a device key 124 known to the computing device 102-1 (i.e., previously stored). In either case, the privacy of nearby computing device 102 - 2 is enhanced because unrelated / unknown computing devices 102 cannot access the content of the message.

[0137] At step 1204, computing device 102-1 may determine whether the signal strength associated with the request satisfies a signal threshold. As previously described herein, sharing manager 110 of computing device 102-1 may interact with wireless communication components to determine whether the signal strength of the request satisfies a required RSSI level for processing the request. If computing device 102-1 determines that the signal strength associated with the request does not satisfy the signal threshold, computing device 102-1 may prevent any notifications associated with the request from being presented to a user of computing device 102-1, as shown in step 1206. This may advantageously prevent the user of computing device 102-1 from being disturbed by unknown / unrelated computing devices 102.

[0138] Alternatively, in response to computing device 102-1 determining that the signal strength of the request meets the required RSSI level, computing device 102-1 may determine whether the user information 120 included in the request is recognized by computing device 102-1, as shown in step 1208. Specifically, computing device 102-1 may identify whether there is a pre-existing relationship with nearby computing device 102-2 by comparing the user information 120 included in the request with contacts 122 managed by computing device 102-1. When determining that user information 120 is not included in contacts 122, computing device 102-1 may prevent any notifications associated with the request from being presented to the user of computing device 102-1, as shown in step 1206.

[0139] Otherwise, at step 1210, when computing device 102-1 determines that user information 120 is included in its contacts 122, computing device 102-1 may present a notification to ask the user of computing device 102-1 whether to approve granting nearby computing device 102-2 access to the secure resource. In one example, the notification presented to the user may include a contact card with, for example, a name, a photo, etc., to inform the user of the identity of nearby computing device 102-2 (and the user who may be operating the nearby computing device).

[0140] At step 1212, computing device 102-1 may receive approval from the user to enable nearby computing device 102-2 to access the secure resource. Then, as shown in step 1214, computing device 102-1 may provide authentication credentials 136 (e.g., user name, password, etc.) that nearby computing device 102-2 may use to authenticate with the secure resource and obtain access to the secure resource. According to some examples, authentication credentials 136 may be bundled with a time limit indication so that authentication credentials 136 will expire after a predetermined amount of time.

[0141] Fig.13 A method 1300 is shown for servicing a request to access a wireless network issued by a nearby computing device by providing a temporary password to the nearby computing device, according to some embodiments. Fig.13 As shown, method 1300 begins at step 1302, where a computing device (e.g., computing device 102-1) receives a request from a nearby computing device (e.g., nearby computing device 102-2), the request including user information 120 associated with nearby computing device 102-2 and an indication that nearby computing device 102-2 is attempting to access a wireless network 130.

[0142] According to some examples, the request may be transmitted to computing device 102-1 as a hashed message, so computing device 102-1 may reference a hash table that provides a correlation of a unique hash value with user information 120 associated with nearby computing device 102-2 to identify the hashed message as being provided by a known computing device 102 (e.g., a friend, parent, coworker, etc.). According to other examples, the request may be transmitted to computing device 102-1 as an encrypted message, so computing device 102-1 may attempt to decrypt the contents of the encrypted message using a device key 124 known to computing device 102-1 (i.e., previously stored). In either case, the privacy of nearby computing device 102-2 is enhanced because unrelated / unknown computing devices 102 cannot access the contents of the message.

[0143] According to some examples, upon receiving the request, computing device 102-1 may determine whether the signal strength associated with the request satisfies a signal threshold. As previously described herein, if computing device 102-1 determines that the signal strength associated with the request does not satisfy the signal threshold, computing device 102-1 may prevent any notification associated with the request from being presented to the user of computing device 102-1. Additionally, computing device 102-1 may determine whether user information 120 included in the request is included in its contacts 122. In response to determining that user information 120 is included in its contacts 122, computing device 102-1 may present a notification to ask the user of computing device 102-1 whether to approve granting nearby computing device 102-2 access to wireless network 130.

[0144] After providing notification to the user of computing device 102-1, computing device 102-1 may determine, at step 1304, whether approval has been received from the user to enable nearby computing device 102-2 to access wireless network 130. If computing device 102-1 determines that approval has not been received from the user, computing device 102-1 may block nearby computing device 102-2 from accessing wireless network 130, as shown in step 1306.

[0145] Alternatively, at step 1308, in response to computing device 102-1 determining that approval is received from the user, computing device 102-1 may determine whether approval is received from the user to generate a temporary password for nearby computing device 102-2 to access wireless network 130. Specifically, after receiving approval from the user, computing device 102-1 may present a notification to ask the user whether to limit the amount of time that nearby computing device 102-2 has access to wireless network 130.

[0146] Then, as shown in step 1310, computing device 102-1 may transmit a request to a computing device to generate a temporary password for nearby computing device 102-2 to access wireless network 130. According to some examples, computing device may refer to one or more server devices with which computing device 102-1 may interact directly. According to other examples, computing device may refer to a wireless router associated with wireless network 130, with which computing device 102-1 may interact directly. According to other examples, computing device may refer to computing device 102-1 itself.

[0147] At step 1312, computing device 102-1 may receive a temporary password from a computing device. According to some embodiments, the temporary password may be retrieved from a set of pre-existing temporary passwords that are established at the computing device and are specifically used for guest access to wireless network 130. Specifically, when the temporary password is generated, received from the computing device, or transmitted to at least one of the nearby computing devices 102-2, the temporary password may be bundled with a bit mark (e.g., a time limit indication). For example, the time limit indication may specify that the temporary password will only remain valid for use by the nearby computing device 102-2 within a 48-hour period. In this way, after the 48-hour period has passed, the computing device may invalidate the temporary password and be unable to access the wireless network 130. According to some embodiments, the temporary password may be generated by the computing device in response to receiving a request from computing device 102-1. Specifically, the temporary password may be bundled with a bit flag that provides instructions for the temporary password after the password is no longer used by the nearby computing device 102-2, such as when the nearby computing device 102-2 has not accessed the wireless network 130 within a predetermined amount of time (e.g., 24 hours). According to some embodiments, a computing device (such as a wireless router associated with the wireless network 130) may regulate access to the wireless network 130 by continuously updating a complete list of authorized passwords that can be used by nearby computing devices 102-2 to access the wireless network 130. In response to a computing device 102-1 requesting a temporary password, the wireless router may generate a temporary password and provide the temporary password to the computing device 102-1, while also updating the complete list of authorized passwords with the most recently generated temporary password. The wireless router may be configured to establish a time limit that specifies how long the temporary password will remain valid. After the time limit expires, the wireless router may be configured to remove the temporary password from the complete list of authorized passwords.

[0148] Subsequently, at step 1314 , computing device 102 - 1 may directly or indirectly (eg, via a computing device) provide a temporary password to nearby computing device 102 - 2 to enable nearby computing device 102 - 2 to access wireless network 130 .

[0149] Fig.14 A method 1400 for enabling a wireless router to provide access to a wireless network to nearby computing devices is shown in accordance with some embodiments. Fig.14As shown, method 1400 begins at step 1402, where a wireless router associated with a wireless network 130 receives a request from a computing device (e.g., computing device 102-1), where the request includes user information 120 associated with computing device 102-1 and a list of one or more contacts 122 approved by the user of computing device 102-1 to access wireless network 130. This may occur, for example, when the user of computing device 102-1 desires to grant access to wireless network 130 to a nearby computing device (e.g., nearby computing device 102-2), but is unable to service the request for access to wireless network 130 issued by nearby computing device 102-2 due to not being geographically close to wireless network 130. According to some embodiments, the wireless router may utilize user information 120 to determine whether the request is provided by a known computing device 102 (i.e., a user who has the authority to grant computing device 102 access to wireless network 130).

[0150] Then, at step 1404, in response to determining that computing device 102-1 is known or recognized, the wireless router may store the list of the one or more contacts 122 that are approved to access wireless network 130 at a storage device in communication with wireless network 130. Additionally, computing device 102-1 may establish a list of the one or more contacts 122 that are approved to access wireless network 130 through a user account (e.g., a user ID associated with a single sign-on service that is associated with computing device 102-1) to enable computing device 102-1 and / or the wireless router to retrieve the list of contacts 122 that are approved to access wireless network 130. Thus, in some examples, the wireless router may not require computing device 102-1 to provide the wireless router with the list of one or more contacts, as the wireless router may instead retrieve the list from the user account.

[0151] Subsequently, at step 1406, the wireless router may receive a request from the nearby computing device 102-2 to access the wireless network 130. According to some embodiments, the request includes user information 120 associated with the nearby computing device 102-2 and an indication to access the wireless network 130. According to some examples, the request may be transmitted to the wireless router as a hashed message. According to some examples, the request may be transmitted to the wireless router as an encrypted message.

[0152] At step 1408, the wireless router may determine whether the signal strength associated with the request satisfies a signal threshold. In some examples, the wireless router may be able to establish a geo-fence with a physical proximity threshold. The wireless router may determine whether the signal strength of the request satisfies the required RSSI level for processing the request. If the wireless router determines that the signal strength associated with the request does not satisfy the signal threshold, the wireless router may block the nearby computing device 102-2 from accessing the wireless network 130, as shown in step 1410.

[0153] Alternatively, at step 1412, in response to the wireless router determining that the signal strength of the request satisfies the required RSSI level, the wireless router may determine whether the user information 120 included in the request corresponds to the one or more contacts 122 that are approved to access the wireless network 130. Specifically, the wireless router may compare the user information 120 included in the request with the contacts 122 provided in the list of the one or more contacts. When it is determined that the user information 120 is not included in the contacts 122, the wireless router may prevent the nearby computing device 102-2 from accessing the wireless network 130, as shown in step 1410.

[0154] Otherwise, at step 1414, when the wireless router determines that the user information 120 provided in the request is included in the list of the one or more contacts approved to access the wireless network 130, the wireless network may provide authentication credentials 136 (e.g., user name, password, etc.) that the nearby computing device 102-2 may use to authenticate with and gain access to the wireless network 130. According to some embodiments, and as described herein, the wireless router may be able to provide a temporary password to the nearby computing device 102-2, which may be bundled with a time limit indication so that the temporary password will remain valid for a limited duration for use by the nearby computing device 102-2.

[0155] Fig.15 A detailed view of a computing device 1500 is shown, according to some embodiments, which may represent a computing device for implementing the various techniques described herein. Figure 1 For example, this detailed view shows the combination of Figure 1 The computing devices (eg, 102-1 to 102-N) may include various components. Fig.15As shown, the computing device 1500 may include a processor 1502 representing a microprocessor or controller for controlling the overall operation of the computing device 1500. The computing device 1500 may also include a user input device 1508 that allows a user of the computing device 1500 to interact with the computing device 1500. For example, the user input device 1508 may take a variety of forms, such as buttons, keypads, dials, touch screens, audio input interfaces, visual / image capture input interfaces, input in the form of sensor data, etc. In addition, the computing device 1500 may include a display 1510 that may be controlled by the processor 1502 (e.g., via a graphics component) to display information to the user. A data bus 1516 may facilitate data transfer between at least a storage device 1540, the processor 1502, and a controller 1513. The controller 1513 may be used to interact with and control different devices via a device control bus 1514. The computing device 1500 may also include a network / bus interface 1511 coupled to the data link 1512. In the case of a wireless connection, the network / bus interface 1511 may include a wireless transceiver.

[0156] As described above, computing device 1500 also includes storage device 1540, which may include a single disk or a collection of disks (e.g., a hard disk). In some embodiments, storage device 1540 may include flash memory, semiconductor (solid-state) memory, etc. Computing device 1500 may also include random access memory (RAM) 1520 and read-only memory (ROM) 1522. ROM 1522 may store programs, utilities, or processes to be executed in a non-volatile manner. RAM 1520 may provide volatile data storage and store instructions related to the operation of applications executed on computing device 1500.

[0157] in addition, Fig.16A Block diagram 1600 illustrates various computing devices 1602 that may be configured to recognize when computing devices are in proximity to one another, according to some embodiments. Fig.16AAs shown, each computing device 1602 may include a computing device discovery service 1604, an identity manager 1614, and an action manager 1618. Note that these software entities may be separated into additional entities or combined into fewer entities without departing from the scope of the present disclosure. According to some embodiments, and as described in more detail herein, these software entities may be executed on each of the computing devices 1602, and cause the announcement data packet 1620 to be periodically transmitted by the computing device 1602. Specifically, the announcement data packet 1620 may be specific to the computing device 1602, and (if any) may be detected and processed by a nearby computing device 1602 that is authorized to identify when the computing device 1602 is approaching. Subsequently, the nearby computing device 1602 may perform at least one action in response to detecting that the computing device 1602 is approaching the nearby computing device 1602.

[0158] To implement the foregoing techniques, a computing device discovery service 1604 (executing on a given computing device 1602) may be configured to generate and / or manage cryptographic keys 1608 that are specific to the computing device 1602. According to some embodiments, and as described in greater detail herein, the cryptographic keys 1608 may be dynamic in nature and replaced by updated cryptographic keys 1608 under appropriate scenarios (e.g., when a modification is authorized to detect when the computing device 1602 is in the vicinity of the computing device 1602). Additionally, the computing device 1602 may be configured to manage a translation address 1610 that is used as a basis for transmitting the announcement packet 1620. According to some embodiments, the translation address 1610 may be any arbitrary value, e.g., a randomly generated number, a number derived from a communication address associated with the computing device 1602, etc. According to some embodiments, and as described in greater detail herein, the translation address 1610 may be dynamic in nature, e.g., the translation address 1610 may be updated periodically (e.g., once every fifteen minutes). Advantageously, these periodic updates may make it difficult for a malicious party to track computing device 1602 .

[0159] like Fig.16AAs shown, a computing device discovery service 1604 (e.g., executed on a first computing device 1602) may be configured (e.g., using any data structure) to manage an entry for each computing device 1602 that the first computing device 1602 is authorized to detect when it is in proximity. Specifically, each entry associates at least (1) a computing device ID 1606 (which corresponds to a particular computing device 1602) with (2) a "known" encryption key 1608 (which also corresponds to a particular computing device 1602). Note that a known encryption key 1608 for a given computing device 1602 means an encryption key 1608 that is generated / managed by the computing device 1602 and provided to other computing devices 1602 that are authorized to detect when the given computing device 1602 is in proximity.

[0160] As described in more detail herein, any known method for sharing encryption keys 1608 between computing devices 1602 may be implemented without departing from the scope of the present disclosure. For example, encryption keys 1608 may be shared via an encryption key exchange server 1622 that is configured to communicate with computing devices 1602 and coordinate the manner in which encryption keys 1608 are shared. In another example, encryption keys 1608 may be shared directly between computing devices 1602 without involving encryption key exchange server 1622. FIG. 16B to FIG. 16C A more detailed breakdown of the manner in which encryption keys 1608 may be shared between computing devices 1602 is described in more detail.

[0161] According to some embodiments, and as described in greater detail herein, each computing device 1602 may be configured to utilize its corresponding encryption key 1608 to periodically generate and transmit an advertisement data packet 1620 specific to the computing device 1602. In this regard, when the computing device 1602 receives an advertisement data packet 1620 from a nearby computing device 1602, the computing device 1602 may iterate through its known encryption keys 1608 to identify a known encryption key 1608, if any, that (1) corresponds to the nearby computing device 1602 and (2) can be used to authenticate the advertisement data packet 1620. The computing device 1602 may then identify the computing device ID 1606 that corresponds to the identified known encryption key 1608 (associated with the nearby computing device 1602). In this regard, the computing device 1602 is able to understand, at a high level, that the nearby computing device 1602 is in proximity. In accordance with some embodiments, and as described in more detail herein, this understanding may cause computing device 1602 to (1) identify a particular person associated with nearby computing device 1602, and (2) determine whether computing device 1602 should take action.

[0162] In addition, and if Fig.16AAs shown, identity manager 1614 may be configured (e.g., using any data structure) to manage multiple entries, each of which associates at least (1) a personal ID 1616 (which corresponds to a particular individual) with (2) a computing device ID 1606 (which is associated with a particular individual). According to some embodiments, this data may be established in conjunction with sharing an encryption key 1608 between computing devices 1602. For example, a first individual authorizing a second individual to identify when the first individual is in proximity to the second individual may involve: (1) providing a corresponding known encryption key 1608 (in all computing devices 1602 belonging to the first individual) to all computing devices 1602 (belonging to the second individual), and (2) providing a personal ID 1616 (belonging to the first individual) to all computing devices 1602 (belonging to the second individual). In this way, computing devices 1602 belonging to the second individual are able to use Fig.16A The information shown populates its corresponding device discovery service 1604 / identity manager 1614, thereby enabling the computing device 1602 to detect when the computing device 1602 of the first individual is in proximity.

[0163] Note that the foregoing scenarios are merely exemplary, and embodiments do not require an individual to make all of their computing devices 1602 discoverable by all of the authorized individuals' computing devices 1602. Rather, embodiments may enable an individual's specific computing devices 1602 to be selected as discoverable by (1) all of a different individual's devices or (2) specific devices of a different individual without departing from the scope of the present disclosure.

[0164] According to some embodiments, the computing device discovery service 1604 may be configured to interact with the identity manager 1614 (as described herein) whenever the computing device ID 1606 of a known / nearby computing device 1602 is identified. Specifically, the computing device discovery service 1604 may be configured to provide the computing device ID 1606 to the identity manager 1614 so that the identity manager 1614 can effectively locate the personal ID 1616 corresponding to the individual associated with the computing device ID 1606 (e.g., the owner of the computing device 1602 corresponding to the computing device ID 1606). Then, according to some embodiments, the identity manager 1614 may be configured to provide the personal ID 1616 to the action manager 1618 so that the action manager 1618 can identify the action profile 1619 (if any) assigned to the personal ID 1616.

[0165] According to some embodiments, action profile 1619 may represent a set of parameters that indicate how computing device 1602 should respond when a known computing device 1602 (associated with personal ID 1616) is approached. For example, the set of parameters may indicate that an alert should be displayed on computing device 1602 indicating that an individual corresponding to personal ID 1616 is approaching. In another example, the set of parameters may indicate that specific settings of computing device 1602, such as notification settings, should be updated. Note that the foregoing examples are not intended to represent an exhaustive list, and that any known class of actions (at any level of granularity) may be defined by a given action profile 1619 without departing from the scope of the present disclosure.

[0166] therefore, Fig.16A A high-level overview of an exemplary architecture is shown that can be used to enable computing devices 1602 to know each other in proximity while protecting privacy. FIG. 16B to FIG. 16C A more detailed description of the manner in which encryption keys 1608 may be exchanged between computing devices 1602 is described in more detail.

[0167] Fig. 16B A method 1630 for enabling computing devices 1602 to exchange encryption keys 1608 with each other through an encryption key exchange server 1622 is shown according to some embodiments. Specifically, according to some embodiments, the method 1630 can be implemented by the encryption key exchange server 1622 to enable computing devices 1602 to indirectly exchange encryption keys 1608 with each other. Fig. 16B As shown, method 1630 begins at step 1632, where the encryption key exchange server 1622 receives data items from a first computing device 1602, the data items comprising: (i) a computing device ID 1606 unique to the first computing device 1602, (ii) a personal ID 1616 unique to an individual associated with the first computing device 1602, and (iii) an encryption key 1608 associated with the first computing device 1602.

[0168] Note that first computing device 1602 may be configured to provide the data item to encryption key exchange server 1622 in response to any condition being satisfied at encryption key exchange server 1622, at first computing device 1602, and / or elsewhere. For example, encryption key exchange server 1622 may possess information associated with first computing device 1602 (e.g., computing device ID 1606, personal ID 1616, etc.) such that encryption key exchange server 1622 may recognize when it is appropriate to query computing device 1602 for data items. This may occur, for example, when encryption key exchange server 1622 receives a request to add personal ID 1616 to a family account associated with at least one different personal ID 1616. Then, encryption key exchange server 1622 may be configured to parse data structure ( Fig.16A 1616), the data structure identifying the computing device ID 1606 for all computing devices 1602 associated with the personal ID 1616. Subsequently, the encryption key exchange server 1622 may query each of the computing devices 1602 for its corresponding data item, and forward its corresponding data item to all computing devices 1602 associated with the at least one different personal ID 1616. In addition, the encryption key exchange server 1622 may be configured to query all computing devices 1602 associated with the at least one different personal ID 1616 for their corresponding data items, and forward their corresponding data items to the computing device 1602 associated with the personal ID 1616.

[0169] It should be noted that the foregoing scenario is exemplary, and without departing from the scope of the present disclosure, the encryption key exchange server 1622 may implement any method for authorizing the exchange of encryption keys 1608 between computing devices 1602. For example, a first user operating a first computing device 1602 may navigate through its contacts (e.g., via a user interface displayed on the first computing device 1602) to identify a second user that the first user wants to know when the second user is approaching the first user. Then, the first computing device 1602 may issue a request to the encryption key exchange server 1622, the request including the personal ID 1616 associated with the second user (and / or one or more computing device IDs 1606, if available). Subsequently, the encryption key exchange server 1622 may use the information included in the request to prompt the second user for permission to enable the first user to be aware of its approach. This may involve, for example, cryptographic key exchange server 1622 identifying all computing devices (or a subset thereof) in computing devices 1602 associated with the second user, and causing computing device 1602 to display a prompt (e.g., via a user interface displayed at computing device 1602) indicating that the first user wants to know when the second user is in proximity to the first user. The second user may then select all computing devices (or a subset thereof) in computing devices 1602 associated with the second user so that first computing device 1602 is authorized to know when computing device 1602 is in proximity to first computing device 1602.

[0170] In another example, the encryption key exchange server 1622 may be configured to analyze the interaction between users to identify the conditions under which it is prudent to suggest that users authorize each other to know that they are close to each other. For example, the encryption key exchange server 1622 may be configured to analyze the interaction that occurs between the first individual and the second individual, and suggest that the first individual and the second individual authorize each other to know that they are close to each other. In yet another example, the encryption key exchange server 1622 may analyze the existing relationship between individuals to identify the conditions so as to provide suggestions. For example, information about the employment relationship between the first individual and the second individual may indicate that it is beneficial for individuals to know when they are close to each other. In another example, hierarchical relationship information between a group of individuals (e.g., small, medium or large enterprises) may indicate that it is beneficial for different individuals in these individuals to know when they are close to each other. Similarly, it should be noted that the foregoing examples are only exemplary, and the encryption key exchange server 1622 may identify any conditions that may be beneficial for individuals to share close to each other. It should also be noted that, without departing from the scope of the present disclosure, the computing device 1602 may perform the same analysis and / or additional analysis as the encryption key exchange server 1622.

[0171] Returning now to method 1630, at step 1634, encryption key exchange server 1622 identifies at least one computing device 1602 related to first computing device 1602 based on one or more of computing device ID 1606 or personal ID 1616. At step 1636, encryption key exchange server 1622 provides the data item to the at least one computing device 1602, wherein the at least one computing device 1602 stores encryption key 1608 as a known encryption key 1608 linked to computing device ID 1606 and personal ID 1616.

[0172] Note that all or a subset of method 1630 may be repeated in conjunction with permission changes, updates to encryption key 1608, and the like. For example, in response to a compromise event, and the like, it may be necessary for first computing device 1602 to periodically update its encryption key 1608. When this occurs, first computing device 1602 may generate an updated encryption key 1608 and provide the updated encryption key to encryption key exchange server 1622 along with a request to replace the corresponding old encryption key 1608 with the updated encryption key 1608. Then, encryption key exchange server 1622 may identify second computing device 1602 storing the old encryption key 1608 and provide the updated encryption key 1608 to second computing device 1602. In this way, second computing device 1602 may remain able to identify when first computing device 1602 is in proximity.

[0173] Additionally, it should be noted that the encryption key exchange server 1622 may be configured to cause the first computing device 1602 (of the first user) to delete the known encryption key 1608 associated with the second computing device 1602 (of the second user) when the second user cancels authorization such that the first user is not permitted to identify when the second user is approaching. For example, when a user associated with a family account is removed from the family account, the remaining users on the family account should no longer be authorized to identify when the user is approaching. Therefore, in order to implement these changes, the encryption key exchange server 1622 may be configured to cause the computing devices 1602 belonging to the remaining users on the family account to delete the encryption key 1608 associated with the computing device 1602 belonging to the user removed from the family account.

[0174] therefore, Fig. 16B A server-centric technique for enabling computing devices 1602 to exchange encryption keys 1608 with each other is described. However, as previously described, computing devices 1602 may also be able to share encryption keys 1608 without involving an encryption key exchange server 1622. In this regard, Fig. 16C A method 1650 for enabling computing devices 1602 to directly exchange encryption keys 1608 with each other is shown according to some embodiments. Fig. 16CAs shown, method 1650 begins at step 1652, where the first computing device 1602 identifies a condition that enables the second computing device 1602 to know when the first computing device 1602 is near the second computing device 1602, such as the above combination Fig. 16B At step 1654, first computing device 1602 provides a data item to second computing device 1602, the data item comprising: (i) a computing device ID 1606 unique to first computing device 1602, (ii) a personal ID 1616 unique to an individual associated with first computing device 1602, and (iii) an encryption key 1608 associated with first computing device 1602. Subsequently, and as described herein, second computing device 1602 may save portions of the data item such that second computing device 1602 becomes capable of detecting proximity of first computing device 1602.

[0175] It should be noted that without departing from the scope of the present disclosure, the first computing device 1602 may be configured to use any known method of transmitting data to provide the data item to the second computing device 1602. For example, without departing from the scope of the present disclosure, the first / second computing device 1602 may utilize Bluetooth, near field communication (NFC), WiFi, ultra-wideband (UWB), and / or cellular.

[0176] Therefore, 16B to Fig. 16C A detailed description of the manner in which encryption keys 1608 may be exchanged between computing devices 1602 via encryption key exchange server 1622 according to some embodiments is provided. FIG. 17A to FIG. 17B A more detailed description of the manner in which announcement data packet 1620 may be transmitted and analyzed is described.

[0177] Fig.17A Conceptual diagram 1700 illustrates computing device 1602-1 transmitting announcement packet 1620 according to some embodiments. Fig.17A As shown, computing device 1602-1 may utilize its encryption key 1608 and translation address 1610 to generate announcement data packet 1620. Specifically, computing device 1602-1 may utilize its encryption key 1608 to perform hash operation 1702 on translation address 1610 to generate suffix 1706. According to some embodiments, suffix 1706 may represent all or a portion of the value generated by hash operation 1702, such as the first three (3) bytes of the value generated by hash operation 1702. In any case, suffix 1706 may be combined with prefix 1704 (i.e., translation address 1610) to form announcement data packet 1620, which may be received and analyzed by any nearby computing device 1602 (e.g., computing device 1602-2) that is capable of detecting announcement data packet 1620. Note that the suffix 1706 included in the Fig.17A The information in the advertisement packet 1620 shown is exemplary, and other variations may be implemented without departing from the scope of the present disclosure. For example, the prefix 1704 and the suffix 1706 may be reversed. In another example, when the translation address 1610 represents the current network address associated with the computing device 1602-1, the prefix 1704 may be omitted because the advertisement packet 1620 will include the translation address 1610 in another field of the advertisement packet 1620.

[0178] According to some embodiments, computing device 1602-2 may be configured to verify that advertisement packet 1620 satisfies at least one condition prior to analyzing advertisement packet 1620. For example, computing device 1602-2 may (1) verify that advertisement packet 1620 was received at a signal strength that satisfies a threshold, and / or (2) verify the overall integrity of advertisement packet 1620. For example, computing device 1602-2 may ignore advertisement packets 1620 that are received at low signal strength and / or are fragmented because such advertisement packets 1620 indicate that the proximity of computing device 1602 that transmitted advertisement packet 1620 should not yet be analyzed.

[0179] Additionally, it should be noted that the computing device 1602-1 may be configured to transmit the announcement data packets 1620 according to any method without departing from the scope of the present disclosure. Specifically, the computing device 1602-1 may be configured to generate and transmit the announcement data packets 1620 according to a fixed periodic rate, one or more conditions being met, etc. For example, as long as the battery charge of the computing device 1602-1 meets a threshold, the computing device 1602-1 may transmit the announcement data packets 1620 every second. In another example, the computing device 1602-1 may be configured to stop transmitting the announcement data packets 1620 when in a privacy mode, such as when the computing device 1602-1 is within a geographic boundary, when the computing device 1602-1 is operating in a specific mode (e.g., an active phone call), etc.

[0180] Additionally, it should be noted that the computing device 1602-1 may adjust the manner in which the announcement packet 1620 is transmitted to enable other computing devices 1602 to detect the effective boundary of the computing device 1602-1. For example, the computing device 1602-1 may change the power level at which the announcement packet 1620 is transmitted based on the desired proximity threshold, the type of communication interface used to transmit the announcement packet 1620, etc.

[0181] In any case, when computing device 1602-2 receives announcement packet 1620 and announcement packet 1620 satisfies the aforementioned conditions, computing device 1602-2 may begin analyzing announcement packet 1620 to identify whether announcement packet 1620 was transmitted by a computing device 1602 known to computing device 1602-2. According to some embodiments, this may involve computing device 1602-2, for each of its known encryption keys 1608: (1) performing the same hash operation 1702 on prefix 1704 of announcement packet 1620, and (2) comparing the value produced by hash operation 1702 to determine whether the value matches suffix 1706 of announcement packet 1620.

[0182] According to some embodiments, computing device 1602-2 may prioritize the manner in which different known encryption keys 1608 managed by computing device 1602-2 are applied to announcement data packets 1620. For example, known encryption keys 1608 associated with computing devices 1602 (with which computing device 1602-2 most frequently comes into contact) may be accessed in a prioritized manner to reduce the overall amount of time / work that would otherwise occur in attempting to authenticate announcement data packets 1620 in a random or standard order. In another example, encryption keys 1608 associated with important individuals may be prioritized. Note that the foregoing examples are not intended to be limiting, and any method may be used to prioritize encryption keys 1608 without departing from the scope of the present disclosure.

[0183] In any case, when a known encryption key 1608 is found that produces a match, computing device 1602-2 identifies computing device ID 1606 that corresponds to known encryption key 1608. Computing device 1602-2 may then utilize computing device ID 1606 to identify corresponding personal ID 1616. Computing device 1602-2 may then utilize personal ID 1616 to identify an action profile 1619 (if any) that corresponds to personal ID 1616, and proceed according to action profile 1619. This may involve, for example, identifying actions defined in action profile 1619 that should be performed when a proximity “start” event occurs in association with computing device 1602-1.

[0184] In addition, although Fig.17A1, but computing device 1602-2 may be configured to monitor whether computing device 1602-1 continues to remain in proximity to computing device 1602-2, for example, by analyzing additional notification packets 1620 transmitted by computing device 1602-1, by periodically pinging computing device 1602-1 via a communication channel formed after a proximity start event, etc. In this regard, when computing device 1602-2 identifies that computing device 1602-1 no longer meets a physical proximity threshold relative to computing device 1602-2, computing device 1602-2 may deactivate a corresponding action profile 1619 at computing device 1602-2. This may involve, for example, identifying actions defined in action profile 1619 that should be performed when a proximity "end" event occurs in association with computing device 1602-1.

[0185] therefore, Fig.17A The manner in which the computing device 1602 according to some embodiments can transmit and analyze the notification data packet 1620 according to the techniques described herein is described. Fig. 17B A more detailed description of the manner in which the computing device 1602 may transmit and analyze the announcement data packet 1620 is described in more detail.

[0186] Fig. 17B A method 1750 for transmitting and analyzing an announcement packet 1620 is shown according to some embodiments. Fig. 17B As shown, method 1750 begins at step 1752, where first computing device 1602 receives an announcement packet 1620 from second computing device 1602, the announcement packet including: (i) a network address associated with second computing device 1602 (e.g., translation address 1610), and (ii) a hash value calculated using translation address 1610 and encryption key 1608 associated with second computing device 1602 (e.g., as described above in conjunction with Fig.17A At step 1754, the first computing device 1602 performs steps 1756 to 1758 for each known encryption key 1608 of the plurality of known encryption keys 1608 accessible to the first computing device 1602. Specifically, at step 1756, the first computing device 1602 uses the conversion address 1610 and the known encryption key 1608 to calculate a temporary hash value (e.g., as also described above in conjunction with Fig.17A At step 1758, in response to identifying that the temporary hash value matches the hash value, the first computing device 1602 performs operations associated with the second computing device 1602 (e.g., also as described above in connection with Fig.17A described above).

[0187] therefore, FIG. 17A to FIG. 17BA detailed description of the manner in which notification packets 1620 may be transmitted and analyzed according to some embodiments is provided. In addition, Fig.18 An illustration of an exemplary user interface 1800 that can be used to adjust the manner in which a user can authorize other users to know that they are in proximity to one another is provided in accordance with some embodiments. Fig.18 As shown, an exemplary user interface 1800 that may be displayed on computing device 1602-1 may include a toggle switch 1802 that switches whether any individual is allowed (or not allowed at all) to identify when the user of computing device 1602-1 is in proximity to those individuals. Fig.18 As shown, when toggle switch 1802 is activated, button 1804 can be used to add different people, and corresponding toggle button 1808 can be used to turn authorization for existing people off and on.

[0188] Additionally, user interface 1800 may include respective buttons 1806 for each individual that enable a user to specify specific ones of his or her computing devices 1602 that are permitted to be detected by the individual's computing device 1602. Fig.18 In one embodiment, John Smith is allowed to know when all computing devices 1602 (including computing device 1602-1) are close to John Smith's computing device 1602. In another example, only Craig Sanchez is allowed to know when the user's tablet device (e.g., computing device 1602-2) is close to Craig Sanchez's computing device 1602. It should be noted that a finer level of granular control can be provided without departing from the scope of the present disclosure. For example, the user interface can also enable the user of computing device 1602-1 to select a specific computing device 1602 belonging to John Smith (e.g., only John Smith's mobile device), which is authorized to identify when the selected computing device 1602 belonging to the user of computing device 1602-1 is close. In some embodiments, this may involve requesting permission to view a list of computing devices 1602 belonging to John Smith, where then the user can select a specific computing device among the computing devices 1602 belonging to John Smith, which is authorized to detect the presence of the selected computing device 1602 belonging to the user of computing device 1602-1.

[0189] although Fig.18 Not shown in the example user interface, but it should be understood that additional user interface controls can be incorporated into the exemplary user interface to further enable management of people and their assigned permissions. For example, a user can swipe left on any user element representing a person to expose a button that enables a person to be deleted.

[0190] in addition, Fig.19An illustration of an exemplary user interface 1820 that may be used to identify an approximate location of a user based on the user's proximity to a known computing device 1602 is provided in accordance with some embodiments. Fig.19 As shown, an exemplary user interface 1820 that may be displayed on computing device 1602-1 may include corresponding toggle switches 1822 for computing devices 1602 known to computing device 1602-1. According to some embodiments, the computing devices 1602 listed in user interface 1820 may be filtered to include computing devices that are largely fixed, such as electronic peripherals including smart speakers, smart hubs, etc., so that the generalized location of other computing devices 1602 proximate to those computing devices 1602 can be understood. However, it is noted that any computing device 1602 associated with computing device 1602-1 and authorized to interact may be listed in user interface 1820.

[0191] According to some embodiments, when the toggle switch 1822 of the known computing device 1602 is switched to the active position, the computing device 1602-1 can be configured to display individuals associated with the computing device 1602 and in proximity to the known computing device 1602. For example, Fig.19 As shown, individuals "John Smith" and "Sarah Smith" are in proximity to computing device 1602 "Living Room Speakers", which is reflected within user interface 1820 by user interface element 1824. Fig.19 As shown, individual "Suzi Smith" is in proximity to computing device 1602 "Garage Smart Hub," which is reflected within user interface 1820 by user interface element 1826. Additional computing devices 1602 may be added to user interface 1820 using button 1828.

[0192] Additionally, it is noted that the permission / authorization techniques described herein may be implemented to ensure that user interface 1820 only displays information about individuals whose locations have been authorized by computing device 1602-1 (and its owner / user). Fig.19, John Smith, Sarah Smith, and Suzi Smith have permitted computing device 1602-1 (and its owner / user) to identify when those individuals are in proximity not only to computing device 1602-1, but also to other computing devices 1602 associated with computing device 1602-1, including a living room speaker and a garage smart hub. In this regard, when computing device 1602-1 is authorized to detect when John, Sarah, and Suzi Smith are in proximity to computing device 1602-1, computing device 1602-1 may obtain encryption keys 1608 associated with computing devices 1602 that are associated with those individuals. Computing device 1602-1 may then forward encryption keys 1608 to computing devices 1602 associated with computing device 1602-1 (i.e., the living room speaker and the garage smart hub), enabling those devices to detect when John, Sarah, and Suzi Smith are in proximity to the living room speaker and the garage smart hub.

[0193] It should also be noted that although the embodiments described herein generally discuss the sharing of WiFi information, the various computing devices described herein may be configured to share any form of information between each other, such as contact information, photos, videos, documents, files, etc., without departing from the scope of the present disclosure.

[0194] According to some embodiments, the embodiments described herein include additional techniques for filtering nearby / known computing devices based on the orientation of the computing device relative to other computing devices. It should be noted that the computing device may utilize any of the discovery techniques described herein to enable the computing device to identify one or more computing devices (if any) that are near and known to the computing device. Subsequently, the computing device may filter the one or more computing devices based on the orientation of the computing device relative to the one or more computing devices. It should be noted that the computing device may be configured to include any hardware that enables the computing device to identify its orientation relative to other computing devices, such as an ultra-wideband (UWB) component. However, it should be noted that the use of UWB hardware is merely exemplary, and any other hardware components (and / or combinations thereof) may be utilized to enable the computing device to make the same (or similar) orientation-based determinations.

[0195] In any case, the first step of an exemplary scenario of orientation-based filtering may involve a computing device that discovers that there are five different computing devices (e.g., computing devices belonging to Sarah Green, Herbert Williams, Ingrid Solomund, Rebecca Vortune, and Alyssa Ternola) near the computing device and known to the computing device. In short, it should be understood that the aforementioned users have "opted in" to participate in the proximity-based features described herein. In addition, it should be understood that users can easily opt in or opt out of any of the features described herein without departing from the scope of the present disclosure. For example, when any computing devices associated with the respective first and second users are close to each other, the user interface may prompt the first and second users to agree that the first and / or second users are notified. Subsequently, the first and / or second users may opt out of this capability so that when the computing devices associated with the respective first and second users are close to each other, the proximity-based features will not be triggered.

[0196] In any case, when the aforementioned computing device discovers five different computing devices, the computing device may generate a user interface that enables the user of the computing device to observe a list of nearby users. According to some embodiments, the user interface may include a user interface element that, when selected, causes the computing device to filter the list of nearby users based on the direction to which the computing device is pointed. Specifically, the filter enables the list of nearby users to be actively updated based on the current direction of the computing device to which the computing device is pointed relative to the nearby users. In addition, the user interface may include a user interface element that, when selected, causes the computing device to perform a specific action associated with at least one of the nearby users, such as sharing one or more files with nearby users, sending emails to nearby users, and the like.

[0197] According to some embodiments, the second step may involve the computing device updating the user interface in response to the user selecting an option to filter based on the orientation of the computing device. In one example, the computing device is oriented toward a computing device belonging to Ingrid Solomund, and the list of nearby users is updated accordingly to include only Ingrid Solomund. At this moment, the user of the computing device has the option of selecting Ingrid Solumund via a user interface element, and then causing the computing device to perform a specific action associated with Ingrid Solumund by selecting another user interface element.

[0198] In short, it is noted that various settings can be adjusted to provide intuitive and perceptible orientation-based functionality. In one example, the overall directional range can be extended to reduce the overall sensitivity of the computing device's orientation relative to other computing devices. Conversely, the overall directional range can be reduced to increase the overall sensitivity of the computing device's orientation relative to other computing devices. In another example, the distance threshold can be increased to enable the computing device to identify additional computing devices that might otherwise be ignored by the computing device. Conversely, the distance threshold can be reduced to prevent the computing device from detecting computing devices that are considered too far away to be of interest. It is noted that such configurations are merely exemplary, and any other configurations related to computing devices and their orientations relative to each other can be adjusted without departing from the scope of the present disclosure.

[0199] At the end of the second step, the user chooses not to perform any actions associated with Ingrid Solomund, but instead reorients the computing device toward the other individuals. This concept is obtained in the third step, in which the computing device is reoriented toward the computing devices of Rebecca Vortune and Alyssa Ternola. At this moment, the user of the computing device has the option of selecting Rebecca Vortune and / or Alyssa Ternola via a user interface element, and then causing the computing device to perform a specific action associated with these individuals by selecting another user interface element. Then, at the fourth step, the user of the computing device selects both Rebecca Vortune and Alyssa Ternola via a user interface element. The computing device may then perform actions associated with these individuals in response to the user selecting the user interface element (e.g., transferring files, sending emails, etc.).

[0200] Thus, the foregoing techniques illustrate exemplary scenarios according to some embodiments in which nearby / known computing devices may be filtered based on the orientation of the computing device relative to other computing devices.

[0201] FIG. 20A to FIG. 20C A sequence diagram of a technique for triggering a reminder on a computing device when one or more computing devices of a particular user are in proximity to the computing device according to some embodiments is shown. Fig. 20A As shown, the first step 2000 may involve the computing device 2002 displaying a user interface 2004 that enables parameters for a reminder to be entered into the computing device 2002. According to some embodiments, the user interface 2004 may include a subject field for the reminder, the subject field (e.g., Fig. 20A) has been assigned the string value "Congratulations on your retirement." Additionally, user interface 2004 may include user interface element 2005 that enables a reminder to be triggered based on satisfying a temporal condition (i.e., based on a date and time). Additionally, user interface 2004 may include user interface element 2006 that enables a reminder to be triggered based on satisfying a geographic proximity condition (i.e., based on computing device 2002 arriving at a particular area (e.g., a work location, a home location, a particular address, etc.). Additionally, user interface 2004 may include user interface element 2007 that enables a reminder to be triggered when computing device 2002 is in proximity to a nearby computing device belonging to a particular user. Additionally, user interface 2004 may include user interface element 2009 to set a reminder when all relevant parameters for the reminder have been established.

[0202] like Fig. 20A As shown, user interface element 2007 is selected, which causes additional user interface elements to be displayed within user interface 2004. Specifically, the additional user interface elements include user interface element 2008-1 that enables selection of one or more individuals, and user interface element 2008-2 that enables establishment of a distance threshold. Fig. 20B The second step 2010 shown in FIG. 2 involves computing device 2002 displaying user interface 2012 in response to selection of user interface element 2008-1, which enables selection of one or more individuals. Fig. 20B As shown, user interface 2012 can enable a user to search for an individual by name (e.g., in an address book accessible to computing device 2002). In addition, user interface 2012 can display a list of people nearby, which can be determined by computing device 2002 according to the discovery techniques set forth herein. In addition, user interface 2012 can display a list of contacts (e.g., those included in the above-mentioned address book). It should be noted that user interface 2012 is merely exemplary and should not be construed as limiting in any way. On the contrary, user interface 2012 may include additional contacts organized in any way for selection, for example, contact groups organized based on categories (e.g., "work team," "family," etc.).

[0203] In any case, the second step 2010 involves the selection 2014 of Caroline Tsing, which results in the execution of the third step 2020, such as Fig. 20C As shown. Fig. 20CAs shown, user interface 2004 is displayed and updated to reflect that Caroline Tsing has been selected as an individual such that any proximity to Caroline Tsing (specifically, any proximity between computing device 2002 (or an associated computing device) and any computing device associated with Caroline Tsing) should trigger an alert at computing device 2002 (or an associated computing device). Fig. 20C As shown, a distance threshold of thirty feet is associated with the reminder via user interface element 2008-2. Note that this distance threshold is exemplary, and any other distance threshold at any level of granularity may be established without departing from the scope of the present disclosure.

[0204] Finally, in Fig. 20C At the end of the third step 2020 in , a reminder is set via user interface element 2009. Thereafter, when any computing device associated with Caroline Tsing is within thirty feet of computing device 2002 (or an associated computing device), computing device 2002 (or an associated computing device) will trigger a reminder.

[0205] in addition, Fig.21 A conceptual diagram 2100 of techniques for grouping nearby computing devices for selection is shown in accordance with some embodiments. Fig.21 As shown, computing device 2102 may generate user interface 2104 that displays a list of nearby people, which may be determined by computing device 2102 based on the discovery techniques described herein. Fig.21 As shown, user interface 2104 may include user interface element 2106 to select all nearby people displayed within user interface 2104. This may be useful, for example, when a user of computing device 2102 is meeting with family, friends, co-workers, etc. and wants to perform some actions associated with those individuals (e.g., share one or more files with the individuals, send an email to the individuals, etc.) (via user interface element 2108).

[0206] It should be noted that additional grouping techniques may be implemented within user interface 2104 without departing from the scope of the present disclosure. Specifically, nearby people may be filtered into two or more subgroups based on commonalities. For example, an individual may participate in a work activity with his family and his colleagues, such that user interface 2104 displays (1) his nearby family members, and (2) his nearby colleagues. In this case, user interface 2104 may display nearby family members in a subgroup with a first corresponding "select all" option, and may also display nearby colleagues in a subgroup with a second corresponding "select all" option. In this regard, an individual may easily share information with related individuals, for example, sharing family pictures with all nearby family members, and sharing colleague pictures with all nearby colleagues.

[0207] In addition, it should be noted that, without departing from the scope of the present disclosure, the various hardware components described herein (e.g., Bluetooth, near field communication (NFC), WiFi, ultra-wideband (UWB) and / or cellular components) may be configured to implement various discovery technologies in a partial or complete manner. For example, any of the aforementioned components may be configured to implement a technology independent of a central processing unit included in a computing device. This configuration may enable the computing device to remain in a low power mode (e.g., a locked / sleep state) while continuing to enable discovery technologies to function. This method may bring considerable power savings because the central processing unit may remain in a low power state for as long as possible and then transition to a higher power state when appropriate. For example, when one or more radio components determine that there is a nearby / known computing device, the one or more radio components in the radio components may cause the central processing unit to enter a higher power state. Subsequently, the central processing unit may determine whether an action needs to be taken (e.g., displaying a reminder of proximity to a nearby / known computing device) and perform these actions. Subsequently, the central processing unit may return to a low power state (when appropriate), so that the radio components may continue to provide the discovery capabilities described herein.

[0208] As described above, one aspect of the present technology is to collect and use data obtained from various resources to improve the operating efficiency of computing devices. The present disclosure contemplates that, in some instances, these collected data may include personal information data that uniquely identifies or can be used to contact or locate a specific person. Such personal information data may include demographic data, location-based data, phone numbers, email addresses, twitter IDs, home addresses, data or records related to the user's health or fitness level (e.g., vital sign measurements, medication information, exercise information), date of birth, or any other identifying information or personal information.

[0209] The present disclosure recognizes that the use of such personal information data in the present technology can be used to benefit the user. For example, the personal information data can be used to improve the operating efficiency of the computing device. In addition, the present disclosure also anticipates other uses of the personal information data that benefit the user. For example, health and fitness data can be used to provide insights into the user's overall health or can be used as positive feedback to individuals who use technology to pursue health goals.

[0210] This disclosure envisions that entities responsible for collecting, analyzing, disclosing, transmitting, storing or otherwise using such personal information data will comply with established privacy policies and / or privacy practices. Specifically, such entities should implement and adhere to privacy policies and practices that are recognized as meeting or exceeding industry or government requirements for maintaining the privacy and security of personal information data. Such policies should be easily accessible to users and should be updated as the collection and / or use of data changes. Personal information from users should be collected for legitimate and reasonable purposes of the entity and not shared or sold outside of these legitimate uses. In addition, such collection / sharing should be performed after receiving informed consent from the user. In addition, such entities should consider taking any necessary steps to defend and secure access to such personal information data and ensure that others who have access to personal information data comply with their privacy policies and processes. In addition, such entities may subject themselves to third-party assessments to demonstrate their compliance with widely accepted privacy policies and practices. In addition, policies and practices should be adjusted to specific types of personal information data collected and / or accessed, and to applicable laws and standards including specific considerations of jurisdiction. For example, in the United States, the collection or access of certain health data may be governed by federal and / or state laws, such as the Health Insurance Portability and Accountability Act (HIPAA), while health data in other countries may be subject to other regulations and policies and should be handled accordingly. Therefore, different privacy practices should be maintained in each country for different types of personal data.

[0211] Regardless of the foregoing, the present disclosure also contemplates implementation schemes in which users selectively block the use or access of personal information data. That is, the present disclosure contemplates providing hardware elements and / or software elements to prevent or block access to such personal information data. For example, the present technology may be configured to allow users to “opt in” or “opt out” of participating in the collection of personal information data at any time during or after registration for a service. In addition to providing “opt in” and “opt out” options, the present disclosure contemplates providing notifications related to access or use of personal information. For example, a user may be notified that their personal information data will be accessed when downloading an application, and then be reminded again just before the personal information data is accessed by the application.

[0212] In addition, it is an object of the present disclosure that personal information data should be managed and processed to minimize the risk of unintentional or unauthorized access or use. Risks can be minimized by limiting data collection and deleting data once it is no longer needed. In addition, and when applicable, including in certain health-related applications, data de-identification can be used to protect the privacy of users. De-identification can be facilitated by removing specific identifiers (e.g., date of birth, etc.), controlling the amount or specificity of stored data (e.g., collecting location data at the city level rather than at the address level), controlling how data is stored (e.g., aggregating data between users), and / or other methods when appropriate.

[0213] Thus, while the present disclosure broadly covers the use of personal information data to implement one or more of the various disclosed embodiments, the present disclosure also contemplates that various embodiments may be implemented without access to such personal information data. That is, various embodiments of the present technology will not fail to function properly due to the lack of all or a portion of such personal information data. For example, the operating efficiency of a computing device may be improved based on non-personal information data, an absolute minimum amount of personal information, other non-personal information available, or publicly available information.

[0214] The various aspects, embodiments, specific implementations or features of the embodiments may be used individually or in any combination. The various aspects of the embodiments may be implemented by software, hardware, or a combination of hardware and software. The embodiments may also be implemented as computer readable code on a computer readable medium for controlling production operations, or as computer readable code on a computer readable medium for controlling a production line. A computer readable medium is any data storage device that can store data, which data can then be read by a computer system. Examples of computer readable media include read-only memory, random access memory, CD-ROM, HDD, DVD, magnetic tape, and optical data storage devices. Computer readable media may also be distributed in a network-coupled computer system so that the computer readable code is stored and executed in a distributed manner.

[0215] For the purpose of illustration, the foregoing description uses specific nomenclature to provide a thorough understanding of the embodiments. However, it will be apparent to those skilled in the art that the embodiments can be practiced without specific details. Therefore, the foregoing description of specific embodiments is presented for the purpose of illustration and description. The foregoing description is not intended to be exhaustive or to limit the embodiments described to the precise form disclosed. It will be apparent to those of ordinary skill in the art that, in view of the above teachings, many modifications and variations are feasible.

Claims

1. A method for securely identifying nearby related computing devices, the method comprising: At a first computing device that manages a plurality of known encryption keys: Receive a notification packet from a second computing device, the notification packet comprising: (i) a network address associated with the second computing device, and (ii) a hash value calculated using the network address and an encryption key associated with the second computing device; and For each known encryption key of the plurality of known encryption keys: calculating a temporary hash value using the network address and the known encryption key, and In response to identifying that the temporary hash value matches the hash value: Operations associated with the second computing device are performed.

2. The method of claim 1, wherein each of the plurality of known encryption keys is an encryption key associated with a corresponding computing device, and each known encryption key is associated with a computing device identifier (ID) unique to the corresponding computing device.

3. The method of claim 2, wherein each computing device ID is associated with a personal identifier ID that is unique to a particular individual.

4. A method according to claim 3, wherein each of the multiple known encryption keys is associated with a priority value, and the priority value is initially based on the type of relationship between the individual associated with the first computing device and the specific individual linked to the known encryption key.

5. The method according to claim 4, further comprising: In response to identifying that the temporary hash value matches the hash value: The ordering of the plurality of known encryption keys is updated so that when other temporary hash values ​​are generated in response to receiving other announcement packets, the known encryption keys used to calculate the temporary hash values ​​are prioritized.

6. The method according to claim 1, further comprising: The network address is added to a cache to indicate that the second computing device has been recognized by the first computing device, wherein the network address is removed from the cache when: after a threshold period of inactivity is met; receiving an updated encryption key as a replacement for the encryption key associated with the second computing device; or Some combination of the above.

7. The method according to claim 6, further comprising: receiving a supplemental announcement data packet from the second computing device, the supplemental announcement data packet comprising: (i) the network address associated with the second computing device, and (ii) the hash value calculated using the network address and the encryption key associated with the second computing device; and In response to determining that the network address is included in the cache: The operations associated with the second computing device are performed.

8. The method of claim 6, wherein updating the encryption key associated with the second computing device comprises: receiving the updated encryption key; removing from the plurality of known encryption keys the known encryption key that corresponds to an encryption key associated with the second computing device; as well as The updated encryption key is added as a new known encryption key to the plurality of known encryption keys.

9. The method of claim 1, wherein the network address is periodically updated based on a threshold amount of time.

10. The method of claim 1, wherein the advertising data packet is transmitted using Bluetooth technology, and the encryption key associated with the second computing device is different from an identity resolution key IRK utilized by Bluetooth hardware included in the second computing device.

11. A method for enabling computing devices to exchange encryption keys with each other via a server computing device, the method comprising: At the server computing device: A data item is received from a first computing device, the data item comprising: (i) a computing device identifier ID unique to the first computing device, (ii) a personal identifier (ID) unique to the individual associated with the first computing device, and (iii) an encryption key associated with the first computing device; identifying at least one computing device related to the first computing device based on one or more of the computing device ID or the personal ID; and The data item is provided to the at least one computing device, wherein the at least one computing device stores the encryption key as a known encryption key linked to the computing device ID and the personal ID.

12. The method of claim 11, wherein the individual associated with the first computing device is also associated with the at least one computing device.

13. The method according to claim 11, further comprising: Prior to receiving the data item from the first computing device: identifying (i) the individual associated with the first computing device is part of a family account, and identifying (ii) the individual associated with the at least one computing device is also part of the family account; and A request is issued to the first computing device to provide the data item.

14. The method according to claim 13, further comprising: After providing the data item to the at least one computing device: receiving an indication that the individual associated with the first computing device is no longer part of the family account; and The at least one computing device is caused to delete all information created in response to receiving the data item.

15. The method according to claim 11, further comprising: After providing the data item to the at least one computing device: receiving an updated data item from the first computing device, the updated data item comprising: (i) the computing device ID that is unique to the first computing device, (ii) the personal ID unique to the individual associated with the first computing device, and (iii) an updated encryption key associated with the first computing device; identifying that the at least one computing device is related to the first computing device based on one or more of the computing device ID or the personal ID; and The data item is provided to the at least one computing device, wherein the at least one computing device replaces the encryption key with the updated encryption key as a known encryption key linked to the computing device ID and the personal ID.

16. The method of claim 11, wherein identifying at least one computing device related to the first computing device is further based on one or more of: a frequency of interactions between the individual associated with the first computing device and an individual associated with the at least one computing device, wherein the interactions include one or more of phone calls, emails, text messages, chats, or appointments; or Whether the first computing device has allowed the at least one computing device to access the geographic location of the first computing device.

17. A method for enabling computing devices to directly exchange encryption keys with each other, the method comprising: At the first computing device: identifying a condition that enables a second computing device to know when the first computing device is in proximity to the second computing device; A data item is provided to the second computing device, the data item comprising: (i) a computing device identifier ID unique to the first computing device, (ii) a personal identifier (ID) unique to the individual associated with the first computing device, and (iii) an encryption key associated with the first computing device; and Periodically generate a notification data packet, the notification data packet including: (i) a network address associated with the first computing device, and (ii) a hash value calculated using the network address and the encryption key associated with the first computing device.

18. The method of claim 17, wherein the condition is triggered based on one or more of frequencies of interactions occurring between the individual associated with the first computing device and the individual associated with the second computing device, and the interactions comprise one or more of a phone call, an email, a text message, a chat, or an appointment.

19. The method according to claim 18, further comprising: Prior to providing the data item to the second computing device: displaying at the first computing device an indication that the second computing device will become capable of recognizing when the first computing device is within proximity of the second computing device; as well as Approval is received from a user of the first computing device.

20. The method of claim 17, wherein the data item further comprises (iv) a public key associated with the first computing device, wherein the public key is usable by the second computing device to decrypt information (i) transmitted by the first computing device and (ii) encrypted using a matching private key possessed by the first computing device.

21. The method of claim 17, wherein the data item is associated with an expiration policy, the expiration policy causing the second computing device to delete all information associated with the data item when the expiration policy is satisfied.

22. The method of claim 17, wherein the first computing device and the second computing device communicate using one or more of the following communication technologies: Bluetooth; Near Field Communication NFC; WiFi; Ultra-wideband UWB; Honeycomb; or Some combination of the above.

Citation Information

Patent Citations

  • WIFI access management system and methods of operation thereof

    CN107850996A

  • System and Method for Securing an Electronic Communication

    US20100325423A1