Devices and methods of using network information in an authorization process

A device comprises a network interface and a programmable processor to execute software that performs an authorization process that is a function of network information received by the network interface. The network information comprises information indicative of a network with which the network interface is able to communicate, and the software causes the device to perform a boot process such that if the authorization process is not successful, the device does not successfully complete the boot process.

BACKGROUND

Portable computers are typically designed to be easily transported and used at many different locations. However, in some situations, a portable computer should only be used at particular locations and not used at other locations. In one example, sensitive or confidential data or applications are stored on a hard disk included in a portable computer. In such an example, such sensitive or confidential data or applications should only be used at particular locations and not used at other locations. Typically, a portable computer does not include any mechanism for limiting where the portable computer may be used. As result, a portable computer may be used in an inappropriate location.

DETAILED DESCRIPTION

FIG. 1is a high-level block diagram of one exemplary embodiment of a device100in accordance with the invention. In the particular embodiment shown inFIG. 1, the device comprises a computer100. In one implementation, the computer100comprises a portable computer. Other implementations and embodiments are implemented in other ways, for example, in or as a desktop computer, server computer, personal digital assistant, or other portable or non-portable electronic devices. Moreover, in other embodiments, the computer100is embedded in (or otherwise incorporated in or communicatively coupled to) other electrical systems or devices.

The computer100comprises at least one central processing unit (CPU)102. The CPU102executes various items of software104. In the embodiment shown inFIG. 1, the software104executed by the CPU102comprises an operating system (OS)106and one or more applications108. The software104comprises program instructions that are embodied on one or more items of computer readable media (for example, a hard disk drive local to the computer100and/or shared media such as a file server that is accessed over a network such as a local area network). Typically, a portion of the software104executed by the CPU102and one or more data structures used by the software during execution are stored in a main memory110. Main memory110comprises, in one embodiment, any suitable form of random access memory (RAM) now known or later developed, such as dynamic random access memory (DRAM).

One or more input devices112are communicatively coupled to the computer100by which a user is able to provide input to the computer100. In the embodiment shown inFIG. 1, the input devices112comprise a keyboard14and a pointing device16(such as a mouse or a touch-pad). In one embodiment where the computer100comprises a portable computer, the keyboard14and the pointing device16are integrated into the portable computer. In such an embodiment, a keyboard and/or pointing device external to the portable computer can also be communicatively coupled to the computer100via one or more dedicated keyboard/pointing device interfaces (for example, a PS/2 interface) or one or more general input/output interfaces (for example, a universal serial port (USB) interface or BLUETOOTH interface). In some other embodiments, the computer100includes one or more interfaces by which external input devices are communicatively coupled to the computer100.

One or more display devices118are communicatively coupled to the computer100on or by which the computer100is able to display output for a user. In one embodiment where the computer100comprises a portable computer, the display device118comprises a liquid crystal display that is integrated into the portable computer. In such an embodiment, the computer100also includes one or more interfaces by which one or more external display devices (for example, one or more external computer monitors) can be communicatively coupled the computer100. In some other embodiments, the computer100does not include an integrated display device118and includes one or more interfaces by which one or more external display devices are communicatively coupled to the computer100.

The computer100also includes one or more network interfaces120for communicatively coupling the computer100(and the components thereof) to one or more networks. In the particular embodiment shown inFIG. 1, the computer100comprises a wireless network interface122and a wired network interface124. The wireless network interface122is used to communicatively couple the computer100to, and send and receive data to and from, a network or other device using a wireless communication link (for example, a radio frequency or infra-red wireless communication link). In one implementation of such an embodiment, the wireless network interface122supports one or more of the Institute for Electrical and Electronics Engineers (IEEE) 802.11 family of standards. The wired network interface124is used to communicatively couple the computer100to, and send and receive data to and from, a network or other device using a wired communication link (for example, a copper-twisted pair cable or a fiber-optic cable). In one implementation of such an embodiment, the wired network interface124supports one or more of the IEEE 802.3 family of standards (also referred to here as the “ETHERNET” networking protocol).

In one implementation of the computer100shown inFIG. 1, one or more of the network interfaces120are removable by a user of the computer100. In such an implementation, the computer100includes one or more slots into which such removable network interfaces are inserted (for example, a general-purpose slot such as PC-CARD slot and/or a specially adapted slot such as a slot specially adapted to receive a network interface implemented as a MINI-PCI card).

In the embodiment shown inFIG. 1, the computer100also comprises an embedded controller126that controls the operation of one or more of the other components in the computer100. For example, in one implementation of such an embodiment, the embedded controller126implements functionality that enables the computer100to support the Advanced Configuration and Power Interface (ACPI) specification. In such an implementation, the embedded controller126interacts with configuration and/or power management interfaces provided by various components in the computer100.

In the embodiment shown inFIG. 1, the embedded controller126is implemented using a programmable processor128that executes appropriate software to carry out the processing described here as being performed by the embedded controller126. Such software comprises program instructions that are stored (or otherwise embodied) on an appropriate storage medium or media (such as flash memory) from which at least a portion of the program instructions are read by the programmable processor128for execution thereby. In the embodiment shown inFIG. 1, the software executed by the programmable processor128of the embedded controller126comprises a basic input/output system (BIOS)132that provides an interface between the hardware of the computer100and the operating system106and other software104executed by the CPU102. Various system configuration settings134(also referred to here as a “BIOS settings”134) that are used by the BIOS132are stored in memory136(also referred to here as “BIOS memory”136). In the particular embodiment shown inFIG. 1, the BIOS memory136comprises non-volatile memory (for example, complimentary metal oxide (CMOS) memory). In other embodiments, the memory136in which the BIOS settings134are stored is located elsewhere in the computer100and/or is implemented using other types of memory now known or later developed (for example, others types of non-volatile memory).

In the embodiment shown inFIG. 1, the BIOS132performs an authorization process in order to determine if the computer100is currently located in a location in which it is appropriate for the computer100to be used. Such a location is also referred to here as an “authorized location.” The authorization process is a function of network information received by at least one of the network interfaces120. Such network information is indicative of any networks (or network elements included in such networks) with which such a network interface120is able to communicate. In the embodiment shown inFIG. 1, when the computer100is physically located in an authorized location, there is a network to which the computer100can be communicatively coupled via at least one of the network interfaces120. The network interface120receives (or otherwise generates or obtains) information that can be used to identify the network while the computer100is located in the location associated with that network.

In the embodiment shown inFIG. 1, network information138is stored in the memory136. Such information is also referred to here as a “stored network information”138. The stored network information138comprises information that identifies one or more networks that are associated with a respective authorized location. In the embodiment shown inFIG. 1, the stored network information138comprises a set of network profiles140(also referred to here as “stored network profiles”140), where each stored network profile140contains one or more items of information that identifies a respective network. In one exemplary implementation, for a wireless network that is associated with an authorized location, a respective stored network profile140comprises one or more of the following items of information: a service set identifier (SSID) or a media access control (MAC) address of a wireless access point included in the wireless access network and security features supported by the wireless network (for example, information about any encryption used in the wireless network). For a wireless network that is associated with an authorized location, a respective stored network profile140comprises one or more of the following items of information: dynamic name service (DNS) information, gateway information, dynamic host configuration protocol (DHCP) information, and authentication information. The network information138, in the embodiment shown inFIG. 1, is used by the BIOS132in the authorization process to determine if the computer100is currently located in an authorized location

FIG. 2is a flow diagram of one embodiment of a method200of determining if a computer is located in an authorized location. The embodiment of method200shown inFIG. 2is described here as being implemented using the computer100ofFIG. 1, though other embodiments are implemented in other ways. In particular, at least a portion of the functionality of method200is performed by the BIOS132of the computer100. The BIOS132, in one implementation of such an embodiment, includes a user-selectable option by which a user of the computer100is able to enable or disable the functionality of method200. In such an implementation, access to the user-selectable option is secured (for example, by requiring a user to enter an appropriate password to access such BIOS functionality).

Method200comprises storing, in the memory136of the computer100, network information138that identifies (or is otherwise indicative of) one or more networks associated with one or more respective authorized locations (block202). In an embodiment of method200implemented using the computer100ofFIG. 1, the network information138is arranged into a set of network profiles140, where each network profile140identifies a respective network associated with a respective authorized location. In one embodiment, the BIOS132includes functionality for receiving one or more network profiles140. Such functionality is secured (for example, by requiring a user to enter an appropriate password to access such BIOS functionality). In one implementation of such an embodiment, the BIOS132includes functionality that prompts (for example, by displaying an appropriate user interface element on the display device118) a user to enter (via an input device112) one or more network profiles, each of which identifies a respective network that is associated with a respective authorized location. The BIOS132stores the entered network profiles in the memory136as a part of the network information138. In another implementation, the BIOS132includes functionality that enables a user, when the computer100is communicatively coupled to a network via one of the network interfaces120, to save, in the memory136as a part of the network information138, a network profile that is based on the network information received (or otherwise generated or obtained) by that network interface120. In this way, a user need not manually enter such network information138. In another implementation, the BIOS132includes functionality that enables a user, when the computer100is communicatively coupled to a network via one of the network interfaces120, to save, in the memory136as a part of the network information138, network credentials (for example, a certificate, username/password pair, or token) that are used to authenticate the computer100onto the network.

Method200further comprises, when the computer100performs an authorization process (checked in block204), obtaining information about any networks with which a network interface120included in the computer100is able to communicate (block206). Such information is also referred to here as “current network information.” In an embodiment of method200implemented using the computer100ofFIG. 1, the current network information is arranged as a set of network profiles (also referred to here as a “current network profiles”), where each current network profile identifies (or is otherwise indicative of) a respective network with which a network interface120is able to communicate.

If at least one of the current network profiles matches at least one network profile140stored in the memory136of the computer100(checked in block208), the authorization process is successful (block210). If at least one of the current network profiles does not match at least one network profile140stored in the memory136of the computer100, the authorization process is not successful (block212). In an embodiment of method200implemented using the computer100ofFIG. 1, a current network profile “matches” a stored network profile140if each element of the stored network profile140matches a corresponding element included in the current network profile. If a current network profile matches a stored network profile140, the BIOS132assumes that the computer100is located within the authorized location associated with that stored network profile. In the particular embodiment shown inFIG. 1, if such an authorization process is unsuccessful, a power-on sequence of the computer100is not permitted to complete successfully in order to prohibit or otherwise deny access to the computer100(for example, by not permitting the computer100to enter an operational state in which a user is able to interact with the computer100). If such an authorization process is successful, a power-on sequence of the computer100is permitted to complete successfully. In other embodiments, the results of the authorization process are used in other ways. Also, as used herein, the current network information is considered “validated” if the current network information matches the stored network information.

In one embodiment, the computer100performs such an authorization process during a boot process performed when the computer100is initially powered on (that is, when the computer enters an operational state from a fully powered-off state), during a “wake-up” process performed when the computer100enters a fully operational state from a sleep state (for example, a standby or hibernation state), or during another power-on sequence. In one implementation of such an embodiment, the BIOS132manages such a boot or wake-up process. When the computer100is in a fully powered-off state or sleep state, the BIOS132computer100starts the boot process or wake-up process, for example, in response to a user actuating an “ON” button included in the computer100.

In one implementation, when such an ON button is actuated, the BIOS132causes the wireless network interface122to scan for any wireless networks with which that wireless network interface122is able to communicate. As result, the wireless network interface122will receive (or otherwise generate or obtain) information about any wireless networks that are detected by the scan. Such information includes, for example, a SSID and/or MAC address of a wireless access point included in a wireless network and any security features (such as encryption) supported by the wireless network. In one such implementation, the wireless network interface122performs a passive scan in which the wireless network interface122does not broadcast, during the passive scan, any information about the computer100or the wireless network adapter122. The received network information, in such an implementation, is used to define a current network profile associated with each such wireless network the wireless network interface122is able to communicate with. If at least one of the current network profiles does not match at least one network profile140stored in the memory136of the computer100, the boot process or wake-up process is not permitted to successfully complete and a message is displayed on the display device118indicating why the boot process or wake-up process did not successfully complete. If at least one of the current network profiles matches at least one network profile140stored in the memory136of the computer100, the boot process or wake-up process is permitted to successfully complete.

In another implementation, when such an ON button is actuated, the BIOS132automatically causes the wired network interface124to listen for any network traffic that identifies the network (or a network device included in the network) to which the wired network interface124is communicatively coupled (for example, by listening for DNS information, gateway information, or DHCP information). The received network information, in such an implementation, is used to define a current network profile associated with each such wired network the wired network interface124is able to communicate with. If at least one of the current network profiles does not match at least one network profile140stored in the memory136of the computer100, the boot process or wake-up process is not permitted to successfully complete and a message is displayed on the display device118indicating why the boot process or wake-up process did not successfully complete. If at least one of the current network profiles matches at least one network profile140stored in the memory136of the computer100, the boot process or wake-up process is permitted to successfully complete.

In another implementation, when such an ON button is actuated, the BIOS132causes the wired network interface124or wireless network interface122to attempt to authenticate the computer100with a secured network using credentials stored in BIOS memory136via an authentication protocol (for example, the Extensible Authentication Protocol (EAP) or the Protected Extensible Authentication Protocol (PEAP)). If authentication with the secured network is completed successfully using the stored network credentials, then the BIOS132assumes that the computer100is located within the authorized location associated with that stored network profile. In one such implementation, if authentication with the secured network using the network credentials stored in memory136is unsuccessful, a message is displayed on the display device118indicating why such a boot or wake-up process was unsuccessful.

In this way, the BIOS132of the computer100performs an authorization process that uses network information to determine if the computer100is being used in a location in which it is appropriate for the computer100to be used. Such functionality can be used with computers on which secure applications and/or data that should only be used in certain authorized locations are stored. Such functionality can also be used, for example, as a theft deterrent. In other embodiments, such functionality is used in other applications.

Moreover, in the event that one of the network interfaces120is removed from the computer100(for example, wherein the network interface120is user removable), the BIOS132is unable to receive current network information from the removed network interface120. To the extent that the removed network interface120is necessary for the computer100to receive current network information about a network associated with a particular network profile140stored in the memory136, there will be no “match” with that network profile140.

Although the processing of method200is described here as being implemented using the BIOS132of the computer100, in other embodiments such processing is implemented in other ways. For example, in one such alternative embodiment, at least a portion of the processing of method200is performed by software executed by a central processing unit (for example, as a part of an operating system). In such an alternative embodiment, the operating system includes functionality for storing network information that identifies one or more networks that are associated with a respective authorized location (for example, functionality that is accessible by a “root” or “administrator” user of the computer). Such network information, one implementation, is stored on a hard drive included in the computer. When the operating system is in the process of entering an operational state (for example, whenever a user “logs” into the computer), the operating system determines if any current network information received by one or more of the network interfaces included in the computer matches any of the stored network profiles. If such a match occurs, the operating system allows the computer to enter the operational state. Otherwise, the operating system does not allow the computer to enter the operational state.

Furthermore, although the processing of method200is described here as being used to determine if a location at which the computer100is being used is an authorized location, it is to be understood that such techniques can be used in other applications.