FR2867868A1 - Software and data protection method, involves dynamically dearchiving secret encryption key from sub-keys at each usage of programs/data, and dynamically decrypting protected programs or data by decryption algorithm and secret key - Google Patents

Software and data protection method, involves dynamically dearchiving secret encryption key from sub-keys at each usage of programs/data, and dynamically decrypting protected programs or data by decryption algorithm and secret key Download PDF

Info

Publication number
FR2867868A1
FR2867868A1 FR0402838A FR0402838A FR2867868A1 FR 2867868 A1 FR2867868 A1 FR 2867868A1 FR 0402838 A FR0402838 A FR 0402838A FR 0402838 A FR0402838 A FR 0402838A FR 2867868 A1 FR2867868 A1 FR 2867868A1
Authority
FR
France
Prior art keywords
key
data
user
software
encryption
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
Application number
FR0402838A
Other languages
French (fr)
Inventor
Tan Truyen Tran
Emmanuel Rouyer
Jean Marcel Lagorsse
Patrick Thomas
Mathieu Mirmont
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to FR0402838A priority Critical patent/FR2867868A1/en
Publication of FR2867868A1 publication Critical patent/FR2867868A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • G06F21/1011Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • G06F21/1014Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to tokens
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices

Abstract

The method involves generating a sub-key KP (10) relative to a user and/or a system, and generating a sub-key KE (8) depending on a secret encryption key K (7) and the sub-key KP (10). The secret encryption key is dynamically dearchived from the sub-keys at each usage of programs or data. The protected programs or data are dynamically decrypted in an electrically erasable programmable ROM by a decryption algorithm and the key K (7). Independent claims are also included for the following: (A) an application of a method to the protection and management of rights of the usage of encrypted software functionalities (B) a system for protecting storage units and in particular hard disk implementing a software and data protecting method.

Description

1. Objet1. Object

L'invention concerne un système de protection de logiciels et de données, basé sur une méthode de cryptage qui assure une grande 5 sécurité dans la protection.  The invention relates to a software and data protection system based on an encryption method which provides a high security in the protection.

Les systèmes de protection standards sont facilement cassables, car quels que soient les systèmes de cession de licences utilisés (clefs, activation par Internet, ...), il y a toujours un test afin de vérifier si le logiciel possède une licence valable ou pas. lI est alors facile à un pirate informatique de faire sauter le test avec un simple correctif, plutôt que d'essayer de casser le système de licence lui même.  The standard protection systems are easily broken, because whatever the license transfer systems used (keys, activation via the Internet, ...), there is always a test to check if the software has a valid license or not . It is then easy for a hacker to blow the test with a simple fix, rather than trying to break the licensing system itself.

L'invention solutionne ce problème et empêche les pirates informatiques d'accéder aux fonctionnalités, et cela même s'ils sont capable de casser le test de validité de la licence. Ce document décrit un système de protection générique et innovant, ainsi que des fonctionnalités spécifiques pour la gestion d'extension de fonctionnalités (logiciels modulaires) et la protection de contenu (contenu multimédia notamment).  The invention solves this problem and prevents hackers from accessing the features, even if they are able to break the validity test of the license. This document describes a generic and innovative protection system, as well as specific functionalities for feature extension management (modular software) and content protection (multimedia content in particular).

1.1 Principe de l'invention.1.1 Principle of the invention

Le logiciel licencié est stocké dans une version cryptée sur l'unité de stockage de l'ordinateur (2). Pour démarrer le logiciel, un lanceur dédié (3), utilisant une fonction de cryptage D, est exécuté et décrypte de manière dynamique les fichiers binaires (1) en les chargeant directement dans la mémoire centrale (5) lorsque cela est nécessaire. Les versions en clair des fichiers binaires (34) ne sont jamais stockés sur l'unité de stockage (2).  The licensed software is stored in an encrypted version on the storage unit of the computer (2). To start the software, a dedicated launcher (3), using a D encryption function, is dynamically executed and decrypts the binary files (1) by loading them directly into the main memory (5) when necessary. The plaintext versions of the binary files (34) are never stored on the storage unit (2).

La figure 1 présente les relations entre les fichiers chiffrés (1) sur l'unité de stockage (2) et les données en clair dans un segment de la 30 mémoire (4) centrale de l'ordinateur (5).  FIG. 1 shows the relationships between the encrypted files (1) on the storage unit (2) and the data in the clear in a segment of the central memory (4) of the computer (5).

1.2 La gestion des clefs La clef de décryptage (7) K n'est pas enregistré sur l'unité de stockage (2) de manière permanente, mais peut être retrouvée à partir de deux sous-clefs (10) qui sont relatives à un identifiant physique IDP 9.  1.2 The management of the keys The decryption key (7) K is not permanently registered on the storage unit (2), but can be found from two sub-keys (10) which are relative to a IDP physical identifier 9.

La sous-clef KP (10) est étroitement liée à IDP (7), donc dépendante de la machine.  The subkey KP (10) is closely related to IDP (7), thus dependent on the machine.

-- La sous-clef KE (8) est calculée par le fournisseur du 40 logiciel, en utilisant KP (10) et K (7) KE = g(K, Kp) Le module de chargement calcule K = f(Kp,KE) Le programme est conçu de manière à ce que: Les fonctionnalités logicielles ne puissent être débloquées qu'avec la clef appropriée sur le système approprié.  The subkey KE (8) is computed by the software provider, using KP (10) and K (7) KE = g (K, Kp). The load module calculates K = f (Kp, KE The program is designed so that: The software features can only be unlocked with the appropriate key on the appropriate system.

Les fonctionnalités débloquées ne puissent pas être fonctionnelles une fois transférées sur un autre système de même type ou non.  Unlocked features can not be functional once transferred to another system of the same type or not.

Aucune clef sensible ne soit stockée sur les unités de io stockage locales (2).  No sensitive key is stored on the local storage units (2).

Deux cas de gestion de clefs peuvent être distingués: (1) Le logiciel, ou fichiers binaires, installé initialement (1) est le même pour chaque machine.  Two key management cases can be distinguished: (1) The software, or binary files, initially installed (1) is the same for each machine.

(2) Le logiciel, ou fichiers binaires, installé initialement (1) est spécifique à chaque machine.  (2) The software, or binary files, initially installed (1) is specific to each machine.

La décision entre les ces deux variantes dépendra des contraintes du système de production et de diffusion des logiciels.  The decision between these two variants will depend on the constraints of the software production and distribution system.

2. Définitions Nous donnerons ici un certain nombre de définitions nécessaires à la compréhension du système décrit. Certaines sont d'ordre général et 5 certaines sont spécifiques au système.  2. Definitions We will give here a certain number of definitions necessary for the understanding of the described system. Some are general and some are system specific.

2.1. Identifiant physique Dans la suite, nous considérerons qu'un système physique typiquement un ordinateur, est identifié par un numéro matériel unique, spécifique au système et qui ne peut pas être modifié. Nous appellerons un tel numéro identifiant physique (1).  2.1. Physical Identifier In the following, we will consider that a physical system typically a computer, is identified by a unique hardware number, specific to the system and which can not be modified. We will call such a physical identifier number (1).

2.2. Fonction de hachage Une fonction de hachage est une fonction non inversible qui génère un condensât (ou empreinte) de taille fixe à partir d'une donnée d'entrée de taille quelconque. Les propriétés mathématiques d'une telle fonction doivent assurer que: La probabilité que deux entrées différentes donnes le même condensât est extrêmement faible.  2.2. Hash function A hash function is a non-invertible function that generates a fixed-size condensate (or imprint) from any input data of any size. The mathematical properties of such a function must ensure that: The probability that two different inputs give the same condensate is extremely low.

Il est impossible de retrouver l'entrée à partir du condensât.  It is impossible to find the entry from the condensate.

Les fonctions de hachages sont typiquement utilisées pour vérifier l'intégrité de données.  Hash functions are typically used to verify data integrity.

2.3. Logiciel modulaire Un logiciel d'architecture modulaire est un logiciel présentant plusieurs fonctionnalités, typiquement implémentée dans des composants logiciels distincts, exécutables indépendamment les unes des autres. Sur un tel système, certaines fonctionnalités peuvent être totalement désactivées sans nuire au bon fonctionnement des autres.  2.3. Modular Software Modular architecture software is a software with several features, typically implemented in separate software components, executable independently of each other. On such a system, some features can be completely disabled without affecting the functioning of others.

2.4. Programme principal Dans une architecture modulaire, le programme principal (18) est le composant logiciel qui va gérer l'ensemble des fonctionnalités. C'est la partie centrale de l'architecture. Il est capable de configurer, de lancer et de stopper les différents modules fonctionnels (1).  2.4. Main Program In a modular architecture, the main program (18) is the software component that will manage all the features. This is the central part of the architecture. It is able to configure, start and stop the various functional modules (1).

4 2.5. Module Dans une architecture modulaire, un module (1) est une partie du système, fournissant un ou plusieurs services, et ne dépendant que du programme principal pour fonctionner.  4 2.5. Module In a modular architecture, a module (1) is a part of the system, providing one or more services, and depending only on the main program to function.

2.6. Extension des fonctionnalités d'un logiciel Une extension logicielle est une modification d'un logiciel existant. Elle vise typiquement à augmenter ses performances ou à étendre ses 10 fonctionnalités, c'est à dire à ajouter ou activer de nouveaux modules.  2.6. Extending Software Features A software extension is a modification of an existing software. It typically aims to increase its performance or extend its functionality, ie to add or activate new modules.

2.7 Porte-clef Le porte-clef (16) est une structure virtuelle conçue spécifiquement 15 pour le système de protection. Il stocke toutes les informations nécessaires relatives aux licences. C'est grâce au porteclef virtuel que le système pourra vérifier si une licence est active ou non.  2.7 Keychain The keychain (16) is a virtual structure designed specifically for the protection system. It stores all the necessary information related to the licenses. It is thanks to the virtual porteclef that the system will be able to check if a license is active or not.

2.8. Lanceur Dans le cadre de notre système, nous appellerons lanceur le module (3), ou couche d'abstraction, logiciel qui se charge de déchiffrer à la volée les fichiers (1) et de les charger en mémoire (5) pour les lire ou les exécuter.  2.8. Launcher As part of our system, we will call launcher module (3), or layer of abstraction, software that is responsible for decrypting the files on the fly (1) and load them in memory (5) to read them or execute them.

2.9. Acronymes AES: Advanced Encryption Standard CDROM: Compact Disc ROM CPU: Central Processing Unit DES: Data Encryption Standard DVDROM: Digital Versatile Disc ROM EPROM: Erasable Programmable ROM EEPROM: Electrically Erasable Programmable ROM MD5: Message Digest 5 NIC: Network Interface Card PC: Personal Computer PROM: Programmable ROM ROM: Read Only Memory 4o SC: Smart Card SHA1: Secure Hash Algorithm 1 SIM: Subscriber Identity Module SS L: Secure Socket Layer TDES: Triple DES 2.10 Liste des figure Des modes d'exécution de l'invention seront décrits ci-après, à titre d'exemples non limitatifs avec références aux dessins annexés dans lesquels: La figure 1 est une représentation schématique des relations entre les fichiers chiffrés (1) sur l'unité de stockage (2) et les données en clair dans un segment de la mémoire (4) centrale de l'ordinateur (5).  2.9. AES Acronyms: Advanced Encryption Standard CDROM: Compact Disc ROM CPU: Central Processing Unit DES: Data Encryption Standard DVDROM: Digital Versatile Disc ROM EPROM: Erasable Programmable ROM EEPROM: Electrically Erasable Programmable ROM MD5: Message Digest 5 NIC: Network Interface Card PC: Personal Computer PROM: Programmable ROM ROM: Read Only Memory 4o SC: Smart Card SHA1: Secure Hash Algorithm 1 SIM: Subscriber Identity Module SS L: Secure Socket Layer TDES: Triple DES 2.10 List of Figures Modes of Execution of the Invention will be described below, by way of non-limiting examples with reference to the accompanying drawings in which: FIG. 1 is a schematic representation of the relationships between the encrypted files (1) on the storage unit (2) and the data in clear in a segment of the memory (4) central computer (5).

La figure 2 est une représentation schématique d'un fichier en 15 clair (34), crypté grâce à une clef K (7) et à un algorithme C (6) pour calculer le fichier crypté (1).  FIG. 2 is a schematic representation of a plaintext file (34), encrypted by means of a key K (7) and an algorithm C (6) for calculating the encrypted file (1).

La figure 3 représente de manière schématique le processus de génération d'une sous-clef de transmission (8) à partir d'une clef K (7) définie par un fournisseur de logiciel et de IDP (9), identifiant du client ou de la machine.  FIG. 3 schematically represents the process of generating a transmission sub-key (8) from a key K (7) defined by a software provider and IDP (9), identifying the client or the machine.

La figure 4 représente de manière schématique la génération d'une clef K (7) à partir des éléments KE (8) et IDP2 (9), et illustre le 25 décryptage d'un fichier crypté (1) par K (7).  Figure 4 schematically shows the generation of a key K (7) from the KE (8) and IDP2 (9) elements, and illustrates the decryption of an encrypted file (1) by K (7).

La figure 5 représente de manière schématique l'utilisation des IDP (9) avec K (14) pour générer K' (7) et KE (8).  Figure 5 schematically shows the use of IDPs (9) with K (14) to generate K '(7) and KE (8).

La figure 6 représente de manière schématique l'utilisation des clefs et des identifiants lors d'une installation avec des fichiers spécifiques à chaque machine.  Figure 6 shows schematically the use of keys and identifiers during an installation with files specific to each machine.

La figure 7 représente de manière schématique les principes de 35 logiciel modulaire, et de gestion de licence à l'aide d'un porte-clef virtuel (16).  Figure 7 schematically illustrates the principles of modular software, and license management using a virtual keychain (16).

La figure 8 une représentation schématisé d'un exemple de structure de porte-clef (16). Le champ IDENTIFIANT de la fonction permet de stocker des identifiants (19) des fonctionnalités/modules. Le champ LICENCE permet de stocker des marqueurs (20) de licence. SOUS-CLEF DE FONCTION est le champ permettant de 2867868 6 garder la valeur des sous- clefs (8) qui vont permettre de retrouver la clef de chiffrage des modules correspondants. Enfin, le champ CONDENSAT DE CLEF permet de stocker des empreintes (21) des clefs secrètes. Ces empreintes (21) permettront au programme principal de vérifier que la sous-clef est bien valide.  Figure 8 is a schematic representation of an exemplary key holder structure (16). The IDENTIFIER field of the function makes it possible to store identifiers (19) of the functionalities / modules. The LICENSE field is used to store license markers (20). FUNCTION SUB-KEY is the field allowing to keep the value of the subkeys (8) which will make it possible to find the key of encryption of the corresponding modules. Finally, the field KEY CONDENSATE makes it possible to store fingerprints (21) of the secret keys. These fingerprints (21) will allow the main program to verify that the subkey is valid.

La figure 9. représente de manière schématique le procédé d'installation pour un logiciel embarqué, cette installation étant totalement maîtrisée par le fournisseur.  Figure 9. schematically shows the installation method for embedded software, this installation is completely controlled by the supplier.

La figure 10. représente de manière schématique le fonctionnement d'un programme d'installation: on utilise pour générer des clefs de chiffrement une triple fonction (fonction h, voir sections 3.4.et4.2.): La figure 11. représente de manière schématique un exemple de structure d'un porte-clefs virtuel.  Figure 10 shows schematically the operation of an installation program: a triple function is used to generate encryption keys (function h, see sections 3.4.et4.2.): Figure 11. represents schematic an example of structure of a virtual keychain.

La figure 12. représente de manière schématique la génération d'une sousclef (10) K'p à partir d'une adresse physique de l'interface réseau (9) (numéro NIC). Cette génération se fait par une simple répétition de motif.  FIG. 12 schematically represents the generation of an sub-element (10) K'p from a physical address of the network interface (9) (NIC number). This generation is done by a simple pattern repetition.

La figure 13. représente de manière schématique la génération 25 d'une sous-clef KE (8) à partir de K'F; (7) et K'p (10). Cette génération se fait par chiffrement AES.  Fig. 13. schematically shows the generation of a ke key sub-key (8) from K'F; (7) and K'p (10). This generation is done by AES encryption.

La figure 14. représente de manière schématique un système de récupération d'une clef de chiffrement K'F; (7) et le déchiffrage du 30 module correspondant.  Figure 14. schematically shows a system for recovering an encryption key K'F; (7) and deciphering the corresponding module.

La figure 15. représente de manière schématique un système de vérification de la validité d'une sous-clef KE (8).  Figure 15. schematically shows a system for checking the validity of a subkey KE (8).

La figure 16. représente de manière schématique le principe du boîtier de sécurisation (29) intercalé en aval d'un serveur (31).  Figure 16. schematically shows the principle of the security box (29) inserted downstream of a server (31).

La figure 17. représente de manière schématique la production des CD (33) de série à partir d'un master (22).  Figure 17. schematically shows the production of series CDs (33) from a master (22).

La figure 18. représente de manière schématique la génération de K'2 (7) et KE2 (8) à partir de IDP1 (9), IDP2 (9) et de K2 (14).  Figure 18. schematically shows the generation of K'2 (7) and KE2 (8) from IDP1 (9), IDP2 (9) and K2 (14).

2867868 7 La figure 19. représente de manière schématique la génération de KE1 à partir d'un identifiant IDP2(9) et d'une clef K, (7) La figure 20. représente de manière schématique la méthode de génération des clefs K' (7) et KE (8) à partir d'un identifiant SIM (9) et d'une clef K (14).  FIG. 19. schematically shows the generation of KE1 from an identifier IDP2 (9) and a key K, (7). FIG. 20 schematically represents the method of generating the keys K '. (7) and KE (8) from a SIM identifier (9) and a K key (14).

La figure 21 représente de manière schématique le système de lo protection de disque dur (41) mettant en oeuvre une carte d'interface (42) assurant les fonctionnalités de cryptage et de décryptage ainsi qu'un lecteur de cartes à puce (43) permettant l'authentification des utilisateurs.  FIG. 21 schematically shows the hard disk protection system (41) implementing an interface card (42) providing the encryption and decryption functions and a smart card reader (43) enabling user authentication.

La figure 22 représente de manière schématique le procédé de génération des clefs de chiffrage K' (7) et de stockage KE (8) dans le cadre du système de protection de disque dur.  Figure 22 schematically shows the method of generating encryption keys K '(7) and storage KE (8) as part of the hard disk protection system.

La figure 23 représente de manière schématique le procédé de récupération de la clef de chiffrage K' (7) à partir de la clef de stockage KE (8) contenue dans la mémoire (44) et de la carte à puce correspondante (39), dans le cadre du système de protection de disque dur.  FIG. 23 schematically represents the method of recovering the encryption key K '(7) from the storage key KE (8) contained in the memory (44) and the corresponding smart card (39), as part of the hard disk protection system.

La figure 24 représente de manière schématique la disposition physique de la mémoire (44) de stockage des KE (8),dans le cadre du système de protection de disque dur.  Fig. 24 schematically shows the physical arrangement of the KE (8) storage memory (44) as part of the hard disk protection system.

La figure 25 représente de manière schématique le procédé de cryptage mis en oeuvre pour la protection d'un disque dur (41) contenant déjà des données, dans le cadre du système de protection de disque dur.  Figure 25 schematically shows the encryption method implemented for the protection of a hard disk (41) already containing data, as part of the hard disk protection system.

La figure 26 représente de manière schématique le procédé de 35 décryptage mis en oeuvre pour la dé-protection d'un disque dur (41) protégé.  Fig. 26 schematically shows the decryption method used for the de-protection of a protected hard disk (41).

La figure 27 représente de manière schématique le système de concentrateur mis en oeuvre pour utiliser plusieurs cartes d'interface (42) et plusieurs disques durs (41) avec un seul lecteur de cartes à puce (43), dans le cadre du système de protection de disque dur.  FIG. 27 schematically represents the concentrator system implemented to use several interface cards (42) and several hard disks (41) with a single chip card reader (43), as part of the protection system. hard drive.

3. Description du système3. Description of the system

Comme expliqué précédemment, l'invention peut être implémentée avec une version de logiciel (fichiers binaire) (1) identique ou s personnalisée pour chaque utilisateur. Nous allons détailler les méthodes de gestion des clefs qui seront utilisées dans chacun des deux cas. Il sera aussi détaillé le système d'extension sécurisée de fonctionnalités.  As explained above, the invention can be implemented with a software version (binary files) (1) identical or customized for each user. We will detail the key management methods that will be used in each case. It will also be detailed the system of secure extension of features.

l0 3.1 Gestion des clefs avec des binaires identiques Cette méthode sera utilisé si les contraintes de production et de diffusion ne permettent pas une personnalisation des fichiers binaires 1 pour chaque copie du logiciel (typiquement, le cas de grandes diffusions de CD-ROM (33) ou de DVD-ROM (33)).  l0 3.1 Management of keys with identical binaries This method will be used if the production and distribution constraints do not allow a customization of binary files 1 for each copy of the software (typically, the case of large CD-ROMs (33) or DVD-ROM (33)).

3.1.1 Chiffrage des binaires Les fichiers binaires (34) sont chiffrés par le fournisseur de logiciel en utilisant une clef de chiffrage K (7) qui ne sera pas transmise à l'utilisateur. Seule la version cryptée des fichiers binaires (1) sera fournie au client.  3.1.1 Bit Encryption Binary files (34) are encrypted by the software provider using a K (7) encryption key that will not be passed to the user. Only the encrypted version of the binary files (1) will be provided to the client.

La figure 2 montre le fichier en clair (34), crypté grâce à la clef K (7) et l'algorithme C (6) pour obtenir le fichier crypté (1).  Figure 2 shows the plaintext file (34), encrypted with the key K (7) and the algorithm C (6) to obtain the encrypted file (1).

3.1.2 Génération des clefs Chaque machine ou utilisateur possède un ou plusieurs identifiants (9) IDP. La clef de chiffrage/déchiffrage principale K (7) est définie par le fournisseur de logiciel.  3.1.2 Key Generation Each machine or user has one or more IDP IDs (9). The key encryption / decryption key K (7) is defined by the software provider.

La clef de chiffrage K (7) est alors utilisée pour générer une sous-clef KE (8) dépendante de IDP (9) via une fonction g (35) (typiquement une fonction symétrique qui prendrait en entrée une dérivée de K (7) et de IDP (9)), qui sera transmise à l'utilisateur avec les fichiers binaires cryptés (1).  The encryption key K (7) is then used to generate a key KE (8) dependent on IDP (9) via a function g (35) (typically a symmetric function which would take as input a derivative of K (7) and IDP (9)), which will be transmitted to the user with the encrypted binary files (1).

La figure 3 montre le processus de génération de la sous-clef de transmission (8) à partir de la clef K (7) définie par le fournisseur de 35 logiciel et de IDP (9), identifiant du client ou de la machine.  Fig. 3 shows the process of generating the transmission subkey (8) from key K (7) defined by the software provider and IDP (9), client or machine identifier.

3.1.3 Processus d'installation L'utilisateur exécute un logiciel d'installation qui copie les fichiers cryptés (1) sur l'unité de stockage locale (2) de sa machine. Le logiciel est alors installé, mais pas encore activé : l'utilisateur peut activer le logiciel en demandant sa sous-clef KE (8) au fournisseur de logiciel.  3.1.3 Installation process The user runs installation software that copies the encrypted files (1) to the local storage unit (2) of his machine. The software is then installed, but not yet activated: the user can activate the software by asking his KE (8) subkey for the software provider.

2867868 9 La clef physique KP (10) est générée en local grâce à IDP (9) et est alors combinée avec KE (8) pour retrouver K (7) via la fonction f (12). Grâce à K (7), les fichiers binaires (1) peuvent alors être décryptés en mémoire (5) lorsque cela sera nécessaire. Cette opération doit être totalement transparente pour l'utilisateur.  The physical key KP (10) is generated locally by means of IDP (9) and is then combined with KE (8) to find K (7) via the function f (12). Thanks to K (7), the binary files (1) can then be decrypted in memory (5) when this is necessary. This operation must be completely transparent to the user.

La figure 4 montre comment la clef K (7) est retrouvée à partir de KE (8) et IDP2 (9), et illustre le décryptage du fichier crypté (1) par K (7).  Figure 4 shows how the key K (7) is found from KE (8) and IDP2 (9), and illustrates the decryption of the encrypted file (1) by K (7).

Avantage de l'invention: - Les versions non cryptés des fichiers (34) ne sont jamais envoyées ou stockées sur les unités de stockages locales (2) de l'utilisateur.  Advantage of the invention: The unencrypted versions of the files (34) are never sent or stored on the local storage units (2) of the user.

La clef de chiffrage/déchiffrage (7) ne transite pas à travers le 15 réseau.  The encryption / decryption key (7) does not pass through the network.

La clef de chiffrage/déchiffrage (7) n'est jamais stockée dans l'unité de stockage locale (2).  The encryption / decryption key (7) is never stored in the local storage unit (2).

- L'utilisateur n'a besoin de connaître que KE (8).  - The user needs to know only KE (8).

3.2 Gestion de clef pour les machines avec des binaires personnalisés Cette méthode est une version améliorée de la précédente, mais ne peut être utilisée que dans le cas où les contraintes de productions et de diffusions permettent la personnalisation des fichiers binaires (34) pour chaque copie du logiciel (typiquement, pour les diffusions restreintes sur support physique (CD, DVD...) ou le téléchargement de logiciels avec un serveur d'installation à distance dédié (31)).  3.2 Key management for machines with custom binaries This method is an improved version of the previous one, but can only be used if the production and delivery constraints allow the customization of the binary files (34) for each copy software (typically, for restricted broadcasts on physical media (CD, DVD ...) or downloading software with a dedicated remote installation server (31)).

3.2.1 Génération des clefs Chaque machine ou utilisateur possède un ou plusieurs identifiants (9) IDP. Un IDP (9) sera combiné avec une clef constante (14) K, qui est choisie par le fournisseur et qui restera secrète à l'aide d'une fonction h (15) (typiquement une fonction de hachage, voir implémentation en 4.2) Une clef K' (7) sera alors générée à partir de IDP (9), de K (14) en appliquant h (15), et qui sera utilisée pour chiffrer les fichiers binaires (1). K' (7) est dépendante de la machine étant donné qu'elle prends en compte IDP (9), idéntifiant unique de la machine. Comme la clef de chiffrage (7) est spécifique à la machine, les fichiers chiffrés (1) sont spécifiques à la machine aussi.  3.2.1 Key Generation Each machine or user has one or more IDP IDs (9). An IDP (9) will be combined with a constant key (14) K, which is chosen by the provider and will remain secret using a function h (15) (typically a hash function, see implementation in 4.2) A key K '(7) will then be generated from IDP (9), K (14) by applying h (15), and which will be used to encrypt the binary files (1). K '(7) is machine dependent since it takes into account IDP (9), the unique identifier of the machine. Since the encryption key (7) is machine-specific, the encrypted files (1) are machine-specific as well.

La clef de chiffrage K' (7) sera alors utilisée pour générer KE (8), une sous-clef de transmission (dépendante de IDP (9) puisque K' (7) est déjà dépendant de IDP (9)), grâce à une fonction g (35). KE (8) sera transmise à l'utilisateur en même temps que les fichiers binaires chiffrés (1).  The encryption key K '(7) will then be used to generate KE (8), a transmission subkey (dependent on IDP (9) since K' (7) is already dependent on IDP (9)), thanks to a function g (35). KE (8) will be transmitted to the user at the same time as the encrypted bit files (1).

La figure 5 illustre l'utilisation des IDP (9) avec K (14) pour générer K' (7) et KE (8).  Figure 5 illustrates the use of IDPs (9) with K (14) to generate K '(7) and KE (8).

3.2.2 Processus d'installation Le processus d'installation doit être contrôlé du coté du fournisseur.  3.2.2 Installation process The installation process must be controlled on the supplier's side.

Comme l'installation se fait à partir d'un serveur (31) du fournisseur, l'utilisateur n'a pas à connaître la clef K (14). Le point clef de ce processus d'installation est que l'utilisateur ne voit jamais la version en clair des fichiers binaires (34) puisque les fichiers sont cryptés pendant le processus d'installation à partir du Master CD (22) en usine lors de la copie, ou avant le transfert de fichier dans le cas d'une installation par réseau, avant d'être stocké, toujours de manière crypté, en local sur la machine utilisatrice. De plus, la clef qui sert à chiffrer est K' (7), et non K (14) : l'utilisateur n'aura jamais à connaître K (14).  Since the installation is done from a server (31) of the provider, the user does not have to know the key K (14). The key point of this installation process is that the user never sees the plaintext version of the binary files (34) since the files are encrypted during the installation process from the Master CD (22) at the factory during the copy, or before the file transfer in the case of a network installation, before being stored, always encrypted, locally on the user machine. Moreover, the key used to encrypt is K '(7), not K (14): the user will never have to know K (14).

La figure 6 explicite comment sont utilisées les clefs et les 25 identifiants lors d'une installation avec des fichiers spécifiques à chaque machine.  Figure 6 explains how keys and identifiers are used during installation with machine specific files.

3.2.3 Avantages de l'invention - Chaque copie de chaque fichier est cryptée spécifiquement pour chaque machine ou utilisateur.  3.2.3 Advantages of the invention - Each copy of each file is encrypted specifically for each machine or user.

Les fichiers en clair (34) ne sont jamais stockés sur le système local.  Files in clear (34) are never stored on the local system.

- La clef de déchiffrage K' (7) n'est jamais envoyée à travers le réseau.  The decryption key K '(7) is never sent through the network.

La clef K' (7) n'est jamais stockée localement sur la machine de l'utilisateur.  The key K '(7) is never stored locally on the user's machine.

La clef K (14) reste secrète et ne sera jamais transmise, stockée ou recalculée du coté du client.  Key K (14) remains secret and will never be transmitted, stored or recalculated on the client's side.

L'utilisateur ne connaît que la sous-clef KE (8).  The user knows only the subkey KE (8).

3.2.4 Application possible de la protection.  3.2.4 Possible application of protection.

2867868 11 Diffusion restreinte de logiciels ou de données sur support physique.  2867868 11 Restricted release of software or data on physical media.

Serveur d'installation de logiciels à distance (31) (réseau) - Diffusion de media à travers des réseaux publics 5 (typiquement Internet) ou privés.  Remote Software Installation Server (31) (Network) - Broadcast media over public (typically Internet) or private networks.

3.3 Gestion de licences d'extensions sécurisée Cette section décrit les particularités du système pour la gestion des licences d'extensions des logiciels modulaires. Cet aspect est indépendant de la méthode de gestion des clefs de chiffrage. La gestion de licences d'extensions sécurisée peut être utilisée avec les deux systèmes de gestion de clefs (binaires identiques ou personnalisés).  3.3 Secure Extension License Management This section describes the system features for managing modular software license extensions. This aspect is independent of the encryption key management method. Secure extension license management can be used with both key management systems (identical or custom binaries).

Note: La gestion de licence unique (pour des logiciels non modulaires) peut être considéré comme étant un cas particulier avec un module unique.  Note: Single license management (for non-modular software) can be considered as a special case with a single module.

Même si aujourd'hui les taux de transferts via les réseaux croissent, ils sont généralement encore trop bas pour permettre le transfert de grosses quantités de données avec un délai raisonnable. Ce problème est d'autant plus critique si les données à transférer doivent être cryptées: typiquement, pour le transfert de logiciel à licence privée, la confidentialité de la transaction doit être assurée afin d'éviter les copies pirates.  Even though network transfer rates are growing today, they are generally still too low to allow the transfer of large amounts of data in a reasonable amount of time. This problem is even more critical if the data to be transferred must be encrypted: typically, for the transfer of software to private license, the confidentiality of the transaction must be ensured in order to avoid pirated copies.

La méthode de protection décrite dans la section 1. peut résoudre ce problème: un logiciel (ou une suite de logiciel) sera entièrement (tous les modules/fonctionnalités, même optionnels) stocké sur la machine de l'utilisateur, et ses fonctionnalités seront activées sur demande. Chaque module (34) est stocké dans une version cryptée (1) pour éviter le piratage.  The protection method described in section 1. can solve this problem: a software (or a suite of software) will be fully (all modules / features, even optional) stored on the user's machine, and its features will be enabled on demand. Each module (34) is stored in an encrypted version (1) to prevent piracy.

En plus du système d'extensions, cette section décrit la manière dont les modules sont activés et la manière dont les licences sont gérées. La solution consiste en plusieurs fonctionnalités qui vont permettre de gérer les licences accordées, l'activation et la configuration des différents modules/fonctionnalités.  In addition to the extensions system, this section describes how modules are enabled and how licenses are handled. The solution consists of several functionalities that will make it possible to manage the licenses granted, the activation and the configuration of the various modules / functionalities.

Plusieurs éléments distincts sont nécessaires au fonctionnement du système: - Une structure logique appelée porte-clef (16) Un programme principal (18) 2867868 12 Des fonctionnalités modulaires (34) et indépendantes, conçues pour fonctionner avec le programme principal (18).  Several distinct elements are necessary for the operation of the system: - A logical structure called key-ring (16) A main program (18) 2867868 12 Modular (34) and independent functionalities, designed to work with the main program (18).

Note: Les fonctionnalités peuvent être des modules différents d'une même application ou des application différentes (dans le second cas le système d'exploitation sera considéré comme programme principal).  Note: The features can be different modules of the same application or different applications (in the second case the operating system will be considered as the main program).

3.3.1 Installation La procédure d'installation installe toutes les fonctionnalités optionnelles même si elles ne sont pas licenciées. Toutes les fonctionnalités seront disponibles sur le système, mais elles seront verrouillées. Afin d'éviter le piratage, les fonctionnalités seront chiffrées avec une clef secrète (7), et seules les fonctionnalités licenciées seront décryptées dynamiquement lors de l'utilisation.  3.3.1 Installation The installation procedure installs all the optional features even if they are not licensed. All features will be available on the system, but they will be locked. To avoid hacking, the features will be encrypted with a secret key (7), and only the licensed features will be decrypted dynamically during use.

La figure 7 illustre les principes de logiciel modulaire, et de gestion de licence à l'aide du porte-clef virtuel (16).  Figure 7 illustrates the principles of modular software, and license management using the virtual keychain (16).

3.3.2 Le porte-clef Le porte-clef (16) est une structure logique qui stocke des informations sur les modules et les licences.  3.3.2 Keychain The keychain (16) is a logical structure that stores information about modules and licenses.

Cette structure contient des champs remplis avec les identifiants (19) des fonctions, des marqueurs (20) des licences accordées, les sous-clefs des licences (8) des modules, ainsi que les empreintes (21) des clefs primaires de chiffrage. Pour chaque fonctionnalité, les empreintes (21) des clefs primaires de chiffrage sont données par défaut. Les sous-clefs (8) des licences ne sont stockées que lorsque les licences correspondantes sont accordées. Pour les licences non acquises, le champ correspondant sera mis à une valeur par défaut. Lorsqu'une licence sera accordée, la valeur de la sous-clef (8) remplacera la valeur par défaut, et le marqueur (20) de licence sera positionné à OUI.  This structure contains fields filled with the identifiers (19) of the functions, the markers (20) of the licenses granted, the sub-keys of the licenses (8) of the modules, as well as the fingerprints (21) of the primary encryption keys. For each feature, the fingerprints (21) of the primary encryption keys are given by default. Subscription keys (8) are only stored when the corresponding licenses are granted. For unvested licenses, the corresponding field will be set to a default value. When a license is granted, the value of subkey (8) will replace the default value, and the license marker (20) will be set to YES.

La figure 8 est un exemple de structure de porte-clef (16). Le champ IDENTIFIANT de la fonction permet de stocker les identifiants (19) de la fonctionnalité/module. Le champ LICENCE permet de stocker le marqueur (20) de licence.  Fig. 8 is an example of a key holder structure (16). The IDENTIFIER field of the function makes it possible to store the identifiers (19) of the functionality / module. The LICENSE field is used to store the license tag (20).

SOUS-CLEF DE FONCTION est le champ permettant de garder la valeur des sous-clefs (8) qui vont permettre de retrouver la clef de chiffrage des modules correspondants. Enfin, le champ 2867868 13 CONDENSAT DE CLEF permet de stocker l'empreinte (21) de la clef secrète. Cette empreinte (21) permettra au programme principal de vérifier que la sous-clef est bien valide.    SUB-KEY OF FUNCTION is the field allowing to keep the value of the sub-keys (8) which will allow to find the key of encryption of the corresponding modules. Finally, the field 2867868 13 KEY CONDENSATE makes it possible to store the imprint (21) of the secret key. This footprint (21) will allow the main program to verify that the subkey is valid.

3.3.3 Extensions Quand l'utilisateur veut étendre les fonctionnalités (1) de son système (cad ajouter des fonctionnalités), il a besoin de la sousclef (8) personnalisée pour débloquer les fonctions correspondantes. Puisque les fichiers binaires (1) sont déjà stockés sur le système, on a besoin de très peu de transferts de données.  3.3.3 Extensions When the user wants to extend the functionalities (1) of his system (ie add functionalities), he needs the custom sub-element (8) to unblock the corresponding functions. Since binary files (1) are already stored on the system, very little data transfer is needed.

Les sous-clefs (8) sont générées par le fournisseur (à partir de la clef de chiffrage (7) et de l'identifiant unique (9) de l'utilisateur, et éventuellement les identifiants des modules), et transmises à l'utilisateur. L'utilisateur entre les sous-clefs (8) en spécifiant les fonctionnalités (1) qu'il veut débloquer. Une fois ces informations confirmées, le programme principal génère une clef de déchiffrage (7) pour chacune des sous-clefs (8). Une empreinte sera extraite de chacune de ces clefs (26), pour être comparée aux empreintes stockée (21) dans le porte-clef afin de vérifier la validité des clefs de déblocage (8).  The subkeys (8) are generated by the provider (from the encryption key (7) and the unique identifier (9) of the user, and possibly the identifiers of the modules), and transmitted to the user. The user enters the sub-keys (8) by specifying the functionalities (1) that he wants to unlock. Once this information is confirmed, the main program generates a decryption key (7) for each of the subkeys (8). An impression will be extracted from each of these keys (26), to be compared to stored fingerprints (21) in the key holder to verify the validity of the unlocking keys (8).

Une fois les clefs (7) validées, le porte-clef (16) sera mis à jour. Les marqueurs (20) correspondants aux fonctionnalités (1) seront mis à OUI. Les modules seront alors déchiffrés et démarrés.  Once the keys (7) validated, the key holder (16) will be updated. The markers (20) corresponding to the functionalities (1) will be set to YES. The modules will then be decrypted and started.

3.3.4 Mise à jour (patchs) Quand le binaire (34) devra être mis à jour, les différences entre les anciens binaires et les nouveaux binaires seront envoyés, ou disponibles en téléchargement. Les données incluent les modifications à apporter aux versions cryptées des binaires des fonctionnalités à mettre à jour, ainsi que les informations pour la vérification de l'intégrité.  3.3.4 Update (patches) When the binary (34) will have to be updated, the differences between the old binaries and the new binaries will be sent, or available for download. The data includes changes to the encrypted versions of the feature binaries to be updated, as well as the information for the integrity check.

4. Implémentations Nous donnons ici des exemples concrets d'implémentations pour le système décrit précédemment. Nous traiterons des cas de mise en oeuvre du système global, ainsi que de l'implémentation des fonctions de base.  4. Implementations Here we give concrete examples of implementations for the system described above. We will deal with the cases of implementation of the global system, as well as the implementation of the basic functions.

4.1 Identifiant physique Nous distinguerons deux principaux types d'identifiant physique (9): 10 Identifiant relatif à une machine (typiquement un ordinateur) : c'est le plus aisé à mettre en oeuvre car il ne nécessite pas de matériel propriétaire - Identifiant relatif à un utilisateur: ce système est plus flexible et doit permettre à un client d'utiliser un produit licencié sur 15 différentes machines mais pas simultanément.  4.1 Physical identifier We will distinguish two main types of physical identifier (9): 10 Identifier relating to a machine (typically a computer): it is the easiest to implement because it does not require any proprietary hardware - Identifier relating to a user: this system is more flexible and must allow a customer to use a licensed product on 15 different machines but not simultaneously.

4.1.1. Identifiant machine Un tel identifiant est un code unique non modifiable (numéros de série par exemple) implémenté sur un composant matériel. II doit être accessible par logiciel, en lecture seule, pour permettre la vérification automatique.  4.1.1. Machine ID Such an identifier is a unique non-modifiable code (eg serial numbers) implemented on a hardware component. It must be accessible by software, read-only, to enable automatic verification.

Techniquement le type d'implémentation matérielle a une grande importance: pour une meilleure fiabilité, le système devra utiliser un identifiant réellement non modifiable de type ROM ou PROM, plutôt que EPROM, EEPROM ou flash.  Technically the type of hardware implementation is of great importance: for better reliability, the system must use a truly unmodifiable identifier type ROM or PROM, rather than EPROM, EEPROM or flash.

Quelques exemples d'identifiant machine (plate-forme PC) : - Adresse physique de la carte réseau ( NIC number ) - Numéro de série du disque dur Identifiant du microprocesseur 4.1.2. Identifiant utilisateur Ce type d'identifiant sera lié à un utilisateur et non à une machine. Pour une sécurité optimale, il pourra tout de même s'agir d'un code matériel, mais qui devra être portable pour permettre à l'utilisateur de s'identifier sur plusieurs systèmes distincts.  Some examples of machine identifier (PC platform): - Physical address of the network card (NIC number) - Serial number of the hard disk Identifier of the microprocessor 4.1.2. User ID This type of identifier will be linked to a user and not to a machine. For optimal security, it may still be a hardware code, but must be portable to allow the user to identify themselves on several separate systems.

Quelques exemples d'identifiant utilisateur: - Dongle propriétaire: par exemple PROM + interface (USB, COM, LPT...) Carte à puce ou carte magnétique Numéro de série du produit 4.2. Implémentation des fonctions 2867868 15 4.2.1. Fonctions de cryptage / décryptage Les fonctions de cryptage (6) C et de décryptage (13) D peuvent être implémentées au moyen de n'importe quel algorithme de chiffrement récent (et sûr).  Some examples of user identifier: - Dongle owner: for example PROM + interface (USB, COM, LPT ...) Smart card or magnetic card Product serial number 4.2. Implementing Functions 2867868 15 4.2.1. Encryption / decryption functions Encryption (6) C and decryption (13) D functions can be implemented using any recent (and secure) encryption algorithm.

Dans la description générale du système, on utilise la même clef (7) pour le chiffrement et le déchiffrement, on sous-entend donc que l'algorithme est symétrique (de type DES, triple DES, AES ou RC4 par exemple). Cela ne constitue en aucune façon une contrainte du système, qui peut être implémenté avec un chiffrement asymétrique lo (type RSA par exemple), pour peu que l'on génère au départ une paire appropriée de clefs, K0 et KD.  In the general description of the system, we use the same key (7) for encryption and decryption, it implies that the algorithm is symmetrical (type DES, triple DES, AES or RC4 for example). This does not constitute in any way a constraint of the system, which can be implemented with asymmetric encryption lo (RSA type for example), provided that an appropriate pair of keys, K0 and KD, are initially generated.

4.2.2. Fonction de génération de clefs L'implémentation exacte de ces fonctions sera évidemment dépendant du choix des fonctions de cryptage / décryptage, car le format d'une clef dépend de l'algorithme utilisé.  4.2.2. Key Generation Function The exact implementation of these functions will obviously depend on the choice of encryption / decryption functions, because the format of a key depends on the algorithm used.

- La fonction i (11), utilisée pour générer KP (10), a pour seule 20 contrainte d'être surjective. Il pourra donc s'agir d'une simple opération de changement de taille (complétion / padding ou troncature) .  The function i (11), used to generate KP (10), has the sole constraint of being surjective. It can therefore be a simple change of size operation (completion / padding or truncation).

- Les fonctions f (12), utilisée pour retrouver K (7), et g (35), utilisée pour générer KE (8), peuvent être très simplement implémentées au 25 moyen d'opérateurs XOR ( ou exclusif ) : ^ K est posé ^ Si KE = KP XOR K Alors K = KP XOR KE Une solution plus sure consiste à utiliser pour f et g un algorithme de chiffrement symétrique du type DES ou AES, avec KP (10) comme 30 clef: ^ K est posé ^ Si KE = DESKP (K) Alors K = DESKP (KE) (N'importe quel chiffreur / déchiffreur symétrique pourra être utilisé.) - La fonction h (15), utilisée pour générer K' (7), sera typiquement implémentée en deux étapes: une concaténation de K (14) et KP (10) avec possible adaptation de la taille finale par troncature ou complétion), puis un hachage (15) du résultat.  The functions f (12), used to find K (7), and g (35), used to generate KE (8), can be very simply implemented by means of operators XOR (or exclusive): asked ^ If KE = KP XOR K Then K = KP XOR KE A safer solution is to use for f and g a symmetric encryption algorithm of the DES or AES type, with KP (10) as key: ^ K is set ^ If KE = DESKP (K) Then K = DESKP (KE) (Any symmetric encryptor / decryptor can be used.) - The function h (15), used to generate K '(7), will typically be implemented in two steps: a concatenation of K (14) and KP (10) with possible adaptation of the final size by truncation or completion), then a hashing (15) of the result.

La fonction de hachage (15) pourra être un algorithme standard 40 comme MD5, ou SHA-1 (ce dernier étant plus sur) : ^ K=SHA-1 (KKp) 4.3. Cas d'implémentation du système global Nous présentons ici quatre exemples détaillés d'utilisation du 5 système décrit précédemment. 4.3.1. Extension de fonctionnalités sur plate forme propriétaire lo Ce cas  The hash function (15) may be a standard algorithm 40 such as MD5, or SHA-1 (the latter being more secure): KK = SHA-1 (KKp) 4.3. Global system implementation case We present here four detailed examples of the use of the system described above. 4.3.1. Extension of features on proprietary lo platform This case

d'implémentation décrit un système propriétaire (23), plate-forme matérielle et logiciel embarqué par exemple, utilisant une architecture logicielle modulaire (voir section 3.3.) : le fournisseur livre le système (23) avec les fonctions de base activées, et un certain nombre p de fonctions avancées seront disponibles pour une activation ultérieure à l'aide de clefs spécifiques.  implementation describes a proprietary system (23), hardware platform and embedded software for example, using a modular software architecture (see section 3.3.): the supplier delivers the system (23) with the basic functions enabled, and a p number of advanced functions will be available for later activation using specific keys.

A chacune des fonctionnalités optionnelles est associée une clef KF qui servira de base pour la génération des clefs personnalisées (10), en fonctions des machines et / ou des utilisateurs.  Each of the optional functionalities is associated with a key KF which will serve as a basis for the generation of the personalized keys (10), in function of the machines and / or the users.

La méthode de gestion des clefs utilisée ici est celle décrite en 20 section 3.2.  The key management method used here is that described in section 3.2.

Nous utiliserons ici une plate-forme matérielle de type PC, avec l'adresse physique de l'interface réseau (NIC number) comme identifiant physique (9) IDP1 et IDP2.  We will use here a hardware platform of type PC, with the physical address of the network interface (NIC number) as physical identifier (9) IDP1 and IDP2.

La figure 9. illustre le procédé d'installation pour le logiciel 25 embarqué, cette installation étant totalement maîtrisée par le fournisseur.  Figure 9. illustrates the installation method for the embedded software, this installation being totally controlled by the supplier.

Le CD d'installation contient: ^ Les fichiers binaires du programme principal (18) en clair ^ Les fichiers binaires des fonctionnalités optionnelles en 30 clair (34) ^ Les clefs de bases associées aux p fonctionnalités optionnelles (14) KF1, KF2É É É É KFPÉ ^ Un logiciel d'installation dédié comprenant un générateur de clefs, un module de chiffrage (ici AES) et l'installation 35 proprement dite.  The installation CD contains: ^ Binary files of the main program (18) in plain text ^ The optional feature files in clear (34) ^ The basic keys associated with p optional features (14) KF1, KF2É É É É KFPÉ ^ A dedicated installation software comprising a key generator, an encryption module (here AES) and the installation 35 itself.

Nous utiliseront ici pour le chiffrage l'algorithme AES, avec des clefs de 256 bits. Le programme d'installation est exécuté à partir du CD. Une fois lancé, il va recherché l'adresse physique de l'interface réseau (9) de la machine cible, et générer les clefs de cryptages personnalisées (10) .  We will use here for the encryption the algorithm AES, with keys of 256 bits. The installer is run from the CD. Once launched, it will search the physical address of the network interface (9) of the target machine, and generate the custom encryption keys (10).

La figure 10. illustre le fonctionnement du programme d'installation: on utilise pour générer les clefs de chiffrement une triple fonction (fonction h, voir sections 3.4. et 4.2.) : concaténation de la clef de base KF (25) et de l'identifiant physique (NIC number) (9) Hachage par l'algorithme SHA-1 Complétion à 256 bits (l'empreinte générée par SHA-1 est de 160 bits, la complétion à 256 pourra se faire en répétant partiellement le motif) Pour chaque fonctionnalité optionnelle, une clef (7) sera donc générée (chacune de ces clefs sera spécifiques à la fonction et à la machine) et les fichiers binaires (34) correspondants seront cryptés et copiés sur le disque dur de la machine cible. Les fichiers binaires du programme principal (18) sont installés directement sans cryptage.  Figure 10. illustrates the operation of the installation program: a triple function is used to generate the encryption keys (function h, see sections 3.4 and 4.2): concatenation of the basic key KF (25) and the 'physical identifier (NIC number) (9) Hashing by SHA-1 256-bit completion (the SHA-1 generated fingerprint is 160 bits, the completion at 256 can be done by partially repeating the pattern) each optional feature, a key (7) will be generated (each of these keys will be specific to the function and the machine) and the corresponding binary files (34) will be encrypted and copied to the hard disk of the target machine. The binary files of the main program (18) are installed directly without encryption.

Afin de gérer l'activation séparée des différents modules, un porte-clefs virtuel (16) (voir section 3.3.) est implémenté sur la machine cible. Il stocke pour chaque fonctionnalité activée une sous-clef (8) relative à la fonction et à la machine. II stocke également une empreinte (21) ( hash code ) de la clef de chiffrement pour chaque fonctionnalité (active ou non). Un flag (8) indique pour chaque fonctionnalité si elle est activée ou non.  In order to manage the separate activation of the different modules, a virtual key ring (16) (see section 3.3.) Is implemented on the target machine. It stores for each activated feature a subkey (8) relating to the function and the machine. It also stores a fingerprint (21) (hash code) of the encryption key for each feature (active or not). A flag (8) indicates for each functionality if it is activated or not.

La figure 11. illustre la structure du porte-clefs virtuel.  Figure 11. illustrates the structure of the virtual key ring.

Chaque sous-clef (8) KE est générée de la manière suivante: - Une sous-clef (10) K'F de 32 octets (256 bits) est générée à partir des 6 octets du numéro NIC (9).  Each subkey (8) KE is generated as follows: A subkey (10) K'F of 32 bytes (256 bits) is generated from the 6 bytes of the NIC number (9).

La sous-clef KE (8) est alors générée par un cryptage AES de la clef KIF; (7) correspondante, avec KIF (10) comme clef de chiffrement.  The subkey KE (8) is then generated by AES encryption of the key KIF; (7) corresponding, with KIF (10) as encryption key.

La figure 12. illustre la génération de la sous-clef (10) K'P à partir de l'adresse physique de l'interface réseau (9) (numéro NIC). Cette génération se fait par une simple répétition de motif.  Figure 12 illustrates the generation of the subkey (10) K'P from the physical address of the network interface (9) (NIC number). This generation is done by a simple pattern repetition.

La figure 13. illustre la génération de la sous-clef KE (8) à partir de K'Fj (7) et K'P (10). Cette génération se fait par chiffrement AES.  Figure 13 illustrates the generation of the key subkey KE (8) from K'Fj (7) and K'P (10). This generation is done by AES encryption.

2867868 18 Le système est livré avec toutes les fonctionnalités disponibles mais seules celles choisies par le client sont activées. Quand l'utilisateur exécute une fonction active, le lanceur utilise la sous-clef KE (8) stockée dans le porte-clef (16) pour retrouver la clef KF (7) correspondante (K'Fi = AESDecrypt(Kip)(K'Ej) ) et décrypte les fichiers binaires (1) en mémoire (5) pour les exécuter.  2867868 18 The system comes with all the features available but only those chosen by the customer are enabled. When the user executes an active function, the launcher uses the subkey KE (8) stored in the keychain (16) to find the corresponding key KF (7) (K'Fi = AESDecrypt (Kip) (K ') Ej)) and decrypts the binary files (1) in memory (5) to execute them.

Quand l'utilisateur souhaite activer une nouvelle fonctionnalité, le fournisseur lui envoie la sous-clef KE (8) correspondante (par téléphone, courrier, e-mail... etc.). Cette sous-clef (8) est saisie manuellement par l'utilisateur sur le système, qui va vérifier sa validité à l'aide de l'empreinte (21) stockée dans le porte-clef (16)(le logiciel vérifie que SHA1(AESDecrypt(Kip)(K'Ei)) = empreinte stockée). Si la sous-clef KE (8) est valide, elle est ajoutée au porte-clef (16) et le flag d'activation (20) de la fonction correspondante est affirmé.  When the user wishes to activate a new feature, the provider sends him the corresponding KE (8) subkey (by phone, mail, e-mail ... etc.). This subkey (8) is entered manually by the user on the system, which will verify its validity using the imprint (21) stored in the key holder (16) (the software checks that SHA1 ( AESDecrypt (Kip) (K'Ei)) = stored fingerprint). If the subkey KE (8) is valid, it is added to the keychain (16) and the activation flag (20) of the corresponding function is asserted.

La transmission de la sous-clef KE (8) ne pose pas de problème et ne nécessite pas de sécurité particulière, car la sous-clef (8) est spécifique au système et ne pourra être exploitée par aucun autre utilisateur.  The transmission of the subkey KE (8) poses no problem and does not require any particular security, because the subkey (8) is system-specific and can not be exploited by any other user.

Si un module (1) est déchiffré avec une clef incorrecte, il ne pourra naturellement pas être utilisé. La vérification de validité de KE (8) sert donc plus a prévenir les erreurs de saisies qu'à éviter le piratage.  If a module (1) is decrypted with an incorrect key, it can not be used naturally. The validity check of KE (8) thus serves more to prevent seizure errors than to avoid hacking.

La figure 14. illustre le système de récupération de la clef de chiffrement K'Fi (7) et le déchiffrage du module correspondant.  Figure 14. illustrates the system of recovery of the encryption key K'Fi (7) and decryption of the corresponding module.

La figure 15. illustre le système de vérification de la validité de la sous-clef KE (8).  Figure 15. illustrates the verification system of the validity of the subkey KE (8).

4.3.2. Serveur sécurisé d'installation de logiciel L'objet de cette implémentation est de fournir une forte protection contre le piratage, pour les logiciels téléchargeables sur le réseau (typiquement sur Internet) : le serveur sécurisé d'installation à distance (31) permet au fournisseur de fournir à chaque client une version cryptée spécifiquement selon la méthode décrite en section 3.2.  4.3.2. Secure Software Installation Server The purpose of this implementation is to provide strong protection against hacking, for downloadable software on the network (typically over the Internet): the secure remote installation server (31) allows the provider provide each client with an encrypted version specifically according to the method described in section 3.2.

Un boîtier dédié de type appliance (29) pourra être utilisé entre le serveur (31) et les clients (27) pour sécuriser les serveurs d'installation pré-existants.  A dedicated appliance-type box (29) may be used between the server (31) and the clients (27) to secure the pre-existing installation servers.

La figure 16. illustre le principe du boîtier de sécurisation (29) intercalé en aval du serveur (31).  Figure 16. illustrates the principle of the security box (29) inserted downstream of the server (31).

Une clef de base K (17) est associée à chaque logiciel téléchargeable. Quand un client demande l'installation d'un logiciel il reçoit un programme de téléchargement / installation dédié. Ce programme va télécharger les fichiers nécessaires et les installer sur le système client. Une fois lancé, il va récupérer le ou les identifiants spécifiques à la machine et / ou à l'utilisateur (9) (IDP1 et IDP2) et les envoyer à l'appliance (29) (transaction sécurisée, SSL par exemple) qui les utilise pour la génération de clefs: l'appliance calcule K' (7) à partir de K (14) et IDP, (9) (fonction h 15), puis génère la sous-clef de transmission KE (8) à partir de K' (7) et IDP2 (9) (fonction g 12) et la transmet à la machine cliente (27). Une requête (28) est alors envoyée a I 'appliance pour l'installation effective du logiciel. Le serveur va envoyer les fichiers en clair (34) à l'appliance (29) qui va les crypter dynamiquement (clef K' (7), algorithme AES) pour les transmettre à la machine cliente (27) ou le logiciel crypté est finalement installé.  A basic key K (17) is associated with each downloadable software. When a client requests the installation of a software it receives a dedicated download / installation program. This program will download the necessary files and install them on the client system. Once launched, it will retrieve the identifier (s) specific to the machine and / or the user (9) (IDP1 and IDP2) and send them to the appliance (29) (secure transaction, SSL for example) which uses for key generation: the appliance calculates K '(7) from K (14) and IDP, (9) (function h 15), then generates the transmission subkey KE (8) from K '(7) and IDP2 (9) (function g 12) and transmits it to the client machine (27). A request (28) is then sent to the appliance for the actual installation of the software. The server will send the plaintext files (34) to the appliance (29) which will encrypt them dynamically (K 'key (7), AES algorithm) to transmit them to the client machine (27) where the encrypted software is finally installed.

Quand le client utilise le logiciel, le lanceur utilise KE (8) et IDP2 (9) pour retrouver K' (7) dont il se sert pour déchiffrer à la volée les fichiers (1) nécessaires à l'exécution. La machine cliente ne stocke ni ne calcule jamais K (14) car les fichiers (1) sont décryptés avec K' (7). K' (7) est spécifique à IDp (9) et ne pourra donc pas être utilisé sur un autre système. De la même manière, KE (8) est spécifique à IDPi (9) et IDP2 (9).  When the client uses the software, the launcher uses KE (8) and IDP2 (9) to find K '(7) which he uses to decipher on the fly the files (1) necessary for execution. The client machine does not store or calculate K (14) because the files (1) are decrypted with K '(7). K '(7) is specific to IDp (9) and therefore can not be used on another system. In the same way, KE (8) is specific to IDPi (9) and IDP2 (9).

4.3.3. Système hybride pour la diffusion de CDROM Nous prendrons comme exemple la diffusion de logiciel (pour PC par exemple) sur support CDROM (33) ou DVDROM (33). Le système décrit ci-après implémente une combinaison des deux méthodes de gestion de clefs (voir section 3.1. et 3. 2.).  4.3.3. Hybrid system for CDROM broadcasting We will take as an example the diffusion of software (for PC for example) on CDROM (33) or DVDROM (33) media. The system described below implements a combination of the two key management methods (see section 3.1 and 3. 2.).

Chaque CD (33) est produit à partir d'un master (22). Sur le CD 35 master (22), tous les fichiers (1) sont cryptés avec une clef KI (7), à l'exception du programme d'installation qui est stocké en clair.  Each CD (33) is produced from a master (22). On the CD 35 master (22), all the files (1) are encrypted with a KI key (7), with the exception of the installer which is stored in clear.

La figure 17. illustre la production des CD (33) de série à partir du master (22).  Figure 17. illustrates the production of serial CDs (33) from the master (22).

Certains fichiers indispensables (32) sont volontairement laissés absents du master. Ces fichiers seront fournis au client ultérieurement.  Some indispensable files (32) are deliberately left absent from the master. These files will be provided to the client later.

Une copie du CDROM est ensuite achetée par un client qui va installer le logiciel sur son ordinateur. Le programme d'installation va installer les versions cryptées des fichiers (1) sur le disque dur cible et demander à l'utilisateur de saisir le numéro de série du produit (typiquement, indiqué sur l'emballage) et éventuellement ses coordonnées personnelles (cette information constitue IDP2 9). Le programme d'installation va alors récupérer automatiquement l'identifiant physique de l'ordinateur (9) (typiquement, l'adresse physique de l'interface réseau) qui constitue IDp1 (9). Ces deux identifiants sont alors envoyés au serveur (31) du fournisseur (typiquement, l'éditeur du logiciel) par transmission sécurisée (typiquement, SSL). Le serveur va alors calculer une clef personnalisée K'2 (7), à partir de IDpi (9) et de K2 (14) (clef secrète, qui ne quitte jamais le serveur). Les fichiers manquant (32) sur le CD sont alors cryptés avec K'2 (7) et envoyés au client. Le serveur (29) va alors générer les sous-clefs de transmission KE1 (8) et KE2 (8) (à partir de IDP2 (9), KI (14) et K2 (14)) et les transmettre au client. Ces transferts peuvent être fait par transaction sécurisée, mais en pratique la transmission sécurisées de IDpl (9) et IDP2 (9) est suffisante.  A copy of the CDROM is then purchased by a client who will install the software on his computer. The installer will install the encrypted versions of the files (1) on the target hard drive and ask the user to enter the serial number of the product (typically, indicated on the package) and possibly his personal details (this information constitutes IDP2 9). The installation program will then automatically recover the physical identifier of the computer (9) (typically the physical address of the network interface) which constitutes IDp1 (9). These two identifiers are then sent to the server (31) of the provider (typically, the software publisher) by secure transmission (typically, SSL). The server will then calculate a custom key K'2 (7), from IDpi (9) and K2 (14) (secret key, which never leaves the server). Missing files (32) on the CD are then encrypted with K'2 (7) and sent to the client. The server (29) will then generate the transmission subkeys KE1 (8) and KE2 (8) (from IDP2 (9), KI (14) and K2 (14)) and transmit them to the client. These transfers can be done by secure transaction, but in practice the secure transmission of IDpl (9) and IDP2 (9) is sufficient.

La figure 18. illustre la génération de K'2 et KE2. La figure 19. illustre la génération de KE1.  Figure 18. illustrates the generation of K'2 and KE2. Figure 19. illustrates the generation of KE1.

KE1 (7) et KE2 (7) et IDP2 (9) sont stockés sur la machine cliente (27). Lorsque le client utilise le logiciel, K, (7) et K'2 (7) sont recalculées dynamiquement: KI (7) est généré à partir de KE1 (8) et IDP2 (9). K'2 (7) est généré à partir de KE2 (8) et IDP2 (9). Les fichiers courants sont alors décryptés avec KI (7), et les fichiers spéciaux (ceux qui sont manquant sur le CD) sont décryptés avec K'2 (7). Aucun fichier n'est stocké en clair sur le disque dur (2) : ils sont tous décryptés dynamiquement en mémoire (5) pour être exécutés.  KE1 (7) and KE2 (7) and IDP2 (9) are stored on the client machine (27). When the client uses the software, K, (7) and K'2 (7) are dynamically recalculated: KI (7) is generated from KE1 (8) and IDP2 (9). K'2 (7) is generated from KE2 (8) and IDP2 (9). The current files are then decrypted with KI (7), and special files (those that are missing on the CD) are decrypted with K'2 (7). No file is stored in clear on the hard disk (2): they are all dynamically decrypted in memory (5) to be executed.

Nous utilisons IDp1 (9) (ici identifiant machine) pour personnaliser la clef de chiffrage (7) et IDP2 (9) (ici identifiant utilisateur) pour personnaliser la clef de transmission (8). Cette méthode donne plus de souplesse au système: si l'identifiant machine vient à changer (remplacement de la carte réseau par exemple), le client pourra demander au fournisseur de re-générer les fichiers personnalisés et de les lui envoyer grâce à son identifiant client (qui lui n'a pas changé).  We use IDp1 (9) (here machine identifier) to customize the encryption key (7) and IDP2 (9) (here user ID) to customize the transmission key (8). This method gives more flexibility to the system: if the machine identifier changes (replacement of the network card for example), the customer can ask the provider to re-generate the personalized files and send them to him through his client ID (which has not changed him).

K, (7) et K2 (7) doivent être différents pour assurer une sécurité accrue du système: même si un pirate réussit à retrouver KI (7), il ne pourra jamais récupérer K2 (7), car seul K'2 (7) est calculé en local. Comme K'2 (7) est en fait le résultat d'une fonction de hachage (15), on ne pourra jamais remonter à K2 (14).  K, (7) and K2 (7) must be different to ensure an increased security of the system: even if a hacker succeeds in finding KI (7), he will never be able to recover K2 (7), because only K'2 (7) ) is calculated locally. Since K'2 (7) is in fact the result of a hash function (15), we can never go back to K2 (14).

4.3.4. Multimédia téléchargeable à la demande L'invention s'applique également à la protection des contenus multimédias téléchargeables, pour lecture sur ordinateurs personnels (PC, Mac...) ou sur lecteurs dédiés de type baladeur mp3.  4.3.4. Multimedia downloadable on demand The invention also applies to the protection of downloadable multimedia content, for reading on personal computers (PC, Mac ...) or dedicated players type mp3 player.

Quelles que soient les plate-forme(s) physiques différentes (PC, baladeurs MP3, platines de salon, autoradios...) sur lesquelles un utilisateur voudra lire un contenu multimédia, celles-ci doivent disposer d'un identifiant physique commun. Nous utiliserons ici une solution à base de carte SIM, portable et susceptible d'être reconnue sur tout type de plate-forme équipée du lecteur adéquat.  Whatever the different physical platforms (PC, MP3 players, turntables, car radios ...) on which a user will want to read a multimedia content, these must have a common physical identifier. We will use a SIM-based, portable solution that can be recognized on any type of platform equipped with the appropriate reader.

Les fichiers multimédias (musique, films...) sont téléchargés via Internet. Lorsqu'un utilisateur demande un fichier (34), celui-ci est crypté spécifiquement en fonction de son identifiant SIM (9) (méthode décrite en section 3.2.) : le serveur calcule une clef unique K' (7) à partir de l'identifiant SIM (9) du client et d'une clef de base secrète K (14) relative au fichier demandé. Le fichier (34) est chiffré avec K' (7) et une sous-clef de transmission KE (8) est calculée (à partir de K' (7) et de l'identifiant SIM (9)) et ajoutée à l'entête du fichier crypté (1). Une empreinte (21) (code de hachage) de K' (7) est également ajoutée à l'entête (l'entête contient en fait les même informations qu'une ligne du porte-clef virtuel (16) décrit en section 3.3.) Si le client se connecte pour la première fois au serveur (31), son identifiant SIM (9) est transmis vers le serveur (31) par transaction sécurisée (typiquement, SSL) .  Multimedia files (music, movies ...) are downloaded via the Internet. When a user requests a file (34), it is encrypted specifically according to its SIM identifier (9) (method described in section 3.2.): The server calculates a unique key K '(7) from l SIM identifier (9) of the client and a secret base key K (14) relating to the requested file. The file (34) is encrypted with K '(7) and a transmission subkey KE (8) is calculated (from K' (7) and the SIM identifier (9)) and added to the header of the encrypted file (1). A fingerprint (21) (hash code) of K '(7) is also added to the header (the header contains in fact the same information as a line of the virtual key-holder (16) described in section 3.3. ) If the client connects for the first time to the server (31), its SIM identifier (9) is transmitted to the server (31) by secure transaction (typically, SSL).

La figure 20. illustre la méthode de génération des clefs K' et KE.  Figure 20. illustrates the method of generating the keys K 'and KE.

Le fichier personnalisé (1) peut alors être envoyé au client (téléchargé, ou envoyé par courrier sur CD gravé en cas de grosse commande par exemple) . La clef de chiffrage K' (7) ne peut être retrouvée qu'à l'aide de l'identifiant SIM (9) du client: si le fichier (1) est intercepté par un pirate, il sera donc inutilisable.  The custom file (1) can then be sent to the client (downloaded, or sent by mail on CD engraved in case of big order for example). The encryption key K '(7) can be found only with the help of the SIM identifier (9) of the client: if the file (1) is intercepted by a hacker, it will be unusable.

Lorsque l'utilisateur utilise le fichier (1), le système de lecture va utiliser l'identifiant SIM (9) et la sous-clef KE (8) contenue dans l'entête pour retrouver K' (7) et décrypter le contenu dynamiquement. Une vérification de K' (7) est effectuée préalablement au décryptage, grâce à l'empreinte (21) contenue dans l'entête du fichier.  When the user uses the file (1), the reading system will use the identifier SIM (9) and the subkey KE (8) contained in the header to find K '(7) and decrypt the content dynamically . A verification of K '(7) is performed prior to decryption, thanks to the imprint (21) contained in the header of the file.

L'utilisation de la carte SIM (9) en tant qu'identifiant physique 5 permet la portabilité, et l'extension du système à tout type de lecteur multimédia (PC, baladeurs MP3, platines de salon, autoradios...).  The use of the SIM card (9) as physical identifier 5 allows the portability, and extension of the system to any type of media player (PC, MP3 players, turntables, car radios ...).

Comme indiqué précédemment, les fichiers personnalisés (1) ne seront exploitables que par l'utilisateur qui les aura commandés. Les fichiers eux-mêmes peuvent donc être envoyés sans protection supplémentaire. La seule nécessité est de protéger efficacement le transfert de l'identifiant SIM (9) lors de la première connexion d'un client.  As indicated above, the custom files (1) will be usable only by the user who ordered them. The files themselves can be sent without additional protection. The only need is to effectively protect the transfer of the SIM identifier (9) during the first connection of a client.

4.3.5. Protection de données sur disque dur L'invention s'applique à la protection des données stockées sur mémoire de masse: sur disque dur en particulier.  4.3.5. Data Protection on Hard Disk The invention applies to the protection of data stored on mass storage: on hard disk in particular.

Nous décrivons ici un système capable de protéger les données contenues sur un disque dur (41) et également de restreindre l'accès à l'ordinateur sur lequel le disque (41) est installé, en chiffrant de façon matérielle (indépendamment du système d'exploitation) les partitions de données et / ou de système.  Here we describe a system that can protect the data contained on a hard drive (41) and also restrict access to the computer on which the drive (41) is installed, by encrypting hardware (regardless of the system). exploitation) the data and / or system partitions.

En ce qui concerne la protection des données le système décrit ci-après pourra également s'appliquer aux graveurs de CDROM ou de DVDROM.  With regard to data protection, the system described below may also be applicable to CDROM or DVDROM recorders.

La figure 21. présente le principe de fonctionnement d'un tel système: une carte d'interface dédiée (42) est placée entre le disque dur à protéger (41) et le contrôleur disque (36) de la carte mère (40). Cette carte (42) est reliée à un lecteur de cartes à puce (43) qui va servir à l'authentification de l'utilisateur. Lorsque l'utilisateur est authentifié, les commandes de lecture I écriture entre le disque (41) et le contrôleur (36) sont interceptées par la carte (42) qui va crypter les données vers le disque (41) et décrypter les données vers le contrôleur (36). Ce système permet d'assurer une grande sécurité dans la protection des données tout en s'affranchissant des contraintes liées au système d'exploitation.  Figure 21. shows the principle of operation of such a system: a dedicated interface board (42) is placed between the hard disk to protect (41) and the disk controller (36) of the motherboard (40). This card (42) is connected to a smart card reader (43) which will be used to authenticate the user. When the user is authenticated, the read I write commands between the disk (41) and the controller (36) are intercepted by the card (42) which will encrypt the data to the disk (41) and decrypt the data to the disk. controller (36). This system makes it possible to ensure a high level of security in the data protection while freeing itself from the constraints related to the operating system.

Ce système va exploiter la méthode de gestion de clefs personnalisées décrite en section 3.2. La carte de cryptage (42) est identifiée par un numéro matériel unique (46), non falsifiable et non accessible de l'extérieur. Une clef K unique (14) est obtenue en 2867868 23 combinant ce numéro avec le numéro de série (47) du disque dur à protéger (41). Une clef physique Kp (10) est d'autre part générée à partir des informations secrètes (48) contenues sur la carte à puce (39). Pour protéger le disque (41), une clef de chiffrage personnalisée K' (7) va être générée à partir de K (14) et de Kp (10) grâce à a fonction h (15). Une sous-clef de stockage KE (8) sera alors générée par la fonction g (35) à partir de K' et Kp. D'autres sous-clefs de stockage (8) pourront être générée pour une même clef de chiffrage (7), afin de permettre l'utilisation du système avec d'autres cartes à puce (pour autoriser plusieurs utilisateurs par exemple). Les données seront cryptées et décryptées avec K' (7), mais seules les sous-clefs de stockage KE (8) seront conservées sur le système. Pour chiffrer ou déchiffrer les données, la clef de chiffrage K' sera générée dynamiquement à partir d'une clef KE (8) et de la carte à puce (39) correspondante avec la fonction f (12).  This system will exploit the custom key management method described in section 3.2. The encryption card (42) is identified by a unique hardware number (46), not falsifiable and not accessible from the outside. A single key K (14) is obtained by combining this number with the serial number (47) of the hard disk to be protected (41). A physical key Kp (10) is, on the other hand, generated from the secret information (48) contained on the smart card (39). To protect the disk (41), a custom encryption key K '(7) will be generated from K (14) and Kp (10) by means of a function h (15). A storage subkey KE (8) will then be generated by the function g (35) from K 'and Kp. Other storage subkeys (8) can be generated for the same encryption key (7), to allow the use of the system with other smart cards (to allow multiple users for example). The data will be encrypted and decrypted with K '(7), but only KE (8) storage subkeys will be kept on the system. To encrypt or decrypt the data, the encryption key K 'will be generated dynamically from a key KE (8) and the corresponding smart card (39) with the function f (12).

La figure 22. illustre le système de génération de clefs décrit ci-avant.  Figure 22. illustrates the key generation system described above.

La figure 23. illustre le procédé de génération dynamique de la clef K' (7) à partir d'une sous-clef KE (8) et de la carte à puce (39) 20 correspondante.  Fig. 23. illustrates the method of dynamically generating the key K '(7) from a subkey KE (8) and the corresponding smart card (39).

Les sous-clefs de stockage KE (8) seront stockées dans une mémoire effaçable (44) de type EEPROM ou flash. Pour permettre à un utilisateur de transporter un disque et de l'utiliser sur un autre système, avec la carte a puce appropriée, cette mémoire (44) sera physiquement située entre le disque dur (41) et le connecteur (45) et sera transportée avec le disque dur. Dans le cas d'un disque monté en rack, cette mémoire (44) sera physiquement située dans le tiroir. En plus des sous-clefs de stockage KE (8) cette mémoire contiendra l' empreinte (21) de la clef de chiffrage K' (7) selon le principe de porte clef (16) décrit en section 3. 3.2. Cette empreinte permettra de vérifier la validité de la clef avant d'effectuer un chiffrage ou un déchiffrage.  The storage subkeys KE (8) will be stored in an erasable memory (44) of the EEPROM or flash type. To allow a user to transport a disk and use it on another system, with the appropriate smart card, this memory (44) will be physically located between the hard disk (41) and the connector (45) and will be transported with the hard disk. In the case of a rack-mounted disk, this memory (44) will be physically located in the drawer. In addition to the storage subkeys KE (8) this memory will contain the fingerprint (21) of the encryption key K '(7) according to the key ring principle (16) described in section 3. 3.2. This fingerprint will verify the validity of the key before performing encryption or decryption.

La figure 24 présente la disposition physique de la mémoire de stockage des KE.  Figure 24 shows the physical layout of the KE storage memory.

Le système sera capable de décoder la table des partitions du disque de manière à crypter indépendamment chaque partition. Dans le cas d'un système multi utilisateurs, chaque utilisateur dispose de sa propre carte à puce et un système de droits affectera indépendamment les droits de lecture et/ou écriture pour chaque couple partition utilisateur.  The system will be able to decode the partition table of the disk so that each partition is encrypted independently. In the case of a multi-user system, each user has his own smart card and a rights system will independently affect the read and / or write rights for each user partition pair.

2867868 24 Le système peut être installé sur un disque vierge, ou sur un disque contenant déjà des informations. Dans le second cas, une procédure spéciale permettra de chiffrer automatiquement tout le contenu du disque (41).  2867868 24 The system can be installed on a blank disc, or on a disc already containing information. In the second case, a special procedure will automatically encrypt the entire contents of the disc (41).

La figure 25 illustre ce principe.Figure 25 illustrates this principle.

De la même manière, un disque déjà protégé pourra être dé-protégé .  In the same way, an already protected disc can be de-protected.

La figure 26 illustre ce principe. la  Figure 26 illustrates this principle. the

Dans le cas ou plusieurs disques durs (1) doivent être protégé, un dispositif de type concentrateur (37) permettra d'utiliser plusieurs cartes d'interface avec un seul lecteur de cartes à puce (43). Chaque disque dur (41) est relié au contrôleur (36) via une carte d'interface différente (42). Chaque carte d'interface (42) est reliée au concentrateur (37) qui communique avec le lecteur (43).  In the case where a plurality of hard disks (1) are to be protected, a concentrator type device (37) will make it possible to use a plurality of interface cards with a single smart card reader (43). Each hard disk (41) is connected to the controller (36) via a different interface card (42). Each interface card (42) is connected to the concentrator (37) which communicates with the reader (43).

La figure 27 illustre un système utilisant plusieurs disques durs (41) et un concentrateur (37).  Figure 27 illustrates a system using multiple hard disks (41) and a hub (37).

ANNEXE 1. Table des symboles Cette table ne présente que les fonctions utilisées et les contraintes qui leur sont associées. Pour les implémentations, voir la section 4.).  APPENDIX 1. Symbol Table This table only shows the functions used and the constraints associated with them. For implementations, see section 4.).

Symboles Description Pré requis pour  Symbols Description Prerequisites for

l'implémentation C Fonction de chiffrage V x, DK(CK(x)) = x D Fonction de déchiffrage K Clef primaire de chiffrage/déchiffrage IDp Identifiant physique (relative à la i(lDp) = Kp machine ou au client) SI IDp, IDp2 ALORS i(lDp1) I(IDP2) Kp Clef relative à l'identifiant physique (directement lié à IDp) 1 Fonction générant Kp KE Clef fournie au client (relative à K SI KE = g(Kp,K) ALORS et à Kp) K = f(Kp, KE) (sous-clef de transmission) ^ K ne peut pas être retrouvé sauf si KE ET Kp sont connues G Fonction générant KE f Fonction de recomposition de K K' Clef de chiffrage/déchiffrage K' = h(K,Kp) personnalisée (relative à SI Km KP2ALORS l'identifiant physique) ^ P(h(K, Kp) _ h(K,Kp)) 0 (P: Probabilité) ^ K ne peut pas être retrouvée à partir de h, K' et de Kp h Fonction générant K' BFp Version en clair des fichiers - binaires BFc Version chiffrés des fichiers - binaires ECp Code binaire décrypté -  implementation C Encryption function V x, DK (CK (x)) = x D Decryption function K Primary key for encryption / decryption IDp Physical identifier (relative to the i (lDp) = Kp machine or client) IF IDp , IDp2 THEN i (lDp1) I (IDP2) Kp Key relative to the physical identifier (directly linked to IDp) 1 Function generating Kp KE Key supplied to the client (relative to K SI KE = g (Kp, K) THEN and to Kp) K = f (Kp, KE) (transmission subkey) ^ K can not be found unless KE and Kp are known G Function generating KE f KK recompiling function 'Encryption / decryption key K' = h (K, Kp) custom (relative to SI Km KP2ALORS the physical identifier) ^ P (h (K, Kp) _ h (K, Kp)) 0 (P: Probability) ^ K can not be traced from of h, K 'and Kp h Function generating K' BFp Clear version of the files - BFc binaries Encrypted version of the files - ECp binaries Decrypted binary code -

Claims (1)

5. Revendications5. Claims (1) Procédé de protection par cryptage de logiciels et de données, diffusés via un réseau ou un support de stockage, caractérisé par les étapes suivantes: - La génération d'une clef de chiffrage secrète K (7) destinée au cryptage des programmes ou données à protéger - Le cryptage des programmes ou logiciels à protéger au moyen d'un algorithme de chiffrage (6) et de la clef K (7) - Le stockage chez chaque utilisateur des versions cryptées des programmes ou données et de ces version uniquement - La génération d'une sous-clef KQ (10) relative à un utilisateur et/ou à un système - La génération, au moyen d'une fonction g (35), d'une sous-clef KE (8) dépendant de K (7) et Kp (10) - La récupération dynamique à chaque utilisation des programmes ou données, au moyen d'une fonction f (12), de la clef K (7) à partir des sous-clefs KE (8) et KP (10) - Le déchiffrage dynamique en mémoire, à chacune de leur utilisation, des programmes ou données protégées, au moyen d'un algorithme de déchiffrage (13) et de la clef K (7) (2) Procédé selon la revendication 1 caractérisé en ce qu'il consiste à : - Générer pour chaque utilisateur et/ou système une clef de chiffrage K' (7) personnalisée dépendant d'une clef secrète K (14) fixée et d'une sous- clef Kp (10) relative à l'utilisateur et/ou au système, cette génération s'effectuant au moyen d'une fonction non réversible Utiliser la clef K' (7) pour le chiffrage des programmes ou données à protéger avant de les fournir à l'utilisateur ou au système correspondant à la sous-clef Kp (3) Application d'un procédé selon l'une des revendications précédentes à la protection et à la gestion des droits d'utilisation de fonctionnalités logicielles cryptées (1) activables à la demande en envoyant à un utilisateur des sous-clefs KE (8) spécifiques à l'utilisateur et/ou à une machine.  (1) A method of protection by encryption of software and data, broadcast via a network or a storage medium, characterized by the following steps: - The generation of a secret encryption key K (7) intended for the encryption of programs or data to be protected - The encryption of the programs or software to be protected by means of an encryption algorithm (6) and the K key (7) - The storage at each user of the encrypted versions of the programs or data and of these versions only - The generation of a subkey KQ (10) relating to a user and / or a system - The generation, by means of a function g (35), of a subkey KE (8) depending on K (7) and Kp (10) - The dynamic recovery with each use of the programs or data, by means of a function f (12), of the key K (7) from the subkeys KE (8) and KP (10) - The dynamic deciphering in memory, at each of their use, of the protected programs or data, at the The method of claim 1, characterized in that it consists of: generating, for each user and / or system, an encryption key K '(1), a key for decryption (13) and the key K (7); (7) dependent on a secret key K (14) fixed and a subkey Kp (10) relative to the user and / or the system, this generation being effected by means of a non-reversible function Use the key K '(7) for the encryption of the programs or data to be protected before providing them to the user or the system corresponding to the subkey Kp (3) Application of a method according to one of the preceding claims the protection and management of the rights of use of on-demand encrypted software functionalities (1) by sending KE (8) specific sub-keys to the user and / or a machine to a user. (4) Application d'un procédé selon l'une des revendications s précédentes à la protection de logiciels embarqués ou à la gestion de licences sur des systèmes ou plates-formes matérielles propriétaires (5) Application d'un procédé selon l'une des revendications 1 à l0 2 au téléchargement de contenus sécurisés (31) à partir d'une infrastructure serveur ou de boîtiers réseaux de sécurisation de contenus (29), vers une machine cliente (27), les logiciels ou données étant cryptés de façon personnalisée pour une machine et/ou un utilisateur (6) Application d'un procédé selon l'une des revendications précédentes à la diffusion de contenus multimédias, avec une identification d'un utilisateur ou d'une machine cliente par un système d'authentification.  (4) Application of a method according to one of the preceding claims to the protection of embedded software or the management of licenses on proprietary hardware systems or platforms. (5) Application of a method according to one of the preceding Claims 1 to 10, for downloading secure contents (31) from a server infrastructure or content security network boxes (29) to a client machine (27), the software or data being encrypted in a customized manner for a machine and / or a user (6) Application of a method according to one of the preceding claims to the broadcasting of multimedia contents, with an identification of a user or a client machine by an authentication system. (7) Le procédé selon les revendications 1 et 2, caractérisé en ce qu'il consiste également à protéger le contenu de tout support de stockage de données (33) en omettant sur le support (33) un élément indispensable (32) , pour le transmettre ultérieurement, protégé et personnalisé selon le procédé revendiqué dans la revendication 2.  (7) The method according to claims 1 and 2, characterized in that it also consists in protecting the contents of any data storage medium (33) by omitting on the support (33) an indispensable element (32), for transmit it later, protected and personalized according to the method claimed in claim 2. (8) Procédé selon les revendications 1 et 2, caractérisé par le stockage des informations relatives aux clefs, nécessaires mais non sensibles, dans une entête spécifique aux fichiers protégés, à savoir: a. Le stockage de la sous-clef de transmission (8) spécifique à un utilisateur dans l'entête du fichier.  (8) A method according to claims 1 and 2, characterized by storing key information, necessary but not sensitive, in a header specific to the protected files, namely: a. The storage of the user-specific transmission subkey (8) in the header of the file. b. Stockage du condensât (21) de la clef principale de chiffrement (7) dans l'entête du fichier.  b. Storage of the condensate (21) of the main encryption key (7) in the header of the file. (9) Système de protection d'unités de stockage et en particulier de disque dur mettant en oeuvre les revendications 1 et 2, caractérisé en ce qu'il comporte: - Une carte d'interface entre le disque dur et son contrôleur, réalisant à la volée le cryptage et le décryptage des données.  (9) System for protecting storage units and in particular hard disk drive implementing claims 1 and 2, characterized in that it comprises: an interface card between the hard disk and its controller, realizing the fly encryption and decryption of data. - Une mémoire programmable de type EEPROM ou flash contenant les sousclefs KE (8) et l'empreinte (21) de la clef de chiffrement K (7) - Un lecteur de carte à puce permettant l'authentification 5 sur le système d'un ou plusieurs utilisateur(s).  A programmable memory of the EEPROM or flash type containing the KE (8) subkeys and the imprint (21) of the encryption key K (7); - a smart card reader allowing the authentication on the system of a or multiple users.
FR0402838A 2004-03-19 2004-03-19 Software and data protection method, involves dynamically dearchiving secret encryption key from sub-keys at each usage of programs/data, and dynamically decrypting protected programs or data by decryption algorithm and secret key Pending FR2867868A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0402838A FR2867868A1 (en) 2004-03-19 2004-03-19 Software and data protection method, involves dynamically dearchiving secret encryption key from sub-keys at each usage of programs/data, and dynamically decrypting protected programs or data by decryption algorithm and secret key

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0402838A FR2867868A1 (en) 2004-03-19 2004-03-19 Software and data protection method, involves dynamically dearchiving secret encryption key from sub-keys at each usage of programs/data, and dynamically decrypting protected programs or data by decryption algorithm and secret key

Publications (1)

Publication Number Publication Date
FR2867868A1 true FR2867868A1 (en) 2005-09-23

Family

ID=34896640

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0402838A Pending FR2867868A1 (en) 2004-03-19 2004-03-19 Software and data protection method, involves dynamically dearchiving secret encryption key from sub-keys at each usage of programs/data, and dynamically decrypting protected programs or data by decryption algorithm and secret key

Country Status (1)

Country Link
FR (1) FR2867868A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1618666A2 (en) * 2003-03-11 2006-01-25 Sony Electronics Inc. Method and apparatus for protecting the transfer of data
WO2008008621A2 (en) 2006-07-13 2008-01-17 General Instrument Corporation Method and apparatus for securely moving and returning digital content

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0191162A2 (en) * 1984-12-18 1986-08-20 International Business Machines Corporation Method of software protection
EP0636962A2 (en) * 1993-07-27 1995-02-01 Software Security, Inc. Method of software distribution protection
EP0679977A1 (en) * 1994-04-25 1995-11-02 International Business Machines Corporation Method and apparatus enabling software trial allowing the distribution of software objects
EP0706118A1 (en) * 1994-04-22 1996-04-10 Kabushiki Kaisya Advance Data protection system
EP1083528A2 (en) * 1999-09-09 2001-03-14 i3 micro technology ab Electronic transaction apparatus
WO2002095747A1 (en) * 2001-05-18 2002-11-28 Michtchenko Valentin Alexandro Method for recording, for distributing and reproducing information recorded on data carriers
EP1280149A2 (en) * 2001-07-09 2003-01-29 Matsushita Electric Industrial Co., Ltd. Digital work protection system, record/playback device, recording medium device, and model change device
EP1363284A1 (en) * 2001-02-20 2003-11-19 Sony Computer Entertainment Inc. Computer program copy management system

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0191162A2 (en) * 1984-12-18 1986-08-20 International Business Machines Corporation Method of software protection
EP0636962A2 (en) * 1993-07-27 1995-02-01 Software Security, Inc. Method of software distribution protection
EP0706118A1 (en) * 1994-04-22 1996-04-10 Kabushiki Kaisya Advance Data protection system
EP0679977A1 (en) * 1994-04-25 1995-11-02 International Business Machines Corporation Method and apparatus enabling software trial allowing the distribution of software objects
EP1083528A2 (en) * 1999-09-09 2001-03-14 i3 micro technology ab Electronic transaction apparatus
EP1363284A1 (en) * 2001-02-20 2003-11-19 Sony Computer Entertainment Inc. Computer program copy management system
WO2002095747A1 (en) * 2001-05-18 2002-11-28 Michtchenko Valentin Alexandro Method for recording, for distributing and reproducing information recorded on data carriers
EP1280149A2 (en) * 2001-07-09 2003-01-29 Matsushita Electric Industrial Co., Ltd. Digital work protection system, record/playback device, recording medium device, and model change device

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1618666A2 (en) * 2003-03-11 2006-01-25 Sony Electronics Inc. Method and apparatus for protecting the transfer of data
EP1618666B1 (en) * 2003-03-11 2018-11-14 Sony Electronics, Inc. Method and apparatus for protecting the transfer of data
WO2008008621A2 (en) 2006-07-13 2008-01-17 General Instrument Corporation Method and apparatus for securely moving and returning digital content
EP2044568A2 (en) * 2006-07-13 2009-04-08 General instrument Corporation Method and apparatus for securely moving and returning digital content
EP2044568A4 (en) * 2006-07-13 2013-01-09 Gen Instrument Corp Method and apparatus for securely moving and returning digital content

Similar Documents

Publication Publication Date Title
US7124304B2 (en) Receiving device for securely storing a content item, and playback device
JP5200204B2 (en) A federated digital rights management mechanism including a trusted system
US8875299B2 (en) User based content key encryption for a DRM system
CN101504707B (en) Conditional access to digital rights management conversion
US20080256368A1 (en) Method and Device For Protecting Digital Content in Mobile Applications
EP2485174B1 (en) Media storage structures for storing content and devices for using such structures
EP1556750A2 (en) Digital-rights management system
WO2008048069A1 (en) Digital rights management provision apparatus, system, and method
US20170116394A1 (en) Method and system for sharing contents with removable storage
US10574458B2 (en) Media storage structures for storing content, devices for using such structures, systems for distributing such structures
EP1086411A1 (en) Method for verifying the execution of a software product
US20060064759A1 (en) Method and apparatus for controlling access to downloadable content
FR2867868A1 (en) Software and data protection method, involves dynamically dearchiving secret encryption key from sub-keys at each usage of programs/data, and dynamically decrypting protected programs or data by decryption algorithm and secret key
WO2022238636A1 (en) Method for executing a program loaded into the non-volatile memory of a microcontroller forming part of an integrated circuit
KR100827301B1 (en) Method and device for protecting digital content in mobile applications
US8095793B1 (en) Digital rights management apparatus and method
WO2022238288A1 (en) Method for securing the use of software
WO2013045793A1 (en) Method of distributing contents, device for obtaining and computer program corresponding thereto