Patent Publication Number: US-7584350-B2

Title: Method for booting up software in the boot sector of a programmable read-only memory

Description:
This application is a Continuation of International Patent Application No. PCT/EP2004/004664 filed Apr. 29, 2004, the entire disclosure of which is herein expressly incorporated by reference. The present application claims priority under 35 U.S.C. § 119 to German Patent Application No. 103 28 529.6 filed on Jun. 24, 2003, the entire disclosure of which is herein expressly incorporated by reference. The present application also claims priority under 35 U.S.C. § 119 to German Patent Application No. 103 57 032.2 filed on Dec. 3, 2003, the entire disclosure of which is herein expressly incorporated by reference. 

   BACKGROUND AND SUMMARY OF THE INVENTION 
   The invention relates to a method for booting up an update software in a writable memory area in the boot sector of a programmable control device of a vehicle. 
   German Patent Document DE 100 00 8974 A1 discloses a method for booting up software in a writable memory area of a programmable control device of a vehicle. In this method software to be imported is signed against falsifications by means of a public-key process using a first key of a complementary pair of keys before the software is transmitted into the control unit. After the signed software to be imported is transmitted into the control device, it is checked with respect to its integrity by the latter using a second key of the pair of keys. 
   The signature process prevents the software from being booted up into the control device in a uncontrolled manner. However, this process requires the presence of a safety mechanism in the control device, in which the safety mechanism carries out the above-mentioned checking of the signed software to be imported. In order to offer effective safety, this safety mechanism itself has to be protected from unauthorized interventions. 
   For this purpose, the above-mentioned safety mechanism is normally embedded in the boot sector of the control device and the boot sector is generally protected against later software changes. The boot sector is protected by being situated in a memory area (ROM) of the control device, which is not writable. The memory content cannot be changed later and is thus secured against unauthorized interventions. This has the disadvantage that the boot sector is inaccessible also for authorized interventions. Thus, programming errors cannot be eliminated, safety mechanisms cannot be updated, and keys, which may have become known, cannot be exchanged in such a control device. It is also not possible to restore the boot sector after changes caused by uncontrolled physical effects or aging effects—a so-called “bit tilting”. Thus, the known method cannot be used for importing software into the boot sector of such a control device. 
   In order to overcome this disadvantage, the boot sector can be embedded in a changeable non-volatile memory chip, such as Flash memory. However, then the boot sector has to be secured against unauthorized interventions in a different manner. 
   Known protection mechanisms for securing the boot sector are unsatisfactory. A method is known, for example, from U.S. Patent Document U.S. Pat. No. 5,937,063 by which boot-up firmware, such as BIOS, is protected against an unauthorized intervention by being embedded in a secured booting device. This booting device interacts with a host processor during the booting, the boot-up instructions being encrypted and decrypted by using a secret key which the secured booting device and the host processor utilize jointly. This very complex method is too expensive and, on the whole, unsuitable for control devices in a vehicle. In addition, the object of being able to update the control-device-side safety mechanism, such as the above-mentioned secret key, is not achieved. 
   U.S. Patent Document U.S. Pat. No. 5,825,878 discloses a method by which the transmission of instructions and data into a control device takes place in an encrypted form and safety mechanisms used for this purpose are embedded on the control device side, at least partially in a physically secured unit. However, the control-device-side safety mechanism, such as a secret key, cannot be updated. 
   It is an object of the invention to provide a method for booting up an update software in a writable memory area of a boot sector of a programmable control device of a vehicle, which overcomes the above-mentioned disadvantages and, in particular, makes it possible to be able to update also control-device-side safety mechanisms in the boot area in a secured manner. 
   In accordance with exemplary embodiments of the present invention, boot-up software is provided that can be booted up in a writable memory area of the programmable control device which is situated outside the boot sector. The boot-up software is capable of controlling, in the control device, the installation of the update software in the writable memory area of the boot sector. The boot-up software and the update software are booted-up in the writable memory area situated outside the boot sector. The boot-up software is executed in the control device in order to install the update software in the writable memory area of the boot sector. 
   In accordance with exemplary embodiments of the present invention, the boot area is designed by means of known mechanisms such that it cannot be accessed directly but only by means of boot-up software provided especially for this purpose. The execution of the boot-up software, by which the actual installation of the update software in the boot area is controlled, can then take place as a function of suitable safety criteria. 
   It may, for example, be provided that the execution of the boot-up software is permitted only while taking into account safety mechanisms already existing in the control device for the booting-up of applications in the control device. On the other hand, new safety mechanisms may also be entered into the control device together with the boot-up software, which update or supplement the safety mechanisms present in the control device. As a result, the booting-up of the update software can be secured by newly introduced safety mechanisms. 
   Although boot-up and update software could in principle be booted separately into the control device, it is usually more advantageous for the update software to be contained in the boot-up software because this increases the complexity at the front end of the boot-up operation without making the actual boot-up operation more difficult, and thereby increases the degree of safety of the overall concept without reducing the user friendliness. 
   A particularly favorable variant of the method according to the invention is characterized in that a signature process is applied to at least a portion of the boot-up software and/or of the update software. In this case, the software is signed before its transmission into the control device by means of a first signature key, and after its transmission into the control unit, it is checked with respect to its integrity by means of a second signature key filed in the control device. As a result, it can be ensured that only boot-up software authorized by the user of the first signature key and not further modified after the signing can be executed in the control device. In the event of a failing of the signature check, for example, the concrete execution of the boot-up software can be prevented. However, as an alternative, the loading of the boot-up software into the control unit can already be made to be a function of a successful signature check. The second signature key is preferably filed in the writable memory area of the boot sector. This permits a secured checking within the control device. After a successful signature check, the signature key itself can also be the object of the updating of the boot area. 
   An asymmetrical signature process can be used for the signing and signature checking, the first and the second signature key forming a complementary pair of keys. For example, the so-called public-key process is such an asymmetrical process. In an alternative variant of the method according to the invention, a symmetrical signature process is used, in which the first and the second signature key are identical. 
   In addition, or as an alternative to the above-explained signature process, in a particularly advantageous further development of the method according to the invention, it can be provided that at least a portion of the boot-up software and/or of the update software, before the transmission into the control device, is encrypted by means of an encryption key and, after the transmission into the control device, is decrypted by a decryption software by means of a decryption key filed in the control device. This is particularly advantageous if the actual information to be used in the boot area, that is, the update software or its significant fractions, are part of the encrypted software portion. This ensures that unauthorized parties can obtain no knowledge of the new data, which is particularly important when, for example, a key filed in the boot area is to be exchanged or updated. 
   In a manner comparable to the above-explained signature process, it is preferred that the decryption key is filed in the writable memory area of the boot sector. This permits a secured check within the control device. After a successful decryption, the decryption key itself may also be updated in the boot area. 
   Also in a manner comparable to the above-explained signature process, an asymmetrical encryption process can be used, the encryption key and the decryption key forming a complementary pair of keys. As an alternative, it may also be provided that a symmetrical encryption process is used, in which case the encryption key and the decryption key are identical. 
   Advantageously, the decryption software is contained in the boot-up software and is loaded into the control device with the update software (if required). The advantage is the increase of the degree of complexity of the overall system and thus, the increase of safety without any reduction of the user friendliness or any required increase of the device complexity. 
   In systems with a signature and encryption of at least portions of the boot-up and/or of the update software, in the simplest case, the same key is used for the signing and encryption and for the signature checking and decryption respectively. In the symmetrical case only one key is used, and in the asymmetrical case only a complementary pair of keys are used. However, as an alternative, it may be provided that different pairs of keys of identical or complementary keys are used for the signature process and for the encrypting and decrypting. 
   The method according to the invention makes it possible to update, in a secured manner, data in the boot area, which, for example, also may comprise keys filed there for special safety mechanisms. Also control devices which are impaired by “bit tilting” in the boot sector can be refreshed by the booting-up of lost memory contents. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1   a  is a schematic representation of a programmable control device with its memory contents before the implementation of the method according to exemplary embodiments of the invention; 
       FIG. 1   b  is a schematic representation of a programmable control device with its memory contents after the implementation of the method according to exemplary embodiments of the invention; 
       FIG. 2  is a schematic representation of the process steps of an embodiment of the method according to exemplary embodiments of the invention; and 
       FIG. 3  is a schematic representation of process steps following the process steps of  FIG. 2  in accordance with exemplary embodiments of the invention. 
   

   DETAILED DESCRIPTION OF THE DRAWINGS 
   As an example, the following illustrates the exchange of a crypto key present in the boot sector. Here, the term “crypto key” relates to digital keys used for the signing/signature check as well as to for the encryption/decryption. In the selected embodiment, the new key is to be transmitted into the control device not in the uncoded text but only in an encrypted manner, and the boot-up software is, in addition, protected against falsifications by means of a signature process. In both cases, a symmetrical method is used in the illustrated embodiment. In particular, the same symmetrical key is used in the illustrated embodiment for the signing/signature check and for the encryption/decryption. 
     FIG. 1  is a schematic view of a programmable control device  1  with memory contents corresponding to the embodiment.  FIG. 1   a  relates to the condition before the implementation of the method according to the invention. The control device comprises a writable memory area  10  and a writable boot sector area  20 . A control program  11  is stored in the memory area  10  and controls the original functions of the control device during the operation of the vehicle. A crypto key  21  is situated in the boot sector area  20 . This crypto key  21  is to be replaced by a crypto key  22 , in which case, after the conclusion of the process ( FIG. 1   b ), the memory area  10  should again contain the control program  11 . 
   In a schematic view,  FIG. 2  shows process steps for the secured loading of the new crypto key  22 . In a first main step  100 , a signed boot-up software  123  is generated by combining the components and subsequent signing. For this purpose, the crypto key  22  (that is, the significant portion of the update software) is encrypted in a first partial step  110 . The key used in this case should be selected such that a key  21  suitable for the decrypting is present in the control device  1 . In the illustrated example, the crypto key  21  is also used for this purpose and the encrypted update software  111  is thereby generated. As an alternative, instead of the key  21 , another key could also be used for the asymmetrical encrypting, a complementary key suitable for this other key being present in the control device. The encrypting of the update software protects the boot-up operation against unauthorized read access and, to this extent, also prevents future unauthorized writing interventions. However, this is not an absolutely necessary characteristic of the present invention. 
   In the subsequent partial step  120 , the encrypted update software  111  is signed for a protection against falsifications. In the illustrated embodiment, this takes place together with an application  121 . The application  121  contains decryption software  122  suitable for decrypting the update software  111  in order to permit decrypting in the control device. If decryption software is already present in the control device, this software can be used, and the booting-up of a decryption software will not be necessary. 
   The key used for the signature calculation is, in turn, selected such that a key suitable for the signature check is present in the control device. In the illustrated embodiment, in which a symmetrical method is selected, the signature calculation and the signature check are carried out by means of the same key  21 . The safety protection of a symmetrical method is only effective if the key used for this purpose can be kept secret. Instead of a symmetrical method, an asymmetrical method, such as a public-key method, can also be used. Also in the case of an asymmetrical method, the key used for the signature calculation is to be selected such that a key suitable for the signature check is present in the control device. If, for example, key  21  is to be used for the signature checking of an asymmetrical method, the signature calculation in process step  120  would have to be carried out by means of a key complementary to key  21 . 
   In a second main step  200 , the control device is loaded with the boot-up software  123 . For this purpose, it is first stored in the memory area  10 , in which case, in the illustrated example, it replaces the control program  11 . The overwriting of already present data is not absolutely necessary for implementing the method according to the invention but, in practice, represents a frequently occurring necessity. As a rule, programmable control devices, for reasons of cost, are designed with respect to the available memory size for the applications required for operation. The reservation of memory for the boot-up software  123  does not take place. Therefore, in order to load this boot-up software  123  for implementing the method according to the invention, in practice, most data already present has to be overwritten because of the limited available memory space. 
   This is followed by a signature check in step  220 , in the illustrated example by using the key  21 . Conceivable alternatives were mentioned in the comments concerning step  120 . 
   If the required approval is not achieved during the signature check, that is, an undesirable data change is detected, a previously adjustable sequence is triggered. For example, the control device rejects the booted-up software, so that the latter cannot be operated in the control device. In particular, also no change then takes place in the boot sector, and, to this extent, the control device is protected against unauthorized interventions. As an alternative, only a user warning could be triggered. In contrast, if the signature check is positive, the encrypted update software  111  as well as the boot-up software  121  are available in the memory area  10  of the control device in an executable manner. 
   For protecting the second main step  200 , another safety mechanism may also be used as a signature check. For example, a certificate-based method or an encryption method may be used. In the simplest case, a protection can also be completely eliminated. However, in this case, the software to be booted up will not be protected against unauthorized interventions. 
   Also, in another embodiment, the transmission of boot-up software and update software into the control device may comprise separate steps. This particularly makes sense when, in an installation step to be executed first, a safety mechanism is loaded into the control device and activated, which is used for protecting a step to be executed later. 
   In another main step  300 , the new key  22  is filed at the location of the old key  21  as a result of the execution of the boot-up software  121 ,  122 . 
   For this purpose, first in a partial step  310 , by executing the decryption software  122  contained in the boot-up software  121 , the new key, so far transmitted only in an encrypted form is restored to the uncoded form  22  and, in the subsequent partial step  320 , is filed in the boot sector  20  at the location of the previous key  21 . 
   As a result, the principal object of the illustrated example, specifically the exchange of the keys in the boot sector, is already achieved. The subsequent process steps concern the restoration of the control program  11  in the memory  10  of the control device. 
   In main step  400 , the software to be booted up, including the control program  11 , is prepared for this purpose. In the present example, step  400  essentially consists of the signing of the control program  11 . Here, changes of the safety mechanisms carried out in the previous process steps in the boot sector should be taken into account. If, for example, in addition to, or instead of the exchange of the keys  21 ,  22 , a change of the safety mechanism took place, for example, changes of the key length or the replacement of a symmetrical signature process by an asymmetrical signature process or a certificate-based process, the software to be booted up would have to be adapted to this new safety mechanism. 
   In the illustrated example, a symmetrical process is maintained, and key  22  is used for the signature calculation in step  400 . As an alternative, as mentioned above, another key present in the control device can also be used. 
   In another main step  500 , the control device is loaded with the control software  11 , specifically while taking into account the implemented updating of the safety mechanisms in the boot sector of the control device. In the present example, it is transmitted in a signed manner and, in step  510 , is stored in memory area  10 , specifically at the location of the boot-up software  121 . In a later step  520 , a verification of the imported software takes place. In the illustrated example, a signature check is performed by using key  22 . Conceivable alternatives were discussed above in connection with step  400 . 
   If the signature check is positive, the control software  11  is now present in the memory area  10  of the control device in an executable manner. On the whole, the target condition illustrated in  FIG. 1   b  is reached. If the required approval were not obtained during the signature check, this would indicate that the target condition illustrated in  FIG. 1   b  was missed; that is, either the updating of the boot sector was not successful or an undesirable data change took place when the control software  11  was reintroduced. 
   The foregoing disclosure has been set forth merely to illustrate the invention and is not intended to be limiting. Since modifications of the disclosed embodiments incorporating the spirit and substance of the invention may occur to persons skilled in the art, the invention should be construed to include everything within the scope of the appended claims and equivalents thereof.