(57)【要約】    【課題】      専用の復号回路を用いることなく、暗号化されたコンフィギュレーションデータにより設計情報の秘匿性を確保可能なプログラマブル論理回路を提供する。    【解決手段】  暗号化されたコンフィギュレーションビットストリームは、コンフィギュレーションチェーン６を通過しながらアレイ状のＰＥ４に形成された各コンフィギュレーション回路２のレジスタ(図示せず)にロードされる。このとき、入力されたコンフィギュレーションビットストリームはコンフィギュレーションチェーン６を通過する過程で値が変化するので、アレイ状に配列されたＰＥ４の中で目的のＰＥに達する時点でどのような値になるかについて設計者以外は知り得ない。したがって、所望の２箇所におけるコンフィギュレーション回路２の間に帰還回路４０ａを設けてデータを帰還すれば、データが攪拌されるので、第三者がコンフィギュレーションデータを推定することは困難になる。  【選択図】      図７
2006180375.tif 000002
【特許請求の範囲】
【請求項１】
直列に接続された各々のレジスタに対してコンフィギュレーションデータをシフトインすることにより、そのコンフィギュレーションデータを前記各々のレジスタにロードするプログラマブル論理回路であって、
前記各々のレジスタのうち、所望のレジスタに接続された演算器と、
他のレジスタの接続部から前記演算器に対して前記コンフィギュレーションデータを帰還させる帰還回路と、
を備えることを特徴とするプログラマブル論理回路。
【請求項２】
直列に接続された各々のレジスタに対してコンフィギュレーションデータをシフトインすることにより、そのコンフィギュレーションデータを前記各々のレジスタにロードするプログラマブル論理回路であって、
前記各々のレジスタのうちの所望のレジスタに接続され、前記コンフィギュレーションデータのビットの並べ替えを行うビット並び替え回路を備えることを特徴とするプログラマブル論理回路。
【請求項３】
前記各々のレジスタのうちの所望のレジスタに接続され、前記コンフィギュレーションデータのビットの並べ替えを行うビット並び替え回路を備え、
前記ビット並び替え回路は、前記コンフィギュレーションデータの帰還によりループをなすレジスタの接続部の一部に挿入されていることを特徴とする請求項１に記載のプログラマブル論理回路。
【請求項４】
直列に接続された各々のレジスタに対してコンフィギュレーションデータをシフトインすることにより、そのコンフィギュレーションデータを前記各々のレジスタにロードするプログラマブル論理回路であって、
秘密鍵情報を保存する記憶素子と、
所望のレジスタの接続部を通過する前記コンフィギュレーションデータと前記記憶素子から取得した秘密鍵情報との間で特定の演算処理を行う特定の演算器と、
を備えることを特徴とするプログラマブル論理回路。
【請求項５】
秘密鍵情報を保存する記憶素子と、
所望のレジスタの接続部を通過するコンフィギュレーションデータと前記記憶素子から取得した秘密鍵情報との間で特定の演算処理を行う特定の演算器とを備え、
前記記憶素子と前記特定の演算器は、前記コンフィギュレーションデータの帰還によりループをなすレジスタの接続部の一部に挿入されていることを特徴とする請求項１乃至請求項３のいずれかに記載のプログラマブル論理回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュリティ機能を備えたＬＳＩのプログラマブル論理回路に関し、特に、コンフィギュレーションデータの秘匿性を確保できるプログラマブルロジックアレイなどのような、秘匿化されたコンフィギュレーションデータを内部で復号化することができるプログラマブル論理回路に関する。
【背景技術】
【０００２】
従来より、電気的に機能を再構成できるＬＳＩのディジタル信号処理デバイスとして、ＦＰＧＡ（Field Programmable Logic Array）やＡＬＵ（Arithmetic and Logical Unit）アレイ型プロセッサなどが知られている。以下、これらを総称してプログラマブルロジックアレイと呼ぶことにする。プログラマブルロジックアレイにおいては、コンフィギュレーションデータと呼ばれるディジタルデータをロード（書き込み）することにより、多種の論理回路（ロジック）を実現することができる。例えば、１つのＦＰＧＡに第一のコンフィギュレーションデータをロードすることにより離散コサイン変換処理回路を実現することができ、さらに、同一のＦＰＧＡに別のコンフィギュレーションデータをロードすることにより離散ウェーブレット変換処理回路を実現することができる。
【０００３】
したがって、プログラマブルロジックアレイを利用して製品を設計する場合には、実現しようとする機能に合わせてコンフィギュレーションデータを設計してロードすればよい。このことは、別の面では、悪意を持つ第三者がコンフィギュレーションデータを解析することにより、製品が実現する機能を容易に解析されてしまうというリスクをもたらすことになる。例えば、ＳＲＡＭ（Static Random Access Memory）型ＦＰＧＡには、外部のフラッシュメモリやＲＯＭにコンフィギュレーションデータを保存しておき、ブート時にＦＰＧＡへロードするタイプのものがある。この構成においては、一般的にフラッシュメモリは汎用品であり、また、ＬＳＩの外部でＦＰＧＡと接続されているため、容易にコンフィギュレーションデータの内容を読み取られてしまう。
【０００４】
したがって、従来、プログラマブルロジックアレイにおける設計情報の機密を保持する必要がある場合には、一度しか書き込みのできないアンチフューズ型ＦＰＧＡや、不揮発型メモリを内蔵したＦＰＧＡなどが用いられている。しかし、これらのデバイスは、安価なフラッシュメモリを利用できるＳＲＡＭ型ＦＰＧＡに比べてコストが高い割に性能面が劣るものであった。さらに、近年では、ネットワークを介してコンフィギュレーションデータを配信しようとする試みがなされており、プログラマブルロジックアレイのコンフィギュレーションデータにおける秘匿性の確保は大きな課題となっている。このような秘匿性の課題を解決する１つの方法として、コンフィギュレーションデータを暗号化する方法が知られている。
【０００５】
特許文献１では、暗号化されたコンフィギュレーションデータをＬＳＩの内部における専用の復号回路によって復号化し、ＦＰＧＡをプログラムすることによってコンフィギュレーションデータの秘匿性を確保する技術が開示されている。
【０００６】
さらに、プログラマブルロジックの内部に秘密鍵情報をあらかじめ保存しておき、ロードされたデータと秘密鍵情報との間で排他的論理和（ＸＯＲ）を計算することにより、コンフィギュレーションデータを求める技術が開示されている。この技術によれば、秘密鍵情報が漏洩しない限りコンフィギュレーションデータの秘匿性は守られる（例えば、特許文献２参照）。
【０００７】
すなわち、一般的な秘密鍵（共通鍵）暗号によるコンフィギュレーションデータの秘匿方法は、プログラマブルロジック内部に復号回路を持たせ、暗号化されたコンフィギュレーションデータをチップ内部の復号回路で復号化することによって秘匿性を確保している。例えば、Ｘｉｌｉｎｘ社やＡｌｔｅｒａ社のハイエンドＦＰＧＡでは、このような目的の復号回路が実装されている。
【特許文献１】特開２００２−５０９５６号公報
【特許文献２】特開２００３−３０３０９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、前記の特許文献１に記載された技術では、コンフィギュレーションデータを復号化するために別途に復号回路が必要となるので、回路規模が増大し、ＬＳＩのコストが高くなるという問題がある。また、復号化に要する処理時間によってコンフィギュレーションデータをロードする速度が制限されてしまう。
【０００９】
さらに、前記の特許文献２に記載された技術では、コンフィギュレーションデータを保護するためには、コンフィギュレーションデータと同等のデータ量の秘密鍵情報が必要となる。つまり、コンフィギュレーションデータと同等のデータ量の秘密鍵情報を保持しなければ、ロードするデータの一部を変化させたデータをロードしてプログラマブルロジックの動作を観察することによって、秘密鍵情報が容易に解読されてしまう。したがって、特許文献２に開示された技術によってコンフィギュレーションデータを保護するためには、多量の記憶素子が必要となり、その結果、プログラマブルロジックのコストを増大させてしまう。
【００１０】
本発明はかかる点に鑑みてなされたものであり、専用の復号回路を用いないで暗号化したコンフィギュレーションデータをプログラマブルロジック内部で復号することにより、コンフィギュレーションデータを保護することができるプログラマブル論理回路を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために、本発明のプログラマブル論理回路は、直列に接続された各々のレジスタに対してコンフィギュレーションデータをシフトインすることにより、そのコンフィギュレーションデータを各々のレジスタにロードするプログラマブル論理回路であって、各々のレジスタのうち所望のレジスタに接続された演算器と、他のレジスタの接続部から演算器に対してコンフィギュレーションデータを帰還させる帰還回路とを備える構成を採っている。
【００１２】
すなわち、本発明のプログラマブル論理回路は、直列に接続されたレジスタに対しコンフィギュレーションデータをシフトインすることにより、そのコンフィギュレーションデータをレジスタにロードするプログラマブル論理回路において、レジスタの接続部に演算器を備えていて、別のレジスタの接続部から帰還させたコンフィギュレーションデータをその演算器に入力することにより、入力データを変化させるコンフィギュレーションデータを生成することができる。したがって、このような構成によれば、コンフィギュレーションデータの帰還によりそのコンフィギュレーションデータが撹拌されるため、秘密の演算器により入力データからコンフィギュレーションデータを生成される過程を推定することが困難となる。その結果、コンフィギュレーションデータの秘匿性を高いレベルで確保することができる。
【００１３】
また、本発明のプログラマブル論理回路は、直列に接続された各々のレジスタに対してコンフィギュレーションデータをシフトインすることにより、そのコンフィギュレーションデータを各々のレジスタにロードするプログラマブル論理回路であって、各々のレジスタのうちの所望のレジスタに接続され、コンフィギュレーションデータのビットの並べ替えを行うビット並び替え回路を備える構成を採っている。
【００１４】
このような構成によれば、所望の位置に配置されたビット並び替え回路によってコンフィギュレーションデータのビットの並べ替えを行うので、コンフィギュレーションデータがビット単位で撹拌されるためにコンフィギュレーションデータの秘匿性を高めることができる。
【００１５】
また、本発明のプログラマブル論理回路は、前記発明の構成に加えて、各々のレジスタのうちの所望のレジスタに接続され、コンフィギュレーションデータのビットの並べ替えを行うビット並び替え回路を備え、そのビット並び替え回路は、コンフィギュレーションデータの帰還によりループをなすレジスタの接続部の一部に挿入される構成を採っている。
【００１６】
すなわち、本発明のプログラマブル論理回路は、コンフィギュレーションデータの帰還によりループをなす帰還回路の構成に加えて、レジスタの接続部の一部にビット並び替え回路を挿入する構成を採っている。このような構成によれば、コンフィギュレーションデータが帰還回路によって攪拌されると共にビット単位で撹拌されるため、コンフィギュレーションデータの秘匿性をさらに高めることができる。
【００１７】
また、本発明のプログラマブル論理回路は、直列に接続された各々のレジスタに対してコンフィギュレーションデータをシフトインすることにより、そのコンフィギュレーションデータを各々のレジスタにロードするプログラマブル論理回路であって、秘密鍵情報を保存する記憶素子と、所望のレジスタの接続部を通過するコンフィギュレーションデータと記憶素子から取得した秘密鍵情報との間で特定の演算処理を行う特定の演算器とを備える構成を採っている。
【００１８】
このような構成によれば、秘密鍵情報を記憶する記憶素子と特定の演算器を所望の位置に配置することにより、コンフィギュレーションデータを解析するために秘密鍵情報と演算器の位置を推定する必要が生じるため、コンフィギュレーションデータの秘匿性を高めることができる。
【００１９】
また、本発明のプログラマブル論理回路は、前記各発明の構成に加えて、秘密鍵情報を保存する記憶素子と、所望のレジスタの接続部を通過するコンフィギュレーションデータと記憶素子から取得した秘密鍵情報との間で特定の演算処理を行う特定の演算器とを備え、記憶素子と特定の演算器は、コンフィギュレーションデータの帰還によりループをなすレジスタの接続部の一部に挿入される構成を採っている。
【００２０】
すなわち、本発明のプログラマブル論理回路は、コンフィギュレーションデータの帰還によりループをなす帰還回路や、コンフィギュレーションデータのビットの並べ替えを行うビット並び替え回路の構成に加えて、秘密鍵情報を保存する記憶素子を備え、その記憶素子はコンフィギュレーションデータの帰還によりループをなすレジスタの接続部の一部に挿入されている。このような構成によれば、コンフィギュレーションデータが帰還回路によって攪拌され、かつビット単位で撹拌されると共に、コンフィギュレーションデータを解析するために、秘密鍵情報を取得する必要が生じるため、コンフィギュレーションデータの秘匿性を一段と高めることができる。
【発明の効果】
【００２１】
本発明のプログラマブル論理回路によれば、元来プログラマブルロジックが持つロード回路に若干の変更を加えるだけでコンフィギュレーションデータの秘匿性を実現することができる。これによって、わずかな回路規模の増加だけでコンフィギュレーションデータの秘匿性を確保することができる。また、本発明のプログラマブル論理回路では、ループ構造をとることによってシンプルな構造にもかかわらず演算の複雑さを大幅に向上させることができる。つまり、本発明プログラマブル論理回路は、演算が複雑であることが暗号を解読されにくいということにつながる点で従来技術に比べて優れている。
【発明を実施するための最良の形態】
【００２２】
（発明の概要）
本発明のプログラマブル論理回路は、専用の復号回路を用いることなく、暗号化されたコンフィギュレーションデータをプログラマブルロジック内部で復号することにより、ＦＰＧＡやＡＬＵアレイ型プロセッサなどのプログラマブルロジックにおいてコンフィギュレーションデータが読まれないように保護している。
【００２３】
すなわち、レジスタを直列に接続した（つまり、数珠繋ぎにした）回路によってコンフィギュレーションデータをロードする方式において、従来のプログラマブル論理回路では単に１列に接続しているのに対し、本発明のプログラマブル論理回路では、レジスタの接続を部分的にループさせてループ内で特定の演算処理を行っている。このような構成によって、本発明のプログラマブル論理回路では、入力されたコンフィギュレーションデータは上記演算によって値が変わってしまうので、演算処理内容から逆算して本来のコンフィギュレーションデータと異なる値のデータ列を入力する必要がある（つまり、ループ内での特定の演算処理が復号化に相当し、逆算することが暗号化に相当する）。つまり、本発明のプログラマブル論理回路は、専用の復号回路を用いないで演算処理の内容を複雑化することによって、コンフィギュレーションデータについて高い秘匿性を確保している。
【００２４】
また、本発明のプログラマブル論理回路では、演算処理内容を秘密にすることで、設計者以外は入力されるコンフィギュレーションデータを見ても、本来のコンフィギュレーションデータ（例えば、ＦＰＧＡがどのようにプログラムされているかという情報）を知ることができない。特定の演算処理としては、（１）ループする部分でのＸＯＲ（または算術加算）、（２）ビットの並び替え、（３）秘密鍵とコンフィギュレーションデータとのＸＯＲ（または算術加算）などの処理を行う。なお、これらの特定の演算処理は、公知の暗号アルゴリズムによって基本的な演算として用いられる処理を適用することができる。
【００２５】
以下、図面を用いて、本発明におけるプログラマブル論理回路の実施の形態の幾つかを詳細に説明する。尚、各実施の形態に用いる図面において、同一の構成要素は同一の符号を付し、かつ重複する説明は可能な限り省略する。なお、以下に述べる実施の形態では、プログラマブル論理回路としてプログラマブルロジックアレイのモデルを適用した場合を例に挙げて説明する。また、本発明の理解を容易にするために、本発明のプログラマブルロジックアレイを構成する前提となる従来のプログラマブルロジックアレイから順を追って説明することにする。
【００２６】
（実施の形態１）
図１は、従来から知られている一般的なプログラマブルロジックアレイのモデルを示す構成図である。本発明のプログラマブルロジックアレイは図１の構成図を前提としている。図１において、プログラマブルロジックアレイ１は、コンフィギュレーション回路２とプログラマブル演算器３からなるＰＥ（Processing Element）４と呼ばれる小さな演算器を多数アレイ状に配列した構成となっている。これらのアレイ状のＰＥ４はインターコネクトバス５によって接続され、各ＰＥ４の間でデータの受け渡しが行われるようになっている。また、各ＰＥ４のコンフィギュレーション回路２はコンフィギュレーションチェーン６によって直列に接続され、その終端が入力ピン７と出力ピン８に接続されている。
【００２７】
プログラマブル演算器３は実際にデータ処理を行う部分であり、このプログラマブル演算器３の機能は設計者により変更することが可能である。その機能はコンフィギュレーション回路２によって設定することができるがその詳細は後述する。すなわち、ＰＥ４はプログラマブルロジックエレメントとも言われ、ＰＥ４の機能はコンフィギュレーション回路２のコンフィギュレーションデータによって決定される。また、各コンフィギュレーション回路２を直列に接続するコンフィギュレーションチェーン６は、コンフィギュレーションデータをロードするためのロード回路としての機能を備えている。
【００２８】
図２は、図１におけるコンフィギュレーション回路２とコンフィギュレーションチェーン６の接続を詳細に示した構成図である。なお、この図ではインターコネクトバスは省略されている。図２に示すように、各コンフィギュレーション回路２は、コンフィギュレーションチェーン６によってディジーチェーン状（つまり、数珠繋ぎ）に直列に接続されている。以下、このようなネットワークをコンフィギュレーションチェーン６と呼ぶことにする。また、コンフィギュレーションチェーン６の一方の端は入力ピン７に接続されており、この入力ピン７からデータを連続的に入力することにより、そのデータはコンフィギュレーションチェーン６を通ってコンフィギュレーション回路２のアレイ全体に配布される。以下、コンフィギュレーションチェーン６の入力ピン７から入力されるデータをコンフィギュレーションビットストリームという。また、各コンフィギュレーション回路２に保持され、プログラマブル演算器３を設定するデータをコンフィギュレーションデータという。
【００２９】
図３は、図１に示すプログラマブルロジックアレイ１における、ＡＬＵを中心として構成されたＰＥ４の内部構成とコンフィギュレーション動作を示す図である。つまり、図３は、ＰＥ４の内部についてより詳細に説明すると共にコンフィギュレーション回路２の動作を説明するための図である。ＰＥ４は、ＡＬＵ（Arithmetic Logic Unit）を中心として構成されるものや、ＬＵＴ（Look Up Table）を中心として構成されるものなど、さまざまな構成のものが知られているが、いずれの構成もコンフィギュレーション回路２とプログラマブル演算器３の機能を持っているという基本構成に変わりはなく、具体的な構成は本発明に直接影響するものではない。
【００３０】
図３の例では、ＡＬＵ１３を中心として構成されるＰＥの内部とインターコネクトバスの一部を図示している。なお、図３の例では、インターコネクトバスはデータバス１１とスイッチ回路１２から構成されている。ＰＥのプログラマブル演算器３は、算術・論理演算を行うＡＬＵ１３と、ＡＬＵ１３への入力データを選択するスイッチ回路１４と、演算結果を保持するレジスタ１５と、ＰＥからの出力データを決定するセレクタ１６とによって構成されている。また、コンフィギュレーション回路２は、コンフィギュレーションチェーン６に接続されたレジスタ１７と、デコーダ１８と、コンフィギュレーションデータを記憶するコンフィギュレーションメモリ１９とによって構成されている。
【００３１】
図３においてコンフィギュレーション回路２は次のように動作する。コンフィギュレーションチェーン６を経由し入力されたデータ（つまり、コンフィギュレーションビットストリーム）はレジスタ１７に保持される。このデータは、次のサイクルにおいて、コンフィギュレーションチェーン６を経由して次段のディジーチェーンのＰＥ内部におけるコンフィギュレーション回路２のレジスタ１７に転送される。それと共に、そのデータ（つまり、コンフィギュレーションビットストリーム）は自己のＰＥ内部のデコーダ１８に入力される。
【００３２】
すると、デコーダ１８は、入力されたデータの内容を解読し、そのＰＥが使用すべきデータであると判断された場合には、コンフィギュレーションメモリ１９を制御して入力されたデータを書き込む。コンフィギュレーションメモリ１９の内容は、プログラマブル演算器３の機能、すなわち、ＡＬＵ１３の命令、スイッチ回路１４の接続情報、及びセレクタ１６の選択ビットを指定する。したがって、コンフィギュレーションメモリ１９を書き換えることによって、プログラマブル演算器３におけるＡＬＵ１３、スイッチ回路１４、及びセレクタ１６の機能を変更することができる。なお、プログラマブルロジックアレイは、数百〜数万のＰＥを持ち、コンフィギュレーションチェーン６のビット幅は１〜８ｂｉｔである。したがって、上記の動作は、全てのコンフィギュレーションメモリ１９にデータをセットし終わるまで、数百〜数万サイクル繰り返えされる。
【００３３】
図４は、図１に示すプログラマブルロジックアレイ１における、ＬＵＴを中心として構成されたＰＥの内部構成とコンフィギュレーション動作を示す図である。つまり、この図は、４入力で１出力のＬＵＴを中心としたＰＥの構成例を示している。図４に示すＬＵＴ２１を中心として構成されたＰＥは、図３に示すＡＬＵ１３を中心として構成されたＰＥと比較して、データバス１１とスイッチ回路１２からなるインターコネクトバス及びコンフィギュレーション回路２の構成要素は同じである。しかし、プログラマブル演算器３は、ＬＵＴ２１と、１ビットの記憶素子からなるＦＦ（Flip Flop）２２と、セレクタ２３とによって構成されている。この構成においても、コンフィギュレーション回路２の動作は図３の場合とほぼ同じである。なお、図４の例におけるＬＵＴ２１はそれ自身がメモリを持っているため、コンフィギュレーション回路２により直接制御され、コンフィギュレーションデータによってＬＵＴ２１のテーブル値が書き込まれる。
【００３４】
図５は、図２のプログラマブルロジックアレイの回路に復号回路を付加した従来技術の一例を示すＬＳＩの構成図である。つまり、図５は、前記の特許文献１で開示された技術である、暗号化されたコンフィギュレーションデータをＬＳＩの内部における復号回路によって復号化し、ＦＰＧＡをプログラムすることによってコンフィギュレーションデータの秘匿性を確保する技術を、図２のプログラマブルロジックアレイの回路に適用したものである。すなわち、図５に示すプログラマブルロジックアレイを含むＬＳＩは、図２のプログラマブルロジックアレイの回路に復号回路３１と秘密鍵３２が付加された構成となっている。
【００３５】
図５に示すプログラマブルロジックアレイを含むＬＳＩの技術は、コンフィギュレーションビットストリームを暗号化して入力し、秘密鍵３２を用いてＬＳＩ内部の復号回路３１によって復号化することにより、コンフィギュレーションデータの秘匿性を確保しようとするものである。暗号技術としては、ＡＥＳ（Advanced Encryption Standard）やＤＥＳ（Data Encryption Standard）など、規格化された一般的な秘密鍵（共通鍵）暗号方式が利用される。この技術を適用した一つの形態は、図５に示すように暗号化ビットストリームの復号回路３１と、秘密鍵３２を保持する不揮発メモリ(図示せず)と、プログラマブルロジックアレイとを単一のＬＳＩとして実現したものである。
【００３６】
この技術の利点としては、一般的に知られている暗号方式を用いることができるため、復号回路３１の設計資産が豊富であることや、コンフィギュレーションビットストリームの生成ソフトが容易に作成できることなどが挙げられる。一方、欠点としては、復号回路３１を追加するために回路規模が増大することや、復号処理のためにコンフィギュレーションビットストリームのロード速度が制限されることなどが挙げられる。特に、処理時間に関して、例えば、ＤＥＳより暗号強度の高い方式として知られる３ＤＥＳ（Triple-DES）の一般的な復号回路においては、１ブロック（６４ビット）を処理するために４８サイクルを必要とする。したがって、１サイクル２ビット以上の高速なコンフィギュレーションを行うためには復号回路において並列処理を行う必要がある。そのため、さらなる回路規模の増大を招くおそれがある。
【００３７】
図６は、図３に示すＡＬＵを中心として構成されたＰＥの内部構成に秘密鍵メモリを付加した従来技術の一例を示す回路図である。つまり、図６は、前述の特許文献２に開示された技術である。この技術は、プログラマブルロジックの内部に秘密鍵情報をあらかじめ保存しておき、ロードされたデータと秘密鍵情報との間で排他的論理和（ＸＯＲ）を計算することによりコンフィギュレーションデータを求める技術であり、図６のＰＥの回路構成は、図３のＰＥの回路構成に対して秘密鍵メモリ２４が追加された構成となっている。この技術は、コンフィギュレーションデータに対し秘密鍵データを加算（排他的論理和）することによってコンフィギュレーションデータを保護しようというものである。
【００３８】
この技術によれば、秘密鍵メモリ２４に格納されている秘密鍵データを知らない限り、プログラマブル演算器３を所望の機能に設定することはできない。また、秘密鍵メモリ２４に格納されている秘密鍵データを知らない限り、コンフィギュレーションビットストリームからプログラマブル演算器３の機能を特定することもできない。このような性質からコンフィギュレーションデータの秘匿性を確保することができる。
【００３９】
この技術の利点はコンフィギュレーションの速度を低下させないことである。また、欠点としては、秘密鍵メモリ２４のサイズが大きくなるために回路規模の増大を招くことである。さらに、演算処理が単純であるために暗号強度が弱いなどの懸念もある。すなわち、コンフィギュレーションビットストリームの一部だけを変化させたビットストリームを次々にロードして行けば、回路の動作が観察されてしまって秘密鍵メモリの内容を解読される危険性がある。
【００４０】
そこで、本発明の実施の形態１では、専用の復号回路を用いなくても、特定の演算処理を行うことによってコンフィギュレーションデータの秘匿性を確保する技術を実現している。図７は、本実施の形態におけるプログラマブルロジックアレイの構成図である。図７のプログラマブルロジックアレイは、図２のプログラマブルロジックアレイの構成を基本として描かれているので、インターコネクトバスは省略されている。
【００４１】
図７において、実施の形態１のプログラマブルロジックアレイ１ａは、コンフィギュレーション回路２とプログラマブル演算器３からなるＰＥ４がアレイ状に配列された構成となっている。これらのアレイ状のＰＥ４は図示しないインターコネクトバスによって接続され、各ＰＥ４との間でデータの受け渡しが行われるようになっている。また、各ＰＥ４のコンフィギュレーション回路２はコンフィギュレーションチェーン６によってディジーチェーン状に直列に接続され、その終端が入力ピン７と出力ピン８に接続されている。さらに、実施の形態１のプログラマブルロジックアレイ１ａは、コンフィギュレーションチェーン６に破線で示すような帰還回路４０ａ，４０ｂ，４０ｃが付加されたループ構造となっている。このような帰還回路４０ａ，４０ｂ，４０ｃを挿入する場所は設計者以外に知られないように秘密にしておく。
【００４２】
このような構成によれば、入力されたコンフィギュレーションビットストリームはコンフィギュレーションチェーン６を通過する過程で値が変化するので、アレイ状に配列されたＰＥ４の中で目的のＰＥに達する時点でどのような値になるかについては設計者以外は知り得ない。言い方を変えれば、目的のＰＥにおけるコンフィギュレーションデータと帰還回路４０ａ，４０ｂ，４０ｃの構造から、入力すべきコンフィギュレーションビットストリームを逆算することができる。このコンフィギュレーションビットストリームから、実際の回路構造（コンフィギュレーションデータ）を知ることができるのは、帰還回路の構造を知っている設計者だけである。つまり、入力されたコンフィギュレーションビットストリームのデータは、帰還回路４０ａ，４０ｂ，４０ｃによって帰還されて攪拌されるので、第三者にデータを解読されるおそれがなくなり、結果としてデータの秘匿性は確保される。
【００４３】
図７に示すような実施の形態１のプログラマブルロジックアレイ１ａの構成によれば、コンフィギュレーションデータのロード時間を増加させることなく、コンフィギュレーションデータの秘匿性を高めることができる。また、実施の形態１によって追加された回路要素は、帰還回路４０ａ，４０ｂ，４０ｃの配線と少しの演算器のみであるので、従来のプログラマブルロジックアレイに比べて回路規模の増加はわずかである。
【００４４】
（実施の形態２）
実施の形態２では、前述の実施の形態１におけるプログラマブルロジックアレイをさらに改良したプログラマブルロジックアレイの回路構成を提案する。図８は、本実施の形態におけるプログラマブルロジックアレイの構成図である。図８のプログラマブルロジックアレイは、図２のプログラマブルロジックアレイの構成を基本として描かれているので、インターコネクトバスは省略されている。
【００４５】
図８に示す実施の形態２のプログラマブルロジックアレイ１ｂは、図２のプログラマブルロジックアレイの構成に対して、コンフィギュレーションチェーン６にビット並び替え回路４１ａ，４１ｂ，…４１ｎが挿入されている。これらのビット並び替え回路４１ａ，４１ｂ，…４１ｎの配置パターンは、設計者以外には秘密とすることでコンフィギュレーションデータの秘匿性を高めることができる。
【００４６】
図９は、図８に示すプログラマブルロジックアレイ１ｂにおけるビット並び替え回路の一例を示す図である。図９のビット並び替え回路の例では、コンフィギュレーションチェーン６のアドレス線とデータ線が分かれており、それぞれ４ビットの幅を持っている。図９に示すように、アドレス４ビットに対しては並び替えが行われず、入力されたビット順に出力される。しかし、データ４ビットについては、［ｄ３，ｄ２，ｄ１，ｄ０］という入力ビットの並びに対し［ｄ'０，ｄ'１，ｄ'３，ｄ'２］の順で出力される。このようにして、データのみビット並び替えを行うことによって、コンフィギュレーションデータの秘匿性を高めた上で制御を容易にしている。また、図８に示すようなビットの並び替え回路と図７で示した実施の形態１の帰還回路とを併せて用いることによって、データを撹拌する効果が高められるので、さらに高い秘匿性を確保することができる。
【００４７】
（実施の形態３）
実施の形態３では、前述の実施の形態２におけるプログラマブルロジックアレイよりさらにコンフィギュレーションデータの秘匿性を高めることができるプログラマブルロジックアレイの回路構成を提案する。図１０は、本実施の形態におけるプログラマブルロジックアレイの構成図である。図１０のプログラマブルロジックアレイは、図２のプログラマブルロジックアレイの構成を基本として描かれているので、インターコネクトバスは省略されている。
【００４８】
図１０に示す実施の形態３のプログラマブルロジックアレイ１ｃでは、図２に示すプログラマブルロジックアレイに対して、秘密鍵情報を保存するための秘密鍵メモリ４３ａ，４３ｂ，４３ｃ，４３ｄと、コンフィギュレーションチェーン６上を通過するデータと秘密鍵情報との演算を行う演算回路４４ａ，４４ｂ，４４ｃ，４４ｄとが追加された構成となっている。このような構成によれば、秘密鍵情報が漏洩しない限り、コンフィギュレーションデータの秘匿性を高いレベルで確保することができる。
【００４９】
また、図１０に示すプログラマブルロジックアレイ１ｃの構成と図７で示した帰還回路とを組み合わせることでさらに秘匿性を高めることができる。このとき、帰還回路の部分と秘密鍵を加える部分では別の演算を用いてビットの撹拌効果を高めると、さらに秘匿性の効果が向上する。例えば、帰還回路の部分では排他的論理和を用い、秘密鍵を加える部分では算術和（通常の加算）を行うと秘匿性の効果は一段と向上する。また、図１０に示すプログラマブルロジックアレイ１ｃの構成に図８で示したビット並び替え回路を挿入することにより、ビットの撹拌効果を得ることができるのでさらに秘匿性を高めることができる。もちろん、図７で示した帰還回路と図８で示したビット並び替え回路とを併用して図１０に示すプログラマブルロジックアレイ１ｃに適用すれば、さらなる秘匿性の向上を実現することができる。
【００５０】
（実施の形態４）
図１１は、本発明の実施の形態４におけるプログラマブルロジックアレイの構成図である。図１１のプログラマブルロジックアレイは、図２のプログラマブルロジックアレイの構成を基本として描かれているので、インターコネクトバスは省略されている。図１１は最も望ましいプログラマブルロジックアレイの構成例が示されている。すなわち、図１１に示すプログラマブルロジックアレイ１ｄは、図７の帰還回路、図８のビット並び替え回路、及び図１０の秘密鍵メモリ及び演算回路を複合して使用した場合のプログラマブルロジックアレイの構成図である。
【００５１】
すなわち、図１１に示す実施の形態４におけるプログラマブルロジックアレイ１ｄでは、帰還回路４０ａ，４０ｂ，４０ｃを基本として、ビット並び替え回路４１ａ，４１ｂ，…４１ｎを挿入することでデータの撹拌効果を高め、さらに、秘密鍵メモリ４３ａ，４３ｂ，４３ｃ，４３ｄと演算回路４４ａ，４４ｂ，４４ｃ，４４ｄとによって実現される秘密鍵を付加することで、悪意の第三者によるコンフィギュレーションデータの解析を一層困難とし、秘匿性を一段と高めることができる。
【００５２】
なお、図１１の実施の形態４では、ビットの並び替えと秘密鍵との演算を併用する方法を示したが、他にもＳ−Ｂｏｘ（テーブルの参照）や有限体上の乗算など、一般的に知られている暗号方式で用いられる演算手法を挿入することも可能である。しかし、いずれの演算手法を挿入した場合でもそれだけでは秘匿性は不十分であるので、図７の実施の形態１で提案した帰還回路を付加することによってその効果が高められ、十分な秘匿性を確保することができる。
【００５３】
すなわち、図１１に示すように、コンフィギュレーションチェーン６を通過するコンフィギュレーションデータによって、プログラマブルロジックエレメントであるＰＥ４の機能が決定される。このとき、破線で囲んだ帰還回路４０ａ，４０ｂ，４０ｃのフィードバックによって、内部でコンフィギュレーションデータがどのように変化するかを解析することを困難にしているので、コンフィギュレーションデータの秘匿性を充分に確保することができる。このようなフィードバックループの構造を基本として、ビットの並び替えや秘密鍵を併用することによって秘匿性の効果を大幅に高めることができる。なお、本発明では、フィードバックループ構造によって、コンフィギュレーションチェーン６の端から１つずつデータを解析していくという常套手段を防いでいる意味は大きい。
【００５４】
（実施の形態５）
実施の形態５では、前述の実施の形態１乃至４におけるプログラマブルロジックアレイを容易に製造するためのプログラマブルロジックアレイの回路構成を提案する。図１２は、本実施の形態におけるプログラマブルロジックアレイの構成図である。図１２のプログラマブルロジックアレイは、図７のプログラマブルロジックアレイの構成を基本として描かれているので、インターコネクトバスは省略されている。
【００５５】
図１２に示す実施の形態５のプログラマブルロジックアレイ１ｅでは、図７のプログラマブルロジックアレイ１ａに対して、帰還回路４０ａ，４０ｂ，４０ｃの代わりにスイッチ付帰還回路４５ａ，４５ｂ，…４５ｎが付加されている。ここで、スイッチ付帰還回路４５ａ，４５ｂ，…４５ｎはそれぞれスイッチ４６ａ，４６ｂ，…４６ｎを備える。
【００５６】
プログラマブルロジックアレイ１ｅは、すべてのスイッチ４６ａ，４６ｂ，…４６ｎを開放したとき、図２のプログラマブルロジックアレイ１と全く同じ機能となる。また、プログラマブルロジックアレイ１ｅは、３つのスイッチ４６ａ，４６ｂ，４６ｃを短絡し、その他のスイッチ４６ｄ，４６ｅ，…４６ｎを開放したとき、図７のプログラマブルロジックアレイ１ａと全く同じ機能となる。
【００５７】
すなわち、本実施の形態のプログラマブルロジックアレイの回路構成によればＬＳＩを製造した後でも帰還回路の挿入位置を設定することができ、その結果としてユーザ（コンフィギュレーションデータの設計者）ごとに異なるＬＳＩを製造する必要がなくなるため、コンフィギュレーションデータの秘匿化機能を備えたプログラマブルロジックを容易に量産することができる。
【００５８】
ところで、スイッチ４６ａ，４６ｂ，…４６ｎの開閉は、コンフィギュレーションデータと同様、悪意を持った第三者にスイッチ４６ａ，４６ｂ，…４６ｎの状態を読み取られないように、安全な方法で設定する必要がある。この解決方法として、以下のものが挙げられる。
【００５９】
まず第１の方法は、スイッチ４６ａ，４６ｂ，…４６ｎの設定情報を不揮発メモリに保存することである。ＦＰＧＡの内部回路の設計者は、スイッチの設定情報を不揮発メモリに保存し、さらにスイッチの設定情報に基づきコンフィギュレーションビットストリームを秘匿化した上で商品を出荷することで、設計情報の機密を保持することができる。なお、スイッチの設定情報は、プログラマブル演算器の設定情報（すなわちコンフィギュレーションデータ）に比べ容量がずっと小さく、またスイッチの設定情報を変更する機会が少ないため、不揮発メモリ型ＦＰＧＡの持つ課題はほとんど問題にならない。
【００６０】
また、第２の方法は、アンチフューズ型ＦＰＧＡと同様の技術を用いてスイッチ４６ａ，４６ｂ，…４６ｎを１度のみ変更可能とすることである。この方法においても、スイッチの状態は設計者以外知りえないため、本発明の技術によってコンフィギュレーションデータの秘匿性を確保することができる。
【００６１】
以上、実施の形態５では、秘匿化のための機能をＬＳＩ製造後にも変更可能とする技術を提案し、説明した。ここでは、実施の形態１と対応し、帰還回路４０ａ，４０ｂ，４０ｃをプログラマブルな回路要素であるスイッチ付帰還回路４５ａ，４５ｂ，…４５ｎに置き換えることで、実質的に帰還回路の挿入位置を自由に設定する方法を示した。同様にして、実施の形態２乃至４と対応し、ビット並び替え回路４１ａ，４１ｂ，…４１ｎおよび秘密鍵メモリ４３ａ，４３ｂ，４３ｃ，４３ｄおよび演算回路４４ａ，４４ｂ，４４ｃ，４４ｄをプログラマブルな回路要素に置き換える方法を示した。これにより、これら回路要素の挿入位置および機能をＬＳＩ製造後に変更することができる。特に、秘密鍵メモリ４３ａ，４３ｂ，４３ｃ，４３ｄを書き込み可能な不揮発メモリとすることで秘密鍵を変更可能とすることは従来技術により容易に実現できることから、応用上有用性が高いといえる。
【産業上の利用可能性】
【００６２】
以上説明したように、本発明のプログラマブル論理回路は、従来の回路に対して簡単な要素を追加するだけでコンフィギュレーションデータの秘匿性を充分に確保することができるので、汎用性のあるＬＳＩなどに有効に利用することができる。
【図面の簡単な説明】
【００６３】
【図１】従来から知られている一般的なプログラマブルロジックアレイのモデルを示す構成図
【図２】図１におけるコンフィギュレーション回路とコンフィギュレーションチェーンの接続を詳細に示した構成図
【図３】図１に示すプログラマブルロジックアレイにおける、ＡＬＵを中心として構成されたＰＥの内部構成とコンフィギュレーション動作を示す図
【図４】図１に示すプログラマブルロジックアレイにおける、ＬＵＴを中心として構成されたＰＥの内部構成とコンフィギュレーション動作を示す図
【図５】図２のプログラマブルロジックアレイの回路に復号回路を付加した従来技術の一例を示すＬＳＩの構成図
【図６】図３に示すＡＬＵを中心として構成されたＰＥの内部構成に秘密鍵メモリを付加した従来技術の一例を示す回路図
【図７】本発明の実施の形態１におけるプログラマブルロジックアレイの構成図
【図８】本発明の実施の形態２におけるプログラマブルロジックアレイの構成図
【図９】図８に示すプログラマブルロジックアレイにおけるビット並び替え回路の一例を示す図
【図１０】本発明の実施の形態３におけるプログラマブルロジックアレイの構成図
【図１１】本発明の実施の形態４におけるプログラマブルロジックアレイの構成図
【図１２】本発明の実施の形態５におけるプログラマブルロジックアレイの構成図
【符号の説明】
【００６４】
１，１ａ，１ｂ，１ｃ，１ｄ，１ｅ  プログラマブルロジックアレイ
２  コンフィギュレーション回路
３  プログラマブル演算器
４  ＰＥ（Processing Element）
５  インターコネクトバス
６  コンフィギュレーションチェーン
７  入力ピン
８  出力ピン
１１  データバス
１２、１４  スイッチ回路
１３  ＡＬＵ（Arithmetic Logic Unit）
１５、１７  レジスタ
１６、２３  セレクタ
１８  デコーダ
１９  コンフィギュレーションメモリ
２１  ＬＵＴ（Look Up Table）
２２  ＦＦ（Flip Flop）
２４  秘密鍵メモリ
３１  復号回路
３２  秘密鍵
４０ａ，４０ｂ，４０ｃ  帰還回路
４１ａ，４１ｂ，…４１ｎ  ビット並び替え回路
４３ａ，４３ｂ，４３ｃ，４３ｄ  秘密鍵メモリ
４４ａ，４４ｂ，４４ｃ，４４ｄ  演算回路
４５ａ，４５ｂ，４５ｃ，…４５ｎ  スイッチ付帰還回路
４６ａ，４６ｂ，４６ｃ，…４６ｎ  スイッチ
【図１】
2006180375.tif 000003
【図２】
2006180375.tif 000004
【図３】
2006180375.tif 000005
【図４】
2006180375.tif 000006
【図５】
2006180375.tif 000007
【図６】
2006180375.tif 000008
【図７】
2006180375.tif 000009
【図８】
2006180375.tif 000010
【図９】
2006180375.tif 000011
【図１０】
2006180375.tif 000012
【図１１】
2006180375.tif 000013
【図１２】
2006180375.tif 000014