Patent Publication Number: US-8989705-B1

Title: Secure placement of centralized media controller application in mobile access terminal

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation in part of U.S. patent application Ser. No. 12/486,873, filed Jun. 18, 2009, entitled “Mobile Access Terminal with Local Call Session Control Function,” by Paczkowski, et al., which is incorporated herein by reference in its entirety. 
    
    
     STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT 
     Not applicable. 
     REFERENCE TO A MICROFICHE APPENDIX 
     Not applicable. 
     BACKGROUND 
     Mobile access terminals (MATs) are known in a wide variety of forms including mobile phones, personal digital assistants (PDAs), wireless enabled laptop computers, wireless enabled notebook computers, and others. As semiconductor technology advances, producing ever more powerful logic processors, and as wireless networks evolve to higher data throughput rates, the functionality that can be provided from mobile access terminals becomes more powerful. The internet protocol multimedia system (IMS) communications architecture has become a common core of the communications networks. 
     SUMMARY 
     In an embodiment, a mobile access terminal for use in an internet protocol multimedia system is disclosed. The mobile access terminal comprises a first region of memory, a device application stored in the first region of memory, a second region of memory that implements a trusted security sector, and a centralized media controller application stored in the trusted security sector. The centralized media controller application is mated and paired with an incident internet protocol multimedia system network and wherein the centralized media controller application authenticates the device application and provides the device application with communications connectivity with the incident internet protocol multimedia system network. 
     In an embodiment, a mobile access terminal for use in an internet protocol multimedia system is disclosed. The mobile access terminal comprises a first memory chip, a first device application stored in the first memory chip, a second memory chip that implements a trusted security sector, and a trust exchange service stored in the trusted security sector. The mobile access terminal further comprises a centralized media controller application stored in the trusted security sector, wherein the centralized media controller application is mated and paired with an incident internet protocol multimedia system network and wherein the centralized media controller application receives internet protocol multimedia system access client requests from the first device application via trust exchange service, authenticates the first device application, and provides the first device application with communications connectivity with the incident internet protocol multimedia system network. 
     A method of establishing a device to device wireless voice call is disclosed. The method comprises receiving a voice call origination request by a centralized media controller application, where the centralized media controller application executes in a trusted security sector of a first mobile access terminal, where the called party designated by the voice call origination request is a second mobile access terminal, wherein the first mobile access terminal is coupled to a micro network. The method further comprises determining by the centralized media controller application using the session initiation protocol (SIP) presence function that the second mobile access terminal is accessible in the micro network. The method further comprises establishing by the centralized media controller application a voice communication channel between the first mobile access terminal and the second mobile access terminal using wireless links provided by the micro network, wherein the wireless links do not involve a base transceiver station (BTS). 
     These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a more complete understanding of the present disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts. 
         FIG. 1  illustrates a system according to an embodiment of the disclosure. 
         FIG. 2  illustrates a method according to an embodiment of the disclosure. 
         FIG. 3  illustrates a computer system suitable for implementing the aspects of an embodiment of the disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     It should be understood at the outset that although illustrative implementations of one or more embodiments are illustrated below, the disclosed systems and methods may be implemented using any number of techniques, whether currently known or not yet in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, but may be modified within the scope of the appended claims along with their full scope of equivalents. 
     In an embodiment, a mobile access terminal (MAT) comprises a trusted security sector that is an execution and/or memory region providing enhanced security. The trusted security sector may interact with other applications and/or features executing and/or stored on the mobile access terminal, outside of the trusted security sector in what may be referred to as a permissive sector, via the mediation of a trust exchange service. For example, a centralized media controller application stored and executed in the trusted security sector of the mobile access terminal may provide a variety of communication network services to device applications executing in the permissive sector of the mobile access terminal that would normally be provided by communication servers located behind a firewall in a communication service provider network. 
     In an embodiment, the centralized media controller application provides internet protocol multimedia system (IMS) proxy services. In an embodiment, the centralized media controller application may implement one or more extracted call session control function (CSCF) server applications that provides a reduced set of CSCF server functionality. The centralized media controller application may encapsulate highly confidential information that a service provider would not want to be readily hacked into by electronic criminals. By storing and executing the centralized media controller application in the trusted security sector, the vulnerability of the centralized media controller application to hacking or other security breaches is reduced. 
     In an embodiment, the mobile access terminal promotes a near field communication transceiver of the mobile access terminal engaging in session initiation protocol (SIP) message exchanges to establish new communication scenarios. For example, a mobile access terminal may download a door scanner application and associated credentials in preparation for visiting a new office. When the mobile access terminal is presented at the office building door scanner, the near field communication transceiver queries the door scanner application that was down loaded to the mobile access terminal to obtain electronic credentials, and then provides the needed electronic credentials to the office building door scanner to pass through the door. The door scanner application downloaded to the mobile access terminal, triggered by the interaction with the near field communication transceiver, sends a SIP invite message to the centralized media controller application on the mobile access terminal to retrieve media content via the macro cellular network, for example media content that provides graphical information for finding the correct floor and the correct room for a scheduled meeting. Additionally, the SIP invite message sent to the centralized media controller application on the mobile access terminal may request the centralized media controller application to establish a media stream to download documents related to a meeting to a laptop computer belonging to the user of the mobile access terminal. 
     As another example, the near field communication transceiver of the mobile access terminal may complete a payment transaction at a point-of-sale terminal, and the point-of-sale terminal may send a SIP invite via the macro cellular network to the centralized media controller application to play a video, for example a promotional message, on a display of the mobile access terminal while the payment transaction is completed. 
     In an embodiment, an extracted CSCF server application—which may be a component or portion of the centralized media controller application—may promote a user-to-user communication mode that unloads the macro cellular network. For example, in the presence of a femtocell, a calling application on a first mobile access terminal may attempt to originate a call to a second mobile access terminal, when both the first and second mobile access terminal are in the coverage of the femtocell. The extracted CSCF server application can send out a SIP invite message to the second mobile access terminal and determine that the second mobile access terminal is receiving coverage from the same femtocell that is providing coverage to the first mobile access terminal. In this case, the extracted CSCF server can set up the bearer channel to route the communication traffic between the two mobile access terminals directly through the femtocell—a device to device communication mode—and bypass the macro cellular network, thereby conserving the resources of the macro cellular network. 
     Turning now to  FIG. 1 , a communication system  500  is described. In an embodiment, the communication system  500  comprises a mobile access terminal  502  comprising a trusted security sector  504 , a permissive sector  508 , a near field communication transceiver  514 , and a secure element  516 . In an embodiment, the trusted security sector  504  comprises a centralized media controller application  506 —for example an internet protocol multimedia system (IMS) call session control function (CSCF) server application. The permissive sector  508  comprises one or more device applications  510 . The mobile access terminal  502  may engage in a variety of communication exchanges. The mobile access terminal  502  may comprise a variety of devices such as a mobile phone, a personal digital assistant (PDA), a media player, a laptop computer, a tablet computer, and other electronic devices having a macro cellular radio transceiver. 
     In an embodiment, the system  500  comprises a network  531 . The network  531  may be a private network, a public network, or a combination thereof. The network  531  may promote voice communications and data communications. Portions of the network  531  may provide an IMS network. The mobile access terminal  502  may couple to the network  531  by a variety of communication paths. The mobile access terminal  502  may communicate with a base transceiver station  532  via a wireless link according to any of a variety of wireless communications protocols, including but not limited to code division multiple access (CDMA), long-term evolution (LTE), worldwide interoperability for microwave access (WiMAX), global system for mobile communications (GSM), or other wireless communication protocol. The wireless link between the mobile access terminal  502  and the base transceiver station  532  may couple the mobile access terminal  502  to the network  531 . 
     In an embodiment, the mobile access terminal  502  may communicate with a point-of-sale (POS) terminal  530  using the near field communication transceiver  514  based on a short range wireless communication protocol, and the point-of-sale terminal  530  may couple the mobile access terminal  502  to the network  531 . In an embodiment, the mobile access terminal  502  may communicate with a door scanner via the near field communication transceiver  514  based on a short range wireless communication protocol. In an embodiment, the mobile access terminal  502  may communicate with a femtocell  540  via a wireless link according to any of a variety of wireless protocols, including but not limited to code division multiple access (CDMA), long-term evolution (LTE), worldwide interoperability for microwave access (WiMAX), global system for mobile communications (GSM), or other wireless communication protocol. 
     In an embodiment, the femtocell  540  may couple the mobile access terminal  502  to a second mobile access terminal  542 . In some contexts, this may be referred to as device-to-device communication, from the point of view that the traffic does not need to pass over the network  531 . A femtocell, as known to those skilled in the art, may be a small cellular base station that may be designed for use in a home or small business. The femtocell provides wireless links, for example to mobile phones within its relatively small coverage area, according to standard cellular wireless protocols and couples these links, if needed, over a wired link to the core network or a service provider&#39;s network, for example the network  531 . A femtocell, for example the femtocell  540 , may be said to provide a micro cellular network to mobile access terminals within its small coverage area. The coverage area of base transceiver stations such as the base transceiver station  532  may be referred to as part of the macro cellular network. The femtocell  540  may extend cellular wireless coverage to dead zones or zones of poor macro cellular wireless coverage, for example to improve wireless coverage indoors. Some further details of communications scenarios enabled by loading the centralized media controller application  506  in the trusted security sector  504  and/or on the mobile access terminal  502  are discussed hereinafter. 
     As is known to those of skill in the art, a secure element (SE) may be a specialized semiconductor device and/or semiconductor chip that is designed to thwart attempts to reverse engineer the secure element or to physically slice and examine the secure element under a microscope. In an embodiment, the secure element  516  may be provided in a separate first memory chip. This semiconductor technology may be employed to store confidential information such as financial account balances, fund balances, and/or electronic money. The secure element  516  may allow only a limited number of applications to access the secure element  516  and/or may limit the functions that may be initiated by applications. In an embodiment, the near field communication transceiver  514  may be coupled to the secure element  516  to promote secure payment interactions between a fund stored in the secure element  516  and the point-of-sale terminal  530 . 
     In an embodiment, the trusted security sector  504  may be provided in a secure area of a memory chip shared with the permissive sector  508  or in a separate memory chip. In an embodiment, the trusted security sector  504  may share the first memory chip with the secure element  516 . Alternatively, the trusted security sector  504  may be provided in a separate second memory chip. The trusted security sector  504  may be provided as what may be conceptualized as “invisible space.” In an embodiment, at least some of the memory addresses occupied by the trusted security sector  504  may be inaccessible to device applications  510  executing out of permissive sector  508 . This demarcation of accessible memory addresses versus inaccessible memory addresses may be provided by the operating system of the mobile access terminal  502 . In an embodiment, the trusted security sector  504  may encapsulate a trusted execution environment (TEE), for example conforming at least partially to the Global Platform 2.0 or later revision trusted execution environment standard. It is understood, however, that the trusted security sector  504  is contemplated to provide further functionality than that envisioned by the trusted execution environment standards. 
     In an embodiment, a trust exchange service  512  is provided in the trusted security sector  504 . The trust exchange service  512  may be conceptualized as bridging between the permissive sector  508  and the trusted security sector  504 . The trust exchange service  512  promotes secure interactions between the applications executing in the permissive sector  508  and applications executing in the trusted security sector. The security may be provided using one or more techniques. For example, the trust exchange service  512  may pause a plurality of execution threads when initiating an interaction with the trusted security sector  504 , for example while handling a request for service from the centralized media controller application  506 . This feature may reduce the opportunity that other threads may sniff of otherwise seek to intrude on the operation. For example, the trust exchange service  512  may impose a criteria that all communication between the permissive sector  508  and the trusted security sector  504  be conducted using data that is transformed according to protocols of the trusted security sector  504 , for example using encryption and/or using hashing. The trust exchange service  512  may also hide address space in the trusted security sector  504  and/or make the address space inaccessible to the permissive sector  508  without the mediation of the trust exchange service  512 . 
     In an embodiment, the trust exchange service  512  may be implemented in part as a session initiation protocol (SIP) back-to-back user agent (UA). A SIP back-to-back UA may comprise a first SIP user agent facing the device applications  510  and/or receiving client requests from the device applications  510 . The SIP back-to-back UA further comprises a second SIP user agent facing the centralized media controller application  506  and transmitting allowed client requests to the centralized media controller application  506  that are forwarded to the second SIP user agent by the first SIP user agent. The first SIP user agent may act as a gate keeper to determine whether a client request may or may not be forwarded on to the second SIP user agent. In another embodiment, however, the trust exchange service  512  may not comprise a SIP back-to-back UA. 
     In an embodiment, the first SIP user agent of the SIP back-to-back UA provides a first interface that receives a first SIP request from the device application  510 . The first SIP user agent reformulates the first SIP request as a second SIP request and sends the second SIP request to a second interface provided by the second SIP user agent of the SIP back-to-back UA. The second SIP user agent transmits the second SIP request to the centralized media controller application  506 . The centralized media controller application  506  may then manage the SIP request to provide an IMS communication link for the requesting device application  510 . By this sequence of actions, the SIP back-to-back UA protects the centralized media controller application  506  from the device application  510 . If, for example, a malicious message was transmitted by the device application  510  to the SIP back-to-back UA, it is expected that the malicious message would be detected or corrected and the associated SIP request would not propagate through unchanged to the centralized media controller application  506 . This functionality may be said to provide trusted SIP interactions between the device applications  510  and the centralized media controller application  506 . 
     The device applications  510  may be any of a variety of applications. One of the device applications  510  may be a telephone application that receives dialed digits and attempts to originate a voice call—for example a voice over IP (VoIP) call—to a called telephone. One of the device applications  510  may be a web browser application that requests content from the network  531 , for example by sending out a hypertext transport protocol (HTTP) message embedding a universal reference locator (URL). One of the device applications  510  may be a media player that requests streaming media from the network  531 . In an embodiment, a building visit device application  510  may be temporarily installed and later removed or self-invalidated after a predefined duration of a visit. Such a building visit device application may support providing electronic credentials to access the building via a door scanner as well as supporting other visit services. Many of the device applications  510  may depend upon communication service provided by an IMS network to deliver their functionality to an end user of the mobile access terminal  502 . 
     As is known to one skilled in the art, client requests for media and/or communication services delivered by an IMS network are typically received and handled by one or more call session control function (CSCF) servers. The CSCF servers may provide a variety of different functions and interwork with a large number of client media requests of different types or different scenarios. The CSCF functionality may be partitioned and distributed to a proxy-CSCF server, an interrogating-CSCF server, and a serving-CSCF server. These three servers may be provided as applications that each execute on different computers or computer systems. Alternatively, two or more of these servers may be provided as applications that execute on the same computer or computer system. 
     It is a teaching of the present disclosure that an extracted CSCF server application, the centralized media controller application  506 , may be executed in the trusted security sector  504  of the mobile access terminal  502 , thereby promoting a plurality of new communications scenarios. This can unload some of the processing of the CSCF servers in the network  531 . This can reduce demand for network resources. This can reduce the latency experienced by device applications  510  when requesting communications services from the IMS network. This can promote ease of testing new device applications  510  and their interactions with the IMS network. The centralized media controller application  506  may provide some functionality of one or more of a proxy-CSCF server, an interrogating-CSCF server, and a serving-CSCF server. In an embodiment, a proxy-CSCF server application functionality of the centralized media controller application  506  may act as a proxy to the service provider IMS network proxy-CSCF server application. 
     An extracted CSCF server application provides a sub-set of the functionality provided by a full CSCF server application executing behind a firewall in a service provider&#39;s IMS core network. Using other words, an extracted CSCF server application provides reduced functionality with reference to a full CSCF server application executing behind a firewall in a service provider&#39;s IMS core network. When developing the firmware and/or software load for the mobile access terminal  502 , a relatively small subset of the full-up functionality of a CSCF server application executing in the service provider&#39;s IMS network can be identified as sufficient to support the limited needs of the mobile access terminal  502 . 
     In an embodiment, this subset of full-up CSCF server application functionality may be delivered as a library of software and/or firmware components. Because the centralized media controller application  506  encapsulates and provides an extract of the full-up IMS CSCF server applications that execute behind the service provider&#39;s firewall in their IMS core network, and because the centralized media controller application  506  receives client requests only from applications executing on the mobile access terminal  502 , the authentication protocols used to access the IMS network may be changed. For example, the diameter protocol and/or the remote authentication dial in user service (RADIUS) protocol that provides an authorization, authentication, and accounting (AAA) framework may be modified for use by the extracted centralized media controller application  506 . For example, the RADIUS protocols may comprise more than thirty different individual protocols that may be categorized into charging protocols, rating protocols, mediation protocols, etc. 
     By placing the centralized media controller application  506  in the trusted security sector  504 , the centralized media controller application  506  may be protected from malicious attempts to discover privileged security information about the network  531 , for example to reverse engineer some of the operating parameters and/or secure information used by CSCF server applications running in the service provider IMS network. In an embodiment, placing the centralized media controller application  506  in the trusted security sector  504  prevents or makes more difficult a hacker backwards manipulating the IMS network of a service provider via the centralized media controller application  506 . 
     In an embodiment, the centralized media controller application  506  acts on behalf of a device application  510  to invite it to a SIP session and conducts authentication by proxy at the relatively high speed of chip instruction execution on the mobile access terminal  502  versus at the relatively low speed of performing the authentication over the network  531 . The centralized media controller application  506  is mated and paired with an incident IMS network and provides communications connectivity, for example IMS communications connectivity, between the device applications  510  and the incident IMS network, for example at least a portion of network  531 . 
     In an embodiment, the mobile access terminal  502  may be used to complete a purchase of goods or services via the point-of-sale terminal  530 . The purchase may be effected by a communication between the near field communication transceiver  514  and the point-of-sale terminal  530  and may involve the secure element  516  transferring funds to pay for the goods or services, for example debiting a bank account associated with a user of the mobile access terminal  502  and mediating the transfer of those funds to a bank account associated with the point-of-sale terminal  530 , for example a bank account associated with a grocery store. The near field communication transceiver  514  may receive a triggering signal from the point-of-sale terminal  530  during such a purchase transaction that indicates to the mobile access terminal  502  to expect a SIP invite message to arrive from the network  531 . The near field communication transceiver  514  may pass this information or triggering signal on to the centralized media controller application  506  or to the SIP back-to-back UA  512 . 
     The point-of-sale terminal  530  may transmit a message to a local area network to which it is coupled to cause some media content, for example a video clip, to be transmitted to the mobile access terminal  502  via a communications link that promotes higher bandwidth than that of the near field communication wireless link between the point-of-sale terminal  530  and the near field communication transceiver  514 . This communication is effected via the IMS network portion of the network  531  by a SIP invite message being sent to the mobile access terminal  502  and to the centralized media controller application  506 . Because the centralized media controller application  506  has been pre-notified to expect such a SIP invite message, the centralized media controller application  506  accepts the SIP invite message, and the video clip is transmitted to a suitable device application  510  which plays a video promotion on the display of the mobile access terminal  502  while the purchase of goods or services is being completed. 
     In an embodiment, the near field communication transceiver  514  may communicate with the door scanner  533  to provide secure credentials for accessing a building or a secure area. The mobile access terminal  502  may access a web site associated with a secured building in advance of a planned visit and download and install a device application  510  that is a door scanner application or provides functionality for visitors to the secure building. When the mobile access terminal  502  is presented at the door scanner  533 , the near field communication transceiver  514  queries the device application  510  door scanner application that was downloaded to the mobile access terminal  502  to obtain electronic credentials, and then provides the needed electronic credentials to the door scanner  533  to pass through the door. The device application  510  door scanner application downloaded to the mobile access terminal  502 , triggered by the interaction with the near field communication transceiver  514 , sends a SIP invite message to the centralized media controller application  506  to retrieve media content via the macro cellular network and/or via the base transceiver station  532 , for example media content that provides graphical information for finding the correct floor and the correct room for a scheduled meeting. Additionally, the SIP invite message sent to the centralized media controller application  506  may request the centralized media controller application  506  to establish a media stream to download documents related to a meeting to a laptop computer belonging to the user of the mobile access terminal  502 . 
     In an embodiment, the device application  510  may originate a voice call to the second mobile access terminal  542 . As part of this process, a SIP invite may be sent from the mobile access terminal  502  by the centralized media controller application  506  to the femtocell  540 . The femtocell  540  is aware of the presence of the second mobile access terminal  542  and chooses to directly connect a voice channel between the mobile access terminal  502  and the second mobile access terminal  542 , for example a VoIP channel. This may be referred to as a device-to-device communication link  544 . This kind of new communication mode can save network resources, as it is not necessary for the femtocell  540  to create a link with the network  531  to couple the mobile access terminal  502  to the network  531  and it is not necessary for the femtocell  540  to create a link with the network  531  to couple the second mobile access terminal  542  to the network  531 . 
     Turning now to  FIG. 2 , a method  600  is described. At block  602 , a voice call origination request is received by centralized media controller application, where the centralized media controller application executes in a trusted security sector of a first mobile access terminal (MAT), where the called party designated by the voice call origination request is a second mobile access terminal, wherein the first mobile access terminal is coupled to a micro network. For example, in an embodiment, the device application  510 , a phone application, sends a voice call origination request to the centralized media controller application  506 , wherein the called party is designated in the message as the second mobile access terminal  542 . The voice call origination request may be in the form of a SIP invite message. The micro network may be the wireless coverage provided by the femtocell  540 . In an embodiment, the centralized media controller application  506  encapsulates and/or implements one or more call session control function application. 
     At block  604 , the centralized media control application using the session initiation protocol (SIP) presence function determines that the second mobile access terminal is accessible in the micro network. For example, in an embodiment, the centralized media controller application  506  determines that the second mobile access terminal  542  is receiving wireless coverage from the femtocell  540 . At block  606 , the centralized media controller application establishes a voice communication channel between the first mobile access terminal and the second mobile access terminal using wireless links provided by the micro network, wherein the wireless links do not involve a base transceiver station. For example, in an embodiment, the centralized media controller application  506  establishes a voice communication bearer between the mobile access terminal  502  and the second mobile access terminal  542  via wireless links provided by the femtocell  540 . The communication bearer may not comprise any communication links in the network  531  or between the femtocell  540  and the network  531 . 
       FIG. 3  illustrates a computer system  780  suitable for implementing one or more embodiments disclosed herein. The computer system  780  includes a processor  782  (which may be referred to as a central processor unit or CPU) that is in communication with memory devices including secondary storage  784 , read only memory (ROM)  786 , random access memory (RAM)  788 , input/output (I/O) devices  790 , and network connectivity devices  792 . The processor  782  may be implemented as one or more CPU chips. 
     It is understood that by programming and/or loading executable instructions onto the computer system  780 , at least one of the CPU  782 , the RAM  788 , and the ROM  786  are changed, transforming the computer system  780  in part into a particular machine or apparatus having the novel functionality taught by the present disclosure. It is fundamental to the electrical engineering and software engineering arts that functionality that can be implemented by loading executable software into a computer can be converted to a hardware implementation by well known design rules. Decisions between implementing a concept in software versus hardware typically hinge on considerations of stability of the design and numbers of units to be produced rather than any issues involved in translating from the software domain to the hardware domain. Generally, a design that is still subject to frequent change may be preferred to be implemented in software, because re-spinning a hardware implementation is more expensive than re-spinning a software design. Generally, a design that is stable that will be produced in large volume may be preferred to be implemented in hardware, for example in an application specific integrated circuit (ASIC), because for large production runs the hardware implementation may be less expensive than the software implementation. Often a design may be developed and tested in a software form and later transformed, by well known design rules, to an equivalent hardware implementation in an application specific integrated circuit that hardwires the instructions of the software. In the same manner as a machine controlled by a new ASIC is a particular machine or apparatus, likewise a computer that has been programmed and/or loaded with executable instructions may be viewed as a particular machine or apparatus. 
     The secondary storage  784  is typically comprised of one or more disk drives or tape drives and is used for non-volatile storage of data and as an over-flow data storage device if RAM  788  is not large enough to hold all working data. Secondary storage  784  may be used to store programs which are loaded into RAM  788  when such programs are selected for execution. The ROM  786  is used to store instructions and perhaps data which are read during program execution. ROM  786  is a non-volatile memory device which typically has a small memory capacity relative to the larger memory capacity of secondary storage  784 . The RAM  788  is used to store volatile data and perhaps to store instructions. Access to both ROM  786  and RAM  788  is typically faster than to secondary storage  784 . The secondary storage  784 , the RAM  788 , and/or the ROM  786  may be referred to in some contexts as computer readable storage media and/or non-transitory computer readable media. 
     I/O devices  790  may include printers, video monitors, liquid crystal displays (LCDs), touch screen displays, keyboards, keypads, switches, dials, mice, track balls, voice recognizers, card readers, paper tape readers, or other well-known input devices. 
     The network connectivity devices  792  may take the form of modems, modem banks, Ethernet cards, universal serial bus (USB) interface cards, serial interfaces, token ring cards, fiber distributed data interface (FDDI) cards, wireless local area network (WLAN) cards, radio transceiver cards such as code division multiple access (CDMA), global system for mobile communications (GSM), long-term evolution (LTE), worldwide interoperability for microwave access (WiMAX), and/or other air interface protocol radio transceiver cards, and other well-known network devices. These network connectivity devices  792  may enable the processor  782  to communicate with the Internet or one or more intranets. With such a network connection, it is contemplated that the processor  782  might receive information from the network, or might output information to the network in the course of performing the above-described method steps. Such information, which is often represented as a sequence of instructions to be executed using processor  782 , may be received from and outputted to the network, for example, in the form of a computer data signal embodied in a carrier wave. 
     Such information, which may include data or instructions to be executed using processor  782  for example, may be received from and outputted to the network, for example, in the form of a computer data baseband signal or signal embodied in a carrier wave. The baseband signal or signal embedded in the carrier wave, or other types of signals currently used or hereafter developed, may be generated according to several methods well known to one skilled in the art. The baseband signal and/or signal embedded in the carrier wave may be referred to in some contexts as a transitory signal. 
     The processor  782  executes instructions, codes, computer programs, scripts which it accesses from hard disk, floppy disk, optical disk (these various disk based systems may all be considered secondary storage  784 ), ROM  786 , RAM  788 , or the network connectivity devices  792 . While only one processor  782  is shown, multiple processors may be present. Thus, while instructions may be discussed as executed by a processor, the instructions may be executed simultaneously, serially, or otherwise executed by one or multiple processors. Instructions, codes, computer programs, scripts, and/or data that may be accessed from the secondary storage  784 , for example, hard drives, floppy disks, optical disks, and/or other device, the ROM  786 , and/or the RAM  788  may be referred to in some contexts as non-transitory instructions and/or non-transitory information. 
     In an embodiment, the computer system  780  may comprise two or more computers in communication with each other that collaborate to perform a task. For example, but not by way of limitation, an application may be partitioned in such a way as to permit concurrent and/or parallel processing of the instructions of the application. Alternatively, the data processed by the application may be partitioned in such a way as to permit concurrent and/or parallel processing of different portions of a data set by the two or more computers. In an embodiment, virtualization software may be employed by the computer system  780  to provide the functionality of a number of servers that is not directly bound to the number of computers in the computer system  780 . For example, virtualization software may provide twenty virtual servers on four physical computers. In an embodiment, the functionality disclosed above may be provided by executing the application and/or applications in a cloud computing environment. Cloud computing may comprise providing computing services via a network connection using dynamically scalable computing resources. Cloud computing may be supported, at least in part, by virtualization software. A cloud computing environment may be established by an enterprise and/or may be hired on an as-needed basis from a third party provider. Some cloud computing environments may comprise cloud computing resources owned and operated by the enterprise as well as cloud computing resources hired and/or leased from a third party provider. 
     In an embodiment, some or all of the functionality disclosed above may be provided as a computer program product. The computer program product may comprise one or more computer readable storage medium having computer usable program code embodied therein to implement the functionality disclosed above. The computer program product may comprise data structures, executable instructions, and other computer usable program code. The computer program product may be embodied in removable computer storage media and/or non-removable computer storage media. The removable computer readable storage medium may comprise, without limitation, a paper tape, a magnetic tape, magnetic disk, an optical disk, a solid state memory chip, for example analog magnetic tape, compact disk read only memory (CD-ROM) disks, floppy disks, jump drives, digital cards, multimedia cards, and others. The computer program product may be suitable for loading, by the computer system  780 , at least portions of the contents of the computer program product to the secondary storage  784 , to the ROM  786 , to the RAM  788 , and/or to other non-volatile memory and volatile memory of the computer system  780 . The processor  782  may process the executable instructions and/or data structures in part by directly accessing the computer program product, for example by reading from a CD-ROM disk inserted into a disk drive peripheral of the computer system  780 . Alternatively, the processor  782  may process the executable instructions and/or data structures by remotely accessing the computer program product, for example by downloading the executable instructions and/or data structures from a remote server through the network connectivity devices  792 . The computer program product may comprise instructions that promote the loading and/or copying of data, data structures, files, and/or executable instructions to the secondary storage  784 , to the ROM  786 , to the RAM  788 , and/or to other non-volatile memory and volatile memory of the computer system  780 . 
     In some contexts, the secondary storage  784 , the ROM  786 , and the RAM  788  may be referred to as a non-transitory computer readable medium or a computer readable storage media. A dynamic RAM embodiment of the RAM  788 , likewise, may be referred to as a non-transitory computer readable medium in that while the dynamic RAM receives electrical power and is operated in accordance with its design, for example during a period of time during which the computer  780  is turned on and operational, the dynamic RAM stores information that is written to it. Similarly, the processor  782  may comprise an internal RAM, an internal ROM, a cache memory, and/or other internal non-transitory storage blocks, sections, or components that may be referred to in some contexts as non-transitory computer readable media or computer readable storage media. 
     While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods may be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted or not implemented. 
     Also, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component, whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein.