(57)【要約】【課題】安全性を確保しつつ、鍵のビット情報によりアルゴリズムを変化させることができるアルゴリズム可変型ＭＡＣ生成装置、アルゴリズム可変型ハッシュ関数生成装置、アルゴリズム可変型ＭＡＣ生成方法、アルゴリズム可変型ハッシュ関数生成方法、およびプログラムを提供すること。【解決手段】アルゴリズム可変型ＭＡＣ生成装置１は、入力データを所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を１回以上実行するラウンド関数処理部１００と、ラウンド関数処理部１００で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、所定長のＭＡＣを生成する終端処理部２００と、を備え、ラウンド関数処理部１００は、入力される鍵のビット情報に応じてアルゴリズムが可変する部分と、常にアルゴリズムが固定の部分とから構成される。【選択図】図１
2013097161.tif 000002
【特許請求の範囲】
【請求項１】
入力データを所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を１回以上実行するラウンド関数処理手段と、
前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、所定長のＭＡＣを生成する終端処理手段と、
を備え、
前記ラウンド関数処理手段が、入力される鍵のビット情報に応じてアルゴリズムが可変する部分と、常にアルゴリズムが固定の部分とから構成されることを特徴とするアルゴリズム可変型ＭＡＣ生成装置。
【請求項２】
前記ラウンド関数処理手段が、
前記区切った複数のデータ群それぞれに、前記鍵のビット情報に応じて決定したビットの巡回シフトを行う巡回シフト手段と、
前記巡回シフト手段に接続され、当該巡回シフト手段で巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで隣に位置するデータ群に対して排他的論理和演算を実行する排他的論理和演算手段と、
前記排他的論理和演算手段による演算の実行の有無を前記鍵のビット情報に応じて決定する演算決定手段と、
前記排他的論理和演算手段から出力された複数のデータ群それぞれに非線形置換および線形変換を行う攪拌手段と、
からなり、
前記巡回シフト手段、前記排他的論理和演算手段、前記演算決定手段、および前記攪拌手段の処理を所定回数実行することを特徴とする請求項１に記載のアルゴリズム可変型ＭＡＣ生成装置。
【請求項３】
前記ラウンド関数処理手段が、
前記攪拌手段の処理を実行する前に、前記排他的論理和演算手段より出力された複数のデータ群をデータ群単位で巡回シフトを行うことを特徴とする請求項２に記載のアルゴリズム可変型ＭＡＣ生成装置。
【請求項４】
前記演算決定手段が、「１」あるいは「０」である前記鍵の所定位置のビット情報により、前記排他的論理和演算手段における演算の実行の有無を決定することを特徴とする請求項２または３に記載のアルゴリズム可変型ＭＡＣ生成装置。
【請求項５】
前記攪拌手段が、ＡＥＳのラウンド関数を用いて、非線形置換および線形変換を行うことを特徴とする請求項２から請求項４のいずれか１項に記載のアルゴリズム可変型ＭＡＣ生成装置。
【請求項６】
入力データを所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を１回以上実行するラウンド関数処理手段と、
前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する終端処理手段と、
を備え、
前記ラウンド関数処理手段が、入力される任意の固定値のビット情報に応じてアルゴリズムが可変する部分と、常にアルゴリズムが固定の部分とから構成されることを特徴とするアルゴリズム可変型ハッシュ関数生成装置。
【請求項７】
所定の処理を１回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型ＭＡＣ生成装置におけるアルゴリズム可変型ＭＡＣ生成方法であって、
前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される鍵のビット情報に応じて決定したビットの巡回シフトを行う第１のステップと、
前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記鍵のビット情報に応じて決定する第２のステップと、
前記排他的論理和演算手段が、前記第２のステップで決定された演算の実行の有無に基づいて、前記第１のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第３のステップと、
前記攪拌手段が、前記第３のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第４のステップと、
前記ラウンド関数処理手段が、前記第４のステップから出力された複数のデータ群を前記入力データとして、前記第１のステップから前記第４のステップまでの処理を所定回数実行する第５のステップと、
前記終端処理手段が、前記第５のステップの後に、前記第４のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のＭＡＣを生成する第６のステップと、
を含むことを特徴とするアルゴリズム可変型ＭＡＣ生成方法。
【請求項８】
所定の処理を１回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型ハッシュ関数生成装置におけるアルゴリズム可変型ハッシュ関数生成方法であって、
前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される任意の固定値のビット情報に応じて決定したビットの巡回シフトを行う第１のステップと、
前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記固定値のビット情報に応じて決定する第２のステップと、
前記排他的論理和演算手段が、前記第２のステップで決定された演算の実行の有無に基づいて、前記第１のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第３のステップと、
前記攪拌手段が、前記第３のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第４のステップと、
前記ラウンド関数処理手段が、前記第４のステップから出力された複数のデータ群を前記入力データとして、前記第１のステップから前記第４のステップまでの処理を所定回数実行する第５のステップと、
前記終端処理手段が、前記第５のステップの後に、前記第４のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する第６のステップと、
を含むことを特徴とするアルゴリズム可変型ハッシュ関数生成方法。
【請求項９】
所定の処理を１回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型ＭＡＣ生成装置におけるアルゴリズム可変型ＭＡＣ生成方法をコンピュータに実行させるプログラムであって、
前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される鍵のビット情報に応じて決定したビットの巡回シフトを行う第１のステップと、
前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記鍵のビット情報に応じて決定する第２のステップと、
前記排他的論理和演算手段が、前記第２のステップで決定された演算の実行の有無に基づいて、前記第１のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第３のステップと、
前記攪拌手段が、前記第３のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第４のステップと、
前記ラウンド関数処理手段が、前記第４のステップから出力された複数のデータ群を前記入力データとして、前記第１のステップから前記第４のステップまでの処理を所定回数実行する第５のステップと、
前記終端処理手段が、前記第５のステップの後に、前記第４のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のＭＡＣを生成する第６のステップと、
をコンピュータに実行させるプログラム。
【請求項１０】
所定の処理を１回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型ハッシュ関数生成装置におけるアルゴリズム可変型ハッシュ関数生成方法をコンピュータに実行させるプログラムであって、
前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される任意の固定値のビット情報に応じて決定したビットの巡回シフトを行う第１のステップと、
前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記固定値のビット情報に応じて決定する第２のステップと、
前記排他的論理和演算手段が、前記第２のステップで決定された演算の実行の有無に基づいて、前記第１のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第３のステップと、
前記攪拌手段が、前記第３のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第４のステップと、
前記ラウンド関数処理手段が、前記第４のステップから出力された複数のデータ群を前記入力データとして、前記第１のステップから前記第４のステップまでの処理を所定回数実行する第５のステップと、
前記終端処理手段が、前記第５のステップの後に、前記第４のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する第６のステップと、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、安全性を確保しつつ、アルゴリズムを変化させるアルゴリズム可変型ＭＡＣ生成装置、アルゴリズム可変型ハッシュ関数生成装置、アルゴリズム可変型ＭＡＣ生成方法、アルゴリズム可変型ハッシュ関数生成方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、インターネットの目覚しい普及により、コンピュータを利用した様々なサービスが提供されている。こうして提供されるサービスの多くは、送信者と受信者との相互認証を実現するため、データの改ざんの有無を検知することができるＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅｓ：メッセージ認証コード）アルゴリズムおよびハッシュ関数を用いている。
【０００３】
ところで、近年、暗号化アルゴリズムは、アルゴリズムを公開しても鍵を秘匿することにより安全性は保たれ、さらに、アルゴリズムを公開することにより信頼性を高めることができることから、公開型のアルゴリズムが一般的である。例えば、ＭＡＣアルゴリズムでは、ＡＥＳ−ＣＭＡＣのアルゴリズムが公開され（例えば、非特許文献１参照。）、ハッシュ関数で、ＳＨＡ−２２４のアルゴリズムが公開されている（例えば、非特許文献２参照。）。一方で、暗号化アルゴリズムの中には、安全性を確保するためにアルゴリズムを秘匿する秘匿型のアルゴリズムもある。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】ＪＨ．Ｓｏｎｇ，Ｒ．Ｐｏｏｖｅｎｄｒａｎ，Ｊ．Ｌｅｅ，Ｔ．Ｉｗａｔａ，Ｔｈｅ  ＡＥＳ−ＣＭＡＣ  Ａｌｇｏｒｉｔｈｍ，Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ：４４９３，ｈｔｔｐ：／／ｔｏｏｌｓ．ｉｅｔｆ．ｏｒｇ／ｈｔｍｌ／ｒｆｃ４４９３［２０１１年１０月２８日検索］
【非特許文献２】Ｒ．Ｈｏｕｓｌｅｙ，Ａ  ２２４−ｂｉｔ  Ｏｎｅ−ｗａｙ  Ｈａｓｈ  Ｆｕｎｃｔｉｏｎ：ＳＨＡ−２２４，Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ：３８７４，ｈｔｔｐ：／／ｔｏｏｌｓ．ｉｅｔｆ．ｏｒｇ／ｈｔｍｌ／ｒｆｃ３８７４［２０１１年１０月２８日検索］
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、秘匿型のアルゴリズムの場合、一度アルゴリズムがばれてしまうと２度と使えないという問題点があった。そこで、秘匿型のアルゴリズムの場合においては、リバースエンジニアリングを考慮し、アルゴリズムを固定とせず、アルゴリズムを変更するアルゴリズム可変型暗号にしたいという要求があった。ところが、ＭＡＣアルゴリズムおよびハッシュ関数においては、回路のごく一部を変更する場合にも、安全性を保障するためには専門家による詳細な検証が必要となること等から、アルゴリズムの変更は極めて困難であるという問題点があった。
【０００６】
そこで、本発明は、上述の課題に鑑みてなされたものであり、安全性を確保しつつ、鍵のビット情報によりアルゴリズムを変化させることができるアルゴリズム可変型ＭＡＣ生成装置、アルゴリズム可変型ハッシュ関数生成装置、アルゴリズム可変型ＭＡＣ生成方法、アルゴリズム可変型ハッシュ関数生成方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【０００８】
（１）  本発明は、入力データを所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を１回以上実行するラウンド関数処理手段（例えば、図１のラウンド関数処理部１００に相当）と、前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、所定長のＭＡＣを生成する終端処理手段（例えば、図１の終端処理部２００に相当）と、を備え、前記ラウンド関数処理手段が、入力される鍵のビット情報に応じてアルゴリズムが可変する部分と、常にアルゴリズムが固定の部分とから構成されることを特徴とするアルゴリズム可変型ＭＡＣ生成装置を提案している。
【０００９】
この発明によれば、ラウンド関数処理手段は、入力される鍵のビット情報に応じてアルゴリズムが可変する部分と、常にアルゴリズムが固定の部分とから構成され、入力データを所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を１回以上実行する。終端処理手段は、ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、所定長のＭＡＣを生成する。したがって、ラウンド関数処理手段が、鍵のビット情報によりアルゴリズムを可変する部分と、常にアルゴリズムが可変しない固定の部分とから構成されることにより安全性を確保することができる。また、終端処理手段を備えることにより、ＭＡＣの特性である一方向性を確保することができる。
【００１０】
（２）  本発明は、（１）のアルゴリズム可変型ＭＡＣ生成装置について、前記ラウンド関数処理手段が、前記区切った複数のデータ群それぞれに、前記鍵のビット情報に応じて決定したビットの巡回シフトを行う巡回シフト手段（例えば、図１の巡回シフト部１１０ａ〜１１０ｄに相当）と、前記巡回シフト手段に接続され、当該巡回シフト手段で巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで隣に位置するデータ群に対して排他的論理和演算を実行する排他的論理和演算手段（例えば、図１の排他的論理和演算部１２０ａ〜１２０ｆに相当）と、前記排他的論理和演算手段による演算の実行の有無を前記鍵のビット情報に応じて決定する演算決定手段（例えば、図１のスイッチ部１３０ａ〜１３０ｆに相当）と、前記排他的論理和演算手段から出力された複数のデータ群それぞれに非線形置換および線形変換を行う攪拌手段（例えば、図１の攪拌部１４０ａ〜１４０ｄに相当）と、からなり、前記巡回シフト手段、前記排他的論理和演算手段、前記演算決定手段、および前記攪拌手段の処理を所定回数実行することを特徴とするアルゴリズム可変型ＭＡＣ生成装置を提案している。
【００１１】
この発明によれば、巡回シフト手段は、区切った複数のデータ群それぞれに、鍵のビット情報に応じて決定したビットの巡回シフトを行う。排他的論理和演算手段は、巡回シフト手段に接続され、巡回シフト手段で巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、他方の端のデータ群まで達すると、他方の端のデータ群から一方の端のデータ群まで隣に位置するデータ群に対して排他的論理和演算を実行する。演算決定手段は、排他的論理和演算手段による演算の実行の有無を鍵のビット情報に応じて決定する。攪拌手段は、排他的論理和演算手段から出力された複数のデータ群それぞれに非線形置換および線形変換を行う。そして、ラウンド関数処理手段は、巡回シフト手段、排他的論理和演算手段、演算決定手段、および攪拌手段の処理を所定回数実行する。したがって、アルゴリズムの可変部分を、安全性と性能に影響を与えない巡回シフト手段、排他的論理和演算手段、および演算決定手段で構成することによって、鍵のビット情報によりアルゴリズムを可変しても、安全性や性能を確保することができる。
【００１２】
（３）  本発明は、（２）のアルゴリズム可変型ＭＡＣ生成装置について、前記ラウンド関数処理手段が、前記攪拌手段の処理を実行する前に、前記排他的論理和演算手段より出力された複数のデータ群をデータ群単位で巡回シフトを行うことを特徴とするアルゴリズム可変型ＭＡＣ生成装置を提案している。
【００１３】
この発明によれば、ラウンド関数処理手段が、攪拌手段の処理を実行する前に、排他的論理和演算手段より出力された複数のデータ群をデータ群単位で巡回シフトを行う。したがって、複数のデータ群をデータ群単位で巡回シフト、すなわち、データ群の順番を入れ替えることによって、より高い安全性を確保することができる。
【００１４】
（４）  本発明は、（２）または（３）のアルゴリズム可変型ＭＡＣ生成装置について、前記演算決定手段が、「１」あるいは「０」である前記鍵の所定位置のビット情報により、前記排他的論理和演算手段における演算の実行の有無を決定することを特徴とするアルゴリズム可変型ＭＡＣ生成装置を提案している。
【００１５】
この発明によれば、演算決定手段が、「１」あるいは「０」である鍵の所定位置のビット情報により、排他的論理和演算手段における演算の実行を決定する。したがって、排他的論理和演算手段における演算の有無を鍵の所定位置のビット情報により決定することができる。
【００１６】
（５）  本発明は、（２）から（４）のアルゴリズム可変型ＭＡＣ生成装置について、前記攪拌手段が、ＡＥＳのラウンド関数を用いて、非線形置換および線形変換を行うことを特徴とするアルゴリズム可変型ＭＡＣ生成装置を提案している。
【００１７】
この発明によれば、攪拌手段が、ＡＥＳのラウンド関数を用いて、非線形置換および線形変換を行う。したがって、一定の安全性を確保しているＡＥＳのラウンド関数を用いることにより、より高い安全性をアルゴリズム可変型ＭＡＣ生成装置に確保することができる。
【００１８】
（６）  本発明は、入力データを所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を１回以上実行するラウンド関数処理手段（例えば、図１のラウンド関数処理部１００に相当）と、前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する終端処理手段（例えば、図１の終端処理部２００に相当）と、を備え、前記ラウンド関数処理手段が、入力される任意の固定値のビット情報に応じてアルゴリズムが可変する部分と、常にアルゴリズムが固定の部分とから構成されることを特徴とするアルゴリズム可変型ハッシュ関数生成装置を提案している。
【００１９】
この発明によれば、ラウンド関数処理手段は、入力される任意の固定値のビット情報に応じてアルゴリズムが可変する部分と、常にアルゴリズムが固定の部分とから構成され、入力データを所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を１回以上実行する。終端処理手段は、ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する。したがって、ラウンド関数処理手段が、任意の固定値のビット情報によりアルゴリズムを可変する部分と、常にアルゴリズムが可変しない固定の部分とから構成されることにより安全性を確保することができる。また、終端処理手段を備えることにより、ハッシュ関数の特性である一方向性を確保することができる。
【００２０】
（７）  本発明は、所定の処理を１回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型ＭＡＣ生成装置におけるアルゴリズム可変型ＭＡＣ生成方法であって、前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される鍵のビット情報に応じて決定したビットの巡回シフトを行う第１のステップ（例えば、図４のステップＳ１）と、前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記鍵のビット情報に応じて決定する第２のステップ（例えば、図４のステップＳ２）と、前記排他的論理和演算手段が、前記第２のステップで決定された演算の実行の有無に基づいて、前記第１のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第３のステップ（例えば、図４のステップＳ３）と、前記攪拌手段が、前記第３のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第４のステップ（例えば、図４のステップＳ４）と、前記ラウンド関数処理手段が、前記第４のステップから出力された複数のデータ群を前記入力データとして、前記第１のステップから前記第４のステップまでの処理を所定回数実行する第５のステップ（例えば、図４のステップＳ５）と、前記終端処理手段が、前記第５のステップの後に、前記第４のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のＭＡＣを生成する第６のステップ（例えば、図４のステップＳ６）と、を含むことを特徴とするアルゴリズム可変型ＭＡＣ生成方法を提案している。
【００２１】
この発明によれば、アルゴリズム可変型ＭＡＣ生成装置は、所定の処理を１回以上実行し、巡回シフト手段、巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成される。まず、第１のステップにおいて、巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される鍵のビット情報に応じて決定したビットの巡回シフトを行う。次に、第２のステップにおいて、演算決定手段が、排他的論理和演算手段による演算の実行の有無を鍵のビット情報に応じて決定する。次に、第３のステップにおいて、排他的論理和演算手段が、第２のステップで決定された演算の実行の有無に基づいて、第１のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、他方の端のデータ群まで達すると、他方の端のデータ群から一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する。次に、第４のステップにおいて、攪拌手段が、第３のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う。次に、第５のステップにおいて、ラウンド関数処理手段が、第４のステップから出力された複数のデータ群を入力データとして、第１のステップから第４のステップまでの処理を所定回数実行する。次に、第６のステップにおいて、終端処理手段が、第５のステップの後に、第４のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のＭＡＣを生成する。したがって、ラウンド関数処理手段が、鍵のビット情報によりアルゴリズムを可変する部分と、常にアルゴリズムが可変しない固定の部分とから構成されることにより安全性を確保することができる。また、終端処理手段を備えることにより、ＭＡＣの特性である一方向性を確保することができる。
【００２２】
（８）  本発明は、所定の処理を１回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型ハッシュ関数生成装置におけるアルゴリズム可変型ハッシュ関数生成方法であって、前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される任意の固定値のビット情報に応じて決定したビットの巡回シフトを行う第１のステップ（例えば、図４のステップＳ１）と、前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記固定値のビット情報に応じて決定する第２のステップ（例えば、図４のステップＳ２）と、前記排他的論理和演算手段が、前記第２のステップで決定された演算の実行の有無に基づいて、前記第１のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第３のステップ（例えば、図４のステップＳ３）と、前記攪拌手段が、前記第３のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第４のステップ（例えば、図４のステップＳ４）と、前記ラウンド関数処理手段が、前記第４のステップから出力された複数のデータ群を前記入力データとして、前記第１のステップから前記第４のステップまでの処理を所定回数実行する第５のステップ（例えば、図４のステップＳ５）と、前記終端処理手段が、前記第５のステップの後に、前記第４のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する第６のステップ（例えば、図４のステップＳ６）と、を含むことを特徴とするアルゴリズム可変型ハッシュ関数生成方法を提案している。
【００２３】
この発明によれば、アルゴリズム可変型ハッシュ関数生成装置は、所定の処理を１回以上実行し、巡回シフト手段、巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成される。まず、第１のステップにおいて、巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される任意の固定値のビット情報に応じて決定したビットの巡回シフトを行う。次に、第２のステップにおいて、演算決定手段が、排他的論理和演算手段による演算の実行の有無を固定値のビット情報に応じて決定する。次に、第３のステップにおいて、排他的論理和演算手段が、第２のステップで決定された演算の実行の有無に基づいて、第１のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、他方の端のデータ群まで達すると、他方の端のデータ群から一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する。次に、第４のステップにおいて、攪拌手段が、第３のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う。次に、第５のステップにおいて、ラウンド関数処理手段が、第４のステップから出力された複数のデータ群を入力データとして、第１のステップから第４のステップまでの処理を所定回数実行する。次に、第６のステップにおいて、終端処理手段が、第５のステップの後に、第４のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する。したがって、ラウンド関数処理手段が、任意の固定値のビット情報によりアルゴリズムを可変する部分と、常にアルゴリズムが可変しない固定の部分とから構成されることにより安全性を確保することができる。また、終端処理手段を備えることにより、ハッシュ関数の特性である一方向性を確保することができる。
【００２４】
（９）  本発明は、所定の処理を１回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型ＭＡＣ生成装置におけるアルゴリズム可変型ＭＡＣ生成方法をコンピュータに実行させるプログラムであって、前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される鍵のビット情報に応じて決定したビットの巡回シフトを行う第１のステップ（例えば、図４のステップＳ１）と、前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記鍵のビット情報に応じて決定する第２のステップ（例えば、図４のステップＳ２）と、前記排他的論理和演算手段が、前記第２のステップで決定された演算の実行の有無に基づいて、前記第１のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第３のステップ（例えば、図４のステップＳ３）と、前記攪拌手段が、前記第３のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第４のステップ（例えば、図４のステップＳ４）と、前記ラウンド関数処理手段が、前記第４のステップから出力された複数のデータ群を前記入力データとして、前記第１のステップから前記第４のステップまでの処理を所定回数実行する第５のステップ（例えば、図４のステップＳ５）と、前記終端処理手段が、前記第５のステップの後に、前記第４のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のＭＡＣを生成する第６のステップ（例えば、図４のステップＳ６）と、をコンピュータに実行させるプログラムを提案している。
【００２５】
この発明によれば、アルゴリズム可変型ＭＡＣ生成装置は、所定の処理を１回以上実行し、巡回シフト手段、巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成される。まず、第１のステップにおいて、巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される鍵のビット情報に応じて決定したビットの巡回シフトを行う。次に、第２のステップにおいて、演算決定手段が、排他的論理和演算手段による演算の実行の有無を鍵のビット情報に応じて決定する。次に、第３のステップにおいて、排他的論理和演算手段が、第２のステップで決定された演算の実行の有無に基づいて、第１のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、他方の端のデータ群まで達すると、他方の端のデータ群から一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する。次に、第４のステップにおいて、攪拌手段が、第３のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う。次に、第５のステップにおいて、ラウンド関数処理手段が、第４のステップから出力された複数のデータ群を入力データとして、第１のステップから第４のステップまでの処理を所定回数実行する。次に、第６のステップにおいて、終端処理手段が、第５のステップの後に、第４のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のＭＡＣを生成する。したがって、ラウンド関数処理手段が、鍵のビット情報によりアルゴリズムを可変する部分と、常にアルゴリズムが可変しない固定の部分とから構成されることにより安全性を確保することができる。また、終端処理手段を備えることにより、ＭＡＣの特性である一方向性を確保することができる。
【００２６】
（１０）  本発明は、所定の処理を１回以上実行し、巡回シフト手段、前記巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成されるアルゴリズム可変型ハッシュ関数生成装置におけるアルゴリズム可変型ハッシュ関数生成方法をコンピュータに実行させるプログラムであって、前記巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される任意の固定値のビット情報に応じて決定したビットの巡回シフトを行う第１のステップ（例えば、図４のステップＳ１）と、前記演算決定手段が、前記排他的論理和演算手段による演算の実行の有無を前記固定値のビット情報に応じて決定する第２のステップ（例えば、図４のステップＳ２）と、前記排他的論理和演算手段が、前記第２のステップで決定された演算の実行の有無に基づいて、前記第１のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、当該他方の端のデータ群まで達すると、当該他方の端のデータ群から当該一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する第３のステップ（例えば、図４のステップＳ３）と、前記攪拌手段が、前記第３のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う第４のステップ（例えば、図４のステップＳ４）と、前記ラウンド関数処理手段が、前記第４のステップから出力された複数のデータ群を前記入力データとして、前記第１のステップから前記第４のステップまでの処理を所定回数実行する第５のステップ（例えば、図４のステップＳ５）と、前記終端処理手段が、前記第５のステップの後に、前記第４のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する第６のステップ（例えば、図４のステップＳ６）と、をコンピュータに実行させるプログラムを提案している。
【００２７】
この発明によれば、アルゴリズム可変型ハッシュ関数生成装置は、所定の処理を１回以上実行し、巡回シフト手段、巡回シフト手段に接続される排他的論理和演算手段、演算決定手段、および攪拌手段からなるラウンド関数処理手段、並びに終端処理手段により構成される。まず、第１のステップにおいて、巡回シフト手段が、入力データを所定ビット毎に区切った複数のデータ群それぞれに、入力される任意の固定値のビット情報に応じて決定したビットの巡回シフトを行う。次に、第２のステップにおいて、演算決定手段が、排他的論理和演算手段による演算の実行の有無を固定値のビット情報に応じて決定する。次に、第３のステップにおいて、排他的論理和演算手段が、第２のステップで決定された演算の実行の有無に基づいて、第１のステップで巡回シフトが行われた複数のデータ群の一方の端のデータ群から他方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行し、他方の端のデータ群まで達すると、他方の端のデータ群から一方の端のデータ群まで順に、隣に位置するデータ群に対して排他的論理和演算を実行する。次に、第４のステップにおいて、攪拌手段が、第３のステップから出力された複数のデータ群それぞれに非線形置換および線形変換を行う。次に、第５のステップにおいて、ラウンド関数処理手段が、第４のステップから出力された複数のデータ群を入力データとして、第１のステップから第４のステップまでの処理を所定回数実行する。次に、第６のステップにおいて、終端処理手段が、第５のステップの後に、第４のステップから出力された複数のデータ群に対して排他的論理和演算を実行し、所定長のハッシュ関数を生成する。したがって、ラウンド関数処理手段が、任意の固定値のビット情報によりアルゴリズムを可変する部分と、常にアルゴリズムが可変しない固定の部分とから構成されることにより安全性を確保することができる。また、終端処理手段を備えることにより、ハッシュ関数の特性である一方向性を確保することができる。
【発明の効果】
【００２８】
本発明によれば、安全性を確保しつつ、鍵のビット情報または任意の固定値のビット情報によりアルゴリズムを可変にすることができる。
【図面の簡単な説明】
【００２９】
【図１】本実施形態に係るアルゴリズム可変型ＭＡＣ生成装置の機能構成を示す図である。
【図２】本実施形態に係るＭＡＣ鍵の鍵ビット情報と巡回シフト部Ｎ１〜Ｎ４およびスイッチ部Ｓ１〜Ｓ６との対応を示す表である。
【図３】本実施形態に係る終端処理部の処理を示す図である。
【図４】本実施形態に係るアルゴリズム可変型ＭＡＣ生成装置のアルゴリズム可変型ＭＡＣ生成処理のフロー図である。
【発明を実施するための形態】
【００３０】
以下、図面を用いて、本発明の実施形態について詳細に説明する。なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００３１】
＜アルゴリズム可変型ＭＡＣ生成装置の機能構成＞
図１を用いて、本発明に係るアルゴリズム可変型ＭＡＣ生成装置１の機能構成について説明する。
【００３２】
本実施形態に係るアルゴリズム可変型ＭＡＣ生成装置１は、図１に示すように、ラウンド関数処理部１００と、終端処理部２００とから構成される。
【００３３】
ラウンド関数処理部１００は、入力される鍵のビット情報に応じて、アルゴリズムが可変する部分と常にアルゴリズムが固定の部分とから構成され、入力された認証対象データ（以下、単にデータという）を所定ビット毎に区切った複数のデータ群（以下、ブロックという）それぞれに所定の処理を１回以上実行する。なお、この処理１回を１ラウンドと数える。
【００３４】
本実施形態において、入力される鍵のビット情報にはＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅｓ：メッセージ認証コード）鍵のビット情報を用い、ＭＡＣ鍵のビット情報により可変部分のアルゴリズムの構造を決定する。具体的には、１ラウンドにＭＡＣ鍵うち１４ビットを用い、複数ラウンド行う場合には、ＭＡＣ鍵の先頭から順に１４ビットずつ用いる。ＭＡＣ鍵の鍵長が１４の倍数でない場合は、１４の倍数になるように、０をパディングする。
【００３５】
入力される鍵のビット情報に、任意の固定値のビット情報を用いることにより、アルゴリズム可変型ＭＡＣ生成装置１をアルゴリズム可変型ハッシュ関数生成装置にすることができる。
【００３６】
ラウンド関数処理部１００は、図１に示すように、巡回シフト部（Ｎ１、Ｎ２、Ｎ３、Ｎ４）１１０ａ、１１０ｂ、１１０ｃ、１１０ｄと、排他的論理和演算部１２０ａ、１２０ｂ、１２０ｃ、１２０ｄ、１２０ｅ、１２０ｆと、スイッチ部（Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５、Ｓ６）１３０ａ、１３０ｂ、１３０ｃ、１３０ｄ、１３０ｅ、１３０ｆと、攪拌部１４０ａ、１４０ｂ、１４０ｃ、１４０ｄとから構成される。巡回シフト部Ｎ１〜Ｎ４、排他的論理和演算部１２０ａ〜１２０ｆ、およびスイッチ部Ｓ１〜Ｓ６が、入力されるＭＡＣ鍵のビット情報に応じて、アルゴリズムが可変する部分であって、攪拌部１４０ａ〜１４０ｄが、常にアルゴリズムが固定の部分である。
【００３７】
図１では、５１２ビットのデータからＭＡＣを生成するアルゴリズム可変型ＭＡＣ生成装置１を例示して説明する。なお、５１２ビット未満および５１２ビットを超えるデータの場合には、事前に５１２ビット出力のハッシュ関数（ＳＨＡ−５１２等）を適用することで、本構成を利用することができる。
【００３８】
巡回シフト部Ｎ１〜Ｎ４は、入力されたデータを所定ビット毎に区切ったブロックそれぞれに、ＭＡＣ鍵のビット情報に応じて決定したビットの巡回シフトを行う。本実施形態においては、データが５１２ビットであるので、巡回シフト部Ｎ１〜Ｎ４は、１２８ビット毎に区切られた４ブロックそれぞれに、巡回シフトを行う。巡回シフトは、３２ビットの倍数分左にシフトするものとし、巡回シフトのパターンには、巡回シフトなし、３２ビット巡回シフト、６４ビット巡回シフト、および９６ビット巡回シフトの４通りあるとする。
【００３９】
上述したように、ＭＡＣ鍵のうち１４ビットが可変部分のアルゴリズムの構造を決定するが、具体的には、ＭＡＣ鍵のうち１４ビットが、巡回シフト部Ｎ１〜Ｎ４および後述するスイッチ部Ｓ１〜Ｓ６に割り当てられ、各ビット情報より巡回シフト部Ｎ１〜Ｎ４であればシフトパターンを、スイッチ部Ｓ１〜Ｓ６であればスイッチの開閉が決定される。
【００４０】
図２に、ＭＡＣ鍵のうち１４ビットの各ビットと巡回シフト部Ｎ１〜Ｎ４およびスイッチ部Ｓ１〜Ｓ６との対応を示す。図２に示すように巡回シフト部Ｎ１〜Ｎ４は、０から７ビット目までの２ビットずつによりシフトパターンが決定される。例えば、巡回シフト部Ｎ１は、Ｎ１に割り当てられている０および１ビット目が「００」であれば巡回シフトなし、「０１」であれば３２ビット巡回シフト、「１０」であれば６４ビット巡回シフト、「１１」であれば９６ビット巡回シフトと決定する。スイッチ部Ｓ１〜Ｓ６については後述する。
【００４１】
図１に戻って、スイッチ部Ｓ１〜Ｓ６は、ＭＡＣ鍵のビット情報に応じてスイッチを開閉することにより、各巡回シフト部Ｎ１〜Ｎ４に接続された排他的論理和演算部１２０ａ〜１２０ｆにおける演算の実行の有無を決定する。具体的には、図２に示すようにＭＡＣ鍵の８〜１３ビット目までの各１ビットがスイッチ部Ｓ１〜Ｓ６に割り当てられており、各１ビットの値によって、スイッチ部Ｓ１〜Ｓ６の開閉を決定する。例えば、１ビットの値が「０」である場合に、スイッチを開け、排他的論理和演算部に演算を実行させず、「１」である場合に、スイッチを閉じ、排他的論理和演算部に演算を実行させる。
【００４２】
排他的論理和演算部１２０ａ〜１２０ｆは、入力された２つのブロックに対して、排他的論理和演算を実行する。上述したように、排他的論理和演算部１２０ａ〜１２０ｅにおいて排他的論理和演算を実行するか否かは、スイッチ部Ｓ１〜Ｓ６それぞれにより決定される。スイッチが開いている場合には、排他的論理和演算部は入力されたブロックをそのまま出力する。一方、スイッチが閉じている場合には、入力された２つのブロックに対して、排他的論理和演算部は排他的論理和演算を実行し、演算結果のブロックを出力する。以下に、各排他的論理和演算部について詳細に説明する。
【００４３】
排他的論理和演算部１２０ａは、スイッチ部Ｓ１が開いている場合には、排他的論理和演算を実行せず、巡回シフト部Ｎ２から入力されたブロックをそのまま出力する。一方、排他的論理和演算部１２０ａは、スイッチ部Ｓ１が閉じている場合には、巡回シフト部Ｎ１から入力されたブロックと巡回シフト部Ｎ２から入力されたブロックとの排他的論理和演算を実行し、演算結果のブロックを出力する。
【００４４】
同様に、排他的論理和演算部１２０ｂは、スイッチ部Ｓ２が開いている場合には、巡回シフト部Ｎ３から入力されたブロックをそのまま出力し、スイッチ部Ｓ２が閉じている場合には、排他的論理和演算部１２０ａの演算結果のブロックと巡回シフト部Ｎ３から入力されたブロックとの排他的論理和演算を実行し、演算結果として新たなブロックを出力する。また、排他的論理和演算部１２０ｃは、スイッチ部Ｓ３が開いている場合には、巡回シフト部Ｎ４から入力されたブロックをそのまま出力し、スイッチ部Ｓ３が閉じている場合には、排他的論理和演算部１２０ｂの演算結果のブロックと巡回シフト部Ｎ４から入力されたブロックとの排他的論理和演算を実行し、演算結果として新たなブロックを出力する。
【００４５】
排他的論理和演算部１２０ｄは、スイッチ部Ｓ４が開いている場合には、排他的論理和演算を実行せず、排他的論理和演算部１２０ｂの演算結果のブロックをそのまま出力する。一方、排他的論理和演算部１２０ｄは、スイッチ部Ｓ４が閉じている場合には、排他的論理和演算部１２０ｃの演算結果のブロックと排他的論理和演算部１２０ｂの演算結果のブロックとの排他的論理和演算を実行し、演算結果として新たなブロックを出力する。
【００４６】
同様に、排他的論理和演算部１２０ｅは、スイッチ部Ｓ５が開いている場合には、排他的論理和演算部１２０ａの演算結果のブロックをそのまま出力し、スイッチ部Ｓ５が閉じている場合には、排他的論理和演算部１２０ｄの演算結果のブロックと排他的論理和演算部１２０ａの演算結果のブロックとの排他的論理和演算を実行し、演算結果として新たなブロックを出力する。また、排他的論理和演算部１２０ｆは、スイッチ部Ｓ６が開いている場合には、巡回シフト部Ｎ１から入力されたブロックをそのまま出力し、スイッチ部Ｓ６が閉じている場合には、排他的論理和演算部１２０ｅの演算結果のブロックと巡回シフト部Ｎ１から入力されたブロックとの排他的論理和演算を実行し、演算結果として新たなブロックを出力する。
【００４７】
攪拌部１４０ａ〜１４０ｄは、攪拌関数によって、排他的論理和演算部１２０ｃ〜１２０ｆから出力されたブロックに対し、攪拌処理を行う。攪拌関数は、非線形置換と線形変換とから構成される関数であれば、任意の関数を用いることができる。なお、攪拌関数として、ＡＥＳのラウンド関数を用いた場合には高い安全性を確保できる。また、上述したように、攪拌部１４０ａ〜１４０ｄのアルゴリズムは固定であるので、ＭＡＣ鍵のビット情報に依存しない。
【００４８】
本実施形態において、図１に示すように、ラウンド関数処理部１００は、攪拌部１４０ａ〜１４０ｄの前に、排他的論理和演算部１２０ｃ〜１２０ｆから出力されたブロックを、ブロック単位に右に１ブロック巡回シフトさせてもよい。これにより、安全性をより高めることができる。
【００４９】
終端処理部２００は、攪拌部１４０ａ〜１４０ｄそれぞれから出力されたブロックを排他的論理和演算し、予め決定された所定長のＭＡＣを生成する。本実施形態においては２５６ビットのＭＡＣを生成し、図３を用いて説明する。攪拌部１４０ａから出力されたデータを出力ブロック１とし、同様に、攪拌部１４０ｂ〜ｅから出力されたデータをそれぞれ出力ブロック２、出力ブロック３、および出力ブロック４とする。
【００５０】
終端処理部２００は、出力ブロック１と出力ブロック２との排他的論理和演算を実行し、１２８ビットのブロックを出力する。また、終端処理部２００は、出力ブロック３と出力ブロック４との排他的論理和演算を実行し、１２８ビットのブロックを出力する。そして、終端処理部２００は、出力ブロック１と出力ブロック２との排他的論理和演算から出力されたブロックと、出力ブロック３と出力ブロック４との排他的論理和演算から出力されたブロックとを連結し、２５６ビットのＭＡＣを生成する。
【００５１】
このように、各攪拌部１４０ａ〜１４０ｄから出力されたブロック同士を排他的論理和演算することにより、ＭＡＣの特徴である一方向性を確保することができる。ＭＡＣ鍵の替わりに任意の固定値を用いてハッシュ関数を生成する場合においても、同様に、ハッシュ関数の特徴である一方向性を確保することができる。
【００５２】
＜アルゴリズム可変ＭＡＣ生成処理＞
図４は、本実施形態に係るアルゴリズム可変型ＭＡＣ生成装置１におけるアルゴリズム可変型ＭＡＣ生成処理のフローを示す図である。入力されたデータを所定ビット毎に区切った複数のブロック、本実施形態においては、１２８ビットの４つのブロックがラウンド関数処理部１００に入力されると処理が開始する。
【００５３】
まず、ステップＳ１において、巡回シフト部Ｎ１〜Ｎ４それぞれは、ＭＡＣ鍵の０〜７ビットまでの２ビットずつの値に基づいて巡回シフトするシフトパターンを決定し、決定したシフトパターンに応じて、各ブロックのビット値を巡回シフトさせる。なお、アルゴリズム可変型ハッシュ関数生成装置におけるアルゴリズム可変型ハッシュ関数生成処理では、ＭＡＣ鍵の替わりに任意の固定値を用いる。
【００５４】
次に、ステップＳ２において、スイッチ部Ｓ１〜Ｓ６それぞれは、ＭＡＣ鍵の８〜１３ビットまでの１ビットずつの値に基づいて、開閉を決定する。
【００５５】
次に、ステップＳ３において、排他的論理和演算部１２０ａ〜１２０ｆは、ステップＳ２で決定されたスイッチの開閉に従って、ステップＳ１で巡回シフトが行われた４つのブロックの先頭のブロックから末尾のブロックまで順に、隣に位置するブロックに対して排他的論理和演算を実行し、末尾のブロックまで達すると、末尾のブロックから先頭のブロックまで順に、隣に位置するブロックに対して排他的論理和演算を実行する。
【００５６】
次に、ステップＳ４において、攪拌手段は、ステップＳ３から出力された４つのブロックそれぞれに非線形処理および線形変換を行う。
【００５７】
次に、ステップＳ５において、ラウンド関数処理手段は、ステップＳ１からステップＳ４までの処理を所定回数繰り返したか否か判断する。所定回数繰り返した場合には、ステップＳ６に処理を進め、一方、所定回数繰り返していない場合には、ステップＳ４から出力された４つのブロックを入力データとして、ステップＳ１に処理を戻す。
【００５８】
次に、ステップＳ６において、終端処理手段は、ステップＳ４で出力された４つのブロックを排他的論理和演算し、１２８ビットのＭＡＣを生成する。なお、アルゴリズム可変型ハッシュ関数生成装置におけるアルゴリズム可変型ハッシュ関数生成処理では、ＭＡＣの替わりにハッシュ関数が生成される。
【００５９】
したがって、以上説明したように、本実施形態によれば、ラウンド関数処理部１００が、ＭＡＣ鍵のビット情報によりアルゴリズムを可変する部分（巡回シフト部Ｎ１〜Ｎ４、排他的論理和演算部１２０ａ〜１２０ｆ、およびスイッチ部Ｓ１〜Ｓ６）と、常にアルゴリズムが可変しない固定の部分（攪拌部１４０ａ〜１４０ｄ）とから構成されることにより安全性を確保することができる。また、終端処理部２００を備えることにより、ＭＡＣの特性である一方向性を確保することができる。さらに、ＭＡＣ鍵の替わりに、任意の固定値を用いることにより、アルゴリズム可変型ハッシュ関数を生成することができる。
【００６０】
なお、アルゴリズム可変型ＭＡＣ生成装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをアルゴリズム可変型ＭＡＣ生成装置に読み込ませ、実行することによって本発明のアルゴリズム可変型ＭＡＣ生成装置を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００６１】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００６２】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００６３】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００６４】
１            アルゴリズム可変型ＭＡＣ生成装置
１００        ラウンド関数処理部
１１０ａ〜１１０ｄ  巡回シフト部Ｎ１、Ｎ２、Ｎ３、Ｎ４
１２０ａ〜１２０ｆ  排他的論理和演算部
１３０ａ〜１３０ｆ  スイッチ部Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５、Ｓ６
１４０ａ〜１４０ｄ  攪拌部
２００        終端処理部
【図１】
2013097161.tif 000003
【図２】
2013097161.tif 000004
【図３】
2013097161.tif 000005
【図４】
2013097161.tif 000006