JP7398438B2 - プログラマブルロジックデバイスのためのキープロビジョニングシステム及び方法 - Google Patents

プログラマブルロジックデバイスのためのキープロビジョニングシステム及び方法 Download PDF

Info

Publication number
JP7398438B2
JP7398438B2 JP2021513760A JP2021513760A JP7398438B2 JP 7398438 B2 JP7398438 B2 JP 7398438B2 JP 2021513760 A JP2021513760 A JP 2021513760A JP 2021513760 A JP2021513760 A JP 2021513760A JP 7398438 B2 JP7398438 B2 JP 7398438B2
Authority
JP
Japan
Prior art keywords
pld
programming
secure
customer
configuration
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.)
Active
Application number
JP2021513760A
Other languages
English (en)
Other versions
JP2021528793A (ja
Inventor
スリラマ シャム チャンドラ
フーロン チャン
スリーパーダ ヘガデ
ジョエル コプレン
ウェイ ハン
ユ スン
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.)
Lattice Semiconductor Corp
Original Assignee
Lattice Semiconductor Corp
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 Lattice Semiconductor Corp filed Critical Lattice Semiconductor Corp
Publication of JP2021528793A publication Critical patent/JP2021528793A/ja
Application granted granted Critical
Publication of JP7398438B2 publication Critical patent/JP7398438B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17768Structural details of configuration resources for security
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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
    • 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/3247Cryptographic 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 digital signatures
    • H04L9/3252Cryptographic 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 digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Logic Circuits (AREA)

Description

<関連出願の相互参照>
この特許出願は、その全体が参照により本明細書に組み込まれている、「SECURE BOOT SYSTEMS AND METHODS FOR PROGRAMMABLE LOGIC DEVICES」と題する2019年5月10日に出願された米国仮特許出願第62/846,365号に対する優先権及びその利益を主張するものである。
この特許出願は、その全体が参照により本明細書に組み込まれている、「ASSET MANAGEMENT SYSTEMS AND METHODS FOR PROGRAMMABLE LOGIC DEVICES」と題する2018年11月5日に出願された米国仮特許出願第62/756,021号に対する優先権及びその利益を主張するものである。
この特許出願は、その全体が参照により本明細書に組み込まれている、「KEY PROVISIONING SYSTEMS AND METHODS FOR PROGRAMMABLE LOGIC DEVICES」と題する2018年11月5日に出願された米国仮特許出願第62/756,001号に対する優先権及びその利益を主張するものである。
この特許出願は、その全体が参照により本明細書に組み込まれている、「FAILURE CHARACTERIZATION SYSTEMS AND METHODS FOR PROGRAMMABLE LOGIC DEVICES」と題する2018年11月5日に出願された米国仮特許出願第62/756,015号に対する優先権及びその利益を主張するものである。
この特許出願は、その全体が参照により本明細書に組み込まれている、「DEVICES WITH PROGRAMMABLE LOGIC AND SECURITY FEATURES AND METHODS OF USING」と題する2018年5月11日に出願された米国仮特許出願第62/670,487号に対する優先権及びその利益を主張するものである。
本発明は、概して、プログラマブルロジックデバイス、より具体的には、そのようなデバイスのセキュアな構成及び/又は動作を容易にするためのセキュリティ資産のプロビジョニングに関する。
プログラマブルロジックデバイス(PLD)(例えば、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)、フィールドプログラマブルシステムオンチップ(FPSC)、又はその他のタイプのプログラマブルデバイス)は、所望の機能性を実現するために、様々なユーザ設計で構成することができる。通常、ユーザ設計は合成され、構成可能なリソース(例えば、プログラマブルロジックゲート、ルックアップテーブル(LUT)、組み込みハードウェア、又はその他のタイプのリソース)及び特定のPLDで利用可能な相互接続にマッピングされる。そして、合成及びマッピングされたユーザ設計の物理的配置及びルーティングを決定して、特定のPLDの構成データが生成される。
PLDの顧客は、多くの場合、選択したPLDタイプ及び/又は能力のための構成を開発するのに多大なリソースを費やしており、構成データを保護し、かつ、選択したPLD及び/又は開発した構成に関連付けられた所望の動作又は能力の破壊から保護することは、PLDの多くの顧客にとって極めて重要になっている。したがって、特にトラステッド・コンピューティングアプリケーション及びトラステッド・コンピューティングアーキテクチャのコンテキストにおいて、PLD及びPLD構成を製造、保護、配布、及び/又はアップグレードするためのシステム及び方法に対する必要性が当該技術分野に存在する。
図1は、本開示の一実施形態による、プログラマブルロジックデバイス(PLD)のブロック図を例示している。
図2は、本開示の一実施形態による、PLDの論理ブロックのブロック図を例示している。
図3は、本開示の一実施形態による、PLDの設計プロセスを例示している。
図4は、本開示の一実施形態による、セキュアPLDのブロック図を例示している。
図5Aは、本開示の一実施形態による、セキュアPLDプロビジョニングシステムのブロック図を例示している。
図5Bは、本開示の一実施形態による、セキュアPLDプロビジョニングシステムのブロック図を例示している。
図6は、本開示の一実施形態による、セキュアPLDを含むユーザデバイスのブロック図を例示している。
図7は、本開示の一実施形態による、ロックされたセキュアPLDのプロビジョニングプロセスを例示している。
本開示の実施形態及びそれらの利点は、以下の詳細な説明を参照することによって最もよく理解される。図に示される1つ以上の同様の要素を識別するために同様の参照番号が使用されるが、それらは、本開示の実施形態を説明する目的のためのものであり、それを限定する目的のためではないことを理解されたい。
本開示は、本明細書に記載されるように、トラステッド・コンピューティングアプリケーション及びアーキテクチャで使用するためのロックされたセキュアプログラマブルロジックデバイス(PLD)を提供するためのシステム及び方法を提供する。例えば、実施形態は、ロックされたセキュアPLDを顧客定義の構成及び/又は動作コンテキストに提供することに関連するキープロビジョニングのシステム及び方法を提供する。ロックされたセキュアPLDは、例えば、本明細書に記載されるように、プラットフォーム/ユーザデバイスを安全に構成及び/又は起動することを含む、トラステッド・プラットフォームの様々なセキュリティ動作を実行するために使用され得る。
本明細書に記載の実施形態によれば、プログラマブルロジックデバイス(PLD)にユーザ設計を安全に実装するための技術が提供される。様々な実施形態において、ユーザ設計は、(例えば、論理、算術、又は他のハードウェア機能のために構成された)PLDコンポーネントのセット及びPLDで利用可能なそれらの関連する相互接続によって変換及び/又は表され得る。例えば、PLDは、いくつかのプログラマブル論理ブロック(PLB)を含み得る。また、各PLBは、多数の論理セル、並びにPLB及び/又は論理セルを相互接続するために使用され得る構成可能なルーティングリソースを含み得る。いくつかの実施形態において、各PLBは、2から16の間、又は2から32の間の論理セルで実装され得る。
一般に、PLD(例えば、FPGA)ファブリックは、1つ以上のルーティング構造と、プログラマブル機能ブロック(例えば、PFB及び/又はPLB)内に配置された類似配置の論理セルのアレイとを含む。ルーティング構造の目的は、目的の機能を実現するために必要な組み合わせで、論理セル/PLBのポートを相互にプログラム可能に接続することである。セキュアPLDは、構成可能なトラステッド・コンピューティング機能及び/又はアーキテクチャを提供するためにPLDファブリックの動作にリンクされ得る様々なセキュリティ機能を提供するように構成された、様々な追加の「ハード」エンジン又はモジュールを含み得る。ルーティングの柔軟性及び構成可能な機能の埋め込み(routing flexibility and configurable function embedding)は、ユーザ設計を合成、マッピング、配置、及び/又は多数のPLDコンポーネントにルーティングする際に使用され得る。多くの設計時間及びコストを要し得る様々なユーザ設計最適化プロセスの結果として、ユーザ設計を比較的効率的に実装することができ、それによって、追加の動作及びルーティングリソースによって占有されるであろう構成可能なPLDコンポーネントを解放する。いくつかの実施形態において、最適化されたユーザ設計は、PLD及びそれらに関連する信号によって提供される様々なタイプのコンポーネントを識別するネットリストによって表され得る。変換されたユーザ設計のネットリストを生成する実施形態において、最適化プロセスは、そのようなネットリストに対して実行され得る。一旦最適化されると、そのような構成は、セキュアPLDへの配布のために暗号化、署名、及び/又は他の方法によって保護され得る。そのようなプロセスは、本明細書に記載されるように、1つ以上のキープロビジョニングプロセスを含み得る。
ここで図面を参照すると、図1は、本開示の一実施形態によるPLD100のブロック図を例示している。PLD100(例えば、フィールドプログラマブルゲートアレイ(FPGA))、複合プログラマブルロジックデバイス(CPLD)、フィールドプログラマブルシステムオンチップ(FPSC)、又は他のタイプのプログラマブルデバイス)は、一般に入力/出力(I/O)ブロック102及び論理ブロック104(例えば、プログラマブル論理ブロック(PLB)、プログラマブル機能ユニット(PFU)、又はプログラマブル論理セル(PLC)とも呼ばれる)を含む。より一般的には、PLD100の個々の要素は、PLDファブリックと呼ばれ得る。
I/Oブロック102は、(例えば、1つ以上のI/O及び/又はメモリインターフェース標準規格をサポートするため)PLD100のI/O機能を提供する。一方、プログラマブル論理ブロック104は、PLD100の論理機能(例えば、LUTベースの論理又は論理ゲートアレイベースの論理)を提供する。追加のI/O機能は、シリアライザ/デシリアライザ(SERDES)ブロック150及び物理符号化副層(PCS)ブロック152によって提供され得る。PLD100はまた、ハードIP(intellectual property)コアブロック160を含み、追加の機能(例えば、論理ブロック104よりも少ないプログラミングで構成され得るハードウェアにおいて提供される実質的に所定の機能)を提供し得る。
PLD100はまた、メモリ106のブロック(例えば、EEPROMのブロック、ブロックSRAM、及び/又はフラッシュメモリ)、クロック関連回路108(例えば、クロックソース、PLL回路、及び/又はDLL回路)、及び/又は様々なルーティングリソース180(PLD100全体で、例えば、クロック信号、データ信号、又はその他の信号などをルーティングするための経路を提供する相互接続及び適切なスイッチング論理)を適宜含み得る。一般に、PLD100の様々な要素は、当業者によって理解されるように、所望の用途のために意図された機能を実行するために使用され得る。
例えば、特定のI/Oブロック102は、メモリ106をプログラミングするため、又は情報(例えば、様々なタイプのユーザデータ及び/又は制御信号)をPLD100との間で転送するために使用され得る。他のI/Oブロック102は、(中央処理装置(CPU)ポート、周辺データポート、SPIインターフェース、及び/又はsysCONFIGプログラミングポートを表し得る)第1のプログラミングポート及び/又は(例えば、米国電気電子学会(IEEE)1149.1又は1532標準規格などの標準規格を採用することによって)ジョイントテストアクショングループ(joint test action group,JTAG)ポートなどの第2のプログラミングポートを含む。様々な実施形態において、I/Oブロック102は、(例えば、1つ以上の接続140を介して)構成データ及びコマンドを受信して、PLD100をその意図された使用目的のために構成し、シリアル又はパラレルのデバイス構成及び情報転送を、SERDESブロック150、PCSブロック152、ハードIPブロック160、及び/又は論理ブロック104を適宜用いてサポートするために含まれ得る。
様々な要素の数及び配置は限定的ではなく、所望の用途に依存し得ることを理解されたい。例えば、様々な要素は、所望の用途又は設計仕様(例えば、選択されたプログラマブルデバイスのタイプ)に対して要求されないことがある。
さらに、要素は、明確にするためにブロック形式で示されており、様々な要素は、通常、PLD100全体にわたって、例えば、論理ブロック104、ハードIPブロック160、及びルーティングリソース(例えば、図2のルーティングリソース180)内及びそれらの間に、それらの従来の機能(例えば、PLD100を構成する構成データを格納すること、又はPLD100内に相互接続構造を提供すること)を実行するために、分散され得ることを理解されたい。本明細書に開示される様々な実施形態は、PLD100などのプログラマブルロジックデバイスに限定されず、当業者によって理解されるであろう、様々な他のタイプのプログラマブルデバイスに適用され得ることも理解されたい。
外部システム130は、PLD100の所望のユーザ構成又は設計を創作し、また、対応する構成データを生成して、PLD100をプログラムする(例えば、構成する)ために使用することができる。例えば、システム130は、そのような構成データを、1つ以上のI/Oブロック102、SERDESブロック150、及び/又はPLD100の他の部分に提供することができる。結果として、プログラマブル論理ブロック104、様々なルーティングリソース、及びPLD100の他の適切なコンポーネントは、ユーザ指定のアプリケーションに従って動作するように構成され得る。
図示の実施形態において、システム130は、コンピュータシステムとして実装されている。これに関して、システム130は、例えば、1つ以上のメモリ134内に提供される、及び/又は(例えば、システム130の内部にあっても外部にあってもよい)1つ以上の非一時的な機械可読媒体136内に非一時的な形式で格納される、ソフトウェア命令などの命令を実行するように構成され得る1つ以上のプロセッサ132を含む。例えば、いくつかの実施形態において、システム130は、Lattice Semiconductor Corporationから入手可能なLattice Diamond System PlannerソフトウェアなどのPLD構成ソフトウェアを実行して、ユーザが所望の構成を作成し、対応する構成データを生成してPLD100をプログラムできるようにし得る。
システム130はまた、例えば、ユーザに情報を表示するためのユーザインターフェース135(例えば、スクリーン又はディスプレイ)と、ユーザコマンド又は設計エントリを受信してPLD100の所望の構成を準備するための1つ以上のユーザ入力デバイス137(例えば、キーボード、マウス、トラックボール、タッチスクリーン、及び/又は他のデバイス)とを含む。
図2は、本開示の一実施形態による、PLD100の論理ブロック104のブロック図を例示している。説明したように、PLD100は、論理及び算術機能を提供するための様々なコンポーネントを含む複数の論理ブロック104を含む。図2に示される例示的な実施形態において、論理ブロック104は、論理ブロック104内で内部的に、及び/又はルーティングリソース180を使用して外部で相互接続され得る複数の論理セル200を含む。例えば、各論理セル200は、ルックアップテーブル(LUT)202、モード論理回路204、レジスタ206(例えば、フリップフロップ又はラッチ)、及び、論理セル200の及び/又は論理セル200間の所望の信号経路を選択するための様々なプログラマブルマルチプレクサ(例えば、プログラマブルマルチプレクサ212及び214)などの様々なコンポーネントを含み得る。この例では、LUT202は、4つの入力220A~220Dを受け入れ、4つ以下の入力を有する任意の適切な論理演算を実装するためにPLD100の構成データによってプログラム可能な4入力LUT(「4-LUT」又は「LUT4」と略されることがある)となる。モード論理204は、本明細書に記載されるように、様々な論理要素及び/又は入力220Eなどの追加の入力を含み、様々なモードの機能をサポートすることができる。他の例のLUT202は、PLDの特定の実装のための他の適切な数の入力を有する他の適切なサイズのものであり得る。いくつかの実施形態において、異なるサイズのLUTが、異なる論理ブロック104及び/又は異なる論理セル200に対して提供され得る。
LUT202及び/又はモード論理204からの出力信号222は、いくつかの実施形態において、論理セル200の出力信号233を提供するために、レジスタ206を通過してもよい。様々な実施形態において、LUT202及び/又はモード論理204からの出力信号223は、図示のように、出力223に直接渡されてもよい。マルチプレクサ210~214及び/又はモード論理204の構成に応じて、出力信号222は、制御信号230に従って、ラッチ206に一時的に格納され得る(例えば、ラッチされる)。いくつかの実施形態において、PLD100の構成データは、論理セル200の出力223及び/又は233を、別の論理セル200(例えば、別の論理ブロック又は同じ論理ブロック内)の1つ以上の入力として、ステージング又はカスケード構成(例えば、複数のレベルを含む)で提供されるように構成して、単一の論理セル200では実装できない論理演算(例えば、単一のLUT202によって実装されるにはあまりにも多くの入力を有する論理演算)を構成することができる。さらに、論理セル200は、本明細書で記載されるように、選択可能な動作モードを容易にするために、複数の出力及び/又は相互接続で実装され得る。
モード論理回路204は、加算器、減算器、比較器、カウンタ、又は他の演算などの算術演算を効率的に実装するため、拡張論理演算(例えば、より高次のLUT、複数ビットデータの処理)を効率的に形成するため、比較的小さいRAMを効率的に実装するため、及び/又は論理、算術、拡張論理、及び/又は他の選択可能な動作モード間の選択を可能にするため、PLD100のいくつかの構成に利用されてもよい。これに関して、モード論理回路204は、本明細書に記載されるように、複数の論理セル202にわたって、キャリーイン信号205及びキャリーアウト信号207、及び/又は他の信号(例えば、出力信号222)を隣接する論理セル202間で通過させるために一緒に連鎖され得る。図2の例では、キャリーイン信号205は、例えば、モード論理回路204に直接渡されてもよいし、又は本明細書で記載されるように、1つ以上のプログラマブルマルチプレクサを構成することによってモード論理回路204に渡されてもよい。いくつかの実施形態において、モード論理回路204は、複数の論理ブロック104にまたがって連鎖され得る。
図2に示される論理セル200は単なる例であり、異なる実施形態による論理セル200は、PLDコンポーネントの異なる組み合わせ及び配置を含み得る。また、図2は、8つの論理セル200を有する論理ブロック104を例示しているが、他の実施形態による論理ブロック104は、より少ない論理セル200又はより多い論理セル200を含んでいてもよい。論理ブロック104の各論理セル200は、PLD100によって実装されるユーザ設計の一部を実装するために使用され得る。これに関して、PLD100は、多くの論理ブロック104を含んでいてもよく、それらのそれぞれは、論理セル200及び/又はユーザ設計を集合的に実装するために使用される他のコンポーネントを含み得る。
本明細書でさらに記載するように、ユーザ設計の一部は、PLD100がユーザ設計を実装するように構成される際、より少ない論理セル200、より少ない論理ブロック104を占有するように、及び/又はルーティングリソース180への負担が少なくなるように調整することができる。様々な実施形態によるそのような調整は、論理セル200及び/又は論理ブロック104の複数の実施形態を占める配置において実装される特定の論理、算術、及び/又は拡張論理演算を識別し得る。本明細書でさらに記載するように、最適化プロセスは、論理、リップル算術、又は拡張論理演算を、先行する算術/論理演算に関連する1つ以上の論理セル200及び/又は論理ブロック104に実装できるように、本明細書に記載する算術/論理演算に関連する様々な信号接続をルーティングすることができる。
図3は、本開示の一実施形態による、PLDの設計プロセス300を例示している。例えば、図3のプロセスは、PLD100を構成するためにLattice Diamondソフトウェアを実行するシステム130によって実行され得る。いくつかの実施形態において、図3で参照される様々なファイル及び情報は、例えば、メモリ134、機械可読媒体136、及び/又はその他の1つ以上のデータベース及び/又は他のデータ構造に格納され得る。様々な実施形態において、そのようなファイル及び/又は情報は、格納されるとき、及び/又は、PLD100及び/又は他のデバイス又はシステムに伝達されるときに、暗号化又は他の方法で保護され得る。
動作310において、システム130は、PLD100の所望の機能を指定するユーザ設計を受信する。例えば、ユーザは、システム130と相互作用して(例えば、ユーザ入力デバイス137及び設計を表すハードウェア記述言語(HDL)コードを介して)、ユーザ設計の様々な特徴(例えば、高レベルの論理演算、ハードウェア構成、及び/又は他の機能)を識別することができる。いくつかの実施形態において、ユーザ設計は、レジスタ転送レベル(RTL)記述(例えば、ゲートレベル記述)で提供され得る。システム130は、1つ以上のルールチェックを実行して、ユーザ設計がPLD100の有効な構成を記述していることを確認することができる。例えば、システム130は、無効な構成を拒否し、及び/又は適宜新しい設計情報を提供するようにユーザに要求することができる。
動作320において、システム130は、ユーザ設計の抽象的な論理実装を複数の論理コンポーネント(例えば、ネットリストコンポーネントとも呼ばれる)として識別するネットリスト(例えば、合成されたRTL記述)を作成するために設計を合成する。このネットリストは、PLD100のプログラマブルコンポーネント及びハードIPコンポーネントの両方を含み得る。いくつかの実施形態において、ネットリストは、ネイティブジェネリックデータベース(NGD)ファイル内の電子設計交換フォーマット(EDIF)で格納され得る。
いくつかの実施形態において、動作320において設計をネットリストに合成することは、論理演算、ハードウェア構成、及び/又はユーザ設計における他の特徴の高レベルの記述を、PLDコンポーネントのセット(例えば、論理ブロック104、論理セル200、及びユーザ設計を実装するために論理、算術、又は他のハードウェア機能のために構成されたPLD100の他の構成要素)及びそれらに関連する相互接続又は信号に変換する(例えば、翻訳する)ことを含み得る。実施形態に応じて、変換されたユーザ設計は、ネットリストとして表され得る。
いくつかの実施形態において、動作320において設計をネットリストに合成することは、伝搬遅延、PLDリソース及びルーティングリソースの消費を低減するために、及び/又はユーザ設計を実施するように構成されるときに、PLDの性能を最適化するために、ユーザ設計(例えば、PLDコンポーネントのセット及びそれらに関連する相互接続又は信号に変換/翻訳されたユーザ設計)に対して最適化プロセスを実行することをさらに含み得る。実施形態に応じて、最適化プロセスは、変換/翻訳されたユーザ設計を表すネットリストに対して実行され得る。実施形態に応じて、最適化プロセスは、(例えば、最適化されたネットリストを作成するための)ネットリスト内の最適化されたユーザ設計を表すことができる。
いくつかの実施形態において、最適化プロセスは、PLDがユーザ設計を実装するように構成される場合に複数の構成可能なPLDコンポーネント(例えば、論理セル200、論理ブロック104、及び/又はルーティングリソース180)を占有することになるであろう、論理関数演算、リップル算術演算、及び/又は拡張論理関数演算の特定のインスタンスを最適化することを含んでいてもよい。例えば、最適化プロセスは、論理関数演算、リップル算術演算、拡張論理関数演算、及び/又はユーザ設計における対応するルーティングリソースを実装する複数のモード又は構成可能な論理セルを検出すること、様々な動作を実装する論理セルの動作モードを入れ替えて、動作を実装するために使用されるPLDコンポーネント及び/又はルーティングリソースの数を低減すること、及び/又は動作に関連する伝搬遅延を低減すること、及び/又は入れ替えた動作モードを考慮するために対応するLUT及び/又はモード論理を再プログラミングすることを含み得る。
別の例では、最適化プロセスは、拡張論理関数演算及び/又はユーザ設計における対応するルーティングリソースを検出し、拡張論理演算を単一の物理論理セル出力を有する複数のモード又は変換可能論理セルに実装し、論理セルの第1のセットの論理セル出力を論理セルの第2のセットの入力にルーティング又は結合して、拡張論理演算及び/又はルーティングリソースを実装するために使用されるPLDコンポーネントの数を低減すること、及び/又は拡張論理演算に関連する伝搬遅延を低減すること、及び/又は対応するLUT及び/又はモード論理をプログラミングして、少なくとも第1及び第2の論理セルのセットを有する拡張論理関数演算を実装することを含むことができる。
別の例では、最適化プロセスは、論理関数演算、リップル算術演算、拡張論理関数演算、及び/又はユーザ設計における対応するルーティングリソースを実装する複数のモード又は構成可能な論理セルを検出し、様々な演算を実装する論理セルの動作モードを入れ替えて、PLD内の信号経路に沿ってプログラマブルレジスタを提供し、当該信号経路に関連する伝搬遅延を低減し、対応するLUT、モード論理、及び/又は他の論理セル制御ビット/レジスタを再プログラミングして、入れ替えられた動作モードを考慮し、及び/又はプログラマブルレジスタをプログラムして、当該信号経路に信号を格納又はラッチすることを含み得る。
動作330において、システム130は、ユーザ設計を実装するために使用され得るPLD100のコンポーネントを識別するマッピングプロセスを実行する。これに関して、システム130は、最適化された(例えば、最適化プロセスの結果として動作320において格納された)ネットリストを、PLD100によって提供される様々なタイプのコンポーネント(例えば、論理ブロック104、論理セル200、組み込みハードウェア、及び/又はPLD100の他の部分)及びそれらに関連する(例えば、配置又はルーティングをまだ指定していない論理的な様式の)信号にマッピングすることができる。いくつかの実施形態において、マッピングは、1つ以上の以前に保存されたNGDファイルに対して実行され得る。マッピング結果は、(例えば、NCDファイルとも呼ばれる)物理的設計ファイルとして保存される。いくつかの実施形態において、マッピングプロセスは、動作320の合成プロセスの一部として実行され、PLDコンポーネントにマッピングされるネットリストを生成することができる。
動作340において、システム130は、配置プロセスを実行して、マッピングされたネットリストコンポーネントを、(例えば、特定の論理セル200、論理ブロック104、ルーティングリソース180、及び/又はPLD100の他の物理コンポーネントに割り当てられる)PLD100の特定の物理的位置に存在する特定の物理的コンポーネントに割り当て、これにより、PLD100のレイアウトを決定する。いくつかの実施形態において、配置は、1つ以上の以前に保存されたNCDファイルに対して実行され得る。配置結果は、別の物理的設計ファイルとして保存される。
動作350において、システム130は、配置されたコンポーネント間の物理的相互接続を実現するために、動作340で決定された配置レイアウトに基づいて、PLD100のコンポーネント間で接続をルーティングする(例えば、ルーティングリソース180を使用する)ルーティングプロセスを実行する。いくつかの実施形態において、ルーティングは、1つ以上の以前に保存されたNCDファイルに対して実行され得る。ルーティング結果は、別の物理的設計ファイルとして保存される。
様々な実施形態では、動作350における接続のルーティングは、伝搬遅延、PLDリソース及び/又はルーティングリソースの消費を低減するために、及び/又はユーザ設計を実施するように構成されている場合に、PLDの性能を最適化するために、ユーザ設計に対して最適化プロセスを実行することをさらに含み得る。いくつかの実施形態において、最適化プロセスは、変換/翻訳されたユーザ設計を表す物理設計ファイルに対して実行され、最適化プロセスは、(例えば、最適化された物理設計ファイルを生成するため)物理設計ファイル内の最適化されたユーザ設計を表すことができる。
いくつかの実施形態において、最適化プロセスは、PLDがユーザ設計を実装するように構成される場合に複数の構成可能なPLDコンポーネント(例えば、論理セル200、論理ブロック104、及び/又はルーティングリソース180)を占有することになるであろう、論理関数演算、リップル算術演算、及び/又は拡張論理関数演算の特定のインスタンスを最適化することを含んでいてもよい。例えば、最適化プロセスは、論理関数演算、リップル算術演算、拡張論理関数演算、及び/又はユーザ設計における対応するルーティングリソースを実装する複数のモード又は構成可能な論理セルを検出すること、様々な動作を実装する論理セルの動作モードを入れ替えて、動作を実装するために使用されるPLDコンポーネント及び/又はルーティングリソースの数を低減すること、及び/又は動作に関連する伝搬遅延を低減すること、及び/又は入れ替えた動作モードを考慮するために対応するLUT及び/又はモード論理を再プログラミングすることを含み得る。
別の例では、最適化プロセスは、拡張論理関数演算及び/又はユーザ設計における対応するルーティングリソースを検出し、拡張論理演算を単一の物理論理セル出力を有する複数のモード又は変換可能論理セルに実装し、論理セルの第1のセットの論理セル出力を論理セルの第2のセットの入力にルーティング又は結合して、拡張論理演算及び/又はルーティングリソースを実装するために使用されるPLDコンポーネントの数を低減すること、及び/又は拡張論理演算に関連する伝搬遅延を低減すること、及び/又は対応するLUT及び/又はモード論理をプログラミングして、少なくとも第1及び第2の論理セルのセットを有する拡張論理関数演算を実装することを含むことができる。
別の例では、最適化プロセスは、論理関数演算、リップル算術演算、拡張論理関数演算、及び/又はユーザ設計における対応するルーティングリソースを実装する複数のモード又は構成可能な論理セルを検出し、様々な演算を実装する論理セルの動作モードを入れ替えて、PLD内の信号経路に沿ってプログラマブルレジスタを提供し、当該信号経路に関連する伝搬遅延を低減し、対応するLUT、モード論理、及び/又は他の論理セル制御ビット/レジスタを再プログラミングして、入れ替えられた動作モードを考慮し、及び/又はプログラマブルレジスタをプログラムして、当該信号経路に信号を格納又はラッチすることを含み得る。
ルーティングの変更は、合成、マッピング、および/または配置などの以前の動作に伝播して、ユーザ設計の様々な側面を最適化することができる。
したがって、動作350に続いて、(例えば、対応する前の動作の結果を組み合わせることによって)PLD100のために合成(例えば、変換及び最適化)、マッピング、配置、及びルーティング(例えば、さらなる最適化)された後のユーザ設計を指定する1つ以上の物理設計ファイルが提供され得る。動作360において、システム130は、合成され、マッピングされ、配置され、そしてルーティングされたユーザ設計のための構成データを生成する。様々な実施形態において、そのような構成データは、本明細書でより詳しく説明されるように、そのような生成プロセスの一部として暗号化及び/又は他の方法で保護され得る。動作370において、システム130は、例えば、接続140を介して構成データビットストリーム(例えば、「構成」)をPLD100にロードすることによって、構成データを用いてPLD100を構成する。そのような構成は、例えば、暗号化された、署名された、又は保護されていない/認証されていない形式で提供され得る。そして、PLD100は、本明細書に記載されるように、保護された構成と保護されていない構成を異なる方法で扱うように構成され得る。
図4は、本開示の一実施形態による、セキュアPLD410のブロック図を例示している。様々な実施形態において、セキュアPLD410は、図1のPLD100に関連して説明したものと同様の要素によって実装されてもよいが、本明細書で説明するように、トラステッド・コンピューティングアプリケーション及び/又はアーキテクチャにおけるセキュアPLD410の動作を容易にするように構成された追加の構成可能な、及び/又はハードIP要素によって実装されてもよい。特に、セキュアPLD410は、様々なバスによってセキュリティエンジン420にリンクされたPLDファブリック400、構成エンジン440、不揮発性メモリ(NVM)450、プログラマブルI/O404、及び/又は他の集積回路(IC)モジュール480を含んでいてもよく、これらはすべて図示のようにモノリシックIC上に実装される。一般に、PLDファブリック400は、PLD100に関して説明された様々な要素のいずれかによって実装することができ、図3に関連して説明されたプロセス300と同様の設計プロセスを使用して、所望の構成に従ってPLDファブリック400を生成及びプログラムするように構成され得る。より具体的には、セキュアPLD400は、受信された構成に従ってPLDファブリック400をプログラムする前に、受信された構成を受信、復号化、認証、及び/又は検証するために、図4で識別される様々な識別されたハードIP要素を使用するように構成され得る。
セキュリティエンジン420は、PLDファブリック400及び/又は構成エンジン440によって使用するための様々なセキュリティ機能を提供するように構成されたハードIPリソースとして実装され得る。図4に示す実施形態では、セキュリティエンジン420は、デバイスID422(例えば、64ビットの一意かつデバイス固有のID)、真の乱数発生器424、セキュアハッシュアルゴリズム(SHA)サービス426(例えば、SHA256、SHA-2、及び/またはSHA-3サービス)、高度暗号化標準(AES)サービス428(例えば、AES128/256暗号化/復号化サービス)、公開鍵/秘密鍵ペア発生器(P/PKG)430、楕円曲線デジタル署名アルゴリズム(ECDSA)認証サービス432(例えばECDSA256サービス)、及び/又は他のセキュリティサービス434を含む。図4に更に示されるように、セキュリティエンジン420は、制限されたバス406を介してPLDファブリック400に、及び、セキュアなバス446を介して構成エンジン440に通信可能にリンクされ得る。一般に、制限されたバス406は、PLDファブリック400が、セキュリティエンジン420によってホストされたセキュリティ機能の限定されたセットにアクセスすること、及び/又は、セキュリティエンジン420によってホストされたセキュリティ機能のいずれか1つ又はすべての設定を禁止する、デバイスID422へのアクセスを禁止する、及び/又はP/PKG430によって生成された公開鍵/秘密鍵ペアの秘密鍵へのアクセスを禁止するなど、限定された方法で、そのようなセキュリティ機能にアクセスすることを可能にするように構成され得る。対照的に、セキュアなバス446は、構成エンジン440がセキュリティエンジン420のすべてのセキュリティ機能、データ、及び/又は構成にアクセス及び/又は変更することを可能にするように構成され得る。一般に、制限されたバス406及びセキュアなバス446のいずれか又は両方は、セキュリティエンジン420とセキュアPLD410の他の要素との間に暗号化及び/又は他の方法で保護された通信を提供するように構成され得る。
構成エンジン440は、セキュアPLD410の様々な要素間の構成及び/又は通信を管理するように構成されたハードIPリソースとして実装され得る。例えば、構成エンジン440は、PLDファブリック400の暗号化/保護された構成を外部システム130/機械可読媒体136から構成I/O448を介して受信し、セキュリティエンジン420のセキュリティ機能を使用してそのような構成を認証及び/又は復号化し、認証及び/又は復号化された構成をNVM450に格納し、格納された構成に対応するNVM450の部分をソフト又はハードロックし、格納された構成を認証及び/又は検証済み起動可能としてタグ付けし、及び/又は、本明細書に記載されるように、認証、復号化、検証及び/又はロックされた構成に従ってPLDファブリック400をプログラムするように構成することができる。さらなる実施形態において、構成エンジン440は、示されるように、構成ポート444を介してプログラマブルI/O404の少なくとも一部を構成するように(例えば、プログラマブルI/O404の少なくとも一部を有効及び/又は無効にするように)構成され得る。
より一般的には、構成エンジン440は、セキュアPLD410の要素の構成、セキュアPLD410の要素のロック状態、PLDファブリック400の起動、及びセキュアPLD410全体にわたるフロー制御を管理又は制御するように構成され得る。例えば、構成エンジン440は、バス408、442、443、446などのいずれか1つ又は一部をソフトロック又はロック解除又はハードロックするように、及び/又は、NVM450のいずれかの部分又はセクタをソフトロック又はロック解除又はハードロックするように構成され得る。デフォルトのロック解除構成では、バス408、442、及び446は、セキュアなバス446と機能が類似したセキュアなバスとして実装され得る。構成I/O448への外部アクセスバス443は、JTAG、I2C、SPI、及び/又は他の外部アクセスバス又はプロトコルのうちの1つ以上に従って実装され得る。例えば、外部システム130/機械可読媒体136への及び/又は外部システム130/機械可読媒体136からのロック可能/ロック解除可能なアクセスを提供するように構成され得る。特定の実施形態において、セキュアなバス408は、ウィッシュボーンバス/インターフェースに従って実装され得る。
NVM450は、セキュアPLD410のセキュアな動作を容易にするために使用されるデータのセキュリティ保護可能な不揮発性ストレージを提供するように構成されたハードIPリソースとして実装され得る。例えば、NVM450は、NVM450に格納されたデータのロック状態を示す、NVM460内のメモリ位置に対応するロックポリシー460を含み得る。ロックポリシー460の内容は、構成エンジン440内のシャドーレジスタにセキュアPLD410の電源投入時に転送され、例えば、そのような内容が構成エンジン440及び/又はPLDファブリック400によって、ロックポリシー460内の設定/ロック状態に応じて動的に修正されることを可能にする。一般に、特定のリソースのロック状態は、PLDファブリック400、構成I/O448/外部アクセスバス443、及び/又はセキュアPLD410の他の要素に対して、そのリソースに対する読み出し、書き込み/プログラム、及び/又は消去アクセスを示す。
本明細書に記載するように、「ソフト」ロックとは、NVM450内のバス/ポート又はメモリ位置の読み出し、書き込み、及び/又は消去アクセスステータスを指し、対応するリソースへの読み出し、書き込み、及び/又は消去アクセスを細分的に許可又は禁止するために、PLDファブリック400によって、及び/又は外部アクセスバス443を介して、プログラム的にイネーブル又はディセーブルにすることができる。「ハード」ロックとは、NVM450内のバス/ポート又はメモリ位置の読み出し、書き込み、及び/又は消去アクセスステータスを指し、外部アクセスバス443を介してプログラム的に有効にすることができるが、PLDファブリック400によってイネーブル又はディセーブルにすることはできず、外部アクセスバス443を介して無効にすることはできない。様々な実施形態において、ハードロックのアサートは一般に一方向であり、PLDファブリック400及び/又は外部アクセスバス443がセキュアPLD410内のすべての保護されているリソースのロックステータスをさらに変更する能力を排除する。いくつかの実施形態では、このようなロックスキームは、各リソース(例えば、NVM450内のバスポート又はメモリのセクタ)の4つのビット、ハードロックのイネーブル、読み出しロックのイネーブル、書き込みロックのイネーブル、及び消去ロックのイネーブルそれぞれの1つのビットによって実装することができる。
図4によって例示される実施形態に示されるように、NVM450は、複数の区別されたロック可能なセクタを含み得る。それらのセクタのそれぞれは、それ自身のロック状態を有し得る。このようなロック可能なセクタは、例えば、図示されるように、第1の構成イメージセクタ452、第2の構成イメージセクタ454、製造業者指定トリムセクタ456、デバイスキーセクタ458(例えば、AESキーセクタおよび別個の公開鍵/鍵ペアセクタ)、ロックポリシーセクタ460、ユーザフラッシュメモリ(UFM)セクタ462、及び/又は他の規定されたセキュリティ保護可能なストレージセクタ464のうちの1つ以上を含むことができる。いくつかの実施形態において、UFMセクタ462は、それぞれがそれ自身のロック状態を有し得るサブセクタにさらに区別され得る。ロックポリシーセクタ460は、例えば、それ自体のロック状態を含む、NVM450の各セクタのロックステータスを格納することができる。第1及び第2の構成イメージセクタ452、454は、それぞれ、例えば、PLDファブリック400の構成を格納することができ、さらに、(例えば、バージョン又は日付に基づいて)それらが選択され、認証プロセスを実行することなくPLDファブリックをプログラムするために使用されることができるように、バージョン及び/又は日付によってタグ付けされ、事前認証されることができる。トリムセクタ456は、本明細書に記載されるように、例えば、デバイスID422から導出される修正可能な顧客固有の注文部品番号及び生成された顧客ID番号のような、特定のセキュアPLD410に固有の製造業者トリム及び/又は他のデータを格納するために使用され得る。デバイスキーセクタ458は、暗号化/復号化鍵、公開鍵/秘密鍵、及び/又は特定のセキュアPLD410に固有の他のセキュリティキーを格納するために使用され得る。ロックポリシーセクタ460は、NVM450、構成エンジン440、構成I/O448、及び/又はセキュアPLD410の他の要素のリソースに対するロックステータスを格納するように構成することができる。UFMセクタ462は、構成又はアプリケーション固有のセキュリティキー、証明書、及び/又は他のセキュアなユーザデータなど、PLDファブリック400によって一般的にアクセス可能なユーザデータを格納するために使用され得る。他の保護可能なストレージセクタ464は、他のデバイス固有のセキュアなデータを格納するために使用され得る。NVM450の任意の1つ以上の個々の要素、部分、又はセクタは、本明細書で記載されるように、例えば構成可能なメモリ、又はワンタイムプログラマブル(OTP)メモリとして実装され得る。
プログラマブルI/O404は、PLDファブリック400と外部コントローラ、メモリ、及び/又は他のデバイスとの間の通信リンク、例えば、バス402(例えば、PLDファブリック400の一部をプログラマブルI/O404にリンクするように構成されたバス)を介した通信リンクを提供又はサポートするように構成された、少なくとも部分的に構成可能なリソースとして実装され得る。いくつかの実施形態において、バス402及び/又はプログラマブルI/O404は、PLDファブリック400と統合され得る。構成I/O448は、本明細書で記載されるように、外部システム130/機械可読媒体136との通信をサポートするために、1つ以上の外部バスインターフェース及び/又はプロトコル449をサポートするように構成されたハードIPリソースとして実装され得る。いくつかの実施形態において、構成I/O448及び/又はバス443は、構成エンジン440と統合され得る。より一般的には、図4に別個に示されているセキュアPLD410の1つ以上の要素は、互いに統合されていてもよく、及び/又はその中に組み込まれていてもよい。他のICモジュール480は、セキュアPLD410の動作を容易にするように構成されたハード及び/又は構成可能なIPリソースとして実装され得る。
図5Aは、本開示の一実施形態による、セキュアPLDプロビジョニングシステム500のブロック図を例示している。例えば、プロビジョニングシステム500の1つ以上の要素は、図7に関連して説明されるプロビジョニングプロセスの少なくとも一部を実行するように構成され得る。図5Aに示される実施形態において、セキュアPLDプロビジョニングシステム500は、通信リンク512及び通信ネットワーク514を介して互いに通信するように構成されたセキュアPLD顧客510及びセキュアPLD製造業者520を含む。一般に、通信リンク512は、通信ネットワーク514との間のデータ通信をサポートするように構成された1つ以上の有線及び/又は無線通信リンクによって実装され得る。また、通信ネットワーク514は、データ通信を一般的にサポートするように構成された1つ以上のローカル及び/又は広域ネットワーク(例えば、インターネットサービスプロバイダ、セルラーネットワーク、及び/又はインターネット)によって実装され得る。セキュアPLDプロビジョニングシステム500の残りの各要素は、例えば、セキュアPLD410の製造及び配信チェーン内のエンティティを表し、一般に、各々が図1の外部システム130に範囲が類似し、通信リンク512及び通信ネットワーク514を介して通信するように構成されたネットワーク通信デバイスによって実装され得る。様々な実施形態において、セキュアPLDプロビジョニングシステム500は、セキュアPLD410と同様のセキュアPLDのためのキー及び/又は他のセキュアな通信要素及び/又はメカニズムをプロビジョニングするように構成され得る。
図5Aに示されるように、セキュアPLD顧客510及びセキュアPLD製造業者520は、プロビジョニングシステム500内の信頼されたエンティティと考えられ得る。また、プロビジョニングシステム500の他のすべての要素は、信頼されていないエンティティと考えられ得る。その結果、顧客及び/又は製造業者のソフトウェア及び/又はハードウェアは、一般に、下流の顧客550及び/又は任意のセキュアPLDプログラマ530及びユーザデバイスアセンブラ540による望ましくないアクセス又は操作から保護されるか、又は他の方法で保証され得る。例えば、一般的な動作では、セキュアPLD顧客510は、セキュアPLD製造業者520に1つ以上のセキュアPLD410を要求し、セキュアPLD410のPLDファブリック400にプログラムされる独自の構成を生成する。セキュアPLD製造業者520は、個々のICを製造し、それらをセキュリティ機構でプログラミングすること(例えば、それらをロックすること)によって1つ以上の要求されたセキュアPLD410を準備し、セキュアPLD顧客510及び/又はセキュアPLD製造業者520によって提供されない構成によるさらなるプログラミングを禁止する。セキュアPLD顧客510は、デバイス固有の暗号化された構成を任意選択のセキュアPLDプログラマ530に提供することができる。また、セキュアPLD製造業者520は、ロックされたセキュアPLD410をセキュアPLDプログラマ530に提供することができる。その結果、セキュアPLDプログラマ530は、ロックされたセキュアPLD410の各々をそのデバイス固有の暗号化された構成でプログラムすることのみ可能となり、デバイス固有の暗号化された構成の暗号化されていない内容を容易に決定することができなくなる。
セキュアPLDプログラマ530は、プログラムされかつロックされたセキュアPLD410を任意のユーザデバイスアセンブラ540(例えば、マザーボードアセンブラ、スマートフォンアセンブラ、及び/又は他のユーザデバイス/組み込みデバイスアセンブラ/製造業者)に供給することができる。これは、プログラムされかつロックされたセキュアPLD410をユーザデバイスと統合し、統合されたユーザデバイスを下流の顧客550に提供するが、セキュアPLDプログラマ530及び下流の顧客550が、デバイス固有の暗号化構成の暗号化されていない内容を決定したり、ロックされたセキュアPLDを代替の構成で再プログラムしたりすることができなくさせる。次に、セキュアPLD顧客510は、デバイス固有の暗号化構成の暗号化されていない内容を漏らしたり、セキュアPLD410のロックを解除したりすることなく、下流の顧客550において対応するユーザデバイス内のプログラム及びロックされたセキュアPLD410を監査することができる。別個のエンティティとして図5Aに示されているが、セキュアPLDプログラマ530及びユーザデバイスアセンブラは、セキュアPLD顧客510、セキュアPLD製造業者520、及び/又は下流の顧客550と一緒に組み合わされ、及び/又は個別に統合され得る。
図5Bは、本開示の一実施形態による、セキュアPLDプロビジョニングシステム502のブロック図を示している。例えば、プロビジョニングシステム502の1つ以上の要素は、図7に関連して説明されたプロビジョニングプロセスの少なくとも一部を実行するように構成され得る。一実施形態において、セキュアPLDプロビジョニングシステム502は、図5AのセキュアPLD製造業者520にほぼ対応し得る。より一般的には、セキュアPLDプロビジョニングシステム502と同様の、又はその要素を含むシステムを使用して、図5Aに示されるセキュアPLDプロビジョニングシステム500の任意の1つ又は複数の要素を実装することができる。
図5Bに示される実施形態において、セキュアPLDプロビジョニングシステム502は、セキュアPLD顧客510によって発行された要求に従って、セキュアPLDストック524から供給されるいくつかのセキュアPLD410(例えば、ロック解除/ブランクのセキュアPLD410及び/又は別のセキュアPLD顧客又は要求に再標的化することが予定されている以前にロックされたセキュアPLD410)をロック及び/又は再標的化するように構成されたセキュアPLDロックシステム522を含む。セキュアPLDロックシステム522によってロックされると、ロックされたセキュアPLDは、本明細書に記載されるように、セキュアPLD顧客510によって提供される構成で、例えばロックシステム522によって又はより一般的にはセキュアPLDプログラマ530によってプログラムされ得る。様々な実施形態では、セキュアPLDロックシステム522は、例えば、セキュアPLD顧客510から、保護されていない通信リンク512を介して顧客公開鍵を受け取り、セキュア通信リンク527を介して外部システム130を制御して、デバイス配信リンク525(例えば、外部バスインターフェース449を介して外部システム130を用いて、セキュアPLD420をPLDストック/ストレージ領域524及びセキュアPLD410のインターフェース構成I/O448から取り出すように構成された機械的及び/又は電子的な配信リンク)を介して提供されるセキュアPLD410をロックするように構成された、強化セキュリティモジュール(HSM)526を含むことができる。そして、ロックされたセキュアPLD410は、同様のデバイス配信リンク528を介してセキュアPLDプログラマ530に物理的に配信され得る。HSM526は、例えば、一般的に外部システム130と同様に実装され得るが、外部操作及び/又はHSM526の監視のリスクを排除するための、監視および制限された物理的アクセスを備えた安全な工場の場所に配置される。いくつかの実施形態において、外部システム130及びHSM526及び/又はそれらの機能は、単一の外部システム130に統合され得る。
一般的な動作において、セキュアPLD顧客510は、(例えば、セキュアPLD顧客510内で、自身のHSMによって生成される)顧客の公開鍵/秘密鍵ペアの顧客の公開鍵を含む、いくつかのロックされたセキュアPLD410の要求をHSM526に提供することができる。HSM526は、(例えば、プログラミングのためにセキュアPLD410をロックおよびロック解除するなど、ロックされたセキュアPLD410の構成を暗号化、復号化、及び/又は認証するために使用される)顧客固有のプログラミング公開鍵/秘密鍵ペア及びプログラミングシークレット(例えば、提供された構成をさらに認証するための256ビットの乱数ワード)を生成し、ブランクの又はロック解除されたセキュアPLD410にロードしてロックするために、プログラミング秘密鍵、プログラミングシークレット、及び工場公開鍵を外部システム130に提供することができる。HSM526は、例えば、工場公開鍵/秘密鍵ペアをローカルで生成するように、及び/又はそのような工場鍵をメモリ134から取得するように構成され得る。そのような工場鍵は、工場固有及び/又は顧客固有であり得る。構成エンジン440は、(例えば、セキュアPLD410のための製造プロセスに対応する製造バッチ、ウェハ、及びウェハ位置を識別することができる)デバイス固有トレースID、プログラミング秘密鍵、プログラミングシークレット、工場公開鍵、及びPLDファブリック400の初期プログラミングイメージ(IPI)構成を受信することができる。これらはすべて、セキュアPLD410をロックするために、NVM450の1つ以上のセクタに格納される。
そして、構成エンジン440は、トレースIDをNVM450のMFGトリム456内及び/又はセキュリティエンジン420のデバイスID422内に格納し、(例えば、TRNG424によって生成される)乱数を当該トレースIDの最後に付加することによってデバイス固有シードを生成してもよい。このようなデバイス固有シードは、MFGトリム456内に格納され、及び/又は(例えば、セキュリティエンジン420のP/PKG430によって生成される)デバイス公開鍵/秘密鍵ペアのシード生成に使用され得る。このシードは、NVM450のデバイスキーセクタ458内に格納してもよい。そして、構成エンジン440は、得られたデバイス公開鍵及びトレースIDを外部システム130に提供してもよい。外部システム130は、デバイス公開鍵及びトレースIDをHSM526に中継して、セキュアPLD顧客510によって要求された各ロックされたセキュアPLD410についてのラインアイテムを含むロックされたPLDマニフェストに追加することができる。各ラインアイテムは、デバイス固有のトレースID及びデバイス公開鍵を含む。そして、HSM526は、顧客公開鍵及びプログラミング秘密鍵を使用してプログラミングシークレットを暗号化及び署名することができる。その結果得られる暗号化されたプログラミングパケットは、(例えば、セキュアPLD410のPLDファブリック400のための暗号化され署名された構成を生成するのを助けるために)プログラミング公開鍵を伴ってセキュアPLD顧客510に提供され得る。セキュアPLD顧客510によって要求されたすべてのロックされたセキュアPLD410のエントリが完了すると、HSM526は、プログラミング秘密鍵を使用してロックされたPLDマニフェストに署名し、その署名済みのロックされたPLDマニフェストをセキュアPLD顧客510に提供することができ、その後、ロックされたPLDマニフェスト、プログラミングシークレット、及びプログラミング公開鍵を使用して、本明細書に記載されるように、セキュアPLDプログラマ530によるロックされたセキュアPLD410のプログラミングを管理することができる。
いくつかの実施形態において、HSM526は、特定のセキュアPLD顧客510及び/又はセキュアPLD顧客510から受信したロックされたセキュアPLD410に対する特定の要求に対応する顧客プログラミングキートークンを生成するように構成され得る。そのような顧客プログラミングキートークンは、セキュアPLD顧客510に関して格納されたすべての情報及び/又はセキュアPLD顧客510から受信したロックされたセキュアPLD410の要求を(例えば、HSM526に格納された顧客データベース内で)参照するために使用され得る。そのような格納情報は、プログラミング公開鍵/秘密鍵ペア、プログラミングシークレット、工場公開鍵/秘密鍵ペア、ロックされたPLDマニフェスト、及び/又はセキュアPLDプロビジョニングシステム502及び/又は500の動作に関連付けられた他の情報又は情報のサブセットを含み得る。PLDストック524がリターゲティングのために予定された1つ以上の以前にロックされたセキュアPLD410(例えば、別のセキュアPLD顧客へのロック、又は別のセキュアPLD要求)を含む実施形態では、HSM526は、以前の顧客プログラミングキートークンを使用して、当該ロックされたセキュアPLDをロックするために使用される情報を検索し、以前の工場秘密鍵を使用して署名されたセキュアPLD410に新しい情報を(例えば、外部システム130を介して)提供し、セキュアPLD410に(例えば、セキュアPLD410によって実行される)リターゲティングコマンドを提供するように構成することができる。ここで、リターゲティングコマンドは、NVM450に格納された以前の工場公開鍵で新しい情報を認証して当該NVM450に格納された以前の情報(例えば、デバイス公開鍵/秘密鍵ペア、プログラミング秘密鍵、プログラミングシークレット、工場公開鍵、及び/又はIPI)を対応する新しい又は更新された情報で置き換えるために、PLDファブリック400及び/又は構成エンジン440によって実行される。
図6は、本開示の一実施形態による、セキュアPLD410を含むユーザデバイス610のブロック図を例示している。一実施形態において、セキュアPLD410は、ユーザデバイス610(例えば、マザーボード、スマートフォン、及び/又は他のユーザ/組み込みデバイス)にセキュアブートメカニズムを提供するように構成され得る。例えば、ユーザデバイス610の電源投入時に、セキュアPLD410は、セキュリティエンジン420のP/PKG430を使用して一時的な公開鍵/秘密鍵ペアを生成し、当該一時的な公開鍵及びコントローラブートローダ662(例えば、NVM450のUFM462に事前認証及び/又は格納され得る)を、バス604(例えば、プログラマブルI/O404によってサポートされるバス)を介してコントローラ620に提供するように構成され得る。コントローラ620の実行エンジン624は、コントローラブートローダ662をセキュアPLD410から受信したときに実行するように構成されてもよく、この場合、実行エンジン624は、(例えば、揮発性メモリ(VM)612の電源投入状態から導出された電源投入RAM値を使用して)一時セッションキーを生成し、セキュアPLD410及び暗号ソルトによって提供される一時公開鍵を使用して一時セッションキーを暗号化し、その結果得られる第1の暗号化パッケージをセキュアPLD410にバス604を介して提供するように構成され得る。
セキュアPLD410は、(例えば、一時秘密鍵を使用して)コントローラ620によって提供される第1の暗号化されたパッケージから一時セッションキーを抽出し、当該セッションキーを使用してコントローラアプリケーションイメージ復号器663を暗号化し、得られた第2の暗号化されたパッケージをコントローラ620にバス604を介して提供するように構成され得る。コントローラ620の実行エンジン624は、セキュアPLD410から第2の暗号化されたパッケージを受信すると、当該第2の暗号化されたパッケージからコントローラアプリケーションイメージ復号器663を抽出するように構成されてもよく、実行エンジン624は、(例えば、バス602及び604を介して)NVM630に格納されたコントローラアプリケーションイメージ632を検索、認証及び復号化し、認証及び復号化されたコントローラアプリケーションイメージ632をVM622に格納し、認証及び復号化されたコントローラアプリケーションイメージ632を実行するように構成されてもよい。さらに、セキュアPLD410及びコントローラ620は、保護された通信経路を互いに登録するように構成され得る。
別の実施形態において、セキュアPLD410は、コントローラ620を使用して、セキュアPLD410のPLDファブリック400をプログラムするために使用される構成を検証するように構成され得る。例えば、セキュアPLD410は、セキュリティエンジン420のP/PKG430を使用して一時的な公開鍵/秘密鍵ペアを生成し、一時的な公開鍵をコントローラ620に提供するように構成され得る。コントローラ620の実行エンジン624は、一時セッションキーを生成し、セキュアPLD410によって提供される一時公開鍵及び暗号ソルトを使用して一時セッションキーを暗号化し、その結果得られる第3の暗号化されたパッケージをセキュアPLD410にバス604を介して提供するように構成され得る。コントローラ620はまた、例えば、セキュアPLD410のNVM450に格納された1つ以上の構成イメージから識別データを抽出する要求を暗号化するために当該セッションキーを使用し、その結果得られる第4の暗号化されたパッケージをセキュアPLD410にバス604を介して送信するように構成され得る。
セキュアPLD410は、コントローラ620によって提供される第3の暗号化されたパッケージから一時セッションキーを抽出し、当該一時セッションキーを使用して第四の暗号化されたパッケージから要求を抽出し、要求された識別データをセキュアPLD410のNVM450内に格納された1つ以上の構成イメージから抽出し、一時セッションキーを使用して当該要求された識別データを暗号化し、結果として得られる第5の暗号化されたパッケージをコントローラ620にバス604を介して提供するように構成することができる。受信時に、コントローラ620は、NVM450に格納された1つ以上の構成イメージのバージョン、リリース日、及び/又は他の特性を、ユーザデバイス610に(例えば、NVM630又はVM622に)存在する及び/又はネットワーク(例えば、ネットワークインターフェースデバイスを含み得る他のユーザデバイスモジュール680を介してアクセスされる通信ネットワーク514)を介してアクセス可能な若しくは当該ネットワークから取得される、そのような特性のデータベースと比較することによって、検証するように構成され得る。さらなる代替の実施形態において、セキュアPLD410は、コントローラ620の代わりに、ユーザデバイス600の動作を制御するために使用され得る。
図7は、本開示の一実施形態による、ロックされたセキュアPLDのプロビジョニングプロセスを例示している。いくつかの実施形態において、図7の動作は、図1から図6に示される対応する電子デバイス、モジュール、及び/又は構造に関連付けられた1つ以上の論理デバイスによって実行されるソフトウェア命令として実装され得る。より一般的には、図7の動作は、ソフトウェア命令及び/又は電子ハードウェア(例えば、インダクタ、キャパシタ、増幅器、アクチュエータ、又は他のアナログ及び/又はデジタルコンポーネント)の任意の組み合わせで実装され得る。プロセス700の任意のステップ、サブステップ、サブプロセス、又はブロックは、図7に示される実施形態とは異なる順序又は配置で実施されてもよいことを理解されたい。例えば、他の実施形態において、1つ以上のブロックをプロセス700から省略することができ、他のブロックを含めることができる。さらに、ブロック入力、ブロック出力、様々なセンサ信号、センサ情報、キャリブレーションパラメータ、及び/又は他の動作パラメータは、プロセス700の次の部分に移動する前に、1つ以上のメモリに格納され得る。プロセス700は、図1~図7のシステム、装置、及び要素を参照して説明されているが、プロセス700は、他のシステム、デバイス、及び要素によって実行されてもよく、また、電子システム、デバイス、要素、アセンブリ、及び/又は配置の異なる選択を含んでいてもよい。プロセス700の開始時に、様々なシステムパラメータは、例えば、プロセス700に類似したプロセスの事前の実行によって移入されてもよく、又は本明細書に記載されているように、プロセス700の過去の動作から導出された典型的な、格納された、及び/又は学習された値に対応する、0及び/又は1つ以上の値に初期化されてもよい。
ブロック710において、論理デバイスは、ロックされたPLDの要求を受信する。例えば、セキュアPLD製造業者520のネットワーク通信デバイス(例えば、外部システム130、HSM526)は、セキュアPLD顧客510のネットワーク通信デバイス(例えば、外部システム130、HSM526)からロックされたセキュアPLD410の要求を受信するように構成され得る。このような要求は、例えば、通信リンク512を介して、及び/又は通信ネットワーク514を介して送信することができ、要求されるデバイスの数、及び特定の所望のセキュアPLD410に関連付けられた任意の特定のモデル又は他の識別情報と共に、対応する顧客公開鍵/秘密鍵ペアの顧客公開鍵を含むことができる。
ブロック720において、論理デバイスは、ロックされたPLDを生成する。例えば、セキュアPLD製造業者520は、ロックされたセキュアPLD410を生成するように構成され得る。いくつかの実施形態において、セキュアPLD製造業者520は、IC製造システムを使用して、例えば、セキュリティエンジン420及び/又はNVM450のMFGトリム456にデバイスID422をプログラミング又は格納又は他の方法で埋め込むことを含み得るセキュアPLD410を製造することができる。セキュアPLD製造業者520はまた、本明細書に記載されるように、外部システム130を使用して、セキュアPLD410をロックすることができる。一実施形態では、セキュアPLD製造業者520のセキュアPLDロックシステム522は、顧客IDをセキュアPLD顧客510に割り当てるように、及び/又はブロック710で受信した要求を割り当てるように構成することができ、次いで、デバイスID422及び/又は(例えば、製造時に生成される)デバイス発注部品番号と組み合わせて、HSM526に格納された暗号化されていないデータベースなどにおいて、セキュアPLD410を参照又は識別するために使用することができる顧客固有の発注部品番号を提供するように構成することができる。
HSM526はまた、対応するランダムかつ一意の顧客プログラミングキートークン及び/又は顧客固有の注文部品番号を生成し、そのようなトークン又は番号に参照されるロックされたセキュアPLDの生成に関連する全ての格納された情報を参照することによって、ブロック710で受信された要求におけるセキュアPLD顧客510及び/又は顧客公開鍵に対応する顧客プログラミングキートークンを生成するように構成され得る。HSM526はまた、プログラミング公開鍵/秘密鍵ペア及びプログラミングシークレットを生成するように構成されてもよく、これらはすべて、セキュアPLD顧客510及び/又はブロック710で受信された要求に固有であり、これらはすべてHSM526に格納され得る。HSM526はさらに、セキュアPLD製造業者520、セキュアPLD顧客510、及び/又はブロック710で受信された要求に固有となり得る、工場公開鍵/秘密鍵ペアを生成するように構成されてもよく、これもHSM526に格納され得る。
HSM526は、例えば、セキュアPLD410のプログラミング/ロックのために、工場公開鍵、プログラミング秘密鍵、及びプログラミングシークレットを外部システム130に提供し、その代わりにデバイス固有のトレースID及びデバイス公開鍵を受信するように構成され得る。HSM526はまた、顧客公開鍵及びプログラミング秘密鍵を使用してプログラミングシークレットを暗号化及び署名するように構成されてもよく、結果として生じる暗号化されたプログラミングパケットは、(例えば、セキュアPLD顧客510がセキュアPLD410のPLDファブリック400のために暗号化および署名された構成を生成するのを助けるために)プログラミング公開鍵を伴ってセキュアPLD顧客510に提供されてもよい。セキュアPLD410は、セキュリティエンジン420のTRNG424を使用して、MFGトリム456及び/又はデバイスID422に格納されたトレースIDに基づいてデバイス固有シードを生成し、当該デバイス固有シード及び/又はセキュリティエンジン420のP/PKG430を使用して、すべてセキュアPLD410に固有のデバイス公開鍵/秘密鍵ペアを生成し、そのすべてを(例えば、プログラミング秘密鍵、プログラミングシークレット、工場公開鍵、及び/又は外部システム130及び/又はHSM526によって提供されるIPI構成と共に)NVM450に格納するように構成することができる。
別の実施形態において、HSM526は、顧客プログラミングキートークンを使用して、セキュアな状態で格納されたデータベースからプログラミング秘密鍵、プログラミングシークレット、及びデバイス公開鍵を取得し、それらを外部システム130に提供するように構成され得る。そして、外部システム130は、プログラミング秘密鍵、プログラミングシークレット、及び/又はデバイス公開鍵を使用して、セキュアPLD410にIPI構成を提供し、PLDファブリック400をそのIPIを用いてプログラムするように構成され得る。このプログラミングは、保護されていない書き込み操作を構成する可能性があり、したがって、セキュアな環境(例えば、セキュアなPLD製造業者520内で完全に行うなど)を必要とする可能性がある。さらなる実施形態では、HSM526は、外部システム130から、セキュアPLD410に対応するトレースID及び対応するデバイス公開鍵を含むロックされたPLDマニフェストエントリを受信し、ブロック710で受信した要求に対応する完全なロックされたPLDマニフェストを生成し、当該ロックされたPLDマニフェストにプログラミング秘密鍵で署名し、当該署名済みのロックされたPLDマニフェストをセキュアPLD顧客510に提供するように構成することができる。
追加の実施形態において、既にプログラムおよびロックされたセキュアPLDを異なる顧客又はアプリケーションに(例えば、異なるプログラミングキーペア、プログラミングシークレット、及び公開デバイスキーを使用して)再ターゲットすることが有用であり得る。通常、既にプログラムされたIPIは再プログラムする必要はない(例えば、PLDファブリック400に対して同じIPI構成を使用することができる)。例えば、HSM526は、顧客プログラミングキートークン及び/又はトレースIDを使用して、セキュアPLD410をロックするために使用される以前の情報(例えば、HSM526に格納された元のプログラミング秘密鍵、プログラミングシークレット、及びデバイス公開鍵)を検索するように構成され得る。そして、HSM526は、外部システム130を使用して、以前の工場秘密鍵を使用して署名されたセキュアPLD410に新しい情報を提供し、セキュアPLD410に(例えば、セキュアPLD410によって実行される)リターゲティングコマンドを提供するように構成されてもよい。ここで、リターゲティングコマンドは、PLDファブリック400及び/又は構成エンジン440によって実行されて、NVM450に格納された以前の工場公開鍵で新しい情報を認証し、NVM450に格納された以前の情報(例えば、デバイス公開鍵/秘密鍵ペア、プログラミング秘密鍵、プログラミングシークレット、工場公開鍵、及び/又はIPI)を、本明細書に記載されるように、対応する新しい又は更新された又はリターゲットされた情報で置き換えることができる。
ブロック730において、論理デバイスは、ロックされたPLDのためのセキュアロック解除パッケージを提供する。例えば、セキュアPLD製造業者520のHSM526は、ブロック720で生成されたロックされたセキュアPLD410のためのセキュアロック解除パッケージをセキュアPLD顧客510に提供するように構成され得る。一実施形態において、HSM526は、暗号化されたプログラミングパケット、プログラミング公開鍵、及び/又はブロック720で生成された顧客プログラミングキートークンをセキュアPLD顧客510に提供するように構成され得る。そのような情報は、ブロック720にロックされているように、セキュアPLD顧客510によってセキュアPLD410の保護された構成を生成するために使用され得る。
ブロック740において、論理デバイスは、ロックされたPLDを識別する認証可能なマニフェストを提供する。例えば、セキュアPLD製造業者520は、ブロック720で生成されたロックされたセキュアPLD410を識別する認証可能なロックされたPLDマニフェストを提供するように構成され得る。一実施形態では、HSM526は、トレースID及びデバイス公開鍵のマニフェスト(例えば、トレースIDによって参照されるデバイス公開鍵のマニフェスト)を生成し、ブロック720で生成されたプログラミング秘密鍵を使用してロックされたPLDマニフェストに署名し、署名済みのロックされたPLDマニフェストをセキュアPLD顧客510に提供するように構成されてもよい。そのような情報は、セキュアPLD顧客510によって、展開及び/又はロックされたセキュアPLD410の選択を監査するために使用され得る。
ブロック750において、論理デバイスは、ロックされたPLDのための保護された構成を生成する。例えば、セキュアPLD顧客510の外部システム130は、ブロック720で生成されたロックされたセキュアPLD410の保護された構成を生成するように構成され得る。一実施形態において、外部システム130は、図3を参照して説明したプロセス300と同様のプロセスを使用して、セキュアPLD410のPLDファブリック400の保護されていない構成を生成するように構成され得る。このような構成は、例えば、PLDファブリック400に主にロードされ構成されるアプリケーションビットストリーム/構成と、ロックポリシーセクタ460、UFMセクタ462、及び/又は他の規定されたセキュリティ保護可能なストレージセクタ464に主にロードされ構成されるフィーチャビットストリーム/構成とを含み得る。そのような機能ビットストリーム/構成は、本明細書に記載のプロセスのいずれかを実装するために構成エンジン440によって実装及び/又は他の方法で使用され得るセキュリティ鍵、機能、及び/又は他の機能を含み得る。
様々な実施形態では、外部システム130及び/又はセキュアPLD顧客510のHSM526は、アプリケーション公開鍵/秘密鍵ペア、アプリケーション暗号化鍵(AES暗号化鍵など)、及びプログラミングパケット公開鍵/秘密鍵ペアを生成するように構成することができる。外部システム130は、アプリケーション秘密鍵を使用してアプリケーション及び機能構成に署名し、署名されたアプリケーション及び機能構成をアプリケーション暗号化鍵を使用して暗号化するように構成され得る。外部システム130はまた、(例えば、ブロック730で提供されるセキュアロック解除パッケージの暗号化されたプログラミングパケットから抽出される)アプリケーション公開鍵、アプリケーション暗号化鍵、及びプログラミング秘密の組み合わせ/リストにアプリケーション秘密鍵で署名し、(例えば、楕円曲線Diffie-Hellman鍵導出関数を使用して)プログラミング公開鍵及びプログラミングパケット秘密鍵に基づいて暗号化鍵を導出し、導出された暗号化鍵を使用して署名された鍵の組み合わせを暗号化し、暗号化及び署名された鍵の組み合わせをプログラミングパケット公開鍵と組み合わせて(例えば、暗号化及び署名された鍵の組み合わせにプログラミングパケット公開鍵を付加して)プログラミングキーダイジェストを作成することによって、プログラミングキーダイジェストを生成するように構成され得る。外部システム130はまた、(例えば、ブロック740で受信される)ロックされたPLDマニフェストに、下流のセキュアPLDプログラマ530、ユーザデバイスアセンブラ540、及び/又は下流の顧客550への認証された配信のためのパケット秘密鍵で署名するように構成され得る。外部システム130は、暗号化されたアプリケーション及び機能構成をプログラミングキーダイジェストと組み合わせて単一の保護された情報パケットを作成することによって、セキュアPLD410のための保護された構成を生成するように構成され得る。
ブロック760において、論理デバイスは、ロックされたPLDを構成プログラマに提供する。例えば、セキュアPLD製造業者520は、本明細書で記載されるように、ブロック720で生成されたロックされたセキュアPLD410を、セキュアPLDプログラマ530に提供するように構成され得る。
ブロック770において、論理デバイスは、保護された構成に従って、ロックされたPLDをプログラムする。例えば、セキュアPLDプログラマ530の外部デバイス130は、ブロック750で生成され、セキュアPLD顧客510によって提供される保護された構成に従って、ブロック720で生成されたロックされたセキュアPLD410をプログラムするように構成され得る。一実施形態において、セキュアPLDプログラマ530の外部システム130は、ブロック750で生成された保護された構成/パケットをセキュアPLD410に提供するように構成されてもよく、ブロック720でセキュアPLD410に提供されたIPIに従って起動するように構成され得る。そして、セキュアPLD410は、セキュアPLD410の1つ以上のバスを介して、PLDファブリック400及びNVM450の一部を含む、セキュアPLD410の保護された構成及びプログラム要素を検証することができる。より具体的には、セキュアPLD410は、ブロック720においてNVM450に格納されたプログラミング秘密鍵及びブロック750において生成されたパケット公開鍵を使用して、プログラミングキーダイジェスト内の暗号化された鍵を復号化するように構成され得る。セキュアPLD410はまた、復号化されたキーダイジェストをアプリケーション公開鍵で認証し、プログラミングキーダイジェスト内のプログラミングシークレットがブロック720においてNVM450に格納されたプログラミングシークレットと一致することを検証するように構成され得る。両方のチェックに合格した場合、セキュアPLD410は、キーダイジェストからのアプリケーション公開鍵及びアプリケーション暗号化鍵をNVM450に格納することができる。
キーダイジェストからのアプリケーション公開鍵及びアプリケーション暗号化鍵がNVM450に格納されると、セキュアPLD410は、アプリケーション及び機能構成を復号化し、復号化されたアプリケーション及び機能構成を認証することができる。例えば、アプリケーションと機能構成は、ビットストリームがアプリケーション暗号化鍵とアプリケーション公開鍵とを使用して正常に復号化及び認証された場合にのみ、セキュアPLD410にプログラムできる。アプリケーション構成が正常に認証される場合、セキュアPLD410は、当該アプリケーション構成を構成イメージセクタ452又は454のいずれかにプログラム/格納し、適切なイメージに事前認証ビットを設定し、PLDファブリック400からIPIを消去し、及び/又は格納されたアプリケーション構成に従ってPLDファブリック400をプログラムするように構成され得る。機能構成は、NVM450の1つ以上の部分にプログラムすることができる。セキュアPLD410をプログラミングする前に実行されるべき他のセキュリティチェックは、本明細書に記載されるように、ロックされたPLDマニフェストの検証、ロックされたPLDマニフェスト内のトレースIDマッチングのチェック、及び/又は他のセキュリティチェックを含み得る。
ブロック780において、論理デバイスは、ロック及びプログラムされたPLDを含むユーザデバイスを組み立てる。例えば、ユーザデバイスアセンブラ540のピックアンドプレースシステムは、ブロック720で生成され、かつ、ブロック770でプログラムされたロックされたセキュアPLD410を含むユーザデバイス610を組み立てるように構成され得る。
ブロック790において、論理デバイスは、認証可能なマニフェストに基づいて、ロック及びプログラムされたPLDを監査する。例えば、セキュアPLD顧客510は、ブロック720で生成され、かつ、ブロック740で提供される認証可能なロックされたPLDマニフェストに基づいてブロック770でプログラムされる、ロックされたセキュアPLDを監査するように構成され得る。一実施形態では、セキュアPLD顧客510又は下流顧客550の外部システム130は、ブロック740においてセキュアPLD製造業者520又はセキュアPLD顧客510により提供されたロックされたPLDマニフェストを認証し、そのトレースID及び/又はデバイス公開鍵についてセキュアPLD410を照会し、例えば、デバイス公開鍵を使用して乱数を暗号化すること、その結果得られる暗号化されたパッケージをデバイスキーチャレンジにおいてセキュアPLD410に提供すること、および、返された結果を元の乱数と比較する(例えば、マッチング結果が、動作中のセキュアPLD410の監査が成功したことを示す)ことなどによって、ロックされたPLDマニフェスト内のトレースID及びデバイス公開鍵と比較し、デバイス公開鍵を使用してセキュアPLD410にチャレンジするように構成され得る。そのような監査は、いくつかの実施形態において、ブロック770内のIPI構成を消去する前に行われ得る。監査の成功は、ロックされたセキュアPLD410が機能していることを示す。
このように、本明細書に記載のシステム及び方法を採用することにより、本開示の実施形態は、セキュアPLDの顧客の注文全体にわたってセキュアPLDの柔軟かつセキュアなキープロビジョニング及び構成を提供することができる。ある顧客の保護された構成は、別の顧客にパーソナライズされたセキュアPLD又はブランクのセキュアPLDをプログラムするために使用できない。保護された構成は、システム内又は外部デバイスを使用してプログラムできる。アプリケーションのキーは、セキュアPLD内でのみ復号化できる。顧客は、デバイス及び/またはアプリケーションのなりすましや過剰な構築を防ぐために、キーマニフェストを使用できる。様々な実施形態において、プログラミングキー及びマニフェストは、セキュアPLD410のセキュリティエンジン420によって管理される。
本開示によって提供される様々な実施形態は、適用可能な場合、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアの組み合わせを使用して実装することができる。また、本明細書に記載の様々なハードウェアコンポーネント及び/又はソフトウェアコンポーネントは、適用可能な場合、本開示の趣旨から逸脱することなく、ソフトウェア、ハードウェア、及び/又は両方を含む複合コンポーネントに組み合わせることができる。本明細書に記載の様々なハードウェアコンポーネント及び/又はソフトウェアコンポーネントは、適用可能な場合、本開示の趣旨から逸脱することなく、ソフトウェア、ハードウェア、又はその両方を含むサブコンポーネントに分離することができる。さらに、適用可能な場合、ソフトウェアコンポーネントをハードウェアコンポーネントとして実装することができ、その逆も可能であると考えられる。
非一時的な命令、プログラムコード、及び/又はデータなどの本開示によるソフトウェアは、1つ以上の非一時的な機械可読媒体に格納することができる。本明細書で識別されるソフトウェアは、1つ以上の汎用又は特定目的のコンピュータ及び/又はコンピュータシステム、ネットワーク化された及び/又は他の方法を使用して実装できることも企図される。適用可能な場合、本明細書に記載の様々なステップの順序を変更し、複合ステップに組み合わせ、及び/又はサブステップに分離して、本明細書に記載の特徴を提供することができる。
上記の実施形態は、本発明を例示するが、限定するものではない。本発明の原理に従って、多数の修正及び変形が可能であることも理解されたい。したがって、本発明の範囲は、以下の特許請求の範囲によってのみ定義される。

Claims (20)

  1. セキュアプログラマブルロジックデバイス(PLD:Programmable Logic Device)プロビジョニングシステムであって、
    プロセッサとメモリとを有し、セキュアPLDに前記セキュアPLDの構成入出力(I/O:Input/Output)を介して結合されるように構成された外部システムを備え、
    前記メモリは、
    セキュアPLD顧客からの要求に少なくとも部分的に基づいて、前記セキュアPLDを含むロックされたPLDを生成するステップであって、前記セキュアPLD顧客からの前記要求が、顧客公開鍵を含むステップと、
    前記ロックされたセキュアPLDのためのセキュアロック解除パッケージを提供するステップであって、当該ステップは暗号化されたプログラミングパケットを前記セキュアPLD顧客に提供することを含み、前記暗号化されたプログラミングパケットは、前記顧客公開鍵を使用して暗号化され、プログラミング秘密鍵を使用して署名されたプログラミングシークレットを含み、前記暗号化されたプログラミングパケットは、前記セキュアPLDの暗号化および署名された構成を生成するために前記セキュアPLD顧客が使用するように構成されるステップと、
    を含むコンピュータ実装方法を、前記外部システムの前記プロセッサによって実行されたときに、前記外部システムに実行させるように構成された機械可読命令を含む、
    システム。
  2. 前記ロックされたPLDを生成する前記ステップが、
    前記要求内の前記顧客公開鍵を前記外部システムに結合された強化セキュリティモジュール(HSM:Hardened Security Module)に提供し、前記HSMによって生成された顧客プログラミングキートークンを受信することによって、前記セキュアPLD顧客又は前記セキュアPLD顧客からの前記要求に対応する顧客プログラミングキートークンを生成するステップを含む、
    請求項1に記載のシステム。
  3. 前記ロックされたPLDを生成する前記ステップが、
    前記外部システムに結合された強化セキュリティモジュール(HSM:Hardened Security Module)に、前記セキュアPLD顧客からの前記要求内の前記顧客公開鍵を提供するステップであって、前記HSMは、前記顧客公開鍵を受信することに応じて、顧客プログラミングキートークン、プログラミング公開鍵、前記プログラミング秘密鍵、及び前記プログラミングシークレットを生成するように構成されるステップと、
    前記プログラミング秘密鍵、前記プログラミングシークレット、及び前記暗号化されたプログラミングパケットを前記HSMから受信するステップと
    前記プログラミング秘密鍵と前記プログラミングシークレットとを前記セキュアPLDに提供するステップと、を含む、
    請求項1に記載のシステム。
  4. 前記ロックされたセキュアPLDの前記セキュアロック解除パッケージを提供するステップが、
    前記外部システムに結合された強化セキュリティモジュール(HSM:Hardened Security Module)によって生成された前記暗号化されたプログラミングパケットを、前記セキュアPLD顧客に提供するステップであって、前記暗号化されたプログラミングパケットは、前記顧客公開鍵を使用して前記HSMによって暗号化され、前記HSMによって生成された前記プログラミング秘密鍵を使用して前記HSMによって署名される、前記HSMによって生成された前記プログラミングシークレットを含むステップと、
    前記HSMによって生成されたプログラミング公開鍵をセキュアPLD顧客に提供するステップと、を含む、
    請求項1に記載のシステム。
  5. 前記コンピュータ実装方法が、
    トレースIDと、前記ロックされたセキュアPLDに関連付けられた対応するデバイス公開鍵とを含む認証可能なロックされたPLDマニフェストを提供するステップであって、前記認証可能なロックされたPLDマニフェストは、前記外部システムに結合された強化セキュリティモジュール(HSM:Hardened Security Module)によって生成された前記プログラミング秘密鍵を使用して署名されるステップ、をさらに含む、
    請求項1に記載のシステム。
  6. 前記ロックされたPLDを生成する前記ステップが、
    前記外部システムに結合された強化セキュリティモジュール(HSM:Harden Security Module)に顧客プログラミングキートークンを提供するステップと、
    前記HSMから前記プログラミング秘密鍵と前記プログラミングシークレットとを受信し、前記セキュアPLDからデバイス公開鍵を受信するステップと、
    前記セキュアPLDに初期プログラミングイメージ(IPI:Initial Programming Image)構成を提供するステップと、
    前記IPI構成に従って、前記セキュアPLDのPLDファブリックをプログラムするステップと、を含む、
    請求項1に記載のシステム。
  7. 前記コンピュータ実装方法が、
    前記ロックされたセキュアPLDの保護された構成を生成又は受信するステップと、
    前記保護された構成に従って、前記ロックされたセキュアPLDをプログラムするステップと、をさらに含み、
    前記保護された構成は、各々が、前記セキュアPLD顧客に関連付けられたアプリケーション秘密鍵によって署名され、前記セキュアPLD顧客に関連付けられたアプリケーション暗号化鍵によって暗号化されたアプリケーション構成及び機能構成と、アプリケーション公開鍵、前記アプリケーション暗号化鍵、及び前記外部システムに結合された強化セキュリティモジュール(HSM)によって生成された前記プログラミングシークレットの暗号化及び署名された組み合わせを含むプログラミングキーダイジェストと、を含む、
    請求項1に記載のシステム。
  8. 前記セキュアPLDのPLDファブリックに配置される複数のプログラマブル論理ブロック(PLB:Programmable Logic Block)と、前記セキュアPLDの不揮発性メモリ(NVM:Non-Volatile Memory)に格納された、及び/又は前記構成入出力(I/O:Input/Output)を介して構成エンジンに結合された構成イメージに従って前記PLDファブリックをプログラムするように構成された前記構成エンジンと、前記PLDファブリック及び/又は前記構成エンジンに複数のセキュリティ機能を提供するように構成されたセキュリティエンジンと、を含む前記セキュアPLDをさらに備え、
    前記セキュアPLDが、
    前記NVMに格納され、前記PLDファブリックにプログラムされた初期プログラミングイメージ(IPI:Initial Programming Image)構成に従って起動するステップと、
    前記構成I/Oを介して保護された構成を受信するステップであって、前記保護された構成は、各々が、前記セキュアPLDのセキュアPLD顧客に関連付けられたアプリケーション秘密鍵によって署名され、前記セキュアPLD顧客に関連付けられたアプリケーション暗号化鍵によって暗号化されたアプリケーション構成及び機能構成と、アプリケーション公開鍵、前記アプリケーション暗号化鍵、及び前記外部システムに結合された強化セキュリティモジュール(HSM:Hardened Security Module)によって生成された前記プログラミングシークレットの暗号化及び署名された組み合わせを含むプログラミングキーダイジェストと、を含むステップと、
    前記NVMに格納されている前記プログラミング秘密鍵と復号化されたアプリケーション公開鍵とを使用して前記プログラミングキーダイジェストを復号化及び認証するステップと、
    前記プログラミングキーダイジェストからの前記プログラミングシークレットが前記NVMに格納されているプログラミングシークレットと一致するかどうかを確認するステップと、
    前記プログラミングキーダイジェストから前記アプリケーション暗号化鍵と前記アプリケーション公開鍵とを使用して前記アプリケーション構成及び前記機能構成を復号化及び認証するステップと、
    前記PLDファブリックからの前記IPI構成を消去するステップと、
    前記復号化及び認証されたアプリケーション構成に従って前記PLDファブリックをプログラミングし、前記復号化及び認証された機能構成に従って前記NVMの1つ以上の部分をプログラミングするステップと、
    を含むセキュアPLD実装方法を実行するように構成されている、
    請求項1に記載のシステム。
  9. セキュアプログラマブルロジックデバイス(PLD:Programmable Logic Device)プロビジョニングシステムであって、
    セキュアPLDを備え、
    前記セキュアPLDは、前記セキュアPLDのPLDファブリックに配置された複数のプログラマブル論理ブロック(PLB:Programmable Logic Block)と、前記セキュアPLDの不揮発性メモリ(NVM:Non-Volatile Memory)に格納された、及び/又は前記セキュアPLDの構成入出力(I/O:Input/Output)を介して構成エンジンに結合された構成イメージに従って前記PLDファブリックをプログラムするように構成された前記構成エンジンと、前記PLDファブリック及び/又は前記構成エンジンに複数のセキュリティ機能を提供するように構成されたセキュリティエンジンと、を含み、
    前記セキュアPLDが、
    前記NVMに格納され、前記PLDファブリックにプログラムされた初期プログラミングイメージ(IPI:Initial Programming Image)構成に従って起動するステップと、
    前記構成I/Oを介して保護された構成を受信するステップであって、前記保護された構成は、各々が、前記セキュアPLDのセキュアPLD顧客に関連付けられたアプリケーション秘密鍵によって署名され、前記セキュアPLD顧客に関連付けられたアプリケーション暗号化鍵によって暗号化されたアプリケーション構成及び機能構成と、アプリケーション公開鍵、前記アプリケーション暗号化鍵、及び強化セキュリティモジュール(HSM:Hardened Security Module)によって生成されたプログラミングシークレットの暗号化及び署名された組み合わせを含むプログラミングキーダイジェストとを含むステップと、
    前記NVMに格納されているプログラミング秘密鍵と復号化されたアプリケーション公開鍵とを使用して前記プログラミングキーダイジェストを復号化及び認証するステップと、
    前記プログラミングキーダイジェストから前記アプリケーション暗号化鍵と前記アプリケーション公開鍵とを使用して前記アプリケーション構成及び前記機能構成を復号化及び認証するステップと、
    前記復号化及び認証されたアプリケーション構成に従って前記PLDファブリックをプログラミングし、前記復号化及び認証された機能構成に従って前記NVMの1つ以上の部分をプログラミングするステップと、
    を含むセキュアPLD実装方法を実行するように構成されている、
    システム。
  10. プロセッサとメモリとを有し、前記構成入出力(I/O:Input/Output)を介して前記セキュアPLDに結合されるように構成された外部システムを更に備え、
    前記メモリは、
    前記セキュアPLDに関連付けられたプログラミング公開鍵を使用して、前記セキュアPLD及び対応するデバイス公開鍵を識別する、認証可能なロックされたPLDマニフェストを認証するステップと、
    前記セキュアPLDの前記デバイス公開鍵を照会し、前記照会に対する応答を認証済みのロックされたPLDマニフェスト内の対応するデバイス公開鍵と比較するステップと、
    前記デバイス公開鍵に従って暗号化された乱数を前記セキュアPLDに提供し、返されたチャレンジ応答を前記乱数と比較することによって、前記セキュアPLDにチャレンジするステップと、
    を含むコンピュータ実装方法を、前記外部システムの前記プロセッサによって実行されたときに、前記外部システムに実行させるように構成された機械可読命令を含む、
    請求項9に記載のシステム。
  11. セキュアPLD顧客からの要求に少なくとも部分的に基づいて、セキュアPLDを含むロックされたPLDを生成するステップであって、前記セキュアPLD顧客からの前記要求は、顧客公開鍵を含み、かつ、前記セキュアPLDは、外部システム及び/又は機械可読メモリに結合されるように構成された構成入出力(I/O:Input/Output)を含むステップと、
    前記ロックされたセキュアPLDのセキュアロック解除パッケージを提供するステップであって、当該ステップは暗号化されたプログラミングパケットを前記セキュアPLD顧客に提供することを含み、前記暗号化されたプログラミングパケットは、前記顧客公開鍵を使用して暗号化され、プログラミング秘密鍵を使用して署名されたプログラミングシークレットを含み、前記暗号化されたプログラミングパケットは、前記セキュアPLDの暗号化および署名された構成を生成するために前記セキュアPLD顧客が使用するように構成されるステップと、
    を含む方法。
  12. 前記ロックされたPLDを生成する前記ステップが、
    前記要求内の前記顧客公開鍵を前記外部システムに結合された強化セキュリティモジュール(HSM:Hardened Security Module)に提供し、前記HSMによって生成された顧客プログラミングキートークンを受信することによって、前記セキュアPLD顧客又は前記セキュアPLD顧客からの前記要求に対応する前記顧客プログラミングキートークンを生成するステップを含む、
    請求項11に記載の方法。
  13. 前記ロックされたPLDを生成する前記ステップが、
    前記セキュアPLD顧客からの前記要求内の前記顧客公開鍵を前記外部システムに結合された強化セキュリティモジュール(HSM:Hardened Security Module)によって受信するステップであって、前記HSMは、前記顧客公開鍵を受信することに応じて、プログラミング公開鍵、前記プログラミング秘密鍵、及び前記プログラミングシークレットを生成するように構成されるステップと、
    前記暗号化されたプログラミングパケットを前記HSMによって生成するステップと、を含む、
    請求項11に記載の方法。
  14. 前記HSMは、前記顧客公開鍵の受信に応じて顧客プログラミングキートークンを生成するように構成され、
    前記ロックされたPLDを生成する前記ステップは、
    前記セキュアPLDによって生成されたデバイス公開鍵を受信するステップと、
    前記セキュアPLDからの前記デバイス公開鍵、前記プログラミング公開鍵/前記プログラミング秘密鍵ペア、及び前記プログラミングシークレットを、前記顧客プログラミングキートークンによって参照されるデータベースに格納するステップと、を含む、
    請求項13に記載の方法。
  15. 前記セキュアPLDは、前記外部システムからのトレースIDの受信に応じてデバイス公開鍵/秘密鍵ペアを生成するように構成され、
    前記ロックされたPLDを生成する前記ステップは、
    前記デバイス公開鍵/秘密鍵ペアを前記セキュアPLDの不揮発性メモリ(NVM:Non-Volatile Memory)に格納するステップ、を含む、
    請求項13に記載の方法。
  16. 前記ロックされたセキュアPLDの前記セキュアロック解除パッケージを提供する前記ステップが、
    前記外部システムに結合された強化セキュリティモジュール(HSM:Hardened Security Module)によって生成された前記暗号化されたプログラミングパケットを前記セキュアPLD顧客に提供するステップであって、前記暗号化されたプログラミングパケットは、前記顧客公開鍵を使用して前記HSMによって暗号化され、前記HSMによって生成された前記プログラミング秘密鍵を使用して前記HSMによって署名される、前記HSMによって生成された前記プログラミングシークレットを含むステップと、
    前記HSMによって生成されたプログラミング公開鍵を前記セキュアPLD顧客に提供するステップと、
    を含む請求項11に記載の方法。
  17. トレースIDと、前記ロックされたセキュアPLDに関連付けられた対応するデバイス公開鍵と、を含む認証可能なロックされたPLDマニフェストを提供するステップであって、前記認証可能なロックされたPLDマニフェストは、前記外部システムに結合された強化セキュリティモジュール(HSM:Hardened Security Module)によって生成された前記プログラミング秘密鍵を使用して署名されるステップ、をさらに含む、
    請求項11に記載の方法。
  18. 前記ロックされたPLDを生成する前記ステップが、
    前記外部システムに結合された強化セキュリティモジュール(HSM:Hardened Security Module)に顧客プログラミングキートークンを提供するステップと、
    前記HSMから前記プログラミング秘密鍵と前記プログラミングシークレットとを受信し、前記セキュアPLDからデバイス公開鍵を受信するステップと、
    前記セキュアPLDに初期プログラミングイメージ(IPI:Initial Programming Image)構成を提供するステップと、
    前記IPI構成に従って、前記セキュアPLDのPLDファブリックをプログラムするステップと、を含む、
    請求項11に記載の方法。
  19. 前記ロックされたセキュアPLDの保護された構成を生成又は受信するステップと、
    前記保護された構成に従って、前記ロックされたセキュアPLDをプログラムするステップと、をさらに含み、
    前記保護された構成は、各々が、前記セキュアPLD顧客に関連付けられたアプリケーション秘密鍵によって署名され、前記セキュアPLD顧客に関連付けられたアプリケーション暗号化鍵によって暗号化されたアプリケーション構成及び機能構成と、アプリケーション公開鍵、前記アプリケーション暗号化鍵、及び前記外部システムに結合された強化セキュリティモジュール(HSM:Hardened Security Module)によって生成された前記プログラミングシークレットの暗号化及び署名された組み合わせを含むプログラミングキーダイジェストと、を含む、
    請求項11に記載の方法。
  20. 前記構成I/Oを介して保護された構成を、前記セキュアPLDによって受信するステップであって、前記保護された構成は、各々が、前記セキュアPLD顧客に関連付けられたアプリケーション暗号化鍵によって暗号化されたアプリケーション構成及び機能構成と、アプリケーション公開鍵、前記アプリケーション暗号化鍵、及び前記プログラミングシークレットの暗号化及び署名された組み合わせを含むプログラミングキーダイジェストと、を含むステップと、
    前記PLDの不揮発性メモリ(NVM:Non-Volatile Memory)に格納されている前記プログラミング秘密鍵及び復号化されたアプリケーション公開鍵を使用して前記プログラミングキーダイジェストを復号化及び認証するステップと、
    前記プログラミングキーダイジェストから前記アプリケーション暗号化鍵と前記アプリケーション公開鍵とを使用して前記アプリケーション構成及び前記機能構成を復号化及び認証するステップと、
    前記復号化及び認証されたアプリケーション構成に従って前記セキュアPLDのPLDファブリックをプログラミングし、前記復号化及び認証された機能構成に従って前記NVMの1つ以上の部分をプログラムするステップと、をさらに含む、
    請求項11に記載の方法。
JP2021513760A 2018-05-11 2019-05-10 プログラマブルロジックデバイスのためのキープロビジョニングシステム及び方法 Active JP7398438B2 (ja)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201862670487P 2018-05-11 2018-05-11
US62/670,487 2018-05-11
US201862756021P 2018-11-05 2018-11-05
US201862756015P 2018-11-05 2018-11-05
US201862756001P 2018-11-05 2018-11-05
US62/756,001 2018-11-05
US62/756,021 2018-11-05
US62/756,015 2018-11-05
US201962846365P 2019-05-10 2019-05-10
US62/846,365 2019-05-10
PCT/US2019/031875 WO2019217925A1 (en) 2018-05-11 2019-05-10 Key provisioning systems and methods for programmable logic devices

Publications (2)

Publication Number Publication Date
JP2021528793A JP2021528793A (ja) 2021-10-21
JP7398438B2 true JP7398438B2 (ja) 2023-12-14

Family

ID=68466828

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021513760A Active JP7398438B2 (ja) 2018-05-11 2019-05-10 プログラマブルロジックデバイスのためのキープロビジョニングシステム及び方法

Country Status (3)

Country Link
US (4) US20210081536A1 (ja)
JP (1) JP7398438B2 (ja)
WO (4) WO2019217931A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10223317B2 (en) * 2016-09-28 2019-03-05 Amazon Technologies, Inc. Configurable logic platform
WO2019217931A1 (en) 2018-05-11 2019-11-14 Lattice Semiconductor Corporation Asset management systems and methods for programmable logic devices
US11138132B2 (en) * 2018-06-20 2021-10-05 Intel Corporation Technologies for secure I/O with accelerator devices
WO2020041473A1 (en) * 2018-08-21 2020-02-27 The Regents Of The University Of Michigan Computer system with moving target defenses against vulnerability attacks
EP3617928B1 (de) * 2018-08-28 2021-01-27 Siemens Aktiengesellschaft Verfahren zum speichern von schlüsseldaten in einem elektronischen bauteil
US11470062B2 (en) * 2019-03-22 2022-10-11 Raytheon Technologies Corporation Secure reprogramming of embedded processing system
US11405217B2 (en) * 2019-07-02 2022-08-02 Schneider Electric USA, Inc. Ensuring data consistency between a modular device and an external system
US11575672B2 (en) * 2019-12-20 2023-02-07 Intel Corporation Secure accelerator device pairing for trusted accelerator-to-accelerator communication
US11443074B2 (en) * 2020-04-09 2022-09-13 Hewlett Packard Enterprise Development Lp Verification of programmable logic devices
US20220035956A1 (en) * 2020-07-30 2022-02-03 Hewlett Packard Enterprise Development Lp Password-based access control for programmable logic devices
CN116830110A (zh) * 2020-12-08 2023-09-29 美国莱迪思半导体公司 多芯片安全可编程系统和方法
US11870646B2 (en) * 2021-01-12 2024-01-09 Oracle International Corporation Fabric availability and synchronization
US11803681B1 (en) * 2021-03-22 2023-10-31 Xilinx, Inc. Wafer-scale large programmable device
US20220004398A1 (en) * 2021-09-22 2022-01-06 Intel Corporation Integrated circuit package reconfiguration mechanism
US20230198775A1 (en) * 2021-12-17 2023-06-22 Micron Technology, Inc. Memory device with secure boot updates and self-recovery
US20230254138A1 (en) * 2022-02-07 2023-08-10 R3 Ltd. SECURE CONFIGURABLE LOGIC DEVICE (sCLD)
EP4379590A1 (en) * 2022-12-02 2024-06-05 Lattice Semiconductor Corporation Cryptographic hardware sharing systems and methods

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015507234A (ja) 2011-12-02 2015-03-05 エンパイア テクノロジー ディベロップメント エルエルシー サービスとしての集積回路

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5425036A (en) 1992-09-18 1995-06-13 Quickturn Design Systems, Inc. Method and apparatus for debugging reconfigurable emulation systems
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US5838901A (en) 1996-08-05 1998-11-17 Xilinx, Inc. Overridable data protection mechanism for PLDs
US6230267B1 (en) * 1997-05-15 2001-05-08 Mondex International Limited IC card transportation key set
US6357037B1 (en) 1999-01-14 2002-03-12 Xilinx, Inc. Methods to securely configure an FPGA to accept selected macros
US6654889B1 (en) * 1999-02-19 2003-11-25 Xilinx, Inc. Method and apparatus for protecting proprietary configuration data for programmable logic devices
GB9930145D0 (en) 1999-12-22 2000-02-09 Kean Thomas A Method and apparatus for secure configuration of a field programmable gate array
US20070288765A1 (en) * 1999-12-22 2007-12-13 Kean Thomas A Method and Apparatus for Secure Configuration of a Field Programmable Gate Array
EP1124330A3 (en) 2000-02-09 2001-09-19 Algotronix Ltd. Method of using a mask programmed secret key to securely configure a field programmable gate array
US6904527B1 (en) 2000-03-14 2005-06-07 Xilinx, Inc. Intellectual property protection in a programmable logic device
ATE363098T1 (de) 2001-09-03 2007-06-15 Pact Xpp Technologies Ag Verfahren zum debuggen rekonfigurierbarer architekturen
US6996713B1 (en) * 2002-03-29 2006-02-07 Xilinx, Inc. Method and apparatus for protecting proprietary decryption keys for programmable logic devices
US7162644B1 (en) * 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
US7047352B1 (en) * 2002-08-28 2006-05-16 Xilinx, Inc. Fail-safe method of updating a multiple FPGA configuration data storage system
US7197647B1 (en) 2002-09-30 2007-03-27 Carnegie Mellon University Method of securing programmable logic configuration data
US20050081118A1 (en) 2003-10-10 2005-04-14 International Business Machines Corporation; System and method of generating trouble tickets to document computer failures
US20090077623A1 (en) * 2005-03-16 2009-03-19 Marc Baum Security Network Integrating Security System and Network Devices
US8473619B2 (en) * 2005-03-16 2013-06-25 Icontrol Networks, Inc. Security network integrated with premise security system
US20060080172A1 (en) 2004-10-13 2006-04-13 Softcoin, Inc. Method, system, and software for electronic media driven promotions that include off-line actions
US8621597B1 (en) * 2004-10-22 2013-12-31 Xilinx, Inc. Apparatus and method for automatic self-erasing of programmable logic devices
US7725738B1 (en) 2005-01-25 2010-05-25 Altera Corporation FPGA configuration bitstream protection using multiple keys
US7971072B1 (en) * 2005-03-10 2011-06-28 Xilinx, Inc. Secure exchange of IP cores
US7716497B1 (en) * 2005-06-14 2010-05-11 Xilinx, Inc. Bitstream protection without key storage
CA2510366C (en) 2005-06-14 2013-02-26 Certicom Corp. System and method for remote device registration
US7624432B2 (en) 2005-06-28 2009-11-24 International Business Machines Corporation Security and authorization in management agents
US7590904B2 (en) * 2006-02-01 2009-09-15 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Systems and methods for detecting a failure event in a field programmable gate array
US7792302B2 (en) 2006-02-01 2010-09-07 Dolby Laboratories Licensing Corporation Securely coupling an FPGA to a security IC
US8769127B2 (en) 2006-02-10 2014-07-01 Northrop Grumman Systems Corporation Cross-domain solution (CDS) collaborate-access-browse (CAB) and assured file transfer (AFT)
US7339400B1 (en) * 2006-06-09 2008-03-04 Xilinx, Inc. Interface port for electrically programmed fuses in a programmable logic device
US7675313B1 (en) * 2006-08-03 2010-03-09 Lattice Semiconductor Corporation Methods and systems for storing a security key using programmable fuses
US7759968B1 (en) 2006-09-27 2010-07-20 Xilinx, Inc. Method of and system for verifying configuration data
US8879727B2 (en) 2007-08-31 2014-11-04 Ip Reservoir, Llc Method and apparatus for hardware-accelerated encryption/decryption
US8171527B2 (en) * 2007-06-26 2012-05-01 General Instrument Corporation Method and apparatus for securing unlock password generation and distribution
US8065517B2 (en) 2007-11-01 2011-11-22 Infineon Technologies Ag Method and system for transferring information to a device
US8666077B2 (en) 2008-05-07 2014-03-04 Alcatel Lucent Traffic encryption key generation in a wireless communication network
US8752165B2 (en) 2008-05-29 2014-06-10 Apple Inc. Provisioning secrets in an unsecured environment
US7877461B1 (en) 2008-06-30 2011-01-25 Google Inc. System and method for adding dynamic information to digitally signed mobile applications
EP2452298A4 (en) 2009-07-10 2014-08-27 Certicom Corp SYSTEM AND METHOD FOR IMPLEMENTING DEVICE SELECTION
US8677506B2 (en) 2009-12-03 2014-03-18 Osocad Remote Limited Liability Company System and method for loading application classes
WO2011068996A1 (en) 2009-12-04 2011-06-09 Cryptography Research, Inc. Verifiable, leak-resistant encryption and decryption
US8516268B2 (en) 2010-08-23 2013-08-20 Raytheon Company Secure field-programmable gate array (FPGA) architecture
US8843764B2 (en) 2011-07-15 2014-09-23 Cavium, Inc. Secure software and hardware association technique
US9054874B2 (en) 2011-12-01 2015-06-09 Htc Corporation System and method for data authentication among processors
US9424019B2 (en) 2012-06-20 2016-08-23 Microsoft Technology Licensing, Llc Updating hardware libraries for use by applications on a computer system with an FPGA coprocessor
US8898480B2 (en) 2012-06-20 2014-11-25 Microsoft Corporation Managing use of a field programmable gate array with reprogammable cryptographic operations
US9230091B2 (en) 2012-06-20 2016-01-05 Microsoft Technology Licensing, Llc Managing use of a field programmable gate array with isolated components
US9305185B1 (en) 2012-08-07 2016-04-05 Altera Corporation Method and apparatus for securing programming data of a programmable device
US20140043059A1 (en) * 2012-08-10 2014-02-13 Microsemi Soc Corp. Secure digest for pld configuration data
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
US8925098B2 (en) * 2012-11-15 2014-12-30 Elwha Llc Data security and access tracking in memory
EP2736214B1 (en) 2012-11-27 2015-10-14 Nxp B.V. Controlling application access to mobile device functions
US9230112B1 (en) * 2013-02-23 2016-01-05 Xilinx, Inc. Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis
US9600291B1 (en) * 2013-03-14 2017-03-21 Altera Corporation Secure boot using a field programmable gate array (FPGA)
US9165143B1 (en) * 2013-03-15 2015-10-20 Xilinx, Inc. Image file generation and loading
US20140344581A1 (en) * 2013-05-16 2014-11-20 Cisco Technology, Inc. Secure Upgrades for Field Programmable Devices
US9536094B2 (en) * 2014-01-13 2017-01-03 Raytheon Company Mediated secure boot for single or multicore processors
WO2015165000A1 (en) 2014-04-28 2015-11-05 Intel Corporation Securely booting a computing device
US9584509B2 (en) 2014-05-07 2017-02-28 Cryptography Research, Inc. Auditing and permission provisioning mechanisms in a distributed secure asset-management infrastructure
US9772856B2 (en) * 2014-07-10 2017-09-26 Lattice Semiconductor Corporation System-level dual-boot capability in systems having one or more devices without native dual-boot capability
US9729583B1 (en) 2016-06-10 2017-08-08 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
WO2016073411A2 (en) * 2014-11-03 2016-05-12 Rubicon Labs, Inc. System and method for a renewable secure boot
US9513984B2 (en) * 2015-01-26 2016-12-06 Hewlett Packard Enterprise Development Lp Hardware signal logging in embedded block random access memory
US10296392B2 (en) 2015-04-17 2019-05-21 Microsoft Technology Licensing, Llc Implementing a multi-component service using plural hardware acceleration components
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
US9847980B2 (en) 2015-06-17 2017-12-19 Microsoft Technology Licensing, Llc Protecting communications with hardware accelerators for increased workflow security
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
US9819542B2 (en) 2015-06-26 2017-11-14 Microsoft Technology Licensing, Llc Configuring acceleration components over a network
CN108476415B (zh) 2016-02-03 2022-03-22 康普技术有限责任公司 用于通信系统单元的基于优先级的重新配置的系统和方法
US20190305927A1 (en) 2016-03-18 2019-10-03 University Of Florida Research Foundation Incorporated Bitstream security based on node locking
US10528765B2 (en) * 2016-09-16 2020-01-07 Intel Corporation Technologies for secure boot provisioning and management of field-programmable gate array images
US11023258B2 (en) * 2016-12-30 2021-06-01 Intel Corporation Self-morphing server platforms
US10489609B1 (en) * 2017-06-06 2019-11-26 Xilinx, Inc. Restricting programmable integrated circuits to specific applications
US10922150B2 (en) * 2017-11-03 2021-02-16 Dell Products L.P. Deep hardware access and policy engine
US10521600B2 (en) * 2017-12-13 2019-12-31 University Of Florida Research Foundation, Inc. Reconfigurable system-on-chip security architecture
WO2019217931A1 (en) 2018-05-11 2019-11-14 Lattice Semiconductor Corporation Asset management systems and methods for programmable logic devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015507234A (ja) 2011-12-02 2015-03-05 エンパイア テクノロジー ディベロップメント エルエルシー サービスとしての集積回路

Also Published As

Publication number Publication date
US20210081578A1 (en) 2021-03-18
US20210083675A1 (en) 2021-03-18
WO2019217929A1 (en) 2019-11-14
US11914716B2 (en) 2024-02-27
WO2019217931A1 (en) 2019-11-14
US11971992B2 (en) 2024-04-30
WO2019217925A1 (en) 2019-11-14
JP2021528793A (ja) 2021-10-21
US20210081577A1 (en) 2021-03-18
US20210081536A1 (en) 2021-03-18
WO2019217934A1 (en) 2019-11-14

Similar Documents

Publication Publication Date Title
JP7398438B2 (ja) プログラマブルロジックデバイスのためのキープロビジョニングシステム及び方法
US10685143B2 (en) Secure boot sequence for selectively disabling configurable communication paths of a multiprocessor fabric
US8022724B1 (en) Method and integrated circuit for secure reconfiguration of programmable logic
US8220060B1 (en) Method and system for maintaining the security of design information
US7768293B1 (en) Authentication for information provided to an integrated circuit
EP3791306B1 (en) Asset management systems and methods for programmable logic devices
EP3214613B1 (en) Protecting the content of different ip cores in a system on chip using pufs
US20240232439A1 (en) Tamper detection systems and methods for programmable logic devices
US20230315913A1 (en) Multi-chip secure and programmable systems and methods
US20240187001A1 (en) Cryptographic hardware sharing systems and methods

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210902

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220419

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230809

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231204

R150 Certificate of patent or registration of utility model

Ref document number: 7398438

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150