EP3721363A1 - System and method for licensing and for measuring use of an ip block - Google Patents

System and method for licensing and for measuring use of an ip block

Info

Publication number
EP3721363A1
EP3721363A1 EP18833271.2A EP18833271A EP3721363A1 EP 3721363 A1 EP3721363 A1 EP 3721363A1 EP 18833271 A EP18833271 A EP 18833271A EP 3721363 A1 EP3721363 A1 EP 3721363A1
Authority
EP
European Patent Office
Prior art keywords
license
seed
integrated circuit
circuit
received
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
EP18833271.2A
Other languages
German (de)
French (fr)
Inventor
Lionel Torres
Jérôme RAMPON
Gaël PAUL
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.)
Algodone
Centre National de la Recherche Scientifique CNRS
Universite de Montpellier I
Universite de Montpellier
Original Assignee
Algodone
Centre National de la Recherche Scientifique CNRS
Universite de Montpellier I
Universite de Montpellier
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 Algodone, Centre National de la Recherche Scientifique CNRS, Universite de Montpellier I, Universite de Montpellier filed Critical Algodone
Publication of EP3721363A1 publication Critical patent/EP3721363A1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/76Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2103Challenge-response

Definitions

  • the present disclosure relates to the field of integrated circuits and in particular to a method and system for authentication and licensing of IP blocks (Intellectual Property) in an integrated circuit, or more generally authentication and licensing of any circuit or system.
  • IP blocks Intelligent Property
  • the present disclosure also relates to methods and systems for measuring the use of IP blocks.
  • IP blocks are designs of discrete hardware circuits that perform specific functions and can be reused in a variety of different integrated circuits. IP blocks in a given integrated circuit (IC) are generally allocated in the form of license to IC designers by IP block rights holders.
  • IP blocks are generally provided to the designers of integrated circuits in the form of software, for example in a hardware description language such as RTL (Register Transfer Level), Verilog or VHDL (from English High-speed integrated circuit Hardware Description Language - hardware description language for high-speed integrated circuits. IP rights holders often license integrated circuit designers to use their IP block in a limited number of integrated circuits and / or a limited number of projects, or claim royalties for each integrated circuit and / or project that incorporate the IP block.
  • RTL Registered Transfer Level
  • Verilog Verilog
  • VHDL from English High-speed integrated circuit Hardware Description Language - hardware description language for high-speed integrated circuits.
  • IP rights holders often license integrated circuit designers to use their IP block in a limited number of integrated circuits and / or a limited number of projects, or claim royalties for each integrated circuit and / or project that incorporate the IP block.
  • An object of embodiments of the present disclosure is to at least partially solve one or more problems of the prior art.
  • an integrated circuit comprising: one or more protected circuits; a license control circuit arranged to request a license issuer to license said one or more protected circuits, the license application including a seed value; and a cryptographic circuit arranged to verify the authenticity of a license received from the license issuer on the basis of the seed value, the license control circuit being arranged to impose a validity limit on the license received, and to request a new license from the license issuer before the validity limit of the license received.
  • the integrated circuit further comprises a seed memory arranged for storing one or more of the seed values.
  • the license control circuit is arranged to delete in the seed memory seed values associated with invalid licenses.
  • the received license includes a message authentication code and the crypto circuit is arranged to verify the authenticity of the license by verifying the message authentication code using the seed value stored in the message. germ memory.
  • the integrated circuit further comprises a random value generator adapted to generate a random or pseudo-random value, the license control circuit being arranged to generate the seed value on the basis of the random value or pseudorandom.
  • the seed value comprises a device identifier identifying the integrated circuit.
  • the license includes a verification code
  • the integrated circuit further comprising a circuit activation module adapted to activate a first one of said one or more protected circuits by loading an activation code into a registration register. activation associated with the first protected circuit based on verification of the verification code.
  • the cryptographic circuit is further adapted to derive a device key from the seed value and decrypt the received license using the device key to retrieve the verification code.
  • the integrated circuit further comprises a usage measurement data generator arranged to receive one or more counter values concerning the activity of said one or more protected circuits, and to generate usage measurement data based on said one or more counter values.
  • the license control circuit is further arranged to: include usage measurement data in the application for a new license to the issuer; and / or determine the validity limit of a license received based on usage measurement data.
  • a method of applying a license to one or more protected circuits of an integrated circuit comprising: requesting, from a license issuer, a license to activate said one or more protected circuits, the license application including a seed value; verify the authenticity of a license received from the license issuer based on the seed value; and impose a validity limit on the license received and request a new license from the license issuer before the validity limit of the license received.
  • FIG. 1 schematically illustrates an electronic device in communication with a license issuer according to an example embodiment of the present description
  • FIG. 2 is a flowchart illustrating operations in a method of protecting one or more circuits of an integrated circuit according to an exemplary embodiment of the present description
  • Figure 3A schematically illustrates a system for assigning an IP block license according to an exemplary embodiment of the present description
  • Fig. 3B illustrates a license generation circuit of Fig. 3A in more detail according to an exemplary embodiment
  • FIG. 4 schematically illustrates an electronic device comprising IP licensing components according to an exemplary embodiment of the present description
  • FIGS. 5A and 5B schematically illustrate activation circuits of an IP block according to an exemplary embodiment of the present description
  • FIG. 6 schematically illustrates a measuring circuit according to an example embodiment of the present description.
  • FIG. 7 schematically illustrates a circuit attri ⁇ license bution according to another exemplary embodiment of the present disclosure.
  • IP block - a discrete hardware circuit design that performs specific functions and can be reused in a variety of different integrated circuits including FPGAs (Field Programmable Gate Systems);
  • protected circuit - a circuit that may correspond to an IP block, a set of IP blocks, or a system comprising one or more integrated circuits, protected by a mechanism such that it is in a disabled state unless be activated by an activation code;
  • FIG 1 schematically illustrates an electronic device 102 in communication with a license issuer (LICENSE ISSUER) 104.
  • the communication is via a local network.
  • the license transmitter 104 and the device 102 could be separated by a larger network such as the Internet.
  • the electronic device 102 comprises, for example, protected circuits IPI to IPN.
  • Each protected circuit is for example a complex circuit developed to perform a specific function, such as for example an image processor capable of performing image processing operations, an interface for managing standard protocols, or another circuit capable of performing advanced operations, such as a processor, a decoding coding circuit, etc.
  • each protected circuit may comprise an FPGA, the functions implemented by the protected circuit being programmed into the FPGA by a programming code.
  • the device 102 is for example an integrated circuit, and the protected circuits are IP blocks of the integrated circuit. However, in alternative embodiments, the device 102 could correspond to any electronic device, and each of the protected circuits could comprise a card or a system comprising more than one integrated circuit. In some embodiments, the device 102 is part of a product such as a mobile phone, a tablet computer, a laptop, a game console or the like, or could be a chip mounted on an IC card, which includes the family of cards known as smart cards, such as payment cards, SIM cards (subscriber identity module) or the like.
  • smart cards such as payment cards, SIM cards (subscriber identity module) or the like.
  • the device 102 may be part of a bank of similar hardware devices providing data processing resources that are available for licensed use.
  • the end user can purchase licenses allowing the use of the FPGA of the device 102 and / or the use of one or more protected IP circuits that can be programmed on the FPGA.
  • the license issuer 104 is eg commu ⁇ nication with the device 102, and acts as a generator and license provider to the device 102, which allows continuous operation of the equipment and / or one or more protected circuits .
  • each license has a limited validity period.
  • each license may be considered a token that allows operation of the device 102 and / or one or more of the protected circuits for a given duration.
  • Each license can for example provide an authorization for a given duration, such as a few seconds or minutes, or for a given number of clock cycles or operations of a processor.
  • the duration of each license may be variable, and its duration may be indicated in the license itself.
  • the license may indicate its validity, for example expressed in seconds or minutes, or as the number of clock cycles or processor operations it allows before becoming invalid.
  • the device 102 comprises, for example, a license management circuit 106, which generates license requests to the license issuer 104, receives and checks licenses issued by the license issuer 104, and activates an alert signal ALERT. to the license issuer 104 and / or to another entity in the case where there is no valid license present on the device 102.
  • the alert signal may include multiple signals.
  • the device 102 also includes a license server (LICENSE SERVER) 108, which distributes received licenses to IPI protected circuits to IPN in order to activate them.
  • the license management circuit 106 comprises, for example, a license control circuit 110, which for example receives a random value from a generator of random or random values (RANDOM VALUE GENERATOR) 112, and optionally an identifier of device (DEVICE ID) 114, and generates a seed value (SEED). This seed value is for example included in a license request message (LICENSE REQ) generated by the license control circuit 110 and sent to the license issuer 104.
  • the license control circuit 110 also stores, for example, the seed value in a seed memory (SEED MEMORY) 116.
  • the license management circuit 106 receives licenses (LICENSE) issued by the license transmitter 104, and for example stores them in a license memory (LICENSE MEMORY) 118.
  • licenses are transmitted on a network like the Internet
  • licenses are encrypted.
  • each license includes, for example, an authentication code, such as MAC code (message authentication code), which was generated by the license issuer 104 using the seed value included in the request message. license.
  • the licenses received by the license management circuit 106 are for example supplied to a license decryption and verification circuit MAC (LICENSE DECRYPTION + MAC VERIFICATION) 120, which for example decrypts the license in the case where it has been encrypted, and authenticates the license based on its authentication code and using the corresponding seed value from the seed memory 116.
  • MAC license decryption and verification circuit
  • the circuit 120 informs for example, the license control circuit 110 of the result of the authentication.
  • the license management circuit 106 also includes for example a counter (CNTR) 122 which indicates when a new license must be requested. For example, a new license is required for some time before a current license has expired to allow time for the new license to be issued before the current license expires.
  • the counter 122 includes periods of a clock signal or the like, so that the count signal can be used to determine whether it is time to apply for a new license.
  • the counter 122 may count processor cycles of one or more of the IPI protected circuits to IPN, or the number of operations performed by one or more IPI protected circuits to IPN.
  • the alert signal For example, ALERT is activated to inform the license issuer 104, and / or another entity, of the lack of a valid license.
  • a user of protected circuits IPI to IPN may be informed by the alert signal that the license has expired, and that one or more of the protected circuits will be disabled in the absence of payment for a new license before a certain deadline.
  • one or more of the protected circuits are reset and / or disabled.
  • one or more of the protected circuits are in a disabled state, and can only be activated by a verification code.
  • This verification code is for example provided with one or more of the licenses issued by the issuer 104.
  • a license containing the verification code is for example used to reactivate the protected circuits, while in the case where there is no valid license, the protected circuits remain, for example, deactivated.
  • the seed value is for example a simple concatenation of the random or pseudo-random value generated by the generator 112 with the device identifier.
  • the device identifier is for example a bit string which identifies the device 102 or a group of devices 102, and which serves for authentication.
  • the license that is provided by the license issuer 104 may for example only be used for a device having this identifier, and in some embodiments, the device identifier is unique for each device, so that a given license can only activate the protected circuits of a single device or device 102 given.
  • the device identifier is for example based on the generation of a signature which is unique for the device 102. Therefore, even if two integrated circuits are manufactured and / or programmed so as to have identical functionalities, their signatures and so on. their device IDs will be different.
  • the device identifier is for example generated or derived by a function PUF (Physically Unclonable Function English - function physically not clonable).
  • the PUF value is for example generated by a CPU (of the Central Processing Unit English) of the device 102, and / or on the basis of one or more ring oscillators mounted on the device 102.
  • a PUF value is described in more detail in the international patent application published under the number W02017 / 006058.
  • another form of device identifier may be used, such as an identifier assigned to the device by the manufacturer of the device.
  • FIG. 2 is a flowchart representing operations in a method 200 for applying a license to one or more protected circuits according to an exemplary embodiment, this method being for example implemented by the license management circuit 102 of the figure 1.
  • a step 201 it is checked when the counter value CNT_VALUE generated by the counter 122 of Figure 1 has reached a limit. Once this counter value reaches the limit, the process proceeds to a step 202.
  • a license request message is generated by the license control circuit 110 based on a new seed value provided by the random value generator 112 and optionally based on the identifier of device 114. This license request message is transmitted to the license issuer 104.
  • the new seed value transmitted in the license request is also stored by the license control circuit 110 in the seed memory 116.
  • an old seed from the seed memory is for example deleted.
  • the license control circuit 110 holds in the seed memory one or more current seed values associated with one or more valid current licenses, and one or more new seed values associated with one or more requests. license, while other seed values are removed to invalidate old licenses.
  • a new license is received in response to the license request generated in step 202.
  • This license is provided to the license decryption and verification circuit MAC 120, which decrypts the license if it is encrypted, and check the MAC transmitted in the license.
  • a step 206 it is then determined whether the MAC is valid or not. If not, the warning signal is for example generated by the license control circuit 110 in an operation 207. On the other hand, if the license is valid, in a step 208, the license control circuit 110 deletes, for example, the old license of the license memory 118. In addition, in the case where the license contains information concerning its period of validity, this information is for example provided by the license holder. license decryption and verification circuit MAC 120 to the license control circuit 110, which uses this information to determine the account limit for requesting a next license.
  • Figure 3A schematically illustrates a system 300 for authentication and licensing of protected circuits according to an exemplary embodiment of the present description.
  • Some of the elements of the system 300 are similar to elements of the system 100 of FIG. 1, and such elements bear the same numerical references, and will not be described again in detail.
  • some or all of the licenses generated by the license transmitter 104 include a verification code to activate protected circuits of the device 102, as will now be described.
  • the system 300 includes hardware associated with three main parts, the license issuer (LICENSE ISSUER) 104, a trusted third party (TTP) and an end user (END USER).
  • the issuer 104 may be the IP seller, or perhaps in communication with one or more IP sellers.
  • the protection is for example based on a unitary activation of one or more protected circuits.
  • the end user may have purchased the device 102.
  • the end user may be licensing the use of the device 102, for example through a third party serving as an intermediary.
  • said one or more IP blocks (IP) on the device 102 are for example initially in a deactivated state before any valid license has been received.
  • the end user activates the disabled IP blocks by requesting a license from the license issuer or the TTP.
  • the activation may be performed by another party in the supply chain, such as designer of the integrated circuit, or a seller of a product containing device 102.
  • Some of the protected circuits may be permanently enabled by an initial license, or remain enabled until a subsequent reset of the device 102. This is because the particular activation type (permanent, until a subsequent reset, for a period limited) may be different for each protected circuit of the device.
  • the method described here can be used to activate a single IP block, it can also be applied more generally to the activation of any protected circuit, which can correspond to all IP blocks. a given device, to an IP block in another IP block and / or to an IP block comprising another IP block, to a system or an IC card, to the activation of all the circuits in a design using an IP technology.
  • the license could be used to enable or disable only a subset of the functions of an IP block.
  • a database (RTL) 304 stores for example one or more IP blocks represented in a hardware description language such as the ordinary code RTL (transfer level of registers).
  • An IP (IP PROTECTOR) protection block 306 includes, for example, software for performing an IP protection function, which is used to modify one or more of the IP blocks from the database 304 to render the circuit inactive.
  • the IP block is altered so that an activation code is required to unlock its features.
  • this step can be performed entirely automatically, although in other modes of realization it can be performed at least partially manually, for example by a designer of the IP block.
  • the modification of the IP block implies for example the insertion, in the hardware description file, of one or more logic gates in one or more signal paths of the IP block.
  • these logic gates allow for example the propagation of the unaltered signal along the signal path only if one or more correct activation bits are provided to one or more input nodes of the logic gates inserted.
  • the activation code may be unique for a given IP design. In other embodiments, the same activation code may be used for more than one IP design. In addition, in some embodiments, there may be more than one activation code to activate an IP block. This can for example facilitate the license generation operation.
  • a circuit for managing the IP license which will be called here license client (not shown in Figure 3A) is for example added to each IP block to protect.
  • the license client includes, for example, a register for storing the activation code once a valid license has been provided.
  • the license client is integrated into each IP block, although as described in more detail below, each license client may also be external to the corresponding IP block.
  • the files representing the modified IP blocks are for example also protected by encryption.
  • the activation codes, and optionally some or all of the modified IP blocks, are for example stored in a database (PROTECTED IP) 308 of the issuer.
  • the license generation task including activation codes has been delegated by one or more IP sellers to the license issuer 104.
  • the IP blocks Modified are also provided to a designer of the device 102 so that, as shown by an arrow 310 in Figure 3A, one or more protected IP blocks are implemented as hardware in the device 102.
  • the designer The integrated circuit circuitry together various different IP blocks to form an integrated circuit, and one or more of these IP blocks correspond for example to IP blocks protected by an activation code as has been described here.
  • the modified IP blocks are programmed in an FPGA of the device 102.
  • the licenses provided to the device 102 include, for example, a verification code.
  • the term "verification code” is used here to refer to a code that is communicated with the license and allows one or more IP blocks to be activated. This code can be the activation code for one or more IP blocks.
  • the activation code is already stored in a protected memory, for example a ROM, of the IP block, and the activation code is not included in the license.
  • the verification code is a secret code communicated with the license to the IP block that allows the activation code to be loaded from the protected memory into the activation code register.
  • a temporary license may be provided to the IC designer for design and / or testing purposes.
  • the device 102 comprises, for example, a license management circuit 106 coupled to the protected circuit.
  • the value of the device identifier is read for example by reading a value generated by a PUF circuit or the like.
  • the PUF value may change over time due to aging of the integrated circuit, and / or due to other factors such as the environment (temperature, voltage, etc.).
  • at least a portion of the generated PUF value is stored in nonvolatile memory, and / or an error correction code is generated to correct the PUF value if some bits of the PUF value deviate from their original value.
  • the device identifier is also made available to an access port of the device 102, or otherwise communicated outside the device 102, and is used, for example, to request some or all of the licenses to enable protected IP blocks.
  • a separate license is generated for each IP block to be activated.
  • a license may be generated to activate a plurality of IP blocks.
  • the verification code or codes (CHECK CODE) 315 for unlocking the protected IP block (s) of the device 102 are for example supplied to a license generator (LICENSE GENERATOR) 316 of the license transmitter 104.
  • the license generator 316 is used to generate a license (LICENSE), which is for example transmitted to the license management circuit 106 of the device 102.
  • the license generator 316 for example receives the seed value from the device 102, and generates the license on the device. basis of this seed value and the verification code (s).
  • the license also incorporates Design Rights Management (DRM) data 320.
  • DRM Design Rights Management
  • the DRM data indicates a particular limit on the duration of activation of a block. IP. For example, they may indicate that the license for a particular protected circuit is valid for a certain period of time, such as a period of seconds or minutes. They may also indicate a limitation of the license to one or more types of hardware, such as ASIC technology, an FPGA family, or specific features of an IP block that need to be unlocked. The type of hardware of the circuit can for example be determined by a specific sensor, and compared to one or more types of authorized hardware to limit the use of the IP block to these types of hardware.
  • the DRM data of the license may define limiting data indicating license limits based on other variables that may be measured by sensors of the device.
  • the DRM data can for example be checked and applied only once, on an initial activation of one or more IP circuits based on the verification code. Alternatively, DRM data could be verified and applied each time a new license including DRM data is received from the license issuer 104.
  • the DRM data modifies the verification code.
  • the verification code includes the activation code, and some bits of the activation code are not provided or are incorrect so that only part of the IP block is activated by the code of activation. activation.
  • other techniques could be used, techniques that are not based on bit-by-bit activation / deactivation of the IP block.
  • FIG. 3B illustrates the license generator 316 in more detail according to an example embodiment.
  • the license generator 316 includes, for example, a key deduction function block (KDF1) 322, which generates a device key based on the seed value (SEED) provided by the device 102.
  • the license generator 316 comprises also for example a cryptographic circuit (CRYPTO) 324, which applies the device key to the code or verification codes IP blocks to activate, to generate the license.
  • the cryptographic circuit 324 encodes the verification code (s) based on the device key by applying an encryption algorithm such as that of the Data Encryption Standard (DES) of the AES standard. (Advance Encryption Standard - standard advanced encryption) or similar.
  • DES Data Encryption Standard
  • AES Advanced Encryption Standard
  • DRM data can also be encrypted and be part of the license.
  • the verification code (s) may be encrypted by the IP vendor using an IP vendor key (IP VENDOR KEY), and the key of IP seller is also for example stored by the IP vendor in the IP block, to decrypt the verification code or codes. In this way, even the issuer 104 can not access the verification codes.
  • IP VENDOR KEY IP vendor key
  • the generated license is then provided to the device 102.
  • a symmetric encryption / decryption algorithm is used to encrypt the license by the license generator 316 using the device key, and then to decrypt the license at the device level. device 102, so that if the keys are identical, the verification code will be recovered successfully.
  • FIG. 4 schematically illustrates licensing components of the device 102 of FIG. 3A in more detail according to an exemplary embodiment, in the case where the communication between the license server 108 and the IPs is based on a client-client configuration. server.
  • a network on chip NoC
  • the communications between the license server 108 and the IPs are for example made secure by using encryption. Examples of implementation of the communications interface between the license server 108 and the IPs are for example described in more detail in the international patent application published under the number W02017 / 006058.
  • a JTAG interface (of the English Joined Test Action Group) is for example used to transmit the license received from the license generator 316 to a license memory.
  • (LICENSE MEMORY) 108 of the device 102 is for example used to transmit the license received from the license generator 316 to a license memory.
  • the memory 118 is for example a RAM (random access memory).
  • the license memory 118 is, for example, internally coupled to the license server 108.
  • the license server 108 communicates, for example, via a license bus (LICENSE BUS) 404, with the protected IP blocks 406.
  • a license bus (LICENSE BUS) 404
  • the license bus 404 is coupled to a client license circuit (LICENSE CLIENT) 408 associated with each IP block 406, which in turn is coupled to the remainder of the IP block 406, bearing the name IP core (IP CORE) 410 in FIG. 4.
  • IP CORE IP core
  • N cores IP 1 to N, N being for example equal to an integer equal to or greater than 2.
  • each license client 408 of each IP block 406 for example checks the license, and on the basis of this verification, provides the activation code to the corresponding IP core in order to activate its functionalities.
  • each license client 408 includes an activation code register 412 in which the activation code is loaded if the license is found to be valid.
  • Register 412 of each license client is coupled to the corresponding IP 410 core to activate its features.
  • FIGS. 5A and 5B illustrate circuit examples used to make the activation of the IP blocks dependent on one or more bits of an activation code, by inserting logic gates in a signal path of the IP block.
  • a circuit portion of the IP block represented by a cloud 502 provides an output signal on a line 504, which is coupled to the input of a synchronous logic device (A) 506.
  • A synchronous logic device
  • an activation circuit 508 is inserted between the output line 504 and the input of the synchronous device 506.
  • the circuit 508 comprises for example an inverter (NOT) 510 having its entry coupled to the line 504, and its output coupled to an input of an EXCLUSIVE OR (XOR) gate 512.
  • NOT inverter
  • XOR EXCLUSIVE OR
  • the other input of the EXCLUSIVE OR gate 512 receives an en_a activation bit, which must be high in order to allow the data signal present on the line 504 to propagate to the synchronous device 506.
  • FIG. 5B illustrates another example of an activation circuit 518 inserted in the same signal path as in the example of FIG. 5A.
  • circuit 518 includes an EXCLUSIVE OR (XOR) gate 520 having an input coupled to line 504, and its other input coupled to receive an en_b activation bit.
  • the activation bit should be low to allow the signal on the line 504 to propagate to the input of the synchronous device (B) 506.
  • FIGS. 5A and 5B illustrate examples of circuits that can be inserted to activate circuit portions of IP blocks based on high and low activation bits respectively. Similar circuits can be inserted at various points in the IP block, so that the IP block will not operate without the correct activation code.
  • Figures 5A and 5B simply provide some examples of logic gates that can be used to protect the IP block, and many different logic functions could be implemented based on the same principles.
  • the insertion is performed randomly, so that the activation code is a random value, and does not depend on the function of the underlying circuit. In alternative embodiments, the insertion could be nonrandom.
  • the circuit 508 is used in the case of activation by a "1" bit of the activation code, and that the circuit 518 is used in the case of activation by a bit at "0" of the activation code, in alternative embodiments there are multiple different circuits which are used in the case of a bit activation at "1” and "0", and the selection between these circuits is random.
  • the license management circuit 106 of Figure 1 is further arranged to implement a measurement method as will now be described in more detail with reference to FIGS.
  • FIG. 6 schematically illustrates a measurement circuit 602 according to an example embodiment of the present description.
  • the circuit 602 is for example implemented on the device 102 in order to periodically supply usage measurement data to the issuer 104.
  • the usage measurement data correspond, for example, to data concerning the activity of the device. one or more of the protected circuits (IP).
  • the circuit 602 comprises N METERING COUNTER IPI (METERING COUNTER IPN) 604, which respectively receive EVENT IPI event signals to EVENT IPN from the corresponding protected circuits IPI to IPN.
  • event signals indicate when an event occurs regarding the activity of the circuit.
  • an event could be one or more image processing operations, processing one or more packets, executing one or more instructions, and so on.
  • the counter values generated by the measurement meters 604 are for example supplied to a usage measurement data generator 606, which uses the usage measurement data to periodically generate M_DATA usage measurement data.
  • the usage measurement data corresponds to a count of the events counted by each of the counters 604 during a given time interval.
  • usage measurement data M_DATA is supplied to the license control circuit 110 of the license management circuit 106 of FIG. 1, and new utilization measurement data are for example generated and incorporated in each message of FIG. license application.
  • usage measurement data may be used to determine the validity period of each license, instead of or in addition to the counter 122.
  • usage measurement data could be transmitted independently of the license applications.
  • FIG. 7 schematically illustrates a device licensing and measurement system 700 according to an exemplary embodiment of the present disclosure.
  • the elements of FIG. 7 which are similar to elements of FIG. 1 have the same reference numerals and will not be described again in detail.
  • the device 102 comprises the license management circuit 106 and a software design kit (SDK) 702.
  • SDK 702 for example provides a software layer to control the communications between the circuit 106 and
  • the license driver 106 generates, for example, periodic license request messages, each comprising a status signal (STATUS), the seed value (SEED) and usage measurement data M_DATA.
  • STATUS status signal
  • SEED seed value
  • M_DATA usage measurement data
  • the SDK 702 transmits the license request messages to the license issuer 104, which in this example includes a usage measurement data storage (LICENSE ISSUER AND METERING DATA STORAGE).
  • the transmitter 104 extracts the usage measurement data, which may for example be used for billing purposes, and returns the requested license, which is transmitted by the SDK 702 to the license management circuit 106.
  • each license request further indicates a user identifier and / or a session identifier associated with the use of the device 102, allowing for example a user account to be associated with the data. measurement of use and / or the license application.
  • counters that count upward have been described in the various embodiments, it will be apparent to those skilled in the art that one or more counters could instead count down.
  • the counter 122 could be initialized to a counter value based on the validity period of a license, and the renewal or expiration of the license could be triggered when that counter reaches zero.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Tests Of Electronic Circuits (AREA)

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.

Description

SYSTEME ET PROCEDE DE LICENCE ET DE MESURE D’UTILISATION D’UN  SYSTEM AND METHOD FOR LICENSING AND MEASURING THE USE OF A
BLOC IP  IP BLOCK
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. The present patent application claims the priority of the French patent application FR17 / 61778 which will be considered as an integral part of the present description.
Domaine de l'invention Field of the 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.  The present disclosure relates to the field of integrated circuits and in particular to a method and system for authentication and licensing of IP blocks (Intellectual Property) in an integrated circuit, or more generally authentication and licensing of any circuit or system. The present disclosure also relates to methods and systems for measuring the use of IP blocks.
Exposé de l'art antérieur  Presentation of the prior art
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. Integrated circuits generally include a set of circuit blocks known in the art as IP blocks (intellectual property). IP blocks are designs of discrete hardware circuits that perform specific functions and can be reused in a variety of different integrated circuits. IP blocks in a given integrated circuit (IC) are generally allocated in the form of license to IC designers by IP block rights holders.
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.  IP blocks are generally provided to the designers of integrated circuits in the form of software, for example in a hardware description language such as RTL (Register Transfer Level), Verilog or VHDL (from English High-speed integrated circuit Hardware Description Language - hardware description language for high-speed integrated circuits. IP rights holders often license integrated circuit designers to use their IP block in a limited number of integrated circuits and / or a limited number of projects, or claim royalties for each integrated circuit and / or project that incorporate the IP block.
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 .  In some applications, it would be desirable to provide a license for IP blocks and / or hardware circuits for a limited time. However, existing solutions tend to be complex, expensive and / or not sufficiently secure.
Résumé  summary
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.  An object of embodiments of the present disclosure is to at least partially solve one or more problems of the prior art.
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. In one aspect, there is provided an integrated circuit comprising: one or more protected circuits; a license control circuit arranged to request a license issuer to license said one or more protected circuits, the license application including a seed value; and a cryptographic circuit arranged to verify the authenticity of a license received from the license issuer on the basis of the seed value, the license control circuit being arranged to impose a validity limit on the license received, and to request a new license from the license issuer before the validity limit of the license received. According to one embodiment, the integrated circuit further comprises a seed memory arranged for storing one or more of the seed values.
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.  According to one embodiment, the license control circuit is arranged to delete in the seed memory seed values associated with invalid licenses.
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.  According to one embodiment, the received license includes a message authentication code and the crypto circuit is arranged to verify the authenticity of the license by verifying the message authentication code using the seed value stored in the message. germ memory.
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.  According to one embodiment, the integrated circuit further comprises a random value generator adapted to generate a random or pseudo-random value, the license control circuit being arranged to generate the seed value on the basis of the random value or pseudorandom.
Selon un mode de réalisation, la valeur de germe comprend un identifiant de dispositif identifiant le circuit intégré .  According to one embodiment, the seed value comprises a device identifier identifying the integrated circuit.
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 .  According to one embodiment, the license includes a verification code, the integrated circuit further comprising a circuit activation module adapted to activate a first one of said one or more protected circuits by loading an activation code into a registration register. activation associated with the first protected circuit based on verification of the verification code.
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.  According to one embodiment, the cryptographic circuit is further adapted to derive a device key from the seed value and decrypt the received license using the device key to retrieve the verification code.
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. According to one embodiment, the integrated circuit further comprises a usage measurement data generator arranged to receive one or more counter values concerning the activity of said one or more protected circuits, and to generate usage measurement data based on said one or more counter values.
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.  According to one embodiment, the license control circuit is further arranged to: include usage measurement data in the application for a new license to the issuer; and / or determine the validity limit of a license received based on usage measurement data.
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.  In one aspect, there is provided a method of applying a license to one or more protected circuits of an integrated circuit, the method comprising: requesting, from a license issuer, a license to activate said one or more protected circuits, the license application including a seed value; verify the authenticity of a license received from the license issuer based on the seed value; and impose a validity limit on the license received and request a new license from the license issuer before the validity limit of the license received.
Brève description des dessins  Brief description of the drawings
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 :  The foregoing and other features and advantages will become apparent with the following detailed description of embodiments, given by way of illustration and not limitation, with reference to the accompanying drawings in which:
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 ;  FIG. 1 schematically illustrates an electronic device in communication with a license issuer according to an example embodiment of the present 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 ;  FIG. 2 is a flowchart illustrating operations in a method of protecting one or more circuits of an integrated circuit according to an exemplary embodiment of the present 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 ; Figure 3A schematically illustrates a system for assigning an IP block license according to an exemplary embodiment of the present description; Fig. 3B illustrates a license generation circuit of Fig. 3A in more detail according to an exemplary embodiment;
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 ;  FIG. 4 schematically illustrates an electronic device comprising IP licensing components according to an exemplary embodiment of the present 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 ;  FIGS. 5A and 5B schematically illustrate activation circuits of an IP block according to an exemplary embodiment of the present description;
la figure 6 illustre schématiquement un circuit de mesure selon un exemple de réalisation de la présente description ; et  FIG. 6 schematically illustrates a measuring circuit according to an example embodiment of the present description; and
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. 7 schematically illustrates a circuit attri ¬ license bution according to another exemplary embodiment of the present disclosure.
Description détaillée  detailed description
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.  Although in the following description some embodiments are described as being implemented in hardware, it will be apparent to those skilled in the art that the various embodiments could be at least partially implemented by software instructions executed by one or more processors.
Dans la description qui suit, les termes suivants se verront attribuer les définitions suivantes :  In the description that follows, the following terms will be given the following definitions:
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) ;  IP block - a discrete hardware circuit design that performs specific functions and can be reused in a variety of different integrated circuits including FPGAs (Field Programmable Gate Systems);
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  protected circuit - a circuit that may correspond to an IP block, a set of IP blocks, or a system comprising one or more integrated circuits, protected by a mechanism such that it is in a disabled state unless be activated by an activation code; and
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. random or pseudo-random value - any numerical value that is unpredictable or difficult to predict. Figure 1 schematically illustrates an electronic device 102 in communication with a license issuer (LICENSE ISSUER) 104. For example, the communication is via a local network. Alternatively, in some embodiments, the license transmitter 104 and the device 102 could be separated by a larger network such as the 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.  The electronic device 102 comprises, for example, protected circuits IPI to IPN. Each protected circuit is for example a complex circuit developed to perform a specific function, such as for example an image processor capable of performing image processing operations, an interface for managing standard protocols, or another circuit capable of performing advanced operations, such as a processor, a decoding coding circuit, etc. In some embodiments, each protected circuit may comprise an FPGA, the functions implemented by the protected circuit being programmed into the FPGA by a programming code.
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.  The device 102 is for example an integrated circuit, and the protected circuits are IP blocks of the integrated circuit. However, in alternative embodiments, the device 102 could correspond to any electronic device, and each of the protected circuits could comprise a card or a system comprising more than one integrated circuit. In some embodiments, the device 102 is part of a product such as a mobile phone, a tablet computer, a laptop, a game console or the like, or could be a chip mounted on an IC card, which includes the family of cards known as smart cards, such as payment cards, SIM cards (subscriber identity module) or the like.
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. In other embodiments, the device 102 may be part of a bank of similar hardware devices providing data processing resources that are available for licensed use. For example, in in the case where the device 102 comprises an FPGA, the end user can purchase licenses allowing the use of the FPGA of the device 102 and / or the use of one or more protected IP circuits that can be programmed on the 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 . The license issuer 104 is eg commu ¬ nication with the device 102, and acts as a generator and license provider to the device 102, which allows continuous operation of the equipment and / or one or more protected circuits . For example, each license has a limited validity period. In some embodiments, each license may be considered a token that allows operation of the device 102 and / or one or more of the protected circuits for a given duration. Each license can for example provide an authorization for a given duration, such as a few seconds or minutes, or for a given number of clock cycles or operations of a processor. Alternatively, the duration of each license may be variable, and its duration may be indicated in the license itself. For example, the license may indicate its validity, for example expressed in seconds or minutes, or as the number of clock cycles or processor operations it allows before becoming invalid.
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.  The device 102 comprises, for example, a license management circuit 106, which generates license requests to the license issuer 104, receives and checks licenses issued by the license issuer 104, and activates an alert signal ALERT. to the license issuer 104 and / or to another entity in the case where there is no valid license present on the device 102. In some embodiments, the alert signal may include multiple signals.
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. In some embodiments described in more detail below, the device 102 also includes a license server (LICENSE SERVER) 108, which distributes received licenses to IPI protected circuits to IPN in order to activate them. The license management circuit 106 comprises, for example, a license control circuit 110, which for example receives a random value from a generator of random or random values (RANDOM VALUE GENERATOR) 112, and optionally an identifier of device (DEVICE ID) 114, and generates a seed value (SEED). This seed value is for example included in a license request message (LICENSE REQ) generated by the license control circuit 110 and sent to the license issuer 104. The license control circuit 110 also stores, for example, the seed value in a seed memory (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.  The license management circuit 106 receives licenses (LICENSE) issued by the license transmitter 104, and for example stores them in a license memory (LICENSE MEMORY) 118. In some embodiments in which the licenses are transmitted on a network like the Internet, licenses are encrypted. In addition, each license includes, for example, an authentication code, such as MAC code (message authentication code), which was generated by the license issuer 104 using the seed value included in the request message. license.
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.  The licenses received by the license management circuit 106 are for example supplied to a license decryption and verification circuit MAC (LICENSE DECRYPTION + MAC VERIFICATION) 120, which for example decrypts the license in the case where it has been encrypted, and authenticates the license based on its authentication code and using the corresponding seed value from the seed memory 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 . In the case where the seed value used to generate the authentication code by the license issuer 104 matches the seed value stored in the seed memory 116, the license will be authenticated successfully. However, in the case of a discrepancy between these seed values, authen ¬ tification will fail. In any case, the circuit 120 informs for example, the license control circuit 110 of the result of the authentication.
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.  The license management circuit 106 also includes for example a counter (CNTR) 122 which indicates when a new license must be requested. For example, a new license is required for some time before a current license has expired to allow time for the new license to be issued before the current license expires. In some embodiments, the counter 122 includes periods of a clock signal or the like, so that the count signal can be used to determine whether it is time to apply for a new license. Alternatively, the counter 122 may count processor cycles of one or more of the IPI protected circuits to IPN, or the number of operations performed by one or more IPI protected circuits to 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.  In the case where the counter 122 indicates that a current license has expired without a new license having been received, or in the case of a received license authentication failure indicated by the circuit 120, the alert signal For example, ALERT is activated to inform the license issuer 104, and / or another entity, of the lack of a valid license. For example, a user of protected circuits IPI to IPN may be informed by the alert signal that the license has expired, and that one or more of the protected circuits will be disabled in the absence of payment for a new license before a certain deadline.
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. In addition or instead, in the absence of a valid license, one or more of the protected circuits are reset and / or disabled. For example, following manufacture, or following a reset, one or more of the protected circuits are in a disabled state, and can only be activated by a verification code. This verification code is for example provided with one or more of the licenses issued by the issuer 104. Following a reset operation, a license containing the verification code is for example used to reactivate the protected circuits, while in the case where there is no valid license, the protected circuits remain, for example, deactivated.
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.  The seed value is for example a simple concatenation of the random or pseudo-random value generated by the generator 112 with the device identifier. The device identifier is for example a bit string which identifies the device 102 or a group of devices 102, and which serves for authentication. The license that is provided by the license issuer 104 may for example only be used for a device having this identifier, and in some embodiments, the device identifier is unique for each device, so that a given license can only activate the protected circuits of a single device or device 102 given. The device identifier is for example based on the generation of a signature which is unique for the device 102. Therefore, even if two integrated circuits are manufactured and / or programmed so as to have identical functionalities, their signatures and so on. their device IDs will be different.
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.  The device identifier is for example generated or derived by a function PUF (Physically Unclonable Function English - function physically not clonable). The PUF value is for example generated by a CPU (of the Central Processing Unit English) of the device 102, and / or on the basis of one or more ring oscillators mounted on the device 102. a PUF value is described in more detail in the international patent application published under the number W02017 / 006058. In an alternative to a PUF, another form of device identifier may be used, such as an identifier assigned to the device by the manufacturer of the device.
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. FIG. 2 is a flowchart representing operations in a method 200 for applying a license to one or more protected circuits according to an exemplary embodiment, this method being for example implemented by the license management circuit 102 of the figure 1. In a step 201, it is checked when the counter value CNT_VALUE generated by the counter 122 of Figure 1 has reached a limit. Once this counter value reaches the limit, the process proceeds to a step 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.  In step 202, a license request message is generated by the license control circuit 110 based on a new seed value provided by the random value generator 112 and optionally based on the identifier of device 114. This license request message is transmitted to the license issuer 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.  In a step 203, the new seed value transmitted in the license request is also stored by the license control circuit 110 in the seed memory 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 .  In a step 204, an old seed from the seed memory is for example deleted. For example, in some cases, the license control circuit 110 holds in the seed memory one or more current seed values associated with one or more valid current licenses, and one or more new seed values associated with one or more requests. license, while other seed values are removed to invalidate old licenses.
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.  In a step 205, a new license is received in response to the license request generated in step 202. This license is provided to the license decryption and verification circuit MAC 120, which decrypts the license if it is encrypted, and check the MAC transmitted in the license.
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 . In a step 206, it is then determined whether the MAC is valid or not. If not, the warning signal is for example generated by the license control circuit 110 in an operation 207. On the other hand, if the license is valid, in a step 208, the license control circuit 110 deletes, for example, the old license of the license memory 118. In addition, in the case where the license contains information concerning its period of validity, this information is for example provided by the license holder. license decryption and verification circuit MAC 120 to the license control circuit 110, which uses this information to determine the account limit for requesting a next license.
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 .  Figure 3A schematically illustrates a system 300 for authentication and licensing of protected circuits according to an exemplary embodiment of the present description. Some of the elements of the system 300 are similar to elements of the system 100 of FIG. 1, and such elements bear the same numerical references, and will not be described again in detail.
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.  In the system 300, some or all of the licenses generated by the license transmitter 104 include a verification code to activate protected circuits of the device 102, as will now be described.
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.  The system 300 includes hardware associated with three main parts, the license issuer (LICENSE ISSUER) 104, a trusted third party (TTP) and an end user (END USER). In some embodiments, the issuer 104 may be the IP seller, or perhaps in communication with one or more IP sellers. The protection is for example based on a unitary activation of one or more protected circuits.
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.  The end user may have purchased the device 102. Alternatively, the end user may be licensing the use of the device 102, for example through a third party serving as an intermediary.
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. According to the embodiments described herein, said one or more IP blocks (IP) on the device 102, corresponding to the IPI IPN devices of FIG. 1, are for example initially in a deactivated state before any valid license has been received. The end user activates the disabled IP blocks by requesting a license from the license issuer or the TTP. However, in alternative embodiments, rather than by the end user, the activation may be performed by another party in the supply chain, such as designer of the integrated circuit, or a seller of a product containing device 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.  Some of the protected circuits may be permanently enabled by an initial license, or remain enabled until a subsequent reset of the device 102. This is because the particular activation type (permanent, until a subsequent reset, for a period limited) may be different for each protected circuit of the device. In addition, although the method described here can be used to activate a single IP block, it can also be applied more generally to the activation of any protected circuit, which can correspond to all IP blocks. a given device, to an IP block in another IP block and / or to an IP block comprising another IP block, to a system or an IC card, to the activation of all the circuits in a design using an IP technology. Given ASIC (application specific integrated circuit), activation of a given family of FPGAs, activation of FPGAs manufactured by a given manufacturer, etc. It could also be applied at the system level. In addition, in some embodiments, the license could be used to enable or disable only a subset of the functions of an IP block.
On va maintenant décrire plus en détail un exemple du procédé pour protéger et activer un bloc IP.  An example of the method for protecting and activating an IP block will now be described in more detail.
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) .  At the level of the issuer 104, a database (RTL) 304 stores for example one or more IP blocks represented in a hardware description language such as the ordinary code RTL (transfer level of registers).
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. An IP (IP PROTECTOR) protection block 306 includes, for example, software for performing an IP protection function, which is used to modify one or more of the IP blocks from the database 304 to render the circuit inactive. In particular, the IP block is altered so that an activation code is required to unlock its features. In some embodiments, this step can be performed entirely automatically, although in other modes of realization it can be performed at least partially manually, for example by a designer of the IP block. As will be described in more detail below, the modification of the IP block implies for example the insertion, in the hardware description file, of one or more logic gates in one or more signal paths of the IP block. These logic gates allow for example the propagation of the unaltered signal along the signal path only if one or more correct activation bits are provided to one or more input nodes of the logic gates inserted. In some embodiments, the activation code may be unique for a given IP design. In other embodiments, the same activation code may be used for more than one IP design. In addition, in some embodiments, there may be more than one activation code to activate an IP block. This can for example facilitate the license generation operation.
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 .  A circuit for managing the IP license, which will be called here license client (not shown in Figure 3A) is for example added to each IP block to protect. As will be described in more detail below, the license client includes, for example, a register for storing the activation code once a valid license has been provided. In some embodiments, the license client is integrated into each IP block, although as described in more detail below, each license client may also be external to the corresponding IP block.
Dans certains modes de réalisation, les fichiers représentant les blocs IP modifiés sont par exemple aussi protégés par chiffrement.  In some embodiments, the files representing the modified IP blocks are for example also protected by encryption.
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. The activation codes, and optionally some or all of the modified IP blocks, are for example stored in a database (PROTECTED IP) 308 of the issuer. For example, the license generation task including activation codes has been delegated by one or more IP sellers to the license issuer 104. The IP blocks Modified are also provided to a designer of the device 102 so that, as shown by an arrow 310 in Figure 3A, one or more protected IP blocks are implemented as hardware in the device 102. In particular, the designer The integrated circuit circuitry together various different IP blocks to form an integrated circuit, and one or more of these IP blocks correspond for example to IP blocks protected by an activation code as has been described here. In a variant, the modified IP blocks are programmed in an FPGA of the device 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.  Some or all of the licenses provided to the device 102 include, for example, a verification code. The term "verification code" is used here to refer to a code that is communicated with the license and allows one or more IP blocks to be activated. This code can be the activation code for one or more IP blocks. In alternative embodiments, the activation code is already stored in a protected memory, for example a ROM, of the IP block, and the activation code is not included in the license. In this case, the verification code is a secret code communicated with the license to the IP block that allows the activation code to be loaded from the protected memory into the activation code register. In some embodiments, a temporary license may be provided to the IC designer for design and / or testing purposes.
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é.  As has been described with reference to FIG. 1, the device 102 comprises, for example, a license management circuit 106 coupled to the protected circuit.
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. When the device 102 is activated for the first time after its manufacture and / or programming, the value of the device identifier is read for example by reading a value generated by a PUF circuit or the like. In some cases, the PUF value may change over time due to aging of the integrated circuit, and / or due to other factors such as the environment (temperature, voltage, etc.). In In some embodiments, in view of a potential change in the PUF value, at least a portion of the generated PUF value is stored in nonvolatile memory, and / or an error correction code is generated to correct the PUF value if some bits of the PUF value deviate from their original value. The device identifier is also made available to an access port of the device 102, or otherwise communicated outside the device 102, and is used, for example, to request some or all of the licenses to enable protected IP blocks.
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 .  In some embodiments, a separate license is generated for each IP block to be activated. Alternatively, a license may be generated to activate a plurality of IP blocks. The verification code or codes (CHECK CODE) 315 for unlocking the protected IP block (s) of the device 102 are for example supplied to a license generator (LICENSE GENERATOR) 316 of the license transmitter 104. The license generator 316 is used to generate a license (LICENSE), which is for example transmitted to the license management circuit 106 of the device 102. The license generator 316 for example receives the seed value from the device 102, and generates the license on the device. basis of this seed value and the verification code (s).
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. In some embodiments, the license also incorporates Design Rights Management (DRM) data 320. The DRM data, for example, indicates a particular limit on the duration of activation of a block. IP. For example, they may indicate that the license for a particular protected circuit is valid for a certain period of time, such as a period of seconds or minutes. They may also indicate a limitation of the license to one or more types of hardware, such as ASIC technology, an FPGA family, or specific features of an IP block that need to be unlocked. The type of hardware of the circuit can for example be determined by a specific sensor, and compared to one or more types of authorized hardware to limit the use of the IP block to these types of hardware. In addition, in addition to or instead, the DRM data of the license may define limiting data indicating license limits based on other variables that may be measured by sensors of the device.
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.  The DRM data can for example be checked and applied only once, on an initial activation of one or more IP circuits based on the verification code. Alternatively, DRM data could be verified and applied each time a new license including DRM data is received from the license issuer 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.  In some embodiments, the DRM data modifies the verification code. For example, in some embodiments, the verification code includes the activation code, and some bits of the activation code are not provided or are incorrect so that only part of the IP block is activated by the code of activation. activation. In other embodiments, other techniques could be used, techniques that are not based on bit-by-bit activation / deactivation of the IP block.
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. Figure 3B illustrates the license generator 316 in more detail according to an example embodiment. The license generator 316 includes, for example, a key deduction function block (KDF1) 322, which generates a device key based on the seed value (SEED) provided by the device 102. The license generator 316 comprises also for example a cryptographic circuit (CRYPTO) 324, which applies the device key to the code or verification codes IP blocks to activate, to generate the license. For example, the cryptographic circuit 324 encodes the verification code (s) based on the device key by applying an encryption algorithm such as that of the Data Encryption Standard (DES) of the AES standard. (Advance Encryption Standard - standard advanced encryption) or similar. DRM data can also be encrypted and be part of the license.
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 .  As shown by a block 328 (CRYPTO), in some embodiments, the verification code (s) may be encrypted by the IP vendor using an IP vendor key (IP VENDOR KEY), and the key of IP seller is also for example stored by the IP vendor in the IP block, to decrypt the verification code or codes. In this way, even the issuer 104 can not access the verification codes.
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.  The generated license is then provided to the device 102. In some embodiments, a symmetric encryption / decryption algorithm is used to encrypt the license by the license generator 316 using the device key, and then to decrypt the license at the device level. device 102, so that if the keys are identical, the verification code will be recovered successfully.
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.  FIG. 4 schematically illustrates licensing components of the device 102 of FIG. 3A in more detail according to an exemplary embodiment, in the case where the communication between the license server 108 and the IPs is based on a client-client configuration. server. However, in alternative embodiments, other types of communication configurations would be possible, such as a network on chip (NoC), or a multicast or broadcast protocol. The communications between the license server 108 and the IPs are for example made secure by using encryption. Examples of implementation of the communications interface between the license server 108 and the IPs are for example described in more detail in the international patent application published under the number 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. As illustrated in FIG. 4, a JTAG interface (of the English Joined Test Action Group) is for example used to transmit the license received from the license generator 316 to a license memory. (LICENSE MEMORY) 108 of the device 102. Of course, it would be possible to use other interface standards, such as a USB interface (universal serial bus). The memory 118 is for example a RAM (random access memory). The license memory 118 is, for example, internally coupled to the license server 108. The license server 108 communicates, for example, via a license bus (LICENSE BUS) 404, with the protected IP blocks 406. In the example of FIG. 4, the license bus 404 is coupled to a client license circuit (LICENSE CLIENT) 408 associated with each IP block 406, which in turn is coupled to the remainder of the IP block 406, bearing the name IP core (IP CORE) 410 in FIG. 4. In the example of FIG. 4, there are N cores IP, 1 to N, N being for example equal to an integer equal to or greater than 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 .  The license client 408 of each IP block 406 for example checks the license, and on the basis of this verification, provides the activation code to the corresponding IP core in order to activate its functionalities. For example, each license client 408 includes an activation code register 412 in which the activation code is loaded if the license is found to be valid. Register 412 of each license client is coupled to the corresponding IP 410 core to activate its features.
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.  FIGS. 5A and 5B illustrate circuit examples used to make the activation of the IP blocks dependent on one or more bits of an activation code, by inserting logic gates in a signal path of the IP block.
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. In the example of FIG. 5A, a circuit portion of the IP block represented by a cloud 502 provides an output signal on a line 504, which is coupled to the input of a synchronous logic device (A) 506. to make the activation of the output line 504 dependent on an activation bit, an activation circuit 508 is inserted between the output line 504 and the input of the synchronous device 506. The circuit 508 comprises for example an inverter (NOT) 510 having its entry coupled to the line 504, and its output coupled to an input of an EXCLUSIVE OR (XOR) gate 512. The other input of the EXCLUSIVE OR gate 512 receives an en_a activation bit, which must be high in order to allow the data signal present on the line 504 to propagate to the synchronous device 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.  FIG. 5B illustrates another example of an activation circuit 518 inserted in the same signal path as in the example of FIG. 5A. However, circuit 518 includes an EXCLUSIVE OR (XOR) gate 520 having an input coupled to line 504, and its other input coupled to receive an en_b activation bit. In this example, the activation bit should be low to allow the signal on the line 504 to propagate to the input of the synchronous device (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 etThus, FIGS. 5A and 5B illustrate examples of circuits that can be inserted to activate circuit portions of IP blocks based on high and low activation bits respectively. Similar circuits can be inserted at various points in the IP block, so that the IP block will not operate without the correct activation code. Of course, Figures 5A and 5B simply provide some examples of logic gates that can be used to protect the IP block, and many different logic functions could be implemented based on the same principles. In some embodiments, the insertion is performed randomly, so that the activation code is a random value, and does not depend on the function of the underlying circuit. In alternative embodiments, the insertion could be nonrandom. Furthermore, although in the examples of FIGS. 5A and 5B the circuit 508 is used in the case of activation by a "1" bit of the activation code, and that the circuit 518 is used in the case of activation by a bit at "0" of the activation code, in alternative embodiments there are multiple different circuits which are used in the case of a bit activation at "1" and "0", and the selection between these circuits is random. In some embodiments, the license management circuit 106 of Figure 1 is further arranged to implement a measurement method as will now be described in more detail with reference to FIGS.
7. 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.  FIG. 6 schematically illustrates a measurement circuit 602 according to an example embodiment of the present description. The circuit 602 is for example implemented on the device 102 in order to periodically supply usage measurement data to the issuer 104. The usage measurement data correspond, for example, to data concerning the activity of the device. one or more of the protected circuits (IP). In the example of FIG. 6, the circuit 602 comprises N METERING COUNTER IPI (METERING COUNTER IPN) 604, which respectively receive EVENT IPI event signals to EVENT IPN from the corresponding protected circuits IPI to IPN. . For example, event signals indicate when an event occurs regarding the activity of the circuit. For example, an event could be one or more image processing operations, processing one or more packets, executing one or more instructions, and so on.
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é.  The counter values generated by the measurement meters 604 are for example supplied to a usage measurement data generator 606, which uses the usage measurement data to periodically generate M_DATA usage measurement data. For example, the usage measurement data corresponds to a count of the events counted by each of the counters 604 during a given time interval.
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. For example, the usage measurement data M_DATA is supplied to the license control circuit 110 of the license management circuit 106 of FIG. 1, and new utilization measurement data are for example generated and incorporated in each message of FIG. license application. In some embodiments, usage measurement data may be used to determine the validity period of each license, instead of or in addition to the counter 122. Alternatively, usage measurement data could be transmitted independently of the license applications.
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.  Fig. 7 schematically illustrates a device licensing and measurement system 700 according to an exemplary embodiment of the present disclosure. The elements of FIG. 7 which are similar to elements of FIG. 1 have the same reference numerals and will not be described again in detail.
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.  In the system of FIG. 7, the device 102 comprises the license management circuit 106 and a software design kit (SDK) 702. The SDK 702 for example provides a software layer to control the communications between the circuit 106 and The license driver 106 generates, for example, periodic license request messages, each comprising a status signal (STATUS), the seed value (SEED) and usage measurement data M_DATA. . For example, the status signal reports whether the license load has been successfully completed. This signal can be a single bit, or could encode more complex status information using more than one bit. The SDK 702 in turn transmits the license request messages to the license issuer 104, which in this example includes a usage measurement data storage (LICENSE ISSUER AND METERING DATA STORAGE). The transmitter 104 extracts the usage measurement data, which may for example be used for billing purposes, and returns the requested license, which is transmitted by the SDK 702 to the license management circuit 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 . In some embodiments, each license request further indicates a user identifier and / or a session identifier associated with the use of the device 102, allowing for example a user account to be associated with the data. measurement of use and / or the license application. An advantage of the embodiments described herein is that license protection, based on licenses with limited validity periods, can be applied to circuitry of a device in a simple manner based on seed values generated by the device. device. In fact, the seed values make it possible to check that each license has been generated on the basis of the corresponding seed value stored on the device, and licenses can be invalidated after their expiration limit by removing the corresponding seed values. ¬ ponders.
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.  With the description thus made of at least one illustrative embodiment, various alterations, modifications and improvements will readily occur to those skilled in the art. For example, it will be clear to those skilled in the art that while a particular example of a licensing circuit has been described in connection with FIG. 1, many variations could be applied. Furthermore, rather than this circuit being implemented on the device 102, it could be implemented in a separate device in communication with the device 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.  In addition, although counters that count upward have been described in the various embodiments, it will be apparent to those skilled in the art that one or more counters could instead count down. For example, the counter 122 could be initialized to a counter value based on the validity period of a license, and the renewal or expiration of the license could be triggered when that counter reaches zero.
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.  In addition, it will be clear to those skilled in the art that the various elements described in connection with the various embodiments could be combined, in alternative embodiments, in various combinations.

Claims

REVENDICATIONS
1. Circuit intégré comprenant : An integrated circuit comprising:
un ou plusieurs circuits protégés (IPI à IPN) ;  one or more protected circuits (IPI to 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  a license control circuit (110) arranged to request a license issuer (104) to activate said one or more protected circuits, the license application including a seed value (SEED); and
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) .  a cryptographic circuit (120) arranged to verify the authenticity of a license received from the license issuer based on the seed value, the license control circuit (110) being arranged to impose a validity limit on received, and to request a new license from the license issuer prior to the validity of the license received, the new license application including a new seed value (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.  The integrated circuit of claim 1, further comprising a seed memory (116) arranged to store one or more of the seed values.
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.  An integrated circuit according to claim 2, wherein the license control circuit (110) is arranged to delete in the seed memory (116) seed values associated with invalid licenses.
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) .  An integrated circuit according to claim 2 or 3, wherein the received license comprises a message authentication code (MAC) and wherein the cryptographic circuit (120) is arranged to verify the authenticity of the license by verifying the code. message authentication using the seed value stored in the seed memory (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. 5. Integrated circuit according to any one of revendi ¬ cations 1 to 4, further comprising a random value generator (112) adapted to generate a random value or pseudo ¬ random, wherein the license control circuit is arranged to generate the seed value based on the random or pseudo-random value.
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é. 6. Integrated circuit according to any one of revendi ¬ cations 1 to 5, wherein the seed value comprises a device identifier identifying the integrated circuit.
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. 7. Integrated circuit according to any one of revendi ¬ cations 1 to 6, wherein the license comprises a verification code, the integrated circuit further comprising a circuit activation module adapted to activate a first of said one or more circuits protected by loading an activation code into an activation register (412) associated with the first protected circuit on the basis of verification of the verification code.
8. Circuit intégré selon la revendication 7, dans lequel le circuit cryptographique est en outre adapté à :  The integrated circuit of claim 7, wherein the cryptographic circuit is further adapted to:
déduire une clé de dispositif (DEVICE KEY) de la valeur de germe ; et  deduce a device key (DEVICE KEY) from the seed value; and
déchiffrer la licence reçue en utilisant la clé de dispositif afin d'extraire le code de vérification.  decrypt the received license using the device key to retrieve the verification code.
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 . 9. Integrated circuit according to any one of revendi ¬ cations 1 to 8, further comprising a usage measurement data generator (606) arranged to receive one or more counter values concerning the activity of said one or more circuits protected, and to generate usage measurement data based on said one or more counter values.
10. Circuit intégré selon la revendication 9, dans lequel le circuit de contrôle de licence (110) est en outre agencé pour :  The integrated circuit of claim 9, wherein the license control circuit (110) is further arranged to:
inclure les données de mesure d'utilisation dans la demande d'une nouvelle licence à l'émetteur de licences (104) ; et/ou  include usage measurement data in the application for a new license to the license issuer (104); and or
déterminer la limite de validité d'une licence reçue sur la base des données de mesure d'utilisation.  determine the validity limit of a license received based on usage measurement data.
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) ; 11. A method of applying a license to one or more protected circuits of an integrated circuit, the method comprising: requesting, from a license issuer (104), a license to activate said one or more protected circuits, the license application including a seed value (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) .  verify the authenticity of a license received from the license issuer based on the seed value; and impose a validity limit on the license received and request a new license from the license issuer prior to the validity of the license received, the new license application including a new seed value (SEED).
EP18833271.2A 2017-12-07 2018-12-07 System and method for licensing and for measuring use of an ip block Pending EP3721363A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1761778A FR3074933B1 (en) 2017-12-07 2017-12-07 SYSTEM AND METHOD FOR LICENSE AND MEASUREMENT OF USE OF AN IP BLOCK
PCT/FR2018/053153 WO2019110945A1 (en) 2017-12-07 2018-12-07 System and method for licensing and for measuring use of an ip block

Publications (1)

Publication Number Publication Date
EP3721363A1 true EP3721363A1 (en) 2020-10-14

Family

ID=62167401

Family Applications (1)

Application Number Title Priority Date Filing Date
EP18833271.2A Pending EP3721363A1 (en) 2017-12-07 2018-12-07 System and method for licensing and for measuring use of an ip block

Country Status (7)

Country Link
US (1) US11562050B2 (en)
EP (1) EP3721363A1 (en)
JP (1) JP2021506050A (en)
KR (1) KR20200104868A (en)
CN (1) CN111954876A (en)
FR (1) FR3074933B1 (en)
WO (1) WO2019110945A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11245680B2 (en) * 2019-03-01 2022-02-08 Analog Devices, Inc. Garbled circuit for device authentication
GB2609026B (en) * 2021-07-19 2023-08-23 Chevin Tech Holdings Limited A method and system for permitting one or more features on a computer program

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4168679B2 (en) * 2002-06-26 2008-10-22 ソニー株式会社 Content usage management system, information processing apparatus or method for using or providing content, and computer program
US7987373B2 (en) * 2004-09-30 2011-07-26 Synopsys, Inc. Apparatus and method for licensing programmable hardware sub-designs using a host-identifier
US8670561B1 (en) * 2005-06-02 2014-03-11 Altera Corporation Method and apparatus for limiting use of IP
JP2010015410A (en) * 2008-07-04 2010-01-21 Nec Corp License issuing and managing system, method, and program
US8966660B2 (en) * 2008-08-07 2015-02-24 William Marsh Rice University Methods and systems of digital rights management for integrated circuits
US20100284539A1 (en) * 2009-03-09 2010-11-11 The Regents Of The University Of Michigan Methods for Protecting Against Piracy of Integrated Circuits
US20150143130A1 (en) * 2013-11-18 2015-05-21 Vixs Systems Inc. Integrated circuit provisioning using physical unclonable function
EP2911086A1 (en) * 2014-02-19 2015-08-26 Renesas Electronics Europe GmbH Integrated circuit with parts activated based on intrinsic features
KR101742666B1 (en) * 2014-05-29 2017-06-15 삼성에스디에스 주식회사 Integrated circuit device and signal processing method thereof
FR3038757B1 (en) * 2015-07-07 2017-08-11 Univ Montpellier SYSTEM AND METHOD FOR AUTHENTICATION AND IP LICENSE

Also Published As

Publication number Publication date
FR3074933A1 (en) 2019-06-14
KR20200104868A (en) 2020-09-04
WO2019110945A1 (en) 2019-06-13
US20200372128A1 (en) 2020-11-26
FR3074933B1 (en) 2021-05-21
CN111954876A (en) 2020-11-17
US11562050B2 (en) 2023-01-24
JP2021506050A (en) 2021-02-18

Similar Documents

Publication Publication Date Title
EP3320471B1 (en) System and method for hardware ip modules authentication and licensing
EP1072124B1 (en) Method for verifying the use of public keys generated by an on-board system
FR2651347A1 (en) SINGLE NUMBER GENERATION METHOD FOR MICROCIRCUIT BOARD AND APPLICATION TO COOPERATION OF THE BOARD WITH A HOST SYSTEM.
WO1990015384A1 (en) Method of checking the integrity of software or data, and system for implementing said method
WO2007012584A1 (en) Method for controlling secure transactions using a single multiple dual-key device, corresponding physical device, system and computer programme
WO2010012785A1 (en) Method and system for securing software
FR2765985A1 (en) METHOD FOR MANAGING A SECURE TERMINAL
EP3721363A1 (en) System and method for licensing and for measuring use of an ip block
FR2979443A1 (en) Method for storing data in memory interfacing with secure microcontroller, involves processing input data according to one of data processing methods to achieve data processed in different data formats
EP1266364B1 (en) Cryptographic method for protection against fraud
CN117337435A (en) Method for trading digital assets
WO2016207715A1 (en) Secure management of electronic tokens in a cell phone
FR3035248A1 (en) SECURE-OPERATING-ON-CHIP SYSTEM AND USES THEREOF
WO2015032921A1 (en) Method of managing consistency of caches
Adi et al. VLSI design exchange with intellectual property protection in FPGA environment using both secret and public-key cryptography
CH716294A2 (en) Decentralized signature process, under biometric control and under conditions of personal identification and geolocation, of a transaction intended for a blockchain.
FR2985337A1 (en) Method for securing result of cryptographic calculations against attack by injection of faults in chip card in electronic component, involves providing discretionary value processed by processing unit for one of output values of blocks
EP4068681A1 (en) Method and device for secure decryption of encrypted data
CN116911850A (en) Block chain-based two-stage data transaction method, device, equipment and medium
FR3049087A1 (en) PROCESS ALLOWING DEVICES BY INTERMEDIATE OF KNOWLEDGE AND CROSSED CAPACITIES, TO CARRY OUT TRANSACTIONS THROUGH A DECENTRALIZED COMPUTER NETWORK
FR2933560A1 (en) ELECTRONIC CERTIFICATION DEVICE
FR2780835A1 (en) Encryption system with simple random stop test
WO2013045793A1 (en) Method of distributing contents, device for obtaining and computer program corresponding thereto
FR2930065A1 (en) Smart card data securing method for computer ticketing system, involves decrypting encrypted seal variable, disassembling variable for obtaining seals corresponding to data, and verifying coherence of each seal with corresponding data

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20200612

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

AX Request for extension of the european patent

Extension state: BA ME

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
111L Licence recorded

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

Free format text: EXCLUSIVE LICENSE

Name of requester: AXLR, SATT DU LANGUEDOC ROUSSILLON, FR

Effective date: 20221007

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

17Q First examination report despatched

Effective date: 20231024