(57)【特許請求の範囲】
【請求項１】
ユーザから暗号化しようとする平文（Ｐｌａｉｎｔｅｘｔ）とマスターキー（Ｍａｓｔｅｒ  Ｋｅｙ）の入力を受けるユーザインタフェース部と、
前記マスターキーからラウンドキー（Ｒｏｕｎｄ  Ｋｅｙ）を生成するキースケジューラ部と、
前記平文から初期ラウンド関数値を生成する初期変換部と、
前記ラウンドキーと前記初期ラウンド関数値を用いてラウンド関数を繰り返し処理するラウンド関数処理部と、
前記ラウンド関数処理部によって処理された最後のラウンドでのラウンド関数の結果値から暗号文を生成する最終変換部とを含み、
前記ラウンドキーは、１９２ビットの長さを有し、それぞれ３２ビットの長さを有するサブラウンドキーＲＫｉ［０］、ＲＫｉ［１］、ＲＫｉ［２］、ＲＫｉ［３］、ＲＫｉ［４］、ＲＫｉ［５］が連接して構成され、
前記初期変換部は、１２８ビットの長さを有する前記平文からそれぞれ３２ビットの長さを有するサブ平文Ｐ［０］、Ｐ［１］、Ｐ［２］、Ｐ［３］を抽出し、前記サブ平文Ｐ［０］、Ｐ［１］、Ｐ［２］、Ｐ［３］それぞれから初期ラウンド関数値Ｘ０［０］、Ｘ０［１］、Ｘ０［２］、Ｘ０［３］を生成し、
前記ラウンド関数処理部は、前記ラウンドキーと前記初期ラウンド関数値に基づいてラウンド関数を処理し、ｉ番目ラウンドでのラウンド関数の結果値Ｘｉ＋１［０］、Ｘｉ＋１［１］、Ｘｉ＋１［２］、Ｘｉ＋１［３］を算出し、
前記ラウンド関数処理部は、数式
【数１】
0005542896.tif 000036
によってＸｉ＋１［０］を算出し、数式
【数２】
0005542896.tif 000037
によってＸｉ＋１［１］を算出し、数式
【数３】
0005542896.tif 000038
によってＸｉ＋１［２］を算出し、数式
【数４】
0005542896.tif 000039
によってＸｉ＋１［３］を算出することを特徴とする暗号化装置。
（ここで、Ｘｉ［０］、Ｘｉ［１］、Ｘｉ［２］、Ｘｉ［３］は、ｉ−１番目ラウンドでのラウンド関数の結果値、
【数５】
0005542896.tif 000040
は、論理的排他和演算、＋は、法２３２足し算演算、ＲＯＬａ（ｘ）は、３２ビットの長さを有するｘ値を左にａビットだけ循環シフトした後出力する関数、ＲＯＲａ（ｘ）は、３２ビットの長さを有するｘ値を右にａビットだけ循環シフトした後出力する関数を意味する。）
【請求項２】
前記キースケジューラ部は、
前記ユーザインタフェース部から前記マスターキーを受信するマスターキー入力部と、
前記マスターキーを構成するサブマスターキー値それぞれから初期キースケジュールラウンド関数値を生成するキースケジュールラウンド関数値生成部と、
前記初期キースケジュールラウンド関数値と固定された定数値を用いてキースケジュールラウンド関数値を生成し、前記キースケジュールラウンド関数値を連接して前記ラウンドキーを生成するラウンドキー生成部とを含むことを特徴とする、請求項１に記載の暗号化装置。
【請求項３】
前記最終変換部は、前記最後のラウンドでのラウンド関数の結果値を連接して暗号文を生成することを特徴とする、請求項１または２に記載の暗号化装置。
【請求項４】
前記最終変換部によって生成された暗号文を出力する暗号文出力部をさらに含むことを特徴とする、請求項１、２または３のいずれか一項に記載の暗号化装置。
【請求項５】
ユーザインタフェース部がユーザから暗号化しようとする平文とマスターキーの入力を受けるステップと、
キースケジューラ部が前記マスターキーからラウンドキーを生成するステップと、
初期変換部が前記平文から初期ラウンド関数値を生成するステップと、
ラウンド関数処理部が前記ラウンドキーと前記初期ラウンド関数値を用いてラウンド関数を繰り返し処理するステップと、
最終変換部が最後のラウンドでのラウンド関数の結果値から暗号文を生成するステップとを含み、
前記ラウンドキーは、１９２ビットの長さを有し、それぞれ３２ビットの長さを有するサブラウンドキーＲＫｉ［０］、ＲＫｉ［１］、ＲＫｉ［２］、ＲＫｉ［３］、ＲＫｉ［４］、ＲＫｉ［５］が連接して構成され、
前記平文から初期ラウンド関数値を生成するステップは、
１２８ビットの長さを有する前記平文からそれぞれ３２ビットの長さを有するサブ平文Ｐ［０］、Ｐ［１］、Ｐ［２］、Ｐ［３］を抽出し、前記サブ平文Ｐ［０］、Ｐ［１］、Ｐ［２］、Ｐ［３］それぞれから初期ラウンド関数値Ｘ０［０］、Ｘ０［１］、Ｘ０［２］、Ｘ０［３］を生成し、
前記ラウンドキーと前記初期ラウンド関数値を用いてラウンド関数を繰り返し処理するステップは、
前記ラウンドキーと前記初期ラウンド関数値に基づいてラウンド関数を処理し、ｉ番目ラウンドでのラウンド関数の結果値Ｘｉ＋１［０］、Ｘｉ＋１［１］、Ｘｉ＋１［２］、Ｘｉ＋１［３］を算出し、
前記ラウンドキーと前記初期ラウンド関数値を用いてラウンド関数を繰り返し処理するステップは、
数式
【数６】
0005542896.tif 000041
によってＸｉ＋１［０］を算出し、数式
【数７】
0005542896.tif 000042
によってＸｉ＋１［１］を算出し、数式
【数８】
0005542896.tif 000043
によってＸｉ＋１［２］を算出し、数式
【数９】
0005542896.tif 000044
によってＸｉ＋１［３］を算出することを特徴とする、暗号化方法。
（ここで、Ｘｉ［０］、Ｘｉ［１］、Ｘｉ［２］、Ｘｉ［３］は、ｉ−１番目ラウンドでのラウンド関数の結果値、
【数１０】
0005542896.tif 000045
は、論理的排他和演算、＋は、法２３２足し算演算、ＲＯＬａ（ｘ）は、３２ビットの長さを有するｘ値を左にａビットだけ循環シフトした後出力する関数、ＲＯＲａ（ｘ）は、３２ビットの長さを有するｘ値を右にａビットだけ循環シフトした後出力する関数を意味する。）
【請求項６】
前記マスターキーからラウンドキーを生成するステップは、
マスターキー入力部が前記ユーザインタフェース部から前記マスターキーを受信するステップと、
キースケジュールラウンド関数値生成部が前記マスターキーを構成するサブマスターキー値それぞれから初期キースケジュールラウンド関数値を生成するステップと、
ラウンドキー生成部が前記初期キースケジュールラウンド関数値と固定された定数値を用いてキースケジュールラウンド関数値を生成し、前記キースケジュールラウンド関数値を連接して前記ラウンドキーを生成するステップとを含むことを特徴とする、請求項５に記載の暗号化方法。
【請求項７】
前記最後のラウンドでのラウンド関数の結果値から暗号文を生成するステップは、
前記最後のラウンドでのラウンド関数の結果値を連接して暗号文を生成することを特徴とする、請求項５または６に記載の暗号化方法。
【請求項８】
暗号文出力部が前記最終変換部によって生成された暗号文を出力するステップをさらに含むことを特徴とする、請求項５、６または７のいずれか一項に記載の暗号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、低電力暗号化装置および方法に関し、より詳細には、低電力暗号化を支援するモバイル用高速ブロック暗号アルゴリズムを提供することができる暗号化装置および方法に関する。
【背景技術】
【０００２】
ブロック暗号は、各種機器の通信および格納資料セキュリティのための暗号アプリケーションにおいて最も多く用いられる核心要素であり、特定の長さ単位（６４ビット、１２８ビット）でデータを暗号化して機密性（ｃｏｎｆｉｄｅｎｔｉａｌｉｔｙ）を提供することが主な役割である。また、ハッシュ関数、メッセージ認証コード、乱数生成器などにも活用される。このような用途に合わせて、ブロック暗号は、機器および暗号アプリケーション特性に適した性質を有するように設計されなければならず、機器に特化したチップまたは機器のＣＰＵで駆動されるソフトウェアで実現される。
【０００３】
ハードウェアで実現されるチップの場合、市場性、開発費用、機器との連動性などによって開発が制限されるのに対し、ソフトウェアの実現は、ＣＰＵの性能の進化などで適用が拡大している。しかし、ソフトウェアの実現においても、リソースの制限を受ける環境が多い。特に、最近、多くの人気を集めているスマートフォンのようにバッテリを有する移動機器は、ソフトウェアの駆動による電力消耗という問題を抱えている。現在、最も優れた性能の国際標準ブロック暗号の場合にも、持続的な暗号化時のバッテリの消耗が未暗号化時より７０％以上増加することが知られている。
【０００４】
一方、超軽量および低電力環境におけるＨ／Ｗ暗号演算を目的として開発されたブロック暗号手法が、２００６年のＷｏｒｋｓｈｏｐ  ｏｎ  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓでの「ＨＩＧＨＴ：Ａ  Ｎｅｗ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒ  Ｓｕｉｔａｂｌｅ  ｆｏｒ  Ｌｏｗ−Ｒｅｓｏｕｒｃｅ  Ｄｅｖｉｃｅ」論文に公開されているが、前記論文に公開されたブロック暗号手法は、安全性に対する脆弱点が存在し、ソフトウェア環境では、データ暗号化のために、ＣＰＵに比較的多いサイクル（ｃｙｃｌｅ）が要求される問題があった。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、低電力暗号化を支援するブロック暗号アルゴリズムを用いる暗号化装置および方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記の目的を達成するための、本発明にかかる暗号化装置は、ユーザから暗号化しようとする平文（Ｐｌａｉｎｔｅｘｔ）とマスターキー（Ｍａｓｔｅｒ  Ｋｅｙ）の入力を受けるユーザインタフェース部と、前記マスターキーからラウンドキー（Ｒｏｕｎｄ  Ｋｅｙ）を生成するキースケジューラ部と、前記平文から初期ラウンド関数値を生成する初期変換部と、前記ラウンドキーと前記初期ラウンド関数値を用いてラウンド関数を繰り返し処理するラウンド関数処理部と、前記ラウンド関数処理部によって処理された最後のラウンドでのラウンド関数の結果値から暗号文を生成する最終変換部とを含むことを特徴とする。
【０００７】
この時、前記キースケジューラ部は、前記ユーザインタフェース部から前記マスターキーを受信するマスターキー入力部と、前記マスターキーを構成するサブマスターキー値それぞれから初期キースケジュールラウンド関数値を生成するキースケジュールラウンド関数値生成部と、前記初期キースケジュールラウンド関数値と固定された定数値を用いてキースケジュールラウンド関数値を生成し、前記キースケジュールラウンド関数値を連接して前記ラウンドキーを生成するラウンドキー生成部とを含むことができる。
【０００８】
この時、前記ラウンドキーは、１９２ビットの長さを有し、それぞれ３２ビットの長さを有するサブラウンドキーＲＫｉ［０］、ＲＫｉ［１］、ＲＫｉ［２］、ＲＫｉ［３］、ＲＫｉ［４］、ＲＫｉ［５］が連接して構成できる。
【０００９】
この時、前記初期変換部は、１２８ビットの長さを有する前記平文からそれぞれ３２ビットの長さを有するサブ平文Ｐ［０］、Ｐ［１］、Ｐ［２］、Ｐ［３］を抽出し、前記サブ平文Ｐ［０］、Ｐ［１］、Ｐ［２］、Ｐ［３］それぞれから初期ラウンド関数値Ｘ０［０］、Ｘ０［１］、Ｘ０［２］、Ｘ０［３］を生成することができる。
【００１０】
この時、前記ラウンド関数処理部は、前記ラウンドキーと前記初期ラウンド関数値に基づいてラウンド関数を処理し、ｉ番目ラウンドでのラウンド関数の結果値Ｘｉ＋１［０］、Ｘｉ＋１［１］、Ｘｉ＋１［２］、Ｘｉ＋１［３］を算出することができる。
【００１１】
この時、前記ラウンド関数処理部は、数式
【数１】
0005542896.tif 000002
によってＸｉ＋１［０］を算出し、数式
【数２】
0005542896.tif 000003
によってＸｉ＋１［１］を算出し、数式
【数３】
0005542896.tif 000004
によってＸｉ＋１［２］を算出し、数式
【数４】
0005542896.tif 000005
によってＸｉ＋１［３］を算出することができる。ここで、Ｘｉ［０］、Ｘｉ［１］、Ｘｉ［２］、Ｘｉ［３］は、ｉ−１番目ラウンドでのラウンド関数の結果値、
【数５】
0005542896.tif 000006
は、論理的排他和演算、＋は、法２３２足し算演算、ＲＯＬａ（ｘ）は、３２ビットの長さを有するｘ値を左にａビットだけ循環シフト（ｒｏｔａｔｉｏｎ）した後出力する関数、ＲＯＲａ（ｘ）は、３２ビットの長さを有するｘ値を右にａビットだけ循環シフトした後出力する関数を意味する。
【００１２】
この時、前記最終変換部は、前記最後のラウンドでのラウンド関数の結果値を連接して暗号文を生成することができる。
【００１３】
この時、本発明にかかる暗号化装置は、前記最終変換部によって生成された暗号文を出力する暗号文出力部をさらに含むことができる。
【００１４】
また、上記の目的を達成するための、本発明にかかる暗号化方法は、ユーザインタフェース部がユーザから暗号化しようとする平文とマスターキーの入力を受けるステップと、キースケジューラ部が前記マスターキーからラウンドキーを生成するステップと、初期変換部が前記平文から初期ラウンド関数値を生成するステップと、ラウンド関数処理部が前記ラウンドキーと前記初期ラウンド関数値を用いてラウンド関数を繰り返し処理するステップと、最終変換部が最後のラウンドでのラウンド関数の結果値から暗号文を生成するステップとを含むことを特徴とする。
【００１５】
この時、前記マスターキーからラウンドキーを生成するステップは、マスターキー入力部が前記ユーザインタフェース部から前記マスターキーを受信するステップと、キースケジュールラウンド関数値生成部が前記マスターキーを構成するサブマスターキー値それぞれから初期キースケジュールラウンド関数値を生成するステップと、ラウンドキー生成部が前記初期キースケジュールラウンド関数値と固定された定数値を用いてキースケジュールラウンド関数値を生成し、前記キースケジュールラウンド関数値を連接して前記ラウンドキーを生成するステップとを含むことができる。
【００１６】
この時、前記ラウンドキーは、１９２ビットの長さを有し、それぞれ３２ビットの長さを有するサブラウンドキーＲＫｉ［０］、ＲＫｉ［１］、ＲＫｉ［２］、ＲＫｉ［３］、ＲＫｉ［４］、ＲＫｉ［５］が連接して構成できる。
【００１７】
この時、前記平文から初期ラウンド関数値を生成するステップは、１２８ビットの長さを有する前記平文からそれぞれ３２ビットの長さを有するサブ平文Ｐ［０］、Ｐ［１］、Ｐ［２］、Ｐ［３］を抽出し、前記サブ平文Ｐ［０］、Ｐ［１］、Ｐ［２］、Ｐ［３］それぞれから初期ラウンド関数値Ｘ０［０］、Ｘ０［１］、Ｘ０［２］、Ｘ０［３］を生成することができる。
【００１８】
この時、前記ラウンドキーと前記初期ラウンド関数値を用いてラウンド関数を繰り返し処理するステップは、前記ラウンドキーと前記初期ラウンド関数値に基づいてラウンド関数を処理し、ｉ番目ラウンドでのラウンド関数の結果値Ｘｉ＋１［０］、Ｘｉ＋１［１］、Ｘｉ＋１［２］、Ｘｉ＋１［３］を算出することができる。
【００１９】
この時、前記ラウンドキーと前記初期ラウンド関数値を用いてラウンド関数を繰り返し処理するステップは、数式
【数６】
0005542896.tif 000007
によってＸｉ＋１［０］を算出し、数式
【数７】
0005542896.tif 000008
によってＸｉ＋１［１］を算出し、数式
【数８】
0005542896.tif 000009
によってＸｉ＋１［２］を算出し、数式
【数９】
0005542896.tif 000010
によってＸｉ＋１［３］を算出することができる。ここで、Ｘｉ［０］、Ｘｉ［１］、Ｘｉ［２］、Ｘｉ［３］は、ｉ−１番目ラウンドでのラウンド関数の結果値、
【数１０】
0005542896.tif 000011
は、論理的排他和演算、＋は、法２３２足し算演算、ＲＯＬａ（ｘ）は、３２ビットの長さを有するｘ値を左にａビットだけ循環シフトした後出力する関数、ＲＯＲａ（ｘ）は、３２ビットの長さを有するｘ値を右にａビットだけ循環シフトした後出力する関数を意味する。
【００２０】
この時、前記最後のラウンドでのラウンド関数の結果値から暗号文を生成するステップは、前記最後のラウンドでのラウンド関数の結果値を連接して暗号文を生成することができる。
【００２１】
この時、本発明にかかる暗号化方法は、暗号文出力部が前記最終変換部によって生成された暗号文を出力するステップをさらに含むことができる。
【発明の効果】
【００２２】
本発明によれば、既存のＣＰＵで普遍的に用いられ、採用が容易なＡＲＸ（Ａｄｄｉｔｉｏｎ、Ｒｏｔａｔｉｏｎ、ＸＯＲ）演算のみで構成される暗号化手法を提供できる効果がある。
【００２３】
また、本発明によれば、臨時変数を活用して並列演算を可能にする演算の組合せで暗号化過程を行うため、ＣＰＵ内でより少ないサイクル（ｃｙｃｌｅ）で暗号化を行うことができる効果がある。
【００２４】
さらに、本発明によれば、従来のすべてのブロック暗号攻撃に対する安全性を保障できる効果がある。
【図面の簡単な説明】
【００２５】
【図１】本発明にかかる暗号化装置の構成を示すブロック図である。
【図２】図１に示されたキースケジューラ部の構成を示すブロック図である。
【図３】図１に示されたラウンド関数処理部のｉ番目ラウンドでのラウンド関数の処理過程を説明するための図である。
【図４】本発明にかかる暗号化方法を説明するためのフローチャートである。
【図５】本発明にかかる暗号化方法を説明するためのフローチャートである。
【発明を実施するための形態】
【００２６】
以下、本発明を添付した図面を参照して詳細に説明する。ここで、繰り返される説明、本発明の要旨をあいまいにする可能性がある公知の機能、および構成に関する詳細な説明は省略する。本発明の実施形態は、当業界において平均的な知識を有する者に本発明をより完全に説明するために提供されるものである。したがって、図面における要素の形状および大きさなどは、より明確な説明のために誇張され得る。
【００２７】
以下では、図１ないし図３を参照して、本発明にかかる暗号化装置の構成およびその動作について説明する。
【００２８】
図１は、本発明にかかる暗号化装置の構成を示すブロック図である。
【００２９】
図１を参照すれば、本発明にかかる暗号化装置１０は、ユーザインタフェース部１００と、キースケジューラ部２００と、初期変換部３００と、ラウンド関数処理部４００と、最終変換部５００と、暗号文出力部６００とから構成される。
【００３０】
ユーザインタフェース部１００は、ユーザから平文（Ｐｌａｉｎｔｅｘｔ、以下、「Ｐ」と表示する。）という暗号化しようとする対象、例えば、特定のテキスト（ｔｅｘｔ）または音声（ｖｏｉｃｅ）の入力を受ける。また、ユーザインタフェース部１００は、平文の入力を受ける時点で、同時にユーザからマスターキー（Ｍａｓｔｅｒ  Ｋｅｙ、以下、「ＭＫ」と表示する。）の入力を受ける。この時、ユーザインタフェース部１００に入力されるマスターキーは、１２８ビット、１９２ビットまたは２５６ビットの長さで構成され、それぞれ３２ビットの長さを有するサブマスターキーで構成される。つまり、マスターキーＭＫは、複数のサブマスターキーの連接によって構成され、１２８ビット、１９２ビットおよび２５６ビットの長さを有するマスターキーは、それぞれ下記の数式１ないし数式３のように表現できる。
【数１１】
0005542896.tif 000012
【数１２】
0005542896.tif 000013
【数１３】
0005542896.tif 000014
【００３１】
この時、Ｋ［０］ないしＫ［７］は、マスターキーＭＫを構成する、それぞれ３２ビットの長さを有するサブマスターキーを意味する。
【００３２】
一方、ユーザインタフェース部１００に入力される平文は、１２８ビットの長さで構成され、それぞれ３２ビットの長さを有するサブ平文で構成される。つまり、平文Ｐは、複数のサブ平文の連接によって構成され、１２８ビットの長さを有する平文は、下記の数式４のように表現できる。
【数１４】
0005542896.tif 000015
【００３３】
この時、Ｐ［０］ないしＰ［３］は、平文Ｐを構成する、それぞれ３２ビットの長さを有するサブ平文を意味する。
【００３４】
ユーザインタフェース部１００は、ユーザから入力されたマスターキーＭＫと平文Ｐをそれぞれキースケジューラ部２００と初期変換部３００に伝送する。
【００３５】
キースケジューラ部２００は、ユーザインタフェース部１００からマスターキーを受信し、前記マスターキーからラウンドキー（Ｒｏｕｎｄ  Ｋｅｙ、以下、「ＲＫ」と表示する。）を生成する。より具体的には、キースケジューラ部２００は、図２に示されているように、マスターキー入力部２２０と、キースケジュールラウンド関数値生成部２４０と、ラウンドキー生成部２６０とから構成される。
【００３６】
マスターキー入力部２２０は、ユーザインタフェース部１００からマスターキーを受信し、これをキースケジュールラウンド関数値生成部２４０に伝送する。
【００３７】
キースケジュールラウンド関数値生成部２４０は、マスターキー入力部２２０から伝送されたマスターキーからサブマスターキー値を抽出し、前記抽出されたサブマスターキー値それぞれから初期キースケジュールラウンド関数値を生成する。
【００３８】
この時、キースケジュールラウンド関数値生成部２４０は、伝送されたマスターキーが１２８ビットの長さを有する場合、下記の数式５によって初期キースケジュールラウンド関数値Ｔ０［１］ないしＴ０［３］を決定し、
【数１５】
0005542896.tif 000016
【００３９】
伝送されたマスターキーが１９２ビットの長さを有する場合、下記の数式６によって初期キースケジュールラウンド関数値Ｔ０［１］ないしＴ０［５］を決定し、
【数１６】
0005542896.tif 000017
【００４０】
伝送されたマスターキーが２５６ビットの長さを有する場合、下記の数式７によって初期キースケジュールラウンド関数値Ｔ０［１］ないしＴ０［７］を決定する。
【数１７】
0005542896.tif 000018
【００４１】
ラウンドキー生成部２６０は、キースケジュールラウンド関数値生成部２４０によって生成された初期キースケジュールラウンド関数値と固定された定数値を用いてキースケジュールラウンド関数値を生成し、キースケジュールラウンド関数値を連接してラウンドキーを生成する。この時、ラウンドキー生成部２６０は、キースケジュールラウンド関数値を生成するために、例えば、下記の数式８のように１６進数で表現される、固定された定数値δ［０］ないしδ［７］を用いることができる。
【数１８】
0005542896.tif 000019
【００４２】
ラウンドキー生成部２６０は、ユーザインタフェース部１００から伝送されたマスターキーが１２８ビットの長さを有する場合、下記の数式９によってそれぞれ３２ビットの長さを有するキースケジュールラウンド関数値を決定し、下記の数式１０によってキースケジュールラウンド関数値を連接してラウンドキーを生成する。
【数１９】
0005542896.tif 000020
【数２０】
0005542896.tif 000021
【００４３】
また、ラウンドキー生成部２６０は、ユーザインタフェース部１００から伝送されたマスターキーが１９２ビットの長さを有する場合、下記の数式１１によってそれぞれ３２ビットの長さを有するキースケジュールラウンド関数値を決定し、下記の数式１２によってキースケジュールラウンド関数値を連接してラウンドキーを生成する。
【数２１】
0005542896.tif 000022
【数２２】
0005542896.tif 000023
【００４４】
また、ラウンドキー生成部２６０は、ユーザインタフェース部１００から伝送されたマスターキーが２５６ビットの長さを有する場合、下記の数式１３によってそれぞれ３２ビットの長さを有するキースケジュールラウンド関数値を決定し、下記の数式１４によってキースケジュールラウンド関数値を連接してラウンドキーを生成する。
【数２３】
0005542896.tif 000024
【数２４】
0005542896.tif 000025
【００４５】
この時、ｘ  ｍｏｄ  ４演算は、ｘ値を４で割った余りを算出する演算を意味し、ｘ  ｍｏｄ  ６演算は、ｘ値を６で割った余りを算出する演算を意味し、ｘ  ｍｏｄ  ８演算は、ｘ値を８で割った余りを算出する演算を意味する。
【００４６】
一方、ラウンドキー生成部２６０によって生成されるラウンドキーＲＫｉは、マスターキーＭＫが１２８ビット、１９２ビットまたは２５６ビットのうちいずれか１つの長さを有しても、前記数式１０、数式１２または数式１４によって常に同一に１２８ビットの長さを有するようになる。この時、１２８ビットの長さを有するラウンドキーＲＫｉは、下記の数式１５のように、それぞれ３２ビットの長さを有するサブラウンドキーＲＫｉ［０］ないしＲＫｉ［５］の連接によって構成できる。
【数２５】
0005542896.tif 000026
【００４７】
初期変換部３００は、ユーザインタフェース部１００から平文を受信し、前記平文から初期ラウンド関数値を生成する。つまり、初期変換部３００は、数式４で表現される１２８ビットの長さを有する平文Ｐに対し、それぞれ３２ビットの長さを有するサブ平文Ｐ［０］、Ｐ［１］、Ｐ［２］、Ｐ［３］を抽出し、下記の数式１６に基づいて、前記サブ平文Ｐ［０］、Ｐ［１］、Ｐ［２］、Ｐ［３］それぞれから初期ラウンド関数値Ｘ０［０］、Ｘ０［１］、Ｘ０［２］、Ｘ０［３］を生成する。
【数２６】
0005542896.tif 000027
【００４８】
ラウンド関数処理部４００は、キースケジューラ部２００によって生成されたラウンドキーと初期変換部３００によって生成された初期ラウンド関数値を用いてラウンド関数を繰り返し処理する。この時、ラウンド関数処理部４００がラウンド関数を繰り返し処理する回数は、マスターキーが１２８ビットの長さを有する場合には２４回、マスターキーが１９２ビットの長さを有する場合には２８回、マスターキーが２５６ビットの長さを有する場合には３２回である。ラウンド関数処理部４００は、ｉ番目ラウンドで下記の数式１７のようなラウンド関数を処理する。
【数２７】
0005542896.tif 000028
【００４９】
ここで、Ｘｉ［０］、Ｘｉ［１］、Ｘｉ［２］、Ｘｉ［３］は、ｉ−１番目ラウンドでのラウンド関数の結果値を意味し、
【数２８】
0005542896.tif 000029
は、論理的排他和（ＸＯＲ、ｅＸｃｌｕｓｉｖｅ  ＯＲ）演算を意味し、＋は、法２３２足し算演算を意味し、ＲＯＬａ（ｘ）は、３２ビットの長さを有するｘ値を左にａビットだけ循環シフトした後出力する関数を意味し、ＲＯＲａ（ｘ）は、３２ビットの長さを有するｘ値を右にａビットだけ循環シフトした後出力する関数を意味する。
【００５０】
このような、ラウンド関数処理部４００のｉ番目ラウンドでのラウンド関数の処理過程を図式化すると、図３のように示すことができる。この時、３２ビットのワードにおいて最も右側のビットが最下位ビット（ＬＳＢ）に該当する。
【００５１】
最終変換部５００は、ラウンド関数処理部４００によって処理された最後のラウンドでのラウンド関数の結果値を連接して暗号文（Ｃｉｐｈｅｒｔｅｘｔ、以下、「Ｃ」と表示する。）を生成する。最終変換部５００は、最後のラウンドであるｒ番目ラウンド（マスターキーが１２８ビットの長さを有する場合にｒ＝２４、マスターキーが１９２ビットの長さを有する場合にｒ＝２８、マスターキーが２５６ビットの長さを有する場合にｒ＝３２）での結果値Ｘｒ［０］ないしＸｒ［３］を連接して暗号文Ｃを生成する。つまり、ｒ番目ラウンドでの出力結果Ｘｒ（＝Ｘｒ［０］｜｜Ｘｒ［１］｜｜Ｘｒ［２］｜｜Ｘｒ［３］）から、下記の数式１８を用いて暗号文Ｃ（＝Ｃ［０］｜｜Ｃ［１］｜｜Ｃ［２］｜｜Ｃ［３］）に変換する。
【数２９】
0005542896.tif 000030
【００５２】
最後に、暗号文出力部６００は、最終変換部５００によって生成された暗号文をユーザに出力する。
【００５３】
本発明によって出力される暗号文を平文に復号化する方法は、本発明にかかる暗号化装置１０においてキースケジューラ部２００の動作を除いた暗号化過程を逆に行うことによって達成できる。この時、復号化過程では、法２３２足し算演算の代わりに法２３２引き算演算が行われなければならない。
【００５４】
以下では、本発明にかかる暗号化方法について説明する。上述した図１ないし図３を参照した、本発明にかかる暗号化装置の動作に関する説明と一部重複する部分は省略して説明する。
【００５５】
図４は、本発明にかかる暗号化方法を説明するためのフローチャートである。
【００５６】
図４を参照すれば、本発明にかかる暗号化方法は、まず、ユーザインタフェース部がユーザから暗号化しようとする平文とマスターキーの入力を受ける（Ｓ１００）。この時、前記平文とマスターキーは、ユーザによって同時にユーザインタフェース部に入力できる。
【００５７】
次に、キースケジューラ部は、ユーザインタフェース部から伝送されたマスターキーを用いてラウンドキーを生成する（Ｓ２００）。この時、前記ステップＳ２００で生成されるラウンドキーは、１９２ビットの長さを有し、それぞれ３２ビットの長さを有するサブラウンドキーＲＫｉ［０］、ＲＫｉ［１］、ＲＫｉ［２］、ＲＫｉ［３］、ＲＫｉ［４］、ＲＫｉ［５］が連接して構成できる。
【００５８】
そして、初期変換部は、ユーザインタフェース部から伝送された平文から初期ラウンド関数値を生成する（Ｓ３００）。この時、前記ステップＳ３００では、１２８ビットの長さを有する平文からそれぞれ３２ビットの長さを有するサブ平文Ｐ［０］、Ｐ［１］、Ｐ［２］、Ｐ［３］を抽出し、サブ平文Ｐ［０］、Ｐ［１］、Ｐ［２］、Ｐ［３］それぞれから初期ラウンド関数値Ｘ０［０］、Ｘ０［１］、Ｘ０［２］、Ｘ０［３］を生成することができる。
【００５９】
次に、ラウンド関数処理部は、前記ステップＳ２００で生成されたラウンドキーと前記ステップＳ３００で生成された初期ラウンド関数値を用いてラウンド関数を繰り返し処理する（Ｓ４００）。この時、前記ステップＳ４００では、ラウンドキーと初期ラウンド関数値に基づいてラウンド関数を処理し、ｉ番目ラウンドでのラウンド関数の結果値Ｘｉ＋１［０］、Ｘｉ＋１［１］、Ｘｉ＋１［２］、Ｘｉ＋１［３］を算出することができる。また、前記ステップＳ４００では、数式
【数３０】
0005542896.tif 000031
によってＸｉ＋１［０］を算出し、数式
【数３１】
0005542896.tif 000032
によってＸｉ＋１［１］を算出し、数式
【数３２】
0005542896.tif 000033
によってＸｉ＋１［２］を算出し、数式
【数３３】
0005542896.tif 000034
によってＸｉ＋１［３］を算出することができる。ここで、Ｘｉ［０］、Ｘｉ［１］、Ｘｉ［２］、Ｘｉ［３］は、ｉ−１番目ラウンドでのラウンド関数の結果値、
【数３４】
0005542896.tif 000035
は、論理的排他和演算、＋は、法２３２足し算演算、ＲＯＬａ（ｘ）は、３２ビットの長さを有するｘ値を左にａビットだけ循環シフトした後出力する関数、ＲＯＲａ（ｘ）は、３２ビットの長さを有するｘ値を右にａビットだけ循環シフトした後出力する関数を意味する。
【００６０】
そして、最終変換部は、前記ステップＳ４００で処理される最後のラウンドでのラウンド関数の結果値から暗号文を生成する（Ｓ５００）。この時、前記ステップＳ５００では、最後のラウンドでのラウンド関数の結果値を連接して暗号文を生成する。
【００６１】
最後に、暗号文出力部が前記ステップＳ５００で生成された暗号文をユーザに出力する（Ｓ６００）。
【００６２】
図５は、図４に示されたラウンドキー生成ステップであるステップＳ２００をより具体的に説明するためのフローチャートである。
【００６３】
図５を参照すれば、ステップＳ２００は、まず、マスターキー入力部がユーザインタフェース部からマスターキーを受信し（Ｓ２２０）、キースケジュールラウンド関数値生成部がマスターキーを構成するサブマスターキー値それぞれから初期キースケジュールラウンド関数値を生成する（Ｓ２４０）。
【００６４】
そして、ラウンドキー生成部が前記ステップＳ２４０で生成された初期キースケジュールラウンド関数値と固定された定数値を用いてキースケジュールラウンド関数値を生成し（Ｓ２６０）、キースケジュールラウンド関数値を連接してラウンドキーを生成する（Ｓ２８０）。
【００６５】
上述したような、本発明にかかる暗号化方法は、プログラムで実現され、コンピュータで読み取り可能な形態で記録媒体（例えば、ＣＤ−ＲＯＭ、ＲＡＭ、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、フラッシュメモリなど）に格納できる。
【００６６】
以上、図面と明細書で最適な実施形態が開示された。ここで特定の用語が使われたが、これは単に本発明を説明するための目的で使われたものであって、意味の限定や特許請求の範囲に記載された本発明の範囲を制限するために使われたものではない。そのため、本技術分野における通常の知識を有する者であれば、これより多様な変形および均等の他の実施形態が可能であることを理解するはずである。したがって、本発明の真の技術的保護範囲は、添付した特許請求の範囲の技術的思想によって定められなければならない。
【符号の説明】
【００６７】
１０；暗号化装置
１００；ユーザインタフェース部
２００；キースケジューラ部
２２０；マスターキー入力部
２４０；キースケジュールラウンド関数値生成部
２６０；ラウンドキー生成部
３００；初期変換部
４００；ラウンド関数処理部
５００；最終変換部
６００；暗号文出力部
【図１】
0005542896.tif 000046
【図２】
0005542896.tif 000047
【図３】
0005542896.tif 000048
【図４】
0005542896.tif 000049
【図５】
0005542896.tif 000050