(57)【要約】【課題】１つのストリームに対して演算方法が一意でない複数回の暗号演算を行え、かつソフトウェアによる制御を容易に行える機密情報処理装置を提供する。【解決手段】本発明に係る機密情報処理装置２００は、ストリームを解析することで、対象データを判別するストリーム解析部２３０〜２３３と、前記対象データに対して、保持するコンテキスト２６０〜２６２を用いて暗号演算を行う演算部２５０〜２５２と、複数のコンテキスト、及び演算回数を示す対応テーブル２１２を格納するコンテキスト格納部２１１と、演算部２５０〜２５２と、コンテキスト格納部２１１との間で、コンテキストの退避及び復帰を行うコンテキスト制御部２１０と、対応テーブル２１２に示される演算回数に基づき、暗号演算が行われたストリームを外部装置２０１及び２０２、又はストリーム解析部２３０〜２３３に出力するストリーム制御部２２０及び２２１とを備える。【選択図】図３
2008199572.tif 000002
【特許請求の範囲】
【請求項１】
外部装置から入力されたデータストリームに含まれる異なる対象データに対する複数回の暗号演算を行う機密情報処理装置であって、
データストリームを解析することで、前記対象データを判別する少なくとも１個のストリーム解析部と、
暗号演算に用いられる鍵、初期値及び暗号演算途中の中間情報のうち１以上を含むコンテキストを保持し、データストリームに含まれる前記対象データに対して、保持する前記コンテキストを用いて暗号演算を行う少なくとも１個の暗号演算部と、
複数の前記コンテキストを格納するコンテキスト格納部と、
データストリームに対して暗号演算を行う回数と、各回の暗号演算に用いられるコンテキストとを示す対応テーブルを格納する対応テーブル格納部と、
前記暗号演算部に保持される前記コンテキストが、前記対応テーブルに示される暗号演算に用いられるコンテキストと一致しない場合に、前記暗号演算部が保持するコンテキストを前記コンテキスト格納部に退避させ、かつ、前記コンテキスト格納部に格納される前記複数のコンテキストのうち、前記対応テーブルに示される暗号演算に用いるコンテキストを前記暗号演算部に復帰させるコンテキスト制御部と、
前記対応テーブルに示される回数の暗号演算が前記暗号演算部により行われたデータストリームを前記外部装置に出力し、前記外部装置から入力されたデータストリーム及び前記対応テーブルに示される回数に満たない回数の暗号演算が前記暗号演算部により行われたデータストリームを前記ストリーム解析部に出力するストリーム制御部とを備える
ことを特徴とする機密情報処理装置。
【請求項２】
前記少なくとも１個のストリーム解析部は、
データストリームを解析することで、対象データを判別する第１ストリーム解析部及び第２ストリーム解析部を含み、
前記対応テーブルに、データストリームに対して２回以上の暗号演算を行うことが示される場合に、前記ストリーム制御部は、当該データストリームを第１ストリーム解析部に出力し、前記暗号演算部により１回目の暗号演算が行われたデータストリームを前記第２ストリームに出力する
ことを特徴とする請求項１記載の機密情報処理装置。
【請求項３】
前記少なくとも１個の暗号演算部は、
前記対象データに第１暗号アルゴリズムを用いた暗号演算を行う第１演算部と、
前記対象データに前記第１暗号アルゴリズムと異なる第２暗号アルゴリズムを用いた暗号演算を行う第２演算部とを含み、
前記第１演算部及び前記第２演算部はそれぞれ、少なくとも１個の前記コンテキストを保持する
ことを特徴とする請求項１又は２記載の機密情報処理装置。
【請求項４】
前記少なくとも１個の暗号演算部は、
前記対象データにハッシュ演算を行うことでハッシュ値を生成するハッシュ演算部を含み、
前記コンテキストは、前記ハッシュ演算部により生成されたハッシュ値を含み、
前記ストリーム制御部は、前記ハッシュ演算部がハッシュ暗号演算を行ったデータストリームを、前記外部装置から入力された状態のまま、前記外部装置、又は前記ストリーム解析部に出力する
ことを特徴とする請求項１又は２記載の機密情報処理装置。
【請求項５】
前記少なくとも１個の暗号演算部は、
前記対象データにハッシュ演算を行うことでハッシュ値を生成するハッシュ演算部を含み、
前記コンテキストは、データストリームに含まれるデータの所定の位置を示す情報であるハッシュ値置換位置情報を含み、
前記ハッシュ演算部は、データストリームに対応する前記ハッシュ値置換位置情報に示される前記所定の位置のデータを、前記ハッシュ値に置き換え、
前記ストリーム制御部は、前記ハッシュ演算部により前記所定の位置のデータが前記ハッシュ値に置き換えられたデータストリームを、前記外部装置、又は前記ストリーム解析部に出力する
ことを特徴とする請求項１又は２記載の機密情報処理装置。
【請求項６】
前記少なくとも１個の暗号演算部は、
前記対象データにハッシュ演算を行うことでハッシュ値を生成するハッシュ演算部を含み、
前記コンテキストは、データストリームに含まれるデータの所定の位置を示す情報であるハッシュ値比較位置情報を含み、
前記ハッシュ演算部は、データストリームに対応する前記ハッシュ値比較位置情報に示される前記所定の位置のデータと、前記ハッシュ値とが一致するか否かを判定する
ことを特徴とする請求項１又は２記載の機密情報処理装置。
【請求項７】
前記少なくとも１個の暗号演算部は、
前記対象データに秘密鍵暗号アルゴリズムを用いる認証モードの演算を行うことでメッセージ認証子を生成する秘密鍵暗号演算部を含み、
前記コンテキストは、前記秘密鍵暗号演算部により生成されたメッセージ認証子を含み、
前記ストリーム制御部は、前記秘密鍵暗号演算部が認証モードの演算を行ったデータストリームを、前記外部装置から入力された状態のまま、前記外部装置、又は前記ストリーム解析部に出力する
ことを特徴とする請求項１又は２記載の機密情報処理装置。
【請求項８】
前記少なくとも１個の暗号演算部は、
前記対象データに秘密鍵暗号アルゴリズムを用いる認証モードの演算を行うことでメッセージ認証子を生成する秘密鍵暗号演算部を含み、
前記コンテキストは、データストリームに含まれるデータの所定の位置を示す情報であるメッセージ認証子置換位置情報を含み、
前記秘密鍵暗号演算部は、データストリームに対応する前記メッセージ認証子置換位置情報に示される前記所定の位置のデータを、前記メッセージ認証子に置き換え、
前記ストリーム制御部は、前記秘密鍵暗号演算部により前記所定の位置のデータが前記メッセージ認証子に置き換えられたデータストリームを、前記外部装置、又は前記ストリーム解析部に出力する
ことを特徴とする請求項１又は２記載の機密情報処理装置。
【請求項９】
前記少なくとも１個の暗号演算部は、
前記対象データに秘密鍵暗号アルゴリズムを用いる認証モードの演算を行うことでメッセージ認証子を生成する秘密鍵暗号演算部を含み、
前記コンテキストは、データストリームに含まれるデータの所定の位置を示す情報であるメッセージ認証子比較位置情報を含み、
前記秘密鍵暗号演算部は、データストリームに対応する前記メッセージ認証子比較位置情報に示される前記所定の位置のデータと、前記メッセージ認証子とが一致するか否かを判定する
ことを特徴とする請求項１又は２記載の機密情報処理装置。
【請求項１０】
前記コンテキストは、前記対象データのデータ量が暗号演算における演算単位の整数倍でない場合、前記演算単位に満たない対象データである端数データを含み、
前記暗号演算部は、後続のデータストリームに対して暗号演算を行う際に、前記コンテキストに含まれる前記端数データを含む対象データに対して暗号演算を行う
ことを特徴とする請求項１又は２記載の機密情報処理装置。
【請求項１１】
前記コンテキストは、データストリーム中の複数の離れた領域を示す連続処理情報を含み、
前記暗号演算部は、前記連続処理情報に示される前記複数の離れた領域のデータを一つのデータとして暗号演算する
ことを特徴とする請求項１又は２記載の機密情報処理装置。
【請求項１２】
前記コンテキストは、データストリームに含まれるデータのうち暗号演算を行う領域を示す情報である領域情報を含み、
前記複数のストリーム解析部は、前記領域情報に示される領域のデータを前記対象データとして判別する
ことを特徴とする請求項１又は２記載の機密情報処理装置。
【請求項１３】
前記ストリーム制御部は、
前記暗号演算部が暗号演算を行ったデータストリームを保持し、かつ前記ストリーム解析部に保持するデータストリームを出力するバッファを備える
ことを特徴とする請求項１〜１２のいずれか１項に記載の機密情報処理装置。
【請求項１４】
前記機密情報処理装置は、さらに、
前記第１ストリーム解析部及び前記第２ストリーム解析部により前記対象データが判別されたデータストリームのうちいずれか１つを選択し、選択したデータストリームを前記暗号演算部に出力する調停部を備え、
前記暗号演算部は、前記調停部により出力されるデータストリームに含まれる前記対象データに対して、保持する前記コンテキストを用いて暗号演算を行う
ことを特徴とする請求項１〜１３のいずれか１項に記載の機密情報処理装置。
【請求項１５】
前記少なくとも１個の暗号演算部は、
前記対象データに秘密鍵暗号演算を行う秘密鍵暗号演算部と、
前記対象データにハッシュ演算を行うハッシュ演算部とを含む
ことを特徴とする請求項１又は２記載の機密情報処理装置。
【請求項１６】
データストリームに含まれる異なる対象データに対する複数回の暗号演算を行う機密情報処理機器であって、
外部機器から送信されるデータストリームを受信する受信部と、
前記受信部により受信されたデータストリームを解析することで、前記対象データを判別する少なくとも１個のストリーム解析部と、
暗号演算に用いられる鍵、初期値及び暗号演算途中の中間情報のうち１以上を含むコンテキストを保持し、データストリームに含まれる前記対象データに対して、保持する前記コンテキストを用いて暗号演算を行う少なくとも１個の暗号演算部と、
複数の前記コンテキストを格納するコンテキスト格納部と、
データストリームに対して暗号演算を行う回数と、各回の暗号演算に用いられるコンテキストとを示す対応テーブルを格納する対応テーブル格納部と、
前記暗号演算部に保持される前記コンテキストが、前記対応テーブルに示される暗号演算に用いられるコンテキストと一致しない場合に、前記暗号演算部が保持するコンテキストを前記コンテキスト格納部に退避させ、かつ、前記コンテキスト格納部に格納される前記複数のコンテキストのうち、前記対応テーブルに示される暗号演算に用いるコンテキストを前記暗号演算部に復帰させるコンテキスト制御部と、
データストリームを再生し表示する表示部と、
前記対応テーブルに示される回数の暗号演算が前記暗号演算部により行われたデータストリームを前記表示部に出力し、前記外部装置から入力されたデータストリーム及び前記対応テーブルに示される回数に満たない回数の暗号演算が前記暗号演算部により行われたデータストリームを前記ストリーム解析部に出力するストリーム制御部とを備える
ことを特徴とする機密情報処理機器。
【請求項１７】
データストリームに含まれる異なる対象データに対する複数回の暗号演算を行う機密情報処理機器であって、
データストリームを解析することで、前記対象データを判別する少なくとも１個のストリーム解析部と、
暗号演算に用いられる鍵、初期値及び暗号演算途中の中間情報のうち１以上を含むコンテキストを保持し、データストリームに含まれる前記対象データに対して、保持する前記コンテキストを用いて暗号演算を行う少なくとも１個の暗号演算部と、
複数の前記コンテキストを格納するコンテキスト格納部と、
データストリームに対して暗号演算を行う回数と、各回の暗号演算に用いられるコンテキストとを示す対応テーブルを格納する対応テーブル格納部と、
前記暗号演算部に保持される前記コンテキストが、前記対応テーブルに示される暗号演算に用いられるコンテキストと一致しない場合に、前記暗号演算部が保持するコンテキストを前記コンテキスト格納部に退避させ、かつ、前記コンテキスト格納部に格納される前記複数のコンテキストのうち、前記対応テーブルに示される暗号演算に用いるコンテキストを前記暗号演算部に復帰させるコンテキスト制御部と、
データストリームを外部機器に送信する送信部と、
前記対応テーブルに示される回数の暗号演算が前記暗号演算部により行われたデータストリームを前記送信部に出力し、外部装置から入力されたデータストリーム及び前記対応テーブルに示される回数に満たない回数の暗号演算が前記暗号演算部により行われたデータストリームを前記ストリーム解析部に出力するストリーム制御部とを備える
ことを特徴とする機密情報処理機器。
【請求項１８】
外部装置から入力された第１データストリームに含まれる異なる対象データに対する複数回の暗号演算を行う機密情報処理装置における機密情報処理方法であって、
前記機密情報処理装置は、
データストリームを解析することで、前記対象データを判別する少なくとも１個のストリーム解析部と、
暗号演算に用いられる鍵、初期値及び暗号演算途中の中間情報のうち１以上を含むコンテキストを保持し、データストリームに含まれる前記対象データに対して、保持する前記コンテキストを用いて暗号演算を行う少なくとも１個の暗号演算部と、
複数の前記コンテキストを格納するコンテキスト格納部と、
データストリームに対して暗号演算を行う回数と、各回の暗号演算に用いられるコンテキストとを示す対応テーブルを格納する対応テーブル格納部と、
前記暗号演算部に保持される前記コンテキストが、前記対応テーブルに示される暗号演算に用いられるコンテキストと一致しない場合に、前記暗号演算部が保持するコンテキストを前記コンテキスト格納部に退避させ、かつ、前記コンテキスト格納部に格納される前記複数のコンテキストのうち、前記対応テーブルに示される暗号演算に用いるコンテキストを前記暗号演算部に復帰させるコンテキスト制御部と、
前記暗号演算部により暗号演算されたデータストリームを前記外部装置、又は前記ストリーム解析部に出力するストリーム制御部とを備え、
前記対応テーブルに前記第１データストリームに対して暗号演算が２回以上行われることが示される場合に、
前記ストリーム解析部が、前記第１データストリームから第１対象データを判別し、
前記暗号演算部が、前記第１データストリームに含まれる前記第１対象データに暗号演算を行うことで第２データストリームを生成し、
前記ストリーム制御部が前記第２データストリームを、前記ストリーム解析部に出力し、
前記ストリーム解析部が、前記第２データストリームから第２対象データを判別し、
前記暗号演算部が前記第２データストリームに含まれる前記第２対象データに暗号演算を行うことで第３データストリームを生成し、
前記ストリーム制御部が前記第３データストリームを前記外部装置に出力する
ことを特徴とする機密情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機密情報処理装置、機密情報処理機器、及び機密情報処理方法に関し、特に、データストリームに含まれる異なる対象データに対する複数回の暗号演算を行う機密情報処理装置に関する。
【背景技術】
【０００２】
デジタルテレビ、ＤＶＤレコーダ及び携帯電話などの機器では、セキュリティの強化等のために、受信したデータストリーム又は送信するデータストリーム（以下、単に「ストリーム」とも呼ぶ。）に対して秘密鍵暗号演算又はハッシュ演算（以下、単に「暗号演算」とも呼ぶ。また、暗号化されたデータの復号化及び平文データの暗号化の少なくとも１以上を称して「暗号演算」と呼ぶ。）が実施される。つまり、デジタルテレビ、ＤＶＤレコーダ及び携帯電話などの機器は、ストリームに対して暗号演算を行う機密情報処理装置を備える。
【０００３】
機密情報処理装置により行われる暗号演算には、ストリーム全体を同じアルゴリズムで暗号演算する場合、ストリームに含まれるデータの所定の領域に対して１回の暗号演算のみを実施する場合、及びストリームに含まれるデータの異なる領域に対して複数回の暗号演算を行う場合がある。例えば、機密情報処理装置は、ストリームに含まれるデータの第１の領域に対して秘密鍵暗号演算を実行した後に、当該ストリームに含まれるデータの第２の領域に対してハッシュ演算を実施する。つまり、機密情報処理装置は、演算方法が一意でない複数回の暗号演算を行う場合がある。
【０００４】
なお、暗号演算が行われるデータの領域、暗号演算の回数、及び暗号演算に使用される暗号アルゴリズムは、ＩＰＳｅｃ（Ｓｅｃｕｒｉｔｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）、又はデジタル放送規格等により規定されている。
【０００５】
例えば、特許文献１に、ストリームに対して演算方法が一意でない複数回の暗号演算を行う機密情報処理装置が記載されている。
【０００６】
特許文献１記載の従来の機密情報処理装置は、１つのストリームに対して認証処理と暗号化処理とを並列して行うことができる。
【特許文献１】特開２００６−４１６８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１記載の従来の機密情報処理装置は、ストリーム全体に対して演算方法が一意でない場合、ストリームを複数のデータ列に分割し、各データ列を複数回に分けてＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｍｏｒｙ  Ａｃｃｅｓｓ）転送することで、ストリーム全体に対して暗号演算を行う必要ある。
【０００８】
さらに、ストリームに対して演算方法が一意でない複数回の暗号演算を行う例として、１つのストリームに対して、ある鍵を用いて復号化した後に別の鍵を用いて暗号化する場合等の多様な状況が想定される。このような場合には、特許文献１の従来の機密情報処理装置は、１回目は復号化のみ、２回目は暗号化のみと言うように、ストリームの入出力を２回以上実施する必要がある。そのため、従来の機密情報処理装置は、ソフトウェアによる制御が複雑であるという問題がある。
【０００９】
本発明は上記問題に鑑み、１つのストリームに対して演算方法が一意でない複数回の暗号演算を行え、かつソフトウェアによる制御を容易に行える機密情報処理装置、機密情報処理機器及び機密情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明に係る機密情報処理装置は、外部装置から入力されたデータストリームに含まれる異なる対象データに対する複数回の暗号演算を行う機密情報処理装置であって、データストリームを解析することで、前記対象データを判別する少なくとも１個のストリーム解析部と、暗号演算に用いられる鍵、初期値及び暗号演算途中の中間情報のうち１以上を含むコンテキストを保持し、データストリームに含まれる前記対象データに対して、保持する前記コンテキストを用いて暗号演算を行う少なくとも１個の暗号演算部と、複数の前記コンテキストを格納するコンテキスト格納部と、データストリームに対して暗号演算を行う回数と、各回の暗号演算に用いられるコンテキストとを示す対応テーブルを格納する対応テーブル格納部と、前記暗号演算部に保持される前記コンテキストが、前記対応テーブルに示される暗号演算に用いられるコンテキストと一致しない場合に、前記暗号演算部が保持するコンテキストを前記コンテキスト格納部に退避させ、かつ、前記コンテキスト格納部に格納される前記複数のコンテキストのうち、前記対応テーブルに示される暗号演算に用いるコンテキストを前記暗号演算部に復帰させるコンテキスト制御部と、前記対応テーブルに示される回数の暗号演算が前記暗号演算部により行われたデータストリームを前記外部装置に出力し、前記外部装置から入力されたデータストリーム及び前記対応テーブルに示される回数に満たない回数の暗号演算が前記暗号演算部により行われたデータストリームを前記ストリーム解析部に出力するストリーム制御部とを備える。
【００１１】
この構成によれば、対応テーブルに示される暗号演算を行う回数に基づき、コンテキスト制御部は、暗号演算されたストリームを外部装置又は他のストリーム解析部に出力する。よって、対応テーブルに暗号演算を行う回数を設定することで、任意の演算回数を設定できる。よって、本発明に係る機密情報処理装置は、１つのストリームに対して任意の回数の暗号演算を行える。さらに、暗号演算の完了ごとに外部にストリームを出力することなく、１回のストリーム入力で複数回の暗号演算を行える。また、対応テーブルに暗号演算を行う回数を設定することで、容易に暗号演算を行う回数を変更することができる。
【００１２】
さらに、コンテキスト格納部に複数のコンテキストが格納される。また、コンテキスト制御部により、暗号演算に用いられるコンテキストの退避及び復帰が行われる。これにより、対応するコンテキストをコンテキスト格納部から読み出すことで、多種の演算方法に容易に対応できる。また、暗号演算部は、少なくとも１個のコンテキスト格納できるレジスタ等を備えればよいので、暗号演算部の回路規模を縮小できる。また、多種の演算方法に対するコンテキストを設定し、かつ設定したコンテキストをコンテキスト格納部に格納することで、演算方法の変更及び追加等を容易に設定できる。
【００１３】
このように、本発明に係る機密情報処理装置は、１つのストリームに対して演算方法が一意でない複数回の多種の暗号演算を行え、かつソフトウェアによる制御を容易に行える。
【００１４】
また、前記少なくとも１個のストリーム解析部は、データストリームを解析することで、対象データを判別する第１ストリーム解析部及び第２ストリーム解析部を含み、前記対応テーブルに、データストリームに対して２回以上の暗号演算を行うことが示される場合に、前記ストリーム制御部は、当該データストリームを第１ストリーム解析部に出力し、前記暗号演算部により１回目の暗号演算が行われたデータストリームを前記第２ストリームに出力してもよい。
【００１５】
この構成によれば、１つのストリームに対して複数回の暗号演算を行う場合、それぞれの暗号演算に対して、異なるストリーム解析部がストリームの異なる領域のデータを判別する。これにより、複数回の暗号演算においてストリーム内の暗号演算対象のデータが異なる場合でも、容易なソフトウェア制御でストリームの任意の領域に含まれるデータに暗号演算を行える。
【００１６】
また、前記少なくとも１個の暗号演算部は、前記対象データに第１暗号アルゴリズムを用いた暗号演算を行う第１演算部と、前記対象データに前記第１暗号アルゴリズムと異なる第２暗号アルゴリズムを用いた暗号演算を行う第２演算部とを含み、前記第１演算部及び前記第２演算部はそれぞれ、少なくとも１個の前記コンテキストを保持してもよい。
【００１７】
この構成によれば、１つのストリームに対して複数回の暗号演算を行う場合、それぞれの暗号演算を異なる演算部により行える。これにより、各演算部が１個のコンテキストのみを保持する場合でも、暗号演算ごとにコンテキストの退避及び復帰を行う必要がない。よって、本発明に係る機密情報処理装置は、暗号演算処理を高速に行える。さらに、異なる暗号アルゴリズムを用いた暗号演算を行う複数の演算部を備えることで、本発明に係る機密情報処理装置は、複数の暗号アルゴリズムを用いた暗号演算を行える。すなわち、本発明に係る機密情報処理装置は、多種の演算方法に対応できる。
【００１８】
また、前記少なくとも１個の暗号演算部は、前記対象データにハッシュ演算を行うことでハッシュ値を生成するハッシュ演算部を含み、前記コンテキストは、前記ハッシュ演算部により生成されたハッシュ値を含み、前記ストリーム制御部は、前記ハッシュ演算部がハッシュ暗号演算を行ったデータストリームを、前記外部装置から入力された状態のまま、前記外部装置、又は前記ストリーム解析部に出力してもよい。
【００１９】
この構成によれば、ハッシュ演算により生成されたハッシュ値はコンテキストとして格納される。また、元のストリームが外部、又は他のストリーム解析部に出力される。よって、ハッシュ演算を行った後に、ストリームに対して引き続き他の暗号演算を行える。よって、本発明に係る機密情報処理装置は、１回のストリーム入力で複数回かつ多種の暗号演算を容易な制御で行える。
【００２０】
また、前記少なくとも１個の暗号演算部は、前記対象データにハッシュ演算を行うことでハッシュ値を生成するハッシュ演算部を含み、前記コンテキストは、データストリームに含まれるデータの所定の位置を示す情報であるハッシュ値置換位置情報を含み、前記ハッシュ演算部は、データストリームに対応する前記ハッシュ値置換位置情報に示される前記所定の位置のデータを、前記ハッシュ値に置き換え、前記ストリーム制御部は、前記ハッシュ演算部により前記所定の位置のデータが前記ハッシュ値に置き換えられたデータストリームを、前記外部装置、又は前記ストリーム解析部に出力してもよい。
【００２１】
この構成によれば、ハッシュ値をストリームの任意の位置に組み込み、ハッシュ値を組み込んだストリームを外部装置、又は他のストリーム解析部に出力できる。また、コンテキストに含まれるハッシュ値置換位置情報を設定することで、ハッシュ値の置換の実行の有無、及び任意の位置への置換を容易に設定できる。よって、本発明に係る機密情報処理装置は、１回のストリーム入力で複数回かつ多種の暗号演算を容易な制御で行える。
【００２２】
また、前記少なくとも１個の暗号演算部は、前記対象データにハッシュ演算を行うことでハッシュ値を生成するハッシュ演算部を含み、前記コンテキストは、データストリームに含まれるデータの所定の位置を示す情報であるハッシュ値比較位置情報を含み、前記ハッシュ演算部は、データストリームに対応する前記ハッシュ値比較位置情報に示される前記所定の位置のデータと、前記ハッシュ値とが一致するか否かを判定してもよい。
【００２３】
この構成によれば、ハッシュ値と、ストリームの任意の位置に含まれるデータとを比較することで、ストリームの認証を行える。また、コンテキストに含まれるハッシュ値比較位置情報を設定することで、ハッシュ値の比較の実行の有無、及び任意の位置との比較を容易に設定できる。よって、本発明に係る機密情報処理装置は、多種の暗号演算を容易な制御で行える。
【００２４】
また、前記少なくとも１個の暗号演算部は、前記対象データに秘密鍵暗号アルゴリズムを用いる認証モードの演算を行うことでメッセージ認証子を生成する秘密鍵暗号演算部を含み、前記コンテキストは、前記秘密鍵暗号演算部により生成されたメッセージ認証子を含み、前記ストリーム制御部は、前記秘密鍵暗号演算部が認証モードの演算を行ったデータストリームを、前記外部装置から入力された状態のまま、前記外部装置、又は前記ストリーム解析部に出力してもよい。
【００２５】
この構成によれば、秘密鍵暗号アルゴリズムを用いた認証モードの演算により生成されたメッセージ認証子がコンテキストとして格納される。また、元のストリームが外部装置、又は他のストリーム解析部に出力される。よって、秘密鍵暗号アルゴリズムを用いた認証モードの演算を行った後に、ストリームに対して引き続き他の暗号演算を行える。よって、本発明に係る機密情報処理装置は、１回のストリーム入力で複数回かつ多種の暗号演算を容易な制御で行える。
【００２６】
また、前記少なくとも１個の暗号演算部は、前記対象データに秘密鍵暗号アルゴリズムを用いる認証モードの演算を行うことでメッセージ認証子を生成する秘密鍵暗号演算部を含み、前記コンテキストは、データストリームに含まれるデータの所定の位置を示す情報であるメッセージ認証子置換位置情報を含み、前記秘密鍵暗号演算部は、データストリームに対応する前記メッセージ認証子置換位置情報に示される前記所定の位置のデータを、前記メッセージ認証子に置き換え、前記ストリーム制御部は、前記秘密鍵暗号演算部により前記所定の位置のデータが前記メッセージ認証子に置き換えられたデータストリームを、前記外部装置、又は前記ストリーム解析部に出力してもよい。
【００２７】
この構成によれば、メッセージ認証子をストリームの任意の位置に組み込み、メッセージ認証子を組み込んだストリームを外部、又は他のストリーム解析部に出力できる。また、コンテキストに含まれるメッセージ認証子置換位置情報を設定することで、メッセージ認証子の置換の実行の有無、及び任意の位置への置換を容易に設定できる。よって、本発明に係る機密情報処理装置は、１回のストリーム入力で複数回かつ多種の暗号演算を容易な制御で行える。
【００２８】
また、前記少なくとも１個の暗号演算部は、前記対象データに秘密鍵暗号アルゴリズムを用いる認証モードの演算を行うことでメッセージ認証子を生成する秘密鍵暗号演算部を含み、前記コンテキストは、データストリームに含まれるデータの所定の位置を示す情報であるメッセージ認証子比較位置情報を含み、前記秘密鍵暗号演算部は、データストリームに対応する前記メッセージ認証子比較位置情報に示される前記所定の位置のデータと、前記メッセージ認証子とが一致するか否かを判定してもよい。
【００２９】
この構成によれば、メッセージ認証子と、ストリームの任意の位置に含まれるデータとを比較することで、ストリームの認証を行える。また、コンテキストに含まれるメッセージ認証子比較位置情報を設定することで、メッセージ認証子の比較の実行の有無、及び任意の位置との比較を容易に設定できる。よって、本発明に係る機密情報処理装置は、多種の暗号演算を容易な制御で行える。
【００３０】
また、前記コンテキストは、前記対象データのデータ量が暗号演算における演算単位の整数倍でない場合、前記演算単位に満たない対象データである端数データを含み、前記暗号演算部は、後続のデータストリームに対して暗号演算を行う際に、前記コンテキストに含まれる前記端数データを含む対象データに対して暗号演算を行ってもよい。
【００３１】
この構成によれば、本発明に係る機密情報処理装置は、端数データを外部に出力することなく、後続のストリームの処理を引き続き行える。よって、外部装置（ＣＰＵ等）は、後続のストリーム入力に暗号演算されなかった端数データを連結させる等の処理を行う必要がない。よって、本発明に係る機密情報処理装置は、外部装置の処理を低減できる。
【００３２】
また、前記コンテキストは、データストリーム中の複数の離れた領域を示す連続処理情報を含み、前記暗号演算部は、前記連続処理情報に示される前記複数の離れた領域のデータを一つのデータとして暗号演算してもよい。
【００３３】
この構成によれば、ストリーム中の離れた領域のデータを一つのデータとして暗号演算を行う場合にも対応できる。また、コンテキストに含まれる連続処理情報を設定することで、当該処理の実施の有無を容易に設定できる。よって、本発明に係る機密情報処理装置は、多種の暗号演算を容易な制御で行える。
【００３４】
また、前記コンテキストは、データストリームに含まれるデータのうち暗号演算を行う領域を示す情報である領域情報を含み、前記複数のストリーム解析部は、前記領域情報に示される領域のデータを前記対象データとして判別してもよい。
【００３５】
この構成によれば、ストリーム解析部により、ストリームに含まれる任意の領域のデータが対象データと判別される。これにより、本発明に係る機密情報処理装置は、ストリームに含まれる任意の領域のデータに暗号演算を行える。また、コンテキストに含まれる領域情報を設定することで、暗号演算の対象となるデータを設定できる。よって、本発明に係る機密情報処理装置は、多種の暗号演算を容易な制御で行える。
【００３６】
また、前記ストリーム制御部は、前記暗号演算部が暗号演算を行ったデータストリームを保持し、かつ前記ストリーム解析部に保持するデータストリームを出力するバッファを備えてもよい。
【００３７】
この構成によれば、１回目の暗号演算が行われたストリームをバッファに保持し、バッファに保持されるストリームに順次、２回目の暗号演算を行える。
【００３８】
また、前記機密情報処理装置は、さらに、前記第１ストリーム解析部及び前記第２ストリーム解析部により前記対象データが判別されたデータストリームのうちいずれか１つを選択し、選択したデータストリームを前記暗号演算部に出力する調停部を備え、前記暗号演算部は、前記調停部により出力されるデータストリームに含まれる前記対象データに対して、保持する前記コンテキストを用いて暗号演算を行ってもよい。
【００３９】
この構成によれば、調停部により複数のストリーム解析部と、暗号演算部との間に任意のパスを形成することができる。これにより、１回のストリーム入力で同一のアルゴリズムを用いた複数回の暗号演算（例えば、復号化した後に暗号化）を行うことができる。さらに、同一の暗号演算部に対する複数の暗号演算の要求が同時に発生した場合に、調停部は、優先度等に基づき、暗号演算を行うストリームを決定することができる。
【００４０】
また、前記少なくとも１個の暗号演算部は、前記対象データに秘密鍵暗号演算を行う秘密鍵暗号演算部と、前記対象データにハッシュ演算を行うハッシュ演算部とを含んでもよい。
【００４１】
この構成によれば、１つのストリームに対して秘密鍵暗号演算と、ハッシュ演算とを行える。よって、本発明に係る機密情報処理装置は、１回のストリーム入力で複数回かつ多種の暗号演算を容易な制御で行える。
【００４２】
また、本発明に係る機密情報処理機器は、データストリームに含まれる異なる対象データに対する複数回の暗号演算を行う機密情報処理機器であって、外部機器から送信されるデータストリームを受信する受信部と、前記受信部により受信されたデータストリームを解析することで、前記対象データを判別する少なくとも１個のストリーム解析部と、暗号演算に用いられる鍵、初期値及び暗号演算途中の中間情報のうち１以上を含むコンテキストを保持し、データストリームに含まれる前記対象データに対して、保持する前記コンテキストを用いて暗号演算を行う少なくとも１個の暗号演算部と、複数の前記コンテキストを格納するコンテキスト格納部と、データストリームに対して暗号演算を行う回数と、各回の暗号演算に用いられるコンテキストとを示す対応テーブルを格納する対応テーブル格納部と、前記暗号演算部に保持される前記コンテキストが、前記対応テーブルに示される暗号演算に用いられるコンテキストと一致しない場合に、前記暗号演算部が保持するコンテキストを前記コンテキスト格納部に退避させ、かつ、前記コンテキスト格納部に格納される前記複数のコンテキストのうち、前記対応テーブルに示される暗号演算に用いるコンテキストを前記暗号演算部に復帰させるコンテキスト制御部と、データストリームを再生し表示する表示部と、前記対応テーブルに示される回数の暗号演算が前記暗号演算部により行われたデータストリームを前記表示部に出力し、前記外部装置から入力されたデータストリーム及び前記対応テーブルに示される回数に満たない回数の暗号演算が前記暗号演算部により行われたデータストリームを前記ストリーム解析部に出力するストリーム制御部とを備える。
【００４３】
この構成によれば、暗号化されたデータを受信して再生及び表示する機密情報処理装置において、１つのストリームに対する演算方法が一意でない複数回の暗号演算と、ソフトウェアによる容易な制御とを実現することができる。
【００４４】
また、本発明に係る機密情報処理機器は、データストリームに含まれる異なる対象データに対する複数回の暗号演算を行う機密情報処理機器であって、データストリームを解析することで、前記対象データを判別する少なくとも１個のストリーム解析部と、暗号演算に用いられる鍵、初期値及び暗号演算途中の中間情報のうち１以上を含むコンテキストを保持し、データストリームに含まれる前記対象データに対して、保持する前記コンテキストを用いて暗号演算を行う少なくとも１個の暗号演算部と、複数の前記コンテキストを格納するコンテキスト格納部と、データストリームに対して暗号演算を行う回数と、各回の暗号演算に用いられるコンテキストとを示す対応テーブルを格納する対応テーブル格納部と、前記暗号演算部に保持される前記コンテキストが、前記対応テーブルに示される暗号演算に用いられるコンテキストと一致しない場合に、前記暗号演算部が保持するコンテキストを前記コンテキスト格納部に退避させ、かつ、前記コンテキスト格納部に格納される前記複数のコンテキストのうち、前記対応テーブルに示される暗号演算に用いるコンテキストを前記暗号演算部に復帰させるコンテキスト制御部と、データストリームを外部機器に送信する送信部と、前記対応テーブルに示される回数の暗号演算が前記暗号演算部により行われたデータストリームを前記送信部に出力し、外部装置から入力されたデータストリーム及び前記対応テーブルに示される回数に満たない回数の暗号演算が前記暗号演算部により行われたデータストリームを前記ストリーム解析部に出力するストリーム制御部とを備える。
【００４５】
この構成によれば、平文データを暗号化して外部機器に送信する機密情報処理装置において、１つのストリームに対する演算方法が一意でない複数回の暗号演算と、ソフトウェアによる容易な制御とを実現することができる。
【００４６】
また、本発明に係る機密情報処理方法は、外部装置から入力された第１データストリームに含まれる異なる対象データに対する複数回の暗号演算を行う機密情報処理装置における機密情報処理方法であって、前記機密情報処理装置は、データストリームを解析することで、前記対象データを判別する少なくとも１個のストリーム解析部と、暗号演算に用いられる鍵、初期値及び暗号演算途中の中間情報のうち１以上を含むコンテキストを保持し、データストリームに含まれる前記対象データに対して、保持する前記コンテキストを用いて暗号演算を行う少なくとも１個の暗号演算部と、複数の前記コンテキストを格納するコンテキスト格納部と、データストリームに対して暗号演算を行う回数と、各回の暗号演算に用いられるコンテキストとを示す対応テーブルを格納する対応テーブル格納部と、前記暗号演算部に保持される前記コンテキストが、前記対応テーブルに示される暗号演算に用いられるコンテキストと一致しない場合に、前記暗号演算部が保持するコンテキストを前記コンテキスト格納部に退避させ、かつ、前記コンテキスト格納部に格納される前記複数のコンテキストのうち、前記対応テーブルに示される暗号演算に用いるコンテキストを前記暗号演算部に復帰させるコンテキスト制御部と、前記暗号演算部により暗号演算されたデータストリームを前記外部装置、又は前記ストリーム解析部に出力するストリーム制御部とを備え、前記対応テーブルに前記第１データストリームに対して暗号演算が２回以上行われることが示される場合に、前記ストリーム解析部が、前記第１データストリームから第１対象データを判別し、前記暗号演算部が、前記第１データストリームに含まれる前記第１対象データに暗号演算を行うことで第２データストリームを生成し、前記ストリーム制御部が前記第２データストリームを、前記ストリーム解析部に出力し、前記ストリーム解析部が、前記第２データストリームから第２対象データを判別し、前記暗号演算部が前記第２データストリームに含まれる前記第２対象データに暗号演算を行うことで第３データストリームを生成し、前記ストリーム制御部が前記第３データストリームを前記外部装置に出力する。
【００４７】
これによれば、対応テーブルに示される暗号演算を行う回数に基づき、コンテキスト制御部は、暗号演算されたストリームを外部装置又は他のストリーム解析部に出力する。よって、対応テーブルに暗号演算を行う回数を設定することで、任意の演算回数を設定できる。よって、本発明に係る機密情報処理方法は、１つのストリームに対して任意の回数の暗号演算を行える。さらに、暗号演算の完了ごとに外部にストリームを出力することなく、１回のストリーム入力で複数回の暗号演算を行える。また、対応テーブルに暗号演算を行う回数を設定することで、容易に暗号演算を行う回数を変更することができる。
【００４８】
さらに、コンテキスト格納部に複数のコンテキストが格納される。また、コンテキスト制御部により、暗号演算に用いられるコンテキストの退避及び復帰が行われる。これにより、対応するコンテキストをコンテキスト格納部から読み出すことで、多種の演算方法に容易に対応できる。また、暗号演算部は、少なくとも１個のコンテキスト格納できるレジスタ等を備えればよいので、暗号演算部の回路規模を縮小できる。また、多種の演算方法に対するコンテキストを設定し、かつ設定したコンテキストをコンテキスト格納部に格納することで、演算方法の変更及び追加等を容易に設定できる。
【００４９】
このように、本発明に係る機密情報処理方法は、１つのストリームに対して演算方法が一意でない複数回の多種の暗号演算を行え、かつソフトウェアによる制御を容易に行える。
【発明の効果】
【００５０】
以上より、本発明は、１つのストリームに対して演算方法が一意でない複数回の暗号演算を行え、かつソフトウェアによる制御を容易に行える機密情報処理装置、機密情報処理機器及び機密情報処理方法を提供できる。
【発明を実施するための最良の形態】
【００５１】
以下、本発明に係る機密情報処理装置の実施の形態について、図面を参照しながら詳細に説明する。
【００５２】
まず、本発明の実施の形態に係る機密情報処理装置を備える機密情報処理機器の構成を説明する。
【００５３】
図１は、本発明の実施の形態に係る機密情報処理装置を備える機密情報処理機器の外観の一例を示す図である。図１に示すように、機密情報処理機器１００は、例えば、携帯電話機器である。
【００５４】
図２は、機密情報処理機器１００の構成を示すブロック図である。図２に示す機密情報処理機器１００は、１つのストリームに含まれる異なる対象データに対する複数回の暗号演算を行える。また、機密情報処理機器１００は、輻輳する複数のストリームに対して暗号演算を行える。機密情報処理機器１００は、アンテナ１０１と、受信部１０２と、送信部１０３と、表示部１０４と、記憶部１０５と、機密情報処理装置２００とを備える。
【００５５】
アンテナ１０１は、送信又は受信に用いられるアンテナである。
受信部１０２は、外部機器から送信された動画像ストリーム又は音声ストリーム等のストリームを、アンテナ１０１を用いて受信する。
【００５６】
記憶部１０５は、受信部１０２により受信されたストリームを記憶する。また、記憶部１０５は、機密情報処理機器１００により生成された動画像データ等を記憶する。例えば、記憶部１０５は、機密情報処理機器１００が有するカメラ（図示せず）により撮影された動画像データを記憶する。例えば、記憶部１０５は、ＲＡＭ、ハードディスク又は不揮発性メモリ等である。
【００５７】
機密情報処理装置２００は、本発明の実施の形態に係る機密情報処理装置である。機密情報処理装置２００は、受信部１０２により受信されたストリームに含まれる暗号化されたデータを復号化する。また、機密情報処理装置２００は、受信部１０２により受信されたストリームに含まれる平文データ、及び記憶部１０５に保持される動画像データ等を暗号化する。
【００５８】
送信部１０３は、機密情報処理装置２００により暗号化されたストリームを、アンテナ１０１を用いて外部機器に送信する。
【００５９】
表示部１０４は、機密情報処理装置２００により復号化されたストリームを再生し表示する。
【００６０】
なお、機密情報処理装置２００は、記録メディア（ＳＤメモリ等）に記録されるデータに対して暗号演算を行ってもよい。また、機密情報処理装置２００は、ネットワークを介して接続された外部機器との間で送信及び受信されるデータに対して暗号演算を行ってもよい。
【００６１】
また、受信部１０２及び送信部１０３の機能は、専用の回路により実現されてもよいし、ＣＰＵ等がプログラムを実行することにより実現されてもよい。
【００６２】
次に機密情報処理装置２００の構成を説明する。
図３は、本発明の実施の形態に係る機密情報処理装置２００の構成を示すブロック図である。
【００６３】
機密情報処理装置２００は、１つのストリームに含まれる異なる対象データに対する２回の暗号演算を行える。また、機密情報処理装置２００は、輻輳する２つのストリームに対して暗号演算を行える。機密情報処理装置２００は、コンテキスト制御部２１０と、コンテキスト格納部２１１と、ストリーム制御部２２０及び２２１と、ストリーム解析部２３０、２３１、２３２及び２３３と、調停部２４０と、ＡＥＳ演算部２５０と、ＤＥＳ演算部２５１と、ＳＨＡ１演算部２５２とを備える。
【００６４】
コンテキスト格納部２１１は、コンテキスト対応テーブル２１２と、コンテキスト格納テーブル２１３とを格納する。コンテキスト格納部２１１は、例えば、ＲＡＭにより構成される。なお、コンテキスト格納部２１１は、ハードディスク又は不揮発性メモリ等により構成されてもよい。
【００６５】
コンテキスト対応テーブル２１２は、ストリームの種別と、当該ストリームに対して暗号演算を行う回数と、当該暗号演算のそれぞれに対応するコンテキストの種別との対応を示すテーブルである。ここで、コンテキストとは、暗号演算に必要となる情報である。
【００６６】
コンテキスト格納テーブル２１３には、ストリームの暗号演算に必要となる情報がコンテキストとして格納される。すなわち、コンテキスト格納部２１１は、複数のコンテキストを格納する。コンテキスト格納テーブル２１３に含まれる複数のコンテキストは、それぞれコンテキストの種別（コンテキストＩＤ）と、コンテキストの種別にそれぞれ対応する暗号演算に必要となる情報とを含む。具体的には、コンテキストは、暗号演算に用いられる鍵、初期値及び暗号演算途中の中間情報（ＣＢＣモード演算における前ブロックの演算結果等）等を含む。また、コンテキストは、ストリームに含まれるデータのうち暗号演算を行う領域を示す情報を含む。
【００６７】
なお、コンテキスト格納部２１１に格納されるコンテキスト対応テーブル２１２及びコンテキスト格納テーブル２１３は、暗号演算を行うストリームの入力前に、外部装置２０２により設定される。
【００６８】
ストリーム制御部２２０は、外部装置２０１により入力されたストリーム（以下、「入力ストリーム」と呼ぶ。）を、ストリーム解析部２３０又は２３１に出力する。また、ストリーム制御部２２０は、ストリーム解析部２３０又は２３１により出力された暗号演算されたストリーム（以下、「出力ストリーム」と呼ぶ。）を、コンテキスト対応テーブル２１２に応じて、外部装置２０１又は他のストリーム解析部２３０又は２３１に出力する。
【００６９】
また、ストリーム制御部２２０は、外部装置２０１から入出力される入力ストリームの属性を識別する。ストリーム制御部２２０は、識別結果であるストリームＩＤと、コンテキスト対応テーブル２１２とに基づき、外部装置２０１と、ストリーム解析部２３０と、ストリーム解析部２３１との間のデータパスを構成及び制御する。
【００７０】
図４は、コンテキスト対応テーブル２１２の構成の一例を示す図である。
コンテキスト対応テーブル２１２には、入力ストリームに対する演算方法と演算の順番とに関する情報が格納される。図４に示すように、コンテキスト対応テーブル２１２は、ストリーム識別子（ストリームＩＤ）に対して、実行する暗号演算のコンテキストの識別子（コンテキストＩＤ）が記載されたテーブルである。コンテキスト対応テーブル２１２において、ストリームＩＤごとに、１回目の暗号演算に対応するコンテキストＩＤと、２回目の暗号演算に対応するコンテキストＩＤとが記載される。
【００７１】
ストリーム制御部２２０は、コンテキスト対応テーブル２１２において、入力ストリームのストリームＩＤに対して２段目のコンテキストＩＤが指定されている場合、入力ストリームに対して連続した２回の暗号演算を行うと判定し、２段目のコンテキストＩＤが指定されていない場合、入力ストリームに対して１回の暗号演算のみを行う。例えば、図４に示す例では、ストリームＩＤ「２」のストリームに対しては、コンテキストＩＤ「２」を用いた暗号演算が行われ、コンテキストＩＤ「２」を用いた暗号演算が行われた後のストリームに対して、コンテキストＩＤ「３」を用いた暗号演算が行われる。また、ストリームＩＤ「０」のストリームに対しては、コンテキストＩＤ「０」に対応する暗号演算のみが行われ、２回目の暗号演算は行われない。
【００７２】
例えば、コンテキスト対応テーブル２１２の内容は、ストリームの入力前に予め外部装置２０２から設定される。
【００７３】
図５は、ストリーム制御部２２０の構成を示す図である。
ストリーム制御部２２０は、セレクタ３０１と、バッファ３０２とを備える。セレクタ３０１は、ストリーム解析部２３０又は２３１により出力された出力ストリームを選択し外部装置２０１に出力する。バッファ３０２は、ストリーム解析部２３０により出力された出力ストリームを保持し、かつ保持する出力ストリームをストリーム解析部２３１に出力する。また、ストリーム制御部２２０は、外部装置２０１により入力された入力ストリームをストリーム解析部２３０に出力する。
【００７４】
具体的には、入力ストリームに対して１回の暗号演算を行う場合、セレクタ３０１は、ストリーム解析部２３０により出力される出力ストリームを判別し、外部装置２０１に出力する。入力ストリームに対して２回の暗号演算を行う場合、セレクタ３０１は、ストリーム解析部２３１により出力される出力ストリームを選択し、外部装置２０１に出力する。
【００７５】
すなわち、外部装置２０１により入力された入力ストリームに対して１回の暗号演算を行う場合、ストリーム制御部２２０は、外部装置２０１により入力される入力ストリームをストリーム解析部２３０に出力し、かつストリーム解析部２３０により出力される出力ストリームを外部装置２０１に出力する。
【００７６】
また、外部装置２０１により入力された入力ストリームに対して２回の暗号演算を行う場合、ストリーム制御部２２０は、外部装置２０１により入力された入力ストリームをストリーム解析部２３０に出力し、かつストリーム解析部２３１により出力される２回の暗号演算が行われたストリームを外部装置２０１に出力する。さらに、ストリーム制御部２２０は、ストリーム解析部２３０により出力される１回の暗号演算が行われたストリームをバッファ３０２に保持し、バッファ３０２は保持するストリームをストリーム解析部２３１に出力する。
【００７７】
ここで、外部装置２０２は、例えば、機密情報処理機器１００が備えるＣＰＵである。また、外部装置２０１は、例えば、機密情報処理機器１００が備えるＣＰＵ、ＤＭＡコントローラ又はＤＳＰ(Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ)である。
【００７８】
外部装置２０１及び２０２は、コンテキスト制御部２１０を介して、コンテキスト格納部２１１に格納されるコンテキスト対応テーブル２１２及びコンテキスト格納テーブル２１３を書き換えることができる。また、外部装置２０１及び２０２は、コンテキスト制御部２１０を介して、コンテキスト対応テーブル２１２及びコンテキスト格納テーブル２１３を読み出すことができる。なお、機密情報処理装置２００が、外部装置２０１及び２０２を備えてもよい。
【００７９】
ストリーム制御部２２１は、外部装置２０２により入力された入力ストリームをストリーム解析部２３２又は２３３に出力する。また、ストリーム制御部２２１は、ストリーム解析部２３２又は２３３により出力された暗号演算された出力ストリームを外部装置２０２又は他のストリーム解析部２３２又は２３３に出力する。
【００８０】
なお、ストリーム制御部２２１の構成及び詳細な動作は、ストリーム制御部２２０と同様であり説明は省略する。
【００８１】
ストリーム解析部２３０及び２３１は、コンテキスト格納テーブル２１３に含まれるストリームに対応するコンテキストに従い、ストリーム制御部２２０により出力された入力ストリームから暗号演算の対象となる対象データを判別する。ストリーム解析部２３０及び２３１は、対象データを特定するための情報と、入力ストリームとを調停部２４０に出力する。
【００８２】
具体的には、ストリーム解析部２３０及び２３１は、入力ストリームに対応する１組のコンテキストを保持する。ストリーム解析部２３０及び２３１は、保持するコンテキストに含まれる暗号演算を行う領域を示す情報に示される領域のデータを対象データとして判別する。また、ストリーム解析部２３０及び２３１は、調停部２４０から出力される出力ストリームをストリーム制御部２２０に出力する。
【００８３】
ストリーム解析部２３２及び２３３は、コンテキスト格納テーブル２１３に含まれるストリームに対応するコンテキストに従い、ストリーム制御部２２１により出力された入力ストリームから暗号演算の対象となる対象データを判別する。ストリーム解析部２３２及び２３３は、対象データを特定するための情報と、入力ストリームとを調停部２４０に出力する。
【００８４】
具体的には、ストリーム解析部２３２及び２３３は、入力ストリームに対応する１組のコンテキストを保持する。ストリーム解析部２３２及び２３３は、保持するコンテキストに含まれる暗号演算を行う領域を示す情報に示される領域のデータを対象データとして判別する。また、ストリーム解析部２３２及び２３３は、調停部２４０から出力される出力ストリームをストリーム制御部２２１に出力する。
【００８５】
調停部２４０は、ストリーム解析部２３０、２３１、２３２及び２３３により出力された入力ストリームを調停する。具体的には、調停部２４０は、同時に複数のストリーム解析部２３０、２３１、２３２及び２３３から同一の暗号アルゴリズムで処理すべき入力ストリームが入力された場合に、どのストリーム解析部２３０、２３１、２３２及び２３３からの入力ストリームを処理するかを決定する。つまり、調停部２４０は、適切な調停順位に基づき、入力ストリームを順番に処理する。例えば、調停部２４０は、ストリーム解析部２３０、２３１、２３２及び２３３に設定された優先順位に従い処理する入力リクエストを決定する。なお、調停部２４０は、ラウンドロビン方式など他のアルゴリズムを用いて、処理する入力リクエストを決定してもよい。
【００８６】
また、調停部２４０は、ストリーム解析部２３０、２３１、２３２及び２３３から出力された入力ストリームを受信した場合、コンテキスト格納テーブルに従い、処理する暗号アルゴリズムを決定する。調停部２４０は、決定した暗号アルゴリズムに対応した演算部２５０、２５１又は２５２へ入力ストリームと、対象データを特定するための情報とを出力する。
【００８７】
また、調停部２４０は、演算部２５０、２５１又は２５２からの出力ストリームを、入力ストリームの出力元のストリーム解析部２３０、２３１、２３２又は２３３に出力する。
【００８８】
ＡＥＳ演算部２５０は、調停部２４０から入力された入力ストリームに含まれる演算対象部分である対象データに対して秘密鍵暗号アルゴリズムＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）を用いた暗号演算を行う。
【００８９】
ＤＥＳ演算部２５１は、調停部２４０から入力された入力ストリームに含まれる演算対象部分である対象データに対して秘密鍵暗号アルゴリズム秘密鍵暗号アルゴリズムＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）を用いた暗号演算を行う。
【００９０】
すなわち、ＡＥＳ演算部２５０及びＤＥＳ演算部２５１は、調停部２４０により出力された対象データを特定する情報に基づき、ストリーム解析部２３０、２３１、２３２又は２３３により判別された対象データに暗号演算を行う。
【００９１】
具体的には、ＡＥＳ演算部２５０、及びＤＥＳ演算部２５１は、ＥＣＢ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｄｅｂｏｏｋ）モード及びＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎ）モード等の機密モード演算を対象データに行うことで、対象データを暗号化又は復号化する。
【００９２】
また、ＡＥＳ演算部２５０、及びＤＥＳ演算部２５１は、ＣＢＣ−ＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）モード及びＣＭＡＣ（Ｃｉｐｈｅｒ−ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）モード等の認証モードの演算を対象データに行うことで、メッセージ認証子（ＭＡＣ値）を生成する。
【００９３】
また、ＡＥＳ演算部２５０、及びＤＥＳ演算部２５１は、ＣＣＭ（Ｃｏｕｎｔｅｒ−ｍｏｄｅ  ｗｉｔｈ  ＣＢＣ−ＭＡＣ）モードやＧＣＭ（Ｇａｌｏｉｓ／Ｃｏｕｎｔｅｒ  Ｍｏｄｅ）等の認証付機密モードの演算を対象データに行うことで、対象データを暗号化又は復号化し、かつＭＡＣ値を生成する。
【００９４】
ＡＥＳ演算部２５０、及びＤＥＳ演算部２５１は、機密モード演算を実施する場合、調停部２４０から入力された入力ストリームに対して、演算対象外部以外は入力されたデータをそのままとし、演算対象部分を機密モード演算の演算結果に置き換えた出力ストリームを、調停部２４０に出力する。
【００９５】
また、ＡＥＳ演算部２５０、及びＤＥＳ演算部２５１は、認証モードを実施する場合、調停部２４０から入力された入力ストリームをそのまま出力ストリームとして調停部２４０に出力する。また、ＡＥＳ演算部２５０、及びＤＥＳ演算部２５１は、演算対象部分に対して認証モードを適用した演算結果であるＭＡＣ値を、コンテキストとしてコンテキスト制御部２１０に出力する。
【００９６】
また、ＡＥＳ演算部２５０、及びＤＥＳ演算部２５１は、認証付機密モードを実施する場合、調停部２４０から入力された入力ストリームを、演算対象外部分は入力されたデータをそのままとし、演算対象部分を認証付機密モードに含まれる機密モードの演算結果に置き換えた出力ストリームを、調停部２４０に出力する。さらに、ＡＥＳ演算部２５０、及びＤＥＳ演算部２５１は、認証付機密モードに含まれる認証モードの演算結果であるＭＡＣ値を、コンテキストとしてコンテキスト制御部２１０に出力する。
【００９７】
また、ＡＥＳ演算部２５０、及びＤＥＳ演算部２５１は、コンテキスト格納テーブル２１３の設定に応じて、調停部２４０から入力された入力ストリームのうち指定された箇所をＭＡＣ値に置き換え、出力ストリームとして調停部２４０に出力する。
【００９８】
また、ＡＥＳ演算部２５０、及びＤＥＳ演算部２５１は、コンテキスト格納テーブル２１３の設定に応じて、調停部２４０から入力された入力ストリームのうち指定された箇所とＭＡＣ値とを比較する。
【００９９】
ＳＨＡ１演算部２５２は、調停部２４０から入力された入力ストリームのうち演算対象部分に対して、ハッシュアルゴリズムＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）を用いた演算を実行する。
【０１００】
具体的には、ＳＨＡ１演算部２５２は、通常のハッシュ演算及びＨＭＡＣ（Ｋｅｙｅｄ−Ｈａｓｈｉｎｇ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ)モード等の演算を実施することで、ハッシュ値及びＭＡＣ値を生成する。
【０１０１】
ＳＨＡ１演算部２５２は、通常のハッシュ演算又はＨＭＡＣモード等の演算を実施する場合、調停部２４０から入力された入力ストリームをそのまま調停部２４０に出力する。また、ＳＨＡ１演算部２５２は、演算対象部分に対する通常のハッシュ演算又はＨＭＡＣモード等の演算結果であるハッシュ値又はＭＡＣ値を、コンテキストとしてコンテキスト制御部２１０に出力する。
【０１０２】
また、ＳＨＡ１演算部２５２は、コンテキスト格納テーブル２１３の設定に応じて、調停部２４０から入力された入力ストリームのうち指定された箇所をハッシュ値又はＭＡＣ値に置き換え、出力ストリームとして調停部２４０に出力する。
【０１０３】
また、ＳＨＡ１演算部２５２は、コンテキスト格納テーブル２１３の設定に応じて、調停部２４０から入力された入力ストリームのうち指定された箇所と、ハッシュ値又はＭＡＣ値とを比較する。
【０１０４】
以上のように、ＡＥＳ演算部２５０及びＤＥＳ演算部２５１は、認証モード及び認証付機密モードにおいても、機密モードと同様に入力ストリームと同じ長さの出力ストリームを出力する。また、ＳＨＡ１演算部２５２は、入力ストリームと同じ長さの出力ストリームを出力する。よって、秘密鍵暗号アルゴリズム及びハッシュアルゴリズムのアルゴリズム及びモードに関係なくストリームの入出力方法を同一にすることが可能となる。これにより、本発明の実施の形態に係る機密情報処理装置２００は、入力ストリームに対して複数回の演算を容易な制御で行うことができる。
【０１０５】
また、ＡＥＳ演算部２５０、ＤＥＳ演算部２５１及びＳＨＡ１演算部２５２は、それぞれ１組のコンテキスト２６０、２６１及び２６２を保持する。ＡＥＳ演算部２５０、ＤＥＳ演算部２５１及びＳＨＡ１演算部２５２は、それぞれ保持するコンテキスト２６０、２６１及び２６２を用いて暗号演算を行う。
【０１０６】
コンテキスト制御部２１０は、演算部２５０、２５１及び２５２が入力ストリームに対応するコンテキストを保持していない場合に、演算部２５０、２５１及び２５２に保持されるコンテキスト２６０、２６１、２６２をコンテキスト格納部２１１に退避させ、かつコンテキスト格納部２１１に格納される複数のコンテキストのうち演算部２５０、２５１及び２５２による暗号演算に用いられるコンテキストを演算部２５０、２５１及び２５２に書き込むことで復帰させる。
【０１０７】
また、コンテキスト制御部２１０は、ストリーム解析部２３０、２３１、２３２及び２３３が入力ストリームに対応するコンテキストを保持していない場合に、ストリーム解析部２３０、２３１、２３２及び２３３に保持されるコンテキストをコンテキスト格納部２１１に退避させ、かつコンテキスト格納部２１１に格納される複数のコンテキストのうち入力ストリームに対応するコンテキストをストリーム解析部２３０、２３１、２３２及び２３３に書き込む。
【０１０８】
また、コンテキスト制御部２１０と、ストリーム制御部２２０及び２２１と、ストリーム解析部２３０、２３１、２３２及び２３３と、調停部２４０と、ＡＥＳ演算部２５０と、ＤＥＳ演算部２５１と、ＳＨＡ１演算部２５２とは、専用の回路（ハードウェア）により構成される。
【０１０９】
図６は、コンテキスト格納テーブル２１３の構成の一例を示す図である。
コンテキスト格納テーブル２１３には、複数のコンテキストが保存され、コンテキストＩＤを用いてそれぞれのコンテキストが区別される。
【０１１０】
コンテキスト格納テーブル２１３に含まれる各コンテキストは、コンテキストＩＤと、アルゴリズムと、モードと、ヘッダ長と、ペイロード長と、フッタ長と、端数出力フラグと、ペイロード連続回数と、ストリーム非出力フラグと、ハッシュ値置換位置と、ハッシュ値比較位置と、鍵及び初期値と、中間情報と、ハッシュ値とを含む。
【０１１１】
コンテキストに含まれるアルゴリズムは、入力ストリームに対する暗号演算に用いられる暗号アルゴリズムである。コンテキストに含まれるモードは、入力ストリームに対する暗号演算の暗号モードである。例えば、コンテキスト格納テーブル２１３において、コンテキストＩＤ「０」では、入力ストリームに対して秘密鍵暗号アルゴリズムＡＥＳを用いてＣＢＣモードで復号化することが示されている。
【０１１２】
また、コンテキストに含まれるアルゴリズムはそれぞれ、機密情報処理装置２００が備える複数の演算部２５０、２５１及び２５２に対応する。図６に示す例では、アルゴリズム「ＡＥＳ」、「ＤＥＳ」及び「ＳＨＡ１」は、それぞれＡＥＳ演算部２５０、ＤＥＳ演算部２５１及びＳＨＡ１演算部２５２に対応する。
【０１１３】
調停部２４０は、コンテキストに含まれるアルゴリズムに対応する演算部２５０、２５１又は２５２にストリーム解析部２３０、２３１、２３２又は２３３から出力された入力ストリームを出力する。
【０１１４】
また、複数の演算部２５０、２５１及び２５２は、コンテキストに含まれるモードに応じた暗号演算を入力ストリームに対して実行する。
【０１１５】
入力ストリームは先頭から順に、暗号演算の対象外データであるヘッダと、暗号演算の対象データであるペイロードと、暗号演算の対象外データであるフッタとを含む。
【０１１６】
コンテキストに含まれるヘッダ長、ペイロード長及びフッタ長は、それぞれ入力ストリームに含まれるヘッダ、ペイロード及びフッタの長さである。また、コンテキストに含まれるヘッダ長、ペイロード長及びフッタ長は、ストリームに含まれるデータのうち暗号演算を行う領域を示す情報である。
【０１１７】
ここで、ストリーム解析部２３０、２３１、２３２及び２３３に保持されるコンテキストは、コンテキスト格納テーブル２１３に含まれる情報のうち、コンテキストＩＤ、ヘッダ長、ペイロード長及びフッタ長である。
【０１１８】
ストリーム解析部２３０、２３１、２３２及び２３３は、保持するコンテキストに含まれるヘッダ長、ペイロード長及びフッタ長を用いて、ヘッダ、ペイロード及びフッタの順にストリームを分割し、かつペイロードを対象データと判別する。ここで、ストリーム解析部２３０、２３１、２３２及び２３３が参照するコンテキストは、コンテキスト対応テーブル２１２において入力ストリームのストリームＩＤに対応するコンテキストＩＤを有するコンテキストである。
【０１１９】
なお、ストリーム長がヘッダ長と、ペイロード長と、フッタ長との合計より長い場合は、ストリーム解析部２３０、２３１、２３２及び２３３は、長い部分に対して、再度、ヘッダ、ペイロード及びフッタの順にストリームを分割しペイロードを判別する。
【０１２０】
例えば、入力ストリームのストリーム長が５１２バイトであり、かつ当該入力ストリームの演算に用いられるコンテキストに、ヘッダ長が３２バイト、ペイロード長が１２８バイト、及びフッタ長が９６バイトと設定されている場合、ストリーム解析部２３０、２３１、２３２及び２３３は、入力ストリームの先頭から３２バイトをヘッダ、その次の１２８バイトをペイロード、その次の９６バイトをフッタ、その次の３２バイトをヘッダ、その次の１２８バイトをペイロード、その次の９６バイトをフッタと判定する。
【０１２１】
コンテキストに含まれる端数出力フラグは、外部装置２０１及び２０２からのストリームの入力がストリームの途中で中断し、かつ中断前に入力されたペイロード長が、適用する暗号アルゴリズムの演算単位の整数倍でない場合、入力末尾に存在する演算単位に満たないペイロードである端数ペイロード（端数データ）の処理方法を規定するフラグである。
【０１２２】
演算部２５０、２５１及び２５２は、コンテキストに含まれる端数出力フラグに基づき、端数ペイロードを外部装置２０１及び２０２、又はコンテキスト格納部２１１に出力する。
【０１２３】
端数出力フラグがＯＮの場合、演算部２５０、２５１及び２５２は、演算単位に満たないため暗号演算が行われていないペイロードを、調停部２４０と、ストリーム解析部２３０、２３１、２３２又は２３３と、ストリーム制御部２２０又は２２１とを介して外部装置２０１又は２０２に出力する。この場合、処理を再開するためには、外部装置２０１及び２０２は、ストリームの続きを入力する際に、ストリームの先頭に、一旦出力された端数ペイロードを結合した上で機密情報処理装置２００に入力する必要がある。
【０１２４】
端数出力フラグがＯＦＦの場合、演算部２５０、２５１及び２５２は、端数データをコンテキスト格納部２１１に出力する。演算部２５０、２５１及び２５２により出力された端数ペイロードは、コンテキスト制御部２１０を介して、コンテキスト格納部２１１に退避される。コンテキスト格納部２１１は、端数ペイロードをコンテキストに含まれる中間情報として格納する。
【０１２５】
外部装置２０１又は２０２から後続のストリームが入力された場合、演算部２５０、２５１及び２５２は、コンテキスト制御部２１０を介してコンテキスト格納部２１１に格納される端数データを読み出す。演算部２５０、２５１及び２５２は、後続のストリームに対する暗号演算の際に、端数ペイロードを含むデータの暗号演算を行う。
【０１２６】
このように、端数出力フラグがＯＦＦの場合には、演算部２５０、２５１及び２５２は、端数データを後続のストリームのペイロードの先頭に結合し、暗号演算を行う。つまり、機密情報処理装置２００内で自動的に端数ペイロードの処理が行われる。これにより、外部装置２０１及び２０２は、ストリームの先頭に一旦出力された端数ペイロードを結合する等の処理を行う必要がない。つまり、機密情報処理装置２００を用いることで、外部装置２０１及び２０２の処理量を削減することができる。すなわち、本発明の実施の形態に係る機密情報処理装置２００は、容易なソフトウェア制御で、端数データの処理を行うことができる。
【０１２７】
通常、秘密鍵暗号演算及びハッシュ演算においては、各ペイロードが連続演算の単位として扱われる。例えば、秘密鍵暗号演算であればペイロード毎にＣＢＣモード等の演算が実施される。また、ハッシュ演算であればペイロード毎にハッシュ値が求められる。しかしながら、ヘッダ及びフッタで分割され離散的に存在する複数のペイロードを、１つの長いペイロードとして捉えて演算する場合もある。
【０１２８】
コンテキストに含まれるペイロード連続回数は、離散的に存在する複数のペイロードを、１つの長いペイロードとして捉えて演算するためのものである。ペイロード連続回数は、ストリーム中の離れた領域のデータを一つのデータとして暗号演算するか否かを示す情報である。例えば、ペイロード連続回数が２以上の場合、２以上のペイロードを１つの長いペイロードとして暗号演算される。また、ペイロード連続回数は、何個のペイロードを１つのペイロードとして暗号演算するかを示す情報である。
【０１２９】
演算部２５０、２５１及び２５２は、ペイロード連続回数が２以上の場合、ストリーム中の離れた領域のデータを一つのデータとして暗号演算する。また、演算部２５０、２５１及び２５２は、ペイロード連続回数に示される数の領域のデータを一つのデータとして暗号演算する。
【０１３０】
つまり、演算部２５０、２５１及び２５２は、入力ストリームの先頭から、ペイロード連続回数に指定された回数ずつ、複数のペイロードを暗号演算の単位として暗号演算を行う。
【０１３１】
例えば、入力ストリームのストリーム長が２０２４バイトであり、かつ当該入力ストリームの演算に用いられるコンテキストに、ヘッダ長が３２バイト、ペイロード長が１２８バイト、フッタ長が９６バイト、及びペイロード連続回数が２回と設定されている場合、演算部２５０、２５１及び２５２は、入力ストリームの先頭から３３バイト目から１２８バイト分のデータと、先頭から２８９バイト目から１２８バイト分のデータとの合計２５６バイトを１つのデータとして暗号演算を実施する。さらに、演算部２５０、２５１及び２５２は、ストリームの先頭から５４５バイト目から１２８バイト分のデータと、先頭から８０１バイト目から１２８バイト分のデータとの合計２５６バイトに対して暗号演算を実施する。
【０１３２】
コンテキストに含まれるストリーム非出力フラグは、出力ストリームを外部装置２０１及び２０２に出力しないことを設定するためのフラグである。ストリーム非出力フラグがＯＦＦの場合、ストリーム制御部２２０及び２２１は、出力ストリームを外部装置２０１、２０２へ出力する。ストリーム非出力フラグがＯＮの場合、ストリーム制御部２２０及び２２１は、出力ストリームを外部装置２０１、２０２へ出力しない。例えば、ストリームに対してハッシュ演算のみを行う場合等にストリーム非出力フラグがＯＮに設定される。
【０１３３】
コンテキストに含まれるハッシュ値置換位置は、入力ストリームに含まれるデータの所定の位置を示す情報である。演算部２５０、２５１及び２５２は、ストリームに対応するハッシュ値置換位置に示される所定の位置のデータをハッシュ値又はＭＡＣ値に置き換える。
【０１３４】
具体的には、ＡＥＳ演算部２５０及びＤＥＳ演算部２５１は、入力ストリームに対して認証モード及び認証付機密モードを実行する場合、ハッシュ値置換位置に示される入力ストリームの所定の位置のデータを演算結果であるＭＡＣ値に置き換え、出力ストリームとして調停部２４０に出力する。
【０１３５】
また、ＳＨＡ１演算部２５２は、入力ストリームに対してハッシュ演算を実行する場合、ハッシュ値置換位置に示される入力ストリームの所定の位置のデータを演算結果であるハッシュ値又はＭＡＣ値に置き換え、出力ストリームとして調停部２４０に出力する。
【０１３６】
例えば、アルゴリズムがＳＨＡ１、ハッシュ値置換位置が２００を示す場合、ＳＨＡ１演算部２５２は、ストリームの先頭から２００バイト目から２０バイト分のデータをＳＨＡ１の演算結果であるハッシュ値に置き換える。なお、ハッシュ値置換位置が０を示す場合は、演算部２５０、２５１及び２５２は、ハッシュ値又はＭＡＣ値の置き換えを行わず、ハッシュ値又はＭＡＣ値をコンテキスト制御部２１０に出力する。コンテキスト制御部２１０は、演算部２５０、２５１及び２５２により出力されたハッシュ値及びＭＡＣ値をコンテキストとして格納する。
【０１３７】
例えば、入力ストリームに対してＳＨＡ１を用いたハッシュ演算を行う場合、ストリーム非出力フラグをＯＮに設定し、ハッシュ値置換位置を０に設定することで、機密情報処理装置２００は、演算結果であるハッシュ値をコンテキスト格納部２１１に格納し、かつ入力ストリーム（出力ストリーム）を外部装置２０１及び２０２に出力しない。
【０１３８】
コンテキストに含まれるハッシュ値比較位置は、入力ストリームに含まれるデータの所定の位置を示す情報である。演算部２５０、２５１及び２５２は、入力ストリームに対応するハッシュ値比較位置に示される所定の位置のデータと、演算結果であるハッシュ値又はＭＡＣ値とが一致するか否かを判定する。また、演算部２５０、２５１及び２５２による判定結果は、外部装置２０１及び２０２に出力される。
【０１３９】
具体的には、ＡＥＳ演算部２５０及びＤＥＳ演算部２５１は、入力ストリームに対して認証モード及び認証付機密モードを実行する場合、ハッシュ値比較位置に示される入力ストリームの所定の位置のデータと、演算結果であるＭＡＣ値とを比較し、比較結果を外部装置２０１又は２０２に出力する。
【０１４０】
また、ＳＨＡ１演算部２５２は、入力ストリームに対してハッシュ演算を実行する場合、ハッシュ値比較位置に示される入力ストリームの所定の位置のデータと、演算結果であるハッシュ値又はＭＡＣ値とを比較し、比較結果を外部装置２０１又は２０２に出力する。
【０１４１】
例えば、アルゴリズムにＳＨＡ１、ヘッダ長に０、ペイロード長に２００、フッタ長に５０、及びハッシュ値比較位置に２００が設定される場合、ＳＨＡ１演算部２５２は、ペイロード部分の２００バイトに対するＳＨＡ１による演算結果であるハッシュ値と、ストリームの先頭から２００バイト目からＳＨＡ１のハッシュ値の長さである２０バイト分のデータとを比較する。これにより、機密情報処理装置２００は、ストリーム中にハッシュ値の期待値が含まれている場合に、演算と同時に改竄検出を行える。なお、ハッシュ値比較位置が０である場合は、演算部２５０、２５１及び２５２は比較を行わない。
【０１４２】
コンテキストに含まれる鍵及び初期値は、アルゴリズム及びモードに応じて必要となる鍵及び初期値である。コンテキストに含まれる鍵及び初期値は、アルゴリズム及びモードに応じて適宜設定される。
【０１４３】
コンテキストに含まれる中間情報は、演算の途中結果、演算単位に満たないペイロード（端数ペイロード）、及び各種内部状態等である。
【０１４４】
コンテキストに含まれるハッシュ値は、演算部２５０、２５１及び２５２により生成されたハッシュ値又はＭＡＣ値である。
【０１４５】
コンテキスト格納テーブル２１３の内容は、中間情報及びハッシュ値を除き、入力ストリームの入力前に予め外部装置２０２から設定される。
【０１４６】
なお、コンテキスト格納テーブル２１３において、「・・・」で示す鍵、初期値、中間値及びハッシュ値は演算に応じて適切な値が格納されているものとする。
【０１４７】
また、演算部２５０、２５１及び２５２に保持されるコンテキスト２６０、２６１及び２６２は、コンテキスト格納テーブル２１３に含まれるコンテキストのうち、モードと、端数出力フラグと、ペイロード連続回数と、ハッシュ値置換位置と、ハッシュ値比較位置と、鍵及び初期値と、中間情報と、ハッシュ値とを含む。
【０１４８】
次に、機密情報処理装置２００の動作を説明する。
図７は、機密情報処理装置２００による暗号演算処理の流れを示すフローチャートである。なお、外部装置２０１から機密情報処理装置２００にストリームが入力される場合を例に説明する。
【０１４９】
図７に示すように、まず、ストリーム制御部２２０は、入力されたストリーム（以下、「第１ストリーム」と呼ぶ。）の識別を行う（Ｓ１０１）。具体的には、ストリーム制御部２２０は、第１ストリームのストリームＩＤを取得する。例えば、ストリーム制御部２２０は、第１ストリームに含まれるストリームＩＤを参照することで、ストリームＩＤを取得する。ストリーム制御部２２０は、コンテキスト対応テーブル２１２を参照し、第１ストリームのストリームＩＤに対する暗号演算の実施回数と、それぞれの暗号演算で使用するコンテキストＩＤとを判定する。その後、ストリーム制御部２２０は、第１ストリームを、ストリーム解析部２３０に出力する。
【０１５０】
また、ストリーム制御部２２０は、ストリーム解析部２３０が、第１ストリームに対応するコンテキストを保持していない場合には、コンテキスト制御部２１０にコンテキストの退避及び復帰の要求を送信する。ストリーム制御部２２０からの要求を受信したコンテキスト制御部２１０は、ストリーム解析部２３０に保持されるコンテキストをコンテキスト格納部２１１に退避させ、かつコンテキスト格納部２１１に格納されるコンテキストのうち第１ストリームに対応するコンテキストをストリーム解析部２３０に復帰させる。例えば、ストリーム制御部２２０は、ストリーム解析部２３０に保持されるコンテキストに含まれるコンテキストＩＤと、判定した第１ストリームに対応するコンテキストＩＤとが一致しない場合に、コンテキストの退避及び復帰の要求を送信する。また、コンテキスト制御部２１０は、退避及び復帰の要求に含まれるコンテキストＩＤを参照することで、ストリーム解析部２３０に書き込むコンテキストを決定する。
【０１５１】
次に、ストリーム解析部２３０は、保持するコンテキストを参照し、１回目の暗号演算に用いられるコンテキストに含まれるヘッダ長、ペイロード長及びフッタ長を用いて、第１ストリームからペイロードを対象データ（以下、「第１対象データ」と呼ぶ。）と判別する（Ｓ１０２）。次に、ストリーム解析部２３０は、第１ストリームを調停部２４０に出力する。
【０１５２】
次に、調停部２４０は、コンテキスト格納テーブル２１３を参照し、第１ストリームに対する暗号演算の暗号アルゴリズムを判定する（Ｓ１０３）。調停部２４０は、判定した暗号アルゴリズムに対応する演算部２５０、２５１又は２５２に第１ストリームを出力する。ここでは、ＡＥＳ演算部２５０に第１ストリームが出力されるとする。
【０１５３】
また、調停部２４０は、同時に複数のストリーム解析部２３０、２３１、２３２及び２３３から同一の演算部２５０、２５１又は２５２で処理すべき入力ストリームが入力された場合に、どの入力ストリームを処理するかを決定する。
【０１５４】
調停部２４０は、ＡＥＳ演算部２５０に保持されるコンテキスト２６０の切換えが必要であるか否かを判定する（Ｓ１０４）。具体的には、調停部２４０は、第１ストリームの暗号演算に用いられるコンテキストを、ＡＥＳ演算部２５０が保持しているか否かを判定する。例えば、調停部２４０は、第１ストリームの暗号演算に用いられるコンテキストのコンテキストＩＤと、コンテキスト２６０のコンテキストＩＤが一致する場合には、コンテキスト切換えが不要であると判定し（Ｓ１０４でＮｏ）、一致しない場合には、コンテキスト切換えが必要であると判定する（Ｓ１０４でＹｅｓ）。
【０１５５】
コンテキスト切換えが必要な場合（Ｓ１０４でＹｅｓ）、調停部２４０は、コンテキスト制御部２１０にコンテキスト２６０の退避及び復帰の要求を送信する（Ｓ１０５）。コンテキストの復帰及び退避の要求を受信したコンテキスト制御部２１０は、コンテキストの退避及び復帰を行う（Ｓ１０６）。具体的には、コンテキスト制御部２１０は、ＡＥＳ演算部２５０に保持されるコンテキスト２６０をコンテキスト格納部２１１に退避させる。次に、コンテキスト制御部２１０は、コンテキスト格納部２１１に格納させる第１ストリームの暗号演算に用いられるコンテキストをＡＥＳ演算部２５０に書き込む。
【０１５６】
コンテキスト２６０の退避及び復帰が行われた後、又はコンテキスト切換えが不要な場合（Ｓ１０４でＮｏ）、次に、ＡＥＳ演算部２５０は、コンテキスト２６０のモードで指定される暗号演算を、ステップＳ１０２で判別された第１対象データに対して行う（Ｓ１０７）。ここで、ＡＥＳ演算部２５０は、コンテキスト２６０に含まれる鍵、初期値、及び中間情報等を用いて暗号演算を行う。
【０１５７】
ＡＥＳ演算部２５０は、暗号演算した第１ストリーム（以下、「第２ストリーム」と呼ぶ。）を調停部２４０に出力する。調停部２４０は、第１ストリームの出力元であるストリーム解析部２３０に、第２ストリームを出力する。ストリーム解析部２３０は、第２ストリームをストリーム制御部２２０に出力する。
【０１５８】
以上の処理により、１回目の暗号演算が完了する。
入力ストリームに対して１回の暗号演算のみを行う場合、又はコンテキスト対応テーブル２１２に設定された全ての暗号演算が終了した場合（Ｓ１０８でＹｅｓ）、ストリーム制御部２２０は、第２ストリームを外部装置２０１に出力する（Ｓ１０９）。
【０１５９】
一方、入力ストリームに対して２回の暗号演算を行う場合であり、かつ全ての暗号演算が行われていない場合（Ｓ１０８でＮｏ）、ストリーム制御部２２０は、第２ストリームを他のストリーム解析部２３１に出力する。また、ストリーム制御部２２０は、１回目の処理の場合と同様に、ストリーム解析部２３１が第２ストリームに対応するコンテキストを保持していない場合には、コンテキストの退避及び復帰の要求をコンテキスト制御部２１０に送信する。
【０１６０】
ストリーム解析部２３１は、保持するコンテキストを参照し、２回目の暗号演算に用いられるコンテキストに含まれるヘッダ長、ペイロード長及びフッタ長を用いて、第２ストリームからペイロードを対象データ（以下、「第２対象データ」と呼ぶ。）と判別する（Ｓ１０２）。次に、ストリーム解析部２３１は、第２ストリームを調停部２４０に出力する。
【０１６１】
次に、調停部２４０は、コンテキスト格納テーブル２１３を参照し、第２ストリームに対する暗号演算の暗号アルゴリズムを判定する（Ｓ１０３）。調停部２４０は、判定した暗号アルゴリズムに対応する演算部２５０、２５１又は２５２に第２ストリームを出力する。ここでは、ＳＨＡ１演算部２５２に第２ストリームが出力されるとする。
【０１６２】
なお、ステップＳ１０４からＳ１０７までの処理は、上述した１回目の暗号演算の処理と同様であり説明は省略する。
【０１６３】
ＳＨＡ１演算部２５２は、暗号演算した第２ストリーム（以下、「第３ストリーム」と呼ぶ。）を調停部２４０に出力する。調停部２４０は、第２ストリームの出力元であるストリーム解析部２３１に、第３ストリームを出力する。ストリーム解析部２３１は、第３ストリームをストリーム制御部２２０に出力する。
【０１６４】
以上の処理により、２回目の暗号演算が完了する。
コンテキスト対応テーブル２１２に２回の暗号演算が設定されていた場合には、２回の暗号演算が完了したので（Ｓ１０８でＹｅｓ）、ストリーム制御部２２０は、第３ストリームを外部装置２０１に出力する（Ｓ１０９）。
【０１６５】
なお、外部装置２０２からストリームが入力される場合の処理の流れも図７と同様である。
【０１６６】
また、図７において、１回目の暗号演算が終了した後に、２回目の暗号演算に対するコンテキストの退避及び復帰等の処理が行われているが、１回目の暗号演算と２回目の暗号演算とで異なる演算部２５０、２５１及び２５２を用いる場合には、１回目の暗号演算が終了する前に、２回目の暗号演算に対するコンテキストの退避及び復帰等の処理を行ってもよい。
【０１６７】
以下、機密情報処理装置２００による具体的な演算例を説明する。
まず、第１の演算例として、２つの輻輳するストリームが入力される例を説明する。具体的には、ストリームＩＤ「０」及びストリームＩＤ「１」の２種類のストリームが外部装置２０１経由で入力される。
【０１６８】
ストリームＩＤ「０」及びストリームＩＤ「１」の２種類のストリームはともに長さが２５６バイトとする。ストリームＩＤ「０」及びストリームＩＤ「１」に対する暗号演算処理は、ストリームＩＤ「０」の前半１２８バイト、ストリームＩＤ「１」の前半１２８バイト、ストリームＩＤ「０」の後半１２８バイト、及びストリームＩＤ「１」の後半１２８バイトの順に、時分割処理されるとする。
【０１６９】
図４に示すように、ストリームＩＤ「０」のストリームには、コンテキストＩＤ「０」のコンテキストを用いた暗号演算が行われ、ストリームＩＤ「１」のストリームには、コンテキストＩＤ「１」のコンテキストを用いた暗号演算が行われる。
【０１７０】
また、図６に示すように、コンテキストＩＤ「０」のコンテキストには、ＡＥＳを用いたＣＢＣ復号化、ヘッダ長に７バイト、ペイロード長に２４０バイト、フッタ長に９バイト、端数出力フラグにＯＮ、ペイロード連続回数に１、及びストリーム非出力フラグにＯＦＦが、予め外部装置２０２から設定されている。
【０１７１】
また、図６に示すように、コンテキストＩＤ「１」のコンテキストには、ＨＭＡＣ−ＳＨＡ１、ヘッダ長に５バイト、ペイロード長に２５１バイト、フッタ長に０バイト、端数出力フラグにＯＦＦ、ペイロード連続回数に１、ストリーム非出力フラグにＯＮ、ハッシュ値置換位置に０、及びハッシュ値比較位置に０が、予め外部装置２０２から設定されている。
【０１７２】
図８は、機密情報処理装置２００による第１の演算例におけるストリームＩＤ「０」のストリームの処理を示す図である。図９は、機密情報処理装置２００による第１の演算例におけるストリームＩＤ「１」のストリームの処理を示す図である。
【０１７３】
機密情報処理装置２００は、ストリームＩＤ「０」のストリームを、それぞれ１２８バイトの前半部のストリーム５００と後半部のストリーム５０１とに分けて処理する。また、機密情報処理装置２００は、ストリームＩＤ「１」のストリームを、それぞれ１２８バイトの前半部のストリーム５２０と後半部のストリーム５２１とに分けて処理する。
【０１７４】
機密情報処理装置２００は、最初にストリームＩＤ「０」の前半部であるストリーム５００の処理を行う。
【０１７５】
外部装置２０１からストリーム制御部２２０にストリームの入力が開始されると、ストリーム制御部２２０はコンテキスト格納部２１１に格納されるコンテキスト対応テーブル２１２を参照し、ストリームＩＤ「０」に対してコンテキストＩＤ「０」のコンテキストを用いた１回の暗号演算を行うことを確認する。これにより、ストリーム制御部２２０は、ストリームＩＤ「０」のストリームをストリーム解析部２３０に出力し、ストリーム解析部２３０により出力される暗号演算が行われたストリームＩＤ「０」のストリームを外部装置２０１に出力するように内部のパスを制御する。
【０１７６】
また、ストリーム制御部２２０は、ストリーム解析部２３０に対するコンテキストの退避及び復帰の要求をコンテキスト制御部２１０に送信する。要求を受信したコンテキスト制御部２１０は、ストリーム解析部２３０に保持されるコンテキストを退避し、コンテキストＩＤ「０」のコンテキストをストリーム解析部２３０に復帰させる。
【０１７７】
ストリーム解析部２３０にコンテキストＩＤ「０」に対応するコンテキストが保持されると、ストリーム制御部２２０は、ストリーム解析部２３０へのストリームＩＤ「０」のストリームの入力を開始する。
【０１７８】
ストリーム解析部２３０は、保持するコンテキストに従って、ストリームＩＤ「０」のストリームに対して対象データを判別する。ストリーム解析部２３０は、対象データを特定するための情報と、ストリームＩＤ「０」のストリームとを調停部２４０に出力する。
【０１７９】
調停部２４０は、コンテキスト格納テーブル２１３のストリームＩＤ「０」に対応するコンテキストに含まれるアルゴリズムに従って、ストリームに対してＡＥＳ演算が行われることを確認する。調停部２４０は、ＡＥＳ演算部２５０に保持されるコンテキスト２６０に対するコンテキストの退避及び復帰の要求をコンテキスト制御部２１０に送信する。
【０１８０】
ＡＥＳ演算部２５０にコンテキストＩＤ「０」に対応するコンテキスト２６０が保持されると、調停部２４０は、ＡＥＳ演算部２５０へのストリーム入力を開始する。
【０１８１】
ＡＥＳ演算部２５０は、ヘッダ部分の７バイトについては、演算することなくそのまま調停部２４０に出力し、ペイロード部分については順次暗号演算し、調停部２４０に出力する。
【０１８２】
調停部２４０に入力されたＡＥＳ演算結果は、ストリーム解析部２３０及びストリーム制御部２２０を経て、外部装置２０１へ出力される。
【０１８３】
ここで、ストリーム５００にはペイロードが１２１バイト含まれる。ＡＥＳの演算単位は１６バイトであるため、１２１バイトを１６で割った余りである最後の９バイトが演算単位に満たない端数ペイロード５０２となる。
【０１８４】
コンテキストＩＤ「０」においては、端数出力フラグがＯＮのため、ストリーム解析部２３０は、ストリーム制御部２２０を介して、端数ペイロード５０２を外部装置２０１に出力する。
【０１８５】
従って、外部装置２０１に出力されるストリーム５１０は、ヘッダが７バイト、ペイロードのうちＡＥＳ演算結果である１１２バイト、端数ペイロードが９バイトの合計１２８バイトとなる。
【０１８６】
次に、図９に示すように、機密情報処理装置２００は、ストリームＩＤ「１」のストリームの前半部であるストリーム５２０の処理を行う。外部装置２０１から入力されたストリームＩＤ「１」のストリームは、ストリーム制御部２２０、ストリーム解析部２３１及び調停部２４０を経由して、ＳＨＡ１演算部２５２に入力される。また、ストリームＩＤ「０」のストリーム５００に対する処理と同様に、ストリーム解析部２３１及びＳＨＡ１演算部２５２が保持するコンテキストの退避及び復帰が行われる。
【０１８７】
ストリーム５２０にはペイロードが１２３バイト含まれるが、ＳＨＡの演算単位は６４バイトであるため、１２３バイトを６４で割った余りである最後の５９バイトが演算単位に満たない端数ペイロード５２２となる。
【０１８８】
コンテキストＩＤ「１」のコンテキストに含まれる端数出力フラグがＯＦＦのため、ＳＨＡ１演算部２５２は、端数ペイロード５２２をコンテキストとしてコンテキスト格納部２１１に退避する。
【０１８９】
また、コンテキストＩＤ「１」のコンテキストに含まれるストリーム非出力フラグがＯＮであるため、ストリーム制御部２２０は、外部装置２０２にストリームを出力しない。
【０１９０】
次に、機密情報処理装置２００は、ストリームＩＤ「０」のストリームの後半部であるストリーム５０１の処理を行う。
【０１９１】
ここで、ストリーム５００の処理時に端数ペイロード５０２が機密情報処理装置２００の外部に出力されたため、外部装置２０１は、ストリーム５０１の処理にあたっては、ストリーム５０１の先頭に端数ペイロード５０２を連結した、合計１３７バイトを入力する必要がある。
【０１９２】
機密情報処理装置２００は、入力されたストリームに随時ＡＥＳ演算を実施し、ＡＥＳ演算結果１２８バイトとフッタ９バイトで構成されるストリーム５１１を、外部装置２０１に出力する。
【０１９３】
最後に、機密情報処理装置２００は、ストリームＩＤ「１」のストリームの後半部であるストリーム５２１の処理を行う。
【０１９４】
ストリーム５２０の処理時に、端数ペイロード５２２がコンテキストとして退避されているため、ストリーム５２１の処理にあたっては、ＳＨＡ１演算部２５２は、端数ペイロード５２２とストリーム５２１とを連結する。すなわち、端数ペイロード５２２の処理が機密情報処理装置２００内部で行われるので、外部装置２０１は、端数ペイロード５２２の処理を行わなくてもよい。
【０１９５】
２５１バイトのペイロードに対するＨＭＡＣ−ＳＨＡ１を用いた演算結果であるＭＡＣ値５２３は、コンテキスト格納部２１１に退避され、コンテキストＩＤ「１」に含まれるハッシュ値として格納される。これにより、外部装置２０２は、コンテキスト格納部２１１に格納されたハッシュ値を読み出すことができる。
【０１９６】
以上のように、機密情報処理装置２００は、２つの輻輳するストリームに対して、異なる暗号演算を行うことができる。
【０１９７】
次に、第２の演算例として、１つのストリームに対して、２回の暗号演算を行う例を説明する。具体的には、１回目の暗号演算としてＨＭＡＣ−ＳＨＡ１演算が行われ、演算により生成されたＭＡＣ値がストリームに組み込まれる。２回目の暗号演算として、ＡＥＳ暗号化が行われる。
【０１９８】
ストリームＩＤ「２」のストリームが外部装置２０１経由で入力されるとする。ストリームＩＤ「２」のストリームは、長さが２５６バイトとする。ストリームＩＤ「２」のストリームに対する暗号演算処理は、前半１２８バイト、後半１２８バイトの順に２回に分けて処理されるとする。
【０１９９】
図４に示すように、ストリームＩＤ「２」のストリームには、コンテキストＩＤ「２」のコンテキストを用いた１回目の暗号演算が行われ、さらに、１回目の暗号演算が行われたストリームに対してコンテキストＩＤ「３」のコンテキストを用いた２回目の暗号演算が行われる。
【０２００】
また、図６に示すように、コンテキストＩＤ「２」のコンテキストには、ＨＭＡＣ−ＳＨＡ１、ヘッダ長に４バイト、ペイロード長に１９６バイト、フッタ長に５６バイト、端数出力フラグにＯＦＦ、ペイロード連続回数に１、ストリーム非出力フラグにＯＦＦ、ハッシュ値置換位置に２０１、及びハッシュ値比較位置に０が、予め外部装置２０２から設定されている。
【０２０１】
また、コンテキストＩＤ「３」のコンテキストには、ＡＥＳを用いたＣＢＣ暗号化、ヘッダ長に３２バイト、ペイロード長に２２４バイト、フッタ長に０バイト、端数出力フラグにＯＦＦ、ペイロード連続回数に１、及びストリーム非出力フラグにＯＦＦが、予め外部装置２０２から設定されている。
【０２０２】
図１０は、機密情報処理装置２００による第２の演算例におけるストリームの構成を示す図である。図１１は、機密情報処理装置２００による第２の演算例におけるストリームの処理を示す図である。
【０２０３】
図１０に示すストリーム６００は、外部装置２０１から機密情報処理装置２００に入力される２５６バイトのストリームである。ＨＭＡＣ−ＳＨＡ１演算においては、ストリーム６００のうち、データＡがヘッダ、データＢとデータＣとを合わせたものがペイロード、データＤとデータＥとを合わせたものがフッタとなる。また、ＡＥＳ演算においては、ストリーム６００のうち、データＡとデータＢとを合わせたものがヘッダ、データＣとデータＤとデータＥとを合わせたものがペイロードとなる。
【０２０４】
以下、処理手順に関して、第１の演算例と異なる点を中心に説明し、重複する説明は省略する。
【０２０５】
まず、ストリームＩＤ「２」のストリームの前半部であるストリーム６１０に対する処理を説明する。
【０２０６】
ストリーム制御部２２０は、コンテキスト対応テーブル２１２を参照し、ストリームＩＤ「２」に対してコンテキストＩＤ「２」のコンテキストを用いた１回目の暗号演算と、コンテキストＩＤ「３」のコンテキストを用いた２回目の暗号演算とを行うことを確認する。これにより、ストリーム制御部２２０は、ストリームＩＤ「２」のストリームをストリーム解析部２３０に出力し、ストリーム解析部２３０により出力される１回目の暗号演算が行われたストリームをストリーム解析部２３１に出力し、ストリーム解析部２３１により出力される２回目の暗号演算が行われたストリームを外部装置２０１に出力するように内部のパスを制御する。
【０２０７】
ストリーム解析部２３０は、コンテキストＩＤ「２」のコンテキストに含まれるヘッダ長、ペイロード長及びフッタ長を参照し、データＢ及びデータＣをＨＭＡＣ−ＳＨＡ１演算の対象データと判別する。
【０２０８】
ＳＨＡ１演算部２５２は、ペイロードであるデータＢと、データＣとの合計１２４バイトのうち演算単位の整数倍である６４バイトに対して演算を行う。つまり、ＳＨＡ１演算部２５２は、データＢとデータＣの先頭から３６バイトとを合わせた６４バイトに対してＨＭＡＣ−ＳＨＡ１演算を行う。
【０２０９】
ＳＨＡ１演算部２５２は、演算結果である中間結果を格納する。
ＳＨＡ１演算部２５２は、演算単位に満たない６０バイトの端数ペイロード６１２を除く、ストリームをそのまま出力する。つまり、ＳＨＡ１演算部２５２は、データＡと、データＢと、データＣの先頭から３６バイトとを連結したストリーム６２０を出力する。また、ＳＨＡ１演算部２５２は、端数ペイロード６１２をコンテキストＩＤ「２」のコンテキストとしてコンテキスト格納部２１１に退避する。
【０２１０】
ストリーム６２０は、調停部２４０及びストリーム解析部２３０を介してストリーム解析部２３１に入力される。
【０２１１】
ストリーム解析部２３１は、コンテキストＩＤ「３」のコンテキストに含まれるヘッダ長、ペイロード長及びフッタ長を参照し、データＣをＡＥＳ演算の対象データと判別する。
【０２１２】
ＡＥＳ演算部２５０は、ストリーム６２０に含まれるデータＣの３６バイトのうち、演算対象である先頭から３２バイトに暗号演算を行う。ＡＥＳ演算部２５０は、演算結果である暗号化データＣを、対象データと置き換える。ＡＥＳ演算部２５０は、データＡ、データＢ及び暗号化データＣで構成されるストリーム６３０を出力する。
【０２１３】
ストリーム６３０は、調停部２４０、ストリーム解析部２３１及びストリーム制御部２２０を介して、外部装置２０１に出力される。
【０２１４】
また、ＡＥＳ演算部２５０は、データＣの残り４バイトである端数ペイロード６２２をコンテキストＩＤ「３」のコンテキストとしてコンテキスト格納部２１１に退避する。
【０２１５】
次に、ストリームＩＤ「２」のストリームの後半部であるストリーム６１１に対する処理を説明する。
【０２１６】
外部装置２０１から入力されたストリーム６１１は、ストリーム制御部２２０、ストリーム解析部２３０、及び調停部２４０を介してＳＨＡ１演算部２５２に入力される。
【０２１７】
ＳＨＡ１演算部２５２は、ストリーム６１１の先頭に、コンテキストＩＤ「２」のコンテキストとして格納される端数ペイロード６１２を連結する。ＳＨＡ１演算部２５２は、連結後のデータのうちペイロード部分となる１３２バイトについてＨＭＡＣ−ＳＨＡ１演算を行う。
【０２１８】
また、コンテキストＩＤ「２」においてハッシュ値置換位置が２０１であるため、ＳＨＡ１演算部２５２は、ストリームの先頭から２０１バイト目となるデータＤを、ＨＭＡＣ−ＳＨＡ１の演算結果であるＭＡＣ値に置き換える。よって、ＳＨＡ１演算部２５２は、データＣのうち１３２バイトと、ＭＡＣ値と、データＥとを連結したストリーム６２１を出力する。
【０２１９】
ストリーム６２１は、調停部２４０、ストリーム解析部２３０、ストリーム制御部２２０、ストリーム解析部２３１、及び調停部２４０を介してＡＥＳ演算部２５０に入力される。
【０２２０】
ＡＥＳ演算部２５０は、ストリーム６２１の先頭に、コンテキストＩＤ「３」のコンテキストとして格納される端数ペイロード６２２を連結する。ＡＥＳ演算部２５０は、連結したデータ１９２バイトについてＡＥＳ演算を行う。ＡＥＳ演算部２５０は、ＡＥＳ演算結果である暗号化データＣ、暗号化ＭＡＣ値、及び暗号化データＥを連結したストリーム６３１を出力する。
【０２２１】
ストリーム６３１は、調停部２４０、ストリーム解析部２３１及びストリーム制御部２２０を介して、外部装置２０１に出力される。
【０２２２】
以上のように、機密情報処理装置２００は、１つのストリームに対して、異なる２回の暗号演算を行うことができる。また、演算結果であるＭＡＣ値をストリームに組み込み出力することができる。
【０２２３】
次に、第３の演算例として、１つのストリームに対して、２回の暗号演算を行う例を説明する。具体的には、１回目の暗号演算としてＡＥＳ復号化が行われる。２回目の暗号演算として、ＨＭＡＣ−ＳＨＡ１演算が行われる。また、ＨＭＡＣ−ＳＨＡ１演算により生成されたＭＡＣ値と、ストリームに含まれる所定の領域のデータとの比較が行われる。
【０２２４】
ストリームＩＤ「３」のストリームが外部装置２０１経由で入力されるとする。また、ストリームＩＤ「３」のストリームは長さが２５６バイトとする。また、機密情報処理装置２００は、前半１２８バイト、後半１２８バイトの順に２回に分けて暗号演算を行うとする。
【０２２５】
図４に示すように、ストリームＩＤ「３」のストリームには、コンテキストＩＤ「４」のコンテキストを用いた暗号演算が行われ、さらに、１回目の暗号演算が行われたストリームに対してコンテキストＩＤ「５」のコンテキストを用いた２回目の暗号演算が行われる。
【０２２６】
また、図６に示すように、コンテキストＩＤ「４」のコンテキストには、ＡＥＳを用いたＣＢＣ復号化、ヘッダ長に３２バイト、ペイロード長に２２４バイト、フッタ長に０バイト、端数出力フラグにＯＦＦ、ペイロード連続回数に１、及びストリーム非出力フラグにＯＦＦが、予め外部装置２０２から設定されている。
【０２２７】
また、コンテキストＩＤ「５」のコンテキストには、ＨＭＡＣ−ＳＨＡ１、ヘッダ長に４バイト、ペイロード長に１９６バイト、フッタ長に５６バイト、端数出力フラグにＯＦＦ、ペイロード連続回数に１、ストリーム非出力フラグにＯＦＦ、ハッシュ値置換位置に０、及びハッシュ値比較位置に２０１が、予め外部装置２０２から設定されている。
【０２２８】
図１２は、機密情報処理装置２００による第３の演算例におけるストリームの構成を示す図である。図１３は、機密情報処理装置２００による第３の演算例におけるストリームの処理を示す図である。
【０２２９】
図１２に示すストリーム７００は、外部装置２０１から機密情報処理装置２００に入力される２５６バイトのストリームである。ＡＥＳ演算においては、ストリーム７００のうち、データＡとデータＢとを合わせたものがヘッダ、暗号化データＣと暗号化ＭＡＣ値と暗号化データＥとを合わせたものがペイロードとなる。ＨＭＡＣ−ＳＨＡ１演算においては、ストリーム７００のうち、データＡはヘッダ、データＢと暗号化データＣとを合わせたものがペイロード、暗号化ＭＡＣ値と暗号化データＥとを合わせたものがフッタとなる。
【０２３０】
以下、処理手順に関して、第１及び第２の演算例と異なる点を中心に説明し、重複する説明は省略する。
【０２３１】
まず、ストリームＩＤ「３」のストリームの前半部であるストリーム７１０に対する処理を説明する。
【０２３２】
外部装置２０１から入力されたストリーム７１０は、ストリーム制御部２２０、ストリーム解析部２３０、及び調停部２４０を介してＡＥＳ演算部２５０に入力される。
【０２３３】
ＡＥＳ演算部２５０は、暗号化データＣのうちストリーム７１０に含まれる９６バイトに復号化を行う。ＡＥＳ演算部２５０は、暗号化データＣを、復号化したデータＣに置き換えストリーム７２０を出力する。
【０２３４】
ストリーム７２０は、調停部２４０、ストリーム解析部２３０、ストリーム制御部２２０、ストリーム解析部２３１、及び調停部２４０を介してＳＨＡ１演算部２５２に入力される。
【０２３５】
ＳＨＡ１演算部２５２は、ペイロードであるデータＢ及びデータＣに関しては、合計１２４バイト中、データＢとデータＣの先頭から３６バイトとを合わせた６４バイトに対してＨＭＡＣ−ＳＨＡ１演算を行う。ＳＨＡ１演算部２５２は、データＡと、データＢと、データＣの先頭から３６バイトとを連結したストリーム７３０を出力する。
【０２３６】
ＳＨＡ１演算部２５２は、演算結果である中間結果を格納する。また、ＳＨＡ１演算部２５２は、データＣの残り６０バイトである端数ペイロード７２２を、コンテキストＩＤ「５」のコンテキストとして格納する。
【０２３７】
ストリーム７３０は、調停部２４０、ストリーム解析部２３１及びストリーム制御部２２０を介して、外部装置２０１に出力される。
【０２３８】
次に、ストリームＩＤ「３」のストリームの後半部であるストリーム７１１に対する処理を説明する。
【０２３９】
外部装置２０１から入力されたストリーム７１１は、ストリーム制御部２２０、ストリーム解析部２３０、及び調停部２４０を介してＡＥＳ演算部２５０に入力される。
【０２４０】
ＡＥＳ演算部２５０は、ストリーム７１１が全てペイロードであるため、ストリーム７１１全体に対して復号化を行う。ＡＥＳ演算部２５０は、演算結果であるデータＣ、ＭＡＣ値、及びデータＥを連結したストリーム７２１を出力する。
【０２４１】
ストリーム７２１は、調停部２４０、ストリーム解析部２３０、ストリーム制御部２２０、ストリーム解析部２３１、及び調停部２４０を介してＳＨＡ１演算部２５２に入力される。
【０２４２】
ＳＨＡ１演算部２５２は、ストリーム７２１の先頭に、端数ペイロード７２２を連結する。ＳＨＡ１演算部２５２は、連結後のデータのうちペイロード部分となる１３２バイトについてＨＭＡＣ−ＳＨＡ１演算を行い、ＭＡＣ値７３２を生成する。
【０２４３】
ＳＨＡ１演算部２５２は、データＣのうち１３２バイト、ＭＡＣ値、及びデータＥを連結したストリーム７３１を出力する。ストリーム７３１は、調停部２４０、ストリーム解析部２３１、及びストリーム制御部２２０を介して、外部装置２０１に出力される。
【０２４４】
また、コンテキストＩＤ「５」においてハッシュ値比較位置が２０１であるため、ＳＨＡ１演算部２５２は、ストリームの先頭から２０１バイト目となる、ストリーム７２１に含まれるＭＡＣ値とＭＡＣ値７３２とを比較する。ＳＨＡ１演算部２５２は、比較結果をコンテキスト格納部２１１に退避する。これにより、外部装置２０２は、比較結果を確認することができる。
【０２４５】
以上により、機密情報処理装置２００は、１つのストリームに対して、異なる２回の暗号演算を行うことができる。また、演算結果であるＭＡＣ値と、ストリームの所定の領域のデータとを比較することができる。
【０２４６】
次に、第４の演算例として、同時に、２つのストリームが入力される例について説明する。また、２つのストリームに対してそれぞれ２回の暗号演算が行われる。
【０２４７】
ストリームＩＤ「４」のストリームが外部装置２０１経由で入力され、ストリームＩＤ「５」のストリームが外部装置２０２経由で入力される。
【０２４８】
ストリームＩＤ「４」、及びストリームＩＤ「５」の２種類のストリームはともに長さが２５６バイトとする。また、機密情報処理装置２００は、ストリームＩＤ「４」、及びストリームＩＤ「５」を同時に処理するものとする。
【０２４９】
図４に示すように、ストリームＩＤ「４」のストリームには、コンテキストＩＤ「６」のコンテキストを用いた１回目の暗号演算が行われ、さらに、１回目の暗号演算が行われたストリームに対してコンテキストＩＤ「７」のコンテキストを用いた２回目の暗号演算が行われる。ストリームＩＤ「５」のストリームには、コンテキストＩＤ「８」のコンテキストを用いた１回目の暗号演算が行われ、さらに、１回目の暗号演算が行われたストリームに対してコンテキストＩＤ「９」のコンテキストを用いた２回目の暗号演算が行われる。
【０２５０】
また、図６に示すように、コンテキストＩＤ「６」のコンテキストには、ＡＥＳを用いたＣＢＣ復号化、ヘッダ長に０バイト、ペイロード長に１２８バイト、フッタ長に０バイト、端数出力フラグにＯＦＦ、ペイロード連続回数に１、及びストリーム非出力フラグにＯＦＦが、予め外部装置２０２から設定されている。
【０２５１】
コンテキストＩＤ「７」には、ＡＥＳを用いたＣＢＣ暗号化、ヘッダ長に０バイト、ペイロード長に１２８バイト、フッタ長に０バイト、端数出力フラグにＯＦＦ、ペイロード連続回数に１、及びストリーム非出力フラグにＯＦＦが、予め外部装置２０２から設定されている。
【０２５２】
また、コンテキストＩＤ「８」には、ＨＭＡＣ−ＳＨＡ１、ヘッダ長に２０バイト、ペイロード長に２００バイト、フッタ長に３６バイト、端数出力フラグにＯＦＦ、ペイロード連続回数に１、ストリーム非出力フラグにＯＦＦ、ハッシュ値置換位置に２２１、及びハッシュ値比較位置に０が、予め外部装置２０２から設定されている。
【０２５３】
コンテキストＩＤ「９」には、ＤＥＳを用いたＣＢＣ暗号化、ヘッダ長に０バイト、ペイロード長に１２８バイト、フッタ長に１２８バイト、端数出力フラグにＯＦＦ、ペイロード連続回数に１、及びストリーム非出力フラグにＯＦＦが、予め外部装置に２０２から設定されている。
【０２５４】
ここで、コンテキストＩＤ「６」とコンテキストＩＤ「７」とに別の鍵が外部装置２０２から設定された場合、ストリームＩＤ「４」のストリームへの演算は、ストリームに対して復号化を行ったのち、異なる鍵で暗号をかけ直す処理である。
【０２５５】
以下、処理手順に関して、第１〜第３の演算例と異なる点を中心に説明し、重複する説明は省略する。
【０２５６】
ストリームＩＤ「４」のストリームに対する１回目の演算では、ストリームは、ストリーム制御部２２０、ストリーム解析部２３０、調停部２４０を介して、ＡＥＳ演算部２５０に入力される。ＡＥＳ演算部２５０は、ストリームに対して復号化を行う。復号化されたストリームは、調停部２４０、及びストリーム解析部２３０を介して、ストリーム制御部２２０に入力される。
【０２５７】
ストリームＩＤ「４」のストリームに対する２回目の演算では、ストリーム制御部２２０は、１回目の演算が行われたストリームを、ストリーム解析部２３１及び調停部２４０を介して、ＡＥＳ演算部２５０に出力する。ＡＥＳ演算部２５０は、ストリームに対して暗号化を行う。暗号化されたストリームは、調停部２４０、及びストリーム解析部２３１を介して外部装置２０１に出力される。
【０２５８】
ストリームＩＤ「５」のストリームに対する１回目の演算では、ストリームは、ストリーム制御部２２１、ストリーム解析部２３２、及び調停部２４０を介して、ＳＨＡ１演算部２５２に入力される。ＳＨＡ１演算部２５２は、ストリームに対して１回目の暗号演算を行う。１回目の暗号演算が行われたストリームは、調停部２４０、及びストリーム解析部２３２を介してストリーム制御部２２１に入力される。
【０２５９】
ストリームＩＤ「５」のストリームに対する２回目の演算では、ストリーム制御部２２１は、１回目の演算が行われたストリームを、ストリーム解析部２３３、及び調停部２４０を介して、ＤＥＳ演算部２５１に出力する。ＤＥＳ演算部２５１はストリームに２回目の暗号演算を行う。２回目の暗号演算が行われたストリームは、調停部２４０、ストリーム解析部２３３及びストリーム制御部２２１を介して、外部装置２０２に出力される。
【０２６０】
このときストリームＩＤ「４」のストリームに対する１回目、及び２回目の演算は、ともにＡＥＳ演算部２５０で行われる。よって、１回目の演算と２回目の演算とを時分割で行うよう、制御する必要がある。
【０２６１】
これを制御するため、調停部２４０は、ストリーム解析部２３０、２３１、２３２及び２３３からのストリームの演算要求をチェックする。調停部２４０は、同じアルゴリズムへの演算要求が競合している場合は、競合しているストリームについて、優先度の高いストリーム解析部２３０、２３１、２３２及び２３３からの演算要求を先に受け付ける。調停部２４０は、受け付けた演算要求に対するコンテキスト退避及び復帰要求とストリームの入出力処理とを行う。例えば、優先度の高い方から、ストリーム解析部２３３、２３２、２３１及び２３０の順番で優先度が付けられる。
【０２６２】
調停部２４０は、先に受け付けた演算要求に対する暗号演算が該当する演算部２５０、２５１又は２５２で終了した後、暗号演算された出力ストリームを受信する。調停部２４０は、受信した出力ストリームをストリーム解析部２３０、２３１、２３２又は２３３に出力する。調停部２４０は、出力ストリームをストリーム解析部に出力し終わった後、再度、演算要求のチェックを行い、上述と同様に処理を行う。
【０２６３】
従って、ストリームＩＤ「４」のストリームに対する演算においては、まず、ＡＥＳ演算部２５０は、コンテキストＩＤ「６」を用いた演算を行う。この演算結果は、ストリーム制御部２２０内のバッファ３０２に格納される。
【０２６４】
ストリーム解析部２３１の優先順位は、ストリーム解析部２３０の優先順位より高いので、バッファ３０２に格納されたストリームがストリーム解析部２３１を介して調停部２４０に入力された段階で、調停順位が変更される。よって、調停部２４０は、ＡＥＳ演算部２５０に対するコンテキスト退避及び復帰の要求をコンテキスト制御部２１０に送信する。これにより、ＡＥＳ演算部２５０にコンテキストＩＤ「７」のコンテキストが格納される。
【０２６５】
ＡＥＳ演算部２５０は、コンテキストＩＤ「７」を用いた演算を実行する。
このように、ＡＥＳ演算部２５０に対するコンテキストＩＤ「６」及びコンテキストＩＤ「７」のコンテキストの退避及び復帰が複数回行われ、ストリーム全体の演算が完了する。
【０２６６】
ここで、ストリーム制御部２２１がバッファ３０２を備えることで、ストリーム解析部２３１から調停部２４０への処理要求をまとまったデータ単位で行うことができる。よって、機密情報処理装置２００は、ＡＥＳ演算部２５０のコンテキスト退避及び復帰回数を減らすことができる。
【０２６７】
また、２回目の暗号演算で用いられるストリーム解析部２３１の優先度は、１回目の暗号演算に用いられるストリーム解析部２３０の優先度より高く設定されている。これにより、１回目の暗号演算が終了したストリームが優先的に暗号演算される。すなわち、バッファ３０２に格納されたストリームが優先的に暗号演算され外部装置２０１に出力される。これにより、バッファ３０２に格納されるストリームのデータ量を削減することができる。すなわち、バッファ３０２の容量を削減することができる。
【０２６８】
なお、ストリームＩＤ「５」のストリームへの演算は、ＨＭＡＣ−ＳＨＡ１及びＤＥＳを用いた演算である。つまり、ストリームＩＤ「５」のストリームへの演算は、ストリームＩＤ「４」とは別のアルゴリズムを使用する。よって、ＤＥＳ演算部２５１及びＳＨＡ１演算部２５２に対するコンテキストの退避及び復帰は最初の１回だけ行われる。
【０２６９】
また、コンテキストＩＤ「８」のコンテキストには、ストリーム非出力フラグにＯＦＦ、及びハッシュ値置換位置に２２１が設定されているため、ＳＨＡ１演算部２５２は、外部装置２０２から入力されたストリームのうち先頭から２２１バイト目から２０バイトを、ストリームのペイロード部分をＨＭＡＣ−ＳＨＡ１演算した演算結果であるハッシュ値に置き換える。また、ＤＥＳ演算部２５１は、置き換え後のストリームの先頭から１２８バイト部分を、ＤＥＳ演算した結果に置き換え出力する。ＤＥＳ演算部２５１により出力されたストリームは、外部装置２０１に出力される。
【０２７０】
以上のように、機密情報処理装置２００は、同時に入力される２つのストリームに対して、それぞれ２回の暗号演算を行うことができる。また、１回目の暗号演算と２回目の暗号演算とで同じ演算部を使用する場合であっても、１回のストリーム入力で２回の暗号演算を行える。
【０２７１】
次に、第５の演算例として、ストリーム中の離れた領域のデータを１つのデータとして暗号演算を行う例を説明する。
【０２７２】
ストリームＩＤ「６」のストリームが外部装置２０１経由で入力される。ストリームＩＤ「６」のストリームは、長さが５１２バイトとする。また、ストリームＩＤ「６」のストリームは、途中で別のストリームを処理することなく、全て一度に処理されるとする。
【０２７３】
図４に示すように、ストリームＩＤ「６」のストリームは、コンテキストＩＤ「１０」のコンテキストを用いて暗号演算される。
【０２７４】
また、図６に示すように、コンテキストＩＤ「１０」のコンテキストには、ＨＭＡＣ−ＳＨＡ１演算、ヘッダ長に３２バイト、ペイロード長に１２８バイト、フッタ長に９６バイト、端数出力フラグにＯＦＦ、ペイロード連続回数に２、及びストリーム非出力フラグにＯＮが、予め外部装置２０２から設定されている。
【０２７５】
図１４は、機密情報処理装置２００による第５の演算例におけるストリームの処理を示す図である。
【０２７６】
第５の演算例の処理フローは、ペイロード連続回数が２である点以外は、ストリームＩＤ「１」の場合と同じである。
【０２７７】
外部装置２０１から入力されたストリーム８００は、ストリーム制御部２２０、ストリーム解析部２３０、調停部２４０を介してＳＨＡ１演算部２５２に入力される。
【０２７８】
ペイロード連続回数が２のため、ＳＨＡ１演算部２５２は、５１２バイトのストリーム８００について、３３バイト目から１２８バイト分のペイロード１と、２８９バイト目から１２８バイト分のペイロード２との合計である２５６バイトを連続する一つのペイロード８０１とみなす。ＳＨＡ１演算部２５２は、２５６バイトのペイロード８０１に対してＨＭＡＣ−ＳＨＡ１演算を行う。
【０２７９】
ＳＨＡ１演算部２５２は、演算結果であるＭＡＣ値８０２をコンテキストとしてコンテキスト格納部２１１に退避する。ＭＡＣ値８０２は、コンテキスト格納テーブル２１３に含まれるコンテキストＩＤ「１０」のコンテキストのハッシュ値として格納される。これにより、外部装置２０２は、コンテキスト格納テーブル２１３からＭＡＣ値８０２を読み出すことができる。
【０２８０】
以上のように、機密情報処理装置２００は、ストリーム中の離れた領域のデータを１つのデータとして暗号演算を行うことができる。
【０２８１】
以上より、本発明に係る機密情報処理装置２００は、１つの入力ストリームに対して複数回の暗号演算を行う場合、それぞれの暗号演算に対して、異なるストリーム解析部２３０、２３１、２３２及び２３３が入力ストリームの異なる領域の対象データを判別する。これにより、複数回の暗号演算において入力ストリーム内の暗号演算対象のデータが異なる場合でも、容易なソフトウェア制御で入力ストリームから任意の領域に含まれる暗号演算対象のデータを判別できる。
【０２８２】
具体的には、外部装置２０１及び２０２からコンテキスト対応テーブル２１２の内容を設定することで、１つのストリームに対して任意の回数、及び任意のコンテキストを用いた暗号演算を設定することができる。
【０２８３】
さらに、複数のストリーム解析部２３０、２３１、２３２及び２３３を備えることで、ストリーム解析部２３０、２３１、２３２及び２３３に対するコンテキストの退避及び復帰を１回目の暗号演算と２回目の暗号演算を切り替える毎に行う必要がない。よって、コンテキストの退避及び復帰の頻度を低減できる。
【０２８４】
同様に、機密情報処理装置２００は、複数のストリームが同時に入力される場合でも、容易なソフトウェア制御で入力ストリームから任意の領域に含まれる暗号演算対象のデータを判別できる。
【０２８５】
さらに、ストリーム制御部２２０により、１回目の暗号演算が行われたストリームが他のストリーム解析部２３０、２３１、２３２又は２３３に入力される。これにより、暗号演算の完了ごとに外部装置２０１及び２０２にストリームを出力することなく、１回のストリーム入力で複数回の暗号演算を行える。
【０２８６】
さらに、調停部２４０により複数のストリーム解析部２３０、２３１、２３２及び２３３と、演算部２５０、２５１及び２５２との間に任意のパスを形成することができる。これにより、１回のストリーム入力で同一のアルゴリズムを用いた複数回の暗号演算（例えば、復号化した後に暗号化）を行うことができる。同様に、同一のアルゴリズムを用いた暗号演算を複数のストリームに対して行うことができる。
【０２８７】
さらに、機密情報処理装置２００において、コンテキスト格納部２１１に複数のコンテキストが格納される。また、コンテキスト制御部２１０により、暗号演算に用いられるコンテキストの退避及び復帰が行われる。
【０２８８】
これにより、対応するコンテキストをコンテキスト格納部２１１から読み出すことで、多種の演算方法に容易に対応できる。また、演算部２５０、２５１及び２５２は、少なくとも１個のコンテキスト格納できるレジスタ等を備えればよいので、演算部２５０、２５１及び２５２の回路規模を縮小できる。また、多種の演算方法に対するコンテキストを設定し、かつ設定したコンテキストをコンテキスト格納部２１１に格納することで、演算方法の変更及び追加等を容易に設定できる。
【０２８９】
さらに、機密情報処理装置２００は、それぞれ異なる暗号アルゴリズムに対応する複数の演算部２５０、２５１及び２５２を備える。よって、１つのストリームに対して異なる暗号アルゴリズムを用いた複数回の暗号演算を行う場合に、それぞれの暗号演算を異なる演算部２５０、２５１及び２５２により行える。同様に、複数のストリームに対して異なる暗号アルゴリズムを用いた暗号演算を行う場合に、それぞれの暗号演算を異なる演算部２５０、２５１及び２５２により行える。
【０２９０】
これにより、各演算部２５０、２５１及び２５２が１個のコンテキストのみを保持する場合でも、暗号演算ごとにコンテキストの退避及び復帰を行う必要がない。よって、コンテキストの退避及び復帰を行う頻度を低減できるので、機密情報処理装置２００は、暗号演算処理を高速に行える。
【０２９１】
さらに、機密情報処理装置２００は、コンテキスト格納部２１１に、演算結果であるハッシュ値及びＭＡＣ値を格納する。これにより、外部装置２０１及び２０２は、演算結果であるハッシュ値及びＭＡＣ値を読み出すことができる。
【０２９２】
また、機密情報処理装置２００は、ハッシュ演算及び秘密鍵暗号アルゴリズムを用いた認証処理を行う場合にも、入力ストリームを外部装置２０１又は他のストリーム解析部２３０、２３１、２３２及び２３３に出力する。これにより、暗号化及び復号化が行われる場合と同様に、ストリームを扱うことができる。
【０２９３】
さらに、機密情報処理装置２００は、コンテキスト格納部２１１に、端数ペイロードを格納する。これにより、入力されたストリームの対象データが演算単位の整数倍でない場合にも、外部装置２０１及び２０２に端数ペイロードを出力することなく、機密情報処理装置２００内で端数ペイロードの処理を行うことができる。
【０２９４】
さらに、機密情報処理装置２００は、コンテキスト格納部２１１に、ペイロード連続回数を含むコンテキストを格納する。これにより、機密情報処理装置２００は、ストリーム中の離れた領域のデータを１つのデータとして暗号演算することができる。
【０２９５】
さらに、機密情報処理装置２００は、コンテキスト格納部２１１に、ハッシュ値置換位置を含むコンテキストを格納する。これにより、機密情報処理装置２００は、演算結果であるハッシュ値及びＭＡＣ値をストリームの任意の位置に組み込むことができる。
【０２９６】
さらに、機密情報処理装置２００は、コンテキスト格納部２１１に、ハッシュ値比較位置を含むコンテキストを格納する。これにより、機密情報処理装置２００は、演算結果であるハッシュ値及びＭＡＣ値とストリームの任意の位置のデータとを比較することができる。
【０２９７】
また、機密情報処理装置２００は、コンテキスト格納部２１１に、端数出力フラグと、ペイロード連続回数と、ストリーム非出力フラグと、ハッシュ値置換位置と、ハッシュ値比較位置とを含むコンテキストを格納する。これにより、コンテキスト格納部２１１に格納されるコンテキストを設定することで、多種の暗号演算に対応することができる。
【０２９８】
このように、本発明に係る機密情報処理装置２００は、１つのストリームに対して演算方法が一意でない複数回の多種の暗号演算を行え、かつソフトウェアによる制御を容易に行える。また、本発明に係る機密情報処理装置２００は、多種の演算方法の暗号演算を行う場合でも、ソフトウェアによる制御を容易に行える。
【０２９９】
以上、本発明の実施の形態に係る機密情報処理装置について説明したが、本発明は、この実施の形態に限定されるものではない。
【０３００】
例えば、上記説明では、機密情報処理装置２００が、３つの演算部２５０、２５１及び２５２を備える例について説明したが、演算部の数はこれに限定されるものではない。例えば、機密情報処理装置２００は、秘密鍵暗号アルゴリズムに対応した演算部のみを備えてもよいし、ハッシュアルゴリズムに対応した演算部のみを備えてもよい。また、機密情報処理装置２００は、２又は４以上の演算部を備えてもよい。
【０３０１】
また、上記説明では、演算部の対応している暗号アルゴリズムをＡＥＳ、ＤＥＳ及びＳＨＡとしているが、Ｍｕｌｔｉ２、Ｃａｍｅｌｌｉａ、ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ５）などの他の暗号アルゴリズムであってもよい。
【０３０２】
また、各演算部で行う暗号演算のモードは、ＣＢＣ、ＥＣＢ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｄｅｂｏｏｋ）、ＸＣＢＣ−ＭＡＣ、ＯＦＢ（Ｏｕｔｐｕｔ  Ｆｅｅｄｂａｃｋ）、ＣＴＲ（Ｃｏｕｎｔｅｒ）など任意のものでよい。
【０３０３】
また、上記説明では、機密情報処理装置２００は、２個のストリーム制御部２２０及び２２１を備えたが、１個以上の任意の個数を備えればよい。
【０３０４】
また、上記説明では、機密情報処理装置２００は、ストリーム制御部２２０及び２２１のそれぞれに対して２個のストリーム解析部を備えるとしたが、１つにストリーム制御部２２０及び２２１のそれぞれに対して、１個又は３個以上のストリーム解析部を備えてもよい。さらに、この場合、コンテキスト対応テーブル２１２において、１つのストリームＩＤに対応する３個以上のコンテキストＩＤが設定されてもよい。これにより、１つのストリームに対して３回以上の暗号演算を行うことができる。
【０３０５】
また、機密情報処理装置２００は、ストリーム制御部２２０及び２２１に対して、それぞれ異なる個数のストリーム解析部を備えてもよい。
【０３０６】
また、上記説明では、コンテキスト格納部２１１がコンテキスト対応テーブル２１２を格納するとしたが、ストリーム制御部２２０及び２２１等がコンテキスト対応テーブル２１２を格納してもよい。
【０３０７】
また、上記説明では、ＡＥＳ演算部２５０及びＤＥＳ演算部２５１は、暗号化及び復号化を行うとしたが、暗号化及び復号化のいずれか一方のみを行ってもよい。
【０３０８】
また、上記説明では、コンテキスト対応テーブル２１２にストリームＩＤが７個分格納されているが、格納されるストリームＩＤの数は任意でよい。また、上記説明では、コンテキスト格納テーブル２１３にコンテキストＩＤが１１個分格納されているが、格納されるコンテキストＩＤの数は任意でよい。
【０３０９】
また、上記説明では、端数出力フラグがＯＦＦの場合の端数ペイロードの退避及び復帰と、ペイロード連続回数に基づく演算対象データの抽出と、ハッシュ値置換位置に基づくハッシュ値又はＭＡＣの置換と、ハッシュ値比較位置に基づくハッシュ値又はＭＡＣ値の比較とを演算部２５０、２５１及び２５２が行うとしたが、上記処理の１以上をストリーム解析部２３０、２３１、２３２及び２３３で行ってもよい。
【０３１０】
また、上記説明では、ストリーム解析部２３０、２３１、２３２及び２３３が、対象データを特定する情報と、ストリームとを調停部２４０を介して演算部２５０、２５１及び２５２に出力するとしたが、対象データのみを演算部２５０、２５１及び２５２に出力してもよい。
【０３１１】
また、上記説明では、演算部２５０、２５１及び２５２は、生成したＭＡＣ値及びハッシュ値と、端数ペイロードとをコンテキスト格納部２１１に格納するとしたが、自身が保持するコンテキスト２６０、２６１及び２６２として生成したＭＡＣ値及びハッシュ値と、端数ペイロードとを保持してもよい。この場合、コンテキストの退避の際等に、ＭＡＣ値及びハッシュ値と、端数ペイロードとがコンテキスト格納部２１１に格納される。
【０３１２】
また、上記説明では、コンテキスト制御部２１０と、ストリーム制御部２２０及び２２１と、ストリーム解析部２３０、２３１、２３２及び２３３と、調停部２４０と、ＡＥＳ演算部２５０と、ＤＥＳ演算部２５１と、ＳＨＡ１演算部２５２とは、専用の回路（ハードウェア）により構成されるとしたが、上記処理部が実現する機能の一部をＣＰＵ等がプログラムを実行すること（ソフトウェア）で実現してもよい。
【０３１３】
また、上記説明では、ストリーム制御部２２０及び２２１の構成として図５に示す構成を示したが、ストリーム制御部２２０及び２２１の構成はこれに限定されるものではない。
【０３１４】
図１５は、ストリーム制御部２２０及び２２１の変形例の構成を示す図である。図１５に示すストリーム制御部２２０は、外部装置２０１から入力された入力ストリームをストリーム解析部２３０又は２３１に出力する。また、ストリーム制御部２２０は、ストリーム解析部２３０により出力される出力ストリームを、バッファ３０２を介してストリーム解析部２３１に出力し、ストリーム解析部２３１により出力される出力ストリームを外部装置２０１に出力する。
【０３１５】
さらに、ストリーム制御部２２０は、外部装置２０１と、ストリーム解析部２３０と、ストリーム解析部２３１との間のパスを任意の組み合わせで接続できる構成であってもよい。すなわち、ストリーム制御部２２０は、外部装置２０１から入力された入力ストリームをストリーム解析部２３０又は２３１に選択的に出力し、かつ、ストリーム解析部２３０及び２３１から出力される出力ストリームをそれぞれ、外部装置２０１又は他のストリーム解析部２３０又は２３１に選択的に出力してもよい。
【０３１６】
また、上記説明では、本発明に係る機密情報処理装置２００を携帯電話機器に適応した例について述べたが、デジタルテレビ、ＳＴＢ、ＤＶＤレコーダ、ＤＶＤプレーヤ、ＨＤレコーダ、ＰＣ、及び携帯情報端末（ＰＤＡ）等に適用してもよい。
【０３１７】
図１６は、本発明の実施の形態に係る機密情報処理機器１００の変形例の構成を示す図である。図１６に示すように、機密情報処理機器１００は、外部機器１０９によりデジタル放送等により送信される暗号化データに対して、復号化を行い表示部１０４に表示してもよい。また、機密情報処理機器１００は、記憶媒体（ＣＤ、ＤＶＤ、メモリカード及びＵＳＢメモリ等）１０６に格納される暗号化データに対して復号化を行ってもよい。また、機密情報処理機器１００は、機密情報処理装置２００により暗号化されたデータを、記録媒体１０６に格納してもよい。また、機密情報処理機器１００は、外部機器１０８により、ネットワーク１０７を介して送信された暗号化データに対して復号化を行ってもよい。また、機密情報処理機器１００は、機密情報処理装置２００により暗号化されたデータを、ネットワーク１０７を介して外部機器１０８に送信してもよい。
【産業上の利用可能性】
【０３１８】
本発明は、機密情報処理装置に適用でき、特に、暗号化通信を必要とするネットワークに接続された機密情報処理機器、及び著作権保護されたストリームを処理する機密情報処理機器に適用できる。例えば、本発明は、携帯電話機器、デジタルテレビ、ＳＴＢ、ＤＶＤレコーダ、ＤＶＤプレーヤ、ＨＤレコーダ、ＰＣ、及びＰＤＡ等に適用できる。
【図面の簡単な説明】
【０３１９】
【図１】本発明の実施の形態に係る機密情報処理機器の外観を示す図である。
【図２】本発明の実施の形態に係る機密情報処理機器の構成を示すブロック図である。
【図３】本発明の実施の形態に係る機密情報処理装置の構成を示すブロック図である。
【図４】本発明の実施の形態に係るコンテキスト対応テーブルの構成の一例を示す図である。
【図５】本発明の実施の形態に係るストリーム制御部の構成を示すブロック図である。
【図６】本発明の実施の形態に係るコンテキスト格納テーブルの構成の一例を示す図である。
【図７】本発明の実施の形態に係る機密情報処理装置の処理の流れを示すフローチャートである。
【図８】本発明の実施の形態に係る機密情報処理装置による第１の演算例におけるストリームＩＤ「０」のストリームの処理を示す図である。
【図９】本発明の実施の形態に係る機密情報処理装置による第１の演算例におけるストリームＩＤ「１」のストリームの処理を示す図である。
【図１０】本発明の実施の形態に係る機密情報処理装置による第２の演算例におけるストリームの構成を示す図である。
【図１１】本発明の実施の形態に係る機密情報処理装置による第２の演算例におけるストリームの処理を示す図である。
【図１２】本発明の実施の形態に係る機密情報処理装置による第３の演算例におけるストリームの構成を示す図である。
【図１３】本発明の実施の形態に係る機密情報処理装置による第３の演算例におけるストリームの処理を示す図である。
【図１４】本発明の実施の形態に係る機密情報処理装置による第５の演算例におけるストリームの処理を示す図である。
【図１５】本発明の実施の形態に係るストリーム制御部の変形例の構成を示すブロック図である。
【図１６】本発明の実施の形態に係る機密情報処理機器の変形例の構成を示すブロック図である。
【符号の説明】
【０３２０】
１００  機密情報処理機器
１０１  アンテナ
１０２  受信部
１０３  送信部
１０４  表示部
１０５  記憶部
１０６  記録媒体
１０７  ネットワーク
１０８  外部機器
１０９  外部機器
２００  機密情報処理装置
２０１、２０２  外部装置
２１０  コンテキスト制御部
２１１  コンテキスト格納部
２１２  コンテキスト対応テーブル
２１３  コンテキスト格納テーブル
２２０、２２１  ストリーム制御部
２３０、２３１、２３２、２３３  ストリーム解析部
２４０  調停部
２５０、２５１、２５２  演算部
２６０、２６１、２６２  コンテキスト
３０１  セレクタ
３０２  バッファ
５０２、５２２、６１２、６２２、７２２  端数ペイロード
５００、５０１、５１０，５１１、５２０、５２１、６００、６１０、６１１、６２０、６２１、６３０、６３１、７００、７１０、７１１、７２０、７２１、７３０、７３１、８００  ストリーム
５２３、７３２、８０２  ＭＡＣ値
８０１  ペイロード
【図１】
2008199572.tif 000003
【図２】
2008199572.tif 000004
【図３】
2008199572.tif 000005
【図４】
2008199572.tif 000006
【図５】
2008199572.tif 000007
【図６】
2008199572.tif 000008
【図７】
2008199572.tif 000009
【図８】
2008199572.tif 000010
【図９】
2008199572.tif 000011
【図１０】
2008199572.tif 000012
【図１１】
2008199572.tif 000013
【図１２】
2008199572.tif 000014
【図１３】
2008199572.tif 000015
【図１４】
2008199572.tif 000016
【図１５】
2008199572.tif 000017
【図１６】
2008199572.tif 000018