説明

機密情報処理装置、機密情報処理機器、及び機密情報処理方法

【課題】面積の増加を抑制しつつ、複数のストリームに暗号演算を行う。
【解決手段】本発明に係る機密情報処理装置200は、コンテキスト277を保持し、暗号演算を行う暗号演算回路273と、コンテキスト278を保持する擬似暗号演算回路274と、暗号演算回路273及び擬似暗号演算回路274に対する暗号演算の要求を調停する調停回路260と、コンテキスト232を保持するコンテキスト格納部230と、コンテキスト格納部230と暗号演算回路273及び擬似暗号演算回路274との間におけるコンテキストの退避及び復帰を行う制御回路240とを備え、調停回路260は、暗号演算回路273に対して暗号演算の要求があった場合に、暗号演算回路273に、コンテキスト277を用いた暗号演算を行わせ、擬似暗号演算回路274に対して暗号演算の要求があった場合に、暗号演算回路273に、コンテキスト278を用いた暗号演算を行わせる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機密情報処理装置、機密情報処理機器、及び機密情報処理方法に関し、特に、複数のデータに暗号演算を行う機密情報処理装置に関する。
【背景技術】
【0002】
近年、携帯電話、デジタルテレビ、セットトップボックス(STB)及びパーソナルコンピュータ(PC)間では、無線又はネットワーク等を用いて、動画像データ又はオーディオデータ等を含むストリームの送信及び受信が行われている。このデータの送信及び受信において、セキュリティの強化のために、送信するデータを暗号化する技術が用いられている。すなわち、携帯電話、デジタルテレビ、STB及びPCは、ストリームに含まれる暗号化されたデータ(以下、「暗号化データ」と呼ぶ。)を復号化する、又はストリームに含まれる平文データを暗号化する(以下、復号化及び暗号化の少なくとも1以上を称して「暗号演算」と呼ぶ。)機密情報処理装置を備える。
【0003】
このような機密情報処理装置において、複数のストリームが輻輳して入力される場合がある。例えば、デジタルテレビ等において、2つの番組を同時に表示する場合、及び1つの番組を表示しながら、他の番組を録画する場合等には、機密情報処理装置に、複数のストリームが輻輳して入力される。複数のストリームが輻輳して入力される場合、機密情報処理装置は、複数のストリームに含まれるそれぞれのデータを切り替えながら並列に暗号演算を行う必要がある。
【0004】
これに対して、1つの暗号演算回路で、複数のストリームに対して暗号演算を行う第1の機密情報処理装置が知られている(例えば、特許文献1参照)。
【0005】
図16は、特許文献1記載の従来の第1の機密情報処理装置の構成を示す図である。
特許文献1記載の第1の機密情報処理装置は、暗号化装置であり、セレクタ54と、暗号化ユニット52と、メモリ55とを備える。暗号化ユニット52は、排他的論理和回路58と、暗号鍵Kを用いて暗号化を行う暗号化モジュール51とを備える。
【0006】
セレクタ54、排他的論理和回路58、及び暗号化モジュール51は、フィードバックライン65、フィードバックライン66及びフィードバックライン67によりフィードバックループを構成する。暗号化モジュール51により暗号化された暗号文ブロックデータCiは、フィードバックループにより再び排他的論理和回路58に入力され、排他的論理和回路58でモジュール入力データSiが生成される。そして、生成されたモジュール入力データSiは、暗号化モジュール51に供給される。
【0007】
メモリ55は、フィードバックライン65と並列に設けられている。メモリ55は、レジスタ56と、スイッチ57とを備える。スイッチ57は、暗号化モジュール51の出力をレジスタ56に入力させるか無視するかを切り替える。レジスタ56は、Eを経由してきた暗号文ブロックデータCiを記憶する。レジスタ56に記憶された暗号文ブロックデータCiは、セレクタ54に出力される。
【0008】
以上の構成により、特許文献1記載の第1の機密情報処理装置は、第1のデータの処理中に、処理するデータを第2のデータに切り替える際に、レジスタ56に第1のデータの連鎖値(暗号文ブロックデータCi)を保存する。特許文献1記載の第1の機密情報処理装置は、第1のデータの処理を再開する場合には、レジスタ56に保存される連鎖値を使用する。これにより、特許文献1記載の第1の機密情報処理装置は、データを切り替えながら暗号演算を行うことを可能としている。
【0009】
更に、特許文献1記載の第1の機密情報処理装置は、第1のデータの処理結果を第2のデータとしてフィードバックして再入力することにより、同一アルゴリズムによる暗号演算をブロックごとに連続して行える。
【0010】
また、近年、1つのデータに2回の暗号演算が行われることがある。例えば、1つのデータに2回の暗号化が行われる場合、及び1つのデータに復号化が行われた後に暗号化が行われる場合がある。
【0011】
これに対して、特許文献1には、1つのデータに対して秘匿処理と、完全性保証処理とを行う第2の機密情報処理装置が開示されている。従来の第2の機密情報処理装置は、1つの暗号演算回路により、秘匿処理及び完全性保証処理を行う。従来の第2の機密情報処理装置は、第1の機密情報処理装置と同様に、連鎖値を退避しておくレジスタを備える。従来の第2の機密情報処理装置は、秘匿処理の開始時に、レジスタに保持される秘匿処理の連鎖値を読み出し、秘匿処理の終了時に、当該秘匿処理により生成された連鎖値をレジスタに保持する。また、従来の第2の機密情報処理装置は、完全性保証処理の開始時に、レジスタに保持される完全性保証処理の連鎖値を読み出し、完全性保証処理の終了時に、当該完全性保証処理により生成された連鎖値をレジスタに保持する。これにより、従来の第2の機密情報処理装置は、1つの暗号演算回路により、1つのデータに2回の暗号演算を行える。
【特許文献1】国際公開第01/052472号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【0012】
しかしながら、特許文献1記載の第1の機密情報処理装置は、レジスタの数によって切り替えられるデータの数が限定されてしまう。同様に、特許文献1記載の第2の機密情報処理装置は、レジスタの数によって1つのデータに対して実行できる暗号演算の数が限定されてしまう。すなわち、従来の機密情報処理装置は、切り替えられるデータの数、及び1つのデータに対して実行できる暗号演算の数を増加させることで、回路面積が増加するという問題がある。
【0013】
そこで、本発明は、回路面積の増加を抑制しつつ、複数のデータに暗号演算を行え、かつ1つのデータに対して複数の暗号演算を行える機密情報処理装置、機密情報処理機器及び機密情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【0014】
上記目的を達成するために、本発明に係る機密情報処理装置は、第1入力データと、第2入力データとに暗号演算を行う機密情報処理装置であって、第1暗号演算回路と、第1擬似暗号演算回路と、前記第1暗号演算回路及び前記第1擬似暗号演算回路に対する暗号演算の要求を調停する第1調停回路とを備え、前記第1暗号演算回路は、前記第1入力データの暗号演算に必要となる第1情報を保持する第1レジスタと、暗号演算を行う第1暗号演算部とを備え、前記第1擬似暗号演算回路は、前記第2入力データの暗号演算に必要となる第2情報を保持する第2レジスタを備え、前記機密情報処理装置は、さらに、前記第1情報及び前記第2情報を保持する第1記憶部と、前記第1記憶部に保持される前記第1情報及び前記第2情報を前記第1レジスタ及び前記第2レジスタに書き込み、かつ前記第1レジスタ及び前記第2レジスタに保持される前記第1情報及び前記第2情報を前記第1記憶部に退避させる制御回路とを備え、前記第1調停回路は、前記第1暗号演算回路に対して前記第1入力データに対する暗号演算の要求があった場合に、前記第1暗号演算部に、前記第1レジスタに保持される前記第1情報を用いた前記第1入力データの暗号演算を行わせ、前記第1擬似暗号演算回路に対して前記第2入力データに対する暗号演算の要求があった場合に、前記第1暗号演算部に、前記第2レジスタに保持される前記第2情報を用いた前記第2入力データの暗号演算を行わせる。
【0015】
この構成によれば、第1記憶部に複数の暗号演算にそれぞれ必要となる情報が保持される。また、制御回路により、第1レジスタ及び第2レジスタに保持される情報を、第1記憶部に退避及び復帰できる。これにより、第1レジスタ及び第2レジスタは、少なくとも1つの入力データの暗号演算に必要となる情報のみを保持すればよい。すなわち、本発明に係る機密情報処理装置は、切り替えられるデータの数、及び1つのデータに実行できる暗号演算の数を増加させても、レジスタの数を増加させる必要がない。よって、本発明に係る機密情報処理装置は、レジスタの回路面積を増加させることなく、暗号演算を切り替えられるデータの数、及び1つのデータに対して実行できる暗号演算の数を増加させることができる。すなわち、本発明に係る機密情報処理装置は、回路面積の増加を抑制しつつ、複数のデータに暗号演算を行え、かつ1つのデータに対して複数の暗号演算を行える。
【0016】
さらに、第1暗号演算部は、第1レジスタ又は第2レジスタに保持される情報を用いて、暗号演算を行う。これにより、第1入力データ及び第2入力データに対する暗号演算を切り替えながら行う場合に、第1記憶部と、第1レジスタ又は第2レジスタとの間の情報の退避及び復帰を、暗号演算を行うデータを切り替える毎に行わなくてもよい。よって、情報の退避及び復帰を行う回数を低減できる。これにより、本発明に係る機密情報処理装置は、高速に暗号演算を行える。
【0017】
また、前記第1情報は、前記第1入力データの暗号演算に用いられる鍵、初期値及び演算途中の中間情報のうち1以上を含み、前記第2情報は、前記第2入力データの暗号演算に用いられる鍵、初期値及び演算途中の中間情報のうち1以上を含んでもよい。
【0018】
この構成によれば、本発明に係る機密情報処理装置は、暗号演算に用いられる鍵、初期値及び演算途中の中間情報のうち1以上を切り替えながら、複数のデータに対して暗号演算を行える。また、本発明に係る機密情報処理装置は、暗号演算に用いられる鍵、初期値及び演算途中の中間情報のうち1以上を切り替えながら、1つのデータに対して複数回の暗号演算を行える。
【0019】
また、前記制御回路は、前記第1暗号演算回路に対して前記第1入力データに対する暗号演算の要求があった場合、かつ前記第1レジスタが前記第1情報を保持していない場合に、前記第1レジスタに保持される情報を前記第1記憶部に退避させ、かつ前記第1記憶部に保持される前記第1情報を前記第1レジスタに書き込み、前記第1擬似暗号演算回路に対して前記第2入力データに対する暗号演算の要求があった場合、かつ前記第2レジスタが前記第2情報を保持していない場合に、前記第2レジスタに保持される情報を前記第1記憶部に退避させ、かつ前記第1記憶部に保持される前記第2情報を前記第2レジスタに書き込んでもよい。
【0020】
この構成によれば、入力データに対応する暗号演算に必要となる情報が第1レジスタ又は第2レジスタに保持されていない場合に、制御回路は、第1レジスタ又は第2レジスタに保持される情報を第1記憶部に退避し、第1記憶部に保持される情報を第1レジスタ又は第2レジスタに復帰する。これにより、入力データに対応した情報が、第1レジスタ又は第2レジスタに保持されるので、第11暗号演算部は、第1レジスタ又は第2レジスタに保持される情報を用いて、複数の入力データに対して暗号演算を行うことができる。
【0021】
また、前記機密情報処理装置は、さらに、第1ストリームから前記第1入力データを抽出し、かつ前記第1暗号演算部により前記第1入力データが暗号演算されたデータである第1出力データを前記第1ストリームに組み込む第1解析回路と、第2ストリームから前記第2入力データを抽出し、かつ前記第1暗号演算部により前記第2入力データが暗号演算されたデータである第2出力データを前記第2ストリームに組み込む第2解析回路とを備え、前記第1暗号演算部は、前記第1レジスタに保持される前記第1情報を用いて、前記第1解析回路により抽出された前記第1入力データの暗号演算を行い、かつ前記第2レジスタに保持される前記第2情報を用いて、前記第2解析回路により抽出された前記第2入力データの暗号演算を行ってもよい。
【0022】
この構成によれば、本発明に係る機密情報処理装置は、ストリームに含まれる任意の領域のデータを抽出し、暗号演算を行える。すなわち、本発明に係る機密情報処理装置は、多種の暗号方式に容易に対応できる。
【0023】
また、前記第2入力データは、前記第1入力データが前記第1暗号演算部により暗号演算されたデータであり、前記第1調停回路は、前記第1暗号演算部に、前記第1レジスタに保持される前記第1情報を用いた前記第1入力データの暗号演算を行わせた後に、前記第1暗号演算部に、前記第2レジスタに保持される前記第2情報を用いた前記第2入力データの暗号演算を行わせてもよい。
【0024】
この構成によれば、本発明に係る機密情報処理装置は、1つのデータに対して2回の暗号演算を行える。さらに、第1暗号演算部は、第1レジスタ又は第2レジスタに保持される情報をそれぞれ用いて、2回の暗号演算を行う。よって、第1記憶部と、第1レジスタ又は第2レジスタとの間での情報の退避及び復帰を行う回数を低減できる。これにより、本発明に係る機密情報処理装置は、1つのデータに対して高速に2回の暗号演算を行える。
【0025】
また、前記機密情報処理装置は、さらに、第1ストリームから前記第1入力データを抽出し、かつ前記第1暗号演算部により前記第1入力データが暗号演算されたデータである第1出力データを前記第1ストリームに組み込む第1解析回路と、前記第1解析回路により前記第1出力データが組み込まれた前記第1ストリームから前記第2入力データを抽出し、かつ前記第1暗号演算部により前記第2入力データが暗号演算されたデータである第2出力データを前記第1ストリームに組み込む第2解析回路とを備えてもよい。
【0026】
この構成によれば、本発明に係る機密情報処理装置は、2回の暗号演算の1回目と2回目とでストリームに含まれる異なる領域のデータに対して暗号演算を行える。すなわち、本発明に係る機密情報処理装置は、1つのデータに対する多種の暗号方式による複数回の暗号演算に容易に対応できる。
【0027】
また、前記第1調停回路は、前記第1暗号演算回路に対する暗号演算の要求と、前記第1擬似暗号演算回路に対する暗号演算の要求とを受信した場合、前記第1暗号演算部に、前記第2レジスタに保持される前記第2情報を用いた前記第2入力データの暗号演算を行わせてもよい。
【0028】
この構成によれば、2回の暗号演算のうち2回目の暗号演算が優先的に行われる。これにより、2回の暗号演算が終了したデータを順次出力できるので、内部に保持する2回目の暗号演算前のデータ(1回目の暗号演算が終了したデータ)の量を削減できる。
【0029】
また、前記機密情報処理装置は、さらに、第3入力データに暗号演算を行い、前記機密情報処理装置は、さらに、第2暗号演算回路を備え、前記第2暗号演算回路は、前記第3データの暗号演算に必要となる第3情報を保持する第3レジスタと、前記第1暗号演算部による暗号演算と異なるアルゴリズムの暗号演算を行う第2暗号演算部とを備え、前記機密情報処理装置は、さらに、前記第1暗号演算回路、前記第1擬似暗号演算回路及び前記第2暗号演算回路に対する暗号演算の要求を調停し、かつ前記第1暗号演算回路及び前記第1擬似暗号演算回路に対する暗号演算の要求を前記第1調停回路に送信する第2調停回路を備え、前記第1調停回路は、前記第1暗号演算回路に対する前記第1入力データに対する暗号演算の要求が前記第2調停回路から送信された場合に、前記第1暗号演算部に、前記第1レジスタに保持される前記第1情報を用いた前記第1入力データの暗号演算を行わせ、前記第1擬似暗号演算回路に対する前記第2入力データに対する暗号演算の要求が前記第2調停回路から送信された場合に、前記第1暗号演算部に、前記第2レジスタに保持される前記第2情報を用いた前記第2入力データの暗号演算を行わせてもよい。
【0030】
この構成によれば、本発明に係る機密情報処理装置は、複数の異なる暗号アルゴリズムに対応する暗号演算を行える。また、複数の異なる暗号アルゴリズムに対応する機密情報処理装置に対して、第1調停回路を更に加える構成とすることで、第1擬似暗号演算回路を通常の暗号演算回路(第1暗号演算回路及び第2暗号演算回路)と同様に扱い制御できる。すなわち、本発明は、複数の異なる暗号アルゴリズムに対応する機密情報処理装置に対して制御系の大きな変更を行うことなく、情報の退避及び復帰を行う回数の削減を実現できる。
【0031】
また、前記機密情報処理装置は、さらに、第4入力データに暗号演算を行い、前記機密情報処理装置は、さらに、第2擬似暗号演算回路と、前記第2暗号演算回路及び前記第2擬似暗号演算回路に対する暗号演算の要求を調停する第3調停回路とを備え、前記第2擬似暗号演算回路は、前記第4データの暗号演算に必要となる第4情報を保持する第4レジスタを備え、前記第3調停回路は、前記第2暗号演算回路に対して前記第3データに対する暗号演算の要求があった場合に、前記第2暗号演算部に、前記第3レジスタに保持される前記第3情報を用いた前記第3データの暗号演算を行わせ、前記第2擬似暗号演算回路に対して前記第4データに対する暗号演算の要求があった場合に、前記第2暗号演算部に、前記第4レジスタに保持される前記第4情報を用いた前記第4データの暗号演算を行わせてもよい。
【0032】
この構成によれば、複数の暗号アルゴリズムに対して、暗号演算に用いられる情報の退避及び復帰を行う回数を低減できる。これにより、本発明に係る機密情報処理装置は、高速に暗号演算を行える。
【0033】
また、前記暗号演算は、秘密鍵暗号アルゴリズムによる暗号演算であってもよい。
この構成によれば、本発明に係る機密情報処理装置は、回路面積の増加を抑制しつつ、複数のデータに秘密鍵暗号アルゴリズムに対応した暗号演算を行え、かつ1つのデータに対して複数の秘密鍵暗号アルゴリズムに対応した暗号演算を行える。また、秘密鍵暗号アルゴリズムに対応した暗号演算に用いられる情報の退避及び復帰を行う回数を低減できる。これにより、本発明に係る機密情報処理装置は、高速に暗号演算を行える。
【0034】
また、本発明に係る機密情報処理機器は、外部機器から送信される第1入力データ及び第2入力データを受信する受信部と、前記第1入力データと、前記第2入力データとに暗号演算を行う前記機密情報処理装置と、前記第1暗号演算部により前記第1入力データが暗号演算されたデータである第1出力データ、及び前記第1暗号演算部により前記第2入力データが暗号演算されたデータである第2出力データを表示する表示部とを備える。
【0035】
この構成によれば、暗号化されたデータを受信して再生及び表示する機密情報処理装置において、回路面積の増加を抑制しつつ、複数のデータに暗号演算を行え、かつ1つのデータに対して複数の暗号演算を行える。また、本発明に係る機密情報処理機器は、暗号演算に用いられる情報の退避及び復帰を行う回数を低減することにより、高速に暗号演算を行える。
【0036】
また、本発明に係る機密情報処理機器は、前記機密情報処理装置と、前記第1暗号演算部により前記第1入力データが暗号演算されたデータである第1出力データ、及び前記第1暗号演算部により前記第2入力データが暗号演算されたデータである第2出力データを外部機器に送信する送信部とを備える。
【0037】
この構成によれば、平文データを暗号化して外部の機器に送信する機密情報処理装置において、回路面積の増加を抑制しつつ、複数のデータに暗号演算を行え、かつ1つのデータに対して複数の暗号演算を行える。また、本発明に係る機密情報処理機器は、暗号演算に用いられる情報の退避及び復帰を行う回数を低減することにより、高速に暗号演算を行える。
【0038】
また、本発明に係る機密情報処理方法は、第1入力データと、第2入力データとに暗号演算を行う機密情報処理装置における機密情報処理方法であって、前記機密情報処理装置は、第1暗号演算回路と、第1擬似暗号演算回路と、前記第1暗号演算回路及び前記第1擬似暗号演算回路に対する暗号演算の要求を調停する第1調停回路とを備え、前記第1暗号演算回路は、前記第1入力データの暗号演算に必要となる第1情報を保持する第1レジスタと、暗号演算を行う第1暗号演算部とを備え、前記第1擬似暗号演算回路は、前記第2入力データの暗号演算に必要となる第2情報を保持する第2レジスタを備え、前記機密情報処理装置は、さらに、前記第1情報及び前記第2情報を保持する第1記憶部と、前記第1記憶部に保持される前記第1情報及び前記第2情報を前記第1レジスタ及び前記第2レジスタに書き込み、かつ前記第1レジスタ及び前記第2レジスタに保持される前記第1情報及び前記第2情報を前記第1記憶部に退避させる制御回路とを備え、前記第1調停回路が、前記第1暗号演算回路に対して前記第1入力データに対する暗号演算の要求があった場合に、前記第1暗号演算部に、前記第1レジスタに保持される前記第1情報を用いた前記第1入力データの暗号演算を行わせ、前記第1擬似暗号演算回路に対して前記第2入力データに対する暗号演算の要求があった場合に、前記第1暗号演算部に、前記第2レジスタに保持される前記第2情報を用いた前記第2入力データの暗号演算を行わせる。
【0039】
これによれば、第1暗号演算部は、第1レジスタ又は第2レジスタに保持される情報を用いて、暗号演算を行う。これにより、第1入力データ及び第2入力データに対する暗号演算を切り替えながら行う場合に、第1記憶部と、第1レジスタ又は第2レジスタとの間の情報の退避及び復帰を、暗号演算を行うデータを切り替える毎に行わなくてもよい。よって、情報の退避及び復帰を行う回数を低減できる。これにより、本発明に係る機密情報処理方法は、高速に暗号演算を行える。
【発明の効果】
【0040】
以上より、本発明は、回路面積の増加を抑制しつつ、複数のデータに暗号演算を行え、かつ1つのデータに対して複数の暗号演算を行える機密情報処理装置、機密情報処理機器及び機密情報処理方法を提供できる。
【発明を実施するための最良の形態】
【0041】
以下、本発明に係る機密情報処理装置の実施の形態について、図面を参照しながら詳細に説明する。
【0042】
まず、本発明の実施の形態に係る機密情報処理装置を備える機密情報処理機器の構成を説明する。
【0043】
図1は、本発明の実施の形態に係る機密情報処理装置を備える機密情報処理機器の外観の一例を示す図である。図1に示すように、機密情報処理機器100は、例えば、携帯電話機器である。
【0044】
図2は、機密情報処理機器100の構成を示すブロック図である。図2に示す機密情報処理機器100は、アンテナ101と、受信部102と、送信部103と、表示部104と、記憶部105と、機密情報処理装置200とを備える。
【0045】
アンテナ101は、送信又は受信に用いられるアンテナである。
受信部102は、外部の機器から送信された動画像ストリーム又は音声ストリーム等のストリームを、アンテナ101を用いて受信する。
【0046】
記憶部105は、受信部102により受信されたストリームを記憶する。また、記憶部105は、機密情報処理機器100により生成された動画像データ等を記憶する。例えば、記憶部105は、機密情報処理機器100が有するカメラ(図示せず)により撮影された動画像データを記憶する。例えば、記憶部105は、RAM、ハードディスク又は不揮発性メモリ等である。
【0047】
機密情報処理装置200は、本発明の実施の形態に係る機密情報処理装置である。機密情報処理装置200は、受信部102により受信されたストリームに含まれる暗号化されたデータを復号化する。また、機密情報処理装置200は、受信部102により受信されたストリームに含まれる平文データ、及び記憶部105に保持される動画像データ等を暗号化する。
【0048】
送信部103は、機密情報処理装置200により暗号化されたストリームを、アンテナ101を用いて外部の機器に送信する。
【0049】
表示部104は、機密情報処理装置200により復号化されたストリームを表示する。
なお、機密情報処理装置200は、記録メディア(SDメモリ等)に記録されるデータに対して暗号演算を行ってもよい。また、機密情報処理装置200は、ネットワークを介して接続された外部の機器との間で送信及び受信されるデータに対して暗号演算を行ってもよい。
【0050】
また、受信部102及び送信部103の機能は、専用の回路により実現されてもよいし、CPU等がプログラムを実行することにより実現されてもよい。
【0051】
次に機密情報処理装置200の構成を説明する。
図3は、本発明の実施の形態に係る機密情報処理装置200の構成を示すブロック図である。
【0052】
機密情報処理装置200は、輻輳する複数のストリームに対して暗号演算を行うことができる。また、機密情報処理装置200は、1つのストリームに対して複数回の暗号演算を行うことができる。機密情報処理装置200は、ストリーム制御回路210と、3つのストリーム解析回路221、222及び223と、コンテキスト格納部230と、コンテキスト制御回路240と、調停回路250と、調停回路260と、3つの暗号演算回路271、272及び273と、擬似暗号演算回路274とを備える。
【0053】
ストリーム制御回路210は、コンテキスト対応テーブル211を格納する。コンテキスト対応テーブル211は、入力されたストリームに対して、暗号演算の実施回数と、それぞれの暗号演算で使用するコンテキストの種別(コンテキストID)との対応を示すテーブルである。ストリーム制御回路210は、受信部102により受信されたストリームを、コンテキスト対応テーブル211に従って、ストリーム解析回路221、222及び223のうちいずれかに出力する。
【0054】
また、ストリーム制御回路210は、コンテキスト対応テーブル211に従って、ストリーム解析回路221、222及び223から出力されるストリームを送信部103等の外部の機器、又は別のストリーム解析回路221、222又は223に出力する。
【0055】
図4は、コンテキスト対応テーブル211の構成の一例を示す図である。図4に示すように、コンテキスト対応テーブル211は、ストリーム識別子に対して、実行する暗号演算のコンテキストID(コンテキストの識別子)が記載されたテーブルである。コンテキスト対応テーブル211において、ストリーム識別子ごとに、1回目の暗号演算に対応するコンテキストIDと、2回目の暗号演算に対応するコンテキストIDとが記載される。コンテキスト対応テーブル211において、ストリームに対して「2回目の処理」のコンテキストIDが指定されている場合、ストリームに対して連続した二回の暗号演算が行われる。例えば、図4に示す例では、ストリーム識別子「ストリーム1」に対しては、コンテキストID「コンテキスト1」の暗号演算が行われた後、コンテキストID「コンテキスト2」の暗号演算が行われる。また、ストリーム識別子「ストリーム2」に対しては、コンテキストID「コンテキスト3」に対応する暗号演算のみが行われ、2回目の暗号演算は行われない。
【0056】
ストリーム解析回路221、222及び223は、それぞれ第1コンテキスト224、225及び226を保持する。ここで、第1コンテキスト224、225及び226とは、ストリーム解析を行うために必要な情報であり、例えば、フォーマットの種類、ヘッダ長、フレーム長及びフッタ長等である。また、第1コンテキスト224、225及び226のそれぞれは、当該第1コンテキスト224、225及び226のコンテキストIDを含む。
【0057】
ストリーム解析回路221、222及び223は、自身が保持する第1コンテキスト224、225又は226を用いて、入力されたストリームの解析を行う。具体的には、ストリーム解析回路221、222及び223は、自身が保持する第1コンテキスト224、225又は226を用いて、入力されたストリームに含まれるデータのうち暗号演算(暗号化又は復号化)の対象となるデータ(以下、「入力データ」と呼ぶ。)を抽出する。ストリーム解析回路221、222及び223は、調停回路250に、暗号演算の要求である入力リクエストと、抽出した入力データとを出力する。
【0058】
また、ストリーム解析回路221、222及び223は、指定されたコンテキストIDが、現在保持しているコンテキストIDと等しいか否かに応じて、自身が保持する第1コンテキスト224、225又は226の退避及び復帰を行う。具体的には、ストリーム解析回路221、222及び223は、指定されたコンテキストIDが、現在保持しているコンテキストIDと等しければ、自身が保持する第1コンテキスト224、225又は226を使用して入力されたストリームの解析を行う。また、指定されたコンテキストIDが、現在保持しているコンテキストIDと異なる場合、コンテキスト制御回路240にコンテキスト退避及び復帰のリクエストを行う。リクエストを受けたコンテキスト制御回路240は、ストリーム解析回路221、222又は223に現在保持される第1コンテキスト224、225又は226をコンテキスト格納部230に退避し、かつコンテキスト格納部230に保存される指定されたコンテキストIDの第1コンテキスト231をストリーム解析回路221、222又は223に設定する。ストリーム解析回路221、222及び223は、新たに設定された第1コンテキストを用いて、入力されたストリームのうち暗号演算(暗号化又は復号化)の対象となるデータを抽出する。
【0059】
また、ストリーム解析回路221、222及び223は、暗号演算回路271、272又は273により暗号演算されたデータ(以下、「出力データ」と呼ぶ。)を元のストリームに組み込みストリーム制御回路210に出力する。
【0060】
コンテキスト格納部230は、複数の第1コンテキスト231と、複数の第2コンテキスト232とを格納する。ここで、第1コンテキスト231は、ストリーム解析回路221、222及び223によりストリーム解析を行うために必要な情報であり、例えば、フォーマットの種類、ヘッダ長、フレーム長及びフッタ長等である。また、第2コンテキスト232とは、暗号演算に必要となる情報である。具体的には、第2コンテキスト232は、情報暗号演算における鍵、中間値、初期値及び連鎖値のうち1以上を含む情報である。また、第1コンテキスト231及び第2コンテキスト232は、コンテキストIDを含む。
【0061】
コンテキスト格納部230は、例えば、RAM(Random Access Memory)により構成される。なお、コンテキスト格納部230は、対応する第1コンテキスト231と第2コンテキスト232とをコンテキストIDに対応させた1つのコンテキストとして格納してもよい。
【0062】
コンテキスト制御回路240は、ストリーム解析回路221、222及び223からのコンテキスト退避のリクエストに応じて、ストリーム解析回路221、222及び223に保持される第1コンテキスト224、225及び226をコンテキスト格納部230に退避させる。また、コンテキスト制御回路240は、ストリーム解析回路221、222及び223からのコンテキスト復帰のリクエストに応じて、コンテキスト格納部230が保持する第1コンテキスト231を、ストリーム解析回路221、222及び223に復帰させる。
【0063】
また、コンテキスト制御回路240は、暗号演算回路271、272、273及び擬似暗号演算回路274からのコンテキスト退避のリクエストに応じて、暗号演算回路271、272、273及び擬似暗号演算回路274に保持される第2コンテキスト275、276、277及び278をコンテキスト格納部230に書き込むことで退避させる。また、コンテキスト制御回路240は、暗号演算回路271、272、273及び擬似暗号演算回路274からのコンテキスト復帰のリクエストに応じて、コンテキスト格納部230が保持する第2コンテキスト232を、暗号演算回路271、272、273及び擬似暗号演算回路274に書き込むことで復帰させる。
【0064】
また、コンテキスト制御回路240は、暗号アルゴリズム対応テーブル241を格納する。暗号アルゴリズム対応テーブル241は、暗号演算で使用されるコンテキストIDと、暗号アルゴリズムとの対応を示すテーブルである。
【0065】
図5は、暗号アルゴリズム対応テーブル241の構成の一例を示す図である。図5に示すように、暗号アルゴリズム対応テーブル241には、コンテキストIDに対応する暗号アルゴリズムが記載される。
【0066】
なお、コンテキスト対応テーブル211と、暗号アルゴリズム対応テーブル241と、第1コンテキスト231と、第2コンテキスト232に含まれる鍵及び初期値とは、機密情報処理装置200又は機密情報処理機器100が備えるCPU(図示せず)等により、暗号演算の開始前に設定される。
【0067】
暗号演算回路271、272及び273は、それぞれ異なる暗号アルゴリズムに対応した暗号演算を行う。本実施の形態では、暗号演算回路271は、Data Encryption Standard(以下、DES)に対応した暗号演算を行う。暗号演算回路272は、Secure Hash Algorithm(以下、SHA)に対応した暗号演算を行う。暗号演算回路273は、Advanced Encryption Standard(以下、AES)に対応した暗号演算を行う。ここで、DES及びAESの暗号アルゴリズムは、秘密鍵暗号アルゴリズムである。また、SHAは、ハッシュ演算を含む暗号アルゴリズムである。
【0068】
また、暗号演算回路271、272及び273は、それぞれ第2コンテキスト275、276及び277を保持する。
【0069】
擬似暗号演算回路274は、擬似的な暗号演算回路であり、実際の暗号演算は行わない。また、擬似暗号演算回路274は、暗号演算回路273に対応する。また、擬似暗号演算回路274は、第2コンテキスト278を保持する。
【0070】
また、図5に示す前記暗号アルゴリズム対応テーブル241において、AESによる連続した二回の暗号演算を行う場合、二回目の処理で利用する暗号アルゴリズムを“AES−DUMMY”とする。AES−DUMMYは、擬似暗号演算回路274が実施する暗号アルゴリズムとして扱われる。従って、あるストリームに対して連続した二回のAESによる暗号演算を行う場合、一回目の処理に対応したコンテキストに対しては暗号アルゴリズムAESを、二回目の処理に対応したコンテキストに対しては、暗号アルゴリズムAES−DUMMYを指定することにより、擬似暗号演算回路274を用いた暗号演算が可能となる。
【0071】
調停回路250は、ストリーム解析回路221、222及び223により出力された入力リクエストを調停する。具体的には、調停回路250は、同時に複数のストリーム解析回路221、222及び223から同一の暗号アルゴリズムで処理すべき入力リクエストが入力された場合に、どのストリーム解析回路221、222及び223からの入力リクエストを処理するかを決定する。例えば、調停回路250は、ストリーム解析回路221、222及び223に設定された優先順位に従い処理する入力リクエストを決定する。なお、調停回路250は、ラウンドロビン方式など他のアルゴリズムを用いて、処理する入力リクエストを決定してもよい。また、ここで言う同一の暗号アルゴリズムとは、暗号アルゴリズム対応テーブル241によって指定された暗号アルゴリズムである。例えば、本実施例の場合、後述するAESとAES−DUMMYとは別のアルゴリズムとして認識される。
【0072】
調停回路250は、ストリーム解析回路221、222及び223からの入力リクエストを受信した場合、暗号アルゴリズム対応テーブル241に従い、処理する暗号アルゴリズムを決定する。調停回路250は、決定した暗号アルゴリズムに対応した暗号演算回路271、272、273又は擬似暗号演算回路274へ入力データを出力すると共に、暗号演算回路271、272、擬似暗号演算回路274、又は調停回路260に入力リクエストを出力する。
【0073】
具体的には、調停回路250は、DESによる暗号演算の入力リクエストを受信した場合、暗号演算回路271に入力データと、入力リクエストとを出力する。調停回路250は、SHAによる暗号演算の入力リクエストを受信した場合、暗号演算回路272に入力データと、入力リクエストとを出力する。調停回路250は、AESによる入力リクエストを受信した場合、暗号演算回路273に入力データを出力し、かつ調停回路260に入力リクエストを出力する。調停回路250は、ADS−DUMMYによる入力リクエストを受信した場合、擬似暗号演算回路274に入力データと、入力リクエストとを出力する。また、擬似暗号演算回路274に出力された入力リクエストは、擬似暗号演算回路274を介して、調停回路260に出力される。
【0074】
また、調停回路250は、暗号演算回路271、272、273及び擬似暗号演算回路274から送信される出力データを、入力リクエストを送ってきたストリーム解析回路221、222又は223に出力する。
【0075】
調停回路260は、調停回路250からの暗号演算回路273に対する入力リクエストと、擬似暗号演算回路274からの擬似暗号演算回路274に対する入力リクエストとを調停する。すなわち、調停回路260は、暗号演算回路273及び擬似暗号演算回路274に対する暗号演算の要求を調停する。具体的には、調停回路260は、暗号演算回路273に対する入力リクエストを受信した場合、当該入力リクエストを暗号演算回路273に出力することで、暗号演算回路273に、第2コンテキスト277を用いた暗号演算を行わせる。また、調停回路260は、擬似暗号演算回路274に対する入力リクエストを受信した場合、当該入力リクエストを暗号演算回路273に出力することで、暗号演算回路273に、第2コンテキスト278を用いた暗号演算を行わせる。
【0076】
また、調停回路260は、暗号演算回路273に対する入力リクエストと、擬似暗号演算回路274に対する入力リクエストとを同時に受信した場合、擬似暗号演算回路274に対する入力リクエストを優先する。すなわち、調停回路260は、暗号演算回路273に対する入力リクエストと、擬似暗号演算回路274に対する入力リクエストとを同時に受信した場合、擬似暗号演算回路274に対する入力リクエストを暗号演算回路273に出力することで、暗号演算回路273に、第2コンテキスト278を用いた暗号演算を行わせる。
【0077】
次に、暗号演算回路271、272、273及び擬似暗号演算回路274の詳細な構成を説明する。
【0078】
図6は、暗号演算回路273及び擬似暗号演算回路274の詳細な構成を示すブロック図である。
【0079】
暗号演算回路273は、入力レジスタ301と、コンテキストレジスタ302と、暗号演算コア303と、セレクタ304、305、306及び307と、制御部308とを備える。
【0080】
セレクタ304は、調停回路250から出力される入力データ、及びコンテキスト制御回路240から出力される入力データのうち一方を選択する。
【0081】
入力レジスタ301は、セレクタ304により選択された入力データを保持する。
セレクタ305は、暗号演算コア303により出力される第2コンテキスト、及びコンテキスト制御回路240から出力される第2コンテキストのうち一方を選択する。
【0082】
コンテキストレジスタ302は、セレクタ305により選択された第2コンテキスト277を保持する。ここで、第2コンテキスト277とは、暗号演算に必要となる情報であり、暗号演算における鍵、中間値、初期値及び連鎖値のうち1以上を含む情報である。
【0083】
セレクタ306は、コンテキストレジスタ302に保持される第2コンテキスト277、及び擬似暗号演算回路274が備えるコンテキストレジスタ312に保持される第2コンテキスト278のうち一方を選択する。
【0084】
セレクタ307は、入力レジスタ301に保持される入力データ、及び擬似暗号演算回路274が備える入力レジスタ311に保持される入力データのうち一方を選択する。
【0085】
暗号演算コア303は、セレクタ306により選択された第2コンテキストを用いて、セレクタ307により選択された入力データに暗号演算を行う。本実施例では、暗号演算コア303は、AESに対応する暗号演算を行う。暗号演算コア303は、暗号演算が行われた出力データ、及び第2コンテキストを出力する。ここで、暗号演算コア303が出力する第2コンテキストは、暗号演算により生成された中間値又は連鎖値等を含む。
【0086】
制御部308は、調停回路260からの入力リクエスト及び第2コンテキストの退避及び復帰を行うか否かに基づき、セレクタ304、305、306及び307を制御する。具体的には、制御部308は、調停回路260からの入力リクエストが、暗号演算回路273に対する入力リクエストである場合、セレクタ306にコンテキストレジスタ302に保持される第2コンテキスト277を選択させ、セレクタ307に入力レジスタ301に保持される入力データを選択させる。制御部308は、調停回路260からの入力リクエストが、擬似暗号演算回路274に対する入力リクエストである場合、セレクタ306にコンテキストレジスタ312に保持される第2コンテキスト277を選択させ、セレクタ307に入力レジスタ311に保持される入力データを選択させる。
【0087】
また、制御部308は、第2コンテキストの復帰を行う場合に、セレクタ305にコンテキスト制御回路240により出力される第2コンテキストを選択させる。また、第2コンテキストの復帰を行わない場合には、制御部308は、セレクタ304に調停回路250により出力されるデータを選択させ、セレクタ305に暗号演算コア303により出力される第2コンテキストを選択させる。また、コンテキスト制御回路240は、暗号演算を中断し退避を行う場合等に、入力レジスタ301に保持される入力データをコンテキスト格納部230に退避する。また、入力データの復帰時に、制御部308は、セレクタ304にコンテキスト制御回路240からの入力データを選択させる。
【0088】
また、制御部308は、暗号演算コア303による暗号演算が終了した後、出力データをストリーム制御回路210に出力する要求である出力リクエストを調停回路260に出力する。
【0089】
擬似暗号演算回路274は、入力レジスタ311と、コンテキストレジスタ312と、出力レジスタ313と、セレクタ314及び315と、制御部318とを備える。
【0090】
セレクタ314は、調停回路250から出力される入力データ、及びコンテキスト制御回路240から出力される入力データのうち一方を選択する。
【0091】
入力レジスタ311は、セレクタ314により選択された入力データを保持する。
セレクタ315は、暗号演算コア303により出力される第2コンテキスト、及びコンテキスト制御回路240から出力される第2コンテキストのうち一方を選択する。
【0092】
コンテキストレジスタ312は、セレクタ315により選択された第2コンテキスト278を保持する。ここで、第2コンテキスト278とは、暗号演算に必要となる情報であり、暗号演算における鍵、中間値、初期値及び連鎖値のうち1以上を含む。
【0093】
出力レジスタ313は、暗号演算コア303により暗号演算された出力データを保持する。また、出力レジスタ313は、保持する出力データを調停回路250に出力する。
【0094】
制御部318は、調停回路250からの入力リクエストを受信した場合、該入力リクエストを調停回路260に出力する。
【0095】
また、制御部318は、第2コンテキストの復帰を行うか否かに基づき、セレクタ314及び315を制御する。制御部318は、セレクタ315にコンテキスト制御回路240により出力される第2コンテキストを選択させる。また、第2コンテキストの復帰を行わない場合には、制御部318は、セレクタ314に調停回路250により出力されるデータを選択させ、セレクタ315に暗号演算コア303により出力される第2コンテキストを選択させる。また、コンテキスト制御回路240は、暗号演算を中断し退避を行う場合等に、入力レジスタ311に保持される入力データをコンテキスト格納部230に退避する。また、入力データの復帰時に、制御部318は、セレクタ314にコンテキスト制御回路240からの入力データを選択させる。
【0096】
また、制御部318は、暗号演算コア303により暗号演算されたデータが出力レジスタ313に保持された後、出力リクエストを調停回路250に出力する。
【0097】
図7は、暗号演算回路271の詳細な構成を示すブロック図である。
暗号演算回路271は、入力レジスタ321と、コンテキストレジスタ322と、暗号演算コア323と、セレクタ324及び325と、制御部328とを備える。
【0098】
セレクタ324は、調停回路250から出力される入力データ、及びコンテキスト制御回路240から出力される入力データのうち一方を選択する。
【0099】
入力レジスタ321は、セレクタ324により選択された入力データを保持する。
セレクタ325は、暗号演算コア323により出力される第2コンテキスト、及びコンテキスト制御回路240から出力される第2コンテキストのうち一方を選択する。
【0100】
コンテキストレジスタ322は、セレクタ325により選択された第2コンテキスト275を保持する。
【0101】
暗号演算コア323は、コンテキストレジスタ322に保持される第2コンテキスト275を用いて、入力レジスタ321に保持される入力データに暗号演算を行う。本実施例では、暗号演算コア323は、DESに対応する暗号演算を行う。暗号演算コア323は、暗号演算が行われた出力データ、及び第2コンテキストを出力する。ここで、暗号演算コア323が出力する第2コンテキストは、暗号演算により生成された中間値又は連鎖値等を含む。
【0102】
制御部328は、第2コンテキストの復帰を行うか否かに基づき、セレクタ324及び325を制御する。制御部328は、第2コンテキストの復帰を行う場合に、セレクタ325にコンテキスト制御回路240により出力される第2コンテキストを選択させる。また、第2コンテキストの復帰を行わない場合には、制御部328は、セレクタ324に調停回路250により出力されるデータを選択させ、セレクタ325に暗号演算コア323により出力される第2コンテキストを選択させる。また、コンテキスト制御回路240は、暗号演算を中断し退避を行う場合等に、入力レジスタ321に保持される入力データをコンテキスト格納部230に退避する。また、入力データの復帰時に、制御部328は、セレクタ324にコンテキスト制御回路240からの入力データを選択させる。
【0103】
また、制御部328は、暗号演算コア323による暗号演算が終了した後、出力リクエストを調停回路250に出力する。
【0104】
なお、暗号演算回路272の構成は、暗号演算コア323がSHAに対応する暗号演算を行う点以外は、暗号演算回路271と同様である。
【0105】
次に、機密情報処理装置200の動作を説明する。一例として、図4に示すストリーム識別子が「ストリーム1」のストリームに対する機密情報処理装置200による暗号演算の動作を説明する。すなわち、1つのストリームに対して2回のAESに対応した暗号演算が行われる場合の、機密情報処理装置200の動作を説明する。例えば、この動作は、IPSec(Security Architecture for Internet Protocol)などおける、AESで暗号化されたストリームに対して同じくAESを用いたMAC(Message Authentication Code)処理を行う場合の動作である。
【0106】
図8は、機密情報処理装置200による暗号演算の流れを示すフローチャートである。図9は、1つのストリームに対して2回のAESに対応した暗号演算が行われる場合のデータの流れを示す図である。
【0107】
図8に示すように、まず、ストリーム制御回路210は、入力されたストリーム(以下、「第1ストリーム」と呼ぶ。)の識別を行う(S101)。具体的には、ストリーム制御回路210は、コンテキスト対応テーブル211を参照し、第1ストリームのストリーム識別子に対する暗号演算の実施回数と、それぞれの暗号演算で使用するコンテキストIDとを判定する。第1ストリームのストリーム識別子は「ストリーム1」なので、ストリーム制御回路210は、1回目の処理として「コンテキスト1」に対応する暗号演算を行い、2回目の処理として「コンテキスト2」に対応する暗号演算を行うと判定する。その後、ストリーム制御回路210は、入力されたストリームを、例えば、ストリーム解析回路222に出力する。
【0108】
次に、ストリーム解析回路222は、「コンテキスト1」に対応する第1コンテキスト225に基づき、ストリーム制御回路210により出力された第1ストリームから処理対象となるデータ(以下、「第1入力データ」と呼ぶ。)を抽出する(S102)。ここでは、「コンテキスト1」に対応する第1コンテキストをストリーム解析回路222が保持しているとする。なお、「コンテキスト1」に対応する第1コンテキストをストリーム解析回路222が保持していない場合には、ストリーム解析回路222は、第1コンテキストの退避及び復帰のリクエストをコンテキスト制御回路240に送信することで、第1コンテキストの退避及び復帰を行う。これにより、「コンテキスト1」に対応する第1コンテキストがストリーム解析回路222に保持される。
【0109】
ストリーム解析回路222は、抽出した第1入力データと、入力リクエストとを調停回路250に出力する。ここで、入力リクエストには、暗号演算に対応するコンテキストの情報(「コンテキスト1」を示す情報。例えば、コンテキストID。)が含まれる。
【0110】
次に、調停回路250は、暗号アルゴリズム対応テーブル241を参照し、ストリーム解析回路222により出力された入力リクエストに対応する暗号アルゴリズムを判定する(S103)。調停回路250は、暗号アルゴリズム対応テーブル241を参照し、「コンテキスト1」に対応する暗号アルゴリズムが「AES」であると判定する。調停回路250は、暗号アルゴリズム「AES」に対応する暗号演算回路273に対する入力リクエストを調停回路260に出力する。また、調停回路250は、ストリーム解析回路222により抽出された第1入力データを暗号演算回路273に出力する。
【0111】
また、調停回路250は、同時に複数のストリーム解析回路221、222及び223から同一の暗号アルゴリズムで処理すべき入力リクエストが入力された場合に、どのストリーム解析回路221、222及び223からの入力リクエストを処理するかを決定する。
【0112】
調停回路260は、調停回路250により出力された暗号演算回路273に対する入力リクエストを暗号演算回路273に出力する。
【0113】
ここで、調停回路260により出力される入力リクエストは、暗号演算回路273に対する入力リクエストなので(S104でNo)、暗号演算回路273は、コンテキストレジスタ302に保持される第2コンテキスト277を用いて、調停回路250により出力された第1入力データの暗号演算を行う(S106)。暗号演算回路273は、暗号演算を行ったデータ(以下、「第1出力データ」と呼ぶ。)を調停回路250に出力する。また、暗号演算回路273は、出力リクエストを調停回路260に出力する。
【0114】
調停回路260は、暗号演算回路273により出力された出力リクエストを調停回路250に出力する。
【0115】
調停回路250は、調停回路260からの出力リクエストに応じて、暗号演算回路273により出力された第1出力データを、入力リクエストの送信元であるストリーム解析回路222に出力する。
【0116】
ストリーム解析回路222は、調停回路250により出力された第1出力データを元の第1ストリームに組み込みストリーム制御回路210に出力する(S107)。
【0117】
以上の処理により、1回目の暗号演算が完了する。
入力されたストリームに対する全ての暗号演算が終了していないので(S108でNo)、次に、ストリーム制御回路210は、1回目の暗号演算が完了したストリーム(以下、「第2ストリーム」と呼ぶ。)を、例えば、ストリーム解析回路223に出力する。
【0118】
次に、ストリーム解析回路223は、「コンテキスト2」に対応する第1コンテキスト226に基づき、ストリーム制御回路210により出力された第2ストリームから処理対象となるデータ(以下、「第2入力データ」と呼ぶ。)を抽出する(S102)。ここで、ストリーム解析回路223は、1回目の処理においてストリーム解析回路222が用いた第1コンテキスト225と異なる第1コンテキスト226を用いて入力データの抽出を行う。つまり、ストリーム解析回路223は、第1ストリームにおける第1入力データの領域と、異なる領域の第2入力データを抽出する。また、ここでは、「コンテキスト2」に対応する第1コンテキストをストリーム解析回路223が保持しているとする。ストリーム解析回路223は、抽出した第2入力データと、入力リクエストとを調停回路250に出力する。
【0119】
次に、調停回路250は、暗号アルゴリズム対応テーブル241を参照し、ストリーム解析回路223により出力された入力リクエストに対応する暗号アルゴリズムを判定する(S103)。例えば、調停回路250は、「コンテキスト2」に対応する暗号アルゴリズムが「AES−DUMMY」であると判定する。調停回路250は、暗号アルゴリズム「AES−DUMMY」に対応する擬似暗号演算回路274に対する入力リクエストを擬似暗号演算回路274に出力する。また、調停回路250は、ストリーム解析回路223により抽出された第2入力データを擬似暗号演算回路274に出力する。
【0120】
擬似暗号演算回路274は、調停回路250により出力された入力リクエストを調停回路260に出力する。
【0121】
調停回路260は、擬似暗号演算回路274により出力された擬似暗号演算回路274に対する入力リクエストを暗号演算回路273に出力する。
【0122】
ここで、調停回路260により出力される入力リクエストは、擬似暗号演算回路274に対する入力リクエストなので(S104でYes)、暗号演算回路273は、コンテキストレジスタ312に保持される第2コンテキスト278を用いて、擬似暗号演算回路274により出力された第2入力データの暗号演算を行う(S106)。暗号演算回路273は、暗号演算を行ったデータ(以下、「第2出力データ」と呼ぶ。)を擬似暗号演算回路274に出力する。また、暗号演算回路273は、調停回路260に出力リクエストを出力する。
【0123】
調停回路260は、暗号演算回路273により出力された出力リクエストに応じて、擬似暗号演算回路に出力リクエストを出力する。
【0124】
擬似暗号演算回路274は、暗号演算回路273により出力された第2出力データ、及び出力リクエストを調停回路250に出力する。
【0125】
調停回路250は、擬似暗号演算回路274からの出力リクエストに応じて、擬似暗号演算回路274により出力された第2出力データを、入力リクエストの送信元であるストリーム解析回路223に出力する。
【0126】
ストリーム解析回路223は、調停回路250により出力された第2出力データを元の第2ストリームに組み込みストリーム制御回路210に出力する(S107)。
【0127】
以上の処理により、2回目の暗号演算が完了する。
入力されたストリームに対する全ての暗号演算が終了したので(S108でYes)、次に、ストリーム制御回路210は、2回目の暗号演算が完了したストリームを、外部に出力する(S109)。
【0128】
以上により、ストリームに対してAESに対応した2回の暗号演算が行われる。
次に、調停回路260、暗号演算回路273及び擬似暗号演算回路274の詳細な動作を個別に説明する。
【0129】
まず、図8に示すステップS104、S105及びS106における調停回路260の詳細な動作を説明する。
【0130】
図10は、調停回路260の処理の流れを示すフローチャートである。
調停回路260は、まず、暗号演算回路273が入力可能な状態であるか否かを判定する(S201)。つまり、調停回路260は、暗号演算回路273が暗号演算可能な状態であるか否かを判定する。調停回路260は、暗号演算回路273が暗号演算中であり、入力不可の状態の場合(S201でNo)、暗号演算回路273が入力可能な状態になるまで待機する。
【0131】
暗号演算回路273が入力可能な場合(S201でYes)、次に、調停回路260は、擬似暗号演算回路274からの入力リクエスト(擬似暗号演算回路274に対する入力リクエスト)を受けているか否かを判定する(S202)。
【0132】
擬似暗号演算回路274からの入力リクエストを受けている場合(S202でYes)、調停回路260は、擬似暗号演算回路274から出力される入力データを受け付けるように暗号演算回路273に指示する(S203)。例えば、調停回路260は、暗号演算回路273に、擬似暗号演算回路274に対する入力リクエストを送信することで、当該指示を行う。
【0133】
一方、擬似暗号演算回路274からの入力リクエストを受けていない場合(S202でNo)、調停回路260は、調停回路250からの入力リクエスト(暗号演算回路273に対する入力リクエスト)を受けているか否かを判定する(S204)。
【0134】
調停回路250からの入力リクエストを受けていない場合(S204でNo)、調停回路260は、所定の時間後に、再度、擬似暗号演算回路274からの入力リクエストを受けているか否かを判定する(S202)。
【0135】
調停回路250からの入力リクエストを受けている場合(S204でYes)、調停回路260は、調停回路250からの入力を受け付けるように暗号演算回路273に指示する(S205)。例えば、調停回路260は、暗号演算回路273に、暗号演算回路273に対する入力リクエストを送信することで、当該指示を行う。
【0136】
つまり、調停回路260は、暗号演算回路273が入力可能な状態である場合には、擬似暗号演算回路274からの入力リクエストを受け付ける。また、調停回路260は、暗号演算回路273が入力可能な状態であり、かつ擬似暗号演算回路274からの入力リクエストが無い場合、調停回路250からの入力リクエストを受けつける。
【0137】
すなわち、調停回路260は、擬似暗号演算回路274からの入力リクエストを、調停回路250からの入力リクエストより優先して受け付ける。
【0138】
ステップS203又はS205において、暗号演算回路273に指示及び入力リクエストを送信した後、調停回路260は、暗号演算回路273からの出力リクエストを受信したか否かを所定の時間毎に判定する(S206)。すなわち、調停回路260は、暗号演算回路273による暗号演算が完了し、出力リクエストが出力されるのを待つ。
【0139】
暗号演算回路273から出力リクエストが出力されると(S206でYes)、調停回路260は、調停回路250からの入力リクエストを処理したか否かを判定する(S207)。すなわち、調停回路260は、調停回路250からの入力リクエスト、及び擬似暗号演算回路274からの入力リクエストのうちいずれを処理したかを判定する。
【0140】
調停回路250からの入力リクエストを処理した場合(S207でYes)、調停回路260は、調停回路250に出力リクエストを送信する(S208)。一方、擬似暗号演算回路274からの入力リクエストを処理した場合(S207でNo)、調停回路260は、擬似暗号演算回路274に出力リクエストを送信する(S209)。
【0141】
以上の動作により、調停回路260は、調停回路250及び擬似暗号演算回路274から送信された暗号演算回路273又は擬似暗号演算回路274に対する入力リクエストに基づき、暗号演算回路273に第2コンテキスト277及び278のうちいずれを用いた暗号演算を行わせるか指示することができる。また、調停回路260は、暗号演算回路273に調停回路250及び擬似暗号演算回路274から送信される入力データのうちいずれに対して暗号演算を行わせるか指示することができる。
【0142】
また、調停回路260は、出力リクエスト、及び暗号演算回路273により暗号演算された出力データを、調停回路250及び擬似暗号演算回路274のうち入力リクエストの送信元に送信することができる。
【0143】
次に、図8に示すステップS105及びS106における暗号演算回路273の詳細な動作を説明する。
【0144】
図11は、暗号演算回路273の処理の流れを示すフローチャートである。
まず、暗号演算回路273は、調停回路260から入力リクエストを受信したか否かを判定する(S301)。入力リクエストを受信した場合(S301でYes)、制御部308は、調停回路260から、調停回路250からの入力データを受け付けるように指示されているか否かを判定する(S302)。
【0145】
調停回路260から、調停回路250からの入力データを受け付けるように指示されている場合(S302でYes)、つまり暗号演算回路273に対する入力リクエストの場合、制御部308は、第2コンテキスト277の切り替え(退避及び復帰)の必要があるか否かを判定する(S303)。つまり、制御部308は、入力データに対応する第2コンテキストがコンテキストレジスタ302に保持されているか否かを判定する。具体的には、入力リクエストに含まれるコンテキストIDと、コンテキストレジスタ302に保持される第2コンテキスト277のコンテキストIDとが一致する場合に、制御部308は、第2コンテキストの切り替えは不要であると判定し、一致しない場合に、制御部308は、第2コンテキストの切り替えが必要であると判定する。
【0146】
コンテキスト切り替えが必要な場合(S303でYes)、制御部308は、コンテキスト切り替えを行う(S304)。具体的には、制御部308は、セレクタ305にコンテキスト制御回路240により出力される第2コンテキストを選択させる。また、制御部308は、コンテキスト制御回路240に、コンテキスト退避及び復帰のリクエストを送信する。
【0147】
コンテキスト退避及び復帰のリクエストを受信したコンテキスト制御回路240は、コンテキストレジスタ302に保持されている第2コンテキスト277をコンテキスト格納部230に退避する。すなわち、コンテキスト制御回路240は、コンテキストレジスタ302に保持されている第2コンテキストを読み出し、コンテキスト格納部230に格納する。
【0148】
その後、コンテキスト制御回路240は、コンテキスト格納部230に格納されている入力リクエストのコンテキストIDに対応する第2コンテキストをコンテキストレジスタ302に復帰する。すなわち、コンテキスト制御回路240は、コンテキスト格納部230に格納されている入力リクエストのコンテキストIDに対応する第2コンテキスト232を読み出し、コンテキストレジスタ302に格納する。
【0149】
コンテキスト切り替えが不要な場合(S303でNo)、及びコンテキスト切り替え(S304)後、制御部308は、セレクタ304に調停回路250により出力される入力データを選択させる。これにより、入力レジスタ301に調停回路250により出力された入力データが格納される。なお、入力レジスタ301への入力データの格納は、ステップS303及びS304の前、又は同時に行ってもよい。
【0150】
また、制御部308は、セレクタ306にコンテキストレジスタ302に保持される第2コンテキストを選択させ、セレクタ307に入力レジスタ301に保持される入力データを選択させる。これにより、入力レジスタ301に保持される入力データ及びコンテキストレジスタ302に保持される第2コンテキスト277が、暗号演算コア303に入力される。
【0151】
暗号演算コア303は、コンテキストレジスタ302に保持される第2コンテキストを用いて、入力レジスタ301に保持される入力データに暗号演算を行う(S305)。また、制御部308は、セレクタ305に暗号演算コア303により出力される第2コンテキストを選択させる。これにより、当該暗号演算により生成された第2コンテキストが、コンテキストレジスタ302に格納される。
【0152】
暗号演算コア303により暗号演算された出力データは、調停回路250に出力される。また、制御部308は、調停回路260に出力リクエストを出力する(S307)。
【0153】
暗号演算回路273は、調停回路260への出力データの出力が完了した後(S308でYes)、ステップS301で受信した入力リクエストに対する暗号演算処理を終了する。
【0154】
一方、ステップS302において、調停回路260から、擬似暗号演算回路274からのデータを受け付けるように指示されている場合(S302でNo)、つまり擬似暗号演算回路274に対する入力リクエストの場合、制御部308は、セレクタ306にコンテキストレジスタ312に保持される第2コンテキストを選択させ、セレクタ307に入力レジスタ311に保持されるデータを選択させる。これにより、入力レジスタ311に保持される入力データ及びコンテキストレジスタ312に保持される第2コンテキスト278が、暗号演算コア303に入力される。
【0155】
暗号演算コア303は、コンテキストレジスタ312に保持される第2コンテキスト278を用いて、入力レジスタ311に保持される入力データに暗号演算を行う(S306)。また、暗号演算コア303は、暗号演算された出力データ、及び当該暗号演算により生成された第2コンテキストを擬似暗号演算回路274に出力する。また、制御部308は、調停回路260に出力リクエストを出力する(S307)。
【0156】
暗号演算回路273は、擬似暗号演算回路274への出力データの出力が完了した後(S308でYes)、ステップS301で受信した入力リクエストに対する暗号演算処理を終了する。
【0157】
以上の動作により、暗号演算回路273は、調停回路260からの指示に基づき、調停回路250から送信された入力データに対して第2コンテキスト277を用いた暗号演算、又は、擬似暗号演算回路274から送信された入力データに対して第2コンテキスト278を用いた暗号演算を行うことができる。
【0158】
また、暗号演算回路273は、暗号演算した出力データを調停回路250又は擬似暗号演算回路274に出力することができる。
【0159】
また、暗号演算回路273は、入力リクエストに対応する第2コンテキストを保持していない場合には、第2コンテキストの退避及び復帰を行うことができる。
【0160】
次に、図8に示すステップS105及びS106における擬似暗号演算回路274の詳細な動作を説明する。
【0161】
図12は、擬似暗号演算回路274の処理の流れを示すフローチャートである。
まず、擬似暗号演算回路274は、調停回路250から入力リクエストを受信したか否かを判定する(S401)。入力リクエストを受信した場合(S401でYes)、制御部318は、コンテキスト切り替えの必要があるか否かを判定する(S402)。つまり、制御部318は、入力データに対応する第2コンテキストがコンテキストレジスタ312に保持されているか否かを判定する。具体的には、入力リクエストに含まれるコンテキストIDと、コンテキストレジスタ312に保持される第2コンテキスト278のコンテキストIDとが一致する場合に、制御部318は、第2コンテキストの切り替えは不要であると判定し、一致しない場合に、制御部318は、第2コンテキストの切り替えが必要であると判定する。
【0162】
コンテキスト切り替えが必要な場合(S402でYes)、制御部318は、コンテキスト切り替えを行う(S403)。具体的には、制御部318は、セレクタ315にコンテキスト制御回路240により出力される第2コンテキストを選択させる。また、制御部318は、コンテキスト制御回路240に、コンテキスト退避及び復帰のリクエストを送信する。
【0163】
コンテキスト退避及び復帰のリクエストを受信したコンテキスト制御回路240は、コンテキストレジスタ312に保持されている第2コンテキスト278をコンテキスト格納部230に退避する。すなわち、コンテキスト制御回路240は、コンテキストレジスタ312に保持されている第2コンテキストを読み出し、コンテキスト格納部230に格納する。
【0164】
その後、コンテキスト制御回路240は、コンテキスト格納部230に格納されている入力リクエストのコンテキストIDに対応する第2コンテキストをコンテキストレジスタ312に復帰する。すなわち、コンテキスト制御回路240は、コンテキスト格納部230に格納されている入力リクエストのコンテキストIDに対応する第2コンテキストを読み出し、コンテキストレジスタ312に格納する。
【0165】
コンテキスト切り替えが不要な場合(S402でNo)、及びコンテキスト切り替え(S403)後、制御部318は、セレクタ304に調停回路250により出力される入力データを選択させる。これにより、入力レジスタ301に調停回路250により出力された入力データが格納される。なお、入力レジスタ301への入力データの格納は、ステップS402及びS403の前、又は同時に行ってもよい。
【0166】
次に、制御部318は、調停回路260に入力リクエストを送信する(S404)。なお、調停回路260への入力リクエストの送信(S404)は、ステップS402及びS403の前、又は同時に行ってもよい。
【0167】
調停回路260は、制御部318からの入力リクエストを暗号演算回路273に送信する。これにより、暗号演算回路273は、擬似暗号演算回路274の入力レジスタ311に保持される入力データを、第2コンテキスト278を用いて暗号演算する。
【0168】
暗号演算コア303による暗号演算の終了後、制御部318は、コンテキストレジスタ312に保持される第2コンテキスト278の更新が必要であるか否かを判定する(S405)。つまり、暗号演算コア303による暗号演算により第2コンテキストに含まれる中間値又は連鎖値等が更新されたか否かを判定する。更新が必要な場合(S405でYes)、制御部318は、セレクタ315に暗号演算コア303により出力される第2コンテキストを選択させる。これにより、コンテキストレジスタ312に保持される第2コンテキストが、暗号演算コア303により出力された第2コンテキストに更新される(S406)。
【0169】
更新が不要の場合(S405でNo)、又は更新(S406)の後、制御部318は、調停回路260からの出力リクエストを受信したか否かを所定の時間毎に判定する(S407)。すなわち、制御部318は、調停回路260から出力リクエストが出力されるまで待機する。
【0170】
調停回路260からの出力リクエストを受信した場合(S407でYes)、制御部318は、暗号演算コア303により暗号演算された出力データを受け付け、出力レジスタ313に格納する(S408)。
【0171】
次に、制御部318は、調停回路250に出力リクエストを送信する(S409)。
また、出力レジスタ313は、格納する出力データを、調停回路250に出力する。擬似暗号演算回路274は、調停回路250への出力データの出力が完了した後(S410でYes)、ステップS401で受信した入力リクエストに対する暗号演算処理を終了する。
【0172】
以上の動作により、擬似暗号演算回路274は、出力リクエスト、及び暗号演算回路273により暗号演算された出力データを調停回路250に出力することができる。
【0173】
また、擬似暗号演算回路274は、入力リクエストに対応する第2コンテキストを保持していない場合には、第2コンテキストの退避及び復帰を行うことができる。
【0174】
以上より、本発明の実施の形態に係る機密情報処理装置200は、コンテキスト格納部230に複数の暗号演算にそれぞれ必要となる第2コンテキストを格納する。また、コンテキスト制御回路240により、暗号演算回路271、272、273及び擬似暗号演算回路274に保持される第2コンテキスト275〜278を、コンテキスト格納部230に退避及び復帰できる。これにより、コンテキストレジスタ302、312及び322は、少なくとも1つの第2コンテキストのみを保持すればよい。すなわち、機密情報処理装置200は、切り替えられるデータの数、及び1つのデータに実行できる暗号演算の数を増加させても、コンテキストレジスタの数を増加させる必要がない。よって、機密情報処理装置200は、レジスタの回路面積を増加させることなく、暗号演算を切り替えられるデータの数、及び1つのデータに実行できる暗号演算の数を増加させることができる。すなわち、機密情報処理装置200は、回路面積の増加を抑制しつつ、複数のデータに暗号演算を行え、かつ1つのデータに対して複数の暗号演算を行える。
【0175】
ここで、コンテキストレジスタの数は、機密情報処理装置の設計の前段階に決定する必要があり、レジスタの数の変更は容易ではない。一方、本発明に係る機密情報処理装置200では、RAMにより構成されるコンテキスト格納部230に複数の第2コンテキストを格納するので、設計の後段階で変更することができる。例えば、ソフトウェア制御によりRAMの記憶容量のうち第2コンテキスト232を格納する領域を変更するだけでよい。
【0176】
また、本発明の実施の形態に係る機密情報処理装置200は、複数のストリーム解析回路221、222及び223を備える。また、各ストリーム解析回路221はそれぞれ異なる第1コンテキストに対応した解析を行う。これにより、機密情報処理装置200は、1回目の暗号演算と、2回目の暗号演算とで、暗号化を行う対象データが異なる場合でも、第1コンテキストの切り替えを行うことなく解析を行うことができる。よって、処理を高速化でき、かつ制御を容易化することができる。これにより、機密情報処理装置200は、多種の暗号モードに対応することができる。例えば、特許文献1記載の機密情報処理装置では、出力結果を直接フィードバックし、かつその値を連鎖値として使用しているため、演算可能なモードがCBC(Cipher Block Chain)などに限られる。
【0177】
また、機密情報処理装置200は、2回の暗号演算のうち2回目の暗号演算を優先的に行う。これにより、2回の暗号演算が終了したデータを外部に順次出力できるので、内部に保持する2回目の暗号演算前のデータ(1回目の暗号演算が終了したデータ)の量を削減できる。
【0178】
なお、上記説明では、1つのストリームにAESに対応した2回の暗号演算を行う例を説明したが、本発明に係る機密情報処理装置200は、1つのストリームにAESによる1回の暗号演算を行うこともできる。この場合の動作は、上記説明の1回目又は2回目の各動作と同様であり、説明は省略する。
【0179】
また、機密情報処理装置200は、1つのストリームにDES又はSHAに対応した暗号演算を行うこともできる。この場合の動作は、暗号演算を行う暗号演算回路が変更される点及び調停回路260を介した入力リクエスト及び出力リクエストの送信が行われない点が異なる。それ以外は、AESに対応した暗号演算が行われる場合と同様である。
【0180】
具体的には、ステップS103において、調停回路250は、暗号アルゴリズム対応テーブル241を参照し、暗号アルゴリズムをDES又はSHAと判定する。調停回路250は、ストリーム解析回路221、222又は223により抽出されたデータ及び入力リクエストを暗号演算回路271又は272に出力する。
【0181】
ここで、調停回路250により出力される入力リクエストは、暗号演算回路271又は272に対する入力リクエストなので(S104でNo)、暗号演算回路271又は272は、コンテキストレジスタ322に保持される第2コンテキスト275を用いて、調停回路250により出力されたデータの暗号演算を行う(S106)。暗号演算回路273は、暗号演算を行ったデータ及び出力リクエストを調停回路250に出力する。
【0182】
調停回路250は、暗号演算回路271又は272からの出力リクエストに応じて、暗号演算回路271又は272により出力されたデータを、入力リクエストの送信元であるストリーム解析回路221、222又は223に出力する。
【0183】
ストリーム解析回路221、222又は223は、調停回路250により出力されたデータを元のストリームに組み込みストリーム制御回路210に出力する(S107)。
【0184】
また、機密情報処理装置200は、1つのストリームにAES、DES及びSHAのうちの異なる2つのそれぞれ対応した2回の暗号演算を行うこともできる。この場合の動作は、暗号演算を行う暗号演算回路が変更される点以外は、AESに対応した2回の暗号演算が行われる場合と同様である。
【0185】
また、機密情報処理装置200においては、暗号演算回路273は、コンテキストレジスタ302又は312に保持される第2コンテキスト277又は278を用いて、暗号演算を行う。これにより、1回目の暗号処理と2回目の暗号処理とを切り替えながら行う場合に、コンテキスト格納部230と、コンテキストレジスタ302又は312との間の第2コンテキスト277又は278の退避及び復帰を、暗号演算を行う入力データを切り替える毎に行わなくてもよい。よって、情報の退避及び復帰を行う回数を低減できる。これにより、機密情報処理装置200は、高速に暗号演算を行える。
【0186】
以下に具体例を示す。
図13は、1回目の暗号アルゴリズムをAESとし、二回目のアルゴリズムをAES−DUMMYとしたAESによる同一ストリームへの連続した2回の暗号演算における暗号演算回路273の動作状態を示す図である。
【0187】
図13に示すように、まず、暗号演算回路273は、1回目の暗号演算に対応した第2コンテキストにコンテキスト切り替えを行う(S501)。次に、暗号演算回路273は、入力されたストリームの1ブロック目のデータに対して1回目の暗号演算(AES)を行う(S502)。暗号演算回路273は、ステップS502で暗号演算された1ブロック目のデータを出力する(S503)。次に、暗号演算回路273は、2ブロック目のデータに対して1回目の暗号演算を行い(S504)、暗号演算されたデータを出力する(S505)。次に、暗号演算回路273は、ステップS503で出力された1ブロック目のデータに対して2回目の暗号演算を行い(S506)、暗号演算されたデータを出力する(S507)。次に、暗号演算回路273は、ステップS505で出力された2ブロック目のデータに対して2回目の暗号演算を行い(S508)、暗号演算されたデータを出力する(S509)。次に、暗号演算回路273は、3ブロック目のデータに対して1回目の暗号演算を行い(S510)、暗号演算されたデータを出力する。暗号演算回路273は、以降のブロックに対して同様の処理を繰り返す。
【0188】
図14は、機密情報処理装置が擬似暗号演算回路274及び調停回路260を備えない場合の暗号演算回路273の動作状態を示す図である。
【0189】
図14に示すように、まず、暗号演算回路273は、1回目の暗号演算に対応した第2コンテキストにコンテキスト切り替えを行う(S601)。次に、暗号演算回路273入力されたストリームの1ブロック目のデータに対して1回目の暗号演算を行い(S602)、暗号演算されたデータを出力する(S603)。次に、暗号演算回路273は、2ブロック目のデータに対して1回目の暗号演算を行い(S604)、暗号演算されたデータを出力する(S605)。次に、暗号演算回路273は、2回目の暗号演算に対応した第2コンテキストにコンテキスト切り替えを行う(S606)。次に、暗号演算回路273は、ステップS603で出力された1ブロック目のデータに対して2回目の暗号演算を行い(S607)、暗号演算されたデータを出力する(S608)。次に、暗号演算回路273は、再度、1回目の暗号演算に対応した第2コンテキストにコンテキスト切り替えを行う(S609)。次に、暗号演算回路273は、3ブロック目のデータに対して1回目の暗号演算を行い(S610)、暗号演算されたデータを出力する(S611)。暗号演算回路273は、以降のブロックに対して同様の処理を繰り返す。
【0190】
図14に示すように、機密情報処理装置が擬似暗号演算回路274及び調停回路260を備えない場合には、コンテキスト切り替えが多発する。一方、図13に示すように、本発明の実施の形態に係る機密情報処理装置200では、コンテキスト切り替えの発生頻度を削減できる。
【0191】
なお、コンテキスト切り替えの発生頻度を削減するために、同一暗号アルゴリズムを処理する複数の暗号演算回路を備える方法が考えられる。しかしながら、暗号演算回路に含まれる暗号演算コアは回路規模が大きいために、同一暗号アルゴリズムに対応した暗号演算回路を複数備えた場合、機密情報処理装置の面積が増大するという別の問題が発生する。
【0192】
一方、機密情報処理装置200において、擬似暗号演算回路274は、暗号演算を行う暗号演算コアを備えない。すなわち、本発明に係る機密情報処理装置200は、回路面積の増加を抑制しつつ、コンテキスト切り替えの発生頻度を削減できる。
【0193】
また、上記説明では、1つのストリームが入力される場合の動作について説明したが、本発明に係る機密情報処理装置200は、複数のストリームが輻輳して入力される場合に、データを切り替えながら暗号演算を行うこともできる。
【0194】
さらに、輻輳して入力されるストリームが、共にAESに対応し、かつ異なるコンテキストを用いた暗号演算の場合は、上述した1つのストリームに2回のAESを行う場合と同様の効果をえることができる。例えば、第1のストリームと第2のストリームとが輻輳して入力される場合、上記説明における「1回目の暗号演算」を「第1のストリーム」と置き換え、「2回目の暗号演算」を「第2のストリーム」と置き換えればよい。つまり、機密情報処理装置200は、2つのストリームに対する同一の暗号アルゴリズムによる暗号演算を切り替えながら行う場合の、コンテキスト切り替えの発生頻度を削減できる。
【0195】
以上、本発明の実施の形態に係る機密情報処理装置について説明したが、本発明は、この実施の形態に限定されるものではない。
【0196】
例えば、上記説明では、機密情報処理装置200が、3つの暗号演算回路271、272及び273を備える例について説明したが、暗号演算回路の数はこれに限定されるものではない。例えば、機密情報処理装置200は、暗号演算回路273のみを備えてもよし、2個又は4個以上の暗号演算回路を備えてもよい。
【0197】
また、上記説明では、機密情報処理装置200は、擬似暗号演算回路274を一つ備えるとしたが、同一の暗号アルゴリズムに対応した擬似暗号演算回路を複数備えてもよい。これにより同一のストリームに対して所定の暗号アルゴリズムによる3回以上の暗号演算を行うことができる。n(nは任意の自然数)回の暗号演算を行う場合、所定の暗号アルゴリズムに対応したn−1個の擬似暗号演算回路を備えることが望ましい。この場合、調停回路260は、暗号演算回路273と、暗号演算回路273に対応するn−1個の擬似暗号演算回路とに対する入力リクエストを調停する。
【0198】
また、上記説明では、擬似暗号演算回路274に対応した暗号演算回路273の暗号アルゴリズムをAESとしているが、これは一例であり、他の暗号アルゴリズムでもよい。
【0199】
また、上記説明では、機密情報処理装置200は、暗号演算回路273に対する擬似暗号演算回路274のみを備えるとしたが、暗号演算回路271及び272の1以上に対応する擬似暗号演算回路と、当該暗号演算回路及び擬似暗号演算回路に対する入力リクエストを調停する調停回路260と同様の構成の調停回路とを備えてもよい。
【0200】
また、上記説明では、暗号演算回路の対応している暗号アルゴリズムをAES、DES及びSHAとしているが、Multi2やCamellia、MD5(Message Digest 5)などの他の暗号アルゴリズムであってもよい。
【0201】
また、各暗号演算回路で行う暗号演算のモードは、CBC、ECB(Electronic Code Block)、X−CBC−MAC、OFB(Output Feedback)、CTR(Counter)など任意のものでよい。
【0202】
また、上記説明では、機密情報処理装置200は、3個のストリーム解析回路221、222、223を備えるが、1個、2個又は4個以上のストリーム解析回路を備えてもよい。
【0203】
また、上記説明では、暗号演算を擬似暗号演算回路274へ割当てるか暗号演算回路273に割当てるかを指定された暗号アルゴリズムの違い(AESとAES−DUMMY)によって決定しているが、調停回路250によって自動的に割り当てを行うようにしてもよい。
【0204】
また、上記説明では、ストリーム制御回路210がコンテキスト対応テーブル211を格納するとしたが、コンテキスト格納部230等がコンテキスト対応テーブル211を格納してもよい。この場合、ストリーム制御回路210は、コンテキスト格納部230に格納されるコンテキスト対応テーブル211を参照して、上述した処理を行う。
【0205】
また、上記説明では、コンテキスト制御回路240が暗号アルゴリズム対応テーブル241を格納するとしたが、コンテキスト格納部230が暗号アルゴリズム対応テーブル241を格納してもよい。この場合、コンテキスト格納部230は、対応する第1コンテキスト231と、第2コンテキスト232と、暗号アルゴリズム対応テーブル241に含まれる情報とをコンテキストIDに対応させた1つのコンテキストとして格納してもよい。
【0206】
また、上記説明では、機密情報処理装置200は、暗号化及び復号化を行うとしたが、暗号化及び復号化のいずれか一方のみを行ってもよい。
【0207】
また、上記説明では、本発明に係る機密情報処理装置200を携帯電話機器に適応した例について述べたが、デジタルテレビ、STB、DVDレコーダ、DVDプレーヤ、HDレコーダ、PC、及び携帯情報端末(PDA)等に適用してもよい。
【0208】
図15は、本発明の実施の形態に係る機密情報処理機器100の変形例の構成を示す図である。図15に示すように、機密情報処理機器100は、外部機器109によりデジタル放送等により送信される暗号化データに対して、復号化を行い表示部104に表示してもよい。また、機密情報処理機器100は、記憶媒体(CD、DVD、メモリカード及びUSBメモリ等)106に格納される暗号化データに対して復号化を行ってもよい。また、機密情報処理機器100は、機密情報処理装置200により暗号化されたデータを、記録媒体106に格納してもよい。また、機密情報処理機器100は、外部機器108により、ネットワーク107を介して送信された暗号化データに対して復号化を行ってもよい。また、機密情報処理機器100は、機密情報処理装置200により暗号化されたデータを、ネットワーク107を介して外部機器108に送信してもよい。
【産業上の利用可能性】
【0209】
本発明は、機密情報処理装置に適用でき、特に、暗号化通信を必要とするネットワークに接続された機密情報処理機器、及び著作権保護されたストリームを処理する機密情報処理機器に適用できる。例えば、本発明は、携帯電話機器、デジタルテレビ、STB、DVDレコーダ、DVDプレーヤ、HDレコーダ、PC、及びPDA等に適用できる。
【図面の簡単な説明】
【0210】
【図1】本発明の実施の形態に係る機密情報処理機器の外観を示す図である。
【図2】本発明の実施の形態に係る機密情報処理機器の構成を示すブロック図である。
【図3】本発明の実施の形態に係る機密情報処理装置の構成を示すブロック図である。
【図4】本発明の実施の形態に係るコンテキスト対応テーブルの構成を示す図である。
【図5】本発明の実施の形態に係る暗号アルゴリズム対応テーブルの構成を示す図である。
【図6】本発明の実施の形態に係る擬似暗号演算回路と、擬似暗号演算回路に対応する暗号演算回路との構成を示すブロック図である。
【図7】本発明の実施の形態に係る暗号演算回路の構成を示すブロック図である。
【図8】本発明の実施の形態に係る機密情報処理装置の処理の流れを示すフローチャートである。
【図9】本発明の実施の形態に係る機密情報処理装置の処理におけるデータの流れを示す図である。
【図10】本発明の実施の形態に係る調停回路の処理の流れを示すフローチャートである。
【図11】本発明の実施の形態に係る暗号演算回路の処理の流れを示すフローチャートである。
【図12】本発明の実施の形態に係る擬似暗号演算回路の処理の流れを示すフローチャートである。
【図13】本発明の実施の形態に係る暗号演算回路の動作状態を示す図である。
【図14】従来の暗号演算回路の動作状態を示す図である。
【図15】本発明の実施の形態に係る機密情報処理機器の変形例の構成を示すブロック図である。
【図16】従来の機密情報処理装置の構成を示す図である。
【符号の説明】
【0211】
51 暗号化モジュール
52 暗号化ユニット
54 セレクタ
55 メモリ
56 レジスタ
57 スイッチ
58 排他的論理和回路
65、66、67 フィードバックライン
100 機密情報処理機器
101 アンテナ
102 受信部
103 送信部
104 表示部
105 記憶部
106 記録媒体
107 ネットワーク
108 外部機器
109 外部機器
200 機密情報処理装置
210 ストリーム制御回路
211 コンテキスト対応テーブル
221、222、223 ストリーム解析回路
224、225、226、231 第1コンテキスト
230 コンテキスト格納部
232、275、276、277、278 第2コンテキスト
240 コンテキスト制御回路
241 暗号アルゴリズム対応テーブル
250、260 調停回路
271、272、273 暗号演算回路
274 擬似暗号演算回路
301、311、321 入力レジスタ
302、312、322 コンテキストレジスタ
303、323 暗号演算コア
304、305、306、307、314、315、324、325 セレクタ
308、318、328 制御部
313 出力レジスタ

【特許請求の範囲】
【請求項1】
第1入力データと、第2入力データとに暗号演算を行う機密情報処理装置であって、
第1暗号演算回路と、
第1擬似暗号演算回路と、
前記第1暗号演算回路及び前記第1擬似暗号演算回路に対する暗号演算の要求を調停する第1調停回路とを備え、
前記第1暗号演算回路は、
前記第1入力データの暗号演算に必要となる第1情報を保持する第1レジスタと、
暗号演算を行う第1暗号演算部とを備え、
前記第1擬似暗号演算回路は、
前記第2入力データの暗号演算に必要となる第2情報を保持する第2レジスタを備え、
前記機密情報処理装置は、さらに、
前記第1情報及び前記第2情報を保持する第1記憶部と、
前記第1記憶部に保持される前記第1情報及び前記第2情報を前記第1レジスタ及び前記第2レジスタに書き込み、かつ前記第1レジスタ及び前記第2レジスタに保持される前記第1情報及び前記第2情報を前記第1記憶部に退避させる制御回路とを備え、
前記第1調停回路は、前記第1暗号演算回路に対して前記第1入力データに対する暗号演算の要求があった場合に、前記第1暗号演算部に、前記第1レジスタに保持される前記第1情報を用いた前記第1入力データの暗号演算を行わせ、前記第1擬似暗号演算回路に対して前記第2入力データに対する暗号演算の要求があった場合に、前記第1暗号演算部に、前記第2レジスタに保持される前記第2情報を用いた前記第2入力データの暗号演算を行わせる
ことを特徴とする機密情報処理装置。
【請求項2】
前記第1情報は、前記第1入力データの暗号演算に用いられる鍵、初期値及び演算途中の中間情報のうち1以上を含み、
前記第2情報は、前記第2入力データの暗号演算に用いられる鍵、初期値及び演算途中の中間情報のうち1以上を含む
ことを特徴とする請求項1記載の機密情報処理装置。
【請求項3】
前記制御回路は、前記第1暗号演算回路に対して前記第1入力データに対する暗号演算の要求があった場合、かつ前記第1レジスタが前記第1情報を保持していない場合に、前記第1レジスタに保持される情報を前記第1記憶部に退避させ、かつ前記第1記憶部に保持される前記第1情報を前記第1レジスタに書き込み、前記第1擬似暗号演算回路に対して前記第2入力データに対する暗号演算の要求があった場合、かつ前記第2レジスタが前記第2情報を保持していない場合に、前記第2レジスタに保持される情報を前記第1記憶部に退避させ、かつ前記第1記憶部に保持される前記第2情報を前記第2レジスタに書き込む
ことを特徴とする請求項1又は2記載の機密情報処理装置。
【請求項4】
前記機密情報処理装置は、さらに、
第1ストリームから前記第1入力データを抽出し、かつ前記第1暗号演算部により前記第1入力データが暗号演算されたデータである第1出力データを前記第1ストリームに組み込む第1解析回路と、
第2ストリームから前記第2入力データを抽出し、かつ前記第1暗号演算部により前記第2入力データが暗号演算されたデータである第2出力データを前記第2ストリームに組み込む第2解析回路とを備え、
前記第1暗号演算部は、前記第1レジスタに保持される前記第1情報を用いて、前記第1解析回路により抽出された前記第1入力データの暗号演算を行い、かつ前記第2レジスタに保持される前記第2情報を用いて、前記第2解析回路により抽出された前記第2入力データの暗号演算を行う
ことを特徴とする請求項1、2又は3記載の機密情報処理装置。
【請求項5】
前記第2入力データは、前記第1入力データが前記第1暗号演算部により暗号演算されたデータであり、
前記第1調停回路は、前記第1暗号演算部に、前記第1レジスタに保持される前記第1情報を用いた前記第1入力データの暗号演算を行わせた後に、前記第1暗号演算部に、前記第2レジスタに保持される前記第2情報を用いた前記第2入力データの暗号演算を行わせる
ことを特徴とする請求項1、2又は3記載の機密情報処理装置。
【請求項6】
前記機密情報処理装置は、さらに、
第1ストリームから前記第1入力データを抽出し、かつ前記第1暗号演算部により前記第1入力データが暗号演算されたデータである第1出力データを前記第1ストリームに組み込む第1解析回路と、
前記第1解析回路により前記第1出力データが組み込まれた前記第1ストリームから前記第2入力データを抽出し、かつ前記第1暗号演算部により前記第2入力データが暗号演算されたデータである第2出力データを前記第1ストリームに組み込む第2解析回路とを備える
ことを特徴とする請求項5記載の機密情報処理装置。
【請求項7】
前記第1調停回路は、前記第1暗号演算回路に対する暗号演算の要求と、前記第1擬似暗号演算回路に対する暗号演算の要求とを受信した場合、前記第1暗号演算部に、前記第2レジスタに保持される前記第2情報を用いた前記第2入力データの暗号演算を行わせる
ことを特徴とする請求項5又は6記載の機密情報処理装置。
【請求項8】
前記機密情報処理装置は、さらに、第3入力データに暗号演算を行い、
前記機密情報処理装置は、さらに、
第2暗号演算回路を備え、
前記第2暗号演算回路は、
前記第3データの暗号演算に必要となる第3情報を保持する第3レジスタと、
前記第1暗号演算部による暗号演算と異なるアルゴリズムの暗号演算を行う第2暗号演算部とを備え、
前記機密情報処理装置は、さらに、
前記第1暗号演算回路、前記第1擬似暗号演算回路及び前記第2暗号演算回路に対する暗号演算の要求を調停し、かつ前記第1暗号演算回路及び前記第1擬似暗号演算回路に対する暗号演算の要求を前記第1調停回路に送信する第2調停回路を備え、
前記第1調停回路は、前記第1暗号演算回路に対する前記第1入力データに対する暗号演算の要求が前記第2調停回路から送信された場合に、前記第1暗号演算部に、前記第1レジスタに保持される前記第1情報を用いた前記第1入力データの暗号演算を行わせ、前記第1擬似暗号演算回路に対する前記第2入力データに対する暗号演算の要求が前記第2調停回路から送信された場合に、前記第1暗号演算部に、前記第2レジスタに保持される前記第2情報を用いた前記第2入力データの暗号演算を行わせる
ことを特徴とする請求項1〜7のいずれか1項に記載の機密情報処理装置。
【請求項9】
前記機密情報処理装置は、さらに、第4入力データに暗号演算を行い、
前記機密情報処理装置は、さらに、
第2擬似暗号演算回路と、
前記第2暗号演算回路及び前記第2擬似暗号演算回路に対する暗号演算の要求を調停する第3調停回路とを備え、
前記第2擬似暗号演算回路は、
前記第4データの暗号演算に必要となる第4情報を保持する第4レジスタを備え、
前記第3調停回路は、前記第2暗号演算回路に対して前記第3データに対する暗号演算の要求があった場合に、前記第2暗号演算部に、前記第3レジスタに保持される前記第3情報を用いた前記第3データの暗号演算を行わせ、前記第2擬似暗号演算回路に対して前記第4データに対する暗号演算の要求があった場合に、前記第2暗号演算部に、前記第4レジスタに保持される前記第4情報を用いた前記第4データの暗号演算を行わせる
ことを特徴とする請求項8記載の機密情報処理装置。
【請求項10】
前記暗号演算は、秘密鍵暗号アルゴリズムによる暗号演算である
ことを特徴とする請求項1〜9のいずれか1項に記載の機密情報処理装置。
【請求項11】
外部機器から送信される第1入力データ及び第2入力データを受信する受信部と、
前記第1入力データと、前記第2入力データとに暗号演算を行う請求項1〜10のいずれか1項に記載の機密情報処理装置と、
前記第1暗号演算部により前記第1入力データが暗号演算されたデータである第1出力データ、及び前記第1暗号演算部により前記第2入力データが暗号演算されたデータである第2出力データを表示する表示部とを備える
ことを特徴とする機密情報処理機器。
【請求項12】
請求項1〜10のいずれか1項に記載の機密情報処理装置と、
前記第1暗号演算部により前記第1入力データが暗号演算されたデータである第1出力データ、及び前記第1暗号演算部により前記第2入力データが暗号演算されたデータである第2出力データを外部機器に送信する送信部とを備える
ことを特徴とする機密情報処理機器。
【請求項13】
第1入力データと、第2入力データとに暗号演算を行う機密情報処理装置における機密情報処理方法であって、
前記機密情報処理装置は、
第1暗号演算回路と、
第1擬似暗号演算回路と、
前記第1暗号演算回路及び前記第1擬似暗号演算回路に対する暗号演算の要求を調停する第1調停回路とを備え、
前記第1暗号演算回路は、
前記第1入力データの暗号演算に必要となる第1情報を保持する第1レジスタと、
暗号演算を行う第1暗号演算部とを備え、
前記第1擬似暗号演算回路は、
前記第2入力データの暗号演算に必要となる第2情報を保持する第2レジスタを備え、
前記機密情報処理装置は、さらに、
前記第1情報及び前記第2情報を保持する第1記憶部と、
前記第1記憶部に保持される前記第1情報及び前記第2情報を前記第1レジスタ及び前記第2レジスタに書き込み、かつ前記第1レジスタ及び前記第2レジスタに保持される前記第1情報及び前記第2情報を前記第1記憶部に退避させる制御回路とを備え、
前記第1調停回路が、前記第1暗号演算回路に対して前記第1入力データに対する暗号演算の要求があった場合に、前記第1暗号演算部に、前記第1レジスタに保持される前記第1情報を用いた前記第1入力データの暗号演算を行わせ、前記第1擬似暗号演算回路に対して前記第2入力データに対する暗号演算の要求があった場合に、前記第1暗号演算部に、前記第2レジスタに保持される前記第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

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2009−44677(P2009−44677A)
【公開日】平成21年2月26日(2009.2.26)
【国際特許分類】
【出願番号】特願2007−210235(P2007−210235)
【出願日】平成19年8月10日(2007.8.10)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】