Abstract:
A method and system for confidentially providing a software component which is encrypted using a secret cryptographic key of a software component manufacturer, and the key is then encrypted using a first cryptographic system key, wherein the encrypted software component and the encrypted key are transported by the software component manufacturer to a destination system device. After decrypting the transported encrypted key using a second cryptographic system key, the transported encrypted software component is decrypted using the decrypted key, wherein the decrypted software component is provided for execution on the destination system device. The method can be used to protect source codes or object codes of a developed software component from access by a third party and still allows for processing using standard tools.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This is a U.S. national stage of application No. PCT/EP2010/065370 filed 14 Oct. 2010. Priority is claimed on German Application No. 10 2009 052 454.1 filed 9 Nov. 2009, the content of which is incorporated herein by reference in its entirety. 
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The invention relates to data processing and, more particularly, to a method and system for confidentially providing software components comprising original equipment manufacturer (OEM) software components. 
     2. Description of the Related Art 
     Development tools can be used to develop or produce software components. Software components or software modules can, for example, be program sections or sub-programs. These software components are created with the aid of a development environment by a software component manufacturer or original equipment manufacturer (OEM). During the creation or programming of software components, a source code of the software component is developed. Software component manufacturers or OEMs incorporate their sector-specific special knowledge or their know-how in the creation of software components. To prevent third parties having access to this internal know-how, software component manufacturers attempt to protect the software components contained in the source code against read access. 
     SUMMARY OF THE INVENTION 
     It is therefore an object of the present invention to provide a method and a system for confidentially providing one or more software components which reliably prevent read access to the respective software component and simultaneously permit processing with standard tools. 
     This object and other objects and advantages are achieved in accordance with the invention by a method for confidentially providing a software component comprising (a) encryption of the software component (SWK) using a secret cryptographic OEM key (K OEM ) of a software component manufacturer (OEM), (b) encryption of the OEM key (KOEM) using a first cryptographic system key (K sys1 ), (c) transportation of the encrypted software component (ENC-SWK) and the encrypted OEM key (ENC-K OEM ) by the software component manufacturer (OEM) to a destination system device, (d) decryption of the transported encrypted OEM key (ENC-K OEM ) using a second cryptographic system key (K sys2 ), and (e) decryption of the transported encrypted software component (ENC-SWK) using the decrypted OEM key (K OEM ), where the decrypted software component (SWK) is provided for execution on the destination system device. 
     In one embodiment of the method in accordance with the invention, the first cryptographic system key is a public cryptographic key and the second cryptographic system key is a private cryptographic key of an asymmetric encryption method. 
     In an alternative embodiment of the method in accordance with the invention, the first cryptographic system key and the second cryptographic system key are private cryptographic keys of a symmetric encryption method. 
     In one possible embodiment of the method, the destination system device comprises a stored-program control unit. 
     In one embodiment of the method, the first cryptographic system key and the second cryptographic system key are generated as a key pair by a manufacturer of the destination system device. 
     In another embodiment the software component is symmetrically encrypted using the secret cryptographic OEM key of the software component manufacturer OEM. 
     In another embodiment the secret cryptographic OEM key of the software component manufacturer OEM is asymmetrically encrypted using the public cryptographic key. 
     In another embodiment of the method in accordance with the invention, the private key is integrated in a manipulation-proof manner in the destination system device. 
     In a still further embodiment, upon encryption of the software component, a cryptographic checksum is generated, which is checked on the decryption of the transported encrypted software component. 
     In yet another embodiment, the cryptographic checksum comprises a message authentication code (MAC). 
     In an alternative embodiment, the cryptographic checksum comprises an electronic signature. 
     In a further embodiment, the encrypted software component and the encrypted OEM key of the software component manufacturer OEM are transported stored on a data carrier. 
     In an alternative embodiment, the encrypted software component and the encrypted OEM key of the software component manufacturer OEM are transported in data packets over a network. 
     In one possible embodiment, a software component is encrypted using the secret cryptographic OEM key of the software component manufacturer OEM. 
     In a further embodiment, a plurality of software components are encrypted simultaneously using the secret cryptographic OEM key of the software component manufacturer OEM. 
     It is a further object of the invention to provide a system for confidentially providing software components (SWK) for a user comprising at least one development device of a software component manufacturer (OEM) on which a development tool can be used to produce software components (SWK), which are each encrypted by a secret cryptographic OEM key (K OEM ) of the software component manufacturer (OEM), where the secret cryptographic OEM key (K OEM ) of the software component manufacturer (OEM) is encrypted by a first cryptographic system key (K sys1 ) and transported together with the encrypted software component (ENC-SWK) to a destination system device, which, with the aid of a second cryptographic system key (K sys2 ), initially decrypts the transported encrypted OEM key (ENC-K OEM ) of the software component manufacturer (OEM) and then decrypts the transported encrypted software component (ENC-SWK) using the decrypted OEM key (K OEM ) of the software component manufacturer (OEM), and where the decrypted software component (SWK) is provided for execution on the destination system device. 
     In one embodiment of the system, the destination system device comprises a stored-program controller in which the private key generated by the manufacturer of the destination system device is provided. 
     In another embodiment of the system, the OEM development device of the software component manufacturer is connected over a network with the destination system device. 
     In a further embodiment of the system, the software component comprises at least one program executable on the destination system device. 
     It is also an object of the invention to provide a destination system device comprising a first decryption unit, which decrypts a transported encrypted OEM key (KOEM) of a software component manufacturer (OEM) using a second cryptographic system key (K sys2 ), a second decryption unit, which decrypts a transported encrypted software component (ENC-SWK) using the OEM key (K OEM ) of the software component manufacturer (OEM) decrypted by the first decryption unit and with an execution unit, which executes the software component (SWK) decrypted by the second decryption unit. 
     In an embodiment of the destination system device in accordance with the invention, the destination system device comprises at least one interface for receiving transported encrypted software components and encrypted OEM keys of a software component manufacturer. 
     In another embodiment of the destination system device, the destination system device comprises peripheral components for sensors and actuators, which are connected by a bus with the execution unit of the destination system device. 
     In a further embodiment of the destination, the second cryptographic system key is a private cryptographic key of an asymmetric key method. 
     It is a further object of the invention to provide a development device of a software component manufacturer comprising a first encryption unit for encrypting a software component (SWK) using a secret cryptographic OEM key (K OEM ) of the software component manufacturer (OEM), and a second encryption unit for encrypting the cryptographic OEM key of the software component manufacturer (OEM) using a first cryptographic system key (K sys1 ), where the encrypted software component (ENC-SWK) and the encrypted OEM key (ENC-K OEM ) of a destination system device are provided. 
     In an embodiment of the development device in accordance with the invention, the first cryptographic system key is a public cryptographic key of an asymmetric encryption method. 
     Other objects and features of the present invention will become apparent from the following detailed description considered in conjunction with the accompanying drawings. It is to be understood, however, that the drawings are designed solely for purposes of illustration and not as a definition of the limits of the invention, for which reference should be made to the appended claims. It should be further understood that the drawings are not necessarily drawn to scale and that, unless otherwise indicated, they are merely intended to conceptually illustrate the structures and procedures described herein. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The following describes preferred embodiments of the method and system according to the invention for confidentially providing a software component with reference to the attached figures, in which: 
         FIG. 1  is a flow chart depicting a possible embodiment of the method in accordance with the invention for confidentially providing a software component; and 
         FIG. 2  is a schematic block diagram depicting a possible embodiment of a system in accordance with the invention for confidentially providing software components for a user. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Shown in  FIG. 1  is a flow chart of the method in accordance with the invention for confidentially providing a software component which substantially comprises five steps S 1 -S 5 . 
     In a first step S 1 , the software component SWK is encrypted using a secret cryptographic OEM key K OEM  of a software component manufacturer OEM. 
     Then, in a step S 2 , the OEM key K OEM  of the software component manufacturer OEM is encrypted using a first cryptographic system key K sys1 . 
     In a further step, the encrypted software component ENC-SWK and the encrypted OEM key (ENC-K OEM ) are transported by the software component manufacturer OEM to a destination system device. This destination system device is formed, for example, by a stored-program control unit SPC. In one possible embodiment, the encrypted software component ENC-SWK and the encrypted OEM key ENC-K OEM  are transported on a data carrier, which stores the encrypted software component and the encrypted OEM key. In an alternative embodiment, the encrypted software component and the encrypted OEM key of the software component manufacturer OEM are transported in data packets over a network. 
     In a further step S 4 , the decryption of the transported encrypted OEM key ENC-K OEM  is performed using a second cryptographic system key K sys2 . 
     In a further step S 5 , the transported encrypted software component ENC-SWK is decrypted using the decrypted OEM key K OEM , where the decrypted software component SWK is provided for execution on the destination system device, for example, stored-program controller SPC. 
     In a preferred embodiment of the method in accordance with the invention, the first cryptographic system key K sys1  and the second cryptographic system key K sys2  are generated as a key pair by a manufacturer of the destination system device. In one possible embodiment of the method, the encryption and decryption is performed using an asymmetric encryption method, where the first cryptographic system key K sys1  is a public cryptographic key K pub  and the second cryptographic key K sys2  is a private cryptographic key K priv . 
     In an alternative embodiment, the encryption and decryption is performed using a symmetric encryption method, where the first cryptographic system key K sys1  and the second cryptographic system key K sys2  are private cryptographic keys. 
     In one embodiment, the encryption of the software component SWK using the secret cryptographic OEM key K OEM  of the software component manufacturer OEM in step S 1  occurs symmetrically. The encryption of the secret cryptographic OEM key K OEM  of the software component manufacturer OEM using the public cryptographic key K pub  occurs asymmetrically. Here, the decryption on the destination system device is performed using a private key K priv , which is integrated in a manipulation-proof manner in the destination system device, such as in the stored-program control unit SPC. 
     In one embodiment, upon encryption of the software component SWK in Step S 1 , a cryptographic checksum is generated, which is checked upon decryption of the transported encrypted software component ENC-SWK. This cryptographic checksum can, for example, be formed by a message authentication code MAC. 
     In an alternative embodiment, the cryptographic checksum is formed by an electronic signature. 
     In another embodiment, in a step S 1 , a software component SWK is encrypted using a secret cryptographic OEM key of the software component manufacturer OEM. In one embodiment, the secret cryptographic OEM key of the software component manufacturer OEM simultaneously encrypts a plurality of software components SWK. 
       FIG. 2  shows a schematic block diagram of an embodiment of a system  1  in accordance with the invention for confidentially providing software components SWK for a user. The system  1  contains at least one development arrangement  2  of a software component manufacturer OEM and a destination system device  3 , which comprises, for example, a stored-program controller SPC. The OEM development environment  2  of the software component manufacturer OEM contains at least one development device  2 A, on which software components SWK can be produced using a development tool. These software components can be any software component or software modules, i.e., programs, sub-programs or subroutines or even files. 
     The development environment  2  of the software component manufacturer contains a first encryption unit  2 B, by which the software component SWK supplied is encrypted using a secret cryptographic OEM key K OEM  of the software component manufacturer OEM. This first encryption unit  2 B can encrypt one software component or simultaneously a plurality of software components using the secret cryptographic OEM key of the software component manufacturer. The secret cryptographic OEM key K OEM  of the software component manufacturer is located, as shown in  FIG. 2 , for example, in a memory  2 C of the OEM development environment  2 . The software component SWK is preferably symmetrically encrypted using the secret cryptographic OEM key K OEM  of the software component manufacturer OEM in the encryption unit  2 B and reaches an interface  2 D of the OEM development environment  2 . 
     As shown in  FIG. 2 , in addition to the first encryption unit  2 B, the OEM development environment  2  comprises a second encryption unit  2   e . In the second encryption unit  2 E, the secret cryptographic OEM key of the software component manufacturer OEM read from the memory  2 C is encrypted by a first cryptographic system key K sys1 . The secret OEM key of the software component manufacturer OEM encrypted by the second encryption unit  2 E and the software component ENC-SWK encrypted by the first encryption unit  2 B are transported over the interface  2 D of the OEM development environment  2  through a transport device  4  to an interface  3 A of a destination system device  3 . The destination system device  3  is, for example, a stored-program controller SPC. In the exemplary embodiment shown in  FIG. 2 , the transport device  4  is formed by a line or a network. With this embodiment, the encrypted software component ENC-SWK and the encrypted OEM key ENC-K OEM  of the software component manufacturer OEM are transported in data packets over the network to the destination system device  3 . 
     In an alternative embodiment, the transport device  4  is a data carrier on which the encrypted software component ENC-SWK and the encrypted OEM key ENC-K OEM  are stored. With this embodiment, the encrypted OEM key and the encrypted software component ENC-SWK are written or stored on the data carrier by the interface  2 D. With this embodiment, the interface  3 A of the destination system device  3  reads the encrypted OEM key ENC-K OEM  stored on the data carrier and the encrypted software component ENC-SWK from the data carrier. 
     The destination system device  3  comprises a first decryption unit  3 B, which decrypts the transported encrypted OEM key ENC-K OEM  using a second cryptographic system key K sys2 . The OEM key K OEM  of the software component manufacturer OEM generated or decrypted in this way is provided by the first decryption unit  3 B of a second decryption unit  3 C of the destination system device  3 . The second decryption device  3 C of the destination system device  3  then decrypts the transported or received software component ENC-SWK using the decrypted OEM key K OEM  and provides the decrypted software component SWK for execution on the destination system device  3 . In one embodiment, the destination system device  3  comprises an execution unit  3 D which is connected by a bus  5  with peripheral components  6 - 1  to  6 - n  for sensors and actuators. The execution unit  3 D is, for example, a CPU or a microprocessor. The software component SWK recovered from the second decryption unit  3 C can, for example, comprise an executable program or sub-program, which is executed directly after the decryption by the execution unit  3 D of the destination system device  3 . 
     In an embodiment of the system  1  in accordance with the invention for confidentially providing software components SWK, the first cryptographic system key K sys1  stored in the memory  2 C is a public cryptographic key K pub . With this embodiment, the second cryptographic system key K sys2  stored in a storage device  3 E of the destination system device  3  is a private cryptographic key K priv . This private key K priv  is preferably integrated in the destination system device  3  in a manipulation-proof manner. In an alternative embodiment of the system  1  in accordance with the invention, the first cryptographic system key K sys1  stored in the memory  2 C and the second cryptographic system key K sys2  stored in the memory  3 E of the destination device  3  are private cryptographic keys of a symmetric encryption method. In both embodiments, the first cryptographic system key K sys1  and the second cryptographic system key K sys2  are generated as a key pair, preferably by a manufacturer of the destination system device  3 . 
     The method and system in accordance with the disclosed embodiments the invention for confidentially providing software modules or software components SWK provides protection against unauthorized reading and manipulation by using cryptographic encryption and decryption methods. The disclosed embodiments of the method and system confidentially provide software components SWK, which are developed, where protection of the know-how in the software components is achieved in that unauthorized third parties are unable to read or change in an unnoticed way the software component SWK either in clear text or as a source code or object code. 
     With the method and system in accordance with the disclosed embodiments of the invention, two-stage encryption and two-stage decryption are performed, where the encrypted OEM key ENC-K OEM  of the software component manufacturer OEM are transported together using the software component ENC-SWK encrypted by the OEM key to the destination system device  3 . 
     Before delivery of the destination system device or SPC hardware and the development environment  2 , first the corresponding system keys K sys1 , K sys2  are initially generated. This can be performed, for example, by the manufacturer of the destination system device  3 . In this case, the manufacturer of the destination system device  3  files the second system key K sys2 , preferably in a manipulation-proof manner, for example, in a particularly protected memory  35 . The first system key K sys1 , which is used to encrypt the OEM key of the software component manufacturer, is stored in a memory  2 C of the development environment  2 . In order to organize the key transport as simply as possible, in one embodiment, the public or first system key K sys1  can be delivered directly with the development environment  2  to the software component manufacturer OEM. The second system key, for example, a private key, is preferably stored in a manipulation-proof manner, for example in firmware of the destination system device  3 . 
     A software component manufacturer OEM, who uses the development device  2  to develop software modules or software component SWK, first requires a secret OEM key, which can be individually selected for a software component SWK or obtained by derivation from a master key. In order to protect the software component SWK developed by the software component manufacturer OEM, the software component manufacturer OEM encrypts the software module or the software component using the cryptographic software integrated in the development environment  2  using the OEM key of the software component manufacturer OEM. In an embodiment, the encryption is performed symmetrically because this enables a higher performance to be achieved than with an asymmetric encryption method. In particular, with the later decryption of the software protection in the destination system device  3 , the use of a symmetric encryption method achieves much quicker decryption. 
     The secret text formed by the symmetric encryption can no longer be read without knowledge of the corresponding key. The OEM key used for the encryption is in turn encrypted with a first system key K sys1  so that this OEM key is not present in clear text and hence also cannot be used for the decryption of the previously encrypted OEM software components. The encrypted software or software component SWK can now be delivered or transported together with the encrypted OEM key. After the delivery of the encrypted OEM software component together with the encrypted OEM key, these two data packets can be loaded into the destination system device  3  or the SPC hardware. The SPC hardware or the destination system device  3  contains the second system key in a key memory  3 E from the delivery of the hardware. This second system key K sys2  can, for example, be a private key. This private key K sys2  is now used to decrypt the OEM key. Following this, the software modules or the software components SWK are decrypted, preferably using symmetric decryption, using the OEM key. As a result, the software component SWK is provided for execution in clear text in the SPC hardware. 
     With the method and system in accordance with the disclosed embodiments of the invention, the software component manufacturer OEM can protect its generated software modules or software components SWK and remove this protection again without any interaction between the software component manufacturer OEM and the manufacturer of the destination system device  3  being required. A customer of the software component manufacturer OEM or component manufacturer is not able to decrypt the software components, which means that the protection of the know-how of a software component manufacturer OEM cannot be removed by a customer or another software component manufacturer. Due to the fact that the software modules or software components of a software component manufacturer OEM are encrypted, the delivery of this software or these software components can also occur over non-secure channels. For example, the software component can be sent in electronic form by internet download or also in a memory card MMC. Hence, with the method and system in accordance with the disclosed embodiments of the invention, the protection of know-how is not dependent on the security of the transport channel  4 . 
     Thus, while there have shown and described and pointed out fundamental novel features of the invention as applied to a preferred embodiment thereof, it will be understood that various omissions and substitutions and changes in the form and details of the devices illustrated, and in their operation, may be made by those skilled in the art without departing from the spirit of the invention. For example, it is expressly intended that all combinations of those elements and/or method steps which perform substantially the same function in substantially the same way to achieve the same results are within the scope of the invention. Moreover, it should be recognized that structures and/or elements and/or method steps shown and/or described in connection with any disclosed form or embodiment of the invention may be incorporated in any other disclosed or described or suggested form or embodiment as a general matter of design choice. It is the intention, therefore, to be limited only as indicated by the scope of the claims appended hereto.