FR3143244A1 - Authorization mechanism for the use of a software process with source code security - Google Patents
Authorization mechanism for the use of a software process with source code security Download PDFInfo
- Publication number
- FR3143244A1 FR3143244A1 FR2212896A FR2212896A FR3143244A1 FR 3143244 A1 FR3143244 A1 FR 3143244A1 FR 2212896 A FR2212896 A FR 2212896A FR 2212896 A FR2212896 A FR 2212896A FR 3143244 A1 FR3143244 A1 FR 3143244A1
- Authority
- FR
- France
- Prior art keywords
- code
- application
- client certificate
- certificate
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013475 authorization Methods 0.000 title description 31
- 230000007246 mechanism Effects 0.000 title description 14
- 230000008569 process Effects 0.000 title description 7
- 238000000034 method Methods 0.000 claims abstract description 36
- 230000004044 response Effects 0.000 claims abstract description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 230000001960 triggered effect Effects 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 abstract 1
- 230000001172 regenerating effect Effects 0.000 abstract 1
- 238000010200 validation analysis Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2139—Recurrent verification
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
Il est proposé un procédé d’exécution d’un code logiciel protégé, le procédé étant mis en œuvre par une application contenant un régénérateur d’un certificat client préalablement signé par une autorité de certification et un code offusqué correspondant au code logiciel protégé, le procédé comprenant, sur exécution de l’application : - régénérer, à l’aide du régénérateur, le certificat client et émettre une requête comprenant le certificat client, et - lorsque, suite à l’émission de la requête, une connexion est établie avec un serveur et une réponse indicative de validité du certificat client est reçue via la connexion établie, exécuter le code offusqué dans le conteneur logiciel, sinon, arrêter l’exécution de l’application sans exécuter le code offusqué. Figure de l’abrégé : Figure 1A method of executing protected software code is proposed, the method being implemented by an application containing a regenerator of a client certificate previously signed by a certification authority and an offended code corresponding to the protected software code, the method comprising, upon execution of the application: - regenerating, using the regenerator, the client certificate and issuing a request including the client certificate, and - when, following transmission of the request, a connection is established with a server and a response indicative of the validity of the client certificate is received via the established connection, execute the offended code in the software container, otherwise, stop the execution of the application without executing the offended code. Abstract Figure: Figure 1
Description
La présente divulgation relève du domaine de la sécurité des systèmes d’information.This disclosure falls within the field of information systems security.
Plus particulièrement, la présente divulgation porte sur un procédé d’exécution d’un code logiciel protégé, sur un programme informatique et sur un support d’enregistrement correspondants.More particularly, the present disclosure relates to a method for executing protected software code, to a corresponding computer program and to a recording medium.
En matière d’autorisation d’utilisation de logiciel propriétaire, l’état de l’art repose sur deux principes :
- le code logiciel protégé, c’est-à-dire sécurisé, peut être installé sur des serveurs sur site, autrement dit en local, et l’autorisation d’utilisation est alors soumise à licence, c’est-à-dire qu’une clé ou un fichier permet de débloquer le fonctionnement du code logiciel, ou
- le code logiciel protégé est accessible sous forme de service hébergé par exemple dans un réseau informatique en nuage, ou « cloud », et l’opérateur offre tous les mécanismes d’autorisation nécessaires pour permettre son exécution sans donner l’accès au code en lui-même.In terms of authorization to use proprietary software, the state of the art is based on two principles:
- the protected software code, that is to say secure, can be installed on servers on site, in other words locally, and the authorization of use is then subject to licensing, that is to say that 'a key or file allows you to unlock the operation of the software code, or
- the protected software code is accessible in the form of a service hosted for example in a cloud computing network, or "cloud", and the operator offers all the authorization mechanisms necessary to allow its execution without giving access to the code in himself.
De nombreux travaux de recherche, en particulier dans le domaine de l’apprentissage automatique, conduisent à produire des codes informatiques à l’aide de langages de programmation qui ne se compilent pas, tels que Python ou R.Much research, particularly in the field of machine learning, involves producing computer codes using programming languages that do not compile, such as Python or R.
Pour sécuriser de tels codes, une solution possible est de ne pas les diffuser. Par exemple, il peut être prévu que le propriétaire d’un code logiciel protégé recueille des données qui lui sont transmises par un utilisateur, traite ces données à l’aide du code logiciel protégé qu’il détient, et transmette uniquement le résultat de ce traitement à l’utilisateur.To secure such codes, one possible solution is not to distribute them. For example, it may be provided that the owner of a protected software code collects data transmitted to him by a user, processes this data using the protected software code that he holds, and only transmits the result of this treatment to the user.
Cette façon de procéder sous forme de service présente l’inconvénient pour le propriétaire du code protégé de maintenir une infrastructure de stockage et une infrastructure de calcul pour pouvoir traiter les données de ses partenaires et clients. De plus, s’il s’agit de données sensibles, le partage peut s’avérer fastidieux au vu de la règlementation en vigueur.This way of proceeding in the form of a service has the disadvantage for the owner of the protected code of maintaining a storage infrastructure and a calculation infrastructure to be able to process the data of its partners and customers. In addition, if it is sensitive data, sharing can be tedious given the regulations in force.
Il existe donc un besoin pour un mécanisme permettant d’autoriser l’usage par un utilisateur d’un code logiciel protégé qui peut être écrit en un langage non compilable, sans pour autant divulguer à l’utilisateur le contenu des lignes de code et sans requérir le maintien d’infrastructures de stockage et de calcul.There is therefore a need for a mechanism making it possible to authorize the use by a user of protected software code which can be written in a non-compilable language, without disclosing to the user the content of the lines of code and without require the maintenance of storage and computing infrastructures.
La présente divulgation vient améliorer la situation.This disclosure improves the situation.
Il est proposé un procédé d’exécution d’un code logiciel protégé, le procédé étant mis en œuvre par une application contenant un régénérateur d’un certificat client préalablement signé par une autorité de certification et un code offusqué correspondant au code logiciel protégé, le procédé comprenant, sur exécution de l’application :
- régénérer, à l’aide du régénérateur, le certificat client et émettre une requête comprenant le certificat client, et
- lorsque, suite à l’émission de la requête, une connexion est établie avec un serveur et une réponse indicative de validité du certificat client est reçue via la connexion établie, exécuter le code offusqué dans le conteneur logiciel, sinon, arrêter l’exécution de l’application sans exécuter le code offusqué.A method of executing protected software code is proposed, the method being implemented by an application containing a regenerator of a client certificate previously signed by a certification authority and an offended code corresponding to the protected software code, the process comprising, upon execution of the application:
- regenerate, using the regenerator, the client certificate and issue a request including the client certificate, and
- when, following the issuance of the request, a connection is established with a server and a response indicative of the validity of the client certificate is received via the established connection, execute the offended code in the software container, otherwise, stop the execution of the application without running the offended code.
Le certificat client est régénéré une seule fois par exécution de l’application, et peut être à nouveau régénéré et réutilisé lors d’une exécution ultérieure de l’application. Le certificat client permet d’accorder une autorisation d’utilisation du code protégé qui peut être limitée en particulier dans le temps et une communication sécurisée avec le serveur d’autorisation. L’accès au code logiciel protégé est empêché par son offuscation. L’application peut être, par exemple, un conteneur logiciel qui peut aussi bien être stocké dans une infrastructure locale que dans un « cloud » et qui ne nécessite pas d’être fourni en tant que service.The client certificate is regenerated only once per application run, and can be regenerated again and reused during a subsequent application run. The client certificate makes it possible to grant authorization to use the protected code which can be limited in particular in time and secure communication with the authorization server. Access to protected software code is prevented by obfuscation. The application can be, for example, a software container which can be stored in a local infrastructure as well as in a “cloud” and which does not need to be provided as a service.
Il a été constaté que le procédé proposé n’entraîne aucun impact de performance sur l’exécution du code offusqué.It was found that the proposed method does not cause any performance impact on the execution of the offended code.
La mise en place d’un mécanisme d’autorisation sécurisé et fiable, avec la possibilité de contrôler l’exécution du code protégé à distance, permet de mettre en place une gestion fine de l’autorisation d’exécution. Par exemple il est possible d’accorder une autorisation pour un nombre limité d’exécutions sur une période limitée, le premier arrivant à échéance. De plus un serveur dispose généralement d’un journal de connexions qui permet de recenser, au niveau du serveur, toutes les exécutions du code protégé ayant été mises en œuvre au niveau d’applications distribuées à un ensemble de clients.The establishment of a secure and reliable authorization mechanism, with the possibility of controlling the execution of protected code remotely, makes it possible to implement fine management of execution authorization. For example, it is possible to grant authorization for a limited number of executions over a limited period, the first one expiring. In addition, a server generally has a connection log which makes it possible to record, at the server level, all the executions of the protected code that have been implemented at the level of applications distributed to a set of clients.
Optionnellement, le procédé comprend en outre :
- effacer le certificat client régénéré immédiatement après l’émission de la requête.Optionally, the method further comprises:
- delete the regenerated client certificate immediately after sending the request.
Ceci renforce la sécurité du mécanisme d’autorisation en empêchant que le client ou qu’une tierce partie puisse accéder au certificat client.This reinforces the security of the authorization mechanism by preventing the client or a third party from accessing the client certificate.
Optionnellement, le régénérateur de certificat est offusqué.Optionally, the certificate regenerator is offended.
Ceci renforce la sécurité du mécanisme d’autorisation en empêchant que le client ou qu’une tierce partie puisse, par l’analyse du régénérateur de certificat, se procurer une copie du certificat client.This reinforces the security of the authorization mechanism by preventing the client or a third party from being able, through analysis of the certificate regenerator, to obtain a copy of the client certificate.
Optionnellement, l’application est gérée par un conteneur logiciel dans un réseau informatique en nuage.Optionally, the application is managed by a software container in a cloud computing network.
Contrairement aux solutions connues, le mécanisme d’autorisation proposé ne dépend pas d’un composant matériel particulier et est donc applicable à une utilisation du code protégé dans un réseau décentralisé.Unlike known solutions, the proposed authorization mechanism does not depend on a particular hardware component and is therefore applicable to use of the protected code in a decentralized network.
Optionnellement, la requête est une requête HTTPS.Optionally, the request is an HTTPS request.
De manière générale, il est souhaitable que chaque liaison de données utile à la mise en œuvre du procédé soit une liaison sécurisée, de manière à empêcher toute interception de flux de données et, plus particulièrement, toute interception du certificat client. Ces liaisons sécurisées incluent évidemment la liaison de données entre l’application et le serveur, mais aussi, potentiellement, des liaisons de données au sein du système informatique du client ou au sein du système informatique auquel est rattaché le serveur.Generally speaking, it is desirable that each data link useful for implementing the method is a secure link, so as to prevent any interception of data flows and, more particularly, any interception of the client certificate. These secure connections obviously include the data connection between the application and the server, but also, potentially, data connections within the client's computer system or within the computer system to which the server is attached.
Optionnellement, l’exécution de l’application est déclenchée par un logiciel de planification de tâches.Optionally, the execution of the application is triggered by task scheduling software.
Ceci permet notamment de forcer un renouvellement périodique de l’autorisation d’exécution du code protégé, par exemple tous les jours, et éventuellement de manière transparente pour l’utilisateur final.This makes it possible in particular to force a periodic renewal of the authorization to execute the protected code, for example every day, and possibly in a transparent manner for the end user.
Il est également proposé un programme informatique comportant des instructions pour la mise en œuvre du procédé ci-avant lorsque ce programme est exécuté par un processeur.A computer program is also proposed comprising instructions for implementing the above method when this program is executed by a processor.
Il est également proposé un support d’enregistrement non transitoire lisible par un ordinateur sur lequel est enregistré un programme pour la mise en œuvre du procédé ci-avant lorsque ce programme est exécuté par un processeur.A non-transitory recording medium readable by a computer is also proposed on which a program is recorded for implementing the above method when this program is executed by a processor.
D’autres caractéristiques, détails et avantages apparaîtront à la lecture de la description détaillée ci-après, et à l’analyse des dessins annexés, sur lesquels :Other characteristics, details and advantages will appear on reading the detailed description below, and on analyzing the attached drawings, in which:
L’offuscation de code est une technique connue qui permet de rendre du code informatique illisible par l’humain tout en gardant son « exécutabilité » par la machine.Code obfuscation is a known technique that makes computer code unreadable by humans while retaining its “executability” by the machine.
Pour ce qui est de l’autorisation d’utilisation d’un code offusqué, plusieurs mécanismes de licence sont connus : par NTP (Network Time Protocol), ou par numéro de série de disque, ou encore par adresse MAC. Ces mécanismes de licence ne sont pas pleinement satisfaisants. Le protocole NTP n’est pas un protocole sécurisé. De plus, il est facile, avec peu de connaissance réseau, de détourner l’adresse d’un serveur NTP vers un autre serveur et de faire en sorte de pouvoir utiliser le procédé mis en œuvre par logiciel indéfiniment. Des autorisations liées à un numéro de série de disque particulier ou à une adresse MAC particulière ne sont pas non plus adaptées dans le « cloud ». En effet il n’est pas possible de connaitre le numéro de série du disque dur sous-jacent, ou l’adresse MAC de l’interface réseau mais surtout il n’y a pas la garantie que ces composants soient fixes.As for authorizing the use of an offended code, several licensing mechanisms are known: by NTP (Network Time Protocol), or by disk serial number, or even by MAC address. These licensing mechanisms are not fully satisfactory. NTP is not a secure protocol. In addition, it is easy, with little network knowledge, to divert the address of an NTP server to another server and ensure that you can use the software-implemented process indefinitely. Permissions linked to a particular disk serial number or a particular MAC address are also not suitable in the “cloud”. Indeed it is not possible to know the serial number of the underlying hard drive, or the MAC address of the network interface but above all there is no guarantee that these components are fixed.
L’invention se distingue de l’art antérieur et vise à permettre d’accorder une autorisation limitée dans le temps d’utilisation d’un procédé mis en œuvre par logiciel, aussi bien de manière locale que dans un « cloud », sans nécessiter d’implémentation du type d’une fourniture de service et sans permettre l’accès au code source.The invention differs from the prior art and aims to make it possible to grant authorization limited in time to use a process implemented by software, both locally and in a "cloud", without requiring implementation of the type of service provision and without allowing access to the source code.
Pour cela, il est proposé un procédé mis en œuvre par une application contenant un régénérateur d’un certificat client préalablement signé par une autorité de certification et un code offusqué correspondant au code logiciel protégé, le procédé comprenant, sur exécution de l’application :
- régénérer, à l’aide du régénérateur, le certificat client et émettre une requête comprenant le certificat client, et
- lorsque, suite à l’émission de la requête, une connexion est établie avec un serveur et une réponse indicative de validité du certificat client est reçue via la connexion établie, exécuter le code offusqué dans l’application, sinon, arrêter l’exécution de l’application sans exécuter le code offusqué.For this, a method is proposed implemented by an application containing a regenerator of a client certificate previously signed by a certification authority and an offended code corresponding to the protected software code, the method comprising, upon execution of the application:
- regenerate, using the regenerator, the client certificate and issue a request including the client certificate, and
- when, following the issuance of the request, a connection is established with a server and a response indicative of the validity of the client certificate is received via the established connection, execute the offended code in the application, otherwise, stop the execution of the application without running the offended code.
La protection du code est assurée par une combinaison de son offuscation avec un mécanisme d’autorisation d’utilisation sécurisée dont l’exécution est compatible aussi bien avec une utilisation sur site que dans un « cloud ».Code protection is ensured by a combination of its obfuscation with a secure use authorization mechanism whose execution is compatible with both on-site use and in a “cloud”.
Un exemple particulier de réalisation est à présent décrit en référence à la
Un premier système informatique (104) d’un client permet à un terminal utilisateur (102) du client d’accéder à une application (100) destinée à commander l’exécution d’un code protégé. Le code protégé est offusqué pour le rendre inaccessible au client.A first computer system (104) of a client allows a user terminal (102) of the client to access an application (100) intended to control the execution of protected code. Protected code is obfuscated to make it inaccessible to the client.
Un deuxième système informatique (204) d’un fournisseur met en œuvre un serveur (200) de validation et d’autorisation. Les systèmes informatiques (104, 204) sont adaptés pour pouvoir mettre en œuvre, sous conditions, une communication entre l’application (100) et le serveur (200) de validation et d’autorisation avant que l’application (100) ne déclenche l’exécution du code protégé.A second computer system (204) of a supplier implements a validation and authorization server (200). The computer systems (104, 204) are adapted to be able to implement, under conditions, communication between the application (100) and the validation and authorization server (200) before the application (100) triggers execution of protected code.
A titre d’exemple, dans la
Afin de garantir une sécurisation des échanges entre l’application (100) et le serveur (200) de validation et d’autorisation, une possibilité est de mettre en œuvre une mini infrastructure à clé publique ou « mini-pki » reposant sur un mécanisme SSL.In order to guarantee secure exchanges between the application (100) and the validation and authorization server (200), one possibility is to implement a mini public key infrastructure or “mini-pki” based on a mechanism SSL.
Le mécanisme SSL se présente comme suit. A l’aide d’un outil de cryptographie, par exemple OpenSSL, il est possible de créer une autorité de certification et de générer un certificat de l’autorité de certification ainsi qu’un certificat serveur et des certificats clients signés par l’autorité de certification. Chaque certificat client ainsi généré peut être destiné à un client cible particulier.The SSL mechanism is as follows. Using a cryptography tool, for example OpenSSL, it is possible to create a certification authority and generate a certificate of the certification authority as well as a server certificate and client certificates signed by the authority certification. Each client certificate thus generated can be intended for a particular target client.
Le certificat serveur est fourni au serveur (200) de validation et d’autorisation pour mettre en œuvre une authentification bidirectionnelle de type « SSL two-way ».The server certificate is provided to the validation and authorization server (200) to implement bidirectional authentication of the “SSL two-way” type.
La mini infrastructure à clé publique comprend, au niveau de l’application (100), un générateur de code d’intégration. Un code d’intégration est un code technique de sécurisation. Dans l’exemple du mécanisme SSL évoqué, le code technique de sécurisation est configuré pour régénérer, lors de son exécution, un certificat client prévu pour un client cible. Ce certificat client est signé par l’autorité de certification et peut être reconnu par le serveur (200) de validation et d’autorisation qui dispose du certificat serveur.The mini public key infrastructure includes, at the application level (100), an integration code generator. An integration code is a technical security code. In the example of the SSL mechanism mentioned, the technical security code is configured to regenerate, during its execution, a client certificate intended for a target client. This client certificate is signed by the certification authority and can be recognized by the validation and authorization server (200) which has the server certificate.
Pour établir une connexion sécurisée avec le serveur d’autorisation, le mécanisme SSL a besoin d’écrire les certificats sur disque. Pour répondre à une problématique de ne pas laisser de trace de ces certificats après la connexion avec le serveur (200), il est possible de prévoir une écriture volatile sur disque des certificats juste au moment de la connexion, les fichiers temporaires générés disparaissant ensuite instantanément. En complément de cette précaution, le code technique de sécurisation peut être offusqué pour assurer que ni le client ni un tiers malveillant n’ait accès à son contenu.To establish a secure connection with the authorization server, the SSL mechanism needs to write the certificates to disk. To address the problem of not leaving a trace of these certificates after connection with the server (200), it is possible to provide volatile writing of the certificates to disk just at the time of connection, with the temporary files generated then disappearing instantly. . In addition to this precaution, the technical security code can be compromised to ensure that neither the client nor a malicious third party has access to its content.
Pour concevoir une version de l’application (100) pour un client cible, une possibilité est à présent détaillée. Un certificat client signé par l’autorité de certification est généré pour le client cible. Un module logiciel est ensuite créé de manière à incorporer le certificat client pour le client cible et le certificat de l’autorité de certification. Le module logiciel peut par exemple être rédigé en langage python. Le module logiciel et le code à protéger peuvent être combinés et être offusqués ensemble.To design a version of the application (100) for a target customer, a possibility is now detailed. A client certificate signed by the certificate authority is generated for the target client. A software module is then created to incorporate the client certificate for the target client and the certification authority certificate. The software module can for example be written in Python language. The software module and the code to be protected can be combined and protected together.
L’ensemble ainsi offusqué prend la forme d’une application qui peut être installée par exemple sur une machine virtuelle. Une option particulière concerne l’installation de l’application dans un conteneur logiciel, c’est-à-dire un environnement d’exécution léger qui regroupe tous les composants système nécessaires à l’exécution de son contenu. En l’espèce, le contenu de l’application comporte au moins le module logiciel et le code protégé. Un tel conteneur peut être indifféremment distribué en tant que logiciel sur site ou comme un service hébergé sur abonnement.The whole thus offended takes the form of an application which can be installed for example on a virtual machine. A particular option concerns the installation of the application in a software container, that is to say a lightweight execution environment which brings together all the system components necessary for the execution of its content. In this case, the content of the application includes at least the software module and the protected code. Such a container can be distributed either as on-premises software or as a subscription-based hosted service.
Un exemple particulier de réalisation est à présent décrit en référence à la
L’exécution de l’application (100) peut être déclenchée de diverses manières, actives ou passives. Un exemple de déclenchement actif est une interaction homme-machine au niveau d’un terminal utilisateur (102) du client. Un exemple de déclenchement passif est le passage d’un repère temporel prédéfini dans un logiciel de planification de tâches.The execution of the application (100) can be triggered in various ways, active or passive. An example of active triggering is human-machine interaction at a user terminal (102) of the customer. An example of passive triggering is the passage of a predefined time marker in task scheduling software.
A l’exécution, l’application (100) crée, ou régénère (300), par le biais du module logiciel, le certificat de l’autorité de certification et le certificat client pour le client cible signé par l’autorité de certification. Ces certificats sont régénérés de manière temporaire sous la forme de fichiers de certificats. Il existe de nombreuses méthodes connues pour entraîner l’effacement de fichiers de manière active ou passive après leur utilisation prévue.At execution, the application (100) creates, or regenerates (300), through the software module, the certificate of the certification authority and the client certificate for the target client signed by the certification authority. These certificates are temporarily regenerated as certificate files. There are many known methods to cause files to be erased actively or passively after their intended use.
L’application émet (302) une requête à destination du serveur (200) de validation et d’autorisation. La requête présente le certificat client pour le client cible.The application sends (302) a request to the server (200) for validation and authorization. The query presents the client certificate for the target client.
L’application agit comme lanceur du code protégé offusqué et conditionne l’exécution (310) du code protégé offusqué à une double vérification :
- la première vérification (304) concerne l’établissement de la connexion sécurisée entre l’application (100) et le serveur (200), et
- la deuxième vérification (306) concerne l’acceptation par le serveur (200) du certificat client fourni par l’application (100) dans la requête.The application acts as a launcher for the offended protected code and conditions the execution (310) of the offended protected code on a double check:
- the first verification (304) concerns the establishment of the secure connection between the application (100) and the server (200), and
- the second verification (306) concerns the acceptance by the server (200) of the client certificate provided by the application (100) in the request.
A l’inverse, n’importe quelle erreur SSL ou mauvaise réponse du serveur (200) a pour effet de quitter l’application (100).Conversely, any SSL error or bad response from the server (200) has the effect of quitting the application (100).
Dès lors que les certificats ne sont plus nécessaires, c’est-à-dire, dès l’émission (302) de la requête, ils ne sont plus nécessaires et sont automatiquement effacés (308). Cet effacement survient indépendamment du fait que la connexion sécurisée soit ensuite établie ou qu’une erreur SSL ou qu’une mauvaise réponse du serveur occasionne une sortie de l’application.Once the certificates are no longer necessary, that is to say, upon issuance (302) of the request, they are no longer necessary and are automatically deleted (308). This deletion occurs regardless of whether the secure connection is subsequently established or whether an SSL error or a bad response from the server causes the application to exit.
En procédant ainsi, la version de l’application (100) remise au client cible a la certitude de s’adresser au bon serveur. En fait, toute tentative de connexion à un autre serveur entraîne une erreur SSL car seule l’autorité de certification est considérée de confiance. De façon réciproque, le serveur (200) n’accepte que des certificats clients qui ont été signés par l’autorité de certification.By doing this, the version of the application (100) delivered to the target client is certain to address the correct server. In fact, any attempt to connect to another server results in an SSL error because only the certificate authority is considered trusted. Conversely, the server (200) only accepts client certificates that have been signed by the certification authority.
La validité du certificat client correspond à une limitation dans le temps de l’autorisation d’utilisation pouvant être accordée. Cette durée peut être modifiée, c’est-à-dire prolongée ou réduite, par des actions entreprises au niveau du serveur (200). En particulier, il est possible de mettre fin à une autorisation d’utilisation pour un client cible en révoquant le certificat client pour ce client cible.The validity of the client certificate corresponds to a time limitation on the authorization of use that can be granted. This duration can be modified, that is to say extended or reduced, by actions taken at the server level (200). In particular, it is possible to terminate a usage authorization for a target client by revoking the client certificate for this target client.
L’infrastructure serveur peut se mettre en œuvre de différentes manières avec des logiciels du marché ou avec des logiciels spécifiques.The server infrastructure can be implemented in different ways with market software or with specific software.
Un exemple particulier de réalisation est à présent décrit en référence à la
Le serveur (200) reçoit (400) une requête, émise par l’application (100) et présentant un certificat client. Le serveur obtient (402) ainsi le certificat client présenté et vérifie (404) si ce certificat a été signé par l’autorité de certification.The server (200) receives (400) a request, issued by the application (100) and presenting a client certificate. The server thus obtains (402) the client certificate presented and checks (404) whether this certificate has been signed by the certification authority.
Lorsque le résultat de cette vérification est positif, c’est-à-dire lorsque le serveur reconnaît le certificat client présenté, une communication sécurisée est établie (408) avec l’application (100).When the result of this verification is positive, that is to say when the server recognizes the client certificate presented, secure communication is established (408) with the application (100).
Le serveur, après avoir ensuite vérifié (410) la validité du certificat client présenté, émet (412) un signal indicatif d’une autorisation à exécuter le code protégé. L’exécution du code protégé peut de ce fait être déclenchée par l’application (100).The server, after having then verified (410) the validity of the client certificate presented, emits (412) a signal indicative of authorization to execute the protected code. The execution of the protected code can therefore be triggered by the application (100).
Si le certificat client présenté n’est pas valide, par exemple parce que sa date de validité a expiré, le client cible n’est pas autorisé à exécuter le code protégé. Le serveur émet (414) alors un signal indicatif d’une absence d’autorisation à exécuter le code protégé. L’exécution du code protégé par l’application (100) est de ce fait prohibée, ce qui, en combinaison avec le procédé décrit en référence à la
Si le serveur ne reconnaît pas le certificat client présenté, la connexion n’est pas établie (406), ce qui, en combinaison avec le procédé décrit en référence à la
Claims (8)
- régénérer, à l’aide du régénérateur de certificat, le certificat client et émettre une requête comprenant le certificat client, et
- lorsque, suite à l’émission de la requête, une connexion est établie avec un serveur et une réponse indicative de validité du certificat client est reçue via la connexion établie, exécuter le code offusqué dans l’application, sinon, arrêter l’exécution de l’application sans exécuter le code offusqué.Method for executing protected software code, the method being implemented by an application containing a regenerator of a client certificate previously signed by a certification authority and an obfuscated code corresponding to the protected software code, the method comprising, on running the application:
- regenerate, using the certificate regenerator, the client certificate and issue a request including the client certificate, and
- when, following the issuance of the request, a connection is established with a server and a response indicative of the validity of the client certificate is received via the established connection, execute the offended code in the application, otherwise, stop the execution of the application without running the offended code.
- effacer le certificat client régénéré immédiatement après l’émission de la requête.A method according to claim 1, further comprising:
- delete the regenerated client certificate immediately after sending the request.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2212896A FR3143244A1 (en) | 2022-12-07 | 2022-12-07 | Authorization mechanism for the use of a software process with source code security |
PCT/EP2023/083649 WO2024120945A1 (en) | 2022-12-07 | 2023-11-30 | Authorisation mechanism for the use of a software method with source code protection |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2212896A FR3143244A1 (en) | 2022-12-07 | 2022-12-07 | Authorization mechanism for the use of a software process with source code security |
FR2212896 | 2022-12-07 |
Publications (1)
Publication Number | Publication Date |
---|---|
FR3143244A1 true FR3143244A1 (en) | 2024-06-14 |
Family
ID=86657656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR2212896A Pending FR3143244A1 (en) | 2022-12-07 | 2022-12-07 | Authorization mechanism for the use of a software process with source code security |
Country Status (2)
Country | Link |
---|---|
FR (1) | FR3143244A1 (en) |
WO (1) | WO2024120945A1 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044359A1 (en) * | 2003-05-12 | 2005-02-24 | Thomas Eriksson | Anti-piracy software protection system and method |
US20110145568A1 (en) * | 2009-12-14 | 2011-06-16 | International Business Machines Corporation | Handling of the usage of software in a disconnected computing environment |
WO2020098377A1 (en) * | 2018-11-16 | 2020-05-22 | 阿里巴巴集团控股有限公司 | Remote attestation method and apparatus for trusted application program, and electronic device |
-
2022
- 2022-12-07 FR FR2212896A patent/FR3143244A1/en active Pending
-
2023
- 2023-11-30 WO PCT/EP2023/083649 patent/WO2024120945A1/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044359A1 (en) * | 2003-05-12 | 2005-02-24 | Thomas Eriksson | Anti-piracy software protection system and method |
US20110145568A1 (en) * | 2009-12-14 | 2011-06-16 | International Business Machines Corporation | Handling of the usage of software in a disconnected computing environment |
WO2020098377A1 (en) * | 2018-11-16 | 2020-05-22 | 阿里巴巴集团控股有限公司 | Remote attestation method and apparatus for trusted application program, and electronic device |
Also Published As
Publication number | Publication date |
---|---|
WO2024120945A1 (en) | 2024-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3343425B1 (en) | System and method for the creation and management of decentralized authorizations for connected objects | |
CN111316278B (en) | Secure identity and profile management system | |
CN111353903B (en) | Network identity protection method and device, electronic equipment and storage medium | |
US9910969B2 (en) | System, method, and device for delivering communications and storing and delivering data | |
EP2494489B1 (en) | Method and client agent for monitoring the use of protected content | |
FR3079322A1 (en) | METHOD AND SYSTEM FOR MANAGING ACCESS TO PERSONAL DATA BY INTELLIGENT CONTRACT | |
US10581806B2 (en) | Service providing method, service requesting method, information processing device, and client device | |
CN107483495B (en) | Big data cluster host management method, management system and server | |
KR102089912B1 (en) | Method and system for managing mobile devices based on private blockchain | |
KR101775517B1 (en) | Client for checking security of bigdata system, apparatus and method for checking security of bigdata system | |
CN111859379A (en) | Processing method and device for protecting data model | |
FR3143244A1 (en) | Authorization mechanism for the use of a software process with source code security | |
CN111417122A (en) | Attack prevention method and device | |
EP2537114B1 (en) | Method for remotely locking and unlocking a machine | |
CN112579998A (en) | Webpage access method, management system and electronic equipment in information interaction platform | |
CA3086863A1 (en) | Checking the integrity of an electronic device | |
CA2747375C (en) | Microkernel gateway server | |
FR2917868A1 (en) | SECURITY SYSTEM AND METHOD USING SECURITY DEVICE | |
CN118174874B (en) | Token generation method and device for unified authentication | |
CN111859378B (en) | Processing method and device for protecting data model | |
EP2567531B1 (en) | Method and management machine for opening a session of a machine belonging to a machine set | |
WO2023281223A1 (en) | Secure transfer gateway | |
CN118174874A (en) | Token generation method and device for unified authentication | |
WO2020193583A1 (en) | Method for running secure code, corresponding devices, system and programs | |
CN115664794A (en) | Method, system and device for detecting request information |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20240614 |