JP2013142761A - 論理演算装置、論理演算方法、およびプログラム - Google Patents

論理演算装置、論理演算方法、およびプログラム Download PDF

Info

Publication number
JP2013142761A
JP2013142761A JP2012002605A JP2012002605A JP2013142761A JP 2013142761 A JP2013142761 A JP 2013142761A JP 2012002605 A JP2012002605 A JP 2012002605A JP 2012002605 A JP2012002605 A JP 2012002605A JP 2013142761 A JP2013142761 A JP 2013142761A
Authority
JP
Japan
Prior art keywords
variable
logical
logical operation
variables
mask
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012002605A
Other languages
English (en)
Other versions
JP5951260B2 (ja
Inventor
Kazuhide Fukushima
和英 福島
Shinsaku Kiyomoto
晋作 清本
Masaru Miyake
優 三宅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KDDI Corp
Original Assignee
KDDI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by KDDI Corp filed Critical KDDI Corp
Priority to JP2012002605A priority Critical patent/JP5951260B2/ja
Publication of JP2013142761A publication Critical patent/JP2013142761A/ja
Application granted granted Critical
Publication of JP5951260B2 publication Critical patent/JP5951260B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】小さい回路規模で、任意のデータ長の変数に対してマスキングを施すとともに、変数のAND演算結果またはOR演算結果をマスキングした値を得る。
【解決手段】論理演算装置10は、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行うマスク処理部11と、マスク処理された変数のAND演算またはOR演算に、共通関数FとのXOR演算を施す論理演算部12と、を備える。
Figure 2013142761

例えばAND演算の場合には論理演算部12は変数X、YのAND演算に関数Fの排他的論理和演算を施す。その演算結果は元の変数x、yのAND演算結果と、マスク値mxとmyのAND演算結果との排他的論理和演算を施した値と等しくなる。
【選択図】図1

Description

本発明は、変数をマスキングして論理演算を行う論理演算装置、論理演算方法、およびプログラムに関する。
従来より、暗号化アルゴリズムをソフトウェアまたはハードウェアとして実装する際には、メモリダンプや電力解析等に対するセキュリティを考慮する必要がある。これらの攻撃に対する対策の1つとして、処理されるデータを乱数によりマスキングし、実行毎に異なるデータをメモリまたは回路に出現させる方法がある(例えば、特許文献1、非特許文献1、非特許文献2)。
特開2007−334016号公報
Joan Daemen,Michael Peeters,and Gilles Van Assche,"Bitslice Ciphers and Power Analysis Attacks",Proc.of Fast Software Encryption(FSE2000),Lecture Notes in Computer Science 1978.pp.134−149,2000 Jovan Dj.Golic and Renato Menicocci,"Universal Masking on Logic Gate Level",Electronics Letters,29th April 2004,Vol.40,No.9
しかしながら、非特許文献1に記載の方式では、マスキングの対象となる変数は、1ビットの変数に限られるという制約があり、また、特許文献1に記載の方式では、n(n≧2)ビットの変数を入力として1ビットの結果を得る論理式に限定されるという問題点があった。一方、非特許文献2に記載の方式では、論理演算を秘匿化するために、AND演算またはOR演算を独立した乱数によりマスキングされた変数により実行し、変数のAND演算結果またはOR演算結果をマスキングした値を得る方法を提案している。この方法において、変数のAND演算結果またはOR演算結果をマスキングした値を得るために、マスキングされた変数のAND演算またはOR演算に所定の関数を用いているが、所定の関数はAND演算とOR演算とでは異なり、共通の関数を利用することが困難であるために演算回数(回路規模)が大きくなるという問題点があった。
そこで本発明は、上述した課題に鑑みてされたものであり、任意のデータ長の変数に対してマスキングを施すとともに、変数のAND演算結果またはOR演算結果をマスキングした値を得るために、マスキングされた変数のAND演算またはOR演算に用いる所定の関数を、共通化することによって演算回数を削減(回路規模を縮小)し、論理演算を安全に実装する論理演算装置、論理演算方法およびプログラムを提供することを目的とする。
本発明は、上述した課題を解決するために以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
(1) 本発明は、ソフトウェアの論理演算を秘匿化して実行する論理演算装置であって、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行うマスク処理手段(例えば、図1のマスク処理部11に相当)と、マスク処理された変数のAND演算またはOR演算に、数1で表される共通関数とのXOR演算を施す論理演算手段(例えば、図1の論理演算部12に相当)と、を備えることを特徴とする論理演算装置を提案している。
この発明によれば、マスク処理手段は、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行う。論理演算手段は、マスク処理された変数のAND演算またはOR演算に、数1で表される共通関数とのXOR演算を施す。したがって、任意のデータ長のソフトウェアの変数に対してマスク処理を施すとともに、変数のAND演算結果およびOR演算結果を得るために、マスク処理された変数のAND演算およびOR演算に用いる関数を、共通化することによって演算回数を削減し、論理演算を安全に実装することができる。
(2) 本発明は、(1)の論理演算装置について、前記共通関数として、数2で表される関数Gを用いることを特徴とする論理演算装置を提案している。
この発明によれば、共通関数として、数2で表される関数Gを用いる。したがって、変数のAND演算結果およびOR演算結果のマスク値を各変数のマスク値の排他的論理和とすることができ、変数のAND演算結果およびOR演算結果のマスク値の偏りを防止することができる。
(3) 本発明は、(1)または(2)の論理演算装置について、前記マスク処理手段が、前記任意のデータ長であって、変数毎に異なるマスク値を生成し、前記任意のデータ長の変数と生成されたマスク値とのXOR演算を実行することにより、マスク処理を行うことを特徴とする論理演算装置を提案している。
この発明によれば、マスク処理手段が、任意のデータ長であって、変数毎に異なるマスク値を生成し、任意のデータ長の変数と生成されたマスク値とのXOR演算を実行することにより、マスク処理を行う。したがって、XOR演算によりマスク処理を行うため、小さな演算負荷でマスク処理を実行することができる。
(4) 本発明は、(1)から(3)の論理演算装置について、前記論理演算手段が、前記マスク処理された変数のXOR演算およびNOT演算を実行することを特徴とする論理演算装置を提案している。
この発明によれば、論理演算手段が、マスク処理された変数のXOR演算およびNOT演算を実行する。したがって、マスク処理された変数のXOR演算およびNOT演算から、マスク処理された元の変数を得るXOR演算およびNOT演算を行うことができる。
(5) 本発明は、(1)から(4)の論理演算装置について、3つ以上の変数の論理演算を実行する場合に、前記論理演算手段が、マスク処理された3つ以上の変数の中から2変数を抽出し、抽出した2変数のAND演算およびOR演算に、前記共通関数とのXOR演算を施し、当該XOR演算の結果を新たなマスク処理された1変数とし、マスク処理された変数が最後の2つになるまで処理を繰り返し、当該最後の2つの変数のAND演算およびOR演算に、前記共通関数とのXOR演算を施すことを特徴とする論理演算装置を提案している。
この発明によれば、論理演算手段が、マスク処理された3つ以上の変数の中から2変数を抽出し、抽出した2変数のAND演算およびOR演算に、共通関数とのXOR演算を施し、XOR演算の結果を新たなマスク処理された1変数とし、マスク処理された変数が最後の2つになるまで処理を繰り返し、最後の2つの変数のAND演算およびOR演算に、共通関数とのXOR演算を施す。したがって、3つ以上の変数の場合にも共通関数を用いたAND演算およびOR演算を実行することができる。
(6) 本発明は、ハードウェアの論理演算を秘匿化して実行する論理演算装置であって、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行うマスク処理回路(例えば、図3のマスク処理回路21に相当)と、マスク処理された変数のAND演算またはOR演算に、数3で表される共通関数とのXOR演算を施す論理演算回路(例えば、図3の論理演算回路22に相当)と、を備えることを特徴とする論理演算装置を提案している。
この発明によれば、マスク処理手段は、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長のハードウェアの変数のマスク処理を行う。論理演算手段は、マスク処理された変数のAND演算またはOR演算に、数3で表される共通関数とのXOR演算を施す。したがって、任意のデータ長に変数に対してマスク処理を施すとともに、変数のAND演算結果およびOR演算結果を得るために、マスク処理された変数のAND演算およびOR演算に用いる関数を、共通化することによって回路規模を縮小し、論理演算を安全に実装することができる。
(7) 本発明は、(6)の論理演算装置について、前記共通関数として、数4で表される関数Gを用いることを特徴とする論理演算装置を提案している。
この発明によれば、共通関数として、数4で表される関数Gを用いる。したがって、変数のAND演算結果およびOR演算結果のマスク値を各変数のマスク値の排他的論理和とすることができ、変数のAND演算結果およびOR演算結果のマスク値の偏りを防止することができる。
(8) 本発明は、(6)または(7)の論理演算装置について、前記マスク処理回路が、前記任意のデータ長であって、変数毎に異なるマスク値を生成し、前記任意のデータ長の変数と生成されたマスク値とのXOR演算を実行することにより、マスク処理を行うことを特徴とする論理演算装置を提案している。
この発明によれば、マスク処理回路が、任意のデータ長であって、変数毎に異なるマスク値を生成し、任意のデータ長の変数と生成されたマスク値とのXOR演算を実行することにより、マスク処理を行う。したがって、XOR演算によりマスク処理を行うため、小さな演算負荷でマスク処理を実行することができる。
(9) 本発明は、(6)から(8)の論理演算装置について、前記論理演算回路が、前記マスク処理された変数のXOR演算およびNOT演算を実行することを特徴とする論理演算装置を提案している。
この発明によれば、論理演算回路が、マスク処理された変数のXOR演算およびNOT演算を実行する。したがって、マスク処理された変数のXOR演算およびNOT演算から、マスク処理された元の変数を得るXOR演算およびNOT演算を行うことができる。
(10) 本発明は、(6)から(9)の論理演算装置について、3つ以上の変数の論理演算を実行する場合に、前記論理演算回路が、マスク処理された3つ以上の変数の中から2変数を抽出し、抽出した2変数のAND演算およびOR演算に、前記共通関数とのXOR演算を施し、当該XOR演算の結果を新たなマスク処理された1変数とし、マスク処理された変数が最後の2つになるまで処理を繰り返し、当該最後の2つの変数のAND演算およびOR演算に、前記共通関数とのXOR演算を施すことを特徴とする論理演算装置を提案している。
この発明によれば、論理演算回路が、マスク処理された3つ以上の変数の中から2変数を抽出し、抽出した2変数のAND演算およびOR演算に、共通関数とのXOR演算を施し、XOR演算の結果を新たなマスク処理された1変数とし、マスク処理された変数が最後の2つになるまで処理を繰り返し、最後の2つの変数のAND演算およびOR演算に、共通関数とのXOR演算を施す。したがって、3つ以上の変数の場合にも共通関数を用いたAND演算およびOR演算を実行することができる。
(11) 本発明は、マスク処理手段と、論理演算手段とを備えた、ソフトウェアの論理演算を秘匿化して実行する論理演算装置における論理演算方法であって、前記マスク処理手段が、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行う第1のステップ(例えば、図2のステップS1に相当)と、前記論理演算手段が、マスク処理された変数のAND演算またはOR演算に、数1で表される共通関数とのXOR演算を施す第2のステップ(例えば、図2のステップS3に相当)と、を含むことを特徴とする論理演算方法を提案している。
この発明によれば、マスク処理手段は、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行う。論理演算手段は、マスク処理された変数のAND演算またはOR演算に、数1で表される共通関数とのXOR演算を施す。したがって、任意のデータ長のソフトウェアの変数に対してマスク処理を施すとともに、変数のAND演算結果およびOR演算結果を得るために、マスク処理された変数のAND演算およびOR演算に用いる関数を、共通化することによって演算回数を削減し、論理演算を安全に実装することができる。
(12) 本発明は、マスク処理手段と、論理演算手段とを備えた、ソフトウェアの論理演算を秘匿化して実行する論理演算装置における論理演算方法をコンピュータに実行させるためのプログラムであって、前記マスク処理手段が、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行う第1のステップ(例えば、図2のステップS1に相当)と、前記論理演算手段が、マスク処理された変数のAND演算またはOR演算に、数1で表される共通関数とのXOR演算を施す第2のステップ(例えば、図2のステップS3に相当)と、をコンピュータに実行させるためのプログラムを提案している。
この発明によれば、マスク処理手段は、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長のソフトウェアの変数のマスク処理を行う。論理演算手段は、マスク処理された変数のAND演算またはOR演算に、数1で表される共通関数とのXOR演算を施す。したがって、任意のデータ長に変数に対してマスク処理を施すとともに、変数のAND演算結果およびOR演算結果を得るために、マスク処理された変数のAND演算およびOR演算に用いる関数を、共通化することによって演算回数を削減し、論理演算を安全に実装することができる。
(13) 本発明は、マスク処理回路と、論理演算回路とを備えた、ハードウェアの論理演算を秘匿化して実行する論理演算装置における論理演算方法であって、前記マスク処理回路が、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行う第1のステップ(例えば、図4のステップS11に相当)と、前記論理演算回路が、マスク処理された変数のAND演算またはOR演算に、数3で表される共通関数とのXOR演算を施す第2のステップ(例えば、図4のステップS13に相当)と、を含むことを特徴とする論理演算方法を提案している。
この発明によれば、マスク処理回路は、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長のハードウェアの変数のマスク処理を行う。論理演算回路は、マスク処理された変数のAND演算またはOR演算に、数3で表される共通関数とのXOR演算を施す。したがって、任意のデータ長に変数に対してマスク処理を施すとともに、変数のAND演算結果およびOR演算結果を得るために、マスク処理された変数のAND演算およびOR演算に用いる関数を、共通化することによって回路規模を縮小し、論理演算を安全に実装することができる。
(14) 本発明は、マスク処理回路と、論理演算回路とを備えた、ハードウェアの論理演算を秘匿化して実行する論理演算装置における論理演算方法をコンピュータに実行させるためのプログラムであって、前記マスク処理回路が、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行う第1のステップ(例えば、図4のステップS11に相当)と、前記論理演算回路が、マスク処理された変数のAND演算またはOR演算に、数3で表される共通関数とのXOR演算を施す第2のステップ(例えば、図4のステップS13に相当)と、をコンピュータに実行させるためのプログラムを提案している。
この発明によれば、マスク処理回路は、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長のハードウェアの変数のマスク処理を行う。論理演算回路は、マスク処理された変数のAND演算またはOR演算に、数3で表される共通関数とのXOR演算を施す。したがって、任意のデータ長に変数に対してマスク処理を施すとともに、変数のAND演算結果およびOR演算結果を得るために、マスク処理された変数のAND演算およびOR演算に用いる関数を、共通化することによって回路規模を縮小し、論理演算を安全に実装することができる。
本発明によれば、任意のデータ長の変数に対してマスク処理を施すとともに、変数のAND演算結果またはOR演算結果をマスク処理した値を得るために、マスク処理された変数のAND演算またはOR演算に用いる所定の関数を共通化することによって演算回数を削減(回路規模を縮小)することができる。
第1の実施形態に係る論理演算装置の機能構成を示す図である。 第1の実施形態に係る論理演算装置の処理フローを示す図である。 第2の実施形態に係る論理演算装置の機能構成を示す図である。 第2の実施形態に係る論理演算装置の処理フローを示す図である。
以下、本発明の実施形態について、図面を用いて、詳細に説明する。なお、本実施形態における構成要素は適宜、既存の構成要素等との組み合わせを含む様々なバリエーションが可能である。したがって、本実施形態の記載を持って、特許請求の範囲に記載された発明の内容を限定するものではない。なお、本発明の実施形態の説明において、排他的論理和および論理否定の演算子は数1のように表記する。
Figure 2013142761
<第1の実施形態>
図1および図2を用いて、本発明の第1の実施形態について説明する。なお、本実施形態はソフトウェアにより論理演算処理を行う論理演算装置に関するものである。
<論理演算装置の機能構成>
図1は、本発明の第1の実施形態に係る論理演算装置10の機能構成を示す図である。図1に示すように、論理演算装置10は、マスク処理部11、論理演算部12、および復元部13から構成されている。
マスク処理部11は、ソフトウェアの先頭に設けられ、任意のデータ長の乱数を生成し、生成した乱数をマスク値として用いてソフトウェアの各変数のマスク処理(マスキングともいう)を行う。なお、マスク処理は、各変数について、変数にマスク値との排他的論理和演算を施すことにより行われる。例えば、マスク処理部11は、数2に示すように、変数x、yに格納されている値に、マスク値mx、myそれぞれとの排他的論理和演算を施し、演算結果を変数X、Yに格納する。
Figure 2013142761
論理演算部12は、マスキングされた変数X、YのAND演算およびOR演算を数3に示す関数Fを用いて実行する。マスキングされた変数を用いてAND演算またはOR演算を実行することにより、論理演算を秘匿化することができ、関数Fを用いることにより、元の変数x、yのAND演算結果またはOR演算結果をマスキングした値が得られる。また、関数Fを、AND演算およびOR演算のいずれでも使用できる共通の関数とすることにより、演算回数を削減することができる。
Figure 2013142761
まず、AND演算について具体的に説明する。論理演算部12は、数4の左辺に示すように変数X、YのAND演算に関数Fとの排他的論理和演算を施す。演算結果として、数4の右辺に示すように、元の変数x、yのAND演算に、MANDとの排他的論理和演算を施した値を得ることができる。なお、MANDは、マスク値mxとmyとのAND演算結果(mx・my)である。
Figure 2013142761
数5に数4の左辺から数4の右辺が得られるまでの演算過程を示す。まず、数5の1行目に示すように、まず、マスクされている変数X、Yを元の変数x、yとマスク値mx、myとの式に変換する。次に、小括弧をはずし、結果が0となる排他的論理和の演算式ができるように式を変形することで、数4の右辺が得られる。
Figure 2013142761
次に、OR演算について具体的に説明する。論理演算部12は、数6の左辺に示すように変数X、YのOR演算に関数Fとの排他的論理和演算を施す。演算結果として、数6の右辺に示すように、元の変数x、yのOR演算に、MORとの排他的論理和演算を施した値を得ることができる。なお、MORは、マスク値mxとmyとのOR演算結果(mx+my)である。
Figure 2013142761
数7に数6の左辺から数6の右辺が得られるまでの演算過程を示す。まず、数7の1行目に示すように、まず、マスクされている変数X、Yを元の変数x、yとマスク値mx、myとの式に変換する。次に、元の変数x、yとマスク値mx、myとの式に変換された変数X、YのOR演算に2重否定を付け、結果が0または1となる排他的論理和演算式ができるように式を変形することによって、数6の右辺が得られる。
Figure 2013142761
また、論理演算部12は、XOR演算およびNOT演算を実行する。数8に示すように変数X、YのXOR演算を実行すると、元の変数x、yのXOR演算に、MXORとの排他的論理和演算を施した値を得ることができる。なお、MXORは、マスク値mxとmyとのXOR演算結果(mx[xor]my)である。
Figure 2013142761
同様に、数9に示すように、変数XのNOT演算を実行すると、元の変数xのNOT演算の結果にMNOTxとの排他的論理和演算を施した値を得ることができる。なお、MNOTxは、mxである。変数Yについても、変数Xと同様である。なお、MNOTyは、myである。
Figure 2013142761
以上説明したように、論理演算部12は、論理演算を秘匿化するために、任意のデータ長の変数x、yをマスキングした変数X、Yの論理演算を実行することができる。また、論理演算部12は、AND演算またはOR演算において、元の変数x、yのAND演算結果またはOR演算結果をマスキングした値を得るための関数として、AND演算とOR演算とで共通の関数Fを用いることにより、演算回数を削減することができる。それにより、マスキングされた変数X、YのAND演算およびOR演算を効率的に構成することができる。
しかしながら、上述したように、関数Fを用いた場合、変数x、yのAND演算の結果に対するマスク値はマスク値mx、myのAND演算(mx・my)となるため、マスク値の約3/4のビットが0となり、マスク値のビットパターンに偏りが生じる。また、変数x、yのOR演算の結果に対するマスク値はマスク値mx、myのOR演算(mx+my)となるため、マスク値の約3/4のビットが1となり、AND演算と同様にマスク値のビットパターンに偏りが生じる。そこで、次に、関数Fに替わって、このマスク値の偏りを防止する関数Gを用いたAND演算およびOR演算について説明する。
なお、論理演算部12におけるXOR演算およびNOT演算には、関数Fを用いていないので、ANDおよびOR演算に関数Gを用いた場合であっても、論理演算部12で実行される演算は同様であって、上述したとおりである。
論理演算部12は、マスキングされた変数X、YのAND演算およびOR演算を数10に示す関数Gを用いて実行する。それにより、元の変数x、yのAND演算結果またはOR演算結果をマスキングした値が得られるとともに、変数x、yのAND演算結果およびOR演算結果のマスク値の偏りを防ぐことができる。また、関数Gは関数Fと同様にAND演算およびOR演算のいずれでも使用できる共通の関数であるので、演算回数を削減することができる。
Figure 2013142761
まず、AND演算について具体的に説明する。論理演算部12は、数11の左辺に示すように変数X、YのAND演算に関数Gとの排他的論理和演算を施す。演算結果として、数11の右辺に示すように、元の変数x、yのAND演算に、MANDとの排他的論理和演算を施した値を得ることができる。なお、MANDは、マスク値mxとmyとの排他的論理和演算結果(mx[xor]my)である。
Figure 2013142761
数12に数11の左辺から数11の右辺が得られるまでの演算過程を示す。まず、数12の1行目に示すように、まず、マスクされている変数X、Yを元の変数x、yとマスク値mx、myとの式に変換する。次に、小括弧をはずし、結果が0または1となる排他的論理和の演算式ができるように式を変形することで、数11の右辺が得られる。
Figure 2013142761
次に、OR演算について具体的に説明する。論理演算部12は、数13の左辺に示すように変数X、YのOR演算に関数Gとの排他的論理和演算を施す。但し、数14に示すように、OR演算において、関数Gに対する入力のうちXとYとを、¬Xと¬Yに置き換えて用いる。演算結果として、数13の右辺に示すように、変数x、yのOR演算に、MORとの排他的論理和演算を施した値を得ることができる。なお、MORは、マスク値mxとmyとの排他的論理和演算結果(mx[xor]my)である。
Figure 2013142761
Figure 2013142761
数15に数13の左辺から数13の右辺が得られるまでの演算過程を示す。まず、数15の1行目に示すように、まず、マスクされている変数X、Yを元の変数x、yとマスク値mx、myとの式に変換する。次に、元の変数x、yとマスク値mx、myとの式に変換された変数X、YのOR演算に2重否定を付け、結果が0または1となる排他的論理和演算式ができるように式を変形することによって、数13の右辺が得られる。
Figure 2013142761
数11の右辺を左辺になるように式を変形し、主要項X・Yを除外すると、mx・my[xor]mx・¬Y[xor]my・¬Xとなる。一方、数13の右辺を左辺になるように式を変形し、主要項X+Yを除外すると、mx・my[xor]mx・Y[xor]my・Xとなる。前者の式においてXとYをそれぞれ¬Xと¬Yに置き換えると,後者の式が得られる。このため,関数Gを用いて、前者の式の値をG(mx,my,X,Y),後者の値を前者の式の値をG(mx,my,¬X,¬Y)と表記でき、演算回数を削減することができる。
以上、マスキングされた2つの変数の論理演算について説明した。更に、マスキングされた3つの変数の論理演算について説明する。
論理演算部12は、変数が3つ以上ある場合には、上述した2つの変数の論理演算を組み合わせて実行する。具体的なAND演算、OR演算、およびXOR演算それぞれについては、数16から数18を用いて説明する。なお、NOT演算は変数1つずつに対して実行されるので、数9で説明したので省略する。本実施形態においては、変数が3つ、x、y、zの場合について説明する。
まず、AND演算について説明する。x・yを変数wとして、変数w、zの演算として扱う。変数wをマスク値mwでマスキングした値を変数Wに格納する。ここで、マスク値mw=mx[xor]myとすると、変数Wは数4または数11の右辺で表すことができ、変数Wは、数16のように表すことができる。なお、G(mx,my,X,Y)の替わりにF(mx,my,X,Y)を用いることもできる。
Figure 2013142761
同様に、変数zをマスク値mzでマスキングした値をZに格納する。そうすると、論理演算部12は、数17に示すように、マスキングされた変数W、Z、マスク値mw、mz、および上述した関数Gからなる式を計算し、変数w、zのAND演算結果をマスキングした値、すなわち、変数x、y、zのAND演算結果をマスキングした値を得る。なお、関数Gの替わりに関数Fを用いてもよい。
Figure 2013142761
同様に、OR演算においても、x[xor]yを変数wとして、変数w、zの演算として扱う。マスキングされた変数W、Zについては上述したとおりである。AND演算と同様に、論理演算部12は、数18に示すように、マスキングされた変数W、Z、マスク値mw、mz、および上述した関数Gからなる式を計算し、変数w、zのOR演算結果をマスキングした値、すなわち、変数x、y、zのOR演算結果をマスキングした値を得る。なお、関数Gの替わりに関数Fを用いてもよい。
Figure 2013142761
更に、XOR演算においては、下記の数19に示すように、マスクされた変数X、Y、Zから変数x、y、zをマスクした値を計算する。
Figure 2013142761
図1に戻って、復元部13は、ソフトウェアの末尾に設けられ、論理演算部12による論理演算処理後に、マスキングされた演算結果から元の変数の演算結果を復元する。すなわち、マスキングされた演算結果とマスク値、例えば、AND演算においては、マスキングされた演算結果(x・y[xor]MAND)にマスク値MANDとの排他的論理和を施すことにより、演算結果(x・y)を復元することができる。
<論理演算装置の処理>
図2は、本実施形態に係る論理演算装置10の処理フローを示す図である。
まず、ステップS1において、マスク処理部11は、任意のデータ長の乱数を生成し、生成した乱数をマスク値として用いてソフトウェアの各変数マスキングを行う。
次に、ステップS2において、論理演算部12は、AND演算またはOR演算を実行するか否かを判断する。AND演算またはOR演算を実行する場合には、ステップS3に処理を進める。一方、AND演算またはOR演算以外の演算、すなわち、XOR演算またはNOT演算を実行する場合には、ステップS4に処理を進める。
次に、ステップS3において、論理演算部12は、関数Fまたは関数Gを用いて、ステップS1でマスキングされた変数のAND演算またはOR演算を行う。
次に、ステップS4において、論理演算部12は、ステップS1でマスキングされた変数のXOR演算またはNOT演算を行う。
次に、ステップS5において、復元部13は、ステップS3の結果得られたマスキングされた演算結果から元の変数の演算結果を復元する。
以上、説明したように、本実施形態によれば、任意のデータ長のソフトウェアの変数に対してマスキングを施すとともに、変数のAND演算結果またはOR演算結果をマスキングした値を得るために、マスキングされた変数のAND演算またはOR演算に用いる所定の関数を共通化することによって演算回数を削減することができる。また、所定の関数に、演算結果のマスク値の偏りを防ぐ関数を用いることにより、セキュリティを向上させることができる。
<第2の実施形態>
図3および図4を用いて、本発明の第2の実施形態について説明する。なお、本実施形態は、ハードウェアにより論理演算処理を行う論理演算装置に関するものである。
<論理演算装置の構成>
図3に示すように、本実施形態に係る論理演算装置20は、マスク処理回路21と、論理演算回路22と、復元回路23とから構成されている。
マスク処理回路21は、ハードウェアの先頭に設けられ、任意のデータ長の乱数を生成し、生成した乱数をマスク値として用いてソフトウェアの各変数のマスク処理(マスキングともいう)を行う。なお、マスク処理は、第1の実施形態のマスク処理部11におけるマスク処理と同様である。
論理演算回路22は、マスキングされた変数X、YのAND演算およびOR演算を数2に示す関数Fを用いて実行する。また、論理演算回路22は、マスキングされた変数X、YのXOR演算およびNOT演算を実行する。なお、論理演算回路22における各論理演算は、第1の実施形態の論理演算部12における論理演算と同様である。
復元回路23は、ハードウェアの末尾に設けられ、論理演算回路22による論理演算処理後に、マスキングされた演算結果から元の変数の演算結果を復元する。すなわち、マスキングされた演算結果とマスク値、例えば、AND演算においては、マスキングされた演算結果(x・y[xor]MAND)にマスク値MANDとの排他的論理和を施すことにより、演算結果(x・y)を復元することができる。
<論理演算装置の処理>
図4は、本実施形態に係る論理演算装置20の処理フローを示す図である。
まず、ステップS11において、マスク処理回路21は、任意のデータ長の乱数を生成し、生成した乱数をマスク値として用いてソフトウェアの各変数マスキングを行う。
次に、ステップS12において、論理演算回路22は、AND演算またはOR演算を実行するか否かを判断する。AND演算またはOR演算を実行する場合には、ステップS13に処理を進める。一方、AND演算またはOR演算以外の演算、すなわち、XOR演算またはNOT演算を実行する場合には、ステップS14に処理を進める。
次に、ステップS13において、論理演算回路22は、関数Fまたは関数Gを用いて、ステップS11でマスキングされた変数のAND演算またはOR演算を行う。
次に、ステップS14において、論理演算回路22は、ステップS11でマスキングされた変数のXOR演算またはNOT演算を行う。
次に、ステップS15において、復元回路23は、ステップS13の結果得られたマスキングされた演算結果から元の変数の演算結果を復元する。
以上、説明したように、本実施形態によれば、任意のデータ長のハードウェアの変数に対してマスキングを施すとともに、変数のAND演算結果またはOR演算結果をマスキングした値を得るために、マスキングされた変数のAND演算またはOR演算に用いる所定の関数を共通化することによって回路規模を縮小することができる。また、所定の関数に、演算結果のマスク値の偏りを防ぐ関数を用いることにより、セキュリティを向上させることができる。
なお、論理演算装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを論理演算装置に読み込ませ、実行することによって本発明の論理演算装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。更に、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
10 論理演算装置
11 マスク処理部
12 論理演算部
13 復元部

Claims (14)

  1. ソフトウェアの論理演算を秘匿化して実行する論理演算装置であって、
    任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行うマスク処理手段と、
    マスク処理された変数のAND演算またはOR演算に、数1で表される共通関数とのXOR演算を施す論理演算手段と、
    を備えることを特徴とする論理演算装置。
    Figure 2013142761
  2. 前記共通関数として、数2で表される関数Gを用いることを特徴とする請求項1に記載の論理演算装置。
    Figure 2013142761
  3. 前記マスク処理手段が、前記任意のデータ長であって、変数毎に異なるマスク値を生成し、前記任意のデータ長の変数と生成されたマスク値とのXOR演算を実行することにより、マスク処理を行うことを特徴とする請求項1または2に記載の論理演算装置。
  4. 前記論理演算手段が、前記マスク処理された変数のXOR演算またはNOT演算を実行することを特徴とする請求項1から3のいずれか1項に記載の論理演算装置。
  5. 3つ以上の変数の論理演算を実行する場合に、
    前記論理演算手段が、マスク処理された3つ以上の変数の中から2変数を抽出し、抽出した2変数のAND演算またはOR演算に、前記共通関数とのXOR演算を施し、当該XOR演算の結果を新たなマスク処理された1変数とし、マスク処理された変数が最後の2つになるまで処理を繰り返し、当該最後の2つの変数のAND演算またはOR演算に、前記共通関数とのXOR演算を施すことを特徴とする請求項1から4のいずれか1項に記載の論理演算装置。
  6. ハードウェアの論理演算を秘匿化して実行する論理演算装置であって、
    任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行うマスク処理回路と、
    マスク処理された変数のAND演算またはOR演算に、数3で表される共通関数とのXOR演算を施す論理演算回路と、
    を備えることを特徴とする論理演算装置。
    Figure 2013142761
  7. 前記共通関数として、数4で表される関数Gを用いることを特徴とする請求項6記載の論理演算装置。
    Figure 2013142761
  8. 前記マスク処理回路が、前記任意のデータ長であって、変数毎に異なるマスク値を生成し、前記任意のデータ長の変数と生成されたマスク値とのXOR演算を実行することにより、マスク処理を行うことを特徴とする請求項6または7に記載の論理演算装置。
  9. 前記論理演算回路が、前記マスク処理された変数のXOR演算またはNOT演算を実行することを特徴とする請求項6から8のいずれか1項に記載の論理演算装置。
  10. 3つ以上の変数の論理演算を実行する場合に、
    前記論理演算回路が、マスク処理された3つ以上の変数の中から2変数を抽出し、抽出した2変数のAND演算またはOR演算に、前記共通関数とのXOR演算を施し、当該XOR演算の結果を新たなマスク処理された1変数とし、マスク処理された変数が最後の2つになるまで処理を繰り返し、当該最後の2つの変数のAND演算またはOR演算に、前記共通関数とのXOR演算を施すことを特徴とする請求項6から9のいずれか1項に記載の論理演算装置。
  11. マスク処理手段と、論理演算手段とを備えた、ソフトウェアの論理演算を秘匿化して実行する論理演算装置における論理演算方法であって、
    前記マスク処理手段が、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行う第1のステップと、
    前記論理演算手段が、マスク処理された変数のAND演算またはOR演算に、数1で表される共通関数とのXOR演算を施す第2のステップと、
    を含むことを特徴とする論理演算方法。
  12. マスク処理手段と、論理演算手段とを備えた、ソフトウェアの論理演算を秘匿化して実行する論理演算装置における論理演算方法をコンピュータに実行させるためのプログラムであって、
    前記マスク処理手段が、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行う第1のステップと、
    前記論理演算手段が、マスク処理された変数のAND演算またはOR演算に、数1で表される共通関数とのXOR演算を施す第2のステップと、
    をコンピュータに実行させるためのプログラム。
  13. マスク処理回路と、論理演算回路とを備えた、ハードウェアの論理演算を秘匿化して実行する論理演算装置における論理演算方法であって、
    前記マスク処理回路が、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行う第1のステップと、
    前記論理演算回路が、マスク処理された変数のAND演算またはOR演算に、数3で表される共通関数とのXOR演算を施す第2のステップと、
    を含むことを特徴とする論理演算方法。
  14. マスク処理回路と、論理演算回路とを備えた、ハードウェアの論理演算を秘匿化して実行する論理演算装置における論理演算方法をコンピュータに実行させるためのプログラムであって、
    前記マスク処理回路が、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行う第1のステップと、
    前記論理演算回路が、マスク処理された変数のAND演算またはOR演算に、数3で表される共通関数とのXOR演算を施す第2のステップと、
    をコンピュータに実行させるためのプログラム。
JP2012002605A 2012-01-10 2012-01-10 論理演算装置、論理演算方法、およびプログラム Active JP5951260B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012002605A JP5951260B2 (ja) 2012-01-10 2012-01-10 論理演算装置、論理演算方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012002605A JP5951260B2 (ja) 2012-01-10 2012-01-10 論理演算装置、論理演算方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2013142761A true JP2013142761A (ja) 2013-07-22
JP5951260B2 JP5951260B2 (ja) 2016-07-13

Family

ID=49039349

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012002605A Active JP5951260B2 (ja) 2012-01-10 2012-01-10 論理演算装置、論理演算方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP5951260B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019004507A (ja) * 2018-09-06 2019-01-10 株式会社ニコン 撮像装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005236977A (ja) * 2004-02-19 2005-09-02 Samsung Electronics Co Ltd 電力分析攻撃に安全な基本演算装置および方法
US20070188355A1 (en) * 2005-01-27 2007-08-16 Yoo-Jin Baek Cryptographic logic circuits and method of performing logic operations
JP2009005164A (ja) * 2007-06-22 2009-01-08 Dainippon Printing Co Ltd 暗号処理装置,暗号処理プログラム及び暗号処理方法
JP2012004888A (ja) * 2010-06-17 2012-01-05 Kddi Corp 論理演算装置、論理演算方法およびプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005236977A (ja) * 2004-02-19 2005-09-02 Samsung Electronics Co Ltd 電力分析攻撃に安全な基本演算装置および方法
US20070188355A1 (en) * 2005-01-27 2007-08-16 Yoo-Jin Baek Cryptographic logic circuits and method of performing logic operations
JP2009005164A (ja) * 2007-06-22 2009-01-08 Dainippon Printing Co Ltd 暗号処理装置,暗号処理プログラム及び暗号処理方法
JP2012004888A (ja) * 2010-06-17 2012-01-05 Kddi Corp 論理演算装置、論理演算方法およびプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6015043896; 福島 和英、清本 晋作、三宅 優: '"変数のマスキングによる難読化手法"' 電子情報通信学会2011年通信ソサイエティ大会講演論文集2 B-18-1, 20110830, p.405, 社団法人電子情報通信学会 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019004507A (ja) * 2018-09-06 2019-01-10 株式会社ニコン 撮像装置

Also Published As

Publication number Publication date
JP5951260B2 (ja) 2016-07-13

Similar Documents

Publication Publication Date Title
CN110555525B (zh) 模型参数确定方法、装置和电子设备
KR102136911B1 (ko) 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법
Belgarric et al. Side-channel analysis of Weierstrass and Koblitz curve ECDSA on Android smartphones
CN110569227B (zh) 模型参数确定方法、装置和电子设备
CN110580410A (zh) 模型参数确定方法、装置和电子设备
CN110580409A (zh) 模型参数确定方法、装置和电子设备
CN105453481A (zh) 包括表网络的计算设备
US20170180114A1 (en) Countermeasure method for an electronic component implementing an elliptic curve cryptography algorithm
KR20050072537A (ko) 암호화 장치, 암호화 방법 및 그 기록매체
US8707053B2 (en) Performing boolean logic operations using arithmetic operations by code obfuscation
RU2680761C1 (ru) Безопасные преобразования данных
Grégoire et al. Vectorizing higher-order masking
CN107248973B (zh) 一种基于双台云服务器针对两个双线性对的安全外包方法
JP5951260B2 (ja) 論理演算装置、論理演算方法、およびプログラム
TWI517655B (zh) 密碼裝置以及密鑰保護方法
JP4675642B2 (ja) プログラム難読化装置およびその方法ならびにプログラム
JP5102536B2 (ja) ストリーム暗号の暗号化装置、復号化装置、暗号化方法、復号化方法およびプログラム
US11336429B2 (en) Method for protecting a source of entropy used in countermeasures securing a white-box cryptographic algorithm
JP2014137415A (ja) 多倍長整数演算装置、多倍長整数演算方法、プログラム
JP5550998B2 (ja) 論理演算装置、論理演算方法およびプログラム
JP5149061B2 (ja) プログラム難読化装置、プログラム難読化方法およびプログラム
Shirazi et al. An innovative design of substitution-box using Trigonometric-Multiplicative Functions Using Square Root Arguments: A Data-driven study.
JP6212377B2 (ja) 演算装置、演算方法およびコンピュータプログラム
JP2021502743A (ja) 計算デバイス及び方法
CN109302278A (zh) 一种抵御能量分析攻击的掩码方法及掩码电路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140731

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150303

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151104

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151228

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160524

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160608

R150 Certificate of patent or registration of utility model

Ref document number: 5951260

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150