Method for protecting software codes

The method of generating an encrypted binary executable file using a group encryption key and supplier-specific secrets addresses the challenge of protecting software codes in complex digital signal processor applications, ensuring secure distribution and confidentiality.

WO2025153733A1PCT designated stage expired Publication Date: 2025-07-24ESSILOR INTERNATIONAL(COMPAGNIE GENERALE D OPTIQUE)
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/EP2025/051250
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-01-19
Filing Date
2025-01-20
Publication Date
2025-07-24

AI Technical Summary

Technical Problem

In complex digital signal processor applications, there is a challenge in protecting software codes from unauthorized access and sharing among multiple vendors and customers, as suppliers often resist sharing their computer codes.

Method used

A method involving an integrator generates an encrypted binary executable file by compiling software libraries using a compiled development library, employing a group encryption key and supplier-specific secrets, with encryption and decryption steps using symmetric and asymmetric algorithms, and utilizing a trusted third party for secure storage and decryption.

Benefits of technology

Ensures secure and controlled distribution of software libraries, preventing unauthorized access and maintaining code confidentiality among multiple vendors and customers.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure EP2025051250_24072025_PF_FP_ABST
    Figure EP2025051250_24072025_PF_FP_ABST
Patent Text Reader

Abstract

The invention relates to a method (P) for generating, by an integrator (I), an encrypted binary executable file involving compiling software libraries using a development library from an SDK. The libraries, provided by providers (V), are intended for an embedded digital signal processor. The method comprises: determining a group encryption key and sharing it between the integrator and the providers. Each provider determines a specific secret and encrypts its libraries with a symmetric algorithm using this secret and the group key. The development library compiles the encrypted libraries after retrieving the providers' secrets. The binary executable file is then encrypted with the symmetric algorithm using the group key and a final secret derived from the providers' secrets.
Need to check novelty before this filing date? Find Prior Art

Description

Process for protecting software codes. Field of invention

[0001] The present invention relates to a method for protecting software codes. Field of invention

[0002] Complex digital signal processor applications are increasingly becoming less single-vendor solutions. This means that multiple vendors may provide one or more computer codes or programs, hereinafter referred to as IP software, which are then integrated into an application by an integrator or customer.

[0003] Suppliers may not want to share computer code with other suppliers or with the customer itself.

[0004] To this end, according to a first aspect of the invention, a method of generation by an integrator of an encrypted binary executable file is proposed.

[0005] The method comprises a step of compiling software libraries using a compiled development library forming part of a software development toolkit distributed to said integrator.

[0006] Software libraries are generated by vendors and compiled for a processor, for example an embedded digital signal processor, called an embedded target.

[0007] The method according to the invention comprises: a step of determining an encryption key, called a group key, and a step of sharing said group key between the integrator and the suppliers, by each of said suppliers: a step of determining a secret specific to said supplier, called the secret of said supplier, then, for each of the software libraries of said supplier, a step of encryption, by said supplier, of said software library by means of a symmetric encryption algorithm, to obtain a library, called an encrypted library, said symmetric encryption algorithm using the secret of said supplier and said group key, by the compiled development library: for each of the suppliers, a step of recovering the secret of said supplier, then, for each of the encrypted software libraries of said supplier, a step of decrypting the encrypted library to obtain a library, called a software library,by means of said symmetric encryption algorithm, the compilation of the software libraries to obtain said binary executable file, encrypting said executable file by means of said symmetric encryption algorithm using the group key and a secret, called final, determined from the secrets of each of the suppliers.,

[0008] The group encryption key may be an AES key, each of the providers determining an initialization vector, the symmetric encryption algorithm being the AES algorithm in CTR operation mode, the secret of said provider being said initialization vector.

[0009] The method may comprise, at the target, a step of receiving said encrypted executable file then a step of decrypting said encrypted executable file by means of said symmetric encryption algorithm using the group key and the final secret.

[0010] The method may include a step of storing the software libraries and / or the compiled development library by a trusted third party.

[0011] The process steps performed by the compiled development library may take place on a machine owned or controlled by a trusted third party. Brief description of the figures

[0012] Other characteristics and advantages of the invention will appear during the reading of the detailed description which follows for the understanding of which reference will be made to the appended drawings in which: is a diagram illustrating the different stages of a method P according to the invention. Detailed description of the invention

[0013] The embodiments described below being in no way limiting, it will be possible in particular to consider variants of the invention comprising only a selection of the characteristics described, subsequently isolated from the other characteristics described, if this selection of characteristics is sufficient to confer a technical advantage or to differentiate the invention compared to the state of the prior art. This selection comprises at least one characteristic, preferably functional without structural details, or with only a part of the structural details if this part alone is sufficient to confer a technical advantage or to differentiate the invention compared to the state of the prior art.

[0014] A method P is now described for the generation by an integrator (I) of an encrypted binary executable file comprising a step of compiling software libraries by means of a compiled development library forming part of a compiled software development toolkit SDK distributed to said integrator.

[0015] The compiled software development toolkit may, for example, be distributed by means of an online software repository or an archive on a computer medium.

[0016] Software libraries are generated by different vendors and compiled for an embedded target.

[0017] The adjective embedded generally refers to a constrained system, for which the process of deploying and executing software is controllable by the entity in charge of this deployment.

[0018] The embedded target is, for example, a digital signal processor. The digital signal processor is, for example, the GAP processor manufactured by the applicant.

[0019] The method P comprises a step Ei for determining an encryption key, called a group key, and a step Ep for sharing said group key between the integrator and the suppliers. The group key is for example an AES key (for AdvancedEncryptionStandard).

[0020] When the group encryption key is determined by the integrator, the method comprises a step of transmitting said group key to each of the suppliers.

[0021] The method P according to the invention comprises, by each of the suppliers: a step of determining a secret specific to said supplier, called the secret of said supplier, then, for each of the software libraries of said supplier, a step of encryption, by said supplier, of said software library by means of a symmetric encryption algorithm, to obtain a library, called encrypted, said symmetric encryption algorithm using the secret of said supplier and the group key.

[0022] For each of the providers, the encrypted libraries of each of the providers are for example stored in a file server of said provider.

[0023] The method P further comprises the implementation, by the compiled development library, of the following steps: a step of recovering the secret of said supplier by means of an asymmetric encryption algorithm, for each of the encrypted libraries of each of said suppliers, a step of decrypting said encrypted library by means of said symmetric encryption algorithm, to obtain a library, called software. the compilation of the software libraries to obtain said binary executable file, the encryption of said executable file by means of said symmetric encryption algorithm using the group key and a secret, called final, determined from the secrets of each of the suppliers.

[0024] Thus, only the compiled development library has temporary access to a decrypted version of a vendor's library.

[0025] Advantageously, the libraries decrypted by the compiled development library are stored in a volatile memory only accessible by the compiled development library. Preferably, said volatile memory is erased as soon as possible, i.e. once the software library compilation step is complete.

[0026] Advantageously, the implementation of the compiled development library is performed on a computer owned or controlled by a trusted third party. Using a trusted third party reduces the risk of malicious access to a "clear" version of the library in memory, even if volatile.

[0027] The symmetric encryption algorithm is for example the AES algorithm in counter operation mode CTR (for the English CounTeRmode).

[0028] The group encryption key is for example an AES key, each of the providers determines an initialization vector, the symmetric encryption algorithm being the AES algorithm in CTR operation mode, the secret of said provider being said initialization vector.

[0029] The recovery of the vendor secret by the compiled development library is for example carried out after authentication which can be done via a public key infrastructure.

[0030] The method comprises, at the target, a step of receiving said encrypted executable file then a step of decrypting said encrypted executable file by means of said symmetric encryption algorithm using the group key and the final secret.

[0031] The final secret is obtained, for example, by performing an XOR between the secrets of each of the providers. The final secret can be reconstructed by the target from the secrets of each of the providers, which can be known to the target by retrieval from the provider using an asymmetric encryption algorithm, or the final secret can be provided by a trusted third party, after prior backup during the implementation of the compiled development library.

[0032] Storage in non-volatile memory of the target (storage referred to by the term flash in English) is then carried out with the decrypted executable file.

[0033] Advantageously, any temporary storage of all or part of the decrypted executable file is carried out in a volatile memory of the target only accessible by the software carrying out the decryption of the executable file and its storage in non-volatile memory.

[0034] Alternatively, the encrypted executable file can be decrypted by a trusted third party, outside the target. The trusted third party then stores the executable file in non-volatile memory on the target, without the need for decryption at the target. Access to the executable file after decryption is thus only possible by the trusted third party.

[0035] Of course, the invention is not limited to the examples just described and many adjustments can be made to these examples without departing from the scope of the invention. In addition, the various features, forms, variants and embodiments of the invention can be combined with each other in various combinations to the extent that they are not incompatible or mutually exclusive.

Claims

Method (P) for generating an encrypted binary executable file, comprising a step of compiling software libraries by means of a compiled development library forming part of a software development toolkit (SDK) distributed to said integrator, said software libraries being generated by suppliers (V) and compiled for an embedded processor, called an embedded target, characterized in that it comprises: a step (Ei) of determining an encryption key, called a group key, and a step of sharing (Ep) said group key between the integrator and the suppliers, by each of said suppliers: a step of determining (Es) a secret specific to said supplier, called the secret of said supplier, then, for each of the software libraries of said supplier, a step of encryption (Ec), by said supplier, of said software library by means of a symmetric encryption algorithm, to obtain a library,said encrypted, said symmetric encryption algorithm using the secret of said supplier and said group key, by the compiled development library: for each of the suppliers, a step (Er) of recovering the secret of said supplier, for each of the encrypted software libraries of said supplier, a step (Ed) of decrypting the encrypted library to obtain a library, called software, by means of said symmetric encryption algorithm, the compilation (Eg) of the software libraries to obtain said binary executable file, the encryption (Ee) of said executable file by means of said symmetric encryption algorithm using the group key and a secret, called final, determined from the secrets of each of the suppliers., The method of claim 1, wherein the group encryption key is an AES key and wherein each of the providers determines an initialization vector, the symmetric encryption algorithm being the AES algorithm in CTR operation mode, the secret of said provider being said initialization vector. Method according to one of the preceding claims, comprising, at the target, a step of receiving said encrypted executable file then a step of decrypting said encrypted executable file by means of said symmetric encryption algorithm using the group key and the final secret. Method according to any one of the preceding claims, comprising a step of storing by a trusted third party the encrypted software libraries and / or the compiled development library.