入力データを所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を1回以上実行するラウンド関数処理手段と、前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、所定長のMACを生成する終端処理手段と、を備え、前記ラウンド関数処理手段が、入力される鍵のビット情報に応じてアルゴリズムが可変する部分と、常にアルゴリズムが固定の部分とから構成されることを特徴とするアルゴリズム可変型MAC生成装置。前記ラウンド関数処理手段が、前記区切った複数のデータ群それぞれに、前記鍵のビット情報に応じて決定したビットの巡回シフトを行う巡回シフト手段と、前記巡回シフト手段に接続され、当該巡回シフト手段で巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで隣に位置するデータ群に対して排他的論理和演算を実行する排他的論理和演算手段と、前記排他的論理和演算手段による演算の実行の有無を前記鍵のビット情報に応じて決定する演算決定手段と、前記排他的論理和演算手段から出力された複数のデータ群それぞれに非線形置換および線形変換を行う攪拌手段と、からなり、前記巡回シフト手段、前記排他的論理和演算手段、前記演算決定手段、および前記攪拌手段の処理を所定回数実行することを特徴とする請求項1に記載のアルゴリズム可変型MAC生成装置。前記ラウンド関数処理手段が、前記攪拌手段の処理を実行する前に、前記排他的論理和演算手段より出力された複数のデータ群をデータ群単位で巡回シフトを行うことを特徴とする請求項2に記載のアルゴリズム可変型MAC生成装置。前記演算決定手段が、1あるいは0である前記鍵の所定位置のビット情報により、前記排他的論理和演算手段における演算の実行の有無を決定することを特徴とする請求項2または3に記載のアルゴリズム可変型MAC生成装置。前記攪拌手段が、AESのラウンド関数を用いて、非線形置換および線形変換を行うことを特徴とする請求項2から請求項4のいずれか1項に記載のアルゴリズム可変型MAC生成装置。入力データを所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を1回以上実行するラウンド関数処理手段と、前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する終端処理手段と、を備え、前記ラウンド関数処理手段が、入力される任意の固定値のビット情報に応じてアルゴリズムが可変する部分と、常にアルゴリズムが固定の部分とから構成されることを特徴とするアルゴリズム可変型ハッシュ関数生成装置。所定の処理を1回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型MAC生成装置におけるアルゴリズム可変型MAC生成方法であって、前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される鍵のビット情報に応じて決定したビットの巡回シフトを行う第1のステップと、前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記鍵のビット情報に応じて決定する第2のステップと、前記排他的論理和演算手段が、前記第2のステップで決定された演算の実行の有無に基づいて、前記第1のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第3のステップと、前記攪拌手段が、前記第3のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第4のステップと、前記ラウンド関数処理手段が、前記第4のステップから出力された複数のデータ群を前記入力データとして、前記第1のステップから前記第4のステップまでの処理を所定回数実行する第5のステップと、前記終端処理手段が、前記第5のステップの後に、前記第4のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のMACを生成する第6のステップと、を含むことを特徴とするアルゴリズム可変型MAC生成方法。所定の処理を1回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型ハッシュ関数生成装置におけるアルゴリズム可変型ハッシュ関数生成方法であって、前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される任意の固定値のビット情報に応じて決定したビットの巡回シフトを行う第1のステップと、前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記固定値のビット情報に応じて決定する第2のステップと、前記排他的論理和演算手段が、前記第2のステップで決定された演算の実行の有無に基づいて、前記第1のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第3のステップと、前記攪拌手段が、前記第3のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第4のステップと、前記ラウンド関数処理手段が、前記第4のステップから出力された複数のデータ群を前記入力データとして、前記第1のステップから前記第4のステップまでの処理を所定回数実行する第5のステップと、前記終端処理手段が、前記第5のステップの後に、前記第4のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する第6のステップと、を含むことを特徴とするアルゴリズム可変型ハッシュ関数生成方法。所定の処理を1回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型MAC生成装置におけるアルゴリズム可変型MAC生成方法をコンピュータに実行させるプログラムであって、前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される鍵のビット情報に応じて決定したビットの巡回シフトを行う第1のステップと、前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記鍵のビット情報に応じて決定する第2のステップと、前記排他的論理和演算手段が、前記第2のステップで決定された演算の実行の有無に基づいて、前記第1のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第3のステップと、前記攪拌手段が、前記第3のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第4のステップと、前記ラウンド関数処理手段が、前記第4のステップから出力された複数のデータ群を前記入力データとして、前記第1のステップから前記第4のステップまでの処理を所定回数実行する第5のステップと、前記終端処理手段が、前記第5のステップの後に、前記第4のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のMACを生成する第6のステップと、をコンピュータに実行させるプログラム。所定の処理を1回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型ハッシュ関数生成装置におけるアルゴリズム可変型ハッシュ関数生成方法をコンピュータに実行させるプログラムであって、前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される任意の固定値のビット情報に応じて決定したビットの巡回シフトを行う第1のステップと、前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記固定値のビット情報に応じて決定する第2のステップと、前記排他的論理和演算手段が、前記第2のステップで決定された演算の実行の有無に基づいて、前記第1のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第3のステップと、前記攪拌手段が、前記第3のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第4のステップと、前記ラウンド関数処理手段が、前記第4のステップから出力された複数のデータ群を前記入力データとして、前記第1のステップから前記第4のステップまでの処理を所定回数実行する第5のステップと、前記終端処理手段が、前記第5のステップの後に、前記第4のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する第6のステップと、をコンピュータに実行させるプログラム。しかしながら、秘匿型のアルゴリズムの場合、一度アルゴリズムがばれてしまうと2度と使えないという問題点があった。そこで、秘匿型のアルゴリズムの場合においては、リバースエンジニアリングを考慮し、アルゴリズムを固定とせず、アルゴリズムを変更するアルゴリズム可変型暗号にしたいという要求があった。ところが、MACアルゴリズムおよびハッシュ関数においては、回路のごく一部を変更する場合にも、安全性を保障するためには専門家による詳細な検証が必要となること等から、アルゴリズムの変更は極めて困難であるという問題点があった。そこで、本発明は、上述の課題に鑑みてなされたものであり、安全性を確保しつつ、鍵のビット情報によりアルゴリズムを変化させることができるアルゴリズム可変型MAC生成装置、アルゴリズム可変型ハッシュ関数生成装置、アルゴリズム可変型MAC生成方法、アルゴリズム可変型ハッシュ関数生成方法、およびプログラムを提供することを目的とする。本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。1本発明は、入力データを所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を1回以上実行するラウンド関数処理手段例えば、図1のラウンド関数処理部100に相当と、前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、所定長のMACを生成する終端処理手段例えば、図1の終端処理部200に相当と、を備え、前記ラウンド関数処理手段が、入力される鍵のビット情報に応じてアルゴリズムが可変する部分と、常にアルゴリズムが固定の部分とから構成されることを特徴とするアルゴリズム可変型MAC生成装置を提案している。この発明によれば、ラウンド関数処理手段は、入力される鍵のビット情報に応じてアルゴリズムが可変する部分と、常にアルゴリズムが固定の部分とから構成され、入力データを所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を1回以上実行する。終端処理手段は、ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、所定長のMACを生成する。したがって、ラウンド関数処理手段が、鍵のビット情報によりアルゴリズムを可変する部分と、常にアルゴリズムが可変しない固定の部分とから構成されることにより安全性を確保することができる。また、終端処理手段を備えることにより、MACの特性である一方向性を確保することができる。2本発明は、1のアルゴリズム可変型MAC生成装置について、前記ラウンド関数処理手段が、前記区切った複数のデータ群それぞれに、前記鍵のビット情報に応じて決定したビットの巡回シフトを行う巡回シフト手段例えば、図1の巡回シフト部110a~110dに相当と、前記巡回シフト手段に接続され、当該巡回シフト手段で巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで隣に位置するデータ群に対して排他的論理和演算を実行する排他的論理和演算手段例えば、図1の排他的論理和演算部120a~120fに相当と、前記排他的論理和演算手段による演算の実行の有無を前記鍵のビット情報に応じて決定する演算決定手段例えば、図1のスイッチ部130a~130fに相当と、前記排他的論理和演算手段から出力された複数のデータ群それぞれに非線形置換および線形変換を行う攪拌手段例えば、図1の攪拌部140a~140dに相当と、からなり、前記巡回シフト手段、前記排他的論理和演算手段、前記演算決定手段、および前記攪拌手段の処理を所定回数実行することを特徴とするアルゴリズム可変型MAC生成装置を提案している。この発明によれば、巡回シフト手段は、区切った複数のデータ群それぞれに、鍵のビット情報に応じて決定したビットの巡回シフトを行う。排他的論理和演算手段は、巡回シフト手段に接続され、巡回シフト手段で巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、他方の端のデータ群まで達すると、他方の端のデータ群から一方の端のデータ群まで隣に位置するデータ群に対して排他的論理和演算を実行する。演算決定手段は、排他的論理和演算手段による演算の実行の有無を鍵のビット情報に応じて決定する。攪拌手段は、排他的論理和演算手段から出力された複数のデータ群それぞれに非線形置換および線形変換を行う。そして、ラウンド関数処理手段は、巡回シフト手段、排他的論理和演算手段、演算決定手段、および攪拌手段の処理を所定回数実行する。したがって、アルゴリズムの可変部分を、安全性と性能に影響を与えない巡回シフト手段、排他的論理和演算手段、および演算決定手段で構成することによって、鍵のビット情報によりアルゴリズムを可変しても、安全性や性能を確保することができる。3本発明は、2のアルゴリズム可変型MAC生成装置について、前記ラウンド関数処理手段が、前記攪拌手段の処理を実行する前に、前記排他的論理和演算手段より出力された複数のデータ群をデータ群単位で巡回シフトを行うことを特徴とするアルゴリズム可変型MAC生成装置を提案している。この発明によれば、ラウンド関数処理手段が、攪拌手段の処理を実行する前に、排他的論理和演算手段より出力された複数のデータ群をデータ群単位で巡回シフトを行う。したがって、複数のデータ群をデータ群単位で巡回シフト、すなわち、データ群の順番を入れ替えることによって、より高い安全性を確保することができる。4本発明は、2または3のアルゴリズム可変型MAC生成装置について、前記演算決定手段が、1あるいは0である前記鍵の所定位置のビット情報により、前記排他的論理和演算手段における演算の実行の有無を決定することを特徴とするアルゴリズム可変型MAC生成装置を提案している。この発明によれば、演算決定手段が、1あるいは0である鍵の所定位置のビット情報により、排他的論理和演算手段における演算の実行を決定する。したがって、排他的論理和演算手段における演算の有無を鍵の所定位置のビット情報により決定することができる。5本発明は、2から4のアルゴリズム可変型MAC生成装置について、前記攪拌手段が、AESのラウンド関数を用いて、非線形置換および線形変換を行うことを特徴とするアルゴリズム可変型MAC生成装置を提案している。この発明によれば、攪拌手段が、AESのラウンド関数を用いて、非線形置換および線形変換を行う。したがって、一定の安全性を確保しているAESのラウンド関数を用いることにより、より高い安全性をアルゴリズム可変型MAC生成装置に確保することができる。6本発明は、入力データを所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を1回以上実行するラウンド関数処理手段例えば、図1のラウンド関数処理部100に相当と、前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する終端処理手段例えば、図1の終端処理部200に相当と、を備え、前記ラウンド関数処理手段が、入力される任意の固定値のビット情報に応じてアルゴリズムが可変する部分と、常にアルゴリズムが固定の部分とから構成されることを特徴とするアルゴリズム可変型ハッシュ関数生成装置を提案している。この発明によれば、ラウンド関数処理手段は、入力される任意の固定値のビット情報に応じてアルゴリズムが可変する部分と、常にアルゴリズムが固定の部分とから構成され、入力データを所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を1回以上実行する。終端処理手段は、ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する。したがって、ラウンド関数処理手段が、任意の固定値のビット情報によりアルゴリズムを可変する部分と、常にアルゴリズムが可変しない固定の部分とから構成されることにより安全性を確保することができる。また、終端処理手段を備えることにより、ハッシュ関数の特性である一方向性を確保することができる。7本発明は、所定の処理を1回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型MAC生成装置におけるアルゴリズム可変型MAC生成方法であって、前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される鍵のビット情報に応じて決定したビットの巡回シフトを行う第1のステップ例えば、図4のステップS1と、前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記鍵のビット情報に応じて決定する第2のステップ例えば、図4のステップS2と、前記排他的論理和演算手段が、前記第2のステップで決定された演算の実行の有無に基づいて、前記第1のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第3のステップ例えば、図4のステップS3と、前記攪拌手段が、前記第3のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第4のステップ例えば、図4のステップS4と、前記ラウンド関数処理手段が、前記第4のステップから出力された複数のデータ群を前記入力データとして、前記第1のステップから前記第4のステップまでの処理を所定回数実行する第5のステップ例えば、図4のステップS5と、前記終端処理手段が、前記第5のステップの後に、前記第4のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のMACを生成する第6のステップ例えば、図4のステップS6と、を含むことを特徴とするアルゴリズム可変型MAC生成方法を提案している。この発明によれば、アルゴリズム可変型MAC生成装置は、所定の処理を1回以上実行し、巡回シフト手段、巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成される。まず、第1のステップにおいて、巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される鍵のビット情報に応じて決定したビットの巡回シフトを行う。次に、第2のステップにおいて、演算決定手段が、排他的論理和演算手段による演算の実行の有無を鍵のビット情報に応じて決定する。次に、第3のステップにおいて、排他的論理和演算手段が、第2のステップで決定された演算の実行の有無に基づいて、第1のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、他方の端のデータ群まで達すると、他方の端のデータ群から一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する。次に、第4のステップにおいて、攪拌手段が、第3のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う。次に、第5のステップにおいて、ラウンド関数処理手段が、第4のステップから出力された複数のデータ群を入力データとして、第1のステップから第4のステップまでの処理を所定回数実行する。次に、第6のステップにおいて、終端処理手段が、第5のステップの後に、第4のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のMACを生成する。したがって、ラウンド関数処理手段が、鍵のビット情報によりアルゴリズムを可変する部分と、常にアルゴリズムが可変しない固定の部分とから構成されることにより安全性を確保することができる。また、終端処理手段を備えることにより、MACの特性である一方向性を確保することができる。8本発明は、所定の処理を1回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型ハッシュ関数生成装置におけるアルゴリズム可変型ハッシュ関数生成方法であって、前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される任意の固定値のビット情報に応じて決定したビットの巡回シフトを行う第1のステップ例えば、図4のステップS1と、前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記固定値のビット情報に応じて決定する第2のステップ例えば、図4のステップS2と、前記排他的論理和演算手段が、前記第2のステップで決定された演算の実行の有無に基づいて、前記第1のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第3のステップ例えば、図4のステップS3と、前記攪拌手段が、前記第3のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第4のステップ例えば、図4のステップS4と、前記ラウンド関数処理手段が、前記第4のステップから出力された複数のデータ群を前記入力データとして、前記第1のステップから前記第4のステップまでの処理を所定回数実行する第5のステップ例えば、図4のステップS5と、前記終端処理手段が、前記第5のステップの後に、前記第4のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する第6のステップ例えば、図4のステップS6と、を含むことを特徴とするアルゴリズム可変型ハッシュ関数生成方法を提案している。この発明によれば、アルゴリズム可変型ハッシュ関数生成装置は、所定の処理を1回以上実行し、巡回シフト手段、巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成される。まず、第1のステップにおいて、巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される任意の固定値のビット情報に応じて決定したビットの巡回シフトを行う。次に、第2のステップにおいて、演算決定手段が、排他的論理和演算手段による演算の実行の有無を固定値のビット情報に応じて決定する。次に、第3のステップにおいて、排他的論理和演算手段が、第2のステップで決定された演算の実行の有無に基づいて、第1のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、他方の端のデータ群まで達すると、他方の端のデータ群から一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する。次に、第4のステップにおいて、攪拌手段が、第3のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う。次に、第5のステップにおいて、ラウンド関数処理手段が、第4のステップから出力された複数のデータ群を入力データとして、第1のステップから第4のステップまでの処理を所定回数実行する。次に、第6のステップにおいて、終端処理手段が、第5のステップの後に、第4のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する。したがって、ラウンド関数処理手段が、任意の固定値のビット情報によりアルゴリズムを可変する部分と、常にアルゴリズムが可変しない固定の部分とから構成されることにより安全性を確保することができる。また、終端処理手段を備えることにより、ハッシュ関数の特性である一方向性を確保することができる。9本発明は、所定の処理を1回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型MAC生成装置におけるアルゴリズム可変型MAC生成方法をコンピュータに実行させるプログラムであって、前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される鍵のビット情報に応じて決定したビットの巡回シフトを行う第1のステップ例えば、図4のステップS1と、前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記鍵のビット情報に応じて決定する第2のステップ例えば、図4のステップS2と、前記排他的論理和演算手段が、前記第2のステップで決定された演算の実行の有無に基づいて、前記第1のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第3のステップ例えば、図4のステップS3と、前記攪拌手段が、前記第3のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第4のステップ例えば、図4のステップS4と、前記ラウンド関数処理手段が、前記第4のステップから出力された複数のデータ群を前記入力データとして、前記第1のステップから前記第4のステップまでの処理を所定回数実行する第5のステップ例えば、図4のステップS5と、前記終端処理手段が、前記第5のステップの後に、前記第4のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のMACを生成する第6のステップ例えば、図4のステップS6と、をコンピュータに実行させるプログラムを提案している。この発明によれば、アルゴリズム可変型MAC生成装置は、所定の処理を1回以上実行し、巡回シフト手段、巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成される。まず、第1のステップにおいて、巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される鍵のビット情報に応じて決定したビットの巡回シフトを行う。次に、第2のステップにおいて、演算決定手段が、排他的論理和演算手段による演算の実行の有無を鍵のビット情報に応じて決定する。次に、第3のステップにおいて、排他的論理和演算手段が、第2のステップで決定された演算の実行の有無に基づいて、第1のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、他方の端のデータ群まで達すると、他方の端のデータ群から一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する。次に、第4のステップにおいて、攪拌手段が、第3のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う。次に、第5のステップにおいて、ラウンド関数処理手段が、第4のステップから出力された複数のデータ群を入力データとして、第1のステップから第4のステップまでの処理を所定回数実行する。次に、第6のステップにおいて、終端処理手段が、第5のステップの後に、第4のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のMACを生成する。したがって、ラウンド関数処理手段が、鍵のビット情報によりアルゴリズムを可変する部分と、常にアルゴリズムが可変しない固定の部分とから構成されることにより安全性を確保することができる。また、終端処理手段を備えることにより、MACの特性である一方向性を確保することができる。10本発明は、所定の処理を1回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型ハッシュ関数生成装置におけるアルゴリズム可変型ハッシュ関数生成方法をコンピュータに実行させるプログラムであって、前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される任意の固定値のビット情報に応じて決定したビットの巡回シフトを行う第1のステップ例えば、図4のステップS1と、前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記固定値のビット情報に応じて決定する第2のステップ例えば、図4のステップS2と、前記排他的論理和演算手段が、前記第2のステップで決定された演算の実行の有無に基づいて、前記第1のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第3のステップ例えば、図4のステップS3と、前記攪拌手段が、前記第3のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第4のステップ例えば、図4のステップS4と、前記ラウンド関数処理手段が、前記第4のステップから出力された複数のデータ群を前記入力データとして、前記第1のステップから前記第4のステップまでの処理を所定回数実行する第5のステップ例えば、図4のステップS5と、前記終端処理手段が、前記第5のステップの後に、前記第4のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する第6のステップ例えば、図4のステップS6と、をコンピュータに実行させるプログラムを提案している。この発明によれば、アルゴリズム可変型ハッシュ関数生成装置は、所定の処理を1回以上実行し、巡回シフト手段、巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成される。まず、第1のステップにおいて、巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される任意の固定値のビット情報に応じて決定したビットの巡回シフトを行う。次に、第2のステップにおいて、演算決定手段が、排他的論理和演算手段による演算の実行の有無を固定値のビット情報に応じて決定する。次に、第3のステップにおいて、排他的論理和演算手段が、第2のステップで決定された演算の実行の有無に基づいて、第1のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、他方の端のデータ群まで達すると、他方の端のデータ群から一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する。次に、第4のステップにおいて、攪拌手段が、第3のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う。次に、第5のステップにおいて、ラウンド関数処理手段が、第4のステップから出力された複数のデータ群を入力データとして、第1のステップから第4のステップまでの処理を所定回数実行する。次に、第6のステップにおいて、終端処理手段が、第5のステップの後に、第4のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する。したがって、ラウンド関数処理手段が、任意の固定値のビット情報によりアルゴリズムを可変する部分と、常にアルゴリズムが可変しない固定の部分とから構成されることにより安全性を確保することができる。また、終端処理手段を備えることにより、ハッシュ関数の特性である一方向性を確保することができる。本発明によれば、安全性を確保しつつ、鍵のビット情報または任意の固定値のビット情報によりアルゴリズムを可変にすることができる。以下、図面を用いて、本発明の実施形態について詳細に説明する。なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。<アルゴリズム可変型MAC生成装置の機能構成>図1を用いて、本発明に係るアルゴリズム可変型MAC生成装置1の機能構成について説明する。本実施形態に係るアルゴリズム可変型MAC生成装置1は、図1に示すように、ラウンド関数処理部100と、終端処理部200とから構成される。ラウンド関数処理部100は、入力される鍵のビット情報に応じて、アルゴリズムが可変する部分と常にアルゴリズムが固定の部分とから構成され、入力された認証対象データ以下、単にデータというを所定ビット毎に区切った複数のデータ群以下、ブロックというそれぞれに所定の処理を1回以上実行する。なお、この処理1回を1ラウンドと数える。本実施形態において、入力される鍵のビット情報にはMACMessageAuthenticationCodes:メッセージ認証コード鍵のビット情報を用い、MAC鍵のビット情報により可変部分のアルゴリズムの構造を決定する。具体的には、1ラウンドにMAC鍵うち14ビットを用い、複数ラウンド行う場合には、MAC鍵の先頭から順に14ビットずつ用いる。MAC鍵の鍵長が14の倍数でない場合は、14の倍数になるように、0をパディングする。入力される鍵のビット情報に、任意の固定値のビット情報を用いることにより、アルゴリズム可変型MAC生成装置1をアルゴリズム可変型ハッシュ関数生成装置にすることができる。ラウンド関数処理部100は、図1に示すように、巡回シフト部N1、N2、N3、N4110a、110b、110c、110dと、排他的論理和演算部120a、120b、120c、120d、120e、120fと、スイッチ部S1、S2、S3、S4、S5、S6130a、130b、130c、130d、130e、130fと、攪拌部140a、140b、140c、140dとから構成される。巡回シフト部N1~N4、排他的論理和演算部120a~120f、およびスイッチ部S1~S6が、入力されるMAC鍵のビット情報に応じて、アルゴリズムが可変する部分であって、攪拌部140a~140dが、常にアルゴリズムが固定の部分である。図1では、512ビットのデータからMACを生成するアルゴリズム可変型MAC生成装置1を例示して説明する。なお、512ビット未満および512ビットを超えるデータの場合には、事前に512ビット出力のハッシュ関数SHA-512等を適用することで、本構成を利用することができる。巡回シフト部N1~N4は、入力されたデータを所定ビット毎に区切ったブロックそれぞれに、MAC鍵のビット情報に応じて決定したビットの巡回シフトを行う。本実施形態においては、データが512ビットであるので、巡回シフト部N1~N4は、128ビット毎に区切られた4ブロックそれぞれに、巡回シフトを行う。巡回シフトは、32ビットの倍数分左にシフトするものとし、巡回シフトのパターンには、巡回シフトなし、32ビット巡回シフト、64ビット巡回シフト、および96ビット巡回シフトの4通りあるとする。上述したように、MAC鍵のうち14ビットが可変部分のアルゴリズムの構造を決定するが、具体的には、MAC鍵のうち14ビットが、巡回シフト部N1~N4および後述するスイッチ部S1~S6に割り当てられ、各ビット情報より巡回シフト部N1~N4であればシフトパターンを、スイッチ部S1~S6であればスイッチの開閉が決定される。図2に、MAC鍵のうち14ビットの各ビットと巡回シフト部N1~N4およびスイッチ部S1~S6との対応を示す。図2に示すように巡回シフト部N1~N4は、0から7ビット目までの2ビットずつによりシフトパターンが決定される。例えば、巡回シフト部N1は、N1に割り当てられている0および1ビット目が00であれば巡回シフトなし、01であれば32ビット巡回シフト、10であれば64ビット巡回シフト、11であれば96ビット巡回シフトと決定する。スイッチ部S1~S6については後述する。図1に戻って、スイッチ部S1~S6は、MAC鍵のビット情報に応じてスイッチを開閉することにより、各巡回シフト部N1~N4に接続された排他的論理和演算部120a~120fにおける演算の実行の有無を決定する。具体的には、図2に示すようにMAC鍵の8~13ビット目までの各1ビットがスイッチ部S1~S6に割り当てられており、各1ビットの値によって、スイッチ部S1~S6の開閉を決定する。例えば、1ビットの値が0である場合に、スイッチを開け、排他的論理和演算部に演算を実行させず、1である場合に、スイッチを閉じ、排他的論理和演算部に演算を実行させる。排他的論理和演算部120a~120fは、入力された2つのブロックに対して、排他的論理和演算を実行する。上述したように、排他的論理和演算部120a~120eにおいて排他的論理和演算を実行するか否かは、スイッチ部S1~S6それぞれにより決定される。スイッチが開いている場合には、排他的論理和演算部は入力されたブロックをそのまま出力する。一方、スイッチが閉じている場合には、入力された2つのブロックに対して、排他的論理和演算部は排他的論理和演算を実行し、演算結果のブロックを出力する。以下に、各排他的論理和演算部について詳細に説明する。排他的論理和演算部120aは、スイッチ部S1が開いている場合には、排他的論理和演算を実行せず、巡回シフト部N2から入力されたブロックをそのまま出力する。一方、排他的論理和演算部120aは、スイッチ部S1が閉じている場合には、巡回シフト部N1から入力されたブロックと巡回シフト部N2から入力されたブロックとの排他的論理和演算を実行し、演算結果のブロックを出力する。同様に、排他的論理和演算部120bは、スイッチ部S2が開いている場合には、巡回シフト部N3から入力されたブロックをそのまま出力し、スイッチ部S2が閉じている場合には、排他的論理和演算部120aの演算結果のブロックと巡回シフト部N3から入力されたブロックとの排他的論理和演算を実行し、演算結果として新たなブロックを出力する。また、排他的論理和演算部120cは、スイッチ部S3が開いている場合には、巡回シフト部N4から入力されたブロックをそのまま出力し、スイッチ部S3が閉じている場合には、排他的論理和演算部120bの演算結果のブロックと巡回シフト部N4から入力されたブロックとの排他的論理和演算を実行し、演算結果として新たなブロックを出力する。排他的論理和演算部120dは、スイッチ部S4が開いている場合には、排他的論理和演算を実行せず、排他的論理和演算部120bの演算結果のブロックをそのまま出力する。一方、排他的論理和演算部120dは、スイッチ部S4が閉じている場合には、排他的論理和演算部120cの演算結果のブロックと排他的論理和演算部120bの演算結果のブロックとの排他的論理和演算を実行し、演算結果として新たなブロックを出力する。同様に、排他的論理和演算部120eは、スイッチ部S5が開いている場合には、排他的論理和演算部120aの演算結果のブロックをそのまま出力し、スイッチ部S5が閉じている場合には、排他的論理和演算部120dの演算結果のブロックと排他的論理和演算部120aの演算結果のブロックとの排他的論理和演算を実行し、演算結果として新たなブロックを出力する。また、排他的論理和演算部120fは、スイッチ部S6が開いている場合には、巡回シフト部N1から入力されたブロックをそのまま出力し、スイッチ部S6が閉じている場合には、排他的論理和演算部120eの演算結果のブロックと巡回シフト部N1から入力されたブロックとの排他的論理和演算を実行し、演算結果として新たなブロックを出力する。攪拌部140a~140dは、攪拌関数によって、排他的論理和演算部120c~120fから出力されたブロックに対し、攪拌処理を行う。攪拌関数は、非線形置換と線形変換とから構成される関数であれば、任意の関数を用いることができる。なお、攪拌関数として、AESのラウンド関数を用いた場合には高い安全性を確保できる。また、上述したように、攪拌部140a~140dのアルゴリズムは固定であるので、MAC鍵のビット情報に依存しない。本実施形態において、図1に示すように、ラウンド関数処理部100は、攪拌部140a~140dの前に、排他的論理和演算部120c~120fから出力されたブロックを、ブロック単位に右に1ブロック巡回シフトさせてもよい。これにより、安全性をより高めることができる。終端処理部200は、攪拌部140a~140dそれぞれから出力されたブロックを排他的論理和演算し、予め決定された所定長のMACを生成する。本実施形態においては256ビットのMACを生成し、図3を用いて説明する。攪拌部140aから出力されたデータを出力ブロック1とし、同様に、攪拌部140b~eから出力されたデータをそれぞれ出力ブロック2、出力ブロック3、および出力ブロック4とする。終端処理部200は、出力ブロック1と出力ブロック2との排他的論理和演算を実行し、128ビットのブロックを出力する。また、終端処理部200は、出力ブロック3と出力ブロック4との排他的論理和演算を実行し、128ビットのブロックを出力する。そして、終端処理部200は、出力ブロック1と出力ブロック2との排他的論理和演算から出力されたブロックと、出力ブロック3と出力ブロック4との排他的論理和演算から出力されたブロックとを連結し、256ビットのMACを生成する。このように、各攪拌部140a~140dから出力されたブロック同士を排他的論理和演算することにより、MACの特徴である一方向性を確保することができる。MAC鍵の替わりに任意の固定値を用いてハッシュ関数を生成する場合においても、同様に、ハッシュ関数の特徴である一方向性を確保することができる。<アルゴリズム可変MAC生成処理>図4は、本実施形態に係るアルゴリズム可変型MAC生成装置1におけるアルゴリズム可変型MAC生成処理のフローを示す図である。入力されたデータを所定ビット毎に区切った複数のブロック、本実施形態においては、128ビットの4つのブロックがラウンド関数処理部100に入力されると処理が開始する。まず、ステップS1において、巡回シフト部N1~N4それぞれは、MAC鍵の0~7ビットまでの2ビットずつの値に基づいて巡回シフトするシフトパターンを決定し、決定したシフトパターンに応じて、各ブロックのビット値を巡回シフトさせる。なお、アルゴリズム可変型ハッシュ関数生成装置におけるアルゴリズム可変型ハッシュ関数生成処理では、MAC鍵の替わりに任意の固定値を用いる。次に、ステップS2において、スイッチ部S1~S6それぞれは、MAC鍵の8~13ビットまでの1ビットずつの値に基づいて、開閉を決定する。次に、ステップS3において、排他的論理和演算部120a~120fは、ステップS2で決定されたスイッチの開閉に従って、ステップS1で巡回シフトが行われた4つのブロックの先頭のブロックから末尾のブロックまで順に、隣に位置するブロックに対して排他的論理和演算を実行し、末尾のブロックまで達すると、末尾のブロックから先頭のブロックまで順に、隣に位置するブロックに対して排他的論理和演算を実行する。次に、ステップS4において、攪拌手段は、ステップS3から出力された4つのブロックそれぞれに非線形処理および線形変換を行う。次に、ステップS5において、ラウンド関数処理手段は、ステップS1からステップS4までの処理を所定回数繰り返したか否か判断する。所定回数繰り返した場合には、ステップS6に処理を進め、一方、所定回数繰り返していない場合には、ステップS4から出力された4つのブロックを入力データとして、ステップS1に処理を戻す。次に、ステップS6において、終端処理手段は、ステップS4で出力された4つのブロックを排他的論理和演算し、128ビットのMACを生成する。なお、アルゴリズム可変型ハッシュ関数生成装置におけるアルゴリズム可変型ハッシュ関数生成処理では、MACの替わりにハッシュ関数が生成される。したがって、以上説明したように、本実施形態によれば、ラウンド関数処理部100が、MAC鍵のビット情報によりアルゴリズムを可変する部分巡回シフト部N1~N4、排他的論理和演算部120a~120f、およびスイッチ部S1~S6と、常にアルゴリズムが可変しない固定の部分攪拌部140a~140dとから構成されることにより安全性を確保することができる。また、終端処理部200を備えることにより、MACの特性である一方向性を確保することができる。さらに、MAC鍵の替わりに、任意の固定値を用いることにより、アルゴリズム可変型ハッシュ関数を生成することができる。なお、アルゴリズム可変型MAC生成装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをアルゴリズム可変型MAC生成装置に読み込ませ、実行することによって本発明のアルゴリズム可変型MAC生成装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。また、コンピュータシステムは、WWWWorldWideWebシステムを利用している場合であれば、ホームページ提供環境あるいは表示環境も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する伝送媒体は、インターネット等のネットワーク通信網や電話回線等の通信回線通信線のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル差分プログラムであっても良い。以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。