以下、本発明に係る機密情報処理装置の実施の形態について、図面を参照しながら詳細に説明する。
まず、本発明の実施の形態に係る機密情報処理装置を備える機密情報処理機器の構成を説明する。
図1は、本発明の実施の形態に係る機密情報処理装置を備える機密情報処理機器の外観の一例を示す図である。図1に示すように、機密情報処理機器100は、例えば、携帯電話機器である。
図2は、機密情報処理機器100の構成を示すブロック図である。図2に示す機密情報処理機器100は、1つのストリームに含まれる異なる対象データに対する複数回の暗号演算を行える。また、機密情報処理機器100は、輻輳する複数のストリームに対して暗号演算を行える。機密情報処理機器100は、アンテナ101と、受信部102と、送信部103と、表示部104と、記憶部105と、機密情報処理装置200とを備える。
アンテナ101は、送信又は受信に用いられるアンテナである。
受信部102は、外部機器から送信された動画像ストリーム又は音声ストリーム等のストリームを、アンテナ101を用いて受信する。
記憶部105は、受信部102により受信されたストリームを記憶する。また、記憶部105は、機密情報処理機器100により生成された動画像データ等を記憶する。例えば、記憶部105は、機密情報処理機器100が有するカメラ(図示せず)により撮影された動画像データを記憶する。例えば、記憶部105は、RAM、ハードディスク又は不揮発性メモリ等である。
機密情報処理装置200は、本発明の実施の形態に係る機密情報処理装置である。機密情報処理装置200は、受信部102により受信されたストリームに含まれる暗号化されたデータを復号化する。また、機密情報処理装置200は、受信部102により受信されたストリームに含まれる平文データ、及び記憶部105に保持される動画像データ等を暗号化する。
送信部103は、機密情報処理装置200により暗号化されたストリームを、アンテナ101を用いて外部機器に送信する。
表示部104は、機密情報処理装置200により復号化されたストリームを再生し表示する。
なお、機密情報処理装置200は、記録メディア(SDメモリ等)に記録されるデータに対して暗号演算を行ってもよい。また、機密情報処理装置200は、ネットワークを介して接続された外部機器との間で送信及び受信されるデータに対して暗号演算を行ってもよい。
また、受信部102及び送信部103の機能は、専用の回路により実現されてもよいし、CPU等がプログラムを実行することにより実現されてもよい。
次に機密情報処理装置200の構成を説明する。
図3は、本発明の実施の形態に係る機密情報処理装置200の構成を示すブロック図である。
機密情報処理装置200は、1つのストリームに含まれる異なる対象データに対する2回の暗号演算を行える。また、機密情報処理装置200は、輻輳する2つのストリームに対して暗号演算を行える。機密情報処理装置200は、コンテキスト制御部210と、コンテキスト格納部211と、ストリーム制御部220及び221と、ストリーム解析部230、231、232及び233と、調停部240と、AES演算部250と、DES演算部251と、SHA1演算部252とを備える。
コンテキスト格納部211は、コンテキスト対応テーブル212と、コンテキスト格納テーブル213とを格納する。コンテキスト格納部211は、例えば、RAMにより構成される。なお、コンテキスト格納部211は、ハードディスク又は不揮発性メモリ等により構成されてもよい。
コンテキスト対応テーブル212は、ストリームの種別と、当該ストリームに対して暗号演算を行う回数と、当該暗号演算のそれぞれに対応するコンテキストの種別との対応を示すテーブルである。ここで、コンテキストとは、暗号演算に必要となる情報である。
コンテキスト格納テーブル213には、ストリームの暗号演算に必要となる情報がコンテキストとして格納される。すなわち、コンテキスト格納部211は、複数のコンテキストを格納する。コンテキスト格納テーブル213に含まれる複数のコンテキストは、それぞれコンテキストの種別(コンテキストID)と、コンテキストの種別にそれぞれ対応する暗号演算に必要となる情報とを含む。具体的には、コンテキストは、暗号演算に用いられる鍵、初期値及び暗号演算途中の中間情報(CBCモード演算における前ブロックの演算結果等)等を含む。また、コンテキストは、ストリームに含まれるデータのうち暗号演算を行う領域を示す情報を含む。
なお、コンテキスト格納部211に格納されるコンテキスト対応テーブル212及びコンテキスト格納テーブル213は、暗号演算を行うストリームの入力前に、外部装置202により設定される。
ストリーム制御部220は、外部装置201により入力されたストリーム(以下、「入力ストリーム」と呼ぶ。)を、ストリーム解析部230又は231に出力する。また、ストリーム制御部220は、ストリーム解析部230又は231により出力された暗号演算されたストリーム(以下、「出力ストリーム」と呼ぶ。)を、コンテキスト対応テーブル212に応じて、外部装置201又は他のストリーム解析部230又は231に出力する。
また、ストリーム制御部220は、外部装置201から入出力される入力ストリームの属性を識別する。ストリーム制御部220は、識別結果であるストリームIDと、コンテキスト対応テーブル212とに基づき、外部装置201と、ストリーム解析部230と、ストリーム解析部231との間のデータパスを構成及び制御する。
図4は、コンテキスト対応テーブル212の構成の一例を示す図である。
コンテキスト対応テーブル212には、入力ストリームに対する演算方法と演算の順番とに関する情報が格納される。図4に示すように、コンテキスト対応テーブル212は、ストリーム識別子(ストリームID)に対して、実行する暗号演算のコンテキストの識別子(コンテキストID)が記載されたテーブルである。コンテキスト対応テーブル212において、ストリームIDごとに、1回目の暗号演算に対応するコンテキストIDと、2回目の暗号演算に対応するコンテキストIDとが記載される。
ストリーム制御部220は、コンテキスト対応テーブル212において、入力ストリームのストリームIDに対して2段目のコンテキストIDが指定されている場合、入力ストリームに対して連続した2回の暗号演算を行うと判定し、2段目のコンテキストIDが指定されていない場合、入力ストリームに対して1回の暗号演算のみを行う。例えば、図4に示す例では、ストリームID「2」のストリームに対しては、コンテキストID「2」を用いた暗号演算が行われ、コンテキストID「2」を用いた暗号演算が行われた後のストリームに対して、コンテキストID「3」を用いた暗号演算が行われる。また、ストリームID「0」のストリームに対しては、コンテキストID「0」に対応する暗号演算のみが行われ、2回目の暗号演算は行われない。
例えば、コンテキスト対応テーブル212の内容は、ストリームの入力前に予め外部装置202から設定される。
図5は、ストリーム制御部220の構成を示す図である。
ストリーム制御部220は、セレクタ301と、バッファ302とを備える。セレクタ301は、ストリーム解析部230又は231により出力された出力ストリームを選択し外部装置201に出力する。バッファ302は、ストリーム解析部230により出力された出力ストリームを保持し、かつ保持する出力ストリームをストリーム解析部231に出力する。また、ストリーム制御部220は、外部装置201により入力された入力ストリームをストリーム解析部230に出力する。
具体的には、入力ストリームに対して1回の暗号演算を行う場合、セレクタ301は、ストリーム解析部230により出力される出力ストリームを判別し、外部装置201に出力する。入力ストリームに対して2回の暗号演算を行う場合、セレクタ301は、ストリーム解析部231により出力される出力ストリームを選択し、外部装置201に出力する。
すなわち、外部装置201により入力された入力ストリームに対して1回の暗号演算を行う場合、ストリーム制御部220は、外部装置201により入力される入力ストリームをストリーム解析部230に出力し、かつストリーム解析部230により出力される出力ストリームを外部装置201に出力する。
また、外部装置201により入力された入力ストリームに対して2回の暗号演算を行う場合、ストリーム制御部220は、外部装置201により入力された入力ストリームをストリーム解析部230に出力し、かつストリーム解析部231により出力される2回の暗号演算が行われたストリームを外部装置201に出力する。さらに、ストリーム制御部220は、ストリーム解析部230により出力される1回の暗号演算が行われたストリームをバッファ302に保持し、バッファ302は保持するストリームをストリーム解析部231に出力する。
ここで、外部装置202は、例えば、機密情報処理機器100が備えるCPUである。また、外部装置201は、例えば、機密情報処理機器100が備えるCPU、DMAコントローラ又はDSP(Digital Signal Processor)である。
外部装置201及び202は、コンテキスト制御部210を介して、コンテキスト格納部211に格納されるコンテキスト対応テーブル212及びコンテキスト格納テーブル213を書き換えることができる。また、外部装置201及び202は、コンテキスト制御部210を介して、コンテキスト対応テーブル212及びコンテキスト格納テーブル213を読み出すことができる。なお、機密情報処理装置200が、外部装置201及び202を備えてもよい。
ストリーム制御部221は、外部装置202により入力された入力ストリームをストリーム解析部232又は233に出力する。また、ストリーム制御部221は、ストリーム解析部232又は233により出力された暗号演算された出力ストリームを外部装置202又は他のストリーム解析部232又は233に出力する。
なお、ストリーム制御部221の構成及び詳細な動作は、ストリーム制御部220と同様であり説明は省略する。
ストリーム解析部230及び231は、コンテキスト格納テーブル213に含まれるストリームに対応するコンテキストに従い、ストリーム制御部220により出力された入力ストリームから暗号演算の対象となる対象データを判別する。ストリーム解析部230及び231は、対象データを特定するための情報と、入力ストリームとを調停部240に出力する。
具体的には、ストリーム解析部230及び231は、入力ストリームに対応する1組のコンテキストを保持する。ストリーム解析部230及び231は、保持するコンテキストに含まれる暗号演算を行う領域を示す情報に示される領域のデータを対象データとして判別する。また、ストリーム解析部230及び231は、調停部240から出力される出力ストリームをストリーム制御部220に出力する。
ストリーム解析部232及び233は、コンテキスト格納テーブル213に含まれるストリームに対応するコンテキストに従い、ストリーム制御部221により出力された入力ストリームから暗号演算の対象となる対象データを判別する。ストリーム解析部232及び233は、対象データを特定するための情報と、入力ストリームとを調停部240に出力する。
具体的には、ストリーム解析部232及び233は、入力ストリームに対応する1組のコンテキストを保持する。ストリーム解析部232及び233は、保持するコンテキストに含まれる暗号演算を行う領域を示す情報に示される領域のデータを対象データとして判別する。また、ストリーム解析部232及び233は、調停部240から出力される出力ストリームをストリーム制御部221に出力する。
調停部240は、ストリーム解析部230、231、232及び233により出力された入力ストリームを調停する。具体的には、調停部240は、同時に複数のストリーム解析部230、231、232及び233から同一の暗号アルゴリズムで処理すべき入力ストリームが入力された場合に、どのストリーム解析部230、231、232及び233からの入力ストリームを処理するかを決定する。つまり、調停部240は、適切な調停順位に基づき、入力ストリームを順番に処理する。例えば、調停部240は、ストリーム解析部230、231、232及び233に設定された優先順位に従い処理する入力リクエストを決定する。なお、調停部240は、ラウンドロビン方式など他のアルゴリズムを用いて、処理する入力リクエストを決定してもよい。
また、調停部240は、ストリーム解析部230、231、232及び233から出力された入力ストリームを受信した場合、コンテキスト格納テーブルに従い、処理する暗号アルゴリズムを決定する。調停部240は、決定した暗号アルゴリズムに対応した演算部250、251又は252へ入力ストリームと、対象データを特定するための情報とを出力する。
また、調停部240は、演算部250、251又は252からの出力ストリームを、入力ストリームの出力元のストリーム解析部230、231、232又は233に出力する。
AES演算部250は、調停部240から入力された入力ストリームに含まれる演算対象部分である対象データに対して秘密鍵暗号アルゴリズムAES(Advanced Encryption Standard)を用いた暗号演算を行う。
DES演算部251は、調停部240から入力された入力ストリームに含まれる演算対象部分である対象データに対して秘密鍵暗号アルゴリズム秘密鍵暗号アルゴリズムDES(Data Encryption Standard)を用いた暗号演算を行う。
すなわち、AES演算部250及びDES演算部251は、調停部240により出力された対象データを特定する情報に基づき、ストリーム解析部230、231、232又は233により判別された対象データに暗号演算を行う。
具体的には、AES演算部250、及びDES演算部251は、ECB(Electronic Codebook)モード及びCBC(Cipher Block Chain)モード等の機密モード演算を対象データに行うことで、対象データを暗号化又は復号化する。
また、AES演算部250、及びDES演算部251は、CBC−MAC(Message Authentication Code)モード及びCMAC(Cipher−based Message Authentication Code)モード等の認証モードの演算を対象データに行うことで、メッセージ認証子(MAC値)を生成する。
また、AES演算部250、及びDES演算部251は、CCM(Counter−mode with CBC−MAC)モードやGCM(Galois/Counter Mode)等の認証付機密モードの演算を対象データに行うことで、対象データを暗号化又は復号化し、かつMAC値を生成する。
AES演算部250、及びDES演算部251は、機密モード演算を実施する場合、調停部240から入力された入力ストリームに対して、演算対象外部以外は入力されたデータをそのままとし、演算対象部分を機密モード演算の演算結果に置き換えた出力ストリームを、調停部240に出力する。
また、AES演算部250、及びDES演算部251は、認証モードを実施する場合、調停部240から入力された入力ストリームをそのまま出力ストリームとして調停部240に出力する。また、AES演算部250、及びDES演算部251は、演算対象部分に対して認証モードを適用した演算結果であるMAC値を、コンテキストとしてコンテキスト制御部210に出力する。
また、AES演算部250、及びDES演算部251は、認証付機密モードを実施する場合、調停部240から入力された入力ストリームを、演算対象外部分は入力されたデータをそのままとし、演算対象部分を認証付機密モードに含まれる機密モードの演算結果に置き換えた出力ストリームを、調停部240に出力する。さらに、AES演算部250、及びDES演算部251は、認証付機密モードに含まれる認証モードの演算結果であるMAC値を、コンテキストとしてコンテキスト制御部210に出力する。
また、AES演算部250、及びDES演算部251は、コンテキスト格納テーブル213の設定に応じて、調停部240から入力された入力ストリームのうち指定された箇所をMAC値に置き換え、出力ストリームとして調停部240に出力する。
また、AES演算部250、及びDES演算部251は、コンテキスト格納テーブル213の設定に応じて、調停部240から入力された入力ストリームのうち指定された箇所とMAC値とを比較する。
SHA1演算部252は、調停部240から入力された入力ストリームのうち演算対象部分に対して、ハッシュアルゴリズムSHA(Secure Hash Algorithm)を用いた演算を実行する。
具体的には、SHA1演算部252は、通常のハッシュ演算及びHMAC(Keyed−Hashing for Message Authentication Code)モード等の演算を実施することで、ハッシュ値及びMAC値を生成する。
SHA1演算部252は、通常のハッシュ演算又はHMACモード等の演算を実施する場合、調停部240から入力された入力ストリームをそのまま調停部240に出力する。また、SHA1演算部252は、演算対象部分に対する通常のハッシュ演算又はHMACモード等の演算結果であるハッシュ値又はMAC値を、コンテキストとしてコンテキスト制御部210に出力する。
また、SHA1演算部252は、コンテキスト格納テーブル213の設定に応じて、調停部240から入力された入力ストリームのうち指定された箇所をハッシュ値又はMAC値に置き換え、出力ストリームとして調停部240に出力する。
また、SHA1演算部252は、コンテキスト格納テーブル213の設定に応じて、調停部240から入力された入力ストリームのうち指定された箇所と、ハッシュ値又はMAC値とを比較する。
以上のように、AES演算部250及びDES演算部251は、認証モード及び認証付機密モードにおいても、機密モードと同様に入力ストリームと同じ長さの出力ストリームを出力する。また、SHA1演算部252は、入力ストリームと同じ長さの出力ストリームを出力する。よって、秘密鍵暗号アルゴリズム及びハッシュアルゴリズムのアルゴリズム及びモードに関係なくストリームの入出力方法を同一にすることが可能となる。これにより、本発明の実施の形態に係る機密情報処理装置200は、入力ストリームに対して複数回の演算を容易な制御で行うことができる。
また、AES演算部250、DES演算部251及びSHA1演算部252は、それぞれ1組のコンテキスト260、261及び262を保持する。AES演算部250、DES演算部251及びSHA1演算部252は、それぞれ保持するコンテキスト260、261及び262を用いて暗号演算を行う。
コンテキスト制御部210は、演算部250、251及び252が入力ストリームに対応するコンテキストを保持していない場合に、演算部250、251及び252に保持されるコンテキスト260、261、262をコンテキスト格納部211に退避させ、かつコンテキスト格納部211に格納される複数のコンテキストのうち演算部250、251及び252による暗号演算に用いられるコンテキストを演算部250、251及び252に書き込むことで復帰させる。
また、コンテキスト制御部210は、ストリーム解析部230、231、232及び233が入力ストリームに対応するコンテキストを保持していない場合に、ストリーム解析部230、231、232及び233に保持されるコンテキストをコンテキスト格納部211に退避させ、かつコンテキスト格納部211に格納される複数のコンテキストのうち入力ストリームに対応するコンテキストをストリーム解析部230、231、232及び233に書き込む。
また、コンテキスト制御部210と、ストリーム制御部220及び221と、ストリーム解析部230、231、232及び233と、調停部240と、AES演算部250と、DES演算部251と、SHA1演算部252とは、専用の回路(ハードウェア)により構成される。
図6は、コンテキスト格納テーブル213の構成の一例を示す図である。
コンテキスト格納テーブル213には、複数のコンテキストが保存され、コンテキストIDを用いてそれぞれのコンテキストが区別される。
コンテキスト格納テーブル213に含まれる各コンテキストは、コンテキストIDと、アルゴリズムと、モードと、ヘッダ長と、ペイロード長と、フッタ長と、端数出力フラグと、ペイロード連続回数と、ストリーム非出力フラグと、ハッシュ値置換位置と、ハッシュ値比較位置と、鍵及び初期値と、中間情報と、ハッシュ値とを含む。
コンテキストに含まれるアルゴリズムは、入力ストリームに対する暗号演算に用いられる暗号アルゴリズムである。コンテキストに含まれるモードは、入力ストリームに対する暗号演算の暗号モードである。例えば、コンテキスト格納テーブル213において、コンテキストID「0」では、入力ストリームに対して秘密鍵暗号アルゴリズムAESを用いてCBCモードで復号化することが示されている。
また、コンテキストに含まれるアルゴリズムはそれぞれ、機密情報処理装置200が備える複数の演算部250、251及び252に対応する。図6に示す例では、アルゴリズム「AES」、「DES」及び「SHA1」は、それぞれAES演算部250、DES演算部251及びSHA1演算部252に対応する。
調停部240は、コンテキストに含まれるアルゴリズムに対応する演算部250、251又は252にストリーム解析部230、231、232又は233から出力された入力ストリームを出力する。
また、複数の演算部250、251及び252は、コンテキストに含まれるモードに応じた暗号演算を入力ストリームに対して実行する。
入力ストリームは先頭から順に、暗号演算の対象外データであるヘッダと、暗号演算の対象データであるペイロードと、暗号演算の対象外データであるフッタとを含む。
コンテキストに含まれるヘッダ長、ペイロード長及びフッタ長は、それぞれ入力ストリームに含まれるヘッダ、ペイロード及びフッタの長さである。また、コンテキストに含まれるヘッダ長、ペイロード長及びフッタ長は、ストリームに含まれるデータのうち暗号演算を行う領域を示す情報である。
ここで、ストリーム解析部230、231、232及び233に保持されるコンテキストは、コンテキスト格納テーブル213に含まれる情報のうち、コンテキストID、ヘッダ長、ペイロード長及びフッタ長である。
ストリーム解析部230、231、232及び233は、保持するコンテキストに含まれるヘッダ長、ペイロード長及びフッタ長を用いて、ヘッダ、ペイロード及びフッタの順にストリームを分割し、かつペイロードを対象データと判別する。ここで、ストリーム解析部230、231、232及び233が参照するコンテキストは、コンテキスト対応テーブル212において入力ストリームのストリームIDに対応するコンテキストIDを有するコンテキストである。
なお、ストリーム長がヘッダ長と、ペイロード長と、フッタ長との合計より長い場合は、ストリーム解析部230、231、232及び233は、長い部分に対して、再度、ヘッダ、ペイロード及びフッタの順にストリームを分割しペイロードを判別する。
例えば、入力ストリームのストリーム長が512バイトであり、かつ当該入力ストリームの演算に用いられるコンテキストに、ヘッダ長が32バイト、ペイロード長が128バイト、及びフッタ長が96バイトと設定されている場合、ストリーム解析部230、231、232及び233は、入力ストリームの先頭から32バイトをヘッダ、その次の128バイトをペイロード、その次の96バイトをフッタ、その次の32バイトをヘッダ、その次の128バイトをペイロード、その次の96バイトをフッタと判定する。
コンテキストに含まれる端数出力フラグは、外部装置201及び202からのストリームの入力がストリームの途中で中断し、かつ中断前に入力されたペイロード長が、適用する暗号アルゴリズムの演算単位の整数倍でない場合、入力末尾に存在する演算単位に満たないペイロードである端数ペイロード(端数データ)の処理方法を規定するフラグである。
演算部250、251及び252は、コンテキストに含まれる端数出力フラグに基づき、端数ペイロードを外部装置201及び202、又はコンテキスト格納部211に出力する。
端数出力フラグがONの場合、演算部250、251及び252は、演算単位に満たないため暗号演算が行われていないペイロードを、調停部240と、ストリーム解析部230、231、232又は233と、ストリーム制御部220又は221とを介して外部装置201又は202に出力する。この場合、処理を再開するためには、外部装置201及び202は、ストリームの続きを入力する際に、ストリームの先頭に、一旦出力された端数ペイロードを結合した上で機密情報処理装置200に入力する必要がある。
端数出力フラグがOFFの場合、演算部250、251及び252は、端数データをコンテキスト格納部211に出力する。演算部250、251及び252により出力された端数ペイロードは、コンテキスト制御部210を介して、コンテキスト格納部211に退避される。コンテキスト格納部211は、端数ペイロードをコンテキストに含まれる中間情報として格納する。
外部装置201又は202から後続のストリームが入力された場合、演算部250、251及び252は、コンテキスト制御部210を介してコンテキスト格納部211に格納される端数データを読み出す。演算部250、251及び252は、後続のストリームに対する暗号演算の際に、端数ペイロードを含むデータの暗号演算を行う。
このように、端数出力フラグがOFFの場合には、演算部250、251及び252は、端数データを後続のストリームのペイロードの先頭に結合し、暗号演算を行う。つまり、機密情報処理装置200内で自動的に端数ペイロードの処理が行われる。これにより、外部装置201及び202は、ストリームの先頭に一旦出力された端数ペイロードを結合する等の処理を行う必要がない。つまり、機密情報処理装置200を用いることで、外部装置201及び202の処理量を削減することができる。すなわち、本発明の実施の形態に係る機密情報処理装置200は、容易なソフトウェア制御で、端数データの処理を行うことができる。
通常、秘密鍵暗号演算及びハッシュ演算においては、各ペイロードが連続演算の単位として扱われる。例えば、秘密鍵暗号演算であればペイロード毎にCBCモード等の演算が実施される。また、ハッシュ演算であればペイロード毎にハッシュ値が求められる。しかしながら、ヘッダ及びフッタで分割され離散的に存在する複数のペイロードを、1つの長いペイロードとして捉えて演算する場合もある。
コンテキストに含まれるペイロード連続回数は、離散的に存在する複数のペイロードを、1つの長いペイロードとして捉えて演算するためのものである。ペイロード連続回数は、ストリーム中の離れた領域のデータを一つのデータとして暗号演算するか否かを示す情報である。例えば、ペイロード連続回数が2以上の場合、2以上のペイロードを1つの長いペイロードとして暗号演算される。また、ペイロード連続回数は、何個のペイロードを1つのペイロードとして暗号演算するかを示す情報である。
演算部250、251及び252は、ペイロード連続回数が2以上の場合、ストリーム中の離れた領域のデータを一つのデータとして暗号演算する。また、演算部250、251及び252は、ペイロード連続回数に示される数の領域のデータを一つのデータとして暗号演算する。
つまり、演算部250、251及び252は、入力ストリームの先頭から、ペイロード連続回数に指定された回数ずつ、複数のペイロードを暗号演算の単位として暗号演算を行う。
例えば、入力ストリームのストリーム長が2024バイトであり、かつ当該入力ストリームの演算に用いられるコンテキストに、ヘッダ長が32バイト、ペイロード長が128バイト、フッタ長が96バイト、及びペイロード連続回数が2回と設定されている場合、演算部250、251及び252は、入力ストリームの先頭から33バイト目から128バイト分のデータと、先頭から289バイト目から128バイト分のデータとの合計256バイトを1つのデータとして暗号演算を実施する。さらに、演算部250、251及び252は、ストリームの先頭から545バイト目から128バイト分のデータと、先頭から801バイト目から128バイト分のデータとの合計256バイトに対して暗号演算を実施する。
コンテキストに含まれるストリーム非出力フラグは、出力ストリームを外部装置201及び202に出力しないことを設定するためのフラグである。ストリーム非出力フラグがOFFの場合、ストリーム制御部220及び221は、出力ストリームを外部装置201、202へ出力する。ストリーム非出力フラグがONの場合、ストリーム制御部220及び221は、出力ストリームを外部装置201、202へ出力しない。例えば、ストリームに対してハッシュ演算のみを行う場合等にストリーム非出力フラグがONに設定される。
コンテキストに含まれるハッシュ値置換位置は、入力ストリームに含まれるデータの所定の位置を示す情報である。演算部250、251及び252は、ストリームに対応するハッシュ値置換位置に示される所定の位置のデータをハッシュ値又はMAC値に置き換える。
具体的には、AES演算部250及びDES演算部251は、入力ストリームに対して認証モード及び認証付機密モードを実行する場合、ハッシュ値置換位置に示される入力ストリームの所定の位置のデータを演算結果であるMAC値に置き換え、出力ストリームとして調停部240に出力する。
また、SHA1演算部252は、入力ストリームに対してハッシュ演算を実行する場合、ハッシュ値置換位置に示される入力ストリームの所定の位置のデータを演算結果であるハッシュ値又はMAC値に置き換え、出力ストリームとして調停部240に出力する。
例えば、アルゴリズムがSHA1、ハッシュ値置換位置が200を示す場合、SHA1演算部252は、ストリームの先頭から200バイト目から20バイト分のデータをSHA1の演算結果であるハッシュ値に置き換える。なお、ハッシュ値置換位置が0を示す場合は、演算部250、251及び252は、ハッシュ値又はMAC値の置き換えを行わず、ハッシュ値又はMAC値をコンテキスト制御部210に出力する。コンテキスト制御部210は、演算部250、251及び252により出力されたハッシュ値及びMAC値をコンテキストとして格納する。
例えば、入力ストリームに対してSHA1を用いたハッシュ演算を行う場合、ストリーム非出力フラグをONに設定し、ハッシュ値置換位置を0に設定することで、機密情報処理装置200は、演算結果であるハッシュ値をコンテキスト格納部211に格納し、かつ入力ストリーム(出力ストリーム)を外部装置201及び202に出力しない。
コンテキストに含まれるハッシュ値比較位置は、入力ストリームに含まれるデータの所定の位置を示す情報である。演算部250、251及び252は、入力ストリームに対応するハッシュ値比較位置に示される所定の位置のデータと、演算結果であるハッシュ値又はMAC値とが一致するか否かを判定する。また、演算部250、251及び252による判定結果は、外部装置201及び202に出力される。
具体的には、AES演算部250及びDES演算部251は、入力ストリームに対して認証モード及び認証付機密モードを実行する場合、ハッシュ値比較位置に示される入力ストリームの所定の位置のデータと、演算結果であるMAC値とを比較し、比較結果を外部装置201又は202に出力する。
また、SHA1演算部252は、入力ストリームに対してハッシュ演算を実行する場合、ハッシュ値比較位置に示される入力ストリームの所定の位置のデータと、演算結果であるハッシュ値又はMAC値とを比較し、比較結果を外部装置201又は202に出力する。
例えば、アルゴリズムにSHA1、ヘッダ長に0、ペイロード長に200、フッタ長に50、及びハッシュ値比較位置に200が設定される場合、SHA1演算部252は、ペイロード部分の200バイトに対するSHA1による演算結果であるハッシュ値と、ストリームの先頭から200バイト目からSHA1のハッシュ値の長さである20バイト分のデータとを比較する。これにより、機密情報処理装置200は、ストリーム中にハッシュ値の期待値が含まれている場合に、演算と同時に改竄検出を行える。なお、ハッシュ値比較位置が0である場合は、演算部250、251及び252は比較を行わない。
コンテキストに含まれる鍵及び初期値は、アルゴリズム及びモードに応じて必要となる鍵及び初期値である。コンテキストに含まれる鍵及び初期値は、アルゴリズム及びモードに応じて適宜設定される。
コンテキストに含まれる中間情報は、演算の途中結果、演算単位に満たないペイロード(端数ペイロード)、及び各種内部状態等である。
コンテキストに含まれるハッシュ値は、演算部250、251及び252により生成されたハッシュ値又はMAC値である。
コンテキスト格納テーブル213の内容は、中間情報及びハッシュ値を除き、入力ストリームの入力前に予め外部装置202から設定される。
なお、コンテキスト格納テーブル213において、「・・・」で示す鍵、初期値、中間値及びハッシュ値は演算に応じて適切な値が格納されているものとする。
また、演算部250、251及び252に保持されるコンテキスト260、261及び262は、コンテキスト格納テーブル213に含まれるコンテキストのうち、モードと、端数出力フラグと、ペイロード連続回数と、ハッシュ値置換位置と、ハッシュ値比較位置と、鍵及び初期値と、中間情報と、ハッシュ値とを含む。
次に、機密情報処理装置200の動作を説明する。
図7は、機密情報処理装置200による暗号演算処理の流れを示すフローチャートである。なお、外部装置201から機密情報処理装置200にストリームが入力される場合を例に説明する。
図7に示すように、まず、ストリーム制御部220は、入力されたストリーム(以下、「第1ストリーム」と呼ぶ。)の識別を行う(S101)。具体的には、ストリーム制御部220は、第1ストリームのストリームIDを取得する。例えば、ストリーム制御部220は、第1ストリームに含まれるストリームIDを参照することで、ストリームIDを取得する。ストリーム制御部220は、コンテキスト対応テーブル212を参照し、第1ストリームのストリームIDに対する暗号演算の実施回数と、それぞれの暗号演算で使用するコンテキストIDとを判定する。その後、ストリーム制御部220は、第1ストリームを、ストリーム解析部230に出力する。
また、ストリーム制御部220は、ストリーム解析部230が、第1ストリームに対応するコンテキストを保持していない場合には、コンテキスト制御部210にコンテキストの退避及び復帰の要求を送信する。ストリーム制御部220からの要求を受信したコンテキスト制御部210は、ストリーム解析部230に保持されるコンテキストをコンテキスト格納部211に退避させ、かつコンテキスト格納部211に格納されるコンテキストのうち第1ストリームに対応するコンテキストをストリーム解析部230に復帰させる。例えば、ストリーム制御部220は、ストリーム解析部230に保持されるコンテキストに含まれるコンテキストIDと、判定した第1ストリームに対応するコンテキストIDとが一致しない場合に、コンテキストの退避及び復帰の要求を送信する。また、コンテキスト制御部210は、退避及び復帰の要求に含まれるコンテキストIDを参照することで、ストリーム解析部230に書き込むコンテキストを決定する。
次に、ストリーム解析部230は、保持するコンテキストを参照し、1回目の暗号演算に用いられるコンテキストに含まれるヘッダ長、ペイロード長及びフッタ長を用いて、第1ストリームからペイロードを対象データ(以下、「第1対象データ」と呼ぶ。)と判別する(S102)。次に、ストリーム解析部230は、第1ストリームを調停部240に出力する。
次に、調停部240は、コンテキスト格納テーブル213を参照し、第1ストリームに対する暗号演算の暗号アルゴリズムを判定する(S103)。調停部240は、判定した暗号アルゴリズムに対応する演算部250、251又は252に第1ストリームを出力する。ここでは、AES演算部250に第1ストリームが出力されるとする。
また、調停部240は、同時に複数のストリーム解析部230、231、232及び233から同一の演算部250、251又は252で処理すべき入力ストリームが入力された場合に、どの入力ストリームを処理するかを決定する。
調停部240は、AES演算部250に保持されるコンテキスト260の切換えが必要であるか否かを判定する(S104)。具体的には、調停部240は、第1ストリームの暗号演算に用いられるコンテキストを、AES演算部250が保持しているか否かを判定する。例えば、調停部240は、第1ストリームの暗号演算に用いられるコンテキストのコンテキストIDと、コンテキスト260のコンテキストIDが一致する場合には、コンテキスト切換えが不要であると判定し(S104でNo)、一致しない場合には、コンテキスト切換えが必要であると判定する(S104でYes)。
コンテキスト切換えが必要な場合(S104でYes)、調停部240は、コンテキスト制御部210にコンテキスト260の退避及び復帰の要求を送信する(S105)。コンテキストの復帰及び退避の要求を受信したコンテキスト制御部210は、コンテキストの退避及び復帰を行う(S106)。具体的には、コンテキスト制御部210は、AES演算部250に保持されるコンテキスト260をコンテキスト格納部211に退避させる。次に、コンテキスト制御部210は、コンテキスト格納部211に格納させる第1ストリームの暗号演算に用いられるコンテキストをAES演算部250に書き込む。
コンテキスト260の退避及び復帰が行われた後、又はコンテキスト切換えが不要な場合(S104でNo)、次に、AES演算部250は、コンテキスト260のモードで指定される暗号演算を、ステップS102で判別された第1対象データに対して行う(S107)。ここで、AES演算部250は、コンテキスト260に含まれる鍵、初期値、及び中間情報等を用いて暗号演算を行う。
AES演算部250は、暗号演算した第1ストリーム(以下、「第2ストリーム」と呼ぶ。)を調停部240に出力する。調停部240は、第1ストリームの出力元であるストリーム解析部230に、第2ストリームを出力する。ストリーム解析部230は、第2ストリームをストリーム制御部220に出力する。
以上の処理により、1回目の暗号演算が完了する。
入力ストリームに対して1回の暗号演算のみを行う場合、又はコンテキスト対応テーブル212に設定された全ての暗号演算が終了した場合(S108でYes)、ストリーム制御部220は、第2ストリームを外部装置201に出力する(S109)。
一方、入力ストリームに対して2回の暗号演算を行う場合であり、かつ全ての暗号演算が行われていない場合(S108でNo)、ストリーム制御部220は、第2ストリームを他のストリーム解析部231に出力する。また、ストリーム制御部220は、1回目の処理の場合と同様に、ストリーム解析部231が第2ストリームに対応するコンテキストを保持していない場合には、コンテキストの退避及び復帰の要求をコンテキスト制御部210に送信する。
ストリーム解析部231は、保持するコンテキストを参照し、2回目の暗号演算に用いられるコンテキストに含まれるヘッダ長、ペイロード長及びフッタ長を用いて、第2ストリームからペイロードを対象データ(以下、「第2対象データ」と呼ぶ。)と判別する(S102)。次に、ストリーム解析部231は、第2ストリームを調停部240に出力する。
次に、調停部240は、コンテキスト格納テーブル213を参照し、第2ストリームに対する暗号演算の暗号アルゴリズムを判定する(S103)。調停部240は、判定した暗号アルゴリズムに対応する演算部250、251又は252に第2ストリームを出力する。ここでは、SHA1演算部252に第2ストリームが出力されるとする。
なお、ステップS104からS107までの処理は、上述した1回目の暗号演算の処理と同様であり説明は省略する。
SHA1演算部252は、暗号演算した第2ストリーム(以下、「第3ストリーム」と呼ぶ。)を調停部240に出力する。調停部240は、第2ストリームの出力元であるストリーム解析部231に、第3ストリームを出力する。ストリーム解析部231は、第3ストリームをストリーム制御部220に出力する。
以上の処理により、2回目の暗号演算が完了する。
コンテキスト対応テーブル212に2回の暗号演算が設定されていた場合には、2回の暗号演算が完了したので(S108でYes)、ストリーム制御部220は、第3ストリームを外部装置201に出力する(S109)。
なお、外部装置202からストリームが入力される場合の処理の流れも図7と同様である。
また、図7において、1回目の暗号演算が終了した後に、2回目の暗号演算に対するコンテキストの退避及び復帰等の処理が行われているが、1回目の暗号演算と2回目の暗号演算とで異なる演算部250、251及び252を用いる場合には、1回目の暗号演算が終了する前に、2回目の暗号演算に対するコンテキストの退避及び復帰等の処理を行ってもよい。
以下、機密情報処理装置200による具体的な演算例を説明する。
まず、第1の演算例として、2つの輻輳するストリームが入力される例を説明する。具体的には、ストリームID「0」及びストリームID「1」の2種類のストリームが外部装置201経由で入力される。
ストリームID「0」及びストリームID「1」の2種類のストリームはともに長さが256バイトとする。ストリームID「0」及びストリームID「1」に対する暗号演算処理は、ストリームID「0」の前半128バイト、ストリームID「1」の前半128バイト、ストリームID「0」の後半128バイト、及びストリームID「1」の後半128バイトの順に、時分割処理されるとする。
図4に示すように、ストリームID「0」のストリームには、コンテキストID「0」のコンテキストを用いた暗号演算が行われ、ストリームID「1」のストリームには、コンテキストID「1」のコンテキストを用いた暗号演算が行われる。
また、図6に示すように、コンテキストID「0」のコンテキストには、AESを用いたCBC復号化、ヘッダ長に7バイト、ペイロード長に240バイト、フッタ長に9バイト、端数出力フラグにON、ペイロード連続回数に1、及びストリーム非出力フラグにOFFが、予め外部装置202から設定されている。
また、図6に示すように、コンテキストID「1」のコンテキストには、HMAC−SHA1、ヘッダ長に5バイト、ペイロード長に251バイト、フッタ長に0バイト、端数出力フラグにOFF、ペイロード連続回数に1、ストリーム非出力フラグにON、ハッシュ値置換位置に0、及びハッシュ値比較位置に0が、予め外部装置202から設定されている。
図8は、機密情報処理装置200による第1の演算例におけるストリームID「0」のストリームの処理を示す図である。図9は、機密情報処理装置200による第1の演算例におけるストリームID「1」のストリームの処理を示す図である。
機密情報処理装置200は、ストリームID「0」のストリームを、それぞれ128バイトの前半部のストリーム500と後半部のストリーム501とに分けて処理する。また、機密情報処理装置200は、ストリームID「1」のストリームを、それぞれ128バイトの前半部のストリーム520と後半部のストリーム521とに分けて処理する。
機密情報処理装置200は、最初にストリームID「0」の前半部であるストリーム500の処理を行う。
外部装置201からストリーム制御部220にストリームの入力が開始されると、ストリーム制御部220はコンテキスト格納部211に格納されるコンテキスト対応テーブル212を参照し、ストリームID「0」に対してコンテキストID「0」のコンテキストを用いた1回の暗号演算を行うことを確認する。これにより、ストリーム制御部220は、ストリームID「0」のストリームをストリーム解析部230に出力し、ストリーム解析部230により出力される暗号演算が行われたストリームID「0」のストリームを外部装置201に出力するように内部のパスを制御する。
また、ストリーム制御部220は、ストリーム解析部230に対するコンテキストの退避及び復帰の要求をコンテキスト制御部210に送信する。要求を受信したコンテキスト制御部210は、ストリーム解析部230に保持されるコンテキストを退避し、コンテキストID「0」のコンテキストをストリーム解析部230に復帰させる。
ストリーム解析部230にコンテキストID「0」に対応するコンテキストが保持されると、ストリーム制御部220は、ストリーム解析部230へのストリームID「0」のストリームの入力を開始する。
ストリーム解析部230は、保持するコンテキストに従って、ストリームID「0」のストリームに対して対象データを判別する。ストリーム解析部230は、対象データを特定するための情報と、ストリームID「0」のストリームとを調停部240に出力する。
調停部240は、コンテキスト格納テーブル213のストリームID「0」に対応するコンテキストに含まれるアルゴリズムに従って、ストリームに対してAES演算が行われることを確認する。調停部240は、AES演算部250に保持されるコンテキスト260に対するコンテキストの退避及び復帰の要求をコンテキスト制御部210に送信する。
AES演算部250にコンテキストID「0」に対応するコンテキスト260が保持されると、調停部240は、AES演算部250へのストリーム入力を開始する。
AES演算部250は、ヘッダ部分の7バイトについては、演算することなくそのまま調停部240に出力し、ペイロード部分については順次暗号演算し、調停部240に出力する。
調停部240に入力されたAES演算結果は、ストリーム解析部230及びストリーム制御部220を経て、外部装置201へ出力される。
ここで、ストリーム500にはペイロードが121バイト含まれる。AESの演算単位は16バイトであるため、121バイトを16で割った余りである最後の9バイトが演算単位に満たない端数ペイロード502となる。
コンテキストID「0」においては、端数出力フラグがONのため、ストリーム解析部230は、ストリーム制御部220を介して、端数ペイロード502を外部装置201に出力する。
従って、外部装置201に出力されるストリーム510は、ヘッダが7バイト、ペイロードのうちAES演算結果である112バイト、端数ペイロードが9バイトの合計128バイトとなる。
次に、図9に示すように、機密情報処理装置200は、ストリームID「1」のストリームの前半部であるストリーム520の処理を行う。外部装置201から入力されたストリームID「1」のストリームは、ストリーム制御部220、ストリーム解析部231及び調停部240を経由して、SHA1演算部252に入力される。また、ストリームID「0」のストリーム500に対する処理と同様に、ストリーム解析部231及びSHA1演算部252が保持するコンテキストの退避及び復帰が行われる。
ストリーム520にはペイロードが123バイト含まれるが、SHAの演算単位は64バイトであるため、123バイトを64で割った余りである最後の59バイトが演算単位に満たない端数ペイロード522となる。
コンテキストID「1」のコンテキストに含まれる端数出力フラグがOFFのため、SHA1演算部252は、端数ペイロード522をコンテキストとしてコンテキスト格納部211に退避する。
また、コンテキストID「1」のコンテキストに含まれるストリーム非出力フラグがONであるため、ストリーム制御部220は、外部装置202にストリームを出力しない。
次に、機密情報処理装置200は、ストリームID「0」のストリームの後半部であるストリーム501の処理を行う。
ここで、ストリーム500の処理時に端数ペイロード502が機密情報処理装置200の外部に出力されたため、外部装置201は、ストリーム501の処理にあたっては、ストリーム501の先頭に端数ペイロード502を連結した、合計137バイトを入力する必要がある。
機密情報処理装置200は、入力されたストリームに随時AES演算を実施し、AES演算結果128バイトとフッタ9バイトで構成されるストリーム511を、外部装置201に出力する。
最後に、機密情報処理装置200は、ストリームID「1」のストリームの後半部であるストリーム521の処理を行う。
ストリーム520の処理時に、端数ペイロード522がコンテキストとして退避されているため、ストリーム521の処理にあたっては、SHA1演算部252は、端数ペイロード522とストリーム521とを連結する。すなわち、端数ペイロード522の処理が機密情報処理装置200内部で行われるので、外部装置201は、端数ペイロード522の処理を行わなくてもよい。
251バイトのペイロードに対するHMAC−SHA1を用いた演算結果であるMAC値523は、コンテキスト格納部211に退避され、コンテキストID「1」に含まれるハッシュ値として格納される。これにより、外部装置202は、コンテキスト格納部211に格納されたハッシュ値を読み出すことができる。
以上のように、機密情報処理装置200は、2つの輻輳するストリームに対して、異なる暗号演算を行うことができる。
次に、第2の演算例として、1つのストリームに対して、2回の暗号演算を行う例を説明する。具体的には、1回目の暗号演算としてHMAC−SHA1演算が行われ、演算により生成されたMAC値がストリームに組み込まれる。2回目の暗号演算として、AES暗号化が行われる。
ストリームID「2」のストリームが外部装置201経由で入力されるとする。ストリームID「2」のストリームは、長さが256バイトとする。ストリームID「2」のストリームに対する暗号演算処理は、前半128バイト、後半128バイトの順に2回に分けて処理されるとする。
図4に示すように、ストリームID「2」のストリームには、コンテキストID「2」のコンテキストを用いた1回目の暗号演算が行われ、さらに、1回目の暗号演算が行われたストリームに対してコンテキストID「3」のコンテキストを用いた2回目の暗号演算が行われる。
また、図6に示すように、コンテキストID「2」のコンテキストには、HMAC−SHA1、ヘッダ長に4バイト、ペイロード長に196バイト、フッタ長に56バイト、端数出力フラグにOFF、ペイロード連続回数に1、ストリーム非出力フラグにOFF、ハッシュ値置換位置に201、及びハッシュ値比較位置に0が、予め外部装置202から設定されている。
また、コンテキストID「3」のコンテキストには、AESを用いたCBC暗号化、ヘッダ長に32バイト、ペイロード長に224バイト、フッタ長に0バイト、端数出力フラグにOFF、ペイロード連続回数に1、及びストリーム非出力フラグにOFFが、予め外部装置202から設定されている。
図10は、機密情報処理装置200による第2の演算例におけるストリームの構成を示す図である。図11は、機密情報処理装置200による第2の演算例におけるストリームの処理を示す図である。
図10に示すストリーム600は、外部装置201から機密情報処理装置200に入力される256バイトのストリームである。HMAC−SHA1演算においては、ストリーム600のうち、データAがヘッダ、データBとデータCとを合わせたものがペイロード、データDとデータEとを合わせたものがフッタとなる。また、AES演算においては、ストリーム600のうち、データAとデータBとを合わせたものがヘッダ、データCとデータDとデータEとを合わせたものがペイロードとなる。
以下、処理手順に関して、第1の演算例と異なる点を中心に説明し、重複する説明は省略する。
まず、ストリームID「2」のストリームの前半部であるストリーム610に対する処理を説明する。
ストリーム制御部220は、コンテキスト対応テーブル212を参照し、ストリームID「2」に対してコンテキストID「2」のコンテキストを用いた1回目の暗号演算と、コンテキストID「3」のコンテキストを用いた2回目の暗号演算とを行うことを確認する。これにより、ストリーム制御部220は、ストリームID「2」のストリームをストリーム解析部230に出力し、ストリーム解析部230により出力される1回目の暗号演算が行われたストリームをストリーム解析部231に出力し、ストリーム解析部231により出力される2回目の暗号演算が行われたストリームを外部装置201に出力するように内部のパスを制御する。
ストリーム解析部230は、コンテキストID「2」のコンテキストに含まれるヘッダ長、ペイロード長及びフッタ長を参照し、データB及びデータCをHMAC−SHA1演算の対象データと判別する。
SHA1演算部252は、ペイロードであるデータBと、データCとの合計124バイトのうち演算単位の整数倍である64バイトに対して演算を行う。つまり、SHA1演算部252は、データBとデータCの先頭から36バイトとを合わせた64バイトに対してHMAC−SHA1演算を行う。
SHA1演算部252は、演算結果である中間結果を格納する。
SHA1演算部252は、演算単位に満たない60バイトの端数ペイロード612を除く、ストリームをそのまま出力する。つまり、SHA1演算部252は、データAと、データBと、データCの先頭から36バイトとを連結したストリーム620を出力する。また、SHA1演算部252は、端数ペイロード612をコンテキストID「2」のコンテキストとしてコンテキスト格納部211に退避する。
ストリーム620は、調停部240及びストリーム解析部230を介してストリーム解析部231に入力される。
ストリーム解析部231は、コンテキストID「3」のコンテキストに含まれるヘッダ長、ペイロード長及びフッタ長を参照し、データCをAES演算の対象データと判別する。
AES演算部250は、ストリーム620に含まれるデータCの36バイトのうち、演算対象である先頭から32バイトに暗号演算を行う。AES演算部250は、演算結果である暗号化データCを、対象データと置き換える。AES演算部250は、データA、データB及び暗号化データCで構成されるストリーム630を出力する。
ストリーム630は、調停部240、ストリーム解析部231及びストリーム制御部220を介して、外部装置201に出力される。
また、AES演算部250は、データCの残り4バイトである端数ペイロード622をコンテキストID「3」のコンテキストとしてコンテキスト格納部211に退避する。
次に、ストリームID「2」のストリームの後半部であるストリーム611に対する処理を説明する。
外部装置201から入力されたストリーム611は、ストリーム制御部220、ストリーム解析部230、及び調停部240を介してSHA1演算部252に入力される。
SHA1演算部252は、ストリーム611の先頭に、コンテキストID「2」のコンテキストとして格納される端数ペイロード612を連結する。SHA1演算部252は、連結後のデータのうちペイロード部分となる132バイトについてHMAC−SHA1演算を行う。
また、コンテキストID「2」においてハッシュ値置換位置が201であるため、SHA1演算部252は、ストリームの先頭から201バイト目となるデータDを、HMAC−SHA1の演算結果であるMAC値に置き換える。よって、SHA1演算部252は、データCのうち132バイトと、MAC値と、データEとを連結したストリーム621を出力する。
ストリーム621は、調停部240、ストリーム解析部230、ストリーム制御部220、ストリーム解析部231、及び調停部240を介してAES演算部250に入力される。
AES演算部250は、ストリーム621の先頭に、コンテキストID「3」のコンテキストとして格納される端数ペイロード622を連結する。AES演算部250は、連結したデータ192バイトについてAES演算を行う。AES演算部250は、AES演算結果である暗号化データC、暗号化MAC値、及び暗号化データEを連結したストリーム631を出力する。
ストリーム631は、調停部240、ストリーム解析部231及びストリーム制御部220を介して、外部装置201に出力される。
以上のように、機密情報処理装置200は、1つのストリームに対して、異なる2回の暗号演算を行うことができる。また、演算結果であるMAC値をストリームに組み込み出力することができる。
次に、第3の演算例として、1つのストリームに対して、2回の暗号演算を行う例を説明する。具体的には、1回目の暗号演算としてAES復号化が行われる。2回目の暗号演算として、HMAC−SHA1演算が行われる。また、HMAC−SHA1演算により生成されたMAC値と、ストリームに含まれる所定の領域のデータとの比較が行われる。
ストリームID「3」のストリームが外部装置201経由で入力されるとする。また、ストリームID「3」のストリームは長さが256バイトとする。また、機密情報処理装置200は、前半128バイト、後半128バイトの順に2回に分けて暗号演算を行うとする。
図4に示すように、ストリームID「3」のストリームには、コンテキストID「4」のコンテキストを用いた暗号演算が行われ、さらに、1回目の暗号演算が行われたストリームに対してコンテキストID「5」のコンテキストを用いた2回目の暗号演算が行われる。
また、図6に示すように、コンテキストID「4」のコンテキストには、AESを用いたCBC復号化、ヘッダ長に32バイト、ペイロード長に224バイト、フッタ長に0バイト、端数出力フラグにOFF、ペイロード連続回数に1、及びストリーム非出力フラグにOFFが、予め外部装置202から設定されている。
また、コンテキストID「5」のコンテキストには、HMAC−SHA1、ヘッダ長に4バイト、ペイロード長に196バイト、フッタ長に56バイト、端数出力フラグにOFF、ペイロード連続回数に1、ストリーム非出力フラグにOFF、ハッシュ値置換位置に0、及びハッシュ値比較位置に201が、予め外部装置202から設定されている。
図12は、機密情報処理装置200による第3の演算例におけるストリームの構成を示す図である。図13は、機密情報処理装置200による第3の演算例におけるストリームの処理を示す図である。
図12に示すストリーム700は、外部装置201から機密情報処理装置200に入力される256バイトのストリームである。AES演算においては、ストリーム700のうち、データAとデータBとを合わせたものがヘッダ、暗号化データCと暗号化MAC値と暗号化データEとを合わせたものがペイロードとなる。HMAC−SHA1演算においては、ストリーム700のうち、データAはヘッダ、データBと暗号化データCとを合わせたものがペイロード、暗号化MAC値と暗号化データEとを合わせたものがフッタとなる。
以下、処理手順に関して、第1及び第2の演算例と異なる点を中心に説明し、重複する説明は省略する。
まず、ストリームID「3」のストリームの前半部であるストリーム710に対する処理を説明する。
外部装置201から入力されたストリーム710は、ストリーム制御部220、ストリーム解析部230、及び調停部240を介してAES演算部250に入力される。
AES演算部250は、暗号化データCのうちストリーム710に含まれる96バイトに復号化を行う。AES演算部250は、暗号化データCを、復号化したデータCに置き換えストリーム720を出力する。
ストリーム720は、調停部240、ストリーム解析部230、ストリーム制御部220、ストリーム解析部231、及び調停部240を介してSHA1演算部252に入力される。
SHA1演算部252は、ペイロードであるデータB及びデータCに関しては、合計124バイト中、データBとデータCの先頭から36バイトとを合わせた64バイトに対してHMAC−SHA1演算を行う。SHA1演算部252は、データAと、データBと、データCの先頭から36バイトとを連結したストリーム730を出力する。
SHA1演算部252は、演算結果である中間結果を格納する。また、SHA1演算部252は、データCの残り60バイトである端数ペイロード722を、コンテキストID「5」のコンテキストとして格納する。
ストリーム730は、調停部240、ストリーム解析部231及びストリーム制御部220を介して、外部装置201に出力される。
次に、ストリームID「3」のストリームの後半部であるストリーム711に対する処理を説明する。
外部装置201から入力されたストリーム711は、ストリーム制御部220、ストリーム解析部230、及び調停部240を介してAES演算部250に入力される。
AES演算部250は、ストリーム711が全てペイロードであるため、ストリーム711全体に対して復号化を行う。AES演算部250は、演算結果であるデータC、MAC値、及びデータEを連結したストリーム721を出力する。
ストリーム721は、調停部240、ストリーム解析部230、ストリーム制御部220、ストリーム解析部231、及び調停部240を介してSHA1演算部252に入力される。
SHA1演算部252は、ストリーム721の先頭に、端数ペイロード722を連結する。SHA1演算部252は、連結後のデータのうちペイロード部分となる132バイトについてHMAC−SHA1演算を行い、MAC値732を生成する。
SHA1演算部252は、データCのうち132バイト、MAC値、及びデータEを連結したストリーム731を出力する。ストリーム731は、調停部240、ストリーム解析部231、及びストリーム制御部220を介して、外部装置201に出力される。
また、コンテキストID「5」においてハッシュ値比較位置が201であるため、SHA1演算部252は、ストリームの先頭から201バイト目となる、ストリーム721に含まれるMAC値とMAC値732とを比較する。SHA1演算部252は、比較結果をコンテキスト格納部211に退避する。これにより、外部装置202は、比較結果を確認することができる。
以上により、機密情報処理装置200は、1つのストリームに対して、異なる2回の暗号演算を行うことができる。また、演算結果であるMAC値と、ストリームの所定の領域のデータとを比較することができる。
次に、第4の演算例として、同時に、2つのストリームが入力される例について説明する。また、2つのストリームに対してそれぞれ2回の暗号演算が行われる。
ストリームID「4」のストリームが外部装置201経由で入力され、ストリームID「5」のストリームが外部装置202経由で入力される。
ストリームID「4」、及びストリームID「5」の2種類のストリームはともに長さが256バイトとする。また、機密情報処理装置200は、ストリームID「4」、及びストリームID「5」を同時に処理するものとする。
図4に示すように、ストリームID「4」のストリームには、コンテキストID「6」のコンテキストを用いた1回目の暗号演算が行われ、さらに、1回目の暗号演算が行われたストリームに対してコンテキストID「7」のコンテキストを用いた2回目の暗号演算が行われる。ストリームID「5」のストリームには、コンテキストID「8」のコンテキストを用いた1回目の暗号演算が行われ、さらに、1回目の暗号演算が行われたストリームに対してコンテキストID「9」のコンテキストを用いた2回目の暗号演算が行われる。
また、図6に示すように、コンテキストID「6」のコンテキストには、AESを用いたCBC復号化、ヘッダ長に0バイト、ペイロード長に128バイト、フッタ長に0バイト、端数出力フラグにOFF、ペイロード連続回数に1、及びストリーム非出力フラグにOFFが、予め外部装置202から設定されている。
コンテキストID「7」には、AESを用いたCBC暗号化、ヘッダ長に0バイト、ペイロード長に128バイト、フッタ長に0バイト、端数出力フラグにOFF、ペイロード連続回数に1、及びストリーム非出力フラグにOFFが、予め外部装置202から設定されている。
また、コンテキストID「8」には、HMAC−SHA1、ヘッダ長に20バイト、ペイロード長に200バイト、フッタ長に36バイト、端数出力フラグにOFF、ペイロード連続回数に1、ストリーム非出力フラグにOFF、ハッシュ値置換位置に221、及びハッシュ値比較位置に0が、予め外部装置202から設定されている。
コンテキストID「9」には、DESを用いたCBC暗号化、ヘッダ長に0バイト、ペイロード長に128バイト、フッタ長に128バイト、端数出力フラグにOFF、ペイロード連続回数に1、及びストリーム非出力フラグにOFFが、予め外部装置に202から設定されている。
ここで、コンテキストID「6」とコンテキストID「7」とに別の鍵が外部装置202から設定された場合、ストリームID「4」のストリームへの演算は、ストリームに対して復号化を行ったのち、異なる鍵で暗号をかけ直す処理である。
以下、処理手順に関して、第1〜第3の演算例と異なる点を中心に説明し、重複する説明は省略する。
ストリームID「4」のストリームに対する1回目の演算では、ストリームは、ストリーム制御部220、ストリーム解析部230、調停部240を介して、AES演算部250に入力される。AES演算部250は、ストリームに対して復号化を行う。復号化されたストリームは、調停部240、及びストリーム解析部230を介して、ストリーム制御部220に入力される。
ストリームID「4」のストリームに対する2回目の演算では、ストリーム制御部220は、1回目の演算が行われたストリームを、ストリーム解析部231及び調停部240を介して、AES演算部250に出力する。AES演算部250は、ストリームに対して暗号化を行う。暗号化されたストリームは、調停部240、及びストリーム解析部231を介して外部装置201に出力される。
ストリームID「5」のストリームに対する1回目の演算では、ストリームは、ストリーム制御部221、ストリーム解析部232、及び調停部240を介して、SHA1演算部252に入力される。SHA1演算部252は、ストリームに対して1回目の暗号演算を行う。1回目の暗号演算が行われたストリームは、調停部240、及びストリーム解析部232を介してストリーム制御部221に入力される。
ストリームID「5」のストリームに対する2回目の演算では、ストリーム制御部221は、1回目の演算が行われたストリームを、ストリーム解析部233、及び調停部240を介して、DES演算部251に出力する。DES演算部251はストリームに2回目の暗号演算を行う。2回目の暗号演算が行われたストリームは、調停部240、ストリーム解析部233及びストリーム制御部221を介して、外部装置202に出力される。
このときストリームID「4」のストリームに対する1回目、及び2回目の演算は、ともにAES演算部250で行われる。よって、1回目の演算と2回目の演算とを時分割で行うよう、制御する必要がある。
これを制御するため、調停部240は、ストリーム解析部230、231、232及び233からのストリームの演算要求をチェックする。調停部240は、同じアルゴリズムへの演算要求が競合している場合は、競合しているストリームについて、優先度の高いストリーム解析部230、231、232及び233からの演算要求を先に受け付ける。調停部240は、受け付けた演算要求に対するコンテキスト退避及び復帰要求とストリームの入出力処理とを行う。例えば、優先度の高い方から、ストリーム解析部233、232、231及び230の順番で優先度が付けられる。
調停部240は、先に受け付けた演算要求に対する暗号演算が該当する演算部250、251又は252で終了した後、暗号演算された出力ストリームを受信する。調停部240は、受信した出力ストリームをストリーム解析部230、231、232又は233に出力する。調停部240は、出力ストリームをストリーム解析部に出力し終わった後、再度、演算要求のチェックを行い、上述と同様に処理を行う。
従って、ストリームID「4」のストリームに対する演算においては、まず、AES演算部250は、コンテキストID「6」を用いた演算を行う。この演算結果は、ストリーム制御部220内のバッファ302に格納される。
ストリーム解析部231の優先順位は、ストリーム解析部230の優先順位より高いので、バッファ302に格納されたストリームがストリーム解析部231を介して調停部240に入力された段階で、調停順位が変更される。よって、調停部240は、AES演算部250に対するコンテキスト退避及び復帰の要求をコンテキスト制御部210に送信する。これにより、AES演算部250にコンテキストID「7」のコンテキストが格納される。
AES演算部250は、コンテキストID「7」を用いた演算を実行する。
このように、AES演算部250に対するコンテキストID「6」及びコンテキストID「7」のコンテキストの退避及び復帰が複数回行われ、ストリーム全体の演算が完了する。
ここで、ストリーム制御部221がバッファ302を備えることで、ストリーム解析部231から調停部240への処理要求をまとまったデータ単位で行うことができる。よって、機密情報処理装置200は、AES演算部250のコンテキスト退避及び復帰回数を減らすことができる。
また、2回目の暗号演算で用いられるストリーム解析部231の優先度は、1回目の暗号演算に用いられるストリーム解析部230の優先度より高く設定されている。これにより、1回目の暗号演算が終了したストリームが優先的に暗号演算される。すなわち、バッファ302に格納されたストリームが優先的に暗号演算され外部装置201に出力される。これにより、バッファ302に格納されるストリームのデータ量を削減することができる。すなわち、バッファ302の容量を削減することができる。
なお、ストリームID「5」のストリームへの演算は、HMAC−SHA1及びDESを用いた演算である。つまり、ストリームID「5」のストリームへの演算は、ストリームID「4」とは別のアルゴリズムを使用する。よって、DES演算部251及びSHA1演算部252に対するコンテキストの退避及び復帰は最初の1回だけ行われる。
また、コンテキストID「8」のコンテキストには、ストリーム非出力フラグにOFF、及びハッシュ値置換位置に221が設定されているため、SHA1演算部252は、外部装置202から入力されたストリームのうち先頭から221バイト目から20バイトを、ストリームのペイロード部分をHMAC−SHA1演算した演算結果であるハッシュ値に置き換える。また、DES演算部251は、置き換え後のストリームの先頭から128バイト部分を、DES演算した結果に置き換え出力する。DES演算部251により出力されたストリームは、外部装置201に出力される。
以上のように、機密情報処理装置200は、同時に入力される2つのストリームに対して、それぞれ2回の暗号演算を行うことができる。また、1回目の暗号演算と2回目の暗号演算とで同じ演算部を使用する場合であっても、1回のストリーム入力で2回の暗号演算を行える。
次に、第5の演算例として、ストリーム中の離れた領域のデータを1つのデータとして暗号演算を行う例を説明する。
ストリームID「6」のストリームが外部装置201経由で入力される。ストリームID「6」のストリームは、長さが512バイトとする。また、ストリームID「6」のストリームは、途中で別のストリームを処理することなく、全て一度に処理されるとする。
図4に示すように、ストリームID「6」のストリームは、コンテキストID「10」のコンテキストを用いて暗号演算される。
また、図6に示すように、コンテキストID「10」のコンテキストには、HMAC−SHA1演算、ヘッダ長に32バイト、ペイロード長に128バイト、フッタ長に96バイト、端数出力フラグにOFF、ペイロード連続回数に2、及びストリーム非出力フラグにONが、予め外部装置202から設定されている。
図14は、機密情報処理装置200による第5の演算例におけるストリームの処理を示す図である。
第5の演算例の処理フローは、ペイロード連続回数が2である点以外は、ストリームID「1」の場合と同じである。
外部装置201から入力されたストリーム800は、ストリーム制御部220、ストリーム解析部230、調停部240を介してSHA1演算部252に入力される。
ペイロード連続回数が2のため、SHA1演算部252は、512バイトのストリーム800について、33バイト目から128バイト分のペイロード1と、289バイト目から128バイト分のペイロード2との合計である256バイトを連続する一つのペイロード801とみなす。SHA1演算部252は、256バイトのペイロード801に対してHMAC−SHA1演算を行う。
SHA1演算部252は、演算結果であるMAC値802をコンテキストとしてコンテキスト格納部211に退避する。MAC値802は、コンテキスト格納テーブル213に含まれるコンテキストID「10」のコンテキストのハッシュ値として格納される。これにより、外部装置202は、コンテキスト格納テーブル213からMAC値802を読み出すことができる。
以上のように、機密情報処理装置200は、ストリーム中の離れた領域のデータを1つのデータとして暗号演算を行うことができる。
以上より、本発明に係る機密情報処理装置200は、1つの入力ストリームに対して複数回の暗号演算を行う場合、それぞれの暗号演算に対して、異なるストリーム解析部230、231、232及び233が入力ストリームの異なる領域の対象データを判別する。これにより、複数回の暗号演算において入力ストリーム内の暗号演算対象のデータが異なる場合でも、容易なソフトウェア制御で入力ストリームから任意の領域に含まれる暗号演算対象のデータを判別できる。
具体的には、外部装置201及び202からコンテキスト対応テーブル212の内容を設定することで、1つのストリームに対して任意の回数、及び任意のコンテキストを用いた暗号演算を設定することができる。
さらに、複数のストリーム解析部230、231、232及び233を備えることで、ストリーム解析部230、231、232及び233に対するコンテキストの退避及び復帰を1回目の暗号演算と2回目の暗号演算を切り替える毎に行う必要がない。よって、コンテキストの退避及び復帰の頻度を低減できる。
同様に、機密情報処理装置200は、複数のストリームが同時に入力される場合でも、容易なソフトウェア制御で入力ストリームから任意の領域に含まれる暗号演算対象のデータを判別できる。
さらに、ストリーム制御部220により、1回目の暗号演算が行われたストリームが他のストリーム解析部230、231、232又は233に入力される。これにより、暗号演算の完了ごとに外部装置201及び202にストリームを出力することなく、1回のストリーム入力で複数回の暗号演算を行える。
さらに、調停部240により複数のストリーム解析部230、231、232及び233と、演算部250、251及び252との間に任意のパスを形成することができる。これにより、1回のストリーム入力で同一のアルゴリズムを用いた複数回の暗号演算(例えば、復号化した後に暗号化)を行うことができる。同様に、同一のアルゴリズムを用いた暗号演算を複数のストリームに対して行うことができる。
さらに、機密情報処理装置200において、コンテキスト格納部211に複数のコンテキストが格納される。また、コンテキスト制御部210により、暗号演算に用いられるコンテキストの退避及び復帰が行われる。
これにより、対応するコンテキストをコンテキスト格納部211から読み出すことで、多種の演算方法に容易に対応できる。また、演算部250、251及び252は、少なくとも1個のコンテキスト格納できるレジスタ等を備えればよいので、演算部250、251及び252の回路規模を縮小できる。また、多種の演算方法に対するコンテキストを設定し、かつ設定したコンテキストをコンテキスト格納部211に格納することで、演算方法の変更及び追加等を容易に設定できる。
さらに、機密情報処理装置200は、それぞれ異なる暗号アルゴリズムに対応する複数の演算部250、251及び252を備える。よって、1つのストリームに対して異なる暗号アルゴリズムを用いた複数回の暗号演算を行う場合に、それぞれの暗号演算を異なる演算部250、251及び252により行える。同様に、複数のストリームに対して異なる暗号アルゴリズムを用いた暗号演算を行う場合に、それぞれの暗号演算を異なる演算部250、251及び252により行える。
これにより、各演算部250、251及び252が1個のコンテキストのみを保持する場合でも、暗号演算ごとにコンテキストの退避及び復帰を行う必要がない。よって、コンテキストの退避及び復帰を行う頻度を低減できるので、機密情報処理装置200は、暗号演算処理を高速に行える。
さらに、機密情報処理装置200は、コンテキスト格納部211に、演算結果であるハッシュ値及びMAC値を格納する。これにより、外部装置201及び202は、演算結果であるハッシュ値及びMAC値を読み出すことができる。
また、機密情報処理装置200は、ハッシュ演算及び秘密鍵暗号アルゴリズムを用いた認証処理を行う場合にも、入力ストリームを外部装置201又は他のストリーム解析部230、231、232及び233に出力する。これにより、暗号化及び復号化が行われる場合と同様に、ストリームを扱うことができる。
さらに、機密情報処理装置200は、コンテキスト格納部211に、端数ペイロードを格納する。これにより、入力されたストリームの対象データが演算単位の整数倍でない場合にも、外部装置201及び202に端数ペイロードを出力することなく、機密情報処理装置200内で端数ペイロードの処理を行うことができる。
さらに、機密情報処理装置200は、コンテキスト格納部211に、ペイロード連続回数を含むコンテキストを格納する。これにより、機密情報処理装置200は、ストリーム中の離れた領域のデータを1つのデータとして暗号演算することができる。
さらに、機密情報処理装置200は、コンテキスト格納部211に、ハッシュ値置換位置を含むコンテキストを格納する。これにより、機密情報処理装置200は、演算結果であるハッシュ値及びMAC値をストリームの任意の位置に組み込むことができる。
さらに、機密情報処理装置200は、コンテキスト格納部211に、ハッシュ値比較位置を含むコンテキストを格納する。これにより、機密情報処理装置200は、演算結果であるハッシュ値及びMAC値とストリームの任意の位置のデータとを比較することができる。
また、機密情報処理装置200は、コンテキスト格納部211に、端数出力フラグと、ペイロード連続回数と、ストリーム非出力フラグと、ハッシュ値置換位置と、ハッシュ値比較位置とを含むコンテキストを格納する。これにより、コンテキスト格納部211に格納されるコンテキストを設定することで、多種の暗号演算に対応することができる。
このように、本発明に係る機密情報処理装置200は、1つのストリームに対して演算方法が一意でない複数回の多種の暗号演算を行え、かつソフトウェアによる制御を容易に行える。また、本発明に係る機密情報処理装置200は、多種の演算方法の暗号演算を行う場合でも、ソフトウェアによる制御を容易に行える。
以上、本発明の実施の形態に係る機密情報処理装置について説明したが、本発明は、この実施の形態に限定されるものではない。
例えば、上記説明では、機密情報処理装置200が、3つの演算部250、251及び252を備える例について説明したが、演算部の数はこれに限定されるものではない。例えば、機密情報処理装置200は、秘密鍵暗号アルゴリズムに対応した演算部のみを備えてもよいし、ハッシュアルゴリズムに対応した演算部のみを備えてもよい。また、機密情報処理装置200は、2又は4以上の演算部を備えてもよい。
また、上記説明では、演算部の対応している暗号アルゴリズムをAES、DES及びSHAとしているが、Multi2、Camellia、MD5(Message Digest 5)などの他の暗号アルゴリズムであってもよい。
また、各演算部で行う暗号演算のモードは、CBC、ECB(Electronic Codebook)、XCBC−MAC、OFB(Output Feedback)、CTR(Counter)など任意のものでよい。
また、上記説明では、機密情報処理装置200は、2個のストリーム制御部220及び221を備えたが、1個以上の任意の個数を備えればよい。
また、上記説明では、機密情報処理装置200は、ストリーム制御部220及び221のそれぞれに対して2個のストリーム解析部を備えるとしたが、1つにストリーム制御部220及び221のそれぞれに対して、1個又は3個以上のストリーム解析部を備えてもよい。さらに、この場合、コンテキスト対応テーブル212において、1つのストリームIDに対応する3個以上のコンテキストIDが設定されてもよい。これにより、1つのストリームに対して3回以上の暗号演算を行うことができる。
また、機密情報処理装置200は、ストリーム制御部220及び221に対して、それぞれ異なる個数のストリーム解析部を備えてもよい。
また、上記説明では、コンテキスト格納部211がコンテキスト対応テーブル212を格納するとしたが、ストリーム制御部220及び221等がコンテキスト対応テーブル212を格納してもよい。
また、上記説明では、AES演算部250及びDES演算部251は、暗号化及び復号化を行うとしたが、暗号化及び復号化のいずれか一方のみを行ってもよい。
また、上記説明では、コンテキスト対応テーブル212にストリームIDが7個分格納されているが、格納されるストリームIDの数は任意でよい。また、上記説明では、コンテキスト格納テーブル213にコンテキストIDが11個分格納されているが、格納されるコンテキストIDの数は任意でよい。
また、上記説明では、端数出力フラグがOFFの場合の端数ペイロードの退避及び復帰と、ペイロード連続回数に基づく演算対象データの抽出と、ハッシュ値置換位置に基づくハッシュ値又はMACの置換と、ハッシュ値比較位置に基づくハッシュ値又はMAC値の比較とを演算部250、251及び252が行うとしたが、上記処理の1以上をストリーム解析部230、231、232及び233で行ってもよい。
また、上記説明では、ストリーム解析部230、231、232及び233が、対象データを特定する情報と、ストリームとを調停部240を介して演算部250、251及び252に出力するとしたが、対象データのみを演算部250、251及び252に出力してもよい。
また、上記説明では、演算部250、251及び252は、生成したMAC値及びハッシュ値と、端数ペイロードとをコンテキスト格納部211に格納するとしたが、自身が保持するコンテキスト260、261及び262として生成したMAC値及びハッシュ値と、端数ペイロードとを保持してもよい。この場合、コンテキストの退避の際等に、MAC値及びハッシュ値と、端数ペイロードとがコンテキスト格納部211に格納される。
また、上記説明では、コンテキスト制御部210と、ストリーム制御部220及び221と、ストリーム解析部230、231、232及び233と、調停部240と、AES演算部250と、DES演算部251と、SHA1演算部252とは、専用の回路(ハードウェア)により構成されるとしたが、上記処理部が実現する機能の一部をCPU等がプログラムを実行すること(ソフトウェア)で実現してもよい。
また、上記説明では、ストリーム制御部220及び221の構成として図5に示す構成を示したが、ストリーム制御部220及び221の構成はこれに限定されるものではない。
図15は、ストリーム制御部220及び221の変形例の構成を示す図である。図15に示すストリーム制御部220は、外部装置201から入力された入力ストリームをストリーム解析部230又は231に出力する。また、ストリーム制御部220は、ストリーム解析部230により出力される出力ストリームを、バッファ302を介してストリーム解析部231に出力し、ストリーム解析部231により出力される出力ストリームを外部装置201に出力する。
さらに、ストリーム制御部220は、外部装置201と、ストリーム解析部230と、ストリーム解析部231との間のパスを任意の組み合わせで接続できる構成であってもよい。すなわち、ストリーム制御部220は、外部装置201から入力された入力ストリームをストリーム解析部230又は231に選択的に出力し、かつ、ストリーム解析部230及び231から出力される出力ストリームをそれぞれ、外部装置201又は他のストリーム解析部230又は231に選択的に出力してもよい。
また、上記説明では、本発明に係る機密情報処理装置200を携帯電話機器に適応した例について述べたが、デジタルテレビ、STB、DVDレコーダ、DVDプレーヤ、HDレコーダ、PC、及び携帯情報端末(PDA)等に適用してもよい。
図16は、本発明の実施の形態に係る機密情報処理機器100の変形例の構成を示す図である。図16に示すように、機密情報処理機器100は、外部機器109によりデジタル放送等により送信される暗号化データに対して、復号化を行い表示部104に表示してもよい。また、機密情報処理機器100は、記憶媒体(CD、DVD、メモリカード及びUSBメモリ等)106に格納される暗号化データに対して復号化を行ってもよい。また、機密情報処理機器100は、機密情報処理装置200により暗号化されたデータを、記録媒体106に格納してもよい。また、機密情報処理機器100は、外部機器108により、ネットワーク107を介して送信された暗号化データに対して復号化を行ってもよい。また、機密情報処理機器100は、機密情報処理装置200により暗号化されたデータを、ネットワーク107を介して外部機器108に送信してもよい。