(57)【要約】  半導体装置の周辺回路や処理装置全体をリセット状態にすることなく、内部の回路を再構築するため、半導体装置２０において、プログラムに応じた回路をそれぞれ構築する複数の回路構築部２１，２２と、各回路構築部２１，２２ごとに、回路再構築の実行および不実行のいずれかを指定する指定部２３２と、プログラムの集合を外部１７３から取得して回路構築部２１，２２に供給するプログラム供給部２３３と、指定部によって回路再構築の実行が指定された回路構築部がプログラムに応じた回路を構築している期間、この回路構築部から出力される信号を固定する信号固定部２１４，２４とを備える。
2010038293.tif 000002
【特許請求の範囲】
【請求項１】
外部から取得した回路情報を供給する回路情報供給部と、
前記回路情報供給部が供給する回路情報に基づいて回路を構築する回路構築部と、
前記回路構築部に対し、回路構築の実行又は不実行を指定する指定部と、
前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が出力する信号を１又は０に固定する信号固定部とを有することを特徴とする半導体装置。
【請求項２】
前記半導体装置はさらに、外部接続端子を有し、
前記信号固定部は、前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が前記外部接続端子から出力する信号を１又は０に固定することを特徴とする請求項１記載の半導体装置。
【請求項３】
前記複数の回路構築部は、互いに前記回路情報を順次転送するように直列に接続され、
前記回路情報供給部は、前記複数の回路構築部のそれぞれに対応する回路情報を、前記複数の回路構築部のそれぞれに供給し、
前記複数の回路構築部のうち、前記指定部から回路再構築の不実行を指定された回路構築部は、対応する回路情報を保持して出力する回路情報迂回部を有することを特徴とする請求項１又は２記載の半導体装置。
【請求項４】
記憶装置と前記記憶装置に接続された半導体回路装置を有する情報処理装置において、
前記記憶装置は、前記半導体回路装置の回路情報を格納し、
前記半導体回路装置は、
前記記憶装置から取得した回路情報を供給する回路情報供給部と、
前記回路情報供給部が供給する回路情報に基づいて回路を構築する回路構築部と、
前記回路構築部に対し、回路構築の実行又は不実行を指定する指定部と、
前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が出力する信号を１又は０に固定する信号固定部とを有することを特徴とする情報処理装置。
【請求項５】
前記半導体装置はさらに、外部接続端子を有し、
前記信号固定部は、前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が前記外部接続端子から出力する信号を１又は０に固定することを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記複数の回路構築部は、互いに前記回路情報を順次転送するように直列に接続され、
前記回路情報供給部は、前記複数の回路構築部のそれぞれに対応する回路情報を、前記複数の回路構築部のそれぞれに供給し、
前記複数の回路構築部のうち、前記指定部から回路再構築の不実行を指定された回路構築部は、対応する回路情報を保持して出力する回路情報迂回部を有することを特徴とする請求項４又は５記載の情報処理装置。
【請求項７】
前記回路構築部は、データを暗号化する暗号化回路を構築することを特徴とする請求項４〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記回路構築部は、暗号化された暗号データを復号化する復号化回路を構築することを特徴とする請求項４〜６のいずれか１項に記載の情報処理装置。
【請求項９】
半導体装置の回路構築方法において、
回路情報供給部が、外部から取得した回路情報を供給するステップと、
回路構築部が、前記回路情報供給部が供給する回路情報に基づいて回路を構築するステップと、
指定部が、前記回路構築部に対し、回路構築の実行又は不実行を指定するステップと、
信号固定部が、前記指定部により回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が出力する信号を１又は０に固定するステップとを有することを特徴とする半導体装置の構築方法。
【請求項１０】
前記半導体装置はさらに、外部接続端子を有し、
信号固定部が、前記指定部により回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が出力する信号を１又は０に固定するステップは、前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が前記外部接続端子から出力する信号を１又は０に固定することを特徴とする請求項９記載の半導体装置の制御方法。
【請求項１１】
前記複数の回路構築部は、互いに前記回路情報を順次転送するように直列に接続され、
前記回路情報供給部は、前記複数の回路構築部のそれぞれに対応する回路情報を、前記複数の回路構築部のそれぞれに供給し、
前記複数の回路構築部のうち、前記指定部から回路再構築の不実行を指定された回路構築部は、対応する回路情報を保持して出力する回路情報迂回部を有することを特徴とする請求項９又は１０記載の半導体装置の構築方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、半導体装置、情報処理装置及び半導体装置の構築方法に関する。
【背景技術】
【０００２】
コンピュータシステムにおける情報処理装置によって種々の情報処理を行わせることが広く行われている。例えば、サーバの機能を担う情報処理装置は、このサーバにネットワークを介して接続されるクライアントと通信し、要求に応じた情報や情報処理のサービスを提供する。また、情報処理において、特定の処理をソフトウェアにより実行するプロセッサの負荷を抑えたりするため、ハードウェア回路で処理を実行することが行われている。例えば、暗号化処理を必要とする特定のアプリケーションをサーバで実行する場合において、暗号化の処理を、専用回路を有する半導体装置が搭載された専用のハードウェア回路に分担させることによって処理の高速化が図られている。【０００３】
ハードウェア回路による高速な処理を実現しつつ、処理内容の変更を容易にする半導体装置として、フィールドプログラマブルゲートアレイ（ＦＰＧＡ：Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が知られている。ＦＰＧＡは、例えば外部のＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等から取り込んだ回路データによって内部回路を構築（コンフィグレーション）する。又、例えば、暗号処理の方式には、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）に代表される共通鍵暗号方式や、ＲＳＡに代表される公開鍵暗号方式がある。例えば、サーバには、日中は複数のクライアントと通信してトランザクション処理を実行し、夜間は特定の装置と通信してバッチ処理を実行するものがある。例えば、このようなサーバは、トランザクション処理においてはクライアントの認証に関わるＲＳＡ暗号処理や改ざん検知のためのハッシュ関数処理を実行し、バッチ処理においては専らＤＥＳで暗号化された情報を処理する。このようなサーバでは、例えば、暗号処理を担うＦＰＧＡ向けに、ＤＥＳの処理回路に対応した回路データとＲＳＡの処理回路に対応した回路データを用意しておき、業務の区切りにおいてＦＰＧＡ内部の回路を再構築して処理内容を更新する。これによって、ＦＰＧＡ内を有効活用しながら複数種類の処理に対応することが可能となる。ＦＰＧＡにおける回路の再構築は、暗号の鍵方式を変更する場合だけでなく、暗号処理のアルゴリズムを更新する場合にも有効である。例えば、共通鍵暗号方式に限っても、これまで米国の標準暗号規格として制定されていたＤＥＳのアルゴリズムが、技術進歩による安全性低下のため、ＡＥＳ（ａｄｖａｎｃｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｓｔａｎｄａｒｄ）に代替されるというように、アルゴリズムは更新されていく場合がある。また、回路の再構築は、ＦＰＧＡ内部で構築されていた回路の不具合を改善する場合や、ＦＰＧＡ周辺の回路における不具合を吸収するためにも有用である。【０００４】
ところで、ＦＰＧＡでは、回路が再構築される期間、内部回路が不定の状態となり、ＦＰＧＡの外部接続端子は、一部の制御信号端子を除きハイインピーダンス（Ｈｉ−Ｚ）状態となる。このため、ＦＰＧＡの周辺回路が信号の値を誤って認識し、ＦＰＧＡおよび周辺回路を含む装置全体が誤動作するという問題がある。【０００５】
そこで、装置の誤動作を防ぐため、次の対策のいずれかが用いられている。
対策（１）回路構築（コンフィグレーション）の期間、ＦＰＧＡを含む装置全体をリセット状態にする。
対策（２）コンフィグレーションの期間は、ＦＰＧＡにより影響をうける範囲の周辺回路をリセット状態にする。
対策（３）例えば図２５に示すように、ＦＰＧＡ９０の外部端子にプルアップ抵抗９１またはプルダウン抵抗９２を接続する。
対策（４）例えば図２６に示すように、再構築の期間を表す信号に応じて、ＦＰＧＡから外部の回路に出力される信号の値を固定するための回路９３，９４を設ける。
対策（５）ＦＰＧＡ内部に、外部端子に接続するプルアップ抵抗またはプルダウン抵抗を設ける。【０００６】
また、装置の誤動作防止ではないが、回路が構築される部分を複数のブロックに分割し、いくつかのブロックを並行してコンフィグレーションするとともに、コンフィグレーションが完了したブロックから順に回路を動作させるＦＰＧＡが知られている。このＦＰＧＡによれば、全体のコンフィグレーションが完了する前に、一部のブロックとこれに接続する外部の回路の初期化動作が開始するので、コンフィグレーションを含んだ初期化処理時間が見かけ上短縮する。また、並行したコンフィグレーションによっても初期化処理時間が短縮する。
【特許文献１】特開２００１−１８６０１０号公報
【発明の開示】
【０００７】
しかしながら、上記（１）の装置全体をリセット状態にする手法では、回路を再構築するたびに装置全体がリセット状態となる。このことは、装置が構築される回路に処理を実行させていない場合でも同様である。例えば、暗号アルゴリズムを更新する場合には、サーバが暗号処理を実施していない場合でも、サーバの全処理を停止させ、サーバを再起動することによりリセット状態とすることが求められる。したがって、サーバを運用中にはＦＰＧＡの内部回路を再構築できない等、回路を再構築する時期には制限がある。また、上記（２）の周辺回路をリセット状態にする対策では、周辺回路の構成によってはリセットされる回路の範囲が大きくなる。例えば、周辺回路に汎用のＬＳＩ等が接続されている場合、このＬＳＩ全体およびその周辺の回路もリセット状態にすることが求められる。また、上記（３）および（４）の対策では、外付けの抵抗または論理回路の部品が必要となり、回路基板上においても部品の配置領域を確保する必要がある。また、上記（５）におけるＦＰＧＡ内のプルアップ抵抗またはプルダウン抵抗は、ＦＰＧＡの通常動作による信号出力に影響与えないよう、抵抗値の高いものが用いられる。しかし抵抗値が高いと抵抗値と容量値との積である時定数も大きくなり、抵抗による信号レベルの固定に時間がかかるため、信号の値が外部回路によって目的の値として認識されず誤動作となるおそれがある。
【０００８】
また、コンフィグレーションが完了したブロックから順に回路を動作させるＦＰＧＡは、コンフィグレーションの時間が見かけ上短縮するが、コンフィグレーションは全てのブロックに対して実行されるため、ＦＰＧＡ全体としてコンフィグレーションによる不定期間がなくなるわけではない。このＦＰＧＡにおける外部端子の信号についても、結局、上記の対策（１）〜（５）に示すような対策が必要となる。
【０００９】
上記事情に鑑み、本件開示の半導体装置、情報処理回路基板、情報処理装置、および暗号装置の課題は、半導体装置の周辺回路や処理装置全体をリセット状態にすることなく、内部の回路を再構築することにある。特に本件開示の暗号装置の課題は、装置全体をリセット状態とすることなく、暗号化処理の内容を更新することにある。
【００１０】
本件開示の半導体装置の基本形態は、
回路を表すプログラムを取り込んで取り込んだプログラムに応じた回路をそれぞれ構築する複数の回路構築部と、
上記複数の回路構築部に対し、各回路構築部ごとに、回路再構築の実行および不実行のいずれかを指定する指定部と、
上記複数の回路構築部のそれぞれに対応したプログラムの集合を外部から取得して上記複数の回路構築部に供給するプログラム供給部と、
上記指定部によって回路再構築の実行が指定された回路構築部がプログラムに応じた回路を構築している期間、この回路構築部から出力される信号を固定する信号固定部とを備えている。
【００１１】
この基本形態によれば、複数の回路構築部のうち一部の回路構築部について回路の再構築を実行させ、残りの回路構築部について回路の構築を不実行とすることができる。また、このとき、回路を構築している回路構築部から出力される信号が固定されるので、回路の構築が不実行に指定された回路構築部は、回路の動作を停止せず処理を継続することができる。したがって、この半導体装置の周辺の回路や装置をリセット状態とすることなく回路の一部を更新することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】情報処理装置の具体的な第１実施形態であるコンピュータシステムのハードウェア構成を示すブロック図である。
【図２】図１に示す暗号カードのハードウェア構成を示すブロック図である。
【図３】図１に示したコンピュータシステムに構築される暗号処理装置の機能ブロックを示すブロック図である。
【図４】ＤＥＳ暗号回路による暗号化処理を説明するブロック図である。
【図５】ＡＥＳ暗号回路による暗号化処理を説明するブロック図である。
【図６】ＦＰＧＡのハードウェア構成を示すブロック図である。
【図７】ＦＰＧＡのさらに詳細なハードウェア構成を示すブロック図である。
【図８】図７に示す入出力ブロックの内部構成を示す回路図である。
【図９】図８に示す入出力ブロックにおける出力部の内部構成を示す回路図である。
【図１０】図７に示す論理ブロックの内部構成を示す回路図である。
【図１１】信号固定部の内部構成を示す回路図である。
【図１２】ＦＰＧＡのハードウェア構成を制御部の詳細も含めて示すブロック図である。
【図１３】制御部のスタートアップ制御部の内部構成を示すブロック図である。
【図１４】コンフィグフラグレジスタと、入出力部および論理構築部を示すブロック図である。
【図１５】入出力部および論理構築部におけるプログラムの経路を説明する図である。
【図１６】ＦＰＧＡにおける回路の構築の動作を説明するフローチャートである。
【図１７】コンフィグＲＯＭに記憶されたプログラムと、ＦＰＧＡで構築される回路を説明する図である。
【図１８】再構築のためのコンフィグＲＯＭに記憶されたプログラムとＦＰＧＡにおける回路構築を説明する図である。
【図１９】再構築のためのコンフィグＲＯＭに記憶された別のプログラムとＦＰＧＡにおける回路構築を説明する図である。
【図２０】第２実施形態におけるＦＰＧＡの入出力部を示す図である。
【図２１】図２０に示すカウンタのカウント値およびバッファの入出力データを示すタイミングチャートである。
【図２２】第３実施形態におけるＦＰＧＡのハードウェア構成を示すブロック図である。
【図２３】第４実施形態における暗号カードの構成を示すブロック図である。
【図２４】固定された論理回路部分と再構築が可能な回路構築部とが組み合わされた半導体装置の一例を概略的に示す図である。
【図２５】従来技術のＦＰＧＡとその周辺回路を示す図である。
【図２６】別の従来技術のＦＰＧＡとその周辺回路を示す図である。
【発明を実施するための最良の形態】
【００１３】
以下、本件開示の半導体装置、情報処理回路基板、情報処理装置、および暗号装置の具体的な実施形態について説明する。【００１４】
［第１実施形態］
図１は、情報処理装置の具体的な第１実施形態であるコンピュータシステムのハードウェア構成を示すブロック図である。【００１５】
図１に示すコンピュータシステム１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、ＭＣＵ（Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）１２、メモリ１３、ＩＯＣ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｃｏｎｔｒｏｌｌｅｒ）１４、補助記憶装置１５、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インターフェース１６、および、暗号カード１７を備えている。【００１６】
ＣＰＵ１１は、コンピュータプログラムを実行することにより、コンピュータシステム１００内の各部の動作を制御する。メモリ１３は、ＣＰＵ１１によって実行されるコンピュータプログラムやデータを一時的に記憶する。補助記憶装置１５は、例えばハードディスク装置であり、コンピュータプログラムやデータを格納している。ＭＣＵ１２はメモリ１３の制御を担い、ＩＯＣ１４は、メモリ１３よりもアクセス速度が低い補助記憶装置１５の制御を担っている。また、ＩＯＣ１４は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス１８を介してＬＡＮインターフェース１６、および暗号カード１７と接続されている。本実施形態におけるＩＯＣ１４はＰＣＩバス規格に基づき、ＬＡＮインターフェース１６および暗号カード１７との間でデータの受け渡しを行う。ＬＡＮインターフェース１６は、このコンピュータシステム１００とは別の図示しないコンピュータシステムと通信するための装置である。図１に示すコンピュータシステム１００は、いわゆるサーバとして機能し、ＬＡＮインターフェース１６を介してネットワーク接続された別のコンピュータシステムに対し要求された情報を提供する。【００１７】
図２は、図１に示す暗号カードのハードウェア構成を示すブロック図である。【００１８】
図２に示す暗号カード１７は、マイクロコントローラ１７１、メモリ１７２、コンフィグレーションＲＯＭ１７３Ｂ、ＰＣＩバスブリッジ１７４、およびＦＰＧＡ２０を備えている。なお、以降の説明では、「コンフィグレーション」を「コンフィグ」と略称する。例えば、コンフィグレーションＲＯＭをコンフィグＲＯＭと略称する。ここで、暗号カード１７は、上記基本形態における情報処理回路基板の一例に相当する。また、コンフィグＲＯＭ１７３Ｂは、上記基本形態における記憶装置の一例に相当する。【００１９】
ＰＣＩバスブリッジ１７４は、ＰＣＩバス１８を介してＩＯＣ１４（図１参照）と接続されており、ＩＯＣ１４との間でＰＣＩバスとローカルバスのバスプロトコルの変換を行うとともにデータの受け渡しを行う。ＰＣＩバスブリッジ１７４、ＦＰＧＡ２０およびマイクロコントローラ１７１は、暗号カード１７内のローカルバスを介して互いに接続されている。また、マイクロコントローラ１７１とＦＰＧＡ２０はＩ２Ｃバスを介して接続されている。【００２０】
ＦＰＧＡ２０は、外部から取り込んだプログラムに応じた回路を内部に構築することが可能な半導体装置である。ＦＰＧＡ２０は、マイクロコントローラ１７１から回路構築開始の指示を受けると、ＦＰＧＡ２０に接続されたコンフィグＲＯＭ１７３からコンフィグデータ（回路データ）を取り込んで回路を構築する。本実施形態のＦＰＧＡ２０には、暗号処理のための回路が構築される。【００２１】
マイクロコントローラ１７１は、ＦＰＧＡ２０に構築された回路に、この回路の処理に必要な情報を供給する。より詳細には、マイクロコントローラ１７１は暗号処理に必要な鍵データを保持し、ＦＰＧＡ２０に鍵データを供給する。また、マイクロコントローラ１７１は、ＦＰＧＡ２０に回路構築開始の指示を送信するのに加え、ＦＰＧＡ２０内の複数の領域のうち、どの部分について回路の構築を実行するかを指定する。メモリ１７２は、マイクロコントローラ１７１で実行されるコンピュータプログラムが記憶している。マイクロコントローラ１７１は、メモリに記憶されたコンピュータプログラムに応じて各機能を実行する。【００２２】
コンフィグＲＯＭ１７３Ｂには、ＦＰＧＡ２０内に構築させる回路を表すコンフィグデータ（回路データ）が記憶されている。以降、コンフィグデータを、構築された回路で処理されるデータと区別するため、プログラムと称する。暗号カード１７には、初期の状態では、第１のコンフィグＲＯＭ１７３ＡがＦＰＧＡ２０に接続されている。第１のコンフィグＲＯＭ１７３Ａには、入出力回路とＤＥＳ暗号回路を構築させるためのプログラムが記憶されている。ＦＰＧＡ２０は、第１のコンフィグＲＯＭ１７３Ａから読み出したプログラムに応じて入出力回路３２およびＤＥＳ暗号回路３３を構築する。【００２３】
ＤＥＳ暗号回路が更新される場合には、第１のコンフィグＲＯＭ１７３Ａが、第２のコンフィグＲＯＭ１７３Ｂに取り替えられる。第２のコンフィグＲＯＭ１７３Ｂは、ＡＥＳ暗号回路を表すプログラムを記憶する。図２には、ＦＰＧＡ２０内部に入出力回路３２およびＤＥＳ暗号回路３３がすでに構築され、さらに、ＡＥＳ暗号回路についての第２のコンフィグＲＯＭ１７３Ｂが取り付けられた状態が示されている。この図２に示す状態で、ＦＰＧＡ２０が、第２のコンフィグＲＯＭ１７３Ｂからプログラムを取り込んで回路を再構築すると、ＤＥＳ暗号回路がＡＥＳ暗号回路に更新されることとなる。【００２４】
［暗号処理装置］
ここで、ＦＰＧＡのハードウェアを説明するのに先立って、上述したコンピュータシステム１００に構築される、暗号処理装置および暗号処理の概要を説明する。【００２５】
図３は、図１に示したコンピュータシステムに構築される暗号処理装置の機能ブロックを示すブロック図である。【００２６】
図３に示す暗号処理装置３００は、この暗号処理装置３００に外部接続された図示しないコンピュータシステムに暗号化したデータを提供する装置であり、データベース３１、入出力回路３２、ＤＥＳ暗号回路３３、鍵情報保持部３４、および通信部３５を備えている。【００２７】
データベース３１は、外部のコンピュータシステムに提供されるデータを記憶しており、このデータを入出力回路３２に供給する。入出力回路３２は、データベース３１から供給されたデータをＤＥＳ暗号回路３３に入力するとともに、ＤＥＳ暗号回路３３で処理されたデータを受け取り通信部３５に出力する。また、入出力回路３２は、ＤＥＳ暗号回路３３でのデータの処理状況に応じてデータを一時的に保持するバッファ処理も行う。鍵情報保持部３４は、暗号化に必要な鍵データを保持しており、鍵データをＤＥＳ暗号回路３３に入出力回路３２を経由して渡す。ＤＥＳ暗号回路３３は入出力回路３２から渡されたデータをＤＥＳアルゴリズムに従って暗号化する。通信部３５は、暗号化されたデータを外部のコンピュータシステムに送信する。【００２８】
データベース３１は、ＣＰＵ１１、ＩＯＣ１４、および補助記憶装置１５の組合せによって構築される。入出力回路３２およびＤＥＳ暗号回路３３はＦＰＧＡ２０で構築される。鍵情報保持部３４は、マイクロコントローラ１７１およびメモリ１７２によって構築される。また通信部は、ＣＰＵ１１、ＩＯＣ１４、およびＬＡＮインターフェース１６によって構築される。【００２９】
この暗号処理装置３００では、データベース３１に記憶されたデータがＤＥＳ暗号回路３３で暗号化され、通信部３５から送信される。また、本実施形態の暗号処理装置３００では、ＤＥＳ暗号回路３３が、要求に応じてより暗号強度の高いＡＥＳ暗号回路３６に更新される。【００３０】
ここで、２つの暗号回路による暗号化処理の概要を説明する。【００３１】
図４は、ＤＥＳ暗号回路による暗号化処理を説明するブロック図であり、図５は、ＡＥＳ暗号回路による暗号化処理を説明するブロック図である。【００３２】
図４に示すＤＥＳ暗号回路３３は、入力データを鍵データに基づいて暗号化し、出力データとして出力する。【００３３】
ＤＥＳ暗号回路３３では、１２８ビット単位でレジスタ３３１１に入力されたデータは、６４ビットごと取り出されて処理される。レジスタ３３１１から取り出されたデータは、置換部３３１２によりビット単位毎に並べ替えられる。一方、鍵データは、選択的置換部３３２１でパリティを除く５６ビットが置換処理された後、上位側２８ビットの上位ビットデータと下位側２８ビットの下位ビットデータとに分けられる。この上位ビットデータと下位ビットデータとは巡回シフト部３３２３，３３２４，３３２６，３３２７による左巡回シフトと、選択的置換部３３２２，３３２５，３３２８による並べ替えは、１６段分繰り返し実施される。各段階における選択的置換部３３２２，３３２５，３３２８の出力はラウンド鍵として用いられる。【００３４】
置換部３３１２で並べ替えられたデータは上位ビットデータと下位ビットデータとに分けられる。ｆ処理部３３１３では、下位ビットデータに対し、第１の配置換え、ラウンド鍵との排他論理和、複数ビット単位での値の置換、第２の配置換えを実行する。上位ビットデータは、排他論理和３３１４で、ｆ処理部３３１３の処理結果データに対する排他論理和がとられる。次に、上位ビットデータと下位ビットデータとが入れ替えられ、ｆ処理部３３１５および排他論理和３３１６で処理される。上位ビットデータと下位ビットデータの入れ替え処理、そしてｆ処理部および排他論理和による処理が１６段分繰り返される。最後に、上位ビットデータと下位ビットデータを合わせたデータは、置換部３３１９でさらに並べ替えられ、レジスタ３３２０に入力される。レジスタ３３２０からはデータが１２８ビット単位で出力される。【００３５】
図５に示すＡＥＳ暗号回路３６では、１２８ビットの入力データに対し、ＡｄｄＲｏｕｎｄｋｅｙ部３６１１により、鍵データから生成されたラウンド鍵との排他的論理和が取られる。なお、ＡＥＳにおけるラウンド鍵生成の詳細については説明を省略する。ＡｄｄＲｏｕｎｄｋｅｙ部３６１１の処理結果のデータは、直列接続された９段のラウンド処理部３６２０によって順に処理される。各ラウンド処理部３６２０は、データを４×４バイトの行列とし各行を巡回シフトするＳｈｉｆｔＲｏｗｓ３６１２、入力の乗法逆元にアフィン変換を施すＳｕｂＢｙｔｅｓ３６１３、上記行列の各列の要素を計数とする多項式に特定の多項式を演算して得られる計数を出力するＭｉｘＣｏｌｏｍｎｓ３６１４、およびラウンド鍵との排他的論理和を取るＡｄｄＲｏｕｎｄｋｅｙ３６１５からなる。最後にＳｈｉｆｔＲｏｗｓ３６２１、ＳｕｂＢｙｔｅｓ３６２２、およびＡｄｄＲｏｕｎｄｋｅｙ３６２３の処理を経て出力データが出力される。ＤＥＳおよびＡＥＳによる暗号化のアルゴリズム自体は公知のものであり、これ以上の説明は省略する。【００３６】
ＡＥＳは、ＤＥＳと同様、秘密暗号鍵方式およびブロック暗号化方式による暗号処理である。しかし、ＡＥＳは、ＤＥＳによる暗号化の安全性が低下したために米国が新たに暗号標準として公募し制定された方式であり、ＤＥＳよりも暗号強度が高い。したがって、ＤＥＳ暗号回路３３がＡＥＳ暗号回路３６に更新されることで、暗号処理装置３００から出力されるデータの秘匿性が向上する。【００３７】
［ＦＰＧＡハードウェア］
続いて、暗号回路および入出力回路が構築可能なＦＰＧＡのハードウェアについて説明する。【００３８】
図６は、ＦＰＧＡのハードウェア構成を示すブロック図である。【００３９】
図６に示すＦＰＧＡ２０は、ＩＯ−１からＩＯ−４までの４つの入出力部２１（２１ａ，２１ｂ，２１ｃ，２１ｄ）、ｌｏｇｉｃ−１からｌｏｇｉｃ−９までの９つの論理構築部２２（２２ａ，２２ｂ，２２ｃ，２２ｄ，２２ｅ，２２ｆ，２２ｇ，２２ｈ，２２ｉ）、制御部２３、および信号固定部２４とを備えている。【００４０】
入出力部２１は、ＦＰＧＡ２０の外部回路と接続する外部接続端子の入出力を決定し、論理構築部２２は論理回路を構築する。【００４１】
制御部２３は、入出力部２１および論理構築部２２における回路の構築を制御する。より詳細には、制御部２３は、コンフィグＲＯＭ１７３（図２参照）に記憶された回路構築用のプログラムを読み出して、入出力部２１および論理構築部２２に供給する。コンフィグＲＯＭ１７３に記憶されたプログラムは、入出力部２１および論理構築部２２のそれぞれに対応するプログラムの集合である。論理構築部２２ではプログラムに応じて論理回路が構築され、入出力部２１では外部接続端子に接続する接続回路が構築される。本実施形態のＦＰＧＡ２０では、４つの入出力部２１および９つの論理構築部２２のそれぞれに対し、回路構築の実行、不実行を指定することが可能となっている。【００４２】
信号固定部２４は、制御部２３がプログラムを読み出して入出力部２１および論理構築部２２に供給する期間、回路構築が実行される入出力部および／または論理構築部構築と、構築が不実行となる入出力部および／または論理構築部との間で受け渡される信号の値を固定する。【００４３】
ここで、入出力部２１および論理構築部２２のそれぞれは、上述した基本形態における回路構築部の一例に相当する。【００４４】
図７は、ＦＰＧＡのさらに詳細なハードウェア構成を示すブロック図である。【００４５】
入出力部２１のそれぞれは複数の入出力ブロック（ＩＯＢ）２１０を備えており、論理構築部２２のそれぞれは複数の論理ブロック（ＬＢ）２２０を備えている。入出力ブロック２１０は、外部接続端子のそれぞれに対応して設けられており、各外部接続端子の入出力を決定する。論理構築部２２はＦＰＧＡ２０における最小論理機能に対応している。なお、ＦＰＧＡ２０において、入出力ブロック２１０は外部接続端子の数に応じて設けられており、また、論理ブロック２２０もＦＰＧＡ２０が対応する回路規模に応じた数だけ設けられているが、図７には、構造を見やすくするため、入出力ブロック２１０を各入出力部２１あたり６〜７個のみ示し、論理ブロック２２０を各論理構築部２２あたり４つのみ示している。【００４６】
図８は、図７に示す入出力ブロックの内部構成を示す回路図である。【００４７】
入出力ブロック２１０は、信号を選択するＳＷ１からＳＷ５までのスイッチ２１１＿１〜２１１＿５、データラッチ２１２、入力バッファ２１３、出力部２１４、および選択制御部２１５を備えている。選択制御部２１５はシフトレジスタで構成されており、プログラムが入力される。図７に示す複数の入出力ブロック２１０が有する選択制御部２１５同士は直列に接続されており、回路構築時にはプログラムが、複数の入出力ブロック２１０の選択制御部２１５間で順次引き渡される。最終的には、各入出力ブロック２１０の選択制御部２１５には、プログラムのうち各入出力ブロック２１０に対応する部分が保持された状態で、プログラムの入力が停止する。つまり、図８に示す選択制御部２１５には、プログラムのうちこの入出力ブロック２１０に対応する部分が保持される。選択制御部２１５の各ビットに保持された値によってスイッチ２１１＿１〜２１１＿５の選択が決定され、外部接続端子（外部ＰＩＮ）２１６に接続される回路が構築される。構築された回路によって、外部接続端子２１６における入出力、および、入出力ブロック２１０内において信号をクロックに同期させるか否かが決定される。【００４８】
図９は、図８に示す入出力ブロックにおける出力部の内部構成を示す回路図である。【００４９】
出力部２１４は、出力バッファ２１４１、信号を選択するセレクタ２１４２，２１４３、および、インバータまたはバッファからなる論理回路２１４４，２１４５を備えている。論理回路２１４４，２１４５には、外部からコンフィグフラグ信号（ＣｏｎｆｉｇＦｌａｇ）が入力される。コンフィグフラグ信号は、値が’０’の場合、この出力部２１４が含まれた入出力部２１において回路の構築が実行されることを意味する。値が’１’の場合、回路の構築は実行されず、入出力部２１は通常動作することを意味する。出力部２１４では、コンフィグフラグ信号の値が’１’の時、すなわち回路構築が実行されていない場合、外部接続端子２１６の状態は、入出力を決定するＤＩＲ信号および、スイッチ２１１＿５（図８参照）からの出力に応じて決定される。一方、コンフィグフラグ信号の値が’０’の時、すなわち入出力部２１において回路構築が行われている場合には、論理回路２１４４，２１４５に応じて、外部接続端子２１６の状態が決定する。図９に示す論理回路２１４４，２１４５の例では、入出力部２１により回路構築が実行されている期間は、外部接続端子２１６は’１’の値に固定される。【００５０】
図１０は、図７に示す論理ブロックの内部構成を示す回路図である。【００５１】
論理ブロック２２０は、信号を選択するＳＷ１からＳＷ１６までのスイッチ２２１＿１〜２２１＿１６、ＡＮＤゲート２２２、ＯＲゲート２２３、ＸＯＲゲート２２４、インバータ２２５＿１，２２５＿２，２２５＿３、マルチプレクサ２２６，２２７、データラッチ２２８、および、選択制御部２２９を備えている。【００５２】
選択制御部２２９はシフトレジスタを有しており、プログラムが入力される。図７に示す複数の論理ブロック２２０が有する選択制御部２２９同士は直列に接続されており、回路構築時にはプログラムが、複数の論理ブロック２２０の選択制御部２２９間で順次引き渡される。最終的には、各論理ブロック２２０の選択制御部２２９には、プログラムのうち各論理ブロック２２０に対応する部分が保持された状態で、プログラムの入力が停止する。つまり、図１０に示す選択制御部２２９には、プログラムのうちこの論理ブロック２２０に対応する部分が保持される。選択制御部２２９の各ビットに保持された値によってスイッチ２２１＿１〜２２１＿１６の選択が決定され、論理回路が構築される。より詳細には、スイッチ２２１＿１〜２２１＿１６による選択によって、入力信号Ａ，Ｂ，Ｃのうちいずれを用いるか、ＡＮＤ、ＯＲ、ＸＯＲのうちいずれの論理ゲートを用いるか、そして、信号をデータラッチ２２８にラッチさせるか否かが決定される。【００５３】
図８に示した入出力ブロック２１０には、回路構築が実行されている期間、外部接続端子２１６の状態を固定する出力部２１４が設けられているが、論理ブロック２２０については、信号固定部２４（図６参照）によって各論理構築部２２間で受け渡される信号が固定される。【００５４】
図１１は、信号固定部の内部構成を示す回路図である。【００５５】
信号固定部２４は、回路の構築が実行されていない通常動作時には、各論理構築部２２間において受け渡される信号を伝達する。なお、図１１は、信号固定部２４のうち、論理構築部（Ｌｏｇｉｃ−１）２２ａと論理構築部（Ｌｏｇｉｃ−４）２２ｄとの間において信号を受け渡す部分に代表させてその構成を示しているが、図に示す構成は他の論理構築部２２間についても同様である。【００５６】
信号固定部２４は、複数種類の論理ゲート２４１，２４２，２４３，２４４，２４５，２４６を備えている。信号固定部２４は、回路構築が指定された論理構築部が回路を構築している期間、この論理構築部から出力される信号を固定する。より詳細には、信号固定部２４は、ＦＰＧＡ２０における回路構築が実行される期間、回路構築が実行される論理構築部と、回路構築が不実行となる論理構築部との間において受け渡される信号を固定する。例えば、論理構築部（ｌｏｇｉｃ−４）２２ｄに対応するコンフィグフラグ信号（ＣｏｎｆｉｇＦｌａｇ（Ｌｏｇｉｃ−４））の値が回路構築の実行を表す’０’の場合、論理構築部（ｌｏｇｉｃ−４）２２ｄから、論理構築部（ｌｏｇｉｃ−１）２２ａに渡される信号が、’１’または’０’に固定される。例えば、ＯＲゲート２４２の出力である、論理構築部（ｌｏｇｉｃ−１）２２ａへの入力信号Ａは’１’に固定される。一方、ＡＮＤゲート２４３の出力である入力信号Ｂは’０’に固定される。このようにして、回路構築が実行されている論理構築部（Ｌｏｇｉｃ−４）２２ｄから、回路構築が不実行の論理構築部（Ｌｏｇｉｃ−１）２２ａへ出力される信号が予め設定された値に固定される。これによって、論理構築部（Ｌｏｇｉｃ−４）２２ｄから回路構築に伴う信号の不定状態が、論理構築部（Ｌｏｇｉｃ−１）２２ａへ伝達されることが防止され、論理構築部（Ｌｏｇｉｃ−１）２２ａに構築されていた回路は動作を継続することができる。【００５７】
また、信号固定部２４による信号の固定は、回路構築が不実行の論理構築部（Ｌｏｇｉｃ−１）２２ａから、回路構築が実行される論理構築部（Ｌｏｇｉｃ−４）２２ｄへ入力される信号に対しても行われる。例えば、論理構築部（ｌｏｇｉｃ−４）２２ｄへの入力信号Ａは’１’に固定され、入力信号Ｂは’０’に固定される。【００５８】
ここで、入出力ブロックの出力部２１４および信号固定部２４のそれぞれは、上述した基本形態における信号固定部の一例に相当する。【００５９】
続いて、回路の構築を制御する制御部２３について説明する。【００６０】
図１２は、ＦＰＧＡのハードウェア構成を制御部の詳細も含めて示すブロック図である。【００６１】
ＦＰＧＡ２０の制御部２３は、Ｉ２Ｃインターフェース（Ｉ２ＣＩＦ）２３１、コンフィグフラグレジスタ２３２、および、スタートアップ（Ｓｔａｒｔｕｐ）制御部２３３を備えている。【００６２】
Ｉ２Ｃインターフェース２３１は、ＦＰＧＡ２０外部のマイクロコントローラ１７１（図２参照）とＩ２Ｃによる通信を行い、マイクロコントローラ１７１から設定情報を受信する。Ｉ２Ｃインターフェース２３１は、アクセス検出部２３１ａ、アクセス制御部２３１ｂ、およびデータ保持部２３１ｃを備えている。例えば、Ｉ２Ｃインターフェース２３１は、マイクロコントローラ１７１から入出力部２１および論理構築部２２のそれぞれごとに回路構築の実行および不実行の指定を表すコンフィグフラグデータを受信し、コンフィグフラグレジスタ２３２に書きこむ。また、Ｉ２Ｃインターフェース２３１は、マイクロコントローラ１７１から回路構築の開始を表す構築開始指示情報を受信する。構築開始指示情報は、スタートアップ制御部２３３に供給される。【００６３】
コンフィグフラグレジスタ２３２は、入出力部２１および論理構築部２２のそれぞれごとに回路構築の実行および不実行を指定する。コンフィグフラグレジスタ２３２は、Ｉ２Ｃインターフェース２３１を介して受信したコンフィグフラグデータを保持し、コンフィグフラグデータの各ビットの値を回路構築の期間中出力する。【００６４】
スタートアップ制御部２３３は、コンフィグＲＯＭ１７３に記憶されたプログラムを読み出して、入出力部２１および論理構築部２２に供給する。コンフィグＲＯＭ１７３から読み出されるプログラムは、入出力部２１および論理構築部２２のそれぞれに対応するプログラムの集合である。なお、図１２には、３つの入出力部２１および３つの論理構築部２２のみを図示している。４つの入出力部２１および９つの論理構築部２２は直列に接続されており、スタートアップ制御部２３３から供給されたプログラムを順次引き渡す。入出力部２１および論理構築部２２の内部では、論理ブロック２２０および入出力ブロック２１０内の選択制御部２１５，２２９（図８，１０参照）を構成するシフトレジスタが直列に接続されている。スタートアップ制御部２３３から供給されたプログラムは、入出力部（ＩＯ−１）２１ａから論理構築部（Ｌｏｇｉｃ−９）２２ｉまでのそれぞれが有する選択制御部２１５，２２９を順次伝達される。ただし、コンフィグフラグレジスタ２３２によって、回路構築の不実行が指定された入出力部２１および／または論理構築部２２では、入力されてきたプログラムを選択制御部２１５，２２９を経由させずそのまま次段に出力する。【００６５】
ここで、コンフィグフラグレジスタ２３２は、上述した基本形態における指定部の一例に相当し、スタートアップ制御部２３３は上述した基本形態におけるプログラム供給部の一例に相当する。【００６６】
図１３は、制御部のスタートアップ制御部の内部構成を示すブロック図である。【００６７】
スタートアップ制御部２３３は、スタート／ストップ制御部２３３ａ、コンフィグ用ＣＬＫ発生回路２３３ｂ、データカウンタ２３３ｃ、およびデータバッファ２３３ｄを備えている。スタート／ストップ制御部２３３ａは、ＦＰＧＡ２０に対する構築開始指示を受け、コンフィグ用ＣＬＫ発生回路２３３ｂにクロック（ＣｏｎｆｉｇＣｌｏｃｋ）を発生させる。このクロックはコンフィグＲＯＭ１７３（図１２参照）に、読み出しクロックとして供給される。データカウンタ２３３ｃは、適切な量のプログラムを読み出すため、コンフィグＲＯＭ１７３から読み出すプログラムの数をカウントする。本実施形態のＦＰＧＡ２０では、入出力部２１および／または論理構築部２２ごとに回路構築の実行または不実行が指定され、不実行の部分に対応するプログラムは読み出さない。したがってデータカウンタ２３３ｃは、コンフィグフラグレジスタ２３２（図１２参照）の出力に応じた数をカウントする。コンフィグフラグレジスタ２３２がカウントを終了すると、スタート／ストップ制御部２３３ａは、プログラムの読出しを終了し、コンフィグ中信号の出力を中止する。データバッファ２３３ｄは、コンフィグＲＯＭ１７３から読み出されたプログラムを入出力部（ＩＯ−１）２１ａ（図１２参照）に供給する。【００６８】
図１４は、コンフィグフラグレジスタと、入出力部および論理構築部を示すブロック図である。【００６９】
コンフィグフラグレジスタ２３２は、コンフィグフラグデータを保持している。コンフィグフラグデータの各ビットは、４つの入出力部２１および９つの論理構築部２２のそれぞれに対応した、コンフィグフラグ（ＣｏｎｆｉｇＦｌａｇ）信号として出力される。コンフィグフラグ信号の値によって、回路構築の実行および不実行のいずれかを指定する。コンフィグフラグ信号は’０’が回路構築の実行を表し、’１’が回路構築の不実行を表す。コンフィグフラグレジスタ２３２の初期値は全て’０’であり、全ての入出力部２１および論理構築部２２で回路構築を行うことを意味する。コンフィグフラグレジスタ２３２は、コンフィグ中の信号を受信中の場合のみ、保持した値をコンフィグフラグの値として出力し、コンフィグ中ではない場合は、回路構築の不実行を表す’１’を出力する。【００７０】
図１５は、入出力部および論理構築部におけるプログラムの経路を説明する図である。図１５には、ＦＰＧＡ２０が有する４つの入出力部２１および９つの論理構築部２２のうち、３つの入出力部２１が代表として示されている。【００７１】
入出力部（ＩＯ−１）２１ａの内部論理Ｍは、この入出力部（ＩＯ−１）２１ａに属する複数の入出力ブロック２１０（図７参照）からなり、より詳細には、複数の入出力ブロック２１０が有する複数の選択制御部２１５（図８参照）が直列に接続されたものである。【００７２】
入出力部（ＩＯ−１）２１ａ内部には、プログラムの経路を制御するＡＮＤゲートＧ１およびセレクタＧ２が設けられている。入出力部（ＩＯ−１）２１ａに対応するコンフィグフラグ信号（ＣｏｎｆｉｇＦｌａｇ（ＩＯ−１））の値が’０’すなわち回路構築の実行を表す場合には、プログラムが内部論理Ｍを経由し（”ＯＦＦ”で示す経路）、回路の構築が実行される。コンフィグフラグ信号の値が’１’すなわち回路構築の不実行を表す場合には、プログラムが内部論理Ｍを経由せず、内部論理Ｍを迂回して直ちに次段の入出力部（ＩＯ−２）２１ｂに供給される（”ＯＮ”で示す経路）。【００７３】
図１６は、ＦＰＧＡにおける回路の構築の動作を説明するフローチャートである。【００７４】
回路の構築は、マイクロコントローラ１７１（図２参照）がＩ２Ｃバスを経由して、ＦＰＧＡ２０にコンフィグフラグデータを送信した後、構築開始指示情報を送信することによって開始する。構築開始指示情報は、Ｉ２Ｃインターフェース２３１を介して、スタートアップ制御部２３３（図１３参照）のスタート／ストップ制御部２３３ａに入力される。これによって、スタートアップ制御部２３３が、コンフィグ中信号を出力し、コンフィグフラグレジスタ２３２に記憶されたコンフィグフラグデータの各ビットの値が、コンフィグフラグ信号として出力される（ステップＳ１１）。また、スタートアップ制御部２３３は、コンフィグＲＯＭ１７３からプログラムを読み出し、入出力部２１および論理構築部２２に供給する。【００７５】
入出力部（ＩＯ−１）２１ａ（図１５参照）は、回路構築の実行が指定されている場合、つまり、対応するコンフィグフラグ信号（ＣｏｎｆｉｇＦｌａｇ（ＩＯ−１））の値が’ＯＦＦ’すなわち’０’の場合（ステップＳ１３でＯＦＦ）、スタートアップ制御部２３３から供給されてくるプログラムを内部論理Ｇに入力させて、回路を構築する（ステップＳ１４）。また、回路が構築される場合、外部接続端子２１６（図９）に出力される信号は、出力部２１４によって固定される。この一方で、回路構築の不実行が指定されている場合、つまり、コンフィグフラグ（ＩＯ−１）が’ＯＮ’すなわち’１’の場合（ステップＳ１３でＯＮ）、入出力部（ＩＯ−１）２１ａ（図１５参照）は、回路を構築せず、供給されてくるプログラムを迂回させて、次段の入出力部（ＩＯ−２）２１ｂに渡す。上記ステップＳ１３およびＳ１４の動作は、入出力部（ＩＯ−１）２１ａに続いて接続された、入出力部（ＩＯ−２）２１ｂから入出力部（ＩＯ−４）２１ｄ、および、論理構築部（Ｌｏｇｉｃ−１）２２ａから論理構築部（Ｌｏｇｉｃ−９）２２ｉについても同様である（ステップＳ１５〜Ｓ２２）。なお、回路構築が実行される論理構築部２２から回路構築が実行されない論理構築部２２に出力される信号、また逆に向かう信号は、信号固定部２４（図１１）によって固定される。【００７６】
入出力部２１および論理構築部２２のそれぞれにおける、上記ステップＳ１３からＳ２２までの処理は、時間的には並行して実行される。【００７７】
コンフィグＲＯＭ１７３からのプログラムの読込みが完了すると、回路構築の実行が指定された入出力部２１および論理構築部２２では回路の構築が完了する（ステップＳ２３）。このとき、スタートアップ制御部２３３がコンフィグ中信号の出力を停止し、コンフィグフラグレジスタ２３２からのコンフィグフラグは、回路構築不実行を表す’１’となる。つまりコンフィグフラグの設定が解除される（ステップＳ２４）。これによって、論理構築部２２同士で受け渡される信号の固定が解除され、入出力部２１に対応する外部接続端子からは、構築された回路による信号が出力される。【００７８】
［暗号装置の構築および再構築］
続いて、暗号処理装置３００（図３参照）における、暗号回路の構築および再構築について説明する。ここでは、ＤＥＳ暗号回路および入出力回路が構築されたＦＰＧＡ２０において、ＤＥＳ暗号回路のみがＡＥＳ暗号回路として再構築される例を説明する。【００７９】
まず、再構築の前提として、ＤＥＳ暗号回路および入出力回路の構築について説明する。【００８０】
図１７は、コンフィグＲＯＭに記憶されたプログラムと、ＦＰＧＡで構築される回路を説明する図である。図１７のパート（Ａ）には、コンフィグＲＯＭに記憶されたプログラムが、コンフィグＲＯＭから読み出される順に並んで示されている。【００８１】
コンフィグＲＯＭに記憶されたプログラム４０Ａは、ＦＰＧＡ２０の４つの入出力部２１および９つの論理構築部２２のそれぞれで構築される回路を表すプログラム４１Ａ，４２Ａ，４３Ａの集合である。論理構築部（Ｌｏｇｉｃ−９）２２ｉから論理構築部（Ｌｏｇｉｃ−４）２２ｄに対応するプログラム４１Ａは、図４に示すＤＥＳ暗号回路を表すものとなっている。また、論理構築部（Ｌｏｇｉｃ−３）２２ｃから論理構築部（Ｌｏｇｉｃ−１）２２ａに対応するプログラム４２Ａの集合は入出力回路を表すものとなっている。また、入出力部（ＩＯ−４）２１ｄから入出力部（ＩＯ−１）２１ａに対応するプログラム４３Ａの集合は、ＦＰＧＡ２０の外部接続端子の状態を設定する回路を表すものとなっている。【００８２】
図２に示す暗号カード１７で、図１７のパート（Ａ）に示すプログラム４０Ａが記憶されたコンフィグＲＯＭ１７３Ａが取り付けられた状態で、マイクロコントローラ１７１から、全ての論理構築部２２および入出力部２１について回路構築の実行が指定され、構築開始指示されると、ＦＰＧＡ２０はコンフィグＲＯＭ１７３Ａからプログラム４０Ａを読出して内部に回路を構築する。【００８３】
図１７のパート（Ｂ）には、ＦＰＧＡに回路が構築された状態が示されている。ＦＰＧＡ２０の論理構築部（Ｌｏｇｉｃ−９）２２ｉから論理構築部（Ｌｏｇｉｃ−４）２２ｄには、ＤＥＳ暗号回路が構築されている。また、論理構築部（Ｌｏｇｉｃ−３）２２ｃから論理構築部（Ｌｏｇｉｃ−１）２２ａには入出力回路が構築されている。また、入出力部（ＩＯ−４）２１ｄから入出力部（ＩＯ−１）２１ａには、ＦＰＧＡ２０外部のＰＣＩＢｕｓＢｒｉｄｇｅ１７４およびマイクロコントローラ１７１と信号を入出力する回路が構築されている。回路構築の完了後、ＦＰＧＡ２０では、入出力回路３２がＰＣＩＢｕｓＢｒｉｄｇｅ１７４およびマイクロコントローラ１７１から送られてくる暗号処理対象のデータ、および鍵データを受信してＤＥＳ暗号回路３３に供給し、ＤＥＳ暗号回路３３がデータを暗号化する。暗号化されたデータは、入出力回路３２によって、ＰＣＩＢｕｓＢｒｉｄｇｅ１７４に出力される。ＦＰＧＡ２０での回路構築によって、図３に示す暗号処理装置３００が完成する。【００８４】
次に、ＤＥＳ暗号回路３３をＡＥＳ暗号化回路に更新する場合には、コンフィグＲＯＭを入れ替えて回路の再構築を実行する。【００８５】
図１８は、再構築のためのコンフィグＲＯＭに記憶されたプログラムとＦＰＧＡにおける回路構築を説明する図である。【００８６】
図１８のパート（Ａ）には、コンフィグＲＯＭ１３７Ｂ（図２参照）に記憶されたプログラムが、コンフィグＲＯＭから読み出される順に並んで示されている。【００８７】
プログラム４０Ｂは、ＦＰＧＡ２０の４つの入出力部２１および９つの論理構築部２２のうち、論理構築部（Ｌｏｇｉｃ−９）２２ｉから論理構築部（Ｌｏｇｉｃ−４）２２ｄに対応するプログラム４１Ｂの集合である。プログラム４０Ｂは図５に示すＡＥＳ暗号回路を表している。【００８８】
回路の再構築では、図１７に示すプログラム４０Ａが記憶されたコンフィグＲＯＭ１７３Ａ（図２参照）を、図１８に示すプログラム４０Ｂが記憶されたコンフィグＲＯＭ１７３Ｂに置換え、マイクロコントローラ１７１から、論理構築部（Ｌｏｇｉｃ−９）２２ｉから論理構築部（Ｌｏｇｉｃ−４）２２ｄまでのみについて、回路再構築の実行を指定し、残りの論理構築部２２ａ〜２２ｃおよび入出力部２１については回路再構築の不実行を指定する。マイクロコントローラ１７１からの構築開始指示によって、回路の再構築が実行される。【００８９】
このとき、図１４において、論理構築部２２ｉから論理構築部２２ｄに対応するコンフィグフラグが回路構築の実行を表すＯＦＦ状態すなわち‘０‘となり、論理構築部２２ａ〜２２ｃおよび入出力部２１に対応するコンフィグフラグが回路構築の不実行を表すＯＮ状態すなわち’１’となる。この場合、論理構築部２２ｉ〜２２ｄでは、取り込まれたプログラムに応じて回路が構築されるが、論理構築部２２ａ〜２２ｃおよび入出力部２１では、取り込んだプログラムは回路構築に用いられず、そのまま次段に出力される。例えば、図１５に示す入出力部（ＩＯ−１）２１ａでは、コンフィグフラグ（ＩＯ−１）が回路構築の不実行を表すＯＮ状態となっており、入力されてくるプログラムは内部論理Ｍを迂回して出力される。【００９０】
図１８のパート（Ｂ）には、ＦＰＧＡにおける回路の再構築実行中の状態が示されている。ＦＰＧＡ２０の論理構築部２２ｉから論理構築部２２ｄまでは回路の構築が進行中であり、内部の論理は不確定の状態となる。このとき、回路が構築される論理構築部（２２ｉ〜２２ｄ）と回路が構築されない論理構築部（２２ａ〜２２ｃ）との間で受け渡される信号は、信号固定部２４によって固定される。例えば、図１１に示す信号固定部２４において、論理構築部（Ｌｏｇｉｃ−４）２２ｄの回路構築を指定するコンフィグフラグ（Ｌｏｇｉｃ−４）がＯＦＦ状態となっており、論理構築部（Ｌｏｇｉｃ−４）２２ｄと論理構築部（Ｌｏｇｉｃ−１）２２ａとの間で受け渡される信号が’１’または’０’に固定される。なお、回路構築を実行する論理構築部（２２ｉ〜２２ｄ）から出力される信号は、信号固定部２４により回路における意味に応じて、’１’および’０’に対応する論理ゲート２４２，２４３に接続されるよう論理回路が構築されることが好ましい。例えば、暗号回路がデータを受け付け可能か否かを表す信号を出力する場合、この信号は、受付可能でないことを表す値に固定されるよう、信号固定部２４内の論理ゲート２４２，２４３に接続されることが好ましい。【００９１】
信号が固定されることによって、入出力回路３２は、ＦＰＧＡ２０における回路の再構築中でも動作を継続することができる。入出力回路３２は、暗号回路にデータを供給したり、暗号回路からデータを受け取ったりすることはできない。しかしながら、例えば、ＰＣＩＢｕｓＢｒｉｄｇｅ１７４からのアクセスに対しては、暗号処理を実行できないため、データの待機を要求するデータをもって応答することが可能となる。したがって、ＦＰＧＡ２０における回路の再構築時に、ＦＰＧＡ２０に接続されたＰＣＩＢｕｓＢｒｉｄｇｅ１７４およびマイクロコントローラ１７１をリセット状態にする必要がない。【００９２】
ここで、ＤＥＳ暗号回路３３は、上述した基本形態における第１の情報処理回路の一例に相当するとともに、第１の情報暗号回路の一例にも相当する。また、ＡＥＳ暗号化回路は、上述した基本形態における第２の情報処理回路の一例に相当するとともに、第２の情報暗号回路の一例にも相当する。【００９３】
［外部接続端子の設定変更］
上述した再構築の例では、入出力部２１における回路の再構築は不実行としたが、本実施形態のＦＰＧＡ２０においては、入出力部２１における回路の再構築を実行することにより、外部接続端子の設定を変更することが可能である。【００９４】
図１９は、再構築のためのコンフィグＲＯＭに記憶された別のプログラムとＦＰＧＡにおける回路構築を説明する図である。【００９５】
図１９のパート（Ａ）に示すプログラム４０Ｃには、論理構築部（Ｌｏｇｉｃ−９）２２ｉから論理構築部（Ｌｏｇｉｃ−４）２２ｄに対応するＡＥＳ暗号回路に加え、入出力部（ＩＯ−３）２１ｃに対応する外部端子設定回路のプログラムも含まれている。【００９６】
図１９に示す回路の再構築の例では、マイクロコントローラ１７１が、論理構築部（Ｌｏｇｉｃ−９）２２ｉから論理構築部（Ｌｏｇｉｃ−４）２２ｄまで、および入出力部（ＩＯ−３）２１ｃについて、回路再構築の実行を指定する。この場合、論理構築部２２ｉ〜２２ｄおよび入出力部（ＩＯ−３）２１ｃでは、取り込まれたプログラムに応じて回路が構築される。【００９７】
図１９のパート（Ｂ）には、ＦＰＧＡにおける回路の再構築実行中の状態が示されている。ＦＰＧＡ２０の入出力部（ＩＯ−３）２１ｃでは回路が構築されている。このとき、回路が構築される入出力部（ＩＯ−３）２１ｃにおける出力部２１４（図９参照）では、コンフィグフラグ信号が’０’となっており、外部接続端子の状態が固定される。外部接続端子の回路構築が実行される場合、この外部接続端子と接続されるＰＣＩＢｕｓＢｒｉｄｇｅ１７４およびマイクロコントローラ１７１とのデータの受け渡しは制限されるが、外部接続端子の状態が回路構築に起因する不定状態とならずに固定されるため、回路の再構築時にＦＰＧＡ２０に接続されたＰＣＩＢｕｓＢｒｉｄｇｅ１７４およびマイクロコントローラ１７１をリセット状態にする必要がない。【００９８】
このことは、上記［発明の開示］欄で説明した、基本形態に対し、「半導体装置が外部接続端子を備えたものであり、上記信号固定部は上記外部接続端子に出力される信号についても固定するものである」という応用形態が好適であることを意味する。ここで、出力部２１４は、上記応用形態の信号固定部の一例に相当する。【００９９】
［第２実施形態］
次に、半導体装置、情報処理回路基板、情報処理装置、および暗号装置の具体的な第２実施形態について説明する。以下の第２実施形態は、ＦＰＧＡの入出力部および論理構築部にプログラムバッファが備えられている点が第１実施形態のＦＰＧＡと異なり、残りの点は第１実施形態と同じである。したがって、第１実施形態における各要素と同一の要素には同一の符号を付けて示し、前述の実施形態との相違点について説明する。【０１００】
図２０は、第２実施形態におけるＦＰＧＡの入出力部を示す図である。図２０には、第２実施形態におけるＦＰＧＡが備える入出力部および論理構築部の代表として、２つの入出力部５１ａ，５１ｂの内部構成が示されている。【０１０１】
図２０に示す入出力部（ＩＯ−１）５１ａには、プログラムの迂回経路にプログラムバッファ５１０ａが設けられている。プログラムバッファ５１０ａは、入出力部（ＩＯ−１）５１ａにおける回路再構築の不実行が指定された場合に、仮に回路構築の実行が指定されたとした場合に、内部論理Ｍが取り込む量のプログラムを保持し、保持したプログラムを保持した順に出力する回路である。プログラムバッファ５１０ａは、カウンタ５１１ａおよびバッファ５１２ａを備えている。バッファ５１２ａは、入出力部（ＩＯ−１）５１ａに入力されてきたプログラムを保持する。カウンタ５１１ａは、入出力部（ＩＯ−１）５１ａに入力されてきたプログラムの量をカウントする。カウンタ５１１ａによりカウントされた量が、内部論理Ｍによって取り込まれるプログラムの量と同じになった時点で、バッファ５１２ａに保持されたプログラムが、保持された順に、次段の入出力部（ＩＯ−２）５１ｂに出力される。【０１０２】
図２１は、図２０に示すカウンタのカウント値およびバッファの入出力データを示すタイミングチャートである。【０１０３】
ここでは、入出力部（ＩＯ−１）５１ａ（図２０参照）の内部論理Ｍが１１ビット分のプログラムを取り込むものとして説明する。【０１０４】
入出力部（ＩＯ−１）５１ａに入力されてくるプログラムは、Ｄ０から順にバッファ５１２ａに入力される（Ｂｕｆｆｅｒ＿ｉｎ）。また、カウンタ５１１ａによってプログラムの量がカウントされる（Ｃｏｕｎｔｅｒ）。カウンタ５１１ａのカウント値が１０に達すると、バッファ５１２ａに保持されたプログラムが、Ｄ０から順に出力される（Ｂｕｆｆｅｒ＿ｏｕｔ）。【０１０５】
上述したプログラムバッファの構成および動作は、次段の入出力部（ＩＯ−２）５１ｂ、ならびに、図２１に図示されない残りの入出力部および論理構築部についても共通である。ただし、バッファ５１２が保持するプログラムの量、およびバッファ５１２から出力が開始されるカウンタ５１１ａのカウント値は、入出力部および論理構築部それぞれの内部論理Ｍによって取り込まれるプログラムの量に合わせられている。【０１０６】
第２実施形態におけるＦＰＧＡでは、入出力部および論理構築部のそれぞれにおいて、回路構築の不実行が指定された場合であっても、回路構築を実行した場合と同じタイミングで、プログラムが次段に出力される。上述した第１実施形態では、例えば図１９のパート（Ａ）に示すように、コンフィグＲＯＭに記憶されたプログラムからは、回路構築が不実行となる入出力部および論理構築部に対応する部分が取り除かれている必要がある。しかし、第２実施形態におけるＦＰＧＡでは、コンフィグＲＯＭに、回路構築が不実行となる入出力部および／または論理構築部の分も含め（ダミーデータであってもよい）プログラムを記憶させることができる。したがって、プログラムを作成する際に、回路構築の実行／不実行に合わせてプログラムを編集する必要がない。【０１０７】
このことは、上記［発明の開示］欄で説明した基本形態に対し、「上記複数の回路構築部は上記集合プログラムを順次引き渡すよう直列接続されたものであり、上記プログラム供給部は、上記複数の回路構築部のそれぞれに対応するプログラムがこの複数の回路構築部の接続順に並んだ集合プログラムをこの複数の回路構築部に供給するものであり、上記複数の回路構築部のそれぞれは、上記指定部によって回路再構築の不実行が指定された場合に、仮に回路構築の実行が指定されたとした場合に取り込む量のプログラムを保持し、保持したプログラムを保持した順に出力するプログラム迂回部を備えた」応用形態が好適であることを意味する。ここで、プログラムバッファ５１０ａは、上記応用形態のプログラム迂回部の一例に相当する。【０１０８】
［第３実施形態］
次に、半導体装置、情報処理回路基板、情報処理装置、および暗号装置の具体的な第３実施形態について説明する。以下の第３実施形態は、ＦＰＧＡの制御部が第１実施形態のＦＰＧＡと異なり、残りの点は第１実施形態と同じである。したがって、第１実施形態における各要素と同一の要素には同一の符号を付けて示し、第１実施形態との相違点について説明する。【０１０９】
図２２は、第３実施形態におけるＦＰＧＡのハードウェア構成を示すブロック図である。【０１１０】
図２２に示すＦＰＧＡ６０は、制御部６３にＩ２Ｃインターフェースを有しない点が図１２に示すＦＰＧＡと異なる。図２２に示すＦＰＧＡ６０では、コンフィグフラグデータはＩ２Ｃ経由ではなく、コンフィグＲＯＭ６７３からスタートアップ制御部６３３を経由して供給される。コンフィグＲＯＭ６７３には、入出力部および論理構築部の回路プログラムに加え、コンフィグフラグデータが記憶される。なお、コンフィグフラグデータは、回路プログラムよりも先に読み出される位置に記憶されている。また、スタートアップ制御部６３３は、コンフィグＲＯＭ６７３から読み出されるデータからコンフィグフラグデータを取り出し、コンフィグフラグレジスタ２３２に送信する。第３実施形態におけるＦＰＧＡでは、回路の再構築の際に、マイクロコントローラからＩ２Ｃを経由してコンフィグフラグデータを送信する必要がない。したがって、暗号カードの構成を簡略化することが可能である。【０１１１】
［第４実施形態］
次に、半導体装置、情報処理回路基板、情報処理装置、および暗号装置の具体的な第４実施形態について説明する。以下の第４実施形態は、ＦＰＧＡの制御部がコンフィグＲＯＭの代わりにＲＡＭ（Ｒｅａｄ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌ  Ｅｒａｓａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの書き換え可能な記憶媒体からデータを読み出すことと、暗号カードがコンフィグＲＯＭの代わりに書き換え可能な記憶媒体を備えた点が第１実施形態と異なる。【０１１２】
図２３は、第４実施形態における暗号カードの構成を示すブロック図である。【０１１３】
図２３に示す暗号カード７７は、コンフィグＲＡＭ７７３を備えており、ＦＰＧＡ７０はこのコンフィグＲＡＭ７７３からプログラムを読み出すように構成されている。また、コンフィグＲＡＭ７７３はマイクロコントローラ７７１とも接続されており、マイクロコントローラ７７１によって内容が書換え可能となっている。図２３に示す暗号カードでは、マイクロコントローラ７７１が、コンフィグＲＡＭ７７３のプログラムを、再構築する回路に対応したものに書換えてから、ＦＰＧＡ７０に回路の再構築を実行させる。【０１１４】
図２３に示す暗号カード７７およびＦＰＧＡ７０によれば、ＦＰＧＡ内部の回路を更新する際に、例えばコンフィグＲＯＭといったハードウェア部品を交換する労力が不要となる。【０１１５】
これまで説明した各実施形態では、「発明の開示」で説明した基本形態における半導体装置として単体のＦＰＧＡが示されているが、この半導体装置は、例えば、再構築が不可能な、固定された論理回路部分と、再構築が可能な回路構築部とが組み合わされたものであってもよい。【０１１６】
図２４は、固定された論理回路部分と再構築が可能な回路構築部とが組み合わされた半導体装置の一例を概略的に示す図である。【０１１７】
図２４に示すＩＣ８００は、特定用途向けに設計されたＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であり、その内部に、回路が再構築が可能なＦＰＧＡ８０が含まれている。図２４に示すＩＣ８００は、ＦＰＧＡ８０の一部分で回路の再構築が実行されても、残りの部分では回路が動作可能である。【０１１８】
また、これまで説明した具体的な各実施形態では、「発明の開示」で説明した基本形態における回路構築部の一例として４つの入出力部２１および９つの論理構築部が示されているが、この回路構築部は、構築される回路の規模に対応して複数であればよく、４つまたは９つ以外の数であってもよい。【０１１９】
また、具体的な各実施形態に対する上記説明では、上記基本形態における情報処理装置の一例としてサーバとして機能するコンピュータシステム１００が示されているが、この情報処理装置は、クライアントとして機能するものであってもよく、あるいはスタンドアロンで動作するものであってもよい。また、具体的な各実施形態に対する上記説明では、基本形態における情報処理装置の一例として、データベース、暗号回路、および通信部を備えた暗号処理装置が示されているが、この情報処理装置は、外部から入力された情報に対しハードウェア回路を用いた処理を実行するものであればよい。【０１２０】
また、具体的な各実施形態に対する上記説明では、上記基本形態における半導体装置に構築された入出力回路の一例として、暗号回路にデータを入出力する入出力回路３２が示されているが、基本形態における入出力回路は、半導体装置に構築された第１の情報処理回路に処理データを入出力するものであればよく、処理データの入出力以外の処理を実行するものであってもよい。例えば、データの演算処理を行うものであってもよい。【０１２１】
また、具体的な各実施形態に対する上記説明では、上記基本形態における第１の情報暗号回路の一例としてＤＥＳ暗号回路が示され、第２の情報暗号回路の一例としてＡＥＳ暗号回路が示されているが、これらの暗号回路は、ＤＥＳまたはＡＥＳ以外にも、トリプルＤＥＳであってもよく、あるいはＲＳＡや他の暗号方式によるものであってもよい。また、各実施形態に対する上記説明では、暗号化処理の回路が示されているが、基本形態における情報暗号回路は、暗号化されたデータに対する復号化処理の回路であってもよい。【０１２２】
また、具体的な各実施形態に対する上記説明では、上記基本形態における第１の情報処理回路および第２の情報処理回路の一例として暗号回路が示されているが、この情報処理回路は、暗号回路以外にも例えば数値演算回路であってもよい。
【図１】
2010038293.tif 000003
【図２】
2010038293.tif 000004
【図３】
2010038293.tif 000005
【図４】
2010038293.tif 000006
【図５】
2010038293.tif 000007
【図６】
2010038293.tif 000008
【図７】
2010038293.tif 000009
【図８】
2010038293.tif 000010
【図９】
2010038293.tif 000011
【図１０】
2010038293.tif 000012
【図１１】
2010038293.tif 000013
【図１２】
2010038293.tif 000014
【図１３】
2010038293.tif 000015
【図１４】
2010038293.tif 000016
【図１５】
2010038293.tif 000017
【図１６】
2010038293.tif 000018
【図１７】
2010038293.tif 000019
【図１８】
2010038293.tif 000020
【図１９】
2010038293.tif 000021
【図２０】
2010038293.tif 000022
【図２１】
2010038293.tif 000023
【図２２】
2010038293.tif 000024
【図２３】
2010038293.tif 000025
【図２４】
2010038293.tif 000026
【図２５】
2010038293.tif 000027
【図２６】
2010038293.tif 000028
【国際調査報告】
2010038293.tif 000029
2010038293.tif 000030