JP4191170B2 - プログラム可能なゲートアレイのコピー防止方法及びシステム - Google Patents

プログラム可能なゲートアレイのコピー防止方法及びシステム Download PDF

Info

Publication number
JP4191170B2
JP4191170B2 JP2005149178A JP2005149178A JP4191170B2 JP 4191170 B2 JP4191170 B2 JP 4191170B2 JP 2005149178 A JP2005149178 A JP 2005149178A JP 2005149178 A JP2005149178 A JP 2005149178A JP 4191170 B2 JP4191170 B2 JP 4191170B2
Authority
JP
Japan
Prior art keywords
fpga
circuit
activation key
code string
key code
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.)
Expired - Fee Related
Application number
JP2005149178A
Other languages
English (en)
Other versions
JP2006059318A (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.)
NEC Electronics Corp
Mikasa Shoji Co Ltd
Original Assignee
NEC Electronics Corp
Mikasa Shoji Co Ltd
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 NEC Electronics Corp, Mikasa Shoji Co Ltd filed Critical NEC Electronics Corp
Priority to JP2005149178A priority Critical patent/JP4191170B2/ja
Priority to US11/186,967 priority patent/US7613931B2/en
Publication of JP2006059318A publication Critical patent/JP2006059318A/ja
Application granted granted Critical
Publication of JP4191170B2 publication Critical patent/JP4191170B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/4401Bootstrapping
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Description

本発明は、プログラム可能なゲートアレイ(FPGA)を搭載したシステムに係り、FPGAプログラムの不正コピーを防止するプログラム可能なゲートアレイのコピー防止方法及びシステムに関する。
短期間にシステムを開発し、量産する方法として、ユーザサイドにおいてプログラムすることで内部回路をユーザ回路に変更可能なゲートアレイ(FPGA)の採用が最適であり、昨今急速に市場が伸びている。しかし、市場が広がるにつれて、不正にコピーされたシステムも見受けられようになってきた。プログラム可能なゲートアレイ(FPGA)はその供給ベンダから容易に購入できるし、FPGAプログラムを記憶したROMもROMライタを用いて容易にコピーできることがその背景にある。
これらのプログラム可能なゲートアレイ(FPGA)のコピー防止技術として、下記の特許文献がある。これらの先行技術においては、プログラム等を暗号化して送信し、暗号化されたプログラムを復号化することで不正なコピーを防止している。
プログラム可能なゲートアレイ(FPGA)を搭載したシステムにおいては、少なくとも、プログラム可能なゲートアレイ(FPGA)と、そのFPGAプログラムを記憶したROMとが搭載されている。図13、図14に従来例のコピー防止のブロック構成を示す。
図13に示すシステムは、プログラム可能なゲートアレイ(FPGA)2と、FPGAプログラムを記憶したROM3と、コピー防止の核になる構成要素である工場でプログラムされたロジック素子(CPLD)5とで構成されている。ロジック素子(CPLD)5はプログラム可能なゲートアレイ(FPGA)にのみ接続してあり、そのFPGAプログラムを記憶したROM3とは接続がないのが配置上の特徴である。
ロジック素子(CPLD)5から暗号化された初期状態データをFPGA2に送信し、FPGA2が暗号化された初期状態データを解読、比較判定し、動作を制限することでシステムの不正コピーを防止している。
また図14に示すように、プログラム可能なゲートアレイ(FPGA)2と、FPGAプログラムを記憶したROM3とで構成されたシステムにおいて、FPGAプログラムを記憶したROMプログラムを暗号化してFPGAに送信し、FPGAにより暗号化されたプログラムを復号化することで不正なコピーを防止する先行技術が開示されている。
特開2003−84853号公報 特開2001−325153号公報
しかし、これらの従来技術においては、ROMプログラムや初期状態データを暗号化してFPGAに送信し、FPGAで解読することで不正コピーを防止している。つまり、FPGAにおいて解読処理及びその判定処理が行われているため、同じ復号機能を有するFPGAを購入することで不正コピーが行われる虞がある。
そこで本発明の目的は、プログラム可能なゲートアレイ(FPGA)を搭載したシステムに関し、不正コピーを許さないコピー防止方法及びシステムを提供することにある。
本願発明のプログラム可能なゲートアレイ(FPGA)のコピー防止方法は、前記FPGAと、ユーザ回路データおよび第1の起動キー符号列を記憶したROMと、予め第1の起動キー情報が組み込まれたユーザ専用ゲートアレイ(GA)とを備え、前記GAは前記第1の起動キー符号列から導き出された情報と前記第1の起動キー情報とが一致した場合には、前記ユーザ回路データを前記FPGAにブートさせることを特徴とする。
本願発明のプログラム可能なゲートアレイ(FPGA)のコピー防止方法においては、前記ROMは前記第1の起動キー符号列と第1の認証回路データとからなる起動制御プログラムデータを記憶し、前記GAは、前記起動制御プログラムデータを前記FPGAにブートし、前記FPGAから送られた前記第1の起動キー符号列を解読し、前記第1の起動キー符号列の解読結果と前記第1の起動キー情報とを比較判定し、その判定結果が正しい場合には前記ユーザ回路データを前記FPGAにブートし、前記判定結果が正しくない場合には前記FPGAをリセットすることを特徴とする。
本願発明のプログラム可能なゲートアレイ(FPGA)のコピー防止方法においては、前記ROMは第2の起動キー符号列と第2の認証回路データとをさらに記憶し、前記GAは、前記第2の起動キー符号列と前記第2の認証回路データとを前記FPGAにブートし、ブート完了後に前記第2の認証回路データによってFPGA内に実現した第2の認証回路が送り返した前記第2の起動キー符号列を解読し、前記第2の起動キー符号列の解読結果と前記GAに組み込まれた第2の起動キー情報とを比較判定し、その判定結果が正しい場合には、前記ユーザ回路データを前記FPGAにブートし、前記判定結果が正しくない場合には前記FPGAをリセットすることを特徴とする。
本願発明のプログラム可能なゲートアレイ(FPGA)のコピー防止方法においては、前記FPGAから前記GAに前記第2の起動キー符号列をさらに定期的な周期毎に、または不定期的な周期毎に送信し、前記GAは送られた前記第2の起動キー符号列を解読し、前記第2の起動キー符号列の解読結果と前記第2の起動キー情報とを比較判定し、その判定結果が正しくない場合には前記FPGAをリセットすることを特徴とする。
本願発明のプログラム可能なゲートアレイのコピー防止方法においては、前記GAは、さらにダミー通信回路を備え、前記FPGAに生成されたダミー通信回路との間で通信することを特徴とする。
本願発明のプログラム可能なゲートアレイのコピー防止方法においては、前記GAはさらにブートコントローラとして機能することを特徴とする。
本願発明のプログラム可能なゲートアレイのコピー防止方法においては、前記GAは複数のプログラム可能なゲートアレイ(FPGA)に対してそれぞれのユーザ回路データのブート、または前記ユーザ回路の動作を制御することを特徴とする。
本願発明のシステムは、プログラム可能なゲートアレイ(FPGA)を備え、前記FPGAと、ユーザ回路データおよび第1の起動キー符号列を記憶したROMと、予め第1の起動キー情報が組み込まれたユーザ専用ゲートアレイ(GA)とを備え、前記GAは前記第1の起動キー符号列から導き出された情報と前記第1の起動キー情報とが一致した場合に、前記ユーザ回路データを前記FPGAにブートさせる第1のブート回路を有することを特徴とする。
本願発明のシステムにおいては、前記ROMは前記第1の起動キー符号列と第1の認証回路データとからなる起動制御プログラムデータを記憶し、前記GAは、前記起動制御プログラムデータを前記FPGAにブートする第2のブート回路と、前記FPGAから送られた前記第1の起動キー符号列を解読する解読処理回路と、前記第1の起動キー符号列の解読結果と前記第1の起動キー情報とを比較判定する判定回路とを有し、その判定結果が正しい場合には前記第1のブート回路により前記ユーザ回路データを前記FPGAにブートし、前記判定結果が正しくない場合には前記FPGAをリセットすることを特徴とする。
本願発明のシステムにおいては、前記ROMは、第2の起動キー符号列と第2の認証回路データとをさらに記憶し、前記第1のブート回路は、さらに前記第2の起動キー符号列と前記第2の認証回路データとを前記FPGAにブートし、前記解読処理回路は前記FPGAから送られた前記第2の起動キー符号列を解読し、前記判定回路は前記第2の起動キー符号列の解読結果と前記GAに組み込まれた第2の起動キー情報とを比較判定し、前記GAは、その判定結果が正しい場合には、前記ユーザ回路データを前記FPGAにブートし、前記判定結果が正しくない場合には前記FPGAをリセットすることを特徴とする。
本願発明のシステムにおいては、前記GAは、さらに前記FPGAに生成されたダミー通信回路との間で通信するダミー通信回路を備えたことを特徴とする。
本願発明のシステムにおいては、前記GAはさらにブートコントローラとして機能するブートコントローラを備えることを特徴とする。
本願発明のシステムにおいては、前記FPGAが複数搭載されたことを特徴とする。
本願発明のシステムにおいては、前記ROMをフラッシュメモリに置き換えて実現したことを特徴とする。
本願発明のシステムにおいては、前記ROMをデータ蓄積装置に置き換えて実現したことを特徴とする。データ蓄積装置は、ミニディスク、光ディスクなどのストレージデバイスに代表されるものである。
本願発明のシステムにおいては、前記第1および第2の起動キー符号列が、暗号化された符号列であることを特徴とする。
本発明では、ユーザサイドでプログラム可能なゲートアレイ(FPGA)とユーザ回路データ(FPGAプログラム)を記憶したROMとに接続されたユーザ専用のGAを配置している。あらかじめ半導体ベンダの工場にてプログラム済みのユーザ専用のゲートアレイ(GA)はFPGAプログラムを記憶したROMからFPGAプログラムをブートする機能を制御している。具体的には、FPGAとROMの間を接続しているFPGAのコンフィグレーションに必要な制御線を制御しており、ROMからみてGAはFPGAのように見え、FPGAからGAはROMのように見えることを利用している。
このようにGAをFPGAとROMの中間に配置することにより、GAのコピー防止のために必要な動作はブートの段階から実施できる。また、あらかじめ半導体ベンダの工場にてプログラム済みのゲートアレイ(GA)を保有していないと、FPGAプログラムを記憶したROMからのFPGAプログラムのブートさえも実現できないのである。つまり、プログラム可能なゲートアレイ(FPGA)などのシステムを構成する部品を入手し、FPGAプログラムを記憶したROMチップのコピーができたとしても、FPGAプログラムを記憶したROMからFPGAプログラムをブートすることもできないのである。従って、あらかじめ半導体ベンダの工場にてプログラム済みのユーザ専用のゲートアレイ(GA)を保有しない者にはまったくシステムのコピーはできないという効果がある。
本発明の実施の形態について図面を参照して詳細に説明する。
(第1の実施の形態)
本発明の第1の実施の形態を図1に示す。システム1はフィールドプログラマブルゲートアレイ(FPGA)2と、ゲートアレイ(GA)4と、ROM(ROM)3とで構成される。FPGA2はユーザ側で内部論理をプログラムにより変更できる汎用のゲートアレイである。GA4はあらかじめ半導体ベンダの工場にてプログラムされたユーザ専用のゲートアレイである。ROM3はFPGA4の論理回路をユーザの希望する回路に変更するためのユーザ回路データ(FPGAプログラムとも呼称される)を記憶したROMである。
GA4を、ROM3とFPGA2との間に配置し、GA4は、ユーザ回路データをROM3からFPGA2にブートする機能を制御するものである。
GA4は、ブート制御回路10、解読処理回路13、判定回路14および起動キー情報15から構成されている。ROM3はユーザ回路データ24を記憶したユーザプログラムデータ20と、認証回路データ22とあらかじめ決められた起動キーを非公開暗号鍵にて暗号化した起動キー符号列23とを含んだ起動制御プログラムデータ21と、を備えている。
このシステムに電源が投入されると、GA4はROMから認証回路データ22と暗号化された起動キー符号列23を含む起動制御プログラムデータ21を受けとり、FPGAにブートする。ブートが完了するとFPGA2には認証回路データ22に従って認証回路が生成され、その認証回路から、ROMからの送られた起動キー符号列をGAに送信する。GAの解読処理回路は起動キー符号列を解読し、その解読結果を判定回路に送り、判定回路は解読結果をあらかじめ決められた起動キー情報と比較判定する。
判定回路は正しいと判定すると、ブート制御回路を動作させ、ユーザ回路データをブートし、ブートが完了すると、FPGAにはユーザ回路が生成される。一方、判定回路は解読結果をあらかじめ決められた起動キー情報と比較判定し、正しくないとの判定を得たならば、ブート制御回路はFPGAにリセットをかける。
FPGA2とユーザ回路データ(FPGAプログラムとも呼称される)を記憶したROM3の間に、ユーザ専用GA4を配置し、ユーザ専用GAにより、起動キー符号列の判定を行い、判定結果が正しいことを確認した後にユーザ回路データをブートする。正しい起動キー情報を保有する者にはユーザ回路は正常に動作するが、起動キー情報を有しないまたは正しくない起動キー情報であればユーザ回路は動作しない。つまり、正しい起動キー情報を備えたユーザ専用GAを保有する者のみがシステムの動作を許されるが、そうでない者にはシステムは動作しない。言い換えれば、システムの不正コピーを行うとする者はユーザ専用GAを入手できないため、システムのコピーは成立しない。
本発明の実施例1の構成について図2〜5を参照して詳細に説明する。図2に実施例1の構成図、図3、4、5には本実施例の動作手順を示している。
図2に示すように、実施例1のシステム1はフィールドプログラマブルゲートアレイ(FPGA)2と、ゲートアレイ(GA)4と、ROM(ROM)3とで構成されている。
FPGA2はユーザ側において内部論理回路をプログラムにより変更できる汎用のゲートアレイである。GA4はあらかじめ半導体ベンダの工場にてプログラムされたユーザ専用のゲートアレイである。ROM3はFPGA4の論理回路をユーザの希望する回路に変更するためのユーザ回路データ24(FPGAプログラムとも呼称される)を記憶したROMである。
GA4をROM3とFPGA2との間に配置し、それぞれと接続する。GA4は起動キー符号列の正否を判定する機能と、ユーザ回路データをROM3からFPGA2にブートする機能とを備えているものである。GA4には、ブート制御回路10、解読処理回路13、判定回路14および起動キー情報15から構成されている。ブート制御回路10は第1ブート回路11と、第2ブート回路12とを備えている。
ROM3はユーザ回路データ24を記憶したユーザプログラムデータ20と、認証回路22とあらかじめ決められた起動キーを非公開暗号鍵にて暗号化した起動キー符号列23とを含んだ起動制御プログラムデータ21と、を備えている。
このシステムの電源投入後、GA4の第1ブート回路11が動作し、ROM3の起動制御プログラム21をFPGA2にブートする。ブートが完了すると、図3に示すようにFPGA2には、ROM3の起動キー符号列23と同じ符号列を有する起動キー符号列26と、認証回路25とが生成される。認証回路25は起動キー符号列26をGA4に送信する。
GA4の解読処理回路13は送信された起動キー符号列26を解読して、解読結果を判定回路14に送付する。判定回路14はあらかじめ決められた起動キー情報15と解読結果とを比較判定し、同じでないと判定すれば、第2ブート回路によりFPGAをリセットする。
同じと判定すれば、ブート制御回路の中の第2ブート回路12を動作させる。第2ブート回路12はROM3からユーザ回路データ24をブートする。ブートが完了するとFPGA2内にはユーザ回路データが生成、保持される。このユーザ回路データに従って、FPGAの論理回路は図4に示すようにユーザの希望するユーザ回路27を構成することになる。
今までに説明した動作手順を図5にて示す。S−1にて第1ブート回路11が動作したことにより、認証回路データ22と起動キー符号列23を含んだ起動制御プログラムデータ21はGA4に取り込まれる。S−2にてさらにFPGA2にブートされる。FPGA2へのブートが終了するとFPGA2には認証回路データ22に従って認証回路25が生成され、起動キー符号列23と同じ配列の起動キー符号列26がコピー生成される。生成された起動キー符号列26がS−3においてGA4に送信される。
GA4の解読処理回路13は送信されてきた起動キー符号列26を解読して判定回路14に送信し、判定回路14はS−4にて起動キー情報15と比較判定する。S−5にて判定回路14は第2ブート回路12に判定結果を送り、第2ブート回路12は判定結果が同じでないと判定した場合には、S−6としてFPGA2にリセットをかける。
判定結果が同じと判定すれば、ブート制御回路10の第2ブート回路12は、S−7にてROM3に対しユーザプログラムデータ20のブートを要求し、S−8のタイミングにてFPGA2にブートする。ユーザ回路データ24がブートされるとFPGA2内のRAM(図示せず)にユーザ回路データ27が生成、保持される。FPGAの論理回路はユーザ回路データに従って、ユーザの希望するユーザ回路27を構成し、動作を開始することになる。
本実施例によれば、ユーザ専用のGAはあらかじめ決められた起動キーを非公開暗号鍵にて暗号化した起動キー符号列が正しいかどうかの判定し、正しい場合には、FPGAにユーザ回路データをブートさせることでFPGAにユーザ回路を構成する。起動キー符号列が正しくない場合にはユーザ回路データをブートしない。つまり、正しい起動キー情報を備えたユーザ専用GAを保有する者のみがシステムの動作を許されるが、そうでない者にはシステムは動作しない。
更にコピー防止機能を強化した実施例2を図6、図7にて説明する。本実施例は実施例1の起動キー符号列を第1の起動キー符号列とし第1の判定を行い、さらに第2の起動キー符号列を追加し、第2の判定を行うことでコピー防止機能を強化したものである。実施例1と同じブロックには同一符号としてその説明を省略する。
あらかじめ半導体ベンダの工場にてプログラム済みのユーザ専用のゲートアレイ(GA)4は、ROM3とFPGA2との間に配置され、第1ブート回路11と第2ブート回路12からなるブート制御回路10、解読処理回路13、判定回路14、あらかじめ決められた第1の起動キー情報16および第2の起動キー情報17とを備えている。
FPGAプログラムを記憶したROM(ROM)3は、ユーザプログラムデータ20と起動制御プログラムデータ21により構成されている。ユーザプログラムデータ20は、あらかじめ決められた起動キーを非公開暗号鍵にて暗号化した第2の起動キー符号列33、第2の認証回路データ31、およびユーザ回路データ24を含んでいる。起動制御プログラムデータ21は、第1の認証回路データ30と、あらかじめ決められた起動キーを非公開暗号鍵にて暗号化した第1の起動キー符号列32を含んでいる。
ユーザ側で内部論理をユーザ回路にプログラムにより変更できるFPGA2には、第1の認証回路34、第1の起動キー符号列36、ユーザ回路27、第2の認証回路35、第2の起動キー符号列37がROMからのプログラムデータにより生成、構成される。
動作を図7にて説明する。このシステムの電源投入後、S−1〜S−6の動作手順までは実施例1の認証回路、起動キー符号列、起動キー情報が第1の認証回路、第1の起動キー符号列、第1の起動キー情報に変わるのみで基本的な動作は第1の実施例と同じであるため説明を省略する。
判定回路14における第1の起動キー符号列と第1の起動キー情報との判定結果が同じでない場合はS−6としてFPGAがリセットされる。一方判定結果が同じ場合は、ブート制御回路10の第2ブート回路12は、S−7にてROM3に対しユーザプログラムデータ20のブートを要求しGA4に取り込み、S−8のタイミングにてFPGA2に送信する。
ブートが完了するとFPGA2には、第2の認証回路35と、第2の起動キー符号列37と、ユーザ回路データに従ってユーザ回路27とが生成、構成される。ユーザ回路27は動作を行い、第2の認証回路35は第2の起動キー符号列37をS−9にてGA4に送信する。GA4の解読処理回路13は第2の起動キー符号列37を解読して、解読結果を判定回路14に送付する。判定回路14は、S−10にて第2の起動キー情報17を読み込み、第2の起動キー符号列37の解読結果と比較判定を行う。
S−11にて判定結果を第2のブート回路12に送信する。第2のブート回路12は比較判定の結果が、同じ起動キーであれば何も行わないが、同じ起動キーでないと、FPGAにリセットをかける(S−12)。あらかじめ決められた第2の起動キー符号列37が正しくないと、ユーザ回路が動作していてもGAはFPGAにリセットをかけてユーザ回路27等を消去してしまう。
本実施例によれば、あらかじめ決められた起動キーを非公開暗号鍵にて暗号化した第1及び第2の起動キー符号列が正しいかどうかの判定をユーザ専用のGAで判定する。最初に第1の起動キー符号列を判定し、正しい場合には、FPGAにユーザ回路データをブートすることでFPGAはユーザ回路を生成、構成する。
さらに第2の起動キー符号列を判定し、正しい場合にはユーザ回路をそのまま動作させ続ける。一方、第1の起動キー符号列が正しくない場合にはユーザ回路データをブートしない。第2の起動キー符号列が正しくない場合には構成されているユーザ回路を取り消す。つまり、正しい第1および第2の起動キー符号列を備えたユーザ専用GAを保有する者のみがシステムの動作を許されるが、そうでない者にはシステムは動作しない。この実施例では、第1及び第2の起動キー符号列による判定の2重化することで、不正コピーを行うとする者のシステムの解析を困難にしている。
更に第3の例を説明する。この実施例の構成は実施例2と同じであるが、動作は、FPGA2に生成された第2の認証回路35はGA4に対し、起動キー符号列37を定期的な周期毎または不定期的な周期毎に送信することが特徴である。これは実施例2における一連のS−1〜S−12の動作の後にさらにS−9〜S−12の動作を繰り返し行うものである。
S−9〜S−12での起動キー符号列37をGA4への送信、第2の起動キー情報17との比較判定し、不正データであればFPGAをリセットさせる動作を定期的な周期毎または不定期的な周期毎に行うことである。GA4は実施例2と同じように解読処理の後に判定処理を行い、解読された起動キー符号列を起動キー情報17と比較する。比較した結果、結果が同じでなければFPGAにリセットをかける(S−12)。正しければ何も行わないため、ユーザ回路は動作を続ける。このリセットをかける機会が定期的な周期毎にまたは不定期な周期毎に与えられているのである。
この定期的な周期毎にまたは不定期な周期毎に送信・解読・比較判定することに用いる起動キー情報は2つに限らず実使用上可能なn個まで種類を増やすこともできる。なお、第2の認証回路はユーザ回路から独立しており、第2の認証回路がGAとの送信のための動作を繰り返し行ってもユーザ回路の性能には影響を与えない。
本実施例によれば、あらかじめ決められた起動キーを非公開暗号鍵にて暗号化した第1及び第2の起動キー符号列が正しいかどうかの判定をユーザ専用のGAで判定する。最初に第1の起動キー符号列を判定し、正しい場合には、FPGAにユーザ回路データをブートすることでFPGAはユーザ回路を構成する。さらに第2の起動キー符号列を判定し、正しい場合にはユーザ回路の動作を続行させる。
一方第1の起動キー符号列が正しくない場合にはユーザ回路データをブートしない。第2の起動キー符号列が正しくない場合には構成されているユーザ回路を取り消す。さらにユーザ回路が動作中にも第2の起動キー符号列により判定を繰り返し行い第2の起動キー符号列が正しくない場合には構成されているユーザ回路を取り消す。
実施例3と同様、正しい第1および第2の起動キー符号列を備えたユーザ専用GAを保有する者のみがシステムの動作を許されるが、そうでない者にはシステムは動作しない。第1及び第2の起動キー符号列により判定を2重化し、さらにユーザ回路が動作中にも第2の起動キー符号列により判定を繰り返し行うことで、不正コピーを行うとする者のシステムの解析を困難にしている。
さらに実施例4を図8、図9に示す。この例では実施例2の構成に対し、ROM3のユーザプログラムデータ20、ゲートアレイGA4、FPGA2に、それぞれダミー通信回路が追加して構成される。
図8に構成図、図9のその動作を示す。図9に示すように、この実施例4の動作はS−1からS−12までの基本動作は実施例2と同じであり、さらにS−13としてダミー通信する動作が追加されている。実施例2に比べて、S−8において、FPGAにユーザプログラムデータがブートされたとき、FPGA2にはダミー通信回路42がさらに追加生成される。ユーザプログラムデータによるユーザ回路が動作すると同時に、S−9以降の第2の起動キー符号列の判定動作とともに、FPGAに生成されたダミー通信回路42はGAのダミー通信回路41と通信を行うS−13の動作が追加されたことが特徴である。
これは、FPGA2とGA4の通信をモニタ、解析し、コピー品を製作しようとする者に対してはFPGAとGAと結ぶ電気信号が複雑化し、より解析が困難になることを狙っている。この通信はユーザ回路の機能や認証回路から独立しており、アルゴリズム、信号数、タイミングは任意に決めることができる。
本実施例によれば、あらかじめ決められた起動キーを非公開暗号鍵にて暗号化した第1及び第2の起動キー符号列が正しいかどうかの判定することで不正コピーを防止するとともに、ダミー通信回路を設けて、FPGAとGA間の通信を行うことで複雑化させ、不正コピーを行うとする者のシステムの解析を困難にすることでシステムの不正コピーを防止する。
さらに第5の実施例は実施例3と実施例4を組み合わせたものである。この実施例5は、S−8においてブートが完了した後のFPGAに生成される回路構成は実施例4(図9)と同じある。その動作は実施例4におけるS−1〜S−13の動作の他に、S−13のダミー通信を行うとともに、S−9〜S12の第2の起動キー符号列37を定期的な周期毎または不定期的な周期毎に送信し、判定する動作を並列して行う。
実施例5の動作は、ユーザ回路がFPGAにおいて生成され動作すると、FPGA2のダミー通信回路42はGA4のダミー通信回路41と通信を行う。さらに第2の認証回路35はGA4に対し、第2の起動キー符号列37を定期的な周期毎または不定期的な周期毎に送信する。GA4は定期的な周期毎または不定期的な周期毎に解読処理、判定処理を行い、解読された起動キーがあらかじめ決められた起動キー情報と同じでなければ、ユーザ回路が動作していてもFPGAをリセットする。
本実施例によれば、あらかじめ決められた起動キーを非公開暗号鍵にて暗号化した第1及び第2の起動キー符号列が正しいかどうかの判定することで不正コピーを防止するとともに、第2の起動キー符号列により判定を繰り返し行い、さらにダミー通信回路を設けて、FPGAとGA間の通信を行うことで複雑化させ、不正コピーを行うとする者のシステムの解析を困難にすることでシステムの不正コピーを防止する。
さらに実施例6について説明する。実施例6における構成は実施例1に比べて、GA4にはブートコントローラ機能を備えたブートコントローラ回路18を有していることが異なるのみで、他は実施例1と同じである。図10に実施例1にブートコントローラ回路18は付加した場合の動作を示す。
ブートコントローラ回路18はシステム1において必要な場合は電源の投入順序や切断順序、アドレス制御やプログラム変換等の制御を行うものである。図10においてブートコントローラ回路18の制御のもとで、電源がブートコントローラ18の制御により順次投入され、また電源切断時にもブートコントローラ18の制御により順次電源が切断される。
電源がブートコントローラ18の制御により順次投入されたあと、および電源切断前のROM3、GA4,FPGA2の動作については実施例1におけるS−1〜S−8と同一であり、説明を省略する。実施例6においても実施例1と同様のS−1〜S−8の動作手順によりユーザ回路データの不正コピーが防止できる。
さらに本実施例においてはブートコントローラをGAに内蔵させ、電源投入順序、プログラム変換機能等をユーザ独自仕様とすることにより、不正コピーに対しては電源投入すら困難にすることで、より強固な不正コピーを防止できるシステムを構築することができる。
また、本実施例においては実施例1のGAにブートコントローラ回路18を追加したが、他の実施例2〜5にも適用できることは勿論である。
さらに実施例7について図11を用いて説明する。この実施例では前記ROMを汎用フラッシュメモリ43に置き換えている。この実施例でのゲートアレイ(GA)4の構成は図2に示すゲートアレイ(4)と同じ構成(図11には記載せず)のうえに、さらにデータ変換44を保有している。
この実施例の動作を以下に示す。動作は実施例1と同じであり、実施例1と同じ起動制御プログラム21のGA4への取り込み、FPGA2へのブート、FPGA2の中に認証回路25の生成、起動キー符号列26のGA4への送信、GA4においての比較判定などの一連の動作は同じである。この実施例の特徴はゲートアレイ(GA)4にデータ変換44を付加している点である。汎用フラッシュメモリは汎用であるがゆえに、データバスやアドレスバスは規定されている。
汎用フラッシュメモリ43と実施例1で示すゲートアレイ4のブート制御回路10などが接続できるようにするために、このデータ変換44はGA4と汎用フラッシュメモリ43の間でのアドレスデータとデータを変換するものである。汎用フラッシュメモリには各社からさまざまな製品が公開されていますし、ゲートアレイはカスタムLSI製品であるため、GA4と汎用フラッシュメモリ43との接続が、円滑に行われれば、データ変換44をなくすこともできる。
本実施例は、ROM3を汎用フラッシュメモリに置換した実施例である。汎用フラッシュメモリを用いることでも、不正コピーを許さないコピー防止方法及びシステムを構築することができる。
さらに実施例8について図12を用いて説明する。この実施例では前記ROMをデータ蓄積装置45に置き換えている。この実施例でのゲートアレイ(GA)4の構成は図2に示すゲートアレイ(4)と同じ構成(図12には記載せず)のうえに、さらにデータ変換44を保有している。
この実施例の動作を以下に示す。この動作も実施例7と同じであり、起動制御プログラム21のGA4への取り込み、FPGA2へのブート、FPGA2の中に認証回路25の生成、起動キー符号列26のGA4への送信、GA4においての比較判定などの一連の動作を行う。この実施例の特徴はゲートアレイ(GA)4にデータ変換44を付加している点である。データ蓄積装置45と実施例1で示すゲートアレイ4のブート制御回路10などが接続できるようにするために、このデータ変換44を設けている。データ蓄積装置は各社からさまざまな製品が公開されていますし、ゲートアレイはカスタムLSI製品であるため、GA4とデータ蓄積装置45との接続が、円滑に行われれば、データ変換44をなくすこともできる。
本実施例は、ROM3をデータ蓄積装置に置換した実施例である。データ蓄積装置を用いることでも、不正コピーを許さないコピー防止方法及びシステムを構築することができる。
以上本願発明を実施例に基づき具体的に説明したが、本願発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えばシステム上に搭載したプログラム可能なゲートアレイ(FPGA)を複数個で構成すること、またFPGAおよびROMを複数個で構成すること、1個のGAまたは複数個のGAにて構成するように変更することも可能である。
本発明における基本ブロック図である。 本発明の実施例1の構成図である。 本発明の実施例1の動作を示す図である。 本発明の実施例1の動作を示す図である。 本発明の実施例1の動作を示す図である。 本発明の実施例2の構成図である。 本発明の実施例2の動作を示す図である。 本発明の実施例4の構成図である。 本発明の実施例4の動作を示す図である。 本発明の実施例6の動作を示す図である。 本発明の実施例7の構成図である。 本発明の実施例8の構成図である。 従来例1を示す図である。 従来例2を示す図である。
符号の説明
1 システム
2 FPGA
3 ROM
4 GA
5 CPLD
10 ブート制御回路
11 第1ブート回路
12 第2ブート回路
13 解読処理回路
14 判定回路
15 起動キー情報
16 第1の起動キー情報
17 第2の起動キー情報
18 ブートコントローラ
20 ユーザプログラムデータ
21 起動制御プログラムデータ
22 認証回路データ
23、26 起動キー符号列
24 ユーザ回路データ
25 認証回路
27 ユーザ回路
30 第1の認証回路データ
31 第2の認証回路データ
32、36 第1の起動キー符号列
33、37 第2の起動キー符号列
34 第1の認証回路
35 第2の認証回路
40 ダミー通信回路データ
41、42 ダミー通信回路
43 汎用フラッシュメモリ
44 データ変換
45 データ蓄積装置

Claims (16)

  1. プログラム可能なゲートアレイ(FPGA)のコピー防止方法において、前記FPGAと、ユーザ回路データおよび第1の起動キー符号列を記憶したROMと、予め第1の起動キー情報が組み込まれたユーザ専用ゲートアレイ(GA)とを備え、前記GAは前記第1の起動キー符号列から導き出された情報と前記第1の起動キー情報とが一致した場合には、前記ユーザ回路データを前記FPGAにブートさせることを特徴とするプログラム可能なゲートアレイのコピー防止方法。
  2. 前記ROMは前記第1の起動キー符号列と第1の認証回路データとからなる起動制御プログラムデータを記憶し、前記GAは、前記起動制御プログラムデータを前記FPGAにブートし、前記FPGAから送られた前記第1の起動キー符号列を解読し、前記第1の起動キー符号列の解読結果と前記第1の起動キー情報とを比較判定し、その判定結果が正しい場合には前記ユーザ回路データを前記FPGAにブートし、前記判定結果が正しくない場合には前記FPGAをリセットすることを特徴とする請求項1記載のプログラム可能なゲートアレイのコピー防止方法。
  3. 前記ROMは第2の起動キー符号列と第2の認証回路データとをさらに記憶し、前記GAは、前記第2の起動キー符号列と前記第2の認証回路データとを前記FPGAにブートし、ブート完了後に前記第2の認証回路データによってFPGA内に実現した第2の認証回路が送り返した前記第2の起動キー符号列を解読し、前記第2の起動キー符号列の解読結果と前記GAに組み込まれた第2の起動キー情報とを比較判定し、その判定結果が正しい場合には、前記ユーザ回路データを前記FPGAにブートし、前記判定結果が正しくない場合には前記FPGAをリセットすることを特徴とする請求項2記載のプログラム可能なゲートアレイのコピー防止方法。
  4. 前記FPGAから前記GAに前記第2の起動キー符号列をさらに定期的な周期毎に、または不定期的な周期毎に送信し、前記GAは送られた前記第2の起動キー符号列を解読し、前記第2の起動キー符号列の解読結果と前記第2の起動キー情報とを比較判定し、その判定結果が正しくない場合には前記FPGAをリセットすることを特徴とする請求項3記載のプログラム可能なゲートアレイのコピー防止方法。
  5. 前記GAは、さらにダミー通信回路を備え、前記FPGAに生成されたダミー通信回路との間で通信することを特徴とする請求項3または請求項4に記載のプログラム可能なゲートアレイのコピー防止方法。
  6. 前記GAはさらにブートコントローラとして機能することを特徴とする請求項1乃至請求項5のいずれかに記載のプログラム可能なゲートアレイのコピー防止方法。
  7. 前記GAは複数のプログラム可能なゲートアレイ(FPGA)に対してそれぞれのユーザ回路データのブート、または前記ユーザ回路の動作を制御することを特徴とする請求項1乃至請求項6のいずれかに記載のプログラム可能なゲートアレイのコピー防止方法。
  8. プログラム可能なゲートアレイ(FPGA)を備えたシステムにおいて、前記FPGAと、ユーザ回路データおよび第1の起動キー符号列を記憶したROMと、予め第1の起動キー情報が組み込まれたユーザ専用ゲートアレイ(GA)とを備え、前記GAは前記第1の起動キー符号列から導き出された情報と前記第1の起動キー情報とが一致した場合に、前記ユーザ回路データを前記FPGAにブートさせる第1のブート回路を有することを特徴とするシステム。
  9. 前記ROMは前記第1の起動キー符号列と第1の認証回路データとからなる起動制御プログラムデータを記憶し、前記GAは、前記起動制御プログラムデータを前記FPGAにブートする第2のブート回路と、前記FPGAから送られた前記第1の起動キー符号列を解読する解読処理回路と、前記第1の起動キー符号列の解読結果と前記第1の起動キー情報とを比較判定する判定回路とを有し、その判定結果が正しい場合には前記第1のブート回路により前記ユーザ回路データを前記FPGAにブートし、前記判定結果が正しくない場合には前記FPGAをリセットすることを特徴とする請求項8記載のシステム。
  10. 前記ROMは、第2の起動キー符号列と第2の認証回路データとをさらに記憶し、前記第1のブート回路は、さらに前記第2の起動キー符号列と前記第2の認証回路データとを前記FPGAにブートし、前記解読処理回路は前記FPGAから送られた前記第2の起動キー符号列を解読し、前記判定回路は前記第2の起動キー符号列の解読結果と前記GAに組み込まれた第2の起動キー情報とを比較判定し、前記GAは、その判定結果が正しい場合には、前記ユーザ回路データを前記FPGAにブートし、前記判定結果が正しくない場合には前記FPGAをリセットすることを特徴とする請求項9記載のシステム。
  11. 前記GAは、さらに前記FPGAに生成されたダミー通信回路との間で通信するダミー通信回路を備えたことを特徴とする請求項10に記載のシステム。
  12. 前記GAはさらにブートコントローラとして機能するブートコントローラを備えることを特徴とする請求項8乃至請求項11のいずれかに記載のシステム。
  13. 前記FPGAが複数搭載されたことを特徴とする請求項8乃至請求項12のいずれかに記載のシステム。
  14. 前記ROMをフラッシュメモリに置き換えて実現したことを特徴とする請求項8乃至請求項13のいずれかに記載のシステム。
  15. 前記ROMをデータ蓄積装置に置き換えて実現したことを特徴とする請求項8乃至請求項13のいずれかに記載のシステム。
  16. 前記第1および第2の起動キー符号列が、暗号化された符号列であることを特徴とする請求項8乃至請求項15のいずれかに記載のシステム。
JP2005149178A 2004-07-23 2005-05-23 プログラム可能なゲートアレイのコピー防止方法及びシステム Expired - Fee Related JP4191170B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005149178A JP4191170B2 (ja) 2004-07-23 2005-05-23 プログラム可能なゲートアレイのコピー防止方法及びシステム
US11/186,967 US7613931B2 (en) 2004-07-23 2005-07-22 Copy protection method and system for programmable gate array

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004215904 2004-07-23
JP2005149178A JP4191170B2 (ja) 2004-07-23 2005-05-23 プログラム可能なゲートアレイのコピー防止方法及びシステム

Publications (2)

Publication Number Publication Date
JP2006059318A JP2006059318A (ja) 2006-03-02
JP4191170B2 true JP4191170B2 (ja) 2008-12-03

Family

ID=35658705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005149178A Expired - Fee Related JP4191170B2 (ja) 2004-07-23 2005-05-23 プログラム可能なゲートアレイのコピー防止方法及びシステム

Country Status (2)

Country Link
US (1) US7613931B2 (ja)
JP (1) JP4191170B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006163522A (ja) * 2004-12-02 2006-06-22 Nec Electronics Corp コピー防止回路装置およびコピー防止方法
US9372639B2 (en) 2012-07-24 2016-06-21 Casio Computer Co., Ltd. System LSI capable of erasing internally stored program and program erasing method

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8464135B2 (en) 2010-07-13 2013-06-11 Sandisk Technologies Inc. Adaptive flash interface
US9069688B2 (en) 2011-04-15 2015-06-30 Sandisk Technologies Inc. Dynamic optimization of back-end memory system interface
US8990548B2 (en) * 2011-04-11 2015-03-24 Intel Corporation Apparatuses for configuring programmable logic devices from BIOS PROM
US9600291B1 (en) * 2013-03-14 2017-03-21 Altera Corporation Secure boot using a field programmable gate array (FPGA)
US9384128B2 (en) 2014-04-18 2016-07-05 SanDisk Technologies, Inc. Multi-level redundancy code for non-volatile memory controller
US9971910B2 (en) * 2015-01-22 2018-05-15 Raytheon Company Multi-level security domain separation using soft-core processor embedded in an FPGA
US9703973B2 (en) * 2015-04-28 2017-07-11 International Business Machines Corporation Customer load of field programmable gate arrays
CN109150499B (zh) * 2018-08-29 2021-06-08 深圳市迷你玩科技有限公司 动态加密数据的方法、装置、计算机设备和存储介质
US11216411B2 (en) * 2019-08-06 2022-01-04 Micro Focus Llc Transforming data associated with a file based on file system attributes
JP2022059521A (ja) * 2020-10-01 2022-04-13 富士フイルムビジネスイノベーション株式会社 半導体装置
CN112860275B (zh) * 2021-01-26 2024-07-09 北京自动化控制设备研究所 一种嵌入式计算机的软硬件协同加密电路及方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5959466A (en) * 1997-01-31 1999-09-28 Actel Corporation Field programmable gate array with mask programmed input and output buffers
JP2001325153A (ja) 2000-05-15 2001-11-22 Toyo Commun Equip Co Ltd フィールドプログラマブルゲートアレイの回路情報保護方法
JP2002050956A (ja) 2000-07-13 2002-02-15 Sun Microsyst Inc フィールド・プログラマブル・ゲート・アレイ
US6331784B1 (en) 2000-07-28 2001-12-18 Atmel Corporation Secure programmable logic device
US20020168067A1 (en) 2001-05-08 2002-11-14 Timofei Kouzminov Copy protection method and system for a field-programmable gate array
JP2004007472A (ja) 2002-03-22 2004-01-08 Toshiba Corp 半導体集積回路、データ転送システム、及びデータ転送方法
US7162644B1 (en) * 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
JP2004070556A (ja) 2002-08-05 2004-03-04 Matsushita Electric Ind Co Ltd プログラマブルロジックデバイス

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006163522A (ja) * 2004-12-02 2006-06-22 Nec Electronics Corp コピー防止回路装置およびコピー防止方法
US9372639B2 (en) 2012-07-24 2016-06-21 Casio Computer Co., Ltd. System LSI capable of erasing internally stored program and program erasing method

Also Published As

Publication number Publication date
US7613931B2 (en) 2009-11-03
JP2006059318A (ja) 2006-03-02
US20060020907A1 (en) 2006-01-26

Similar Documents

Publication Publication Date Title
JP4191170B2 (ja) プログラム可能なゲートアレイのコピー防止方法及びシステム
KR100792287B1 (ko) 자체 생성한 암호화키를 이용한 보안방법 및 이를 적용한보안장치
US7702927B2 (en) Securely field configurable device
US20080072068A1 (en) Methods and apparatuses for securing firmware image download and storage by distribution protection
US6141756A (en) Apparatus and method of reading a program into a processor
EP1273996B1 (en) Secure bootloader for securing digital devices
US10819514B2 (en) Electronic component of electronic device, method of starting electronic device and encryption method
US8418259B2 (en) TPM-based license activation and validation
EP1785902B1 (en) Decryption key table access control on ASIC or ASSP
JP6182371B2 (ja) 半導体集積回路を含むシステム
CA2415334A1 (en) System for persistently encrypting critical software data to control operation of an executable software program
RU2004133759A (ru) Инициализация, поддержание, обновление и восстановление защищенного режима работы интегрированной системы, использующей функцию управления доступом к данным
JPWO2009013825A1 (ja) 情報処理装置、及び改竄検証方法
JP4537940B2 (ja) 情報処理装置、及びプログラム実行制御方法
US20070061595A1 (en) Apparatus and method for protecting data
JP2002215256A5 (ja)
JP2003084853A (ja) プログラム可能なゲートアレイのためのコピー防止方法及びシステム
JP2008502969A (ja) セキュリティモジュール内に組み込まれたソフトウェアのセキュアな更新方法
JPWO2006046484A1 (ja) 認証方法
JP4592337B2 (ja) データ記憶装置
CN113343215A (zh) 嵌入式软件的授权和认证方法及电子设备
JP2000047866A (ja) プログラム実行プロテクト方法およびicカード、並びに記録媒体
JP2020202535A (ja) 安全製造に適用される制御システム及び制御方法
US20020029344A1 (en) System and method for decrypting encrypted computer program
JP2008003774A (ja) マイクロコンピュータ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070905

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080115

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: 20080820

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080917

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110926

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110926

Year of fee payment: 3

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110926

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120926

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130926

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees