(57)【要約】【課題】プロセッサ間で授受される一連の命令のうちの一部の命令を暗号化することを可能にする。【解決手段】  ホストＣＰＵから信号処理装置に命令を与え、当該命令に応じた処理を信号処理装置に実行させるコンピュータシステムにおいて、暗号化伝送の開始を通知する旨の開始通知コードを埋め込む命令を予め特定しておくとともに、ホストＣＰＵから信号処理装置に与える一連の命令のうちの暗号化を要する区間の直前に上記開始通知コードを埋め込んだ命令を挿入しておく。そして、ホストＣＰＵには、上記開始通知コードが埋め込まれた命令に後続する命令を暗号化して出力する処理を実行させ、信号処理装置には、ホストＣＰＵから命令を受け取る毎にその命令に開始通知コードが埋め込まれている否かを判定させ、埋め込まれている場合には、以降に受け取る命令は暗号化命令であるとみなして復号する処理を実行させる。【選択図】図１
2012034240.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと第２のプロセッサとを含み、所定の処理の実行を指示する命令コードを含む命令を前記第１のプロセッサから前記第２のプロセッサに与えることで前記所定の処理を前記第２のプロセッサに実行させるコンピュータシステムにおいて、
前記第２のプロセッサは、一連の命令を前記第１のプロセッサから受け取る過程において、予め定められた特定の命令コードと暗号化伝送の開始を通知する旨の開始通知コードとを含んだ命令を前記第１のプロセッサから受け取った場合には、以降に受け取る命令は暗号化された暗号化命令であるとみなしてその復号を行い、その復号結果の命令に応じた処理を実行する
ことを特徴とするコンピュータシステム。
【請求項２】
前記特定の命令コードと前記開始通知コードとを含む命令には、後続する暗号化命令を復号する際に使用する制御情報または当該制御情報を表す情報が含まれており、
前記第２のプロセッサは、前記特定の命令コードと前記開始通知コードとを含む命令を前記第１のプロセッサから受け取った場合には、当該命令に含まれている制御情報または当該命令に含まれている情報の表す制御情報を用いて、当該命令に後続する暗号化命令の復号を行う
ことを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記第１のプロセッサから前記第２のプロセッサに与えられる一連の命令は、前記特定の命令コードと前記開始通知コードとを含む命令によって複数の区間に区画されており、
前記第２のプロセッサは、前記複数の区間の各々について、当該区間の直前に位置する命令に含まれている制御情報または当該命令に含まれている情報の表す制御情報を用いて当該区間に属する暗号化命令を復号する
ことを特徴とする請求項２に記載のコンピュータシステム。
【請求項４】
第１のプロセッサから第２のプロセッサへ宛てて出力される一連の命令であって、各々が前記第２のプロセッサに実行させる処理を示す命令コードを含む一連の命令を前記第１のプロセッサから受け取り、予め定められた特定の命令コードと暗号化伝送の開始を通知する旨の開始通知コードを含む命令であるか否かを命令毎に判定する開始通知検出部と、
前記特定の命令コードと前記開始通知コードとを含んでいると前記開始通知検出部により判定された命令以降に受け取る命令については暗号化演算を施して暗号化命令に変換して前記第２のプロセッサへ宛てて出力し、その他の命令については前記暗号化演算を施すことなくそのまま前記第２のプロセッサへ宛てて出力する暗号化演算部と、
を有することを特徴とする暗号化回路。
【請求項５】
第１のプロセッサから第２のプロセッサへ宛てて出力される一連の命令であって、各々が前記第２のプロセッサに実行させる処理を示す命令コードを含む一連の命令を前記第１のプロセッサから受け取り、予め定められた特定の命令コードと暗号化伝送の開始を通知する旨の開始通知コードを含む命令であるか否かを命令毎に判定する開始通知検出部と、
前記特定の命令コードと前記開始通知コードとを含んでいると前記開始通知検出部により判定された命令以降に受け取る命令については暗号化された暗号化命令であるとみなして復号化演算を施しその復号結果を前記第２のプロセッサに宛てて出力する一方、その他の命令については前記復号化演算を施すことなくそのまま前記第２のプロセッサへ宛てて出力する復号化演算部と、
を有することを特徴とする復号回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ間で授受される命令の暗号化および復号に関する。
【背景技術】
【０００２】
携帯電話機等の携帯端末装置のなかには、各種動作の進行を制御するホストＣＰＵ（Central Processing Unit）の他に、ホストＣＰＵによる制御の下で音声処理や画像処理などの信号処理を専門に行うＤＳＰ（Digital Signal Processor）をコプロセッサとして備えたものがある。ホストＣＰＵとコプロセッサとを備えたコンピュータシステムにおいては、コプロセッサに実行させる処理を表す命令コード（オペコードとも呼ばれる）とその処理において使用するデータの所在等を表すオペランドとを含む命令をホストＣＰＵからコプロセッサに順次与え、それら一連の命令に応じた処理をコプロセッサに順次実行させることで画像処理や音声処理等が実現される。一般にコプロセッサの開発には多大な費用と時間がかかることが多く、コプロセッサの構成やコプロセッサが実行する処理の内容は企業秘密となっていることが多い。ホストＣＰＵからコプロセッサに与える一連の命令を解析されるとコプロセッサの構成等が明らかになってしまう虞があるため、ホストＣＰＵからコプロセッサに与える命令を暗号化しておくことが考えられる。このような暗号化を実現する技術の一例としては特許文献１に開示された技術が挙げられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−１９１６０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ホストＣＰＵからコプロセッサに与える一連の命令の中には必ずしも暗号化する必要のないものも含まれており、コンピュータシステム全体の消費電力を低減させるといった観点からは、不要な暗号化をできるだけ省略できることが好ましい。換言すれば、プロセッサ間で授受される一連の命令のうち、機密保持を要するもののみを暗号化できることが好ましい。しかし、特許文献１に開示された技術では、暗号化対象の平文全体を単位として暗号化が行われるため、暗号化対象の平文の一部のみを暗号化するといった柔軟な対処をすることはできない。
本発明は上記課題に鑑みてなされたものであり、プロセッサ間で授受される一連の命令のうちの一部のみを暗号化することを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために本発明は、第１のプロセッサと第２のプロセッサとを含み、前記第２のプロセッサに所定の処理の実行を指示する命令コードを含む命令を前記第１のプロセッサから前記第２のプロセッサに与えることで当該命令コードに応じた処理を前記第２のプロセッサに実行させるコンピュータシステムにおいて、前記第２のプロセッサは、一連の命令を前記第１のプロセッサから受け取る過程において予め定められた特定の命令コードと暗号化伝送の開始を通知する旨の開始通知コードとを含んだ命令を前記第１のプロセッサから受け取った場合には、以降に受け取る命令は暗号化された暗号化命令であるとみなしてその復号を行い、その復号結果を命令として実行することを特徴とするコンピュータシステム、を提供する。
【０００６】
本発明によれば、第１のプロセッサ（例えば、ホストＣＰＵ）から第２のプロセッサ（例えば、ＤＳＰなどのコプロセッサ）に与える一連の命令に機密保持を要するものが含まれている場合には、当該機密保持を要する命令の手前に上記特定の命令コードと開始通知コードとを含んだ命令を挿入しておけば、上記機密保持を要する命令以降の命令を暗号化したとしても、何らの支障なく当該命令に応じた処理を第２のプロセッサに実行させることができる。つまり、本発明によれば、第１のプロセッサから第２のプロセッサに与える一連の命令のうちの一部（機密保持を要する命令）を暗号化して伝送することが可能になるのである。
【０００７】
より好ましい態様においては、前記特定の命令コードと前記開始通知コードとを含む命令には、後続する暗号化命令を復号する際に使用する制御情報または当該制御情報を表す情報を含めておき、前記第２のプロセッサには、前記特定の命令コードと前記開始通知コードとを含む命令を前記第１のプロセッサから受け取った場合に、当該命令に含まれている制御情報または当該命令に含まれている情報の表す制御情報を用いて当該命令に後続する暗号化命令を復号する処理を実行させることが考えられる。なお、上記制御情報としては、復号化（或いは暗号化）アルゴリズムを規定する情報や復号キー（或いは暗号キー）を表す情報を用いるようにすれば良い。このような態様によれば、種々の暗号化アルゴリズム（或いは暗号化キー）によって暗号化を施したとしても、その暗号化アルゴリズム（或いは暗号化キー）に対応した制御情報（或いは当該制御情報を示す情報）を、上記特定の命令コードと上記開始通知コードとを含む命令に含めておくことで、第２のプロセッサ側で暗号化命令の復号を適切に行うことが可能になり、多様な態様の暗号化をサポートすることが可能になる。
【０００８】
さらに好ましい態様としては、前記第１のプロセッサから前記第２のプロセッサに与えられる一連の命令を、前記特定の命令コードと前記開始通知コードとを含む命令によって複数の区間に区画しておき、前記第２のプロセッサには、前記複数の区間の各々について、当該区間の直前に位置する命令に含まれている制御情報または当該命令に含まれている情報の表す制御情報を用いて当該区間に属する暗号化命令を復号する処理を実行させることが考えられる。このような態様によれば、上記一連の命令のうち機密保持を要する区間毎に異なる制御情報を用い暗号化する（異なる態様の暗号化を施す）ことが可能になり、不正解読に対する耐性を高めることができると期待される。
【０００９】
また、上記課題を解決するために本発明は、第１のプロセッサから第２のプロセッサへ宛てて出力される一連の命令であって、各々が前記第２のプロセッサに実行させる処理を示す命令コードを含む一連の命令を前記第１のプロセッサから受け取り、予め定められた特定の命令コードと暗号化伝送の開始を通知する旨の開始通知コードを含む命令であるか否かを命令毎に判定する開始通知検出部と、前記特定の命令コードと前記開始通知コードとを含んでいると前記開始通知検出部により判定された命令以降に受け取る命令については暗号化演算を施して暗号化命令に変換して前記第２のプロセッサへ宛てて出力し、その他の命令については前記暗号化演算を施すことなくそのまま前記第２のプロセッサへ宛てて出力する暗号化演算部とを有することを特徴とする暗号化回路、を提供する。また、本発明の別の態様においては、コンピュータを上記各部として機能させるプログラムを提供する態様であっても良く、その具体的な提供方法としては、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）などのコンピュータ読み取り可能な記録媒体に当該プログラムを書き込んで配布する態様や、インターネットなどの電気通信回線経由のダウンロードにより提供する態様が考えられる。
【００１０】
また、上記課題を解決するために本発明は、第１のプロセッサから第２のプロセッサへ宛てて出力される一連の命令であって、各々が前記第２のプロセッサに実行させる処理を示す命令コードを含む一連の命令を前記第１のプロセッサから受け取り、予め定められた特定の命令コードと暗号化伝送の開始を通知する旨の開始通知コードを含む命令であるか否かを命令毎に判定する開始通知検出部と、前記特定の命令コードと前記開始通知コードとを含んでいると前記開始通知検出部により判定された命令以降に受け取る命令については暗号化された暗号化命令であるとみなして復号化演算を施しその復号結果を前記第２のプロセッサに宛てて出力する一方、その他の命令については前記復号化演算を施すことなくそのまま前記第２のプロセッサへ宛てて出力する復号化演算部とを有することを特徴とする復号回路、を提供する。また、本発明の別の態様においては、コンピュータを上記各部として機能させるプログラムを提供する態様であっても良い。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１実施形態のコンピュータシステム１Ａの構成例を示す図である。
【図２】同コンピュータシステム１Ａに含まれる暗号化回路１２０Ａの構成例およびこの暗号化回路１２０Ａが実行する動作の一例を示すタイムチャートである。
【図３】同コンピュータシステム１Ａに含まれる復号回路３２０Ａの構成例およびこの復号回路３２０Ａが実行する動作の一例を示すタイムチャートである。
【図４】本発明の第２実施形態のコンピュータシステム１Ｂの構成例を示す図である。
【図５】本発明の第３実施形態のコンピュータシステム１Ｃの構成例を示す図である。
【図６】同コンピュータシステム１Ｃに含まれる暗号化回路１２０Ｃおよび復号回路３２０Ｃの構成例を示す図である。
【図７】同暗号化回路１２０Ｃおよび復号回路３２０Ｃの各々に含まれる制御情報生成部５００の動作を説明するための図である。
【図８】本発明の第４実施形態のコンピュータシステム１Ｄの構成例を示す図である。
【図９】同コンピュータシステム１Ｄに含まれる暗号化回路１２０Ｄおよび復号回路３２０Ｄの構成例を示す図である。
【図１０】変形例（３）に係るコプロセッサの構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照しつつ本発明の実施形態について説明する。
（Ａ：第１実施形態）
図１は、本発明の第１実施形態のコンピュータシステム１Ａの構成例を示す図である。
このコンピュータシステム１Ａは、例えば携帯電話機等における音声処理を担当するものであり、音源（図示略）から出力された音声信号のサンプルデータ列（以下、処理対象信号）に残響効果の付与などの信号処理を施して処理結果信号を生成し、その処理結果信号をスピーカ等（図示略）に出力する。図１に示すように、コンピュータシステム１Ａには、第１のプロセッサたるホストＣＰＵ１０Ａと、ホストＣＰＵ１０Ａによる制御の下で各種信号処理を実現する第２のプロセッサ（コプロセッサ）たる信号処理装置３０Ａと、ＲＡＭ（Random Access Memory）などによる命令メモリ２０とが含まれている。
【００１３】
ホストＣＰＵ１０Ａは、信号処理装置３０Ａに各種信号処理を行わせるための一連の命令（１命令あたり３２ビットの固定長命令）の各々をクロックジェネレータ（図示略）から供給されるクロック信号ＣＫに同期させて命令メモリ２０に順次書き込む。一方、信号処理装置３０Ａは命令メモリ２０に書き込まれる命令を古いものから順に１個ずつ読み出して実行する。これにより、上記一連の命令に対応した信号処理が実現される。
【００１４】
図１のコンピュータシステム１Ａでは、ホストＣＰＵ１０Ａは、信号処理装置３０Ａに向けて出力する一連の命令のうちの一部（例えば機密保持を要する命令）を暗号化して出力するように構成されており、一方、信号処理装置３０Ａは、暗号化されている命令（以下、暗号化命令）についてはその復号を行って実行するように構成されている。本実施形態では、信号処理装置３０Ａが実行可能な複数種の命令（所謂命令セット）のうちの特定の命令に、暗号化の開始または終了を通知する役割を担わせ、さらに、暗号化命令を復号する際に使用する制御情報を信号処理装置３０Ａに通知する役割を担わせている。図１の信号処理装置３０Ａは、上記特定の命令によって暗号化の開始を通知されると、それ以降に受け取る命令については上記暗号化命令であるとみなして上記制御情報を用いてその復号を行うのである。
【００１５】
より詳細に説明すると、本実施形態ではＮＯＰ命令（命令コードとしてＮＯＰ命令コードを含んだ命令）に暗号化の開始および終了を通知するためのコード（開始通知コードおよび終了通知コード）を付与したものに、暗号化の開始および終了を通知する役割を担わせている。ここで、ＮＯＰ命令コードとは、信号処理装置３０Ａに対して処理を実行しないことを指示する２ビット（０ｘ１１）の命令コードであり、ＮＯＰ命令は一般的にはタイミング調整等に利用される。また、本実施形態では、開始通知コードおよび終了通知コードとして２ビットの情報（前者は０ｘ１０、後者は０ｘ１１）が用いられる。前述したように、ホストＣＰＵ１０Ａから出力される命令は３２ビットのビット長を有している。本実施形態では、先頭４ビットにＮＯＰ命令コードと開始通知コードとをセットしたＮＯＰ命令（すなわち、先頭４ビットが“１１１０”（１６進表記では“０ｘＥ”）である命令）を暗号化の開始の通知に用い、先頭４ビットにＮＯＰ命令コードと終了通知コードとをセットしたＮＯＰ命令（すなわち、先頭４ビットが
“１１１１”（１６進表記では“０ｘＦ”）である命令）を暗号化の終了の通知に用いている。以下では、先頭４ビットを“０ｘＥ”とした命令のことを「開始通知」と呼び、先頭４ビットを“０ｘＦ”としたＮＯＰ命令のことを「終了通知」と呼ぶ。また、開始通知の先頭４ビットを除いた２８ビット（７バイト）は、制御情報の通知に利用される。前述したように、制御情報は、暗号化命令を復号する際に使用される情報である。この制御情報の一例としては、暗号化命令の生成の際に用いられた暗号化アルゴリズム（或いはその復号を行う際の復号アルゴリズム）を表す情報や暗号化キー（或いは復号キー）を表す情報などが挙げられる。
【００１６】
本実施形態では、ホストＣＰＵ１０Ａから信号処理装置３０Ａに与える一連の平文命令が信号処理装置３０Ａに実行させる信号処理に対応付けて予めホストＣＰＵ１０Ａに記憶されている。これら一連の平文命令の各々には、機密保持を要する命令を含む区間の直前および直後に開始通知と後続の開始通知（或いは終了通知）が予め挿入されている。なお、各開始通知の下位２８ビットにはその開始通知に後続する区間に属する命令を暗号化する際に使用する暗号化アルゴリズム（或いは暗号化キー）を表す情報が制御情報として予めセットされている。本実施形態では、何らかの信号処理を信号処理装置３０Ａに実行させる際には、その信号処理に対応した一連の平文命令を読み出して１命令ずつ命令メモリ２０に書き込む処理をホストＣＰＵ１０Ａに実行させるとともに、開始通知に後続する区間に属する命令についてはその開始通知に含まれている制御情報を用いて暗号化しつつ命令メモリ２０に書き込む処理をホストＣＰＵ１０Ａに実行させるのである。
【００１７】
一方、信号処理装置３０Ａには、開始通知および終了通知の検出を行わせ、開始通知に後続する区間に含まれる命令については暗号化命令であるとみなして当該開始通知の下位２８ビットにセットされている制御情報を用いて復号し、その復号結果を命令として実行する処理を実行させるのである。なお、開始通知および終了通知は本来的には不要な命令であるが、これらは何れもＮＯＰ命令であるから、ホストＣＰＵ１０Ａから信号処理装置３０Ａに与える一連の命令にこれらを挿入したとしても特段の問題は生じない。また、上記暗号化を施す区間にＮＯＰ命令が含まれている場合には、当該ＮＯＰ命令において命令コードに後続する２ビットに開始通知コードとは一致せず、かつ終了通知コードとも一致しない値（例えば“００”）を設定しておけば、暗号化を施す区間に含まれるＮＯＰ命令が開始通知や終了通知と誤認されることを回避することができる。以下、本実施形態の特徴を顕著に示すホストＣＰＵ１０Ａおよび信号処理装置３０Ａについて詳細に説明する。
【００１８】
図１に示すようにホストＣＰＵ１０Ａは、ＣＰＵコア１１０と暗号化回路１２０Ａとを含んでいる。ＣＰＵコア１１０は、命令メモリ２０を介して信号処理装置３０Ａに与える一連の命令（開始通知および終了通知を含む一連の平文命令）の各々をクロックジェネレータ（図示略）から出力されるクロックＣＫに同期させて暗号化回路１２０Ａに出力する。暗号化回路１２０Ａは、図２（Ａ）に示すように、開始通知検出部４１０と、終了通知検出部４２０と、ＯＲゲート４３０と、マルチプレクサ４４０および４６０と、Ｄ−フリップフロップからなるレジスタ４５０と、暗号化演算部４７０と、加算器４９０と、を含んでいる。
【００１９】
図２（Ａ）の開始通知検出部４１０は、入力命令ＩＮが開始通知であるか否かを判定する。より詳細に説明すると、開始通知検出部４１０は、入力命令ＩＮの上位４ビットが０ｘＥであるか否かを判定し、当該４ビットが０ｘＥであればＨレベル（１）の開始通知検出信号ＢＥＧＩＮを出力する一方、０ｘＥではない場合にはＬレベル（０）の開始通知検出信号ＢＥＧＩＮを出力する。図２（Ａ）に示すように開始通知検出部４１０から出力される開始通知検出信号ＢＥＧＩＮはマルチプレクサ４４０に対して出力を切り換えるための選択信号ＳＥＬ１として与えられるとともに、ＯＲゲート４３０の一方の入力端子に与えられる。
【００２０】
終了通知検出部４２０は、入力命令ＩＮが終了通知であるか否かを判定する。より詳細に説明すると、終了通知検出部４２０は、上記入力命令ＩＮの上位４ビットが０ｘＦであるか否かを判定し、当該４ビットが０ｘＦであればＨレベルの終了通知検出信号ＥＮＤを出力する一方、０ｘＦではない場合にはＬレベルの終了通知検出信号ＥＮＤを出力する。図２に示すように終了通知検出部４２０から出力される終了通知検出信号ＥＮＤはＯＲゲート４３０の他方の入力端子に与えられる。ＯＲゲート４３０は、開始通知検出信号ＢＥＧＩＮと終了通知信号ＥＮＤの論理和信号をイネーブル信号としてレジスタ４５０のイネーブル端子Ｅに与えるとともに、同論理和信号を選択信号ＳＥＬ２としてマルチプレクサ４６０に与える。
【００２１】
マルチプレクサ４４０には、入力命令ＩＮの下位２８ビットと制御情報の初期値（本実施形態では、０ｘ０００００００）とが入力される。このマルチプレクサ４４０は、開始通知検出部４１０から与えられる選択信号ＳＥＬ１がＨレベルであれば、入力命令ＩＮの下位２８ビットを出力し、同選択信号ＳＥＬ１がＬレベルであれば上記制御情報の初期値を出力する。レジスタ４５０は、イネーブル端子Ｅに与えられるイネーブル信号がＨレベルである状態においてクロックＣＫが立ち上がったとき、マルチプレクサ４４０の出力信号により記憶内容を更新し、更新後の記憶内容を示す信号をマルチプレクサ４６０に出力する。マルチプレクサ４６０には、レジスタ４５０の出力信号の他に制御情報の初期値が入力される。このマルチプレクサ４６０は、ＯＲゲート４３０から与えられる選択信号ＳＥＬ２がＬレベルであれば、レジスタ４５０の出力信号を制御情報ＣＩとして暗号化演算部４７０に与え、同選択信号ＳＥＬ２がＨレベルであれば上記初期値を制御情報ＣＩとして暗号化演算部４７０に与える。
【００２２】
暗号化演算部４７０は、入力命令ＩＮの下位２８ビットに対してマルチプレクサ４６０から与えられる制御情報ＣＩに応じた暗号化演算を施し（或いは、暗号化演算を施さずに）加算器４９０に出力する。より詳細に説明すると、マルチプレクサ４６０から与えられた制御情報ＣＩが初期値を表すものである場合には、暗号化演算部４７０は、入力命令ＩＮの下位２８ビットに対して暗号化演算を施すことなくそのまま加算器４９０に出力する。これに対して、暗号化演算部４７０は、マルチプレクサ４６０から初期値以外の制御情報ＣＩを与えられた場合には、その制御情報ＣＩの値に応じた暗号化演算を上記下位２８ビットに施し、その演算結果を加算器４９０に出力する。なお、暗号化演算部４７０が実行する暗号化演算のアルゴリズムについては周知のもの（ＤＥＳなど）を適宜用いるようにすれば良い。この暗号化アルゴリズムとして簡素なものを用いるようにすれば、暗号化演算部４７０の回路規模が小さくなり、暗号化回路１２０Ａおよびこれを含むホストＣＰＵ１０Ａの回路規模を小さくすることができると期待される。加算器４９０は、入力命令ＩＮの上位４ビットと暗号化演算部４７０を介して与えられる同下位２８ビットから出力命令ＯＵＴ（前者を上位４ビット、後者を下位２８ビットとする命令）を復元し、命令メモリ２０に書き込む。
以上が暗号化回路１２０Ａの構成である。
【００２３】
次いで、図２（Ｂ）を参照しつつ暗号化回路１２０Ａが実行する動作について説明する。図２（Ｂ）は、暗号化回路１２０Ａが実行する動作のタイムチャートの一例を示す図である。以下では、図２（Ｂ）に示すようにクロックＣＫの立ち上がりに同期させて９個の命令（０ｘＥ１２３４５６７、０ｘ５５５５５５５５、０ｘＡＡＡＡＡＡＡＡ、０ｘＥ７６５４３２１、０ｘ５５５５５５５５、０ｘＡＡＡＡＡＡＡＡ、０ｘＦ０００００００、０ｘ５５５５５５５５および０ｘＡＡＡＡＡＡＡＡ）からなる一連の命令がＣＰＵコア１１０から順次出力される場合を例にとって暗号化回路１２０Ａが実行する動作について説明する。なお、本動作の開始時点ではレジスタ４５０には制御情報の初期値（本実施形態では、０ｘ０００００００）が予め記憶されている。
【００２４】
本動作例においてＣＰＵコア１１０から暗号化回路１２０Ａに１番目に引き渡される命令は、上位４ビットが０ｘＥであるから、開始通知である。このため、図２（Ｂ）に示すように開始通知検出信号ＢＥＧＩＮはＨレベルとなり、終了通知検知信号ＥＮＤはＬレベルとなり、マルチプレクサ４４０には、Ｈレベルの選択信号ＳＥＬ１が与えられる。この結果、このマルチプレクサ４４０は、入力命令ＩＮの下位２８ビット（すなわち、０ｘ１２３４５６７）を選択してレジスタ４５０に出力する。このとき、レジスタ４５０のイネーブル端子Ｅには、開始通知検出信号ＢＥＧＩＮと終了通知検出信号ＥＮＤの論理和を示すＨレベルの信号がイネーブル信号として与えられる。
【００２５】
レジスタ４５０は、このようにしてイネーブル信号がＨレベルになった状態においてクロックＣＫが立ち上がると、マルチプレクサ４４０の出力信号（０ｘ１２３４５６７）により記憶内容を更新し、更新後の記憶内容（０ｘ１２３４５６７）を示す信号を出力する。一方、マルチプレクサ４６０には上記論理和を示すＨレベルの選択信号ＳＥＬ２が与えられる。このため、マルチプレクサ４６０は制御情報ＣＩとして初期値（０ｘ０００００００）を選択して暗号化演算部４７０に出力する。その結果、上記１番目の命令コードについては暗号化演算部４７０による暗号化演算を施されることなく、そのまま命令メモリ２０に出力される。
【００２６】
２番目および３番目にＣＰＵコア１１０から暗号化回路１２０Ａに与えられる命令は、開始通知ではなく、終了通知でもない。このため、これら２つの命令の各々に関して開始通知検出信号ＢＥＧＩＮと終了通知検出信号ＥＮＤは何れもＬレベルとなり、これら２つの論理和信号もＬレベルとなる。このため、レジスタ４５０にはマルチプレクサ４４０から制御情報の初期値が引き渡されるのであるが、イネーブル端子Ｅに与えられるイネーブル信号がＬレベルであるため、クロックＣＫが立ち上がってもレジスタ４５０の記憶内容の更新は行われない。このため、レジスタ４５０は情報（０ｘ１２３４５６７）をマルチプレクサ４６０に出力する。そして、マルチプレクサ４６０には、Ｌレベルの選択信号ＳＥＬ２が与えられるため、マルチプレクサ４６０は、レジスタ４５０の出力信号（０ｘ１２３４５６７）を選択し、制御情報ＣＩとして暗号化演算部４７０に出力する。その結果、２番目の命令（０ｘ５５５５５５５５）および３番目の命令（０ｘＡＡＡＡＡＡＡＡ）には、暗号化演算部４７０による下位２８ビットの暗号化が施される。例えば２番目の命令（０ｘ５５５５５５５５）は０ｘ５Ｂ８９ＥＦＣＤと暗号化されて命令メモリ２０に書き込まれ、３番目の命令（０ｘＡＡＡＡＡＡＡＡ）は０ｘＡ４６７１０３２と暗号化されて命令メモリ２０に書き込まれる、といった具合である。
【００２７】
４番目にＣＰＵコア１１０から暗号化回路１２０Ａに引き渡される命令は１番目の命令と同様に開始通知である。したがって、この４番目の命令については１番目の命令に対して実行された処理と同一の処理が実行される。具体的には、当該４番目の命令の下位２８ビット（０ｘ７６５４３２１）でレジスタ４５０の記憶内容が更新されるとともに、暗号化演算部４７０には制御情報ＣＩとして初期値を表すものが与えられる。このため、上記４番目の命令（０ｘＥ７６５４３２１）は暗号化演算部４７０による暗号化を施されることなく命令メモリ２０に書き込まれる。
【００２８】
５番目の命令は２番目の命令と同一であり、６番目の命令は３番目の命令と同一である。したがって、これら５番目および６番目の命令は、２番目および３番目の命令と同様に暗号化演算部４７０による暗号化が施される。ただし、５番目および６番目の命令に暗号化を施す時点ではレジスタ４５０に記憶されている情報は４番目の命令の下位２８ビット（０ｘ７６５４３２１）であり、これを制御情報ＣＩとして５番目および６番目の命令の暗号化が行われる。その結果、例えば５番目の命令（０ｘ５５５５５５５５）は０ｘ５ＤＣＦＥ９８Ｂと暗号化されて命令メモリ２０に書き込まれ、６番目の命令（０ｘＡＡＡＡＡＡＡＡ）は０ｘＡ２３０１６７４と暗号化されて命令メモリ２０に書き込まれる。
【００２９】
７番目にＣＰＵコア１１０から暗号化回路１２０Ａに引き渡される命令は、上位４ビットが０ｘＦであるから、終了通知である。このため、図２（Ｂ）に示すように開始通知検出信号ＢＥＧＩＮはＬレベルとなり、終了通知検知信号ＥＮＤはＨレベルとなる。マルチプレクサ４４０にはＬレベルの選択信号ＳＥＬ１が与えられ、マルチプレクサ４４０は制御情報の初期値をレジスタ４５０に出力する。レジスタ４５０のイネーブル端子ＥにはＨレベルのイネーブル信号が与えられるため、レジスタ４５０はクロックＣＫの立ち上がりに同期させてマルチプレクサ４６０の出力信号で記憶内容を更新する。マルチプレクサ４６０にはＨレベルの選択信号ＳＥＬ２が与えられるため、マルチプレクサ４６０は制御情報の初期値（０ｘ０００００００）を暗号化演算部４７０に出力する。このため、上記４番目の命令については暗号化演算部４７０による暗号化演算を施されることなく、そのまま命令メモリ２０に出力される。
【００３０】
８番目および９番目にＣＰＵコア１１０から暗号化回路１２０Ａに与えられる命令は、何れも開始通知ではなく、終了通知でもない。このため、２番目および３番目の命令の場合と同様に、マルチプレクサ４４０は制御情報の初期値をレジスタ４５０に出力し、レジスタ４５０は記憶内容（０ｘ０００００００）の出力のみを行い、マルチプレクサ４６０はレジスタ４５０の出力信号（０ｘ００００００）を制御情報ＣＩとして暗号化演算部４７０に与える。その結果、これら８番目および９番目の命令については、暗号化演算部４７０による暗号化を施されることなく命令メモリ２０に出力される。
以上が暗号化回路１２０Ａが実行する動作である。
【００３１】
このように本実施形態の暗号化回路１２０Ａによれば、ＣＰＵコア１１０から出力される一連の命令のうち開始通知と後続の開始通知（或いは終了通知）とで区画される区間に属する命令は、当該区間の直前に位置する開始通知の下位２８ビットを制御情報として暗号されて命令メモリ２０に書き込まれる。つまり、本実施形態の暗号化回路１２０Ａによれば、ＣＰＵコア１１０から出力される一連の命令の一部だけを暗号化して信号処理装置３０Ａに与えることが可能になるとともに、暗号化する区間毎に暗号化の態様を異ならせることもできるのである。
【００３２】
次いで、信号処理装置３０Ａについて説明する。
図１の信号処理装置３０ＡはＤＳＰであり、暗号化回路１２０Ａによる暗号化を施された暗号化命令の復号を行う復号回路３２０Ａと、復号回路３２０Ａにより復号された命令を実行し各種信号処理を実現するＤＳＰコア３１０とを含んでいる。図３（Ａ）は、復号回路３２０Ａの構成例を示すブロック図である。図３（Ａ）と図２（Ａ）とを対比すれば明らかように、復号回路３２０Ａは、暗号化演算部４７０に換えて復号化演算部４８０を有している点のみが暗号化回路１２０Ａと異なる。この復号化演算部４８０は、暗号化演算部４７０における暗号化演算に対応する復号化演算（例えば、暗号化演算の逆演算など）を行う。より詳細に説明すると、復号化演算部４８０は、マルチプレクサ４６０から与えられる制御情報ＣＩが初期値を表すものである場合には、入力命令ＩＮの下位２８ビットに復号化演算を施すことなく出力し、初期値以外の制御情報ＣＩを引き渡された場合には、その制御情報ＣＩに応じた復号化演算を入力命令ＩＮの下位２８ビットに施して出力する。
【００３３】
このような構成としたため、復号回路３２０Ａにおいては、暗号化回路１２０Ａにおける暗号化演算を復号化演算に置き換えた処理、すなわち、開始通知と後続の開始通知（或いは終了通知）とで区間される区間に属する命令の下位２８ビットを当該区間の直前に位置する開始通知の下位２８ビットを制御情報として復号化する処理が実行される。図３（Ｂ）は復号回路３２０Ａが実行する動作のタイムチャートの一例を示す図である。図３（Ｂ）に示すように、０ｘＥ１２３４５６７、０ｘ５Ｂ８９ＥＦＣＤ（命令０ｘ５５５５５５５５を制御情報０ｘ１２３４５６７を用いて暗号化して得られる暗号化命令）、０ｘＡ４７６１０３２（命令０ｘＡＡＡＡＡＡＡＡを制御情報０ｘ１２３４５６７を用いて暗号化して得られる暗号化命令）、０ｘＥ７６５４３２１、０ｘ５ＤＣＦＥ９８Ｂ（命令０ｘ５５５５５５５５を制御情報０ｘ７６５４３２１を用いて暗号化して得られる暗号化命令）、０ｘＡ２３０１６７４（命令０ｘＡＡＡＡＡＡＡＡを制御情報０ｘ７６５４３２１を用いて暗号化して得られる暗号化命令）、０ｘＦ０００００００、０ｘ５５５５５５５５および０ｘＡＡＡＡＡＡＡＡの９個の命令コードが復号回路３２０Ａに順次入力されると、復号化演算部４８０を除いた復号回路３２０Ａの各構成要素は図２（Ｂ）における暗号化回路１２０Ａの該当要素と同一の動作を行う。その結果、図３（Ｂ）に示すように、復号回路３２０Ａからは０ｘＥ１２３４５６７、０ｘ５５５５５５５５、０ｘＡＡＡＡＡＡＡＡ、０ｘＥ７６５４３２１、０ｘ５５５５５５５５、０ｘＡＡＡＡＡＡＡＡ、０ｘＦ０００００００、０ｘ５５５５５５５５および０ｘＡＡＡＡＡＡＡＡの各命令が順次出力される。
【００３４】
図３（Ｂ）における入力命令ＩＮの配列は図２（Ｂ）における出力命令ＯＵＴの配列と一致しており、図３（Ｂ）における出力命令ＯＵＴの配列は図２（Ｂ）における入力命令ＩＮの配列と一致している。図３（Ｂ）と図２（Ｂ）とを対比すれば明らかなように、本実施形態によれば、一部が暗号化されてホストＣＰＵ１０Ａから信号処理装置３０Ａに与えられる一連の命令のうちの一部が暗号化されている場合であっても、当該暗号化されている部分を信号処理装置３０Ａに復号させ、その暗号化前の命令を完全に復元して実行させることができるのである。
【００３５】
（Ｂ：第２実施形態）
図４は、本発明の第２実施形態のコンピュータシステム１Ｂの構成例を示す図である。
図４に示すように、このコンピュータシステム１Ｂは、ホストＣＰＵ１０Ａに換えてホストＣＰＵ１０Ｂを有している点がコンピュータシステム１Ａと異なる。図４に示すように、ホストＣＰＵ１０Ｂは、暗号化回路１２０Ａを有していない点がホストＣＰＵ１０Ａと異なる。ただし、本実施形態では、信号処理装置３０Ａに実行させる信号処理の各々に対応する一連の命令として、開始通知とこれに後続する開始通知（或いは終了通知）で区画される区間毎に暗号化回路１２０Ａにおけるものと同一の暗号化演算を施されたものが予めホストＣＰＵ１０Ｂに記憶されており、ＣＰＵコア１１０は上記区間毎に暗号化を施された一連の命令を出力する。このため、本実施形態のホストＣＰＵ１０Ｂでは、暗号化回路１２０Ａが省略されているのである。一方、信号処理装置３０Ａの構成はコンピュータシステム１Ａにおけるものと同一である。したがって、本実施形態によってもホストＣＰＵ１０Ｂから信号処理装置３０Ａに引き渡す一連の命令の一部を暗号化して機密保持を計ることが可能になる。
【００３６】
（Ｃ：第３実施形態）
図５は、本発明の第３実施形態のコンピュータシステム１Ｃの構成例を示す図である。
図５に示すように、このコンピュータシステム１Ｃは、ホストＣＰＵ１０Ａに換えてホストＣＰＵ１０Ｃを有している点と、信号処理装置３０Ａに換えて信号処理装置３０Ｃを有している点がコンピュータシステム１Ａと異なる。ホストＣＰＵ１０Ｃは暗号化回路１２０Ａに換えて暗号化回路１２０Ｃを有している点がホストＣＰＵ１０Ａと異なり、信号処理装置３０Ｃは復号回路３２０Ａに換えて復号回路３２０Ｃを有している点が信号処理装置３０Ａと異なる。
【００３７】
図６（Ａ）は暗号化回路１２０Ｃの構成例を示す図であり、図６（Ｂ）は復号回路３２０Ｃの構成例を示す図である。図６（Ａ）と図２（Ａ）を対比すれば明らかように、暗号化回路１２０Ｃは制御情報生成部５００を有している点が暗号化回路１２０Ａと異なる。同様に図６（Ｂ）と図２（Ｂ）を対比すれば明らかように、復号回路３２０Ｃは制御情報生成部５００を有している点が復号回路３２０Ａと異なる。図６（Ａ）および図６（Ｂ）を参照すれば明らかように、本実施形態では、入力命令ＩＮの下位２８ビットがそのままマルチプレクサ４４０に与えられるのではなく、入力命令ＩＮの下位２８ビットは制御情報生成部５００に与えられ、この制御情報生成部５００から出力される２８ビットのデータがマルチプレクサ４４０に与えられる。そして、マルチプレクサ４４０は、開始通知検出部４１０からＨレベルの選択信号ＳＥＬ１を与えられると、制御情報生成部５００から与えられた２８ビットのデータをレジスタ４５０に出力する。
【００３８】
図６（Ａ）および図６（Ｂ）の制御情報生成部５００は、開始通知に後続する暗号化命令を復号する際に使用する２８ビットの制御情報を当該開始通知の下位２８ビットに基づいて生成し、マルチプレクサ４４０に出力する装置である。図７は、制御情報生成部５００の構成例を示す図である。図７に示す制御情報生成部５００は、制御情報とその制御情報を一意に示す識別子（図７に示す例では制御情報指示子）とを対応付けて格納した制御情報テーブルＴＢＬを有している。図７に示す制御情報生成部５００は、制御情報指示子を与えられるとその制御情報指示子に対応する制御情報を制御情報テーブルＴＢＬから読み出してマルチプレクサ４４０に出力する。
【００３９】
上記のような構成としたため、例えば、図７に示すように制御情報０ｘ１２３４５６７を示す制御情報指示子として０ｘ００００００１を用い、制御情報０ｘ７６５４３２１を示す制御情報指示子として０ｘ００００００２を用いるとともに、図２（Ｂ）に示す９個の入力命令ＩＮのうちの開始通知０ｘＥ１２３４５６７を０ｘＥ００００００１に置き換え、同開始通知０ｘＥ７６５４３２１を０ｘＥ００００００２に置き換えて暗号化回路１２０Ｃに与えるようにすれば、同図２（Ｂ）に示す９個の出力命令ＯＵＴと同一の出力が得られる。そして、これら９個の出力命令ＯＵＴを復号回路３２０Ｃに入力命令ＩＮとして与えることで、暗号化回路１２０Ｃによる暗号化を施す前の命令を復元することができる。
【００４０】
このように、本実施形態では、開始通知の下位２８ビットにその開始通知に後続する暗号化命令を復号する際に使用する制御情報が直接セットされているのはなく、その制御情報を一意に識別する制御情報指示子がセットされている。つまり、本実施形態では、暗号化命令を復号する際に使用する制御情報そのものがホストＣＰＵ１０Ｃと信号処理装置３０Ｃとの間で授受されることはないのである。このような構成としたため本実施形態によれば、ホストＣＰＵ１０Ｃと信号処理装置３０Ｃとの間で送受信される一連の命令が何らかの方法で不正に読み出され解読が試みられたとしても、上記制御情報を取得することができないため、暗号化命令を解読して元の命令を取得することは困難である。このように、本実施形態によれば、プロセッサ間で授受される一連の命令のうちの機密保持を要する部分のみを暗号化することに加えて、不正解読に対する耐性を高めることが可能になる。
【００４１】
（Ｄ：第４実施形態）
図８は、本発明の第４実施形態のコンピュータシステム１Ｄの構成例を示す図である。
図８に示すように、このコンピュータシステム１Ｄは、ホストＣＰＵ１０Ａに換えてホストＣＰＵ１０Ｄを有している点と、信号処理装置３０Ａに換えて信号処理装置３０Ｄを有している点がコンピュータシステム１Ａと異なる。ホストＣＰＵ１０Ｄは暗号化回路１２０Ａに換えて暗号化回路１２０Ｄを有している点がホストＣＰＵ１０Ａと異なり、信号処理装置３０Ｄは復号回路３２０Ａに換えて復号回路３２０Ｄを有している点が信号処理装置３０Ａと異なる。
【００４２】
図９（Ａ）は暗号化回路１２０Ｄの構成例を示す図であり、図９（Ｂ）は復号回路３２０Ｄの構成例を示す図である。図９（Ａ）と図６（Ａ）を対比すれば明らかように、暗号化回路１２０Ｄは、カウンタ５１０を有している点が暗号化回路１２０Ｃと異なる。同様に図９（Ｂ）と図６（Ｂ）を対比すれば明らかように、復号回路３２０Ｄはカウンタ５１０を有している点が復号回路３２０Ｃと異なる。図９（Ａ）および図９（Ｂ）のカウンタ５１０は、開始通知検出信号ＢＥＧＩＮがＬレベルからＨレベルになった回数をカウントするものであり、そのカウント値を制御情報指示子として制御情報生成部５００に与える。このため、例えば図７に示す場合と同様に、制御情報“０ｘ１２３４５６７”には制御情報指示子“０ｘ００００００１”を対応付けておくとともに、制御情報“０ｘ７６５４３２１”には制御情報指示子“０ｘ００００００２”を対応付けておけば、前述した第３実施形態のホストＣＰＵ１０Ｃと同一の動作をホストＣＰＵ１０Ｄに実行させ、信号処理装置３０Ｃと同一の動作を信号処理装置３０Ｄに実行させることができる。
【００４３】
このように、本実施形態によっても、制御情報が復号側へ直接通知されることはなく、前述した第３実施形態と同様に、ホストＣＰＵ１０Ｄと信号処理装置３０Ｄとの間で送受信される暗号化命令の不正解読に対する耐性を高めることができる。また、本実施形態では、開始通知の下位２８ビットは制御情報指示子の通知にも使用されない。このため、制御情報とは無関係なダミーの情報を開始通知の下位２８ビットに設定しておけば、当該ダミーの情報が制御情報（或いは制御情報指示子）であるかのような印象を不正解読者に与えて惑わせ、不正解読に対する耐性をさらに高めることができると期待される。
【００４４】
（Ｅ：変形）
以上本発明の第１〜第４実施形態について説明したが、これら実施形態を以下のように変形しても勿論良い。
（１）上述した第１〜第４実施形態では、信号処理装置に復号回路（復号回路３２０Ａ、３２０Ｃおよび３２０Ｄの各々）を内蔵させたが、復号回路を信号処理装置の外部に設けても勿論良い。同様に、暗号化回路（暗号化回路１２０Ａ、１２０Ｃおよび１２０Ｄ）をホストＣＰＵの外部に設けても勿論良い。また、上述した各実施形態では命令メモリ２０を信号処理装置の外部に設けたが、命令メモリ２０を信号処理装置に内蔵させても良い。
【００４５】
（２）上述した各実施形態では、開始通知および終了通知の役割をＮＯＰ命令に担わせたが、ＮＯＰ命令以外の命令に開始通或いは終了通知の役割を担わせても良い。また、開始通知の役割を担わせる命令と終了通知の役割を担わせる命令とを異ならせても良い。例えば、ＮＯＰ命令に開始通知の役割を担わせ、ＮＯＰ命令とは異なる他の命令に終了通知の役割を担わせるといった具合である。また、上述した各実施形態では、終了通知を用いて暗号化伝送の終了を通知したが、暗号化伝送の終了を通知する必要がない場合には終了通知を用いる必要はない。
【００４６】
（３）上述した各実施形態では、ホストＣＰＵから信号処理装置などのコプロセッサに与える（ダウンロードする）一連の命令の一部を暗号化する場合について説明したが、逆にコプロセッサからホストＣＰＵにアップロードする命令の暗号化に本発明を適用しても勿論良い。図１０に示す音源ＬＳＩ４０は、ホストＣＰＵ１０Ｂから出力される暗号化命令を受け取ってその復号を行い、その復号結果に応じた処理を行う一方、ホストＣＰＵ１０Ｂへの命令のアップロードを行う際に暗号化を施してそのアップロードを行うコプロセッサの一例である。この音源ＬＳＩ４０は、音声信号を生成して出力する音源回路（図示略）、この音声信号に各種信号処理を施す信号処理装置３０Ｅ、復号回路３２０Ａ、および暗号化回路１２０Ａを含んでいる。なお、図１０の復号回路３２０Ａ、暗号化回路１２０ＡおよびＤＳＰコア３１０は前述した第１実施形態におけるものと同一であり、同図１０のホストＣＰＵ１０Ｂは前述した第２実施形態におけるものと同一である。図１０に示す音源ＬＳＩ４０では、ホストＣＰＵ１０Ｂから与えられる暗号化命令の復号が復号回路３２０Ａによって行われ、その復号結果は信号処理装置３０Ｅに内蔵されている命令メモリ２０に書き込まれる。信号処理装置３０ＥのＤＳＰコア３１０は、命令メモリ２０に格納されている命令を順次実行することで各種信号処理を実現する。そして、図１０に示す音源ＬＳＩ４０において命令メモリ２０に記憶されている命令をホストＣＰＵ１０Ｂにアップロードする際には、暗号化回路１２０Ａによる暗号化が当該命令に施されるのである。
【００４７】
（４）上述した第１、第３および第４実施形態では、暗号化回路をハードウェアで構成したが、暗号化回路が実行する処理と同一の処理をソフトウェアで実現しそのソフトウェアをＣＰＵコア１１０に実行させることで、ホストＣＰＵから信号処理装置に与える一連の命令の一部の暗号化を実現しても良い。同様に、復号回路（復号回路３２０Ａ、３２０Ｃ或いは３２０Ｄ）が実行する処理と同一の処理をソフトウェアで実現しそのソフトウェアをＤＳＰコア３１０に実行させることで、一部が暗号化されてホストＣＰＵから与えられる一連の命令の復号化を実現しても良い。
【符号の説明】
【００４８】
１Ａ、１Ｂ、１Ｃ、１Ｄ…コンピュータシステム、１０Ａ，１０Ｂ，１０Ｃ，１０Ｄ…ホストＣＰＵ、１１０…ＣＰＵコア、１２０Ａ，１２０Ｃ，１２０Ｄ…暗号化回路、２０…命令メモリ、３０Ａ，３０Ｃ，３０Ｄ…信号処理装置、３１０…ＤＳＰコア、３２０Ａ，３２０Ｃ、３２０Ｄ…復号回路、４１０…開始通知検出部、４２０…終了通知検出部、４３０…ＯＲゲート、４４０，４６０…マルチプレクサ、４５０…レジスタ、４７０…暗号化演算部、４８０…復号化演算部、４９０…加算器、５００…制御情報生成部、５１０…カウンタ。
【図１】
2012034240.tif 000003
【図２】
2012034240.tif 000004
【図３】
2012034240.tif 000005
【図４】
2012034240.tif 000006
【図５】
2012034240.tif 000007
【図６】
2012034240.tif 000008
【図７】
2012034240.tif 000009
【図８】
2012034240.tif 000010
【図９】
2012034240.tif 000011
【図１０】
2012034240.tif 000012