Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SYSTEM AND METHOD FOR LICENSING AND FOR MEASURING USE OF AN IP BLOCK
Document Type and Number:
WIPO Patent Application WO/2019/110945
Kind Code:
A1
Abstract:
The invention relates to an integrated circuit comprising: one or more protected circuits (IP1 to IPN); a license control circuit (110) designed to ask a license issuer (104) for a license to activate said one or more protected circuits, the license request comprising a germ value (SEED); and a cryptographic circuit (120) designed to verify the authenticity of a license received from the license issuer on the basis of the germ value, the license control circuit (110) being designed to impose a validity limit on the received licenses, and to ask the license issuer for a new license before the validity limit of the received license.

Inventors:
TORRES LIONEL (FR)
RAMPON JÉRÔME (FR)
PAUL GAËL (FR)
Application Number:
PCT/FR2018/053153
Publication Date:
June 13, 2019
Filing Date:
December 07, 2018
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
CENTRE NAT RECH SCIENT (FR)
UNIV MONTPELLIER (FR)
ALGODONE (FR)
International Classes:
G06F21/10; G06F21/76; G06F21/73; H04L9/32
Domestic Patent References:
WO2017006058A12017-01-12
WO2017006058A12017-01-12
Foreign References:
US20100122353A12010-05-13
US20100284539A12010-11-11
EP2911086A12015-08-26
FR1761778A2017-12-07
Other References:
DOMENICO AMELINO ET AL: "An IP Core Remote Anonymous Activation Protocol", IEEE TRANSACTIONS ON EMERGING TOPICS IN COMPUTING, vol. 6, no. 2, 3 November 2016 (2016-11-03), pages 258 - 268, XP055498592, DOI: 10.1109/TETC.2016.2624026
LIONEL TORRES ET AL: "Digital Right Management for IP Protection", 1 January 2017 (2017-01-01), XP009507407, ISBN: 978-3-319-50378-3, Retrieved from the Internet [retrieved on 20170111]
Attorney, Agent or Firm:
CABINET BEAUMONT (FR)
Download PDF:
Claims:
REVENDICATIONS

1. Circuit intégré comprenant :

un ou plusieurs circuits protégés (IPI à IPN) ;

un circuit de contrôle de licence (110) agencé pour demander, à un émetteur de licences (104) , une licence pour activer lesdits un ou plusieurs circuits protégés, la demande de licence comprenant une valeur de germe (SEED) ; et

un circuit cryptographique (120) agencé pour vérifier l'authenticité d'une licence reçue de l'émetteur de licences sur la base de la valeur de germe, le circuit de contrôle de licence (110) étant agencé pour imposer une limite de validité aux licences reçues, et pour demander une nouvelle licence à l'émetteur de licences avant la limite de validité de la licence reçue, la demande de nouvelle licence comprenant une nouvelle valeur de germe (SEED) .

2. Circuit intégré selon la revendication 1, comprenant en outre une mémoire de germe (116) agencée pour mémoriser une ou plusieurs des valeurs de germe.

3. Circuit intégré selon la revendication 2, dans lequel le circuit de contrôle de licence (110) est agencé pour supprimer dans la mémoire de germe (116) des valeurs de germe associées à des licences non valides.

4. Circuit intégré selon la revendication 2 ou 3, dans lequel la licence reçue comprend un code d'authentification de message (MAC) et dans lequel le circuit cryptographique (120) est agencé pour vérifier l'authenticité de la licence en vérifiant le code d'authentification de message en utilisant la valeur de germe mémorisée dans la mémoire de germe (116) .

5. Circuit intégré selon l'une quelconque des revendi¬ cations 1 à 4, comprenant en outre un générateur de valeur aléatoire (112) adapté à générer une valeur aléatoire ou pseudo¬ aléatoire, dans lequel le circuit de contrôle de licence est agencé pour générer la valeur de germe sur la base de la valeur aléatoire ou pseudo-aléatoire.

6. Circuit intégré selon l'une quelconque des revendi¬ cations 1 à 5, dans lequel la valeur de germe comprend un identifiant de dispositif identifiant le circuit intégré.

7. Circuit intégré selon l'une quelconque des revendi¬ cations 1 à 6, dans lequel la licence comprend un code de vérification, le circuit intégré comprenant en outre un module d' activation de circuit adapté à activer un premier desdits un ou plusieurs circuits protégés en chargeant un code d'activation dans un registre d'activation (412) associé au premier circuit protégé sur la base d'une vérification du code de vérification.

8. Circuit intégré selon la revendication 7, dans lequel le circuit cryptographique est en outre adapté à :

déduire une clé de dispositif (DEVICE KEY) de la valeur de germe ; et

déchiffrer la licence reçue en utilisant la clé de dispositif afin d'extraire le code de vérification.

9. Circuit intégré selon l'une quelconque des revendi¬ cations 1 à 8, comprenant en outre un générateur de données de mesure d'utilisation (606) agencé pour recevoir une ou plusieurs valeurs de compteur concernant l'activité desdits un ou plusieurs circuits protégés, et pour générer des données de mesure d'utilisation sur la base desdites une ou plusieurs valeurs de compteur .

10. Circuit intégré selon la revendication 9, dans lequel le circuit de contrôle de licence (110) est en outre agencé pour :

inclure les données de mesure d'utilisation dans la demande d'une nouvelle licence à l'émetteur de licences (104) ; et/ou

déterminer la limite de validité d'une licence reçue sur la base des données de mesure d'utilisation.

11. Procédé d'application d'une licence à un ou plusieurs circuits protégés d'un circuit intégré, le procédé comprenant : demander, à un émetteur de licences (104) , une licence pour activer lesdits un ou plusieurs circuits protégés, la demande de licence comprenant une valeur de germe (SEED) ;

vérifier l'authenticité d'une licence reçue de l'émetteur de licences sur la base de la valeur de germe ; et imposer une limite de validité à la licence reçue et demander une nouvelle licence à l'émetteur de licences avant la limite de validité de la licence reçue, la demande de nouvelle licence comprenant une nouvelle valeur de germe (SEED) .

Description:
SYSTEME ET PROCEDE DE LICENCE ET DE MESURE D’UTILISATION D’UN

BLOC IP

La présente demande de brevet revendique la priorité de la demande de brevet français FR17/61778 qui sera considérée comme faisant partie intégrante de la présente description.

Domaine de l'invention

La présente description concerne le domaine des circuits intégrés et en particulier un procédé et un système permettant l'authentification et l'octroi de licences de blocs IP (de l'anglais Intellectual Property - propriété intellectuelle) dans un circuit intégré, ou plus généralement l'authentification et la licence de tout circuit ou de tout système. La présente descrip tion concerne aussi des procédés et des systèmes pour mesurer l'utilisation de blocs IP.

Exposé de l'art antérieur

Les circuits intégrés comprennent en général un ensemble de blocs de circuits connus dans la technique sous le nom de blocs IP (propriété intellectuelle) . Les blocs IP correspondent à des conceptions de circuits matériels discrets qui réalisent des fonctions spécifiques et qui peuvent être réutilisés dans divers circuits intégrés différents. Les blocs IP se trouvant dans un circuit intégré (IC) donné sont en général attribués sous forme de licence aux concepteurs de circuits intégrés par les détenteurs des droits IP des blocs IP.

Les blocs IP sont en général fournis aux concepteurs de circuits intégrés sous forme de logiciels, par exemple dans un langage de description matérielle comme le RTL (de l'anglais Register Transfer Level - niveau transfert de registres) , le Verilog ou le VHDL (de l'anglais Very high speed integrated circuit Hardware Description Language - langage de description matérielle de circuits intégrés à haute vitesse) . Les détenteurs des droits IP accordent souvent une licence aux concepteurs de circuits intégrés pour utiliser leur bloc IP dans un nombre limité de circuits intégrés et/ou un nombre limité de projets, ou demandent le paiement de royalties pour chaque circuit intégré et/ou projet qui incorporent le bloc IP.

Dans certaines applications, il serait souhaitable de fournir une licence de blocs IP et/ou de circuits matériels pendant une durée limitée. Toutefois, les solutions existantes ont tendance à être complexes, coûteuses et/ou pas suffisamment sécurisées .

Résumé

Un objet de modes de réalisation de la présente description est de résoudre au moins partiellement un ou plusieurs problèmes de l'art antérieur.

Selon un aspect, on prévoit un circuit intégré comprenant : un ou plusieurs circuits protégés ; un circuit de contrôle de licence agencé pour demander, à un émetteur de licences, une licence pour activer lesdits un ou plusieurs circuits protégés, la demande de licence comprenant une valeur de germe ; et un circuit cryptographique agencé pour vérifier l'authenticité d'une licence reçue de l'émetteur de licences sur la base de la valeur de germe, le circuit de contrôle de licence étant agencé pour imposer une limite de validité à la licence reçue, et pour demander une nouvelle licence à l'émetteur de licences avant la limite de validité de la licence reçue. Selon un mode de réalisation, le circuit intégré comprend en outre une mémoire de germe agencée pour mémoriser une ou plusieurs des valeurs de germe.

Selon un mode de réalisation, le circuit de contrôle de licence est agencé pour supprimer dans la mémoire de germe des valeurs de germe associées à des licences non valides.

Selon un mode de réalisation, la licence reçue comprend un code d'authentification de message et le circuit crypto graphique est agencé pour vérifier l'authenticité de la licence en vérifiant le code d'authentification de message en utilisant la valeur de germe mémorisée dans la mémoire de germe.

Selon un mode de réalisation, le circuit intégré comprend en outre un générateur de valeur aléatoire adapté à générer une valeur aléatoire ou pseudo-aléatoire, le circuit de contrôle de licence étant agencé pour générer la valeur de germe sur la base de la valeur aléatoire ou pseudo-aléatoire.

Selon un mode de réalisation, la valeur de germe comprend un identifiant de dispositif identifiant le circuit intégré .

Selon un mode de réalisation, la licence comprend un code de vérification, le circuit intégré comprenant en outre un module d' activation de circuit adapté à activer un premier desdits un ou plusieurs circuits protégés en chargeant un code d'activation dans un registre d'activation associé au premier circuit protégé sur la base d'une vérification du code de vérification .

Selon un mode de réalisation, le circuit cryptographique est en outre adapté à déduire une clé de dispositif de la valeur de germe et à déchiffrer la licence reçue en utilisant la clé de dispositif afin d'extraire le code de vérification.

Selon un mode de réalisation, le circuit intégré comprend en outre un générateur de données de mesure d'utilisation agencé pour recevoir une ou plusieurs valeurs de compteur concernant l'activité desdits un ou plusieurs circuits protégés, et pour générer des données de mesure d'utilisation sur la base desdites une ou plusieurs valeurs de compteur.

Selon un mode de réalisation, le circuit de contrôle de licence est en outre agencé pour : inclure les données de mesure d'utilisation dans la demande d'une nouvelle licence à l'émetteur de licences ; et/ou déterminer la limite de validité d'une licence reçue sur la base des données de mesure d'utilisation.

Selon un aspect, on prévoit un procédé d'application d'une licence à un ou plusieurs circuits protégés d'un circuit intégré, le procédé comprenant : demander, à un émetteur de licences, une licence pour activer lesdits un ou plusieurs circuits protégés, la demande de licence comprenant une valeur de germe ; vérifier l'authenticité d'une licence reçue de l'émetteur de licences sur la base de la valeur de germe ; et imposer une limite de validité à la licence reçue et demander une nouvelle licence à l'émetteur de licences avant la limite de validité de la licence reçue.

Brève description des dessins

Les caractéristiques et avantages susmentionnés et d'autres apparaîtront clairement avec la description détaillée suivante de modes de réalisation, donnée à titre d'illustration et non de limitation, en faisant référence aux dessins joints dans lesquels :

la figure 1 illustre schématiquement un dispositif électronique en communication avec un émetteur de licences selon un exemple de réalisation de la présente description ;

la figure 2 est un organigramme illustrant des opérations dans un procédé de protection d'un ou plusieurs circuits d'un circuit intégré selon un exemple de réalisation de la présente description ;

la figure 3A illustre schématiquement un système permettant d'attribuer une licence de bloc IP selon un exemple de réalisation de la présente description ; la figure 3B illustre un circuit de génération de licence de la figure 3A plus en détail selon un exemple de réalisation ;

la figure 4 illustre schématiquement un dispositif électronique comprenant des composants d'attribution de licence IP selon un exemple de réalisation de la présente description ;

les figures 5A et 5B illustrent schématiquement des circuits d'activation d'un bloc IP selon un exemple de réalisation de la présente description ;

la figure 6 illustre schématiquement un circuit de mesure selon un exemple de réalisation de la présente description ; et

la figure 7 illustre schématiquement un circuit d'attri ¬ bution de licence selon un autre exemple de réalisation de la présente description.

Description détaillée

Bien que dans la description qui suit, certains modes de réalisation soient décrits comme étant mis en œuvre sous forme matérielle, il apparaîtra clairement à l'homme de l'art que les divers modes de réalisation pourraient être au moins partiellement mis en œuvre par des instructions de logiciel exécutées par un ou plusieurs processeurs.

Dans la description qui suit, les termes suivants se verront attribuer les définitions suivantes :

bloc IP - conception de circuit matériel discret qui réalise des fonctions spécifiques et qui peut être réutilisée dans divers circuits intégrés différents comprenant des FPGA (réseaux de portes programmables sur site) ;

circuit protégé - circuit qui peut correspondre à un bloc IP, à un ensemble de blocs IP, ou à un système comprenant un ou plusieurs circuits intégrés, protégé par un mécanisme de telle sorte qu'il se trouve dans un état désactivé à moins d'être activé par un code d' activation ; et

valeur aléatoire ou pseudo-aléatoire - toute valeur numérique qui est imprévisible ou difficile à prédire. La figure 1 illustre schématiquement un dispositif électronique 102 en communication avec un émetteur de licences (LICENSE ISSUER) 104. Par exemple, la communication se fait par l'intermédiaire d'un réseau local. En variante, dans certains modes de réalisation, l'émetteur de licences 104 et le dispositif 102 pourraient être séparés par un réseau plus grand comme le réseau Internet.

Le dispositif électronique 102 comprend par exemple des circuits protégés IPI à IPN. Chaque circuit protégé est par exemple un circuit complexe développé pour réaliser une fonction précise, comme par exemple un processeur d'image capable de réaliser des opérations de traitement d'image, une interface pour gérer des protocoles standard, ou un autre circuit capable de réaliser des opérations avancées, comme un processeur, un circuit de codage de décodage, etc. Dans certains modes de réalisation, chaque circuit protégé peut comprendre un FPGA, les fonctions mises en œuvre par le circuit protégé étant programmées dans le FPGA par un code de programmation.

Le dispositif 102 est par exemple un circuit intégré, et les circuits protégés sont des blocs IP du circuit intégré. Toutefois, dans des variantes de réalisation, le dispositif 102 pourrait correspondre à un dispositif électronique quelconque, et chacun des circuits protégés pourrait comprendre une carte ou un système comportant plus qu'un seul circuit intégré. Dans certains modes de réalisation, le dispositif 102 fait partie d'un produit comme un téléphone mobile, une tablette informatique, un ordinateur portable, une console de jeu ou similaire, ou pourrait être une puce montée sur une carte à circuit intégré, cela comprenant la famille de cartes connue sous le nom de cartes à puce, comme des cartes de paiement, des cartes SIM (module d'identité d'abonné) ou similaire.

Dans d'autres modes de réalisation, le dispositif 102 peut faire partie d'une banque de dispositifs matériels similaires fournissant des ressources de traitement de données qui sont disponibles pour une utilisation sous licence. Par exemple, dans le cas où le dispositif 102 comprend un FPGA, l'utilisateur final peut acheter des licences permettant l'utilisation du FPGA du dispositif 102 et/ou l'utilisation d'un ou plusieurs circuits IP protégés qui peuvent être programmés sur le FPGA.

L'émetteur de licences 104 est par exemple en commu ¬ nication avec le dispositif 102, et joue le rôle de générateur et fournisseur de licences au dispositif 102, qui autorise le fonctionnement permanent du matériel et/ou d'un ou plusieurs des circuits protégés. Par exemple, chaque licence a une période de validité limitée. Dans certains modes de réalisation, chaque licence peut être considérée comme un jeton qui autorise le fonctionnement du dispositif 102 et/ou d'un ou plusieurs des circuits protégés pendant une durée donnée. Chaque licence peut par exemple fournir une autorisation pour une durée donnée, comme quelques secondes ou quelques minutes, ou pour un nombre donné de cycles d'horloge ou d'opérations d'un processeur. En variante, la durée de chaque licence peut être variable, et sa durée peut être indiquée dans la licence elle-même. Par exemple, la licence peut indiquer sa durée de validité, exprimée par exemple en secondes ou en minutes, ou sous forme du nombre de cycles d'horloge ou d'opérations de processeur qu'elle autorise avant de devenir non valide .

Le dispositif 102 comprend par exemple un circuit de gestion de licences 106, qui génère des demandes de licence à l'émetteur de licences 104, reçoit et vérifie des licences émises par l'émetteur de licences 104, et active un signal d'alerte ALERT vers l'émetteur de licences 104 et/ou vers une autre entité dans le cas où il y a pas de licence valide présente sur le dispositif 102. Dans certains modes de réalisation, le signal d'alerte peut comprendre de multiples signaux.

Dans certains modes de réalisation décrits plus en détail ci-après, le dispositif 102 comprend aussi un serveur de licences (LICENSE SERVER) 108, qui distribue des licences reçues aux circuits protégés IPI à IPN afin de les activer. Le circuit de gestion de licences 106 comprend par exemple un circuit de contrôle de licence 110, qui par exemple reçoit une valeur aléatoire d'un générateur de valeurs aléatoires ou pseudo-aléatoires (RANDOM VALUE GENERATOR) 112, et option- nellement un identifiant de dispositif (DEVICE ID) 114, et génère une valeur de germe (SEED) . Cette valeur de germe est par exemple incluse dans un message de demande de licence (LICENSE REQ) généré par le circuit de contrôle de licence 110 et émis vers l'émetteur de licences 104. Le circuit de contrôle de licence 110 mémorise aussi par exemple la valeur de germe dans une mémoire de germe (SEED MEMORY) 116.

Le circuit de gestion de licences 106 reçoit des licences (LICENSE) émises par l'émetteur de licences 104, et par exemple les mémorise dans une mémoire de licences (LICENSE MEMORY) 118. Dans certains modes de réalisation dans lesquels les licences sont transmises sur un réseau comme le réseau Internet, les licences sont chiffrées. En outre, chaque licence comprend par exemple un code d'authentification, comme un code MAC (code d'authentification de message), qui a été généré par l'émetteur de licences 104 en utilisant la valeur de germe incluse dans le message de demande de licence.

Les licences reçues par le circuit de gestion de licences 106 sont par exemple fournies à un circuit de déchiffrement de licence et de vérification MAC (LICENSE DECRYPTION + MAC VERIFICATION) 120, qui par exemple déchiffre la licence dans le cas où elle a été chiffrée, et authentifie la licence sur la base de son code d'authentification et en utilisant la valeur de germe correspondante provenant de la mémoire de germe 116.

Dans le cas où la valeur de germe utilisée pour générer le code d'authentification par l'émetteur de licences 104 concorde avec la valeur de germe mémorisée dans la mémoire de germe 116, la licence va être authentifiée avec succès. Toutefois, dans le cas d'une discordance entre ces valeurs de germe, l'authen ¬ tification va échouer. Dans tous les cas, le circuit 120 informe par exemple le circuit de contrôle de licence 110 du résultat de 1' authentification .

Le circuit de gestion de licences 106 comprend aussi par exemple un compteur (CNTR) 122 qui indique le moment où une nouvelle licence doit être demandée. Par exemple, une nouvelle licence est demandée un certain temps avant qu'une licence courante ait expirée afin de laisser du temps pour que la nouvelle licence soit émise avant l'expiration de la licence courante. Dans certains modes de réalisation, le compteur 122 compte des périodes d'un signal d'horloge ou similaire, de sorte que le signal de compte peut être utilisé pour déterminer s'il est temps de demander une nouvelle licence. En variante, le compteur 122 peut compter des cycles de traitement d'un processeur d'un ou plusieurs des circuits protégés IPI à IPN, ou le nombre d'opérations réalisées par un ou plusieurs des circuits protégés IPI à IPN.

Dans le cas où le compteur 122 indique qu'une licence courante a expiré sans qu'une nouvelle licence ait été reçue, ou dans le cas d'un échec d'authentification de licence reçue indiqué par le circuit 120, le signal d'alerte ALERT est par exemple activé pour informer l'émetteur de licences 104, et/ou une autre entité, du manque d'une licence valide. Par exemple, un utilisateur des circuits protégés IPI à IPN peut être informé par le signal d'alerte que la licence a expiré, et qu'un ou plusieurs des circuits protégés vont être désactivés en l'absence d'un paiement pour une nouvelle licence avant une certaine date butoir.

En plus ou à la place, en l'absence de licence valide, un ou plusieurs des circuits protégés sont réinitialisés et/ou désactivés. Par exemple, à la suite de la fabrication, ou à la suite d'une réinitialisation, un ou plusieurs des circuits protégés sont dans un état désactivé, et ne peuvent être activés que par un code de vérification. Ce code de vérification est par exemple fourni avec une ou plusieurs des licences émises par l'émetteur de licences 104. À la suite d'une opération de réinitialisation, une licence contenant le code de vérification est par exemple utilisée pour réactiver les circuits protégés, alors que dans le cas où il n'y a pas de licence valide, les circuits protégés restent par exemple désactivés.

La valeur de germe est par exemple une simple concaténation de la valeur aléatoire ou pseudo-aléatoire générée par le générateur 112 avec l'identifiant de dispositif. L' identifiant de dispositif est par exemple une chaîne de bits qui identifie le dispositif 102 ou un groupe de dispositifs 102, et qui sert pour l'authentification. La licence qui est fournie par l'émetteur de licences 104 peut par exemple seulement être utilisée pour un dispositif ayant cet identifiant, et dans certains modes de réalisation, l'identifiant de dispositif est unique pour chaque dispositif, de sorte qu'une licence donnée peut seulement activer les circuits protégés d'un seul dispositif ou d'un dispositif 102 donné. L'identifiant de dispositif est par exemple basé sur la génération d'une signature qui est unique pour le dispositif 102. Par conséquent, même si deux circuits intégrés sont fabriqués et/ou programmés de manière à avoir des fonctionnalités identiques, leurs signatures et ainsi leurs identifiants de dispositif seront différents.

L' identifiant de dispositif est par exemple généré ou déduit par une fonction PUF (de l'anglais Physically Unclonable Function - fonction physiquement non clonable) . La valeur PUF est par exemple générée par un CPU (de l'anglais Central Processing Unit - unité centrale de traitement) du dispositif 102, et/ou sur la base d'un ou plusieurs oscillateurs en anneau montés sur le dispositif 102. La génération d'une valeur PUF est décrite plus en détail dans la demande de brevet internationale publiée sous le numéro W02017/006058. Dans une alternative à une PUF, on peut utiliser une autre forme d' identifiant de dispositif, comme un identifiant affecté au dispositif par le fabricant du dispositif.

La figure 2 est un organigramme représentant des opérations dans un procédé 200 d'application d'une licence à un ou plusieurs circuits protégés selon un exemple de réalisation, ce procédé étant par exemple mis en œuvre par le circuit de gestion de licences 102 de la figure 1. Dans une étape 201, on vérifie le moment où la valeur de compteur CNT_VALUE générée par le compteur 122 de la figure 1 a atteint une limite. Une fois que cette valeur de compteur atteint la limite, le procédé passe à une étape 202.

Dans l'étape 202, un message de demande de licence est généré par le circuit de contrôle de licence 110 sur la base d'une nouvelle valeur de germe fournie par le générateur de valeurs aléatoires 112 et optionnellement sur la base de l'identifiant de dispositif 114. Ce message de demande de licence est transmis à l'émetteur de licences 104.

Dans une étape 203, la nouvelle valeur de germe transmise dans la demande de licence est aussi mémorisée par le circuit de contrôle de licence 110 dans la mémoire de germe 116.

Dans une étape 204, un ancien germe provenant de la mémoire de germe est par exemple supprimé. Par exemple, dans certains cas, le circuit de contrôle de licence 110 maintient dans la mémoire de germe une ou plusieurs valeurs de germe courantes associées à une ou plusieurs licences courantes valides, et une ou plusieurs nouvelles valeurs de germe associées à une ou plusieurs demandes de licence, tandis que d'autres valeurs de germe sont supprimées pour rendre non valides des anciennes licences .

Dans une étape 205, une nouvelle licence est reçue en réponse à la demande de licence générée dans l'étape 202. Cette licence est fournie au circuit de déchiffrement de licence et de vérification MAC 120, qui déchiffre la licence si elle est chiffrée, et vérifie le MAC transmis dans la licence.

Dans une étape 206, on détermine alors si le MAC est valide ou non. Dans la négative, le signal d'alerte est par exemple généré par le circuit de contrôle de licence 110 dans une opération 207. Par contre si la licence est valide, dans une étape 208, le circuit de contrôle de licence 110 supprime par exemple l'ancienne licence de la mémoire de licences 118. En outre, dans le cas où la licence contient des informations concernant sa période de validité, ces informations sont par exemple fournies par le circuit de déchiffrement de licence et de vérification MAC 120 au circuit de contrôle de licence 110, qui utilise ces informations pour déterminer la limite de compte pour demander une licence suivante .

La figure 3A illustre schématiquement un système 300 permettant une authentification et une attribution de licences pour des circuits protégés selon un exemple de réalisation de la présente description. Certains des éléments du système 300 sont similaires à des éléments du système 100 de la figure 1, et de tels éléments portent les mêmes références numériques, et ne seront pas décrits de nouveau en détail .

Dans le système 300, certaines ou la totalité des licences générées par l'émetteur de licences 104 comprennent un code de vérification pour activer des circuits protégés du dispositif 102, comme on va le décrire maintenant.

Le système 300 comprend du matériel associé à trois parties principales, l'émetteur de licences (LICENSE ISSUER) 104, un tiers de confiance (TTP) et un utilisateur final (END USER) . Dans certains modes de réalisation, l'émetteur de licences 104 peut être le vendeur d' IP, ou peut-être en communication avec un ou plusieurs vendeurs d'IP. La protection est par exemple basée sur une activation unitaire d'un ou plusieurs circuits protégés.

L'utilisateur final peut avoir acheté le dispositif 102. En variante, l'utilisateur final peut être en train d'attribuer une licence pour l'utilisation du dispositif 102, par exemple par l'intermédiaire d'un tiers servant d'intermédiaire.

Selon les modes de réalisation décrits ici, lesdits un ou plusieurs blocs IP (IP) se trouvant sur le dispositif 102, correspondant aux dispositifs IPI à IPN de la figure 1, sont par exemple initialement dans un état désactivé avant que toute licence valide ait été reçue. L'utilisateur final active les blocs IP désactivés en demandant une licence à l'émetteur de licences ou au TTP. Toutefois, dans des variantes de réalisation, plutôt que par l'utilisateur final, l'activation peut être réalisée par un autre tiers dans la chaîne de fourniture, comme par le concepteur du circuit intégré, ou un vendeur d'un produit contenant le dispositif 102.

Certains des circuits protégés peuvent être activés de manière permanente par une licence initiale, ou rester activés jusqu'à une réinitialisation ultérieure du dispositif 102. En effet, le type d'activation particulier (permanent, jusqu'à une réinitialisation suivante, pour une période limitée) peut être différent pour chaque circuit protégé du dispositif. En outre, bien que le procédé décrit ici puisse être utilisé pour activer un seul bloc IP, il peut aussi être appliqué de manière plus générale à l'activation de n'importe quel circuit protégé, qui peut correspondre à tous les blocs IP d'un dispositif donné, à un bloc IP dans un autre bloc IP et/ou à un bloc IP comprenant un autre bloc IP, à un système ou une carte IC, à l'activation de tous les circuits dans une conception en utilisant une technologie d'ASIC donnée (circuit intégré spécifique d'application), à l'activation d'une famille donnée de FPGA, à l'activation de FPGA fabriqués par un fabricant donné, etc. Il pourrait aussi être appliqué au niveau système. En outre, dans certains modes de réalisation, la licence pourrait être utilisée pour activer ou désactiver seulement un sous-ensemble des fonctions d'un bloc IP.

On va maintenant décrire plus en détail un exemple du procédé pour protéger et activer un bloc IP.

Au niveau de l'émetteur de licences 104, une base de données (RTL) 304 mémorise par exemple un ou plusieurs blocs IP représentés dans un langage de description matérielle comme le code ordinaire RTL (niveau transfert de registres) .

Un bloc protecteur IP (IP PROTECTOR) 306 comprend par exemple du logiciel pour exécuter une fonction de protection IP, qui est utilisée pour modifier un ou plusieurs des blocs IP provenant de la base de données 304 pour rendre le circuit inactif. En particulier, le bloc IP est altéré de telle sorte qu'un code d'activation est requis pour débloquer ses fonctionnalités. Dans certains modes de réalisation, cette étape peut être réalisée entièrement automatiquement, bien que dans d'autres modes de réalisation elle puisse être réalisée au moins partiellement manuellement, par exemple par un concepteur du bloc IP. Comme on va le décrire plus en détail ci-après, la modification du bloc IP implique par exemple l'insertion, dans le fichier de description matérielle, d'une ou plusieurs portes logiques dans un ou plusieurs chemins de signaux du bloc IP. Ces portes logiques permettent par exemple la propagation du signal non altéré le long du chemin de signal seulement si un ou plusieurs bits d'activation corrects sont fournis à un ou plusieurs nœuds d'entrée des portes logiques insérées. Dans certains modes de réalisation, le code d'activation peut être unique pour une conception IP donnée. Dans d'autres modes de réalisation, le même code d'activation peut être utilisé pour plus qu'une seule conception IP. En outre, dans certains modes de réalisation, il peut y avoir plus qu'un seul code d'activation pour activer un bloc IP. Cela peut par exemple faciliter l'opération de génération de licence.

Un circuit destiné à gérer la licence IP, qui va être appelé ici client de licence (non illustré en figure 3A) est par exemple ajouté à chaque bloc IP à protéger. Comme cela va être décrit plus en détail ci-après, le client de licence comprend par exemple un registre pour mémoriser le code d'activation une fois qu'une licence valide a été fournie. Dans certains modes de réalisation, le client de licence est intégré dans chaque bloc IP, bien que comme cela est décrit plus en détail ci-après, chaque client de licence puisse aussi être externe au bloc IP correspondant .

Dans certains modes de réalisation, les fichiers représentant les blocs IP modifiés sont par exemple aussi protégés par chiffrement.

Les codes d'activation, et optionnellement une partie ou la totalité des blocs IP modifiés, sont par exemple mémorisés dans une base de données (PROTECTED IP) 308 de l'émetteur de licences. Par exemple, la tâche de génération de licences comprenant des codes d' activation a été déléguée par un ou plusieurs vendeurs IP à l'émetteur de licences 104. Les blocs IP modifiés sont aussi fournis à un concepteur du dispositif 102 de afin que, comme cela est représenté par une flèche 310 en figure 3A, un ou plusieurs blocs IP protégés soient mis en œuvre sous forme de matériel dans le dispositif 102. En particulier, le concepteur de circuit intégré réunit ensemble divers blocs IP différents pour former un circuit intégré, et un ou plusieurs de ces blocs IP correspondent par exemple à des blocs IP protégés par un code d'activation comme cela a été décrit ici. En variante, les blocs IP modifiés sont programmés dans un FPGA du dispositif 102.

Certaines ou la totalité des licences fournies au dispositif 102 comprennent par exemple un code de vérification. Le terme "code de vérification" est utilisé ici pour désigner un code qui est communiqué avec la licence et permet à un ou plusieurs blocs IP d'être activés. Ce code peut être le code d'activation pour un ou plusieurs blocs IP. Dans des variantes de réalisation, le code d'activation est déjà mémorisé dans une mémoire protégée, par exemple une ROM, du bloc IP, et le code d'activation n'est pas inclus dans la licence. Dans ce cas, le code de vérification est un code secret communiqué avec la licence au bloc IP qui permet au code d' activation d' être chargé à partir de la mémoire protégée dans le registre de code d'activation. Dans certains modes de réalisation, une licence temporaire peut être fournie au concepteur de circuits intégrés dans un but de conception et/ou de test.

Comme cela a été décrit en relation avec la figure 1, le dispositif 102 comprend par exemple un circuit de gestion de licences 106 couplé au circuit protégé.

Lorsque le dispositif 102 est activé pour la première fois après sa fabrication et/ou une programmation, la valeur de l'identifiant de dispositif est par exemple lue en lisant une valeur générée par un circuit PUF ou similaire. Dans certains cas, la valeur PUF peut changer dans le temps en raison du vieillissement du circuit intégré, et/ou en raison d'autres facteurs comme l'environnement (température, tension, etc.) . Dans certains modes de réalisation, au vu d'un changement potentiel dans la valeur PUF, au moins une partie de la valeur PUF générée est mémorisée dans une mémoire non volatile, et/ou un code de correction d'erreur est généré, permettant de corriger la valeur PUF si certains bits de la valeur PUF s'écartent de leur valeur d'origine. L'identifiant de dispositif est aussi mis à disposition d'un port d'accès du dispositif 102, ou communiqué d'une autre façon à l'extérieur du dispositif 102, et il est par exemple utilisé pour demander certaines ou la totalité des licences pour activer les blocs IP protégés.

Dans certains modes de réalisation, une licence séparée est générée pour chaque bloc IP à activer. En variante, une licence peut être générée pour activer une pluralité de blocs IP. Le code ou les codes de vérification (VERIFICATION CODE) 315 pour déverrouiller le ou les blocs IP protégés du dispositif 102 sont par exemple fournis à un générateur de licence (LICENSE GENERATOR) 316 de l'émetteur de licences 104. Le générateur de licence 316 est utilisé pour générer une licence (LICENCE) , qui est par exemple transmise au circuit de gestion de licences 106 du dispositif 102. Le générateur de licence 316 reçoit par exemple la valeur de germe à partir du dispositif 102, et génère la licence sur la base de cette valeur de germe et du ou des codes de vérification .

Dans certains modes de réalisation, la licence incorpore aussi des données DRM (de l'anglais Design Right Management - gestion des droits d'auteur) 320. Les données DRM indiquent par exemple une limite particulière de la durée d'activation d'un bloc IP. Par exemple, elles peuvent indiquer que la licence pour un circuit protégé particulier est valide pendant une certaine durée, comme une période de quelques secondes ou quelques minutes. Elles peuvent aussi indiquer une limitation de la licence à un ou plusieurs types de matériel, comme une technologie d'ASIC, une famille de FPGA, ou des fonctionnalités spécifiques d'un bloc IP qui doivent être déverrouillées. Le type de matériel du circuit peut par exemple être déterminé par un capteur spécifique, et comparé à un ou plusieurs types de matériel autorisés afin de limiter l'utilisation du bloc IP à ces types de matériel. En outre, en plus ou à la place, les données DRM de la licence peuvent définir des données de limitation indiquant des limites de la licence sur la base d'autres variables qui peuvent être mesurées par des capteurs du dispositif.

Les données DRM peuvent par exemple être vérifiées et appliquées seulement une fois, sur une activation initiale d'un ou plusieurs des circuits IP sur la base du code de vérification. En variante, des données DRM pourraient être vérifiées et appliquées à chaque fois qu'une nouvelle licence comprenant des données DRM est reçue de l'émetteur de licences 104.

Dans certains modes de réalisation, les données DRM modifient le code de vérification. Par exemple, dans certains modes de réalisation, le code de vérification comprend le code d'activation, et certains bits du code d'activation ne sont pas fournis ou sont incorrects de sorte que seule une partie du bloc IP est activée par le code d'activation. Dans d'autres modes de réalisation, d'autres techniques pourraient être utilisées, des techniques qui ne sont pas basées sur une activation/désactivation bit par bit du bloc IP.

La figure 3B illustre le générateur de licence 316 plus en détail selon un exemple de réalisation. Le générateur de licence 316 comprend par exemple un bloc de fonction de déduction de clé (KDF1) 322, qui génère une clé de dispositif sur la base de la valeur de germe (SEED) fournie par le dispositif 102. Le générateur de licence 316 comprend aussi par exemple un circuit cryptographique (CRYPTO) 324, qui applique la clé de dispositif au code ou aux codes de vérification des blocs IP à activer, afin de générer la licence. Par exemple, le circuit cryptographique 324 code le ou les codes de vérification sur la base de la clé de dispositif en appliquant un algorithme de chiffrement comme celui de la norme DES (Data Encryption Standard - norme de chiffrement de données) , de la norme AES (Advance Encryption Standard - norme de chiffrement avancé) ou similaire. Les données DRM peuvent aussi être chiffrées et faire partie de la licence.

Comme cela est représenté par un bloc 328 (CRYPTO) , dans certains modes de réalisation, le ou les codes de vérification peuvent être chiffrés, par le vendeur IP, en utilisant une clé de vendeur IP (IP VENDOR KEY) , et la clé de vendeur IP est aussi par exemple mémorisée par le vendeur IP dans le bloc IP, permettant de déchiffrer le ou les codes de vérification. De cette manière, même l'émetteur de licences 104 ne peut pas accéder aux codes de vérification .

La licence générée est ensuite fournie au dispositif 102. Dans certains modes de réalisation, un algorithme de chiffrement/déchiffrement symétrique est utilisé pour chiffrer la licence par le générateur de licence 316 en utilisant la clé de dispositif, puis pour déchiffrer la licence au niveau du dispositif 102, de sorte que si les clés sont identiques, le code de vérification va être récupéré avec succès.

La figure 4 illustre schématiquement des composants d'attribution de licence du dispositif 102 de la figure 3A plus en détail selon un exemple de réalisation, dans le cas où la communication entre le serveur de licences 108 et les IP est basée sur une configuration client-serveur. Toutefois, dans des variantes de réalisation, d'autres types de configurations de communication seraient possibles, comme un réseau sur puce (NoC) , ou un protocole de multidiffusion ou de diffusion. Les communications entre le serveur de licences 108 et les IP sont par exemple rendues sécurisées en utilisant un chiffrement. Des exemples de mise en œuvre de l'interface de communications entre le serveur de licences 108 et les IP sont par exemple décrits plus en détail dans la demande de brevet internationale publiée sous le numéro W02017 /006058.

Comme cela est illustré en figure 4, une interface JTAG (de l'anglais Joined Test Action Group - groupe d'action de test conjointe) est par exemple utilisée pour transmettre la licence reçue du générateur de licence 316 à une mémoire de licences (LICENCE MEMORY) 108 du dispositif 102. Bien sûr, il serait possible d'utiliser d'autres normes d'interface, comme une interface USB (bus série universel) . La mémoire 118 est par exemple une mémoire RAM (mémoire à accès aléatoire) . La mémoire de licences 118 est par exemple couplée de manière interne au serveur de licences 108. Le serveur de licences 108 communique par exemple, par l'intermédiaire d'un bus de licence (LICENSE BUS) 404, avec les blocs IP protégés 406. Dans l'exemple de la figure 4, le bus de licence 404 est couplé à un circuit client de licence (LICENSE CLIENT) 408 associé à chaque bloc IP 406, qui est à son tour couplé au reste du bloc IP 406, portant le nom de cœur IP (IP CORE) 410 en figure 4. Dans l'exemple de la figure 4, il y a N cœurs IP, 1 à N, N étant par exemple égal à un entier égal ou supérieur à 2.

Le client de licence 408 de chaque bloc IP 406 vérifie par exemple la licence, et sur la base de cette vérification, fournit le code d'activation au cœur IP correspondant afin d'activer ses fonctionnalités. Par exemple, chaque client de licence 408 comprend un registre de code d'activation 412 dans lequel le code d'activation est chargé si la licence est trouvée comme valide. Le registre 412 de chaque client de licence est couplé au cœur IP 410 correspondant afin d'activer ses fonctionnalités .

Les figures 5A et 5B illustrent des exemples de circuits utilisés pour rendre l'activation des blocs IP dépendant d'un ou plusieurs bits d'un code d'activation, en insérant des portes logiques dans un chemin de signal du bloc IP.

Dans l'exemple de la figure 5A, une portion de circuit du bloc IP représentée par un nuage 502 fournit un signal de sortie sur une ligne 504, qui est couplée à l'entrée d'un dispositif logique synchrone (A) 506. Pour rendre l'activation de la ligne de sortie 504 dépendante d'un bit d'activation, un circuit d'activation 508 est inséré entre la ligne de sortie 504 et l'entrée du dispositif synchrone 506. Le circuit 508 comprend par exemple un inverseur (NOT) 510 ayant son entrée couplée à la ligne 504, et sa sortie couplée à une entrée d'une porte OU EXCLUSIF (XOR) 512. L'autre entrée de la porte OU EXCLUSIF 512 reçoit un bit d'activation en_a, qui devra être haut afin de permettre au signal de données présent sur la ligne 504 de se propager vers le dispositif synchrone 506.

La figure 5B illustre un autre exemple d'un circuit d'activation 518 inséré dans le même chemin de signal que dans l'exemple de la figure 5A. Toutefois, le circuit 518 comprend une porte OU EXCLUSIF (XOR) 520 ayant une entrée couplée à la ligne 504, et son autre entrée couplée de manière à recevoir un bit d'activation en_b. Dans cet exemple, le bit d'activation devra être bas afin de permettre au signal sur la ligne 504 de se propager vers l'entrée du dispositif synchrone (B) 506.

Ainsi les figures 5A et 5B illustrent des exemples de circuits qui peuvent être insérés afin d'activer des portions de circuits des blocs IP sur la base de bits d'activation haut et bas respectivement. Des circuits similaires peuvent être insérés en divers points dans le bloc IP, de sorte que le bloc IP ne va pas fonctionner sans le code d'activation correct. Bien sûr, les figures 5A et 5B fournissent simplement certains exemples des portes logiques qui peuvent être utilisées pour protéger le bloc IP, et de nombreuses fonctions logiques différentes pourraient être mises en œuvre sur la base des mêmes principes . Dans certains modes de réalisation, l'insertion est réalisée de manière aléatoire, de sorte que le code d'activation est une valeur aléatoire, et ne dépend pas de la fonction du circuit sous-jacent. Dans des variantes de réalisation, l'insertion pourrait être non aléatoire. En outre, bien que dans les exemples des figures 5A et 5B le circuit 508 soit utilisé dans le cas de l'activation par un bit à "1" du code d'activation, et que le circuit 518 soit utilisé dans le cas d'une activation par un bit à "0" du code d'activation, dans des variantes de réalisation il y a de multiples circuits différents qui sont utilisés dans le cas d'une activation par bit à "1" et à "0", et la sélection entre ces circuits est aléatoire. Dans certains modes de réalisation, le circuit de gestion de licence 106 de la figure 1 est en outre agencé pour mettre en œuvre un procédé de mesure comme on va le décrire maintenant plus en détail en faisant référence aux figures 6 et

7.

La figure 6 illustre schématiquement un circuit de mesure 602 selon un exemple de réalisation de la présente description. Le circuit 602 est par exemple mis en œuvre sur le dispositif 102 afin de fournir périodiquement des données de mesure d'utilisation à l'émetteur de licences 104. Les données de mesure d'utilisation correspondent par exemple à des données concernant l'activité d'un ou plusieurs des circuits protégés (IP) . Dans l'exemple de la figure 6, le circuit 602 comprend N compteurs de mesure (METERING COUNTER IPI, METERING COUNTER IPN) 604, qui reçoivent respectivement des signaux d'événements EVENT IPI à EVENT IPN à partir des circuits protégés correspondants IPI à IPN. Par exemple, les signaux d'évènements indiquent le moment où un événement survient concernant l'activité du circuit. Par exemple, un événement pourrait correspondre à une ou plusieurs opérations de traitement d'image, au traitement d'un ou plusieurs paquets, à l'exécution d'une ou plusieurs instructions, etc.

Les valeurs de compteur générées par les compteurs de mesure 604 sont par exemple fournies à un générateur de données de mesure d'utilisation 606, qui utilise les données de mesure d'utilisation pour générer périodiquement des données de mesure d'utilisation M_DATA. Par exemple, les données de mesure d'utilisation correspondent à un décompte des événements comptés par chacun des compteurs 604 pendant un intervalle de temps donné.

Les données de mesure d'utilisation M_DATA sont par exemple fournies au circuit de contrôle de licence 110 du circuit de gestion de licences 106 de la figure 1, et de nouvelles données de mesure d'utilisation sont par exemple générées et incorporées dans chaque message de demande de licence. Dans certains modes de réalisation, les données de mesure d'utilisation peuvent être utilisées pour déterminer la période de validité de chaque licence, à la place ou en plus du compteur 122. En variante, les données de mesure d'utilisation pourraient être transmises indépendamment des demandes de licence.

La figure 7 illustre schématiquement un système d'attribution de licence de dispositif et de mesure 700 selon un exemple de réalisation de la présente description. Les éléments de la figure 7 qui sont similaires à des éléments de la figure 1 portent les mêmes références numériques et ne seront pas décrits de nouveau en détail.

Dans le système de la figure 7, le dispositif 102 comprend le circuit de gestion de licences 106 et un kit de conception de logiciel (SDK) 702. Le SDK 702 fournit par exemple une couche de logiciel pour contrôler les communications entre le circuit 106 et l'émetteur de licences 104. Le circuit de gestion licences 106 génère par exemple des messages de demande de licence périodiques, chacun comprenant un signal de statut (STATUS) , la valeur de germe (SEED) et des données de mesure d'utilisation M_DATA. Le signal de statut rapporte par exemple si le chargement de licence a été fait avec succès. Ce signal peut être un seul bit, ou pourrait coder des informations de statut plus complexes en utilisant plus qu'un seul bit. Le SDK 702 transmet à son tour les messages de demande de licence à l'émetteur de licences 104, qui dans cet exemple comprend un stockage de données de mesure d'utilisation (LICENSE ISSUER AND METERING DATA STORAGE) . L'émetteur 104 extrait les données de mesure d'utilisation, qui peuvent par exemple être utilisées dans un but de facturation, et renvoie la licence demandée, qui est transmise par le SDK 702 au circuit de gestion de licences 106.

Dans certains modes de réalisation, chaque demande de licence indique en outre un identifiant d'utilisateur et/ou un identifiant de session associé à l'utilisation du dispositif 102, permettant par exemple à un compte d'utilisateur d'être associé avec les données de mesure d'utilisation et/ou la demande de licence . Un avantage des modes de réalisation décrits ici est qu'une protection de licence, basée sur des licences ayant des périodes de validité limitées, peut être appliquée à des circuits d'un dispositif de manière simple sur la base de valeurs de germe générées par le dispositif. En effet, les valeurs de germe permettent de vérifier que chaque licence a été générée sur la base de la valeur de germe correspondante, mémorisée sur le dispositif, et des licences peuvent être invalidées après leur limite d'expiration en retirant les valeurs de germe corres ¬ pondantes .

Avec la description ainsi faite d'au moins un mode de réalisation illustratif, diverses altérations, modifications et améliorations apparaîtront facilement à l'homme de l'art. Par exemple, il sera clair pour l'homme de l'art qu' alors qu'un exemple particulier de circuit de gestion de licences a été décrit en relation avec la figure 1, de nombreuses variantes pourraient être appliquées. En outre, plutôt que ce circuit soit mis en œuvre sur le dispositif 102, il pourrait être mis en œuvre dans un dispositif séparé en communication avec le dispositif 102.

En outre, bien que des compteurs qui comptent vers le haut aient été décrits dans les divers modes de réalisation, il apparaîtra clairement à l'homme de l'art qu'un ou plusieurs compteurs pourraient à la place compter vers le bas. Par exemple, le compteur 122 pourrait être initialisé à une valeur de compteur basée sur la période de validité d'une licence, et le renouvellement ou l'expiration de la licence pourraient être déclenchés lorsque ce compteur atteint zéro.

En outre, il sera clair pour l'homme de l'art que les divers éléments décrits en relation avec les divers modes de réalisation pourraient être combinés, dans des variantes de réalisation, selon diverses combinaisons.