PATENT DOCUMENT

Publication Number: US-9654479-B2
Application Number: US-201414183244-A
Country: US
Kind Code: B2

Title: Private discovery of electronic devices

Abstract:
The disclosed embodiments provide a system that facilitates communication between a first electronic device and a second electronic device. During operation, the system uses the first electronic device to create a discovery request comprising a first group identifier (ID) associated with the first electronic device, wherein using the first electronic device to create the discovery request involves encrypting the first group ID and including the encrypted first group ID in the discovery request. Next, the system transmits the discovery request to the second electronic device, wherein the discovery request is used by the second electronic device to generate a discovery response to the discovery request.

Claims:
What is claimed is: 
     
       1. A computer-implemented method comprising:
 creating a discovery request comprising:
 encrypting a first group identifier (ID), wherein the first group ID is associated with at least a first electronic device: and 
 including at least the encrypted first group II) in the discovery request; transmitting the discovery request; 
 
 receiving a discovery response from a second electronic device; 
 determining whether when the discovery response comprises a second group ID; 
 verifying when the second group ID is associated with the first group ID; and 
 in response to the discovery response not including the second group ID, using an application on the first electronic device to verify that the second electronic device is associated with at least the first group ID. 
 
     
     
       2. The computer-implemented method of  claim 1 , wherein the first group ID and the second group ID are associated with an entity. 
     
     
       3. The computer-implemented method of  claim 1 , wherein the encrypting the first group ID comprises:
 adding a salt to the first group ID; or 
 using a first hash function to calculate a first hash value from the first group ID. 
 
     
     
       4. The computer-implemented method of  claim 3 , further comprising:
 varying the first hash value based at least in part on a number of times the first hash function has been used by the first electronic device. 
 
     
     
       5. The computer-implemented method of  claim 1 , wherein the verifying comprises:
 using a second hash function to calculate a second hash value from the first group ID; and 
 comparing the second hash value with the second group ID wherein the second group ID is encrypted. 
 
     
     
       6. The computer-implemented method of  claim 1 , wherein the first group ID comprises:
 a network address, a device name, a physical location, a device type, a service, an email address or an organization ID. 
 
     
     
       7. The computer-implemented method of  claim 1 , further comprising:
 using a service associated with the discovery response on the second electronic device. 
 
     
     
       8. The computer-implemented method of  claim 7 , wherein the service comprises a file transfer service, a streaming media service, a document collaboration service, a printing service, or a desktop sharing service. 
     
     
       9. The computer-implemented method of  claim 3 , further comprising:
 varying the first hash value based at least in part on a time stamp associated with the discovery request or a time stamp associated with the discovery response. 
 
     
     
       10. An electronic device, comprising:
 a memory; and 
 a processor coupled to the memory, wherein the processor is configured to:
 create a discovery request comprising a first group identifier (ID) associated with the electronic device; 
 transmit the discovery request; 
 receive a discovery response from another electronic device: 
 determine whether the discovery response comprises a second group ID; 
 verify when the second group ID is associated with the first group ID; and 
 in response to the discovery response not including the second group ID, use an application on the electronic device to verify that the another electronic device is associated with at least the first group ID. 
 
 
     
     
       11. The electronic device of  claim 10 , wherein the first group ID and the second group ID are associated with an entity. 
     
     
       12. The electronic device of  claim 10 , wherein the processor is further configured to encrypt the first group ID, wherein, to encrypt, the processor is configured to:
 add a salt to the first group ID; or 
 use a first hash function to calculate a first hash value from the first, group ID. 
 
     
     
       13. The electronic device of  claim 12 , wherein the processor is further configured to:
 vary the first hash value based at least in part on a number of times the first hash function has been used by the electronic device. 
 
     
     
       14. The electronic device of  claim 12 , wherein to verify, the processor is configured to:
 use a second hash function to calculate a second hash value from the first group ID; and 
 compare the second hash value with the second group ID, wherein the second group ID is encrypted. 
 
     
     
       15. The electronic device of  claim 10 , wherein the first group ID comprises:
 a network address, a device name, a physical location, device type, a service, an email address, or an organization ID. 
 
     
     
       16. The electronic device of  claim 10 , wherein the processor is further configured to:
 use a service associated with the discovery response on the another electronic device. 
 
     
     
       17. The electronic device of  claim 16 , wherein the service comprises a file transfer service, a streaming media service, a document collaboration service, a printing service, or a desktop sharing service. 
     
     
       18. The electronic device of  claim 12 , wherein the processor is further configured to:
 vary the first hash value based at least in part on a time stamp associated with the discovery request or a time stamp associated with the discovery response. 
 
     
     
       19. A non-transitory computer-readable medium having instructions stored therein, which when executed by a computer cause the computer to perform operations, the operations comprising:
 creating a first hash value based at least in part on a first group identifier (ID) associated with at least an electronic device; 
 including at least the first hash value in a discovery request; 
 transmitting the discovery request; 
 receiving a discovery response from another electronic device; 
 determining whether the discovery response comprises a second group ID; 
 verifying when the second group ID is associated with the first group ID; and 
 in response to the discovery response not including the second group ID, using an application on the first electronic device to verify that the second electronic device is associated with at least the first group ID. 
 
     
     
       20. The non-transitory computer-readable medium of  claim 19 , wherein the first group ID and the second group ID are associated with an entity. 
     
     
       21. The non-transitory computer-readable medium of  claim 19 , wherein, the creating the first hash value the operation comprises:
 adding a salt to the first group ID. 
 
     
     
       22. The non-transitory computer-readable medium of  claim 19 , wherein the operations further comprise:
 varying the first hash value based at least in part on a number of times the first hash function has been used by the electronic device. 
 
     
     
       23. The non-transitory computer-readable medium of  claim 19 , wherein, the verifying operation comprises:
 using a second hash function to calculate a second hash value from the first group ID; and 
 comparing the second hash value with the second group ID, wherein the second group ID is encrypted. 
 
     
     
       24. The non-transitory computer-readable medium of  claim 19 , wherein the first group ID comprises:
 a network address, a device name, a physical location, a device type, a service, an email address, or an organization ID. 
 
     
     
       25. The non-transitory computer-readable medium of  claim 19 , further comprising:
 using a service associated with the discovery response on the another electronic device. 
 
     
     
       26. The non-transitory computer-readable medium of  claim 25 , wherein the service comprises a file transfer service, a streaming media service, a document collaboration service, a printing service, or a desktop sharing service. 
     
     
       27. The non-transitory computer-readable medium of  claim 19 , further comprising:
 varying the first hash value based at least in part on a time stamp associated with the discovery request or a time stamp associated with the discovery response.

Description:
RELATED APPLICATION 
     This application claims priority under 35 U.S.C. §119 to U.S. Provisional Application No. 61/770,793, entitled “Selective Discovery of Electronic Devices,” and filed on 28 Feb. 2013, by Mohan Parthasarathy and Terrin D. Eager, the contents of which are herein incorporated by reference in their entirety. 
    
    
     BACKGROUND 
     Field 
     The disclosed embodiments relate to service discovery on electronic devices. More specifically, the disclosed embodiments relate to techniques for performing private discovery of electronic devices. 
     Related Art 
     Recent improvements in computing power and wireless networking technology have significantly increased the capabilities of electronic devices. For example, laptop computers, tablet computers, portable media players, smartphones, digital media receivers, video game consoles, and/or other modern computing devices are typically equipped with WiFi capabilities that allow the computing devices to retrieve webpages, stream audio and/or video, share desktops and/or user interfaces (UIs), and/or transfer files wirelessly among one another. 
     Such expansion of computing and networking capabilities has resulted in an increase in the computing and/or networking options available to users of the electronic devices. However, the abundance of options may increase overhead associated with discovery and/or selection of the options. For example, an electronic device may perform service discovery by querying other electronic devices on the same local network for one or more services offered by the other electronic devices. The electronic device may then receive a response from each electronic device that offers at least one of the queried services. As a result, the electronic device may be flooded with a large number of responses, only some of which may be interesting to the electronic device. In addition, processing of each response on the electronic device may consume processor, network, and/or battery resources on the electronic device and negatively impact use of the electronic device. 
     Hence, use of electronic devices may be facilitated by mechanisms for filtering options and/or reducing overhead associated with performing service discovery on the electronic devices. 
     SUMMARY 
     The disclosed embodiments provide a system that facilitates communication between a first electronic device and a second electronic device. During operation, the system uses the first electronic device to create a discovery request containing a first group identifier (ID) associated with the first electronic device, wherein using the first electronic device to create the discovery request involves encrypting the first group ID and including the encrypted first group ID in the discovery request. Next, the system transmits the discovery request to the second electronic device, wherein the discovery request is used by the second electronic device to generate a discovery response to the discovery request. 
     In some embodiments, the first group ID represents an entity owning the first electronic device. 
     In some embodiments, the system also receives the discovery response from the second electronic device. If the discovery response includes a second group ID associated with the second electronic device, the system verifies a match between the first and second group IDs. If the discovery response omits the second group ID, the system uses an application on the first electronic device to verify an association of the second electronic device with the first group ID. For example, the second group ID may be omitted from an unsolicited service advertisement from the second electronic device. 
     In some embodiments, the system also uses the second electronic device to receive the discovery request from the first electronic device. Next, the system determines an association of the second electronic device with the first group ID from the discovery request. If the association exists, the system creates the discovery response containing the first group ID and transmits the discovery response to the first electronic device. If the association does not exist, the system omits the discovery response to the first electronic device. 
     In some embodiments, determining the association of the second electronic device with the first group ID involves obtaining a second group ID associated with the second electronic device, and using a first hash function to calculate a first hash value from the second group ID. Parameters for the first hash function may be extracted from the discovery request. If the first hash value matches the encrypted first group ID, the association is verified. If the first hash value does not match the encrypted first group ID, a lack of the association is verified. 
     In some embodiments, creating the discovery response containing the first group ID involves at least one of:
         (i) adding a salt to the second group ID;   (ii) using a second hash function to calculate a second hash value from the second group ID including the added salt; and   (iii) including the second hash value in the discovery response.       

     In some embodiments, encrypting the first group ID involves adding a salt to the first group ID and then using a first hash function to calculate a first hash value from the first group ID including the added salt. 
     In some embodiments, using the first hash function to calculate the first hash value from the first group ID involves varying the first hash value based on a use of the first hash function by the first electronic device. 
     In some embodiments, verifying the match between the first and second group IDs involves using a second hash function to calculate a second hash value from the first group ID, and comparing the second hash value with the second group ID, wherein the second group ID is encrypted. 
     In some embodiments, the first group ID is associated with at least one of a user, a set of users, and an organization. 
    
    
     
       BRIEF DESCRIPTION OF THE FIGURES 
         FIG. 1  shows a schematic of a system in accordance with the disclosed embodiments. 
         FIG. 2  shows a system for facilitating communication between a first electronic device and a second electronic device in accordance with the disclosed embodiments. 
         FIG. 3  shows an exemplary timeline of interaction between a set of electronic devices in accordance with the disclosed embodiments. 
         FIG. 4  shows an exemplary timeline of interaction between a set of electronic devices in accordance with the disclosed embodiments. 
         FIG. 5  shows a flowchart illustrating the process of facilitating communication with a second electronic device from a first electronic device in accordance with the disclosed embodiments. 
         FIG. 6  shows a flowchart illustrating the process of facilitating communication with a first electronic device from a second electronic device in accordance with the disclosed embodiments. 
         FIG. 7  shows a computer system in accordance with the disclosed embodiments. 
     
    
    
     In the figures, like reference numerals refer to the same figure elements. 
     DETAILED DESCRIPTION 
     The following description is presented to enable any person skilled in the art to make and use the embodiments, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present disclosure. Thus, the present invention is not limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein. 
     The data structures and code described in this detailed description are typically stored on a computer-readable storage medium, which may be any device or medium that can store code and/or data for use by a computer system. The computer-readable storage medium includes, but is not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs), DVDs (digital versatile discs or digital video discs), or other media capable of storing code and/or data now known or later developed. 
     The methods and processes described in the detailed description section can be embodied as code and/or data, which can be stored in a computer-readable storage medium as described above. When a computer system reads and executes the code and/or data stored on the computer-readable storage medium, the computer system performs the methods and processes embodied as data structures and code and stored within the computer-readable storage medium. 
     Furthermore, methods and processes described herein can be included in hardware modules or apparatus. These modules or apparatus may include, but are not limited to, an application-specific integrated circuit (ASIC) chip, a field-programmable gate array (FPGA), a dedicated or shared processor that executes a particular software module or a piece of code at a particular time, and/or other programmable-logic devices now known or later developed. When the hardware modules or apparatus are activated, they perform the methods and processes included within them. 
     The disclosed embodiments provide a method and system for facilitating communication between electronic devices. As shown in  FIG. 1 , a number of electronic devices  108 - 114  are connected to a network  102  through network links  104 - 106  provided by devices such as wireless access points, cellular towers, and/or routers. Electronic devices  108 - 114  may include personal computers, laptop computers, tablet computers, mobile phones, portable media players, digital media receivers, video game consoles, printers, scanners, and/or other network-enabled electronic devices. Network  102  may include a local area network (LAN), wide area network (WAN), personal area network (PAN), virtual private network, intranet, mobile phone network (e.g., a cellular network), WiFi network, Ethernet network, and/or other type of network that facilitates communication among electronic devices (e.g., electronic devices  108 - 114 ) connected to network  102 . 
     Electronic devices  108 - 114  may communicate with one another and/or with other electronic devices or servers through network  102 . For example, electronic device  110  may use a discovery protocol such as Bonjour (Bonjour™ is a registered trademark of Apple Inc.) and/or Multicast Domain Name System (mDNS) to advertise services on electronic device  110  to electronic device  112  and/or other electronic devices on network  102 . In turn, electronic device  112  may use the discovery protocol and network  102  to discover (e.g., detect) the services on electronic device  110 . Finally, electronic device  112  may use the services by connecting to electronic device  110  through network  102  and accessing the services. For example, electronic device  112  may use the discovery protocol and network  102  to access services for transferring files, streaming media, printing, collaborating on documents, and/or sharing desktops on electronic device  110 . 
     However, overhead associated with discovery of services on electronic devices  108 - 114  may increase with the number of electronic devices  108 - 114  on network  102 . For example, a discovery request from one electronic device to discover one or more services on network  102  may result in discovery responses from thousands of other electronic devices if network  102  is a large LAN. During creation, transmission, and processing of the discovery responses, significant processor, network, and/or battery resources may be consumed by the querying electronic device and/or the responding electronic devices. In addition, the large number of responses may prevent a user of the querying electronic device from easily identifying a relevant subset of the responding electronic devices providing the service(s). 
     In one or more embodiments, electronic devices  108 - 114  include functionality to perform private discovery of services among one another. As shown in  FIG. 2 , a set of electronic devices  202 - 204  may be connected through network  102 . To enable use of a service  226  provided by an application  222  on electronic device  202  by an application  224  on electronic device  204 , electronic device  202  may advertise service  226  through a discovery protocol  234  such as Bonjour and/or mDNS. In turn, electronic device  204  may discover and use service  226  through discovery protocol  234 . 
     More specifically, a discovery apparatus  208  on electronic device  202  may receive an advertising request for service  226  from application  222 . In response to the advertising request, discovery apparatus  208  and/or a communication apparatus  212  on electronic device  202  may enable the detection of service  226  by other electronic devices (e.g., electronic device  204 ) in proximity to electronic device  202 . For example, discovery apparatus  208  and/or communication apparatus  212  may publish service  226  by registering a link-local Internet Protocol (IP) address of electronic device  202  and a name of service  226  with network  102 . 
     Next, a discovery apparatus  210  and/or a communication apparatus  214  on electronic device  204  may discover service  226  by transmitting a discovery request  218  for service  226  to nearby electronic devices, including electronic device  202 . In response to discovery request  218 , discovery apparatus  208  and/or communication apparatus  212  may generate a discovery response  220  to discovery request  218 . Discovery response  220  may include data associated with service  226 . For example, discovery response  220  may include a service type for service  226 , a unique name for service  226  and/or electronic device  202 , and/or other information that allows electronic device  204  to sufficiently discover service  226 . Discovery apparatus  208  and/or communication apparatus  212  may then complete discovery of service  226  by electronic device  204  by transmitting discovery response  220  to electronic device  204 . 
     Once a service (e.g., service  226 ) is discovered by an electronic device (e.g., electronic device  204 ), the service may be used by the electronic device. For example, communication apparatus  214  may use the unique name for service  226  from discovery response  220  to perform a Domain Name System (DNS) lookup of the network address, port number, and/or other configuration information for accessing service  226  on electronic device  202 . Alternatively, communication apparatus  214  may obtain the configuration information directly from discovery response  220 . Communication apparatus  214  may subsequently use the configuration information to connect to electronic device  202  through network  102  and/or a peer-to-peer connection  228  with electronic device  202 , and electronic device  204  may use service  226  through network  102  and/or peer-to-peer connection  228 . 
     To reduce overhead associated with performing service discovery on network  102 , electronic devices  202 - 204  may use one or more group identifiers (IDs) (e.g., group IDs  230 - 232 ) to filter the generation and/or transmission of discovery responses (e.g., discovery response  220 ) to discovery requests (e.g., discovery request  218 ). In particular, discovery apparatus  210  may include a first group ID  230  associated with electronic device  204  in discovery request  218 . Group ID  230  may represent a user, a group of users, and/or an organization associated with electronic device  204 . For example, group ID  230  may be a user ID and/or email address for a user of electronic device  204 , a unique group name of a group of users authorized to use electronic device  204 , a physical location associated with electronic device  204  and/or nearby electronic devices, and/or a unique organization name of an organization under which electronic device  204  is registered. In other words, group ID  230  may represent an entity (e.g., user, group, organization, etc.) owning electronic device  204 . Alternatively, group ID  230  may identify other attributes associated with electronic device  204 , such as the device type of electronic device  204  (e.g., mobile phone, tablet computer, personal computer, printer, display, etc.) and/or one or more services provided by electronic device  204 . 
     Next, discovery apparatus  210  and/or communication apparatus  214  may transmit discovery request  218  to electronic device  202 , and discovery apparatus  208  may generate or omit discovery response  220  based on the association of electronic device  202  with group ID  230 . If an association between electronic device  202  and group ID  230  exists, discovery apparatus  208  and/or communication apparatus  212  may include a second group ID  232  indicating the association in discovery response  220  and transmit discovery response  220  to electronic device  204 . For example, discovery apparatus  208  and/or communication apparatus  212  may provide discovery response  220  if electronic device  202  is associated with the same user, group of users, organization, service, device type, and/or physical location as electronic device  204 . If the association does not exist, discovery apparatus  208  and/or communication apparatus  212  may omit generation and/or transmission of discovery response  220 . Electronic devices  202 - 204  may thus reduce network traffic and/or processing associated with discovering service  226  by restricting the network traffic and/or processing to only that traffic and/or processing associated with electronic devices that offer service  226  and are associated with group ID  230 . 
     Electronic devices  202 - 204  may additionally protect the confidentiality of group IDs  230 - 232  and/or the association of group IDs  230 - 232  with electronic devices  202 - 204  by encrypting and/or otherwise obscuring group IDs  230 - 232  in discovery request  218  and discovery response  220 . Prior to transmitting discovery request  218 , discovery apparatus  210  may encrypt group ID  230  by calculating a first hash value from group ID  230  (possibly with an added salt) using a first hash function. Discovery apparatus  210  and/or communication apparatus  214  may then include the first hash value as an encrypted representation of group ID  230  in discovery request  218 . If a salt was added to group ID  230  prior to encrypting the group ID  230 , discovery apparatus  210  and/or communication apparatus  214  may also include the salt, unencrypted, in discovery request  218 . Discovery apparatus  210  and/or communication apparatus  214  may then and transmit discovery request  218  over network  102 . 
     Upon receiving discovery request  218 , discovery apparatus  208  may determine any association of electronic device  202  with the encrypted group ID  230  by obtaining a second group ID  232  associated with electronic device  202  and using the first hash function to calculate a hash value from group ID  232 . If a salt is included in discovery request  218 , discovery apparatus  208  may add the salt to group ID  232  prior to calculating the hash value. If the hash value matches the encrypted group ID  230  (e.g., the first hash value), discovery apparatus  208  may verify the association. If the hash value does not match the encrypted group ID  230 , discovery apparatus  208  may verify a lack of the association. 
     If the association is verified, discovery apparatus  208  may encrypt group ID  232  by using a second hash function to calculate a second hash value from group ID  232  (possibly with an added salt). Discovery apparatus  208  and/or communication apparatus  212  may include the second hash value as an encrypted representation of group ID  232  in discovery response  220 . If a salt was added to group ID  232  prior to encrypting the second group ID, discovery apparatus  208  and/or communication apparatus  212  may also include the salt, unencrypted, in discovery response  220 . Discovery apparatus  208  and/or communication apparatus  212  may then transmit discovery response  220  over network  102  to electronic device  204 . 
     After discovery response  220  is received by electronic device  204 , discovery apparatus  210  may verify a match between group IDs  230 - 232  by applying the second hash function to group ID  230  to obtain a hash value and comparing the hash value to the encrypted group ID  232  in discovery response  220 . Any salt added to group ID  232  prior to encryption and/or hash parameters for the second hash function may be extracted from discovery response  204 . If the hash value matches the encrypted group ID  232 , discovery apparatus  210  may verify the match and enable use of service  226  by application  224  and/or electronic device  204 . If the hash value does not match the encrypted group ID  232 , discovery apparatus  210  may determine that group IDs  230 - 232  do not match and omit service  226  and/or electronic device  202  from a list of discovered services matching discovery request  218 . 
     To further secure transmission of group IDs  230 - 232 , electronic devices  202 - 204  may vary the first and/or second hash values used to encrypt group IDs  230 - 232  in discovery request  218  and discovery response  220  based on uses of the hash function(s) by electronic devices  202 - 204 . For example, electronic devices  202 - 204  may vary the first and/or second hash values and/or salts associated with the hash function(s) based on the number of times the hash function(s) have been used, timestamps associated with discovery request  218  and/or discovery response  220 , and/or other properties associated with transmission and/or use of the hash function(s) and/or hash values. 
     Finally, electronic devices  202 - 204  may include functionality to manage discovery requests and/or discovery responses from other electronic devices that lack the ability to perform selective discovery of services using group IDs  230 - 232 . For example, electronic devices  202 - 204  may implement a newer version of discovery protocol  234  that includes support for selective discovery of services, while the other electronic devices may implement an older version of discovery protocol  234  that lacks such support. As a result, the other electronic devices may transmit discovery requests and/or discovery responses that lack group IDs and respond to discovery requests even if the other electronic devices are not associated with group IDs in the discovery requests. 
     To facilitate backwards compatibility with the other electronic devices, electronic device  204  may provide discovery responses to discovery request  218  that do not include group IDs to application  224 . Application  224  may determine the relevance of each discovery response to discovery request  218  and/or group ID  230  by examining other information included in the discovery response. For example, application  224  may determine an association of the electronic device from which the discovery response was received with group ID  230  based on a network address, username, device name, and/or other information in the discovery response. 
     Similarly, electronic device  202  may transmit discovery responses that specify group ID  232  for all discovery requests for service  226  that do not include group IDs. Because the electronic devices from which the discovery requests were transmitted may not understand the significance of group ID  232 , the discovery responses may be validated by applications on the electronic devices using other information in the discovery responses. On the other hand, the discovery responses may also be multicast over network  102  and received by one or more electronic devices with the ability to utilize group ID  232  in service discovery. In turn, the electronic device(s) may filter use of service  226  and/or other services on electronic device  202  based on group ID  232  and/or other group IDs associated with electronic device  202  in the discovery responses. Service discovery between devices that include and/or lack the capability to understand group IDs is discussed in further detail below with respect to  FIGS. 3-4 . 
     Consequently, the system of  FIG. 2  may reduce overhead associated with performing service discovery without compromising the identities of users, groups, and/or organizations associated with electronic devices  202 - 204 . More specifically, the selective generation and transmission of discovery responses based on group IDs included in discovery requests may reduce network traffic and/or processing associated with performing service discovery among large numbers of electronic devices. 
     In addition, the use and/or varying of hash values and/or salts in encrypting group IDs in the discovery requests and responses may enable secure verification of common group IDs among a set of electronic devices without revealing the group IDs to electronic devices that are not associated with the group IDs. In other words, the system of  FIG. 2  may provide private discovery of the electronic devices in a way that is anonymous (e.g., a third-party eavesdropper cannot tell who is performing the query), private (e.g., a third party eavesdropper cannot tell what is sought), and non-trackable (e.g., a third-party eavesdropper cannot tell if two queries are for the same service or for different services). 
     Those skilled in the art will appreciate that the system of  FIG. 2  may be implemented in a variety of ways. First, discovery apparatuses  208 - 210  and communication apparatuses  212 - 214  on each electronic device  202 - 204  may be provided by the same software and/or hardware component, or discovery apparatuses  208 - 210  and communication apparatuses  212 - 214  may execute independently from one another. For example, discovery apparatuses  208 - 210  and communication apparatuses  212 - 214  may be implemented using different combinations of an application processor, a baseband processor, a multi-core processor, a single-core processor, an operating system kernel, a standalone application, and/or a driver. 
     Second, electronic devices  202 - 204  may use various techniques to perform service discovery and/or exchange group IDs  230 - 232 . For example, electronic devices  202 - 204  may use a number of wired and/or wireless networking mechanisms to transmit discovery requests (e.g., discovery request  218 ) and discovery responses (e.g., discovery response  220 ) to one another. Along the same lines, electronic devices  202 - 204  may use a SHA-1 hash function to encrypt group IDs  230 - 232  and include group IDs  230 - 232  in NSEC3 records within the discovery requests and/or discovery responses to conform to the use of Domain Name System (DNS) by discovery protocol  234 . Alternatively, electronic devices  202 - 204  may use other types of hash functions and/or data elements to provide group IDs  230 - 232  in the discovery requests and/or discovery responses. For example, electronic devices  202 - 204  may use symmetric-key cryptography, public-key cryptography, and/or other types of cryptographic techniques may be used to protect and verify group IDs  230 - 232  during transmission of discovery requests and/or discovery responses between electronic device  202 - 204 . 
       FIG. 3  shows an exemplary timeline of interaction between a set of electronic devices  302 - 304  in accordance with the disclosed embodiments. More specifically,  FIG. 3  shows a timeline of service discovery operations between electronic devices  302 - 304  with the capability to use group IDs  306 - 308  associated with electronic devices  302 - 304  in performing service discovery. As shown in  FIG. 3 , electronic device  302  may include group ID  306  for electronic device  302  in a discovery request  314  as a first hash value  310  calculated from group ID  306  using a first hash function. Next, electronic device  302  may transmit discovery request  314  to electronic device  304  to discover services available on electronic device  304 , if electronic device  304  is also associated with group ID  306  (e.g., the same user, group, and/or organization). 
     Upon receiving discovery request  314 , electronic device  304  may use the first hash function to calculate the same hash value  310  from group ID  308  for electronic device  304 , thus verifying the association of electronic device  304  with group ID  306 . Because group IDs  306 - 308  match, electronic device  304  may generate a discovery response  316  to discovery request  314  and include a second hash value  312  calculated from group ID  308  using a second hash function in discovery response  316 . Electronic device  304  may then transmit discovery response  316  to electronic device  302 . 
     After electronic device  302  receives discovery response  316 , electronic device  302  may verify the match between group IDs  306 - 308  by using the second hash function to calculate the second hash value  312  from group ID  306 . After the match is verified, electronic device  302  may begin using a service associated with discovery request  314  and discovery response  316  on electronic device  304 . 
       FIG. 4  shows an exemplary timeline of interaction between a set of electronic devices  402 - 404  in accordance with the disclosed embodiments. In particular,  FIG. 4  shows a timeline of service discovery operations between a first electronic device  402  with the capability to use a group ID  406  in performing service discovery and a second electronic device  404  that lacks the capability to use group IDs in performing service discovery. As shown in  FIG. 4 , the service discovery operations may begin with the generation of a discovery request  412  by electronic device  402 . As with electronic device  302  of  FIG. 3 , electronic device  402  may include group ID  406  for electronic device  402  in discovery request  412  as a hash value  408  calculated from group ID  406  using a first hash function. Once discovery request  412  is generated, electronic device  402  may transmit discovery request  412  to electronic device  404  to discover services available on electronic device  404 . 
     Because electronic device  404  may lack the ability to perform service discovery using group IDs, electronic device  404  may ignore hash value  408  in discovery request  412 . In turn, electronic device  404  may generate and transmit a discovery response  414  to electronic device  402  independently of group ID  406  and/or hash value  408 . Discovery response  414  may then be validated by an application  416  on electronic device  402  to determine if discovery response  414  is relevant to discovery request  412  and/or group ID  406 . 
     Electronic device  404  may also transmit a discovery request  418  to electronic device  402  to discover services available on electronic device  402 . As with discovery response  414 , discovery request  418  may lack a hash value of a group ID for electronic device  404 . As a result, electronic device  402  may provide a discovery response  420  to discovery request  418  as long as electronic device  402  provides one or more services specified in discovery request  418 . Electronic device  402  may additionally calculate a different hash value  410  from group ID  406  using a second hash function and include hash value  410  in discovery response  420 . Hash value  410  may be ignored by electronic device  404 , and an application  422  on electronic device  404  may be used to determine if discovery response  420  is relevant to discovery request  418 . 
     Conversely, hash value  410  may be used by other electronic devices that receive discovery response  420  (e.g., through multicast transmission of discovery response  420 ) to update lists of available services on the other electronic devices. For example, the other electronic devices may include services on electronic device  402  in the lists if the other electronic devices are also associated with group ID  406  and/or the other electronic devices are discovering services independently of group IDs. On the other hand, the other electronic devices may omit services on electronic device  402  from the lists if the other electronic devices are not associated with group ID  406  and/or performing service discovery using other group IDs. 
       FIG. 5  shows a flowchart illustrating the process of facilitating communication with a second electronic device from a first electronic device in accordance with the disclosed embodiments. In one or more embodiments, one or more of the steps may be omitted, repeated, and/or performed in a different order. Accordingly, the specific arrangement of steps shown in  FIG. 5  should not be construed as limiting the scope of the embodiments. 
     Initially, the first electronic device is used to create a discovery request containing a first group ID associated with the first electronic device (operation  502 ). The first group ID may be encrypted within the discovery request to prevent unauthorized access to the first group ID. For example, the first group ID may be encrypted by calculating a first hash value from the first group ID (possibly with an added salt) using a first hash function. The first hash function may also be varied based on use of the first hash function by the first electronic device. 
     Next, the discovery request is transmitted to the second electronic device (operation  504 ), and a discovery response is received from the second electronic device (operation  506 ). The discovery response may then be processed based on the inclusion of a second group ID (operation  510 ) in the discovery response. If the discovery response includes the second group ID, a match between the first and second group IDs is verified (operation  512 ). If the second group ID is encrypted, the match is verified by calculating a second hash value from the first group ID using a second hash function and comparing the second hash value with the encrypted second group ID. If the second hash value matches the second group ID, the first and second group IDs match. If the second hash value does not match the second group ID, the first and second group IDs do not match. 
     If the discovery response does not include the second group ID, the second electronic device may not be capable of performing service discovery using group IDs. As a result, an application on the first electronic device is used to verify the association of the second electronic device with the first group ID (operation  514 ). For example, the application may use a network address, username, device name, and/or other information in the discovery response to determine if the discovery response is associated with the first group ID and/or otherwise relevant to the discovery request. 
       FIG. 6  shows a flowchart illustrating the process of facilitating communication with a first electronic device from a second electronic device in accordance with the disclosed embodiments. In one or more embodiments, one or more of the steps may be omitted, repeated, and/or performed in a different order. Accordingly, the specific arrangement of steps shown in  FIG. 6  should not be construed as limiting the scope of the embodiments. 
     Initially, the second electronic device is used to receive a discovery request from the first electronic device (operation  602 ). Next, an association of the second electronic device with a first group ID from the discovery request is determined (operation  604 ). If the first group ID is encrypted, the association is determined by obtaining a second group ID associated with the second electronic device and using a first hash function to calculate a first hash value from the second group ID. If the first hash value matches the encrypted first group ID, the association is verified. Conversely, if the first hash value does not match the encrypted first group ID, a lack of the association is verified. 
     The discovery request may then be processed based on the existence of the association (operation  606 ). If the association exists, a discovery response containing the first group ID is created (operation  608 ) and transmitted to the first electronic device (operation  610 ). To create the discovery response, a second hash function is used to calculate a second hash value from the second group ID, a salt may optionally be added to the second group ID, and the second hash value is included in the discovery response. If the association does not exist, a discovery response to the first electronic device is omitted (operation  612 ). Finally, if the discovery request does not include a group ID, the second group ID may be included in the discovery response, and the discovery response may be transmitted to the first electronic device and/or other electronic devices to facilitate discovery of services on the second electronic device by the first electronic device and/or other electronic devices. 
       FIG. 7  shows a computer system  700  in accordance with an embodiment. Computer system  700  may correspond to an apparatus that includes a processor  702 , memory  704 , storage  706 , and/or other components found in electronic computing devices. Processor  702  may support parallel processing and/or multi-threaded operation with other processors in computer system  700 . Computer system  700  may also include input/output (I/O) devices such as a keyboard  708 , a mouse  710 , and a display  712 . 
     Computer system  700  may include functionality to execute various components of the present embodiments. In particular, computer system  700  may include an operating system (not shown) that coordinates the use of hardware and software resources on computer system  700 , as well as one or more applications that perform specialized tasks for the user. To perform tasks for the user, applications may obtain the use of hardware resources on computer system  700  from the operating system, as well as interact with the user through a hardware and/or software framework provided by the operating system. 
     In one or more embodiments, computer system  700  provides a system for facilitating communication between a first electronic device and a second electronic device. The system may include the first electronic device, which creates a discovery request containing a first group ID associated with the first electronic device and transmits the discovery request to the second electronic device. Next, the first electronic device may receive the discovery response from the second electronic device. If the discovery response includes a second group ID associated with the second electronic device, the first electronic device may verify a match between the first and second group IDs. On the other hand, if the discovery response omits the second group ID, the first electronic device may use an application on the first electronic device to verify an association of the second electronic device with the first group ID. 
     Alternatively, computer system  700  may implement the second electronic device. The second electronic device may receive the discovery request from the first electronic device and determine an association of the second electronic device with the first group ID from the discovery request. If the association exists, the second electronic device may create a discovery response containing the first group ID and transmit the discovery response to the first electronic device. If the association does not exist, the second electronic device may omit the discovery response. 
     In addition, one or more components of computer system  700  may be remotely located and connected to the other components over a network. Portions of the present embodiments (e.g., discovery apparatus, communication apparatus, electronic devices, etc.) may also be located on different nodes of a distributed system that implements the embodiments. For example, the present embodiments may be implemented using a cloud computing system that obtains service information and group IDs from a set of remote electronic devices and uses the service information and group IDs to respond to discovery requests from the remote electronic devices. 
     The foregoing descriptions of various embodiments have been presented only for purposes of illustration and description. They are not intended to be exhaustive or to limit the present invention to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the present invention.

Metadata:
Filing Date: 20140218
Publication Date: 20170516
Grant Date: 20170516
Priority Date: 20130228
Inventors: PARTHASARATHY MOHAN
EAGER TERRIN D.
CHESHIRE STUART D.
Assignee: APPLE INC
CPC Classifications: [{"code": "H04L67/16", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04L63/104", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04L63/0428", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04L63/0876", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04L67/51", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04L67/51", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04L63/104", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04L63/0428", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04W12/76", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04W12/76", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04L63/0876", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04L63/104", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04L63/0876", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04L63/0428", "inventive": false, "first": false, "tree": "[]"}]
Family ID: 51389478