Abstract:
In accordance with a broad aspect, a method is provided to securely configure a computing device. A configuration indication is received into the computing device, including receiving a digital signature generated based on the configuration indication. Generation of the digital signature accounts for a unique identifier nominally associated with the computing device. The received configuration indication is verified to be authentic including processing the unique identifier, the received configuration indication and the received digital signature. The computing device is operated or interoperated with in accordance with the received configuration indication. In one example, a service interoperates with the computing device. The configuration indication and digital signature are provided from the computing device to the service, and the service interoperates with the computing device in accordance with the configuration indication and the digital signature. For example, the computing device may be a portable media player, and the service may provide media to the computing device based on a capacity indication of the configuration indication.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS  
       [0001]     This application is related to co-pending application, [Atty. Docket Number APL1P435], entitled “SECURE SOFTWARE UPDATES”, U.S. Ser. No. ______, filed concurrently herewith and incorporated herein by reference for all purposes. This application is also related to U.S. patent application Ser. No. 10/988,054, filed Nov. 12, 2004, and entitled “METHOD AND SYSTEM FOR UPDATING FIRMWARE STORED IN NON-VOLATILE MEMORY” [Atty. Docket No.: APL1P327], which is hereby incorporated herein by reference for all purposes. 
     
    
     TECHNICAL FIELD  
       [0002]     The present invention is in the field of utilizing a service to configure a computing device and, in particular, relates to using the service to configure the computing device in a secure manner such that the computing device may be operated or interoperated with in accordance with the configuration.  
       BACKGROUND  
       [0003]     It is known to interoperate computing devices in conjunction with a service. For example, a portable media player may operate in conjunction with a “service” that includes a client computing device operating a media management application, and the media management application may operate in conjunction with service-based functionality such as a media store and, possibly, a related commerce function. This is the general architecture in which iPod media players operate.  
         [0004]     It is desirable to be able to securely configure the operation of the computing device.  
       SUMMARY  
       [0005]     In accordance with a broad aspect, a method is provided to securely configure a computing device. A configuration indication is received into the computing device, including receiving a digital signature generated based on the configuration indication. Generation of the digital signature accounts for a unique identifier nominally associated with the computing device. The received configuration indication is verified to be authentic including processing the unique identifier, the received configuration indication and the received digital signature. The computing device is operated or interoperated with in accordance with the received configuration indication.  
         [0006]     In one example, a service interoperates with the computing device. The configuration indication and digital signature are provided from the computing device to the service, and the service interoperates with the computing device in accordance with the configuration indication and the digital signature. For example, the computing device may be a portable media player, and the service may provide media to the computing device based on a capacity indication of the configuration indication.  
     
    
     BRIEF DESCRIPTION OF FIGURES  
       [0007]      FIG. 1  illustrates an architectural overview of a system including a computing device and a service.  
         [0008]      FIG. 2  provides more detail of the interaction between the computing device and the service illustrated in  FIG. 1 .  
         [0009]      FIG. 3-1  describes processing associated with the service and usable to create the signed configuration file, as well as processing usable to authenticate the absence of tampering with the configuration file.  
         [0010]      FIG. 3-2  describes processing associated with the computer device and/or the service to authenticate the absence of tampering with the configuration file.  
         [0011]      FIG. 4  illustrates an example high-level processing flow, with respect to the service, to accomplish a song-holding capacity upgrade.  
         [0012]      FIG. 5  is a flowchart illustrating processing in the computing device to utilize a configuration file.  
         [0013]      FIG. 6  illustrates an example memory organization of a computing device.  
         [0014]      FIG. 7  illustrates a failure/backup scenario.  
     
    
     DETAILED DESCRIPTION  
       [0015]     It is desirable to securely configure a media player or other computing device via a service. Broadly speaking, in accordance with one aspect, the configuration operation is data-driven such that configuration data is provided to the computing device, as opposed to providing updated executable instructions to the computing device. A result of the configuration operation is to configure the operation of the computing device and/or configuring interoperation with the computing device.  
         [0016]      FIG. 1  illustrates an architectural overview of a system including a computing device  102  and a service  104 . The computing device  102  may be, for example, a portable media player. The service may include a client device  106  executing a local application and interoperating with server functionality  108 , such as a content server  110  and a commerce server  112 , via a network  114  such as the Internet.  
         [0017]     As shown in  FIG. 1 , the computing device  102  is connectable to the service  104  via a connection  116 . It is via the connection  116  that the service  104  provides configuration data to the computing device  102 . Particular mechanisms for providing and utilizing the configuration data are described with reference to later figures. However, in general, the computing device  102  provides a unique identifier to the service  104 . For example, the computing device  102  may be a mobile telephone and the unique identifier may be a well-known Electronic Serial Number (ESN) or International Mobile Equipment Identifier (IMEI), hard-coded into a mobile telephone and by which the mobile telephone is uniquely identified.  
         [0018]     The service  104  provides a collection of configuration data (referred to here as a “file” for ease of reference, but not implying any particular organization of the configuration data) to the computing device  102 . A digital signature is provided to the computing device  102  via the connection  116  in association with the configuration data file. The digital signature is usable to verify the authenticity of the configuration data, including that the configuration data has not been modified since being generated and digitally signed and that the configuration data has been properly generated for use by the computing device having the particular unique identifier.  
         [0019]      FIG. 2  provides more detail of the interaction between the computing device  102  and the service  104 . The arrow labeled  202  represents the computing device  102  providing the unique identifier to the service  104 . At  204 , processing associated with the service  104  creates the configuration file including data representing the desired configuration for the computing device  102 . Furthermore, processing associated with the service  104  creates a digest of the configuration file. In addition, processing associated with the service  204  digitally signs the digest using a private key of a public/private key pair.  
         [0020]     The arrow labeled  206  represents the service  104  providing the configuration file, and the associated digitally-signed digest, to the computing device  102 . In some examples, there is processing associated with the service  104 , prior to creating the configuration file or, at least, prior to providing the configuration file to the computing device  102 , to verify entitlement by the computing device  102  to be configured in accordance with the configuration file.  
         [0021]     Referring back to  FIG. 1 , this may include, for example, the local application on the client computing device  106  interacting with the commerce server  108  to accept payment in exchange for entitling the computing device  102  to be configured in accordance with the configuration file. For example, the configuration may include a feature upgrade. This is discussed in greater detail later, with reference to  FIG. 4 .  
         [0022]     Returning now to  FIG. 2 , reference numeral  210  represents the computing device operating based on the stored configuration file. Furthermore, the arrow labeled  212  represents the computing device  102  providing the configuration file and associated unique identifier, along with the digitally-signed digest, back to the service  104 . The reference numeral  214  represents the service  104  interoperating with the computing device  104  based on the configuration file provided from the computing device  102 .  
         [0023]     At  210  in  FIG. 2 , a condition of the computing device  102  operating based on the stored configuration file is that it is verified that the configuration file is authenticated as not being tampered with since being generated by processing associated with the service  104 . Likewise, at  214  in  FIG. 2 , a condition of the service  104  interoperating with the computing device  102  based on the configuration file provided from the computing device  102  is that the configuration file is authenticated as not being tampered with since being generated by processing associated with the service  104 .  
         [0024]     As mentioned earlier, the configuration referred to in this patent application is data driven, and the configuration file includes an indication of the unique identifier associated with the computing device  102 . In one example, the configuration file represents an XML-based file of key/value pairs, where one of the key/value pairs is the unique identifier associated with the computing device  102 . The configuration file may be a binary-encoded file (such as a binary-encoded XML file.)  
         [0025]     We now refer to  FIG. 3-1 , which describes processing associated with the service  104  and usable to create the signed configuration file, as well as processing usable to authenticate the absence of tampering with the configuration file. At step  302 , a digest of the configuration file is generated (e.g., using a hash algorithm such as MD5 or SHA-1). At step  304 , the digest is encrypted (e.g., using an algorithm such as the RSA algorithm) using a private key associated with the service  104 . At step  306 , the configuration file and the encrypted digest are provided to the computing device  102 .  
         [0026]      FIG. 3-2  describes processing associated with the computer device  102  and/or the service  104  (as described in greater detail below) to authenticate the absence of tampering with the configuration file. At step  312 , a digest is created of the configuration file. At step  314 , the public key (nominally corresponding to the private key associated with the service  104 , used to create encrypt the digest) is applied to the signed digest. At step  316 , the digest created at step  312  is compared to the result of step  314 . If these are the same, then this is evidence not only that that the configuration file has not been tampered with since being signed, but also that the configuration file was signed using the private key to which the public key (step  314 ) corresponds.  
         [0027]     We now describe a particular use of the  FIG. 2  flow described above, with reference to  FIG. 4  (and also to the architecture overview illustrated in  FIG. 1 ). In the particular use, it is desired to configure the computing device  102  to be upgraded in a particular manner. For example, as referred to in the Background, the computing device  102  may be a portable media player (such as an iPod media player, from Apple Computer), and the service includes a client computing device operating a media management application (such as, for example, the iTunes program). Among other things, the media management application operates to download songs to the portable media player. The media management application operates in conjunction with a media store (e.g., in  FIG. 1 , the content server  110 ) to obtain songs and may also operate in conjunction with a commerce server (in  FIG. 1 , the commerce server  112 ) to process payment for the songs. In some examples, songs need not be obtained from the media store but may be obtained from other sources, such as from “ripping” a compact disc.  
         [0028]     In the example, the portable media player computing device  102  is configured to have a particular initial song-holding capacity. For example, the portable media player may be configured to hold twenty-five songs. In particular, a default configuration may be hard-coded into the portable media player computing device  102  or the configuration file in the portable media player may include data representing that the capacity of the portable media player is twenty-five songs. Thus, for example, if the configuration file is an XML file, the “key” may be “song capacity” and the corresponding value may be “twenty-five.” (In some examples, in the absence of data in the configuration file representing the capacity, the portable media player operates according to a default configuration for the capacity). A new configuration file may be provided with data indicating a capacity higher than the initial (or default) song-holding capacity. Other features may be switched (typically on), such as enabling a feature such as access to music playlists on the portable media player computing device  102 . For example, the “key” may be “playlist” and the “value” may be “off” or “on.” In one example, where a default configuration is hard-coded, the presence of a configuration file effectively overrides the default configuration.  
         [0029]     Referring now specifically to  FIG. 4 , an example high-level processing flow is described, with respect to the service  104 , to accomplish the song-holding capacity upgrade. At step  402 , the upgrade process is initiated. For example, this may be a result of a user interacting with the media management application on the client computer  106 . For example, the initiation may be a user activating a user interface item, such as clicking an icon.  
         [0030]     In other examples, the user initiation may be as a result of interacting with an application on the computing device  102  to be upgraded. For example, the computing device  102  may be a mobile telephone that is configured to also operate as a portable media player. The user may interact with the portable media player application, which then wirelessly (e.g., via a cellular or other wireless connection) interacts with the service.  
         [0031]     As another example, the initiation may be a result of the user attempting to perform an action for which the upgrade (or some other reconfiguration) is required. For example, the user may be attempting to download a twenty-sixth song into the portable media player computing device  102 , where the data in the configuration is such that the song-holding capacity is twenty-five songs.  
         [0032]     As yet another example, using the iPod/iTunes environment as an example, the upgrade may be initiated via a Music Store page accessed over the network using the iTunes desktop application. When the mobile telephone is connected to the desktop computer for the first time, the desktop application contacts the Music Store, which associates the phone with the user&#39;s Music Store account. When the user subsequently visits the Music Store, the Store can display a button or link that the user can click to initiate the upgrade for the phone.  
         [0033]     At step  404 , a commerce transaction is performed with respect to the upgrade. Thus, for example, the user may provide a credit card number or otherwise indicate payment for the upgrade. For example, the user may have “song credits” or a prepaid card. At step  408 , the service  104  operates to create the configuration file (with respect to the unique ID) indicating the upgraded song-holding capacity (or other upgraded features) as well as generating a digital signature for the configuration file as shown, for example, in  FIG. 3-1 . In some examples, information may be provided to the user regarding the configuration change, such as a warning that a higher capacity flash memory may be required to actually hold the higher number of songs.  
         [0034]      FIG. 5  is a flowchart illustrating processing in the computing device  102  to utilize the configuration file. The processing begins at step  502 . At step  504 , the configuration file is read. At step  506 , the configuration file is authenticated as shown, for example, in  FIG. 3-2 . If the configuration file can be authenticated, then at step  508 , the computing device  102  operates in accordance with the authenticated configuration file. If the configuration file cannot be authenticated, then at step  510 , the computing device  102  retrieves a backup copy of the configuration file and digital certificate (discussed in greater detail later, with reference to  FIGS. 6 and 7 ) or operates in accordance with a default configuration.  
         [0035]     Thus, for example, the configuration file may indicate that the portable media player computing device  102  may hold fifty songs, instead of the default twenty-five songs. The computing device  102  operating in accordance with this indication would have the capability of accessing greater than twenty-five songs from its internal memory, up to the fifty songs allowed by the configuration.  
         [0036]     The configuration file indicating the upgraded song-holding capacity may be provided back to the service  104 , from the computing device  102  (for example, see arrow  212  in  FIG. 2 ). Processing of the service  104  may operate according to the  FIG. 5  flowchart, where the step  508  “operate in accordance with the authenticated configuration file” (i.e., interoperate with the computing device based on the configuration file, as denoted by reference numeral  214  in  FIG. 2 ). Thus, for example, the service  104  may not download songs to the portable media player computing device  102  if doing so would cause the number of songs stored in the portable media player computing device  102  to go above the capacity indicated by the configuration file.  
         [0037]     We now describe a failure/backup scenario, with reference to  FIG. 7 . As background, we first describe an example memory organization of a computing device  102 , with reference to  FIG. 6 . The computing device  102  includes a microprocessor  602 , with an interface  604  to the service  104 . A flash memory  606  is accessible to the service  104  and the processor  602 , but an internal persistent storage  608  is accessible only to the processor  602  (and not to the service  104 ). Typically, then, the configuration file is provided from the service  104  and stored onto the flash memory  606 , accessible to the service  104 .  
         [0038]     We now turn to  FIG. 7  to discuss the failure/backup scenario. At step  702 , it is determined if the configuration file and digital signature are in the flash memory  606 . If so, then at step  704 , the configuration file and digital signature are processed from the flash memory  606  or a modified configuration file and digital signature are received from the service  104 . At step  706 , the configuration file and digital signature are backed up from the flash memory  606  to the internal persistent storage  608  of the computing device  102 .  
         [0039]     On the other hand, if at step  702  the configuration file and digital signature are not in the flash memory (for example, the flash memory may have been replaced), it is determined at step  708  whether the configuration file and digital signature are in the internal persistent storage  608 . If so, then at step  710 , the configuration file and digital signature are copied to the flash memory  606 , and processing continues at step  704 .  
         [0040]     Otherwise, at step  712 , a default configuration file and digital signature are obtained, or a service backed-up configuration file and digital signature are obtained (e.g., by referencing a purchase history to confirm that a user has actually paid for a particular configuration), and are stored into the flash memory  706 . Then, processing continues at step  704 .  
         [0041]     While this invention has been described in terms of several embodiments, there are alterations, permutations, and equivalents, which fall within the scope of this invention. It should also be noted that there are many alternative ways of implementing the methods and apparatuses of the present invention. It is therefore intended that the following appended claims be interpreted as including all such alterations, permutations, and equivalents as fall within the true spirit and scope of the present invention.