Patent Description:
Some examples of the present application are described with respect to the following figures:.

The invention provides a computing device according to claim <NUM> and a non-transitory computer-readable storage medium according to claim <NUM>.

To guard against unauthorized access to the firmware of a computing device, a password may be assigned to the firmware. The computing device may grant access to the firmware after the correct password has been entered. A user of the computing device may forget the password. In some situations, the user may write down the password so that the password may be easily found later. Physically writing down a password creates a new security risk as the password can now be easily obtained by other people.

<FIG> illustrates a system <NUM> to provide access to firmware of a computing device via a temporary password, according to an example. System <NUM> may include a client device <NUM>, a server <NUM>, and a password receiving entity <NUM>.

As used herein, client device <NUM> may be, for example, a notebook computer, a desktop computer, an all-in-one computer, a tablet computing device, a cellular phone, or any other electronic device suitable to provide access to firmware of the device via a temporary password. As used herein, server <NUM> may be, for example, a web-based server, a local area network server, a cloud-based server, or any other electronic device suitable to generate a temporary password for firmware access at client device <NUM>. As used herein, password receiving entity <NUM> may be a notebook computer, a desktop computer, an all-in-one computer, a tablet computing device, a cellular phone, a printer, or any other electronic device suitable to receive a temporary password.

Client device <NUM> may include a processor <NUM>, a communication device <NUM>, an input device <NUM>, a storage device <NUM>, and firmware <NUM>. As used herein, processor <NUM> may be a central processing unit (CPU), a semiconductor-based microprocessor, and/or other hardware devices suitable for retrieval and execution of instructions stored in client device <NUM>. Processor <NUM> may control operations of client device <NUM>.

As used herein, input device <NUM> may be a piece of hardware equipment that provides data and control signals to processor <NUM>. Input device <NUM> may be a mouse, a keyboard, a joystick, a touchpad, a touchscreen, voice processing circuitry, etc..

As used herein, communication device <NUM> may be a piece of hardware equipment that transmits and/or receives data via a medium. In some examples, communication device <NUM> may be implemented as an Ethernet network adapter. An example Ethernet network adapter may be an Ethernet network adapter that transmits and/or receives information based on the Institute of Electrical and Electronics Engineers (IEEE) <NUM>-<NUM> specification. In some examples, communication device <NUM> may be implemented as a wireless network adapter. An example wireless network adapter may be a wireless network adapter that transmits and/or receives information based on the IEEE <NUM> family of specifications (<NUM>. 11n, <NUM>, etc.) Another example wireless network adapter may be a wireless network adapter that transmits and/or receives information based on the Bluetooth specification.

As used herein, storage device <NUM> may be implemented using non-volatile memory, such as flash memory. Non-volatile memory may retain stored data even after having been power cycled. In some examples, storage device <NUM> may be implemented using an Electrically Erasable Programmable Read-Only Memory (EEPROM) device (e.g., an EEPROM chip).

As used herein, firmware <NUM> may be a series of instructions that are executable by processor <NUM>. Firmware <NUM> may be stored in non-volatile memory, such as storage device <NUM>. Firmware <NUM> may be the Basic Input/Output System (BIOS) of client device <NUM> that initializes hardware of client device <NUM> and loads an operating system when client device <NUM> is betting up. Firmware <NUM> may be implemented based on the Unified Extensible Firmware Interface (UEFI) specification.

Server <NUM> may include a processor <NUM> and a communication device <NUM>. Processor <NUM> may control operations of server <NUM>. Password receiving entity <NUM> may include a processor <NUM> and a communication device <NUM>. Processor <NUM> may control operations of password receiving entity <NUM>. Processors <NUM> and <NUM> may be similar to processor <NUM>. Communication devices <NUM> and <NUM> may be similar to communication device <NUM>.

During operation, client device <NUM> may receive a command <NUM> to access firmware <NUM>. For example, a user of client device <NUM> may press the F10 key during a boot up process of client device <NUM>. The press of the F10 key during the boot up process may correspond to command <NUM> to access firmware <NUM>. In response to receiving command <NUM>, firmware <NUM> may display a graphical user interface (GUI) to request a set of credentials <NUM> via a display device (not shown in <FIG>) connected to client device <NUM>.

As used herein, set of credentials <NUM> may be information that provides an identity of a user. In some examples, set of credentials <NUM> may include a user name, a password, or a combination thereof. In some examples, set of credentials <NUM> may include biometric information, such as fingerprint information, a retinal scan, a voice recording, etc. In some examples, set of credentials <NUM> may include a cryptographic key certificate.

Firmware <NUM> may receive set of credentials <NUM> from the user (e.g., via input device <NUM>). In response to receiving set of credentials <NUM>, firmware <NUM> may transmit a request <NUM> to generate a temporary password <NUM> for firmware <NUM> to server <NUM> via communication device <NUM>. Request <NUM> may include set of credentials <NUM> and identification information <NUM> of client device <NUM>.

As used herein, identification information <NUM> may be any information that distinguishes client device <NUM> from other devices. In some examples, identification information <NUM> may an Internet Protocol (IP) address assigned to client device <NUM>. In some examples, identification information <NUM> may be an identifier of client device <NUM>, such as a device name, a media access control (MAC) address, etc. In some examples, identification information <NUM> may be a combination of the IP address and the identifier.

In response to receiving request <NUM>, server <NUM> may authenticate request <NUM> using set of credentials <NUM>. For example, server <NUM> may compare set of credentials <NUM> to a credential database (not shown in <FIG>) stored in server <NUM>. Server <NUM> may successfully authenticate request <NUM> when set of credentials <NUM> matches an entry in the database. Server <NUM> may determine that the authentication of request <NUM> has failed when set of credentials <NUM> do not match any entry in the database.

In response to a failed authentication, server <NUM> may notify client device <NUM> of the failed authentication and deny request <NUM>. In response to a successful authentication of request <NUM>, server <NUM> may generate temporary password <NUM>, expiration information <NUM>, and firmware access information <NUM> based on request <NUM>. Expiration information <NUM> may indicate the expiration of temporary password <NUM>. In some examples, expiration information <NUM> may include a time duration (e.g., in hours, in days, etc.). In some examples, expiration information <NUM> may include a count of password authentication performed. The count may be for successful authentications only. The count may be for failed authentications only. The count may be for both successful and failed authentications. In some examples, expiration information <NUM> may be a combination of a time duration and a count of password authentication performed.

Firmware access information <NUM> may indicate a set of configurations of firmware <NUM> that is modifiable by the user. Server <NUM> may generate firmware access information <NUM> using an entitlement manifest associated with identification information <NUM>. An example entitlement manifest is described in more detailed in <FIG>.

Server <NUM> may transmit temporary password <NUM>, expiration information <NUM>, and firmware access information <NUM> to client device <NUM>. Server <NUM> may also transmit temporary password <NUM> to password receiving entity <NUM>. Server <NUM> may determine password receiving entity <NUM> based on the entitlement manifest. In response to receiving temporary password <NUM> from server <NUM>, firmware <NUM> may replace a password of firmware <NUM> with temporary password <NUM>. Thus, temporary password <NUM> becomes the password of firmware <NUM>. When the user receives temporary password <NUM> at password receiving entity <NUM>, the user may enter temporary password <NUM> at client device <NUM> via input device <NUM> to access firmware <NUM>.

In response to receiving temporary password <NUM> via input device <NUM>, firmware <NUM> may determine if temporary password <NUM> is valid based on expiration information <NUM>. For example, expiration information <NUM> may indicate that temporary password <NUM> is valid for <NUM> hours after client device <NUM> receives temporary password <NUM>. Firmware <NUM> may compare the time when temporary password <NUM> was received from server <NUM> to the current time (when temporary password <NUM> was received via input device <NUM>). If less than <NUM> hours have passed, then firmware <NUM> may determine that temporary password <NUM> is valid. If more than <NUM> hours have passed, then firmware <NUM> may determine that temporary password <NUM> is not valid.

In response to a determination that temporary password <NUM> is valid, client device <NUM> may provide access to firmware <NUM>. For example, firmware <NUM> may present a set of configurations of firmware <NUM> in a graphical user interface based on firmware access information <NUM>. By using temporary password <NUM> to access firmware <NUM>, the need for a user of client device <NUM> to memorize the password may be avoided. Presenting a set of configurations of firmware <NUM> is described in more detailed in <FIG>.

Server <NUM> may keep track of the validity of temporary password <NUM> based on expiration information <NUM>. Upon an expiration of temporary password <NUM>, server <NUM> may generate a new password <NUM> for firmware <NUM>. Server <NUM> may transmit new password <NUM> to client device <NUM>. Firmware <NUM> may replace temporary password <NUM> with new password <NUM> as the password of firmware <NUM>.

In accordance with the invention, upon the expiration of temporary password <NUM>, a password update grace period may begin at firmware <NUM>. If firmware <NUM> fails to replace temporary password <NUM> with new password <NUM> as the password of firmware <NUM> before an expiration of the password update grace period, firmware <NUM> sets a status of firmware <NUM> as non-compliant upon the expiration of the password update grace period. When firmware <NUM> is set as non-compliant, firmware <NUM> is locked and is not able to be accessed via any temporary password from server <NUM>. An administrator may have to manually unlock firmware <NUM> to change the status to compliant.

<FIG> illustrates an entitlement manifest <NUM> associated with access to firmware, according to an example. Entitlement manifest <NUM> may be stored in server <NUM>. Server <NUM> may store a plurality of entitlement manifests. Each entitlement manifest may be specific to a unique set of credentials. For example, entitlement manifest <NUM> may be specific to set of credentials <NUM>.

Entitlement manifest <NUM> may include a credential field <NUM>. Credential field <NUM> may indicate a set of credentials that entitlement manifest <NUM> is associated with, such as set of credentials <NUM>. Entitlement manifest <NUM> may also include a password receiving entity field <NUM>. Password receiving entity field <NUM> may indicate how temporary password <NUM> is transmitted to a user with set of credentials <NUM>. For example, password receiving entity field <NUM> may list a phone number to receive temporary password <NUM> as a text message, an email address to receive temporary password <NUM> as an email, a printer name and/or location where temporary password <NUM> is printed, etc..

Entitlement manifest <NUM> may further include a universal entitlements field <NUM>. In some examples, universal entitlements field <NUM> may indicate a particular set of configurations of firmware <NUM> that is modifiable for set of credentials <NUM>. For example, universal entitlements field <NUM> may indicate that settings of onboard serial port and Universal Serial Bus (USB) port are modifiable for set of credentials <NUM>. In some examples, universal entitlements field <NUM> may indicate a category of configurations that are modifiable for set of credentials <NUM>. For example, universal entitlements field <NUM> may indicate that all settings under the security category are modifiable.

Entitlement manifest <NUM> may further include a first specific entitlements field <NUM> and a second specific entitlements field <NUM>. First specific entitlements field <NUM> may indicate a first particular set of configurations of firmware <NUM> that is modifiable for set of credentials <NUM> and a first computing device. The first computing device may be identified by a first IP address, a first MAC address, a first device name, or a combination thereof. Second specific entitlements field <NUM> may indicate a second particular set of configurations of firmware <NUM> that is modifiable for set of credentials <NUM> and a second computing device different from the first computing device. The second computing device may be identified by a second IP address, a second MAC address, a second device name, or a combination thereof.

As an example, when a user provides set of credentials <NUM> to access firmware of any computing device, the onboard serial port configuration of the computing device may be modifiable by the user as indicated by universal entitlements field <NUM>.

When the user provides set of credentials <NUM> on the first computing device, in addition to being able to modify the onboard serial port configuration of the first computing device as indicated by universal entitlements field <NUM>, the user is also able to modify the onboard sound card configuration of first computing device as indicated by first specific entitlements field <NUM>.

When the user provides set of credentials <NUM> on the second computing device, in addition to being able to modify the onboard serial port configuration of the first computing device as indicated by universal entitlements field <NUM>, the user is also able to modify the boot order configuration of second computing device as indicated by second specific entitlements field <NUM>. By using different entitlement fields, an administrator may grant a user different levels of access to firmware of a computing device based on the set of credentials used, the identity of the computing device used, or a combination thereof.

<FIG> illustrate a process of accessing firmware <NUM> from the perspective of a user of client device <NUM>, according to an example. <FIG> may be described with reference to <FIG>. <FIG> illustrates a graphical user interface (GUI) <NUM> to request a set of credentials to generate a temporary password to access firmware of a computing device, according to an example.

GUI <NUM> may be displayed when the user of client device <NUM> presses a key to access firmware <NUM>. GUI <NUM> may prompt the user to enter set of credentials <NUM>. As an example, set of credentials <NUM> may be a user name and a password. Turning to <FIG> illustrates a GUI <NUM> to request a password to access firmware of a computing device, according to an example. After the user enters the user name and the password, GUI <NUM> may be displayed to prompt the user to enter temporary password <NUM>. After the user enters temporary password <NUM>, client device <NUM> may provide access to firmware <NUM>.

Turning to <FIG> illustrates a GUI <NUM> of firmware of a computing device, according to an example. GUI <NUM> may be a GUI of firmware <NUM>. GUI <NUM> may display configurations of firmware <NUM>. GUI <NUM> may include a first configuration <NUM>, a second configuration <NUM>, and a third configuration <NUM>. Configurations <NUM> and <NUM> may be modifiable by the user. Third configuration <NUM> may not be able to be modified by the user, as indicated by greying out third configuration <NUM>. As an example, configurations <NUM> and <NUM> may correspond to a set of configurations modifiable by a user included in firmware access information <NUM>. Third configuration <NUM> may be omitted in firmware access information <NUM> or may be indicated as not modifiable by a user in firmware access information <NUM>. Thus, when the user gains access to firmware <NUM>, the user may not be able to modify third configuration <NUM>.

<FIG> illustrates a method <NUM> of operation at a computing device to provide access to firmware based on a temporary password, according to an example. Method <NUM> may be implemented by client device <NUM> of <FIG>.

Method <NUM> may include receiving a command to access firmware, at <NUM>. For example, client device <NUM> may receive a command to access firmware <NUM>. The command may be entered by a user of client device <NUM> during a boot up process of client device <NUM>. Method <NUM> may also include requesting a set of credentials, at <NUM>. For example, in response to receiving the command, client device <NUM> may request a set of credentials from the user.

Method <NUM> may further include transmitting the set of credentials to a server, at <NUM>. For example, in response to receiving set of credentials <NUM>, client device <NUM> may transmit set of credentials <NUM> to server <NUM>. Method <NUM> may further include receiving a temporary password, expiration information, and firmware access information from the server, at <NUM>. For example, client device <NUM> may receive temporary password <NUM>, expiration information <NUM>, and firmware access information <NUM> from server <NUM>.

Method <NUM> may further include replacing a password of the firmware with the temporary password, at <NUM>. For example, client device <NUM> may set the password of firmware <NUM> as temporary password <NUM>, thus replacing the previous password of firmware <NUM>. Method <NUM> may further include requesting a password from the user to access the firmware, at <NUM>. For example, client device <NUM> may prompt the user to enter a password to access firmware <NUM>.

Method <NUM> may further include receiving the temporary password from an input device, at <NUM>. For example, client device <NUM> may receive temporary password <NUM> via input device <NUM> from the user. Method <NUM> may further include determining if the temporary password is valid, at <NUM>. For example, in response to receiving temporary password <NUM> via input device <NUM>, firmware <NUM> may determine if temporary password <NUM> is valid based on expiration information <NUM>. When the temporary password is invalid, method <NUM> may move to <NUM> to request a password to access the firmware. When the temporary password is valid, method <NUM> may further include providing access to the firmware based on the firmware access information, at <NUM>. For example, firmware <NUM> may present a set of configurations of firmware <NUM> in a GUI based on firmware access information <NUM>.

Method <NUM> may further include determining if a new password has been received from the server within a password update grace period, at <NUM>. For example, upon the expiration of temporary password <NUM>, a password update grace period may begin at firmware <NUM>. When client device <NUM> receives the new password, method <NUM> may further include replacing the password of the firmware with the new password, at <NUM>. For example, firmware <NUM> may replace temporary password <NUM> with new password <NUM> as the password of firmware <NUM>. When client device <NUM> fails to receive the new password before the expiration of the password update grace period, method <NUM> may further include setting the firmware as non-compliant. For example, if firmware <NUM> fails to replace temporary password <NUM> with new password <NUM> as the password of firmware <NUM> before an expiration of the password update grace period, firmware <NUM> may be set as non-compliant upon the expiration of the password update grace period.

<FIG> illustrates a method <NUM> of operation at a computing device to generate a temporary password for firmware access, according to an example. Method <NUM> may be implemented by server <NUM>.

Method <NUM> may include receiving a request to generate a temporary password for a client device, <NUM>. For example, server <NUM> may receive request <NUM> from client device <NUM>. Method <NUM> may also include authenticating the request, at <NUM>. For example, server <NUM> may authenticate request <NUM> using set of credentials <NUM>.

When the request fails to be authenticated, method <NUM> may further include denying the request, at <NUM>. For example, in response to a failed authentication, server <NUM> may notify client device <NUM> of the failed authentication and deny request <NUM>. When the request has been successfully authenticated, method <NUM> may further include generating a temporary password. For example, server <NUM> may generate temporary password <NUM>. Method <NUM> may further include transmitting the temporary password, firmware access information, and expiration information to the client device, at <NUM>. For example, server <NUM> may transmit temporary password <NUM>, expiration information, and firmware access information <NUM> to client device <NUM>.

Method <NUM> may further include transmitting the temporary password to a password receiving entity, at <NUM>. For example, server <NUM> may also transmit temporary password <NUM> to password receiving entity <NUM>. Method <NUM> may further include determining if the temporary password has expired, at <NUM>. For example, server <NUM> may keep track of the validity of temporary password <NUM> based on expiration information <NUM>. When the temporary password is still valid, method <NUM> may continue to check the validity of the temporary password. When the temporary password is invalid (i.e., expired), method <NUM> may further include generating a new password for the firmware, at <NUM>. For example, upon an expiration of temporary password <NUM>, server <NUM> may generate a new password <NUM> for firmware <NUM>. Method <NUM> may further include transmitting the new password to the client device, at <NUM>. For example, server <NUM> may transmit new password <NUM> to client device <NUM>.

<FIG> illustrates a computing device <NUM> to provide access to firmware based on a temporary password, according to an example. Computing device <NUM> may implement client device <NUM>. Computing device <NUM> may include a processor <NUM> and a computer-readable storage medium <NUM>. Processor <NUM> may be similar to processor <NUM>.

Computer-readable storage medium <NUM> may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. Thus, computer-readable storage medium <NUM> may be, for example, Random Access Memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, etc. In some examples, storage medium <NUM> may be a non-transitory storage medium, where the term "non-transitory" does not encompass transitory propagating signals. Computer-readable storage medium <NUM> may be encoded with a series of processor executable instructions <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>. In some examples, computer-readable storage medium <NUM> may also be encoded with instructions <NUM> and <NUM>.

Credential receiving instructions <NUM> may receive a set of credentials. For example, referring to <FIG>, client device <NUM> may receive set of credentials <NUM>. Request transmitting instructions <NUM> may transmit a request to server <NUM> to generate a firmware password. For example, referring to <FIG>, client device <NUM> may transmit request <NUM> to server <NUM>.

Temporary password receiving instructions <NUM> may receive a temporary password. For example, referring to <FIG>, client device <NUM> may receive temporary password <NUM> from server <NUM>. Firmware password replacing instructions <NUM> may replace a password of firmware. For example, referring to <FIG>, client device <NUM> may replace a password of firmware <NUM> with temporary password <NUM>. Temporary password validity determining instructions <NUM> may determine if the temporary password is still valid (i.e., if the temporary password has expired). For example, in response to receiving temporary password <NUM> via input device <NUM>, client device <NUM> may determine if temporary password <NUM> is valid based on expiration information <NUM>. Firmware access instructions <NUM> may provide access to firmware. For example, referring to <FIG>, in response to a determination that temporary password <NUM> is valid, client device <NUM> may provide access to firmware <NUM>.

Graphical user interface (GUI) displaying instructions <NUM> may display GUIs. For example, referring to <FIG>, client device <NUM> may cause a display connected to client device <NUM> to display GUIs <NUM>, <NUM>, and <NUM>. Firmware status setting instructions <NUM> may set a status of firmware. For example, referring to <FIG>, if firmware <NUM> fails to replace temporary password <NUM> with new password <NUM> as the password of firmware <NUM> before an expiration of the password update grace period, firmware <NUM> may set a status of firmware <NUM> as non-compliant upon the expiration of the password update grace period.

<FIG> illustrates a computing device <NUM> to generate a temporary password for firmware access, according to an example. Computing device <NUM> may implement server <NUM>. Computing device <NUM> may include a processor <NUM> and a computer-readable storage medium <NUM>. Processor <NUM> may be similar to processor <NUM>. Computer-readable storage medium <NUM> may be similar to computer-readable storage medium <NUM>. Computer-readable storage medium <NUM> may be encoded with instructions <NUM>, <NUM>, <NUM>, and <NUM>. In some examples, computer-readable storage medium <NUM> may also be encoded with instructions <NUM>.

Request receiving instructions <NUM> may receive a request to generate a temporary password for a client device. For example, referring to <FIG>, server <NUM> may receive request <NUM> to generate temporary password <NUM>. Request authenticating instructions <NUM> may authenticate a request. For example, referring to <FIG>, server <NUM> may authenticate request <NUM>.

Temporary password generating instructions <NUM> may generate a temporary password. For example, referring to <FIG>, server <NUM> may generate temporary password <NUM>. Information transmitting instructions <NUM> may transmit information. For example, referring to <FIG>, server <NUM> may transmit temporary password <NUM>, expiration information <NUM>, and firmware access information <NUM> to client device <NUM>. New password generating instructions <NUM> may generate a new password. For example, referring to <FIG>, server <NUM> may generate new password <NUM>.

Claim 1:
A computing device (<NUM>) comprising:
a communication device (<NUM>);
an input device (<NUM>);
a storage device (<NUM>);
firmware (<NUM>) stored in the storage device (<NUM>); and
a processor (<NUM>) to:
in response to receiving a set of credentials, transmit a request to a server (<NUM>) via the communication device (<NUM>), wherein the request includes the set of credentials and identification information of the computing device (<NUM>);
receive a temporary password (<NUM>) and expiration information of the temporary password (<NUM>) from the server (<NUM>) via the communication device (<NUM>);
replace a password of the firmware (<NUM>) with the temporary password (<NUM>);
in response to receiving the temporary password (<NUM>) via the input device (<NUM>), determine if the temporary password (<NUM>) is valid based on the expiration information;
in response to a determination that the temporary password (<NUM>) is valid, provide access to the firmware (<NUM>), and
set the firmware (<NUM>) as non-compliant upon an expiration of a password update grace period, wherein the password update grace period is to begin upon an expiration of the temporary password (<NUM>),
wherein, when the firmware (<NUM>) is set to be non-compliant, the firmware (<NUM>) is locked and rendered inaccessible using any temporary password from the server (<NUM>).