Program update method and server
Abstract
A system including a secure LSI 1 establishes a communication path to/from a server 3 (UD1), and receives a common key-encrypted program generated by encryption with a common key and transmitted from the server 3 (UD6 and UD7). The received common key-encrypted program is decrypted to generate a raw program, and the raw program is re-encrypted with an inherent key to newly generate an inherent key-encrypted program, which is stored in an external memory.

Term
Term ended
Projected expiry passed 11 November 2023, 2.9 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
3 claims: 1 independent, 2 dependent
- 1A server which operates for program update in a system including an LSI device, the server executing:a first step of receiving from the system an ID of the LSI device and an application ID which is identification information of an update object program;a second step of referring to a first table which indicates correspondences between application IDs and LSI IDs to determine whether or not the update object program is transmitted to the system;and if it is determined at the second step that the update object program is transmitted to the system, a third step of transmitting to the system a common key-encrypted program generated by encrypting the update object program with a common key and common key information from which the common key is derived.
73 paragraphs in 4 sections, as filed
BACKGROUND OF THE INVENTION
Field of the Invention
0001The present invention relates to a technique for updating a program while maintaining security in a key-installed system or an LSI device used for such a system.
Description of the Related Art
0002Conventionally, for the purpose of protecting a program for operating an LSI device from fraudulent processing, a program encrypted with a predetermined manufacturer key is stored in a memory and decrypted with the key for execution. However, with such a system, a program encrypted with a common manufacturer key is executed in a large number of LSI devices, and thus, if information of the manufacturer key is fraudulently leaked even from a single product, it becomes possible to commit tampering of programs in a large number of products. Therefore, the security cannot be improved.
0003In a method conceived for the purpose of overcoming such a problem, a program for operating LSI devices is encrypted with an inherent key unique to each LSI device, and a product can execute only a program encrypted with an inherent key unique to the product (see Japanese Patent Applications Nos. 2002-215096 and 2002-258481). Such a method improves the security because fraudulent leakage of key information from a single product causes no effect on the other products. As a premise of this method, a method for encrypting a key twice was conceived (see Japanese Unexamined Patent Publication No. 2003-101527).
0004In general, updating of a program installed in a product LSI device is achieved by securing a safe communication path by an SSL connection and transmitting a raw program or a program encrypted with a manufacturer key from a server to the LSI device. However, with this method, if the communication path is fraudulently accessed, a program executable in a large number of products can be fraudulently read out, so that the security in program update is not improved.
0005In the case where the above method is used for the purpose of overcoming such a problem, a raw program or a program encrypted with a manufacturer key cannot be executed in an LSI device without any additional processing because the LSI device executes only a program encrypted with its own inherent key.
0006In another possible method, programs encrypted with different keys for respective LSI devices are prepared in a server and key information is managed for each LSI device. The programs encrypted with different keys for respective LSI devices are transmitted from the server to the LSI devices. However, this method requires enormous efforts and cost and therefore is not practical.
SUMMARY OF THE INVENTION
0007An objective of the present invention is to provide a method for updating a program while maintaining high security in an LSI device capable of executing a program encrypted with an inherent key unique to the LSI device.
0008An aspect of the present invention is a method for updating an inherent key-encrypted program in a system including an LSI device and an external memory, the inherent key-encrypted program being generated by encryption with an inherent key unique to the LSI device and being stored in the external memory, the method comprising: a first step of receiving by the system a common key-encrypted program generated by encryption with a common key and transmitted from a server; a second step of decrypting by the system the received common key-encrypted program to generate a raw program; and a third step of re-encrypting by the system the raw program with the inherent key and storing the re-encrypted program in the external memory as a new inherent key-encrypted program.
0009The program update method of the present invention preferably further comprises the steps of: receiving by the system common key information transmitted from the server; and generating by the system a raw common key using the received common key information, wherein at the second step, the raw common key is used to decrypt the common key-encrypted program.
0010The common key information preferably includes an encrypted common key generated by encrypting the raw common key with a raw first intermediate key, and an encrypted first intermediate key generated by encrypting the raw first intermediate key with a raw second intermediate key.
0011In the program update method of the present invention, the LSI device includes an internal memory in which inherent key information is stored; the system uses the inherent key information stored in the internal memory to generate a raw inherent key at boot-up of the system; and at the third step, the raw inherent key is used for re-encrypting the raw program.
0012The inherent key information preferably includes an encrypted inherent key generated by encrypting the raw inherent key with a raw third intermediate key and an encrypted second intermediate key generated by encrypting the raw third intermediate key with a raw fourth intermediate key. Alternatively, the generated raw inherent key is preferably stored in a register of the LSI device and is used for decrypting the inherent key-encrypted program to a raw program for execution of the inherent key-encrypted program.
0013In the program update method of the present invention, the LSI device preferably includes a boot ROM in which a boot program is stored; the external memory preferably includes an acquisition program for establishing data transmission between the LSI device and a server; and the system preferably executes reception of the common key-encrypted program based on the acquisition program stored in the external memory, and controls update processing performed after the reception of the common key-encrypted program based on the boot program stored in the boot ROM.
0014The program update method of the present invention preferably further comprises the step of receiving a HASH value of the raw program transmitted from the server, wherein at the second step, the received HASH value is used to perform a HASH verification on the decrypted raw program.
0015Another aspect of the present invention is a server which operates for program update in a system including an LSI device, the server executing: a first step of receiving from the system an ID of the LSI device and an application ID which is identification information of an update object program; a second step of referring a first table which indicates correspondences between application IDs and LSI IDs to determine whether or not the update object program is transmitted to the system; and if it is determined at the second step that the update object program is transmitted to the system, a third step of transmitting to the system a common key-encrypted program generated by encrypting the update object program with a common key and common key information from which the common key is derived.
0016The server of the present invention preferably executes: a fourth step of receiving from the system a signal which requests application inherent information necessary for execution of the update object program; and a fifth step of referring to a second table which indicates correspondence between a transmission history of the application inherent information and the LSI IDs to determine whether or not the application inherent information requested at the fourth step is transmitted.
0017In the server of the present invention, the common key information preferably includes an encrypted common key generated by encrypting a raw common key with a raw first intermediate key and an encrypted first intermediate key generated by encrypting the raw first intermediate key with a raw second intermediate key.
BRIEF DESCRIPTION OF THE DRAWINGS
0018<ul id="ul0001" list-style="none" compact="compact"><li>FIG. <b>1</b> is a block diagram showing a structure of a secure LSI device according to an embodiment of the present invention.</li><li>FIG. <b>2</b> illustrates an entire flow of development and manufacture which use the secure LSI device of FIG. <b>1.</b></li><li>FIG. <b>3</b> is a flowchart which illustrates the entire flow of a boot program.</li><li>FIG. <b>4</b> is a dataflow of initial value setting processing SZ1.</li><li>FIG. <b>5</b> is a flowchart of program installation processing SD1 in the product operation mode.</li><li>FIG. <b>6</b> is dataflow 1 of program installation processing SD1.</li><li>FIG. <b>7</b> is dataflow 2 of program installation processing SD1.</li><li>FIG. <b>8</b> is a flowchart of normal boot processing SD2 in the product operation mode.</li><li>FIG. <b>9</b> is dataflow 1 of normal boot processing SD2.</li><li>FIG. <b>10</b> is dataflow 2 of normal boot processing SD2.</li><li>FIG. <b>11</b> is a flowchart which illustrates the communication between a secure LSI device and a server in the program update processing.</li><li>FIG. <b>12</b> shows a structure of a program used in connection with program update which is stored in an external memory <b>100.</b></li><li>FIG. <b>13</b> is a flowchart which illustrates program update processing.</li></ul>
DESCRIPTION OF THE PREFERRED EMBODIMENTS
0019Hereinafter, an embodiment of the present invention is described with reference to the drawings. Note that, in the following descriptions, an encrypted key or program which is obtained by encrypting a key or program X using a key Y is represented as "Enc (X, Y)".
0020FIG. <b>1</b> is a block diagram showing an internal structure of a secure LSI device, which is a semiconductor device of the present embodiment. In FIG. <b>1,</b> the secure LSI device <b>1</b> can be connected to an external memory (flash memory) <b>100,</b> an external tool <b>110,</b> or the like, through an external bus <b>120.</b> The operation mode of the secure LSI device <b>1</b> can be set by supplying a mode ID to the secure LSI device <b>1.</b>
0021Major components of the secure LSI device <b>1,</b> which are relevant to the following descriptions, are briefly described.
0022The secure LSI device <b>1</b> has a secure memory (e.g., secure Flash) <b>10</b> including an unrewritable area <b>11.</b> The unrewritable area <b>11</b> includes an unrewritable area write flag <b>12.</b> When a mode ID is once written in the secure memory <b>10,</b> the flag value of the unrewritable area write flag <b>12</b> is changed from "WRITABLE" to "WRITTEN", and writing in the unrewritable area <b>11</b> is thereafter prohibited. It should be noted that the secure memory <b>10</b> and the external memory <b>100</b> are made of flash memories in the present embodiment, but the present invention is not limited thereto. Any type of memory may be used so long as it is nonvolatile.
0023An encryption section <b>2</b> performs encryption and decryption of programs. The encryption section <b>2</b> includes a private key arithmetic processing section <b>20</b> and a key-<b>g</b>eneration/update sequencer <b>30.</b> The private key arithmetic processing section <b>20</b> includes registers for storing various keys and a program encryption seed (a program common key storage register <b>21,</b> a program inherent key storage register <b>22,</b> an encryption key storage register <b>23,</b> etc.), and is capable of executing a plurality of sequences including processes for encrypting or decrypting programs. The key-generation/update sequencer <b>30</b> determines whether to permit execution of each of the sequences which can be executed by the private key arithmetic processing section <b>20,</b> and prohibits the operation of the private key arithmetic processing section <b>20</b> with respect to a sequence whose execution is determined to be impermissible. The key-generation/update sequencer <b>30</b> includes a mode ID storage register <b>31.</b> The key-generation/update sequencer <b>30</b> determines whether to permit execution of each sequence based on the mode ID stored in the mode ID storage register <b>31.</b> Furthermore, the key-generation/update sequencer <b>30</b> includes an encryption type identifier storage register <b>32</b> for storing an encryption type identifier and a storage section <b>33</b> for storing the program encryption seed. The encryption type identifier indicates what algorithm and key length are used for encrypting a key or program.
0024A mode sequencer <b>40</b> also includes a mode ID storage register <b>41.</b> The mode sequencer <b>40</b> controls the operation of an external host interface (I/F) <b>50,</b> i.e., which interface is used for reading a program or data stored in the external memory <b>100,</b> according to a mode ID stored in the mode ID storage register <b>41</b> and the value of a jumper <b>43.</b> With this arrangement, it is possible to control whether or not a raw (binary) program stored in the external memory <b>100</b> can be executed. The mode sequencer <b>40</b> further includes an encryption type identifier storage register <b>42</b> for storing an encryption type identifier. The encryption type identifier indicates what method is used for encrypting a key.
0025The external host I/F <b>50</b> transmits/receives a program or data to/from the external memory <b>100</b> or the external tool <b>110</b> according to the control by the mode sequencer <b>40</b> through any of a through section <b>52</b> for encryption (hereinafter, "encryption through section <b>52"),</b> a through section <b>53</b> for execution (hereinafter, "execution through section <b>53"),</b> and a cryptography engine <b>54</b> for program decryption (hereinafter, "program decryption cryptography engine <b>54</b>"), which are included in a program processing section <b>51,</b> and a through section <b>56</b> and a cryptography engine <b>57</b> for content encryption/decryption, which are included in a data processing section <b>55.</b> The program decryption cryptography engine <b>54</b> includes a program inherent key storage register <b>58</b> for storing a program inherent key which is used for decrypting a program.
0026In the key generation mode and product operation mode (described later), a program cannot be taken in through the execution through section <b>53.</b> That is, the secure LSI device <b>1</b> is structured such that the operation of the secure LSI device <b>1</b> does not proceed to a program except for a program encrypted with an inherent key when the secure LSI device <b>1</b> is in the key generation mode or product operation mode.
0027A boot ROM <b>60</b> stores a boot program for controlling the boot-up operation of the secure LSI device <b>1.</b> A HASH calculation section <b>70</b> calculates a HASH value for verifying the validity of a program read into the secure LSI device <b>1.</b>
0028Further, the external memory <b>100</b> stores programs and contents. The external tool <b>110</b> stores various initial values which are to be transferred to and stored in the secure memory <b>10</b> at the time of the first boot-up of the secure LSI device <b>1.</b> The type of the initial value varies depending on a selected operation mode.
0029<b>FIG. 2</b> shows the entire flow of development and manufacture which use the secure LSI device <b>1</b> of FIG. <b>1.</b> As shown in FIG. <b>2,</b> the secure LSI device <b>1</b> operates in the following four operation modes: administrator mode (mode ID: 00), key-generation mode (mode ID: 01), development mode (mode ID: 10), and product operation mode (mode ID: 11).
0030When being set to the administrator mode, the secure LSI device <b>1</b> operates as an LSI device for an administrator (hereinafter, referred to as "administrator LSI device"). In the administrator LSI device, a key-generation program is developed (PA1), and the developed key-generation program is encrypted using any key-generation key (PA2).
0031When being set to the key-generation mode, the secure LSI device <b>1</b> operates as an LSI device for key generation (hereinafter, referred to as "key-generation LSI device"). In the key-generation LSI device, the encrypted key-generation program generated in the administrator LSI device is installed (PB1), and the key-generation program is executed to generate various keys (PB2).
0032When being set to the development mode, the secure LSI device <b>1</b> operates as an LSI device for development (hereinafter, referred to as "development LSI device"). In the development LSI device, an application program which is to be executed in an actual product is developed (PC1). The application program is encrypted using the program common key (PC2).
0033When being set to the product operation mode, the secure LSI device <b>1</b> operates as an actual product LSI device. The application program generated in the development LSI device and encrypted with the program common key is installed in the product LSI device. Inside the product LSI device, the installed application program is converted to an application program encrypted with a program inherent key (PD1). After the conversion of the application program, the secure LSI device <b>1</b> operates as a normal product LSI device (PD2). This conversion processing can be executed also in the development LSI device for the purpose of debugging the application program (PC3).
0034Hereinafter, details of a normal operation and a secure update operation, which are performed when the secure LSI device <b>1</b> having the above structure is in the product operation mode, are described with reference to flowcharts and data flows.
0035<b>FIG. 3</b> is a flowchart which illustrates the entire process of the boot program. When the secure LSI device <b>1</b> is powered on, the boot program stored in the boot ROM <b>60</b> is executed by a CPU <b>65.</b> Referring to FIG. <b>3,</b> each hardware is first initialized (SZ0). Then, various initial values are read from the external tool <b>110</b> and set in the secure memory <b>10</b> (SZ1).
0036FIG. <b>4</b> is a flowchart which illustrates the initial value setting processing SZ1. In the first place, at a jumper <b>44,</b> it is determined whether or not the secure memory <b>10</b> is mounted in the LSI device (SZ11). Next, it is determined whether or not the unrewritable area write flag <b>12</b> indicates "WRITTEN" (SZ12). When it indicates "WRITTEN" (Yes at SZ 12), the processing SZ1 is ended because an initial value is already set in the secure memory <b>10.</b> When the unrewritable area write flag <b>12</b> indicates "WRITABLE" (No at SZ12), initial values are written in the secure memory <b>10</b> (SZ13 to SZ18). In addition to the mode ID, an encrypted program inherent key, address management information and data inherent key are written in the unrewritable area <b>11</b> of the secure memory <b>10.</b> If the first determination indicates that the secure memory <b>10</b> exists outside the LSI device (No at SZ14), the mode ID is overwritten with a value that indicates the product operation mode (SZ15). As a result, a fraudulent product which has a secure memory <b>10</b> outside its LSI package operates only when it is in the product operation mode.
0037Next, the unrewritable area write flag <b>12</b> is set to "WRITTEN" (SZ19), whereby rewriting in the unrewritable area <b>11</b> is thereafter prohibited. Further, an encryption type identifier and an installation mode flag are written in general areas 13 and <b>14</b> (SZ1A). When the mode ID indicates a mode other than the administrator mode (No at SZ1B), an encrypted common key and an encrypted key-generation key are written in the general areas <b>13</b> and <b>14</b> in addition to the encryption type identifier and installation mode flag (SZ1C).
0038Thereafter, preprocessing SZ2 is executed. Herein, the mode ID set in the unrewritable area <b>11</b> of the secure memory <b>10</b> is set in the mode ID storage register <b>31</b> of the key-generation/update sequencer <b>30</b> and in the mode ID storage register <b>41</b> of the mode sequencer <b>40.</b> Further, the encryption type identifier set in the general area <b>13</b> of the secure memory <b>10</b> is set in the encryption type identifier storage register <b>32</b> of the key-generation/update sequencer <b>30</b> and in the encryption type identifier storage register <b>42</b> of the mode sequencer <b>40.</b> Furthermore, the address management information stored in the unrewritable area <b>11</b> of the secure memory <b>10</b> is set in an encryption address segment storage register <b>81</b> of an MEMC <b>80.</b> The processes described hereinabove correspond to initial value setting phases PAO, PBO, PC0 and PDO of FIG. <b>2.</b>
0039Thereafter, the operation is performed in a mode determined according to the value of the mode ID (SZ3). Thus, the confidentiality of a program is improved by restricting the operation performed in a secure LSI device according to the value of the mode ID.
0040Next, a normal product operation (normal boot process) is described in detail.
0041When the mode ID is "11", the secure LSI device <b>1</b> is set to the product operation mode to execute program installation processing SD1 or normal boot processing SD2 depending on the value of the installation mode flag (determined at SD0).
0042FIG. <b>5</b> is a flowchart of program installation processing SD1. FIGS. <b>6</b> and 7 illustrate a dataflow of program installation processing SD1. In program installation processing SD1, a program inherent key is decrypted using inherent key information stored in the secure memory <b>10</b> (SD11 and SD12), and a program common key is decrypted using common key information (SD13 and SD14). The decrypted program common key and the decrypted program inherent key are used to convert a program Enc (program, program common key), which is stored in the external memory <b>100,</b> to a program Enc (program, program inherent key) (SD15 to SD17). Thereafter, the validity of the program is verified (SD18). If valid, the installation mode flag is set to OFF (SD19). With this setting, program installation processing SD1 is not performed any more at the time of boot-up of the secure LSI device <b>1.</b> At the end of program installation processing SD1, the program common key stored in the secure memory <b>10</b> and the program Enc (program, program common key) stored in the external memory <b>100</b> are deleted (SD1A and SD1B).
0043FIG. <b>8</b> is a flowchart of normal boot processing SD2. FIGS. <b>9</b> and <b>10</b> illustrate a dataflow of normal boot processing SD2. In normal boot processing SD2, an encrypted program inherent key (inherent key information) stored in the unrewritable area <b>11</b> of the secure memory (internal memory) <b>10,</b> i.e., an encrypted inherent key Enc (program inherent key (raw), MK0 (raw third intermediate key)) and an encrypted second intermediate key Enc (MK0, CK0 (raw fourth intermediate key)), are set in an encryption key storage register of the private key arithmetic processing section <b>20</b> (SD21). Then, the encrypted program inherent key is decrypted using the program encryption seed installed in the key-generation/update sequencer <b>30,</b> whereby a program inherent key is obtained (SD22). The obtained program inherent key is set in the program inherent key storage register <b>22</b> of the private key arithmetic processing section <b>20</b> and in the program inherent key storage register <b>58</b> of the program decryption cryptography engine <b>54</b> of the external host I/F <b>50</b> (SD23).
0044Thereafter, a data inherent ID stored in the unrewritable area <b>11</b> of the secure memory <b>10</b> is set in the inherent ID storage register of the private key arithmetic processing section <b>20</b> (SD24). Further, random numbers are generated by the CPU <b>65,</b> and the generated random numbers are set in the random number storage register of the private key arithmetic processing section <b>20</b> (SD25). Then, a data inherent key is generated from the data inherent ID and the random numbers by the private key arithmetic processing section <b>20</b> (SD26). Reproduction of a content is performed using the data inherent key. Since the data inherent key is generated using random numbers, the data inherent key differs at every boot-up. Thus, the safety in content reproduction is improved.
0045Thereafter, a program encrypted with a program inherent key, Enc (program, program inherent key), which is stored in the external memory <b>100,</b> is decrypted through the program decryption cryptography engine <b>54</b> of the program processing section <b>51</b> of the external host I/F <b>50.</b> The decrypted program is transferred to the HASH calculation section <b>70</b> to calculate the HASH value (SD27). The program inherent key stored in the program inherent key storage register <b>58</b> of external host I/F <b>50</b> is used for decryption. The calculated HASH value is compared with the HASH value stored in the general area <b>13</b> of the secure memory <b>10</b> to check whether or not the application program has been tampered (SD28). If the HASH values are equal to each other (No at SD29), the process proceeds to the program Enc (program, program inherent key) stored in the external memory <b>100</b> to execute an application (SD2A). If the HASH values are not equal to each other, it is determined that some fraud has been committed, and a fraudulent access control procedure is executed (SD2B).
0046The processing of updating a program in a secure LSI device which operates as a product as described above is now described with reference to FIG. <b>11.</b> FIG. <b>11</b> illustrates a flow showing transmission of data between the server <b>3</b> and a system including the secure LSI device <b>1</b> in the program update processing.
0047Referring to FIG. <b>11,</b> after the secure LSI device 1 starts the program update processing, the server <b>3</b> receives an ID of the secure LSI device <b>1</b> from the system to perform ID authentication. When the ID is valid, the server <b>3</b> is SLL-connected to the secure LSI device <b>1</b> (UD1). With such a procedure, the safety of the communication path between the server <b>3</b> and the system including the secure LSI device <b>1</b> is secured to some extent.
0048After the communication path is secured, the system transmits an application ID, which is identification information of a program to be updated (hereinafter, referred to as "update object program"), to the server <b>3</b> (UD2). The server <b>3</b> manages a first table A <b>4</b> which indicates correspondences between application IDs of updatable programs and IDs of LSI devices on which a program is allowed to be executed. The server <b>3</b> determines whether or not a program may be transmitted based on the first table A <b>4.</b> After the correspondence between the ID of the secure LSI device <b>1</b> and an application ID of a program requested to be updated is checked, the server <b>3</b> starts transmission of the update object program.
0049In the first place, the server <b>3</b> transmits additional information of the update object program to the secure LSI device <b>1</b> (UD3). Herein, the additional information includes a signature for authenticating whether or not a program is allowed to be updated in the secure LSI device <b>1,</b> the size of the update object program, the HASH value (raw HASH value) of the update object program, etc. The secure LSI device <b>1</b> performs authentication using a signature transmitted as additional information and determines whether or not the external memory <b>100</b> has an updatable free space based on the transmitted program size. If it is determined that update is possible, the secure LSI device <b>1</b> requests the server <b>3</b> to transmit common key information (UD4).
0050Receiving the request, the server <b>3</b> transmits the common key information including an encrypted common key Enc (program common key (raw), MK1 (raw first intermediate key)) and an encrypted first intermediate key Enc (MK1, CK1 (raw second intermediate key)) to the secure LSI device <b>1</b> (UD5). The secure LSI device <b>1</b> decrypts the program common key using the common key information, and the HASH calculation is performed on the decrypted program common key to verify the validity of the program common key. After the program common key is successfully decrypted, the system requests the server <b>3</b> to transmit a common key-encrypted program (UD6). Receiving the request, the server <b>3</b> transmits a program Enc (program, program common key) to the system (UD7). The secure LSI device <b>1</b> converts the program Enc (program, program common key) to Enc (program, program inherent key). Further, the secure LSI device <b>1</b> decrypts the converted program (program, program inherent key) to a raw program. Then, the secure LSI device <b>1</b> performs a HASH calculation on the raw program and compares the obtained HASH value with a HASH value previously received as additional information to verify the validity of the program. The above processing is described later in detail.
0051After the common key-encrypted program is successfully converted to an inherent key-encrypted program, the system including the secure LSI device <b>1</b> requests the server <b>3</b> to transmit application inherent information (UD8). The application inherent information includes information necessary for executing a program. Thus, the secure LSI device <b>1</b> cannot execute an updated program without the application inherent information. The server <b>3</b> also manages a second table B 5 which indicates correspondences between a transmission history of the application inherent information and the IDs of the LSI devices. The server <b>3</b> does not transmit a plurality of pieces of application inherent information to the same secure LSI device. Thus, a single secure LSI device cannot update one program more than once.
0052When it is determined that the application inherent information may be transmitted, the server <b>3</b> transmits the application inherent information to the system including the secure LSI device <b>1</b> (UD9). The secure LSI device <b>1</b> performs a HASH calculation on the application inherent information to verify the validity of the application inherent information, whereby the program update processing is completed. The communication between the secure LSI device <b>1</b> and the server <b>3</b> is disconnected (UD10).
0053It should be noted that transmission of data between the secure LSI device <b>1</b> and the server <b>3</b> according to the present invention is not limited to the above-described data flow. For example, the server <b>3</b> does not necessarily manage the second table B <b>5</b> such that a plurality of pieces of application inherent information are transmitted to the same secure LSI. However, the confidentiality of a program is more improved when a single program is not transmitted to the same secure LSI more than once.
0054Further, the additional information, common key information, and common key-encrypted program are not always transmitted from the server <b>3</b> to the secure LSI device <b>1</b> separately. For example, a part or the entirety of these data may be transmitted at one time in the form of a program package.
0055The conversion from the common key-encrypted program Enc (program, program common key) to the inherent key-encrypted program Enc (program, program inherent key) the secure LSI device <b>1</b> is now described in detail with reference to the drawings. FIG. <b>12</b> illustrates a structure of a program used in connection with program update, which is stored in the external memory <b>100.</b>
0056Referring to FIG. <b>12,</b> the external memory <b>100</b> stores an encryption control program (Enc (control program, program inherent key)) <b>200</b> and an encryption application program (Enc (application program, program inherent key)) <b>210,</b> which have been encrypted with an inherent key.
0057The encryption control program <b>200</b> includes an application boot-up section <b>201</b> and a program update control section <b>205.</b> The program update control section <b>205</b> includes a common key decryption section <b>206,</b> a program inherent key encryption processing section <b>207,</b> and a program update success/failure determination section <b>208.</b>
0058The application boot-up section <b>201</b> receives an instruction from a boot program stored in the boot ROM <b>60</b> to boot up the encryption application program <b>210.</b> The common key decryption section <b>206</b> decrypts the program common key using the key-generation/update sequencer <b>30</b> based on the common key information transmitted from the server <b>3.</b> The program inherent key encryption processing section <b>207</b> converts the common key-encrypted program Enc (program, program common key) to the inherent key-encrypted program Enc (program, program inherent key) using the key-generation/update sequencer <b>30.</b> The program update success/failure determination section <b>208</b> decrypts the inherent key-encrypted program Enc (program, program inherent key) to a raw program and performs a HASH verification on the raw program to determine whether or not the program update has been successfully done. If successful, the old program is deleted, and information including an address where the updated program is stored, the size of the updated program, etc., are stored in the secure memory <b>10.</b>
0059The encryption application program <b>210</b> includes a general operation section <b>211,</b> which is a general application program, and a program acquisition section <b>212</b> which is an application program used for acquiring a new application program from a server or a recording medium. Such programs stored in the external memory <b>100</b> are used for program update.
0060FIG. <b>13</b> is a flowchart of program update processing which includes conversion processing from a common key-encrypted program to an inherent key-encrypted program.
0061If an update of a program is requested by an external factor, such as a user's operation, or the like, during the execution of an application program (SX1), the system detects the request, and the general operation section <b>211</b> activates the program acquisition section <b>212,</b> which is an acquisition program of the encryption application program <b>210,</b> in order to start a program update processing (SX2).
0062The program acquisition section <b>212</b> establish communication with the server <b>3</b> to establish authentication and acquire common key information and programs (SX3). Acquiring the common key information from the server <b>3,</b> the common key decryption section <b>206</b> decrypts the program common key (SX4 and SX5). Specifically, the common key information, i.e., an encrypted program common key (Enc (program common key, MK2) and Enc (MK2, CK)), are set in the encryption key storage register <b>23</b> of the private key arithmetic processing section <b>20.</b> The encrypted program common key is decrypted using the program encryption seed installed in the key-generation/update sequencer <b>30</b> to obtain a program common key. The obtained program common key is stored in the program common key storage register <b>21</b> of the private key arithmetic processing section <b>20.</b>
0063Then, the program inherent key encryption processing section <b>207</b> performs conversion processing from a common key-encrypted program to an inherent key-encrypted program. Specifically, a program Enc (program, program common key), which has been transmitted from the server <b>3</b> and stored in the external memory <b>100,</b> is transferred to the private key arithmetic processing section <b>20</b> through the encryption through section <b>52</b> of the program processing section <b>51</b> included in the external host I/F <b>50</b> (SX6). The transferred program is decrypted with the program common key stored in the program common key storage register <b>21</b> and then encrypted with the program inherent key stored in the program inherent key storage register <b>22,</b> whereby a program Enc (program, program inherent key) is obtained. It should be noted that the program inherent key has already been decrypted at the time of boot up of the system as described above and stored in the program inherent key storage register <b>22</b> of the private key arithmetic processing section <b>20.</b>
0064In the last, the program update success/failure determination section <b>208</b> determines whether or not the program update has been successfully done. Specifically, after the program Enc (program, program inherent key) is written in the external memory <b>100</b> (SX8), the program is decrypted using the program decryption cryptography engine <b>54</b> of the program processing section <b>51</b> included in the external host I/F <b>50</b> (SX9), and the HASH value of the decrypted program, i.e., raw program, is calculated (SX10). The calculated HASH value is compared with a HASH value obtained by the program acquisition section 212 together with the encrypted program, thereby determining whether or not the update processing has been successfully done (SX11). If successful, the old program is deleted (SX12). If failed, the transmitted program is deleted (SX13). Then, information including an address where the updated program is stored, the size of the updated program, etc., are stored in the secure memory 10 (SX14), whereby the update processing is completed.
0065In the case where the program common key-encrypted program is transmitted from the server using the above program update method, a key used for encryption is changed from a program common key to a program inherent key and installed in the system. Thus, even if the communication path between the server and the secure LSI device is fraudulently accessed and the program common key-encrypted program is stolen, the secure LSI device is not allowed to operate with this program. Furthermore, as a result of the program update, programs installed in different user products are programs encrypted with different inherent keys, and thus, the confidentiality is improved. Furthermore, even if a cipher (encryption) is broken, the number of products which can be damaged is restricted, and therefore, the security is improved as compared with conventional techniques.
0066In the present embodiment, the common key information is obtained from the server. This is because the decrypted program common key and the common key information stored in the secure memory <b>10</b> are deleted in the last step of program installation processing (SD1) that is performed in product operation mode "11". If these are not deleted, it is not necessary to obtain the common key information from the server, and the common key information may be read from the secure memory <b>10</b> and decrypted.
0067Furthermore, in the present embodiment, start of program update processing is instructed by an external factor, the general operation section <b>211</b> activates the program acquisition section <b>212,</b> and after a program is acquired, respective processes are instructed by a boot program. However, the present invention is not limited to these. For example, a structure wherein the boot program activates the program acquisition section <b>212</b> further improves the security.
0068Furthermore, the program inherent key is not necessarily unique to each product, but may be unique to each product type or each set of products. The intention of the present invention is to reduce the damage which may be caused when a cipher (encryption) is broken in one product. The effects of the present invention are sufficiently achieved by decreasing the number of LSI devices which have programs encrypted with the same key. Furthermore, even when the program inherent key is common among all the products, the communication path is broken, and the common key-encrypted program is stolen, a secure LSI device is not allowed to operate without any additional processing. Thus, the sufficient effects can be achieved only by changing the encryption key from a common key to an inherent key.
0069As described above, according to the present invention, even in secure LSI devices with high confidentiality wherein a program is re-encrypted with an inherent key unique to each LSI device before it is executed, updating of the program can be achieved only by transmitting the same program from the server.
0070Furthermore, even if the communication path between the server and the secure LSI device is fraudulently accessed, and the common key-encrypted program is stolen, the secure LSI device is not allowed to operate with the program, and therefore, the confidentiality is improved. Furthermore, even if the cipher (encryption) is broken, the number of products which can be damaged is limited, and therefore, the security is improved as compared with the conventional techniques.
0071Further still, the validity of a common key or a program received from the server is verified using a raw HASH value. Thus, tampering of the raw HASH value is difficult as compared with tampering of an encrypted HASH value in the communication path. Therefore, the security is improved.
Contents4
14 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| EP1126355A1 | Cites | European Patent Office (EPO) | Search report |
| EP1202150A2 | Cites | European Patent Office (EPO) | Search report |
| US5666411A | Cites | United States of America | Search report |
20 members in 6 offices
Priority claims3
| Document | Office | Kind | Date |
|---|---|---|---|
| 2002331992 | Japan | – | |
| 2002331992 | Japan | A | |
| 03026010 | European Patent Office (EPO) | A |
Members20
| Document | Office | Kind | |
|---|---|---|---|
| EP1422591A1 | European Patent Office (EPO) | A1 | |
| TW200409516A | Taiwan Province of China | A | |
| US2004105548A1 | United States of America | A1 | |
| JP2004164491A | Japan | A | |
| CN1505311A | China | A | |
| EP1594030A2This record | European Patent Office (EPO) | A2 | |
| EP1594030A3 | European Patent Office (EPO) | A3 | |
| EP1422591B1 | European Patent Office (EPO) | B1 | |
| DE60303476D1 | Germany | D1 | |
| DE60303476T2 | Germany | T2 | |
| EP1594030B1 | European Patent Office (EPO) | B1 | |
| DE60313368D1 | Germany | D1 | |
| US2007217614A1 | United States of America | A1 | |
| DE60313368T2 | Germany | T2 | |
| JP4099039B2 | Japan | B2 | |
| TW200903215A | Taiwan Province of China | A | |
| US7539312B2 | United States of America | B2 | |
| US2009138728A1 | United States of America | A1 | |
| US7546468B2 | United States of America | B2 | |
| US7849331B2 | United States of America | B2 |
33 legal events, as 3 offices reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | Office | |
|---|---|---|---|
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Patent expired after termination of 20 yearsExpiredPE20 | PE20 | GB | |
| Expiry of rightR071 | R071 | DE | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Amendments to the register in respect of changes of name or changes affecting rights (sect. 32/1977)REGISTERED BETWEEN 20200618 AND 20200624732E | 732E | GB | |
| Change of applicant/patenteeR081 | R081 | DE | |
| Change of representativeR082 | R082 | DE | |
| No opposition filedOpposition26N | 26N | EP | |
| No opposition filed within time limitOppositionORIGINAL CODE: 0009261PLBE | PLBE | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: NO OPPOSITION FILED WITHIN TIME LIMITSTAA | STAA | EP | |
| Corresponds to:REF | REF | EP | |
| Divisional application: reference to earlier applicationAC | AC | EP | |
| Designated contracting statesAK | AK | EP | |
| (expected) grantORIGINAL CODE: 0009210GRAA | GRAA | EP | |
| Grant fee paidORIGINAL CODE: EPIDOSNIGR3GRAS | GRAS | EP | |
| Information provided on ipc code assigned before grantRIC1 | RIC1 | EP | |
| Designation fees paidAKX | AKX | EP | |
| Despatch of communication of intention to grant a patentORIGINAL CODE: EPIDOSNIGR1GRAP | GRAP | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| Information on inventor provided before grant (corrected)RIN1 | RIN1 | EP | |
| Designated contracting statesAK | AK | EP | |
| Search report despatchedORIGINAL CODE: 0009013PUAL | PUAL | EP | |
| Request for examination filed17P | 17P | EP | |
| Divisional application: reference to earlier applicationAC | AC | EP | |
| Designated contracting statesAK | AK | EP | |
| Public reference made under article 153(3) epc to a published international application that has entered the european phaseORIGINAL CODE: 0009012PUAI | PUAI | EP |
Numbers
- Publication
- 1594030
- Application
- 50165836
Titles3
- German
- Verfahren und Server zum Aktualisieren von Software
- English
- Program update method and server
- French
- Méthode et serveur pour la mise a jour de logiciel
Classification
- CPC, 3
- G06F21/123
- G06F21/572
- G06F21/72
- IPC, 9
- G06F12 14
- G06F21 12
- G06F1 00
- G06F21 14
- G06F21 57
- G06F21 60
- G06F21 62
- G06F21 64
- H04L9 08
Designated states2
- Contracting states, 2
- Germany
- United Kingdom