(57)【特許請求の範囲】
【請求項１】
ソフトウェアの論理演算を秘匿化して実行する論理演算装置であって、
前記ソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行うマスク処理手段と、
前記変数がマスク処理されたソフトウェアの処理に含まれる論理演算命令を変換する変換手段と、
該変換された論理演算命令に基づいて、論理演算を実行する論理演算手段と、
該論理演算処理後に、マスクされた変数から元の変数を復元する復元手段と、
を備えたことを特徴とする論理演算装置。
【請求項２】
前記マスク処理手段は、前記ソフトウェアの各変数のデータ長のマスク値を生成し、該各変数と該マスク値との排他的論理和を実行することにより、マスク処理を行うことを特徴とする請求項１に記載の論理演算装置。
【請求項３】
前記変換手段は、表１の規則（但し、ｘ、ｙは、マスク対象の変数を、Ｘ、Ｙは、変数ｘ、ｙの値をマスクした値を格納するための変数を、ａは、マスクされていない式を示す）にしたがって、前記変数がマスク処理されたソフトウェアの処理に含まれる論理演算命令を変換することを特徴とする請求項１に記載の論理演算装置。
【表１】
0005550998.tif 000014
【請求項４】
前記復元手段は、前記マスク処理された各変数と前記マスク処理手段が生成するマスク値との排他的論理和を実行することにより、復元処理を行うことを特徴とする請求項２に記載の論理演算装置。
【請求項５】
ハードウェアの論理演算を秘匿化して実行する論理演算装置であって、
前記ハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行うマスク処理回路と、
前記変数がマスク処理されたハードウェアの処理に含まれる論理演算命令を変換する変換回路と、
該変換された論理演算命令に基づいて、論理演算を実行する論理演算回路と、
該論理演算処理後に、マスクされた変数から元の変数を復元する復元回路と、
を備えたことを特徴とする論理演算装置。
【請求項６】
前記マスク処理回路は、前記ハードウェアの各変数のデータ長のマスク値を生成し、該各変数と該マスク値との排他的論理和を実行することにより、マスク処理を行うことを特徴とする請求項５に記載の論理演算装置。
【請求項７】
前記変換回路は、表２の規則（但し、ｘ、ｙは、マスク対象の変数を、Ｘ、Ｙは、変数ｘ、ｙの値をマスクした値を格納するための変数を、ａは、マスクされていない式を示す）にしたがって、前記変数がマスク処理されたハードウェアの処理に含まれる論理演算命令を変換することを特徴とする請求項５に記載の論理演算装置。
【表２】
0005550998.tif 000015
【請求項８】
前記復元回路は、前記マスク処理された各変数と前記マスク処理手段が生成するマスク値との排他的論理和を実行することにより、復元処理を行うことを特徴とする請求項６に記載の論理演算装置。
【請求項９】
マスク処理手段と変換手段と論理演算手段と復元手段とを備え、ソフトウェアの論理演算を秘匿化して実行する論理演算装置における論理演算方法であって、
前記マスク処理手段が、前記ソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行う第１のステップと、
前記変換手段が、前記変数がマスク処理されたソフトウェアの処理に含まれる論理演算命令を変換する第２のステップと、
前記論理演算手段が、該変換された論理演算命令に基づいて、論理演算を実行する第３のステップと、
前記復元手段が、該論理演算処理後に、マスクされた変数から元の変数を復元する第４のステップと、
を備えたことを特徴とする論理演算方法。
【請求項１０】
マスク処理回路と変換回路と論理演算回路と復元回路とを備え、ハードウェアの論理演算を秘匿化して実行する論理演算装置における論理演算方法であって、
前記マスク処理回路が、前記ハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行う第１のステップと、
前記変換回路が、前記変数がマスク処理されたハードウェアの処理に含まれる論理演算命令を変換する第２のステップと、
前記論理演算回路が、該変換された論理演算命令に基づいて、論理演算を実行する第３のステップと、
前記復元回路が、該論理演算処理後に、マスクされた変数から元の変数を復元する第４のステップと、
を備えたことを特徴とする論理演算方法。
【請求項１１】
マスク処理手段と変換手段と論理演算手段と復元手段とを備え、ソフトウェアの論理演算を秘匿化して実行する論理演算装置における論理演算方法をコンピュータに実行させるためのプログラムであって、
前記マスク処理手段が、前記ソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行う第１のステップと、
前記変換手段が、前記変数がマスク処理されたソフトウェアの処理に含まれる論理演算命令を変換する第２のステップと、
前記論理演算手段が、該変換された論理演算命令に基づいて、論理演算を実行する第３のステップと、
前記復元手段が、該論理演算処理後に、マスクされた変数から元の変数を復元する第４のステップと、
をコンピュータに実行させるためのプログラム。
【請求項１２】
マスク処理回路と変換回路と論理演算回路と復元回路とを備え、ハードウェアの論理演算を秘匿化して実行する論理演算装置における論理演算方法コンピュータに実行させるためのプログラムであって、
前記マスク処理回路が、前記ハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行う第１のステップと、
前記変換回路が、前記変数がマスク処理されたハードウェアの処理に含まれる論理演算命令を変換する第２のステップと、
前記論理演算回路が、該変換された論理演算命令に基づいて、論理演算を実行する第３のステップと、
前記復元回路が、該論理演算処理後に、マスクされた変数から元の変数を復元する第４のステップと、
をコンピュータに実行させるためのプログラム。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、変数をマスキングして論理演算を行う論理演算装置、論理演算方法およびプログラムに関する。
【背景技術】
【０００２】
従来より、暗号アルゴリズムをソフトウェア又はハードウェアとして実装する際には、メモリダンプや電力解析等に対するセキュリティを考慮する必要がある。これらの攻撃に対する対策の１つとして、処理されるデータを乱数によりマスキングし、実行ごとに異なるデータをメモリ又は回路に出現させる方法がある。
【０００３】
一方で、処理結果の整合性を保つため、マスキングしたデータに対しては、もとの演算命令を適切に変換した命令で処理を行う必要がある。なお、マスキングした変数に対し、任意の論理演算を実現する手法として非特許文献に記載されている技術が提案されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｊｏａｎ  Ｄａｅｍｅｎ，Ｍｉｃｈａｅｌ  Ｐｅｅｔｅｒｓ，ａｎｄ  Ｇｉｌｌｅｓ  Ｖａｎ  Ａｓｓｃｈｅ，"Ｂｉｔｓｌｉｃｅ  Ｃｉｐｈｅｒｓ  ａｎｄ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ  Ａｔｔａｃｋｓ，"Ｐｒｏｃ．ｏｆ  Ｆａｓｔ  Ｓｏｆｔｗａｒｅ  Ｅｎｃｒｙｐｔｉｏｎ  （ＦＳＥ２０００），Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  １９７８，ｐｐ．１３４−１４９，  ２０００．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、非特許文献１に記載の方式では、マスキングの対象となる変数は、１ビットの変数に限られるという制約がある。このため、この手法を１バイトのデータ長をもつ変数に適用する場合は、この変数の各ビットを新たな１ビットの変数として定義する必要がある。このため、変換後のプログラム又は回路の実行効率が低下するという課題があった。
【０００６】
そこで、本発明は、上述の課題に鑑みてなされたものであり、任意のデータ長の変数に対してマスキング処理を施し、論理演算を安全に実装する論理演算装置、論理演算方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【０００８】
（１）本発明は、ソフトウェアの論理演算を秘匿化して実行する論理演算装置であって、前記ソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行うマスク処理手段（例えば、図１のマスク処理部１１０に相当）と、前記変数がマスク処理されたソフトウェアの処理に含まれる論理演算命令を変換する変換手段（例えば、図１の変換部１２０に相当）と、該変換された論理演算命令に基づいて、論理演算を実行する論理演算手段（例えば、図１の論理演算部１３０に相当）と、該論理演算処理後に、マスクされた変数から元の変数を復元する復元手段（例えば、図１の復元部１４０に相当）と、を備えたことを特徴とする論理演算装置を提案している。
【０００９】
この発明によれば、マスク処理手段は、ソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行う。変換手段は、変数がマスク処理されたソフトウェアの処理に含まれる論理演算命令を変換する。論理演算手段は、変換された論理演算命令に基づいて、論理演算を実行する。復元手段は、論理演算処理後に、マスクされた変数から元の変数を復元する。したがって、ソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行うため、任意のデータ長の変数に対してマスキング処理を施し、論理演算を安全に実行することができる。
【００１０】
（２）本発明は、（１）の論理演算装置について、前記マスク処理手段は、前記ソフトウェアの各変数のデータ長のマスク値を生成し、該各変数と該マスク値との排他的論理和を実行することにより、マスク処理を行うことを特徴とする論理演算装置を提案している。
【００１１】
この発明によれば、マスク処理手段は、ソフトウェアの各変数のデータ長のマスク値を生成し、各変数とマスク値との排他的論理和を実行することにより、マスク処理を行う。したがって、排他的論理和演算によりマスク処理を行うため、小さな演算負荷でマスク処理を実行することができる。
【００１２】
（３）本発明は、（１）の論理演算装置について、前記変換手段は、表１の規則（但し、ｘ、ｙは、マスク対象の変数を、Ｘ、Ｙは、変数ｘ、ｙの値をマスクした値を格納するための変数を、ａは、マスクされていない式を示す）にしたがって、前記変数がマスク処理されたソフトウェアの処理に含まれる論理演算命令を変換することを特徴とする論理演算装置を提案している。
【００１３】
この発明によれば、変換手段は、表１の規則（但し、ｘ、ｙは、マスク対象の変数を、Ｘ、Ｙは、変数ｘ、ｙの値をマスクした値を格納するための変数を、ａは、マスクされていない式を示す）にしたがって、変数がマスク処理されたソフトウェアの処理に含まれる論理演算命令を変換する。したがって、通常の演算処理により、論理演算を秘匿化しつつ、安全に実行することができる。
【００１４】
（４）本発明は、（２）の論理演算装置について、前記復元手段は、前記マスク処理された各変数と前記マスク処理手段が生成するマスク値との排他的論理和を実行することにより、復元処理を行うことを特徴とする論理演算装置を提案している。
【００１５】
この発明によれば、復元手段は、マスク処理された各変数とマスク処理手段が生成するマスク値との排他的論理和を実行することにより、復元処理を行う。したがって、マスク処理された各変数とマスク処理手段が生成するマスク値との排他的論理和を実行することで復元が行えるため、小さな演算負荷で復元処理を実行することができる。
【００１６】
（５）本発明は、ハードウェアの論理演算を秘匿化して実行する論理演算装置であって、前記ハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行うマスク処理回路（例えば、図３のマスク処理回路２１０に相当）と、前記変数がマスク処理されたハードウェアの処理に含まれる論理演算命令を変換する変換回路（例えば、図３の変換回路２２０に相当）と、該変換された論理演算命令に基づいて、論理演算を実行する論理演算回路（例えば、図３の論理演算回路２３０に相当）と、該論理演算処理後に、マスクされた変数から元の変数を復元する復元回路（例えば、図３の復元回路２４０に相当）と、を備えたことを特徴とする論理演算装置を提案している。
【００１７】
この発明によれば、マスク処理回路は、ハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行う。変換回路は、変数がマスク処理されたハードウェアの処理に含まれる論理演算命令を変換する。論理演算回路は、変換された論理演算命令に基づいて、論理演算を実行する。復元回路は、論理演算処理後に、マスクされた変数から元の変数を復元する。したがって、ハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行うため、任意のデータ長の変数に対してマスキング処理を施し、論理演算を安全に実行することができる。
【００１８】
（６）本発明は、（５）の論理演算装置について、前記マスク処理回路は、前記ハードウェアの各変数のデータ長のマスク値を生成し、該各変数と該マスク値との排他的論理和を実行することにより、マスク処理を行うことを特徴とする論理演算装置を提案している。
【００１９】
この発明によれば、マスク処理回路は、ハードウェアの各変数のデータ長のマスク値を生成し、各変数とマスク値との排他的論理和を実行することにより、マスク処理を行う。したがって、排他的論理和演算によりマスク処理を行うため、小さな演算負荷でマスク処理を実行することができる。
【００２０】
（７）本発明は、（５）の論理演算装置について、前記変換回路は、表２の規則（但し、ｘ、ｙは、マスク対象の変数を、Ｘ、Ｙは、変数ｘ、ｙの値をマスクした値を格納するための変数を、ａは、マスクされていない式を示す）にしたがって、前記変数がマスク処理されたハードウェアの処理に含まれる論理演算命令を変換することを特徴とする論理演算装置を提案している。
【００２１】
この発明によれば、変換回路は、表２の規則（但し、ｘ、ｙは、マスク対象の変数を、Ｘ、Ｙは、変数ｘ、ｙの値をマスクした値を格納するための変数を、ａは、マスクされていない式を示す）にしたがって、変数がマスク処理されたハードウェアの処理に含まれる論理演算命令を変換する。したがって、通常の演算処理により、論理演算を秘匿化しつつ、安全に実行することができる。
【００２２】
（８）本発明は、（６）の論理演算装置について、前記復元回路は、前記マスク処理された各変数と前記マスク処理手段が生成するマスク値との排他的論理和を実行することにより、復元処理を行うことを特徴とする請求項６に記載の論理演算装置を提案している。
【００２３】
この発明によれば、復元回路は、マスク処理された各変数とマスク処理手段が生成するマスク値との排他的論理和を実行することにより、復元処理を行う。したがって、マスク処理された各変数とマスク処理手段が生成するマスク値との排他的論理和を実行することで復元が行えるため、小さな演算負荷で復元処理を実行することができる。
【００２４】
（９）本発明は、ソフトウェアの論理演算を秘匿化して実行する論理演算方法であって、前記ソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行う第１のステップ（例えば、図２のステップＳ１０１に相当）と、前記変数が（例えば、図２のステップＳ１０２に相当）マスク処理されたソフトウェアの処理に含まれる論理演算命令を変換する第２のステップと、該変換された論理演算命令に基づいて、論理演算を実行する第３のステップ（例えば、図２のステップＳ１０３に相当）と、該論理演算処理後に、マスクされた変数から元の変数を復元する第４のステップ（例えば、図２のステップＳ１０４に相当）と、を備えたことを特徴とする論理演算方法を提案している。
【００２５】
この発明によれば、ソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行い、変数がマスク処理されたソフトウェアの処理に含まれる論理演算命令を変換する。そして、変換された論理演算命令に基づいて、論理演算を実行し、論理演算処理後に、マスクされた変数から元の変数を復元する。したがって、ソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行うため、任意のデータ長の変数に対してマスキング処理を施し、論理演算を安全に実行することができる。
【００２６】
（１０）本発明は、ハードウェアの論理演算を秘匿化して実行する論理演算方法であって、前記ハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行う第１のステップ（例えば、図４のステップＳ２０１に相当）と、前記変数がマスク処理されたハードウェアの処理に含まれる論理演算命令を変換する第２のステップ（例えば、図４のステップＳ２０２に相当）と、該変換された論理演算命令に基づいて、論理演算を実行する第３のステップ（例えば、図４のステップＳ２０３に相当）と、該論理演算処理後に、マスクされた変数から元の変数を復元する第４のステップ（例えば、図４のステップＳ２０４に相当）と、を備えたことを特徴とする論理演算方法を提案している。
【００２７】
この発明によれば、ハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行い、変数がマスク処理されたハードウェアの処理に含まれる論理演算命令を変換する。そして、変換された論理演算命令に基づいて、論理演算を実行し、論理演算処理後に、マスクされた変数から元の変数を復元する。したがって、ハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行うため、任意のデータ長の変数に対してマスキング処理を施し、論理演算を安全に実行することができる。
【００２８】
（１１）本発明は、ソフトウェアの論理演算を秘匿化して実行する論理演算方法をコンピュータに実行させるためのプログラムであって、前記ソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行う第１のステップ（例えば、図２のステップＳ１０１に相当）と、前記変数がマスク処理されたソフトウェアの処理に含まれる論理演算命令を変換する第２のステップ（例えば、図２のステップＳ１０２に相当）と、該変換された論理演算命令に基づいて、論理演算を実行する第３のステップ（例えば、図２のステップＳ１０３に相当）と、該論理演算処理後に、マスクされた変数から元の変数を復元する第４のステップ（例えば、図２のステップＳ１０４に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００２９】
この発明によれば、ソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行い、変数がマスク処理されたソフトウェアの処理に含まれる論理演算命令を変換する。そして、変換された論理演算命令に基づいて、論理演算を実行し、論理演算処理後に、マスクされた変数から元の変数を復元する。したがって、ソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行うため、任意のデータ長の変数に対してマスキング処理を施し、論理演算を安全に実行することができる。
【００３０】
（１２）本発明は、ハードウェアの論理演算を秘匿化して実行する論理演算方法をコンピュータに実行させるためのプログラムであって、前記ハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行う第１のステップ（例えば、図４のステップＳ２０１に相当）と、前記変数がマスク処理されたハードウェアの処理に含まれる論理演算命令を変換する第２のステップ（例えば、図４のステップＳ２０２に相当）と、該変換された論理演算命令に基づいて、論理演算を実行する第３のステップ（例えば、図４のステップＳ２０３に相当）と、該論理演算処理後に、マスクされた変数から元の変数を復元する第４のステップ（例えば、図４のステップＳ２０４に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００３１】
この発明によれば、ハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行い、変数がマスク処理されたハードウェアの処理に含まれる論理演算命令を変換する。そして、変換された論理演算命令に基づいて、論理演算を実行し、論理演算処理後に、マスクされた変数から元の変数を復元する。したがって、ハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行うため、任意のデータ長の変数に対してマスキング処理を施し、論理演算を安全に実行することができる。
【発明の効果】
【００３２】
本発明によれば、任意のデータ長の変数に対する論理演算の保護が可能となり、暗号アルゴリズム等を、ハードウェア又はソフトウェアで、安全かつ効率的に実装できるという効果がある。
【図面の簡単な説明】
【００３３】
【図１】本発明の第１の実施形態に係る論理演算装置の構成を示す図である。
【図２】本発明の第１の実施形態に係る論理演算装置の処理を示す図である。
【図３】本発明の第２の実施形態に係る論理演算装置の構成を示す図である。
【図４】本発明の第２の実施形態に係る論理演算装置の処理を示す図である。
【発明を実施するための形態】
【００３４】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００３５】
＜第１の実施形態＞
図１および図２を用いて、本発明の第１の実施形態について説明する。なお、本実施形態は、ソフトウェアにより論理演算処理を行う論理演算装置に関するものである。
【００３６】
＜論理演算装置の構成＞
図１に示すように、本実施形態に係る論理演算装置は、マスク処理部１１０と、変換部１２０と、論理演算部１３０と、復元部１４０とから構成されている。
【００３７】
マスク処理部１１０は、ソフトウェアの先頭に設けられ、ソフトウェアの各変数のデータ長と同一のデータ長を有するマスク値を生成し、このマスク値により、各変数のマスク処理を行う。なお、各変数をマスクする処理を追加する変数のマスクには、排他的論理和演算を用いる。例えば、変数ｘ、ｙに格納されている値は、数１に示すように、マスク値Ｍとの排他的論理和を取り、変数Ｘ、Ｙに格納する。
【００３８】
【数１】
0005550998.tif 000002
【００３９】
変換部１２０は、ソフトウェアの処理に含まれる論理演算命令を、数２に従い置き換える。ここで、ｘとｙはマスク対象の変数であり、ａはマスクされていない式を意味する。また、変数ＸおよびＹは、それぞれ変数ｘおよびｙの値をマスクした値を格納するための変数である。
【００４０】
【数２】
0005550998.tif 000003
【００４１】
論理演算部１３０は、変換された論理演算命令に基づいて、論理演算を実行する。
【００４２】
復元部１４０は、ソフトウェアの末尾に設けられ、論理演算処理後に、マスクされた変数から元の変数を復元する。つまり、マスクされた変数の値とマスク値の排他的論理和をとることで、元の変数の値を復元できる。例えば、変数Ｘ、Ｙに格納されているマスクされた値からは、数３の手順で元の変数ｘ、ｙの値が復元できる。
【００４３】
【数３】
0005550998.tif 000004
【００４４】
＜論理演算装置の処理＞
図２を用いて、本実施形態に係る論理演算装置の処理について説明する。
まず、マスク処理部１１０がソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行う（ステップＳ１０１）。変換部１２０は、変数がマスク処理されたソフトウェアの処理に含まれる論理演算命令を変換する（ステップＳ１０２）。
【００４５】
論理演算部１３０は、変換された論理演算命令に基づいて、論理演算を実行する（ステップＳ１０３）。そして、復元部１４０は、論理演算処理後に、マスクされた変数から元の変数を復元する（ステップＳ１０４）。
【００４６】
以上、説明したように、本実施形態によれば、ソフトウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行うため、任意のデータ長の変数に対してマスキング処理を施し、論理演算を安全に実行することができる。
【００４７】
＜第２の実施形態＞
図３および図４を用いて、本発明の第２の実施形態について説明する。なお、本実施形態は、ハードウェアにより論理演算処理を行う論理演算装置に関するものである。
【００４８】
＜論理演算装置の構成＞
図３に示すように、本実施形態に係る論理演算装置は、マスク処理回路２１０と、変換回路２２０と、論理演算回路２３０と、復元回路２４０とから構成されている。
【００４９】
マスク処理回路２１０は、ハードウェアの先頭に設けられ、ハードウェアの各変数のデータ長と同一のデータ長を有するマスク値を生成し、このマスク値により、各変数のマスク処理を行う。なお、各変数をマスクする処理を追加する変数のマスクには、排他的論理和演算を用いる。例えば、変数ｘ、ｙに格納されている値は、数４に示すように、マスク値Ｍとの排他的論理和を取り、変数Ｘ、Ｙに格納する。
【００５０】
【数４】
0005550998.tif 000005
【００５１】
変換回路２２０は、ハードウェアの処理に含まれる論理演算命令を、数５に従い置き換える。ここで、ｘとｙはマスク対象の変数であり、ａはマスクされていない式を意味する。また、変数ＸおよびＹは、それぞれ変数ｘおよびｙの値をマスクした値を格納するための変数である。
【００５２】
【数５】
0005550998.tif 000006
【００５３】
論理演算回路２３０は、変換された論理演算命令に基づいて、論理演算を実行する。
【００５４】
復元回路２４０は、ハードウェアの末尾に設けられ、論理演算処理後に、マスクされた変数から元の変数を復元する。つまり、マスクされた変数の値とマスク値の排他的論理和をとることで、元の変数の値を復元できる。例えば、変数Ｘ、Ｙに格納されているマスクされた値からは、数６の手順で元の変数ｘ、ｙの値が復元できる。
【００５５】
【数６】
0005550998.tif 000007
【００５６】
＜論理演算装置の処理＞
図４を用いて、本実施形態に係る論理演算装置の処理について説明する。
まず、マスク処理回路２１０がハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行う（ステップＳ２０１）。変換回路２２０は、変数がマスク処理されたハードウェアの処理に含まれる論理演算命令を変換する（ステップＳ２０２）。
【００５７】
論理演算回路２３０は、変換された論理演算命令に基づいて、論理演算を実行する（ステップＳ２０３）。そして、復元回路２４０は、論理演算処理後に、マスクされた変数から元の変数を復元する（ステップＳ２０４）。
【００５８】
以上、説明したように、本実施形態によれば、ハードウェアの各変数のデータ長と同一のマスク値により、各変数のマスク処理を行うため、任意のデータ長の変数に対してマスキング処理を施し、論理演算を安全に実行することができる。
【００５９】
＜実施例＞
以下に、数７の命令を変換する例について説明する。なお、ここで、ｘとｙの双方をマスクの対象とする。
【００６０】
【数７】
0005550998.tif 000008
【００６１】
数８の変換規則を用いると、まず、数７は、排他的論理和の可換性により、数９に変形される。
【００６２】
【数８】
0005550998.tif 000009
【００６３】
【数９】
0005550998.tif 000010
【００６４】
次に、数８の規則番号９を適用して、数９が数１０に変換される。
【００６５】
【数１０】
0005550998.tif 000011
【００６６】
さらに、数８の規則番号１１を適用して、数１０が数１１に変換される。
【００６７】
【数１１】
0005550998.tif 000012
【００６８】
そして、マスク処理および復元処理を追加すると、数１２に示す命令列が得られる。
【００６９】
【数１２】
0005550998.tif 000013
【００７０】
なお、論理演算装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを論理演算装置に読み込ませ、実行することによって本発明の論理演算装置を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００７１】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００７２】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００７３】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００７４】
１１０；マスク処理部
１２０；変換部
１３０；論理演算部
１４０；復元部
２１０；マスク処理回路
２２０；変換回路
２３０；論理演算回路
２４０；復元回路
【図１】
0005550998.tif 000016
【図２】
0005550998.tif 000017
【図３】
0005550998.tif 000018
【図４】
0005550998.tif 000019