KR20180048592A - 하드웨어 모듈의 인증 및 ip 라이센싱을 위한 시스템 및 방법 - Google Patents

하드웨어 모듈의 인증 및 ip 라이센싱을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20180048592A
KR20180048592A KR1020187002879A KR20187002879A KR20180048592A KR 20180048592 A KR20180048592 A KR 20180048592A KR 1020187002879 A KR1020187002879 A KR 1020187002879A KR 20187002879 A KR20187002879 A KR 20187002879A KR 20180048592 A KR20180048592 A KR 20180048592A
Authority
KR
South Korea
Prior art keywords
license
circuit
authentication
code
activation
Prior art date
Application number
KR1020187002879A
Other languages
English (en)
Inventor
라이오넬 토레스
제롬 램폰
가엘 폴
Original Assignee
유니베르시테 드 몽펠리에
가엘 폴
제롬 램폰
쌍트르 나셔날 드 라 르쉐르쉐 씨앙띠피끄
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 유니베르시테 드 몽펠리에, 가엘 폴, 제롬 램폰, 쌍트르 나셔날 드 라 르쉐르쉐 씨앙띠피끄 filed Critical 유니베르시테 드 몽펠리에
Publication of KR20180048592A publication Critical patent/KR20180048592A/ko

Links

Images

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/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]
    • 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/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • 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/2101Auditing as a secondary aspect

Landscapes

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

Abstract

본 발명은 장치(102)의 하나 이상의 보호 회로(206)를 선택적으로 활성화하기 위한 라이센스 인증 회로에 관한 것으로, 상기 라이센스 인증 회로는: 상기 장치(102)와 연관된 식별자(DEVICE ID)로부터 장치 키(DEVICE KEY)를 유도하고; 제1 라이센스를 수신하고; 제1 인증 코드를 추출하기 위해 상기 장치 키를 사용하여 상기 제1 라이센스를 암호 해독하고; 및 제1 보호 회로를, 상기 제1 인증 코드의 인증에 기초하여 상기 제1 보호 회로와 연관된 활성화 레지스터(212)에 활성화 코드를 로딩함으로써 활성화할 수 있다.

Description

하드웨어 모듈의 인증 및 IP 라이센싱을 위한 시스템 및 방법
본 특허 출원은 본원에서 참고로 인용된 프랑스 특허 출원 FR15/56418의 우선권을 주장한다.
본 개시는 집적 회로 분야에 관한 것으로, 특히 집적 회로 내의 IP(지식 재산) 블록의 인증 및 라이센싱을 부여하는 방법 및 시스템, 또는 보다 일반적으로는 임의의 회로 또는 시스템의 인증 및 라이센싱에 관한 것이다.
집적 회로는 일반적으로 IP(지식 재산) 블록과 같은 분야에서 알려진 회로 블록들의 집합을 포함한다. IP 블록은 특정 기능을 수행하며 다양한 여러 집적 회로에서 재사용될 수 있는 개별 하드웨어 회로 설계를 말한다. 주어진 집적 회로(IC)의 IP 블록은 일반적으로 IP 블록의 IP 소유권자에 의해 IC 설계자에게 라이센스가 부여된다.
IP 블록은 일반적으로 RTL(레지스터 트랜스퍼 수준), 베릴로그(Verilog) 또는 VHDL(초고속 집적 회로 하드웨어 기술 언어)과 같은 하드웨어 기술 언어로, 소프트웨어로 IC 설계자에게 전달된다. IP 소유권자는 IC 설계자에게 라이센스를 부여하여 그들의 IP 블록을 제한된 수의 집적 회로 및/또는 제한된 수의 프로젝트에서 사용하게 하거나, IP 블록을 통합하는 각각의 집적 회로/프로젝트에 대해 로열티 지불을 요청한다. 그러나, 집적 회로 불법 복제는 점점 더 많은 문제가 되고 있다. 사실, IP 블록이 IC 설계자에게 전달되는 순간부터, IP 소유권자는 그들의 IP 블록이 사용되는 방식을 제어하고 이들의 설계를 사용하여 제조된 집적 회로의 수를 제한한다는 것은 매우 어려운 일이 되어 버린다.
IP 소유권자가 그들의 회로 설계를 잠그는 것을 허용하는 몇 가지 해결책이 제안되었다. 그러나 기존 해결책은 복잡하고 비용이 많이 들거나 보안상 충분하지가 않다.
본 개시의 실시예의 목적은 종래 기술에서의 하나 이상의 필요성을 적어도 부분적으로 해결하는 것이다.
일 형태에 따르면, 장치의 하나 이상의 보호 회로를 선택적으로 활성화하기 위한 라이센스 인증 회로를 제공하고 있으며, 상기 라이센스 인증 회로는: 상기 장치와 연관된 식별자로부터 장치 키를 유도하고; 제1 라이센스를 수신하고; 제1 인증 코드를 추출하기 위해 상기 장치 키를 사용하여 상기 제1 라이센스를 암호 해독하고; 및 제1 보호 회로를, 상기 제1 인증 코드의 인증에 기초하여 상기 제1 보호 회로와 연관된 활성화 레지스터(212)에 활성화 코드를 로딩함으로써 활성화하도록 구성된다.
일 실시예에 따르면, 상기 장치와 연관된 상기 식별자는 PUF((physically unclonable function; 물리적 복제 방지 기능)에 의해 제공된다.
일 실시예에 따르면, 상기 라이센스 인증 회로는 암호화로 보호되는 인터페이스를 통해 상기 장치와 연관된 상기 식별자를 판독하도록 구성된다.
일 실시예에 따르면, 상기 라이센스 인증 회로는 상기 장치 키를 유도하는 키 유도 회로 및 상기 제1 라이센스를 암호 해독하기 위한 해독 회로를 포함하는 라이센스 서버; 상기 제1 보호 회로와 연관되며 상기 제1 인증 코드에 기초하여 상기 제1 보호 회로를 활성화하기 위한 제1 제어 회로를 포함하는 제1 라이센스 클라이언트; 및 제2 보호 회로와 연관되며 제2 활성화 코드를 상기 제2 보호 회로와 연관된 활성화 레지스터에 로딩함으로써 상기 제2 보호 회로를 활성화하도록 구성되는 제2 제어 제어 회로를 포함하는 제2 라이센스 클라이언트를 더 포함한다.
일 실시예에 따르면, 상기 라이센스 서버는 상기 제1 인증 코드를 상기 제1 라이센스 클라이언트로 전송하고 상기 제2 인증 코드를 상기 제2 라이센스 클라이언트로 전송하도록 구성된다.
일 실시예에 따르면, 상기 제1 인증 코드는 상기 제1 라이센스로부터 추출된 추가 키에 기초하여 상기 라이센스 서버에 의해 암호화되어 상기 제1 라이센스 클라이언트의 상기 제1 제어 회로에 전송된다.
일 실시예에 따르면, 상기 해독 회로는 상기 제1 라이센스로부터 상기 추가 키를 추출하도록 더욱 구성된다.
일 실시예에 따르면, 상기 제1 인증 코드는 IP 벤더 키를 사용하여 암호화된 상기 활성화 코드를 포함하고, 상기 제1 라이센스 클라이언트는 상기 IP 벤더 키를 메모리에 저장하고 상기 IP 벤더 키에 기초하여 상기 제1 인증 코드를 암호 해독하여 상기 활성화 코드를 추출하도록 더욱 구성되다.
일 실시예에 따르면, 상기 제1 라이센스 클라이언트는: 챌린지 값을 생성하고 상기 챌린지 값을 상기 라이센스 서버에 전송하도록 구성된 난수 생성기를 포함하는 챌린지 생성 회로; 및 적어도 상기 챌린지 값에 기초하여 제1 응답 값을 생성하도록 구성된 제1 응답 생성 회로를 포함하고, 상기 라이센스 서버는: 상기 챌린지 값을 수신하고 적어도 상기 챌린지 값에 기초하여 제2 응답 값을 생성하도록 구성된 제2 응답 생성 회로를 포함하며, 상기 제1 라이센스 클라이언트는 상기 제1 응답 값을 상기 제2 응답 값과 비교하도록 구성된 인증 회로를 더 포함한다.
일 실시예에 따르면, 상기 제1 및 제2 응답 생성 회로는 해시 함수에 기초하여 상기 제1 및 제2 응답 값을 생성하도록 구성된다.
일 실시예에 따르면, 상기 제1 라이센스 클라이언트는 상기 활성화 코드의 사본을 저장하는 비휘발성 메모리를 포함하고, 상기 제1 제어 회로는 상기 제1 인증 코드의 하나 이상의 값의 인증에 기초하여 상기 활성화 코드의 상기 사본을 상기 활성화 레지스터에 로딩하도록 구성된다.
일 실시예에 따르면, 상기 인증 코드는: 상기 라이센스의 유효 기간; 상기 라이센스의 지리적 한계; 상기 라이센스의 하나 이상의 하드웨어 유형에 대한 한계; 상기 라이센스의 온도 한계; 상기 라이센스의 전압 한계; 상기 라이센스의 대역폭 한계; 상기 라이센스의 속도 한계; 상기 라이센스의 가속도 한계; 상기 라이센스의 습도 한계; 상기 라이센스의 광 레벨 한계; 상기 라이센스의 자기장 한계; 및 상기 라이센스의 방사능 한계 중 하나 이상의 나타내는 추가 데이터를 포함한다.
일 실시예에 따르면, 상기 제1 활성화 코드는 복수의 비트를 포함하고, 상기 제1 보호 회로는 상기 제1 보호 회로의 신호 경로를 선택적으로 활성화하도록 구성된 복수의 논리 게이트를 포함하고, 상기 논리 게이트 각각은 상기 제1 보호 회로의 노드에 결합된 제1 입력 및 상기 활성화 레지스터에 의해 저장된 상기 비트들 중 하나를 수신하도록 결합된 제2 입력을 갖는다.
다른 형태에 따르면, 제1항에 따른 라이센스 인증 회로를 포함하는 제1 IP 모듈; 제1항에 따른 라이센스 인증 회로를 포함하는 제2 IP 모듈; 및 제1 라이센스를 상기 제1 IP 모듈에 전송하고 제2 라이센스를 상기 제2 IP 모듈에 전송하도록 구성된 서큘레이터를 포함하는 라이센스 인증 시스템을 제공하고 있다.
다른 형태에 따르면, 장치의 장치 식별자에 기초하여 장치 키를 유도하도록 구성된 키 유도 회로; 및 상기 장치 키를 사용하여 하나 이상의 활성화 코드를 암호화함으로써 상기 장치의 하나 이상의 보호 회로에 대한 제1 라이센스를 생성하도록 구성된 암호화 회로를 포함하는 라이센스 생성 회로를 제공하고 있다.
일 실시예에 따르면, 상기 암호화 회로는 상기 제1 라이센스에 포함되는 추가 키를 암호화하도록 더욱 구성된다.
또 다른 형태에 따르면, 장치의 하나 이상의 보호 회로를 선택적으로 활성화하기 위한 라이센스 인증 방법을 제공하고 있으며, 이 방법은: 상기 장치와 연관된 식별자로부터 장치 키를 유도하는 단계; 제1 라이센스를 수신하는 단계; 제1 인증 코드를 추출하기 위해 상기 장치 키를 사용하여 상기 제1 라이센스를 암호 해독하는 단계; 및 제1 보호 회로를, 상기 제1 인증 코드의 인증에 기초하여 상기 제1 보호 회로와 연관된 활성화 레지스터(212)에 제1 활성화 코드를 로딩함으로써 활성화하는 단계를 포함한다.
전술 및 그 외 특징 및 이점은 첨부된 도면을 참조하여 예시적이지만 제한하지 않는, 다음의 상세한 설명으로부터 명백해질 것이다:
도 1a는 본 개시의 일 예시의 실시예에 따른 IP 블록 라이센싱을 허용하는 시스템을 나타내는 도식도;
도 1b는 일 예시의 실시예에 따른 도 1a의 라이센스 생성 회로를 더 상세히 도시한 도면;
도 2는 본 개시의 일 예시의 실시예에 따른 IP 라이센싱 구성 요소를 포함하는 집적 회로를 나타내는 도식도;
도 3a 및 도 3b는 본 개시의 일 예시의 실시예에 따른 IP 블록의 활성화 회로를 나타내는 도식도;
도 4는 본 개시의 일 예시의 실시예에 따른 도 2의 집적 회로의 라이센스 서버 및 라이센스 클라이언트를 보다 상세하게 나타내는 도식도;
도 5는 본 개시의 일 예시의 실시예에 따른 도 4의 라이센스 서버 및 라이센스 클라이언트를 사용하여 라이센스에 기초한 IP 블록을 활성화하는 방법의 동작을 도시하는 흐름도;
도 6은 본 개시의 또 다른 예시의 실시예에 따른 도 2의 집적 회로의 라이센스 서버 및 라이센스 클라이언트를 보다 상세하게 나타내는 도식도;
도 7은 본 개시의 또 다른 예시의 실시예에 따른 도 6의 라이센스 서버 및 라이센스 클라이언트를 사용하여 라이센스에 기초하는 IP 블록을 활성화하는 방법의 동작을 나타내는 흐름도;
도 8은 본 개시의 또 다른 예시의 실시예에 따른 도 2의 라이센스 클라이언트와 라이센스 서버 간의 보안 인터페이스를 보다 상세하게 나타내는 도식도;
도 9는 본 개시의 또 다른 예시의 실시예에 따른 집적 회로상의 라이센싱 구성 요소를 나타내는 도식도;
도 10은 본 개시의 또 다른 예시의 실시예에 따라서 집적 회로상의 라이센싱 구성 요소를 나타내는 도식도;
도 11a 및 11b는 본 개시의 일 실시예에 따른 라이센스 구성 요소를 개략적으로 도시하는 보드 레벨도; 및
도 12는 본 개시의 일 예시의 실시예에 따른 라이센싱 구성 요소들을 포함하는 FPGA(필드 프로그래머블 게이트 어레이)를 도시하는 도식도이다.
다음의 설명에서는 실시예가 하드웨어로 구현되는 것으로 설명되지만, 당업자에게는 다양한 실시예가 하나 이상의 프로세서에 의해 실행되는 소프트웨어 명령어에 의해 적어도 부분적으로 구현될 수 있다는 것이 명백할 것이다.
이하의 설명에서, 다음의 용어는 다음과 같이 정의된다:
IP 블록 - 특정 기능을 수행하고 다양한 여러 집적 회로에서 재사용할 수 있는 개별 하드웨어 회로 설계;
보호 회로 - IP 블록, IP 블록의 집합, 또는 하나 이상의 집적 회로를 포함하는 시스템에 해당하는 것으로, 활성화 코드로 활성화되지 않는 한 비활성화 상태에 있도록 메커니즘으로 보호됨.
도 1a는 본 개시의 일 예시의 실시예에 따른 보호 회로의 인증 및 라이센싱을 허용하는 시스템(100)을 나타내는 도식도이다.
시스템(100)은 3개의 주요 당사자, IP 벤더(IP VENDOR), 신뢰받는 제삼자(TTP), 및 최종 사용자(END USER)와 연관된 하드웨어를 포함한다. 보호는 하나 이상의 보호 회로의 단일 활성화에 기반한다. 각 보호 회로는, 예를 들어 표준 프로토콜을 관리하기 위한 인터페이스, 프로세서, 인코딩 또는 디코딩 회로 등과 같은 고급 동작을 수행할 수 있는 회로와 같이, 정밀한 기능을 수행하도록 개발된 복잡한 회로이다. 보호 회로는 예를 들어, 하나 이상의 애플리케이션 특정 회로 및/또는 하나 이상의 필드 프로그래머블 게이트 어레이(FPGA)를 사용하여 구현된다.
도 1a의 예에서, 최종 사용자에 의해 구매되거나 그렇지 않으면 최종 사용자에 의해 획득되는 장치(102)는 하나 이상의 보호 회로(103)를 포함하는 것으로 가정된다. 도 1a의 예에서, 장치(102)는 집적 회로이고, 보호 회로(103)는 집적 회로의 IP 블록이다. 그러나, 대안적인 실시예에서, 장치는 임의의 전자 장치에 대응할 수 있고, 보호 회로는 하나 이상의 집적 회로를 갖는 보드 또는 시스템을 각각 포함할 수 있다.
집적 회로(102)는 예를 들어, 이동 전화, 태블릿 컴퓨터, 랩탑 컴퓨터, 게임 콘솔 등과 같은 제품의 일부를 형성하거나, 예를 들어 지불 카드, SIM(가입자 식별 모듈) 카드 등을 포함하는, 스마트 카드로 알려진 카드 계통을 포함하여, 집적 회로 카드 상에 실장된 칩일 수 있다.
본 명세서에서 설명된 실시예들에 따르면, 집적 회로(102)상의 하나 이상의 IP 블록(103)은, 예를 들어 최종 사용자가 집적 회로(102)를 수신할 때 비활성화 상태에 있으며, 최종 사용자가 IP 벤더 또는 TTP로부터 라이센스를 요청하여 비활성화된 IP 블록을 활성화시킨다. 그러나, 다른 실시예에서는, 최종 사용자보다는, 집적 회로 설계자 또는 집적 회로(102)를 포함하는 제품의 벤더와 같이, 공급망 내의 다른 당사자에 의해서 활성화가 수행될 수 있다.
장치(102)는 예를 들어 장치(102) 또는 장치(102)의 그룹을 식별하는 비트의 스트링을 포함하며, 예를 들어 인증을 위해 작용하는, 장치 식별자(DEVICE ID)를 포함한다. IP 벤더 또는 TTP에 의해 제공되는 라이센스는 그 식별자를 갖는 장치에 대해서만 사용될 수 있고, 일부 실시예에서, 장치 식별자는 각 장치에 대해 고유하므로 주어진 라이센스가 하나의 장치(102)의 보호 회로를 항상 활성화할 수 있다. 그러나, 일부 실시예에서, 예를 들어 동일한 장치 식별자를 갖는 일괄 장치들을 활성화하는 단일 라이센스를 제공하는 것이 또한 가능할 수 있다. 장치 식별자는 예를 들어 PUF(물리적 복제 방지 기능)에 의해 생성되거나 PUF로부터 유도된다.
장치(102)의 하나 이상의 보호 회로의 활성화는 영구적일 수 있으며, 이는 일단 활성화되면 장치(102)의 보호 회로가 활성화된 상태로 유지됨을 의미한다. 부가적으로 또는 대안적으로, 보호 회로들 중 하나 이상은 장치(102)의 후속되는 리세트 동작 때까지 활성화 상태를 유지할 수 있으며, 이 시점에서 이들 보호 회로들을 재활성화하기 위해 라이센스가 다시 필요할 수 있다. 라이센스는 장치에 저장 유지될 수 있고, 이에 의하면 파워-업 시퀀스 동안, 프리-리셋 동작(리셋 신호가 비활성화되기 이전의 동작)은 이미 메모리에 저장되어 있는 라이센스를 칩에 로딩되게 하여 보호 회로들 중 하나 이상을 활성화한다.
부가적으로 또는 대안적으로, 라이센스는 제한된 지속 시간 동안 또는 장치의 클록의 임의의 클럭 주기 동안 하나 이상의 보호 회로를 초기에 활성화할 수 있다. 예를 들어, 이는 보호 회로의 전부 또는 일부만이 활성화되는, 임시 기간 동안 데모 모드를 허용하고, 임시 기간이 끝나면 예를 들어 풀 라이센스가 보호 회로를 활성화하기 위해 필요하다.
이하의 설명으로부터 명백해지는 바와 같이, 특정 활성화 유형(영구, 다음 리셋 때까지, 임시)은 장치의 각 보호 회로마다 다를 수 있다. 또한, 본 명세서에 설명된 방법은 단일 IP 블록을 활성화시키는데 사용될 수 있지만, 더욱 일반적으로는 임의의 장치의 모든 IP 블록에, 다른 장치 내의 IP 블록 내의 IP 블록 및/또는 다른 IP 블록을 포함하는 IP 블록에, 시스템이나 IC 카드에, 임의의 ASIC(주문형 집적 회로) 기술을 이용하는 설계시 모든 회로의 활성화에, 임의의 FPGA 계통의 활성화에, 임의의 제조자에 의해 제조된 FPGA의 활성화에 대응할 수 있는, 임의의 보호 회로의 활성화에 적용될 수 있다. 또한, 시스템의 레벨에도 적용될 수 있다. 또한, 일부 실시예에서, 라이센스는 IP 블록의 기능들의 서브세트만을 활성화 또는 비활성화하는데 사용될 수 있다.
이하 더욱 상세히 설명되는 바와 같이, 본 명세서에서 기술된 방법 및 장치는 또한 예를 들어, 보호 회로 또는 보호 회로의 하위 기능이 여러번 활성화 및 비활성화되는 것을 허용한다.
IP 블록을 보호하고 활성화하는 프로세스의 예가 이하 더 상세히 설명될 것이다. 이 예는 상술한 바와 같이 IP 블록의 보호에 기초하지만, 다른 실시예에서는 다른 유형의 회로의 보호에 적용될 수 있다.
IP 벤더에서, 데이터베이스(RTL)(104)는 예를 들어 보통의 RTL(레지스터 트랜스퍼 레벨) 코드와 같은 하드웨어 기술 언어로 표현된 하나 이상의 IP 블록을 저장한다.
IP 프로텍터 블록(IP PROTECTOR)(106)은 예를 들어 IP 보호 기능을 실행하기 위한 소프트웨어를 포함하는데, 이 기능은 회로를 비활성화시키기 위해 데이터베이스(104)로부터 IP 블록들 중 하나 이상을 수정하는데 사용된다. 특히, IP 블록은 그 기능을 잠금 해제하기 위해 활성화 코드가 필요하도록 변경된다. 일부 실시예에서, 이 단계는 완전히 자동으로 수행될 수 있는 반면, 다른 실시예에서는 적어도 부분적으로 수동으로, 예를 들어 IP 블록의 설계자에 의해 수행될 수 있다. 이하에서 더욱 상세히 설명되는 바와 같이, IP 블록의 수정은 예를 들어 하드웨어 기술 파일에, 하나 이상의 논리 게이트를 IP 블록의 하나 이상의 신호 경로에 삽입하는 것을 포함한다. 이러한 논리 게이트는 예를 들어, 하나 이상의 정확한 활성화 비트가 삽입된 논리 게이트의 하나 이상의 입력 노드에 제공되는 경우에만 변경되지 않은 신호가 신호 경로를 따라 전파되는 것을 허용한다. 일부 실시예에서, 활성화 코드는 주어진 IP 설계에 고유할 수 있다. 다른 실시예들에서, 동일한 활성화 코드는 하나 이상의 IP 설계에 사용될 수 있다. 또한, 일부 실시예에서, IP 블록을 활성화할 수 있는 하나 이상의 활성화 코드가 있을 수 있다. 이는 예를 들어 라이센스 생성 작업을 용이하게 한다.
본 명세서에서 라이센스 클라이언트(도 1a에 도시되지 않음)로 지칭되는 IP 라이센스를 관리하기 위한 회로는 예를 들어 보호될 각 IP 블록에 추가된다. 아래에서 더욱 상세히 설명되는 바와 같이, 라이센스 클라이언트는 예를 들어 유효한 라이센스가 공급되면 활성화 코드를 저장하기 위한 레지스터를 포함한다. 일부 실시예에서, 라이센스 클라이언트는 각 IP 블록 내에 통합되고, 아래에서보다 상세히 설명될 것이지만, 각 라이센스 클라이언트는 또한 대응하는 IP 블록의 외부에 있을 수도 있다.
일부 실시예에서, 수정된 IP 블록을 나타내는 파일은 예를 들어 암호화에 의해서도 또한 보호된다.
활성화 코드, 및 수정된 IP 블록의 선택적인 일부 또는 전부는 예를 들어 IP 벤더의 데이터베이스(PROTECTED IP)(108)에 저장된다. 수정된 IP 블록은 또한 집적 회로(102)의 설계자에게 전달되므로 도 1a의 화살표(110)로 나타낸 바와 같이, 하나 이상의 보호 IP 블록(103)이 집적 회로의 하드웨어로 구현된다. 특히, 집적 회로 설계자는 예를 들어 집적 회로를 형성하기 위해 다양한 여러 IP 블록들을 결합하고, 이들 IP 블록들 중 하나 이상은 예를 들어 본 명세서에서 설명된 활성화 코드에 의해 보호되는 IP 블록들에 대응한다.
라이센스는 예를 들어 인증 코드를 포함한다. "인증 코드"라는 용어는 본 명세서에서 라이센스와 통신하여 하나 이상의 IP 블록이 활성화되도록 하는 코드를 지정하는데 사용된다. 이 코드는 하나 이상의 IP 블록에 대한 활성화 코드일 수 있다. 다른 실시예에서는, 활성화 코드가 이미 IP 블록의 보호 메모리, 예를 들어 ROM에 저장되고, 활성화 코드는 라이센스에 포함되지 않는다. 이 경우, 인증 코드는 활성화 코드가 보호 메모리로부터 활성화 코드 레지스터로 로딩되도록 하는, IP 블록에 대한 라이센스와 통신하는 비밀 코드이다. 일부 실시예들에서, 임시 라이센스는 회로 구상/테스팅의 목적으로 집적 회로 설계자에게 제공될 수 있다.
집적 회로 설계자는 또한 예를 들어 집적 회로(102)에 라이센스 서버(LICENSE SERVER)(114)를 통합한다. 이 회로는 예를 들어 TTP에 의해 제공되거나, IP 벤더에 의해 보호 IP 블록들 중 하나 이상에 통합될 수 있다. 라이센스 서버(114)는 예를 들어 라이센스가 수신될 수 있는 집적 회로의 포트에 결합된다. 라이센스 서버(114)는 또한 예를 들어 집적 회로의 각 보호 IP 블록에, 및 특히 각 IP 블록의 라이센스 클라이언트 회로에 결합된다.
라이센스 서버(114)는 또한 예를 들어 장치 식별자를, 예를 들어 PUF의 형태로 생성하기 위한 회로를 포함한다. 이하에서보다 상세히 설명되는 바와 같이, 장치 식별자는 예를 들어 집적 회로에 고유한 서명의 생성에 기초한다. 따라서, 비록 2개의 집적 회로가 동일한 기능을 갖도록 제조 및/또는 프로그래밍된다고 할지라도, 이들의 서명 및 이에 따라 이들의 장치 식별자는 상이할 것이다. PUF 값은 예를 들어 집적 회로의 CPU(중앙 처리 장치)에 의해 생성되고/되거나 집적 회로에 장착된 하나 이상의 링 발진기에 기초할 수 있다. PUF는 예를 들어 다음 출간물에서 보다 자세히 기술된다: "위조 불가능한 식별 장치, 식별 장치 판독기 및 식별 방법" 으로 표제된 David Naccache 등에 의한 출간물, 1992년 8월; "데이터, 장치, 문서 및 개인의 식별"로 표제된 G. Simmons에 의한 출간물, IEEE 국제 보안 기술 컨퍼런스, 1991년, 197-218페이지; "PUF: 신화, 사실 또는 실패? 실리콘에 던져진 PUF(물리적 복제 방지 기능)의 보안 평가"로 표제된 Stefan Katzenbeisser 등에 의한 출간물, (2012), 암호화 하드웨어 및 임베디드 시스템 - CHES 2012, 벨기에 루벤 14차 국제 워크숍, 2012년 9월 9-12일, 스프링거 베를린 하이델베르그, 컴퓨터 과학의 강의 노트 7428, 회의록, pp. 283-301, doi:10.1007/978-3-642-33027-8_17, ISBN 978-3-642-33026-1; "물리적 복제 방지 기능: 예술의 상태와 미래 연구 방향에 관한 연구"로 표제된 Roel Maes 등에 의한 출간물; "일시적인 효과 링 발진기에 기반하고 잠김 현상에 둔감한 PUF"로 표제된 L. Bossuet 등에 의한 출간물, 컴퓨팅의 새로운 화제에 대한 IEEE 트랜잭션 Vol. 2, Issue 1, pp. 30-36, 2014; "진정한 난수 발생기에 대한 EM 방사 분석: 주파수 및 위치 파악 검색 방법"으로 표제된 P. Bayon 등의 출간물, APEMC, 2013; "단일 발진기에 기반한 설계하기 쉬운 PUF: 루프 PUF"로 표제된 Z. Cherif 등의 출간물, DSD, 2012; "실리콘 물리적 임의 기능"으로 표제된 B. Gassend 등에 의한 출간물, ACM CCS, pp. 148-160, 2002; "IP 보호를 위한 FPGA 내장 PUF 및 그 사용"으로 표제된 J. Guajardo 등에 의한 출간물, CHES, Springer, LNCS, vol. 4727, pp. 63-80, 2007; "FPGA RO PUF에 대한 반침입성 EM 공격 및 대책"으로 표제된 D. Merli에 의한 출간물. ACM WESS 2011; 및 "장치 인증 및 비밀 키 생성을 위한 물리적 복제 방지 기능"로 표제된 G. E. Suh 등에 의한 출간물, DAC, 2007. 이들 11개의 출간물의 내용은 법이 허용하는 한도 내에서 참고로 인용된다.
집적 회로가 제조 및/또는 프로그래밍 후에 처음으로 활성화될 때, 장치 식별자의 값은 예를 들어 PUF 회로 등에 의해 생성된 값을 판독함으로써 판독된다. 경우에 따라, PUF 값은 집적 회로의 노화 및/또는 환경(온도, 전압 등)과 같은 다른 이유로 인해 시간 경과에 따라 변할 수 있다. 일부 실시예들에서, PUF의 잠재적 인 변화를 고려하여, 생성된 PUF 값의 적어도 일부가 비휘발성 메모리에 저장되고, 및/또는 에러 정정 코드가 생성되어, PUF 값의 특정 비트가 이들의 원래 값에서 벗어난 경우 PUF 값이 정정되게 한다. 장치 식별자는 또한 집적 회로(102)의 포트에서 이용 가능하게 되거나, 그렇지 않으면 집적 회로(102) 외부에서 통신되어, 보호된 IP 블록을 활성화하기 위한 라이센스를 요청하는데 사용된다.
PUF에 대한 대안으로서, 장치 제조자에 의해 장치에 할당된 식별자와 같은 다른 형태의 장치 식별자가 사용될 수 있다.
라이센스 생성은 예를 들어, 최종 사용자 또는 집적 회로(102)를 활성화하고자하는 다른 당사자로부터의 요청에 응답하여, IP 벤더 또는 신뢰받는 제삼자에 의해 수행된다. 라이센스 요청은 집적 회로(102)로부터 판독되는, 장치 식별자를 포함한다.
일 예에 따르면, 활성화 요청은 다수의 IP들의 활성화에 대한 요청을 포함할 수 있다. 예를 들어, 장치 식별자를 획득하기 위해 집적 회로(102)와 상호 작용하는 애플리케이션이, 집적 회로에 연결된 외부 컴퓨터에 제공될 수 있다. 장치 식별자는 신뢰받는 제삼자의 라이센스 서버(LICENSE SERVER)(126)로 전송된다. 예를 들어 라이센스 서버(126)는 이어서 집적 회로의 IP 모듈의 IP 벤더들 각각에게 라이센스에 대한 요청들을 발송한다. 예를 들어 IP 벤더에서 고객 관계 관리 애플리케이션은 고객 데이터베이스를 참조하고 라이센스를 제공할 수 있는지 확인한다. 예를 들어, 대응하는 장치 식별자를 갖는 집적 회로가 도난당한 회로가 아니며, 라이센스에 대한 지불이 수신된 것을 확인한다. IP 벤더는 예를 들어 장치 식별자에 기초하여 라이센스를 생성하고, 이 라이센스를 TTP의 라이센스 서버(126)에 전송하며, 여기에서 라이센스가 예를 들어 저장되고 집적 회로(102)에 전송되어 활성화 프로세스에서 사용한다.
물론 많은 변형이 이 절차에 적용될 수 있다. 예를 들어, 고객 데이터베이스는 장치 식별자에 기초하여 집적 회로의 하나 이상의 IP 블록을 활성화하기 위한 라이센스를 생성하는 라이센스 생성 회로와 함께, TTP에 저장될 수 있다.
일부 실시예에서, 활성화되는 각 IP 블록에 대해 별도의 라이센스가 생성된다. 대안적으로, 라이센스는 복수의 IP 블록들을 활성화하기 위해 생성될 수 있다. 예를 들어, 라이센스는 활성화되는 각 IP 블록의 인증 코드를 포함한다.
라이센스가 IP 벤더에 의해 생성되는 경우에, 집적 회로(102)의 보호 IP 블록 또는 블록들을 잠금 해제하기 위해 필요한 인증 코드 또는 코드들(VERIFICATION CODE)(115)은 예를 들어 IP 벤더에서 라이센스 생성기(LICENSE GENERATOR)(116)에 제공된다. 라이센스 생성기(116)는 예를 들어 집적 회로(102)의 라이센스 서버(114)에 송신되는 라이센스(LICENSE)를 생성하는데 사용된다. 라이센스 생성기(116)는 예를 들어 집적 회로(102)로부터 장치 식별자(DEVICE ID)를 수신하고, 이 식별자 및 인증 코드 또는 코드들에 기초하여 라이센스를 생성한다. 일부 실시예에서, 라이센스는 또한 DRM(설계 소유권 관리) 데이터(120)를 통합한다. 예를 들어 라이센스가 임시 라이센스인 경우에, DRM 데이터는 예를 들어 IP 블록의 활성화 지속 시간에 대한 임의의 한계를 나타낸다. 또한 ASIC의 기술, FPGA 계통 또는 잠금 해제할 IP의 특정 기능과 같은 하나 이상의 하드웨어 유형에 대한 라이센스의 한계를 나타낼 수도 있다. 회로의 하드웨어 유형은 예를 들어 특정 센서에 의해 결정될 수 있으며, IP 블록의 이용을 이들 하드웨어 유형으로 제한하기 위해 하나 이상의 인가된 하드웨어 유형과 비교될 수 있다. 또한, 부가적으로 또는 대안적으로, 라이센스의 DRM 데이터는 장치의 센서에 의해 측정될 수 있는 다른 변수에 기초하여 라이센스의 제한을 나타내는 제한 데이터를 정의할 수 있다. 예를 들어, DRM 데이터는 다음을 정의할 수 있다: 예를 들어, 주변 온도 센서에 기초한 라이센스의 온도 한계; 예를 들어 회로 내의 공급 전압의 레벨에 기초한 라이센스의 전압 한계; 상기 라이센스의 대역폭 한계; 예를 들어 장치의 GPS(글로벌 포지셔닝 시스템)로부터의 판독에 기초하는 라이센스의 속도 한계; 예를 들어 장치의 가속도계로부터의 판독에 기초하는 라이센스의 가속도 한계; 예를 들어 장치의 주변 습도 센서에 기초하는 라이센스의 습도 한계; 예를 들어 장치의 주변 광 센서를 기반으로 한 라이센스의 광 한계; 예를 들어 장치의 홀 효과 센서로부터의 측정에 기초한 라이센스의 자기장 한계; 예를 들어 장치의 가이거 계수기(Geiger counter)로부터의 측정에 기초한 라이센스의 방사능 한계; 및/또는 적절한 센서에 의한 측정에 기초한 다른 유형의 한계를 포함할 수 있다.
일부 실시예에서, DRM 데이터는 인증 코드를 수정한다. 예를 들어, 일부 실시예에서, 인증 코드는 활성화 코드를 포함하고, 활성화 코드의 일부 비트만이 제공되지 않거나 부정확하므로 IP 블록의 일부만이 활성화 코드에 의해 활성화된다. 다른 실시예들에서는, IP 블록의 비트 단위 활성화/비활성화에 기반하지 않는 다른 기술들이 사용될 수 있다.
도 1b는 일 예시의 실시예에 따른 라이센스 생성기(116)를 보다 상세히 도시한다. 라이센스 생성기(116)는 예를 들어, 집적 회로에 의해 제공된 장치 ID에 기초하여 장치 키 DK를 생성하는 키 유도 함수(KDF1) 블록(122)을 포함한다. 또한, 라이센스 생성기(116)는 예를 들어 라이센스를 생성하기 위해서, 장치 키를 인증 코드 또는 활성화되는 IP 블록의 코드들에 적용하는 암호화 회로(124)를 포함한다. 예를 들어, 암호화 회로(124)는 DES(데이터 암호화 표준; Data Encryption Standard), AES(개선된 암호화 표준; Advance Encryption Standard) 등과 같은 암호화 알고리즘을 적용하여 장치 키에 기초한 인증 코드를 부호화한다. DRM 데이터는 암호화되어 라이센스의 일부를 형성할 수도 있다. 또한, 도 6과 관련하여 후술되는 실시예에서, IP 키는 또한 라이센스 생성기(116)에 제공되고 라이센스에 포함되는 회로(124)에 의해 암호화된다.
일부 실시예에서, 라이센스는 IP 벤더에 의해 생성되지 않고, 예를 들어 SaaS(서비스로서의 소프트웨어; Software as a Service) 솔루션의 형태로 TTP에 의해 생성된다. 따라서, TTP는 예를 들어 장치 ID 및 IP 벤더로부터의 인증 코드(들), 및 경우에 따라 IP 키를 수신하는 라이센스 생성기(116)를 포함한다. 블록(128)(CRYPTO)으로 나타낸 바와 같이, 일부 실시예에서, 인증 코드(들)는 IP 벤더 키(IP VENDOR KEY)를 사용하여 IP 벤더에 의해 암호화될 수 있고, IP 벤더 키는 또한 예를 들어 IP 블록 내의 IP 벤더에 의해 저장되어, 인증 코드(들)가 해독될 수 있게 한다. 이렇게 하면 TTP도 인증 코드에 액세스할 수 없다.
라이센스 생성 작업은 라이센스가 부여된 집적 회로의 수를 TTP 또는 IP 벤더가 카운트하는 것을 허용한다. 각 라이센스가 단일 집적 회로에 대해서만 유효한 경우, 생성된 라이센스의 수는 보호된 IP 블록을 포함하는 집적 회로의 수와 동일하게 되고, 따라서 IP 벤더로 인한 로열티를 계산하거나, 라이센싱 계약의 조건을 위반했는지를 확인할 목적으로 카운트가 행해질 수 있다.
생성된 라이센스는 집적 회로(102), 예를 들어 집적 회로(102)의 장치 식별자에 기초하여 라이센스를 해독하고 인증 코드를 추출하는 라이센스 서버(114)에 제공된다. 대칭형 암호화/암호 해독 알고리즘은 예를 들어 장치 키를 사용하여 라이센스 생성기(116)에 의해 인증 코드를 암호화하고, 다음에 집적 회로(102)에서 라이센스를 해독하는데 사용되므로, 키가 동일한 경우 인증 코드가 성공적으로 회복되게 된다.
대안으로, 대칭 암호화/암호 해독을 사용하는 대신 두 개의 키를 기반으로 비대칭 암호화/암호 해독을 수행할 수 있다. 이 경우, 라이센스 서버(114)는 예를 들어 장치 식별자에 기초하여 공개 키를 유도하고, 이 공개 키는 장치 식별자와 함께 라이센스 생성기(116)에 공급된다. 장치 키를 생성하기 위해 키 유도 함수(122)를 사용하는 대신, 라이센스 생성기(116)는 예를 들어 공개 키에 기초하여 라이센스를 암호화한다. 라이센스 서버(114)는 예를 들어, 라이센스 생성기(116)로부터 암호화된 라이센스를 수신하고, 장치 식별자에 기초하여 라이센스를 해독하기 위한 장치 키를 형성하기 위해 개인 키를 생성한다.
또 다른 대안으로서, 다른 유형의 암호화/암호 해독 방식이 타원 곡선에 기초한 알고리즘의 사용을 포함하여 본 명세서에서 설명된 임의의 암호화 블록에 의해 사용될 수 있다.
도 2는 라이센스 서버(114)와 IP(103) 사이의 통신이 클라이언트 서버 구성에 기초하는 경우에, 일 예시의 실시예에 따른 도 1a의 집적 회로(102)의 라이센싱 구성 요소를 더 상세히 나타내는 도식도이다. 그러나, 대안적인 실시예에서, 네트워크 온 칩(NoC) 또는 멀티캐스트 또는 브로드캐스트 프로토콜과 같은 다른 유형의 통신 구성이 가능하다. 라이센스 서버(114)와 IP들(103) 간의 통신은 예를 들어 암호화를 사용하여 보안된다.
도 2에 도시된 바와 같이, JTAG(조인드 테스트 액션 그룹; Joined Test Action Group) 인터페이스는 예를 들어 수신된 라이센스를 라이센스 생성기(116)로부터 집적 회로(102)의 라이센스 메모리(LICENSE MEMORY)(202)로 전송하기 위해 사용된다. 물론, USB(범용 직렬 버스)와 같은 다른 인터페이스 표준을 사용하는 것도 가능하다.
메모리(202)는 예를 들면 RAM(랜덤 액세스 메모리; Random Access Memory)이다. 라이센스 메모리(202)는 내부에서 라이센스 서버(114)에 결합된다. 라이센스 서버(114)는 예를 들어 라이센스 버스(LICENSE BUS)(204)를 통해 보호된 IP 블록(206)과 통신한다. 도 2의 예에서, 라이센스 버스(204)는 각 IP 블록(206)과 연관된 라이센스 클라이언트 회로(LICENSE CLIENT)(208)에 결합되고, 이것은 이어서 도 2에서 IP 코어(IP CORE)(210)로 도면 기호가 붙여진 IP 블록(206)의 나머지 부분에 결합된다. 도 2의 예에서, N개의 IP 코어(1 내지 N)가 존재하며, 여기서 N은 2 이상의 정수이다.
각 IP 블록(206)의 라이센스 클라이언트(208)는 예를 들어, 라이센스를 인증하고, 이 인증에 기초하여, 그 기능을 활성화시키기 위해 활성화 코드를 대응하는 IP 코어에 제공한다. 예를 들어, 각각의 라이센스 클라이언트(208)는 라이센스가 유효한 것으로 밝혀지면 활성화 코드가 로딩되는 활성화 코드 레지스터(212)를 포함한다. 각 라이센스 클라이언트의 레지스터(212)는 그 기능을 활성화하기 위해 대응하는 IP 코어(210)에 결합된다.
도 3a 및 도 3b는 IP 블록의 신호 경로에 논리 게이트를 삽입함으로써 IP 블록의 활성화가 활성화 코드의 하나 이상의 비트에 의존하게 하는데 사용되는 회로의 예를 도시한다.
도 3a의 예에서, 클라우드(302)로 표현된 IP 블록의 회로 부분은 라인(304)에 출력 신호를 제공하고, 이 라인은 동기 논리 장치(A)(306)의 입력에 연결된다. 출력 라인(304)의 활성화가 활성화 비트에 의존하게 하기 위해, 활성화 회로(308)는 출력 라인(304)과 동기 장치(306)의 입력 사이에 삽입된다. 회로(308)는 예를 들어 입력이 라인(304)에 결합되고, 출력이 배타적 OR(XOR) 게이트(312)의 하나의 입력에 결합되어 있는 인버터(NOT)(310)을 포함한다. 배타적 OR 게이트(312)의 다른 입력은 활성화 비트 en_a를 수신하며, 이것은 라인(304)에 존재하는 데이터 신호가 동기 장치(306)로 전파되도록 하기 위해 하이 상태이어야 한다.
도 3b는 도 3a의 예에서와 동일한 신호 경로에 삽입된 활성화 회로(318)의 다른 예를 도시한다. 그러나, 회로(318)는 하나의 입력이 라인(304)에 연결되고, 다른 입력은 활성화 비트 en_b를 수신하도록 연결되어 있는 배타적 OR(XOR) 게이트(320)를 포함한다. 이 예에서, 활성화 비트는 라인(304)상의 신호가 동기 장치(B)(306)의 입력으로 전파되도록 하기 위해 로우 상태이어야 한다.
이와 같이 도 3a 및 3b는 각각 하이 상태의 활성화 비트 및 로우 상태의 활성화 비트에 기초하여 IP 블록의 회로 부분을 활성화시키기 위해 삽입될 수 있는 회로의 예를 도시한다. IP 블록이 올바른 활성화 코드 없이 기능하지 않도록, IP 블록 내의 다양한 지점에 유사한 회로가 삽입될 수 있다. 물론, 도 3a 및 도 3b는 IP 블록을 보호하기 위해 사용될 수 있는 논리 게이트의 일부 예를 제공하는 것으로, 많은 다른 논리 함수가 동일한 원리에 기초하여 구현될 수 있다. 일부 실시예에서, 삽입은 임의로 수행되므로, 활성화 코드는 임의의 값이며, 기본 회로의 기능에 의존하지 않는다. 다른 실시예에서, 삽입은 비임의적일 수 있다. 또한, 도 3a 및 3b의 예들에서, 회로(308)는 활성화 코드의 "1" 비트에 의한 활성화의 경우에 사용되고, 회로(318)는 활성화 코드의 "0" 비트에 의한 활성화의 경우에 사용되는 반면, 다른 실시예에서는 "1" 및 "0" 비트 활성화의 경우에 사용되는 다수의 상이한 회로가 존재하며, 이들 회로 중 선택은 임의적이다.
도 4는 일 예시의 실시예에 따른 도 2의 라이센스 클라이언트(208) 및 라이센스 서버(114)를 도시하는 도식도이다.
라이센스 클라이언트(208)는 활성화 레지스터(ACTIVATION REGISTER)(212)를 포함하고, 이것은 활성화 버스(ACTIVATION BUS)(404)를 통해 활성화 코드를 IP 코어(210)의 활성화 회로(도 4에 도시되지 않음)에 전파한다..
도 4의 예에서, 활성화 코드(ACTIVATION CODE [ROM])는 예를 들어 ROM(판독 전용 메모리)인 라이센스 클라이언트(208)의 메모리(405)에 저장되고, 로드 신호(LOAD)가 라인(406)에서 어서트(assert)될 때 활성화 레지스터(212)에만 로딩된다. 로드 신호는 예를 들어 라이센스 서버(114)를 통해 수신된 인증 코드의 성공적인 인증시에만 어서트된다.
일 실시예에서, 라이센스 서버(114)에 의해 라이센스로부터 추출된 인증 코드는 활성화 코드를 포함한다. 이 경우에, 라이센스 클라이언트(208)에 의해 라이센스를 인증하기 위해, 메모리(405)에 저장된 활성화 코드는 예를 들어 라이센스 서버(114)에 송신된 챌린지 신호를 암호화하기 위한 키를 유도하고, 그 응답을 해독하는데 사용된다. 특히, 활성화 코드는 활성화 코드에 기초하여 IP 키(IP KEY)를 생성하는, 키 유도 함수 블록(KDF2)(408)으로 전송된다. 예를 들어 AES 암호화/암호 해독 알고리즘을 적용하는 암호화 블록(CRYPTO)(410)은 예를 들어 난수 생성기(RNG)(414)에 의해 생성된 챌린지 값(CHALLENGE)(412)을 암호화한다. 일부 실시예에서, RNG(414)는 진정한 난수 생성기 또는 의사 난수 생성기(PRNG)이다. 암호화된 챌린지 값은 라이센스 버스(204)를 통해 라이센스 서버(114)로 전송된다.
라이센스 서버(114)에서, 암호화 회로(CRYPTO)(416)는 예를 들어 블록(410)과 동일한 알고리즘을 적용하여 라이센스와 함께 수신된 활성화 코드로부터 유도된 IP 키에 기초하여 챌린지를 해독한다. 특히, 암호화 블록(416)은 키 유도 함수 블록(KDF2)(418)으로부터 IP 키(IP KEY)를 수신하고, 이 키 유도 함수 블록은 다음에 라이센스 메모리(202)에 저장된 라이센스로부터 추출된 활성화 코드를 수신한다. 활성화 코드는 키 유도 함수(KDF1) 블록(422)에 의해 제공된 장치 키(DEVICE KEY)에 기초하여 라이센스를 해독하는 암호화 회로(CRYPTO)(420)에 의해 추출된다. KDF1 블록(422)은 예를 들어 KDF 블록(422)으로부터의 요청에 따라 장치 ID를 생성하고 공급하는 회로(DEVICE ID)(423)로부터 장치 ID를 수신하거나, 장치 ID를 저장하는 메모리이다. 블록(422)에 의해 적용된 키 유도 함수는 예를 들어 도 1b의 블록(122)에 의해 적용된 것과 동일하므로, 장치 키가 동일하게 된다. 대안적으로, 전술한 바와 같이, 블록(422)에 의해 적용된 키 유도 함수는 공개 및 개인 키를 생성할 수 있으며, 개인 키는 라이센스를 해독하기 위한 장치 키로서 사용된다.
블록들(122 및 422)에 의해 적용된 키 유도 함수(KDF1) 및 블록들(408 및 418)에 의해 적용되는 키 유도 함수(KDF2)는 예를 들어 장치 키 및 IP 키를 안전한 방식으로 유도하기 위한 비밀 암호 함수들이다. 일부 실시예에서, 키 유도 함수는 블록(122, 422 및/또는 408, 418)에 의해 저장된 추가 키에 기초할 수 있다.
응답 회로(RESPONSE)(424)는 예를 들어 블록(416)에 의해 해독된 챌린지 값을 수신하고, 응답을 생성한다. 예를 들어, 응답은 챌린지에 일을 추가하거나 챌린지의 순열을 수행하는 것과 같은 단순한 작업이거나, 보다 복잡한 작업이다. 추가적으로, 응답은 암호화 블록(420)에 의해 라이센스로부터 추출된 DRM 데이터를 포함할 수 있다.
응답은 다시 IP 키에 기초하여 암호화 블록(416)에 의해 암호화되고, 암호화 블록(410)에 의한 암호 해독을 위해 라이센스 버스(204)를 통해 암호화 블록(410)으로 복귀된다. 라이센스 클라이언트(208)에서, 응답은 라이센스 클라이언트(208)의 검사기 회로(CHECKER)(426)에 제공되고, 검사기 회로는 응답이 챌린지의 허용된 유도에 해당하는지를 확인한다. 응답이 유효한 것으로 밝혀지면, 로드 신호는 활성화 레지스터(212)가 ROM(404)으로부터 활성화 코드를 로딩하도록 라인(406)에서 어서트된다.
또한, 응답이 라이센스로부터 추출된 DRM 데이터를 포함하는 경우, 검사기는 예를 들어 메모리(428)에 DRM 데이터를 저장하고 및/또는 DRM 데이터를 IP 코어(210)에 이용 가능하게 한다. DRM 데이터는 ASIC, FPGA, 등과 같은 특정 유형의 회로로 활성화를 제한할 수 있다. 부가적으로 또는 대안적으로, 예를 들어 DRM 데이터는 IP 블록의 활성화에 대해 시간 제한 및/또는 지리적 제한을 설정한다. 예를 들어, 지리적 제한이 적용되는 경우, DRM 데이터는 예를 들어 IP 블록이 활성화될 수 있는 영역을 정의하고 이 장치(102)에서 GPS(글로벌 포지셔닝 시스템) 장치와 같이 위치 결정 장치에 의해 제공하는 위치 데이터는 장치가 인증된 영역에 있는지의 여부를 확인하는 데 사용된다. DRM 데이터가 라이센스가 제한된 유효 기간을 갖는 것을 나타내는 경우, 검사기(426)는, 예를 들어 라이센스의 제한된 유효 기간이 만료되는 때를 확인하기 위해, 카운터를 사용하여 구현되는 타이머를 활성화시킨다. 이 기간이 만료되면, 검사기(426)는 예를 들어 로드 신호를 비활성화하여, 활성화 레지스터(212)가 리세되고 IP 블록이 다시 비활성화되도록 한다. 대안으로, DRM 정보는 응답에 제공된 인증 코드의 일부에 직접적으로 포함될 수 있으며, 활성화 코드의 일부만이 활성화 레지스터에 로딩되게 하여 IP 회로의 일부만을 잠금 해제할 수 있다.
다른 실시예에서, 라이센스로부터 추출된 인증 코드는 활성화 코드를 포함하지 않는다. 이 경우에, 라이센스 클라이언트(208)는 예를 들어 ROM인 추가 메모리(도시되지 않음)를 포함하고, 인증 코드를 저장한다. 이 코드는 암호화 회로(410)에 공급된 IP 키를 결정하는데 사용된다. 상기한 방법은 인증 코드를 인증하는데 사용되며, 인증이 성공적이면 메모리(405)에 저장된 활성화 코드는 활성화 레지스터(212)에 로딩된다 .
IP 키를 결정하기 위해 키 유도 함수 회로(418)를 사용하지 않고, 라이센스와 함께 전송될 수 있다. 실제로, 도 1b와 관련하여 기술된 바와 같이, 라이센스 생성기(116)는 라이센스에 IP 키를 통합할 수 있다.
도 5는 라이센스를 사용하여 IP 블록을 활성화하기 위한, 도 4의 회로에 기초한 방법의 동작을 나타내는 흐름도이다.
동작(501)에서, 라이센스는 라이센스 서버(114)에 의해 수신된다.
후속 동작들(502 내지 504)에서, 라이센스가 예를 들어 인증된다. 이러한 동작은 예를 들어 회로가 가동될 때마다 회로의 런타임시 수행된다. 라이센스는 라이센스 메모리(202)에서 이용 가능하다. 예를 들어, 라이센스는 외부 소스로부터 요구되고, 장치의 각 파워-업시 라이센스 메모리(202)에 로딩된다. 대안적으로, 라이센스 메모리(202)는 장치의 전원이 꺼지더라도 라이센스를 저장하는 비휘발성 메모리일 수 있다.
동작(502)에서, 장치 키는 예를 들어 PUF 값인 장치 ID로부터 유도된다.
동작(503)에서, 장치 키를 이용하여 라이센스를 암호 해독하여 인증 코드를 추출한다.
동작(504)에서, 인증 코드는 예를 들어 전술한 바와 같은 챌린지/응답 프로토콜을 사용하여 IP 라이센스 클라이언트(208)에 의해 인증되고, 활성화 코드는 IP 블록을 활성화하기 위해 ROM(404)에서 활성화 레지스터(212)로 로딩된다.
도 4의 구현의 이점은 활성화 코드가 라이센스 버스(204)를 통해 전송되지 않는다는 것인데, 이는 이 버스에서 부정하게 취득한 메시지가 활성화 코드를 획득하는데 사용될 수 없음을 의미한다.
도 6은 도 4의 실시예와는 다른 실시예에 따라서 도 2의 라이센스 클라이언트(208) 및 라이센스 서버(114)를 보다 상세하게 나타내는 도식도이다. 도 4의 특징들과 동일하거나 유사한 도 6의 특징은 동일한 참조 번호로 표시되어 있으며 다시 상세히 설명하지 않는다.
도 6의 실시예에서, 활성화 코드는 라이센스 클라이언트(208)에 의해 메모리에 저장되지 않는다. 대신에, 라이센스 클라이언트는 예를 들어 ROM인 메모리(602)에 IP 키(IP KEY)를 저장한다. 이것은 예를 들어, 도 1b의 라이센스 생성기(116)의 암호화 블록(124)에 제공된 것과 동일한 IP 키이다. 도 4의 실시예에서와 같이, IP 키는 블록(412)에 의해 제공된 챌린지 값을 암호화하기 위해 암호화 회로(410)에 의해 사용된다.
라이센스 서버(114)에서, IP 키는 암호화 블록(420)에 의해 수신된 라이센스로부터 추출되고, 챌린지 값을 해독하기 위해 암호화 블록(416)에 의해 사용된다. 도 6의 실시예에서, 예를 들어 라이센스 클라이언트(208)에 전송된 응답 메시지는챌린지에 대한 응답, 및 도 4의 실시예에서와 같이 암호화 블록(420)에 의해 추출된 인증 코드를 포함한다. 응답 메시지는 또한 DRM 데이터를 포함할 수 있다. 응답 메시지는 IP 키에 기초하여 암호화 블록(416)에 의해 암호화된다.
라이센스 클라이언트(208)에서, 암호화 블록(410)은 응답 메시지를 해독하고, 챌린지에 대한 응답, 인증 코드 및 임의의 DRM 데이터를 검사기 회로(426)에 제공한다. 검사기 회로(426)는 챌린지 값이 정확하게 응답 회로(424)에 의해 수정되었는지를 검사하고, 임의의 DRM 데이터 및 인증 코드를 DRM 회로(604)로 전달하며, DRM 회로(604)는 예를 들어 도 4의 DRM 회로(428)와 유사한 방식으로 동작한다.
인증 코드는 예를 들어 활성화 코드를 포함하고, 이 경우 활성화 코드는 활성화 레지스터(212)에 직접 로딩된다. 대안으로, 인증 코드는 IP 벤더 키에 의해 암호화된 활성화 코드에 대응한다. 이 경우에, IP 벤더 키는 예를 들어 라이센스 클라이언트(208)의 추가 메모리(도시되지 않음)에 저장되고, 인증 코드를 해독하고 활성화 코드를 추출하기 위해 암호화 회로(410)에 의해 사용되며, 다음에 활성화 코드는 활성화 레지스터(212)에 로딩될 수 있다..
도 7은 라이센스를 사용하여 IP 블록을 활성화하기 위한, 도 6의 회로에 기초한 방법의 동작을 나타내는 흐름도이다.
동작(701)에서, 라이센스는 라이센스 서버(114)에 의해 수신된다.
후속 동작들(702 내지 704)에서, 라이센스가 예를 들어 인증된다. 이러한 동작은 장치의 실행시에, 예를 들어 장치의 전원이 켜질 때마다 수행된다. 라이센스는 라이센스 메모리(202)에서 이용 가능하다. 예를 들어, 라이센스는 외부 소스로부터 요청되고, 장치의 작동 시작 때마다 라이센스 메모리(202)에 로딩된다. 대안적으로, 라이센스 메모리(202)는 장치의 전원이 꺼지더라도 라이센스를 저장하는 비휘발성 메모리일 수 있다.
동작(702)에서, 장치 키는 예를 들어 PUF 값인 장치 ID로부터 유도된다.
동작(703)에서, 라이센스는 장치 키를 이용하여 해독되어 활성화 코드를 추출한다.
동작(704)에서, 활성화 코드는 라이센스 클라이언트(206)에 의해 수신되고, 라이센스와 함께 수신된 IP 키가 정확하면, 활성화 코드는 IP 블록을 활성화하기 위해 활성화 레지스터(112)에 전송된다.
도 6의 구현의 이점은 활성화 코드가 ROM에 저장되지 않으므로, IP 키가 부정하게 획득된 경우에도, 보호 IP 블록은 활성화될 수 없다는 것이다.
도 4 및 도 6의 실시예에서, 암호화 회로(410, 416)가 라이센스 버스(204)에 보안을 부가하는데 사용되었지만, 대안적인 실시예에서는 라이센스 서버(114)와 라이센스 클라이언트(208) 간에 전송되는 데이터의 보안을 보장하는 어느 시스템이라도 이용될 수 있다. 예를 들어, 도 8을 참조하여 설명되는 바와 같이 해시 또는 서명 함수가 사용될 수 있다.
도 8은 일 예시의 실시예에 따른 라이센스 버스(204)를 통해 통신하기 위한 라이센스 서버(114) 및 라이센스 클라이언트(208)의 일부를 도시하는 개략도이고, 예를 들어 도 4 및 도 6의 KDF 회로(408), 암호화 블록(410, 416), 및 챌린지, 응답 및 검사기 회로(412, 424 및 426)에 대신한다. 이 예는 인증 코드가 라이센스 클라이언트(208)에 의해 저장되고, 따라서 라이센스 버스(204)를 통해 전송되지 않는다고 가정한다.
챌린지 회로(CHALLENGE)(802)는 예를 들어 진정한 난수 생성기(도 8에 도시되지 않음)에 의해 생성된 난수 값에 기초한 디지털 값인 챌린지 값을 생성한다. 챌린지 값은 예를 들어 ROM인 메모리(805)에 저장된 인증 코드(VERIFICATION CODE)에 기초하여 챌린지에 대한 응답을 생성하는 응답 회로(RESPONSE)(804)에 제공된다. 응답은 예를 들어 챌린지 값과 인증 코드에 가산 또는 곱하기와 같은 함수를 적용하여 생성된다. 응답 값은 해시 계산 회로(806)에 제공되고, 해시 계산 회로는 응답에 기초하는 해시 값을 생성한다. 일부 실시예에서, 해시 함수에 의해 생성된 서명은 MAC(메시지 인증 코드) 서명이다. 해시 회로(806)의 출력은 검사기 회로(CHECKER)(808)에 제공된다.
챌린지 회로(802)에 의해 생성된 챌린지 값은 또한 라이센스 버스(204)를 통해 라이센스 서버(114), 예를 들어 라이센스 서버(114)의 응답 회로(RESPONSE)(810)로 전송된다. 응답 회로(810)는 회로(802)와 동일한 알고리즘을 이용하지만, 라이센스로부터 추출된 바와 같은 인증 코드(811)에 기초하여 응답을 형성한다. 다음에 응답은 해시 회로(806)와 동일한 알고리즘을 적용하는 해시 회로(HASH)(812)에 제공되고, 그 결과를 해시 회로(806)에 의해 생성된 값과의 비교를 위해 검사기 회로(808)에 전송한다. 라이센스와 함께 수신된 인증 코드(811)가 메모리(805)에 저장된 인증 코드와 일치하면, 인증은 성공적이며, 활성화 코드는 활성화 레지스터(212)(도 8에 도시되지 않음)에 로딩된다.
도 8의 실시예는 단지 일례에 불과하다. 대안적인 실시예에서, 인증 코드는 응답(810)을 수정하는데 사용되지 않고, 대신에 인증 코드는 별도의 단계에서 라이센스 클라이언트(208)로 통신된다. 이러한 경우, 라이센스 클라이언트(208)는 예를 들어 인증 코드를 저장하지 않는다.
도 4, 도 6 및 도 8의 실시예에서, 장치 ID는 예를 들어 판독되어, 보안 방식으로 라이센스를 인증하는 데 이용되어, 해커가 장치 ID의 동일한 값이 강제로 사용되는 것을 방지할 수 있다. 예를 들어, 라이센스 서버(114)는 암호화에 의해 보호되는 인터페이스를 통해 집적 회로와 연관된 식별자(DEVICE ID)를 판독하도록 구성된다. 예를 들어, 장치 ID의 판독은 도 4의 블록들(410, 412, 414, 416 및 424)에 의해 또는 도 8의 블록들(802, 804, 806, 808, 810 및 812)에 의해 구현된 것과 유사한 추가적인 챌린지/응답 시스템에 기초한다.
도 2의 예에서, 라이센스 클라이언트가 각 IP 블록의 일부를 형성하는 반면, 대안적인 실시예에서, 각각의 IP 블록과 연관된 라이센스 클라이언트는 도 9를 참조하여 이하 설명되는 바와 같이, 중앙 라이센싱 시스템의 일부를 형성할 수 있다.
도 9는 라이센스 서버(114), 및 각 IP 코어(210)와 연관된 라이센스 클라이언트(LICENSE CLIENT #1 내지 #N)(208)를 포함하는 중앙 집중 라이센스 시스템(900)을 도시한다. 각 라이센스 클라이언트와 각 IP 코어 사이에는 활성화 버스(902)가 활성화 코드를 전송하기 위해 제공된다. 따라서, 라이센스 인증 기능은 회로의 독립적인 서브-도메인에 의해 제공되며, 이 회로(900)는 예를 들어 특정 내부 버스, IP 블록으로부터 분리될 수 있는 클록, 및/또는 라이센스를 저장하기 위한 전용 메모리를 갖는다.
지금까지 설명한 라이센스 서버/클라이언트 접근 방식 대신, NoC(네트워크 온 칩) 방식을 비롯한 많은 대안적인 방식을 사용할 수 있다. 도 10을 참조하여 이하 설명되는 바와 같이, 직렬 버스를 사용하는 분산 접근법이 또한 적용될 수 있다.
도 10은 각 IP 블록(206)이 대응하는 IP 코어 1 내지 N을 포함하는 라이센싱 시스템(1000) 및 라이센스 회로(LICENSE CIRCUIT)(1002)를 도시한다. 라이센스 회로(1002)는 예를 들어 데이터를 출력하기 위한 직렬 버스(1004) 및 데이터를 입력하기 위한 직렬 버스(1006)에 연결된다. 예를 들어, 서큘레이터(CIRCULATOR)(1007)는 집적 회로의 입력 포트로부터 버스(1004)에 데이터를 입력하고 버스(1006)로부터 집적 회로의 출력 포트로 데이터를 출력한다.
각 라이센스 회로(1002)는 예를 들어 전체 장치 ID의 일부를 형성하는 자신의 장치 식별자(DEVICE ID1 내지 DEVICE IDN)를 생성하여 저장한다. 또한, 일부 실시예에서, 임의의 IP 블록과 직접 연관되지 않는 추가 라이센스 회로(LICENSE CIRCUIT)(1008)는 추가 장치 식별자(DEVICE IDX)를 생성한다. 집적 회로의 전체 장치 ID는 예를 들어 ID1+ID2+...+IDN+IDX와 같다. 식별자 IDX는 예를 들어, 결합된 식별자 ID1 내지 IDN의 길이가 신뢰 가능한 고유 식별자를 제공할만큼 충분히 길지 않은 경우에 제공된다.
라이센스(LIC1 내지 LICN)는 예를 들어 서큘레이터(1007)에 의해 버스(1006)에 입력된다. 각각의 라이센스는 IP 블록들(206) 중 하나가 활성화되게 한다. 특히, IP 블록들(206) 중 하나의 장치 식별자로부터 유도된 키에 의해 암호화된 라이센스만이 그 IP 블록에 의해 해독될 수 있고 IP 블록을 활성화하는데 이용될 수 있다.
도 2, 9 및 10의 라이센싱 시스템은 예를 들어 특정한 칩에서 구현된 시스템을 나타낸다. 어떤 경우, 회로 기판은 각각 하나 이상의 보호된 IP 블록을 갖는, 여러 개의 칩을 포함할 수 있다.
도 11a는 라이센싱 시스템의 보드 레벨도(1100)의 일례를 도시한다. 예시된 바와 같이, 집적 회로들(CHIP 1, CHIP 2)(1102, 1104)은 예를 들어 하나 이상의 보호 회로를 라이센스 인증에 기초하여 선택적으로 활성화하기 위한 장치 ID(DEVICE ID) 및 DRM 제어기(DRM CONTROLLER)를 생성 및/또는 저장하기 위한 회로를 포함하는 라이센싱 시스템을 각각 포함한다. 메모리(LICENSE CHIP1)는, 예를 들어 회로(1102)에 연결되고 집적 회로(1102)와 연관된 라이센스를 저장하고, 추가 메모리(LICENSE CHIP2)는 예를 들어 집적 회로(1104)에 연결되고 직접 회로(1104)와 연관된 라이센스를 저장한다. 일부 실시예에서, 메모리는 동일한 메모리 장치의 일부를 형성할 수 있다.
도 11b는 단일 메모리(1112)가 모든 칩(CHIP1, CHIP2 등)에 대해 하나 이상의 라이센스(LICENSE)를 저장하고 있는, 도 11a의 대안적인 예에 따른 보드 레벨 도(1110)을 도시한다. DRM 제어기(DRM CONTROLLER)(1114)는 예를 들어 라이센스를 각 칩에 전달한다. 일부 실시예에서, 각각의 칩과 연관된 상이한 장치 식별자가 존재하고, 장치 식별자(DEVICE ID)는 PUF(칩 1)+PUF(칩 2)+.. 등과 같이, 각 칩의 장치 ID의 조합을 포함할 수 있다. 대안적으로, 하나의 장치 ID가 모든 칩에 대해 사용될 수 있고, 칩 CHIP1, CHIP2 등은 동일한 장치 ID를 공유할 수 있다.
도 12는 FPGA(1202)에 기초한 라이센싱 시스템(1200)을 도시한다. FPGA(1202)는 예를 들어 구성 ROM(FPGA CONFIGURATION ROM)(1208)의 라이센스 메모리(LICENSE MEMORY)(1206)에 저장된, 라이센스를 로딩하기 위한 라이센스 로더 회로(LICENSE LOADER)(1204)를 포함한다. 구성 ROM은 장치의 전원이 켜질 때 또는 리셋 후 FPGA를 구성하는데 사용된다. FPGA는 또한 예를 들어, 라이센스가 로딩된 라이센스 내장 메모리(LICENSE EMBEDDED MEMORY)(1210)를 포함한다.
적어도 하나의 예시적인 실시예를 설명하였지만, 다양한 변경, 수정 및 개선이 당업자에게 용이하게 가능할 것이다.
예를 들어, 본 명세서에서 기술된 대칭 암호화/암호 해독의 구현 대신에 비대칭 암호화/암호 해독을 사용할 수 있다는 것은 당업자에게는 명백할 것이다.
또한, 다양한 실시예들과 관련하여 설명된 다양한 실시예들이 임의의 조합으로 다른 실시예에서도 결합될 수 있다는 것이 당업자에게 명백할 것이다.

Claims (17)

  1. 장치(102)의 하나 이상의 보호 회로(206)를 선택적으로 활성화하기 위한 라이센스 인증 회로에 있어서, 상기 라이센스 인증 회로는:
    상기 장치(102)와 연관된 식별자(DEVICE ID)로부터 장치 키(DEVICE KEY)를 유도하고;
    제1 라이센스를 수신하고;
    제1 인증 코드를 추출하기 위해 상기 장치 키를 사용하여 상기 제1 라이센스를 암호 해독하고; 및
    제1 보호 회로를, 상기 제1 인증 코드의 인증에 기초하여 상기 제1 보호 회로와 연관된 활성화 레지스터(212)에 활성화 코드를 로딩함으로써 활성화하도록 구성되는 라이센스 인증 회로.
  2. 제1항에 있어서, 상기 장치(102)와 연관된 상기 식별자(DEVICE ID)는 PUF((physically unclonable function; 물리적 복제 방지 기능)에 의해 제공되는 것을 특징으로 하는 라이센스 인증 회로.
  3. 제1항 또는 제2항에 있어서, 상기 라이센스 인증 회로는 암호화로 보호되는 인터페이스를 통해 상기 장치와 연관된 상기 식별자(DEVICE ID)를 판독하도록 구성되는 것을 특징으로 하는 라이센스 인증 회로
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 장치 키를 유도하는 키 유도 회로(422) 및 상기 제1 라이센스를 암호 해독하기 위한 해독 회로(420)를 포함하는 라이센스 서버(114);
    상기 제1 보호 회로와 연관되며 상기 제1 인증 코드에 기초하여 상기 제1 보호 회로를 활성화하기 위한 제1 제어 회로(426)를 포함하는 제1 라이센스 클라이언트(208); 및
    제2 보호 회로와 연관되며 제2 활성화 코드를 상기 제2 보호 회로와 연관된 활성화 레지스터(212)에 로딩함으로써 상기 제2 보호 회로를 활성화하도록 구성되는 제2 제어 회로(426)를 포함하는 제2 라이센스 클라이언트(208)를 더 포함하는 라이센스 인증 회로.
  5. 제4항에 있어서, 상기 라이센스 서버(114)는 상기 제1 인증 코드를 상기 제1 라이센스 클라이언트(208)로 전송하고 상기 제2 인증 코드를 상기 제2 라이센스 클라이언트(208)로 전송하도록 구성되는 것을 특징으로 하는 라이센스 인증 회로.
  6. 제4항 또는 제5항에 있어서, 상기 제1 인증 코드는 상기 제1 라이센스로부터 추출된 추가 키(IP KEY)에 기초하여 상기 라이센스 서버(114)에 의해 암호화되어 상기 제1 라이센스 클라이언트(208)의 상기 제1 제어 회로(426)에 전송되는 것을 특징으로 하는 라이센스 인증 회로.
  7. 제6항에 있어서, 상기 해독 회로(420)는 상기 제1 라이센스로부터 상기 추가 키(IP KEY)를 추출하도록 더욱 구성되는 것을 특징으로 하는 라이센스 인증 회로.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 제1 인증 코드는 IP 벤더 키를 사용하여 암호화된 상기 활성화 코드를 포함하고, 상기 제1 라이센스 클라이언트(208)는 상기 IP 벤더 키를 메모리에 저장하고 상기 IP 벤더 키에 기초하여 상기 제1 인증 코드를 암호 해독하여 상기 활성화 코드를 추출하도록 더욱 구성된 것을 특징으로 하는 라이센스 인증 회로.
  9. 제4항에 있어서, 상기 제1 라이센스 클라이언트(208)는:
    챌린지 값을 생성하고 상기 챌린지 값을 상기 라이센스 서버(114)에 전송하도록 구성된 난수 생성기(RNG)를 포함하는 챌린지 생성 회로(802); 및
    적어도 상기 챌린지 값에 기초하여 제1 응답 값을 생성하도록 구성된 제1 응답 생성 회로(804, 806)를 포함하고, 상기 라이센스 서버(114)는:
    상기 챌린지 값을 수신하고 적어도 상기 챌린지 값에 기초하여 제2 응답 값을 생성하도록 구성된 제2 응답 생성 회로(810, 812)를 포함하며, 상기 제1 라이센스 클라이언트는 상기 제1 응답 값을 상기 제2 응답 값과 비교하도록 구성된 인증 회로를 더 포함하는 것을 특징으로 하는 라이센스 인증 회로.
  10. 제9항에 있어서, 상기 제1 및 제2 응답 생성 회로(804, 806, 810, 812)는 해시 함수에 기초하여 상기 제1 및 제2 응답 값을 생성하도록 구성되는 것을 특징으로 하는 라이센스 인증 회로.
  11. 제4항, 제9항 또는 제10항에 있어서, 상기 제1 라이센스 클라이언트(208)는 상기 활성화 코드의 사본을 저장하는 비휘발성 메모리(404)를 포함하고, 상기 제1 제어 회로(426)는 상기 제1 인증 코드의 하나 이상의 값의 인증에 기초하여 상기 활성화 코드의 상기 사본을 상기 활성화 레지스터(212)에 로딩하도록 구성되는 것을 특징으로 하는 라이센스 인증 회로.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서, 상기 인증 코드는:
    상기 라이센스의 유효 기간;
    상기 라이센스의 지리적 한계;
    상기 라이센스의 하나 이상의 하드웨어 유형에 대한 한계;
    상기 라이센스의 온도 한계;
    상기 라이센스의 전압 한계;
    상기 라이센스의 대역폭 한계;
    상기 라이센스의 속도 한계;
    상기 라이센스의 가속도 한계;
    상기 라이센스의 습도 한계;
    상기 라이센스의 광 레벨 한계;
    상기 라이센스의 자기장 한계; 및
    상기 라이센스의 방사능 한계
    중 하나 이상의 나타내는 추가 데이터(DRM)를 포함하는 것을 특징으로 하는 라이센스 인증 회로.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서, 상기 제1 활성화 코드는 복수의 비트를 포함하고, 상기 제1 보호 회로는 상기 제1 보호 회로의 신호 경로를 선택적으로 활성화하도록 구성된 복수의 논리 게이트를 포함하고, 상기 논리 게이트 각각은 상기 제1 보호 회로의 노드에 결합된 제1 입력 및 상기 활성화 레지스터(212)에 의해 저장된 상기 비트들 중 하나를 수신하도록 결합된 제2 입력을 갖는 것을 특징으로 하는 라이센스 인증 회로.
  14. 라이센스 인증 시스템에 있어서,
    제1항에 따른 라이센스 인증 회로를 포함하는 제1 IP 모듈(206);
    제1항에 따른 라이센스 인증 회로를 포함하는 제2 IP 모듈(206); 및
    제1 라이센스를 상기 제1 IP 모듈에 전송하고 제2 라이센스를 상기 제2 IP 모듈에 전송하도록 구성된 서큘레이터(1007)
    를 포함하는 라이센스 인증 시스템.
  15. 라이센스 생성 회로에 있어서,
    장치(102)의 장치 식별자(DEVICE ID)에 기초하여 장치 키(DEVICE KEY)를 유도하도록 구성된 키 유도 회로(122); 및
    상기 장치 키를 사용하여 하나 이상의 활성화 코드를 암호화함으로써 상기 장치(102)의 하나 이상의 보호 회로에 대한 제1 라이센스를 생성하도록 구성된 암호화 회로(124)
    를 포함하는 라이센스 생성 회로.
  16. 제10항에 있어서, 상기 암호화 회로(124)는 상기 제1 라이센스에 포함되는 추가 키(IP KEY)를 암호화하도록 더욱 구성되는 것을 특징으로 하는 라이센스 생성 회로.
  17. 장치(102)의 하나 이상의 보호 회로(206)를 선택적으로 활성화하기 위한 라이센스 인증 방법에 있어서, 상기 방법은:
    상기 장치와 연관된 식별자(DEVICE ID)로부터 장치 키(DEVICE KEY)를 유도하는 단계;
    제1 라이센스를 수신하는 단계;
    제1 인증 코드를 추출하기 위해 상기 장치 키를 사용하여 상기 제1 라이센스를 암호 해독하는 단계; 및
    제1 보호 회로를, 상기 제1 인증 코드의 인증에 기초하여 상기 제1 보호 회로와 연관된 활성화 레지스터(212)에 제1 활성화 코드를 로딩함으로써 활성화하는 단계
    를 포함하는 라이센스 인증 방법.
KR1020187002879A 2015-07-07 2016-07-06 하드웨어 모듈의 인증 및 ip 라이센싱을 위한 시스템 및 방법 KR20180048592A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1556418A FR3038757B1 (fr) 2015-07-07 2015-07-07 Systeme et procede d'authentification et de licence ip
FR1556418 2015-07-07
PCT/FR2016/051718 WO2017006058A1 (fr) 2015-07-07 2016-07-06 Systeme et procede d'authentification et de licence ip de modules hardware

Publications (1)

Publication Number Publication Date
KR20180048592A true KR20180048592A (ko) 2018-05-10

Family

ID=54848664

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187002879A KR20180048592A (ko) 2015-07-07 2016-07-06 하드웨어 모듈의 인증 및 ip 라이센싱을 위한 시스템 및 방법

Country Status (6)

Country Link
US (1) US11023621B2 (ko)
EP (1) EP3320471B1 (ko)
JP (1) JP6854285B2 (ko)
KR (1) KR20180048592A (ko)
FR (1) FR3038757B1 (ko)
WO (1) WO2017006058A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6922557B2 (ja) * 2017-08-29 2021-08-18 沖電気工業株式会社 ソフトウェア管理装置およびソフトウェア管理方法のプログラム
FR3074933B1 (fr) * 2017-12-07 2021-05-21 Algodone Systeme et procede de licence et de mesure d'utilisation d'un bloc ip
US10706179B2 (en) * 2018-01-10 2020-07-07 General Electric Company Secure provisioning of secrets into MPSoC devices using untrusted third-party systems
US10944557B2 (en) 2018-04-25 2021-03-09 Nxp B.V. Secure activation of functionality in a data processing system
EP3620917B1 (de) * 2018-09-06 2021-10-27 Siemens Aktiengesellschaft Verwalten von lizenzen für soft-ip auf einem partiell rekonfigurierbaren hardware-system
WO2020190535A1 (en) * 2019-03-21 2020-09-24 Lexmark International, Inc. A handheld wand device and method for scanning the physical signature data of a physical unclonable function along an arbitrary path
CN111581607B (zh) * 2020-05-08 2023-08-22 深圳市凯迈生物识别技术有限公司 一种许可证激活的方法
US11681784B2 (en) * 2020-09-03 2023-06-20 Arista Networks, Inc. Hardware license verification

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0583709B1 (en) 1992-08-17 1999-05-06 THOMSON multimedia Unforgeable identification device, identification device reader and method of identification
US5434917A (en) 1993-10-13 1995-07-18 Thomson Consumer Electronics S.A. Unforgeable identification device, identification device reader and method of identification
US6904527B1 (en) 2000-03-14 2005-06-07 Xilinx, Inc. Intellectual property protection in a programmable logic device
JP2004021394A (ja) 2002-06-13 2004-01-22 Ricoh Co Ltd 情報処理システム
US8732468B2 (en) 2009-03-09 2014-05-20 The Regents Of The University Of Michigan Protecting hardware circuit design by secret sharing
US20100284539A1 (en) 2009-03-09 2010-11-11 The Regents Of The University Of Michigan Methods for Protecting Against Piracy of Integrated Circuits
US8402401B2 (en) * 2009-11-09 2013-03-19 Case Western University Protection of intellectual property cores through a design flow
TWI419535B (zh) * 2009-11-10 2013-12-11 Univ Nat Taiwan 矽智財保護電路與其控制方法
US10771448B2 (en) * 2012-08-10 2020-09-08 Cryptography Research, Inc. Secure feature and key management in integrated circuits
US9742563B2 (en) * 2012-09-28 2017-08-22 Intel Corporation Secure provisioning of secret keys during integrated circuit manufacturing
US8938792B2 (en) 2012-12-28 2015-01-20 Intel Corporation Device authentication using a physically unclonable functions based key generation system
US9071428B2 (en) * 2013-03-15 2015-06-30 University Of Connecticut Methods and systems for hardware piracy prevention
US9436848B2 (en) * 2013-05-30 2016-09-06 Cryptography Research, Inc. Configurator for secure feature and key manager
US9569601B2 (en) * 2015-05-19 2017-02-14 Anvaya Solutions, Inc. System and method for authenticating and enabling functioning of a manufactured electronic device

Also Published As

Publication number Publication date
US11023621B2 (en) 2021-06-01
JP2018523439A (ja) 2018-08-16
EP3320471B1 (fr) 2021-10-20
US20180196965A1 (en) 2018-07-12
EP3320471A1 (fr) 2018-05-16
JP6854285B2 (ja) 2021-04-07
FR3038757B1 (fr) 2017-08-11
WO2017006058A1 (fr) 2017-01-12
FR3038757A1 (ko) 2017-01-13

Similar Documents

Publication Publication Date Title
US11023621B2 (en) System and method for authenticating and IP licensing of hardware modules
CN104252881B (zh) 半导体集成电路及系统
US8290150B2 (en) Method and system for electronically securing an electronic device using physically unclonable functions
US7082539B1 (en) Information processing apparatus
US10110380B2 (en) Secure dynamic on chip key programming
TWI477134B (zh) 產生安全裝置秘密金鑰的方法
TWI517653B (zh) 電子裝置及密碼材料供應之方法
TWI631462B (zh) 確保機板上匯流排交易安全的計算系統和計算設備實現的方法以及非暫時性的電腦可讀取媒體
TWI763379B (zh) 安全積體電路晶片裝置及其保護其方法
Zhang et al. A pragmatic per-device licensing scheme for hardware IP cores on SRAM-based FPGAs
Maes et al. Analysis and design of active IC metering schemes
US11562050B2 (en) System and method for licensing and for measuring use of an IP block
Mohammad et al. Required policies and properties of the security engine of an SoC
US10015143B1 (en) Methods for securing one or more license entitlement grants and devices thereof
KR101656092B1 (ko) 비동기적인 인증을 갖는 보안 컴퓨팅 시스템
Adi et al. VLSI design exchange with intellectual property protection in FPGA environment using both secret and public-key cryptography
Zhang et al. Public key protocol for usage-based licensing of FPGA IP cores
CN110602058B (zh) 芯片激活装置、方法及计算机可读存储介质
Salem Authentication of Configuration Updates for Remote Field Programmable Gate Arrays with the use of Physical Unclonable Function
Zhang et al. Secure Licensing of IP Cores on SRAM-Based FPGAs

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application