(57)【特許請求の範囲】
【請求項１】
所定の処理を複数回実行するラウンド関数から構成されるアルゴリズム可変型暗号装置であって、
前記ラウンド関数が、入力される鍵ビット情報に応じて、アルゴリズムが可変する部分と常に固定の部分とから構成され、
前記ラウンド関数が、
入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて入れ替える第１の巡回シフト手段と、
前記第１の巡回シフト手段に接続される排他的論理和演算手段において演算の実行の有無を鍵ビット情報に応じて決定する演算決定手段と、
前記排他的論理和演算手段の演算結果に対して非線形処理を行う非線形関数器と、
からなり、
前記第１の巡回シフト手段、演算決定手段、非線形関数器の処理を所定回数実行することを特徴とするアルゴリズム可変型暗号装置。
【請求項２】
前記演算決定手段が、「１」あるいは「０」からなる１ビットの鍵ビット情報により、前記排他的論理和演算手段における演算の実行を決定することを特徴とする請求項１に記載のアルゴリズム可変型暗号装置。
【請求項３】
前記非線形関数が、非線形置換と線形置換とから構成されることを特徴とする請求項１または請求項２に記載のアルゴリズム可変型暗号装置。
【請求項４】
前記非線形関数がＡＥＳのラウンド関数であることを特徴とする請求項３に記載のアルゴリズム可変型暗号装置。
【請求項５】
前記ラウンド関数が、前記入力データのビット数以上の前記鍵ビット情報が入力されるまで、前記所定の処理を実行することを特徴とする請求項１から請求項４に記載のアルゴリズム可変型暗号装置。
【請求項６】
所定の処理を複数回実行し、第１の巡回シフト手段と排他的論理和演算器と非線形関数器とからなるラウンド関数により構成されるアルゴリズム可変型暗号装置におけるアルゴリズム可変型暗号方法であって、
前記ラウンド関数の第１の巡回シフト手段が、データを入力し、該入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて入れ替える第１のステップと  前記ラウンド関数の前記第１の巡回シフト手段に接続される排他的論理和演算器において演算の実行の有無を鍵ビット情報に応じて決定する第２のステップと、
前記排他的論理和演算器の演算結果に対して前記非線形関数器が、非線形処理を行う第３のステップと、
前記第１のステップから第３のステップを前記所定回数実行する第４のステップと、
を備えたことを特徴とするアルゴリズム可変型暗号方法。
【請求項７】
所定の処理を複数回実行し、第１の巡回シフト手段と排他的論理和演算器と非線形関数器とからなるラウンド関数により構成されるアルゴリズム可変型暗号装置におけるアルゴリズム可変型暗号方法をコンピュータに実行させるプログラムであって、
前記ラウンド関数の第１の巡回シフト手段が、データを入力し、該入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて入れ替える第１のステップと、
前記ラウンド関数の前記第１の巡回シフト手段に接続される排他的論理和演算器において演算の実行の有無を鍵ビット情報に応じて決定する第２のステップと、
前記排他的論理和演算器の演算結果に対して前記非線形関数器が、非線形処理を行う第３のステップと、
前記第１のステップから第３のステップを前記所定回数実行する第４のステップと、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一定の安全性と処理性能を保証するアルゴリズム可変型暗号装置、アルゴリズム可変型復号装置、アルゴリズム可変型暗号方法、アルゴリズム可変型復号方法およびプログラムに関する。
【背景技術】
【０００２】
近年、インターネットの目覚しい普及により、コンピュータを利用した様々なサービスが提供されている。こうして提供されるサービスの多くは、その通信内容を秘匿化するために暗号が利用されている。ここで、暗号方式としては、１つの鍵で暗号化と復号化とを行う共通鍵暗号方式が一般的であるが、この共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式とに大別される。
【０００３】
ストリーム暗号方式の一例としては、乱数系列のビットデータを入力し、変換されたビットデータを複数の内部メモリから出力する非線形関数器であって、入力した乱数系列のビットデータと複数の内部メモリのうち一部の内部メモリデータとを加算する加算器と、入力データを非線形置換する非線形置換器と、を備え、複数の内部メモリが少なくとも非線形置換器を介して、環状に接続されるストリーム暗号装置が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−３２７９８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
また、近年、アルゴリズム公開型の暗号アルゴリズムが主流となっているが、安全性を考慮して、アルゴリズムを秘匿にする方式もある。しかしながら、アルゴリズム秘匿型の方式においては、リバースエンジニアリングを考慮した場合、アルゴリズムを固定とせず、鍵によりアルゴリズムを変更するアルゴリズム可変型暗号にしたいという要求がある。
【０００６】
そこで、本発明は、上述の課題に鑑みてなされたものであり、一定の安全性と処理性能を保証しつつ、鍵によりアルゴリズムを可変するアルゴリズム可変型暗号装置、アルゴリズム可変型復号装置、アルゴリズム可変型暗号方法、アルゴリズム可変型復号方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【０００８】
（１）本発明は、所定の処理を複数回実行するラウンド関数から構成されるアルゴリズム可変型暗号装置であって、前記ラウンド関数が、入力される鍵ビット情報に応じて、アルゴリズムが可変する部分と常に固定の部分とから構成されることを特徴とするアルゴリズム可変型暗号装置を提案している。
【０００９】
この発明によれば、ラウンド関数が、入力される鍵ビット情報に応じて、アルゴリズムが可変する部分と常に固定の部分とから構成される。したがって、鍵ビット情報によりアルゴリズムの特定部分を可変できることから、一定の安全性と処理性能を保証することができる。
【００１０】
（２）本発明は、（１）のアルゴリズム可変型暗号装置について、前記ラウンド関数が、入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて入れ替える第１の巡回シフト手段（例えば、図１の巡回シフト部１１０ａ、１１０ｂに相当）と、前記第１の巡回シフト手段に接続される排他的論理和演算手段（例えば、図１の排他的論理和演算器１２０ａ、１２０ｂに相当）において演算の実行の有無を鍵ビット情報に応じて決定する演算決定手段（例えば、図１の演算決定部１３０ａ、１３０ｂに相当）と、前記排他的論理和演算手段の演算結果に対して非線形処理を行う非線形関数器（例えば、図１の非線形関数器１４０ａ、１４０ｂに相当）と、からなり、前記第１の巡回シフト手段、演算決定手段、非線形関数器の処理を所定回数実行することを特徴とするアルゴリズム可変型暗号装置を提案している。
【００１１】
この発明によれば、ラウンド関数の第１の巡回シフト手段は、入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて入れ替える。演算決定手段は、第１の巡回シフト手段に接続される排他的論理和演算手段において演算の実行の有無を鍵ビット情報に応じて決定する。非線形関数器は、排他的論理和演算手段の演算結果に対して非線形処理を行う。そして、第１の巡回シフト手段、演算決定手段、非線形関数器の処理を所定回数実行する。つまり、アルゴリズムの可変部分は、安全性と性能に影響を与えない第１の巡回シフト手段と演算決定手段とで構成されるため、上記の方式でアルゴリズムを可変しても、安全性や性能を一定のレベルに保つことができる。
【００１２】
（３）本発明は、（２）のアルゴリズム可変型暗号装置について、前記演算決定手段（例えば、図１の演算決定部１３０ａ、１３０ｂに相当）が、「１」あるいは「０」からなる１ビットの鍵ビット情報により、前記排他的論理和演算手段における演算の実行を決定することを特徴とするアルゴリズム可変型暗号装置を提案している。
【００１３】
この発明によれば、演算決定手段が、「１」あるいは「０」からなる１ビットの鍵ビット情報により、排他的論理和演算手段における演算の実行を決定する。具体的には、鍵ビット情報が「１」の時には、入力データに「１」をかけて出力し、鍵ビット情報が「０」の時には、入力データに「０」をかけて出力する。そのため、１ビットの鍵ビット情報により、排他的論理和演算手段における演算の実行の可否を決定することができる。
【００１４】
（４）本発明は、（２）または（３）のアルゴリズム可変型暗号装置について、前記非線形関数（例えば、図１の非線形関数器１４０ａ、１４０ｂに相当）が、非線形置換と線形置換とから構成されることを特徴とするアルゴリズム可変型暗号装置を提案している。
【００１５】
この発明によれば、非線形関数が、非線形置換と線形置換とから構成される。
【００１６】
（５）本発明は、（４）のアルゴリズム可変型暗号装置について、前記非線形関数（例えば、図１の非線形関数器１４０ａ、１４０ｂに相当）がＡＥＳのラウンド関数であることを特徴とするアルゴリズム可変型暗号装置を提案している。
【００１７】
この発明によれば、非線形関数がＡＥＳのラウンド関数である。つまり、ＡＥＳのラウンド関数は、逆変換関数が存在するため、この逆変換関数を用いることにより、復号処理を行うことができる。
【００１８】
（６）本発明は、（１）から（５）のアルゴリズム可変型暗号装置について、前記ラウンド関数が、前記入力データのビット数以上の前記鍵ビット情報が入力されるまで、前記所定の処理を実行することを特徴とするアルゴリズム可変型暗号装置を提案している。
【００１９】
この発明によれば、ラウンド関数が、入力データのビット数以上の鍵ビット情報が入力されるまで、所定の処理を実行する。つまり、本発明のアルゴリズム可変型暗号装置の安全性は、非線形関数により担保されているが、少なくとも、入力データのビット数以上の鍵ビット情報が入力されるまで、所定の処理を実行することにより、鍵に依存することなく安全性を担保することができる。
【００２０】
（７）本発明は、（２）に記載のアルゴリズム可変型暗号装置において暗号化されたデータを復号するラウンド関数から構成されるアルゴリズム可変型復号装置であって、前記ラウンド関数が、暗号化されたデータを入力し、該入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて前記第１の巡回シフト手段と逆方向に巡回させる第２の巡回シフト手段（例えば、図３の巡回シフト部１５０ａ、１５０ｂに相当）と、前記第２の巡回シフト手段に接続される排他的論理和演算手段（例えば、図３の排他的論理和演算器１２０ａ、１２０ｂに相当）において演算の実行の有無を鍵ビット情報に応じて決定する演算決定手段（例えば、図３の演算決定部１３０ａ、１３０ｂに相当）と、前記排他的論理和演算手段の演算結果に対して前記非線形関数の逆関数を用いて非線形処理を行う非線形関数器（例えば、図３の非線形関数器１６０ａ、１６０ｂに相当）と、からなり、前記第２の巡回シフト手段、演算決定手段、非線形関数器の処理を所定回数実行することを特徴とするアルゴリズム可変型復号装置を提案している。
【００２１】
この発明によれば、ラウンド関数の第２の巡回シフト手段は、暗号化されたデータを入力し、入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて第１の巡回シフト手段と逆方向に巡回させる。演算決定手段は、第２の巡回シフト手段に接続される排他的論理和演算手段において演算の実行の有無を鍵ビット情報に応じて決定する。非線形関数器は、排他的論理和演算手段の演算結果に対して非線形関数の逆関数を用いて非線形処理を行う。そして、第２の巡回シフト手段、演算決定手段、非線形関数器の処理を所定回数実行する。したがって、巡回シフト手段の巡回方向を逆方向とし、非線形関数の逆関数を用いることにより、アルゴリズム可変型暗号装置において暗号化された情報を簡易に復号することができる。
【００２２】
（８）本発明は、所定の処理を複数回実行し、第１の巡回シフト手段と排他的論理和演算器と非線形関数器とからなるラウンド関数により構成されるアルゴリズム可変型暗号装置におけるアルゴリズム可変型暗号方法であって、前記ラウンド関数の第１の巡回シフト手段が、データを入力し、該入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて入れ替える第１のステップ（例えば、図２のステップＳ１０１に相当）と、前記ラウンド関数の前記第１の巡回シフト手段に接続される排他的論理和演算器において演算の実行の有無を鍵ビット情報に応じて決定する第２のステップ（例えば、図２のステップＳ１０２に相当）と、前記排他的論理和演算器の演算結果に対して前記非線形関数器が、非線形処理を行う第３のステップ（例えば、図２のステップＳ１０３に相当）と、前記第１のステップから第３のステップを前記所定回数実行する第４のステップ（例えば、図２のステップＳ１０４に相当）と、を備えたことを特徴とするアルゴリズム可変型暗号方法を提案している。
【００２３】
この発明によれば、ラウンド関数の第１の巡回シフト手段が、データを入力し、該入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて入れ替え、ラウンド関数の第１の巡回シフト手段に接続される排他的論理和演算器において演算の実行の有無を鍵ビット情報に応じて決定し、排他的論理和演算器の演算結果に対して非線形関数器が、非線形処理を行う。そして、第１のステップから第３のステップを所定回数実行する。つまり、アルゴリズムの可変部分は、安全性と性能に影響を与えない第１の巡回シフト手段と演算決定手段とで構成されるため、上記の方式でアルゴリズムを可変しても、安全性や性能を一定のレベルに保つことができる。
【００２４】
（９）本発明は、（８）に記載のアルゴリズム可変型暗号方法において暗号化されたデータを復号し、所定の処理を複数回実行し、第２の巡回シフト手段と排他的論理和演算器と非線形関数器からなるラウンド関数により構成されるアルゴリズム可変型復号装置におけるアルゴリズム可変型復号方法であって、前記ラウンド関数の第２の巡回シフト手段が、暗号化されたデータを入力し、該入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて前記第１の巡回シフト手段と逆方向に巡回させる第１のステップ（例えば、図４のステップＳ２０１に相当）と、前記ラウンド関数の前記第２の巡回シフト手段に接続される排他的論理和演算器において演算の実行の有無を鍵ビット情報に応じて決定する第２のステップ（例えば、図４のステップＳ２０２に相当）と、前記排他的論理和演算器の演算結果に対して前記非線形関数の逆関数を用いて前記非線形関数器が非線形処理を行う第３のステップ（例えば、図４のステップＳ２０３に相当）と、前記第１のステップから第３のステップを前記所定回数実行する第４のステップ（例えば、図４のステップＳ２０４に相当）と、を備えたことを特徴とするアルゴリズム可変型復号方法を提案している。
【００２５】
この発明によれば、ラウンド関数の第２の巡回シフト手段が、暗号化されたデータを入力し、入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて第１の巡回シフト手段と逆方向に巡回させ、ラウンド関数の第２の巡回シフト手段に接続される排他的論理和演算器において演算の実行の有無を鍵ビット情報に応じて決定し、排他的論理和演算器の演算結果に対して非線形関数の逆関数を用いて非線形関数器が非線形処理を行う。そして、第１のステップから第３のステップを所定回数実行する。したがって、巡回シフト手段の巡回方向を逆方向とし、非線形関数の逆関数を用いることにより、アルゴリズム可変型暗号装置において暗号化された情報を簡易に復号することができる。
【００２６】
（１０）本発明は、所定の処理を複数回実行し、第１の巡回シフト手段と排他的論理和演算器と非線形関数器とからなるラウンド関数により構成されるアルゴリズム可変型暗号装置におけるアルゴリズム可変型暗号方法をコンピュータに実行させるプログラムであって、前記ラウンド関数の第１の巡回シフト手段が、データを入力し、該入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて入れ替える第１のステップ（例えば、図２のステップＳ１０１に相当）と、前記ラウンド関数の前記第１の巡回シフト手段に接続される排他的論理和演算器において演算の実行の有無を鍵ビット情報に応じて決定する第２のステップ（例えば、図２のステップＳ１０２に相当）と、前記排他的論理和演算器の演算結果に対して前記非線形関数器が、非線形処理を行う第３のステップ（例えば、図２のステップＳ１０３に相当）と、前記第１のステップから第３のステップを前記所定回数実行する第４のステップ（例えば、図２のステップＳ１０４に相当）と、をコンピュータに実行させるプログラムを提案している。
【００２７】
この発明によれば、ラウンド関数の第１の巡回シフト手段が、データを入力し、該入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて入れ替え、ラウンド関数の第１の巡回シフト手段に接続される排他的論理和演算器において演算の実行の有無を鍵ビット情報に応じて決定し、排他的論理和演算器の演算結果に対して非線形関数器が、非線形処理を行う。そして、第１のステップから第３のステップを所定回数実行する。つまり、アルゴリズムの可変部分は、安全性と性能に影響を与えない第１の巡回シフト手段と演算決定手段とで構成されるため、上記の方式でアルゴリズムを可変しても、安全性や性能を一定のレベルに保つことができる。
【００２８】
（１１）本発明は、（１０）のアルゴリズム可変型暗号方法において暗号化されたデータを復号し、所定の処理を複数回実行し、第２の巡回シフト手段と排他的論理和演算器と非線形関数器からなるラウンド関数により構成されるアルゴリズム可変型復号装置におけるアルゴリズム可変型復号方法をコンピュータに実行させるプログラムであって、前記ラウンド関数の第２の巡回シフト手段が、暗号化されたデータを入力し、該入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて前記第１の巡回シフト手段と逆方向に巡回させる第１のステップ（例えば、図４のステップＳ２０１に相当）と、前記ラウンド関数の前記第２の巡回シフト手段に接続される排他的論理和演算器において演算の実行の有無を鍵ビット情報に応じて決定する第２のステップ（例えば、図４のステップＳ２０２に相当）と、前記排他的論理和演算器の演算結果に対して前記非線形関数の逆関数を用いて前記非線形関数器が非線形処理を行う第３のステップ（例えば、図４のステップＳ２０３に相当）と、前記第１のステップから第３のステップを前記所定回数実行する第４のステップ（例えば、図４のステップＳ２０４に相当）と、をコンピュータに実行させるプログラムを提案している。
【００２９】
この発明によれば、ラウンド関数の第２の巡回シフト手段が、暗号化されたデータを入力し、入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて第１の巡回シフト手段と逆方向に巡回させ、ラウンド関数の第２の巡回シフト手段に接続される排他的論理和演算器において演算の実行の有無を鍵ビット情報に応じて決定し、排他的論理和演算器の演算結果に対して非線形関数の逆関数を用いて非線形関数器が非線形処理を行う。そして、第１のステップから第３のステップを所定回数実行する。したがって、巡回シフト手段の巡回方向を逆方向とし、非線形関数の逆関数を用いることにより、アルゴリズム可変型暗号装置において暗号化された情報を簡易に復号することができる。
【発明の効果】
【００３０】
本発明によれば、安全性や性能を一定レベルに保ちつつ、鍵ビット情報により、アルゴリズムを可変することができるという効果がある。
【図面の簡単な説明】
【００３１】
【図１】本発明に係るアルゴリズム可変型暗号装置の構成を示す図である。
【図２】本発明に係るアルゴリズム可変型暗号装置の処理を示す図である。
【図３】本発明に係るアルゴリズム可変型復号装置の構成を示す図である。
【図４】本発明に係るアルゴリズム可変型復号装置の処理を示す図である。
【発明を実施するための形態】
【００３２】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００３３】
＜アルゴリズム可変型暗号装置の構成＞
図１を用いて、本発明に係るアルゴリズム可変型暗号装置の構成について説明する。なお、本実施形態に係るアルゴリズム可変型暗号装置は、所定の処理を複数回実行するラウンド関数から構成されるものであり、ラウンド関数が、入力される鍵ビット情報に応じて、アルゴリズムが可変する部分と常に固定の部分とからなる。
【００３４】
本実施形態に係るアルゴリズム可変型暗号装置は、ラウンド関数から構成され、その詳細は、図１に示すように、巡回シフト部１１０ａ、１１０ｂと、排他的論理和演算器１２０ａ、１２０ｂと、演算決定部１３０ａ、１３０ｂと、非線形関数器１４０ａ、１４０ｂとから構成されている。図１では、１２８ビットの平文データを暗号化するアルゴリズム可変型暗号装置を例示して説明する。なお、本実施形態では、巡回シフト部、排他的論理和演算器、非線形関数器からなるブロックが２つ並列されている場合を例示しているが、並列数は、これに限らず、３つ以上でもよい。
【００３５】
巡回シフト部１１０ａ、１１０ｂは、入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて入れ替える。具体的には、１２８ビットの入力データを４バイトの倍数分、例えば、右へ巡回シフトするものとする。すなわち、４バイトごとに区切られた入力データを鍵ビットｎに応じて入れ替える処理である。このため高速に実装することができる。また、このときシフトパターンは４通りあるため、２ビットの鍵ビットの入力が可能である。
【００３６】
排他的論理和演算器１２０ａ、１２０ｂは、２つの入力データに対して、排他的論理和演算を実行する。
【００３７】
演算決定部１３０ａ、１３０ｂは、巡回シフト部１１０ａ、１１０ｂに接続される排他的論理和演算器１２０ａ、１２０ｂにおいて演算の実行の有無を鍵ビット情報に応じて決定する。具体的には、鍵ビットに応じてデータに「０」をかけるか「１」をかけるかを決定する。つまり、鍵ビットが「０」である場合には、排他的論理和演算器１２０ａ、１２０ｂに入力されるビット列はオール「０」となるため、実際は排他的論理和演算が実行されない。本処理に対しては、１ビットの鍵ビットが入力可能である。
【００３８】
非線形関数器１４０ａ、１４０ｂは、排他的論理和演算器１２０ａ、１２０ｂの演算結果に対して非線形処理を行う。非線形関数器１４０ａ、１４０ｂは、非線形置換と線形変換から構成される関数である。この関数は、逆変換関数が存在すればどのような関数でも良いが、ＡＥＳのラウンド関数が好ましい。なお、この関数は鍵ビットに関係なく変化しない。
【００３９】
本実施形態に係るアルゴリズム可変型暗号装置においては、１ラウンドで、２＊２＋１＊２＝６ビットの鍵ビットを入力できる。そのため、Ｎラウンドの処理を実行すると、６Ｎビットの鍵ビットを実行できる。そのため、本実施形態のように、１２８ビットの鍵を入力するためには、２２ラウンドあれば良い。また、本実施形態に係るアルゴリズム可変型暗号装置の安全性は、本質的に、非線形関数器１４０ａ、１４０ｂによって担保されている。そのため、ラウンド数が十分大きければ、鍵に関係なく安全性が保証される。また、本実施形態に係るアルゴリズム可変型暗号装置においては、鍵スケジュールを必要としないというメリットがある。
【００４０】
＜アルゴリズム可変型暗号装置の処理＞
図２を用いて、本発明に係るアルゴリズム可変型暗号装置の処理について説明する。
【００４１】
まず、ラウンド関数の巡回シフト部１１０ａ、１１０ｂが、データを入力し、その入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて入れ替える（ステップＳ１０１）。
【００４２】
次に、ラウンド関数の巡回シフト部１１０ａ、１１０ｂに接続される排他的論理和演算器１２０ａ、１２０ｂにおいて演算の実行の有無を鍵ビット情報に応じて決定する（ステップＳ１０２）。
【００４３】
さらに、排他的論理和演算器１２０ａ、１２０ｂの演算結果に対して非線形関数器１４０ａ、１４０ｂが、非線形処理を行い（ステップＳ１０３）、そして、ステップＳ１０１からステップＳ１０３を所定回数実行する（ステップＳ１０４）。
【００４４】
したがって、以上説明したように、本実施形態によれば、アルゴリズムの可変部分は、安全性と性能に影響を与えない第１の巡回シフト手段と演算決定手段とで構成されるため、上記の方式でアルゴリズムを可変しても、安全性や性能を一定のレベルに保つことができる。
【００４５】
＜アルゴリズム可変型復号装置の構成＞
図３を用いて、本発明に係るアルゴリズム可変型復号装置の構成について説明する。本実施形態に係るアルゴリズム可変型復号装置は、上記のアルゴリズム可変型暗号装置により暗号化したデータを復号するものである。
【００４６】
本実施形態に係るアルゴリズム可変型復号装置は、ラウンド関数から構成され、その詳細は、図３に示すように、巡回シフト部１５０ａ、１５０ｂと、排他的論理和演算器１２０ａ、１２０ｂと、演算決定部１３０ａ、１３０ｂと、非線形関数器１６０ａ、１６０ｂとから構成されている。図３では、１２８ビットの暗号文データを復号化するアルゴリズム可変型復号装置を例示して説明する。なお、本実施形態では、巡回シフト部、排他的論理和演算器、非線形関数器からなるブロックが２つ並列されている場合を例示しているが、並列数は、これに限らず、３つ以上でもよい。また、第１の実施形態と同一の符号を付す構成要素については、同様の機能を有するものであることから、その詳細な説明は、省略する。
【００４７】
巡回シフト部１５０ａ、１５０ｂは、暗号化されたデータを入力し、その入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて巡回シフト部１１０ａ、１１０ｂと逆方向に巡回させる。
【００４８】
非線形関数器１６０ａ、１６０ｂは、排他的論理和演算器１２０ａ、１２０ｂの演算結果に対して非線形処理を行う。非線形関数器１６０ａ、１６０ｂは、非線形関数器１４０ａ、１４０ｂの逆変換関数で構成されている。
【００４９】
＜アルゴリズム可変型復号装置の処理＞
図４を用いて、本発明に係るアルゴリズム可変型暗号装置の処理について説明する。
【００５０】
まず、ラウンド関数の巡回シフト部１５０ａ、１５０ｂが、暗号化されたデータを入力し、該入力されたデータを所定バイトごとに区切ったデータ群を鍵ビット情報に応じて巡回シフト部１１０ａ、１１０ｂと逆方向に巡回させる（ステップＳ２０１）。
【００５１】
次に、ラウンド関数の巡回シフト部１５０ａ、１５０ｂに接続される排他的論理和演算器１２０ａ、１２０ｂにおいて演算の実行の有無を鍵ビット情報に応じて決定する（ステップＳ２０２）。
【００５２】
さらに、排他的論理和演算器１２０ａ、１２０ｂの演算結果に対して非線形関数器１６０ａ、１６０ｂが、非線形処理を行い（ステップＳ２０３）、そして、ステップＳ２０１からステップＳ２０３を所定回数実行する（ステップＳ２０４）。
【００５３】
したがって、以上説明したように、本実施形態によれば、巡回シフト手段の巡回方向を逆方向とし、非線形関数の逆関数を用いることにより、アルゴリズム可変型暗号装置において暗号化された情報を簡易に復号することができる。
【００５４】
なお、アルゴリズム可変型暗号装置およびアルゴリズム可変型復号装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをアルゴリズム可変型暗号装置およびアルゴリズム可変型復号装置に読み込ませ、実行することによって本発明のアルゴリズム可変型暗号装置およびアルゴリズム可変型復号装置を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００５５】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００５６】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００５７】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００５８】
１１０ａ；巡回シフト部
１１０ｂ；巡回シフト部
１２０ａ；排他的論理和演算器
１２０ｂ；排他的論理和演算器
１３０ａ；演算決定部
１３０ｂ；演算決定部
１４０ａ；非線形関数器
１４０ｂ；非線形関数器
１５０ａ；巡回シフト部
１５０ｂ；巡回シフト部
１６０ａ；非線形関数器
１６０ｂ；非線形関数器
【図１】
0005665588.tif 000002
【図２】
0005665588.tif 000003
【図３】
0005665588.tif 000004
【図４】
0005665588.tif 000005