説明

コンピュータシステム、暗号化回路および復号回路

【課題】プロセッサ間で授受される一連の命令のうちの一部の命令を暗号化することを可能にする。
【解決手段】 ホストCPUから信号処理装置に命令を与え、当該命令に応じた処理を信号処理装置に実行させるコンピュータシステムにおいて、暗号化伝送の開始を通知する旨の開始通知コードを埋め込む命令を予め特定しておくとともに、ホストCPUから信号処理装置に与える一連の命令のうちの暗号化を要する区間の直前に上記開始通知コードを埋め込んだ命令を挿入しておく。そして、ホストCPUには、上記開始通知コードが埋め込まれた命令に後続する命令を暗号化して出力する処理を実行させ、信号処理装置には、ホストCPUから命令を受け取る毎にその命令に開始通知コードが埋め込まれている否かを判定させ、埋め込まれている場合には、以降に受け取る命令は暗号化命令であるとみなして復号する処理を実行させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサ間で授受される命令の暗号化および復号に関する。
【背景技術】
【0002】
携帯電話機等の携帯端末装置のなかには、各種動作の進行を制御するホストCPU(Central Processing Unit)の他に、ホストCPUによる制御の下で音声処理や画像処理などの信号処理を専門に行うDSP(Digital Signal Processor)をコプロセッサとして備えたものがある。ホストCPUとコプロセッサとを備えたコンピュータシステムにおいては、コプロセッサに実行させる処理を表す命令コード(オペコードとも呼ばれる)とその処理において使用するデータの所在等を表すオペランドとを含む命令をホストCPUからコプロセッサに順次与え、それら一連の命令に応じた処理をコプロセッサに順次実行させることで画像処理や音声処理等が実現される。一般にコプロセッサの開発には多大な費用と時間がかかることが多く、コプロセッサの構成やコプロセッサが実行する処理の内容は企業秘密となっていることが多い。ホストCPUからコプロセッサに与える一連の命令を解析されるとコプロセッサの構成等が明らかになってしまう虞があるため、ホストCPUからコプロセッサに与える命令を暗号化しておくことが考えられる。このような暗号化を実現する技術の一例としては特許文献1に開示された技術が挙げられる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平7−191603号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、ホストCPUからコプロセッサに与える一連の命令の中には必ずしも暗号化する必要のないものも含まれており、コンピュータシステム全体の消費電力を低減させるといった観点からは、不要な暗号化をできるだけ省略できることが好ましい。換言すれば、プロセッサ間で授受される一連の命令のうち、機密保持を要するもののみを暗号化できることが好ましい。しかし、特許文献1に開示された技術では、暗号化対象の平文全体を単位として暗号化が行われるため、暗号化対象の平文の一部のみを暗号化するといった柔軟な対処をすることはできない。
本発明は上記課題に鑑みてなされたものであり、プロセッサ間で授受される一連の命令のうちの一部のみを暗号化することを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【0005】
上記課題を解決するために本発明は、第1のプロセッサと第2のプロセッサとを含み、前記第2のプロセッサに所定の処理の実行を指示する命令コードを含む命令を前記第1のプロセッサから前記第2のプロセッサに与えることで当該命令コードに応じた処理を前記第2のプロセッサに実行させるコンピュータシステムにおいて、前記第2のプロセッサは、一連の命令を前記第1のプロセッサから受け取る過程において予め定められた特定の命令コードと暗号化伝送の開始を通知する旨の開始通知コードとを含んだ命令を前記第1のプロセッサから受け取った場合には、以降に受け取る命令は暗号化された暗号化命令であるとみなしてその復号を行い、その復号結果を命令として実行することを特徴とするコンピュータシステム、を提供する。
【0006】
本発明によれば、第1のプロセッサ(例えば、ホストCPU)から第2のプロセッサ(例えば、DSPなどのコプロセッサ)に与える一連の命令に機密保持を要するものが含まれている場合には、当該機密保持を要する命令の手前に上記特定の命令コードと開始通知コードとを含んだ命令を挿入しておけば、上記機密保持を要する命令以降の命令を暗号化したとしても、何らの支障なく当該命令に応じた処理を第2のプロセッサに実行させることができる。つまり、本発明によれば、第1のプロセッサから第2のプロセッサに与える一連の命令のうちの一部(機密保持を要する命令)を暗号化して伝送することが可能になるのである。
【0007】
より好ましい態様においては、前記特定の命令コードと前記開始通知コードとを含む命令には、後続する暗号化命令を復号する際に使用する制御情報または当該制御情報を表す情報を含めておき、前記第2のプロセッサには、前記特定の命令コードと前記開始通知コードとを含む命令を前記第1のプロセッサから受け取った場合に、当該命令に含まれている制御情報または当該命令に含まれている情報の表す制御情報を用いて当該命令に後続する暗号化命令を復号する処理を実行させることが考えられる。なお、上記制御情報としては、復号化(或いは暗号化)アルゴリズムを規定する情報や復号キー(或いは暗号キー)を表す情報を用いるようにすれば良い。このような態様によれば、種々の暗号化アルゴリズム(或いは暗号化キー)によって暗号化を施したとしても、その暗号化アルゴリズム(或いは暗号化キー)に対応した制御情報(或いは当該制御情報を示す情報)を、上記特定の命令コードと上記開始通知コードとを含む命令に含めておくことで、第2のプロセッサ側で暗号化命令の復号を適切に行うことが可能になり、多様な態様の暗号化をサポートすることが可能になる。
【0008】
さらに好ましい態様としては、前記第1のプロセッサから前記第2のプロセッサに与えられる一連の命令を、前記特定の命令コードと前記開始通知コードとを含む命令によって複数の区間に区画しておき、前記第2のプロセッサには、前記複数の区間の各々について、当該区間の直前に位置する命令に含まれている制御情報または当該命令に含まれている情報の表す制御情報を用いて当該区間に属する暗号化命令を復号する処理を実行させることが考えられる。このような態様によれば、上記一連の命令のうち機密保持を要する区間毎に異なる制御情報を用い暗号化する(異なる態様の暗号化を施す)ことが可能になり、不正解読に対する耐性を高めることができると期待される。
【0009】
また、上記課題を解決するために本発明は、第1のプロセッサから第2のプロセッサへ宛てて出力される一連の命令であって、各々が前記第2のプロセッサに実行させる処理を示す命令コードを含む一連の命令を前記第1のプロセッサから受け取り、予め定められた特定の命令コードと暗号化伝送の開始を通知する旨の開始通知コードを含む命令であるか否かを命令毎に判定する開始通知検出部と、前記特定の命令コードと前記開始通知コードとを含んでいると前記開始通知検出部により判定された命令以降に受け取る命令については暗号化演算を施して暗号化命令に変換して前記第2のプロセッサへ宛てて出力し、その他の命令については前記暗号化演算を施すことなくそのまま前記第2のプロセッサへ宛てて出力する暗号化演算部とを有することを特徴とする暗号化回路、を提供する。また、本発明の別の態様においては、コンピュータを上記各部として機能させるプログラムを提供する態様であっても良く、その具体的な提供方法としては、CD−ROM(Compact Disk-Read Only Memory)などのコンピュータ読み取り可能な記録媒体に当該プログラムを書き込んで配布する態様や、インターネットなどの電気通信回線経由のダウンロードにより提供する態様が考えられる。
【0010】
また、上記課題を解決するために本発明は、第1のプロセッサから第2のプロセッサへ宛てて出力される一連の命令であって、各々が前記第2のプロセッサに実行させる処理を示す命令コードを含む一連の命令を前記第1のプロセッサから受け取り、予め定められた特定の命令コードと暗号化伝送の開始を通知する旨の開始通知コードを含む命令であるか否かを命令毎に判定する開始通知検出部と、前記特定の命令コードと前記開始通知コードとを含んでいると前記開始通知検出部により判定された命令以降に受け取る命令については暗号化された暗号化命令であるとみなして復号化演算を施しその復号結果を前記第2のプロセッサに宛てて出力する一方、その他の命令については前記復号化演算を施すことなくそのまま前記第2のプロセッサへ宛てて出力する復号化演算部とを有することを特徴とする復号回路、を提供する。また、本発明の別の態様においては、コンピュータを上記各部として機能させるプログラムを提供する態様であっても良い。
【図面の簡単な説明】
【0011】
【図1】本発明の第1実施形態のコンピュータシステム1Aの構成例を示す図である。
【図2】同コンピュータシステム1Aに含まれる暗号化回路120Aの構成例およびこの暗号化回路120Aが実行する動作の一例を示すタイムチャートである。
【図3】同コンピュータシステム1Aに含まれる復号回路320Aの構成例およびこの復号回路320Aが実行する動作の一例を示すタイムチャートである。
【図4】本発明の第2実施形態のコンピュータシステム1Bの構成例を示す図である。
【図5】本発明の第3実施形態のコンピュータシステム1Cの構成例を示す図である。
【図6】同コンピュータシステム1Cに含まれる暗号化回路120Cおよび復号回路320Cの構成例を示す図である。
【図7】同暗号化回路120Cおよび復号回路320Cの各々に含まれる制御情報生成部500の動作を説明するための図である。
【図8】本発明の第4実施形態のコンピュータシステム1Dの構成例を示す図である。
【図9】同コンピュータシステム1Dに含まれる暗号化回路120Dおよび復号回路320Dの構成例を示す図である。
【図10】変形例(3)に係るコプロセッサの構成例を示す図である。
【発明を実施するための形態】
【0012】
以下、図面を参照しつつ本発明の実施形態について説明する。
(A:第1実施形態)
図1は、本発明の第1実施形態のコンピュータシステム1Aの構成例を示す図である。
このコンピュータシステム1Aは、例えば携帯電話機等における音声処理を担当するものであり、音源(図示略)から出力された音声信号のサンプルデータ列(以下、処理対象信号)に残響効果の付与などの信号処理を施して処理結果信号を生成し、その処理結果信号をスピーカ等(図示略)に出力する。図1に示すように、コンピュータシステム1Aには、第1のプロセッサたるホストCPU10Aと、ホストCPU10Aによる制御の下で各種信号処理を実現する第2のプロセッサ(コプロセッサ)たる信号処理装置30Aと、RAM(Random Access Memory)などによる命令メモリ20とが含まれている。
【0013】
ホストCPU10Aは、信号処理装置30Aに各種信号処理を行わせるための一連の命令(1命令あたり32ビットの固定長命令)の各々をクロックジェネレータ(図示略)から供給されるクロック信号CKに同期させて命令メモリ20に順次書き込む。一方、信号処理装置30Aは命令メモリ20に書き込まれる命令を古いものから順に1個ずつ読み出して実行する。これにより、上記一連の命令に対応した信号処理が実現される。
【0014】
図1のコンピュータシステム1Aでは、ホストCPU10Aは、信号処理装置30Aに向けて出力する一連の命令のうちの一部(例えば機密保持を要する命令)を暗号化して出力するように構成されており、一方、信号処理装置30Aは、暗号化されている命令(以下、暗号化命令)についてはその復号を行って実行するように構成されている。本実施形態では、信号処理装置30Aが実行可能な複数種の命令(所謂命令セット)のうちの特定の命令に、暗号化の開始または終了を通知する役割を担わせ、さらに、暗号化命令を復号する際に使用する制御情報を信号処理装置30Aに通知する役割を担わせている。図1の信号処理装置30Aは、上記特定の命令によって暗号化の開始を通知されると、それ以降に受け取る命令については上記暗号化命令であるとみなして上記制御情報を用いてその復号を行うのである。
【0015】
より詳細に説明すると、本実施形態ではNOP命令(命令コードとしてNOP命令コードを含んだ命令)に暗号化の開始および終了を通知するためのコード(開始通知コードおよび終了通知コード)を付与したものに、暗号化の開始および終了を通知する役割を担わせている。ここで、NOP命令コードとは、信号処理装置30Aに対して処理を実行しないことを指示する2ビット(0x11)の命令コードであり、NOP命令は一般的にはタイミング調整等に利用される。また、本実施形態では、開始通知コードおよび終了通知コードとして2ビットの情報(前者は0x10、後者は0x11)が用いられる。前述したように、ホストCPU10Aから出力される命令は32ビットのビット長を有している。本実施形態では、先頭4ビットにNOP命令コードと開始通知コードとをセットしたNOP命令(すなわち、先頭4ビットが“1110”(16進表記では“0xE”)である命令)を暗号化の開始の通知に用い、先頭4ビットにNOP命令コードと終了通知コードとをセットしたNOP命令(すなわち、先頭4ビットが
“1111”(16進表記では“0xF”)である命令)を暗号化の終了の通知に用いている。以下では、先頭4ビットを“0xE”とした命令のことを「開始通知」と呼び、先頭4ビットを“0xF”としたNOP命令のことを「終了通知」と呼ぶ。また、開始通知の先頭4ビットを除いた28ビット(7バイト)は、制御情報の通知に利用される。前述したように、制御情報は、暗号化命令を復号する際に使用される情報である。この制御情報の一例としては、暗号化命令の生成の際に用いられた暗号化アルゴリズム(或いはその復号を行う際の復号アルゴリズム)を表す情報や暗号化キー(或いは復号キー)を表す情報などが挙げられる。
【0016】
本実施形態では、ホストCPU10Aから信号処理装置30Aに与える一連の平文命令が信号処理装置30Aに実行させる信号処理に対応付けて予めホストCPU10Aに記憶されている。これら一連の平文命令の各々には、機密保持を要する命令を含む区間の直前および直後に開始通知と後続の開始通知(或いは終了通知)が予め挿入されている。なお、各開始通知の下位28ビットにはその開始通知に後続する区間に属する命令を暗号化する際に使用する暗号化アルゴリズム(或いは暗号化キー)を表す情報が制御情報として予めセットされている。本実施形態では、何らかの信号処理を信号処理装置30Aに実行させる際には、その信号処理に対応した一連の平文命令を読み出して1命令ずつ命令メモリ20に書き込む処理をホストCPU10Aに実行させるとともに、開始通知に後続する区間に属する命令についてはその開始通知に含まれている制御情報を用いて暗号化しつつ命令メモリ20に書き込む処理をホストCPU10Aに実行させるのである。
【0017】
一方、信号処理装置30Aには、開始通知および終了通知の検出を行わせ、開始通知に後続する区間に含まれる命令については暗号化命令であるとみなして当該開始通知の下位28ビットにセットされている制御情報を用いて復号し、その復号結果を命令として実行する処理を実行させるのである。なお、開始通知および終了通知は本来的には不要な命令であるが、これらは何れもNOP命令であるから、ホストCPU10Aから信号処理装置30Aに与える一連の命令にこれらを挿入したとしても特段の問題は生じない。また、上記暗号化を施す区間にNOP命令が含まれている場合には、当該NOP命令において命令コードに後続する2ビットに開始通知コードとは一致せず、かつ終了通知コードとも一致しない値(例えば“00”)を設定しておけば、暗号化を施す区間に含まれるNOP命令が開始通知や終了通知と誤認されることを回避することができる。以下、本実施形態の特徴を顕著に示すホストCPU10Aおよび信号処理装置30Aについて詳細に説明する。
【0018】
図1に示すようにホストCPU10Aは、CPUコア110と暗号化回路120Aとを含んでいる。CPUコア110は、命令メモリ20を介して信号処理装置30Aに与える一連の命令(開始通知および終了通知を含む一連の平文命令)の各々をクロックジェネレータ(図示略)から出力されるクロックCKに同期させて暗号化回路120Aに出力する。暗号化回路120Aは、図2(A)に示すように、開始通知検出部410と、終了通知検出部420と、ORゲート430と、マルチプレクサ440および460と、D−フリップフロップからなるレジスタ450と、暗号化演算部470と、加算器490と、を含んでいる。
【0019】
図2(A)の開始通知検出部410は、入力命令INが開始通知であるか否かを判定する。より詳細に説明すると、開始通知検出部410は、入力命令INの上位4ビットが0xEであるか否かを判定し、当該4ビットが0xEであればHレベル(1)の開始通知検出信号BEGINを出力する一方、0xEではない場合にはLレベル(0)の開始通知検出信号BEGINを出力する。図2(A)に示すように開始通知検出部410から出力される開始通知検出信号BEGINはマルチプレクサ440に対して出力を切り換えるための選択信号SEL1として与えられるとともに、ORゲート430の一方の入力端子に与えられる。
【0020】
終了通知検出部420は、入力命令INが終了通知であるか否かを判定する。より詳細に説明すると、終了通知検出部420は、上記入力命令INの上位4ビットが0xFであるか否かを判定し、当該4ビットが0xFであればHレベルの終了通知検出信号ENDを出力する一方、0xFではない場合にはLレベルの終了通知検出信号ENDを出力する。図2に示すように終了通知検出部420から出力される終了通知検出信号ENDはORゲート430の他方の入力端子に与えられる。ORゲート430は、開始通知検出信号BEGINと終了通知信号ENDの論理和信号をイネーブル信号としてレジスタ450のイネーブル端子Eに与えるとともに、同論理和信号を選択信号SEL2としてマルチプレクサ460に与える。
【0021】
マルチプレクサ440には、入力命令INの下位28ビットと制御情報の初期値(本実施形態では、0x0000000)とが入力される。このマルチプレクサ440は、開始通知検出部410から与えられる選択信号SEL1がHレベルであれば、入力命令INの下位28ビットを出力し、同選択信号SEL1がLレベルであれば上記制御情報の初期値を出力する。レジスタ450は、イネーブル端子Eに与えられるイネーブル信号がHレベルである状態においてクロックCKが立ち上がったとき、マルチプレクサ440の出力信号により記憶内容を更新し、更新後の記憶内容を示す信号をマルチプレクサ460に出力する。マルチプレクサ460には、レジスタ450の出力信号の他に制御情報の初期値が入力される。このマルチプレクサ460は、ORゲート430から与えられる選択信号SEL2がLレベルであれば、レジスタ450の出力信号を制御情報CIとして暗号化演算部470に与え、同選択信号SEL2がHレベルであれば上記初期値を制御情報CIとして暗号化演算部470に与える。
【0022】
暗号化演算部470は、入力命令INの下位28ビットに対してマルチプレクサ460から与えられる制御情報CIに応じた暗号化演算を施し(或いは、暗号化演算を施さずに)加算器490に出力する。より詳細に説明すると、マルチプレクサ460から与えられた制御情報CIが初期値を表すものである場合には、暗号化演算部470は、入力命令INの下位28ビットに対して暗号化演算を施すことなくそのまま加算器490に出力する。これに対して、暗号化演算部470は、マルチプレクサ460から初期値以外の制御情報CIを与えられた場合には、その制御情報CIの値に応じた暗号化演算を上記下位28ビットに施し、その演算結果を加算器490に出力する。なお、暗号化演算部470が実行する暗号化演算のアルゴリズムについては周知のもの(DESなど)を適宜用いるようにすれば良い。この暗号化アルゴリズムとして簡素なものを用いるようにすれば、暗号化演算部470の回路規模が小さくなり、暗号化回路120Aおよびこれを含むホストCPU10Aの回路規模を小さくすることができると期待される。加算器490は、入力命令INの上位4ビットと暗号化演算部470を介して与えられる同下位28ビットから出力命令OUT(前者を上位4ビット、後者を下位28ビットとする命令)を復元し、命令メモリ20に書き込む。
以上が暗号化回路120Aの構成である。
【0023】
次いで、図2(B)を参照しつつ暗号化回路120Aが実行する動作について説明する。図2(B)は、暗号化回路120Aが実行する動作のタイムチャートの一例を示す図である。以下では、図2(B)に示すようにクロックCKの立ち上がりに同期させて9個の命令(0xE1234567、0x55555555、0xAAAAAAAA、0xE7654321、0x55555555、0xAAAAAAAA、0xF0000000、0x55555555および0xAAAAAAAA)からなる一連の命令がCPUコア110から順次出力される場合を例にとって暗号化回路120Aが実行する動作について説明する。なお、本動作の開始時点ではレジスタ450には制御情報の初期値(本実施形態では、0x0000000)が予め記憶されている。
【0024】
本動作例においてCPUコア110から暗号化回路120Aに1番目に引き渡される命令は、上位4ビットが0xEであるから、開始通知である。このため、図2(B)に示すように開始通知検出信号BEGINはHレベルとなり、終了通知検知信号ENDはLレベルとなり、マルチプレクサ440には、Hレベルの選択信号SEL1が与えられる。この結果、このマルチプレクサ440は、入力命令INの下位28ビット(すなわち、0x1234567)を選択してレジスタ450に出力する。このとき、レジスタ450のイネーブル端子Eには、開始通知検出信号BEGINと終了通知検出信号ENDの論理和を示すHレベルの信号がイネーブル信号として与えられる。
【0025】
レジスタ450は、このようにしてイネーブル信号がHレベルになった状態においてクロックCKが立ち上がると、マルチプレクサ440の出力信号(0x1234567)により記憶内容を更新し、更新後の記憶内容(0x1234567)を示す信号を出力する。一方、マルチプレクサ460には上記論理和を示すHレベルの選択信号SEL2が与えられる。このため、マルチプレクサ460は制御情報CIとして初期値(0x0000000)を選択して暗号化演算部470に出力する。その結果、上記1番目の命令コードについては暗号化演算部470による暗号化演算を施されることなく、そのまま命令メモリ20に出力される。
【0026】
2番目および3番目にCPUコア110から暗号化回路120Aに与えられる命令は、開始通知ではなく、終了通知でもない。このため、これら2つの命令の各々に関して開始通知検出信号BEGINと終了通知検出信号ENDは何れもLレベルとなり、これら2つの論理和信号もLレベルとなる。このため、レジスタ450にはマルチプレクサ440から制御情報の初期値が引き渡されるのであるが、イネーブル端子Eに与えられるイネーブル信号がLレベルであるため、クロックCKが立ち上がってもレジスタ450の記憶内容の更新は行われない。このため、レジスタ450は情報(0x1234567)をマルチプレクサ460に出力する。そして、マルチプレクサ460には、Lレベルの選択信号SEL2が与えられるため、マルチプレクサ460は、レジスタ450の出力信号(0x1234567)を選択し、制御情報CIとして暗号化演算部470に出力する。その結果、2番目の命令(0x55555555)および3番目の命令(0xAAAAAAAA)には、暗号化演算部470による下位28ビットの暗号化が施される。例えば2番目の命令(0x55555555)は0x5B89EFCDと暗号化されて命令メモリ20に書き込まれ、3番目の命令(0xAAAAAAAA)は0xA4671032と暗号化されて命令メモリ20に書き込まれる、といった具合である。
【0027】
4番目にCPUコア110から暗号化回路120Aに引き渡される命令は1番目の命令と同様に開始通知である。したがって、この4番目の命令については1番目の命令に対して実行された処理と同一の処理が実行される。具体的には、当該4番目の命令の下位28ビット(0x7654321)でレジスタ450の記憶内容が更新されるとともに、暗号化演算部470には制御情報CIとして初期値を表すものが与えられる。このため、上記4番目の命令(0xE7654321)は暗号化演算部470による暗号化を施されることなく命令メモリ20に書き込まれる。
【0028】
5番目の命令は2番目の命令と同一であり、6番目の命令は3番目の命令と同一である。したがって、これら5番目および6番目の命令は、2番目および3番目の命令と同様に暗号化演算部470による暗号化が施される。ただし、5番目および6番目の命令に暗号化を施す時点ではレジスタ450に記憶されている情報は4番目の命令の下位28ビット(0x7654321)であり、これを制御情報CIとして5番目および6番目の命令の暗号化が行われる。その結果、例えば5番目の命令(0x55555555)は0x5DCFE98Bと暗号化されて命令メモリ20に書き込まれ、6番目の命令(0xAAAAAAAA)は0xA2301674と暗号化されて命令メモリ20に書き込まれる。
【0029】
7番目にCPUコア110から暗号化回路120Aに引き渡される命令は、上位4ビットが0xFであるから、終了通知である。このため、図2(B)に示すように開始通知検出信号BEGINはLレベルとなり、終了通知検知信号ENDはHレベルとなる。マルチプレクサ440にはLレベルの選択信号SEL1が与えられ、マルチプレクサ440は制御情報の初期値をレジスタ450に出力する。レジスタ450のイネーブル端子EにはHレベルのイネーブル信号が与えられるため、レジスタ450はクロックCKの立ち上がりに同期させてマルチプレクサ460の出力信号で記憶内容を更新する。マルチプレクサ460にはHレベルの選択信号SEL2が与えられるため、マルチプレクサ460は制御情報の初期値(0x0000000)を暗号化演算部470に出力する。このため、上記4番目の命令については暗号化演算部470による暗号化演算を施されることなく、そのまま命令メモリ20に出力される。
【0030】
8番目および9番目にCPUコア110から暗号化回路120Aに与えられる命令は、何れも開始通知ではなく、終了通知でもない。このため、2番目および3番目の命令の場合と同様に、マルチプレクサ440は制御情報の初期値をレジスタ450に出力し、レジスタ450は記憶内容(0x0000000)の出力のみを行い、マルチプレクサ460はレジスタ450の出力信号(0x000000)を制御情報CIとして暗号化演算部470に与える。その結果、これら8番目および9番目の命令については、暗号化演算部470による暗号化を施されることなく命令メモリ20に出力される。
以上が暗号化回路120Aが実行する動作である。
【0031】
このように本実施形態の暗号化回路120Aによれば、CPUコア110から出力される一連の命令のうち開始通知と後続の開始通知(或いは終了通知)とで区画される区間に属する命令は、当該区間の直前に位置する開始通知の下位28ビットを制御情報として暗号されて命令メモリ20に書き込まれる。つまり、本実施形態の暗号化回路120Aによれば、CPUコア110から出力される一連の命令の一部だけを暗号化して信号処理装置30Aに与えることが可能になるとともに、暗号化する区間毎に暗号化の態様を異ならせることもできるのである。
【0032】
次いで、信号処理装置30Aについて説明する。
図1の信号処理装置30AはDSPであり、暗号化回路120Aによる暗号化を施された暗号化命令の復号を行う復号回路320Aと、復号回路320Aにより復号された命令を実行し各種信号処理を実現するDSPコア310とを含んでいる。図3(A)は、復号回路320Aの構成例を示すブロック図である。図3(A)と図2(A)とを対比すれば明らかように、復号回路320Aは、暗号化演算部470に換えて復号化演算部480を有している点のみが暗号化回路120Aと異なる。この復号化演算部480は、暗号化演算部470における暗号化演算に対応する復号化演算(例えば、暗号化演算の逆演算など)を行う。より詳細に説明すると、復号化演算部480は、マルチプレクサ460から与えられる制御情報CIが初期値を表すものである場合には、入力命令INの下位28ビットに復号化演算を施すことなく出力し、初期値以外の制御情報CIを引き渡された場合には、その制御情報CIに応じた復号化演算を入力命令INの下位28ビットに施して出力する。
【0033】
このような構成としたため、復号回路320Aにおいては、暗号化回路120Aにおける暗号化演算を復号化演算に置き換えた処理、すなわち、開始通知と後続の開始通知(或いは終了通知)とで区間される区間に属する命令の下位28ビットを当該区間の直前に位置する開始通知の下位28ビットを制御情報として復号化する処理が実行される。図3(B)は復号回路320Aが実行する動作のタイムチャートの一例を示す図である。図3(B)に示すように、0xE1234567、0x5B89EFCD(命令0x55555555を制御情報0x1234567を用いて暗号化して得られる暗号化命令)、0xA4761032(命令0xAAAAAAAAを制御情報0x1234567を用いて暗号化して得られる暗号化命令)、0xE7654321、0x5DCFE98B(命令0x55555555を制御情報0x7654321を用いて暗号化して得られる暗号化命令)、0xA2301674(命令0xAAAAAAAAを制御情報0x7654321を用いて暗号化して得られる暗号化命令)、0xF0000000、0x55555555および0xAAAAAAAAの9個の命令コードが復号回路320Aに順次入力されると、復号化演算部480を除いた復号回路320Aの各構成要素は図2(B)における暗号化回路120Aの該当要素と同一の動作を行う。その結果、図3(B)に示すように、復号回路320Aからは0xE1234567、0x55555555、0xAAAAAAAA、0xE7654321、0x55555555、0xAAAAAAAA、0xF0000000、0x55555555および0xAAAAAAAAの各命令が順次出力される。
【0034】
図3(B)における入力命令INの配列は図2(B)における出力命令OUTの配列と一致しており、図3(B)における出力命令OUTの配列は図2(B)における入力命令INの配列と一致している。図3(B)と図2(B)とを対比すれば明らかなように、本実施形態によれば、一部が暗号化されてホストCPU10Aから信号処理装置30Aに与えられる一連の命令のうちの一部が暗号化されている場合であっても、当該暗号化されている部分を信号処理装置30Aに復号させ、その暗号化前の命令を完全に復元して実行させることができるのである。
【0035】
(B:第2実施形態)
図4は、本発明の第2実施形態のコンピュータシステム1Bの構成例を示す図である。
図4に示すように、このコンピュータシステム1Bは、ホストCPU10Aに換えてホストCPU10Bを有している点がコンピュータシステム1Aと異なる。図4に示すように、ホストCPU10Bは、暗号化回路120Aを有していない点がホストCPU10Aと異なる。ただし、本実施形態では、信号処理装置30Aに実行させる信号処理の各々に対応する一連の命令として、開始通知とこれに後続する開始通知(或いは終了通知)で区画される区間毎に暗号化回路120Aにおけるものと同一の暗号化演算を施されたものが予めホストCPU10Bに記憶されており、CPUコア110は上記区間毎に暗号化を施された一連の命令を出力する。このため、本実施形態のホストCPU10Bでは、暗号化回路120Aが省略されているのである。一方、信号処理装置30Aの構成はコンピュータシステム1Aにおけるものと同一である。したがって、本実施形態によってもホストCPU10Bから信号処理装置30Aに引き渡す一連の命令の一部を暗号化して機密保持を計ることが可能になる。
【0036】
(C:第3実施形態)
図5は、本発明の第3実施形態のコンピュータシステム1Cの構成例を示す図である。
図5に示すように、このコンピュータシステム1Cは、ホストCPU10Aに換えてホストCPU10Cを有している点と、信号処理装置30Aに換えて信号処理装置30Cを有している点がコンピュータシステム1Aと異なる。ホストCPU10Cは暗号化回路120Aに換えて暗号化回路120Cを有している点がホストCPU10Aと異なり、信号処理装置30Cは復号回路320Aに換えて復号回路320Cを有している点が信号処理装置30Aと異なる。
【0037】
図6(A)は暗号化回路120Cの構成例を示す図であり、図6(B)は復号回路320Cの構成例を示す図である。図6(A)と図2(A)を対比すれば明らかように、暗号化回路120Cは制御情報生成部500を有している点が暗号化回路120Aと異なる。同様に図6(B)と図2(B)を対比すれば明らかように、復号回路320Cは制御情報生成部500を有している点が復号回路320Aと異なる。図6(A)および図6(B)を参照すれば明らかように、本実施形態では、入力命令INの下位28ビットがそのままマルチプレクサ440に与えられるのではなく、入力命令INの下位28ビットは制御情報生成部500に与えられ、この制御情報生成部500から出力される28ビットのデータがマルチプレクサ440に与えられる。そして、マルチプレクサ440は、開始通知検出部410からHレベルの選択信号SEL1を与えられると、制御情報生成部500から与えられた28ビットのデータをレジスタ450に出力する。
【0038】
図6(A)および図6(B)の制御情報生成部500は、開始通知に後続する暗号化命令を復号する際に使用する28ビットの制御情報を当該開始通知の下位28ビットに基づいて生成し、マルチプレクサ440に出力する装置である。図7は、制御情報生成部500の構成例を示す図である。図7に示す制御情報生成部500は、制御情報とその制御情報を一意に示す識別子(図7に示す例では制御情報指示子)とを対応付けて格納した制御情報テーブルTBLを有している。図7に示す制御情報生成部500は、制御情報指示子を与えられるとその制御情報指示子に対応する制御情報を制御情報テーブルTBLから読み出してマルチプレクサ440に出力する。
【0039】
上記のような構成としたため、例えば、図7に示すように制御情報0x1234567を示す制御情報指示子として0x0000001を用い、制御情報0x7654321を示す制御情報指示子として0x0000002を用いるとともに、図2(B)に示す9個の入力命令INのうちの開始通知0xE1234567を0xE0000001に置き換え、同開始通知0xE7654321を0xE0000002に置き換えて暗号化回路120Cに与えるようにすれば、同図2(B)に示す9個の出力命令OUTと同一の出力が得られる。そして、これら9個の出力命令OUTを復号回路320Cに入力命令INとして与えることで、暗号化回路120Cによる暗号化を施す前の命令を復元することができる。
【0040】
このように、本実施形態では、開始通知の下位28ビットにその開始通知に後続する暗号化命令を復号する際に使用する制御情報が直接セットされているのはなく、その制御情報を一意に識別する制御情報指示子がセットされている。つまり、本実施形態では、暗号化命令を復号する際に使用する制御情報そのものがホストCPU10Cと信号処理装置30Cとの間で授受されることはないのである。このような構成としたため本実施形態によれば、ホストCPU10Cと信号処理装置30Cとの間で送受信される一連の命令が何らかの方法で不正に読み出され解読が試みられたとしても、上記制御情報を取得することができないため、暗号化命令を解読して元の命令を取得することは困難である。このように、本実施形態によれば、プロセッサ間で授受される一連の命令のうちの機密保持を要する部分のみを暗号化することに加えて、不正解読に対する耐性を高めることが可能になる。
【0041】
(D:第4実施形態)
図8は、本発明の第4実施形態のコンピュータシステム1Dの構成例を示す図である。
図8に示すように、このコンピュータシステム1Dは、ホストCPU10Aに換えてホストCPU10Dを有している点と、信号処理装置30Aに換えて信号処理装置30Dを有している点がコンピュータシステム1Aと異なる。ホストCPU10Dは暗号化回路120Aに換えて暗号化回路120Dを有している点がホストCPU10Aと異なり、信号処理装置30Dは復号回路320Aに換えて復号回路320Dを有している点が信号処理装置30Aと異なる。
【0042】
図9(A)は暗号化回路120Dの構成例を示す図であり、図9(B)は復号回路320Dの構成例を示す図である。図9(A)と図6(A)を対比すれば明らかように、暗号化回路120Dは、カウンタ510を有している点が暗号化回路120Cと異なる。同様に図9(B)と図6(B)を対比すれば明らかように、復号回路320Dはカウンタ510を有している点が復号回路320Cと異なる。図9(A)および図9(B)のカウンタ510は、開始通知検出信号BEGINがLレベルからHレベルになった回数をカウントするものであり、そのカウント値を制御情報指示子として制御情報生成部500に与える。このため、例えば図7に示す場合と同様に、制御情報“0x1234567”には制御情報指示子“0x0000001”を対応付けておくとともに、制御情報“0x7654321”には制御情報指示子“0x0000002”を対応付けておけば、前述した第3実施形態のホストCPU10Cと同一の動作をホストCPU10Dに実行させ、信号処理装置30Cと同一の動作を信号処理装置30Dに実行させることができる。
【0043】
このように、本実施形態によっても、制御情報が復号側へ直接通知されることはなく、前述した第3実施形態と同様に、ホストCPU10Dと信号処理装置30Dとの間で送受信される暗号化命令の不正解読に対する耐性を高めることができる。また、本実施形態では、開始通知の下位28ビットは制御情報指示子の通知にも使用されない。このため、制御情報とは無関係なダミーの情報を開始通知の下位28ビットに設定しておけば、当該ダミーの情報が制御情報(或いは制御情報指示子)であるかのような印象を不正解読者に与えて惑わせ、不正解読に対する耐性をさらに高めることができると期待される。
【0044】
(E:変形)
以上本発明の第1〜第4実施形態について説明したが、これら実施形態を以下のように変形しても勿論良い。
(1)上述した第1〜第4実施形態では、信号処理装置に復号回路(復号回路320A、320Cおよび320Dの各々)を内蔵させたが、復号回路を信号処理装置の外部に設けても勿論良い。同様に、暗号化回路(暗号化回路120A、120Cおよび120D)をホストCPUの外部に設けても勿論良い。また、上述した各実施形態では命令メモリ20を信号処理装置の外部に設けたが、命令メモリ20を信号処理装置に内蔵させても良い。
【0045】
(2)上述した各実施形態では、開始通知および終了通知の役割をNOP命令に担わせたが、NOP命令以外の命令に開始通或いは終了通知の役割を担わせても良い。また、開始通知の役割を担わせる命令と終了通知の役割を担わせる命令とを異ならせても良い。例えば、NOP命令に開始通知の役割を担わせ、NOP命令とは異なる他の命令に終了通知の役割を担わせるといった具合である。また、上述した各実施形態では、終了通知を用いて暗号化伝送の終了を通知したが、暗号化伝送の終了を通知する必要がない場合には終了通知を用いる必要はない。
【0046】
(3)上述した各実施形態では、ホストCPUから信号処理装置などのコプロセッサに与える(ダウンロードする)一連の命令の一部を暗号化する場合について説明したが、逆にコプロセッサからホストCPUにアップロードする命令の暗号化に本発明を適用しても勿論良い。図10に示す音源LSI40は、ホストCPU10Bから出力される暗号化命令を受け取ってその復号を行い、その復号結果に応じた処理を行う一方、ホストCPU10Bへの命令のアップロードを行う際に暗号化を施してそのアップロードを行うコプロセッサの一例である。この音源LSI40は、音声信号を生成して出力する音源回路(図示略)、この音声信号に各種信号処理を施す信号処理装置30E、復号回路320A、および暗号化回路120Aを含んでいる。なお、図10の復号回路320A、暗号化回路120AおよびDSPコア310は前述した第1実施形態におけるものと同一であり、同図10のホストCPU10Bは前述した第2実施形態におけるものと同一である。図10に示す音源LSI40では、ホストCPU10Bから与えられる暗号化命令の復号が復号回路320Aによって行われ、その復号結果は信号処理装置30Eに内蔵されている命令メモリ20に書き込まれる。信号処理装置30EのDSPコア310は、命令メモリ20に格納されている命令を順次実行することで各種信号処理を実現する。そして、図10に示す音源LSI40において命令メモリ20に記憶されている命令をホストCPU10Bにアップロードする際には、暗号化回路120Aによる暗号化が当該命令に施されるのである。
【0047】
(4)上述した第1、第3および第4実施形態では、暗号化回路をハードウェアで構成したが、暗号化回路が実行する処理と同一の処理をソフトウェアで実現しそのソフトウェアをCPUコア110に実行させることで、ホストCPUから信号処理装置に与える一連の命令の一部の暗号化を実現しても良い。同様に、復号回路(復号回路320A、320C或いは320D)が実行する処理と同一の処理をソフトウェアで実現しそのソフトウェアをDSPコア310に実行させることで、一部が暗号化されてホストCPUから与えられる一連の命令の復号化を実現しても良い。
【符号の説明】
【0048】
1A、1B、1C、1D…コンピュータシステム、10A,10B,10C,10D…ホストCPU、110…CPUコア、120A,120C,120D…暗号化回路、20…命令メモリ、30A,30C,30D…信号処理装置、310…DSPコア、320A,320C、320D…復号回路、410…開始通知検出部、420…終了通知検出部、430…ORゲート、440,460…マルチプレクサ、450…レジスタ、470…暗号化演算部、480…復号化演算部、490…加算器、500…制御情報生成部、510…カウンタ。

【特許請求の範囲】
【請求項1】
第1のプロセッサと第2のプロセッサとを含み、所定の処理の実行を指示する命令コードを含む命令を前記第1のプロセッサから前記第2のプロセッサに与えることで前記所定の処理を前記第2のプロセッサに実行させるコンピュータシステムにおいて、
前記第2のプロセッサは、一連の命令を前記第1のプロセッサから受け取る過程において、予め定められた特定の命令コードと暗号化伝送の開始を通知する旨の開始通知コードとを含んだ命令を前記第1のプロセッサから受け取った場合には、以降に受け取る命令は暗号化された暗号化命令であるとみなしてその復号を行い、その復号結果の命令に応じた処理を実行する
ことを特徴とするコンピュータシステム。
【請求項2】
前記特定の命令コードと前記開始通知コードとを含む命令には、後続する暗号化命令を復号する際に使用する制御情報または当該制御情報を表す情報が含まれており、
前記第2のプロセッサは、前記特定の命令コードと前記開始通知コードとを含む命令を前記第1のプロセッサから受け取った場合には、当該命令に含まれている制御情報または当該命令に含まれている情報の表す制御情報を用いて、当該命令に後続する暗号化命令の復号を行う
ことを特徴とする請求項1に記載のコンピュータシステム。
【請求項3】
前記第1のプロセッサから前記第2のプロセッサに与えられる一連の命令は、前記特定の命令コードと前記開始通知コードとを含む命令によって複数の区間に区画されており、
前記第2のプロセッサは、前記複数の区間の各々について、当該区間の直前に位置する命令に含まれている制御情報または当該命令に含まれている情報の表す制御情報を用いて当該区間に属する暗号化命令を復号する
ことを特徴とする請求項2に記載のコンピュータシステム。
【請求項4】
第1のプロセッサから第2のプロセッサへ宛てて出力される一連の命令であって、各々が前記第2のプロセッサに実行させる処理を示す命令コードを含む一連の命令を前記第1のプロセッサから受け取り、予め定められた特定の命令コードと暗号化伝送の開始を通知する旨の開始通知コードを含む命令であるか否かを命令毎に判定する開始通知検出部と、
前記特定の命令コードと前記開始通知コードとを含んでいると前記開始通知検出部により判定された命令以降に受け取る命令については暗号化演算を施して暗号化命令に変換して前記第2のプロセッサへ宛てて出力し、その他の命令については前記暗号化演算を施すことなくそのまま前記第2のプロセッサへ宛てて出力する暗号化演算部と、
を有することを特徴とする暗号化回路。
【請求項5】
第1のプロセッサから第2のプロセッサへ宛てて出力される一連の命令であって、各々が前記第2のプロセッサに実行させる処理を示す命令コードを含む一連の命令を前記第1のプロセッサから受け取り、予め定められた特定の命令コードと暗号化伝送の開始を通知する旨の開始通知コードを含む命令であるか否かを命令毎に判定する開始通知検出部と、
前記特定の命令コードと前記開始通知コードとを含んでいると前記開始通知検出部により判定された命令以降に受け取る命令については暗号化された暗号化命令であるとみなして復号化演算を施しその復号結果を前記第2のプロセッサに宛てて出力する一方、その他の命令については前記復号化演算を施すことなくそのまま前記第2のプロセッサへ宛てて出力する復号化演算部と、
を有することを特徴とする復号回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−34240(P2012−34240A)
【公開日】平成24年2月16日(2012.2.16)
【国際特許分類】
【出願番号】特願2010−172820(P2010−172820)
【出願日】平成22年7月30日(2010.7.30)
【出願人】(000004075)ヤマハ株式会社 (5,930)
【Fターム(参考)】