Sensor identification

Techniques described here use variations in the sensor to generate an identifier for the sensor. Each sensor may be comprised of sub-sensing units, called pixels that may demonstrate variation in their sensing capability from one pixel to another. Embodiments of the invention, describe a method for using the relative variance of each pixel (relative to the whole sensor or/and a portion of the sensor) in generating an identifier for the sensor. In one embodiment, the method may obtain information associated with a plurality of pixels from a sensor, detect variations in the information associated for each of the pixels from a subset of the plurality of pixels and generate an identifier for the sensor using the detected variations in the information associated with each of the pixels from the subset of plurality of pixels.

TECHNICAL FIELD

The present disclosures generally relate to generating identifiers, and more specifically, generating unique identifiers for sensors.

BACKGROUND

Sensors detect physical input and in some instances convert the physical input to electrical or optical output. The electrical output may be used by a device hosting the sensor in a variety of ways. Applications of sensors are widespread and sensors are used in everyday devices, such as mobile devices. Some examples of sensors may include inertial sensors, imaging sensors, chemical sensors, biometric sensors, ultrasonic sensors, etc. Ultrasonic sensors may operate by interpreting the echoes from radio or sound waves. For instance, ultrasonic sensors may generate high frequency sound waves and evaluate the echo which is received back by the sensor. In some implementations, ultrasonic sensors calculate the time interval between sending the signal and receiving the echo to determine the distance to an incident surface. In some instances, the ultrasonic sensors may also operate in a passive mode by detecting ambient signals from the environment. One application of ultrasonic sensors may include detecting fingerprints of a user for authenticating the user.

In some instances, uniquely identifying the sensor may increase or augment the security of the authentication process. In some instances, uniquely identifying the sensor may allow systems, remote servers, clouds, applications and programs in improving security and also enable forensics in instances of security breaches.

BRIEF SUMMARY

Techniques described herein provide a method for generating an identifier, and more specifically, generating unique identifiers for sensors.

In some aspects, the identifier for the sensor uniquely (or uniquely within an acceptable degree) identifies the sensor. In some instances, uniquely identifying the sensor may aid in increasing or augmenting the security of the authentication process. In some instances, uniquely identifying the sensor may allow systems, remote servers, clouds, applications and programs in improving security and also enable forensics in instances of security breaches.

In some instances, uniquely identifying the sensor may increase or augment the security of the authentication process. Some current solutions provide fixed identifiers, in some instances, etched into the sensor. However, these identifiers are inflexible; are expensive to implement; can be faked, masked, changed or stolen; and do not provide a cost effective and robust method for uniquely identifying a sensor.

In certain aspects, techniques describe a method for generating an identifier for the sensor using intrinsic properties of the sensor. Described techniques allow generation of an identifier in a cost effective manner using spatially temporal and global information from the sensor that is robust against contrast variations, input signal variations, and gradual changes of sensor characteristics. Furthermore, techniques described allow for using an identifier for a sensor even in instances where the sensors may have spatial and temporal defects and degradations.

In an example method for generating an identifier for a sensor, the method may include accessing, by a computing device, sensed information for each pixel from a plurality of pixels of the sensor for an at least one sensing environment, determining, by the computing device, a first variance representing a variation in the sensed information for a first subset of the plurality of pixels using the sensed information for each pixel from the first subset of the plurality of pixels of the sensor, determining, by the computing device, a second variance representing a variation in the sensed information for a second subset of the plurality of pixels using the sensed information for each pixel from the second subset of the plurality of pixels of the sensor, wherein the first subset of the plurality of pixels is different from the second subset of the plurality of pixels, determining, by the computing device, a pixel identifier value for each pixel from a third subset of the plurality of pixels by comparing the sensed information for each pixel from the third subset of the plurality of pixels with the first variance and the second variance, and generating, by the computing device, the identifier using the pixel identifier values for each of the plurality of pixels from the third subset of the plurality of pixels.

In one aspect of the method, the plurality of pixels from the third subset may also belong to the first subset and the second subset. In certain aspects, the plurality of pixels from the second subset may also belong to the first subset.

In one aspect of the method, the method further comprises determining the pixel identifier value for each pixel from the third subset of the plurality of pixels by receiving the sensed information for a plurality of sensing environments. For example, the sensing environments may include bias current enabled, bias current disabled, bias current shifted, tone burst enabled, or tone burst disabled.

In one aspect of the method, generating the identifier value may include concatenating the pixel identifier values for the plurality of pixels from the third subset of the plurality of pixels. In some implementations, the plurality of pixels belonging to the second subset is received by the computing device coupled to the sensor from a remote device.

In certain aspects, the sensor may be an image sensor or an ultrasonic sensor. In some aspects, the sensor may be an ultrasonic fingerprint sensor. In some instances, the sensor may be used for authenticating a user using biometric information.

According to certain aspects, an example device for generating an identifier for a sensor may include the sensor coupled to the device, the sensor comprising a plurality of pixels configured to sense information, a memory, and a processor coupled to the memory. The processor may be configured to receive the sensed information for each pixel from the plurality of pixels of the sensor for an at least one sensing environment, determine a first variance representing a variation in the sensed information for a first subset of the plurality of pixels using the sensed information for each pixel from the first subset of the plurality of pixels of the sensor, determine a second variance representing a variation in the sensed information for a second subset of the plurality of pixels using the sensed information for each pixel from the second subset of the plurality of pixels of the sensor, wherein the first subset of the plurality of pixels is different from the second subset of the plurality of pixels, determine a pixel identifier value for each pixel from a third subset of the plurality of pixels by comparing the sensed information for each pixel from the third subset of the plurality of pixels with the first variance and the second variance, and generate the identifier using the pixel identifier values for each of the plurality of pixels from the third subset of the plurality of pixels.

In one aspect of the example device, the plurality of pixels from the third subset may also belong to the first subset and the second subset. In certain aspects, the plurality of pixels from the second subset may also belong to the first subset.

In one aspect of the example device, the method further comprises determining the pixel identifier value for each pixel from the third subset of the plurality of pixels by receiving the sensed information for a plurality of sensing environments. For example, the sensing environments may include bias current enabled, bias current disabled, bias current shifted, tone burst enabled, or tone burst disabled.

In one aspect of the example device, generating the identifier value may include concatenating the pixel identifier values for the plurality of pixels from the third subset of the plurality of pixels. In some implementations, the plurality of pixels belonging to the second subset is received by the device coupled to the sensor from a remote device.

In certain aspects, the sensor may be an image sensor or an ultrasonic sensor. In some aspects, the sensor may be an ultrasonic fingerprint sensor. In some instances, the sensor may be used for authenticating a user using biometric information.

In an example non-transitory computer-readable storage medium, wherein the non-transitory computer-readable storage medium comprises instructions executable by a processor, the instructions may include instructions to receive sensed information for each pixel from a plurality of pixels of a sensor for an at least one sensing environment, determine a first variance representing a variation in the sensed information for a first subset of the plurality of pixels using the sensed information for each pixel from the first subset of the plurality of pixels of the sensor, determine a second variance representing a variation in the sensed information for a second subset of the plurality of pixels using the sensed information for each pixel from the second subset of the plurality of pixels of the sensor, wherein the first subset of the plurality of pixels is different from the second subset of the plurality of pixels, determine a pixel identifier value for each pixel from a third subset of the plurality of pixels by comparing the sensed information for each pixel from the third subset of the plurality of pixels with the first variance and the second variance, and generate the identifier using the pixel identifier values for each of the plurality of pixels from the third subset of the plurality of pixels.

In one aspect of the non-transitory computer-readable storage medium, the plurality of pixels from the third subset may also belong to the first subset and the second subset. In one aspect of the non-transitory computer-readable storage medium, the plurality of pixels from the second subset may also belong to the first subset. In one instance, the instructions determine the pixel identifier value for each pixel from the third subset of the plurality of pixels by receiving the sensed information for a plurality of sensing environments. In certain aspects, the plurality of pixels belonging to the second subset may be received by the device coupled to the sensor from a remote device.

According to certain aspects, an example method for authenticating a computing device may include, receiving, at a first computing device, a first identifier for a sensor from a second computing device, wherein the sensor is coupled to the second computing device, determining, at the first computing device, a second identifier for the sensor using a first variance associated with a first subset of pixels from the plurality of pixels for the sensor, a second variance associated with a second subset of pixels from the plurality of pixels for the sensor and information associated with each of a third subset of pixels from the plurality of pixels, and determining, at the first computing device, if the first identifier and the second identifier both are associated with the sensor by comparing the first identifier and the second identifier.

In some aspects of the example method, comparing the first identifier and the second identifier, for determining if the first identifier and the second identifier are both associated with the sensor, may include determining a distance between the first identifier and the second identifier, and determining that the first identifier and the second identifier are both associated with the sensor if the distance is shorter than a threshold. In certain aspects, the plurality of pixels from the third subset also belong to the first subset and the second subset and the second subset also belongs to the first subset. In some instances, determining the pixel identifier value for each pixel from the third subset of the plurality of pixels comprises receiving the sensed information for a plurality of sensing environments. In one aspect, the sensor is an ultrasonic sensor.

Example techniques, described herein, use variations in the sensor to generate an identifier. Each sensor may be comprised of sub-sensing units, called pixels, that may demonstrate variation in their sensing capability from one pixel to another, due to, but not limited to, the manufacturing process, the variability of the materials used in the construction of the sensor, and the analog-to-digital conversion process. Examples of the teachings of the disclosure describe a method for using the relative variance associated with each pixel (relative to the whole sensor or/and a portion of the sensor) in generating an identifier for the sensor. In certain aspects, the method may obtain information associated with a plurality of pixels from a sensor, detect variations in the information associated with each of the pixels from a subset of the plurality of pixels and generate an identifier for the sensor using the detected variations in the information associated with each of the pixels from the subset of plurality of pixels.

DETAILED DESCRIPTION

Several illustrative embodiments will now be described with respect to the accompanying drawings, which form a part hereof. While particular embodiments, in which one or more aspects of the disclosure may be implemented, are described below, other embodiments may be used and various modifications may be made without departing from the scope of the disclosure or the spirit of the appended claims.

Techniques described herein provide a method, system and apparatus for generating an identifier for a sensor. Sensors detect physical input and in some instances convert the physical input to electrical or optical output. The electrical output may be used by a device hosting the sensor in a variety of ways. Some examples of sensors may include inertial sensors, imaging sensors, chemical sensors, biometric sensors, ultrasonic sensors, etc. Ultrasonic sensors may operate by interpreting the echoes from radio or sound waves. For instance, ultrasonic sensors may generate high frequency sound waves and evaluate the echo which is received back by the sensor. In some implementations, ultrasonic sensors calculate the time interval between sending the signal and receiving the echo to determine the distance to an incident surface. In some instances, the ultrasonic sensors may also operate in a passive mode by detecting ambient signals from the environment. One application of ultrasonic sensors may include detecting fingerprints of a user for authenticating the user.

In some embodiments, the identifier for the sensor may refer to a string of bits that uniquely (or unique within an acceptable degree) identifies the sensor. In some instances, uniquely identifying the sensor may increase or augment the security of the authentication process. Uniquely identifying the sensor may allow systems, remote servers, clouds, applications and programs to improve security and also enable forensics in instances of security breaches, in some instances. For example, in some instances, it may be useful for a backend system to ascertain that a user fingerprint was acquired using a specific sensor.

Some current solutions provide fixed identifiers, in some instances, etched into the sensor. However, these identifiers are inflexible, expensive to implement and can be faked, masked, changed or stolen. Techniques described herein provide a cost effective and robust method for identifying a sensor.

In certain embodiments of the invention, techniques describe a method for generating an identifier for the sensor using intrinsic properties of the sensor. Described techniques allow generation of an identifier in a cost effective manner using spatially temporal and global information from the sensor that is robust against contrast variations, input signal variations, and gradual changes of sensor characteristics. Furthermore, techniques described herein allow for using an identifier for a sensor even in instances where the sensors have defects and degradations.

In one embodiment, techniques described use variations in the sensor to generate an identifier.FIG. 1illustrates an example sensor100comprising one or more pixels. In some instances, a “pixel” may also be referred to as a “pixel circuit” and used interchangeably without departing from the scope of the invention. Pixels may be sub-sensing units within the sensor. InFIG. 1, the illustration of the sensor100represents 64 (8×8) pixels in the sensor. In various implementations, the shape of the sensor and the pixels, the number of pixels and the spacing between the pixels may vastly vary, without departing from the scope of the invention. Pixel blocks102represent two example pixels from a grid of 64 pixels.

FIG. 2illustrates an example of a pixel200shown inFIG. 1. Each pixel of the sensor may be capable of sensing and may be constructed using one or more transistors, diodes and resistors. An example of a pixel is a thin-film transistor (TFT) pixel circuit. In some implementations, an ultrasonic sensor may use a plurality of TFT pixel circuits.

In one example implementation, the pixel may receive an alternative current (AC) signal202and a direct current (DC) signal204. In some implementations, the pixel200may receive only the AC signal202, only the DC signal204, both AC signal202and DC signal204or no signal at all. In an ultrasonic sensor, the current may be used for exciting waves inside the sensor. The ultrasonic sensor may sense the echo which is received back by the sensor. In some implementations, ultrasonic sensors calculate the time interval between sending the signal and receiving the echo to determine the distance to an incident surface. In some instances, the ultrasonic sensors may also operate with little or no current and operate in a passive mode by detecting ambient signals from the environment.

The output signal206may indicate the result of the sensing performed by the sensor. For example, the output signal206may output a current and at a particular voltage. In some instances, the output signal206may be interpreted as an analog signal that may be further digitized using an analog-to-digital converter (ADC) circuit based on the current and/or the voltage level of the output signal206. An example of an ADC is described in more detail inFIG. 4. In some aspects, the output signal206for the various pixels may vary for the same AC signal202, DC signal204, or stimulus (e.g., finger present or not present) due to inherent differences in the pixels.

Embodiments of the invention use the variation associated with the individual pixels from the sensor in generating an identifier for the sensor. In some embodiments, the detected variation is measured relative to the variation of a part of the sensor or/and the entire sensor in generating the identifier for the sensor. Using relative measurements allows for gradual changes of the sensor and even minor damage to the sensor (i.e., dead pixels) without losing the ability to uniquely identify the sensor.

Variations in sensing of the individual pixels may be introduced due to a variety of reasons. For example, variations may be introduced through the manufacturing process of the circuit that includes several different components, such as the transistors, diodes and resistors. In manufacturing, due to non-ideal manufacturing processes, each pixel circuit or a group of pixel circuits may be different from another pixel circuit or group of pixels of the sensor.

Similarly, variations in the different materials over a contiguous or non-contiguous region of the materials used in the construction of the sensor may also affect the sensing capabilities of each pixel or group of pixels. For example,FIG. 3illustrates an example representation of the layout of an ultrasonic sensor300. The ultrasonic sensor300fromFIG. 3is constructed using a TFT substrate306comprising TFT pixels and various adhesives, air gaps, metal layers, glass layers, etc. Each of these layers inadvertently has (or “may have”) variations when examined over a contiguous region and may result in variations in the sensing capability of each pixel or group of pixels. In addition, in low-cost manufacturing processes, there could be air bubbles in some of the materials, which would also result in variations in the signal detection capabilities for the pixels affected. As described in embodiments of the invention, such variations in the sensing of the pixels may result in varying response (i.e., output signal304) for an input signal302and may be used in generating the identifier for the sensor.

FIG. 4illustrates an example representation of an analog-to-digital converter (ADC)400that illustrates the analog-to-digital conversion process for a sensor. The blocks depicted inFIG. 4may represent some of the components of an example ADC400, but embodiments of the invention are not limited by such a representation. The analog-to-digital process may also introduce some variations for each pixel or group of pixels. For example, the analog-to-digital conversion process may process sensor output analog signal402from a number of pixels (i.e., output signal206) through the same circuit and generate a digital signal410. In some embodiments, the same circuit or application specific integrated circuit (ASIC) may be used in the ADC process for multiple pixels. In one implementation, a multiplexer (i.e., MUX)404may be used for selecting the signals from the appropriate pixel circuit. The process of selecting the signals in the MUX400itself may introduce variations in the final sensing capability for a pixel. For example, cross-noise between the selecting signal and the signals in the MUX400may vary based on the signal selected. Furthermore, the signal from each pixel may have a slightly different route compared to the other signals leading to variations in the detecting of the signal. The circuitry for the filter406and the A/D408components may also introduce additional variations. As described in embodiments of the invention, such variations in the sensing of the pixels may be used in generating the identifier for the sensor.

Example variations described above are relatively quite stable over time for the same sensor. However, they may be different from other seemingly identical sensors produced even using the same manufacturing process. In other words, each sensor has its unique pixel variation.

Embodiments of the invention provide a method for generating an identifier using such detected variations for each pixel or a group of pixels. In one example embodiment, an ultrasonic sensor may be discussed. However, embodiments of the invention are not limited to an ultrasonic sensor and may be used with various other sensors.

FIG. 5illustrates a flow diagram for performing a method for generating an identifier for a sensor, according to one or more embodiments of the invention. According to one or more aspects, any and/or all of the methods and/or method steps described in the flow diagram500illustrated inFIG. 5may be implemented by and/or by a computing device, such as a mobile device. Illustrative but non-limiting components of such a computing device are described in greater detail inFIG. 14. In one embodiment, one or more of the method steps described below with respect toFIG. 5are implemented by a processor or an application-specific integrated circuit (ASIC) of the mobile device, such as the processor1410or another processor. Additionally or alternatively, any and/or all of the methods and/or method steps described herein may be implemented in computer-readable instructions, such as computer-readable instructions stored on a computer-readable medium such as the memory1435, storage1425or another computer readable medium.

In certain embodiments, multiple bits may be used to represent the variation associated with each pixel relative to other pixels and various sensing environments. In some instances, each bit may represent a different sensing environment associated with the same pixel. The reliability of the representation of the variability of the pixel may be increased by determining the variability of the pixel over a greater number of sensing environments.

For illustration purposes, in an example setting that uses an ultrasonic sensor, three different sensing environments may be selected. In the first example sensing environment (BG1) for the ultrasonic sensor, a normal DC bias with the tone burst generator disabled may be used. In the second example sensing environment (BG2) for the ultrasonic sensor, a normal DC bias with the tone burst generator enabled may be used. In the third example sensing environment (BG3) for the ultrasonic sensor, a normal DC bias shifted by 0.1 V with the tone burst generator disabled may be used. In one implementation, for the ultrasonic fingerprint sensor, the sensing may be performed without a finger present on the ultrasonic sensor.

The sensing environment may be selected based on the sensor type. For example, for a camera, the sensing environments may include sensing with no light, sensing with white light and sensing with red light.

At block502, components of the computing device may access sensed information for each pixel from a plurality of pixels of the sensor for an at least one sensing environment. Sensed information may refer to an analog or digital signal detected for a sensor subjected to a particular sensing environment. In certain other embodiments, the method performs a scan of the sensor and accesses sensed information for each of the above described sensing environments to determine the measurement for each pixel under the different sensing environments.

In certain embodiments, multiple scans for the same sensing environment for the same pixels may be performed to normalize the data collected over multiple iterations. Performing multiple scans may increase the reliability of the data. Normalization of the data may be performed using a simple mean or a medium calculation over multiple iterations (N1, N2and N3). Following is an example equation representing three datasets for the absolute measurement values for the pixels for the sensors (ABG1, ABG2and ABG3) for the three different sensing environments (BG1, BG2and BG3), respectively.

At block504, components of the computing device may determine a first variance representing a variation in the sensed information for a first subset of the plurality of pixels using the sensed information for each pixel from the first subset of the plurality of pixels of the sensor. Blocks602,610and616ofFIGS. 6A,6B and6C, respectively, represent example subsets of pixels included in the first subset.

In one implementation, the first subset may refer to a global subset comprising sensed information for all of the pixels for the sensor. In such a scenario, the first variance may be referred to as a global variance. Such an implementation of the first subset may be depicted by block602ofFIG. 6A, where the first subset includes all of the pixels of the sensor. However, as described in further detail below with respect toFIG. 6BandFIG. 6C, in some implementations, the first subset may not comprise all of the pixels of the sensor.

In certain aspects, the data set ABG1may include 64 different data points representing each pixel for the sensor100represented inFIG. 1. In one example, where the first subset represents a global subset and the first variance refers to a global variance, a mean and standard deviation (μ1, σ1), (μ2, σ2), and (μ3, σ3) may be calculated for each dataset (ABG1, ABG2and ABG3) that may be used to represent the global variability of the sensor in their respective sensing environment (BG1, BG2and BG3).

Briefly referring toFIG. 7,FIG. 7illustrates the example process of generating a mean and standard deviation for multiple scans of the sensor. For example, multiple (N1) scans may be performed and averaged to generate a single dataset associated with the plurality of pixels for a sensing environment (ABG1). The dataset may be further processed to generate a mean and standard deviation to represent the variability of the first subset of pixels (global variance, where the first subset includes all the pixels of the sensor).

At block506, components of the computing device may determine a second variance representing a variation in the sensed information for a second subset of the plurality of pixels using the sensed information for each pixel from the second subset of the plurality of pixels of the sensor, wherein the first subset of the plurality of pixels is different from the second subset of the plurality of pixels. Blocks604,612and618ofFIGS. 6A,6B and6C, respectively, represent example subsets of pixels included in the second subset.

In certain implementations, the pixels included in the second subset are determined by a remote computing device, such as a remote server, that may request an identifier from the computing device coupled to the sensor. In certain other implementations, the computing device may select a plurality of pixels (or location/region of the pixels) to be included in the second subset. In certain implementations, the pixels included in the second subset may be determined based on the design of the sensor or the ADC converter. For example, in one implementation, M bits may be selected for the second subset based on the transmission channel shared by multiple pixel circuits.

Similar to block504, a second variance may be determined for a region of the sensor (second subset) using sensed information for those pixels. Determining multiple variances may provide the computing device, in block508, multiple points for comparison for any particular pixel for the purpose of generating an identifier. At least in one implementation, all M pixels may be grouped together to calculate a second mean and second standard deviation ({tilde over (μ)}1, {tilde over (σ)}1), ({tilde over (μ)}2, {tilde over (σ)}2), and ({tilde over (μ)}3, {tilde over (σ)}3).

Briefly referring toFIG. 8,FIG. 8illustrates a similar process toFIG. 7, wherein the method generates a mean and standard deviation for a region that is a subset of the entire sensor. For example, a small region as indicated inFIG. 8by the rectangular box802may be selected as the second subset from the dataset associated with the plurality of pixels for a sensing environment (ABG1). The dataset may be further processed to generate a mean and standard deviation to represent the variability associated with the local region (local variability). In some instances, the identifier may be generated using information from the second subset of pixels. In such instances, the second subset of pixels may be referred to as the local subset and the second variance may be referred to as the local variance.

At block508, components of the computing device may determine a pixel identifier value for each pixel from a third subset of the plurality of pixels by comparing the sensed information for each pixel from the third subset of the plurality of pixels with the first variance and the second variance. Blocks606,614and620ofFIGS. 6A,6B and6C, respectively, represent example subsets of pixels included in the third subset. In one implementation, the pixel identifier values may be a string of bits for each pixel from the third subset of the plurality of pixels and may be used in generating the identifier.

For example, in one implementation, the computing device may compare the measurements of the pixel to the first and second variances for each sensing environment. In one implementation, if the absolute measurement or sensed information of the pixel relative to the first (or second) measurements falls within an acceptable range (based on the mean and standard deviation), then a zero value may be assigned for the pixel for that sensing environment, and vice versa. The above example setting yields six bits of information representing the relative variability for each pixel, since there are three sensing environments (BG1, BG2and BG3) and two groups of pixels (first and second subset) that the relativity of the current pixel is measured against. The following equations represent example generation of the six bit pixel identifier value representing the variability of each pixel. α, β, γ, {tilde over (α)}, {tilde over (β)}, and {tilde over (γ)} are variables that may be used to tune the range of the acceptable variability from the mean or medium.First bit=0: if ABG1(x, y)ε [μ1−ασ1, μ1+ασ1]Otherwise, second bit=1.Second bit=0: if ABG2(x, y)ε [μ2−βσ2, μ2+βσ2]Otherwise, second bit=1.Third bit=0: if ABG3(x, y)ε [μ3−Δσ3, μ3+γσ3]Otherwise, third bit=1.Fourth bit=0: if ABG1(x, y)ε [{tilde over (μ)}1−{tilde over (α)}{tilde over (σ)}1, {tilde over (μ)}1+{tilde over (α)}{tilde over (σ)}1]Otherwise, fourth bit=1.Fifth bit=0: if ABG2(x, y)ε [{tilde over (μ)}2−{tilde over (β)}{tilde over (σ)}2, {tilde over (μ)}2+{tilde over (β)}{tilde over (σ)}2]Otherwise, fifth bit=1.Sixth bit=0: if ABG3(x, y)ε [{tilde over (μ)}3−{tilde over (γ)}{tilde over (σ)}3, {tilde over (μ)}3+{tilde over (γ)}{tilde over (σ)}3]Otherwise, sixth bit=1.

At block510, components of the computing device may generate the identifier using the pixel identifier values for each of the plurality of pixels from the third subset of the plurality of pixels. For example, as shown inFIG. 9, in one example, for X-by-Y pixels, 6XY bits for an identifier may be generated. In one simplistic example, the pixel identifier values for the plurality of pixels from the third subset may be concatenated to generate the identifier.

It should be appreciated that the specific steps illustrated inFIG. 5provide a particular method of switching between modes of operation, according to an embodiment of the present invention. Other sequences of steps may also be performed accordingly in alternative embodiments. For example, alternative embodiments of the present invention may perform the steps/blocks outlined above in a different order. To illustrate, a user may choose to change from the third mode of operation to the first mode of operation, the fourth mode to the second mode, or any combination therebetween. Moreover, the individual steps/blocks illustrated inFIG. 5may include multiple sub-steps that may be performed in various sequences as appropriate to the individual step. Furthermore, additional steps/blocks may be added or removed depending on the particular applications. One of ordinary skill in the art would recognize and appreciate many variations, modifications, and alternatives of the process.

FIGS. 6A,6B and6C illustrate example variations of pixels included in a first subset, second subset and third subset from the plurality of pixels for a sensor.FIGS. 6A,6B and6C represent only a few different configurations for generating an identifier and embodiments of the invention are not limited by these configurations.

For example, inFIG. 6A, the first subset602includes all the pixels of the sensor and represents a global set. The second subset604represents a set different from the first subset602, even though the pixels included in the second subset604are also included in the first subset602. Since, the second subset604is different from the first subset602, the converse is not true (i.e., the second subset604does not include all the pixels from the first subset602). As shown inFIG. 6A, the pixels included in the third subset606are also included in the second subset604. In one instance, the second subset604and the third subset606can be the same. When the second subset604and the third subset606are the same, the identifier is generated using pixel value identifiers for each pixel from the second/third subset604.

FIG. 6Billustrates an example where the first subset610of pixels does not include all of the pixels from the sensor. Furthermore, inFIG. 6B, all the pixels from the second subset612are not included in the first subset610. As shown inFIG. 6B, the pixels from the third subset614are included in the first subset610and the second subset612of pixels.

FIG. 6Cillustrates yet another example configuration, where the first subset616, the second subset618and the third subset620are all distinct subsets without any overlap in pixels.

Several such configurations can be constructed without departing from the scope of the invention. Selecting several such configurations, wherein the scope of each subset is variable in terms of coverage regions and the number of pixels, allows the computing device to generate a large number of different and sufficiently unique identifiers associated with the same sensor. In some implementations, in addition to a first subset and a second subset, additional subsets may be defined and used for generating multiple variances. Therefore, embodiments of the invention are not limited in scope to two variances and may use multiple variances for generating the identifier.

A second computing device, such as a trusted backend server, may also generate an identifier using the same configuration parameters used by the sensor in generating the identifier. By comparing the identifier generated by the computing device and the identifier generated locally, the second computing device can uniquely identify and/or authenticate the sensor used in the computing device.

In some aspects, the configuration for generating the identifier may be pre-negotiated between the two computing devices. In other aspects, the configuration for generating the identifier may be determined at the second computing device, such as the trusted backend server. In yet other aspects, the configuration for generating the identifier may be determined at the computing device coupled to the sensor.

In one example, the configuration information is determined and received from the second computing device, such as the trusted backend server. In another example, the configuration information may be determined independently by each of the two computing devices using a synchronized time stamp or shared seed/secret for a random number generator for the two devices.

The unique identifier may be useful to any (trusted or untrusted) remote device that may be interested in differentiating between multiple sensors. In addition, a backend server (such as a trusted server) may also have sensed information for each of the pixels for the sensor for the different sensing environments and the configuration used for generating the identifier by the computing device coupled to the sensor. Such a backend server may also generate the identifier and authenticate the sensor (i.e., determine not only that the sensor associated with the identifier is unique, but also that the sensor associated with the identifier is a particular sensor known (directly or indirectly) to the backend server).

FIG. 10illustrates a block diagram for generating an identifier for a sensor by a computing device coupled to the sensor. The computing device may be a computing device implemented using one or more components described inFIG. 14. Modules described inFIG. 10may be implemented using software, firmware, hardware or any other combination thereof. In one embodiment, some of the modules described inFIG. 10may be stored as software modules on a computer-readable medium1000that may be any magnetic, electronic, optical, or other computer-readable storage medium. In one implementation, the computer-readable storage medium1000may include an information receiver1004, first variance generator1006, second variance generator1008, pixel identifier generator1010, identifier generator1012and sensing environment controller1014.

At block1004, the information receiver1004module may receive sensed information from the sensor1002. In one implementation, the information receiver1004module may receive information for each of the pixels or “pixel circuits” associated with the sensor1002and store the sensed information in memory1435. In one implementation, the information receiver may receive information for several different sensing environments and store the information associated with the sensor for different sensing environments in separate memory buffers.

In some implementations, the information receiver1004module may receive multiple iterations of information from the sensor1002for the same sensing environment (controlled by the sensing environment controller1014module). The information receiver1004module can average the data received over multiple iterations to reduce errors or temporary fluctuations in the measurements or sensing of the information. In one implementation, the information receiver1004module receives information for all the pixels of the sensors for each and every request for generation of a sensor identifier. In another implementation, the information receiver1004refreshes the stored information for the sensors operating in different sensing environments periodically and not on every request for generation of a sensor identifier.

At block1014, the sensing environment controller1014module may select the various different sensing environments for the sensor1002for retrieving the sensed information. For illustration purposes, in an example setting that uses an ultrasonic sensor, three different sensing environments may be selected. In the first example, sensing environment (BG1) for the ultrasonic sensor, a normal dc bias with the tone burst generator disabled may be used. In the second example, sensing environment (BG2) for the ultrasonic sensor, a normal DC bias with the tone burst generator enabled may be used. In the third example, sensing environment (BG3) for the ultrasonic sensor, a normal DC bias shifted by 0.1 V with the tone burst generator disabled, may be used.

At block1006, the first variance generator1006module uses information associated with the first subset and generates a first variance. In one implementation, the first subset includes all of the pixels of the sensor and the first variance represents the global variance. In one aspect, the first variance for a sensing environment may be generated by calculating a mean of the sensed information for each of the pixels belonging to the first subset and the standard deviation for the pixels belonging to the first subset. The first variance generator1006module may receive the sensed information for the first subset of pixels from the information receiver1004module.

At block1008, the second variance generator1008module uses information associated with the second subset and generates a second variance. In one implementation, the second subset is different from the first subset in at least one pixel. In one aspect, the second variance for a sensing environment may be generated by calculating a mean of the sensed information for each of the pixels belonging to the second subset and the standard deviation for the pixels belonging to the second subset. The second variance generator1008module may receive the sensed information for the second subset of pixels from the information receiver1004module.

Although the first variance generator1006and the second variance generator1008are discussed, embodiments of the invention are not limited to generation of only two variances and several more variances may be generated in certain embodiments.

At block1010, the pixel identifier value generator1010module may generate a value associated with a pixel that identifies the pixel. In one aspect, the pixel identifier value generator1010module may select one pixel from a third subset of pixels for generating the pixel identifier value. The pixel identifier value generator1010module may compare the sensed information for the pixel against the first variance generated by the first variance generator1006module to generate one bit of information. Similarly, the pixel identifier value generator1010module may compare the sensed information for the same pixel against the second variance generated by the second variance generator1008module to generate a second bit of information. Similarly, if the first variance and the second variance are generated for several different sensing environments, the pixel identifier value generator1010module can generate a bit of information for each of those sensing environments. For example, if three different sensing environments may be configured by the sensing environment controller1014module, then six different bits of information may be generated for a single pixel from the third subset.

The pixel identifier value generator1010module may repeat the same process for each pixel from the third subset of pixels. At block1012, the identifier generator module may combine the pixel identifier values for each of the pixels from the third subset and generate an identifier for the sensor1002. In one implementation, the sensor identifier may be sent to a device, such as a remote device using a communication subsystem1016similar to the communication subsystem1430described inFIG. 14.

FIG. 11illustrates a flow diagram for performing a method, by an authentication computing device, according to one or more embodiments of the invention. According to one or more aspects, any and/or all of the methods and/or method steps described in the flow diagram1100illustrated inFIG. 11may be implemented by and/or in a computing device. In one example, the computing device is a remote device, such as a trusted backend server that authenticates the identity of the sensor. In another example, the computing device is a secondary device or portable dongle with computing logic for establishing the authenticity of the sensor. Illustrative but non-limiting components of such a computing device are described in greater detail inFIG. 14. In one embodiment, one or more of the method steps described below with respect toFIG. 11are implemented by a processor or an application specific integrated circuit (ASIC) of the mobile device, such as the processor1410or another processor. Additionally or alternatively, any and/or all of the methods and/or method steps described herein may be implemented in computer-readable instructions, such as computer-readable instructions stored on a computer-readable medium such as the memory1435, storage1425or another computer readable medium.

At block1102, components of an authentication computing device may be configured to receive (using a communications subsystem1430) a first identifier associated with a sensor from a computing device, wherein the sensor is coupled to the computing device.

At block1104, components of the authentication computing device may determine a second identifier for the sensor using a first variance associated with a first subset of pixels from the plurality of pixels for the sensor, a second variance associated with a second subset of pixels from the plurality of pixels for the sensor and information associated with each of a third subset of pixels from the plurality of pixels. The second identifier may be generated using information stored in the memory1435of the authentication computing device or a device coupled to the server computing device. In one implementation, during a provisioning phase, the sensed information associated with the pixels of the sensors operating under different sensing environments may be stored on the server computing device or a device coupled to the first computing device.

The process of generating the second identifier may be similar in some aspects to the process of generating the first identifier (described with reference toFIG. 5). The first subset, the second subset and the third subset of pixels used in generating the identifier may be pre-negotiated between the authentication computing device and the computing device coupled to the sensor.

At block1106, components of the authentication computing device may determine if the first identifier and the second identifier both are associated with the same sensor by comparing the first identifier and the second identifier. In certain embodiments, comparing the first identifier and the second identifier for determining if the first identifier and the second identifier are both associated with the same sensor may include determining a distance between the first identifier and the second identifier, and determining that the first identifier and the second identifier are both associated with the sensor if the distance is shorter than a threshold.

During the process of authentication or identification, in some implementations, components of the authentication computing device may use a hamming distance algorithm in comparing the first identifier received by the server computing device (D1) against the second identifier generated by the authentication computing device (D2), as shown below.

In one implementation, if h is smaller than a matching threshold T, the sensor will be authenticated or identified as the same sensor associated with identifier D2. Otherwise, the sensor may not be authenticated or identified as expected sensor. Use of the hamming distance algorithm (or any similar algorithm) allows for flexibility and variability in the identifier that may be caused by minor defects in the sensor and variance in measurements due to environmental noise.

Furthermore, the identification accuracy may be increased by creating a mask for each sensor ID. For instance, the mask value at each pixel may be set as “000000” for a defective pixel. Otherwise, the mask may default to “111111” for a six bit representation of a pixel. The hamming distance algorithm may be revised from above as follows to account for masks:

In some embodiments, the sensor identifier may be encrypted before transmitting the identifier to a remote entity.

It should be appreciated that the specific steps illustrated inFIG. 11provide a particular method of switching between modes of operation, according to an embodiment of the present invention. Other sequences of steps may also be performed accordingly in alternative embodiments. For example, alternative embodiments of the present invention may perform the steps/blocks outlined above in a different order. To illustrate, a user may choose to change from the third mode of operation to the first mode of operation, the fourth mode to the second mode, or any combination therebetween. Moreover, the individual steps/blocks illustrated inFIG. 11may include multiple sub-steps that may be performed in various sequences as appropriate to the individual step. Furthermore, additional steps/blocks may be added or removed depending on the particular applications. One of ordinary skill in the art would recognize and appreciate many variations, modifications, and alternatives of the process.

FIG. 12illustrates a block diagram for authenticating an identifier for a sensor by an authentication computing device. The authentication computing device may be a computing device implemented using one or more components described inFIG. 14. Modules described inFIG. 12may be implemented using software, firmware, hardware or any other combination thereof. In one embodiment, some of the modules described inFIG. 12may be stored as software modules on a computer-readable medium1200that may be any magnetic, electronic, optical, or other computer-readable storage medium. In one implementation, the computer-readable storage medium1200may include a first identifier receiver1204, a second identifier generator1206, and a comparator1208. The second identifier generator1206may include a first variance generator/retriever1210, a second variance generator1212, a pixel identifier value generator1214and an identifier generator1216.

In some embodiments, during a provisioning phase, an authentication computing device or a device coupled to the server computing device may receive sensed information associated with a sensor that is stored in memory1435and used by the server computing device to authenticate the sensor. For example, in one embodiment, the information for a sensor may be acquired during the manufacturing or testing phase of the sensor and stored and accessible by the authentication computing device.

At the time of authenticating the sensor, the communications subsystem1202coupled to the authentication computing device may receive a first identifier associated with a sensor from a device coupled to the sensor, using a transceiver. At block1204, the first identifier receiver1204may receive the first identifier at the authentication computing device and store it in memory1435.

The second identifier generator1206module may generate the second identifier using sensed information for the sensor stored at the authentication computing device or a device coupled to the authentication computing device. In one embodiment, the sensed information stored may include sensed information for a multiple sensing environments. The authentication computing device and the computing device coupled to the sensor may also have the same configuration information regarding the first subset, second subset and third subset of pixels for generating the identifier for the sensor. The configuration information may be determined by the server computing device, the device coupled to the sensor or a combination of the two.

Similar to what has been described with reference toFIG. 5, the first variance generator/retriever1210may generate the first variance using the sensed information for the first subset of pixels from the plurality of pixels for the sensor. In one implementation, the first variance is generated by one or more processors1410, by determining the mean and standard deviation for the sensed information for a sensing environment for the pixels belonging to a the first subset. In certain implementations, the first subset includes all of the pixels for the sensor. In certain aspects, the first variance is the global variance and may be determined once and/or periodically refreshed and not upon each and every authentication request.

At the second variance generator1212module, the authentication computing device may generate a second variance using the sensed information for the second subset of pixels from the plurality of pixels for the sensor. In one implementation, the second variance is generated by one or more processors1410, by determining the mean and standard deviation for the sensed information for a sensing environment for the pixels belonging to the second subset.

At the pixel identifier value generator1214module, the sensed information for each pixel from a third subset of pixels is compared against the first variance and the second variance for each sensing environment to generate the pixel identifier values for the pixels from the third subset.

At the identifier generator1216, the second identifier is generated by using the pixel identifier values generated by the pixel identifier value generator1214module for the pixels for the third subset of pixels. In one simple implementation, the pixel identifier values are concatenated to form the second identifier value.

The comparator1208module compares the first identifier value received from the first identifier receiver1204module and the second identifier value received from the second identifier generator1206module and determines if the two identifier values refer to the same sensor. If the two identifier values are determined to refer to the same sensor module, the authentication process on the server computing device passes.

FIG. 13illustrates a flow diagram for performing a method according to one or more embodiments of the invention. According to one or more aspects, any and/or all of the methods, and/or method steps described in the flow diagram1300illustrated inFIG. 13, may be implemented by and/or in an mobile device, components of which are described in greater detail inFIG. 14, for instance. In one embodiment, one or more of the blocks described below with respect toFIG. 13are implemented by a processor or an ASIC of the mobile device, such as the processor1410or another processor. Additionally or alternatively, any and/or all of the methods and/or method steps described herein may be implemented in computer-readable instructions, such as computer-readable instructions stored on a computer-readable medium such as the memory1435, storage1425or another computer readable medium.

At block1302, components of the computing device may obtain information associated with a plurality of pixels from a sensor. In one embodiment, the sensor may be an image sensor. In another embodiment, the sensor may be an ultrasound sensor. In yet another embodiment, the sensor may be an ultrasound fingerprint sensor. In certain embodiments, the sensor may be used for authenticating a user using biometric information. In one embodiment, a mean and standard deviation may be generated using the information associated with the plurality of pixels from the sensor for various sensing environments.

At block1304, components of the computing device may detect variations in the information associated with each of the pixels from a subset of the plurality of pixels. In one embodiment, the variation for each of the pixels is determined respective to the variations of the plurality of pixels. In another embodiment, components of the invention detect intrinsic variations in the produced information associated for each of the pixels from one or more subsets of the plurality of pixels; if two more subsets are used, they may or may not overlap but any two subsets are not exactly the same.

At block1306, components of the computing device may generate an identifier for the sensor using the detected variations in the information associated with each of the pixels from the subset of plurality of pixels. In one embodiment, generating the identifier for the sensor may include calculating a variance for each of the pixels from the subset of a plurality of pixels, and generating the identifier using the variance associated with each of the pixels from the subset of plurality of pixels. In another embodiment, components of the embodiment may generate an identifier for the sensor using the detected intrinsic variations in the produced information associated with each of the pixels from the subset(s) of plurality of pixels. Furthermore, in one embodiment, generating the identifier value comprises concatenating the variances for the each of the plurality of pixels to generate the identifier. The variance for each of the pixels may be determined using multiple sensing environments for the sensor.

The variations in the sensing capability of the pixels may be caused by a variety of reasons that may include variation in the circuit for each pixel, wherein the variation in the circuit may be introduced by the manufacturing process, variation in material distributions for and around each pixel, air bubbles in the material distributions of each pixel and selection and transmission logic in the ADC conversion process.

It should be appreciated that the specific steps illustrated inFIG. 13provide a particular method of switching between modes of operation, according to an embodiment of the present invention. Other sequences of steps may also be performed accordingly in alternative embodiments. For example, alternative embodiments of the present invention may perform the steps outlined above in a different order. To illustrate, a user may choose to change from the third mode of operation to the first mode of operation, the fourth mode to the second mode, or any combination therebetween. Moreover, the individual steps illustrated inFIG. 13may include multiple sub-steps that may be performed in various sequences as appropriate to the individual step. Furthermore, additional steps may be added or removed depending on the particular applications. One of ordinary skill in the art would recognize and appreciate many variations, modifications, and alternatives of the process.

The described techniques allow a sensor identifier computational method for ultrasound fingerprint sensors that is applicable to many types of sensors. The method detects abnormality (or variability) of a pixel sensing capability relative to other pixels to generate the value for that pixel. In one embodiment, the relative difference between the pixel to the global area (or larger area) and the relative difference between the pixel to the local area (or a small area) may be used to determine variability of the pixel. The difference may be classified into two categories: within a pre-defined normal range or not within a pre-defined normal range based the statistical analysis of the area. In some embodiments, only one scan or image may be used to generate this identifier, or in other embodiments, multiple scans or images may be used to generate the identifier.

The described techniques also allow for sensor identifier generation to adapt to gradual changes of the sensor and even damages of the sensor. In one embodiment, this may be accomplished by using masks to mask out defects and take the mask into account while determining the hamming distance, as described above. This may still achieve high verification/authentication accuracy.

Moreover, even in instances where the sensor has gradual changes or degradation over time, the identifier generated at the computing device may still match the identifier by a remote device, since the identifier is generated based on relative changes of the sensing capacity of a pixel relative to other pixels and not as an absolute measurement for the pixels.

Furthermore, the described techniques allow for generation of a flexible identifier, since an identifier may be generated using the entire sensor pixels, small area(s) of the sensors, and/or random discrete locations of the sensors, as described in the various configurations depicted inFIGS. 6A,6B and6C. Such variation in the generation of identifiers for a sensor can be used for generating a very large number of sufficiently unique identifiers that are associated with the sensor and can be authenticated by a remote device, such as a remote trusted backend server. Generation of identifiers in such large numbers can help thwart man-in-the middle attacks, since the computing device coupled to the sensor can continuously change the identifiers relayed by the computing device to a remote device.

Similarly, generation of such a large number of identifiers that are verifiable by a remote computing device also enables challenge response approaches and a one-time identifier approach and makes the random sensor verification/authentication very secure. For example, the remote server may have sensed information for all the pixels of the sensor. Such sensed information may be provisioned during a provisioning phase. When performing on-line authentication, the remote server may request/challenge the sensor (or computing device coupled to the sensor) for an identifier for a one-time selected configuration (comprising first subset, second subset and third subset) or location of the sensor, and the sensor may generate the identifier bits for this configuration challenge request and send the identifier for remote authentication/verification. One-time authentication/verification capability may greatly strengthen the security.

Embodiments of the invention may also allow for greater computational and transmission efficiency. In one example, if a sensor has 20-by-20 pixels, some implementations may have 400 pixels. If, each time, 100 pixels were required to generate the one-time ID, the described techniques can generate over 2×10254identifiers, providing many one-time IDs for the sensor.

Furthermore, the described technique can generate an identifier of varied length for the same sensor at different times for verification/authentication, allowing the same sensor identifier to adapt to different security and authentication needs.

FIG. 14illustrates an example computing device incorporating parts of the device employed in practicing embodiments of the invention. A computing device as illustrated inFIG. 14may be incorporated as part of any computerized system, herein. For example, computing device1400may represent some of the components of a mobile device. Examples of a computing device1400include, but are not limited to, desktops, workstations, personal computers, supercomputers, video game consoles, tablets, smart phones, laptops, netbooks, or other portable devices.FIG. 14provides a schematic illustration of one embodiment of a computing device1400that may perform the methods provided by various other embodiments, as described herein, and/or may function as the host computing device, a remote kiosk/terminal, a point-of-sale device, a mobile multifunction device, a set-top box and/or a computing device.FIG. 14is meant only to provide a generalized illustration of various components, any or all of which may be utilized as appropriate.FIG. 14, therefore, broadly illustrates how individual system elements may be implemented in a relatively separated or relatively more integrated manner.

The computing device1400is shown comprising hardware elements that may be electrically coupled via a bus1405(or may otherwise be in communication, as appropriate). The hardware elements may include one or more processors1410, including without limitation one or more general-purpose processors and/or one or more special-purpose processors (such as digital signal processing chips, graphics acceleration processors, and/or the like); one or more input devices1415, which may include without limitation a camera, sensors1450, a mouse, a keyboard and/or the like; and one or more output devices1420, which may include without limitation a display unit, a printer and/or the like. Sensors may include ultrasonic sensors and/or other imaging sensors.

The computing device1400may further include (and/or be in communication with) one or more non-transitory storage devices1425, which may comprise, without limitation, local and/or network accessible storage, and/or may include, without limitation, a disk drive, a drive array, an optical storage device, a solid-form storage device such as a random access memory (“RAM”) and/or a read-only memory (“ROM”), which may be programmable, flash-updateable and/or the like. Such storage devices may be configured to implement any appropriate data storage, including without limitation, various file systems, database structures, and/or the like.

The computing device1400might also include a communications subsystem1430. The communications subsystem1430may include a transceiver for receiving and transmitting data or a wired and/or wireless medium. The communications subsystem1430may also include without limitation a modem, a network card (wireless or wired), an infrared communication device, a wireless communication device and/or chipset (such as a Bluetooth™ device, an 802.11 device, a WiFi device, a WiMax device, cellular communication facilities, etc.), and/or the like. The communications subsystem1430may permit data to be exchanged with a network (such as the network described below, to name one example), other computing devices, and/or any other devices described herein. In many embodiments, the computing device1400will further comprise a non-transitory working memory1435, which may include a RAM or ROM device, as described above.

A set of these instructions and/or code might be stored on a computer-readable storage medium, such as the storage device(s)1425described above. In some cases, the storage medium might be incorporated within a computing device, such as computing device1400. In other embodiments, the storage medium might be separate from a computing device (e.g., a removable medium, such as a compact disc), and/or provided in an installation package, such that the storage medium may be used to program, configure and/or adapt a general purpose computer with the instructions/code stored thereon. These instructions might take the form of executable code, which is executable by the computing device1400and/or might take the form of source and/or installable code, which, upon compilation and/or installation on the computing device1400(e.g., using any of a variety of generally available compilers, installation programs, compression/decompression utilities, etc.) then takes the form of executable code.

Some embodiments may employ a computing device (such as the computing device1400) to perform methods in accordance with the disclosure. For example, some or all of the procedures of the described methods may be performed by the computing device1400in response to processor1410executing one or more sequences of one or more instructions (which might be incorporated into the operating system1440and/or other code, such as an application program1445) contained in the working memory1435. Such instructions may be read into the working memory1435from another computer-readable medium, such as one or more of the storage device(s)1425. Merely by way of example, execution of the sequences of instructions contained in the working memory1435might cause the processor(s)1410to perform one or more procedures of the methods described herein.

The terms “machine-readable medium” and “computer-readable medium,” as used herein, refer to any medium that participates in providing data that causes a machine to operate in a specific fashion. In an embodiment implemented using the computing device1400, various computer-readable media might be involved in providing instructions/code to processor(s)1410for execution and/or might be used to store and/or carry such instructions/code (e.g., as signals). In many implementations, a computer-readable medium is a physical and/or tangible storage medium. Such a medium may take many forms, including, but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media include, for example, optical and/or magnetic disks, such as the storage device(s)1425. Volatile media include, without limitation, dynamic memory, such as the working memory1435. Transmission media include, without limitation, coaxial cables, copper wire and fiber optics, including the wires that comprise the bus1405, as well as the various components of the communications subsystem1430(and/or the media by which the communications subsystem1430provides communication with other devices). Hence, transmission media may also take the form of waves (including without limitation radio, acoustic and/or light waves, such as those generated during radio-wave and infrared data communications). In an alternate embodiment, event-driven components and devices, such as cameras, may be used, where some of the processing may be performed in analog domain.

The communications subsystem1430(and/or components thereof) generally will receive the signals, and the bus1405then might carry the signals (and/or the data, instructions, etc. carried by the signals) to the working memory1435, from which the processor(s)1410retrieves and executes the instructions. The instructions received by the working memory1435may optionally be stored on a non-transitory storage device1425either before or after execution by the processor(s)1410.