(57)【要約】【課題】消費電力解析に基づくサイドチャネル攻撃に耐え、効率的な暗号化処理を可能にする。【解決手段】暗号化処理部２１０では、順序決定アルゴリズムＨに基づいて、複数ｎ通り（但し、ｎ≧２）の暗号化処理の実行順序が決定され、当該順序どおりに、変換前データＰに対する暗号化処理が実行される。第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理では、変換前データＰに対して、第ｉ番目の暗号鍵Ｋｉを用いた第ｉ番目の暗号化アルゴリズムＡｉに基づく暗号化処理の演算を施すことにより、第ｉ番目の暗号データＣｉを得る。合成処理部２２０は、合計ｎ組の暗号データＣ１〜Ｃｎを所定の合成処理アルゴリズムＳに基づいて合成し、得られた合成データＱを変換後データＱとして出力する。このデータ変換装置２００は、２組の情報処理ユニット間の認証処理や秘匿通信に利用される。【選択図】図１１
2018128706.tif 000002
【特許請求の範囲】
【請求項１】
変換前データＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより、変換後データＱを生成するデータ変換装置であって、
複数ｎ通り（但し、ｎ≧２）の暗号化処理を所定の実行順序に従って実行する暗号化処理部と、このｎ通りの暗号化処理によって得られた暗号データを合成する合成処理部と、を備え、
前記暗号化処理部が実行する第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理は、前記変換前データＰに対して、第ｉ番目の暗号鍵Ｋｉを用いた第ｉ番目の暗号化アルゴリズムＡｉに基づく暗号化処理の演算を施すことにより、第ｉ番目の暗号データＣｉを得る処理であり、
前記合成処理部は、第１番目〜第ｎ番目の暗号化処理によって得られた合計ｎ組の暗号データＣ１〜Ｃｎを所定の合成処理アルゴリズムＳに基づいて合成し、得られた合成データＱを前記変換後データＱとして出力し、
前記合成処理アルゴリズムＳは、前記ｎ組の暗号データＣ１〜Ｃｎに基づいて一義的に合成データＱが定まるアルゴリズムであり、かつ、前記合成データＱに基づいて前記ｎ組の暗号データＣ１〜Ｃｎを復元することはできない非可逆的な合成を行うアルゴリズムであり、
前記暗号化処理部は、前記変換前データＰが与えられるたびに、所定の順序決定アルゴリズムＨに基づいて、前記実行順序を決定することを特徴とするデータ変換装置。
【請求項２】
請求項１に記載のデータ変換装置において、
複数ｎ通りの暗号化処理にそれぞれ用いられる暗号化アルゴリズムおよび暗号鍵は、相互に、暗号化アルゴリズムおよび暗号鍵のうちの少なくとも一方が異なっていることを特徴とするデータ変換装置。
【請求項３】
請求項２に記載のデータ変換装置において、
複数ｎ通りの暗号化処理には、同一の共通暗号化アルゴリズムに基づく演算が行われ、かつ、相互に異なる暗号鍵を用いた演算が行われることを特徴とするデータ変換装置。
【請求項４】
請求項１〜３のいずれかに記載のデータ変換装置において、
合成処理部が、ｎ組の暗号データＣ１〜Ｃｎの中から２組の暗号データを選択し、選択された２組の暗号データについて所定の論理演算を実行し、未選択の暗号データが存在する限り、当該未選択の暗号データのうちの１組を新たに選択し、直前に行われた論理演算の演算結果と新たに選択された暗号データとについての論理演算を繰り返し実行し、最終的に得られた論理演算の演算結果を合成データＱとすることを特徴とするデータ変換装置。
【請求項５】
請求項４に記載のデータ変換装置において、
暗号化処理部によって、ｎ組の暗号データＣ１〜Ｃｎのデータ長が同一となるような暗号化処理を実行し、
２組のデータについての論理演算として、排他的論理和演算を実行することを特徴とするデータ変換装置。
【請求項６】
請求項４に記載のデータ変換装置において、
暗号化処理部によって、ｎ組の暗号データＣ１〜Ｃｎが互いに同一のデータ長となるような暗号化処理を実行し、
２組のデータについての論理演算として、当該２組のデータを同一の分割態様に基づいてそれぞれ分割することにより、それぞれ複数ｕ個の分割データを作成し、所定ビット長ｍを有する第ｊ番目（１≦ｊ≦ｕ）の分割データ同士の和の下位ｍビットを第ｊ番目の分割演算結果として求める処理をｊ＝１〜ｕについて実行し、第１番目の分割演算結果〜第ｕ番目の分割演算結果を連結する演算を実行することを特徴とするデータ変換装置。
【請求項７】
請求項１〜３のいずれかに記載のデータ変換装置において、
合成処理部が、ｎ組の暗号データＣ１〜Ｃｎを連結して得られる連結データに対して、一方向性関数を作用させることにより得られるデータを合成データＱとすることを特徴とするデータ変換装置。
【請求項８】
請求項１〜７のいずれかに記載のデータ変換装置を利用した認証システムであって、
認証処理を実行する第１の情報処理ユニットと、認証処理の対象となる第２の情報処理ユニットと、を備え、
前記第１の情報処理ユニットは、乱数を利用してチャレンジコードを発生させるチャレンジコード発生部と、前記チャレンジコードを前記第２の情報処理ユニットに送信するチャレンジコード送信部と、前記チャレンジコードに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第１の変換コードを生成する第１のデータ変換装置と、前記第２の情報処理ユニットから送信されてきたレスポンスコードを受信するレスポンスコード受信部と、前記第１の変換コードと前記レスポンスコードとの整合性を判定する照合判定部と、を有し、
前記第２の情報処理ユニットは、前記第１の情報処理ユニットから送信されてきたチャレンジコードを受信するチャレンジコード受信部と、受信したチャレンジコードに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第２の変換コードを生成する第２のデータ変換装置と、前記第２の変換コードをレスポンスコードとして前記第１の情報処理ユニットに送信するレスポンスコード送信部と、を有し、
前記第１のデータ変換装置および前記第２のデータ変換装置として、請求項１〜７のいずれかに記載のデータ変換装置であって、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する一対のデータ変換装置を用いることを特徴とする認証システム。
【請求項９】
請求項１〜７のいずれかに記載のデータ変換装置を利用した認証システムであって、
認証処理を実行する第１の情報処理ユニットと、認証処理の対象となる第２の情報処理ユニットと、を備え、
前記第１の情報処理ユニットは、乱数を利用してチャレンジコードを発生させるチャレンジコード発生部と、前記チャレンジコードを前記第２の情報処理ユニットに送信するチャレンジコード送信部と、前記チャレンジコードに所定の前処理を施すことにより第１の前処理コードを生成する第１の前処理装置と、前記第１の前処理コードに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第１の変換コードを生成する第１のデータ変換装置と、前記第２の情報処理ユニットから送信されてきたレスポンスコードを受信するレスポンスコード受信部と、前記第１の変換コードと前記レスポンスコードとの整合性を判定する照合判定部と、を有し、
前記第２の情報処理ユニットは、前記第１の情報処理ユニットから送信されてきたチャレンジコードを受信するチャレンジコード受信部と、受信したチャレンジコードに前記前処理を施すことにより第２の前処理コードを生成する第２の前処理装置と、前記第２の前処理コードに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第２の変換コードを生成する第２のデータ変換装置と、前記第２の変換コードをレスポンスコードとして前記第１の情報処理ユニットに送信するレスポンスコード送信部と、を有し、
前記第１のデータ変換装置および前記第２のデータ変換装置として、請求項１〜７のいずれかに記載のデータ変換装置であって、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する一対のデータ変換装置を用いることを特徴とする認証システム。
【請求項１０】
請求項９に記載の認証システムにおいて、
第１の前処理装置および第２の前処理装置として、処理前のデータを構成する個々のバイトに所定の規則に従ってオフセット値を増減する処理を行う装置を用いることを特徴とする認証システム。
【請求項１１】
請求項９に記載の認証システムにおいて、
第２の前処理装置として、処理前のデータを構成する個々のバイトに、複数ｋ通りの値の中からランダムに選択されたオフセット値を増減する処理を行う装置を用い、
第１の前処理装置として、処理前のデータを構成する個々のバイトに前記ｋ通りのオフセット値を増減する処理を行うことによりｋ通りのデータを処理後のデータとして得る装置を用い、
照合判定部が、ｋ通りのバリエーションについて合致判定を行い、いずれか１つのバリエーションについて合致する旨の判定が得られた場合に整合性ありとの判定を行うことを特徴とする認証システム。
【請求項１２】
請求項９に記載の認証システムにおいて、
第１の前処理装置および第２の前処理装置として、処理前のデータの個々の構成要素を所定の規則に従って並び替える処理を行う装置を用いることを特徴とする認証システム。
【請求項１３】
請求項１〜７のいずれかに記載のデータ変換装置を利用した秘匿通信システムであって、
秘匿情報を送信する第１の情報処理ユニットと、秘匿情報を受信する第２の情報処理ユニットと、を備え、
前記第１の情報処理ユニットは、所定の規則に従ってデータストリームを生成する第１のストリーム生成装置と、前記第１のストリーム生成装置が生成したデータストリームに対して所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第１の変換コードを生成する第１のデータ変換装置と、送信対象となる平文データを前記第１の変換コードを利用して暗号化して暗号文データを得る暗号化装置と、前記暗号文データを前記第２の情報処理ユニットに送信する暗号文送信装置と、を有し、
前記第２の情報処理ユニットは、前記規則に従ってデータストリームを生成する第２のストリーム生成装置と、前記第２のストリーム生成装置が生成したデータストリームに対して所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第２の変換コードを生成する第２のデータ変換装置と、前記暗号文送信装置から送信されてきた暗号文データを受信する暗号文受信装置と、受信した暗号文データを前記第２の変換コードを利用して復号して平文データを得る復号装置と、を有し、
前記第１のデータ変換装置および前記第２のデータ変換装置として、請求項１〜７のいずれかに記載のデータ変換装置であって、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する一対のデータ変換装置を用いることを特徴とする秘匿通信システム。
【請求項１４】
請求項１３に記載の秘匿通信システムにおいて、
第１のストリーム生成装置および第２のストリーム生成装置が、所定の規則に従って単位データの順列からなるデータストリームを生成し、
第１のデータ変換装置および第２のデータ変換装置が、データストリームを構成する個々の単位データに対して演算を実行することにより個々の変換コードを求め、これら変換コードの順列からなる鍵ストリームを生成し、
暗号化装置が、平文データを所定データ長の単位平文データに分割し、個々の単位平文データを前記鍵ストリームを構成する個々の変換コードを利用して暗号化することにより個々の単位暗号文データを生成し、この単位暗号文データの集合体として暗号文データを生成し、
復号装置が、暗号文データを所定データ長の単位暗号文データに分割し、個々の単位暗号文データを前記鍵ストリームを構成する個々の変換コードを利用して復号することにより個々の単位平文データを生成し、この単位平文データの集合体として平文データを生成することを特徴とする秘匿通信システム。
【請求項１５】
変換前データＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより、変換後データＱを生成するデータ変換方法であって、
複数ｎ通り（但し、ｎ≧２）の暗号化処理を所定の実行順序に従って実行する暗号化処理装置を用意し、第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理により、前記変換前データＰに対して第ｉ番目の暗号データＣｉを求める演算を実行することにより、第１番目〜第ｎ番目の暗号データＣ１〜Ｃｎを求める暗号化処理段階と、
合成処理装置により、前記暗号データＣ１〜Ｃｎを所定の合成処理アルゴリズムＳに基づいて合成し、得られた合成データＱを前記変換後データＱとして出力する合成処理段階と、
を有し、
前記複数ｎ通りの暗号化処理のうち、第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理は、前記変換前データＰに対して、第ｉ番目の暗号鍵Ｋｉを用いた第ｉ番目の暗号化アルゴリズムＡｉに基づく暗号化処理の演算を施すことにより、第ｉ番目の暗号データＣｉを求める処理であり、
前記複数ｎ通りの暗号化処理がそれぞれ用いる暗号化アルゴリズムおよび暗号鍵は、相互に、暗号化アルゴリズムおよび暗号鍵のうちの少なくとも一方が異なっており、
前記合成処理アルゴリズムＳは、前記暗号データＣ１〜Ｃｎに基づいて一義的に合成データＱが定まるアルゴリズムであり、かつ、前記合成データＱに基づいて前記暗号データＣ１〜Ｃｎを復元することはできない非可逆的な合成を行うアルゴリズムであり、
前記変換前データＰが与えられるたびに、所定の順序決定アルゴリズムＨに基づいて、前記複数ｎ通りの暗号化処理の実行順序を決定することを特徴とするデータ変換方法。
【請求項１６】
請求項１５に記載のデータ変換方法を利用して、認証処理を実行する第１の情報処理ユニットが認証処理の対象となる第２の情報処理ユニットを正規の情報処理ユニットとして認証する認証方法であって、
前記第１の情報処理ユニットが、乱数を利用してチャレンジコードを発生させるチャレンジコード発生段階と、
前記第１の情報処理ユニットが、前記チャレンジコードを第１の変換コードに変換する第１のデータ変換段階と、
前記第１の情報処理ユニットが、前記チャレンジコードを前記第２の情報処理ユニットに送信するチャレンジコード送信段階と、
前記第２の情報処理ユニットが、前記チャレンジコードを受信するチャレンジコード受信段階と、
前記第２の情報処理ユニットが、前記チャレンジコードを第２の変換コードに変換する第２のデータ変換段階と、
前記第２の情報処理ユニットが、前記第２の変換コードをレスポンスコードとして前記第１の情報処理ユニットに送信するレスポンスコード送信段階と、
前記第１の情報処理ユニットが、前記第２の情報処理ユニットから送信されてきたレスポンスコードを受信するレスポンスコード受信段階と、
前記第１の情報処理ユニットが、前記第１の変換コードと前記レスポンスコードとの整合性を判定する照合判定段階と、
を有し、
前記第１のデータ変換段階および前記第２のデータ変換段階において、請求項１５に記載のデータ変換方法であって、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する同じデータ変換方法を含む方法を用いることを特徴とする認証方法。
【請求項１７】
請求項１６に記載の認証方法において、
第１のデータ変換段階および第２のデータ変換段階において、請求項１５に記載のデータ変換方法を実行する前に所定の前処理を実行することを特徴とする認証方法。
【請求項１８】
請求項１５に記載のデータ変換方法を利用して、第１の情報処理ユニットから第２の情報処理ユニットへ秘匿情報を送信する秘匿通信方法であって、
前記第１の情報処理ユニットが、所定の規則に従って単位データの順列からなるデータストリームを生成する第１のストリーム生成段階と、
前記第１の情報処理ユニットが、前記第１のストリーム生成段階で生成されたデータストリームを構成する個々の単位データを第１の変換コードに変換する第１のデータ変換段階と、
前記第１の情報処理ユニットが、送信対象となる平文データを前記第１の変換コードを利用して暗号化して暗号文データを得る暗号化段階と、
前記第１の情報処理ユニットが、前記暗号文データを前記第２の情報処理ユニットに送信する暗号文送信段階と、
前記第２の情報処理ユニットが、前記第１の情報処理ユニットから送信されてきた前記暗号文データを受信する暗号文受信段階と、
前記第２の情報処理ユニットが、前記規則に従ってデータストリームを生成する第２のストリーム生成段階と、
前記第２の情報処理ユニットが、前記第２のストリーム生成段階で生成されたデータストリームを構成する個々の単位データを第２の変換コードに変換する第２のデータ変換段階と、
前記第２の情報処理ユニットが、前記暗号文データを前記第２の変換コードを利用して復号して平文データを得る復号段階と、
を有し、
前記第１のデータ変換段階および前記第２のデータ変換段階において、請求項１５に記載のデータ変換方法であって、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する同じデータ変換方法を用いることを特徴とする秘匿通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ変換装置に関し、特に、一対の情報処理ユニット間における認証処理や秘匿通信への利用に適した暗号化処理を伴うデータ変換を行う装置に関する。
【背景技術】
【０００２】
一対の情報処理ユニットが相互に通信を開始する場合、事前に相手方ユニットの正当性を確認する認証処理が不可欠である。このような認証処理として、現在最も普及している方法は、ランダムコードのデータ変換を伴うチャレンジレスポンス方式の認証方法である。
【０００３】
具体的には、第１の情報処理ユニットが第２の情報処理ユニットの正当性を確認する場合、まず、第１の情報処理ユニットが「チャレンジ」と呼ばれるランダムコードを発生させ、これを第２の情報処理ユニットに送信する。第２の情報処理ユニットは、この「チャレンジ」を所定のデータ変換装置を用いて変換することにより「レスポンス」と呼ばれる認証トークンを生成し、これを第１の情報処理ユニットに返信する。一方、第１の情報処理ユニットにおいても、「チャレンジ」を同一のデータ変換装置を用いて変換し、その結果が、返信されてきた「レスポンス」に一致するか否かを判定する。両者が一致すれば、第２の情報処理ユニットを正当な装置として認証することができる。たとえば、下記の特許文献１および特許文献２には、このようなチャレンジレスポンス方式の認証方法が開示されている。
【０００４】
また、上記認証方法の基本原理は、秘匿通信に応用することも可能である。たとえば、第１の情報処理ユニットから第２の情報処理ユニットに対して、情報を秘匿状態で送信する場合、第１の情報処理ユニットにおいて、カウンターなどで発生させたデータストリームを所定のデータ変換装置を用いて鍵ストリームに変換し、この鍵ストリームを用いて情報を暗号化して送信するようにすればよい。第２の情報処理ユニットでは、第１の情報処理ユニットと同じデータストリームを発生させ、これを同じデータ変換装置を用いて鍵ストリームに変換し、この鍵ストリームを用いて情報を復号すればよい。
【０００５】
上記認証方法や秘匿通信では、データ変換装置で実行される変換処理の秘匿性が維持されている限り、不正行為を防ぐことができる。一般に、情報処理ユニット間の通信経路が盗聴され、両者間でやりとりされる情報が傍受されたとしても、データ変換装置で行われる変換アルゴリズムは、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく暗号化処理の演算であるため、それだけで変換処理（暗号化処理）の秘匿性が破られる可能性は低い。実際、この種のデータ変換装置で現在実行されている秘密の変換アルゴリズム（暗号化アルゴリズムおよび暗号鍵）を、情報処理ユニット間の通信傍受で得た情報のみから解析することは極めて困難である。
【０００６】
しかしながら、近年は、サイドチャネル解析と呼ばれている暗号解析技術を用いた攻撃（サイドチャネル攻撃）が問題になってきている。サイドチャネル解析は、暗号化処理を実行中のデータ変換装置についての消費電力、演算処理時間、発生する電磁波などをモニタして秘密の暗号鍵を推定する解析方法である。このサイドチャネル解析の手法を、通信傍受で得た情報に組み合わせると暗号鍵の推定が容易になるため、たとえ数学的に強固な変換アルゴリズムを採用していても、不正行為が行われる可能性が危惧されている。
【０００７】
そこで、たとえば、下記の特許文献３には、鍵処理のための処理時間を工夫して中継端末に対する攻撃を防ぐ手法が開示されている。また、サイドチャネル攻撃への対応策として、特許文献４には、物理的現象に基づいて暗号鍵を生成する手法が開示されており、特許文献５には、暗号鍵の再利用を制限しながら、内部を秘密状態に保つ機能をもった装置で暗号化を行う手法が開示されている。更に、特許文献６には、回路レベルでサイドチャネル攻撃に対抗する技術が開示されており、特許文献７には、複数の暗号鍵をランダムに採用することによりサイドチャネル攻撃に対抗する技術が開示されており、特許文献８には、ダミー演算を実行することにより、不正な電力解析を妨げる方法が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】ＷＯ２００５／０５７４４７号公報
【特許文献２】特開２０００−１８３８６９号公報
【特許文献３】特開２００６−１９７４５８号公報
【特許文献４】特表２０１２−５１９９８７号公報
【特許文献５】特表２０１３−５１３３１２号公報
【特許文献６】ＷＯ２０１２／０１４２９１号公報
【特許文献７】ＷＯ２０１２／１３１９２６号公報
【特許文献８】特開２００６−０８１０５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述したように、認証処理や秘匿通信に利用する暗号化処理を行うデータ変換装置において、サイドチャネル攻撃に対する対策として様々な方法が提案されている。しかしながら、従来提案されている対抗策は、ハードウエア的に専用の特殊な装置を設ける必要があったり、ソフトウエア的に複雑な処理を行う必要があったりするため、構成が複雑になり、必ずしも効率的な対抗策にはなっていない。また、ダミー演算を実行する方法では、長時間に渡る統計的解析が行われると、ダミー演算による消費電力部分が平均化されてホワイトノイズとして取り扱われ、解析防止効果が低下する問題が指摘されている。
【００１０】
そこで本発明は、サイドチャネル攻撃にも十分に耐えることができ、かつ、効率的な暗号化処理が可能なデータ変換装置を提供することを目的とし、また、そのようなデータ変換装置を利用した認証システムおよび秘匿通信システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
(1)   本発明の第１の態様は、変換前データＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより、変換後データＱを生成するデータ変換装置において、
複数ｎ組（但し、ｎ≧２）の暗号化処理部と、これらｎ組の暗号化処理部によって得られた暗号データを合成する合成処理部と、を設け、
ｎ組の暗号化処理部における第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理部は、変換前データＰに対して、第ｉ番目の暗号鍵Ｋｉを用いた第ｉ番目の暗号化アルゴリズムＡｉに基づく暗号化処理の演算を施すことにより、第ｉ番目の暗号データＣｉを出力し、
合成処理部は、第１番目〜第ｎ番目の暗号化処理部によって出力された合計ｎ組の暗号データＣ１〜Ｃｎを所定の合成処理アルゴリズムＳに基づいて合成し、得られた合成データＱを変換後データＱとして出力し、
合成処理アルゴリズムＳは、ｎ組の暗号データＣ１〜Ｃｎに基づいて一義的に合成データＱが定まるアルゴリズムであり、かつ、合成データＱに基づいてｎ組の暗号データＣ１〜Ｃｎを復元することはできない非可逆的な合成を行うアルゴリズムであり、
ｎ組の暗号化処理部による暗号化処理の演算の少なくとも一部が、時間軸上で重複して実行されるようにしたものである。
【００１２】
(2)   本発明の第２の態様は、上述した第１の態様に係るデータ変換装置において、
複数ｎ組の暗号化処理部がそれぞれ用いる暗号化アルゴリズムおよび暗号鍵は、相互に、暗号化アルゴリズムおよび暗号鍵のうちの少なくとも一方が異なっているようにしたものである。
【００１３】
(3)   本発明の第３の態様は、上述した第２の態様に係るデータ変換装置において、
複数ｎ組の暗号化処理部が、同一の共通暗号化アルゴリズムに基づく演算を行い、かつ、相互に異なる暗号鍵を用いた演算を行うようにしたものである。
【００１４】
(4)   本発明の第４の態様は、変換前データＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより、変換後データＱを生成するデータ変換装置において、
複数ｎ通り（但し、ｎ≧２）の暗号化処理を所定の実行順序に従って実行する暗号化処理部と、このｎ通りの暗号化処理によって得られた暗号データを合成する合成処理部と、を設け、
暗号化処理部が実行する第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理は、変換前データＰに対して、第ｉ番目の暗号鍵Ｋｉを用いた第ｉ番目の暗号化アルゴリズムＡｉに基づく暗号化処理の演算を施すことにより、第ｉ番目の暗号データＣｉを得る処理であり、
合成処理部は、第１番目〜第ｎ番目の暗号化処理によって得られた合計ｎ組の暗号データＣ１〜Ｃｎを所定の合成処理アルゴリズムＳに基づいて合成し、得られた合成データＱを変換後データＱとして出力し、
合成処理アルゴリズムＳは、ｎ組の暗号データＣ１〜Ｃｎに基づいて一義的に合成データＱが定まるアルゴリズムであり、かつ、合成データＱに基づいてｎ組の暗号データＣ１〜Ｃｎを復元することはできない非可逆的な合成を行うアルゴリズムであり、
暗号化処理部は、変換前データＰが与えられるたびに、所定の順序決定アルゴリズムＨに基づいて、実行順序を決定するようにしたものである。
【００１５】
(5)   本発明の第５の態様は、上述した第４の態様に係るデータ変換装置において、
複数ｎ通りの暗号化処理にそれぞれ用いられる暗号化アルゴリズムおよび暗号鍵は、相互に、暗号化アルゴリズムおよび暗号鍵のうちの少なくとも一方が異なっているようにしたものである。
【００１６】
(6)   本発明の第６の態様は、上述した第５の態様に係るデータ変換装置において、
複数ｎ通りの暗号化処理には、同一の共通暗号化アルゴリズムに基づく演算が行われ、かつ、相互に異なる暗号鍵を用いた演算が行われるようにしたものである。
【００１７】
(7)   本発明の第７の態様は、上述した第１〜第６の態様に係るデータ変換装置において、
合成処理部が、ｎ組の暗号データＣ１〜Ｃｎの中から２組の暗号データを選択し、選択された２組の暗号データについて所定の論理演算を実行し、未選択の暗号データが存在する限り、当該未選択の暗号データのうちの１組を新たに選択し、直前に行われた論理演算の演算結果と新たに選択された暗号データとについての論理演算を繰り返し実行し、最終的に得られた論理演算の演算結果を合成データＱとするようにしたものである。
【００１８】
(8)   本発明の第８の態様は、上述した第７の態様に係るデータ変換装置において、
暗号化処理部によって、ｎ組の暗号データＣ１〜Ｃｎのデータ長が同一となるような暗号化処理を実行し、
２組のデータについての論理演算として、排他的論理和演算を実行するようにしたものである。
【００１９】
(9)   本発明の第９の態様は、上述した第７の態様に係るデータ変換装置において、
暗号化処理部によって、ｎ組の暗号データＣ１〜Ｃｎが互いに同一のデータ長となるような暗号化処理を実行し、
２組のデータについての論理演算として、当該２組のデータを同一の分割態様に基づいてそれぞれ分割することにより、それぞれ複数ｕ個の分割データを作成し、所定ビット長ｍを有する第ｊ番目（１≦ｊ≦ｕ）の分割データ同士の和の下位ｍビットを第ｊ番目の分割演算結果として求める処理をｊ＝１〜ｕについて実行し、第１番目の分割演算結果〜第ｕ番目の分割演算結果を連結する演算を実行するようにしたものである。
【００２０】
(10)  本発明の第１０の態様は、上述した第１〜第６の態様に係るデータ変換装置において、
合成処理部が、ｎ組の暗号データＣ１〜Ｃｎを連結して得られる連結データに対して、一方向性関数を作用させることにより得られるデータを合成データＱとするようにしたものである。
【００２１】
(11)  本発明の第１１の態様は、上述した第１〜第１０の態様に係るデータ変換装置を利用した認証システムにおいて、
認証処理を実行する第１の情報処理ユニットと、認証処理の対象となる第２の情報処理ユニットと、を設け、
第１の情報処理ユニットは、乱数を利用してチャレンジコードを発生させるチャレンジコード発生部と、チャレンジコードを第２の情報処理ユニットに送信するチャレンジコード送信部と、チャレンジコードに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第１の変換コードを生成する第１のデータ変換装置と、第２の情報処理ユニットから送信されてきたレスポンスコードを受信するレスポンスコード受信部と、第１の変換コードとレスポンスコードとの整合性を判定する照合判定部と、を有し、
第２の情報処理ユニットは、第１の情報処理ユニットから送信されてきたチャレンジコードを受信するチャレンジコード受信部と、受信したチャレンジコードに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第２の変換コードを生成する第２のデータ変換装置と、第２の変換コードをレスポンスコードとして第１の情報処理ユニットに送信するレスポンスコード送信部と、を有し、
第１のデータ変換装置および第２のデータ変換装置として、上述した第１〜第１０の態様に係るデータ変換装置であって、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する一対のデータ変換装置を用いるようにしたものである。
【００２２】
(12)  本発明の第１２の態様は、上述した第１〜第１０の態様に係るデータ変換装置を利用した認証システムにおいて、
認証処理を実行する第１の情報処理ユニットと、認証処理の対象となる第２の情報処理ユニットと、を設け、
第１の情報処理ユニットは、乱数を利用してチャレンジコードを発生させるチャレンジコード発生部と、チャレンジコードを第２の情報処理ユニットに送信するチャレンジコード送信部と、チャレンジコードに所定の前処理を施すことにより第１の前処理コードを生成する第１の前処理装置と、第１の前処理コードに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第１の変換コードを生成する第１のデータ変換装置と、第２の情報処理ユニットから送信されてきたレスポンスコードを受信するレスポンスコード受信部と、第１の変換コードとレスポンスコードとの整合性を判定する照合判定部と、を有し、
第２の情報処理ユニットは、第１の情報処理ユニットから送信されてきたチャレンジコードを受信するチャレンジコード受信部と、受信したチャレンジコードに上記前処理を施すことにより第２の前処理コードを生成する第２の前処理装置と、第２の前処理コードに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第２の変換コードを生成する第２のデータ変換装置と、第２の変換コードをレスポンスコードとして第１の情報処理ユニットに送信するレスポンスコード送信部と、を有し、
第１のデータ変換装置および第２のデータ変換装置として、上述した第１〜第１０の態様に係るデータ変換装置であって、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する一対のデータ変換装置を用いるようにしたものである。
【００２３】
(13)  本発明の第１３の態様は、上述した第１２の態様に係る認証システムにおいて、
第１の前処理装置および第２の前処理装置として、処理前のデータを構成する個々のバイトに所定の規則に従ってオフセット値を増減する処理を行う装置を用いるようにしたものである。
【００２４】
(14)  本発明の第１４の態様は、上述した第１２の態様に係る認証システムにおいて、
第２の前処理装置として、処理前のデータを構成する個々のバイトに、複数ｋ通りの値の中からランダムに選択されたオフセット値を増減する処理を行う装置を用い、
第１の前処理装置として、処理前のデータを構成する個々のバイトにｋ通りのオフセット値を増減する処理を行うことによりｋ通りのデータを処理後のデータとして得る装置を用い、
照合判定部が、ｋ通りのバリエーションについて合致判定を行い、いずれか１つのバリエーションについて合致する旨の判定が得られた場合に整合性ありとの判定を行うようにしたものである。
【００２５】
(15)  本発明の第１５の態様は、上述した第１２の態様に係る認証システムにおいて、
第１の前処理装置および第２の前処理装置として、処理前のデータの個々の構成要素を所定の規則に従って並び替える処理を行う装置を用いるようにしたものである。
【００２６】
(16)  本発明の第１６の態様は、上述した第１〜第１０の態様に係るデータ変換装置を利用した秘匿通信システムにおいて、
秘匿情報を送信する第１の情報処理ユニットと、秘匿情報を受信する第２の情報処理ユニットと、を設け、
第１の情報処理ユニットは、所定の規則に従ってデータストリームを生成する第１のストリーム生成装置と、第１のストリーム生成装置が生成したデータストリームに対して所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第１の変換コードを生成する第１のデータ変換装置と、送信対象となる平文データを第１の変換コードを利用して暗号化して暗号文データを得る暗号化装置と、暗号文データを第２の情報処理ユニットに送信する暗号文送信装置と、を有し、
第２の情報処理ユニットは、上記規則に従ってデータストリームを生成する第２のストリーム生成装置と、第２のストリーム生成装置が生成したデータストリームに対して所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第２の変換コードを生成する第２のデータ変換装置と、暗号文送信装置から送信されてきた暗号文データを受信する暗号文受信装置と、受信した暗号文データを第２の変換コードを利用して復号して平文データを得る復号装置と、を有し、
第１のデータ変換装置および第２のデータ変換装置として、上述した第１〜第１０の態様に係るデータ変換装置であって、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する一対のデータ変換装置を用いるようにしたものである。
【００２７】
(17)  本発明の第１７の態様は、上述した第１６の態様に係る秘匿通信システムにおいて、
第１のストリーム生成装置および第２のストリーム生成装置が、所定の規則に従って単位データの順列からなるデータストリームを生成し、
第１のデータ変換装置および第２のデータ変換装置が、データストリームを構成する個々の単位データに対して演算を実行することにより個々の変換コードを求め、これら変換コードの順列からなる鍵ストリームを生成し、
暗号化装置が、平文データを所定データ長の単位平文データに分割し、個々の単位平文データを鍵ストリームを構成する個々の変換コードを利用して暗号化することにより個々の単位暗号文データを生成し、この単位暗号文データの集合体として暗号文データを生成し、
復号装置が、暗号文データを所定データ長の単位暗号文データに分割し、個々の単位暗号文データを鍵ストリームを構成する個々の変換コードを利用して復号することにより個々の単位平文データを生成し、この単位平文データの集合体として平文データを生成するようにしたものである。
【００２８】
(18)  本発明の第１８の態様は、変換前データＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより、変換後データＱを生成するデータ変換方法において、
複数ｎ組（但し、ｎ≧２）の暗号化処理装置を用意し、第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理装置により、変換前データＰに対して第ｉ番目の暗号データＣｉを求める暗号化処理の演算を実行することにより、第１番目〜第ｎ番目の暗号データＣ１〜Ｃｎを求める暗号化処理段階と、
合成処理装置により、暗号データＣ１〜Ｃｎを所定の合成処理アルゴリズムＳに基づいて合成し、得られた合成データＱを変換後データＱとして出力する合成処理段階と、
を行い、
複数ｎ組の暗号化処理装置のうち、第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理装置は、変換前データＰに対して、第ｉ番目の暗号鍵Ｋｉを用いた第ｉ番目の暗号化アルゴリズムＡｉに基づく暗号化処理の演算を施すことにより、第ｉ番目の暗号データＣｉを出力し、
複数ｎ組の暗号化処理装置がそれぞれ用いる暗号化アルゴリズムおよび暗号鍵は、相互に、暗号化アルゴリズムおよび暗号鍵のうちの少なくとも一方が異なっており、
合成処理アルゴリズムＳは、暗号データＣ１〜Ｃｎに基づいて一義的に合成データＱが定まるアルゴリズムであり、かつ、合成データＱに基づいて暗号データＣ１〜Ｃｎを復元することはできない非可逆的な合成を行うアルゴリズムであり、
ｎ組の暗号化処理装置による暗号化処理の演算の少なくとも一部が、時間軸上で重複して実行されるようにしたものである。
【００２９】
(19)  本発明の第１９の態様は、変換前データＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより、変換後データＱを生成するデータ変換方法において、
複数ｎ通り（但し、ｎ≧２）の暗号化処理を所定の実行順序に従って実行する暗号化処理装置を用意し、第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理により、変換前データＰに対して第ｉ番目の暗号データＣｉを求める演算を実行することにより、第１番目〜第ｎ番目の暗号データＣ１〜Ｃｎを求める暗号化処理段階と、
合成処理装置により、暗号データＣ１〜Ｃｎを所定の合成処理アルゴリズムＳに基づいて合成し、得られた合成データＱを変換後データＱとして出力する合成処理段階と、
を行い、
複数ｎ通りの暗号化処理のうち、第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理は、変換前データＰに対して、第ｉ番目の暗号鍵Ｋｉを用いた第ｉ番目の暗号化アルゴリズムＡｉに基づく暗号化処理の演算を施すことにより、第ｉ番目の暗号データＣｉを求める処理であり、
複数ｎ通りの暗号化処理がそれぞれ用いる暗号化アルゴリズムおよび暗号鍵は、相互に、暗号化アルゴリズムおよび暗号鍵のうちの少なくとも一方が異なっており、
合成処理アルゴリズムＳは、暗号データＣ１〜Ｃｎに基づいて一義的に合成データＱが定まるアルゴリズムであり、かつ、合成データＱに基づいて暗号データＣ１〜Ｃｎを復元することはできない非可逆的な合成を行うアルゴリズムであり、
変換前データＰが与えられるたびに、所定の順序決定アルゴリズムＨに基づいて、複数ｎ通りの暗号化処理の実行順序を決定するようにしたものである。
【００３０】
(20)  本発明の第２０の態様は、上述した第１８または第１９の態様に係るデータ変換方法を利用して、認証処理を実行する第１の情報処理ユニットが認証処理の対象となる第２の情報処理ユニットを正規の情報処理ユニットとして認証する認証方法において、
第１の情報処理ユニットが、乱数を利用してチャレンジコードを発生させるチャレンジコード発生段階と、
第１の情報処理ユニットが、チャレンジコードを第１の変換コードに変換する第１のデータ変換段階と、
第１の情報処理ユニットが、チャレンジコードを第２の情報処理ユニットに送信するチャレンジコード送信段階と、
第２の情報処理ユニットが、チャレンジコードを受信するチャレンジコード受信段階と、
第２の情報処理ユニットが、チャレンジコードを第２の変換コードに変換する第２のデータ変換段階と、
第２の情報処理ユニットが、第２の変換コードをレスポンスコードとして第１の情報処理ユニットに送信するレスポンスコード送信段階と、
第１の情報処理ユニットが、第２の情報処理ユニットから送信されてきたレスポンスコードを受信するレスポンスコード受信段階と、
第１の情報処理ユニットが、第１の変換コードとレスポンスコードとの整合性を判定する照合判定段階と、
を行い、
第１のデータ変換段階および第２のデータ変換段階において、上述した第２０または第２１の態様に係るデータ変換方法であって、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する同じデータ変換方法を含む方法を用いるようにしたものである。
【００３１】
(21)  本発明の第２１の態様は、上述した第２０の態様に係る認証方法において、
第１のデータ変換段階および第２のデータ変換段階において、上述した第１８または第１９の態様に係るデータ変換方法を実行する前に所定の前処理を実行するようにしたものである。
【００３２】
(22)  本発明の第２２の態様は、上述した第１８または第１９の態様に係るデータ変換方法を利用して、第１の情報処理ユニットから第２の情報処理ユニットへ秘匿情報を送信する秘匿通信方法において、
第１の情報処理ユニットが、所定の規則に従って単位データの順列からなるデータストリームを生成する第１のストリーム生成段階と、
第１の情報処理ユニットが、第１のストリーム生成段階で生成されたデータストリームを構成する個々の単位データを第１の変換コードに変換する第１のデータ変換段階と、
第１の情報処理ユニットが、送信対象となる平文データを第１の変換コードを利用して暗号化して暗号文データを得る暗号化段階と、
第１の情報処理ユニットが、暗号文データを第２の情報処理ユニットに送信する暗号文送信段階と、
第２の情報処理ユニットが、第１の情報処理ユニットから送信されてきた暗号文データを受信する暗号文受信段階と、
第２の情報処理ユニットが、上記規則に従ってデータストリームを生成する第２のストリーム生成段階と、
第２の情報処理ユニットが、第２のストリーム生成段階で生成されたデータストリームを構成する個々の単位データを第２の変換コードに変換する第２のデータ変換段階と、
第２の情報処理ユニットが、暗号文データを第２の変換コードを利用して復号して平文データを得る復号段階と、
を行い、
第１のデータ変換段階および第２のデータ変換段階において、上述した第２０または第２１の態様に係るデータ変換方法であって、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する同じデータ変換方法を用いるようにしたものである。
【発明の効果】
【００３３】
本発明の第１の実施形態に係るデータ変換装置によれば、与えられた同一の変換前データＰに対して、複数ｎ組の暗号化処理部による暗号化処理が実行され、得られた複数ｎ組の暗号データＣ１〜Ｃｎを合成することにより変換後データＱが得られる。ｎ組の暗号化処理部による暗号化処理の演算は、少なくとも一部が時間軸上で重複して実行されるため、データ変換装置の電力消費量は同時並列的に実行された複数の暗号化処理の合計消費量となり、サイドチャネル攻撃による解析が困難になる。
【００３４】
この第１の実施形態の場合、ハードウエア上は、複数ｎ組の暗号化処理部を用意する必要はあるが、既存の一般的な暗号化処理部を複数組揃えればよいので、装置の構成はそれほど複雑なものにはならず、サイドチャネル攻撃にも十分に耐えることができ、かつ、効率的な暗号化処理が可能なデータ変換装置を実現することができる。
【００３５】
特に、複数ｎ組の暗号化処理部がそれぞれ用いる暗号化アルゴリズムおよび暗号鍵として、相互に、暗号化アルゴリズムおよび暗号鍵のうちの少なくとも一方が異なっているようにする実施例を採用すれば、個々の暗号化処理の電力消費量が互いに異なるようになるため、解析を一層困難にする効果が得られる。
【００３６】
一方、本発明の第２の実施形態に係るデータ変換装置によれば、与えられた同一の変換前データＰに対して、複数ｎ通りの暗号化処理が所定の順序で実行され、得られた複数ｎ組の暗号データＣ１〜Ｃｎを合成することにより変換後データＱが得られる。しかも、各暗号化処理の実行順序は、変換前データＰが与えられるたびに決定されるため、毎回異なることになる。したがって、電力消費量を統計的に解析したとしても、個々の暗号化処理の実行順序が不明であるため、サイドチャネル攻撃による解析が困難になる。
【００３７】
この第２の実施形態の場合、ハードウエア上は、単一の暗号化処理部を用意すれば足りるため、構成は非常に単純になる。また、ソフトウエア上は、既存の一般的な暗号化処理を複数通り行う機能をもたせておき、これを順番に実行すればよいので、複雑な処理を行う必要はない。よって、サイドチャネル攻撃にも十分に耐えることができ、かつ、効率的な暗号化処理が可能なデータ変換装置を実現することができる。
【００３８】
特に、複数ｎ組の暗号化処理部がそれぞれ用いる暗号化アルゴリズムおよび暗号鍵として、相互に、暗号化アルゴリズムおよび暗号鍵のうちの少なくとも一方が異なっているようにする実施例を採用すれば、個々の暗号化処理の電力消費量が互いに異なるようになるため、解析を一層困難にする効果が得られる。
【００３９】
また、本発明の第１の実施形態および第２の実施形態のいずれにおいても、合成処理アルゴリズムＳは、ｎ組の暗号データＣ１〜Ｃｎに基づいて一義的に合成データＱが定まるアルゴリズムであり、かつ、合成データＱに基づいてｎ組の暗号データＣ１〜Ｃｎを復元することはできない非可逆的な合成を行うアルゴリズムである。このため、クラッカーは合成データＱを入手したとしても、この合成データＱからｎ組の暗号データＣ１〜Ｃｎを求めることはできない。このように、本発明に係るデータ変換装置では、装置内部での暗号化処理により得られる暗号データＣ１〜Ｃｎと、装置から外部に出力される合成データＱとが異なり、しかも合成データＱから暗号データＣ１〜Ｃｎを復元することはできないため、クラッカーによるサイドチャネル解析が極めて困難になる。
【００４０】
また、本発明に係る認証システムや、秘匿通信システムでは、上述した特徴をもったデータ変換装置を用いて暗号化処理を行うようにしたため、サイドチャネル攻撃にも十分に耐えることができ、かつ、効率的な認証処理や秘匿通信が可能なシステムを実現することができる。
【図面の簡単な説明】
【００４１】
【図１】従来の一般的なデータ変換装置におけるサイドチャネル攻撃の様子を示すブロック図である。
【図２】サイドチャネル攻撃における消費電力解析に用いられる波形図である。
【図３】本発明の第１の実施形態に係るデータ変換装置１００の基本構成を示すブロック図である。
【図４】図３に示すデータ変換装置１００における暗号化処理のタイムチャートである。
【図５】図３に示すデータ変換装置１００に対してサイドチャネル攻撃が行われた場合の消費電力解析に用いられる波形図である。
【図６】図３に示すデータ変換装置１００の合成処理部１２０によって行われる合成処理の一例を示すブロック図である。
【図７】図３に示すデータ変換装置１００の合成処理部１２０によって行われる排他的論理和演算の一例を示すブロック図である。
【図８】図３に示すデータ変換装置１００の合成処理部１２０によって行われる剰余加算演算の一例を示すブロック図である。
【図９】図３に示すデータ変換装置１００の合成処理部１２０によって行われるＨＡＳＨ関数演算の式の一例を示す図である。
【図１０】本発明の第１の実施形態に係るデータ変換方法の基本手順を示す流れ図である。
【図１１】本発明の第２の実施形態に係るデータ変換装置２００の基本構成を示すブロック図である。
【図１２】図１１に示すデータ変換装置２００における暗号化処理のタイムチャートである。
【図１３】図３に示すデータ変換装置２００に対してサイドチャネル攻撃が行われた場合の消費電力解析に用いられる波形図である。
【図１４】本発明の第２の実施形態に係るデータ変換方法の基本手順を示す流れ図である。
【図１５】本発明に係る認証システム３００の基本構成を示すブロック図である。
【図１６】本発明に係る認証システムの第１の変形例３００Ａを示すブロック図である。
【図１７】図１６に示す認証システム３００Ａで行われる前処理として、オフセット値を増減する処理を行う例を示す図である。
【図１８】図１６に示す認証システム３００Ａで行われる前処理として、データの並べ替え処理を行う例を示す図である。
【図１９】本発明に係る認証システムの第２の変形例３００Ｂを示すブロック図である。
【図２０】本発明に係る認証システムの第３の変形例３００Ｃを示すブロック図である。
【図２１】本発明に係る認証方法の基本手順を示す流れ図である。
【図２２】本発明に係る秘匿通信システム４００の基本構成を示すブロック図である。
【図２３】図２２に示す秘匿通信システム４００で用いられるデータストリームＤＳおよび鍵ストリームＫＳの一例を示す図である。
【図２４】図２２に示す秘匿通信システム４００で実行される暗号化処理および復号処理の一例を示す図である。
【図２５】本発明に係る秘匿通信の基本手順を示す流れ図である。
【発明を実施するための形態】
【００４２】
以下、本発明を図示する実施形態に基づいて説明する。
【００４３】
＜＜＜  §１．  本発明の第１の実施形態  ＞＞＞
ここでは、まず、本発明に係るデータ変換装置の第１の実施形態について説明する。
【００４４】
＜１．１  サイドチャネル攻撃＞
説明の便宜上、はじめに、データ変換装置に対する一般的なサイドチャネル攻撃について簡単に述べておく。前述したとおり、サイドチャネル攻撃は、暗号化処理を実行中のデータ変換装置についての消費電力、演算処理時間、発生する電磁波などをモニタして秘密の暗号鍵を推定する解析手法であり、このサイドチャネル攻撃で得た情報と通信傍受で得た情報とを組み合わせると、暗号鍵の推定が容易になるため、不正行為が行われる可能性が高まる。
【００４５】
図１は、従来の一般的なデータ変換装置１０におけるサイドチャネル攻撃の様子を示すブロック図である。データ変換装置１０は、変換前データＰに対して、所定の暗号鍵Ｋを用いた所定の暗号化アルゴリズムＡに基づく暗号化処理演算を施すことにより、変換後データＱを生成する機能をもった装置であり、認証システムや秘匿通信システムに組み込まれて利用される。このようなシステムに対して不正行為が行われることを防ぐには、暗号化処理演算に用いられる暗号化アルゴリズムＡおよび暗号鍵Ｋが秘密の状態に保たれている必要がある。
【００４６】
不正行為を企図するクラッカーは、データ変換装置１０に対する入出力ラインを流れる信号を傍受することにより、変換前データＰと、これに対応して出力される変換後データＱとを入手することができ、更に、データ変換装置１０の電源ラインを流れる電流を測定することにより消費電力をモニタするサイドチャネル攻撃を行うことができる。こうして不正に入手した情報は、特定のデータＰを特定のデータＱに変換する暗号化処理を行う際に、データ変換装置１０内でどのような演算が実施されているかを解析する材料になる。このような解析を繰り返し実行すれば、統計的な手法により、暗号化アルゴリズムＡおよび暗号鍵Ｋを類推することが可能になる。
【００４７】
図２は、データ変換装置１０の電源ラインをモニタすることにより得られた消費電力の波形図であり、上述したように、サイドチャネル攻撃に利用される。具体的には、たとえば、時刻ｔ３，ｔ６，ｔ８等において、消費電力の特徴的なピークが見られ、その直前の時刻ｔ２，ｔ５，ｔ７の前後において、消費電力がほぼ安定した時期が見られる、といった消費電力に関する情報と、特定のデータＰが特定のデータＱに変換される、といった入出力信号の傍受によって得られる情報と、を組み合わせた解析を、多数の事例に関して実行することにより、データ変換装置１０が採用している暗号化アルゴリズムＡおよび暗号鍵Ｋを統計的な手法で推定することができる。
【００４８】
本発明は、このようなサイドチャネル攻撃にも十分に耐えることができ、かつ、効率的な暗号化処理が可能なデータ変換装置を提供することを目的とするものである。以下、その第１の実施形態を説明する。
【００４９】
＜１．２  第１の実施形態に係るデータ変換装置の構成および動作＞
図３は、本発明の第１の実施形態に係るデータ変換装置１００の基本構成を示すブロック図である。実際には、このデータ変換装置１００は、専用の処理機能を備えた半導体集積回路もしくは専用のプログラムが組み込まれたコンピュータによって構成される。
【００５０】
図３に示すデータ変換装置１００は、図１に示すデータ変換装置１０と同様に、変換前データＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより、変換後データＱを生成する機能を有し、図示のとおり、複数ｎ組（但し、ｎ≧２）の暗号化処理部１１１，１１２，... ，１１ｉ，..., １１ｎと、これらｎ組の暗号化処理部によって得られた暗号データＣ１，Ｃ２，... ，Ｃｉ，... ，Ｃｎを合成する合成処理部１２０と、を備えている。これらの各構成要素は、同一のデータ変換装置１００に組み込まれた要素であり、同一系統の電源供給ラインから供給された電力によって動作する。
【００５１】
ここで、ｎ組の暗号化処理部１１１，１１２，... ，１１ｉ，..., １１ｎにおける第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理部は、与えられた変換前データＰに対して、第ｉ番目の暗号鍵Ｋｉを用いた第ｉ番目の暗号化アルゴリズムＡｉに基づく暗号化処理の演算を施すことにより、第ｉ番目の暗号データＣｉを出力する役割を果たす。たとえば、第１番目の暗号化処理部１１１は、第１番目の暗号鍵Ｋ１を用いた第１番目の暗号化アルゴリズムＡ１に基づく暗号化処理の演算を施すことにより、第１番目の暗号データＣ１を出力し、第２番目の暗号化処理部１１２は、第２番目の暗号鍵Ｋ２を用いた第２番目の暗号化アルゴリズムＡ２に基づく暗号化処理の演算を施すことにより、第２番目の暗号データＣ２を出力する。
【００５２】
個々の暗号化アルゴリズムＡｉや個々の暗号鍵Ｋｉ（ｉ＝１〜ｎ）は、図１に示すような従来の一般的なデータ変換装置１０で利用されている一般的な暗号化アルゴリズムＡや暗号鍵Ｋでかまわない。何らかの暗号鍵Ｋを用いて所定の暗号化処理を実行する暗号化アルゴリズムＡは、たとえば、ＤＥＳ、ＡＥＳ、ＣＡＭＥＬＬＩＡなど、様々な方式が公知であり、また、実用化されているため、ここでは詳しい説明は省略する。
【００５３】
合成処理部１２０は、第１番目〜第ｎ番目の暗号化処理部１１１〜１１ｎによって出力された合計ｎ組の暗号データＣ１〜Ｃｎを所定の合成処理アルゴリズムＳに基づいて合成し、得られた合成データＱを変換後データＱとして出力する構成要素である。合成処理アルゴリズムＳは、ｎ組の暗号データＣ１〜Ｃｎに基づいて一義的に合成データＱが定まるアルゴリズムであり、かつ、合成データＱに基づいてｎ組の暗号データＣ１〜Ｃｎを復元することはできない非可逆的な合成を行うアルゴリズムであれば、どのようなアルゴリズムであってもかまわない。具体的なアルゴリズムについては、後述する§１．３でいくつかを例示する。
【００５４】
ここで重要な点は、ｎ組の暗号化処理部１１１〜１１ｎによる暗号化処理の演算の少なくとも一部が、時間軸上で重複して実行されるようになっている点である。図４は、図３に示すデータ変換装置１００において、ｎ＝３に設定した場合の暗号化処理のタイムチャートである。ｎ＝３に設定した場合、図３に示すデータ変換装置１００には、３組の暗号化処理部１１１，１１２，１１３が設けられることになる。図４に丸数字１〜３で示すバーは、それぞれ暗号化処理部１１１によって実行される第１番目の暗号化処理、暗号化処理部１１２によって実行される第２番目の暗号化処理、暗号化処理部１１３によって実行される第３番目の暗号化処理の実行時間を示している。
【００５５】
具体的には、図４に示す例の場合、第１番目の暗号化処理は時刻ｔ０〜ｔ２にわたって行われ、第２番目の暗号化処理は時刻ｔ０〜ｔ３にわたって行われ、第３番目の暗号化処理は時刻ｔ１〜ｔ４にわたって行われている。したがって、時刻ｔ０〜ｔ１の期間は、２組の暗号化処理が同時に実行され、時刻ｔ１〜ｔ２の期間は、３組の暗号化処理が同時に実行され、時刻ｔ２〜ｔ３の期間は、２組の暗号化処理が同時に実行され、時刻ｔ３〜ｔ４の期間は、１組の暗号化処理のみが実行されることになる。
【００５６】
このように、３組の暗号化処理の演算の少なくとも一部が、時間軸上で重複して実行されるようにすると、サイドチャネル攻撃を困難にさせる効果が得られる。図５は、図３に示すデータ変換装置１００に対してサイドチャネル攻撃が行われた場合の消費電力解析に用いられる波形図である。この図５の波形図の時間軸ｔは、図４のタイムチャートの時間軸ｔに対応しており、図５の横軸の時刻ｔ０，ｔ１，ｔ２，ｔ３，ｔ４は、それぞれ図４の横軸の時刻ｔ０，ｔ１，ｔ２，ｔ３，ｔ４に対応する。
【００５７】
上例のように、ｎ＝３に設定した場合、図３に示すデータ変換装置１００には、３組の暗号化処理部１１１，１１２，１１３が設けられることになるが、これら３組の暗号化処理部１１１，１１２，１１３は、いずれも同一のデータ変換装置１００に組み込まれており、同一系統の電源供給ラインからの電力供給を受けることになる。したがって、サイドチャネル攻撃によってモニタされた消費電力は、図５に示すように、同時に動作している暗号化処理部の消費電力の合計値ということになる。
【００５８】
すなわち、図４に示すタイムチャートに基づいて個々の暗号化処理が実行された場合、時刻ｔ０〜ｔ１の期間は、図５に丸数字で示すとおり、第１および第２の暗号化処理に必要な合計消費電力が観測され、時刻ｔ１〜ｔ２の期間は、第１、第２、第３の暗号化処理に必要な合計消費電力が観測され、時刻ｔ２〜ｔ３の期間は、第２および第３の暗号化処理に必要な合計消費電力が観測され、時刻ｔ３〜ｔ４の期間は、第３の暗号化処理に必要な消費電力が観測される。
【００５９】
サイドチャネル攻撃をしかけたクラッカーにとっては、データ変換装置１００内に組み込まれている暗号化処理部の数（すなわち、ｎの値）は不明であり、もちろん、これら複数の暗号化処理部が、図４に例示するタイムチャートに従って動作することも不明である。したがって、たとえば、不正な通信傍受により、変換前データＰおよび変換後データＱを入手し、更に、電源供給ラインをモニタして図５に示すような消費電力の波形図を入手したとしても、それだけの情報から、３組の暗号化処理部１１１，１１２，１１３でそれぞれ実行されている暗号化処理の内容を推定することは極めて困難である。
【００６０】
しかも、この３組の暗号化処理部１１１，１１２，１１３でそれぞれ実行されている暗号化処理は、意味のないダミー処理ではなく、それぞれ所定の暗号鍵Ｋｉを用いて所定の暗号化アルゴリズムＡｉに基づく演算を実行することにより、変換前データＰに対して所定の変換を施す実体のある処理になっている。このため、本発明に係るデータ変換装置１００は、前掲の特許文献８などに開示されているダミー演算を実行するデータ変換装置に比べると、不正な電力解析を妨げる効果は極めて高い。
【００６１】
すなわち、本来の暗号化処理演算とダミー演算とを同時に実行した場合、確かに合計の消費電力が増えるため、クラッカーに対して実消費電力を偽装する効果を得ることはできる。しかしながら、クラッカーが長い時間をかけて統計的な消費電力解析を行うと、ダミー演算に要する消費電力はホワイトノイズ化してしまうため、十分な偽装効果を得ることができなくなる。図３に示すデータ変換装置１００の場合、個々の暗号化処理部が実行する暗号化処理演算は、ダミー演算ではなく、いずれも所定の暗号鍵Ｋｉを用いた所定の暗号化アルゴリズムＡｉに基づく実演算であるため、統計的な消費電力解析に対してもホワイトノイズ化することはなく、不正な電力解析を妨げる十分な効果を得ることができる。
【００６２】
なお、図４に例示するタイムチャートでは、第３番目の暗号化処理の開始時刻をｔ１として若干遅らせているが、もちろん、３組の暗号化処理をすべて同時刻ｔ０に開始するようにしてもよい。図３に示すデータ変換装置１００が入力した変換前データＰは、複数ｎ組の暗号化処理部１１１〜１１ｎに同時に与えられることになるが、個々の暗号化処理部１１１〜１１ｎが暗号化処理を実行するタイミングは、それぞれ個別に設定しておくことができる。クラッカーによる不正な消費電力解析を混乱させる上では、様々なタイミングを設定しておくのが好ましい。
【００６３】
また、図４に例示するタイムチャートでは、時刻ｔ３〜ｔ４の期間は、第３の暗号化処理のみが実行されている状態になっているが、実用上は、暗号化処理の演算中は、どの時点においても常に２組以上の暗号化処理部による処理が重複して実行されるようにするのが好ましい。これは、図４の時刻ｔ３〜ｔ４の期間のように、単独の暗号鍵のみを用いた処理が実行されている期間が存在すると、クラッカーによる不正な消費電力解析が行いやすくなるためである。したがって、実用上は、常に２組以上の暗号鍵を用いた処理が重複して実行されるような運用を行い、どのタイミングで消費電力のモニタが行われたとしても、解析が困難になるようにしておくのが好ましい。
【００６４】
もちろん、暗号化処理を前半処理と後半処理とに分け、両者間に処理休止期間を設定することも可能である。あるいは、変換前データＰが与えられるたびに、それぞれ暗号化処理のタイミングを変えるような運用を行ってもかまわない。クラッカーが消費電力をモニタしても、得られる情報は、常に複数ｎ組の暗号化処理部１１１〜１１ｎの合計消費電力だけであり、個々の暗号化処理部の個別の消費電力が得られるわけではない。しかも、個々の暗号化処理部が暗号化処理を行うタイミングを知ることもできないので、不正な電力解析を行うことは極めて困難になる。
【００６５】
なお、複数ｎ組の暗号化処理部１１１〜１１ｎがそれぞれ用いる暗号化アルゴリズムＡｉおよび暗号鍵Ｋｉ（ｉ＝１〜ｎ）は、互いに同じものであってもかまわないが、不正な電力解析を妨げる効果を高めるためには、相互に、暗号化アルゴリズムＡｉおよび暗号鍵Ｋｉのうちの少なくとも一方が異なっているようにするのが好ましい。これは、複数ｎ組の暗号化処理部１１１〜１１ｎがすべて同一の共通暗号化アルゴリズムＡに基づく演算を行い、かつ、同一の共通暗号鍵Ｋを用いた演算を行うようにすると、暗号化処理を行うタイミングが同じ場合、クラッカーがモニタして得た消費電力は、１組の暗号化処理部の消費電力のｎ倍（整数倍）という結果になるため、不正な電力解析を行い易くなるためである。
【００６６】
複数ｎ組の暗号化処理部１１１〜１１ｎが暗号化処理を実行するにあたって、暗号化アルゴリズムＡｉおよび暗号鍵Ｋｉ（ｉ＝１〜ｎ）のうちの少なくとも一方が異なっているようにすれば、暗号化処理を行うタイミングが同じであっても、合計消費電力は、１組の暗号化処理部の消費電力の整数倍という結果にはならず、不正な電力解析を妨げる上で効果的である。
【００６７】
実用上は、複数ｎ組の暗号化処理部１１１〜１１ｎが、同一の共通暗号化アルゴリズムＡcommonに基づく演算を行い、かつ、相互に異なる暗号鍵Ｋｉ（ｉ＝１〜ｎ）を用いた演算を行うようにするのが好ましい。そのような構成を採用すれば、複数ｎ組の暗号化処理部１１１〜１１ｎを、共通暗号化アルゴリズムＡcommonに基づく演算を実行する同型の回路によって構成しておき、用いる暗号鍵Ｋｉのみが相互に異なるように、各暗号化処理部１１１〜１１ｎ内の暗号鍵用メモリに記憶させておくデータだけを変えておけば済む。
【００６８】
別言すれば、複数ｎ組の暗号化処理部１１１〜１１ｎとして、ハードウエア上は、同種の演算回路を用意すればよいので、構成はそれほど複雑なものにはならない。実用上は、ｎ＝２として、同一のハードウエア構成をもつ２組の暗号化処理部１１１，１１２を用意しておき、それぞれにおいて、共通暗号化アルゴリズムＡcommonに基づく演算が実行されるようにしておき、第１の暗号化処理部１１１で用いられる暗号鍵Ｋ１と第２の暗号化処理部１１２で用いられる暗号鍵Ｋ２とを異ならせる構成を採用すれば、構造は比較的単純になり、しかも実用上、不正な電力解析を妨げる十分な効果を奏することが可能である。
【００６９】
＜１．３  合成処理の具体例＞
ここでは、図３に示すデータ変換装置１００における合成処理部１２０で実行される合成処理の具体例をいくつか述べておく。
【００７０】
前述したとおり、合成処理部１２０は、第１番目〜第ｎ番目の暗号化処理部１１１〜１１ｎによって出力された合計ｎ組の暗号データＣ１〜Ｃｎを所定の合成処理アルゴリズムＳに基づいて合成し、得られた合成データＱを変換後データＱとして出力する機能を果たす。
【００７１】
ここで、合成処理アルゴリズムＳとしての第１の条件は、「ｎ組の暗号データＣ１〜Ｃｎに基づいて一義的に合成データＱが定まるアルゴリズムである」という条件である。合成データＱは変換後データＱとして出力されるデータであるので、一義的なデータが定まらないと、後述する認証システムや秘匿通信システムに利用することはできない。
【００７２】
一方、合成処理アルゴリズムＳとしての第２の条件は、「合成データＱに基づいてｎ組の暗号データＣ１〜Ｃｎを復元することはできない非可逆的な合成を行うアルゴリズムである」という条件である。これは、合成処理アルゴリズムＳが可逆的な合成アルゴリズムであると、クラッカーが変換後データＱに基づいてｎ組の暗号データＣ１〜Ｃｎを復元することができるため、個々の暗号化処理部１１１〜１１ｎが採用した暗号化アルゴリズムＡ１〜Ａｎや暗号鍵Ｋ１〜Ｋｎが推定されてしまうおそれがあるためである。合成処理アルゴリズムＳとして非可逆的なアルゴリズムを用いれば、そのような問題は生じない。
【００７３】
図６は、図３に示すデータ変換装置１００の合成処理部１２０によって行われる合成処理の一例を示すブロック図である。ここに示す合成処理は、合計ｎ組の暗号データＣ１〜Ｃｎを合成して合成データＱ（変換後データ）を生成する処理であるが、すべての暗号データＣ１〜Ｃｎを一度に合成するのではなく、２組ずつ順に選択して論理演算を行う、という手法を採る。
【００７４】
すなわち、図６に示す合成処理を採用する場合、合成処理部１２０は、ｎ組の暗号データＣ１〜Ｃｎの中から２組の暗号データを選択し、選択された２組の暗号データについて所定の論理演算を実行し、未選択の暗号データが存在する限り、当該未選択の暗号データのうちの１組を新たに選択し、直前に行われた論理演算の演算結果と新たに選択された暗号データとについての論理演算を繰り返し実行し、最終的に得られた論理演算の演算結果を合成データＱとする処理を行うことになる。
【００７５】
図６に示す例は、ｎ組の暗号データＣ１〜Ｃｎがいずれも同一のデータ長Ｌを有している例である。別言すれば、ｎ組の暗号化処理部１１１〜１１ｎが、ｎ組の暗号データＣ１〜Ｃｎのデータ長が同一の長さＬとなるような暗号化処理を実行することになる。しかも、この図６に示されている例の場合、２組のデータについて所定の論理演算を実行することにより得られる演算結果も、同じデータ長Ｌを有している。
【００７６】
具体的には、まず、第１回目の論理演算では、２組の暗号データＣ１，Ｃ２が選択され、これらについての論理処理によって演算結果Ｚ１が得られる。続いて、第２回目の論理演算では、第３番目の暗号データＣ３が選択され、直前に行われた論理演算の演算結果Ｚ１との間で所定の論理処理を行って演算結果Ｚ２を得る。更に、第３回目の論理演算では、第４番目の暗号データＣ４が選択され、直前に行われた論理演算の演算結果Ｚ２との間で所定の論理処理を行って演算結果Ｚ３を得る。このような処理を繰り返してゆけば、最終的に、第（ｎ−１）回目の論理演算として、第ｎ番目の暗号データＣｎと演算結果Ｚ（ｎ−２）との間での論理処理を行うことにより、演算結果Ｚ（ｎ−１）を得ることができ、これが合成データＱになる。
【００７７】
この図６に示す合成方法を採れば、合成対象となる暗号データの数ｎがいくつであっても、２組のデータについての所定の論理演算を定義しておき、これを必要な回数だけ繰り返し実行することにより、合成データＱが得られることになる。
【００７８】
２組のデータについての論理演算としては、たとえば、排他的論理和演算を実行すればよい。図７は、図６に示す例において、データ長Ｌ＝１６ビットとした場合に、暗号データＣ１とＣ２について排他的論理和演算（ＸＯＲ）を行い、演算結果Ｚ１を得る一例を示すブロック図である。排他的論理和演算は、デジタルデータに対する最も単純な論理演算の１つであり、２組の暗号データＣ１，Ｃ２に基づいて一義的に演算結果Ｚ１が得られ、しかも、演算結果Ｚ１に基づいて元の暗号データＣ１，Ｃ２を復元することはできない非可逆的な演算になっている。合成処理部１２０を、この排他的論理和演算回路によって構成すれば、比較的単純なハードウエア構成によって合成処理部１２０を実装することができる。
【００７９】
別な論理演算として、剰余加算演算を利用することもできる。たとえば、ｎ組の暗号化処理部１１１〜１１ｎによって、ｎ組の暗号データＣ１〜Ｃｎが互いに同一のデータ長となるような暗号化処理を実行したものとしよう。この場合、２組のデータについての論理演算として、第ｊ番目のバイト（ｊ＝１，２，３，... ）の和を２５６で除した剰余を、演算結果となるデータの第ｊ番目のバイトとする剰余加算演算を利用することができる。
【００８０】
図８は、図６に示す例において、データ長Ｌ＝４バイトとした場合に、暗号データＣ１とＣ２について剰余加算演算を行い、演算結果Ｚ１を得る一例を示すブロック図である（数値は１６進表示）。暗号データＣ１の第ｊ番目のバイト（１≦ｊ≦４）をＣ１［ｊ］、暗号データＣ２の第ｊ番目のバイトをＣ２［ｊ］、演算結果Ｚ１の第ｊ番目のバイトをＺ１［ｊ］とすれば、個々のバイトごとの剰余加算演算は、Ｚ１［ｊ］＝（Ｃ１［ｊ］＋Ｃ２［ｊ］）mod ２５６なる式で定義できる。たとえば、図８の例の場合、ｊ＝１として１バイト目に着目すると「ＡＦ」＋「１９」＝「Ｃ８」になり、２５６による除算で得られる剰余は「Ｃ８」になり、ｊ＝４として４バイト目に着目すると「６Ｄ」＋「ＢＦ」＝「１２Ｃ」になり、２５６による除算で得られる剰余は「２Ｃ」になる。
【００８１】
この剰余加算演算は、基本的には単純な加算演算であり、２組の暗号データＣ１，Ｃ２に基づいて一義的に演算結果Ｚ１が得られ、しかも、演算結果Ｚ１に基づいて元の暗号データＣ１，Ｃ２を復元することはできない非可逆的な演算になっている。合成処理部１２０を、この剰余加算演算回路によって構成した場合も、比較的単純なハードウエア構成によって合成処理部１２０を実装することができる。
【００８２】
なお、図８に示す例は、１バイト単位で剰余加算演算を行う例であるが、剰余加算演算は必ずしも１バイト単位のデータ同士で行う必要はなく、任意バイト単位あるいは任意ビット単位のデータ同士で行うことも可能である。一般論として言えば、２組の暗号データＣ１，Ｃ２を同一の分割態様に基づいてそれぞれ分割することにより、それぞれ複数ｕ個の分割データを作成し、互いに対応する分割データ同士で剰余加算演算を行って合計ｕ個の剰余を求め、これらを連結することにより演算結果Ｚ１を得るようにすればよい。
【００８３】
図８に示す例では、同一の分割態様として「１バイト単位で分割する」というルールが採用され、それぞれ複数４個（ｕ＝４）の分割データ（１バイトの長さをもつデータ）を作成して合計４個の剰余を求め、これらを連結することにより演算結果Ｚ１を得る処理が行われている。もちろん、分割態様としては、「１バイトの長さ、２バイトの長さ、１バイトの長さ、２バイトの長さ、…というように、個々の分割データの長さが交互に異なるように分割する」というようなより複雑なルールを採用してもかまわない。要するに、２組のデータＣ１，Ｃ２について、同一の分割態様が適用されるのであれば、どのような分割態様を採用してもかまわない。
【００８４】
なお、図８に示す例のように、個々の分割データが１バイトのデータになる場合の剰余加算演算は、「分割データ同士の和を２５６で除した剰余を求める処理」ということになるが、分割データが任意のビット長ｍを有する一般的なケースにおける剰余加算演算は、「分割データ同士の和の下位ｍビットを演算結果とする処理」ということができる。
【００８５】
従って、図８に例示するような剰余加算演算を利用して、２組のデータＣ１，Ｃ２についての論理演算を行う実施例は、一般論としての定義では、「２組のデータＣ１，Ｃ２を同一の分割態様に基づいてそれぞれ分割することにより、それぞれ複数ｕ個の分割データを作成し、所定ビット長ｍを有する第ｊ番目（１≦ｊ≦ｕ）の分割データ同士の和の下位ｍビットを第ｊ番目の分割演算結果として求める処理をｊ＝１〜ｕについて実行し、第１番目の分割演算結果〜第ｕ番目の分割演算結果を連結する演算」を行う実施例ということができる。
【００８６】
以上、図６に示す合成処理を採用する場合に用いることができる具体的な論理演算として、排他的論理和演算および剰余加算演算を例示したが、もちろん、合成処理部１２０で実行する合成処理は、図６に示す合成処理に限定されるものではない。
【００８７】
図９は、合成処理部１２０で実行する合成処理として、ｎ組の暗号データＣ１〜Ｃｎを連結して得られる連結データに対して、一方向性関数を作用させる演算を採用した例を示す図である。具体的には、図示の例の場合、一方向性関数としてＨＡＳＨ関数を採用し、ｎ組の暗号データＣ１〜Ｃｎを連結して得られる連結データについてのＨＡＳＨ値を合成データＱとして用いることになる。このような一方向性関数を作用させる演算を行えば、一義的に合成データＱ（図示の例の場合はＨＡＳＨ値）が得られ、しかも合成データＱに基づいて元の暗号データＣ１〜Ｃｎを復元することはできない。
【００８８】
ＨＡＳＨ関数等の一方向性関数演算も汎用の処理回路によって実行することが可能であるので、この場合も、比較的単純なハードウエア構成によって合成処理部１２０を実装することができる。もちろん、この§１．３で述べた合成処理の具体例は、合成処理部１２０が実行する処理の一例であり、本発明を実施する上では、この他にも種々の合成処理を採用することが可能である。
【００８９】
＜１．４  第１の実施形態に係るデータ変換方法＞
ここでは、これまで述べてきた第１の実施形態に係る発明を、データ変換方法という方法の発明として捉え、その基本手順を図１０に示す流れ図を参照しながら説明する。以下に述べる方法は、変換前データＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより、変換後データＱを生成するデータ変換方法ということになり、実際には、個々の手順は、図３に例示するようなデータ変換装置１００（専用の処理機能を備えた半導体集積回路もしくは専用のプログラムが組み込まれたコンピュータ）によって実行されることになる。
【００９０】
図１０に示すとおり、まず、ステップＳ１において、変換前データＰを装置内に取り込む入力段階が実行され、続くステップＳ２において、暗号化処理段階が実行される。この暗号化処理段階では、複数ｎ組（但し、ｎ≧２）の暗号化処理装置Ｄ１，Ｄ２，... ，Ｄｉ，... ，Ｄｎが用意され、第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理装置Ｄｉにより、変換前データＰに対して第ｉ番目の暗号データＣｉを求める暗号化処理の演算が実行される。
【００９１】
より具体的に説明すれば、複数ｎ組の暗号化処理装置Ｄ１〜Ｄｎのうち、第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理装置Ｄｉは、変換前データＰに対して、第ｉ番目の暗号鍵Ｋｉを用いた第ｉ番目の暗号化アルゴリズムＡｉに基づく暗号化処理の演算を施すことにより、第ｉ番目の暗号データＣｉを出力する。その結果、ステップＳ２の暗号化処理段階では、第１番目〜第ｎ番目の暗号データＣ１〜Ｃｎを求める処理が行われることになる。
【００９２】
しかも、この複数ｎ組の暗号化処理装置Ｄ１〜Ｄｎがそれぞれ用いる暗号化アルゴリズムＡ１〜Ａｎおよび暗号鍵Ｋ１〜Ｋｎは、相互に、暗号化アルゴリズムおよび暗号鍵のうちの少なくとも一方が異なっており、ｎ組の暗号化処理装置Ｄ１〜Ｄｎによる暗号化処理の演算の少なくとも一部が、時間軸上で重複して実行されるようにする。
【００９３】
続いて、ステップＳ３では、合成処理装置１２０により、暗号データＣ１〜Ｃｎを所定の合成処理アルゴリズムＳに基づいて合成する合成処理段階が実行され、更に、ステップＳ４では、こうして得られた合成データＱを変換後データＱとして出力する出力段階が実行される。ここで、合成処理アルゴリズムＳは、暗号データＣ１〜Ｃｎに基づいて一義的に合成データＱが定まるアルゴリズムであり、かつ、合成データＱに基づいて暗号データＣ１〜Ｃｎを復元することはできない非可逆的な合成を行うアルゴリズムになっている。
【００９４】
このような手順に基づいてデータ変換処理を行えば、サイドチャネル攻撃によって消費電力がモニタされたとしても、図５の波形図に例示するように、各時点での消費電力は複数の処理の合計になるため、個々の暗号化処理装置Ｄ１〜Ｄｎで実行されている暗号化処理の内容を推定することは極めて困難になる。
【００９５】
＜＜＜  §２．  本発明の第２の実施形態  ＞＞＞
次に、本発明に係るデータ変換装置の第２の実施形態について説明する。上述した第１の実施形態では、与えられた同一の変換前データＰに対して、複数ｎ組の暗号化処理部による暗号化処理を時間軸上で重複して実行する、という手法が採られていたが、以下に述べる第２の実施形態では、与えられた同一の変換前データＰに対して、複数ｎ通りの暗号化処理を所定の順序で実行し、しかも、各暗号化処理の実行順序を適宜変えるようにする、という手法が採用される。
【００９６】
＜２．１  第２の実施形態に係るデータ変換装置の構成および動作＞
図１１は、本発明の第２の実施形態に係るデータ変換装置２００の基本構成を示すブロック図である。実際には、このデータ変換装置２００は、専用の処理機能を備えた半導体集積回路もしくは専用のプログラムが組み込まれたコンピュータによって構成される。
【００９７】
図１１に示すデータ変換装置２００は、図３に示すデータ変換装置１００と同様に、変換前データＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより、変換後データＱを生成する機能を有し、図示のとおり、暗号化処理部２１０と合成処理部２２０とを備えている。ここで、暗号化処理部２１０は、複数ｎ通り（但し、ｎ≧２）の暗号化処理を所定の実行順序に従って実行する構成要素であり、合成処理部２２０は、このｎ通りの暗号化処理によって得られた暗号データＣ１〜Ｃｎを合成する構成要素である。
【００９８】
より具体的には、暗号化処理部２１０が実行する第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理は、変換前データＰに対して、第ｉ番目の暗号鍵Ｋｉを用いた第ｉ番目の暗号化アルゴリズムＡｉに基づく暗号化処理の演算を施すことにより、第ｉ番目の暗号データＣｉを得る処理である。ここで、暗号化処理部２１０は、変換前データＰが与えられるたびに、所定の順序決定アルゴリズムＨに基づいて実行順序を決定する機能を有する。個々の暗号化アルゴリズムＡｉや個々の暗号鍵Ｋｉ（ｉ＝１〜ｎ）は、一般的な暗号化アルゴリズムＡや暗号鍵Ｋでかまわないので、ここでは詳しい説明は省略する。
【００９９】
一方、順序決定アルゴリズムＨとしては、たとえば、乱数に基づいて１〜ｎの整数を任意の順序に並び替えるアルゴリズムを用意しておけばよい。図１２(a) ，(b) は、図１１に示すデータ変換装置２００において、ｎ＝３に設定した場合に暗号化処理部２１０で実行される暗号化処理のタイムチャートであり、丸数字１〜３で示すバーは、それぞれ暗号化処理部２１０によって実行される第１番目の暗号化処理、第２番目の暗号化処理、第３番目の暗号化処理の実行時間を示している。
【０１００】
図１２(a) は、第１の変換前データＰ１が与えられたときに、これを第１の変換後データＱ１に変換する際に暗号化処理部２１０で実行される暗号化処理のタイムチャートであり、図１２(b) は、第２の変換前データＰ２が与えられたときに、これを第２の変換後データＱ２に変換する際に暗号化処理部２１０で実行される暗号化処理のタイムチャートである。
【０１０１】
図示のとおり、図１２(a) では、まず最初に、第２番目の暗号化処理（暗号鍵Ｋ２を用いた暗号化アルゴリズムＡ２に基づく暗号化処理）が実行され、続いて、第１番目の暗号化処理（暗号鍵Ｋ１を用いた暗号化アルゴリズムＡ１に基づく暗号化処理）が実行され、最後に、第３番目の暗号化処理（暗号鍵Ｋ３を用いた暗号化アルゴリズムＡ３に基づく暗号化処理）が実行されている。これに対して、図１２(b) では、まず最初に、第３番目の暗号化処理（暗号鍵Ｋ３を用いた暗号化アルゴリズムＡ３に基づく暗号化処理）が実行され、続いて、第２番目の暗号化処理（暗号鍵Ｋ２を用いた暗号化アルゴリズムＡ２に基づく暗号化処理）が実行され、最後に、第１番目の暗号化処理（暗号鍵Ｋ１を用いた暗号化アルゴリズムＡ１に基づく暗号化処理）が実行されている。
【０１０２】
これは、暗号化処理部２１０が順序決定アルゴリズムＨに基づいて、第１の変換前データＰ１が与えられた際には、「２−１−３」なる順序を決定し、第２の変換前データＰ２が与えられた際には、「３−２−１」なる順序を決定したためである。図３に示すデータ変換装置１００が複数ｎ組の暗号化処理部１１１〜１１ｎを有していたのに対して、図１１に示すデータ変換装置２００は１組の暗号化処理部２１０を有するだけである。しかしながら、暗号化処理部２１０は、複数ｎ通りの暗号化処理を実行する機能を有しており、変換前データＰが与えられるたびに、順序決定アルゴリズムＨに基づいて、その実行順序を決定し、これを順番に実行してゆく機能を有している。
【０１０３】
なお、上述のとおり、暗号化処理部２１０は、変換前データＰが与えられるたびに、複数ｎ通りの暗号化処理の実行順序を決定することになるが、ここで「変換前データＰが与えられるたびに実行順序を決定する」とは、「新たな変換前データＰが入力されたときに、当該変換前データＰについて何らかの実行順序が決まるような仕組」になっていれば十分であり、実行順序の決定処理は、必ずしも「変換前データＰが与えられるたび」に毎回行う必要はない。また、たとえば、「３回ごとに実行順序を変更する」という設定を行い、順次入力された変換前データＰ１，Ｐ２，Ｐ３については同一の実行順序を適用し、次に入力された変換前データＰ４から新たな実行順序を適用する、というような運用を行ってもかまわない。
【０１０４】
合成処理部２２０は、暗号化処理部２１０が第１番目〜第ｎ番目の暗号化処理を行うことによって得られた合計ｎ組の暗号データＣ１〜Ｃｎを所定の合成処理アルゴリズムＳに基づいて合成し、得られた合成データＱを変換後データＱとして出力する。
【０１０５】
ここで、合成処理部２２０が実行する合成処理は、図３に示す合成処理部１２０が実行する合成処理と同様であり、合成処理アルゴリズムＳは、ｎ組の暗号データＣ１〜Ｃｎに基づいて一義的に合成データＱが定まるアルゴリズムであり、かつ、合成データＱに基づいてｎ組の暗号データＣ１〜Ｃｎを復元することはできない非可逆的な合成を行うアルゴリズムである。合成処理アルゴリズムＳの具体例は、§１．３で例示したとおりである。
【０１０６】
ここで重要な点は、データ変換装置２００に新たな変換前データＰが与えられた場合、暗号化処理部２１０で実行される複数ｎ通りの暗号化処理の実行順序が予測できない点である。たとえば、図１２(a) に示す例では、ｎ＝３に設定した例として「２−１−３」という実行順序が示されているが、図１２(b) に示す例では、「３−２−１」という実行順序が示されている。したがって、クラッカーがサイドチャネル攻撃を行ったとしても、そのときにたまたま図１２(a) に示す実行順序が採用された場合には、図１３に示すような消費電力の波形図が得られるものの、別な実行順序が採択された場合には、別な波形図が得られることになる。
【０１０７】
要するに、この第２の実施形態の場合、全く同一の変換前データＰを与えたとしても、そのときに採用された実行順序によって、サイドチャネル攻撃によって得られる消費電力の波形図が異なることになる。したがって、クラッカーが、たとえば、不正な通信傍受により、変換前データＰおよび変換後データＱを入手し、更に、電源供給ラインをモニタして図１３に示すような消費電力の波形図を入手する、という作業を繰り返したとしても、統計的な解析手法によって暗号化処理の内容を推定することは極めて困難になる。
【０１０８】
しかも、この暗号化処理部２１０で実行されるｎ通りの暗号化処理は、意味のないダミー処理ではなく、それぞれ所定の暗号鍵Ｋｉを用いて所定の暗号化アルゴリズムＡｉに基づく演算を実行することにより、変換前データＰに対して所定の変換を施す実体のある処理になっている。このため、ｎ通りの暗号化処理の消費電力が、統計的な処理によってホワイトノイズ化することはない。よって、ここに示すデータ変換装置２００は、前掲の特許文献８などに開示されているダミー演算を実行するデータ変換装置に比べると、統計的な手法による不正な電力解析を妨げる効果は極めて高い。
【０１０９】
なお、複数ｎ通りの暗号化処理で用いられる暗号化アルゴリズムＡｉおよび暗号鍵Ｋｉ（ｉ＝１〜ｎ）は、互いに同じものであってもかまわないが、不正な電力解析を妨げる効果を高めるためには、相互に、暗号化アルゴリズムＡｉおよび暗号鍵Ｋｉのうちの少なくとも一方が異なっているようにするのが好ましい。これは、複数ｎ通りの暗号化処理がすべて同一の共通暗号化アルゴリズムＡに基づく演算を行い、かつ、同一の共通暗号鍵Ｋを用いた演算を行うようにすると、同じ消費電力波形パターンが時間軸上で繰り返し現れ、不正な電力解析を行い易くなるためである。
【０１１０】
複数ｎ通りの暗号化処理を実行するにあたって、暗号化アルゴリズムＡｉおよび暗号鍵Ｋｉ（ｉ＝１〜ｎ）のうちの少なくとも一方が異なっているようにすれば、個々の消費電力波形パターンは相互に異なるものになるので、不正な電力解析を妨げる上で効果的である。
【０１１１】
実用上は、複数ｎ通りの暗号化処理には、同一の共通暗号化アルゴリズムＡcommonに基づく演算が行われ、かつ、相互に異なる暗号鍵を用いた演算が行われるようにするのが好ましい。そのような構成を採用すれば、暗号化処理部２１０には、共通暗号化アルゴリズムＡcommonに基づく演算を実行する回路を用意しておき、用いる暗号鍵Ｋｉのみが相互に異なるように、複数通りの暗号鍵Ｋ１〜Ｋｎを暗号鍵用メモリに記憶させておけば済む。
【０１１２】
以上、図１１を参照しながら、本発明の第２の実施形態に係るデータ変換装置２００の構成および動作を説明したが、もちろん、この第２の実施形態を§１で述べた第１の実施形態と組み合わせることも可能である。具体的には、図３に示すデータ変換装置１００における複数ｎ組の暗号化処理部１１１〜１１ｎのそれぞれとして、もしくは、その一部として、図１１に示すデータ変換装置２００で用いられている暗号化処理部２１０を用いるようにすればよい。そうすれば、図１２(a) に示すような順序処理が複数組、時間軸上で相互に重複しながら実行されることになるので、不正な電力解析を更に困難にさせることができる。
【０１１３】
＜２．２  第２の実施形態に係るデータ変換方法＞
ここでは、これまで述べてきた第２の実施形態に係る発明を、データ変換方法という方法の発明として捉え、その基本手順を図１４に示す流れ図を参照しながら説明する。以下に述べる方法は、変換前データＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより、変換後データＱを生成するデータ変換方法ということになる。実際には、個々の手順は、図１１に例示するようなデータ変換装置２００（専用の処理機能を備えた半導体集積回路もしくは専用のプログラムが組み込まれたコンピュータ）によって実行されることになる。
【０１１４】
図１４に示すとおり、この基本手順は、ステップＳ１，Ｓ２′，Ｓ３，Ｓ４によって構成されている。ここで、ステップＳ１，Ｓ３，Ｓ４は、図１０に示す第１の実施形態に係るデータ変換方法のステップＳ１，Ｓ３，Ｓ４と全く同じものである。別言すれば、図１４に示す第２の実施形態に係るデータ変換方法は、図１０に示す第１の実施形態に係るデータ変換方法のステップＳ２をステップＳ２′に変更したものと言うことができる。
【０１１５】
まず、ステップＳ１において、変換前データＰを装置内に取り込む入力段階が実行され、続くステップＳ２′において、暗号化処理段階が実行される。この暗号化処理段階では、複数ｎ通り（但し、ｎ≧２）の暗号化処理Ｅ１〜Ｅｎを所定の実行順序に従って実行する暗号化処理装置を用いて、所定の順序にしたがって暗号化処理が実行される。すなわち、変換前データＰが与えられるたびに、所定の順序決定アルゴリズムＨに基づいて、この複数ｎ通りの暗号化処理Ｅ１〜Ｅｎの実行順序が決定され、当該順序に従って、ｎ通りの暗号化処理Ｅ１〜Ｅｎが順次実行されることになる。
【０１１６】
ここで、複数ｎ通りの暗号化処理Ｅ１〜Ｅｎのうち、第ｉ番目（但し、１≦ｉ≦ｎ）の暗号化処理Ｅｉは、変換前データＰに対して、第ｉ番目の暗号鍵Ｋｉを用いた第ｉ番目の暗号化アルゴリズムＡｉに基づく暗号化処理の演算を施すことにより、第ｉ番目の暗号データＣｉを求める処理である。しかも、この複数ｎ通りの暗号化処理Ｅ１〜Ｅｎがそれぞれ用いる暗号化アルゴリズムＡ１〜Ａｎおよび暗号鍵Ｋ１〜Ｋｎは、相互に、暗号化アルゴリズムおよび暗号鍵のうちの少なくとも一方が異なっている。
【０１１７】
こうして、ステップＳ２′の実行により、第１番目〜第ｎ番目の暗号データＣ１〜Ｃｎが得られたら、続くステップＳ３において、合成処理装置２２０により、暗号データＣ１〜Ｃｎを所定の合成処理アルゴリズムＳに基づいて合成する合成処理段階が実行され、更に、ステップＳ４では、こうして得られた合成データＱを変換後データＱとして出力する出力段階が実行される。既に述べたとおり、合成処理アルゴリズムＳは、暗号データＣ１〜Ｃｎに基づいて一義的に合成データＱが定まるアルゴリズムであり、かつ、合成データＱに基づいて暗号データＣ１〜Ｃｎを復元することはできない非可逆的な合成を行うアルゴリズムになっている。
【０１１８】
このような手順に基づいてデータ変換処理を行えば、サイドチャネル攻撃によって消費電力がモニタされたとしても、図１３の波形図に例示するように、各時点での消費電力が第何番目の暗号化処理のものであるのか不明であるため、個々の暗号化処理Ｅ１〜Ｅｎで実行されている処理内容を推定することは極めて困難になる。
【０１１９】
＜＜＜  §３．  本発明に係る認証システム  ＞＞＞
続いて、これまで§１，§２で述べてきた本発明に係るデータ変換装置を利用した認証システムについて説明する。このような認証システムは、通常、一対の情報処理ユニットが相互に通信を開始する場合、事前に相手方ユニットの正当性を確認する認証処理を行う際に利用される。以下、このような認証処理として、現在最も普及しているチャレンジレスポンス方式を採用した認証システムの例を説明する。
【０１２０】
＜３．１  本発明に係る認証システムの構成および動作＞
図１５は、本発明に係る認証システム３００の基本構成を示すブロック図である。この認証システム３００は、認証処理を実行する第１の情報処理ユニット３１０と、認証処理の対象となる第２の情報処理ユニット３２０と、を備えたシステムであり、第１の情報処理ユニット３１０が第２の情報処理ユニット３２０の正当性を確認する際に利用される。
【０１２１】
実際には、第１の情報処理ユニット３１０および第２の情報処理ユニット３２０は、それぞれ本来の主たる情報処理を実行するためのユニットであり、認証処理は、いわば従たる情報処理ということになるが、ここでは認証処理の説明を行うため、両ユニット３１０，３２０の認証処理機能のみに着目し、両ユニット３１０，３２０からなるシステムを認証システム３００として捉えることにする。したがって、図１５には、両ユニット３１０，３２０の構成要素のうち、認証処理機能に関連する構成要素のみをブロックとして示してある。
【０１２２】
たとえば、第１の情報処理ユニット３１０をリーダライタ装置、第２の情報処理ユニット３２０をＩＣカードによって構成した場合、図示の認証システム３００は、リーダライタ装置とＩＣカードとが交信した際に、リーダライタ装置側で、相手方のＩＣカードが正規の装置であることを認証するシステムとしての役割を果たす。もちろん、この場合、ＩＣカードには、種々のデータ処理やデータ記憶のための構成要素が存在し、リーダライタ装置には、ＩＣカードに対するデータの読み書きを行うための構成要素が存在するが、認証システムとしての機能に必要な構成要素ではないため、図には示されていない。
【０１２３】
第１の情報処理ユニット３１０が第２の情報処理ユニット３２０の正当性を確認する場合、まず、第１の情報処理ユニット３１０がランダムにチャレンジコードＰを発生させ、これを第２の情報処理ユニット３２０に送信する。第２の情報処理ユニット３２０は、このチャレンジコードＰをデータ変換装置を用いて変換することにより、レスポンスデータＱを生成し、これを第１の情報処理ユニット３１０に返信する。一方、第１の情報処理ユニット３１０においても、チャレンジデータＰをデータ変換装置を用いて変換し、その結果が、返信されてきたレスポンスＱに一致するか否かを判定する。両者が一致すれば、第２の情報処理ユニット３２０を正当な装置として認証することができる。
【０１２４】
このようなチャレンジレスポンス方式を採用した認証システム自体は、既に様々な分野で利用されている公知のシステムであるが、本発明に係る認証システム３００の特徴は、データ変換装置の部分に、§１もしくは§２で述べた装置を利用した点にある。
【０１２５】
すなわち、図１５に示すように、第１の情報処理ユニット３１０は、乱数を利用してチャレンジコードＰを発生させるチャレンジコード発生部３１１と、このチャレンジコードＰを第２の情報処理ユニット３２０に送信するチャレンジコード送信部３１２と、発生させたチャレンジコードＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第１の変換コードＱを生成する第１のデータ変換装置３１３と、第２の情報処理ユニット３２０から送信されてきたレスポンスコードＱを受信するレスポンスコード受信部３１５と、第１のデータ変換装置３１３が生成した第１の変換コードＱとレスポンスコード受信部３１５が受信したレスポンスコードＱとの整合性を判定する照合判定部３１４と、を有している。
【０１２６】
一方、第２の情報処理ユニット３２０は、第１の情報処理ユニット３１０から送信されてきたチャレンジコードＰを受信するチャレンジコード受信部３２１と、受信したチャレンジコードＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第２の変換コードＱを生成する第２のデータ変換装置３２２と、この第２の変換コードＱをレスポンスコードとして第１の情報処理ユニット３１０に送信するレスポンスコード送信部３２３と、を有している。
【０１２７】
しかも、第１の情報処理ユニット３１０側の第１のデータ変換装置３１３と、第２の情報処理ユニット３２０側の第２のデータ変換装置３２２として、§１もしくは§２で述べたデータ変換装置が用いられており、かつ、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する一対のデータ変換装置が用いられている。
【０１２８】
したがって、第２の情報処理ユニット３２０が正規のユニットであれば、第１の情報処理ユニット３１０側の第１のデータ変換装置３１３で実行されるデータ変換処理と、第２の情報処理ユニット３２０側の第２のデータ変換装置３２２で実行されるデータ変換処理とは同一の処理になるため、同一の変換前データＰを与えれば、同一の変換後データＱが得られることになり、照合判定部３１４での照合結果は合致するはずである。第１の情報処理ユニット３１０は、このような原理に基づいて、第１のデータ変換装置３１３が生成した第１の変換コードＱとレスポンスコード受信部３１５が受信したレスポンスコードＱとの整合性を判定し、両者が合致した場合に、第２の情報処理ユニット３２０を正規の装置として認証することになり（認証成功）、合致しなかった場合には、認証に失敗したことになる。
【０１２９】
しかしながら、第１の情報処理ユニット３１０もしくは第２の情報処理ユニット３２０がクラッカーの手に渡り、第１のデータ変換装置３１３もしくは第２のデータ変換装置３２２が変換に用いている特定の暗号化アルゴリズムＡや暗号鍵Ｋが知られてしまうと、クラッカーは偽のデータ変換装置を作成することができるようになり、そのような偽のデータ変換装置を組み込んだ偽の情報処理ユニットを作成することが可能になる。
【０１３０】
データ変換装置に利用されている特定の暗号化アルゴリズムＡや暗号鍵Ｋを推定するための方法として、クラッカーがサイドチャネル攻撃による消費電力モニタという手法を使うことは既に述べたとおりである。しかしながら、§１，§２で説明したとおり、本発明に係るデータ変換装置は、このようなサイドチャネル攻撃にも十分に耐えることができる。したがって、本発明に係るデータ変換装置を利用して構成された認証システム３００も、サイドチャネル攻撃に十分に耐える性能が備わっている。
【０１３１】
なお、図１５では、第１の情報処理ユニット３１０が第２の情報処理ユニット３２０を認証する場合に必要な構成を示したが、通常、ＩＣカードとリーダライタ装置といった一対のユニットは、交信開始時に相互に相手方を認証するのが一般的である。このような相互認証システムを構成するには、図１５の第１の情報処理ユニット３１０内の構成要素を第２の情報処理ユニット３２０内にも設け、第２の情報処理ユニット３２０内の構成要素を第１の情報処理ユニット３１０内にも設けておくようにすればよい。
【０１３２】
＜３．２  認証システムの第１の変形例＞
続いて、上述した認証システムの変形例を説明する。図１６に示す認証システム３００Ａは、図１５に示す認証システム３００の第１の変形例を示すブロック図である。この認証システム３００Ａは、認証システム３００に前処理装置を付加したものであり、認証処理を実行する第１の情報処理ユニット３１０Ａと、認証処理の対象となる第２の情報処理ユニット３２０Ａと、を備えている。
【０１３３】
ここで、図１６に示す第１の情報処理ユニット３１０Ａは、図１５に示す第１の情報処理ユニット３１０に、更に第１の前処理装置３１６を付加したものであり、図１６に示す第２の情報処理ユニット３２０Ａは、図１５に示す第２の情報処理ユニット３２０に、更に第２の前処理装置３２４を付加したものである。
【０１３４】
すなわち、第１の情報処理ユニット３１０Ａでは、チャレンジコード発生部３１１と第１のデータ変換装置３１３との間に第１の前処理装置３１６が介挿され、第２の情報処理ユニット３２０Ａでは、チャレンジコード受信部３２１と第２のデータ変換装置３２２との間に第２の前処理装置３２４が介挿されている。その他の構成要素の機能について変更はなく、図１５と図１６において、同じ符号で示されている構成要素は同一の機能をもった構成要素である。
【０１３５】
各前処理装置３１６，３２４は、チャレンジコードＰ′に所定の前処理を施すことにより前処理コードＰを生成する機能を果たす。なお、ここでは、説明の便宜上、チャレンジコードを符号「Ｐ′」で示し、このチャレンジコードＰ′に前処理を施すことにより得られる前処理コードを符号「Ｐ」で示すことにする。各前処理装置３１６，３２４で実行される前処理は、処理前のデータに基づいて処理後のデータが一義的に得られる処理であれば、どのような処理であってもかまわない。この前処理の具体的な実施例については§３．３で述べる。
【０１３６】
結局、図１６に示す認証システム３００Ａにおける第１の情報処理ユニット３１０Ａは、乱数を利用してチャレンジコードＰ′を発生させるチャレンジコード発生部３１１と、このチャレンジコードＰ′を第２の情報処理ユニット３２０Ａに送信するチャレンジコード送信部３１２と、発生したチャレンジコードＰ′に所定の前処理を施すことにより第１の前処理コードＰを生成する第１の前処理装置３１６と、生成した第１の前処理コードＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第１の変換コードＱを生成する第１のデータ変換装置３１３と、第２の情報処理ユニット３２０Ａから送信されてきたレスポンスコードＱを受信するレスポンスコード受信部３１５と、第１のデータ変換装置３１３が生成した第１の変換コードＱとレスポンスコード受信部３１５が受信したレスポンスコードＱとの整合性を判定する照合判定部３１４と、を有している。
【０１３７】
一方、第２の情報処理ユニット３２０Ａは、第１の情報処理ユニット３１０Ａから送信されてきたチャレンジコードＰ′を受信するチャレンジコード受信部３２１と、受信したチャレンジコードＰ′に前処理を施すことにより第２の前処理コードＰを生成する第２の前処理装置３２４と、生成した第２の前処理コードＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第２の変換コードＱを生成する第２のデータ変換装置３２２と、生成した第２の変換コードＱをレスポンスコードとして第１の情報処理ユニット３１０Ａに送信するレスポンスコード送信部３２３と、を有している。
【０１３８】
しかも、第１の情報処理ユニット３１０Ａ側の第１のデータ変換装置３１３と、第２の情報処理ユニット３２０Ａ側の第２のデータ変換装置３２２として、§１もしくは§２で述べたデータ変換装置が用いられており、かつ、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する一対のデータ変換装置が用いられている。また、第１の情報処理ユニット３１０Ａ側の第１の前処理装置３１６と、第２の情報処理ユニット３２０Ａ側の第２の前処理装置３２４として、同一の前処理を実行する一対の前処理装置が用いられている。
【０１３９】
したがって、第２の情報処理ユニット３２０Ａが正規のユニットであれば、第１の情報処理ユニット３１０Ａ側の第１の前処理装置３１６で実行される前処理と、第２の情報処理ユニット３２０Ａ側の第２の前処理装置３２４で実行される前処理とは同一の処理になるため、同一のチャレンジコードＰ′を与えれば、同一の前処理コードＰが得られることになる。
【０１４０】
同様に、第２の情報処理ユニット３２０Ａが正規のユニットであれば、第１のデータ変換装置３１３で実行されるデータ変換処理と、第２の情報処理ユニット３２０Ａ側の第２のデータ変換装置３２２で実行されるデータ変換処理とは同一の処理になるため、同一の前処理コードＰに基づくデータ変換処理が行われれば、同一の変換後データＱが得られることになり、照合判定部３１４での照合結果は合致するはずである。
【０１４１】
第１の情報処理ユニット３１０Ａは、このような原理に基づいて、第１のデータ変換装置３１３が生成した第１の変換コードＱとレスポンスコード受信部３１５が受信したレスポンスコードＱとの整合性を判定し、両者が合致した場合に、第２の情報処理ユニット３２０Ａを正規の装置として認証することになる。
【０１４２】
この図１６に示す認証システム３００Ａでも、第１のデータ変換装置３１３および第２のデータ変換装置３２２として、§１もしくは§２で述べたデータ変換装置が用いられているため、クラッカーによるサイドチャネル攻撃に十分に耐えることができる。しかも、この第１の変形例に係る認証システム３００Ａでは、第１のデータ変換装置３１３および第２のデータ変換装置３２２に対して与えられる変換前データＰは、チャレンジコードＰ′ではなく、チャレンジコードＰ′に対して所定の前処理を施したデータになるため、クラッカーによるサイドチャネル攻撃に対して、より一層の防御機能が作用することになる。
【０１４３】
前述したとおり、クラッカーは、第１の情報処理ユニット３１０Ａもしくは第２の情報処理ユニット３２０Ａに対する入出力信号線をモニタして、チャレンジコードＰ′およびレスポンスコードＱを入手するとともに、電力供給線をモニタして、消費電力波形を入手し、これらの情報に対して統計的な解析を行うことにより、第１のデータ変換装置３１３および第２のデータ変換装置３２２が採用している暗号化アルゴリズムＡおよび暗号鍵Ｋを推定することになる。
【０１４４】
図１５に示す認証システム３００の場合、データ変換装置３１３，３２２に与えられる変換前データＰは、入出力信号線のモニタにより傍受されるチャレンジコードＰ自身であり、データ変換装置３１３，３２２から出力される変換後データＱは、入出力信号線のモニタにより傍受されるレスポンスコードＱ自身である。したがって、クラッカーは、既知の変換前データＰに基づいて既知の変換後データＱが得られるような暗号化アルゴリズムＡおよび暗号鍵Ｋを推定する作業を、サイドチャネル攻撃で得た消費電力波形図を参照して行えばよい。
【０１４５】
本発明に係るデータ変換装置を用いれば、このような推定作業が非常に困難であることは既に述べたとおりであるが、図１６に示す認証システム３００Ａの場合、データ変換装置３１３，３２２に与えられる変換前データＰは、入出力信号線のモニタにより傍受されるチャレンジコードＰ′自身ではなく、これに秘密の前処理を施して得られる前処理データＰであるため、クラッカーによる不正な解析作業をより困難にさせる効果が得られる。
【０１４６】
すなわち、図１６に示す認証システム３００Ａの場合、クラッカーは、チャレンジコードＰ′とレスポンスコードＱとの組み合わせに基づいて、前処理コードＰをレスポンスコードＱに変換するための暗号化処理の内容を推定する必要がある。もちろん、前処理の内容は秘密であるから、クラッカーは、チャレンジコードＰ′と前処理コードＰとの対応関係が不明であり、前処理コードＰとレスポンスコードＱとの対応関係も不明である状態において、これらの対応関係を推定する解析を行わねばならない。したがって、図１６に示す第１の変形例に係る認証システム３００Ａは、図１５に示す基本的な実施例に係る認証システム３００よりも、更に強固なサイドチャネル攻撃に対する耐性を有していることになる。
【０１４７】
＜３．３  前処理の具体例＞
ここでは、図１６に示す認証システム３００Ａの第１の前処理装置３１６および第２の前処理装置３２４において実行される前処理の具体的な例をいくつか述べておく。もちろん、各前処理装置３１６，３２４で実行される前処理は、以下に述べる例に限定されるものではなく、処理前のデータに基づいて処理後のデータが一義的に得られる処理であれば、どのような処理であってもかまわない。
【０１４８】
図１７は、認証システム３００Ａで行われる前処理の第１の例を示す図であり、オフセット値を増減する処理が示されている。この例を採用する場合、第１の前処理装置３１６および第２の前処理装置３２４として、処理前のデータを構成する個々のバイトに所定の規則に従ってオフセット値を増減する処理を行う装置を用いるようにすればよい。図１７には、処理前のデータＤａに所定のオフセット値Offを加算することにより、処理後のデータＤｂを得る実例が示されている（数字は、いずれも１６進表示）。もちろん、オフセット値Offを減算するようにしてもかまわない。
【０１４９】
図示の例は、オフセット値Offとして「８０」なる１バイトのデータを設定した例である。処理前のデータＤａは、５バイトのデータによって構成されているが、この５バイトのデータのそれぞれに、オフセット値「８０」が加算されることになる。たとえば、第１バイト目については、「１７」＋「８０」＝「９７」なる加算が行われ、処理後のデータＤｂは「９７」になる。また、加算結果が桁上がりにより１バイトを超える場合には、下位１バイトのみをとることにする（剰余加算演算）。たとえば、第３バイト目については、「ＡＦ」＋「８０」＝「０１２Ｆ」なる加算が行われ、加算結果は２バイトのデータ「０１２Ｆ」になるが、処理後のデータＤｂとしては、下位１バイトのみをとって「２Ｆ」にすればよい。このような処理を行えば、処理後のデータＤｂのデータ長は、常に処理前のデータＤａのデータ長に等しくなる。
【０１５０】
図１６に示す認証システム３００Ａの場合、チャレンジコードＰ′が処理前のデータＤａとなり、前処理コードＰが処理後のデータＤｂということになる。各前処理装置３１６，３２４は、内部にオフセット値Offを記憶しており、チャレンジコードＰ′に当該オフセット値Offを増減する演算を行うことにより、前処理コードＰを生成することになる。オフセット値Offとしては、常に固定値を用いるようにしてもよいが、予め何通りかのオフセット値Offをテーブルとして用意しておき、所定の順序で選択して用いるようにしてもかまわない。
【０１５１】
すなわち、各前処理装置３１６，３２４として、処理前のデータＤａを構成する個々のバイトに、所定の規則に従って複数ｋ通りの値の中から選択されたオフセット値Offを増減する処理を行う装置を用いるようにし、かつ、前処理装置３１６，３２４で同一の選択規則を採用するようにすれば、前処理に用いるオフセット値Offが毎回異なっても、前処理装置３１６，３２４では常に同一のオフセット値Offが選択され、常に同一の前処理が行われることになるので支障はない。
【０１５２】
もちろん、処理前のデータＤａが複数バイトからなる場合は、個々のバイトごとに増減するオフセット値Offを変えることもできる。たとえば、図１７に示す例の場合、処理前のデータＤａは５バイトから構成され、すべてのバイトに同一のオフセット値「８０」を加算しているが、１バイト目にはオフセット値「８０」を加算し、２バイト目にはオフセット値「８１」を加算し、３バイト目にはオフセット値「８２」を加算し、... というように、オフセット値Offをバイトごとにステップ状に増加させてゆくような運用も可能である。
【０１５３】
以上、第１の前処理装置３１６と第２の前処理装置３２４とにおいて、常に同一の前処理が行われるという前提で説明を行ったが、両者で異なる処理を実行するような若干変則的な照合処理を行うことも可能である。たとえば、第２の情報処理ユニット３２０Ａ側では、第２の前処理装置３２４によって、処理前のデータＤａを構成する個々のバイトに、複数ｋ通りの値の中からランダムに選択されたオフセット値Offを増減する処理を行う。オフセット値Offの範囲を０〜２５５とすれば、ｋ＝２５６になり、オフセット値Offは２５６通りの値の中からランダムに選択された１バイトのデータということになる。
【０１５４】
このように、第２の情報処理ユニット３２０Ａ側で、ランダムにオフセット値Offが選択された場合、第１の情報処理ユニット３１０Ａ側では、第２の情報処理ユニット３２０Ａ側で実際に選択されたオフセット値Offを認識することはできない。しかしながら、上例の場合、オフセット値Offは２５６通りのいずれかであるので、これら２５６通りのオフセット値Offを用いた２５６通りのバリエーションについて、総当たり的に照合する処理を行えば、いずれか１つが一致することを確認することにより、第２の情報処理ユニット３２０Ａが正規のユニットであることを認証することが可能である。
【０１５５】
具体的には、第１の情報処理ユニット３１０Ａ側で用いる第１の前処理装置３１６として、処理前のデータＤａを構成する個々のバイトにｋ通り（上例の場合、ｋ＝２５６）のオフセット値Offを増減する処理を行うことにより、ｋ通りのデータを処理後のデータＤｂ（１）〜Ｄｂ（ｋ）として得る装置を用いるようにする。一方、第１のデータ変換装置３１３では、このｋ通りの処理後のデータＤｂ（１）〜Ｄｂ（ｋ）を変換前データＰ（１）〜Ｐ（ｋ）として変換処理を行い、ｋ通りの変換後データＱ（１）〜Ｑ（ｋ）のバリエーションを得るようにする。
【０１５６】
そして、照合判定部３１４では、このｋ通りのバリエーションＱ（１）〜Ｑ（ｋ）について、それぞれレスポンスデータＱに合致するか否かの判定を行い、いずれか１つのバリエーションについて合致する旨の判定が得られた場合に整合性ありとの判定を行うようにすればよい。このような構成を採れば、第２の情報処理ユニット３２０Ａ側では、全くランダムに選択されたオフセット値Offに基づく前処理が実行されることになり、実際、どのオフセット値Offが選択されたかは、第１の情報処理ユニット３１０Ａ側でさえ認識できないことになる。したがって、第２の情報処理ユニット３２０Ａに対する不正な解析を一層困難にする効果が得られる。
【０１５７】
図１８は、認証システム３００Ａで行われる前処理の第２の例を示す図であり、データの並べ替えを行う処理が示されている。この例を採用する場合、第１の前処理装置３１６および第２の前処理装置３２４として、処理前のデータＤａの個々の構成要素を所定の規則に従って並び替える処理を行う装置を用いるようにすればよい。
【０１５８】
すなわち、この第２の例を採用する場合は、第１の前処理装置３１６および第２の前処理装置３２４内に、図１８(a) に例示するような並び替えテーブルＴを用意しておく。図示する並び替えテーブルＴは、５バイトからなるデータについての並び替えを定義するものであるが、実際には、処理前のデータのデータ長に合致した並び替えテーブルを用意しておくようにする。
【０１５９】
図示する並び替えテーブルＴにおけるＢ１〜Ｂ５は、並び替えの対象となるデータの個々のバイトを示しており、上段は、処理前のデータＤａ（並び替え前のデータ）の各バイトの並び順を示し、下段は、処理後のデータＤｂ（並び替え後のデータ）の各バイトの並び順を示している。すなわち、この並び替えテーブルＴは、処理前のデータＤａの第１番目のバイトＢ１を第４番目のバイトに移動させ、第２番目のバイトＢ２を第３番目のバイトに移動させ、第３番目のバイトＢ３を第１番目のバイトに移動させ、第４番目のバイトＢ４を第５番目のバイトに移動させ、第５番目のバイトＢ５を第２番目のバイトに移動させる処理を示している。
【０１６０】
図１８(b) は、５バイトからなる具体的な処理前のデータＤａについて、図１８(a) に示す並び替えテーブルＴに基づく並び替え処理を行うことにより、５バイトからなる処理後のデータＤｂを作成した例を示す図である（数字は、いずれも１６進表示）。同じ５バイトからなるデータではあるが、その並び順が異なるため、処理前のデータＤａと処理後のデータＤｂとは、全く異なるデータになっている。
【０１６１】
第１の前処理装置３１６および第２の前処理装置３２４内に、図１８(a) に例示するような同じ並び替えテーブルＴを用意しておけば、両者では同一の前処理が行われることになる。もちろん、複数通りの並び替えテーブルＴを用意しておき、所定の選択規則に基づいて、いずれか１つの並び替えテーブルＴを選択して利用するようにすることも可能である。
【０１６２】
＜３．４  認証システムの第２の変形例＞
§３．２では、図１６を参照しながら、図１５に示す認証システム３００の第１の変形例である認証システム３００Ａの構成と動作を説明し、§３．３では、この第１の変形例で実行される前処理の具体例をいくつか述べた。ここでは、図１９を参照しながら、図１５に示す認証システム３００の第２の変形例である認証システム３００Ｂを説明する。この認証システム３００Ｂは、認証システム３００に後処理装置を付加したものであり、認証処理を実行する第１の情報処理ユニット３１０Ｂと、認証処理の対象となる第２の情報処理ユニット３２０Ｂと、を備えている。
【０１６３】
ここで、図１９に示す第１の情報処理ユニット３１０Ｂは、図１５に示す第１の情報処理ユニット３１０に、更に第１の後処理装置３１７を付加したものであり、図１９に示す第２の情報処理ユニット３２０Ｂは、図１５に示す第２の情報処理ユニット３２０に、更に第２の後処理装置３２５を付加したものである。すなわち、第１の情報処理ユニット３１０Ｂでは、第１のデータ変換装置３１３と照合判定部３１４との間に第１の後処理装置３１７が介挿され、第２の情報処理ユニット３２０Ｂでは、第２のデータ変換装置３２２とレスポンスコード送信部３２３との間に第２の後処理装置３２５が介挿されている。その他の構成要素の機能について変更はなく、図１５と図１９において、同じ符号で示されている構成要素は同一の機能をもった構成要素である。
【０１６４】
各後処理装置３１７，３２５は、変換後データＱに所定の後処理を施すことにより後処理コードＱ′を生成する機能を果たす。なお、ここでは、説明の便宜上、変換後データを符号「Ｑ」で示し、この変換後データＱに後処理を施すことにより得られる後処理コードを符号「Ｑ′」で示すことにする。各後処理装置３１７，３２５で実行される後処理は、処理前のデータに基づいて処理後のデータが一義的に得られる処理であれば、どのような処理であってもかまわない。具体的には、§３．３で前処理の具体的な実施例として述べた、「オフセット値を増減する処理」（図１７）や「データの並べ替え処理」（図１８）を後処理としても利用することが可能である。
【０１６５】
結局、図１９に示す認証システム３００Ｂにおける第１の情報処理ユニット３１０Ｂは、乱数を利用してチャレンジコードＰを発生させるチャレンジコード発生部３１１と、このチャレンジコードＰを第２の情報処理ユニット３２０Ｂに送信するチャレンジコード送信部３１２と、発生したチャレンジコードＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第１の変換コードＱを生成する第１のデータ変換装置３１３と、この第１の変換コードＱに所定の後処理を施すことにより第１の後処理コードＱ′を生成する第１の後処理装置３１７と、第２の情報処理ユニット３２０Ｂから送信されてきたレスポンスコードＱ′を受信するレスポンスコード受信部３１５と、第１の後処理装置３１７が生成した第１の後処理コードＱ′とレスポンスコード受信部３１５が受信したレスポンスコードＱ′との整合性を判定する照合判定部３１４と、を有している。
【０１６６】
一方、第２の情報処理ユニット３２０Ｂは、第１の情報処理ユニット３１０Ｂから送信されてきたチャレンジコードＰを受信するチャレンジコード受信部３２１と、受信したチャレンジコードＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第２の変換コードＱを生成する第２のデータ変換装置３２２と、この第２の変換コードＱに後処理を施すことにより第２の後処理コードＱ′を生成する第２の後処理装置３２５と、この第２の後処理コードＱ′をレスポンスコードとして第１の情報処理ユニット３１０Ｂに送信するレスポンスコード送信部３２３と、を有している。
【０１６７】
しかも、第１の情報処理ユニット３１０Ｂ側の第１のデータ変換装置３１３と、第２の情報処理ユニット３２０Ｂ側の第２のデータ変換装置３２２として、§１もしくは§２で述べたデータ変換装置が用いられており、かつ、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する一対のデータ変換装置が用いられている。また、第１の情報処理ユニット３１０Ｂ側の第１の後処理装置３１７と、第２の情報処理ユニット３２０Ｂ側の第２の後処理装置３２５として、同一の後処理を実行する一対の後処理装置が用いられている。
【０１６８】
したがって、第２の情報処理ユニット３２０Ｂが正規のユニットであれば、第１のデータ変換装置３１３で実行されるデータ変換処理と、第２のデータ変換装置３２２で実行されるデータ変換処理とは同一の処理になり、同一のチャレンジコードＰに基づくデータ変換処理が行われれば、同一の変換後データＱが得られることになる。また、第１の情報処理ユニット３１０Ｂ側の第１の後処理装置３１７で実行される後処理と、第２の情報処理ユニット３２０Ｂ側の第２の後処理装置３２５で実行される後処理とは同一の処理になるため、同一の変換後データＱを与えれば、同一の後処理コードＱ′が得られることになる。したがって、第２の情報処理ユニット３２０Ｂが正規のユニットであれば、照合判定部３１４での照合結果は合致するはずである。
【０１６９】
第１の情報処理ユニット３１０Ｂは、このような原理に基づいて、第１の後処理装置３１７が生成した第１の後処理コードＱ′とレスポンスコード受信部３１５が受信したレスポンスコードＱ′との整合性を判定し、両者が合致した場合に、第２の情報処理ユニット３２０Ｂを正規の装置として認証することになる。
【０１７０】
この図１９に示す認証システム３００Ｂでも、第１のデータ変換装置３１３および第２のデータ変換装置３２２として、§１もしくは§２で述べたデータ変換装置が用いられているため、クラッカーによるサイドチャネル攻撃に十分に耐えることができる。しかも、この第２の変形例に係る認証システム３００Ｂでは、第１のデータ変換装置３１３および第２のデータ変換装置３２２が生成する変換後データＱがそのままレスポンスコードとしての照合対象になるわけではなく、変換後データＱに対して所定の後処理を施した後処理データＱ′が照合対象になるため、クラッカーによるサイドチャネル攻撃に対して、より一層の防御機能が作用することになる。
【０１７１】
すなわち、クラッカーは、第１の情報処理ユニット３１０Ｂもしくは第２の情報処理ユニット３２０Ｂに対する入出力信号線をモニタして、チャレンジコードＰおよびレスポンスコードＱ′を入手するとともに、電力供給線をモニタして、消費電力波形を入手し、これらの情報に対して統計的な解析を行うことにより、第１のデータ変換装置３１３および第２のデータ変換装置３２２が採用している暗号化アルゴリズムＡおよび暗号鍵Ｋを推定することになる。
【０１７２】
図１５に示す認証システム３００の場合、データ変換装置３１３，３２２に与えられる変換前データＰは、入出力信号線のモニタにより傍受されるチャレンジコードＰ自身であり、データ変換装置３１３，３２２から出力される変換後データＱは、入出力信号線のモニタにより傍受されるレスポンスコードＱ自身である。したがって、クラッカーは、既知の変換前データＰに基づいて既知の変換後データＱが得られるような暗号化アルゴリズムＡおよび暗号鍵Ｋを推定する作業を、サイドチャネル攻撃で得た消費電力波形図を参照して行えばよい。
【０１７３】
本発明に係るデータ変換装置を用いれば、このような推定作業が非常に困難であることは既に述べたとおりであるが、図１９に示す認証システム３００Ｂの場合、データ変換装置３１３，３２２から出力される変換後データＱは、入出力信号線のモニタにより傍受されるレスポンスコードＱ′自身ではなく、後処理を施す前の段階のデータであるため、クラッカーによる不正な解析作業をより困難にさせる効果が得られる。
【０１７４】
すなわち、図１９に示す認証システム３００Ｂの場合、クラッカーは、チャレンジコードＰとレスポンスコードＱ′との組み合わせに基づいて、チャレンジコードＰを変換後データＱに変換するための暗号化処理の内容を推定する必要がある。もちろん、後処理の内容は秘密であるから、クラッカーは、レスポンスコードＱ′と変換後データＱとの対応関係が不明であり、チャレンジコードＰと変換後データＱとの対応関係も不明である状態において、これらの対応関係を推定する解析を行わねばならない。したがって、図１９に示す第２の変形例に係る認証システム３００Ｂは、図１５に示す基本的な実施例に係る認証システム３００よりも、更に強固なサイドチャネル攻撃に対する耐性を有していることになる。
【０１７５】
＜３．５  認証システムの第３の変形例＞
ここでは、図２０を参照しながら、図１５に示す認証システム３００の第３の変形例である認証システム３００Ｃを説明する。この認証システム３００Ｃは、認証システム３００に前処理装置と後処理装置との双方を付加したものであり、認証処理を実行する第１の情報処理ユニット３１０Ｃと、認証処理の対象となる第２の情報処理ユニット３２０Ｃと、を備えている。この第３の変形例に係る認証システム３００Ｃは、いわば、第１の変形例に係る認証システム３００Ａと第２の変形例に係る認証システム３００Ｂとを融合させたシステムということができる。
【０１７６】
すなわち、図２０に示す第１の情報処理ユニット３１０Ｃは、図１５に示す第１の情報処理ユニット３１０に、更に第１の前処理装置３１６および第１の後処理装置３１７を付加したものであり、図２０に示す第２の情報処理ユニット３２０Ｃは、図１５に示す第２の情報処理ユニット３２０に、更に第２の前処理装置３２４および第２の後処理装置３２５を付加したものである。
【０１７７】
具体的には、第１の情報処理ユニット３１０Ｃでは、チャレンジコード発生部３１１と第１のデータ変換装置３１３との間に第１の前処理装置３１６が介挿され、第１のデータ変換装置３１３と照合判定部３１４との間に第１の後処理装置３１７が介挿されている。一方、第２の情報処理ユニット３２０Ｃでは、チャレンジコード受信部３２１と第２のデータ変換装置３２２との間に第２の前処理装置３２４が介挿され、第２のデータ変換装置３２２とレスポンスコード送信部３２３との間に第２の後処理装置３２５が介挿されている。その他の構成要素の機能について変更はなく、図１５と図２０において、同じ符号で示されている構成要素は同一の機能をもった構成要素である。
【０１７８】
各前処理装置３１６，３２４は、チャレンジコードＰ′に所定の前処理を施すことにより前処理コードＰを生成する機能を果たし、各後処理装置３１７，３２５は、変換後データＱに所定の後処理を施すことにより後処理コードＱ′を生成する機能を果たす。なお、ここでも、説明の便宜上、チャレンジコードを符号「Ｐ′」で示し、このチャレンジコードＰ′に前処理を施すことにより得られる前処理コードを符号「Ｐ」で示し、変換後データを符号「Ｑ」で示し、この変換後データＱに後処理を施すことにより得られる後処理コードを符号「Ｑ′」で示すことにする。
【０１７９】
結局、図２０に示す認証システム３００Ｃにおける第１の情報処理ユニット３１０Ｃは、乱数を利用してチャレンジコードＰ′を発生させるチャレンジコード発生部３１１と、このチャレンジコードＰ′を第２の情報処理ユニット３２０Ｃに送信するチャレンジコード送信部３１２と、発生したチャレンジコードＰ′に所定の前処理を施すことにより第１の前処理コードＰを生成する第１の前処理装置３１６と、この第１の前処理コードＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第１の変換コードＱを生成する第１のデータ変換装置３１３と、生成した第１の変換コードＱに所定の後処理を施すことにより第１の後処理コードＱ′を生成する第１の後処理装置３１７と、第２の情報処理ユニット３２０Ｃから送信されてきたレスポンスコードＱ′を受信するレスポンスコード受信部３１５と、第１の後処理装置３１７が生成した第１の後処理コードＱ′とレスポンスコード受信部３１５が受信したレスポンスコードＱ′との整合性を判定する照合判定部３１４と、を有している。
【０１８０】
一方、第２の情報処理ユニット３２０Ｃは、第１の情報処理ユニット３１０Ｃから送信されてきたチャレンジコードＰ′を受信するチャレンジコード受信部３２１と、受信したチャレンジコードＰ′に前処理を施すことにより第２の前処理コードＰを生成する第２の前処理装置３２４と、この第２の前処理コードＰに対して、所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第２の変換コードＱを生成する第２のデータ変換装置３２２と、生成した第２の変換コードＱに後処理を施すことにより第２の後処理コードＱ′を生成する第２の後処理装置３２５と、この第２の後処理コードＱ′をレスポンスコードとして第１の情報処理ユニット３１０Ｃに送信するレスポンスコード送信部３２３と、を有している。
【０１８１】
しかも、第１の情報処理ユニット３１０Ｃ側の第１のデータ変換装置３１３と、第２の情報処理ユニット３２０Ｃ側の第２のデータ変換装置３２２として、§１もしくは§２で述べたデータ変換装置が用いられており、かつ、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する一対のデータ変換装置が用いられている。また、第１の情報処理ユニット３１０Ｃ側の第１の前処理装置３１６と、第２の情報処理ユニット３２０Ｃ側の第２の前処理装置３２４として、同一の前処理を実行する一対の前処理装置が用いられており、第１の情報処理ユニット３１０Ｃ側の第１の後処理装置３１７と、第２の情報処理ユニット３２０Ｃ側の第２の後処理装置３２５として、同一の後処理を実行する一対の後処理装置が用いられている。
【０１８２】
なお、各前処理装置３１６，３２４で実行される前処理および各後処理装置３１７，３２５で実行される後処理は、処理前のデータに基づいて処理後のデータが一義的に得られる処理であれば、どのような処理であってもかまわない。具体的には、§３．３で前処理の具体的な実施例として述べた、「オフセット値を増減する処理」（図１７）や「データの並べ替え処理」（図１８）を利用することが可能である。
【０１８３】
この第３の変形例に係る認証システム３００Ｃの場合も、第２の情報処理ユニット３２０Ｃが正規のユニットであれば、照合判定部３１４での照合結果は合致するはずである。したがって、第１の情報処理ユニット３１０Ｃは、第１の後処理装置３１７が生成した第１の後処理コードＱ′とレスポンスコード受信部３１５が受信したレスポンスコードＱ′との整合性を判定し、両者が合致した場合に、第２の情報処理ユニット３２０Ｃを正規の装置として認証することになる。
【０１８４】
この第３の変形例に係る認証システム３００Ｃは、第１の変形例に係る認証システム３００Ａの利点と、第２の変形例に係る認証システム３００Ｂの利点との双方を備えているため、サイドチャネル攻撃に対して極めて高い耐性を有していることになる。
【０１８５】
＜３．６  本発明に係る認証方法＞
ここでは、これまで述べてきた認証システムに係る発明を、認証方法という方法の発明として捉え、その基本手順を図２１に示す流れ図を参照しながら説明する。以下に述べる方法は、§１．４または§２．２で説明したデータ変換方法を利用して、一方の情報処理ユニットが他方の情報処理ユニットを正規の情報処理ユニットであることを認証する認証方法ということになる。実際には、図２１に示す個々の手順は、図１５に例示するような認証処理を実行する第１の情報処理ユニット３１０と認証処理の対象となる第２の情報処理ユニット３２０（いずれも、専用の処理機能を備えた半導体集積回路もしくは専用のプログラムが組み込まれたコンピュータ）によって実行されることになる。
【０１８６】
図２１に示すとおり、この基本手順は、ステップＳ１１〜Ｓ１８によって構成されており、認証処理を実行する第１の情報処理ユニット３１０が認証処理の対象となる第２の情報処理ユニット３２０を正規の情報処理ユニットであることを認証するための手順である。ここで、ステップＳ１１〜Ｓ１３およびＳ１７，Ｓ１８は、第１の情報処理ユニット３１０によって実行される手順であり、ステップＳ１４〜Ｓ１６は、第２の情報処理ユニット３２０によって実行される手順である。以下、各手順を順に説明する。
【０１８７】
まず、第１の情報処理ユニット３１０によって、ステップＳ１１〜Ｓ１３の処理が行われる。すなわち、ステップＳ１１のチャレンジコード発生段階では、乱数を利用してチャレンジコードＰを発生させる処理が行われ、ステップＳ１２の第１のデータ変換段階では、このチャレンジコードＰを第１の変換コードＱに変換する処理が行われ、ステップＳ１３のチャレンジコード送信段階では、ステップＳ１１で発生させたチャレンジコードＰを第２の情報処理ユニット３２０に送信する処理が行われる。
【０１８８】
一方、第２の情報処理ユニット３２０によって、ステップＳ１４〜Ｓ１６の処理が行われる。すなわち、ステップＳ１４のチャレンジコード受信段階では、ステップＳ１３で送信されたチャレンジコードＰを受信する処理が行われ、ステップＳ１５の第２のデータ変換段階では、受信したチャレンジコードＰを第２の変換コードＱに変換する処理が行われ、ステップＳ１６のレスポンスコード送信段階では、変換した第２の変換コードＱをレスポンスコードとして第１の情報処理ユニット３１０に送信する処理が行われる。
【０１８９】
続いて、第１の情報処理ユニット３１０によって、ステップＳ１７〜Ｓ１８の処理が行われる。すなわち、ステップＳ１７のレスポンスコード受信段階では、第２の情報処理ユニット３２０から送信されてきたレスポンスコードＱを受信する処理が行われ、ステップＳ１８の照合判定段階では、ステップＳ１２の第１のデータ変換段階の処理で得られた第１の変換コードＱと、ステップＳ１７のレスポンスコード受信段階で受信されたレスポンスコードＱとの整合性が判定される。ここに示す実施例の場合、両者が一致すれば整合性有りと判定され、第１の情報処理ユニット３１０によって第２の情報処理ユニット３２０が正規のユニットである旨の認証がなされることになる。
【０１９０】
ここで、ステップＳ１２の第１のデータ変換段階およびステップＳ１５の第２のデータ変換段階では、§１．４または§２．２で説明したデータ変換方法であって、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する同じデータ変換方法を含む変換方法が用いられる。
【０１９１】
また、§３．２〜§３．５では、データ変換を行う前に前処理を行ったり、データ変換を行った後に後処理を行ったりする変形例を述べたが、このような変形例を実施する場合には、ステップＳ１２の第１のデータ変換段階およびステップＳ１５の第２のデータ変換段階において、データ変換方法を実行する前に所定の前処理を実行するか（§３．２で述べた第１の変形例の場合）、もしくは、実行した後に所定の後処理を実行するか（§３．４で述べた第２の変形例の場合）、または、前処理と後処理との双方を実行するようにすればよい（§３．５で述べた第３の変形例の場合）。
【０１９２】
なお、この図２１に示す各ステップＳ１１〜Ｓ１８の処理順は、必ずしも図示の順に行う必要はない。たとえば、ステップＳ１２の処理をステップＳ１７の処理の後に行うこともできるし、ステップＳ１２の処理とステップＳ１５の処理とを並行して同時に行うこともできる。図２１に示す各ステップの順序は一例を示すものであり、処理に不都合が生じない限り、任意の順序で実行することができる。
【０１９３】
＜＜＜  §４．  本発明に係る秘匿通信システム  ＞＞＞
§３では、§１，§２で述べたデータ変換装置を認証システムに応用した実施形態を述べたが、ここでは秘匿通信システムに応用した実施形態を述べる。より具体的には、一対のユニット間で情報の送受を行う場合に、送受する情報を暗号化して秘匿状態での通信を可能にするシステムへ応用した技術ということになる。
【０１９４】
＜４．１  本発明に係る秘匿通信システムの構成および動作＞
図２２は、本発明に係る秘匿通信システム４００の基本構成を示すブロック図である。この秘匿通信システム４００は、秘匿情報を送信する第１の情報処理ユニット４１０と、秘匿情報を受信する第２の情報処理ユニット４２０と、を備えたシステムであり、第１の情報処理ユニット４１０から第２の情報処理ユニット４２０に対して、所定の情報を秘匿状態にして送信することができる。
【０１９５】
図示のとおり、第１の情報処理ユニット４１０は、所定の規則に従ってデータストリームＤＳを生成する第１のストリーム生成装置４１１と、この第１のストリーム生成装置４１１が生成したデータストリームＤＳに対して所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第１の変換コード（鍵ストリーム）ＫＳを生成する第１のデータ変換装置４１２と、送信対象となる平文データＤＰを第１の変換コード（鍵ストリームＫＳ）を利用して暗号化して暗号文データＤＣを得る暗号化装置４１３と、暗号文データＤＣを第２の情報処理ユニット４２０に送信する暗号文送信装置４１４と、を有している。
【０１９６】
一方、第２の情報処理ユニット４２０は、第１のストリーム生成装置４１１と同じ規則に従ってデータストリームＤＳを生成する第２のストリーム生成装置４２１と、この第２のストリーム生成装置４２１が生成したデータストリームＤＳに対して所定の暗号鍵を用いた所定の暗号化アルゴリズムに基づく演算を施すことにより第２の変換コード（鍵ストリーム）ＫＳを生成する第２のデータ変換装置４２２と、暗号文送信装置４１４から送信されてきた暗号文データＤＣを受信する暗号文受信装置４２３と、受信した暗号文データＤＣを第２の変換コード（鍵ストリームＫＳ）を利用して復号して平文データＤＰを得る復号装置４２４と、を有している。
【０１９７】
ここで、第１のデータ変換装置４１２および第２のデータ変換装置４２２として、§１もしくは§２で述べたデータ変換装置が用いられており、かつ、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する一対のデータ変換装置が用いられている。
【０１９８】
より具体的に説明すると、第１のストリーム生成装置４１１および第２のストリーム生成装置４２１は、所定の規則に従って単位データの順列からなるデータストリームＤＳを生成する機能を有しており、第１のデータ変換装置４１２および第２のデータ変換装置４２２は、このデータストリームＤＳを構成する個々の単位データに対して演算を実行することにより個々の変換コード（単位鍵データ）を求め、これら単位鍵データの順列からなる鍵ストリームＫＳを生成する機能を有している。
【０１９９】
図２３は、図２２に示す秘匿通信システム４００で用いられるデータストリームＤＳおよび鍵ストリームＫＳの一例を示す図である。図示の例の場合、データストリームＤＳおよび鍵ストリームＫＳは、いずれも８バイトのデータ長Ｌをもった単位データの順列によって構成される。
【０２００】
すなわち、データストリームＤＳは、単位データＤＳ０，ＤＳ１，ＤＳ２，... ，ＤＳＺの順列によって構成され、これらの各単位データはいずれも８バイトのデータによって構成されている。しかも、図示の例の場合、単位データＤＳ０は「00 00 00 00 00 00 00 00」、ＤＳ１は「00 00 00 00 00 00 00 01」、ＤＳ２は「00 00 00 00 00 00 00 02」、… と１ずつ増加してゆき、最後のＤＳＺは「FF FF FF FF FF FF FF FF」となっている（いずれも、１６進表示）。
【０２０１】
このような単位データの順列からなるデータストリームＤＳを生成するには、第１のストリーム生成装置４１１および第２のストリーム生成装置４２１として、８バイトのカウント値を出力することが可能なカウンタ回路を用いればよい。第１のストリーム生成装置４１１として機能するカウンタ回路と、第２のストリーム生成装置４２１として機能するカウンタ回路とが、所定の初期値（図示の例の場合は初期値「00 00 00 00 00 00 00 00」）から同期して計数動作を行うようにしておけば、両者は、同一のデータストリームＤＳを生成することができる。もちろん、カウンタ回路のカウント値は、必ずしも１ずつ増加させる必要はなく、任意の数ずつ増加させてもよいし、逆に減少させてもよい。あるいは、単純なカウンタ回路の代わりに、フィボナッチ数列などの特殊な数列を発生させる回路を用いることもできる。
【０２０２】
こうして生成されたデータストリームＤＳを構成する個々の単位データＤＳ０，ＤＳ１，ＤＳ２，... は、順次、第１のデータ変換装置４１２および第２のデータ変換装置４２２に与えられ、図２３の右に示すような単位鍵データＫＳ０，ＫＳ１，ＫＳ２，... に変換される。これら単位鍵データＫＳ０，ＫＳ１，ＫＳ２，... の順列が鍵ストリームＫＳということになる。ここで、第１のデータ変換装置４１２および第２のデータ変換装置４２２の実体は、§１，§２で述べたデータ変換装置であり、個々の単位データＤＳ０，ＤＳ１，ＤＳ２，... のそれぞれを変換前データＰとして、個々の単位鍵データＫＳ０，ＫＳ１，ＫＳ２，... のそれぞれを変換後データＱとするデータ変換処理が行われることになる。元のデータストリームＤＳが、１ずつ増加する規則的な数列によって構成されていたのに対して、データ変換処理によって得られる鍵ストリームＫＳは、不規則な数列によって構成されている。
【０２０３】
一方、暗号化装置４１３は、平文データＤＰを所定データ長Ｌの単位平文データＤＰ０，ＤＰ１，ＤＰ２，... に分割し、個々の単位平文データＤＰ０，ＤＰ１，ＤＰ２，... を、鍵ストリームＫＳを構成する個々の単位鍵データＫＳ０，ＫＳ１，ＫＳ２，... を利用して暗号化することにより個々の単位暗号文データＤＣ０，ＤＣ１，ＤＣ２，... を生成する。これら単位暗号文データＤＣ０，ＤＣ１，ＤＣ２，... の集合体が、暗号文送信装置４１４によって送信される暗号文データＤＣということになる。
【０２０４】
図２４の上半分には、暗号化装置４１３による暗号文データＤＣの生成処理の一例が示されている。すなわち、図２４の１行目に示されているように、与えられた平文データＤＰは、先頭から所定のデータ長Ｌ（たとえば、Ｌ＝８バイト）の単位で分割され、個々の単位平文データＤＰ０，ＤＰ１，ＤＰ２，ＤＰ３，... が得られる。そして、これら単位平文データＤＰ０，ＤＰ１，ＤＰ２，ＤＰ３，... に対して、それぞれ鍵ストリームＫＳを構成する単位鍵データＫＳ０，ＫＳ１，ＫＳ２，ＫＳ３，... （図２４の２行目参照）を利用した暗号化処理が施され、単位暗号文データＤＣ０，ＤＣ１，ＤＣ２，ＤＣ３，... が生成される（図２４の３行目参照）。
【０２０５】
暗号化装置４１３による暗号化処理には、どのようなアルゴリズムに基づく処理を用いてもかまわないが、図２４に示す例では、排他的論理和をとるアルゴリズムが利用されている（もちろん、排他的論理和ではなく、単位鍵データを加算したり減算したりするアルゴリズムなどを利用してもかまわない）。すなわち、単位平文データＤＰ０と単位鍵データＫＳ０との排他的論理和演算が暗号化処理の演算ということになり、得られた排他的論理和が単位暗号文データＤＣ０ということになる。同様に、単位平文データＤＰ１と単位鍵データＫＳ１との排他的論理和が単位暗号文データＤＣ１になり、単位平文データＤＰ２と単位鍵データＫＳ２との排他的論理和が単位暗号文データＤＣ２になり、単位平文データＤＰ３と単位鍵データＫＳ３との排他的論理和が単位暗号文データＤＣ３になる。
【０２０６】
こうして得られた単位暗号文データＤＣ０，ＤＣ１，ＤＣ２，ＤＣ３，... は、暗号文データＤＣとして、第２の情報処理ユニット４２０へと送信される。
【０２０７】
一方、第２の情報処理ユニット４２０側では、復号装置４２４による復号が行われる。復号装置４２４は、受信した暗号文データＤＣを所定データ長Ｌの単位暗号文データＤＣ０，ＤＣ１，ＤＣ２，ＤＣ３，... に分割し、個々の単位暗号文データＤＣ０，ＤＣ１，ＤＣ２，ＤＣ３，... を、鍵ストリームＫＳを構成する個々の単位鍵データＫＳ０，ＫＳ１，ＫＳ２，... を利用して復号することにより個々の単位平文データＤＰ０，ＤＰ１，ＤＰ２，... を生成する。これら単位平文データＤＰ０，ＤＰ１，ＤＰ２，... の集合体が、平文データＤＰということになる。
【０２０８】
図２４の下半分には、復号装置４２４による暗号文データＤＣの復号処理の一例が示されている。すなわち、図２４の３行目に示されているように、与えられた暗号文データＤＣは、先頭から所定のデータ長Ｌ（この例の場合は、Ｌ＝８バイト）の単位で分割され、個々の単位暗号文データＤＣ０，ＤＣ１，ＤＣ２，ＤＣ３，... が得られる。そして、これら単位暗号文データＤＣ０，ＤＣ１，ＤＣ２，ＤＣ３，... に対して、それぞれ鍵ストリームＫＳを構成する単位鍵データＫＳ０，ＫＳ１，ＫＳ２，ＫＳ３，... （図２４の４行目参照）を利用した復号処理が施され、単位平文データＤＰ０，ＤＰ１，ＤＰ２，ＤＰ３，... が生成される（図２４の５行目参照）。
【０２０９】
ここに示す例の場合、暗号化装置４１３による暗号化処理として排他的論理和をとるアルゴリズムが利用されているので、復号処理にも、排他的論理和をとるアルゴリズムが利用される。これは、一般に、論理値Ａと鍵Ｋとの排他的論理和演算によって論理値Ｂが得られた場合、論理値Ｂと鍵Ｋとの排他的論理和演算によって元の論理値Ａが得られる性質を利用した復号を行うためである。
【０２１０】
具体的には、単位暗号文データＤＣ０と単位鍵データＫＳ０との排他的論理和演算が復号処理の演算ということになり、得られた排他的論理和が単位平文データＤＰ０ということになる。同様に、単位暗号文データＤＣ１と単位鍵データＫＳ１との排他的論理和が単位平文データＤＰ１になり、単位暗号文データＤＣ２と単位鍵データＫＳ２との排他的論理和が単位平文データＤＰ２になり、単位暗号文データＤＣ３と単位鍵データＫＳ３との排他的論理和が単位平文データＤＰ３になる。
【０２１１】
こうして得られた単位平文データＤＰ０，ＤＰ１，ＤＰ２，ＤＰ３，... の集合体が、元の平文データＤＰということになる。
【０２１２】
このような秘匿通信システム４００において、通信経路上の秘匿性を維持するためには、鍵ストリームＫＳの秘匿性を確保する必要がある。上例の場合、鍵ストリームＫＳの元になるデータストリームＤＳは、カウンタからなるストリーム生成装置４１１，４２１で発生させた規則的なカウント値（図２３左参照）であるが、データ変換装置４１２，４２２によるデータ変換処理により得られた鍵ストリームＫＳは、類推困難なデータ列（図２３右参照）になるので、鍵ストリームＫＳの秘匿性を十分に確保することができる。既に述べたとおり、クラッカーによるサイドチャネル攻撃を受けたとしても、データ変換装置４１２，４２２が用いている暗号化アルゴリズムＡや暗号鍵Ｋを解析することは非常に困難である。
【０２１３】
＜４．２  本発明に係る秘匿通信方法＞
ここでは、これまで述べてきた秘匿通信システムに係る発明を、秘匿通信方法という方法の発明として捉え、その基本手順を図２５に示す流れ図を参照しながら説明する。以下に述べる方法は、§１．４または§２．２で説明したデータ変換方法を利用して、一方の情報処理ユニットから他方の情報処理ユニットに対して秘匿情報を送信する秘匿通信方法ということになる。実際には、図２５に示す個々の手順は、図２２に例示する第１の情報処理ユニット４１０と第２の情報処理ユニット４２０（いずれも、専用の処理機能を備えた半導体集積回路もしくは専用のプログラムが組み込まれたコンピュータ）によって実行されることになる。
【０２１４】
図２５に示すとおり、この基本手順は、ステップＳ２１〜Ｓ２８によって構成される。ここで、ステップＳ２１〜Ｓ２４は、第１の情報処理ユニット４１０によって実行される手順であり、ステップＳ２５〜Ｓ２８は、第２の情報処理ユニット４２０によって実行される手順である。以下、各手順を順に説明する。
【０２１５】
まず、第１の情報処理ユニット４１０によって、ステップＳ２１〜Ｓ２４の処理が行われる。すなわち、ステップＳ２１の第１のストリーム生成段階では、所定の規則（上例の場合、カウンタ値を、初期値０から順次１ずつ増加させるという規則）に従って、個々の単位データの順列からなるデータストリームＤＳを生成する処理が行われ、ステップＳ２２の第１のデータ変換段階では、ステップＳ２１で生成されたデータストリームＤＳを構成する個々の単位データＤＳ０，ＤＳ１，ＤＳ２，... を第１の変換コード（単位鍵データ）ＫＳ０，ＫＳ１，ＫＳ２，... に変換する処理が行われる（図２３参照）。そして、ステップＳ２３の暗号化段階では、送信対象となる平文データＤＰを第１の変換コードＫＳ０，ＫＳ１，ＫＳ２，... を利用して暗号化して暗号文データＤＣを得る処理が行われ、ステップＳ２４の暗号文送信段階では、こうして得られた暗号文データＤＣを第２の情報処理ユニット４２０に送信する処理が行われる。
【０２１６】
一方、第２の情報処理ユニット４２０によって、ステップＳ２５〜Ｓ２８の処理が行われる。すなわち、ステップＳ２５の暗号文受信段階では、第１の情報処理ユニット４１０から送信されてきた暗号文データＤＣを受信する処理が行われ、ステップＳ２６の第２のストリーム生成段階では、ステップＳ２１の第１のストリーム生成段階と同じ規則に従ってデータストリームＤＳを生成する処理が行われる。そして、ステップＳ２７の第２のデータ変換段階では、ステップＳ２６で生成されたデータストリームＤＳを構成する個々の単位データＤＳ０，ＤＳ１，ＤＳ２，... を第２の変換コード（単位鍵データ）ＫＳ０，ＫＳ１，ＫＳ２，... に変換する処理が行われる（図２３参照）。そして、ステップＳ２８の復号段階では、暗号文データＤＣを第２の変換コードＫＳ０，ＫＳ１，ＫＳ２，... を利用して復号し、元の平文データＤＰを得る処理が行われる。
【０２１７】
ここで、ステップＳ２２の第１のデータ変換段階およびステップＳ２７の第２のデータ変換段階では、§１．４または§２．２で説明したデータ変換方法であって、同じ変換前データＰが与えられたときに同じ変換後データＱを生成する同じデータ変換方法が用いられる。
【符号の説明】
【０２１８】
１０：データ変換装置
１００：データ変換装置
１１１：第１番目の暗号化処理部
１１２：第２番目の暗号化処理部
１１ｉ：第ｉ番目の暗号化処理部
１１ｎ：第ｎ番目の暗号化処理部
１２０：合成処理部
２００：データ変換装置
２１０：暗号化処理部
２２０：合成処理部
３００，３００Ａ，３００Ｂ，３００Ｃ：認証システム
３１０，３１０Ａ，３１０Ｂ，３１０Ｃ：第１の情報処理ユニット
３１１：チャレンジコード発生部
３１２：チャレンジコード送信部
３１３：第１のデータ変換装置
３１４：照合判定部
３１５：レスポンスコード受信部
３１６：第１の前処理装置
３１７：第１の後処理装置
３２０，３２０Ａ，３２０Ｂ，３２０Ｃ：第２の情報処理ユニット
３２１：チャレンジコード受信部
３２２：第２のデータ変換装置
３２３：レスポンスコード送信部
３２４：第２の前処理装置
３２５：第２の後処理装置
４００：秘匿通信システム
４１０：第１の情報処理ユニット
４１１：第１のストリーム生成装置
４１２：第１のデータ変換装置
４１３：暗号化装置
４１４：暗号文送信装置
４２０：第２の情報処理ユニット
４２１：第２のストリーム生成装置
４２２：第２のデータ変換装置
４２３：暗号文受信装置
４２４：復号装置
Ａ：暗号化アルゴリズム
Ａ１：第１番目の暗号化アルゴリズム
Ａ２：第２番目の暗号化アルゴリズム
Ａｉ：第ｉ番目の暗号化アルゴリズム
Ａｎ：第ｎ番目の暗号化アルゴリズム
Ｂ１〜Ｂ５：データの個々のバイト
Ｃ１：第１番目の暗号データ
Ｃ２：第２番目の暗号データ
Ｃ３：第３番目の暗号データ
Ｃ４：第４番目の暗号データ
Ｃｉ：第ｉ番目の暗号データ
Ｃｎ：第ｎ番目の暗号データ
Ｄ１：第１番目の暗号化処理装置
Ｄ２：第２番目の暗号化処理装置
Ｄｉ：第ｉ番目の暗号化処理装置
Ｄｎ：第ｎ番目の暗号化処理装置
Ｄａ：処理前のデータ
Ｄｂ：処理後のデータ
ＤＣ：暗号文データ
ＤＣ０〜ＤＣ３：単位暗号文データ
ＤＰ：平文データ
ＤＰ０〜ＤＰ３：単位平文データ
ＤＳ：データストリーム
ＤＳ０〜ＤＳＺ：単位データ
Ｅ１：第１番目の暗号化処理
Ｅ２：第２番目の暗号化処理
Ｅｉ：第ｉ番目の暗号化処理
Ｅｎ：第ｎ番目の暗号化処理
Ｈ：順序決定アルゴリズム
ｉ：データの番号を示すパラメータ
ｊ：ビットの番号を示すパラメータ
Ｋ：暗号鍵
Ｋ１：第１番目の暗号鍵
Ｋ２：第２番目の暗号鍵
Ｋｉ：第ｉ番目の暗号鍵
Ｋｎ：第ｎ番目の暗号鍵
ＫＳ：鍵ストリーム
ＫＳ０〜ＫＳＺ：単位鍵データ（変換コード）
Ｌ：データ長
Ｏｆｆ：オフセット値
Ｐ：変換前データ／チャレンジコード
Ｐ′：チャレンジコード
Ｑ：変換後データ／レスポンスコード
Ｑ′：レスポンスコード
Ｓ：合成処理アルゴリズム
Ｓ１〜Ｓ２８：流れ図の各ステップ
Ｔ：並び替えテーブル
ｔ：時間
ｔ０〜ｔ８：各時点
Ｗ：消費電力
Ｚ１〜Ｚ３，Ｚ（ｎ−１）：演算結果
【図１】
2018128706.tif 000003
【図２】
2018128706.tif 000004
【図３】
2018128706.tif 000005
【図４】
2018128706.tif 000006
【図５】
2018128706.tif 000007
【図６】
2018128706.tif 000008
【図７】
2018128706.tif 000009
【図８】
2018128706.tif 000010
【図９】
2018128706.tif 000011
【図１０】
2018128706.tif 000012
【図１１】
2018128706.tif 000013
【図１２】
2018128706.tif 000014
【図１３】
2018128706.tif 000015
【図１４】
2018128706.tif 000016
【図１５】
2018128706.tif 000017
【図１６】
2018128706.tif 000018
【図１７】
2018128706.tif 000019
【図１８】
2018128706.tif 000020
【図１９】
2018128706.tif 000021
【図２０】
2018128706.tif 000022
【図２１】
2018128706.tif 000023
【図２２】
2018128706.tif 000024
【図２３】
2018128706.tif 000025
【図２４】
2018128706.tif 000026
【図２５】
2018128706.tif 000027