Methods, apparatuses and program products for initializing a security association based on physical proximity in a wireless ad-hoc network
32 claims: 4 independent, 28 dependent
- 1Device for controlling data communication in an ad-hoc network (100) that connects a wireless device (120, 110) and a nearby wireless device (120, 110), comprising:a memory device (260, 210);and a processor (253, 203) disposed in communication with the memory device (260, 210), characterized by an application directory (280, 230) stored in the memory device (260, 210) and having at least one entry, each entry including an application program identifier, attributes, and security parameters, the processor (253, 203) configured to: - determine a priority for each entry in the application directory (280, 230);- identify a selected entry based on the priority;- examine the attributes and the security parameters for the selected entry;and - establish a security association to support the data communication when the security parameters direct the selected entry to use a secure connection.
- 16Method for controlling data communication in an ad-hoc network (100) that connects a wireless device (120, 110) and a nearby wireless device (120, 110), characterized by :- storing an application directory (280, 230) having at least one entry, each entry including an application program identifier, attributes, and security parameters;- determining a priority for each entry in the application directory (280, 230);- identifying a selected entry based on the priority;- examining the attributes and the security parameters for the selected entry;and - establishing a security association to support the data communication when the security parameters direct the selected entry to use a secure connection.
- 30System for controlling data communication in an ad-hoc network (100) that connects a wireless device (120, 110) and a nearby wireless device (120, 110), characterized by :- means for storing an application directory (280, 230) having at least one entry, each entry including an application program identifier, attributes, and security parameters;means for determining a priority for each entry in the application directory(280, 230);- means for identifying a selected entry based on the priority;- means for examining the attributes and the security parameters for the selected entry;and - means for establishing a security association to support the data communication when the security parameters direct the selected entry to use a secure connection.
- 32Computer program product, stored on a computer-readable medium, for controlling data communication in an ad-hoc network (100) that connects a wireless device (120, 110) and a nearby wireless device (120, 100), characterized by instructions, which, when executed by a CPU, carry out the method of anyone of claims 16 to 29.
Independent claims4
48 paragraphs in 6 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATIONS
This application for letters patent is related to United States patent application titled "DEVICE DETECTION AND SERVICE DISCOVERY SYSTEM AND METHOD FOR A MOBILE AD HOC COMMUNICATIONS NETWORK", and filed in the United States Patent and Trademark Office on October 31, 2002. This application for letters patent is also related to United States continuation-in-part patent application titled "DEVICE DETECTION AND SERVICE DISCOVERY SYSTEM AND METHOD FOR A MOBILE AD HOC COMMUNICATIONS NETWORK", and filed in the United States Patent and Trademark Office on September 16, 2003. This application for letters patent is also related to United States patent application titled "MECHANISM FOR IMPROVING CONNECTION CONTROL IN PEER-TO-PEER AD-HOC NETWORKS", and filed in the United States Patent and Trademark Office on September 16, 2003. This application for letters patent is also related to United States patent application titled "APPLICATION CONTROL IN PEER-TO-PEER AD-HOC COMMUNICATION NETWORKS", and filed in the United States Patent and Trademark Office on September 16, 2003. The assignee is the same in this application and the related patent applications.
FIELD OF THE INVENTION
The present invention relates, in general, to communication between devices connected to a wireless communication network. In particular, the present invention is a system and method for launching and controlling secure and non-secure application programs in wireless devices in a mobile ad-hoc communications network.
BACKGROUND OF THE INVENTION
Short-range wireless systems have a range of less than one hundred meters, but may connect to the Internet to provide communication over longer distances. Short-range wireless systems include, but are not limited to, a wireless personal area network (PAN) and a wireless local area network (LAN). A wireless PAN uses low-cost, low-power wireless devices that have a typical range of ten meters. An example of a wireless PAN technology is the Bluetooth Standard. The Bluetooth Standard operates in the 2.4 GHz Industrial, Scientific, and Medical (ISM) band and provides a peak air-link speed of one Mbps and a power consumption low enough for use in personal, portable electronics such as a personal digital assistance or mobile phone. A introduction to Bluetooth applications is in <i><u style="single">Bluetooth Application Developer's Guide: The Short Range Interconnect Solution, Chapter 1</u></i>, Syngress Publishing, Inc., 2002. Another example of a wireless PAN technology is a standard for transmitting data via infrared light waves developed by the Infrared Data Association (IrDA), a group of device manufacturers. IrDA ports enable computers, such as a laptop, or devices, such as a printer, to transfer data from one device to another without any cables. IrDA ports support roughly the same transmission rates as traditional parallel ports and the only restrictions on their use is that the two devices must be proximately located (i.e., within a few feet of each other) and have a clear line of sight. A wireless LAN is more costly than a wireless PAN, but has a longer range. An example of a wireless LAN technology is the IEEE 802.11 Wireless LAN Standard and the HIPERLAN Standard. The HIPERLAN Standard operates in the 5 GHz Unlicensed-National Information Infrastructure (U-NII) band and provides a peak air-link speed between ten and one hundred Mbps.
An ad-hoc network is a short-range wireless system comprising an arbitrary collection of wireless devices that are physically close enough to exchange information. Construction of an ad-hoc network is quick with wireless devices joining and leaving the network as they enter and leave the proximity of the remaining wireless devices. An ad-hoc network also may include one or more access points, that is, stationary wireless devices operating as a stand-alone server or as gateway connections to other networks.
In the future, the Bluetooth Standard will likely support the interconnection of multiple piconets to form a multi-hop ad-hoc network, or scatternet. In a scatternet, a connecting device forwards traffic between different piconets. The connecting device may serve as a master device in one piconet, but as a slave device or a master device in another piconet. Thus, the connecting devices join the piconets that comprise a scatternet by adapting the timing and hop sequence to the respective piconet and possibly changing the roles that they serve from a master device to a slave device.
A Bluetooth device includes, but is not limited to, a mobile telephone, personal or laptop computer, radio-frequency identification tag, and personal electronic device such as a personal digital assistant (PDA), pager, or portable-computing device. Each Bluetooth device includes application and operating system programs designed to find other Bluetooth devices as they enter and leave the communication range of the network. The requesting Bluetooth device in a client role and the responding Bluetooth device in a server role establish a proximity link between the two devices. The requesting and responding Bluetooth device use the proximity link and a service discovery protocol to discover the services offered by the other Bluetooth device and how to connect to those services.
A public key infrastructure (PKI) is a system of digital certificates, certificate authorities (CAs), and other registration authorities that verify and authenticate the validity of each party involved in an Internet transaction. A digital certificate is an attachment to an electronic message typically to verify that a user sending a message is who they claim to be, and to provide the receiver with the means to encode a reply. An individual wishing to send an encrypted message applies for a digital certificate from a CA. The CA issues a signed digital certificate containing the applicant's public key and a variety of other identification data. The CA makes its own public key readily available through print publicity or perhaps on the Internet. The recipient of an encrypted message uses the CA's public key to verify the digital certificate attached to the message, verify that it was issued by the CA, and obtain the sender's public key and identification information held within the certificate. With this information, the recipient can send an encrypted reply. The most widely used standard for digital certificates is X.509.
Cryptography is the art of protecting information by transforming (i.e., encrypting) the information into an unreadable format, called cipher text. Only someone who possesses a secret key can decipher (i.e., decrypt) the cipher text into plain text. Symmetric-key systems and public-key systems are broad classifications of cryptography systems. A symmetric-key system (e.g., the Data Encryption Standard (DES)) is an encryption system in which the sender and receiver of a message share a single, common key that is used to encrypt and decrypt the message. A public-key system (e.g., Pretty Good Privacy (PGP)) uses two keys, a public key known to everyone and a private or secret key known only to the recipient of the message. When John wants to send a secure message to Jane, he uses Jane's public key to encrypt the message. Jane then uses her private key to decrypt the message. Symmetric-key systems are simpler and faster than public-key systems, but their main drawback is that the two parties must somehow exchange the key in a secure way. To avoid this drawback, public-key systems distribute the public key in a non-secure way and never transmit the private key. The problem of secure communication and authentication in ad-hoc wireless networks has been addressed in a paper titled Talking to Strangers: Authentication in Ad-Hoc Wireless Networks by Balfanz et al. The authors present a solution that provides secure authentication using almost any established public-key-based key exchange protocol, as well as inexpensive hash-based alternatives. The solution allows devices to exchange a limited amount of public information over a privileged side channel, and then allows the devices to complete an authenticated key exchange protocol over the wireless link. The solution does not require a PKI, is secure against passive attacks on the privileged side channel and all attacks on the wireless link, and directly captures the user's intention to communicate with a particular previously unknown device that is within their physical proximity. For wireless devices that communicate in a peer-to-peer ad-hoc network, prior art middleware facilitates inter-application communication by hiding peer-discovery, network formation, application and service discovery, as well as automatic application launching, behind an easy-to-use coherent application programming interface (API). However, since no trusted, accessible, third party based solution is available, establishing secure communication and authentication is difficult for the prior art middleware. WO 00/72506 represents a typical prior art implementation for initializing secure communications among, and for exclusively pairing wireless devices. The teaching of WO 00/72506 enables for efficiently establishing secure communications between mobile devices in a radio network in that public key cryptography and unique hardware identifiers are utilized to enable authorizations for access to wireless networks, such as Picocells. The mobile user is prevented from maintaining a plurality of secrets such as user identifier/password pairs, PINs, or encryption keys, for access to each device to which he might require access. Wireless devices distributed throughout an enterprise are enabled to be efficiently initialized for secure communications. Well-known public key cryptography and machine unique identifiers are utilized to establish a secure channel and initialize the wireless devices. Wireless devices are enabled to be paired or permanently associated by a user or a network administrator. Well known public key cryptography and machine unique identifiers are utilized to establish a secure channel and associate the devices with each other. This teaching of WO 00/72506 is applicable for associating a wireless headset with a telephone or associating a wireless mouse with a computer.
Thus, there is a need for a system and method for providing secure communication between selected applications in wireless ad-hoc network devices that rely upon middleware to facilitate inter-application communication. The system and method will provide the means to implement a security API for application-level access to other security services based on the generated peer-to-peer security associations. The system and method do not require a highly available server or PKI and improve establishment of security by relying on a user to enter a password. The present invention addresses this need.
SUMMARY OF THE INVENTION
A computer system, method, and computer program product for controlling data communication in an ad-hoc network that connects a wireless device and a nearby wireless device. The method stores an application directory, determines a priority for each entry in the application directory, identifies a selected entry based on the priority, and examines the attributes and security parameters associated with the selected entry. When the security parameters indicate to use a secure connection, the method establishes a security association to support the data communication by querying a database for an existing security association that will satisfy the security parameters. When the query is successful, the method reuses the existing security association. When the query is unsuccessful, the method creates a new security association by establishing a privileged side channel to the nearby wireless device, negotiating the new security association over the privileged side channel, and storing the new security association.
The attributes include a device identifier, a role, and control parameters such as an application state and at least one user-defined application setting. The security parameters include an information security objective (e.g., maintaining confidentiality, ensuring integrity, authenticating a party, and protecting against replay or reuse), a cryptography method for a public key known to everyone and a private or secret key known only to the recipient of the message. When John wants to send a secure message to Jane, he uses Jane's public key to encrypt the message. Jane then uses her private key to decrypt the message. Symmetric-key systems are simpler and faster than public-key systems, but their main drawback is that the two parties must somehow exchange the key in a secure way. To avoid this drawback, public-key systems distribute the public key in a non-secure way and never transmit the private key.
The problem of secure communication and authentication in ad-hoc wireless networks has been addressed in a paper titled <i><u style="single">Talking to Strangers: Authentication in Ad-Hoc Wireless Networks</u></i> by Balfanz et al. The authors present a solution that provides secure authentication using almost any established public-key-based key exchange protocol, as well as inexpensive hash-based alternatives. The solution allows devices to exchange a limited amount of public information over a privileged side channel, and then allows the devices to complete an authenticated key exchange protocol over the wireless link. The solution does not require a PKI, is secure against passive attacks on the privileged side channel and all attacks on the wireless link, and directly captures the user's intention to communicate with a particular previously unknown device that is within their physical proximity.
For wireless devices that communicate in a peer-to-peer ad-hoc network, prior art middleware facilitates inter-application communication by hiding peer-discovery, network formation, application and service discovery, as well as automatic application launching, behind an easy-to-use coherent application programming interface (API). However, since no trusted, accessible, third party based solution is available, establishing secure communication and authentication is difficult for the prior art middleware. attaining the information security objective (e.g., a signature verification service, and an encryption algorithm), and a level of security. In one embodiment, a bit-string includes the security parameters, a value of the bit-string representing each of the security parameters.
In one embodiment, to reconnect to a secure connection the method stores a security association between the wireless device and the nearby wireless device when the nearby wireless device enters the ad-hoc network for a first encounter. The method stores a copy of the security association so that when the first encounter terminates, the method can remove the security association and retain the copy. When the nearby wireless device enters the ad-hoc network for a second encounter, the method establishes a secure connection to the nearby device based on the copy of the security association. In another embodiment, the method establishes the secure connection by searching a connection log to locate the copy of the security association. In another embodiment, storage of the connection log is on a long-term storage device. In another embodiment, a user operates a graphical user interface to locate the copy of the security association.
BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying figures best illustrate the details of the system and method for providing secure communication between selected applications in wireless ad-hoc network devices that rely upon middleware to facilitate inter-application communication. Like reference numbers and designations in these figures refer to like elements.
Figure <b>1</b> is a network diagram that illustrates the interaction of the devices that comprise a mobile ad-hoc communications network, in accordance with one embodiment of the present invention.
Figure <b>2A</b> is a block diagram that illustrates the hardware and software components comprising server <b>110</b> shown in Figure <b>1</b>, in accordance with one embodiment of the present invention.
Figure <b>2B</b> is a block diagram that illustrates the hardware and software components comprising terminal <b>120</b> shown in Figure <b>1</b>, in accordance with one embodiment of the present invention.
Figure <b>3A</b> and Figure <b>3B</b> are flow diagrams of an embodiment of a process for launching and controlling secure and non-secure application programs in a mobile ad-hoc communications network.
Figure <b>3C</b> is a flow diagram of an embodiment of a process for reconnecting a secure application program in a mobile ad-hoc communications network.
Figure <b>4</b> illustrates is a diagram of a window depicting an embodiment of a graphical user interface for reconnecting a secure application program in a mobile ad-hoc communications network.
DETAILED DESCRIPTION OF THE INVENTION
Figure <b>1</b> is a network diagram that illustrates the interaction of the devices that comprise a mobile ad-hoc communications network, in accordance with one embodiment of the present invention. In one embodiment, the mobile ad-hoc communications network is a Bluetooth piconet that includes one master device and up to seven active slave devices. As shown in Figure <b>1</b>, piconet <b>100</b> includes server <b>110</b> and five instances of terminal <b>120</b>. Server <b>110</b> maintains the network clock and is the communication manager for each instance of terminal <b>120</b>. Server <b>110</b> typically initiates an exchange of data with an instance of terminal <b>120</b>. Two instances of terminal <b>120</b> typically communicate through the server <b>110</b> however, if two instances of terminal <b>120</b> communicate directly, one instance will assume the role of server, or master, and the other instance will assume the role of client, or slave.
Each device in the mobile ad-hoc communications network will either assume the role of a terminal device or a server device. A terminal device is a consumer of services that a single user operates. A terminal device includes devices such as a mobile phone or PDA. A server is typically a stationary device and only produces services. A server device creates a hotspot around them for using their services. "Hotspot" refers to the radio coverage area provided by the server device for detecting devices and discovering services offered by the applications hosted in the server. If the server device is not stationary, one of the terminal devices in the network will assume the role of application directory server and perform device detection and service discovery functions for the remaining terminal devices in the network. The disclosed invention introduces two roles among such terminal devices, application directory servers and terminals, where application directory servers serve terminals in device detection and service discovery. If stationary servers with hotspots exist, servers typically act as application directory servers. However, device detection and service discovery is possible without such a stationary server because one of the terminals will assume the application directory server duties.
The disclosed invention assigns an identifier to each application placed under control. In one embodiment, the identifier is a non-unique identifier that abstractly identifies the application. In another embodiment, the identifier specifies a function that the application performs. In another embodiment, the identifier specifies a communication protocol that the application uses to communicate. Thus, the identifier may indicate that several occurrences of an application each occurrence authored in a different computer language, or targeted to run on a different hardware platform or fulfill a different application role may be considered to be the same because they can interoperate and fulfill the same function. However, in yet another embodiment, the identifier is a unique identifier that identifies the application.
Figure <b>2A</b> is a block diagram that illustrates the hardware and software components comprising server <b>110</b> shown in Figure <b>1</b>, in accordance with one embodiment of the present invention. Server <b>110</b> is a general-purpose wireless device. Bus <b>200</b> is a communication medium that connects keypad <b>201</b>, display <b>202</b>, central processing unit (CPU) <b>203</b>, and radio frequency (RF) adapter <b>204</b> to memory <b>210</b>. RF adapter <b>204</b> connects via a wireless link to terminal <b>120</b> and is the mechanism that facilitates network traffic between server <b>110</b> and terminal <b>120</b>.
CPU <b>203</b> performs the methods of the disclosed invention by executing the sequences of operational instructions that comprise each computer program resident in, or operative on, memory <b>210.</b> Memory <b>210</b> includes operating system software <b>211</b>, application programs <b>212</b>, and middleware software <b>220</b>. Operating system software <b>211</b> controls keypad <b>201</b>, display <b>202</b>, RF adapter <b>204</b>, and the management of memory <b>210</b>. Application programs <b>212</b> control the interactions between a user and server <b>110</b> including a proximity security initialization program. Middleware software <b>220</b> includes an application program interface (API) <b>221</b>, application directory <b>230</b>, security association database <b>240</b>, and connection log <b>245</b>. API <b>221</b> assists an application program running on server <b>110</b> to find and communicate with a counterpart application running on terminal <b>120</b>. Application directory <b>230</b> tracks, for each application that is resident in each device in piconet <b>100</b>, a reference to the device storing the application, an identifier for the application, the role that the application performs, and the security parameters that define the required policy configuration attributes and security services. In one embodiment, the reference to the device storing the application is the MAC address of the device. Security association database <b>240</b> stores all recent, pair-wise and group associations established by the proximity security initialization program. Connection log <b>245</b> stores recent connections to server <b>110</b>, such as general packet radio service (GPRS), Bluetooth, or wireless local area network (WLAN) connection. In one embodiment, middleware software <b>220</b> integrates the storage of any combination of application directory <b>230</b>, security association database <b>240</b>, and connection log <b>245</b>.
Figure <b>2B</b> is a block diagram that illustrates the hardware and software components comprising terminal <b>120</b> shown in Figure <b>1</b>, in accordance with one embodiment of the present invention. Terminal <b>120</b> is a general-purpose wireless device. Bus <b>250</b> is a communication medium that connects keypad <b>251</b>, display <b>252</b>, CPU <b>253</b>, and RF adapter <b>254</b> to memory <b>260</b>. RF adapter <b>254</b> connects via a wireless link to server <b>110</b> or another terminal <b>120</b> and is the mechanism that facilitates network traffic between server <b>110</b> and terminal <b>120</b>.
CPU <b>253</b> performs the methods of the disclosed invention by executing the sequences of operational instructions that comprise each computer program resident in, or operative on, memory <b>260</b>. Memory <b>260</b> includes operating system software <b>261</b>, application programs <b>262</b>, and middleware software <b>270</b>. Operating system software <b>261</b> controls keypad <b>251</b>, display <b>252</b>, RF adapter <b>254</b>, and the management of memory <b>260</b>. Application programs <b>262</b> control the interactions between a user and terminal <b>120</b> including a proximity security initialization program. Middleware software <b>270</b> includes an application program interface (API) <b>271</b>, application directory <b>280</b>, security association database <b>290</b>, and connection log <b>295</b>. API <b>271</b> assists an application program running on server <b>110</b> to find and communicate with a counterpart application running on terminal <b>120</b>. Application directory <b>280</b> tracks, for each application that is resident in each device in piconet <b>100</b>, a reference to the device storing the application, an identifier for the application, the role that the application performs, and the security parameters that define the required policy configuration attributes and security services. In one embodiment, the reference to the device storing the application is the MAC address of the device. Security association database <b>290</b> stores all recent, pair-wise and group associations established by the proximity security initialization program. Connection log <b>295</b> stores recent connections to terminal <b>120</b>, such as general packet radio service (GPRS), Bluetooth, or wireless local area network (WLAN) connection. In one embodiment, middleware software <b>270</b> integrates the storage of any combination of application directory <b>280</b>, security association database <b>290</b>, and connection log <b>295</b>.
In one embodiment, the configuration of memory <b>210</b> and memory <b>260</b> is identical. In another embodiment, the configuration of memory <b>210</b> and memory <b>260</b> only includes the software necessary to perform the essential tasks of server <b>110</b> and terminal <b>120</b>, respectively. For example, if terminal <b>120</b> needs to receive a general inquiry access code, but does not need to send a general inquiry access code message, only the software that receives this message will reside in memory <b>260</b>.
In the disclosed invention, the distributed application directory stored in the middleware software is a database that makes it possible for a device to know something of the requirements and wishes of peer devices to which it connects. The database also contains information of local applications and their requirements. The information includes security parameters, as well as priority information, indicating importance of the application set by the user. The distributed application directory, or database, stores these security parameters and the middleware software enforces these security parameters. In one embodiment, these security parameters are stored as a bit-string where the bits allow the user to enable application-level access control for each entry in the application. Thus, the user may set the security parameters to indicate that a specific application requires that a specific security association is present before communicating with a complementary application running on another device.
As shown in Figure <b>2A</b> and Figure <b>2B</b>, the security parameters are a bit-string in which the first four bits identify a communication security type, the next two bits identify a required security API service, and the last two bits identify a level of security. The communication security type identifies the information security objective sought. Information security objectives include keeping information private or confidential, ensuring the integrity of the information, authenticating the identity of the parties to the communication, protecting against replay or reuse of the information, and the like. The specified security API service identifies cryptography methods for required application by obtaining the information security objective. The cryptography method includes signature services, encryption algorithms, and the like. The level of security determines the algorithm as well as the way information is collected. For example, higher-level security may require the use of certain location-limited channels when the security context is established. Other parameters that may be affected by the level of security are the validity period of the established security context or the validity of third-party information. For example, in low-level security formation group keys may well be used for channel protection in a way where pair-wise security establishment may not be needed between every possible pair in the group.
Middleware software <b>220</b> and <b>270</b> stores in security association database <b>240</b> or 290 all recent, pair-wise and group security associations established by a proximity security initialization program. However, middleware software <b>220</b> and <b>270</b> only establishes the security associations between devices, not applications. Middleware software <b>220</b> and <b>270</b> is also responsible for purging records based on validity period settings and use order (e.g., when the database fills up, purging the oldest and least used associations). For example, if device D and peer P are each running application X, middleware software <b>220</b> or <b>270</b> sends a query to security association database <b>240</b> or <b>290</b> for an existing and valid security association between D and P. If security association A exists and satisfies the security parameters associated with X, security association A is used and no other security association between D and P is needed. According to one embodiment, a security association includes fields for identifying the peer device and security parameters. The fields for identifying the peer device may specify the local device identity as seen by the peer device (i.e., external) or may specify the identity of the peer device as seen by the local device (i.e., internal). The security parameters, in addition to the security parameters shown in Figure 2A and Figure 2B, include a cryptographic digest (e.g., a thumbprint of a certificate), a public key pair, secret keys of a peer device, and a possible lifetime of key material. Middleware software <b>220</b> and <b>270</b> may also prioritize both secure and non-secure applications. To minimize application congestion on the mobile terminal, the prioritization is concerned with runnable, automatically launching applications in the local network. One aspect of that system and method chooses the highest priority application and automatically launches the application if the application is "runnable" and the appropriate user-defined flags are set. The system and method disclosed herein addresses the task of prioritizing secure and non-secure, runnable applications that can be automatically launched. Thus, the system and method disclosed herein minimizes "application congestion" on a mobile terminal that includes secure and non-secure applications.
Middleware software <b>220</b> and <b>270</b> facilitates inter-application communication by hiding peer discovery, network formation, application and service discovery as well as automatic application launching. When two mobile devices meet, the devices exchange (i.e., distribute) application directory data that describes the applications and peer devices on the network. Using the application directory data, the mobile devices can launch and control application programs resident in wireless devices in a mobile ad-hoc communications network. However, communication in a secure manner requires the integration of the application directory and proximity security initialization software. For each application and terminal in the application directory, the user may set a requirement to use a secure channel, as well as additional information (e.g., the user may set a requirement that the application requires a digital signature facility from a cryptography API). Before launching an application that requires a secure channel, two proximate mobile devices first determine whether an existing security association will support the secure channel communication. If a security association already exists, the matching applications will launch and utilize the security association. If a security association does not exist, both devices will launch proximity security initialization software to use a location-limited (i.e., proximity) side channel, such as an infrared data association (IrDA) port, to authenticate the devices and negotiate a security association. When the negotiation is complete, the matching applications launch and utilize the negotiated security association.
Figure <b>3A</b> and Figure <b>3B</b> are flow diagrams of an embodiment of a process for launching and controlling secure and non-secure application programs in a mobile ad-hoc communications network. The process in Figure <b>3A</b> begins when a mobile device (device A) waits for a connection request from the network (step <b>302</b>). A proximate mobile device (device B) enters the network and sends a connection request to device A (step <b>304</b>). Device A and device B establish a connection (step <b>306</b>) and exchange a list of applications and attributes (step <b>308</b>). If local application state parameters have changed during the connection (step <b>310</b>), device A and device B mutually update their list of applications and attributes (step <b>312</b>) and the requesting one of the devices select an application from the list based on a predefined ordering (step <b>314</b>). If local application state parameters have not changed during the connection (step <b>310</b>), the requesting one of the devices select an application from the list based on a predefined ordering (step <b>314</b>).
If the processing exhausts the list of applications (step <b>316</b>), the process returns to waiting for a connection request (step <b>302</b>). If the processing selects an application (step <b>316</b>) and if the selected application does not require a security association (step <b>318</b>), the processing of the selected application continues from step <b>328</b> as shown in Figure <b>3B</b>. If the selected application requires a security association (step <b>318</b>) and if security association database <b>240</b> or <b>290</b> includes a security context for the selected application (step <b>320</b>), the processing of the selected application continues from step <b>328</b> as shown in Figure <b>3B</b>. If security association database <b>240</b> or <b>290</b> does not include a security context for the selected application (step <b>320</b>) and if all runnable applications have not executed (step <b>322</b>), the process defers the priority of the selected application (step <b>326</b>) and continues from step <b>314</b> as shown in Figure <b>3A.</b> If security association database <b>240</b> or <b>290</b> does not include a security context for the selected application (step <b>320</b>) and if all runnable applications have executed (step <b>322</b>), the process negotiates a security association for the deferred secure applications (step <b>324</b>) and continues from step <b>314</b> as shown in Figure <b>3A</b>.
In another embodiment, rather than defer the priority of the selected application until all runnable applications have executed (step <b>326</b>), the process launches the proximity security initialization software on an as needed basis to establish a secure connection for the selected application. In yet another embodiment, the mobile device selects whether to defer the priority or launch the proximity security initialization software based on the computing performance required by the user of the mobile device.
The process in Figure <b>3B</b> begins with examining the attributes associated with the selected application. If the selected application is running in device A (step <b>328</b>) and running in device B (step <b>336</b>), the process notifies device A and device B of the connection (step <b>330</b> and step <b>338</b>) and selects the next application from the list (step <b>314</b>). If the selected application is running in device A (step <b>328</b>), is not running in device B (step <b>336</b>), and is startable in device B (step <b>340</b>), device B starts the selected application (step <b>342</b>) and the process continues from step <b>318</b> as shown in Figure <b>3A</b>. If the selected application is running in device A (step <b>328</b>), is not running in device B (step <b>336</b>), is not startable in device B (step <b>340</b>), and is missing in device B (step <b>344</b>), then if device B will accept the selected application (step <b>346</b>), device A transfers the selected application to device B (step <b>348</b>) and the process continues from step <b>318</b> as shown in Figure <b>3A</b>. If the selected application is not running in device A (step <b>328</b>), but is startable in device A (step <b>332</b>), the process starts the selected application in device A (step <b>334</b>) and continues from step <b>318</b> as shown in Figure <b>3A</b>. If the selected application is running in device A (step <b>328</b>), is not running in device B (step <b>336</b>), is not startable in device B (step <b>340</b>), and is not missing from device B (step <b>344</b>), the process continues from step <b>322</b> as shown in Figure <b>3A</b>. If the selected application is not running in device A (step <b>328</b>) and is not startable in device A (step <b>332</b>), the process continues from step <b>322</b> as shown in Figure <b>3A</b>.
To negotiate the security association, middleware software <b>220</b> or <b>270</b> launches proximity security initialization software. The proximity security initialization software enables two devices, such as server <b>110</b> and terminal <b>120</b>, that have no prior security context to authenticate each other based on some kind of user-initiated physical authentication and in a resulting communication protocol generate a security association. There mutual authentication protocols include each user entering a common password into their device, using a location-limited channel as described in Balfanz, visual or short has mutual verification by the users, and pair-wise biometric identification (i.e., entering biometric data in the peer device that the local device authenticates).
If a security association between two peer devices does not exist, middleware software <b>220</b> or <b>270</b> for the first peer device sends a request to establish a security association between the first and the second peer device. The proximity security initialization software resident in the first device negotiates the security association, including peer identification data, over a location-limited channel. Once negotiation of the security association is complete, the proximity security initialization software offers the location-limited channel for use to middleware software <b>220</b> or <b>270</b> and the application that requires the security association.
If the security association between the two peer devices exists, before an application that requires security can launch, the proximity security initialization software enforces the security policy set in application directory <b>230</b> or <b>280</b>. The proximity security not a previously established connection (step <b>360</b>), the process continues from step <b>322</b> as shown in Figure <b>3A</b>.
Connection log <b>245</b> and <b>295,</b> and security association database <b>240</b> and <b>290,</b> store in a similar manner initialization parameters that describe a secure application connection. These initialization parameters include fields for identifying the device, and fields for security parameters. The fields for identifying the device include, for example, the local device identity as seen by the peer device, and the peer device identity as seen by the local device. The fields for security parameters include, for example, Cryptographic Digest such as a thumbprint of a certificate, public key of the peer device, secret keys of the peer device, and the possible lifetime of the key material. However, in contrast, connection log <b>245</b> and <b>295</b> is longer-term storage than security association database <b>240</b> and <b>290</b>. For example, security association database <b>240</b> and <b>290</b> may only store the initialization parameters for the duration of the application connection and release the storage of those parameters when the user exits the application. Since connection log <b>245</b> and <b>295</b> retains a copy of those initialization parameters for a longer period of time, the peer device can leave the ad-hoc network and upon returning to the network immediately start the application using the initialization parameters. Thus, the returning peer device need not re-establish a location-limited channel to touch the local device and begin secure communications.
Figure <b>4</b> illustrates is a diagram of a window depicting an embodiment of a graphical user interface for reconnecting a secure application program in a mobile ad-hoc communications network. The graphical user interface shown in Figure <b>4</b> is resident in terminal <b>120</b> as shown in detail in Figure <b>2B</b>. Thus, like reference numbers and designations in Figures initialization software retrieves the correct security association from middleware <b>220</b> or <b>270</b>, and configures the necessary security protocols (e.g., Bluetooth pairing, or Transport Layer Security/Internet Protocol Security). The application that requires security launches after establishment of the security services. However, if the security policy for the application requests a security application program interface (API) the proximity security initialization software also configures the required cryptographic services. In another embodiment, when critical security levels are in use, the security associations stored in middleware <b>220</b> or <b>270</b> may be protected and require user interaction (e.g., entering a password, or providing biometric data).
In another embodiment, the definitions of the security associations are application specific. This approach requires the proximity security initialization software to negotiate a specific security association for each pair-wise application that needs security according to the associated security policy. Also, the proximity security initialization software and the communication infrastructure provide support for multiplexing several security contexts over the communications channel based on the associations in use.
Figure <b>3C</b> is a flow diagram of an embodiment of a process for reconnecting a secure application program in a mobile ad-hoc communications network. If security association database <b>240</b> or <b>290</b> does not include a security context for the selected application (step <b>320</b>), the process optionally sends a request to middleware software <b>220</b> and <b>270</b> for data from connection log <b>245</b> or <b>295</b> (step <b>350</b>). The process stores the data supplied in response to the request in a display list (step <b>352</b>). The display list provides a user with the ability to browse the display list (step <b>354</b>), view detailed data for each entry in the display list (step <b>356</b>), and select an entry in the display list (step <b>358</b>). If the entry selected is a previously established connection (step <b>360</b>), the process continues from step <b>328</b> as shown in Figure <b>3B</b>. If the entry selected is <b>2B</b> and <b>4</b> refer to like elements. However, a reader of this disclosure should understand that the graphical user interface might reside similarly in server <b>110</b> as shown in detail in Figure <b>2A</b>.
As shown in Figure <b>4</b>, window <b>400</b> resides in display <b>252</b> of terminal <b>120</b>. Window <b>400</b> includes the elements comprising the graphical user interface. Bus <b>250</b> is a communication medium that connects keypad <b>251</b>, display <b>252</b>, CPU <b>253</b>, RF adapter <b>254</b>, and memory <b>260</b>. Figure <b>4</b> shows display <b>252</b> and memory <b>260</b> as separate components. In another embodiment, CPU <b>253</b> stores window <b>400</b> is a display or video memory associated with display <b>252</b>. However, in yet another embodiment, CPU <b>253</b> stores window <b>400</b> in a protected portion of memory <b>260</b>.
Window <b>400</b> shown in Figure <b>4</b> includes title bar <b>410</b>, data header <b>420</b>, display list <b>430</b>, scroll bar <b>440</b>, and index <b>450</b>. Title bar <b>410</b> identifies the title of window <b>400</b> as "Connection Log". Data header <b>420</b> identifies the title for the columns comprising each entry in display list <b>430</b>. Display list <b>430</b> includes one entry for each entry in connection log <b>295</b>. If display list <b>430</b> is an empty list, there is no selected entry. If display list <b>430</b> is not an empty list, the graphical user interface will always consider one entry to be a selected entry and will display the selected entry in a format that differs visually from the display of the non-selected entries. Figure <b>4</b> depicts the selected entry shown in reverse video as the entry in which "Device Name" is "Carol's Phone". Scroll bar <b>440</b> is a navigational element that provides an indication of the spatial location of the selected entry in display list <b>430</b>. Scroll bar <b>440</b> includes an up arrow, a down arrow, a scroll region, and a scroll box in the scroll region. If the selected entry is the first entry in display list <b>430</b>, the location of the scroll box is at the top-most portion of the scroll region. If the selected entry is the last entry in display list <b>430</b>, the location of the scroll box is at the bottom-most portion of the scroll region. Otherwise, the location of the scroll box within the scroll region is proportional to the quotient of the index of the selected entry in display list <b>430</b> and the index of the last entry in display list <b>430</b>, where the index of the first entry in display list <b>430</b> is one and the index of the last entry in display list <b>430</b> is equal to the number of entries in display list <b>430</b>. Index <b>450</b> is another navigational element that provides an indication of the numerical location of the selected entry in display list <b>430</b>. Index <b>450</b> includes two numbers separated by a slash. The number to the left of the slash is the index associated with the selected entry. The number to the right of the slash is the index associated with the last entry in display list <b>430</b> (i.e., the number of entries in display list <b>430</b>).
Referring again to Figure <b>4</b>, CPU <b>253</b> executes the appropriate instructions to cause window <b>400</b> to appear in display <b>252</b> of terminal <b>120</b>. CPU <b>253</b> sends a request to middleware software <b>270</b> via bus <b>250</b> for data from connection log <b>295</b>. CPU <b>253</b> executes the appropriate instructions to store the data received in response to the request in display list <b>430</b>. A user of terminal <b>120</b> may browse display list <b>430</b> shown in display <b>252</b>. The user may also view detailed data for each entry in display list <b>430</b>. The detailed data includes a name for the device (e.g., "Carol's Phone), a timestamp associated with the connection (e.g., October 3, 2003, 20 hours, and 42 seconds), an indication of the presence of security parameters, and a channel type for the connection (e.g., RFID). The user may also operate an input device such as keypad <b>251</b> to change the entry in display list <b>430</b> that is the selected entry, and to choose to reconnect to the secure application program associated with the selected entry. In another embodiment, the user may operate keypad <b>251</b> to display additional detailed data associated with the selected entry.
Although the disclosed embodiments describe a fully functioning system and method for launching and controlling secure and non-secure application programs in wireless devices in a mobile ad-hoc communications network, the reader should understand that other equivalent embodiments exist. Since numerous modifications and variations will occur to those who review this disclosure, the system and method for launching and controlling secure and non-secure application programs resident in wireless devices in a mobile ad-hoc communications network is not limited to the exact construction and operation illustrated and disclosed. Furthermore, the disclosed invention may be distributed in the form of a computer readable medium of instructions including recordable media such as a removable disc, a hard disk drive, random access memory, flash memory, and read-only memory, as well as transmission media such as a digital or analog communication link. Accordingly, this disclosure intends all suitable modifications and equivalents to fall within the scope of the claims. In a preferred embodiment there is provided a system for controlling data communication in an ad-hoc network that connects a wireless device and a nearby wireless device, comprising: <ul id="ul0001" list-style="none" compact="compact"><li>a memory device; and a processor disposed in communication with the memory device, the processor configured to: <ul id="ul0002" list-style="none" compact="compact"><li>store an application directory having at least one entry, each entry including an application program identifier, attributes, and security parameters;</li><li>determine a priority for each entry in the application directory;</li><li>identify a selected entry based on the priority;</li><li>examine the attributes and the security parameters for the selected entry; and</li><li>establish a security association to support the data communication when the security parameters direct the selected entry to use a secure connection.</li></ul></li></ul> In a preferred embodiment there is provided a system, wherein the processor is further configured to: <ul id="ul0003" list-style="none" compact="compact"><li>receive a connection request from the nearby wireless device; and</li><li>send a first application directory to the nearby wireless device;</li><li>receive a second application directory from the nearby wireless device; and</li><li>create the application directory by combining the first application directory and the second application directory.</li></ul> In a preferred embodiment there is provided a system, wherein the attributes include a device identifier, a role, and control parameters. In a preferred embodiment there is provided a system, wherein the control parameters include an application state, and at least one user-defined application setting. In a preferred embodiment there is provided a, wherein a bit-string includes the security parameters, a value of the bit-string representing each of the security parameters. In a preferred embodiment there is provided a system, wherein the security parameters include an information security objective, a cryptography method for attaining the information security objective, and a level of security. In a preferred embodiment there is provided a system, wherein the information security objective includes maintaining confidentiality, ensuring integrity, authenticating a party, and protecting against replay or reuse. In a preferred embodiment there is provided a system, wherein the cryptography method includes a signature verification service, and an encryption algorithm. In a preferred embodiment there is provided a system, wherein the level of security is a minimum required level of security. In a preferred embodiment there is provided a system, wherein to determine the priority for each entry, the processor is further configured to: <ul id="ul0004" list-style="none" compact="compact"><li>compare the attributes for each entry in said at least one entry.</li></ul> In a preferred embodiment there is provided a system, wherein to establish the security association, the processor is further configured to: <ul id="ul0005" list-style="none" compact="compact"><li>query a database for an existing security association between the wireless device and the nearby wireless device that will satisfy the security parameters;</li><li>reuse the existing security association when the query of the database is successful; and</li><li>create a new security association when the query of the database is unsuccessful.</li></ul> In a preferred embodiment there is provided a system, wherein the processor is further configured to: <ul id="ul0006" list-style="none" compact="compact"><li>store the new security association in a connection log,</li><li>wherein the query of the database includes examination of the connection log.</li></ul> In a preferred embodiment there is provided a system, wherein to reuse the existing security association, the processor is further configured to: <ul id="ul0007" list-style="none" compact="compact"><li>notify the wireless device of the existing security association;</li><li>notify the nearby wireless device of the existing security association;</li><li>launch an application program that is referenced by the application program identifier associated with the selected entry when the attributes associated with the selected entry indicate an accommodating state for the launch of the application program; and</li><li>communicate over the secure connection with a counterpart application program on the nearby wireless device.</li></ul> In a preferred embodiment there is provided a system, wherein to create the new security association, the processor is further configured to: <ul id="ul0008" list-style="none" compact="compact"><li>update the priority of the selected entry to defer the creating of the new security association.</li></ul> In a preferred embodiment there is provided a system, wherein to create the new security association, the processor is further configured to: <ul id="ul0009" list-style="none" compact="compact"><li>establish a privileged side channel to the nearby wireless device;</li><li>negotiate the new security association over the privileged side channel; and</li><li>store the new security association.</li></ul> In a preferred embodiment there is provided a system, wherein the privileged side channel includes a proximity-based communication means, including an infrared data association port, or a direct connection. In a preferred embodiment there is provided a system, wherein to negotiate the new security association, the processor is further configured to: <ul id="ul0010" list-style="none" compact="compact"><li>send authentication data to the nearby wireless device;</li><li>receive counterpart authentication data from the nearby wireless device; and</li><li>generate the new security association based on the authentication data and the counterpart authentication data.</li></ul> In a preferred embodiment there is provided a system, wherein when the security parameters direct the selected entry to use a non-secure connection, the processor is further configured to: <ul id="ul0011" list-style="none" compact="compact"><li>notify the wireless device of the non-secure connection;</li><li>notify the nearby wireless device of the non-secure connection;</li><li>launch an application program that is referenced by the application program identifier associated with the selected entry when the attributes associated with the selected entry indicate an accommodating state for the launch of the application program; and</li><li>communicate over the non-secure connection with a counterpart application program on the nearby wireless device.</li></ul> In a preferred embodiment there is provided a system, wherein the wireless device initiates the data communication. In a preferred embodiment there is provided a system, wherein the wireless device stores the application directory. In a preferred embodiment there is provided a method for controlling data communication in an ad-hoc network that connects a wireless device and a nearby wireless device, comprising: <ul id="ul0012" list-style="none" compact="compact"><li>storing an application directory having at least one entry, each entry including an application program identifier, attributes, and security parameters;</li><li>determining a priority for each entry in the application directory;</li><li>identifying a selected entry based on the priority;</li><li>examining the attributes and the security parameters for the selected entry; and</li><li>establishing a security association to support the data communication when the security parameters direct the selected entry to use a secure connection.</li></ul> In a preferred embodiment there is provided a method, further comprising: <ul id="ul0013" list-style="none" compact="compact"><li>receiving a connection request from the nearby wireless device; and</li><li>sending a first application directory to the nearby wireless device;</li><li>receiving a second application directory from the nearby wireless device; and</li><li>creating the application directory by combining the first application directory and the second application directory.</li></ul> In a preferred embodiment there is provided a method, wherein the attributes include a device identifier, a role, and control parameters. In a preferred embodiment there is provided a method, wherein the control parameters include an application state, and at least one user-defined application setting. In a preferred embodiment there is provided a method, wherein a bit-string includes the security parameters, a value of the bit-string representing each of the security parameters. In a preferred embodiment there is provided a method, wherein the security parameters include an information security objective, a cryptography method for attaining the information security objective, and a level of security. In a preferred embodiment there is provided a method, wherein the information security objective includes maintaining confidentiality, ensuring integrity, authenticating a party, and protecting against replay or reuse. In a preferred embodiment there is provided a method, wherein the cryptography method includes a signature verification service, and an encryption algorithm. In a preferred embodiment there is provided a method, wherein the level of security is a minimum required level of security. In a preferred embodiment there is provided a method, wherein the determining of the priority for each entry further comprises: <ul id="ul0014" list-style="none" compact="compact"><li>comparing the attributes for each entry in said at least one entry.</li></ul> In a preferred embodiment there is provided a method, wherein the establishing of the security association further comprises: <ul id="ul0015" list-style="none" compact="compact"><li>querying a database for an existing security association between the wireless device and the nearby wireless device that will satisfy the security parameters;</li><li>reusing the existing security association when the query of the database is successful; and</li><li>creating a new security association when the query of the database is unsuccessful.</li></ul> In a preferred embodiment there is provided a method, further comprising: <ul id="ul0016" list-style="none" compact="compact"><li>storing the new security association in a connection log,</li><li>wherein the query of the database includes examination of the connection log.</li></ul> In a preferred embodiment there is provided a method, wherein the reusing of the existing security association further comprises: <ul id="ul0017" list-style="none" compact="compact"><li>notifying the wireless device of the existing security association;</li><li>notifying the nearby wireless device of the existing security association;</li><li>launching an application program that is referenced by the application program identifier associated with the selected entry when the attributes associated with the selected entry indicate an accommodating state for the launch of the application program; and</li><li>communicating over the secure connection with a counterpart application program on the nearby wireless device.</li></ul> In a preferred embodiment there is provided a method, wherein the creating of the new security association further comprises: <ul id="ul0018" list-style="none" compact="compact"><li>updating the priority of the selected entry to defer the creating of the new security association.</li></ul> In a preferred embodiment there is provided a method, wherein the creating of the new security association further comprises: <ul id="ul0019" list-style="none" compact="compact"><li>establishing a privileged side channel to the nearby wireless device;</li><li>negotiating the new security association over the privileged side channel; and</li><li>storing the new security association.</li></ul> In a preferred embodiment there is provided a method, wherein the privileged side channel includes a proximity-based communication means, including an infrared data association port, or a direct connection. In a preferred embodiment there is provided a method, wherein the negotiating of the new security association further comprises: <ul id="ul0020" list-style="none" compact="compact"><li>sending authentication data to the nearby wireless device;</li><li>receiving counterpart authentication data from the nearby wireless device; and</li><li>generating the new security association based on the authentication data and the counterpart authentication data.</li></ul> In a preferred embodiment there is provided a method, wherein when the security parameters direct the selected entry to use a non-secure connection, the method further comprises: <ul id="ul0021" list-style="none" compact="compact"><li>notifying the wireless device of the non-secure connection;</li><li>notifying the nearby wireless device of the non-secure connection;</li><li>launching an application program that is referenced by the application program identifier associated with the selected entry when the attributes associated with the selected entry indicate an accommodating state for the launch of the application program; and</li><li>communicating over the non-secure connection with a counterpart application program on the nearby wireless device.</li></ul> In a preferred embodiment there is provided a method, wherein the wireless device initiates the data communication. In a preferred embodiment there is provided a method, wherein the wireless device stores the application directory. In a preferred embodiment there is provided a computer program product, tangibly stored on a computer-readable medium, for controlling data communication in an ad-hoc network that connects a wireless device and a nearby wireless device, comprising instructions operable to cause a programmable processor to: <ul id="ul0022" list-style="none" compact="compact"><li>store an application directory having at least one entry, each entry including an application program identifier, attributes, and security parameters;</li><li>determine a priority for each entry in the application directory;</li><li>identify a selected entry based on the priority;</li><li>examine the attributes and the security parameters for the selected entry; and</li><li>establish a security association to support the data communication when the security parameters direct the selected entry to use a secure connection.</li></ul> In a preferred embodiment there is provided a computer program product, further comprising instructions operable to cause the programmable processor to: <ul id="ul0023" list-style="none" compact="compact"><li>receive a connection request from the nearby wireless device; and</li><li>send a first application directory to the nearby wireless device;</li><li>receive a second application directory from the nearby wireless device; and</li><li>create the application directory by combining the first application directory and the second application directory.</li></ul> In a preferred embodiment there is provided a computer program product, further comprising instructions operable to cause the programmable processor to: <ul id="ul0024" list-style="none" compact="compact"><li>compare the attributes for each entry in said at least one entry.</li></ul> In a preferred embodiment there is provided a computer program product, further comprising instructions operable to cause the programmable processor to: <ul id="ul0025" list-style="none" compact="compact"><li>query a database for an existing security association between the wireless device and the nearby wireless device that will satisfy the security parameters;</li><li>reuse the existing security association when the query of the database is successful; and</li><li>create a new security association when the query of the database is unsuccessful.</li></ul> In a preferred embodiment there is provided a computer program product, further comprising instructions operable to cause the programmable processor to: <ul id="ul0026" list-style="none" compact="compact"><li>store the new security association in a connection log,</li><li>wherein the query of the database includes examination of the connection log.</li></ul> In a preferred embodiment there is provided a computer program product, further comprising instructions operable to cause the programmable processor to: <ul id="ul0027" list-style="none" compact="compact"><li>notify the wireless device of the existing security association;</li><li>notify the nearby wireless device of the existing security association;</li><li>launch an application program that is referenced by the application program identifier associated with the selected entry when the attributes associated with the selected entry indicate an accommodating state for the launch of the application program; and</li><li>communicate over the secure connection with a counterpart application program on the nearby wireless device.</li></ul> In a preferred embodiment there is provided a computer program product, further comprising instructions operable to cause the programmable processor to: <ul id="ul0028" list-style="none" compact="compact"><li>update the priority of the selected entry to defer the creating of the new security association.</li></ul> In a preferred embodiment there is provided a computer program product, further comprising instructions operable to cause the programmable processor to: <ul id="ul0029" list-style="none" compact="compact"><li>establish a privileged side channel to the nearby wireless device;</li><li>negotiate the new security association over the privileged side channel; and</li><li>store the new security association.</li></ul> In a preferred embodiment there is provided a computer program product, further comprising instructions operable to cause the programmable processor to: <ul id="ul0030" list-style="none" compact="compact"><li>send authentication data to the nearby wireless device;</li><li>receive counterpart authentication data from the nearby wireless device; and</li><li>generate the new security association based on the authentication data and the counterpart authentication data.</li></ul> In a preferred embodiment there is provided a computer program product, wherein when the security parameters direct the selected entry to use a non-secure connection, the computer program product further comprises instructions operable to cause the programmable processor to: <ul id="ul0031" list-style="none" compact="compact"><li>notify the wireless device of the non-secure connection;</li><li>notify the nearby wireless device of the non-secure connection;</li><li>launch an application program that is referenced by the application program identifier associated with the selected entry when the attributes associated with the selected entry indicate an accommodating state for the launch of the application program; and</li><li>communicate over the non-secure connection with a counterpart application program on the nearby wireless device.</li></ul> In a preferred embodiment there is provided a system for controlling data communication in an ad-hoc network that connects a wireless device and a nearby wireless device, comprising: <ul id="ul0032" list-style="none" compact="compact"><li>means for storing an application directory having at least one entry, each entry including an application program identifier, attributes, and security parameters;</li><li>means for determining a priority for each entry in the application directory;</li><li>means for identifying a selected entry based on the priority;</li><li>means for examining the attributes and the security parameters for the selected entry; and</li><li>means for establishing a security association to support the data communication when the security parameters direct the selected entry to use a secure connection.</li></ul> In a preferred embodiment there is provided a system, further comprising: <ul id="ul0033" list-style="none" compact="compact"><li>means for receiving a connection request from the nearby wireless device; and</li><li>means for sending a first application directory to the nearby wireless device;</li><li>means for receiving a second application directory from the nearby wireless device; and</li><li>means for creating the application directory by combining the first application directory and the second application directory.</li></ul> In a preferred embodiment there is provided a system, wherein the determining of the priority for each entry further comprises: <ul id="ul0034" list-style="none" compact="compact"><li>means for comparing the attributes for each entry in said at least one entry.</li></ul> In a preferred embodiment there is provided a system, wherein the means for the establishing of the security association further comprises: <ul id="ul0035" list-style="none" compact="compact"><li>means for querying a database for an existing security association between the wireless device and the nearby wireless device that will satisfy the security parameters;</li><li>means for reusing the existing security association when the query of the database is successful; and</li><li>means for creating a new security association when the query of the database is unsuccessful.</li><li>means for establishing a privileged side channel to the nearby wireless device;</li><li>means for negotiating the new security association over the privileged side channel; and</li><li>means for storing the new security association.</li></ul> In a preferred embodiment there is provided a system, wherein the means for the negotiating of the new security association further comprises: <ul id="ul0036" list-style="none" compact="compact"><li>means for sending authentication data to the nearby wireless device;</li><li>means for receiving counterpart authentication data from the nearby wireless device; and</li><li>means for generating the new security association based on the authentication data and the counterpart authentication data.</li></ul> In a preferred embodiment there is provided a system, wherein when the security parameters direct the selected entry to use a non-secure connection, further comprising: <ul id="ul0037" list-style="none" compact="compact"><li>means for notifying the wireless device of the non-secure connection;</li><li>means for notifying the nearby wireless device of the non-secure connection;</li><li>means for launching an application program that is referenced by the application program identifier associated with the selected entry when the attributes associated with the selected entry indicate an accommodating state for the launch of the application program; and</li><li>means for communicating over the non-secure connection with a counterpart application program on the nearby wireless device.</li></ul> In a preferred embodiment there is provided a system for reconnecting to a secure connection in an In a preferred embodiment there is provided a system, further comprising: <ul id="ul0038" list-style="none" compact="compact"><li>means for storing the new security association in a connection log,</li><li>wherein the query of the database includes examination of the connection log.</li></ul> In a preferred embodiment there is provided a system, wherein the means for the reusing of the existing security association further comprises: <ul id="ul0039" list-style="none" compact="compact"><li>means for notifying the wireless device of the existing security association;</li><li>means for notifying the nearby wireless device of the existing security association;</li><li>means for launching an application program that is referenced by the application program identifier associated with the selected entry when the attributes associated with the selected entry indicate an accommodating state for the launch of the application program; and</li><li>means for communicating over the secure connection with a counterpart application program on the nearby wireless device.</li></ul> In a preferred embodiment there is provided a system, wherein the means for the creating of the new security association further comprises: <ul id="ul0040" list-style="none" compact="compact"><li>means for updating the priority of the selected entry to defer the creating of the new security association.</li></ul> In a preferred embodiment there is provided a system, wherein the means for the creating of the new security association further comprises: <ul id="ul0041" list-style="none" compact="compact"><li>ad-hoc network that connects a wireless device and a nearby wireless device, the wireless device storing an application directory having an entry that associates an application program on the wireless device to a counterpart application program on the nearby wireless device, the entry including an application program identifier, attributes, and security parameters, comprising: <ul id="ul0042" list-style="none" compact="compact"><li>a memory device; and</li><li>a processor disposed in communication with the memory device, the processor configured to: <ul id="ul0043" list-style="none" compact="compact"><li>store a security association between the wireless device and the nearby wireless device when the nearby wireless device enters the ad-hoc network for a first encounter;</li><li>store a copy of the security association;</li><li>remove the security association when the first encounter terminates; and</li><li>establish a secure connection to the nearby wireless device based on the copy of the security association when the nearby wireless device enters the ad-hoc network for a second encounter.</li></ul></li></ul></li></ul> In a preferred embodiment there is provided a system, wherein the storing of the security association is to a short-term storage device. In a preferred embodiment there is provided a system, wherein the storing of the copy of the security association is to a long-term storage device. In a preferred embodiment there is provided a system, wherein to establish the secure connection to the nearby wireless device based on the copy of the security association when the nearby wireless device enters the ad-hoc network for the second encounter, the processor is further configured to: <ul id="ul0044" list-style="none" compact="compact"><li>search a connection log to locate the copy of the security association;</li><li>launch the application program associated with the copy of the security association;</li><li>configure the secure connection using the security parameters associated with the copy of the security association; and</li><li>communicate over the secure connection with the counterpart application program.</li></ul> In a preferred embodiment there is provided a system, wherein the processor is further configured to: <ul id="ul0045" list-style="none" compact="compact"><li>verify that the copy of the security association will satisfy the security parameters for the second encounter.</li></ul> In a preferred embodiment there is provided a system, wherein to search the connection log to locate the copy of the security association, the processor is further configured to: <ul id="ul0046" list-style="none" compact="compact"><li>retrieve at least one previous connection from the connection log; and</li><li>identify one of said at least one previous connection as the copy of the security association.</li></ul> In a preferred embodiment there is provided a method for reconnecting to a secure connection in an ad-hoc network that connects a wireless device and a nearby wireless device, the wireless device storing an application directory having an entry that associates an application program on the wireless device to a counterpart application program on the nearby wireless device, the entry including an application program identifier, attributes, and security parameters, comprising: <ul id="ul0047" list-style="none" compact="compact"><li>storing a security association between the wireless device and the nearby wireless device when the nearby wireless device enters the ad-hoc network for a first encounter;</li><li>storing a copy of the security association;</li><li>removing the security association when the first encounter terminates; and</li><li>establishing a secure connection to the nearby wireless device based on the copy of the security association when the nearby wireless device enters the ad-hoc network for a second encounter.</li></ul> In a preferred embodiment there is provided a method, wherein the storing of the security association is to a short-term storage device. In a preferred embodiment there is provided a method, wherein the storing of the copy of the security association is to a long-term storage device. In a preferred embodiment there is provided a method, wherein the establishing of the secure connection to the nearby wireless device based on the copy of the security association when the nearby wireless device enters the ad-hoc network for the second encounter further comprises: <ul id="ul0048" list-style="none" compact="compact"><li>searching a connection log to locate the copy of the security association;</li><li>launching the application program associated with the copy of the security association;</li><li>configuring the secure connection using the security parameters associated with the copy of the security association; and</li><li>communicating over the secure connection with the counterpart application program.</li></ul> In a preferred embodiment there is provided a method, further comprising: <ul id="ul0049" list-style="none" compact="compact"><li>verifying that the copy of the security association will satisfy the security parameters for the second encounter.</li></ul> In a preferred embodiment there is provided a method, wherein the searching of the connection log to locate the copy of the security association further comprises: <ul id="ul0050" list-style="none" compact="compact"><li>retrieving at least one previous connection from the connection log; and</li><li>identifying one of said at least one previous connection as the copy of the security association.</li></ul> In a preferred embodiment there is provided a computer program product, tangibly stored on a computer-readable medium, for reconnecting to a secure connection in an ad-hoc network that connects a wireless device and a nearby wireless device, the wireless device storing an application directory having an entry that associates an application program on the wireless device to a counterpart application program on the nearby wireless device, the entry including an application program identifier, attributes, and security parameters, comprising instructions operable to cause a programmable processor to: <ul id="ul0051" list-style="none" compact="compact"><li>store a security association between the wireless device and the nearby wireless device when the nearby wireless device enters the ad-hoc network for a first encounter;</li><li>store a copy of the security association;</li><li>remove the security association when the first encounter terminates; and</li><li>establish a secure connection to the nearby wireless device based on the copy of the security association when the nearby wireless device enters the ad-hoc network for a second encounter.</li></ul> In a preferred embodiment there is provided a computer program product, further comprising instructions operable to cause the programmable processor to: <ul id="ul0052" list-style="none" compact="compact"><li>search a connection log to locate the copy of the security association;</li><li>launch the application program associated with the copy of the security association;</li><li>configure the secure connection using the security parameters associated with the copy of the security association; and</li><li>communicate over the secure connection with the counterpart application program.</li></ul> In a preferred embodiment there is provided a computer program product, further comprising instructions operable to cause the programmable processor to: <ul id="ul0053" list-style="none" compact="compact"><li>verify that the copy of the security association will satisfy the security parameters for the second encounter.</li></ul> In a preferred embodiment there is provided a computer program product, further comprising instructions operable to cause the programmable processor to: <ul id="ul0054" list-style="none" compact="compact"><li>retrieve at least one previous connection from the connection log; and</li><li>identify one of said at least one previous connection as the copy of the security association.</li></ul> In a preferred embodiment there is provided a system for reconnecting to a secure connection in an ad-hoc network that connects a wireless device and a nearby wireless device, the wireless device storing an application directory having an entry that associates an application program on the wireless device to a counterpart application program on the nearby wireless device, the entry including an application program identifier, attributes, and security parameters, comprising: <ul id="ul0055" list-style="none" compact="compact"><li>means for storing a security association between the wireless device and the nearby wireless device when the nearby wireless device enters the ad-hoc network for a first encounter;</li><li>means for storing a copy of the security association;</li><li>means for removing the security association when the first encounter terminates; and</li><li>means for establishing a secure connection to the nearby wireless device based on the copy of the security association when the nearby wireless device enters the ad-hoc network for a second encounter.</li></ul> In a preferred embodiment there is provided a system, wherein the means for establishing the secure connection to the nearby wireless device based on the copy of the security association when the nearby wireless device enters the ad-hoc network for the second encounter further comprises: <ul id="ul0056" list-style="none" compact="compact"><li>means for searching a connection log to locate the copy of the security association;</li><li>means for launching the application program associated with the copy of the security association;</li><li>means for configuring the secure connection using the security parameters associated with the copy of the security association; and</li><li>means for communicating over the secure connection with the counterpart application program.</li></ul> In a preferred embodiment there is provided a system, further comprising: <ul id="ul0057" list-style="none" compact="compact"><li>means for verifying that the copy of the security association will satisfy the security parameters for the second encounter.</li></ul> In a preferred embodiment there is provided a system, wherein the means for searching the connection log to locate the copy of the security association further comprises: <ul id="ul0058" list-style="none" compact="compact"><li>means for retrieving at least one previous connection from the connection log; and</li><li>means for identifying one of said at least one previous connection as the copy of the security association.</li></ul> In a preferred embodiment there is provided a graphical user interface for reconnecting to a secure connection in an ad-hoc network that connects a wireless device and a nearby wireless device, the wireless device storing an application directory having an entry that associates an application program on the wireless device to a counterpart application program on the nearby wireless device, the entry including an application program identifier, attributes, and security parameters, comprising: <ul id="ul0059" list-style="none" compact="compact"><li>a first region of a video display connected to the wireless device, the first region including a display list storing at least one previous connection between the wireless device and the nearby wireless device,</li><li>wherein a user operates an input device connected to the wireless device to identify one of said at least one previous connection as a selected previous connection, and</li><li>wherein the user operates the input device connected to the wireless device to launch the application program associated with the selected previous connection, configure the secure connection using the security parameters associated with the selected previous connection, and communicate over the secure connection with the counterpart application program.</li></ul> In a preferred embodiment there is provided a graphical user interface, wherein a memory connected to the wireless device stores a connection log that includes connection data, and wherein the connection data populates the display list. In a preferred embodiment there is provided a graphical user interface, wherein to identify one of said at least at least one previous connection as the selected previous connection, the user selects an item in the display list by highlighting the item, displaying the item in reverse video, or displaying the item in a different font type, font size, or font style. In a preferred embodiment there is provided a graphical user interface, wherein the user verifies that the selected previous connection is a copy of the entry.
Contents6
7 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7
Every citation, both waysCites: the store holds 2 of 3
| Document | Relation | Office | Cited during |
|---|---|---|---|
| WO2010075339A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| WO0072506A | Cites | World Intellectual Property Organization (WIPO) | – |
| US2003069016A1 | Cites | United States of America | – |
| VARIOUS: "Windows NT Workstation" INTERNET CITATION, [Online] 2 November 2003 (2003-11-02), pages 1-14, XP002323988 Retrieved from the Internet: URL:www.meetsoon.com/sid3.html> [retrieved on 2005-04-11] | Non-patent | – | – |
| BOBBA R B ET AL: "Bootstrapping security associations for routing in mobile ad-hoc networks" GLOBECOM'03. 2003 - IEEE GLOBAL TELECOMMUNICATIONS CONFERENCE. CONFERENCE PROCEEDINGS. SAN FRANCISCO, DEC. 1 - 5, 2003, IEEE GLOBAL TELECOMMUNICATIONS CONFERENCE, NEW YORK, NY : IEEE, US, vol. VOL. 7 OF 7, 1 December 2003 (2003-12-01), pages 1511-1515, XP010677547 ISBN: 0-7803-7974-8 | Non-patent | – | – |
| KOLSI O ET AL: "MIDP 2.0 security enhancements" SYSTEM SCIENCES, 2004. PROCEEDINGS OF THE 37TH ANNUAL HAWAII INTERNATIONAL CONFERENCE ON 5-8 JAN. 2004, PISCATAWAY, NJ, USA,IEEE, 5 January 2004 (2004-01-05), pages 287-294, XP010682881 ISBN: 0-7695-2056-1 | Non-patent | – | – |
33 members in 11 offices
Priority claims4
| Document | Office | Kind | Date |
|---|---|---|---|
| 784215 | United States of America | – | |
| 78421504 | United States of America | A | |
| 784215 | – | – | – |
| US20040784215 | – | – | – |
Members33
| Document | Office | Kind | |
|---|---|---|---|
| US2004085947A1 | United States of America | A1 | |
| US2004087274A1 | United States of America | A1 | |
| CA2501566A1 | Canada | A1 | |
| CA2683998A1 | Canada | A1 | |
| WO2004040918A2 | World Intellectual Property Organization (WIPO) | A2 | |
| AU2003278417A1 | Australia | A1 | |
| US2005059379A1 | United States of America | A1 | |
| WO2004040918A3 | World Intellectual Property Organization (WIPO) | A3 | |
| US6909721B2 | United States of America | B2 | |
| KR20050063798A | Republic of Korea | A | |
| EP1556966A2 | European Patent Office (EPO) | A2 | |
| US2005185660A1 | United States of America | A1 | |
| EP1569411A1 | European Patent Office (EPO) | A1 | |
| BR0315766A | Brazil | A | |
| CN1708924A | China | A | |
| JP2006510124A | Japan | A | |
| KR100712047B1 | Republic of Korea | B1 | |
| EP1569411B1This record | European Patent Office (EPO) | B1 | |
| AT361626T | Austria | T | |
| ATE361626T1 | Austria | T1 | |
| AU2003278417B2 | Australia | B2 | |
| DE602005001001D1 | Germany | D1 | |
| DE602005001001T2 | Germany | T2 | |
| JP2008017495A | Japan | A | |
| JP4050297B2 | Japan | B2 | |
| EP1556966A4 | European Patent Office (EPO) | A4 | |
| US7492777B2 | United States of America | B2 | |
| US7545941B2 | United States of America | B2 | |
| US7590097B2 | United States of America | B2 | |
| CN100550795C | China | C | |
| CA2683998C | Canada | C | |
| JP4563425B2 | Japan | B2 | |
| CA2501566C | Canada | C |
65 legal events, as 7 offices reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | Office | |
|---|---|---|---|
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Gb: european patent ceased through non-payment of renewal feeCeasedGBPC | GBPC | EP | |
| Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal feeWithdrawnR119 | R119 | DE | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Change of applicant/patenteeR081 | R081 | DE | |
| Change of representativeR082 | R082 | DE | |
| Change of applicant/patenteeR081 | R081 | DE | |
| Change of applicant/patenteeR081 | R081 | DE | |
| Amendments to the register in respect of changes of name or changes affecting rights (sect. 32/1977)REGISTERED BETWEEN 20150305 AND 20150311732E | 732E | GB | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Notification of lapseLapsedST | ST | FR | |
| Lapsed because of non-payment of the annual feeLapsedV1 | V1 | NL | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| No opposition filedOpposition26N | 26N | EP | |
| No opposition filed within time limitOppositionORIGINAL CODE: 0009261PLBE | PLBE | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: NO OPPOSITION FILED WITHIN TIME LIMITSTAA | STAA | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Patent ceasedCeasedPL | PL | CH | |
| Fr: translation filedET | ET | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Corresponds to:REF | REF | EP | |
| European patents granted designating irelandGrantedFG4D | FG4D | IE | |
| European patent takes effect as a national patent in ch/liEP | EP | CH | |
| Designated contracting statesAK | AK | EP | |
| European patent grantedGrantedFG4D | FG4D | GB | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| (expected) grantORIGINAL CODE: 0009210GRAA | GRAA | EP | |
| Grant fee paidORIGINAL CODE: EPIDOSNIGR3GRAS | GRAS | EP | |
| Despatch of communication of intention to grant a patentORIGINAL CODE: EPIDOSNIGR1GRAP | GRAP | EP | |
| Designation fees paidAKX | AKX | EP | |
| Request for examination filed17P | 17P | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| Designated contracting statesAK | AK | EP | |
| Request for extension of the european patentAX | AX | EP | |
| Public reference made under article 153(3) epc to a published international application that has entered the european phaseORIGINAL CODE: 0009012PUAI | PUAI | EP |
Numbers
- Publication
- 1569411
- Publication, DOCDB
- 1569411
- Publication, EPODOC
- EP1569411
- Application
- 5003698
- Application, DOCDB
- 05003698
- Application, EPODOC
- EP20050003698
Titles3
- German
- Verfahren, Vorrichtungen und Computerprogramm-Produkte für die Initialisierung einer Sicherheitsbeziehung basierend auf physikalischer Nähe in einem drahtlosen Adhoc-Netzwerk
- English
- Methods, apparatuses and program products for initializing a security association based on physical proximity in a wireless ad-hoc network
- French
- Méthodes, systèmes et logiciels pour initialiser une association de sécurité basée sur la proximité physique dans un réseau sans fil ad-hoc
Classification
- CPC, 10
- H04L63/0492
- H04L67/51
- H04L63/08
- H04W12/06
- H04W28/18
- H04W84/18
- H04L67/14
- H04L67/04
- H04W76/10
- H04W12/50
- IPC, 10
- H04L29 06
- H04L12 56
- H04L29 08
- G06F11 30
- G06F12 14
- H04L9 00
- H04L9 32
- H04M1 66
- H04M1 68
- H04M3 16
Designated states1
- Contracting states, 1
- Türkiye
