KR20200104868A - Ip 블록의 사용을 라이선싱하고 측정하는 시스템 및 방법 - Google Patents
Ip 블록의 사용을 라이선싱하고 측정하는 시스템 및 방법 Download PDFInfo
- Publication number
- KR20200104868A KR20200104868A KR1020207018962A KR20207018962A KR20200104868A KR 20200104868 A KR20200104868 A KR 20200104868A KR 1020207018962 A KR1020207018962 A KR 1020207018962A KR 20207018962 A KR20207018962 A KR 20207018962A KR 20200104868 A KR20200104868 A KR 20200104868A
- Authority
- KR
- South Korea
- Prior art keywords
- license
- circuit
- seed
- issuer
- integrated circuit
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 23
- 230000004913 activation Effects 0.000 claims description 47
- 238000012795 verification Methods 0.000 claims description 34
- 230000003213 activating effect Effects 0.000 claims description 5
- 230000000694 effects Effects 0.000 claims description 4
- 238000007726 management method Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 14
- 238000013461 design Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013478 data encryption standard Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001012 protector Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/72—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/73—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/76—Protecting 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3271—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2103—Challenge-response
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (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
본 발명은 하나 이상의 보호 회로(IP1 내지 IPN)와, 라이선스 발행자(104)로부터, 하나 이상의 보호 회로를 활성화시키기 위한 라이선스를 요청하도록 구성된 라이선스 제어 회로(110)로서, 라이선스 요청은 시드값(SEED)을 구비하는 라이선스 제어 회로(110)와, 시드값에 기초하여 라이선스 발행자로부터 수신된 라이선스의 진위를 검증하도록 구성된 암호화 회로(120)를 구비하며, 라이선스 제어 회로(110)는 수신된 라이선스에 유효성 제한을 부여하고, 수신된 라이선스의 상기 유효성 제한 이전에 라이선스 발행자로부터 새로운 라이선스를 요청하도록 구성되는 집적 회로에 관한 것이다.
Description
본 특허 출원은 본원에 참조로서 포함되는 프랑스 특허 출원 FR17/61778호를 우선권으로 주장한다.
본 명세서는 집적 회로 분야, 특히 집적 회로 내의 IP(intellectual property) 블록의 인증 및 라이선싱(licensing), 더 일반적으로는 임의의 회로 또는 시스템의 인증 및 라이선싱을 허용하는 방법 및 시스템에 관한 것이다. 본 명세서는 또한 IP 블록의 사용을 미터링(metering)하는 방법 및 시스템에 관한 것이다.
집적 회로는, 그 분야에서 IP(intellectual property) 블록으로 알려진 회로 블록의 집합을 일반적으로 구비한다. IP 블록은 특정 기능을 실행하는 별개의 하드웨어 회로 설계에 해당하며 다른 여러 집적 회로에서 재이용될 수 있다. 주어진 집적 회로(IC)에서의 IP 블록은 일반적으로 그 IP 블록의 IP 저작권자에 의하여 IC 설계자에게 라이선스가 제공된다.
IP 블록은, 일반적으로 예를 들어, RTL(Register Transfer Level), 베릴로그(Verilog) 또는 VHDL(Very high speed integrated circuit Hardware Description Language) 등의 하드웨어 디스크립션 언어의 소프트웨어로서 IC 설계자에게 전달된다. IP 저작권자는 보통 제한된 수의 집적 회로 및/또는 제한된 수의 프로젝트에서 그들 IP 블록을 사용하도록 IC 설계자에게 라이선스를 부여하거나 또는 IP 블록을 내장하고 있는 각각의 집적 회로/프로젝트에 대하여 로얄티 지불을 요구한다.
일부 적용에 있어서는, IP 블록 및/또는 하드웨어 회로의 라이선스를 제한된 기간 동안 제공하는 것이 바람직할 수 있다. 그러나, 기존의 솔루션은 복잡하고, 비용이 많이 들고 및/또는 충분히 안전하지 못한 경향이 있다.
본 설명의 실시형태의 목적은 종래 기술에서의 하나 이상의 문제들을 적어도 부분적으로 처리하는 것이다.
일 실시형태에 따르면, 하나 이상의 보호 회로와, 라이선스 발행자로부터, 하나 이상의 보호 회로를 활성화시키기 위한 라이선스를 요청하도록 구성된 라이선스 제어 회로로서, 라이선스 요청은 시드값(seed value)을 구비하는 라이선스 제어 회로와, 시드값에 기초하여 라이선스 발행자로부터 수신된 라이선스의 진위를 검증하도록 구성된 암호화 회로를 구비하며, 라이선스 제어 회로는 수신된 라이선스에 유효성 제한을 부여하고, 수신된 라이선스의 유효성 제한 이전에 라이선스 발행자로부터 새로운 라이선스를 요청하도록 구성되는 집적 회로를 제공한다.
일 실시형태에 따르면, 집적 회로는 하나 이상의 시드값을 저장하도록 구성된 시드 메모리를 더 구비한다.
일 실시형태에 따르면, 라이선스 제어 회로는 무효 라이선스와 관련된 시드값을 시드 메모리로부터 제거하도록 구성된다.
일 실시형태에 따르면, 수신된 라이선스는 메시지 인증 코드를 구비하며, 암호화 회로는, 시드 메모리에 저장된 시드값을 사용하여 메시지 인증 코드를 검증함으로써 라이선스의 진위를 검증하도록 구성된다.
일 실시형태에 따르면, 집적 회로는 랜덤 또는 의사-랜덤 값을 생성하도록 구성된 랜덤값 생성기를 더 구비하며, 라이선스 제어 회로는 랜덤 또는 의사-랜덤값에 기초하여 시드값을 생성하도록 구성된다.
일 실시형태에 따르면, 시드값은 집적 회로를 식별하는 장치 식별자를 구비한다.
일 실시형태에 따르면, 라이선스는 검증 코드를 구비하며, 집적 회로는 검증 코드의 검증에 기초하여 하나 이상의 보호 회로 중 제1 보호 회로와 관련된 활성화 레지스터로 활성화 코드를 로딩함으로써 제1 보호 회로를 활성화시키기도록 구성된 회로 활성화 모듈을 더 구비한다.
일 실시형태에 따르면, 암호화 회로는 시드값으로부터 장치 키를 얻고, 검증 코드를 추출하기 위하여 장치 키를 사용하여 수신된 라이선스를 복호하기에 또한 적합하다.
일 실시형태에 따르면, 집적 회로는 하나 이상의 보호 회로의 활동과 관련하여 하나 이상의 카운트 값을 수신하고 상기 하나 이상의 카운트 값에 기초하여 미터링 데이터를 생성하도록 구성된 미터링 데이터 생성기를 더 구비한다.
일 실시형태에 따르면, 라이선스 제어 회로는 또한 라이선스 발행자로부터 새로운 라이선스에 대한 요청에 미터링 데이터를 포함시키고, 및/또는 미터링 데이터에 기초하여 수신된 라이선스의 유효성 제한을 결정하도록 구성된다.
일 형태에 따르면, 집적 회로의 하나 이상의 보호 회로에 라이선스를 적용하는 방법을 제공하며, 이 방법은, 라이선스 발행자로부터, 하나 이상의 보호 회로를 활성화시키기 위한 라이선스를 요청하되, 라이선스 요청은 시드값을 구비하고, 시드값에 기초하여 라이선스 발행자로부터 수신된 라이선스의 진위를 검증하며, 수신된 라이선스에 유효성 제한을 부여하고, 수신된 라이선스의 유효성 제한 이전에 라이선스 발행자로부터 새로운 라이선스를 요청하는 것을 구비한다.
전술 및 그 밖의 다른 특징 및 장점은, 첨부 도면을 참조하여, 그것으로 제한되지 않는 예시로서 제공된 이하의 실시형태의 상세한 설명으로부터 명확하게 될 것이다.
도 1은 본 명세서의 일 예의 실시형태에 따르는 라이선스 발행자와 통신하는 전자 장치를 개략적으로 나타낸다.
도 2는 본 명세서의 일 예의 실시형태에 따르는 집적 회로 내의 하나 이상의 회로를 보호하는 방법의 작업을 나타내는 플로우 다이어그램이다.
도 3a는 본 명세서의 일 예의 실시형태에 따르는 IP 블록 라이선싱을 허가하는 시스템을 개략적으로 나타낸다.
도 3b는 일 예의 실시형태에 따르는 도 3a의 라이선스 생성 회로를 상세하게 설명한다.
도 4는 본 명세서의 일 예의 실시형태에 따르는 IP 라이선싱 구성요소를 구비하는 전자 장치를 개략적으로 나타낸다.
도 5a 및 도 5b는 본 명세서의 일 예의 실시형태에 따르는 IP 블록의 활성화 회로를 개략적으로 설명한다.
도 6은 본 명세서의 일 예의 실시형태에 따르는 미터링 회로를 개략적으로 설명한다.
도 7은 본 명세서의 다른 예의 실시형태에 따르는 라이선스 시스템을 개략적으로 설명한다.
도 1은 본 명세서의 일 예의 실시형태에 따르는 라이선스 발행자와 통신하는 전자 장치를 개략적으로 나타낸다.
도 2는 본 명세서의 일 예의 실시형태에 따르는 집적 회로 내의 하나 이상의 회로를 보호하는 방법의 작업을 나타내는 플로우 다이어그램이다.
도 3a는 본 명세서의 일 예의 실시형태에 따르는 IP 블록 라이선싱을 허가하는 시스템을 개략적으로 나타낸다.
도 3b는 일 예의 실시형태에 따르는 도 3a의 라이선스 생성 회로를 상세하게 설명한다.
도 4는 본 명세서의 일 예의 실시형태에 따르는 IP 라이선싱 구성요소를 구비하는 전자 장치를 개략적으로 나타낸다.
도 5a 및 도 5b는 본 명세서의 일 예의 실시형태에 따르는 IP 블록의 활성화 회로를 개략적으로 설명한다.
도 6은 본 명세서의 일 예의 실시형태에 따르는 미터링 회로를 개략적으로 설명한다.
도 7은 본 명세서의 다른 예의 실시형태에 따르는 라이선스 시스템을 개략적으로 설명한다.
다음의 설명에서 일부 실시형태들은 하드웨어에서 구현되는 것으로 설명되어 있지만, 각 실시형태들은, 하나 이상의 프로세서에 의하여 실행되는 소프트웨어 명령에 의하여 적어도 부분적으로 구현될 수 있다는 것은 당업자에게는 명백할 것이다.
다음의 설명에 있어서, 다음의 용어는 다음의 정의로 제공된다:
IP 블록 - 특정 기능을 수행하며, FPGA(field programmable gate arrays)를 포함하는 여러 다른 집적 회로에서 재이용될 수 있는 개별 하드웨어 회로 설계,
보호 회로 - IP 블록, IP 블록의 집합, 또는 하나 이상이 집적 회로를 구비하는 시스템에 대응하며, 활성화 코드에 의하여 활성되지 않으면 비활성 상태에 있는 메카니즘에 의하여 보호되는, 회로, 및
랜덤 또는 의사-랜덤값 - 예측할 수 없거나 또는 예측하기 어려운 임의의 디지털 값.
도 1은 라이선스 발행자(LICENSE ISSUER)(104)와 통신하는 전자 장치(102)를 개략적으로 나타낸다. 예를 들어, 이 통신은 로컬 네트워크를 경유한다. 선택적으로는, 일부 실시형태에서는 라이선스 발행자(104)와 장치(102)는 인터넷과 같은 더 큰 네트워크에 의하여 분리될 수 있다.
전자 장치(102)는, 예를 들어 보호 회로(IP1 내지 IPN)를 구비한다. 예를 들어, 각 보호 회로는, 예를 들어 화상 처리 작업을 수행할 수 있는 화상 프로세서, 표준 프로토콜을 관리하는 인터페이스와 같은 정밀한 기능을 수행하도록 개발된 복합 회로이거나, 또는 프로세서, 인코딩 또는 디코딩 회로 등과 같은 고급 작업을 수행할 수 있는 다른 회로이다. 일부 실시형태에서는 각 보호 회로는 FPGA를 구비할 수 있는데, 그 보호 회로에 의하여 구현되는 기능은 프로그래밍 코드에 의하여 FPGA에 프로그램된다.
예컨데, 장치(102)는 집적 회로이며, 보호 회로는 집적 회로의 IP 블록들이다. 그러나, 다른 실시형태에 있어서, 장치(102)는 임의의 전자 장치에 대응할 수 있으며, 보호 회로는 각각 하나 보다 많은 집적 회로를 갖는 기판 또는 시스템을 구비할 수 있다. 일부 실시형태에 있어서, 장치(102)는 이동 전화기, 테블릿 컴퓨터, 랩톱 컴퓨터, 게임 콘솔 등과 같은 제품의 부분을 형성하거나 또는 지불 카드, SIM(subscriber identity module) 카드 등과 같은 스마트 카드로 알려진 카드군(family of cards)을 포함하는 집적 회로 카드에 장착된 칩일 수 있다.
다른 실시형태에서는, 장치(102)는, 라이선스에 의한 이용을 위하여 사용할 수 있는 데이터 프로세싱 리소스를 제공하는 유사한 하드웨어 장치의 뱅크(bank)의 부분을 형성할 수 있다. 예를 들어, 장치(102)가 FPGA를 구비하는 경우에, 최종 사용자는 장치(102)의 FPGA의 사용을 허용하는, 및/또는 FPGA 상으로 프로그램될 수 있는 하나 이상의 보호 IP 회로의 사용을 허용하는 라이선스를 구매할 수 있다.
라이선스 발행자(104)는, 예를 들어 장치(102)와 통신하여, 하드웨어 및/또는 하나 이상의 보호 회로의 연속된 작동을 허가하는 장치(102)로 라이선스를 생성하여 제공하는 역활을 수행한다. 예를 들어, 각 라이선스는 제한된 유효 기간을 갖는다. 일부 실시형태에 있어서는, 각 라이선스는, 주어진 기간 동안 장치(102) 및/또는 하나 이상의 보호 회로의 작동을 인가하는 토큰으로서 고려될 수 있다. 예를 들어, 각 라이선스는, 수 초 또는 수 분과 같은 주어진 시간 단위 동안, 또는 프로세서 클록 사이클 또는 작동의 주어진 횟수 동안 인가를 제공한다. 선택적으로, 각 라이선스의 기간은 변화될 수 있으며, 그 기간은 라이선스 그 자체에 나타내어질 수 있다. 예를 들어, 라이선스는, 예를 들어 초 또는 분으로, 또는 무효 되기 전에 그것이 허가하는 프로세서 클록 사이클로, 또는 작동의 회수로 표현되는 유효 기간을 나타낼 수 있다.
예를 들어, 장치(102)는, 라이선스 발행인(104)으로부터 라이선스 요청을 생성하고, 라이선스 발행인(104)에 의하여 발행된 라이선스를 수신하고 검증하며, 장치(102)에 유효 라이선스가 존재하지 않는 경우에 라이선스 발행자(104) 및/또는 또다른 엔티티로 경고 신호(ALERT)를 어서트(assert)하는 라이선스 관리 회로(106)를 구비한다. 일부 실시형태에서는, 경고 신호는 다수의 신호를 구비할 수 있다.
이하에서 더 상세하게 설명된 일부 실시형태에서, 장치(102)는, 또한, 보호 회로를 활성화시키기 위하여 수신된 라이선스를 보호 회로(IP1 내지 IPN)로 분배하는 라이선스 서버(LICENSE SERVER)(108)를 구비한다.
예를 들어, 라이선스 관리 회로(106)는, 예를 들어, 랜덤 또는 의사-랜덤 값 생성기(RANDOM VALUE GENERATOR)(112) 그리고 선택적인 장치 식별자(장치 ID)로부터 랜덤 값을 수신하고 시드값(SEED)을 발생하는 라이선스 제어 회로(110)를 구비한다. 이 시드값은, 예를 들어, 라이선스 제어 회로(110)에 의해서 발생되어 라이선스 발행자(104)에게 전송되는 라이선스 요청 메시지(LICENSE REQ)에 포함된다. 예컨데, 이 라이선스 제어 회로(110)는 또한 시드값을 시드 메모리(SEED MEMORY)(116)에 저장한다.
라이선스 관리 회로(106)는 라이선스 발행자(104)에 의하여 발행된 라이선스(LICENSE)를 수신하고, 예를 들어 그들을 라이선스 메모리(LICENSE MEMORY)(118) 내에 저장한다. 라이선스가 인터넷 등의 네트워크 상으로 전송되는 일부 실시형태에 있어서, 라이선스는 암호화된다. 또한, 예를 들어, 각 라이선스는, MAC(message authentication code)과 같은 인증 코드를 포함하는데, 이것은 라이선스 요청 메시지에 포함된 시드값을 사용하여 라이선스 발행인(104)에 의하여 발생된다.
예를 들어, 라이선스 관리 회로(106)에 의하여 수신된 라이선스는, 예를 들어 라이선스가 암호화된 경우에 라이선스를 복호하고 그 인증 코드에 기초하고 시드 메모리(116)로부터 대응하는 시드값을 사용하여 라이선스를 인증하는, 라이선스 복호 및 MAC 검증 회로(LICENSE DECRYPTION + MAC VERIFICATION)(120)로 공급된다.
라이선스 발행자(104)에 의하여 인증 코드를 생성하는데 사용된 시드값이 시드 메모리(116)에 저장된 시드값과 일치하는 경우에, 라이선스는 성공적으로 인증된다. 그러나, 이 시드값들이 불일치인 경우에는, 인증이 실패될 것이다. 어느 경우든지, 회로(120)는 예를 들어 라이선스 제어 회로(110)로 인증 결과를 알린다.
라이선스 관리 회로(106)는 또한 예를 들어 새로운 라이선스가 요청되어야 할 때를 나타내는 카운터(CNTR)(122)를 구비한다. 예를 들어, 새로운 라이선스는, 현재의 라이선스의 만료 전에 새로운 라이선스가 발행되는 시간을 허용하기 위하여 현재 라이선스가 만료되기 전 일정 시간 동안 새로운 라이선스가 요청된다. 일부 실시형태에 있어서는, 카운터(122)는, 카운트 신호가 새로운 라이선스를 요청하는 시기를 결정하는데 사용될 수 있도록, 클럭 신호 등의 주기를 카운트한다. 선택적으로는, 카운트(122)는 하나 이상의 보호 회로(IP1 내지 IPN)의 프로세서의 프로세싱 사이클 또는 하나 이상의 보호 회로(IP1 내지 IPN)에 의하여 수행된 작동 회수를 카운트할 수 있다.
카운터(122)가, 현재 라이선스가 수신된 새로운 라이선스 없이 만료되었음을 나타내는 경우, 또는 수신된 라이선스의 인증 실패가 회로(120)에 의하여 나타내어질 경우에, 경고 신호(ALERT)가, 예를 들어 라이선스 발행자(104) 및/또는 다른 엔티티에게 유효 라이선스가 없음을 알리기 위하여 어서트된다. 예를 들어, 보호 회로(IP1 내지 IPN)의 사용자에게, 라이선스가 만료되었으며, 일정 기한까지 새로운 라이선스를 위한 지불을 하지 않으면 하나 이상의 보호 회로가 비활성화될 것임을 알릴 수 있다.
부가적으로 또는 선택적으로, 유효 라이선스가 없는 경우, 하나 이상의 보호 회로가 리셋 및/또는 비활성화된다. 예를 들어, 제조 이후 또는 리셋 이후에, 하나 이상의 보호 회로가 비활성화 상태에 있으며, 검증 코드에 의해서만 활성화될 수 있다. 검증 코드에는 예를 들어 라이선스 발행인(104)에 의하여 발행된 하나 이상의 라이선스가 제공된다. 리셋 작동 이후에, 검증 코드를 포함하는 라이선스는, 예를 들어 보호 회로를 재활성화하기 위하여 사용되는 반면에, 유효 라이선스가 없는 경우에는, 보호 회로는 예를 들어 비활성화로 유지된다.
시드값은, 예를 들어 생성기에 의하여 발생된 랜덤 또는 의사-랜덤 값과 장치 식별자의 단순 연결이다. 장치 식별자는 예를 들어 장치(102) 또는 장치(102) 그룹를 식별하는 비트 스트링이며, 인증을 위해 기여한다. 라이선스 발행자(104)에 의하여 제공되는 라이선스는 예를 들어 식별자를 갖는 장치에 대하여만 사용되며, 일부 실시형태에서는 그 장치 식별자는 각 장치에 고유하여, 한 장치(102)의 보호 회로만을 활성화시킬 수 있다. 장치 식별자는 예를 들어 그 장치(102)에 고유한 시그니처의 생성에 기초된다. 그러므로, 두 개의 집적 회로가 동일한 기능을 갖도록 제조 및/또는 프로그램 된다고 할지라도, 그들의 시그니처 및 그들의 장치 식별자는 다를 것이다.
장치 식별자는 예를 들어 PUF(Physically Unclonable Function)에 의하여 생성되거나 또는 PUF로부터 유도된다. PUF 값은, 예를 들어 장치(102)의 CPU(Central Processing Unit)에 의하여 생성 및/또는 장치(102)에 장착된 하나 이상의 링발진기에 기초한다. PUF 값의 생성은 국제 특허출원 공보 WO 2017/006058호에 상세하게 설명되어 있다. PUF에 대한 대안으로서는, 장치 제조자에 의하여 장치에 할당된 식별자 등의 다른 형태의 장치 식별자가 사용될 수 있다.
도 2는 일 예의 실시형태에 따르는 하나 이상의 보호 회로에 라이선스를 적용하는 방법(200)에서의 작업을 나타내는 플로우 다이어그램으로서, 예를 들어 이 방법은 도 1의 라이선스 관리 회로(102)에 의하여 구현된다.
작업 201에 있어서, 도 1의 카운터(122)에 의하여 생성된 카운트 값(CNT_VALUE)이 제한값에 도달하는 때를 검증한다. 이 카운트 값이 제한값에 도달할 때, 이 방법은 작업 202로 진행된다.
작업 202에 있어서, 라이선스 요청 메시지는 랜덤값 생성기(112)에 의하여 제공된 새로운 시드값에 기초하고, 그리고 선택적으로 장치 식별자(114)에 기초하여 라이선스 제어 회로(110)에 의하여 발생된다. 이 라이선스 요청 메시지는 라이선스 발행자(104)에게 전송된다.
작업 203에서는, 라이선스 요청으로 전송된 새로운 시드값은 또한 라이선스 제어 회로(110)에 의하여 시드 메모리(116)에 저장된다.
작업 204에서는, 예를 들어 시드 메모리로부터의 이전(old)의 시드를 제거한다. 예를 들어, 어떤 경우에는 라이선스 제어 회로(110)가 시드 메모리에 하나 이상의 현재 유효한 라이선스와 관련된 하나 이상의 현재 시드값과, 하나 이상의 라이선스 요청과 관련된 하나 이상의 새로운 시드값을 시드 메모리에 유지하는 반면, 다른 시드값은 제거하여 이전의 라이선스는 무효가 된다
작업 205에서는, 작업 202에서 발생된 라이선스 요청에 응답하여 새로운 사리선스를 수신한다. 이 라이선스는 라이선스 복호 및 MAC 검증 회로(120)로 제공되는데, 이것은, 암호화가 되어 있다면, 라이선스를 복호하고 이 라이선스에 전송된 MAC를 검증한다.
작업 206에서는, 그런 후, 예를 들어 MAC가 유효한지의 여부를 결정한다. 만일 유효하지 않다면, 작업 207에서, 예를 들어, 경고 신호가 라이선스 제어 회로(110)에 의하여 발생된다. 그러나 라이선스가 유효하다면, 작업 208에서, 라이선스 제어 회로(110)가 예를 들어, 이전의 라이선스를 라이선스 메모리(118)로부터 제거한다. 또한, 라이선스가 유효 기간에 대한 정보를 포함하고 있는 경우에, 이 정보는 예를 들어 라이선스 복호 및 MAC 검증 회로(120)에 의하여 라이선스 제어 회로(110)로 제공되는데, 이것은 다음의 라이선스를 요청하기 위한 카운트 제한값을 결정하기 위하여 이 정보를 사용한다.
도 3a는 본 명세서의 일 예이 실시형태에 따르는 보호 회로의 인증을 허용하고 라이선싱하는 시스템(300)을 개략적으로 보여준다. 시스템(300)의 일부 특징은 도 1의 시스템(100)의 특징과 유사하며, 그런 특징은 동일한 참조번호포 표시되며, 상세하게 다시 설명하지 않을 것이다.
시스템(300)에서, 이제 설명될 것인 바와 같이, 라이선스 발행자(104)에 의하여 생성된 라이선스의 일부 또는 전부는 장치(102)의 보호 회로를 활성화하기 위한 검증 코드를 포함한다.
시스템(300)은 3개의 주요 부분, 즉 라이센스 발행자(LICENSE ISSUER)(104), 제3 신뢰기관(TTP), 및 최종 사용자(END USER)와 관련된 하드웨어를 포함한다. 일부 실시형태에 있어서, 라이선스 발행자(104)는 IP 벤더일 수 있거나, 또는 하나 이상의 IP 벤더와 소통할 수 있다. 예를 들어, 보호는 하나 이상의 보호 회로의 통일적 활성화에 기초한다.
최종 사용자는 장치(102)를 구매할 수 있다. 선택적으로는, 최종 사용자는, 예를 들어 중간 기관을 통하여, 장치(102)의 사용을 라이선싱 할 수 있다.
여기서 설명된 실시형태에 따르면, 도 1의 장치(IP1 내지 IPN)에 해당하는, 장치(102) 상의 하나 이상의 IP 블록(IP)은, 예를 들어 임의의 유효한 라이선스를 수신하기 전에는 초기에 비활성화된 상태로 있다. 최종 사용자는 라이선스 발행자 또는 TTP로부터 라이선스를 요청함으로써 비활성된 IP 블록을 활성화한다. 그러나, 다른 실시형태에 있어서, 최종 사용자 이외에도, 활성화는, 집적 회로 설계자와 같은, 공급망에서의 다른 당사자, 또는 장치(102)를 포함하는 제품의 벤더에 의하여 수행될 수 있다.
일부 보호 회로는 최초 라이선스에 의하여 영구적으로 활성화될 수도 있으며, 또는 장치의 다음 리셋까지 활성화된 상태로 유지할 수 있다. 실제로, 상세한 활성화 타입(영구, 다음 리셋까지, 제한된 기간 동안)은 장치의 각 보호 회로에 대하여 다를 수 있다. 또한, 여기서 설명된 방법은 단일 IP 블록을 활성화하기 위하여 사용될 수 있음과 동시에, 더 일반적으로는 주어진 장치의 모든 IP 블록, 다른 IP 블록 내의 IP 블록, 및/또는 다른 IP 블록을 구비하는 IP 블록, 시스템 또는 IP 카드에 해당할 수 있는 임의의 보호 회로의 활성화, 주어진 ASIC(Application Specific Integrated Circuit) 기술을 사용한 설계의 모든 회로의 활성화, 주어진 FPGA군의 활성화, 임의의 제조자에 의하여 생산된 FPGA들의 활성화 등에 적용될 수 있다. 이것은 또한 시스템 레벨에서 적용될 수도 있다. 또한, 일부 실시형태에서는, 라이선스가 IP 블록의 서브-세트 기능만을 활성화 또는 비활성화시키기 위하여 사용될 수 있다.
IP 블록을 보호하고 활성화하기 위한 과정의 일 예가 더 상세하게 설명될 것이다.
라이선스 발행자(104)에 있어서, 예를 들어 데이터베이스(RTL)(304)는 플레인 RTL(Register Transfer Level) 코드 등의 하드웨어 디스크립션 언어로 표현된 하나 이상의 IP 블록을 저장한다.
예를 들어, IP 보호기 블록(IP PROTECTOR)(306)은 IP 보호 기능을 실행하는 소프트웨어를 구비하며, 이것은 데이터베이스(304)로부터 하나 이상의 IP 블록을 변경하여 회로가 비활성화가 되도록 사용된다. 특히, IP 블록은, 기능을 잠금해제하기 위하여 활성화 코드가 요구되도록 변경된다. 일부 실시형태에 있어서, 이 스텝은 전체적으로 자동적으로 수행될 수 있으나, 다른 실시형태에 있어서는, 적어도 부분적으로는 수동적으로, 예를 들어 IP 블록의 설계자에 의하여 실행될 수 있다. 이하에서 더 상세하게 설명되는 바와 같이, IP 블록의 변경은, 예를 들어 하드웨어 디스크립션 파일로, 하나 이상의 논리 게이트를 IP 블록의 하나 이상의 신호 경로로 삽입하는 것을 포함한다.
이 논리 게이트는, 예를 들어, 하나 이상의 정확한 활성화 비트가 하나 이상의 삽입된 논리 게이트의 입력 노드에 제공된 경우에만 신호 경로를 따라서 변경되지 않은 신호의 전파를 허용한다. 일부 실시형태에 있어서는, 활성화 코드는 주어진 IP 설계에 고유할 수 있다. 다른 실시형태에 있어서는, 동일한 활성화 코드가 하나 보다 많은 IP 설계를 위하여 사용될 수 있다. 또한, 일부 실시형태에 있어서, IP 블록을 활성화 할 수 있는 하나보다 많은 활성화 코드가 있을 수 있다. 이것은 예를 들어 라이선스 발생 작업을 용이하게 할 수 있다.
라이선스 클라이언트(도 3a에는 도시되지 않음)라고도 하는, IP 라이선스를 관리하는 회로는, 예를 들어 보호대상이 되는 각 IP 블록에 부가된다. 이하에 더 상세하게 설명되는 바와 같이, 라이선스 클라이언트는, 예를 들어 유효한 라이선스가 공급될 때의 활성화 코드를 저장하기 위한 레지스터를 구비한다. 일부 실시형태에 있어서, 라이선스 클라이언트는 각 IP 블록 내에 통합되어 있으며, 이하에서 더 상세하게 설명되기는 하지만, 각 라이선스 클라이언트는 또한 해당하는 IP 블록의 외부에 있을 수 있다.
일부 실시형태에 있어서, 변경된 IP 블록을 나타내는 화일은, 또한 예를 들어 암호화에 의하여 보호된다.
활성화 코드, 그리고 선택적으로는 변경된 IP 블록의 일부분 또는 전체가 예를 들어 라이선스 발행자의 데이터베이스(PROTECTED IP)(380)에 저장된다. 예를 들어, 활성화 코드를 포함하는 라이선스를 발생시키는 작업은 하나 이상의 IP 벤더에 의하여 라이선스 발행자(104)에게 위임된다. 변경된 IP 블록은 또한 장치(102)의 설계자에게 인도되어서, 도 3a의 화살표(310)에 의하여 나타내진 바와 같이, 하나 이상의 보호 IP 블록이 장치(102) 내의 하드웨어 내에서 구현된다. 특히, 집적 회로 설계자는 예를 들어 다른 다양한 IP 블록을 모두 가져와서 집적 회로를 형성하며, 이들 IP 블록의 하나 이상이 예를 들어 여기서 설명된 바와 같이 활성화 코드에 의하여 보호된 IP 블록에 대응한다. 선택적으로, 변경된 IP 블록은 장치(102)의 FPGA로 프로그램된다.
장치(102)에 제공된 라이선스의 일부 또는 전부는, 예를 들어 검증 코드를 구비한다. 용어 "검증 코드"는 여기에서는 라이선스와 소통하고 하나 이상의 IP 블록을 활성화시키도록 허용하는 코드를 지정하기 위하여 사용된다. 이 코드는 하나 이상의 IP 블록에 대한 검증 코드일 수도 있다. 다른 실시형태에 있어서, 활성화 코드는 IP 블록의 보호 메모리, 예를 들어 ROM에 이미 저장되어 있으며 활성화 코드는 라이선스에 포함되지 않는다. 이 경우에, 검증 코드는, 활성화 코드가 보호 메모리에서 활성화 코드 레지스터로 로드되는 것을 허용하는 IP 블록에 대한 라이선스와 소통하는 비밀 코드이다. 일부 실시형태에서는, 회로 구상/테스팅 목적을 위하여 임시 라이선스가 집적회로 설계자에게 제공될 수도 있다.
도 1과 관련하여 설명된 바와 같이, 장치(102)는 예를 들어 보호 회로와 결합된 라이선스 관리 회로(106)을 구비한다.
장치(102)가 제조 및/또는 프로그래밍 후에 처음으로 활성화될 때, 장치 식별자의 값은, 예를 들어, PUF 회로 등에 의하여 발생된 값을 판독함으로써 판독된다. 어떤 경우에는 PUF 값은 집적 회로의 노화에 의하여, 및/또는 환경(온도, 전압 등) 등의 다른 이유에 의하여 시간에 따라서 변화될 수 있다. 일부 실시형태에서는, PUF 내의 전위 변화의 관점에서, 발생된 PUF 값의 적어도 부분이 비휘발성 메모리에 기억되며, 및/또는 에러 수정 코드가 생성되어서, PUF 값의 일부 비트가 원래의 값에서 벗어나는 경우 PUF 값이 수정되는 것을 허용한다. 장치 식별자는 또한 장치(102)의 포트(port)에서 사용할 수 있게 만들어지거나, 또는 그렇지 않더라도 장치(102)의 외부와 소통되게 만들어져서, 예를 들어, 보호된 IP 블록을 활성화시키기 위한 라이선스의 일부 또는 전부를 요청하기 위하여 사용된다.
일부 실시형태에서는, 개별 라이선스가 각 IP 블록을 활성화시키기 위하여 생성된다. 선택적으로는, 라이선스는 복수의 IP 블록을 활성화시키기 위하여 생성될 수 있다. 장치(102)의 보호된 IP 블록 또는 IP 블록들을 잠금해제하기 위한 검증 코드 또는 코드들(VERIFICATION CODE)(315)이 예를 들어 라이선스 발행자(104)의 라이선스 생성기(LICENSE GENERATOR)(316)에 제공된다. 이 라이선스 생성기(316)는 라이선스(LICENSE)를 생성시키기 위하여 사용되는데, 이것은, 예를 들어 장치(102)의 라이선스 관리 회로(106)로 전송된다. 라이선스 생성기(316)는, 예를 들어 장치(102)로부터 시드값을 수신하고 이 시드값 및 검증 코드 또는 코드들에 기초하여 라이선스를 생성한다.
일부 실시형태에 있어서, 라이선스는 또한 DRM(Design Right Management) 데이터(320)을 포함한다. 예를 들어 DRM 데이터는 IP 블록의 활성화 기간에 대한 특정 제한을 나타낸다. 예를 들어, 특정 보호 회로에 대한 라이선스가 수 초 또는 수 분의 기간과 같은, 일정 기간 동안 유효함을 나타낼 수 있다. 또한 ASIC, FPGA 군 등의 하나 이상의 하드웨어에 대한 라이선스의 제한, 또는 잠금해제될 IP 블록의 특정 특징에 대한 라이선스의 제한을 나타낼 수 있다. 회로의 하드웨어 형태는, 예를 들어 특정한 센서에 의하여 결정될 수 있고, 이들 하드웨어 타입에 대한 IP 블록의 상용을 제한하기 위하여 하나 이상의 인가된 하드웨어 타입과 비교된다. 또한, 부가적으로 또는 선택적으로, 라이선스의 DRM 데이터는 장치의 센서에 의하여 측정될 수 있는 다른 변수에 기초하여 라이선스의 제한을 나타내는 제한 데이터를 정의할 수 있다.
DRM 데이터는, 예를 들어 검증 코드에 기초하여 하나 이상의 IP 회로의 초기 활성화 시에, 단 한번 검증하고 적용될 수 있다. 선택적으로, DRM 데이터는, DRM 데이터를 구비하는 새로운 라이선스가 라이선스 발행자(104)로부터 수신될 때마다 검증되고 적용될 수 있다.
일부 실시형태에서는, DRM 데이터는 검증 코드를 변경한다. 예를 들어, 일부 실시형태에서, 검증 코드는 활성화 코드를 구비하며 활성화 코드의 일부 비트가 제공되지 않거나 부정확하여서 IP 블록의 일부만이 활성화 코드에 의하여 활성화된다. 다른 실시형태에서는, 다른 기술이 사용될 수 있는데, 이것은 IP 블록의 활성화/비활성화에 의한 비트에 기반되지 않는다.
도 3b는 일 예의 실시형태에 따르는 라이선스 생성기(316)를 더 상세하게 나타낸다. 이 라이선스 생성기(316)는 예를 들어 키 유도 기능(KDF1;key derivation function) 블록(322)을 포함하는데, 이는 장치(102)에 의하여 제공된 시드값(SEED)에 기초하여 장치 키를 생성한다. 라이선스 생성기(316)는 또한 예를 들어 암호 회로(CRYPTO)(324)를 구비하며, 이것은, 라이선스를 생성하기 위하여, 장치 키를, 활성화될 IP 블록의 검증 코드 또는 코드들에 사용한다. 예를 들어, 암호 회로(324)는, DES(Data Encryption Standard), AES(Advance Encryption Standard) 등과 같은 암호화 알고리즘을 적용함으로써 장치 키에 기초하여 검증 코드를 암호화한다. DRM 데이터는 또한 암호화될 수 있고 라이선스의 부분을 형성할 수 있다.
블록(328)(CRYPTO)에 의하여 표현된 바와 같이, 일부 실시형태에서는, 검증 코드는, IP 벤더에 의하여, IP 벤더 키(IP VENDOR KEY)를 사용하여 암호화될 수 있고, IP 벤더 키는 또한 예를 들어, IP 벤더에 의하여 IP 블록 내에 저장되며, 검증 코드가 복호화되는 것을 허용한다. 이 방법에서는, 라이선스 발행자(104) 조차도 검증 코드에 접근할 수 없다.
그런 후, 생성된 라이선스는 장치(102)로 제공된다. 일부 실시형태에서, 장치 키를 사용하여 라이선스 생성기(316)에 의하여 라이선스를 암호화하고, 그런 후 장치(102)에서 라이선스를 복호화하도록 대칭적인 암호화/복호화 알고리즘을 사용하여서, 만일 그 키가 동일하다면, 검증 코드가 연속적으로 회복될 것이다.
도 4는, 라이선스 서버(108)와 IP 사이의 통신이 클라이언트 서버 구성에 기초하는 경우에, 일 예의 실시형태에 따라서 더 상세하게 도 3a의 장치(102)의 라이선싱 구성요소를 개략적으로 나타낸다. 그러나, 다른 실시형태에 있어서, 칩상의 네트워크(NoC), 또는 멀티캐스트 또는 브로드캐스트 프로토콜 등과 같은, 다른 타입의 통신 구성이 가능할 수 있다. 라이선스 서버(108)와 IP 사이의 통신은 예를 들어 암호화를 사용하여 안전하게 된다. 라이선스 서버(108)와 IP 사이의 통신 인터페이스의 구현예가 예를 들어 국제 특허 출원 공보 WO2017/006058호에 상세하게 설명되어 있다.
도 4에 나타낸 바와 같이, JTAG(Jointed Test Action Group) 인터페이스는, 예를 들어 라이선스 생성기(316)로부터 수신된 라이선스를 장치(102)의 라이선스 메모리(LICENSE MEMORY)(108)로 전송하기 위하여 사용된다. 물론, USB(universal serial bus)와 같은, 다른 인터페이스 표준을 사용하는 것이 가능하다. 메모리(118)는, 예를 들어, RAM(Random Access Memory)이다. 라이선스 메모리(118)는 예를 들어, 라이선스 서버(108)와 내부적으로 결합되어 있다. 라이선스 서버(108)는, 예를 들어, 라이선스 버스(LICENSE BUS)(404)를 통하여, 보호 IP 블록(406)과 소통한다. 도 4의 예에서, 라이선스 버스(404)는 각 IP 블록(406)과 관련된 라이선스 클라이언트 회로(LICENSE CLIENT)(408)에 결합되어 있으며, 이것은 도 4에서 IP 코어(IP CORE)(410)로 표시된, 나머지 IP 블록(406)에 차례로 결합되어 있다. 도 4의 예에서, N개의 IP 코어(1 내지 N)가 있으며, 여기서 N은 예를 들어 2 이상의 정수이다.
각 IP 블록(406)의 라이선스 클라이언드(408)은 예를 들어 라이선스를 검증하고, 이 검증을 기초하여 활성 코드를 대응하는 IP 코어로 그 기능을 활성화하기 위하여 제공한다. 예를 들어, 각 라이선스 클라이언트(408)는, 라이선스가 유효하다고 판정되면 활성화 코드가 로드되는, 활성화 코드 레지스터(412)를 구비한다. 각 라이선스 클라이언트의 레지스터(412)가, 그 기능을 활성화시키기 위하여 대응하는 IP 코어(410)과 결합된다.
도 5a 및 도 5b는 논리 게이트를 IP 블록의 신호 경로에 삽입함으로써, 활성화 코드의 하나 이상의 비트에 의존하여 IP 블록의 활성화를 제공하기 위하여 사용된 회로의 예를 설명한다.
도 5a의 예에서, 클라우드(502)로 표시된 IP 블록의 회로부는 라인(504)에 출력 신호를 공급하며, 이것은 동기 논리 장치(A)(506)의 입력에 결합되어 있다. 활성화 비트에 의존하여 출력선(504)의 활성화를 제공하기 위하여, 활성화 회로(508)는 출력선(504)과 동기 장치(506)의 입력 사이에 삽입된다. 회로(508)은 예를 들어 입력은 라인(504)에 결합되어 있고 출력은 배타적 OR(XOR) 게이트(512)의 한 입력에 결합되어 있는 인버터(NOT)(510)를 구비한다. 배타적 OR 게이트(512)의 다른 입력은 활성 비트(en_a)를 수신하며, 이것은 라인(504)에 존재하는 데이터 신호가 동기 장치(506)로 전파되는 것을 허용하기 위하여 하이(high)이어야 한다.
도 5b는, 도 5a의 예에서와 같이, 동일한 신호 경로에 삽입된 활성 회로(518)의 다른 예를 나타낸다. 그러나, 회로(518)는, 라인(504)에 결합되어 있는 한 입력과 활성 비트(en_b)를 수신하도록 결합된 다른 입력을 갖는 배타적 OR(XOR) 게이트(520)을 구비한다. 이 예에서, 활성 비트는, 라인(504) 상의 신호가 동기 장치(B)(506)의 입력으로 전파되는 것을 허용하기 위하여 로우(low)이어야 한다.
따라서, 도 5a 및 도 5b는, 하이 및 로우 활성 비트 각각에 기초하여 IP 블록의 회로부를 활성시키기 위하여 삽입될 수 있는 회로의 예를 나타낸다. 유사한 회로가 IP 블록 내의 다양한 지점에 삽입될 수도 있어서, IP 블록이 정확한 활성 코드없이는 기능하지 않도록 한다. 물론, 도 5a 및 도 5b는 IP 블록을 보호하기 위하여 사용될 수 있는 논리 게이트의 일부 예를 단지 제공하며, 많은 다른 논리 기능이 동일한 원리에 기초하여 구현될 수 있다. 일부 실시형태에 있어서, 삽입은 랜덤하게 수행되어서, 활성화 코드는 랜덤값이고 하부 회로의 기능에 의존하지 않는다. 다른 실시형태에 있어서, 삽입은 랜덤이 아닐 수 있다. 또한, 도 5a 및 도 5b의 예에서 회로(508)는, 활성화 코드의 "1" 비트 의하여 활성화되는 경우에 사용되는 반면, 회로(518)는 활성화 코드의 "0" 비트에 의하여 활성화하는 경우에 사용되며, 다른 실시형태에 있어서, "1" 및 "0" 비트 활성화의 경우에 사용되는 복수의 다른 회로가 있으며, 이 회로들 중에서 선택은 랜덤이다.
일부 실시형태에 있어서, 도 1의 라이선스 관리 회로(106)는, 미터링 방법을 구현하도록 또한 구성되며, 도 6 및 도 7을 참조하여 더 상세하게 설명될 것이다.
도 6은 본 명세서의 일 실시형태에 따르는 미터링 회로(602)를 개략적으로 설명한다. 회로(602)는, 예를 들어 라이선스 발행자(104)에게 미터링 데이터를 주기적으로 제공하기 위하여 장치(102) 상에서 구현된다. 예를 들어 미터링 데이터는 하나 이상의 보호 회로(IPs)의 활동에 대한 데이터에 해당한다. 도 6의 예에서, 회로(602)는 N개의 미터링 카운터(METERING COUNTER IP1, METERING COUNTER IPN)(604)를 구비하는데, 이것은 대응하는 보호 회로(IP1 내지IPN)로부터 이벤트 신호(EVENT IP1 내지 EVENT IPN)를 각각 수신한다. 예를 들어, 이벤트 신호는, 이벤트가 회로의 활동과 관련하여 발생될 때를 나타낸다. 예를 들어, 이벤트는 하나 이상의 화상 처리 작동, 하나 이상이 패킷의 처리, 하나 이상의 지시의 실행 등에 대응한다.
미터링 카운터(604)에 의하여 발생된 카운트 값은, 예를 들어 미터링 데이터 생성기(606)로 제공되며, 이것은 미터링 데이터(M_DATA)를 주기적으로 생성하기 위하여 미터링 데이터를 사용한다. 예를 들어, 미터링 데이터는 주어진 시간 간격 동안 각각의 카운터(604)에 의하여 카운트된 이벤트 집계에 대응한다.
미터링 데이터(M_DATA)는 예를 들어 도 1의 라이선스 관리 회로(106)의 라이선스 제어 회로(110)에 제공되며, 예를 들어 새로운 미터링 데이터가 생성되어 각 라이선스 요청 메시지에 통합된다. 일부 실시형태에 있어서, 미터링 데이터는, 카운터(122) 대신에 또는 카운터에 더하여, 각 라이선스의 유효 기간을 결정하기 위하여 사용될 수 있다. 선택적으로, 미터링 데이터는 라이선스 요청과 무관하게 전송될 수 있다.
도 7은 본 명세서의 일 예의 실시형태에 따르는 장치 라이센싱 및 미터링 시스템(700)을 개략적으로 나타낸다. 도 1의 특징과 유사한 도 7의 특징은 동일한 참조번호를 붙이고 다시 상세한 설명은 하지 않는다.
도 7의 시스템에서, 장치(102)는 라이선스 관리 회로(106) 및 소프트 설계 키트(SDK)(702)를 구비한다. 예를 들어 SDK(702)는 회로(106)와 라이선스 발행자(104) 사이의 통신을 제어하기 위한 소프트웨어층을 제공한다. 예를 들어, 라이선스 관리 회로(106)는 주기적인 라이선스 요청 메시지를 발생하며, 각각은 상태 신호(STATUS), 시드값(SEED) 및 미터링 데이터(M_DATA)를 구비한다. 예를 들어 상태 신호는 라이선스 로딩이 계속적으로 로딩되고 있는지를 기록한다. 이 신호는 단일 비트일 수도 있으며, 또는 하나보다 많은 비트를 사용하는 좀 더 복잡한 상태 정보를 부호화할 수 있다. SDK(702)는 차례로 라이선스 요청 메시지를 라이선스 발행자(104)에게 보내며, 이 예에서는 이것은 미터링 데이터 기억장치를 포함한다(LICENSE ISSUER AND METERING DATA STORAGE). 발행자(104)는, 예를 들어 청구 목적을 위하여 사용될 수 있는 미터링 데이터를 추출하며, SDK(702)에 의하여 전달된 그 요청된 라이선스를 라이선스 관리 회로(106)로 되돌린다.
일부 실시형태에 있어서, 각 라이선스 요청은 또한 장치(102)의 사용과 관련된 사용자 식별자 및/또는 기간 식별자를 나타내어서, 예를 들어 사용자 계좌가 미터링 데이터 및/또는 라이선스 요청과 관련짖는 것을 허용한다.
여기서 설명된 실시형태의 장점은, 제한된 유효 기간을 갖는 라이선스에 기초한, 라이선스 보호는, 장치에 의하여 발생된 시드값에 기초하는 간단한 방법으로 장치의 회로에 적용될 수 있다는 점이다. 실제로, 시드값은, 각 라이선스가 장치에 저장된 대응하는 시드값에 기초하여 발생되었는지의 검증을 가능하게하며, 라이선스는, 대응하는 시드값을 제거함으로써 만기 제한 이후에는 무효화시킬 수 있다.
따라서 하나 이상의 예시적인 실시형태를 설명하였지만, 다양한 변형, 변경 및 개선은 당업자에게 용이하게 나타날 것이다. 예를 들어, 라이선스 관리 회로의 특정한 예가 도 1과 관련하여 설명되었으나, 다양한 변형이 적용될 수 있다는 것은 당업자에게는 명백할 것이다. 또한, 이 회로가 장치(102) 상에서 구현되는 것보다는, 장치(102)와 통신하는 개별 장치에 구현될 수도 있다.
또한, 수량을 세는 여러 실시형태에서 카운터가 기재되어 있지만, 하나 이상의 카운터가 선택적으로 감소될 수도 있다는 것은 당업자에게는 명백할 것이다. 예를 들어, 카운터(122)는 라이선스의 유효 기간에 기초하는 카운트값에서 개시될 수 있으며, 이 카운터가 제로에 도달할 때 라이선스 갱신 또는 만료가 유발될 수 있다.
또한, 여러 실시형태와 관련하여 기재된 다양한 특징은 다른 실시형태에서, 임의의 조합으로 결합될 수 있다는 것은 당업자에게 명백할 것이다.
Claims (11)
- 하나 이상의 보호 회로(IP1 내지 IPN)와,
라이선스 발행자(104)로부터, 상기 하나 이상의 보호 회로를 활성화시키기 위한 라이선스를 요청하도록 구성된 라이선스 제어 회로(110)로서, 상기 라이선스 요청은 시드값(SEED)을 구비하는 라이선스 제어 회로(110)와,
상기 시드값에 기초하여 상기 라이선스 발행자로부터 수신된 라이선스의 진위를 검증하도록 구성된 암호화 회로(120)를 구비하며,
상기 라이선스 제어 회로(110)는, 수신된 라이선스에 유효성 제한을 부여하고, 상기 수신된 라이선스의 상기 유효성 제한 이전에 상기 라이선스 발행자로부터 새로운 라이선스를 요청하도록 구성되며, 상기 새로운 라이선스 요청은 새로운 시드값(SEED)을 구비하는 집적 회로. - 제1항에 있어서,
하나 이상의 상기 시드값을 저장하도록 구성된 시드 메모리(116)를 더 구비하는 집적 회로. - 제2항에 있어서,
상기 라이선스 제어 회로(110)는 무효 라이선스와 관련된 시드값을 상기 시드 메모리(116)로부터 제거하도록 구성되는 집적 회로. - 제2항 또는 제3항에 있어서,
상기 수신된 라이선스는 메시지 인증 코드(MAC)를 구비하며, 상기 암호화 회로(120)는, 상기 시드 메모리(116)에 저장된 상기 시드값을 사용하여 상기 메시지 인증 코드를 검증함으로써 상기 라이선스의 진위를 검증하도록 구성되는 집적 회로. - 제1항 내지 제4항 중 어느 한 항에 있어서,
랜덤 또는 의사-랜덤 값을 생성하도록 구성된 랜덤값 생성기(112)를 더 구비하며, 상기 라이선스 제어 회로는 상기 랜덤 또는 의사-랜덤 값에 기초하여 상기 시드값을 생성하도록 구성되는 집적 회로. - 제1항 내지 제5항 중 어느 한 항에 있어서,
상기 시드값은 상기 집적 회로를 식별하는 장치 식별자를 구비하는 집적 회로. - 제1항 내지 제6항 중 어느 한 항에 있어서,
상기 라이선스는 검증 코드를 구비하며, 상기 집적 회로는 상기 검증 코드의 검증에 기초하여 상기 하나 이상의 보호 회로 중 제1 보호 회로와 관련된 활성화 레지스터(412)로 활성화 코드를 로딩함으로써 상기 제1 보호 회로를 활성화시키도록 구성된 회로 활성화 모듈을 더 구비하는 집적 회로. - 제7항에 있어서,
상기 암호화 회로는, 추가적으로,
상기 시드값으로부터 장치 키(DEVICE KEY)를 얻고,
상기 검증 코드를 추출하기 위하여 상기 장치 키를 사용하여 상기 수신된 라이선스를 복호하도록 구성된 집적 회로. - 제1항 내지 제8항 중 어느 한 항에 있어서,
상기 하나 이상의 보호 회로의 활동과 관련하여 하나 이상의 카운트 값을 수신하고, 상기 하나 이상의 카운트 값에 기초하여 미터링(metering) 데이터를 생성하도록 구성된 미터링 데이터 생성기(606)를 더 구비하는 집적 회로. - 제9항에 있어서,
상기 라이선스 제어 회로(110)는, 추가적으로,
상기 라이선스 발행자(104)로부터 새로운 라이선스에 대한 요청에 미터링 데이터를 포함하고, 및/또는
상기 미터링 데이터에 기초하여 수신된 라이선스의 유효성 제한을 결정하도록 구성된 집적 회로. - 집적 회로의 하나 이상의 보호 회로에 라이선스를 적용하는 방법으로서,
상기 라이선스 발행자(104)로부터, 상기 하나 이상의 보호 회로를 활성화시키기 위한 라이선스를 요청하는 단계로서, 상기 라이선스 요청은 시드값(SEED)을 구비하는 단계;
상기 시드값에 기초하여 상기 라이선스 발행자로부터 수신된 라이선스의 진위를 검증하는 단계; 및
상기 수신된 라이선스에 유효성 제한을 부여하고, 상기 수신된 라이선스의 유효성 제한 이전에 상기 라이선스 발행자로부터 새로운 라이선스를 요청하는 단계로서, 상기 새로운 라이선스 요청은 새로운 시드값(SEED)을 구비하는, 단계
를 구비하는 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1761778A FR3074933B1 (fr) | 2017-12-07 | 2017-12-07 | Systeme et procede de licence et de mesure d'utilisation d'un bloc ip |
FR1761778 | 2017-12-07 | ||
PCT/FR2018/053153 WO2019110945A1 (fr) | 2017-12-07 | 2018-12-07 | Systeme et procede de licence et de mesure d'utilisation d'un bloc ip |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200104868A true KR20200104868A (ko) | 2020-09-04 |
Family
ID=62167401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207018962A KR20200104868A (ko) | 2017-12-07 | 2018-12-07 | Ip 블록의 사용을 라이선싱하고 측정하는 시스템 및 방법 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11562050B2 (ko) |
EP (1) | EP3721363A1 (ko) |
JP (1) | JP2021506050A (ko) |
KR (1) | KR20200104868A (ko) |
CN (1) | CN111954876A (ko) |
FR (1) | FR3074933B1 (ko) |
WO (1) | WO2019110945A1 (ko) |
Families Citing this family (2)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4168679B2 (ja) * | 2002-06-26 | 2008-10-22 | ソニー株式会社 | コンテンツ利用管理システム、コンテンツを利用し又は提供する情報処理装置又は情報処理方法、並びにコンピュータ・プログラム |
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 (ja) * | 2008-07-04 | 2010-01-21 | Nec Corp | ライセンス発行管理システム、方法、及び、プログラム |
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 (ko) * | 2014-05-29 | 2017-06-15 | 삼성에스디에스 주식회사 | 집적 회로 장치 및 상기 집적 회로 장치에서의 신호 처리 방법 |
FR3038757B1 (fr) * | 2015-07-07 | 2017-08-11 | Univ Montpellier | Systeme et procede d'authentification et de licence ip |
-
2017
- 2017-12-07 FR FR1761778A patent/FR3074933B1/fr active Active
-
2018
- 2018-12-07 CN CN201880079136.2A patent/CN111954876A/zh active Pending
- 2018-12-07 KR KR1020207018962A patent/KR20200104868A/ko not_active Application Discontinuation
- 2018-12-07 EP EP18833271.2A patent/EP3721363A1/fr active Pending
- 2018-12-07 WO PCT/FR2018/053153 patent/WO2019110945A1/fr unknown
- 2018-12-07 JP JP2020550921A patent/JP2021506050A/ja active Pending
- 2018-12-07 US US16/770,547 patent/US11562050B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2019110945A1 (fr) | 2019-06-13 |
FR3074933B1 (fr) | 2021-05-21 |
US11562050B2 (en) | 2023-01-24 |
CN111954876A (zh) | 2020-11-17 |
FR3074933A1 (fr) | 2019-06-14 |
US20200372128A1 (en) | 2020-11-26 |
JP2021506050A (ja) | 2021-02-18 |
EP3721363A1 (fr) | 2020-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
White | ABYSS: ATrusted Architecture for Software Protection | |
US7082539B1 (en) | Information processing apparatus | |
US11023621B2 (en) | System and method for authenticating and IP licensing of hardware modules | |
Kean | Cryptographic rights management of FPGA intellectual property cores | |
US20070055892A1 (en) | Concealment of information in electronic design automation | |
US8427193B1 (en) | Intellectual property core protection for integrated circuits | |
CN103221961A (zh) | 包括用于保护多用户敏感代码和数据的架构的方法和装置 | |
EP2828759A1 (en) | Method and system for process working set isolation | |
Zhang et al. | A pragmatic per-device licensing scheme for hardware IP cores on SRAM-based FPGAs | |
US20090222927A1 (en) | Concealment of Information in Electronic Design Automation | |
US6651169B1 (en) | Protection of software using a challenge-response protocol embedded in the software | |
JP2007257626A (ja) | 臨時ライセンスを用いてコンテンツを臨時に使用する方法及び装置 | |
US11562050B2 (en) | System and method for licensing and for measuring use of an IP block | |
Roy et al. | Protecting bus-based hardware IP by secret sharing | |
Maes et al. | Analysis and design of active IC metering schemes | |
KR20090000333A (ko) | 정보 처리 시스템, 전자 허가 정보 발행 장치, 전자 정보이용 장치, 권리 발행 장치, 전자 허가 정보 발행프로그램, 전자 정보 이용 프로그램, 권리 발행 프로그램,및 정보 처리 방법 | |
US20150262084A1 (en) | Methods for defending static and dynamic reverse engineering of software license control and devices thereof | |
Amelino et al. | An IP core remote anonymous activation protocol | |
Mohammad et al. | Required policies and properties of the security engine of an SoC | |
Adi et al. | VLSI design exchange with intellectual property protection in FPGA environment using both secret and public-key cryptography | |
Barbareschi et al. | Partial FPGA bitstream encryption enabling hardware DRM in mobile environments | |
Couture et al. | Periodic licensing of FPGA based intellectual property | |
Drimer et al. | Protecting multiple cores in a single FPGA design | |
JP7560535B2 (ja) | 暗号化物理複製困難関数回路ヘルパーデータ | |
Zhang et al. | Public key protocol for usage-based licensing of FPGA IP cores |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |