(57)【特許請求の範囲】
【請求項１】
暗号鍵を用いて平文データを暗号変換する暗号装置であって、
入力された第１、第２のデータに前記暗号鍵を作用させて演算処理を行い、その結果を、次回に入力すべき第１、第２のデータとして出力する暗号演算処理を複数回実行する暗号変換手段と、
前記平文データを２つに分割し、結果を、前記暗号変換手段の最初の回の前記暗号演算処理に入力すべき第１、第２のデータとして出力する暗号用分割手段と、
前記暗号変換手段の最後の回の前記暗号演算処理より出力された第１、第２のデータを結合し、結果を、暗号データとして出力する暗号用結合手段とを有し、
前記暗号演算処理は、
入力された第１のデータのビット列変換を行なう暗号用ビット列変換処理と、前記暗号用ビット列変換処理の出力データと入力された第２のデータとの排他的論理和を計算する暗号用排他的論理和演算処理と、を実行し、
前記暗号用排他的論理和演算処理の出力データを前記次回に入力すべき第１のデータとし、入力された第１のデータを前記次回に入力すべき第２のデータとして出力するものであり、
前記暗号用ビット列変換処理は、
入力されたデータと、前記暗号鍵あるいはその一部から生成された第１の鍵データとの排他的論理和を計算する第１の排他的論理和演算処理と、
入力されたデータにシフト数Ｓ１の巡回シフト演算処理を施す第１の巡回シ
フト演算処理と、当該入力されたデータと前記第１の巡回シフト演算処理の出力データとの加算演算を行う第１の加算演算処理と、からなる第１の論理演算処理と、
入力されたデータにシフト数Ｓ２の巡回シフト演算処理を施す第２の巡回シ
フト演算処理と、当該入力されたデータと前記第２の巡回シフト演算処理の出力データとの加算演算処理を行う第２の加算演算処理と、からなる第２の論理演算処理と、
入力されたデータと、前記暗号鍵あるいはその一部から生成された第２の鍵データとの排他的論理和を計算する第２の排他的論理和演算処理と、
入力されたデータにシフト数Ｓ３の巡回シフト演算処理を施す第３の巡回シ
フト演算処理と、当該入力されたデータと前記第３の暗号用巡回シフト演算処理の出力データとの加算演算処理を行う第３の加算演算処理と、からなる第３の論理演算処理と、を所定の順番で実行するものであり、
前記暗号用ビット列変換処理におけるシフト数Ｓ１、Ｓ２およびＳ３は、全てが
奇数、あるいは、Ｓ１およびＳ２のいずれか一方が２で残りの２つが奇数の値となるように設定されており、かつ、連続して実行される前記暗号演算処理間において、Ｓ１、Ｓ２およびＳ３の値が互いに一致しないように設定されていること
を特徴とする暗号装置。
【請求項２】
請求項１記載の暗号装置であって、
前記暗号用ビット列変換処理におけるシフト数Ｓ１、Ｓ２およびＳ３は、連続し
て実行されるＮ（Ｎは２以上）回の前記暗号演算処理に設定されるＳ１、Ｓ２およびＳ３の値のパターンが、当該Ｎ回の前記暗号演算処理に続く、連続して実行されるＮ回の前記暗号演算処理に設定されるＳ１、Ｓ２およびＳ３の値のパターンと
一致しないように設定されていること
を特徴とする暗号装置。
【請求項３】
請求項１または２記載の暗号装置であって、
前記第１の加算演算処理は、入力されたデータと前記第１の巡回シフト演算処理の出力データとの加算結果と、パラメータＡ１との加算あるいは排他的論理和演算をさらに行い、
前記第２の加算演算処理は、入力されたデータと前記第２の巡回シフト演算処理の出力データとの加算結果と、パラメータＡ２との加算あるいは排他的論理和演算をさらに行い、
前記第３の加算演算処理は、入力されたデータと前記第３の巡回シフト演算処理の出力データとの加算結果と、パラメータＡ３との加算あるいは排他的論理和演算を行うこと
を特徴とする暗号装置。
【請求項４】
請求項１、２または３記載の暗号装置であって、
少なくとも、前記暗号用ビット列変換処理におけるシフト数Ｓ１、Ｓ２およびＳ３を含む、複数回実行される前記暗号演算処理各々での演算に使用する各種パラメータを設定するアルゴリズムパラメータ設定手段をさらに備えること
を特徴とする暗号装置。
【請求項５】
請求項１または２記載の暗号装置で生成された暗号データを、前記暗号装置で使用した暗号鍵と共通の復号鍵を用いて平文データに復号変換する復号装置であって、
入力された第１、第２のデータに前記復号鍵を作用させて演算処理を行い、その結果を、次回に入力すべき第１、第２のデータとして出力する復号演算処理を、前記暗号装置の暗号変換手段の暗号演算処理と同じ回数実行する復号変換手段と、
前記暗号データを２つに分割し、結果を、前記復号変換手段の最初の回の前記復号演算処理に入力すべき第１、第２のデータとして出力する復号用分割手段と、
前記復号変換手段の最後の回の前記復号演算処理より出力された第１、第２のデータを結合し、結果を、平分データとして出力する復号用結合手段とを有し、
前記復号演算処理は、
入力された第２のデータに対し、前記暗号変換手段の前記暗号演算処理における前記暗号用ビット列変換処理と同じ処理を行なう復号用ビット列変換処理と、前記復号用ビット列変換処理の出力データと入力された第１のデータとの排他的論理和を計算する復号用排他的論理和演算処理と、を実行し、
前記復号用排他的論理和演算処理の出力データを前記次回に入力すべき第２のデータとし、入力された第２のデータを前記次回に入力すべき第１のデータとして出力するものであり、
前記復号用ビット列変換処理におけるシフト数Ｓ１、Ｓ２およびＳ３は、前記復
号変換手段の最初の回の前記復号演算処理に設定される値が前記暗号変換手段の最後の回の前記暗号演算処理に設定されるシフト数Ｓ１、Ｓ２およびＳ３の値と各々一致し、前記復号変換手段の最後の回の前記復号演算処理に設定される値が前記暗号変換手段の最初の回の前記暗号演算処理に設定されるシフト数Ｓ１、Ｓ２およびＳ３の値と各々一致するように、前記復号変換手段にて複数回実行される前記復号演算処理各々と前記暗号変換手段にて複数回実行される前記暗号演算処理各々との間で、実行順番上、逆順に設定されていること
を特徴とする復号装置。
【請求項６】
請求項３記載の暗号装置で生成された暗号データを、前記暗号装置で使用した暗号鍵と共通の復号鍵を用いて平文データに復号変換する復号装置であって、
入力された第１、第２のデータに前記復号鍵を作用させて演算処理を行い、その結果を、次回に入力すべき第１、第２のデータとして出力する復号演算処理を、前記暗号装置の前記暗号変換手段の前記暗号演算処理と同じ回数実行する復号変換手段と、
前記暗号データを２つに分割し、結果を、前記復号変換手段の最初の回の前記復号演算処理に入力すべき第１、第２のデータとして出力する復号用分割手段と、
前記復号変換手段の最後の回の前記復号演算処理より出力された第１、第２のデータを結合し、結果を、平分データとして出力する復号用結合手段とを有し、  前記復号演算処理は、
入力された第２のデータに対し、前記暗号変換手段の前記暗号演算処理における前記暗号用ビット列変換処理と同じ処理を行なう復号用ビット列変換処理と、前記復号用ビット列変換処理の出力データと入力された第１のデータとの排他的論理和を計算する復号用排他的論理和演算処理と、を実行し、
前記復号用排他的論理和演算処理の出力データを前記次回に入力すべき第２のデータとし、入力された第２のデータを前記次回に入力すべき第１のデータとして出力するものであり、
前記復号用ビット列変換処理におけるシフト数Ｓ１、Ｓ２およびＳ３とパラメー
タＡ１、Ａ２およびＡ３は、前記復号変換手段の最初の回の前記復号演算処理に設
定される値が前記暗号変換手段の最後の回の前記暗号演算処理に設定されるシフト数Ｓ１、Ｓ２およびＳ３とパラメータＡ１、Ａ２およびＡ３の値と各々一致し、前記復号変換手段の最後の回の前記復号演算処理に設定される値が前記暗号変換手段の最初の回の前記暗号演算処理に設定されるシフト数Ｓ１、Ｓ２およびＳ３とパラメータＡ１、Ａ２およびＡ３の値と各々一致するように、前記復号変換手段にて複数回実行される前記復号演算処理各々と前記暗号変換手段にて複数回実行される前記暗号演算処理各々との間で、実行順序上、逆順に設定されていること
を特徴とする復号装置。
【請求項７】
請求項５または６記載の復号装置であって、
少なくとも、前記復号用ビット列変換処理におけるシフト数Ｓ１、Ｓ２およびＳ３を含む、前記復号変換手段にて複数回実行される前記復号演算処理各々での演算に使用する各種パラメータを設定するアルゴリズムパラメータ設定手段をさらに備えること
を特徴とする復号装置。
【請求項８】
暗号変換手段、暗号用分割手段および暗号用結合手段を有する暗号装置が、暗号鍵を用いて平文データを暗号変換し、結果を暗号データとして送信し、復号変換手段、復号用分割手段および復号用結合手段を有する復号装置が、前記暗号データを前記暗号鍵と共通の復号鍵を用いて平文データに復号変換する暗号通信方法であって、
前記暗号装置において、
前記暗号用分割手段が、前記平文データを２つに分割する暗号分割ステップと、
前記暗号変換手段が、前記暗号分割ステップにより得られた２つのデータを最初の暗号演算ステップに入力すべき第１、第２のデータとして、入力された第１、第２のデータに前記暗号鍵を作用させて演算処理を行い、その結果を次回の暗号演算ステップに入力すべき第１、第２のデータとして出力する暗号演算ステップを、複数回実行する暗号変換ステップと、
前記暗号用結合手段が、前記暗号変換ステップにおける最後の暗号演算処理により出力された第１、２のデータを結合して前記暗号データを生成する暗号用結合ステップと、を有し、
前記暗号演算ステップは、
入力された第１のデータのビット列変換を行なう暗号用ビット列変換ステップと、前記暗号用ビット列変換ステップの出力データと入力された第２のデータとの排他的論理和を計算する暗号用排他的論理和演算ステップと、を実行し、
前記暗号用排他的論理和演算ステップの出力データを前記次回の暗号演算ステップに入力すべき第１のデータとし、入力された第１のデータを前記次回の暗号演算ステップに入力すべき第２のデータとして出力するものであり、
前記暗号用ビット列変換ステップは、
入力されたデータと、前記暗号鍵あるいはその一部から生成された第１の鍵データとの排他的論理和を計算する第１の排他的論理和演算ステップと、
入力されたデータにシフト数Ｓ１の巡回シフト演算処理を施す第１の巡回シフト演算ステップと、当該入力されたデータと前記第１の巡回シフト演算処理の出力データとの加算演算を行う第１の加算演算ステップと、からなる第１の論理演算ステップと、
入力されたデータにシフト数Ｓ２の巡回シフト演算処理を施す第２の巡回シフト演算ステップと、当該入力されたデータと前記第２の巡回シフト演算ステップの出力データとの加算演算処理を行う第２の加算演算ステップと、からなる第２の論理演算ステップと、
入力されたデータと、前記暗号鍵あるいはその一部から生成された第２の鍵データとの排他的論理和を計算する第２の排他的論理和演算ステップと、
入力されたデータにシフト数Ｓ３の巡回シフト演算処理を施す第３の巡回シフト演算ステップと、当該入力されたデータと前記第３の暗号用巡回シフト演算ステップの出力データとの加算演算処理を行う第３の加算演算ステップと、からなる第３の論理演算ステップと、を所定の順番で実行するものであり、
前記暗号用ビット列変換ステップにおけるシフト数Ｓ１、Ｓ２およびＳ３は、全てが奇数、あるいは、Ｓ１およびＳ２のいずれか一方が２で残りの２つが奇数の値となるように設定されており、かつ、連続して実行される２つの暗号演算ステップ間において、Ｓ１、Ｓ２およびＳ３の値が互いに一致しないように設定されており、
前記復号装置において、
前記復号用分割手段が、前記暗号データを２つに分割する復号分割ステップと、
前記復号変換手段が、前記復号分割ステップにより得られた２つのデータを最初の復号演算ステップに入力すべき第１、第２のデータとして、入力された第１、第２のデータに前記復号鍵を作用させて演算処理を行い、その結果を次回の復号演算ステップに入力すべき第１、第２のデータとして出力する復号演算ステップを、前記暗号演算ステップと同じ回数実行する復号変換ステップと、
前記復号用結合手段が、前記復号変換ステップにおける最後の復号演算ステップにより出力された第１、２のデータを結合して前記平文データを生成する復号用結合ステップと、を有し、
前記復号演算ステップは、
入力された第２のデータに対し、前記暗号演算ステップにおける前記暗号用ビット列変換ステップと同じ処理を行なう復号用ビット列変換ステップと、前記復号用ビット列変換ステップの出力データと入力された第１のデータとの排他的論理和を計算する復号用排他的論理和演算ステップと、を実行し、
前記復号用排他的論理和演算ステップの出力データを前記次回の復号演算ステップに入力すべき第２のデータとし、入力された第２のデータを前記次回の復号演算ステップに入力すべき第１のデータとして出力するものであり、
前記復号用ビット列変換ステップにおけるシフト数Ｓ１、Ｓ２およびＳ３は、前記復号変換ステップの最初の回の前記復号演算ステップに設定される値が前記暗号変換ステップの最後の回の前記暗号演算ステップに設定されるシフト数Ｓ１、Ｓ２およびＳ３の値と各々一致し、
前記復号変換ステップの最後の回の前記復号演算ステップに設定される値が前記暗号変換ステップの最初の回の前記暗号演算ステップに設定されるシフト数Ｓ１、Ｓ２およびＳ３の値と各々一致するように、前記復号変換ステップにて複数回実行される前記復号演算ステップ各々と前記暗号変換ステップにて複数回実行される前記暗号演算ステップ各々との間で、実行順番上、逆順に設定されていること
を特徴とする暗号通信方法。
【請求項９】
請求項８記載の暗号通信方法であって、
共通の鍵を、前記暗号装置が暗号鍵として保持し、前記復号装置が復号鍵として保持するための鍵共有ステップを有すること
を特徴とする暗号通信方法。
【請求項１０】
車両に搭載されて使用される車載機と、車載機に装着自在に構成されたＩＣカードと、道路に設置されて使用される路側機を備え、
前記ＩＣカードが前記車載機に装着されると、当該ＩＣカードに記憶された契約情報を暗号通信により前記車載機に送信し、前記車載機を搭載した車両が道路に設置された路側機を通過すると、前記車載機に記憶された前記ＩＣカードの契約情報を暗号通信により前記路側機に送信し、前記路側機にて前記車載機より受信した前記契約情報にしたがって決済を行い、その決済情報を暗号通信により前記車載機に送信し、前記車載機が受信した前記路側機よりの決済情報を暗号通信により前記ＩＣカードに送信する、自動料金徴収システムであって、
前記ＩＣカード、前記車載機および前記路側機は、各々、通信相手に送信すべき情報である平文データを暗号鍵を用いて暗号データに暗号変換する暗号化部と、通信相手から送られてきた暗号データを、当該通信相手が有する暗号鍵と共通の復号鍵を用いて平文データに復号変換する復号化部とを有し、
前記暗号化部は、
入力された第１、第２のデータに前記暗号鍵を作用させて演算処理を行い、その結果を、次回に入力すべき第１、第２のデータとして出力する暗号演算処理を複数回実行する暗号変換手段と、
前記平文データを２つに分割し、結果を、前記暗号変換手段の最初の回の前記暗号演算処理に入力すべき第１、第２のデータとして出力する暗号用分割手段と、
前記暗号変換手段の最後の回の前記暗号演算処理より出力された第１、第２のデータを結合し、結果を、暗号データとして出力する暗号用結合手段とを有し、  前記暗号演算処理は、
入力された第１のデータのビット列変換を行なう暗号用ビット列変換処理と、前記暗号用ビット列変換処理の出力データと入力された第２のデータとの排他的論理和を計算する暗号用排他的論理和演算処理と、を実行し、
前記暗号用排他的論理和演算処理の出力データを前記次回に入力すべき第１のデータとし、入力された第１のデータを前記次回に入力すべき第２のデータとして出力するものであり、
前記暗号用ビット列変換処理は、
入力されたデータと、前記暗号鍵あるいはその一部から生成された第１の鍵データとの排他的論理和を計算する第１の排他的論理和演算処理と、
入力されたデータにシフト数Ｓ１の巡回シフト演算処理を施す第１の巡回シ
フト演算処理と、当該入力されたデータと前記第１の巡回シフト演算処理の出力データとの加算演算を行う第１の加算演算処理と、からなる第１の論理演算処理と、
入力されたデータにシフト数Ｓ２の巡回シフト演算処理を施す第２の巡回シ
フト演算処理と、当該入力されたデータと前記第２の巡回シフト演算処理の出力データとの加算演算処理を行う第２の加算演算処理と、からなる第２の論理演算処理と、
入力されたデータと、前記暗号鍵あるいはその一部から生成された第２の鍵データとの排他的論理和を計算する第２の排他的論理和演算処理と、
入力されたデータにシフト数Ｓ３の巡回シフト演算処理を施す第３の巡回シ
フト演算処理と、当該入力されたデータと前記第３の暗号用巡回シフト演算処理の出力データとの加算演算処理を行う第３の加算演算処理と、からなる第３の論理演算処理と、を所定の順番で実行するものであり、
前記暗号用ビット列変換処理におけるシフト数Ｓ１、Ｓ２およびＳ３は、全てが
奇数、あるいは、Ｓ１およびＳ２のいずれか一方が２で残りの２つが奇数の値となるように設定されており、かつ、連続して実行される前記暗号演算処理間において、Ｓ１、Ｓ２およびＳ３の値が互いに一致しないように設定されており、
前記復号化部は、
入力された第１、第２のデータに前記復号鍵を作用させて演算処理を行い、その結果を、次回に入力すべき第１、第２のデータとして出力する復号演算処理を、前記暗号装置の暗号変換手段の暗号演算処理と同じ回数実行する復号変換手段と、
前記暗号データを２つに分割し、結果を、前記復号変換手段の最初の回の前記復号演算処理に入力すべき第１、第２のデータとして出力する復号用分割手段と、
前記復号変換手段の最後の回の前記復号演算処理より出力された第１、第２のデータを結合し、結果を、平分データとして出力する復号用結合手段とを有し、  前記復号演算処理は、
入力された第２のデータに対し、前記暗号変換手段の前記暗号演算処理における前記暗号用ビット列変換処理と同じ処理を行なう復号用ビット列変換処理と、前記復号用ビット列変換処理の出力データと入力された第１のデータとの排他的論理和を計算する復号用排他的論理和演算処理と、を実行し、
前記復号用排他的論理和演算処理の出力データを前記次回に入力すべき第２のデータとし、入力された第２のデータを前記次回に入力すべき第１のデータとして出力するものであり、
前記復号用ビット列変換処理におけるシフト数Ｓ１、Ｓ２およびＳ３は、前記復
号変換手段の最初の回の前記復号演算処理に設定される値が前記暗号変換手段の最後の回の前記暗号演算処理に設定されるシフト数Ｓ１、Ｓ２およびＳ３の値と各々一致し、前記復号変換手段の最後の回の前記復号演算処理に設定される値が前記暗号変換手段の最初の回の前記暗号演算処理に設定されるシフト数Ｓ１、Ｓ２およびＳ３の値と各々一致するように、前記復号変換手段にて複数回実行される前記復号演算処理各々と前記暗号変換手段にて複数回実行される前記暗号演算処理各々との間で、実行順番上、逆順に設定されていること
を特徴とする自動料金徴収システム。
【請求項１１】
請求項１０記載の自動料金徴収システムに用いられるＩＣカード。
【請求項１２】
請求項１０記載の自動料金徴収システムに用いられる車載機。
【請求項１３】
請求項１０記載の自動料金徴収システムに用いられる路側機。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ、情報家電機器、自動料金徴収装置等の間で伝送されるデジタル・データの暗号・復号技術に関するものである。
【０００２】
【従来の技術】
一般に、デジタル情報家電機器においては、デジタルデータの不正な複写を防ぐための暗号化技術が必須となる。たとえば、デジタル放送受信機で受信したデジタル映像データを、デジタル録画機器にデジタル録画する場合、デジタル映像データに著作権があれば、それを保護する機能がそれぞれの装置に必要になる。
【０００３】
このような著作権保護システムを実現するためには、デジタルデータの複写制限の設定、機器間認証、デジタルデータのリアルタイム暗号化などの暗号技術を用い、データの改ざんや不正な複写を防止しなければならない。
【０００４】
暗号技術の従来例としては、例えば日本特開昭５１−１０８７０１号公報に示されるＤＥＳ暗号に代表される、共通鍵暗号方式が挙げられる。共通鍵暗号方式の多くは、簡単な変換を繰り返し行うことで、複雑な暗号変換を構成することを特徴としている。これらの暗号をより安全なものにする工夫は従来から様々な形でなされてきた。例えば、簡単な変換の繰り返し回数を大きくすることで、暗号文の統計的な特徴をより撹乱し、暗号解読を困難にできる。
【０００５】
【発明が解決しようとする課題】
しかし、変換の繰り返し回数を増やすことは、暗号変換に要する処理時間を増大してしまうことになる。したがって、簡単な変換の繰り返し回数を大きくすることによる安全性強化対策は、上述した著作権保護システムにおける、リアルタイム暗号化処理には適さないという問題があった。
【０００６】
本発明は、上記事情に基づいてなされたものであり、本発明の目的は、変換の繰り返し回数を増やすことなく、暗号解読に強い高速な暗号・復号変換を実現することにある。
【０００７】
【課題を解決するための手段】
上記目的達成のために、本発明の暗号装置は、暗号鍵を用いて平文データを暗号変換する暗号装置であって、
入力された第１、第２のデータに前記暗号鍵を作用させて演算処理を行い、その結果を、次回に入力すべき第１、第２のデータとして出力する暗号演算処理を複数回実行する暗号変換手段と、
前記平文データを２つに分割し、結果を、前記暗号変換手段の最初の回の前記暗号演算処理に入力すべき第１、第２のデータとして出力する暗号用分割手段と、
前記暗号変換手段の最後の回の前記暗号演算処理より出力された第１、第２のデータを結合し、結果を、暗号データとして出力する暗号用結合手段とを有し、
前記暗号演算処理は、
入力された第１のデータのビット列変換を行なう暗号用ビット列変換処理と、前記暗号用ビット列変換処理の出力データと入力された第２のデータとの排他的論理和を計算する暗号用排他的論理和演算処理と、を実行し、
前記暗号用排他的論理和演算処理の出力データを前記次回に入力すべき第１のデータとし、入力された第１のデータを前記次回に入力すべき第２のデータとして出力するものであり、
前記暗号用ビット列変換処理は、
入力されたデータと、前記暗号鍵あるいはその一部から生成された第１の鍵データとの排他的論理和を計算する第１の排他的論理和演算処理と、
入力されたデータにシフト数Ｓ1の巡回シフト演算処理を施す第１の巡回シフト演算処理と、当該入力されたデータと前記第１の巡回シフト演算処理の出力データとの加算演算を行う第１の加算演算処理と、からなる第１の論理演算処理と、
入力されたデータにシフト数Ｓ2の巡回シフト演算処理を施す第２の巡回シフト演算処理と、当該入力されたデータと前記第２の巡回シフト演算処理の出力データとの加算演算処理を行う第２の加算演算処理と、からなる第２の論理演算処理と、
入力されたデータと、前記暗号鍵あるいはその一部から生成された第２の鍵データとの排他的論理和を計算する第２の排他的論理和演算処理と、
入力されたデータにシフト数Ｓ3の巡回シフト演算処理を施す第３の巡回シフト演算処理と、当該入力されたデータと前記第３の暗号用巡回シフト演算処理の出力データとの加算演算処理を行う第３の加算演算処理と、からなる第３の論理演算処理と、を所定の順番で実行するものであり、
前記暗号用ビット列変換処理におけるシフト数Ｓ1、Ｓ2およびＳ3は、全てが奇数、あるいは、Ｓ1およびＳ2のいずれか一方が２で残りの２つが奇数の値となるように設定されており、かつ、連続して実行される前記暗号演算処理間において、Ｓ1、Ｓ2およびＳ3の値が互いに一致しないように設定されていることを特徴とする。
【０００８】
ここで、前記暗号用ビット列変換処理におけるシフト数Ｓ1、Ｓ2およびＳ3は、連続して実行されるＮ（Ｎは２以上）回の前記暗号演算処理に設定されるＳ1、Ｓ2およびＳ3の値のパターンが、当該Ｎ回の前記暗号演算処理に続く、連続して実行されるＮ回の前記暗号演算処理に設定されるＳ1、Ｓ2およびＳ3の値のパターンと一致しないように設定されていてもよい。
【０００９】
また、前記暗号用ビット列変換処理におけるシフト数Ｓ1、Ｓ2およびＳ3の値の組み合わせは、複数回実行される前記暗号演算処理各々に共通の３つの値の組み合わせであってもよい。
【００１０】
次に、本発明の復号装置は、前記暗号装置で生成された暗号データを、前記暗号装置で使用した暗号鍵と共通の復号鍵を用いて平文データに復号変換する復号装置であって、
入力された第１、第２のデータに前記復号鍵を作用させて演算処理を行い、その結果を、次回に入力すべき第１、第２のデータとして出力する復号演算処理を、前記暗号装置の暗号変換手段の暗号演算処理と同じ回数実行する復号変換手段と、
前記暗号データを２つに分割し、結果を、前記復号変換手段の最初の回の前記復号演算処理に入力すべき第１、第２のデータとして出力する復号用分割手段と、
前記復号変換手段の最後の回の前記復号演算処理より出力された第１、第２のデータを結合し、結果を、平分データとして出力する復号用結合手段とを有し、
前記復号演算処理は、
入力された第２のデータに対し、前記暗号変換手段の前記暗号演算処理における前記暗号用ビット列変換処理と同じ処理を行なう復号用ビット列変換処理と、前記復号用ビット列変換処理の出力データと入力された第１のデータとの排他的論理和を計算する復号用排他的論理和演算処理と、を実行し、
前記復号用排他的論理和演算処理の出力データを前記次回に入力すべき第２のデータとし、入力された第２のデータを前記次回に入力すべき第１のデータとして出力するものであり、
前記復号用ビット列変換処理におけるシフト数Ｓ1、Ｓ2およびＳ3は、前記復号変換手段の最初の回の前記復号演算処理に設定される値が前記暗号変換手段の最後の回の前記暗号演算処理に設定されるシフト数Ｓ1、Ｓ2およびＳ3の値と各々一致し、前記復号変換手段の最後の回の前記復号演算処理に設定される値が前記暗号変換手段の最初の回の前記暗号演算処理に設定されるシフト数Ｓ1、Ｓ2およびＳ3の値と各々一致するように、前記復号変換手段にて複数回実行される前記復号演算処理各々と前記暗号変換手段にて複数回実行される前記暗号演算処理各々との間で、実行順番上、逆順に設定されていることを特徴とする。
【００１１】
【発明の実施の形態】
以下に、本発明の実施の形態を図面を用いて説明する。
【００１２】
図１は、本発明の一実施形態が適用された暗号通信システムの概略構成図である。図示するように、本実施形態の暗号通信システムは、平文（暗号変換処理が施されていないデータを指す）を暗号変換して暗号文（暗号変換処理が施されたデータを指す）を作成し、送信するデータ送信機１と、データ送信機１より送信された暗号文を復号変換して平文を得るデータ受信機２とを備える。図１において、鍵管理機関３は、暗号・復号変換に用いる各種パラメータを決定するアルゴリズム鍵（これについては後述する）をデータ送信機１およびデータ受信機２に提供するための機関である。
【００１３】
データ送信機１は、図示するように、データに所定の処理を施して平文を生成するデータ処理部１３と、データ処理部より出力された平文を暗号変換して暗号文を作成する暗号化部１１と、暗復号処理に用いる鍵を生成し、当該鍵をデータ受信機２と共有するための処理を行う鍵共有部１２と、鍵共有部３２で生成する鍵の鍵長を決定する鍵長データを保持する鍵長情報保持部１５と、データ受信機２と通信を行う通信処理部１４とを有する。
【００１４】
一方、データ受信機器２は、データ送信機１と通信を行う通信処理部３４と、通信処理部３４を介してデータ送信機１より受信した暗号文を復号変換して平文を得る復号化部３１と、復号化部３１より出力された平文に所定のデータ処理を施すデータ処理部３３と、データ送信機１の鍵共有部１２との間で暗復号処理に用いる鍵の共有を行う鍵共有部３２とを有する。
【００１５】
ここで、データ送信機１、データ受信機２としては、たとえば、デジタル放送送信機、デジタル放送受信機が考えられる。この場合、データ処理部１３および３３は、デジタル放送サービスが配信するMPEG2-TS(Transport Stream)形式のようなデジタル番組データを扱うこととなる。すなわち、データ処理部１３はデジタル番組データの圧縮・多重化などの処理などを行い、データ処理部３３はデジタル番組データの多重分離・伸長などの処理を行う。
【００１６】
さて、データ送信機１およびデータ受信機２間で暗号通信を行う場合、データ送信機１およびデータ受信機２は、先ず、データを暗復号化するために必要な、鍵と呼ばれるデータの共有を行う。鍵の共有は、データ送信機１の鍵共有部１２とデータ受信機２の鍵共有部３２とが、通信処理部１４および通信処理部３４を介して、メッセージを互いに交換し合うことで行われる。この時、データ送信機１の鍵長情報保持部１５に保持されている鍵長データを基に、共有する鍵の鍵長を決定する。
【００１７】
なお、データ送信機１およびデータ受信機２間で行う鍵の共有は、たとえば、暗号通信を行う毎や所定の通信時間毎など、定期的あるいは所定のイベント発生毎に行って、二者間で共有する鍵を変更することが望ましい。鍵が異なれば生成される暗号文が異なるので、第三者による暗号文の解読攻撃を困難にできるからである。鍵の共有方法には様々な方法が考えられるが、たとえば、デフィー・ヘルマンの鍵共有方法（たとえば岡本龍明他著、「現代暗号」、産業図書株式会社発行の特に第２００頁乃至第２０２頁に詳しく記載されている）を用いる。これを用いれば、鍵共有のために交換するメッセージを第三者が盗聴しても、それらから鍵を推定することが非常に困難となり、毎回異なった鍵を安全に共有することが可能になる。
【００１８】
鍵の共有が完了した後、データ送信機１は、データ処理部１２により送信すべきデータを処理して平文を生成し、これを暗号化部１１に入力する。暗号化部１１は、暗号変換部２０と、鍵変換部２３と、アルゴリズム鍵保持部２４とを有する。鍵変換部２３は、データ受信機２との間で共有している鍵およびその鍵長を示す鍵長データを、鍵共有部１２より受け取り、これに基づいて、変換鍵と呼ばれる複数のデータを生成する。アルゴリズム鍵保持部２４は、アルゴリズム鍵と呼ばれる複数のデータを保持している。暗号変換部２０が行う変換アルゴリズムはアルゴリズム鍵により決定される。暗号変換部２０は、鍵変換部２３で生成した変換鍵と、アルゴリズム鍵保持部２４が保持するアルゴリズム鍵とを用いて、平文を暗号変換し、暗号文を出力する。暗号化部１１より出力された暗号文は、通信処理部１４を介してデータ受信機器２に送信される。
【００１９】
一方、データ受信機２は、通信処理部３４により、データ送信機１から送信された暗号文を受信し、これを復号化部３１に入力する。復号化部３１は、復号変換部４０と、鍵変換部４３と、アルゴリズム鍵保持部４４とを有する。鍵変換部４３は、上述したデータ送信機２の暗号化部１１が備える鍵変換部２３と同様の構成であり、データ送信機１との間で共有している鍵およびその鍵長を示す鍵長データを、鍵共有部３２より受け取り、これに基づいて、データ送信機２の暗号化部１１が備える鍵変換部２３で生成される変換鍵と同じ変換鍵を生成する。アルゴリズム鍵保持部４４は、上述したデータ送信機２の暗号化部１１が備えるアルゴリズム鍵保持部２４が保持するアルゴリズム鍵と同じアルゴリズム鍵を保持している。復号変換部４０が行う変換アルゴリズムはアルゴリズム鍵により決定される。復号変換部４０は、鍵変換部４３で生成した変換鍵とアルゴリズム鍵保持部４４が保持するアルゴリズム鍵とを用いて、暗号文を復号変換し、平文を出力する。復号化部３１より出力された平文はデータ処理部３３に入力され、そこでデータ処理が行われる。
【００２０】
なお、データ送信機１およびデータ受信機２間で暗号通信を行うためには、上述したように、データ送信機１の暗号化部１１の暗号変換部２０で用いる変換アルゴリズムを決定するアルゴリズム鍵と、データ受信機２の復号化部３１の復号変換部４０で用いる変換アルゴリズムを決定するアルゴリズム鍵とが同じでなければならない。したがって、このアルゴリズム鍵を秘密情報として扱うことで、認証機能を有する暗号通信を実現することができる。すなわち、正当な機器のみが正しいアルゴリズム鍵を保持している構成にすれば、通信相手が正当な機器の場合のみ、暗号通信を行うことができる。
【００２１】
本実施形態では、正当な機器のみが正しいアルゴリズム鍵を保持する構成とするために、図１に示すように、アルゴリズム鍵を生成して集中管理する鍵管理機関３を設けている。正当な機器（ここでは、データ送信機１とデータ受信機２）は、鍵管理機関３からアルゴリズム鍵を外部に漏れないように安全に取得する。たとえば、データ送信機１およびデータ受信機２の製造時に、鍵管理機関３が管理しているアルゴリズム鍵を、アルゴリズム鍵保持部２４およびアルゴリズム鍵保部４４に予め記憶させておく。この際、データ受信機１の鍵長情報保持部１５に鍵長データも記憶させておく。
【００２２】
このようにすることで、正しいアルゴリズム鍵を保持している正当な機器が送信する暗号文は、正しいアルゴリズム鍵を保持している正当な機器しか復号化することができない。また、鍵に加えて、アルゴリズム鍵も秘密情報であるので、第三者による通信路上を流れる暗号文の解読攻撃をより困難にすることができる。
【００２３】
また、データ送信機１は、鍵長データを鍵管理機関３から取得し、これを基に、データ受信機２と共有する暗復号用の鍵を生成するので、当該鍵の鍵長を更新することが可能となる。たとえば、新規に製造するデータ送信機１に、更新した鍵長データを埋め込んでおけば、新規に製造されたデータ送信機１との暗号通信においては、鍵長が更新された鍵を用いることが可能となる。これにより、将来において暗復号用の鍵の鍵長を長くして、より安全性を向上させることが可能となる。また、製品を出荷する地域に応じて、鍵長を変更するようなことも可能となる。
【００２４】
次に、データ送信機１の暗号化部１１とデータ受信機２の復号化部３１のより詳細な構成について説明する。
【００２５】
まず、データ送信機１の暗号化部１１について説明する。
【００２６】
図２は、図１に示す暗号化部１１の概略構成図である。なお、図２に示す暗号化部１１の各構成要素は、ＡＳＩＣ（Application Specific Integrated Circuits）、ＦＰＧＡ（Field Programmable Gate Array）などの集積ロジックＩＣによりハード的に実現されるものでもよいし、あるいは、ＤＳＰ（Digital Signal Processor）などの計算機によりソフトウエア的に実現されるものでもよい。
【００２７】
鍵変換部２３は、鍵共有部１５より、４０ビットあるいは６４ビットの暗復号用の鍵と１ビットの鍵長データとを受け取り、これらを基に、３２ビットの変換鍵Ｋ１、Ｋ２を生成する。ここで、鍵長データの値は、鍵が４０ビットならば０とし、６４ビットならば１とする。
【００２８】
図３は図２に示す鍵変換部２３の概略構成図である。
【００２９】
図示するように、鍵変換部２３は、６４ビット長のレジスタ２６と、マルチプレクサ２７と、加算演算部２８とを有する。鍵共有部１２から受け取った鍵は、まずレジスタ２６に格納され、ここで、鍵長が４０ビットならばレジスタ２６の下位４０ビットに値が格納され、６４ビットならばレジスタ２６の全てに値が格納される。次に、レジスタ２６の下位３２ビットを変換鍵Ｋ１とする。次いで、鍵共有部１２から受け取った鍵長データの値が０ならばレジスタ２６の下位９ビット目から下位４０ビット目までの３２ビットがマルチプレクサ２７の出力値として選択され、当該出力値が加算演算部２８で変換鍵Ｋ１と３２ビット加算され、その結果が変換鍵Ｋ２となる。一方、鍵共有部１２から受け取った鍵長データの値が１ならばレジスタ２６の上位３２ビットがマルチプレクサ２７の出力値として選択され、当該出力値が加算演算部２８で変換鍵Ｋ１と３２ビット加算され、その結果が変換鍵Ｋ２となる。なお、ここで３２ビット加算とは、通常の加算結果を２32で割った余りを結果とする演算処理のことである。
【００３０】
図２に戻り、暗号変換部２０は、入力された２つの３２ビットデータＬi、Ｒi（０≦ｉ≦Ｎ）に、変換鍵Ｋ１、Ｋ２を作用させて、換字転置変換処理を行い、その結果を、次の段に入力すべき２つの３２ビットデータＬi+1、Ｒi+1として出力するＮ段の換字転置変換部２１1〜２１Nと、データ処理部１３より出力された６４ビットの平文を、上位３２ビットデータＬ0と下位３２ビットデータＲ0に分割して最初の段の換字転置変換部２１1に入力する分割部２５ａと、最後の段の換字転置変換部２１Nから出力された２つの３２ビットデータＬN、ＲNを、データＬNを上位ビットデータ、データＲNを下位ビットデータとして結合し、６４ビットの暗号文を得る結合部２５ｂとを有する。ここで、換字転置変換部２１n（１≦ｎ≦Ｎ）の変換アルゴリズムは、アルゴリズム鍵保持部２４に保持されているアルゴリズム鍵Ｇnにより決定される。
【００３１】
さて、上記構成の暗号変換部２０に、データ処理部１３より出力された６４ビットの平文が入力されると、分割部２５ａにより上位３２ビットデータＬ0と下位３２ビットデータＲ0に分割されて、換字転置変換部２１1に入力される。そこで、変換鍵Ｋ１、Ｋ２を用いて、第１回目の暗号変換が行われる。続いて、換字転置変換部２１1での暗号変換の結果得られた３２ビットデータＬ1と３２ビットデータＲ1が次の段の換字転置変換部２１2に入力されると、そこで、変換鍵Ｋ１、Ｋ２を用いて、第２回目の暗号変換が行われる。換字転置変換部２１2での暗号変換の結果得られた３２ビットデータＬ2と３２ビットデータＲ2は、次の段の換字転置変換部２１3に入力され、そこで同様の処理がなされる。以上のような暗号変換をＮ回繰り返し、最終の段の換字転置変換部２１Nでの暗号変換の結果得られた３２ビットデータＬNと３２ビットデータＲNが結合部２５ｂで結合されることにより、暗号文が得られる。以降、暗号変換の総繰り返し数Ｎをラウンド数と呼ぶものとする。
【００３２】
図４は、図２に示す換字転置変換部２１n（１≦ｎ≦Ｎ）の概略構成図である。
【００３３】
図示するように、換字転置変換部２１nは、ビット列変換部６１と、排他的論理和演算部６２とからなり、入力された３２ビットデータＬn-1と３２ビットデータＲn-1を、変換鍵Ｋ１とＫ２を用いて、３２ビットデータＬnと３２ビットデータＲnに変換する。
【００３４】
換字転置変換部２１nは、まず、入力された３２ビットデータＬn-1をビット列変換部６１に入力する。ビット列変換部６１は、アルゴリズム鍵Ｇnにより決定される変換アルゴリズムにしたがい、変換鍵Ｋ１とＫ２を用いて、入力された３２ビットデータＬn-1にビット列変換処理を加える。ビット列変換処理は、ビット列変換部６１の入力値をＵとし、出力値をＺとすれば、数式で以下のように表すことができる。
【００３５】
Z=FGn(K1,K2,U)
ここで、関数ＦＧn(Ｘ)は、アルゴリズム鍵Ｇnにより決定されるビット列変換部６１の変換を表す。また、アルゴリズム鍵Ｇnは、以下に示すデータからなる。
【００３６】
Gn=(A1n,A2n,A3n,S1n,S2n,S3n)
ここで、Ａ1n、Ａ2n、Ａ3nは、加算演算に用いる加算値であり３２ビットデータである。Ｓ1n、Ｓ2n、Ｓ3nは、左巡回シフト演算に用いるシフト値であり、いずれも１〜３１の値をとる。
【００３７】
図５は、図４に示すビット列変換部６１の概略構成図である。
【００３８】
図示するように、ビット列変換部６１は、５個のビット列変換器８１〜８５からなる。
【００３９】
ビット列変換器８１は排他的論理和部９４を備え、ビット列変換部６１に入力された３２ビットデータＬn-1と変換鍵Ｋ１との排他的論理和を計算する。図示するように、ビット列変換器８１の入力（すなわち、３２ビットデータＬn-1）をＵとし、出力値をＶとすれば、ビット列変換器８１の変換は、以下のように表せる。
【００４０】
V=K1(+)U
ここで、表記X(+)Yは、XとYとの排他的論理和演算を示す。
【００４１】
ビット列変換器８２は、巡回シフト演算部９１と加算演算部９５を備える。巡回シフト演算部９１は、ビット列変換器８１よりの出力を、アルゴリズム鍵Ｇnのシフト値Ｓ1n(１≦Ｓ1n≦３１）だけ左に巡回シフトする。加算演算部９５は、ビット列変換器８１よりの出力と、巡回シフト演算部９１よりの出力と、アルゴリズム鍵Ｇnの加算値Ａ1nとの３２ビット加算演算を行う。図示するように、ビット列変換器８２の入力（すなわち、ビット列変換器８１の出力）をＶとし、出力値をＷとすれば、ビット列変換器８２の変換は、以下のように表せる。
【００４２】
W=V+(V<<<S1n)+A1n
ここで、表記X<<<Yは、Xを左にYビットだけ巡回シフトすることで得られるデータを表す。
【００４３】
ビット列変換器８３は、巡回シフト演算部９２と加算演算部９６を備える。巡回シフト演算部９２は、ビット列変換器８２よりの出力を、アルゴリズム鍵Ｇnのシフト値Ｓ2n(１≦Ｓ2n≦３１）だけ左に巡回シフトする。加算演算部９６は、ビット列変換器８２よりの出力と、巡回シフト演算部９２よりの出力と、アルゴリズム鍵Ｇnの加算値Ａ2nとの３２ビット加算演算を行う。図示するように、ビット列変換器８３の入力（すなわち、ビット列変換器８２の出力）をＷとし、出力値をＸとすれば、ビット列変換器８２の変換は、以下のように表せる。
【００４４】
X=W+(W<<<S2n)+A2n
ビット列変換器８４は排他的論理和部９７を備え、ビット列変換器８３よりの出力と変換鍵Ｋ２との排他的論理和を計算する。図示するように、ビット列変換器８４の入力（すなわち、ビット列変換器８３の出力）をＸとし、出力値をＹとすれば、ビット列変換器８４の変換は、以下のように表せる。
【００４５】
Y=K2(+)X
ビット列変換器８５は、巡回シフト演算部９３と加算演算部９８を備える。巡回シフト演算部９３は、ビット列変換器８４よりの出力を、アルゴリズム鍵Ｇnのシフト値Ｓ3n(１≦Ｓ3n≦３１）だけ左に巡回シフトする。加算演算部９８は、ビット列変換器８４よりの出力と、巡回シフト演算部９３よりの出力と、アルゴリズム鍵Ｇnの加算値Ａ3nとの３２ビット加算演算を行う。図示するように、ビット列変換器８５の入力（すなわち、ビット列変換器８４の出力）をＹとし、出力値をＺとすれば、ビット列変換器８２の変換は、以下のように表せる。
【００４６】
Z=Y+(Y<<<S3n)+A3n
このように、ビット列変換部６１は、５つのビット列変換器８１〜８５をデータに作用させていくことで、ビット列変換を行う。なお、５つのビット列変換器８１〜８５のデータへの作用順序は、図５に示すものに限定されるものではない。図５では、ビット列変換器８１→ビット列変換器８２→ビット列変換器８３→ビット列変換器８４→ビット列変換器８５の順序で、データへ作用させているが、たとえば、ビット列変換器８４→ビット列変換器８３→ビット列変換器８１→ビット列変換器８５→ビット列変換器８２の順序で、データへ作用させるようにしてもよい。
【００４７】
図４に戻り、排他的論理和演算部６２は、ビット列変換器８３よりの出力と、換字転置変換部２１nに入力された３２ビットデータＲn-1との排他的論理和を計算する。そして、その結果を、次の段の換字転置変換部２１n+1に入力すべき３２ビットデータＬnとして出力する。一方、換字転置変換部２１nに入力された３２ビットデータＬn-1を、次の段の換字転置変換部２１n+1に入力すべき３２ビットデータＲnとして出力する。
【００４８】
換字転置変換部２１nでの変換をまとめると、以下のように表せる。
【００４９】
Ln=Rn-1(+)FGn(K1,K2,Ln-1)
Rn=Ln-1
ここで、換字転置変換部２１n（１≦ｎ≦Ｎ、Ｎはラウンド数）に設定するアルゴリズム鍵Ｇnについて説明する。
【００５０】
先に図５を用いて説明したように、アルゴリズム鍵Ｇnは、加算演算部９５、９６、９８での加算演算に用いる加算値Ａ1n、Ａ2n、Ａ3n（３２ビットデータ）と、巡回シフト演算部９１、９２、９３での左巡回シフト演算に用いるシフト値Ｓ1n、Ｓ2n、Ｓ3n（１≦Ｓ1n、Ｓ2n、Ｓ3n≦３１）からなる。このうち、シフト値Ｓ1n、Ｓ2n、Ｓ3nについて、本実施形態では、以下の条件を満たすように設定している。
【００５１】
（１）シフト値Ｓ1n、Ｓ2n、Ｓ3nは、全てが奇数、あるいはＳ1nおよびＳ2nのいずれか一方が２で残り２つが奇数の値となるように設定する。また、連続する２段の換字転置変換部２１i、２１i+1（１≦ｉ≦Ｎ−１）において、対応するシフト値が一致しないように設定する。すなわち、Ｓ1i≠Ｓ1i+1、Ｓ2i≠Ｓ2i+1、Ｓ3i≠Ｓ3i+1となるように設定する。
【００５２】
（２）連続するＬ（２≦Ｌ）段の換字転置変換部２１i〜２１i+L-1に設定されるシフト値のパターンが、次の連続するＬ段の換字転置変換部２１i+L〜２１i+2L-1（１≦ｉ、ｉ＋２Ｌ−１≦Ｎ）に設定されるシフト値のパターンと一致しないように設定する。たとえば、連続する２段の換字転置変換部２１i、２１i+1に設定するシフト値のパターンをＢＣとした場合、次の連続する２段の換字転置変換部２１i+2、２１i+3に設定するシフト値のパターンがＢＣとならないように、すなわち、Ｓ1i≠Ｓ1i+2、Ｓ1i+1≠Ｓ1i+3、Ｓ2i≠Ｓ2i+2、Ｓ2i+1≠Ｓ2i+3、Ｓ3i≠Ｓ3i+2、Ｓ3i+1≠Ｓ3i+3となるように設定する。
【００５３】
上記（１）に示す条件は、本発明者等が行った差分解読法および線形解読法による暗号解読に対する強度評価より見出したものである。
【００５４】
ここで、差分解読法とは、１９９０年にＢｉｈａｍとＳｈａｍｉｒによって提案された解読法である((E.Biham, A.Shamir, Differential Cryptanalysis of DES-like Cryptosystems (Extended Abstract), Advances in Cryptology,  CRYPTO'90 proceedings, Lecture Notes in Computer Science Vol. 537, Springer-Verlag, 1990.), (E.Biham, A.Shamir, Differential Cryptanalysis of the Full 16-round DES, Advances in Cryptology,  CRYPTO'92 proceedings, Lecture Notes in Computer Science Vol. 740, Springer-Verlag, 1992.)）。ある特定の差分を有する平文・暗号文のペアが生じる確率が高くなる場合に、それらの平文・暗号文のペアを利用して候補となる鍵を絞り込む方法である。たとえば、あるＦ関数に対して、ある一定の入力データの差分ΔＸに対して高い確率で生成される出力データの差分ΔＹを予め調べておき、次に、鍵Ｋを固定したＦ関数に対し、ΔＸの差分を有する入力データに対して生成される出力データの差分がΔＹに偏っていないかどうか調べる。固定した鍵Ｋが真の値であれば出力データは高い確率でΔＹであるはずなので、差分がΔＹに偏っている場合、鍵Ｋが真の鍵である確率が高くなる。この原理を用いて鍵の候補を絞り込む。
【００５５】
差分解読法に対する厳密な安全性評価尺度として、平均差分確率が提案されている(X.Lai, L.Massey and S.Murphy, Markov Cipher and Differential Cryptanalysis,  EUROCRYPTO'91 proceedings, Lecture Notes in Computer Science Vol. 547, Springer-Verlag, 1991.）。非線型関数の入出力データにおいて各差分のペアが発生する確率をすべての鍵について計算し、そのなかで最も発生確率の高くなる差分のペアを見つける。このような差分ペアの発生する確率が平均差分確率である。平均差分確率が小さいほど、差分解読法に対する安全性が高くなる。平均差分確率は以下のように定義される。
【００５６】
【数１】
0003689595.tif 000002
【００５７】
差分解読法に対する安全性を評価する場合、データランダム化部全体の平均差分確率を計算することは困難である。そこで、厳密な意味で安全性を保証するものではないが、差分解読法に対する安全性の必要条件として、最大差分特性確率が利用されている。例えばデータランダム化部の一部となっている非線型関数の平均差分確率を計算する。次に各非線型関数の平均差分確率がすべて独立であると仮定したうえで、これらの平均差分確率を用いてデータランダム化部全体の確率を計算する。このような条件付き確率が最大差分特性確率となる。実際の計算方法は、データランダム化部の構造に依存する。なお、差分解読に必要な平文・暗号文のペアの数は、平均差分確率の逆数として求めることができる。
【００５８】
一方、線形解読法とは、１９９３年に松井によって提案された解読法である((M.Matsui, Linear Cryptanalysis Method for DES Cipher, Advances in Cryptology,  EUROCRYPTO'93 proceedings, Lecture Notes in Computer Science Vol. 765, Springer-Verlag, 1993.), (M.Matsui, The First Experimental Cryptanalysis of the Data Encryption Standard, Advances in Cryptology,  CRYPTO'94 proceedings, Lecture Note in Computer Science Vol. 839, Springer-Verlag, 1994.)。平文と暗号文のｂｉｔ値の間に線形関係を持つ確率が１／２から離れている場合、その線形関係を利用して候補となる鍵を推定し解読を行う方法である。実際に解読を行う場合には、任意の平文・暗号文のペアを多数入手する必要がある。
【００５９】
線形解読に対する安全性の尺度として、平均線形確率が提案されている(K.Nyberg, Linear Approximation of Block Ciphers, Advances in Cryptology, - CRYPTO'94, Lecture Notes in Computer Science Vol.950, Springer-Verlag, 1995.)。非線型関数の入出力データのｂｉｔ間で線形関係を持つ確率をすべての鍵について計算し、その中で最も発生確率が高くなる線形関係を見つける。このような線形関係が生じる確率が平均線形確率である。平均線形確率が小さいほど、線形解読法に対する安全性は高くなる。平均線形確率は以下のように定義される。
【００６０】
【数２】
0003689595.tif 000003
【００６１】
線形解読法に対する安全性を評価する場合、差分解読法の場合と同様にデータランダム化部全体の平均線形確率を評価することは困難である。そこで差分解読法の場合と同様に最大線形特性確率という指標を用いる。たとえば、まずデータランダム化部の一部になっている非線型関数の平均線形確率を計算する。次に、各非線型関数が独立であると仮定した上で、これらの平均線形確率を基に、データランダム化部全体の確率を計算する。実際の計算方法はデータランダム化部の構造に依存する。なお、線形解読法による解読で実際に必要となる平文・暗号文のペアの数は、線形確率の逆数として求まる。
【００６２】
本発明者等は、上記（１）の条件を満たすように、各換字転置変換部２１nのアルゴリズム鍵Ｇnのシフト値を設定することで、換字転置変換部の段数すなわちラウンド数Ｎを増やさなくても、差分解読法および線形解読法による攻撃に対する強度を向上させることが可能になることを見出した。その根拠については後述する。
【００６３】
また、上記（２）に示す条件は、スライド攻撃に対抗するためのものである。スライド攻撃とは、段数（ラウンド数）に依存しない選択平文型攻撃方法のことである。スライド攻撃による暗号解読については、ＢｉｒｙｕｋｏｖとＷａｇｎｅｒによりＦＳＥ９９（Fast Software Encription work shop 1999）にて発表された論文「Slide Attacks」に詳しく記載されている。
【００６４】
さらに、本実施形態では、以下の条件を満たすようにアルゴリズム鍵Ｇnを設定している。
【００６５】
いま、鍵変換部２３で生成される変換鍵Ｋ１、Ｋ２を固定とし、全ての換字転置変換部２１1〜２１Nから連続する２以上の換字転置変換部２１i〜２１i+j（１≦ｉ、ｉ＋ｊ≦Ｎ）を任意に選んで、同一のデータを入力値として変換する場合を考える。この場合、変換結果は、選択した換字転置変換部２１i〜２１i+jで用いるアルゴリズム鍵Ｇi〜Ｇi+jにより決定される。本実施形態では、上述した全ての組み合わせにおいて、異なった変換結果が得られるようなアルゴリズム鍵のみを用いるものとする。このようにすることで、換字転置変換部を繰り返し用いた暗号変換に周期性が現れないようにすることができ、これにより、暗号の強度を向上させることができる。
【００６６】
なお、暗号化部１１がＡＳＩＣやＦＰＧＡなどの集積ロジックＩＣによりハード的に実現される場合、シフト値Ｓ1n、Ｓ2n、Ｓ3nの組み合わせとして、全てのアルゴリズム鍵Ｇ1〜ＧNに共通の３つの値の組み合わせを用い、加算値Ａ1n、Ａ2n、Ａ3nの組み合わせとして、全てのアルゴリズム鍵Ｇ1〜ＧNに共通の３つの値の組み合わせを用いるようにしてもよい。このようにすることで、ハード構成が複雑になるのを防ぐことができる。
【００６７】
次に、データ受信機２の復号化部３１について説明する。
【００６８】
図６は、図１に示す復号化部３１の概略構成図である。この復号化部３１は、上述した図２の暗号化部１１を用いて暗号変換された暗号文を、元の平文に復号するものである。なお、図６に示す復号化部３１の各構成要素は、図２に示す暗号化部１１と同様、ＡＳＩＣやＦＰＧＡなどの集積ロジックＩＣによりハード的に実現されるものでもよいし、あるいは、ＤＳＰなどの計算機によりソフトウエア的に実現されるものでもよい。
【００６９】
鍵変換部４３は、図２に示す暗号化部１１の鍵変換部２３と同様の処理を行う。すなわち、鍵共有部３２より、４０ビットあるいは６４ビットの暗復号用の鍵と１ビットの鍵長データとを受け取り、これらを基に、３２ビットの変換鍵Ｋ１、Ｋ２を生成する。ここで、鍵長データの値は、鍵が４０ビットならば０とし、６４ビットならば１とする。
【００７０】
復号変換部４０は、入力された２つの３２ビットデータＬi、Ｒi（０≦ｉ≦Ｎ）に、変換鍵Ｋ１、Ｋ２を作用させて、換字転置変換処理を行い、その結果を、次の段に入力すべき２つの３２ビットデータＬi-1、Ｒi-1として出力するＮ段の換字転置変換部４１1〜４１Nと、通信処理部３４を介してデータ送信機１より受け取った６４ビットの暗号文を、上位３２ビットデータＬNと下位３２ビットデータＲNに分割して、最初の段の換字転置変換部４１Nに入力する分割部４５ａと、最後の段の換字転置変換部４１1から出力された２つの３２ビットデータＬ0、Ｒ0を、データＬ0を上位ビットデータ、データＲ0を下位ビットデータとして結合し、６４ビットの平文を得る結合部４５ｂとを有する。ここで、換字転置変換部４１n（１≦ｎ≦Ｎ）の変換アルゴリズムは、アルゴリズム鍵保持部４４に保持されているアルゴリズム鍵Ｇnにより決定される。アルゴリズム鍵保持部４４は、図２に示す暗号化部１１のアルゴリズム鍵保持部２４が保持するアルゴリズム鍵Ｇ1〜ＧNと同じアルゴリズム鍵を保持している。
【００７１】
さて、上記構成の復号変換部４０に、通信処理部３４を介してデータ送信機１より受け取った６４ビットの暗号文が入力されると、分割部４５ａにより上位３２ビットデータＬN（図２に示す最終段の換字転置変換部２１Nより出力される３２ビットデータＬNと一致）と下位３２ビットデータＲN（図２に示す最終段の換字転置変換部２１Nより出力される３２ビットデータＲNと一致）に分割されて、換字転置変換部４１Nに入力される。そこで、変換鍵Ｋ１、Ｋ２を用いて、第１回目の暗号変換が行われる。続いて、換字転置変換部４１Nでの暗号変換の結果得られた３２ビットデータＬN-1と３２ビットデータＲN-1が次の段の換字転置変換部４１N-1に入力されると、そこで、変換鍵Ｋ１、Ｋ２を用いて、第２回目の暗号変換が行われる。換字転置変換部４１N-1での暗号変換の結果得られた３２ビットデータＬN-2と３２ビットデータＲN-2は、次の段の換字転置変換部４１3に入力され、そこで同様の処理がなされる。以上のような暗号変換をＮ回繰り返し、最終の段の換字転置変換部４１1での暗号変換の結果得られた３２ビットデータＬ0と３２ビットデータＲ0が結合部４５ｂで結合されることにより、元の平文が得られる。以降、復号変換の総繰り返し数Ｎを、暗号変換の場合と同様、ラウンド数と呼ぶものとする。
【００７２】
図７は、図６に示す換字転置変換部４１n（１≦ｎ≦Ｎ）の概略構成図である。ここで、図４に示す暗号化部１１の換字転置変換部２１nと同じ機能を有するものには同じ符号を付している。
【００７３】
図示するように、換字転置変換部４１nは、ビット列変換部６１と、排他的論理和演算部６２とからなり、入力された３２ビットデータＬnと３２ビットデータＲnを、変換鍵Ｋ１とＫ２を用いて、３２ビットデータＬn-1と３２ビットデータＲn-1に変換する。
【００７４】
換字転置変換部４１nは、まず、入力された３２ビットデータＬn-1をビット列変換部６１に入力する。ビット列変換部６１は、アルゴリズム鍵Ｇnにより決定される変換アルゴリズムにしたがい、変換鍵Ｋ１とＫ２を用いて、入力された３２ビットデータＲnにビット列変換処理を加える。
【００７５】
排他的論理和演算部６２は、ビット列変換部６１よりの出力と、換字転置変換部４１nに入力された３２ビットデータＬnとの排他的論理和を計算する。そして、その結果を、次の段の換字転置変換部４１n-1に入力すべき３２ビットデータＲn-1として出力する。一方、換字転置変換部４１nに入力された３２ビットデータＲnを、次の段の換字転置変換部４１n-1に入力すべき３２ビットデータＬn-1として出力する。
【００７６】
換字転置変換部４１nでの変換をまとめると、以下のように表せる。
【００７７】
Rn-1=Ln(+)FGn(K1,K2,Rn)
Ln-1=Rn
この変換は、先に図４、５を用いて説明した、暗号変換部２０の換字転置変換部４１nにおける変換の逆変換に相当する。
【００７８】
図６に示すように、アルゴリズム鍵Ｇn（１≦ｎ≦Ｎ）は、最初の段の換字転置変換部４１Nに設定されるアルゴリズム鍵ＧNが図２に示す暗号変換部２０の最後の段の換字転置変換部２１Nに設定されるアルゴリズム鍵ＧNと一致し、最後の段の換字転置変換部４１1に設定されるアルゴリズム鍵Ｇ1が図２に示す暗号変換部２０の最初の段の換字転置変換部２１1に設定されるアルゴリズム鍵Ｇ1と一致するように、復号変換部４０の換字転置変換部４１1〜４１Nと暗号変換部２０の換字転置変換部２１1〜２１Nとの間で、段の順番上逆順に設定されている。
【００７９】
したがって、復号化部３１が暗号化部１１との間で同じ暗復号用の鍵を共有すれば、暗号化部１１が暗号化したデータを復号化することができる。
【００８０】
以上、本発明の一実施形態について説明した。
【００８１】
本実施形態では、上述したように、データ送信機１が送信する暗号文は、当該データ送信機１が用いる暗復号用の鍵およびアルゴリズム鍵と同じ暗復号用の鍵およびアルゴリズム鍵を保持するデータ受信機２しか復号化することができない。そして、暗復号用の鍵に加えて、アルゴリズム鍵も秘密情報としているので、第三者による通信路上を流れる暗号文の解読攻撃をより困難にすることができる。
【００８２】
また、本実施形態では、上述したように、アルゴリズム鍵Ｇn（１≦ｎ≦Ｎ）のシフト値Ｓ1n、Ｓ2n、Ｓ3nとして、全てが奇数、あるいはＳ1nおよびＳ2nのいずれか一方が２で残り２つが奇数の値となるように設定している。このようにすることで、換字転置変換部の段数すなわちラウンド数Ｎを増やさなくても、差分解読法および線形解読法による攻撃に対する強度を向上させることができる。
【００８３】
本発明者等は、差分解読法および線形解読法による暗号解読に対する強度評価実験を以下の要領で行った。
【００８４】
１．差分解読法による暗号解読に対する強度評価
（１）準備
図５に示すビット列変換部６１において、変換鍵Ｋ１＝Ｋ２＝０、加算値Ａ1n＝１、Ａ2n＝Ａ3n＝０とした場合に得られる変換を、入力差分がΔＸ、出力差分がΔＹで与えられるＦ関数とし、当該Ｆ関数の差分確率ｄｐ（ΔＸ→ΔＹ）を以下のように定義する。
【００８５】
dp(ΔX→ΔY)=prob{F(U(+)ΔX)(+)F(U)=ΔY}
ここで、ｐｒｏｂ｛Ａ＝Ｂ｝はＡ＝Ｂとなる確率（Ａ＝Ｂとなる出現回数／サンプル数）を意味する。
【００８６】
差分確率を求めるための評価パターンとして、図８（ａ）に示す評価パターンを用意した。ここで、図８（ａ）は差分２段繰り返し型の評価パターンであり、１段目の関数Ｆ1は入力差分ΔＸ＝０で出力差分ΔＹ＝０、２段目の関数Ｆ2は入力差分ΔＸ＝Δａで出力差分ΔＹ＝０である。この評価パターンを用いたのは、差分２段繰り返し型の評価パターンにおける２段目の関数Ｆ2の差分確率
dp(Δa→0)=prob{F2(U(+)Δa)(+)F(U)=0}
が最も大きくなるからである。
【００８７】
（２）関数Ｆの入力Ｕのビット幅が１６ビット以下の場合の評価
関数Ｆの入力Ｕのビット幅（すなわち、関数Ｆで処理されるデータのビット幅）を２e（ｅ＝２、３、４）とし、シフト値Ｓ1n、Ｓ2n、Ｓ3nの全ての組み合わせ（但し、入力Ｕのビット幅が２eであるので、シフト値Ｓ1n、Ｓ2n、Ｓ3nは１〜２eの範囲の値をとる）に対して、差分２段繰り返し型評価パターンの２段目の関数Ｆ2の差分確率
dp(Δa→0)=prob{F2(U(+)Δa)(+)F(U)=0}
を評価した。関数Ｆの入力Ｕのビット幅を２4＝１６としたときの評価結果を図９、１０に示す。図９では、シフト値Ｓ1n、Ｓ2n、Ｓ3n各々と入力Ｕのビット幅１６との最大公約数をそれぞれａ、ｂ、ｃとすると、ａ、ｂ、ｃの最大値ｍａｘ（ａ，ｂ，ｃ）は８、４、２、１のいずれかの値をとることに着目し、ｍａｘ（ａ，ｂ，ｃ）の値の大きい順に示した。また、ｍａｘ（ａ，ｂ，ｃ）各々において、出力差分０を導く入力差分のうち、最大差分確率を与えるシフト値（Ｓ1n、Ｓ2n、Ｓ3n）を、当該最大差分確率の大きい順に示した。図１０は、図９に示すｍａｘ（ａ，ｂ，ｃ）＝２の場合の結果のうち、シフト値（Ｓ1n、Ｓ2n、Ｓ3n）が（２、奇数、奇数）あるいは（奇数、２、奇数）の場合の結果を抜き出したものである。
【００８８】
図９に示すように、ｍａｘ（ａ，ｂ，ｃ）が小さい程、近似の確率が低下する。したがって、ｍａｘ（ａ，ｂ，ｃ）が１のとき、つまり、シフト値Ｓ1n、Ｓ2n、Ｓ3n各々の、入力Ｕのビット幅との最大公約数が１のとき、いいかえれば、シフト値Ｓ1n、Ｓ2n、Ｓ3nがすべて奇数のとき、最良差分確率が２-4.75〜２-6.68程度と最も低くなり、差分解読法による攻撃に対する耐性を最も高くすることができることがわかった。また、ｍａｘ（ａ，ｂ，ｃ）が２の場合でも、図１０に示すように、シフト値（Ｓ1n、Ｓ2n、Ｓ3n）が（２、奇数、奇数）あるいは（奇数、２、奇数）の場合は、最良差分確率が２-3.71〜２-4.79程度と、ｍａｘ（ａ，ｂ，ｃ）が２の場合におけるその他の場合に比べて低くなり、差分解読法による攻撃に対する耐性を高くすることができることがわかった。なお、ここでは、入力Ｕのビット幅が１６の場合についてのみ結果を表示しているが、入力Ｕのビット幅が４、８の場合についても、シフト値（Ｓ1n、Ｓ2n、Ｓ3n）として、任意の値（但し、１≦Ｓ1n、Ｓ2n、Ｓ3n＜入力Ｕのビット幅）をピックアップし、評価した結果も、同様の傾向を示した。したがって、本発明者等は、上記の実施形態で用いる換字転置変換部２１n、４１nのビット列変換部６１に設定するアルゴリズム鍵Ｇnのシフト値（Ｓ1n、Ｓ2n、Ｓ3n）として、（奇数、奇数、奇数）、（２、奇数、奇数）あるいは（奇数、２、奇数）となるように設定することで、差分解読法による攻撃に対する強度を向上させることができることを見出した。
【００８９】
（３）関数Ｆの入力Ｕのビット幅が３２ビットの場合の評価
上記（２）での結果を踏まえ、上記の実施形態で用いる換字転置変換部２１n、４１nのビット列変換部６１に設定するアルゴリズム鍵Ｇnのシフト値（Ｓ1n、Ｓ2n、Ｓ3n）として、（２、奇数、奇数）あるいは（奇数、２、奇数）となるように設定し、入力Ｕのビット幅を２5＝３２とした場合における差分２段繰り返し型評価パターンの２段目の関数Ｆ2の差分確率
dp(Δa→0)=prob{F2(U(+)Δa)(+)F(U)=0}
を評価した。結果を図１１に示す。この結果からわかるように、入力Ｕのビット幅３２の場合、シフト値（Ｓ1n、Ｓ2n、Ｓ3n）が（２、奇数、奇数）あるいは（奇数、２、奇数）であれば、最良差分確率は２-7.69〜２-8.70程度であった。
【００９０】
２．線形解読法による暗号解読に対する強度評価
（１）準備
図５に示すビット列変換部６１において、変換鍵Ｋ１＝Ｋ２＝０、加算値Ａ1n＝１、Ａ2n＝Ａ3n＝０とした場合に得られる変換を、入力マスクがΓＸ、出力マスクがΓＹで与えられるＦ関数とし、当該Ｆ関数の線形近似確率ｌｐ（ΓＸ→ΓＹ）を以下のように定義する。
【００９１】
lp(ΓX→ΓY)=|2prob{F(U)・ΓY=X・ΓX}−1|2
ここで、Ａ・Ｂは、Ａについて、Ｂのビット列において値「１」のビットのビット位置と同じビット位置のビットの値が「１」であるビットの数を調べ、そのビット数のｍｏｄ２をとる意味である。
【００９２】
線形近似確率を求めるための評価パターンとして、図８（ｂ）に示す評価パターンを用意した。ここで図８（ｂ）は線形２段繰り返し型の評価パターンであり、１段目の関数Ｆ1は入力マスクΓＸ＝０で出力マスクΓＹ＝０、２段目の関数Ｆ2は入力マスクΓＸ＝０で出力マスクΓＹ＝Γａである。この評価パターンを用いたのは、線形２段繰り返し型の評価パターンにおける２段目の関数Ｆ2の線形近似確率
lp(0→Γa)=|2prob{F2(U)・Γa=U・0}−1|2
が最も大きくなるからである。
【００９３】
（２）関数Ｆの入力Ｕのビット幅が１６ビット以下の場合の評価
関数Ｆの入力Ｕのビット幅（すなわち、関数Ｆで処理されるデータのビット幅）を２e（ｅ＝２、３、４）とし、シフト値Ｓ1n、Ｓ2n、Ｓ3nの全ての組み合わせ（但し、入力Ｕのビット幅が２eであるので、シフト値Ｓ1n、Ｓ2n、Ｓ3nは１〜２e-1の範囲の値をとる）に対して、線形２段繰り返し型の評価パターンの２段目の関数Ｆ2の線形近似確率
lp(0→Γa)=|2prob{F2(U)・Γa=U・0}−1|2
を評価した。図１２、１３に、関数Ｆの入力Ｕのビット幅を２4＝１６としたときの評価結果を示す。図１２では、図９と同様、シフト値Ｓ1n、Ｓ2n、Ｓ3n各々について、入力Ｕのビット幅１６との最大公約数をそれぞれａ、ｂ、ｃとすると、ａ、ｂ、ｃの最大値ｍａｘ（ａ，ｂ，ｃ）が８、４、２、１のいずれかの値をとることに着目し、ｍａｘ（ａ，ｂ，ｃ）の値の大きい順に示した。また、ｍａｘ（ａ，ｂ，ｃ）各々において、入力マスク０となる出力マスクのうち最大線形近似確率を与えるシフト値（Ｓ1n、Ｓ2n、Ｓ3n）を、当該最大線形近似確率の大きい順に示した。図１２は、図１１に示すｍａｘ（ａ，ｂ，ｃ）＝２の場合の結果のうち、シフト値（Ｓ1n、Ｓ2n、Ｓ3n）が（２、奇数、奇数）あるいは（奇数、２、奇数）の場合の結果を抜き出したものである。
【００９４】
図１２に示すように、ｍａｘ（ａ，ｂ，ｃ）が小さい程、近似の確率が低下する。したがって、ｍａｘ（ａ，ｂ，ｃ）が１のとき、つまり、シフト値Ｓ1n、Ｓ2n、Ｓ3n各々の、入力Ｕのビット幅との最大公約数が１のとき、いいかえれば、シフト値Ｓ1n、Ｓ2n、Ｓ3nがすべて奇数のとき、最良線形近似確率が２-5.24〜２-7.18程度と最も低くなり、線形解読法による攻撃に対する耐性を最も高くすることができることがわかった。また、ｍａｘ（ａ，ｂ，ｃ）が２の場合でも、図１３に示すように、シフト値（Ｓ1n、Ｓ2n、Ｓ3n）が（２、奇数、奇数）あるいは（奇数、２、奇数）の場合は、最良線形近似確率が２-3.44〜２-5.58程度と、ｍａｘ（ａ，ｂ，ｃ）が２の場合におけるその他の場合に比べて低くなり、線形解読法による攻撃に対する耐性を高くすることができることがわかった。なお、ここでは、入力Ｕのビット幅が１６の場合についてのみ結果を表示しているが、入力Ｕのビット幅が４、８の場合についても、シフト値（Ｓ1n、Ｓ2n、Ｓ3n）として、任意の値（但し、１≦Ｓ1n、Ｓ2n、Ｓ3n＜入力Ｕのビット幅）をピックアップし、評価した結果も、同様の傾向を示した。したがって、本発明者等は、上記の実施形態で用いる換字転置変換部２１n、４１nのビット列変換部６１に設定するアルゴリズム鍵Ｇnのシフト値（Ｓ1n、Ｓ2n、Ｓ3n）として、（奇数、奇数、奇数）、（２、奇数、奇数）あるいは（奇数、２、奇数）となるように設定することで、線形解読法による攻撃に対する強度を、差分解読法による攻撃に対する場合と同様、向上させることができることを見出した。
【００９５】
（３）関数Ｆの入力Ｕのビット幅が３２ビットの場合の評価
上記（２）での結果を踏まえ、上記の実施形態で用いる換字転置変換部２１n、４１nのビット列変換部６１に設定するアルゴリズム鍵Ｇnのシフト値（Ｓ1n、Ｓ2n、Ｓ3n）として、（２、奇数、奇数）あるいは（奇数、２、奇数）となるように設定し、入力Ｕのビット幅を２5＝３２とした場合における線形２段繰り返し型評価パターンの２段目の関数Ｆ2の差分確率
lp(0→Γa)=|2prob{F2(U)・Γa=U・0}−1|2
を評価した。結果を図１４に示す。この結果からわかるように、入力Ｕのビット幅３２の場合、シフト値（Ｓ1n、Ｓ2n、Ｓ3n）が（２、奇数、奇数）あるいは（奇数、２、奇数）であれば、最良線形近似確率は２-7.36〜２-10.78程度であった。
【００９６】
３．総合評価
本発明者等は、上記１および２での結果を踏まえ、上記の実施形態で用いる換字転置変換部２１n、４１nのビット列変換部６１に設定するアルゴリズム鍵Ｇnのシフト値（Ｓ1n、Ｓ2n、Ｓ3n）として、（２、奇数、奇数）あるいは（奇数、２、奇数）となるように設定し、図８に示す差分および線形近似確率を求めるための評価パターンの段数を１８段および２１段に増加させた場合における確率を推定した。この段数（１８段、２１段）は、実際の暗復号処理に用いられるラウンド数を考慮して決定した値である。推定は以下の前提に基づいて行っている。
【００９７】
▲１▼差分解読法：評価パターンの段数が２ｒの場合、この最良差分確率は、図８（ａ）に示す差分２段繰り返し型の最良差分確率dp(Δa→0)に対し、dp(Δa→0)rで与えられる。
【００９８】
▲２▼線形解読法：評価パターンの段数が２ｒの場合、この最良差分確率は、図８（ｂ）に示す線形２段繰り返し型の最良線形近似確率lp(0→Γa)に対し、lp(0→Γa)rで与えられる。
【００９９】
結果を図１５、１６に示す。これらの結果からわかるように、上記の実施形態で用いる換字転置変換部２１n、４１nのビット列変換部６１に設定するアルゴリズム鍵Ｇnのシフト値（Ｓ1n、Ｓ2n、Ｓ3n）として、（２、奇数、奇数）あるいは（奇数、２、奇数）となるように設定した場合、入力Ｕのビット幅が２5＝３２であれば、確率は２-70前後となる。したがって、差分解読法および線形解読法による攻撃に対して、計算量的に十分な強度を持った暗号アルゴリズムを構築することができる。
【０１００】
なお、上記の実施形態では、暗号変換部２０および復号変換部４０として、それぞれ図２、６に示すように、ラウンド数Ｎ分の換字転置変換部２１1〜２１N、４１1〜４１Nを有するものについて説明した。しかしながら、本発明はこれに限定されるものではなく、１つの換字転置変換部に、換字転置変換処理を、アルゴリズム鍵を変えながら、ラウンド数Ｎ回実行させるように構成してもよい。
【０１０１】
また、上記の実施形態では、データ送信機１およびデータ受信機２間で共有する暗復号用の鍵として４０ビットあるいは６４ビットを用い、鍵長が４０ビットおよび６４ビットのいずれであるかを示すための鍵長データとして１ビットのものを用いた場合について説明した。しかしながら、本発明はこれに限されるものではない。
【０１０２】
たとえば、暗号鍵を４０ビットから１２８ビットまで変更可能とし、鍵長データはこれらを選択できるように７ビットとしてもよい。この場合、鍵変換部２３、４３では、２個の３２ビット長である変換鍵Ｋ１、Ｋ２を生成できるように、入力された鍵長データの値に応じて、レジスタ２６に格納された暗復号用の鍵から抽出するビット列位置を変更できるようにセレクタを増加させればよい。また、暗復号用の鍵を６４以上とし、４個の３２ビット長である変換鍵を生成させ、Ｎ個の換字転置変換部を２組に分け、２個ずつ供給するような構成にしてもよい。
【０１０３】
あるいは、暗号変換で用いた換字転置変換部２１n（１≦ｎ≦Ｎ）を複数個用いて、暗復号用の鍵から複数個の変換鍵を生成するようにしてもよい。
【０１０４】
図１７は、データ送信機１およびデータ受信機２の鍵変換部２３、４３の変形例を示す図である。この例では、６４ビットの暗復号用の鍵から８個の変換鍵からなる２５６ビットのシステム鍵を生成している。
【０１０５】
図示するように、鍵変換部２３ａ、４３ａは、拡張鍵保持部１００と、８段の換字転置変換部２１1〜２１8を有する。
【０１０６】
拡張鍵保持部１００には、鍵共有部１２、３２によりデータ送信機１およびデータ受信機２間で共有している２５６ビットの拡張鍵を保持する。この２５６ビットの拡張鍵は、図１において、データ送信機１の鍵情報保持部１５が、鍵管理機関３より、鍵長情報に代えて受け取り保持するようにすればよい。この場合、データ送信機１において、鍵情報保持部１５が拡張鍵保持部１００として機能するようにしてもよい。鍵拡張保持部１００は、自身が保持する２５６ビットの拡張鍵を８個の３２ビットの拡張鍵ＫＥ1〜ＫＥ8に分割し、図１７に示すように、２個づつ順番に、換字転置変換部２１1〜２１8に投入する。
【０１０７】
さて、上記構成の鍵変換部２３ａ、４３ａに、暗復号用の鍵（６４ビット）が入力されると、上位３２ビットデータＬ0と下位３２ビットデータＲ0に分割されて、換字転置変換部２１1に入力される。そこで、拡張鍵ＫＥ1、ＫＥ2を用いて、第１回目の変換が行われ、その結果得られた３２ビットデータＬ1と３２ビットデータＲ1が次の段の換字転置変換部２１2に入力される。また、３２ビットデータＬ1は変換鍵Ｋ１として取り出される。次に、換字転置変換部２１2にて、拡張鍵ＫＥ3、ＫＥ4を用いて、第２回目の変換が行われ、その結果得られた３２ビットデータＬ2と３２ビットデータＲ2が次の段の換字転置変換部２１3に入力される。また、３２ビットデータＬ2は変換鍵Ｋ２として取り出される。以上のような変換を順次行い、最終の段の換字転置変換部２１8での変換の結果得られた３２ビットデータＬ8を、変換鍵Ｋ８として取り出す。これにより、８個の３２ビットの変換鍵Ｋ１〜Ｋ８からなる２５６ビットシステム鍵が生成される。
【０１０８】
図１８は、図２に示す暗号化部１１において、鍵変換部２３に代えて図１７に示す鍵変換部２３ａを用いた場合の変形例を示す図である。
【０１０９】
図１８において、暗号変換部２０に平文（６４ビット）が入力されると、分割部２５ａにより上位３２ビットデータＬ0と下位３２ビットデータＲ0に分割されて、換字転置変換部２１1に入力される。そこで、変換鍵Ｋ１、Ｋ２を用いて、第１回目の変換が行われ、その結果得られた３２ビットデータＬ1と３２ビットデータＲ1が次の段の換字転置変換部２１2に入力される。このような変換が順次行われ、換字転置変換部２１4にて、変換鍵Ｋ７、Ｋ８を用いた第４回目の変換が行われ、その結果得られた３２ビットデータＬ4と３２ビットデータＲ5が次の段の換字転置変換部２１5に入力されると、使用する変換鍵をＫ１、Ｋ２とし、上記の要領で変換を繰り返す。
【０１１０】
図１９は、図６に示す復号化部３１において、鍵変換部４３に代えて図１７に示す鍵変換部４３ａを用いた場合の変形例を示す図である。
【０１１１】
図１９において、復号変換部４０に暗号文（６４ビット）が入力されると、分割部４５ａにより上位３２ビットデータＬNと下位３２ビットデータＲNに分割されて、換字転置変換部４１Nに入力される。そこで、変換鍵Ｋ８、Ｋ７を用いて、第１回目の変換が行われ、その結果得られた３２ビットデータＬN-1と３２ビットデータＲN-1が次の段の換字転置変換部４１N-1に入力される。このような変換が順次行われ、換字転置変換部４１N-3にて、変換鍵Ｋ２、Ｋ１を用いた第４回目の変換が行われ、その結果得られた３２ビットデータＬN-4と３２ビットデータＲN-4が次の段の換字転置変換部４１N-4に入力されると、使用する変換鍵をＫ８、Ｋ７とし、上記の要領で変換を繰り返す。この変換は、図１８を用いて説明した暗号変換の逆変換に相当する。
【０１１２】
また、上記の実施形態では、図５に示すビット列変換部６１のビット列変換器８２、８３、８５として、それぞれ、巡回シフト演算部９１、９２、９３と、加算演算部９５、９６、９８とでなるものを用いた場合について説明した。しかしながら、本発明はこれに限定されるものではなく、加算演算部９５、９６、９８各々の前段に乗算演算部を設けるようにしてもよい。
【０１１３】
図２０は、本実施形態で用いるビット列変換部６１の変形例を示す図である。この図に示すビット列変換部６１ａが図５に示すビット列変換部６１と異なる点は、加算演算部９５、９６、９８各々の前段に乗算演算部９５ａ、９６ａ、９８ａを設けた点である。
【０１１４】
図５に示すビット列変換部６１のビット列変換器８２、８３、８５各々について、入力をＸ、出力をＹとして変換を式で表わすと、
Y=X+(X<<<Sin)+Ain
但し、i=1,2,3、1≦n≦ラウンド数N
となる。
【０１１５】
一方、図２０に示すビット列変換部６１ａのビット列変換器８２、８３、８５各々について、入力をＸ、出力をＹとし変換を式で表わすと、
Y=BinX+(X<<<Sin)+Ain
但し、i=1,2,3、1≦n≦ラウンド数N
となる。
【０１１６】
ここで、処理ビット幅（入出力Ｘ、Ｙのビット長）をｍとした場合、２Sin＋Ｂinと２m−１とが互いに素となる値となるように、ＢinとＳinを設定することで、ビット列変換部６１ａのビット列変換器８２、８３、８５各々での関数を全単射関数に近づけることができる。これにより、差分解読法および線形解読法による攻撃する強度をさらに強化することができる。なお、乗算演算部９５ａ、９６ａ、９８ａでの乗算値Ｂ1n、Ｂ2n、Ｂ3nは、シフト値Ｓ1n、Ｓ2n、Ｓ3nや加算値Ａ1n、Ａ2n、Ａ3nと同様、アルゴリズム鍵Ｇｎに含まれるパラメータとして、アルゴリズム鍵保持部２４、４４に保持させるようにすればよい。
【０１１７】
次に、上記説明した本実施形態の暗号通信システムの自動料金徴収システムへの適用例について説明する。
【０１１８】
ここで、自動料金徴収システムとは、自動車が有料道路を通過する時に、有料道路上に設置されている路側機により、自動車を停止させることなく、運転手のＩＣカードから通行料金を電子決済によって徴収するシステムのことである。自動料金徴収システムは、有料道路の料金所での渋滞解消や、ＩＣカードでの電子決済化による利便性の向上など、様々な期待が寄せられている。
【０１１９】
図２１に自動料金徴収システムの概略構成を示す。
【０１２０】
図示するように、自動料金徴収システムは、自動車２００に搭載された車載機２０２と、ＩＣカード２０３と、路側機２０１とからなる。
【０１２１】
車載機２０２は、ＩＣカード２０３が装着自在に構成されている。ＩＣカード２０３は、たとえば自動車２００の運転手により、運転時に車載機２０２に装着される。
【０１２２】
路側機２０１は、たとえば有料道路の料金ゲートに設置されるものであり、自動車２００が通過する際に、通行料金を徴収する機能を有している。
【０１２３】
ＩＣカード２０３には、予め自動料金徴収システムの契約情報（ＩＣカードの持ち主の情報や決済方法に関する情報（たとえば、クレジット決済にするかあるいは電子マネーによる現金決済にするかなど）が格納されており、自動車２００が路側機２０１を通過する時に、ＩＣカード２０３が挿入されている車載機２０２を介した無線通信により、路側機２０１にこの契約情報を転送する。そして、その後、路側機２０１から経路情報や決済情報を受信する。
【０１２４】
これらの処理を安全および正確に行うためには、契約情報、経路情報および決済情報の正当性の検証と、不正な改竄や盗聴を防止する機能が必要である。したがって、ＩＣカード２０３と車載機２０２との間、および、車載機２０２と路側機２０１との間において、通信相手を正当であると認識するための相手認証処理や、交換データの暗復号化のために用いる鍵の共有処理や、共有した鍵を用いた暗号通信のための処理を行う必要がある。この相手認証処理、鍵共有処理および暗号通信に、上記の実施形態で説明した暗号通信システムにおける暗復号処理を適用することができる。
【０１２５】
以上の処理を実現するために、車載機２０２、ＩＣカード２０３および路側機２０１には、鍵管理機関２０４が発行した、共通のアルゴリズム鍵とライセンス鍵とを、秘密情報として、事前に保持しておく。たとえば、製造時に各々の内部に埋め込んでおく。
【０１２６】
ここで、アルゴリズム鍵の詳細およびアルゴリズム鍵によって定まる暗号変換および復号変換の詳細は前述した通りである。
【０１２７】
また、ライセンス鍵は、相手認証処理および鍵共有処理を正しく行うために用いる。たとえば、ＩＣカード２０３と車載機２０２が通信を行うために、ＩＣカード２０３が正当な機器であることを、車載機２０２が確認する場合を考える。このためには、ＩＣカード２０３は、自分が保持しているライセンス鍵が正しいことを、車載機２０２に証明すればよい。ここで、ライセンス鍵は秘密情報であるので、ＩＣカード２０３は自分のライセンス鍵を明かすことなく、それが正しいことを、車載機２０２に証明しなければならない。この証明は、暗号通信技術を用いることで実現できる。たとえば、対称鍵暗号方式を用いた手法が、セキュリティメカニズムの国際規格であるＩＳＯ９７９８−２で説明されている。この対称鍵暗号方式の具体例として、上記の実施形態で説明した暗号通信システムにおける暗復号処理を適用することができる。
【０１２８】
次に、図２１に示す路側機２０１、車載機２０２およびＩＣカード２０３各々の構成要素について説明する。
【０１２９】
路側機２０１は、無線通信部２３２と、暗号化・復号化部２３０と、相手認証・鍵共有処理部２３３と、データ保持部２３４と、主制御部２３５とを有する。
【０１３０】
車載機２０２は、無線通信部２１２と、暗号化・復号化部２１０と、、ＩＣカード通信部２１１と、相手認証・鍵共有処理部２１３と、データ保持部２１４と、主制御部２１５とを有する。
【０１３１】
ＩＣカード２０３は、ＩＣカード通信部２２１と、暗号化・復号化部２２０と、相手認証・鍵共有処理部２２３と、データ保持部２２４と、主制御部２２５とを有する。
【０１３２】
ここで、暗号化・復号化部２１０、２２０、２３０は、上記の実施形態で説明した暗号通信システムの暗号化部１１および復号化部３１（図１参照）の両方を備えており、データの暗号化および復号化を行うことが可能である。
【０１３３】
また、ＩＣカード通信部２１１、２２１は、車載機２０２とＩＣカード２０３との間の通信処理を行うために用いられ、無線通信部２１２、２３２は、車載機２０２と路側機２０１との間の無線通信処理を行うために用いられる。
【０１３４】
さらに、認証・鍵共有処理部２１３、２２３、２３３は、通信相手を正当であると認識するために行う相手認証処理と、データの暗復号化のために用いる鍵の共有処理を行う。
【０１３５】
認証・鍵共有処理部２１３は、暗号化・復号化部２１０が提供する暗号変換機能および復号変換機能を用いて、暗号通信技術を用いた相手認証処理および鍵共有処理を行う。同様に、認証・鍵共有処理部２２３は、暗号化・復号化部２２０が提供する暗号変換機能および復号変換機能を用いて、暗号通信技術を用いた暗号相手認証処理および鍵共有処理を行い、認証・鍵共有処理部２３３は、暗号化・復号化部２３０が提供する暗号変換機能および復号変換機能を用いて、暗号通信技術を用いた暗号相手認証処理および鍵共有処理を行う。
【０１３６】
データ保持部２１４、２２４、２３４は、鍵管理機関２０４から取得した、アルゴリズム鍵およびライセンス鍵を保持しておくのに用いられる。また、契約情報や経路情報や決済情報も保持できるのもとする。
【０１３７】
図２２は、図２１に示す自動料金徴収システムの通信フローを示す図である。
【０１３８】
図示するように、まず、ＩＣカード２０３が車載機２０２に装着されると、ＩＣカード２０３と車載機２０２との間で、相手認証・鍵共有処理２４０が行われる。そして、相手認証・鍵共有処理２４０が成功した後、ＩＣカード２０３は、契約情報を車載機２０２に転送するために暗号通信２４１を行う。車載機２０２は、ＩＣカード２０３の契約情報を取得すると、車載機２０２内のデータ保持部２１４に秘密に保持しておく。
【０１３９】
次に、車載機２０２を搭載した自動車２００が路側機２０１を通過すると、車載機２０２と路側機２０１の間で、相手認証・鍵共有処理２５０が行われる。そして、相手認証・鍵共有処理２５０が成功した後、車載機２０２は、先にＩＣカード２０３から取得しデータ保持部２１４に秘密に保持して契約情報を、路側機２０１に転送するために、暗号通信２５１を行う。路側機２０１は、車載機２０２から契約情報を受け取ると、当該契約情報にしたがい、当該契約情報により特定されるＩＣカード２０３の持ち主より通行料金を徴収し、決済を行う。暗号通信２５１は、路側機２０１から車載機２０２に、この決済情報や経路情報（たとえば決済を行った路側機２０１（料金を徴収した有料道路上の場所）を特定するための情報）を転送するためにも用いられる。
【０１４０】
次に、車載機２０２は、路側機２０１から得た決済情報や経路情報をＩＣカード２０３に転送するために、暗号通信２６１を行う。
【０１４１】
ここで、道路通行料金の決済はＩＣカード２０３と路側機２０１との間で行われるが、ＩＣカード２０３と路側機２０１1とは、車載機２０２を介さないと通信が行えない。この場合、車載機２０２が不正処理を行うことで、不正な決済が行われてしまう可能性も考えられる。このような事態に備え、路側機２０1は、ＩＣカード２０３との決済で用いた車載機２０２を特定できるようにしておく必要がある。たとえば、車載機２０２に識別番号を割り当て、車載機２０２は、ＩＣカード２０３との相手認証・鍵共有処理２４０の中で、車載機２０２の識別番号をＩＣカード２０３に転送するようにする。ＩＣカード２０３は、車載機２０２の識別番号とＩＣカード２０３の決済履歴の両方に対する、デジタル署名を生成して返送する。そして、車載機２０２は、自分の識別番号と、ＩＣカード２０３から取得したデジタル署名を、路側機２０１に、相手認証・鍵共有処理２５０の中で転送するようにする。その後、路側機２０１は、ＩＣカード２０３が生成したデジタル署名を検証することで、車載機２０２がいつ用いられたかを特定することが可能になる。
【０１４２】
また、暗号通信２４１、２５１、２６１において、通信路上を流れる暗号化データを第三者に改竄されないようにしておく必要がある。これを実現するためには、受信したメッセージが正当であることを判定できる、メッセージ認証を行う必要がある。メッセージ認証を行うためには、送信者と受信者が予めメッセージ認証鍵を秘密に共有しておく。メッセージ認証鍵の共有は、たとえば図１２に示した相手認証・鍵共有処理２５０内で行う。そして、送信者が、転送するメッセージとメッセージ認証鍵から、メッセージ認証子（MAC: Message Authentication Code）と呼ばれるデータを生成する。送信者は、メッセージと一緒にメッセージ認証子を、受信者に転送する。受信者は、受信したメッセージ認証子を、メッセージ認証鍵を用いて検証する。この検証によって、受信したメッセージが改竄されているかどうかを判定できる。メッセージ認証に関しては、たとえば対称鍵暗号方式を用いた手法が、セキュリティメカニズムの国際規格であるＩＳＯ９７９７で説明されている。この対称鍵暗号方式の具体例として、上記の実施形態で説明した暗号通信システムにおける暗復号化処理を適用することができる。
【０１４３】
図２３は、図２２の暗号通信２４１において、メッセージ認証を含めた例の詳細フローを示している。
【０１４４】
図示するように、まず、ＩＣカード２０３は、メッセージ認証子の生成を、ＭＡＣ生成処理２６１で行う。次に、転送メッセージとメッセージ認証子を結合する結合処理２６２を行う。その後、転送メッセージとメッセージ認証子を結合したデータを暗号化する暗号処理２６３を行って暗号化データを生成する。
【０１４５】
一方、車載機２０２は、ＩＣカードより暗号化データを受信すると、まず復号化処理２６４を行う。その後、分離処理２６５を行うことで、ＩＣカードが転送した転送メッセージとメッセージ認証子とを復元する。次に、復元されたメッセージ認証子を検証するＭＡＣ検証処理２６６を行って、受信した転送メッセージの正当性を検証する。
【０１４６】
これによって、課金情報や経路情報などの盗聴や改竄されてはならないデータを安全に交換することが可能になる。
【０１４７】
以上の処理を行うことにより、通行料金をＩＣカード２０３に課金し、さらに路側機２０１で課金情報を管理することができる。
【０１４８】
【発明の効果】
以上説明したように、本発明によれば、変換の繰り返し回数を増やすことなく、暗号解読に強い高速な暗号・復号変換を実現することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態が適用された暗号通信システムの概略構成図である。
【図２】図１に示す暗号化部１１の概略構成図である。
【図３】図２に示す鍵変換部２３の概略構成図である。
【図４】図２に示す換字転置変換部２１n（１≦ｎ≦ラウンド数Ｎ）の概略構成図である。
【図５】図４に示すビット列変換部６１の概略構成図である。
【図６】図１に示す復号化部３１の概略構成図である。
【図７】図６に示す換字転置変換部４１n（１≦ｎ≦ラウンド数Ｎ）の概略構成図である。
【図８】差分解読法および線形解読法による暗号解読に対する強度評価実験に用いた評価パターンを示す図である。
【図９】図５に示すビット列変換部６１において、変換鍵Ｋ１＝Ｋ２＝０、加算値Ａ1n＝１、Ａ2n＝Ａ3n＝０とした場合に得られる変換を関数Ｆ、当該関数Ｆの入力Ｕのビット幅を１６とし、図８に示す差分２段繰り返し型評価パターンを用いた場合の評価結果を示す図である。
【図１０】図５に示すビット列変換部６１において、変換鍵Ｋ１＝Ｋ２＝０、加算値Ａ1n＝１、Ａ2n＝Ａ3n＝０とした場合に得られる変換を関数Ｆ、当該関数Ｆの入力Ｕのビット幅を１６とし、図８に示す差分２段繰り返し型評価パターンを用いた場合の差分確率の評価結果を示す図である。
【図１１】図５に示すビット列変換部６１において、変換鍵Ｋ１＝Ｋ２＝０、加算値Ａ1n＝１、Ａ2n＝Ａ3n＝０とした場合に得られる変換を関数Ｆ、当該関数Ｆの入力Ｕのビット幅を３２とし、図８に示す差分２段繰り返し型評価パターンを用いた場合の差分確率の評価結果を示す図である。
【図１２】図５に示すビット列変換部６１において、変換鍵Ｋ１＝Ｋ２＝０、加算値Ａ1n＝１、Ａ2n＝Ａ3n＝０とした場合に得られる変換を関数Ｆ、当該関数Ｆの入力Ｕのビット幅を１６とし、図８に示す線形２段繰り返し型評価パターンを用いた場合の線形近似確率の評価結果を示す図である。
【図１３】図５に示すビット列変換部６１において、変換鍵Ｋ１＝Ｋ２＝０、加算値Ａ1n＝１、Ａ2n＝Ａ3n＝０とした場合に得られる変換を関数Ｆ、当該関数Ｆの入力Ｕのビット幅を１６とし、図８に示す線形２段繰り返し型評価パターンを用いた場合の線形近似確率の評価結果を示す図である。
【図１４】図５に示すビット列変換部６１において、変換鍵Ｋ１＝Ｋ２＝０、加算値Ａ1n＝１、Ａ2n＝Ａ3n＝０とした場合に得られる変換を関数Ｆ、当該関数Ｆの入力Ｕのビット幅を３２とし、図８に示す線形２段繰り返し型評価パターンを用いた場合の線形近似確率の評価結果を示す図である。
【図１５】図８に示す差分および線形近似確率を求めるための評価パターンの段数を１８段および２１段に増加させた場合における差分確率および線形近似確率を推定値を示す図である。
【図１６】図８に示す差分および線形近似確率を求めるための評価パターンの段数を１８段および２１段に増加させた場合における差分確率および線形近似確率を推定値を示す図である。
【図１７】図１に示すデータ送信機１およびデータ受信機２の鍵変換部２３、４３の変形例を示す図である。
【図１８】図２に示す暗号化部１１において、鍵変換部２３に代えて図１７に示す鍵変換部２３ａを用いた場合の変形例を示す図である。
【図１９】図６に示す復号化部３１において、鍵変換部４３に代えて図１７に示す鍵変換部４３ａを用いた場合の変形例を示す図である。
【図２０】図５に示すビット列変換部６１の変形例を示す図である。
【図２１】本発明の一実施形態である暗号通信システムが適用された自動料金徴収システムの概略構成図である。
【図２２】図２１に示す自動料金徴収システムの通信フローを示す図である。
【図２３】図２２の暗号通信２４１において、メッセージ認証を含めた例の詳細フローを示す図である。
【符号の説明】
１…データ送信機
２…データ受信機
３、２０４…鍵管理機関
１１、１１ａ…暗号化部
１２、３２…鍵共有部
１３、３３…データ処理部
１４、３４…通信処理部
１５…鍵長情報保持部
２０…暗号変換部
２１1〜２１N、４１1〜４１N…換字転置変換部
２３、２３ａ、４３、４３ａ…鍵変換部
２４、４４…アルゴリズム鍵保持部
２５ａ、４５ａ…分割部
２５ｂ、４５ｂ…結合部
２６…レジスタ
２７…マルチプレクサ
２８、９５、９６、９８…加算演算部
３１、３１ａ…復号化部
４０…復号変換部
６１、６１ａ…ビット列変換部
６２、９４、９７…排他的論理和演算部
８１〜８５…ビット列変換器
９１〜９３…巡回シフト演算部
９５ａ、９６ａ、９８ａ…乗算演算部
１００…拡張鍵保持部
２００…自動車
２０１…路側機
２０２…車載機
２０３…ＩＣカード
２１０、２２０、２３０…暗号化・復号化部
２１１、２２１…ＩＣカード通信部
２１２、２３２…無線通信部
２１３、２２３、２３３…相手認証・鍵共有処理部
２１４、２２４、２３４…データ保持部
２１５、２２５、２３５…主制御部
【図１】
0003689595.tif 000004
【図２】
0003689595.tif 000005
【図３】
0003689595.tif 000006
【図４】
0003689595.tif 000007
【図５】
0003689595.tif 000008
【図６】
0003689595.tif 000009
【図７】
0003689595.tif 000010
【図８】
0003689595.tif 000011
【図９】
0003689595.tif 000012
【図１０】
0003689595.tif 000013
【図１１】
0003689595.tif 000014
【図１２】
0003689595.tif 000015
【図１３】
0003689595.tif 000016
【図１４】
0003689595.tif 000017
【図１５】
0003689595.tif 000018
【図１６】
0003689595.tif 000019
【図１７】
0003689595.tif 000020
【図１８】
0003689595.tif 000021
【図１９】
0003689595.tif 000022
【図２０】
0003689595.tif 000023
【図２１】
0003689595.tif 000024
【図２２】
0003689595.tif 000025
【図２３】
0003689595.tif 000026