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

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

Info

Publication number
JP5951260B2
JP5951260B2 JP2012002605A JP2012002605A JP5951260B2 JP 5951260 B2 JP5951260 B2 JP 5951260B2 JP 2012002605 A JP2012002605 A JP 2012002605A JP 2012002605 A JP2012002605 A JP 2012002605A JP 5951260 B2 JP5951260 B2 JP 5951260B2
Authority
JP
Japan
Prior art keywords
variable
logical
variables
masked
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.)
Active
Application number
JP2012002605A
Other languages
English (en)
Other versions
JP2013142761A (ja
Inventor
和英 福島
和英 福島
清本 晋作
晋作 清本
三宅 優
優 三宅
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

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演算に用いる関数を、共通化することによって演算回数を削減し、論理演算を安全に実装することができる。また、変数のAND演算結果およびOR演算結果のマスク値の偏りを防止することができる。
(2) 本発明は、(1)の論理演算装置について、前記マスク処理手段が、前記任意のデータ長であって、変数毎に異なるマスク値を生成し、前記任意のデータ長の変数と生成されたマスク値とのXOR演算を実行することにより、マスク処理を行うことを特徴とする論理演算装置を提案している。
この発明によれば、マスク処理手段が、任意のデータ長であって、変数毎に異なるマスク値を生成し、任意のデータ長の変数と生成されたマスク値とのXOR演算を実行することにより、マスク処理を行う。したがって、XOR演算によりマスク処理を行うため、小さな演算負荷でマスク処理を実行することができる。
(3) 本発明は、(1)または(2)の論理演算装置について、前記論理演算手段が、前記マスク処理された変数のXOR演算およびNOT演算を実行することを特徴とする論理演算装置を提案している。
この発明によれば、論理演算手段が、マスク処理された変数のXOR演算およびNOT演算を実行する。したがって、マスク処理された変数のXOR演算およびNOT演算から、マスク処理された元の変数を得るXOR演算およびNOT演算を行うことができる。
(4) 本発明は、(1)から(3)の論理演算装置について、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演算を実行することができる。
(5) 本発明は、ハードウェアの論理演算を秘匿化して実行する論理演算装置であって、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行うマスク処理回路(例えば、図3のマスク処理回路21に相当)と、マスク処理された変数のAND演算またはOR演算に、数2で表される共通関数とのXOR演算を施す論理演算回路(例えば、図3の論理演算回路22に相当)と、を備えることを特徴とする論理演算装置を提案している。
この発明によれば、マスク処理手段は、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長のハードウェアの変数のマスク処理を行う。論理演算手段は、マスク処理された変数のAND演算またはOR演算に、数2で表される共通関数とのXOR演算を施す。したがって、任意のデータ長に変数に対してマスク処理を施すとともに、変数のAND演算結果およびOR演算結果を得るために、マスク処理された変数のAND演算およびOR演算に用いる関数を、共通化することによって回路規模を縮小し、論理演算を安全に実装することができる。また、変数のAND演算結果およびOR演算結果のマスク値の偏りを防止することができる。
(6) 本発明は、(5)の論理演算装置について、前記マスク処理回路が、前記任意のデータ長であって、変数毎に異なるマスク値を生成し、前記任意のデータ長の変数と生成されたマスク値とのXOR演算を実行することにより、マスク処理を行うことを特徴とする論理演算装置を提案している。
この発明によれば、マスク処理回路が、任意のデータ長であって、変数毎に異なるマスク値を生成し、任意のデータ長の変数と生成されたマスク値とのXOR演算を実行することにより、マスク処理を行う。したがって、XOR演算によりマスク処理を行うため、小さな演算負荷でマスク処理を実行することができる。
(7) 本発明は、(5)または(6)の論理演算装置について、前記論理演算回路が、前記マスク処理された変数のXOR演算およびNOT演算を実行することを特徴とする論理演算装置を提案している。
この発明によれば、論理演算回路が、マスク処理された変数のXOR演算およびNOT演算を実行する。したがって、マスク処理された変数のXOR演算およびNOT演算から、マスク処理された元の変数を得るXOR演算およびNOT演算を行うことができる。
(8) 本発明は、(5)から(7)の論理演算装置について、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演算を実行することができる。
(9) 本発明は、マスク処理回路と、論理演算回路とを備えた、ハードウェアの論理演算を秘匿化して実行する論理演算装置における論理演算方法であって、前記マスク処理回路が、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行う第1のステップ(例えば、図4のステップS11に相当)と、前記論理演算回路が、マスク処理された変数のAND演算またはOR演算に、数3で表される共通関数とのXOR演算を施す第2のステップ(例えば、図4のステップS13に相当)と、を含むことを特徴とする論理演算方法を提案している。
この発明によれば、マスク処理回路は、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長のハードウェアの変数のマスク処理を行う。論理演算回路は、マスク処理された変数のAND演算またはOR演算に、数3で表される共通関数とのXOR演算を施す。したがって、任意のデータ長に変数に対してマスク処理を施すとともに、変数のAND演算結果およびOR演算結果を得るために、マスク処理された変数のAND演算およびOR演算に用いる関数を、共通化することによって回路規模を縮小し、論理演算を安全に実装することができる。
(10) 本発明は、マスク処理回路と、論理演算回路とを備えた、ハードウェアの論理演算を秘匿化して実行する論理演算方法をコンピュータに実行させるためのプログラムであって、前記マスク処理回路が、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長の変数のマスク処理を行う第1のステップ(例えば、図4のステップS11に相当)と、前記論理演算回路が、マスク処理された変数のAND演算またはOR演算に、数4で表される共通関数とのXOR演算を施す第2のステップ(例えば、図4のステップS13に相当)と、をコンピュータに実行させるためのプログラムを提案している。
この発明によれば、マスク処理回路は、任意のデータ長であって、変数毎に異なるマスク値により、任意データ長のハードウェアの変数のマスク処理を行う。論理演算回路は、マスク処理された変数のAND演算またはOR演算に、数4で表される共通関数とのXOR演算を施す。したがって、任意のデータ長に変数に対してマスク処理を施すとともに、変数のAND演算結果およびOR演算結果を得るために、マスク処理された変数のAND演算およびOR演算に用いる関数を、共通化することによって回路規模を縮小し、論理演算を安全に実装することができる。
本発明によれば、任意のデータ長の変数に対してマスク処理を施すとともに、変数のAND演算結果またはOR演算結果をマスク処理した値を得るために、マスク処理された変数のAND演算またはOR演算に用いる所定の関数を共通化することによって演算回数を削減(回路規模を縮小)することができる。
第1の実施形態に係る論理演算装置の機能構成を示す図である。 第1の実施形態に係る論理演算装置の処理フローを示す図である。 第2の実施形態に係る論理演算装置の機能構成を示す図である。 第2の実施形態に係る論理演算装置の処理フローを示す図である。
以下、本発明の実施形態について、図面を用いて、詳細に説明する。なお、本実施形態における構成要素は適宜、既存の構成要素等との組み合わせを含む様々なバリエーションが可能である。したがって、本実施形態の記載を持って、特許請求の範囲に記載された発明の内容を限定するものではない。なお、本発明の実施形態の説明において、排他的論理和および論理否定の演算子は数1のように表記する。
Figure 0005951260
<第1の実施形態>
図1および図2を用いて、本発明の第1の実施形態について説明する。なお、本実施形態はソフトウェアにより論理演算処理を行う論理演算装置に関するものである。
<論理演算装置の機能構成>
図1は、本発明の第1の実施形態に係る論理演算装置10の機能構成を示す図である。図1に示すように、論理演算装置10は、マスク処理部11、論理演算部12、および復元部13から構成されている。
マスク処理部11は、ソフトウェアの先頭に設けられ、任意のデータ長の乱数を生成し、生成した乱数をマスク値として用いてソフトウェアの各変数のマスク処理(マスキングともいう)を行う。なお、マスク処理は、各変数について、変数にマスク値との排他的論理和演算を施すことにより行われる。例えば、マスク処理部11は、数2に示すように、変数x、yに格納されている値に、マスク値mx、myそれぞれとの排他的論理和演算を施し、演算結果を変数X、Yに格納する。
Figure 0005951260
論理演算部12は、マスキングされた変数X、YのAND演算およびOR演算を数3に示す関数Fを用いて実行する。マスキングされた変数を用いてAND演算またはOR演算を実行することにより、論理演算を秘匿化することができ、関数Fを用いることにより、元の変数x、yのAND演算結果またはOR演算結果をマスキングした値が得られる。また、関数Fを、AND演算およびOR演算のいずれでも使用できる共通の関数とすることにより、演算回数を削減することができる。
Figure 0005951260
まず、AND演算について具体的に説明する。論理演算部12は、数4の左辺に示すように変数X、YのAND演算に関数Fとの排他的論理和演算を施す。演算結果として、数4の右辺に示すように、元の変数x、yのAND演算に、 AND1 との排他的論理和演算を施した値を得ることができる。なお、 AND1 は、マスク値mxとmyとのAND演算結果(mx・my)である。
Figure 0005951260
数5に数4の左辺から数4の右辺が得られるまでの演算過程を示す。まず、数5の1行目に示すように、まず、マスクされている変数X、Yを元の変数x、yとマスク値mx、myとの式に変換する。次に、小括弧をはずし、結果が0となる排他的論理和の演算式ができるように式を変形することで、数4の右辺が得られる。
Figure 0005951260
次に、OR演算について具体的に説明する。論理演算部12は、数6の左辺に示すように変数X、YのOR演算に関数Fとの排他的論理和演算を施す。演算結果として、数6の右辺に示すように、元の変数x、yのOR演算に、 OR1 との排他的論理和演算を施した値を得ることができる。なお、 OR1 は、マスク値mxとmyとのOR演算結果(mx+my)である。
Figure 0005951260
数7に数6の左辺から数6の右辺が得られるまでの演算過程を示す。まず、数7の1行目に示すように、まず、マスクされている変数X、Yを元の変数x、yとマスク値mx、myとの式に変換する。次に、元の変数x、yとマスク値mx、myとの式に変換された変数X、YのOR演算に2重否定を付け、結果が0または1となる排他的論理和演算式ができるように式を変形することによって、数6の右辺が得られる。
Figure 0005951260
また、論理演算部12は、XOR演算およびNOT演算を実行する。数8に示すように変数X、YのXOR演算を実行すると、元の変数x、yのXOR演算に、 XOR1 との排他的論理和演算を施した値を得ることができる。なお、 XOR1 は、マスク値mxとmyとのXOR演算結果(mx[xor]my)である。
Figure 0005951260
同様に、数9に示すように、変数XのNOT演算を実行すると、元の変数xのNOT演算の結果にMNOTxとの排他的論理和演算を施した値を得ることができる。なお、MNOTxは、mxである。変数Yについても、変数Xと同様である。なお、MNOTyは、myである。
Figure 0005951260
以上説明したように、論理演算部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 0005951260
まず、AND演算について具体的に説明する。論理演算部12は、数11の左辺に示すように変数X、YのAND演算に関数Gとの排他的論理和演算を施す。演算結果として、数11の右辺に示すように、元の変数x、yのAND演算に、 AND2 との排他的論理和演算を施した値を得ることができる。なお、 AND2 は、マスク値mxとmyとの排他的論理和演算結果(mx[xor]my)である。
Figure 0005951260
数12に数11の左辺から数11の右辺が得られるまでの演算過程を示す。まず、数12の1行目に示すように、まず、マスクされている変数X、Yを元の変数x、yとマスク値mx、myとの式に変換する。次に、小括弧をはずし、結果が0または1となる排他的論理和の演算式ができるように式を変形することで、数11の右辺が得られる。
Figure 0005951260
次に、OR演算について具体的に説明する。論理演算部12は、数13の左辺に示すように変数X、YのOR演算に関数Gとの排他的論理和演算を施す。但し、数14に示すように、OR演算において、関数Gに対する入力のうちXとYとを、¬Xと¬Yに置き換えて用いる。演算結果として、数13の右辺に示すように、変数x、yのOR演算に、 OR2 との排他的論理和演算を施した値を得ることができる。なお、 OR2 は、マスク値mxとmyとの排他的論理和演算結果(mx[xor]my)である。
Figure 0005951260
Figure 0005951260
数15に数13の左辺から数13の右辺が得られるまでの演算過程を示す。まず、数15の1行目に示すように、まず、マスクされている変数X、Yを元の変数x、yとマスク値mx、myとの式に変換する。次に、元の変数x、yとマスク値mx、myとの式に変換された変数X、YのOR演算に2重否定を付け、結果が0または1となる排他的論理和演算式ができるように式を変形することによって、数13の右辺が得られる。
Figure 0005951260
数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 0005951260
同様に、変数zをマスク値mzでマスキングした値をZに格納する。そうすると、論理演算部12は、数17に示すように、マスキングされた変数W、Z、マスク値mw、mz、および上述した関数Gからなる式を計算し、変数w、zのAND演算結果をマスキングした値、すなわち、変数x、y、zのAND演算結果をマスキングした値を得る。なお、関数Gの替わりに関数Fを用いてもよい。
Figure 0005951260
同様に、OR演算においても、x[or]yを変数wとして、変数w、zの演算として扱う。マスキングされた変数W、Zについては上述したとおりである。AND演算と同様に、論理演算部12は、数18に示すように、マスキングされた変数W、Z、マスク値mw、mz、および上述した関数Gからなる式を計算し、変数w、zのOR演算結果をマスキングした値、すなわち、変数x、y、zのOR演算結果をマスキングした値を得る。なお、関数Gの替わりに関数Fを用いてもよい。
Figure 0005951260
更に、XOR演算においては、下記の数19に示すように、マスクされた変数X、Y、Zから変数x、y、zをマスクした値を計算する。
Figure 0005951260
図1に戻って、復元部13は、ソフトウェアの末尾に設けられ、論理演算部12による論理演算処理後に、マスキングされた演算結果から元の変数の演算結果を復元する。すなわち、マスキングされた演算結果とマスク値、例えば、AND演算においては、マスキングされた演算結果(x・y[xor] AND1 )にマスク値 AND1 との排他的論理和を施すことにより、演算結果(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] AND1 )にマスク値 AND1 との排他的論理和を施すことにより、演算結果(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 (10)

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

Families Citing this family (1)

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

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101061906B1 (ko) * 2004-02-19 2011-09-02 삼성전자주식회사 전력분석공격에 안전한 기본 연산 장치 및 방법
KR100725169B1 (ko) * 2005-01-27 2007-06-04 삼성전자주식회사 전력 분석 공격에 안전한 논리 연산 장치 및 방법
JP4962165B2 (ja) * 2007-06-22 2012-06-27 大日本印刷株式会社 暗号処理装置,暗号処理プログラム及び暗号処理方法
JP5550998B2 (ja) * 2010-06-17 2014-07-16 Kddi株式会社 論理演算装置、論理演算方法およびプログラム

Also Published As

Publication number Publication date
JP2013142761A (ja) 2013-07-22

Similar Documents

Publication Publication Date Title
CN110555525B (zh) 模型参数确定方法、装置和电子设备
Belgarric et al. Side-channel analysis of Weierstrass and Koblitz curve ECDSA on Android smartphones
CN110569227B (zh) 模型参数确定方法、装置和电子设备
CN110580410A (zh) 模型参数确定方法、装置和电子设备
CN105453481A (zh) 包括表网络的计算设备
CN110580409A (zh) 模型参数确定方法、装置和电子设备
KR20050072537A (ko) 암호화 장치, 암호화 방법 및 그 기록매체
WO2012157279A1 (ja) 順序保存暗号化システム、装置、方法及びプログラム
RU2680761C1 (ru) Безопасные преобразования данных
Grégoire et al. Vectorizing higher-order masking
US8707053B2 (en) Performing boolean logic operations using arithmetic operations by code obfuscation
Badier et al. Transient key-based obfuscation for HLS in an untrusted cloud environment
JP5951260B2 (ja) 論理演算装置、論理演算方法、およびプログラム
CN107248973B (zh) 一种基于双台云服务器针对两个双线性对的安全外包方法
JP4675642B2 (ja) プログラム難読化装置およびその方法ならびにプログラム
JP5752337B1 (ja) 情報処理システム、情報処理方法およびプログラム
JP5530025B2 (ja) データ分割装置およびデータ分割プログラム
JP5102536B2 (ja) ストリーム暗号の暗号化装置、復号化装置、暗号化方法、復号化方法およびプログラム
JP5550998B2 (ja) 論理演算装置、論理演算方法およびプログラム
CN111602367B (zh) 用于保护在使白盒密码算法安全的对策中使用的熵源的方法
JP5149061B2 (ja) プログラム難読化装置、プログラム難読化方法およびプログラム
JP5354914B2 (ja) 暗号処理装置及び復号処理装置及びプログラム
JP2021502743A (ja) 計算デバイス及び方法
JP6212377B2 (ja) 演算装置、演算方法およびコンピュータプログラム
JP2019506031A (ja) 計算装置及び方法

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 (=grant) or registration of utility model

Ref document number: 5951260

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150