(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-12
(45)【発行日】2023-12-20
(54)【発明の名称】乗算装置、乗算方法及び乗算プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20231213BHJP
G06F 21/75 20130101ALI20231213BHJP
【FI】
G09C1/00 650A
G06F21/75
(21)【出願番号】P 2021033600
(22)【出願日】2021-03-03
【審査請求日】2023-03-06
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【氏名又は名称】林 一好
(72)【発明者】
【氏名】福島 和英
(72)【発明者】
【氏名】清本 晋作
【審査官】行田 悦資
(56)【参考文献】
【文献】特開2010-091913(JP,A)
【文献】特開2006-201641(JP,A)
【文献】特表2020-537191(JP,A)
【文献】特表2016-510914(JP,A)
【文献】特開2006-309068(JP,A)
【文献】米国特許出願公開第2014/0169553(US,A1)
【文献】米国特許出願公開第2018/0294950(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G06F 21/75
(57)【特許請求の範囲】
【請求項1】
2つの整数を、それぞれ所定の法で分割して多項式で表現する多項式化部と、
前記多項式それぞれに対して、複数の標本点の値を算出する標本点算出部と、
前記標本点のそれぞれに対して、ランダムなマスク値を生成するマスク値生成部と、
前記マスク値を加算することによりマスクされた標本点を用いて、前記2つの整数の乗算値を表現する多項式の係数を決定し、前記法を代入することにより、マスクされた乗算値を算出する乗算処理部と、
前記標本点の値及び前記マスク値に基づいて、前記乗算処理部による演算結果に含まれる前記マスク値の累積値を算出する累積マスク演算部と、
前記乗算処理部による演算結果から前記累積値を減算することでマスクを解除し、前記2つの整数の乗算値を算出するマスク解除部と、を備える乗算装置。
【請求項2】
前記多項式化部は、前記2つの整数を、それぞれ変数xの1次式で表現し、
前記標本点算出部は、前記変数xが-1,0,1の場合の標本点の値をそれぞれ算出する請求項1に記載の乗算装置。
【請求項3】
前記乗算処理部は、処理途中の演算において、乗算対象の整数を1次式に分割するToom-Cook法を再帰的に繰り返す請求項1又は請求項2に記載の乗算装置。
【請求項4】
2つの整数を、それぞれ所定の法で分割して多項式で表現する多項式化ステップと、
前記多項式それぞれに対して、複数の標本点の値を算出する標本点算出ステップと、
前記標本点のそれぞれに対して、ランダムなマスク値を生成するマスク値生成ステップと、
前記マスク値を加算することによりマスクされた標本点を用いて、前記2つの整数の乗算値を表現する多項式の係数を決定し、前記法を代入することにより、マスクされた乗算値を算出する乗算処理ステップと、
前記標本点の値及び前記マスク値に基づいて、前記乗算処理ステップにおける演算結果に含まれる前記マスク値の累積値を算出する累積マスク演算ステップと、
前記乗算処理ステップにおける演算結果から前記累積値を減算することでマスクを解除し、前記2つの整数の乗算値を算出するマスク解除ステップと、をコンピュータが実行する乗算方法。
【請求項5】
請求項1から請求項3のいずれかに記載の乗算装置としてコンピュータを機能させるための乗算プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サイドチャネル攻撃への対策を施した演算装置に関する。
【背景技術】
【0002】
従来、多倍長乗算において、乗算の回数を4分の3にするアルゴリズムとして、Karatsuba法が知られている(例えば、非特許文献1参照)。Karatsuba法を再帰的に適用することで、従来はO(n2)であった乗算の計算量をO(n^log23)に削減できる。
【0003】
また、Karatsuba法を一般化したToom-Cook法も知られている(例えば、非特許文献2参照)。Toom-Cook法は、Karatsuba法の計算量をさらに削減し、乗算の計算量をO(n^log35)とできる。Toom-Cook法を活用することで、耐量子公開鍵暗号方式及び現行の公開鍵暗号方式の暗号化及び復号化処理において大部分を占める乗算処理が高速化される。
【0004】
現行の公開鍵暗号方式及び耐量子公開鍵暗号方式のアルゴリズムにおいては、鍵値と既知の値との乗算が行われる。このため、暗号方式のハードウェア実装において、乗算処理の消費電力を測定して乗算結果を推定するサイドチャネル攻撃により、鍵値が漏洩する可能性がある。この対策として、Karatsuba法に対しては、乱数によるマスキングを行い、サイドチャネル攻撃を防止する手法が提案されている(例えば、非特許文献3参照)。
【先行技術文献】
【非特許文献】
【0005】
【文献】A. Karatsuba and Y. Ofman, “Multiplication of many-digital numbers by automatic computers,” Doklady Akad. Nauk SSSR, vol. 145, pp. 293-294, 1962. Translation in Physics-Doklady, no. 7, pp. 595-596, 1963.
【文献】M. Bodrato, and A. Zanoni, “Integer and Polynomial Multiplication: Towards Optimal Toom-Cook Matrices,” Proceedings of the ISSAC 2007 Conference. ACM press, New York (2007).
【文献】C. Rebeiro and D. Mukhopadhyay, “Hybrid Masked Karatsuba Multiplier for GF(2233),” Proceedings of the 11th IEEE VLSI Design And Test Symposium, pp 379-387, August 8-11, 2007.
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、Karatsuba法を一般化した、より高速な乗算アルゴリズムであるToom-Cook法に対しては、従来のマスキングによる対策手法は適用できず、サイドチャネル攻撃への有効な対策手法がなかった。
【0007】
本発明は、サイドチャネル攻撃を防ぎつつ、高速に乗算を実行できる乗算装置、乗算方法及び乗算プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明に係る乗算装置は、2つの整数を、それぞれ所定の法で分割して多項式で表現する多項式化部と、前記多項式それぞれに対して、複数の標本点の値を算出する標本点算出部と、前記標本点のそれぞれに対して、ランダムなマスク値を生成するマスク値生成部と、前記マスク値を加算することによりマスクされた標本点を用いて、前記2つの整数の乗算値を表現する多項式の係数を決定し、前記法を代入することにより、マスクされた乗算値を算出する乗算処理部と、前記標本点の値及び前記マスク値に基づいて、前記乗算処理部による演算結果に含まれる前記マスク値の累積値を算出する累積マスク演算部と、前記乗算処理部による演算結果から前記累積値を減算することでマスクを解除し、前記2つの整数の乗算値を算出するマスク解除部と、を備える。
【0009】
前記多項式化部は、前記2つの整数を、それぞれ変数xの1次式で表現し、前記標本点算出部は、前記変数xが-1,0,1の場合の標本点の値をそれぞれ算出してもよい。
【0010】
前記乗算処理部は、処理途中の演算において、乗算対象の整数を1次式に分割するToom-Cook法を再帰的に繰り返してもよい。
【0011】
本発明に係る乗算方法は、2つの整数を、それぞれ所定の法で分割して多項式で表現する多項式化ステップと、前記多項式それぞれに対して、複数の標本点の値を算出する標本点算出ステップと、前記標本点のそれぞれに対して、ランダムなマスク値を生成するマスク値生成ステップと、前記マスク値を加算することによりマスクされた標本点を用いて、前記2つの整数の乗算値を表現する多項式の係数を決定し、前記法を代入することにより、マスクされた乗算値を算出する乗算処理ステップと、前記標本点の値及び前記マスク値に基づいて、前記乗算処理ステップにおける演算結果に含まれる前記マスク値の累積値を算出する累積マスク演算ステップと、前記乗算処理ステップにおける演算結果から前記累積値を減算することでマスクを解除し、前記2つの整数の乗算値を算出するマスク解除ステップと、をコンピュータが実行する。
【0012】
本発明に係る乗算プログラムは、前記乗算装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0013】
本発明によれば、サイドチャネル攻撃を防ぎつつ、高速に乗算を実行できる。
【図面の簡単な説明】
【0014】
【
図1】実施形態における乗算装置の機能構成を示す図である。
【
図2】通常のToom-Cook法のアルゴリズムを示す図である。
【
図3】実施形態における乗算装置により改良されたToom-Cook法のアルゴリズムを示す図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施形態の一例について説明する。
本実施形態の乗算方法では、Toom-Cook法において、乱数によるマスキングを適用した値の乗算を行うことで、サイドチャネル攻撃による乗算結果の推定を防ぐ。また、演算結果に対するマスク値を並行して計算し減算することで、正しい乗算結果が復元される。
【0016】
図1は、本実施形態における乗算装置1の機能構成を示す図である。
乗算装置1は、サーバ装置又はパーソナルコンピュータ等の情報処理装置(コンピュータ)であり、制御部10及び記憶部20の他、各種データの入出力デバイス及び通信デバイス等を備える。
【0017】
制御部10は、乗算装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部10は、CPUであってよい。
【0018】
記憶部20は、ハードウェア群を乗算装置1として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスクドライブ(HDD)等であってよい。具体的には、記憶部20は、本実施形態の各機能を制御部10に実行させるためのプログラム(乗算プログラム)の他、処理途中の各種データ等を記憶する。
【0019】
制御部10は、多項式化部11と、標本点算出部12と、マスク値生成部13と、乗算処理部14と、累積マスク演算部15と、マスク解除部16とを備える。
【0020】
多項式化部11は、乗算対象の2つの整数を、それぞれ所定の法で分割して多項式(例えば、1次式)で表現する。
例えば、法Q=100とすると、整数1234は、「12Q+34」と変形でき、多項式表現は、「12x+34」となる。
【0021】
標本点算出部12は、2つの整数を表す多項式それぞれに対して、複数の標本点の値を算出する。
例えば、多項式a(x)=12x+34に対して、x=-1,0,1の標本点の値は、それぞれ、a(-1)=-12+34=22,a(0)=34,a(1)=12+34=46となる。
なお、標本点の取り方は任意であるが、変数xの値として、絶対値の小さい整数が選択されることが好ましい。1次式に対しては、例えば、x=-1,0,1の3点が用いられる。
【0022】
マスク値生成部13は、標本点のそれぞれに対して、ランダムなマスク値を生成する。
例えば、標本値a(-1)=22に対して、マスク値生成部13は、マスク値として乱数(例えば、12)を生成し、マスクされた標本値a’(-1)=22+12=34を提供する。
【0023】
乗算処理部14は、マスク値を加算することによりマスクされた標本点を用いて、2つの整数の乗算値を表現する多項式R(例えば、2次式)の係数を、連立方程式の求解により決定し、法Qを代入することにより、マスクされた乗算値を算出する。
【0024】
累積マスク演算部15は、標本点の値及びマスク値に基づいて、乗算処理部14による演算結果に含まれるマスク値の累積値を算出する。
つまり、累積マスク演算部15は、2つの整数による本来の正しい乗算結果に対して、マスク値に起因して累積される余剰な値のみを、前述の連立方程式から求まる理論式に基づいて算出する。
【0025】
マスク解除部16は、乗算処理部14による演算結果からマスク値の累積値を減算することでマスクを解除し、2つの整数による本来の正しい乗算値を算出する。
【0026】
次に、本実施形態における乗算方法の詳細な手順を示す。ここでは、法をQとし、次の2つの整数a,bの乗算を行う場合の例を示す。
a=a1Q+a0
b=b1Q+b0
【0027】
2つの整数の多項式表現は、それぞれ、
a(x)=a1x+a0
b(x)=b1x+b0
となり、乗算結果Rの多項式表現は、
R(x)=a(x)b(x)=R2x2+R1x+R0
となる。
【0028】
ここで、例えば、x=-1,0,1に対する標本点の値(標本値)を計算すると、
a(-1)=-a1+a0
a(0)=a0
a(1)=a1+a0
b(-1)=-b1+b0
b(0)=b0
b(1)=b1+b0
である。
例えば、Q=100とすると、整数1234は、「12Q+34」と変形でき、多項式表現は、「12x+34」となる。この場合、標本値として、a(-1)=-a1+a0=-12+34=22,a(0)=a0=34,a(1)=a1+a0=46が得られる。
【0029】
これら6つの標本値に対し、それぞれマスク値として、
ma(-1),ma(0),ma(1),ma(-1),ma(0),ma(1)
をランダムに生成して加算すると、マスクされた標本値として、
a’(-1)=a(-1)+ma(-1)
a’(0)=a(0)+ma(0)
a’(1)=a(1)+ma(1)
b’(-1)=b(-1)+mb(-1)
b’(0)=b(0)+mb(0)
b’(1)=b(1)+mb(1)
が得られる。
【0030】
乗算装置1は、これらのマスクされた標本値a’(),b’()と、乗算結果を表す多項式の値R’()とを用いて、通常のToom-Cook法と同様に、次の連立方程式を解き、係数R’2,R’1,R’0を求める。
R’(-1)=R’2-R’1+R’0=a’(-1)b’(-1)
R’(0)=R’0=a’(0)b’(0)
R’(1)=R’2+R’1+R’0=a’(1)b’(1)
これにより、マスクされた乗算結果R’(Q)=R’2Q2+R’1Q+R’0が得られる。
【0031】
一方で、乗算結果に対するマスク値M=R’(Q)-R(Q)は、上記の標本値及びマスク値に基づいて、
【数1】
と計算できる。ただし、
【数2】
である。
乗算装置1は、Toom-Cook法の出力R’(Q)からマスク値Mを減算することにより、乗算結果R(Q)=(a
1Q+a
0)(b
1Q+b
0)を得る。
【0032】
図2は、通常のToom-Cook法のアルゴリズムを示す図である。
ステップS1において、乗算の入力である2つの整数a,bは、分割多項式化され、多項式a(x),b(x)が求められる。
【0033】
ステップS2において、多項式a(x),b(x)は、それぞれ複数の標本点で評価され、標本値が取得される。
【0034】
ステップS3において、標本値毎の乗算により、乗算結果を表す多項式の値が算出される。
【0035】
ステップS4において、乗算結果を表す多項式の係数が、ステップS3の計算結果を用いた連立方程式により決定される。
【0036】
ステップS5において、ステップS4の多項式は、ステップS1における分割時の法を代入することにより評価され、2つの整数の乗算結果が出力される。
【0037】
図3は、本実施形態における乗算装置1により改良されたToom-Cook法のアルゴリズムを示す図である。
なお、破線枠内が従来のアルゴリズム(
図2)に対して新たに追加された部分であり、サイドチャネル攻撃へのマスキングによる対策が適用されている。
【0038】
ステップS1において、多項式化部11は、従来と同様に、乗算の入力である2つの整数a,bを分割多項式化し、多項式a(x),b(x)を求める。
【0039】
ステップS2において、標本点算出部12は、従来と同様に、多項式a(x),b(x)を、それぞれ複数の標本点で評価し、標本値を取得する。
【0040】
ステップS11において、マスク値生成部13は、標本値毎に、マスク値としての乱数を生成する。
【0041】
ステップS12において、乗算処理部14は、標本値それぞれにマスク値を加算することによりマスキングを行い、マスクされた標本値を得る。
【0042】
ステップS3において、乗算処理部14は、従来と同様に、標本値毎の乗算により、乗算結果を表す多項式の値を算出する。標本値がマスクされていることにより、算出された多項式の値もマスクされている。
【0043】
ステップS4において、乗算処理部14は、従来と同様に、乗算結果を表す多項式の係数を、ステップS3の計算結果を用いた連立方程式により決定する。これにより、マスクされた乗算結果が多項式表現される。
【0044】
ステップS5において、乗算処理部14は、従来と同様に、ステップS4の多項式を、ステップS1における分割時の法を代入することにより評価し、マスクされた乗算結果を得る。
【0045】
ステップS13において、累積マスク演算部15は、標本値及びマスク値を用いて、乗算結果に対する累積マスク値を算出する。
【0046】
ステップS14において、マスク解除部16は、ステップS5の乗算結果から累積マスク値を減算してアンマスキングを行い、2つの整数a,bの乗算結果を出力する。
【0047】
本実施形態によれば、乗算装置1は、2つの整数値の乗算を行うにあたり、Toom-Cook法における乗算処理の対象となる標本値に対し、乱数によるマスク値を加算することでマスキングを行うとともに、標本値及びマスク値から乗算結果に対する累積マスク値を計算する。そして、乗算装置1は、Toom-Cook法による計算結果に含まれている累積マスク値を減算することで、本来の正しい乗算結果を復元する。
したがって、乗算装置1は、Toom-Cook法を用いた乗算処理において、マスキングによりサイドチャネル攻撃を防ぎつつ、高速に乗算を実行できる。
この結果、現行の公開鍵暗号、さらには耐量公開鍵暗号のハードウェア実装において、消費電力等の測定を行うことで鍵値を推測するサイドチャネル攻撃を防止することができる。
【0048】
乗算装置1は、2つの整数を、それぞれ変数xの1次式で表現し、変数xが-1,0,1の場合の標本点の値をそれぞれ算出する。
これにより、乗算装置1は、演算式を簡潔にして処理負荷を低減できる。
【0049】
なお、これにより、例えば、より安全な公開鍵暗号を用いたインターネット通信を実現できることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進するとともに、イノベーションの拡大を図る」に貢献することが可能となる。
【0050】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0051】
例えば、公開鍵暗号方式において、鍵長が長いことによる処理負荷を低減するために、乗算装置1は、分割多項式化を再帰的に実行してもよい。すなわち、乗算処理部14は、処理途中の演算において、乗算対象の整数を1次式に分割するToom-Cook法を再帰的に繰り返してもよい。
【0052】
また、整数の多項式表現は、1次式には限られず、2次以上であってもよい。この場合、乗算結果を表す多項式の次数も増加し、例えば、2次式×2次式の場合、乗算結果を表す多項式は4次式となり、5個の係数を決定するために標本点が10個選択される。
【0053】
乗算装置1による乗算方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0054】
1 乗算装置
10 制御部
11 多項式化部
12 標本点算出部
13 マスク値生成部
14 乗算処理部
15 累積マスク演算部
16 マスク解除部
20 記憶部