JP2006163522A - コピー防止回路装置およびコピー防止方法 - Google Patents

コピー防止回路装置およびコピー防止方法 Download PDF

Info

Publication number
JP2006163522A
JP2006163522A JP2004350284A JP2004350284A JP2006163522A JP 2006163522 A JP2006163522 A JP 2006163522A JP 2004350284 A JP2004350284 A JP 2004350284A JP 2004350284 A JP2004350284 A JP 2004350284A JP 2006163522 A JP2006163522 A JP 2006163522A
Authority
JP
Japan
Prior art keywords
circuit
configuration data
circuit configuration
fpga
data
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.)
Granted
Application number
JP2004350284A
Other languages
English (en)
Other versions
JP4831957B2 (ja
Inventor
Masahiro Tonami
正博 砺波
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
Original Assignee
NEC Electronics 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 NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2004350284A priority Critical patent/JP4831957B2/ja
Priority to US11/290,396 priority patent/US7262629B2/en
Publication of JP2006163522A publication Critical patent/JP2006163522A/ja
Application granted granted Critical
Publication of JP4831957B2 publication Critical patent/JP4831957B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K17/00Electronic switching or gating, i.e. not by contact-making and –breaking

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Logic Circuits (AREA)

Abstract

【課題】汎用のROMなどの記憶素子やFPGAを使用したシステムにおけるコンフィグレーションデータの不正なコピーを防止するコピー防止回路装置、コピー防止方法を提供することにある。
【解決手段】コピー防止回路装置は、ユーザの手元で回路構成の書き換えが可能なゲートアレイ(FPGA)に記憶装置から回路構成データを読み出して転送し、データ生成回路と、データ切替回路とを具備する。データ生成回路は、擬似回路構成データを生成する。データ切替回路は、データ生成回路から出力される擬似回路構成データと記憶装置から読み出される回路構成データとを切り替えてFPGAに転送する。FPGAに設定される回路が起動されるために必要なFPGA内のSRAMの容量より少ない回路構成データと不足分の擬似回路構成データとをFPGAに転送することにより、回路が起動できるようになる。したがって、記憶装置に格納する回路構成データは、必要最小限で済み、記憶容量を削減することが可能となる。
【選択図】 図1

Description

本発明は、プログラム可能なゲートアレイの回路情報のコピーを防止する回路装置および回路情報のコピーを防止する方法に関する。
短期間に装置を開発し、量産する方法として、ユーザの手元で回路構成の書き換えができるゲートアレイ、即ち、FPGA(Field Programmable Gare Array)が採用され、その市場が伸びている。FPGAはプログラム素子としてSRAM(Static Random Access Memory)セルが設けられている。SRAMセルは、電源切断によって保持しているデータが消滅する。したがって、電源投入時の起動毎にFPGAをプログラミングするコンフィグレーション動作が必要となる。コンフィグレーションに用いられる回路データは、ROM(Read Only Memory)などの記憶素子に格納されていることが多い。ROMは、ROMライタを用いて容易にコピーすることができるため、回路構成データが不正にコピーされてしまうことがある。FPGA、ROM等の汎用部品は簡単に入手できる。即ち、FPGAによって構成される装置は、短期間で開発できる反面、多大のリソースを費やして開発した装置が簡単にコピーされる危険性をはらんでいる。
したがって、このようなFPGAを使った装置のコピー防止として様々な技術が用いられている。特開2003−84853号公報に開示されるプログラム可能なゲートアレイのためのコピー防止システムは、ロジック素子(CPLD)、プログラム可能なゲートアレイ素子(FPGA)からなる。ロジック素子(CPLD)は、工場でプログラムされ、初期状態ジェネレータ、第1のシーケンスジェネレータ、暗号化素子を含む。プログラム可能なゲートアレイ素子(FPGA)は、プログラム可能なゲートアレイのプログラムでプログラムされる。FPGAは、第2のシーケンスジェネレータ、第3のシーケンスジェネレータ、解読素子、およびシーケンス比較素子を含む。そして、第2のシーケンスジェネレータは、第1のシーケンスジェネレータの複製である。このシステムでは、CPLDが初期状態を初期状態ジェネレータ中で生成する。CPLDは、第1のシーケンスジェネレータを初期状態で初期化する。CPLDは、その初期状態を暗号化素子中で暗号化する。CPLDは、暗号化された初期状態をFPGAへ送信する。FPGAは、暗号化された初期状態を解読素子中で解読する。FPGAは、第2のシーケンスジェネレータを初期状態で初期化する。FPGAは、呼び掛けシーケンスを第3のシーケンスジェネレータを用いて生成する。FPGAは、呼び掛けシーケンスを第1のシーケンスジェネレータと第2のシーケンスジェネレータへ送信する。第1のシーケンスジェネレータは、第1の応答シーケンスを初期状態と呼び掛けシーケンスに基づいて生成する。第1のシーケンスジェネレータは、第1の応答シーケンスをシーケンス比較素子へ送信する。第2のシーケンスジェネレータは、第2の応答シーケンスを初期状態と呼び掛けシーケンスに基づいて生成する。第2のシーケンスジェネレータは、第2の応答シーケンスを前記シーケンス比較素子へ送信する。シーケンス比較素子は、第1と第2の応答シーケンスを比較する。シーケンス比較素子は、第1と第2の応答シーケンスが同一であるときにFPGAプログラムのオペレーションを許可する。このようにして、このプログラム可能なゲートアレイのためのコピー防止システムは、コピーを防止する。
また、特開2001−325153号公報に開示される揮発性メモリを備えたフィールドプログラマブルゲートアレイの回路情報保護方法は、フィールドプログラマブルゲートアレイに回路情報を書き込む手段としてフィールドプログラマブルゲートアレイ外部に不揮発性メモリを設ける。この不揮発性メモリに暗号化された回路情報が書き込まれている。電源投入時にこの不揮発性メモリからフィールドプログラマブルゲートアレイに備えた揮発性メモリに回路情報を書き込む。フィールドプログラマブルゲートアレイは、揮発性メモリに回路情報を書き込むときに暗号化データを解読し、回路情報を保護する。
特開2003−84853号公報 特開2001−325153号公報
これらの従来技術において、FPGAをコンフィグレーションするためのデータを格納するROMや、FPGAに特殊な機能を持たせることによりコンフィグレーションデータのコピーを防止している。そのため、ユーザにとって使い勝手のよい汎用のROMやFPGAを使用することはできない。
本発明の観点によれば、ユーザの手元で回路構成の書き換えが可能なゲートアレイ(FPGA)に記憶装置から回路構成データを読み出して転送するコピー防止回路装置は、回路構成データのFPGAへの転送を制御する制御回路と、擬似回路構成データを生成するデータ生成回路と、記憶装置から読み出される回路構成データとデータ生成回路から出力される擬似回路構成データとを切り替えてFPGAに転送するデータ切替回路とを具備し、制御回路は回路構成データのFPGAへの転送を許可するか否かを制御し、データ切替回路は、FPGAが必要とするよりも少ない回路構成データをFPGAに転送した後、擬似回路構成データをFPGAに転送する。
すなわち、FPGAへの回路構成データの転送を制御することにより、回路構成データをFPGA内に転送すべきか否かについての判定を行なう。かくして、コピー防止回路装置を保有するシステムだけが所望の動作を行なう回路構成データをFPGAに転送することができ、所望の動作を機能させることができる。結果、システムのコピーを防止することができる。また、転送される回路構成データがFPGAに設定される回路が起動されるために必要なFPGA内の回路データ記憶領域であるSRAMの容量より少なかったとしても、回路構成データに続き不足分の擬似回路構成データをFPGAに転送することにより、回路が起動できるようになる。したがって、記憶装置に格納する回路構成データは、必要最小限で済み、記憶容量を削減することが可能となる。
本発明によれば、汎用のROMなどの記憶素子やFPGAを使用したシステムにおけるシステムのコピーを防止するコピー防止回路装置、コピー防止方法を提供することができる。
また、本発明によれば、ユーザ回路データを記憶する記憶装置や記憶素子の容量を削減することができる。したがって、コストの低減が可能となる。
本発明では、まず起動制御回路データが記憶素子からFPGAに転送される。起動制御回路データがFPGAに転送された後、不足分のデータはゲートアレイ内で生成されてFPGAに転送される。これによってFPGA内のSRAM記憶領域の全域にデータが書き込まれる。FPGAの起動制御回路が起動されて、システムの正当性が確認される。次にユーザ回路データがFPGAに転送される。ユーザ回路データがFPGAに転送された後、不足分のデータはゲートアレイ内で生成されてFPGAに転送され、FPGA内のSRAM記憶領域の全域にデータが書き込まれる。このように、システムの正当性が確認でき、さらに記憶素子内に不足分データを格納しておく必要がなくなる。
図1から図4を参照して発明を実施するための最良の形態を説明する。図1は、搭載されたプログラム可能なゲートアレイ(FPGA:Field Programmable Gate Array)にプログラムするシステムの構成を示す図である。
FPGAプログラムシステムは、ユーザが定義する回路がプログラムされるFPGA30と、FPGA30に設定する回路データを格納する記録媒体であるROM20と、ROM20から回路データを読み出してFPGA30に書き込むゲートアレイ(GA)10とを具備する。
FPGA30は、プログラム素子としてSRAM(Static Random Access Memory)セルを備える。FPGA30は、SRAMの記憶領域に回路データを保持し、その回路データによって設定される回路機能の動作をする。SRAMには、電源投入時等に外部から回路データが書き込まれる。通常そのSRAMの容量分の回路データを書き込まれなければ、その書き込まれた回路データによって設定される回路の起動がなされない。即ち、SRAMに書き込む回路データは、SRAMの容量分だけ必要となる。
ROM20にはFPGA30に設定する回路データ(FPGAプログラムとも呼称される)が記録されている。ROM20には、図2に示されるように、起動制御回路データ21とユーザ回路データ25とが格納される。起動制御回路データ21は、電源投入後最初にFPGA30に設定される起動制御回路31の構成情報である。起動制御回路31が動作して、システムの正当性を確認する。この起動制御回路データ21は起動キー符号列22を含む。一方、ユーザ回路データ25は、ユーザが開発・設計した回路の構成情報である。したがって、そのデータ量、機能は回路毎に様々である。起動制御回路データ21とユーザ回路データ25は、各々の有効な回路データのみROM20に格納される。したがって、起動制御回路データ21、ユーザ回路データ25単独ではFPGA30のSRAMの容量を満たすことはできない。
さらに、起動制御回路データ21とユーザ回路データ25との間に境界データ27が格納される。この境界データ27は必須ではない。また、FPGA30の回路データとして有効な回路を設定するデータでなくてもよい。このように起動制御回路データ21とユーザ回路データ25との間に境界データ27を配置したり、起動制御回路データ21とユーザ回路データ25とを連続的に配置することにより、ROM20の内容を読み出して解析し、ユーザ回路データ25だけを抽出することは困難になる。
ゲートアレイ10は、制御回路12、アドレス生成回路13、データ生成回路14、データ切替回路15、起動キー情報17、判定回路18、解読回路19を備える。
制御回路12は、ゲートアレイ10に内蔵される各回路を制御し、ROM20に格納される回路データをFPGA30に転送する回路データ転送を制御する。アドレス生成回路13は、制御回路12の指示に応答してROM20のアドレスを生成し、ROM20にアドレスadを供給する。データ生成回路14は、制御回路12の指示に応答して擬似回路データを生成し、データ切替回路15に供給する。データ生成回路14で生成する擬似回路データは、予め設定されたデータを用いてもよし、ROM20から読み出されたデータに基づいて生成してもよい。データ切替回路15は、制御回路12の指示に応答して、ROM20から読み出されるデータdrとデータ生成回路14から出力されるデータとから出力すべきデータを選択してFPGA30に出力する。起動キー情報17は、システムの正当性を確認するための起動キーの情報を保持し、判定回路18に供給される。解読回路19は、FPGA30から出力される起動キー符号列を受信し、暗号化されている起動キー符号列を解読して判定回路18に供給する。判定回路18は、起動キー情報17と解読回路19から供給される起動キーを比較判定する。判定結果を制御回路12に出力する。
ここで、システムの正当性が確認される起動キーについて説明する。図7は、システムの正当性を確認するときに送受する起動キー符号列データkyに含まれる情報50の構成を示す。起動キー符号列データkyに含まれる情報50は、起動キー54、データ長56を含んでいる。起動キー54は、予め設定されたデータであり、設計回路毎などに固定的に与えられる。この起動キー54は、ゲートアレイ10にも起動キー情報17に格納され、システム正当性を確認する際に比較の対象となる。データ長56は、ユーザ回路データ25のデータ量を示す。
起動キー符号列データに含まれる情報50のうち少なくとも起動キー54は暗号化されている。暗号化方式には、秘密鍵暗号方式、公開鍵暗号方式があるが、ここではどちらでもよい。一般的に秘密鍵暗号方式のほうが公開鍵暗号方式に比べて解読処理が軽く、解読する回路は小規模で済むことが多い。より厳密に起動キーを保護する場合は、公開鍵暗号方式にするとよい。
起動キー54、データ長56は、暗号化され、或いは暗号化データと共に送受されることにより、外部から観測可能な送受の間においてその情報が漏洩する危険性を少なくすることができる。
また、データ長56は、ユーザ回路データ25が生成されたときには判明するものであるから、起動キー符号列22としてROM20に記録せずに、ゲートアレイ10に予め組み込んでおくことも可能である。その場合、ゲートアレイ10とFPGA30間において転送されることはなく、送受信時に観測されて情報が漏洩することはなくなる。
さらに、起動キー符号列22は、暗号化せずに起動制御回路データ21に組み込むこともできる。その場合、起動制御回路31に暗号化回路を組み込み、起動キー符号列32を暗号化してゲートアレイ10に転送する。暗号化により送受信時に観測されて情報が漏洩することはなくなる。
このように構成されるコピー防止システムの動作を説明する。まず図4に示されるフローチャートを参照してゲートアレイ10を中心とした全体の動作を説明する。ここでは、電源投入時における動作として説明するが、システムの初期化が必要な場合は、いつでもこのシーケンスを実行することができる。
FPGA30は、電源が投入されたことを検出すると、電源投入検出信号を出力し、回路データを受信することが可能となったことを外部に通知する。一方、ゲートアレイ10は、電源が投入されると、FPGA30から出力される電源投入検出信号により、FPGA30が回路データ受信モードになったことを示すまで待機する(ステップS41)。
FPGA30が電源投入検出信号により、回路データ受信モードになったことを通知すると(ステップS41−YES)、ゲートアレイ10は、FPGA30のSRAMに設定されている回路データの消去をFPGA30に指示する(ステップS42)。電源投入直後は、FPGA30のSRAMの内容が全て消去状態であればこのステップは必要ないが、電源投入時以外の初期設定時等においては通常実行される。また、回路データ受信モードになると自動的にSRAMに格納されている回路情報を消去するようになっているFPGAの場合には実行しなくてもよい。
FPGA30のSRAMの回路情報の消去が完了すると、ゲートアレイ10は、ROM20から起動制御回路データ21を読み出し、順次FPGA30に転送してSRAMに書き込ませる(ステップS43)。この手順については後述する。
起動制御回路データ21が、FPGA30のSRAMに転送されると、図3(a)に示されるように、FPGA30に起動制御回路31が設定される。FPGA30は、この起動制御回路31を起動する(ステップS45)。
起動制御回路31は、起動されると、回路に内蔵される起動キー符号列32をゲートアレイ10に転送する。ROM20に格納されている起動キー符号列22が、起動制御回路31に内蔵される起動キー符号列32となり、起動制御回路31がそのまま起動キー符号列32を出力する。起動キー符号列32は、ゲートアレイ10に転送するときに起動制御回路31により暗号化されるのが好ましい。起動制御回路31により暗号化されると、ROM20に格納されている起動キー符号列22と異なる値となるため、より秘匿性が高まる。
起動キー符号列32は、起動制御回路31からゲートアレイ10に起動キー符号列データkyとして転送される。起動キー符号列データkyに含まれる情報50は、図7に示されるように、起動キー54、データ長56を含んでいる。ゲートアレイ10に予めデータ長56が設定されている場合は、これらは転送されなくてもよい。
ゲートアレイ10は、起動制御回路31が転送する起動キー符号列データkyを受信する(ステップS47)。ゲートアレイ10は、暗号化された起動キー符号列データkyを解読回路19で解読(復号化)し、起動キーなどの情報を取り出す(ステップS48)。解読された情報は、判定回路18により起動キー情報17と比較され、その正当性が確認される(ステップS51)。
判定回路18が起動キーの情報が正当でないと判断した場合(ステップS51−NG)、ユーザ回路データの転送は行わずにFPGA起動シーケンスを終了する。即ち、FPGA30にはユーザ回路データ25が転送されない。つまり、FPGA30に、所望の動作を実行させるためのユーザ回路データ25を設定することができない。なお、FPGA30に格納されている回路情報を消去してもよい。
判定回路18が起動キーの情報が正当であると判断した場合(ステップS51−OK)、ゲートアレイ10はユーザ回路データ25の転送のシーケンスに入る。FPGA30のSRAMには、起動制御回路の回路データが設定されているため、まずSRAMの回路データを消去する(ステップS52)。
SRAMの回路データが消去されると、ゲートアレイ10はROM20のユーザ回路データ25をFPGA30に転送する(ステップS53)。ユーザ回路データ25が全てFPGA30に転送し終わると、FPGA30には、図3(b)に示されるように、起動制御回路31に代わってユーザ回路35が設定されることになる。ゲートアレイ10は、FPGA30に設定されたユーザ回路35を起動し、FPGA30はユーザが設計した動作を行う。
このように、ゲートアレイ10がなければユーザ回路データ25をFPGA30に転送することもできない。したがって、ゲートアレイ10を保有していなければ、システムを機能させることができない。かくして、システムのコピーを防止することができる。
上記の起動制御回路データ、ユーザ回路データの転送動作について説明する。図5は、起動制御回路データ、ユーザ回路データをROM20から読み出し、FPGA30に転送するゲートアレイ10の動作を示すフローチャートである。
制御回路12は、ROM20の回路データが格納されている先頭アドレスをアドレス生成回路13に設定する(ステップS61)。起動制御回路データの場合、先頭アドレスは、ユーザ回路データよりもROM20の先頭に近いことが好ましい。
アドレス生成回路13からROM20のアドレスadが出力される。ROM20はそのアドレスadで示される位置のデータを出力する。ゲートアレイ10はその回路データdrを入力する(ステップS63)。
データ切替回路15は、制御回路12によりROM20から読み出されるデータを選択するように設定されている。ゲートアレイ10に入力された回路データは、データ切替回路15を介してFPGA30に転送される。転送された回路データdtは、FPGA30のSRAMに格納される(ステップS64)。
回路データをFPGA30に転送すると、アドレス生成回路13は、読み出しアドレスをカウントアップし、次のデータの出力をROM20に指示する(ステップ65)。
読み出しアドレスが回路データの範囲を越えるまで(ステップS67−NO)、ステップ63からステップ65を繰り返す。ここでは、読み出しアドレスが回路データの最終アドレスであることを検出することにより有効データの末尾を判定している。有効データの末尾の判定は、回路データに特殊なデータ(パターン)を入れて、その特殊なデータを検出して行ってもよい。また、回路データの転送が完了しデータが出力されていないことを検出してもよい。さらに、回路データのデータ量は予め判明しているので、そのデータ量をカウンタ等でモニタして検出してもよい。
読み出しアドレスが回路データの範囲を越えたとき(ステップS67−YES)、制御回路12は、ROM20から回路データを読み出すことを停止し、データ切替回路15のデータ選択をデータ生成回路14側に設定する。
データ生成回路14は、無意味なデータ(他の回路に影響を及ぼさない、例えば、全て0などのダミーデータ)を生成し、データ切替回路15を介してFPGA30に転送する。FPGA30は無意味なデータ(ダミーデータ)をSRAMに格納する(ステップS68)。無意味なデータ(ダミーデータ)は、予めデータパターンを設定しておいてもよいし、ROM20に設定されるデータを使用してもよい。また、ROM20に格納される任意の回路データを使用してもよい。
FPGA30のSRAMの容量分のデータが転送されるまで、データ生成回路14は無意味なデータ(ダミーデータ)を生成し、FPGA30に転送する(ステップS69−NO)。
FPGA30のSRAMの全てにデータが格納されると、FPGA30のコンフィグレーション(書き込み)は終了する(ステップS69)。FPGA30への回路データ転送の終了は、データ生成回路14による生成データ量のカウント値、データ切替回路15による転送数のカウント値などに基づいて判定される。
このように、ゲートアレイ10はROM20からFPGA30に回路データを転送する。ROM20に格納される回路データのアドレスが異なるだけで、起動制御回路の回路データも、ユーザ回路データも同じ手順で回路データが転送される。データ生成回路14が、ROM20に格納される回路データで不足するデータを生成するため、ROM20に格納されるデータは、回路構成に有効な回路データのみでよく、ROM容量を削減することが可能となる。
次に図6を参照して、このような回路データの転送動作の変形例を説明する。図6は、ROM20に対して出力されるアドレスが、起動制御回路データとユーザ回路データとで同じように出力され、起動制御回路データ、ユーザ回路データをROM20からFPGA30に転送するゲートアレイ10の動作を示すフローチャートである。
制御回路12は、ROM20の先頭アドレスをアドレス生成回路13に設定する(ステップS71)。単独のROMであれば、通常ROM20の先頭アドレスは、“0”である。このROM20の先頭アドレスは、起動制御回路データの場合もユーザ回路データの場合も、同じアドレスが設定される。
このROM20の先頭アドレスから起動制御回路データ或いは、ユーザ回路データが格納される位置までROM20から読み出されるデータは読み捨てられる。即ち、アドレス生成回路13から出力されるアドレスに応答してROM20は、回路データdrを出力する。ゲートアレイ10はROM20から出力される回路データを読み出す(ステップS73)。アドレス生成回路13は、制御回路12の指示によりアドレスをカウントアップする(ステップS74)。制御回路12は、このアドレスが有効な回路データの先頭アドレスであるか否かを判定する(ステップS75)。ゲートアレイ10は、有効な回路データの先頭アドレスになるまで、ステップS73からステップS75まで繰り返す(ステップS75−NO)。
ROM20に出力されるアドレスが有効な回路データのアドレスになると(ステップS75−YES)、ROM20から読み出される回路データは、FPGA30に転送されるようになる。即ち、アドレス生成回路13から出力されるアドレスに応答してROM20は、回路データを出力する。その回路データは、データ切替回路15を介してFPGA30に転送され、SRAMに格納される(ステップS77)。このとき、データ切替回路15はROM20から読み出されるデータを選択するように制御回路12により設定されている。次の回路データを読み出すためにアドレス生成回路13は、制御回路12の指示によりアドレスをカウントアップする(ステップS78)。ゲートアレイ10は、アドレスが有効な回路データの範囲を越えるまでステップS77からステップS79を繰り返す(ステップS79−NO)。
アドレスが有効な回路データの範囲を越えたとき(ステップS79−YES)、ROM20にはFPGA30に転送する有効な回路データは残っていない。したがって、これ以降ゲートアレイ10は、FPGA30のSRAMを満たすように無意味な(他の回路に影響を及ぼさない)データをFPGA30に転送する。一方、ゲートアレイ10は、ROM20に対してアドレスを供給し、回路データを読み出すように動作する。
即ち、制御回路12は、FPGA30に転送するデータをデータ生成回路14から選択するようにデータ切替回路15を設定する。データ生成回路14は、無意味な(他の回路に影響を及ぼさない)データを生成し、データ切替回路15を介してFPGA30に転送する。FPGA30は無意味なデータ(ダミーデータ)をSRAMに格納する(ステップS83)。一方、アドレスはROM20に供給され、FPGA30にダミーデータが転送されると、アドレス生成回路13、制御回路12の指示によりアドレスをカウントアップする(ステップS84)。FPGA30のSRAMの容量分のデータが転送されるまで、ステップS83からステップS85まで繰り返す(ステップS85−NO)。
FPGA30のSRAMの全てにデータが格納されると(ステップS85−YES)、FPGA30のプログラム(書き込み)は終了する。このとき、アドレス生成回路13は、ROM20の最終アドレスまでアドレスを生成し続けてもよい。
このように、ROM20のアドレスを起動制御回路データとユーザ回路データとの転送において変えずに回路データを転送することが可能となる。また、上記ではFPGA30に転送するダミーデータをデータ生成回路14で生成したが、ROM20から読み出した回路データ(上記においては、読み捨てをしていたデータ)を使用することも可能である。その場合、ダミーデータも回路データであるため、外部から観測しただけでは有効な回路データと無効な回路データとの見分けはできなくなる。また、回路データを格納する記憶部にパーソナルコンピュータ等を用いた場合、回路データはファイルという形態で管理されるため、データの先頭から末尾までゲートアレイ10に転送されることが好ましい。
また、本実施の形態では、回路データを格納する記憶装置がROMであるものとして、アドレス生成回路13は、設定されたアドレスからデータを受信するごとにカウントアップするように説明した。トリガを与えることにより回路データを出力するような回路や装置の場合は、アドレス生成回路13は、アドレスを与えるのではなく、トリガとなる信号を与えればよい。
このように、ユーザ回路データを格納するROMの未使用領域や、FPGAのSRAMに無意味なデータを書き込むためだけに用意されていた領域に、起動制御回路データを格納することが可能となる。そのようにできれば、起動制御回路データが必要になったからといってROMの容量を変える必要はない。即ち、回路データを格納するROMに対するコストが押さえられる。
このように、FPGAに特別な機能を持たせることなく汎用FPGAを使い、さらに、ROMに特別な機能を持たせることなく汎用ROMを使用したシステムにおいて、そのコピーを防止することができる。
本発明の実施の形態に係るFPGAにプログラムするシステムの構成を示す図である。 同ROMに記憶された回路データの格納状態を示す図である。 同FPGAの設定される回路の状態を示す図である。 同FPGAにプログラムする動作を示すフローチャートである。 同ROMから読み出し、FPGAに転送する動作を示すフローチャートである。 同ROMから読み出し、FPGAに転送する他の動作を示すフローチャートである。 同起動キー符号列データに含まれる情報を説明する図である。
符号の説明
10 ゲートアレイ
12 制御回路
13 アドレス生成回路
14 データ生成回路
15 データ切替回路
17 起動キー情報
18 判定回路
19 解読回路
20 ROM
21 起動制御回路データ
22 起動キー符号列
25 ユーザ回路データ
27 境界データ
30 FPGA
31 起動制御回路
32 起動キー符号列
35 ユーザ回路
50 起動キー符号列データkyに含まれる情報
54 起動キー
56 データ長

Claims (18)

  1. ユーザの手元で回路構成の書き換えが可能なゲートアレイ(FPGA)に記憶装置から回路構成データを読み出して転送するコピー防止回路装置であって、
    前記回路構成データの前記FPGAへの転送を制御する制御回路と、
    擬似回路構成データを生成するデータ生成回路と、
    前記記憶装置から読み出される前記回路構成データと前記データ生成回路から出力される前記擬似回路構成データとを切り替えて前記FPGAに転送するデータ切替回路と
    を具備し、
    前記データ切替回路は、前記FPGAが必要とするよりも少ない前記回路構成データを前記FPGAに転送した後、前記擬似回路構成データを前記FPGAに転送する
    コピー防止回路装置。
  2. 前記データ生成回路は、予め設定されたデータに基づいて前記擬似回路構成データを生成する
    請求項1に記載のコピー防止回路装置。
  3. 前記データ生成回路は、前記記憶装置に格納されるデータに基づいて前記擬似回路構成データを生成する
    請求項1に記載のコピー防止回路装置。
  4. 前記擬似回路構成データは、前記回路構成データの少なくとも一部を含む
    請求項1から請求項3のいずれかに記載のコピー防止回路装置。
  5. 請求項1から請求項4のいずれかに記載のコピー防止回路装置において、
    前記記憶装置は、第1回路構成データと第2回路構成データとを含む回路構成データを格納し、
    前記データ切替回路は、前記記憶装置から読み出した前記第1回路構成データに続けて前記擬似回路構成データを前記FPGAに転送し、
    前記制御回路は、転送された前記第1回路構成データにより前記FPGA内に設定された第1回路から出力される確認信号に応答して、前記第2回路構成データを前記FPGAに転送することを許可するか否かを決定し、前記制御回路の結果に応じて、前記データ切替回路は前記記憶装置から読み出した前記第2回路構成データに続けて前記擬似回路構成データを前記FPGAに転送する
    コピー防止回路装置。
  6. 前記確認信号は、暗号化された情報を含み、
    前記確認信号を解読する暗号解読回路と、
    解読された前記情報に基づいて前記第1回路構成データの正当性を判定する判定回路と
    をさらに具備し、
    前記制御回路は、前記判定回路から出力される判定結果が正当性を確認できたことを示すとき、前記第2回路構成データを前記FPGAに転送する
    請求項5に記載のコピー防止回路。
  7. 請求項5または請求項6に記載のコピー防止回路装置において、
    前記回路構成データは、前記第1回路構成データと前記第2回路構成データとの間に第3回路構成データを含み、
    前記回路データ生成回路は、前記第3回路構成データに基づいて前記擬似回路構成データを生成する
    コピー防止回路装置。
  8. 請求項5から請求項7のいずれかに記載のコピー防止回路装置において、
    前記記憶装置に格納される前記回路構成データのうち前記FPGAが必要とする量の回路構成データを読み出し、
    読み出した前記FPGAが必要とする量の回路構成データのうち前記FPGAに転送すべき前記第1回路構成データまたは前記第2回路構成データを抽出して前記FPGAに転送し、
    前記第1回路構成データまたは前記第2回路構成データに続けて前記擬似回路構成データを前記FPGAに転送する
    請求項5から請求項7のいずれかに記載のコピー防止回路装置。
  9. ユーザの手元で回路構成の書き換えが可能なゲートアレイ(FPGA)と、
    前記FPGAの回路構成を定義する複数の回路構成データを格納する記憶装置と、
    前記複数の回路構成データを前記FPGAに転送するコピー防止回路装置と
    を具備し、
    前記コピー防止回路装置は、前記回路構成データの前記FPGAへの転送を制御する制御回路と、擬似回路構成データを生成するデータ生成回路とを備え、
    前記複数の回路構成データの転送を許可するか否かを制御するとともに、前記複数の回路構成データのうちの1つの回路構成データを前記記憶装置から読み出して前記FPGAに転送した後、
    前記擬似回路構成データを前記FPGAに転送する
    コピー防止システム。
  10. 前記複数の回路構成データのうち第1回路構成データは、符号列を有し、
    前記コピー防止回路装置は、
    前記第1回路構成データと前記擬似回路構成データとを前記FPGAに転送した後、前記FPGAから前記符号列を受信し、
    受信した前記符号列に基づいて前記第1回路構成データの正当性を判定し、
    前記正当性が確認できた場合に、前記制御回路は複数の回路構成データのうち第2回路構成データを読み出して前記FPGAへの転送を許可する
    請求項9に記載のコピー防止システム。
  11. 前記符号列は、前記FPGAから暗号化されて送信される
    請求項10に記載のコピー防止システム。
  12. 前記記憶装置は、半導体記憶素子で構成される
    請求項9から請求項11のいずれかに記載のコピー防止システム。
  13. 前記コピー防止回路装置は、半導体ベンダの工場においてプログラム済みのゲートアレイにより構成される
    請求項9から請求項12のいずれかに記載のコピー防止システム。
  14. ユーザの手元で回路構成の書き換えが可能なゲートアレイ(FPGA)に転送される回路構成データの不正コピーを防止するコピー防止方法であって、
    記憶装置に格納される複数の回路構成データのうちの1つを前記FPGAに転送する回路構成データ転送ステップと、
    擬似回路構成データを生成するデータ生成ステップと、
    前記回路構成データ転送ステップにより前記記憶装置から前記FPGAに前記回路構成データが転送された後、前記擬似回路構成データを前記FPGAに転送する擬似データ転送ステップと、
    前記複数の回路構成データのうち他の回路構成データを前記FPGAに転送するか否かを判定する判定ステップと
    を具備するコピー防止方法。
  15. 前記複数の回路構成データは、第1の回路構成データと第2の回路構成データと含み、
    前記第1の回路構成データは、符号列を含み、
    前記判定ステップは、前記第1の回路構成データにより前記FPGAに設定される第1の回路が出力する前記符号列に基づいて前記第1の回路構成データの正当性を確認する認証ステップと、
    前記認証ステップにより正当性が確認できたときのみ前記第2の回路構成データを前記FPGAに転送する第2の回路構成データ転送ステップと
    を備える
    請求項14に記載のコピー防止方法。
  16. 前記符号列は、前記第1の回路から暗号化されて出力される
    請求項15に記載のコピー防止方法。
  17. 前記データ生成ステップは、予め設定されたデータに基づいて前記擬似回路構成データを生成する
    請求項14から請求項16のいずれかに記載のコピー防止方法。
  18. 前記データ生成ステップは、前記回路構成データの少なくとも一部を含む前記擬似回路構成データを生成する
    請求項14から請求項17のいずれかに記載のコピー防止方法。
JP2004350284A 2004-12-02 2004-12-02 コピー防止回路装置およびコピー防止方法 Expired - Fee Related JP4831957B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004350284A JP4831957B2 (ja) 2004-12-02 2004-12-02 コピー防止回路装置およびコピー防止方法
US11/290,396 US7262629B2 (en) 2004-12-02 2005-12-01 Apparatus and method for protecting from illegal copy

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004350284A JP4831957B2 (ja) 2004-12-02 2004-12-02 コピー防止回路装置およびコピー防止方法

Publications (2)

Publication Number Publication Date
JP2006163522A true JP2006163522A (ja) 2006-06-22
JP4831957B2 JP4831957B2 (ja) 2011-12-07

Family

ID=36573499

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004350284A Expired - Fee Related JP4831957B2 (ja) 2004-12-02 2004-12-02 コピー防止回路装置およびコピー防止方法

Country Status (2)

Country Link
US (1) US7262629B2 (ja)
JP (1) JP4831957B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010102638A (ja) * 2008-10-27 2010-05-06 Fuji Xerox Co Ltd 電子機器
JP2014178809A (ja) * 2013-03-14 2014-09-25 Fujitsu Advanced Engineering Ltd 電子機器、回路データ保護装置、及び回路データ保護方法
JP2015207131A (ja) * 2014-04-19 2015-11-19 Nltテクノロジー株式会社 制御装置
JP7448496B2 (ja) 2021-02-08 2024-03-12 株式会社日立国際電気 ソフトウエア無線機およびその制御方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6239078B1 (ja) * 2016-11-04 2017-11-29 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置および読出し方法

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0668605A (ja) * 1992-08-20 1994-03-11 Csk Corp 磁気カード
JPH0851356A (ja) * 1994-04-20 1996-02-20 Xilinx Inc プログラマブルアレイ
US5768372A (en) * 1996-03-13 1998-06-16 Altera Corporation Method and apparatus for securing programming data of a programmable logic device
JPH1145508A (ja) * 1997-07-30 1999-02-16 Sony Corp データ記録装置および方法、データ再生装置および方法、並びに伝送媒体
US5970142A (en) * 1996-08-26 1999-10-19 Xilinx, Inc. Configuration stream encryption
US6118869A (en) * 1998-03-11 2000-09-12 Xilinx, Inc. System and method for PLD bitstream encryption
JP2001256114A (ja) * 2000-03-14 2001-09-21 Tokyo Denki Univ 集積回路、および、そのコアの盗用防止方法
US20010037458A1 (en) * 2000-02-08 2001-11-01 Kean Thomas A. Method of using a mask programmed key to securely configure a field programmable gate array
JP2001325153A (ja) * 2000-05-15 2001-11-22 Toyo Commun Equip Co Ltd フィールドプログラマブルゲートアレイの回路情報保護方法
JP2002184947A (ja) * 2000-12-11 2002-06-28 Matsushita Electric Ind Co Ltd 混載型半導体集積回路、半導体集積回路システムおよび半導体集積回路システムの自動設計システム
JP2003044303A (ja) * 2001-07-27 2003-02-14 Kyushu Ando Denki Kk コンピュータ装置
JP2003084853A (ja) * 2001-05-08 2003-03-19 Guzik Technical Enterp Inc プログラム可能なゲートアレイのためのコピー防止方法及びシステム
JP2004515180A (ja) * 2000-11-28 2004-05-20 ザイリンクス インコーポレイテッド リードバックを防止する方法を備えたプログラマブルロジックデバイス
US7162644B1 (en) * 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
US7197647B1 (en) * 2002-09-30 2007-03-27 Carnegie Mellon University Method of securing programmable logic configuration data
JP4191170B2 (ja) * 2004-07-23 2008-12-03 Necエレクトロニクス株式会社 プログラム可能なゲートアレイのコピー防止方法及びシステム

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0668605A (ja) * 1992-08-20 1994-03-11 Csk Corp 磁気カード
JPH0851356A (ja) * 1994-04-20 1996-02-20 Xilinx Inc プログラマブルアレイ
US5768372A (en) * 1996-03-13 1998-06-16 Altera Corporation Method and apparatus for securing programming data of a programmable logic device
US5970142A (en) * 1996-08-26 1999-10-19 Xilinx, Inc. Configuration stream encryption
JPH1145508A (ja) * 1997-07-30 1999-02-16 Sony Corp データ記録装置および方法、データ再生装置および方法、並びに伝送媒体
US6118869A (en) * 1998-03-11 2000-09-12 Xilinx, Inc. System and method for PLD bitstream encryption
US20010037458A1 (en) * 2000-02-08 2001-11-01 Kean Thomas A. Method of using a mask programmed key to securely configure a field programmable gate array
JP2001256114A (ja) * 2000-03-14 2001-09-21 Tokyo Denki Univ 集積回路、および、そのコアの盗用防止方法
JP2001325153A (ja) * 2000-05-15 2001-11-22 Toyo Commun Equip Co Ltd フィールドプログラマブルゲートアレイの回路情報保護方法
JP2004515180A (ja) * 2000-11-28 2004-05-20 ザイリンクス インコーポレイテッド リードバックを防止する方法を備えたプログラマブルロジックデバイス
JP2002184947A (ja) * 2000-12-11 2002-06-28 Matsushita Electric Ind Co Ltd 混載型半導体集積回路、半導体集積回路システムおよび半導体集積回路システムの自動設計システム
JP2003084853A (ja) * 2001-05-08 2003-03-19 Guzik Technical Enterp Inc プログラム可能なゲートアレイのためのコピー防止方法及びシステム
JP2003044303A (ja) * 2001-07-27 2003-02-14 Kyushu Ando Denki Kk コンピュータ装置
US7162644B1 (en) * 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
US7197647B1 (en) * 2002-09-30 2007-03-27 Carnegie Mellon University Method of securing programmable logic configuration data
JP4191170B2 (ja) * 2004-07-23 2008-12-03 Necエレクトロニクス株式会社 プログラム可能なゲートアレイのコピー防止方法及びシステム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010102638A (ja) * 2008-10-27 2010-05-06 Fuji Xerox Co Ltd 電子機器
JP2014178809A (ja) * 2013-03-14 2014-09-25 Fujitsu Advanced Engineering Ltd 電子機器、回路データ保護装置、及び回路データ保護方法
JP2015207131A (ja) * 2014-04-19 2015-11-19 Nltテクノロジー株式会社 制御装置
US9792461B2 (en) 2014-04-19 2017-10-17 Nlt Technologies, Ltd. Control apparatus
JP7448496B2 (ja) 2021-02-08 2024-03-12 株式会社日立国際電気 ソフトウエア無線機およびその制御方法

Also Published As

Publication number Publication date
US20060119378A1 (en) 2006-06-08
US7262629B2 (en) 2007-08-28
JP4831957B2 (ja) 2011-12-07

Similar Documents

Publication Publication Date Title
KR100666328B1 (ko) 온 칩 메모리를 이용한 기밀 정보 보안 장치 및 보안 방법
US6441641B1 (en) Programmable logic device with partial battery backup
US7058177B1 (en) Partially encrypted bitstream method
US7117373B1 (en) Bitstream for configuring a PLD with encrypted design data
US6931543B1 (en) Programmable logic device with decryption algorithm and decryption key
US6981153B1 (en) Programmable logic device with method of preventing readback
KR100397316B1 (ko) 기억 장치, 암호화ㆍ복호화 장치 및 불휘발성 메모리의액세스 방법
JP4112188B2 (ja) データ記憶装置
US6366117B1 (en) Nonvolatile/battery-backed key in PLD
KR100301409B1 (ko) 반도체기억장치
US6965675B1 (en) Structure and method for loading encryption keys through a test access port
US6957340B1 (en) Encryption key for multi-key encryption in programmable logic device
US7076667B1 (en) Storage device having secure test process
US7117372B1 (en) Programmable logic device with decryption and structure for preventing design relocation
US20160140057A1 (en) Semiconductor device and encryption key writing method
JP3638770B2 (ja) テスト機能を備える記憶装置
JP2006164273A (ja) 保安ブート装置及び方法
US8140862B2 (en) Memory device
KR100568003B1 (ko) 부정 복사를 방지한 비휘발성 반도체 메모리
JPWO2005004382A1 (ja) 暗号処理装置
US7262629B2 (en) Apparatus and method for protecting from illegal copy
US7272856B2 (en) Decryption device
JP2004259385A (ja) 半導体記憶装置
JP2000181802A (ja) 半導体記憶装置
JP2004014079A (ja) 半導体記録媒体及びその記録装置、再生装置並びに記録方法と制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100426

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110826

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

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

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees