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

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

Info

Publication number
JP5975682B2
JP5975682B2 JP2012049722A JP2012049722A JP5975682B2 JP 5975682 B2 JP5975682 B2 JP 5975682B2 JP 2012049722 A JP2012049722 A JP 2012049722A JP 2012049722 A JP2012049722 A JP 2012049722A JP 5975682 B2 JP5975682 B2 JP 5975682B2
Authority
JP
Japan
Prior art keywords
bit
sequence
length
block
scalar multiplication
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.)
Expired - Fee Related
Application number
JP2012049722A
Other languages
English (en)
Other versions
JP2013186204A (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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2012049722A priority Critical patent/JP5975682B2/ja
Publication of JP2013186204A publication Critical patent/JP2013186204A/ja
Application granted granted Critical
Publication of JP5975682B2 publication Critical patent/JP5975682B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、スカラー倍演算を実行する演算装置、演算方法、およびプログラムに関する。
スカラー倍演算(kP)は、公開鍵暗号方式の一つである楕円曲線暗号で一般的に利用されている演算である。公開鍵暗号方式とは、暗号化と復号化にそれぞれ異なる鍵を使用する暗号方式であり、データの暗号化、デジタル署名、鍵配送等で利用されている。楕円曲線暗号とは、楕円曲線を利用した公開鍵暗号方式であり、代表的なものには離散対数計算の困難性に基づくECDSA署名、ECDH(Diffie−Hellman)鍵配送方式がある。
スカラー倍演算(kP)とは、楕円曲線上のある点Pをスカラー(k)倍する演算のことである。スカラーkは、例えば公開鍵暗号における公開鍵や秘密鍵に相当する。ここで、スカラーkは一般的に大きい値(例えば256ビットの値)である。このため、スカラーkを小さい単位に分解し、小さい単位で点の2倍算(2×P)と点の加算(P+Q)および点の減算(P−Q)を繰り返し実行することで、kPを求める方法が一般的に用いられる。例えば演算の単位を1ビットとすると、最上位ビットから順に、ビットの値が「1」の場合に点の2倍算と点の加算を行い、ビットの値が「0」の場合に点の2倍算のみを行うことで、kPが求められる。例えば、スカラーkが14の時のkP(14×P)は、14を2進数で表現すると「1110」となるため、点の2倍算を4回、点の加算を3回行うことで求められる。より具体的には、まず「1110」の一番左のビットに着目すると、「1」であるため、初期値の0の2倍算を実行し、それにPを加算して値Pを得る。その次のビットも「1」であるため、前のステップで算出したPを2倍して、さらにPを加算し、値3×Pを得る。同様に、次のステップでは3×Pを2倍した値にPを加算して7×Pを得る。最後のビットに着目すると、0であるため、Pの加算は行わず、7×Pを2倍した値のみを算出し、このスカラー倍演算の最終的な解として、値14×Pを得る。
非特許文献1には、このようなスカラー演算の手法として、NAF+Sliding Windows Method(以後、NAF Sウィンドウ法とする)が記載されている。NAF Sウィンドウ法は、演算単位を1〜w(wはウィンドウ長)ビットの間で可変とすることで、上述の点の加算を少なくする手法の一つである。点の加算を少なくすることで処理の高速化が可能となる。
具体的には、まずNAFアルゴリズムを適応する。NAFアルゴリズムとは、2進表記に負数も考慮することでビットが立つ割合(ハミングウェイト)を小さくする方法である。すなわち、例えばビット列「1111」について、「10000−00001」と表現できることを利用して、ビット列中の1の出現率を低減する。図2に10進数の11を表す2進数「1011」をNAF変換する例を示す。まず、201の下位2ビット「11」は、「1」が連続しているため、202に示す通り、下位3ビット目を「1」、下位2ビット目を「0」として、最下位ビットを「−1」とする。次に、202の上位2ビット「11」は、「1」が連続しているため同様に変換する。その結果、203で示す通り「10−10−1」が得られる。「10−10−1」は、1×24+0×23−1×22+0×21−1×20=11である。このように、変換前と変換後のビット列は同じ値を示す。
次に、NAFアルゴリズムによって得られた符号付き2進数を、1からwビットの範囲の符号付き2進数(非ゼロの数値)、もしくは0が2つ以上連続したビット列の何れかに分割する。図3(a)は、符号付き2進数(10進数値で57913)をw=3として、下線の付された箇所とそれ以外とに分割した例である。特に、下線箇所の非ゼロの部分をウィンドウと呼ぶ。
最後に、分割系列k1i用いて、スカラー倍演算(kP)を行う。本方式では、点の加算は前述のウィンドウの総数となるため、高速にスカラー倍演算が行える。
「On the Peformance of Signature Schemes based on Elliptic Curves」、Erik De Win等、1998年
NAF Sウィンドウ法では、点の加算はウィンドウの総数と同じである。そのため、ウィンドウの数が多い場合、処理時間が長くなるという課題があった。
本発明は上記課題に鑑みなされたものであり、点の2倍算と加算により楕円曲線上のスカラー倍演算(kP)を行う場合に、点の加算の回数を減らすことで、演算における処理時間の短縮を実現する技術を提供することを目的とする。
上記目的を達成するため、本発明による演算装置は、数値で表される楕円曲線上の点に対して、自然数を用いて楕円曲線上におけるスカラー倍演算を実行する演算装置であって、前記自然数を2進数表現し、0と正のビットである1と負のビットである−1とを用いて、当該2進数表現を符号付き2進数の系列へ変換する変換手段と、前記符号付き2進数の系列において、長さが所定のビット長の部分系列であるブロックであって、その先頭ビットと最後尾ビットとが共に0でないブロックを抽出する抽出手段と、前記ブロックが示す値が前記所定のビット長より1ビット短い、0および正のビットである1からなるビット列、または0および負のビットである−1からなるビット列で表現できるか否かを判定する判定手段と、前記ブロックが示す値が前記所定のビット長より1ビット短いビット列で表現できる場合、前記符号付き2進数の系列のそのブロックの部分を、先頭ビットを0とし、その後に前記ビット列を付したビット列に変換することにより、前記符号付き2進数の系列を再変換する再変換手段と、前記再変換された系列に基づいて、前記数値に対する楕円曲線上での加算と2倍算とを行い、前記数値と前記自然数とのスカラー倍演算を実行する実行手段と、を備える。
本発明によれば、スカラー倍演算の処理時間を短縮する演算装置、演算方法、及びプログラムを提供することができる。
実施形態1の情報処理装置の構成を説明する図。 NAFアルゴリズムの適応例を示す図。 実施形態1の演算過程を説明する図。 実施形態1におけるスカラー倍演算処理のフローチャート。 スカラー倍演算を使用する各暗号認証装置の概要を説明する図。 実施形態2におけるスカラー倍演算処理のフローチャート。 実施形態2の演算過程を説明する図。 スカラー倍演算装置の構成を説明する図。 実施形態1の演算過程のもう1つの例を説明する図。
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
<<実施形態1>>
(情報処理装置の構成)
図1は、本実施形態において符号付きウィンドウ結合処理を行う情報処理装置100を示す図である。この情報処理装置100は、例えば、CPU、ハードディスク、メモリ等のハードウェアとCPUが実行するプログラム等のソフトウェアを備え、メモリに格納されたプログラムの指示に従い動作を行うパーソナルコンピュータに相当する。情報処理装置100は、例えば、データ取得部101、符号付き2進数変換部102、ブロック抽出部103、判定部104、再変換部105から構成される。
データ取得部101は、情報処理装置100のハードディスク等に格納された自然数k0及びウィンドウサイズwを読み出す。そして、符号付き2進数変換部102へk0及びwを渡す。ここで、ウィンドウサイズwは、スカラー倍演算処理を実行する際の系列の読み出し単位を示すビット長である。再変換後の系列を用いたスカラー倍演算処理においては、そのビット長w以下の部分系列の示す値と点Pとのスカラー倍演算の結果を、事前演算などにより予め用意する。そして、スカラー倍演算処理の実演算においては、このビット長以下の部分系列を、0のみからなる部分系列と、先頭ビットと最後尾ビットが0でない部分系列とに分けて読み出す。そして、読み出した部分系列の先頭ビットと最後尾ビットとが0でなかった場合は、事前演算などにより予め用意した結果を、それまでの演算結果に加算すると共に、そのビット長分に応じて2倍算を行う。一方、読み出した部分系列が0のみからなる場合は、その部分系列の長さ分だけの2倍算を行う。そして、これを繰り返すことにより、点Pと自然数k0との演算結果を得る。
符号付き2進数変換部102は、データ取得部101から渡された自然数k0を、負の数を含む符号付き2進数k1に変換する。すなわち、まず、自然数k0を2進数表現する。そして、その2進数表現の1が連続する区間について、その区間の先頭ビットより1ビットだけ上位のビットを1とし、その区間の最後尾ビットを負のビットである−1とするとともに、その区間の最後尾ビットを除くビットを0とする。例えば、61を2進数表現により「111101」と表現した場合、1の連続する先頭ビットから4ビット「1111」を、先頭ビットを1、最後尾ビットを−1とし、その他を0とする5ビットで「1000−1」と表現する。これにより、61は、「1000−101」と符号付き2進数表現される。
符号付き2進数変換は、例えば、最下位ビットから最上位ビットに渡って変換を行う上述のNAFアルゴリズムや、最上位ビットから最下位ビットに渡って変換を行うMOFアルゴリズム等により実行される。図3(a)は、自然数k0=57913にNAFアルゴリズムを適用した際の符号付き2進数k1を示す。なお、変換結果k1及びwは、後述するブロック抽出部103に渡される。
ここで、NAFアルゴリズムによる符号付き2進数k1の生成について、改めて説明する。自然数57913は2進数表現では「1110001000111001」という16ビットで表現される。ここで、1が連続して出現する区間を探索すると、上位3ビット(14〜16桁)と中間の3ビット(4〜6桁)の区間が抽出される。この3ビットの区間について、負のビットである「−1」を用いて1ビットだけ長い符号付き2進数で表現すると、それぞれ「100−1」となる。このため、上位3ビットの区間については、その区間の左にはビットがないため、新たにビット「1」を加え、区間の最後尾ビットを「−1」とするとともに、区間の他の2ビットを「0」とする。そして中間の3ビットの区間については、その区間の左にビット「0」があるため、それを「1」とし、区間の最後尾ビットを「−1」とするとともに、区間の他の2ビットを「0」とする。このため、57913は、「100−1000100100−1001」と17ビットで表現されることとなる。
また、自然数57913は、MOFアルゴリズムを用いても同様に「100−1000100100−1001」と表現される。以下、MOFアルゴリズムについての動作を説明する。MOFアルゴリズムでは、57913の2進数表現を2倍し、その2倍した結果から、2進数表現を減算する。例えば、「1110001000111001」を2倍した「11100010001110010」から「1110001000111001」を減算する。すると「100−1001−100100−101−1」が得られる。ここで「1−1」を「01」で、「−11」を「0−1」で表現すると、「100−1000100100−1001」が得られる。ただし、自然数57913については、MOFアルゴリズムとNAFアルゴリズムによる変換結果は等しくなるが、必ず結果が等しいわけではない。例えば、自然数105は、2進数表現すると「1101001」であるところ、NAFアルゴリズムでは「10−101001」となるが、MOFアルゴリズムでは「100−1−1001」となる。本発明においては、0と正のビット1と負のビット−1とを用いて自然数を表現することが重要なのであって、どのように変換するかは重要ではない。すなわち、以下では、NAFアルゴリズムを用いた場合の例について主に説明するが、符号付き2進数へのいかなる変換方法を用いても同様の方法を用いることが可能である。
ブロック抽出部103は、符号付き2進数変換部102によって算出されたk1を用いて、先頭ビットから順に所定のビット長以下の長さの部分系列であるブロックを抽出する。ここで、所定のビット長とはウィンドウサイズより1ビット長い長さであり、ブロックは、その所定のビット長以下の長さのビット列であって、一番左のビットである先頭ビットと一番右のビットである最後尾ビットとがゼロでないビット列である。図3(b)は、w=3の場合に、先頭ビットから始まるブロック301を抽出して選択した例である。すなわち、図3(a)の2進数の系列の先頭ビットは「1」であり、そのwビット後に「−1」が出現する。このため、長さがw+1ビットであるため所定のビット長以下であると共に、その先頭ビットと最後尾ビットとがそれぞれ0でない。このため、このw+1ビットのビット列をブロックとして抽出する。このようにして抽出されたブロック301は、判定部104へ渡される。なお、抽出されたブロックを記号z0lにより表す。
ここで、ブロック抽出部103は、あるビットから始まる所定のビット長以下の部分系列で、先頭ビットと最後尾ビットが0でない部分系列が複数存在する場合は、長さが長い方をブロックとして抽出してもよい。すなわち、w=4の場合に、「10−101」のような部分系列があった場合、ブロックの要件を満たすのは、「10−1」と「10−101」の2通りが存在する。この場合、より長い系列である「10−101」をブロックとして出力してもよい。以下の処理では、ウィンドウサイズより大きい部分系列であって、スカラー倍演算処理において1度で処理ができない部分系列を、ウィンドウサイズ以下の系列に再変換することにより、1度で処理可能とすることを目的としている。そして、所定のビット長をウィンドウサイズより1ビット長いビット長としているため、所定のビット長以下の部分系列が複数抽出された場合に、短い方を選択しても、再変換の対象とはならないと考えられる。このため、上述のように2通り以上のブロック候補が抽出された場合は、長さの長い方をブロックとして選択するようにしてもよい。
判定部104は、ブロック抽出部103から渡されたブロックz0lを入力とし、まず、ブロックの長さがw+1であるかを判定する。そして、判定部104は、ブロックの先頭ビットの値が0で、残りのwビットでブロックの絶対値|z0l|を表現することが可能かを判定する。すなわち、判定部104は、入力されたブロックの長さが所定のビット長であるかを判定すると共に、そのブロックが示す値を所定のビット長より1ビット短いビット列により再変換することが可能であるかを判定する。判定部104の処理内容についての詳細は後述する。判定結果は、後述する再変換部105に渡される。
再変換部105は、判定部104で再変換可能と判定されたz0lをz1lに再変換する。例えば、図3(c)のように、図3(b)の301で示すz00を図3(c)の302で示すz1lに置き換える。再変換部105は、このように、符号付き2進数変換部102で変換されたビット列k1から抽出されたブロックz0lについて、z1lを用いて置き換えて出力する。そして、これらの置き換えの処理を最後尾ビットまで繰り返すことにより、図3(h)のように、再変換後の出力系列k2が得られる。再変換部105の処理内容についての詳細も後述する。
(情報処理装置の処理)
図4は、情報処理装置100が行う処理の流れを示すフローチャートである。処理では、自然数k0の入力、数値k1への変換、ブロックの抽出、抽出されたブロックの再変換の可否判定、及び再変換可能な場合に再変換が行われる。
処理が開始されると、まず、データ取得部101が、自然数k0を取得する(S401)。自然数k0は、例えば、スカラー値であり、256ビット長の秘密鍵である。自然数k0は符号付き2進数変換部102へ出力される。符号付き2進数変換部102は、入力された自然数k0を、負数を含む符号付き2進数k1に変換する(S402)。なお、ここでの説明においては、k1は、図3(a)で示される系列であるとする。続いて、符号付き2進数変換部102は、k1のビット長k1_lenを取得する。なお、系列k1は、ブロック抽出部103へ出力される。
ブロック抽出部103は、入力されたビット列k1について、処理対象ビットであるi番目のビットから処理を開始し、ブロックz0を抽出する(S405)。なお、ここで、処理対象ビットを表すiは、初期的にはk1_lenであるとし、第k1_len番目のビットから、すなわち、最上位ビットから処理が行われるものとする(S404)。すなわち、S405では、まず、図3(b)のように先頭ビットから処理が開始され、ビット長がw+1(=4)ビット以下で、先頭ビットと最後尾ビットとがゼロでないブロック301(z0=“100−1”)が抽出される。また、ここでブロックz0のビット長uを取得する。なお、抽出されたブロックz0とそのビット長uとは、判定部104へ入力される。
続いて、判定部104は、ブロックの長さuがw+1であり、かつ、ブロックz0lの値をwビットで表現できるかを判定する(S406)。例えば、w=3である場合に、z0lのビット長uが4ビットであると共に、3ビットの2進数表現で最大値の「111」=7以下であるか否かを判定する。条件を満たす場合は、そのブロックをwビット以下で表現される1つのウィンドウに変換することができる。なお、wビットの符号付き2進数で表現できる範囲は、−2w+1から2w−1である。このため、z0lの絶対値|z0l|が2w−1以下か否かを判定する。
例えば、図3(b)の場合、301に示すz00は符号付き2進数「100−1」であり、長さu=4=w+1であると共に、10進数値にすると7である。このため、2w−1(=23−1=7)以下であるため、この判定によって処理をS407へ進める。また、例えば、w=4の場合において、符号付き2進数「1000−1」は、長さuが5=w+1であると共に、10進数にすると15であり、2w−1(=15)以下であるため条件を満たす。一方、w=3の場合において、符号付き2進数「−100−1」は、長さuは4=w+1であるが、10進数にすると−9である。このため、その絶対値9は2w−1(=7)より大きいため条件を満たさず、この判定によって、処理はS411へ進む。また、w=3の場合において、符号付き2進数「−101」は、その絶対値は3であるため2w−1(=7)以下であるが、長さu=3がw+1と異なるため、処理はS411へ進む。なお、長さがw+1未満の場合、再変換を行わないのは、もともと1つのウィンドウサイズに収まる部分系列であるため、再変換をしてもウィンドウ数を削減できない蓋然性が高いからである。
S407では、再変換部105が、判定部104で再変換可能と判定されたz0lの再変換後の値である符号付き2進数値z1lを算出する。具体的には、z1lの先頭ビットを「0」にする。そして、以降のビットの値は、wビットで表現される1つのウィンドウに変換する。
再変換後の値の算出においては、z0lの最上位ビットが「1」の場合はz1lの値を「1」と「0」で2進数表現する。例えば、図3(b)の場合、301に示すz00=「100−1」は10進数表現で7であるため、先頭ビットを「0」とし、以後のビットは7を2進数表現した「111」とする。なお、7=1×22+1×21+1×20)が成り立つ。このようにして、z10=「0111」となる。また、w=4の場合のz00=「1000−1」は、10進数表現では15であるため、先頭ビットを「0」とし、以後のビットは15を符号付き2進数表現した「1111」とする。つまり、z10=「01111」となる。このようにして、S407では、先頭ビットが「1」の再変換可能なz0lについて、先頭ビットが「0」であり、その後のwビットが「1」と「0」からなる、wビットの2進数が算出される。
一方、z0lの最上位ビットが「−1」の場合はz1lの値を「−1」と「0」で符号付き2進数表現する。例えば、w=3の場合のz00=「−1001」は、10進数表現では−7であるため、先頭ビットを「0」とし、以後のビットは−7を符号付き2進数表現した「−1−1−1」で表現する。ここで、−7=−1×2−1×2−1×2である。このようにして、S407では、先頭ビットが「−1」の再変換可能なz0lについては、先頭ビットが「0」であり、その後のwビットが「0」と「−1」からなる、w+1ビットの符号付き2進数が算出される。
S408では、再変換部105が、判定部104で再変換可能と判定されたz0lをz1lに再変換する。例えば、図3の例では、先頭ビットからの4ビットであるz00(図3(b)の301)が「0111」に再変換され、再変換後のビット列が図3(c)の302のようになる。
続いて、ブロック抽出部103は、再変換後のブロックz1lの後にゼロでないビットが存在するかを判定する(S409)。なお、この判定は判定部104が行ってもよいし、再変換部105が行ってもよい。そして、非ゼロのビットが存在する場合(S409でYes)は、その非ゼロのビットまで処理対象のビットを移動し(S410)、処理をS405に戻す。一方、そのような非ゼロのビットが存在しない場合(S409でNo)、これ以上再変換の対象となるビットが存在しないこととなる。このため、再変換部105は、再変換後の出力系列k2を出力し(S416)、処理を終了する。
例えば、図3(c)において、再変換後のブロックz1l(302)の後、右から10ビット目に非ゼロのビットである「1」が存在する。このため、次の処理対象ビットを表すiを、10ビット目まで移動させる(S410)。一方、例えばk1=「100−1000000」の先頭4ビット「100−1」を再変換して、「0111000000」とした場合、再変換後のブロックz1lの後に非ゼロのビットが存在しない。この場合、再変換部105は、再変換後のビット列「01110000000」を出力系列k2として出力し(S416)、処理を終了する。
一方、S406で、長さuがw+1でない、又はブロックz0lの値をwビットで表現できないと判定された場合(S406でNo)、処理はS411へ移る。S411では、抽出されたブロックの長さuが1であるかを確認する(S411)。そして、uが1の場合は、その後に非ゼロのビットが存在するかを判定する(S412)。この判定は、ブロックの後に非ゼロのビットが存在しなければ、これ以上の再変換は実行できないことから、その後の処理を行わずに処理を終了させるためのものである。したがって、非ゼロのビットが存在しなければ(S412でNo)、その時点における符号付き2進数の系列を出力系列k2として出力し(S416)、処理を終了する。一方、長さ1のブロックの後に非ゼロのビットが存在する場合は(S412でYes)、そのブロックの次の非ゼロのビットまで、処理対象を示すiを移し(S413)、処理をS405へ戻す。
一方、抽出されたブロックの長さuが1ではない場合(S411でNo)、処理対象を示すiを、そのブロックz0lの最後尾ビットに移す(S414)。そして、この処理対象のビット以後に非ゼロのビットが存在するかを判定する(S415)。この判定は、処理対象のビット以後に非ゼロのビットが存在しなければ、当該処理対象のビットを含め、これ以上の再変換は実行できないことから、その後の処理を行わずに処理を終了させるためのものである。このため、処理対象ビット以後に非ゼロのビットが存在しなければ(S415でNo)、再変換部105は、この時点での再変換後のビット列を出力系列k2として出力し(S416)、処理を終了する。一方、処理対象ビット以後に非ゼロのビットが存在する場合(S415でYes)、処理をS405へ戻す。
例えば、図3(d)の右から7ビット目から10ビット目である303は、「1001」であり、u=4=w+1であるが、|z0l|=9>2w−1であるため(S406でNo)、処理はS411へ移る。この場合はu=4であるため(S411でNo)、処理はS414へ移り、処理対象を示すiは、このブロックの最後尾ビットを示す「7」(右から7ビット目)に移される。そして、図3(d)では、右から7ビット目以降に非ゼロのビットが存在するため(S415でYes)、処理をS405へ戻す。一方、図3(g)の場合では、ブロックの長さuが1でありw+1ではなく(S406でNo)、u=1であるため(S411でYes)、それ以後に非ゼロのビットがあるかの判定が行われる(S412)。この場合は、処理対象が最後尾ビット(最も右のビット)であり、それ以降には非ゼロのビットは存在しないため(S412でNo)、再変換部105が出力系列k2を出力して(S416)、処理を終了する。
なお、S406の判定でNoであった場合、処理をS411でなく、S412に移してもよい。すなわち、S411、S414及びS415の処理は省略されてもよい。この場合、ブロックがS406の条件を満たさなければ、そのブロックについては再変換処理を行わず、そのブロックより後のビット列について処理を行うようにする。すなわち、処理対象を示すiを、そのブロックz0lの最後尾ビットに移すのではなく、ブロックz0lの後の非ゼロのビットに移す。
このような処理により、例えば、自然数k0=57913は、符号付き2進数k1に変換されたのち、図3(h)のような出力系列k2=「01110001000111001」に再変換されて出力される。これにより、下線部で示すウィンドウの数が図3(a)の6個から4個へ減っていることがわかる。
再変換部105から出力されたk2は、例えば、図8に示す楕円曲線上の点Pをk0倍するスカラー倍演算(k0×P)に使用される。図8は、スカラー倍演算装置であり、上述した情報処理装置100は、k2を出力し、事前計算装置200は事前演算結果を出力する。そして、スカラー倍演算実演算装置300は、k2と事前演算結果を用いて、スカラー倍演算結果k2×Pを出力する。なお、スカラー倍演算は、図5(a)に示す鍵生成や、鍵生成処理で生成した公開鍵や秘密鍵を用いて、図5(b)に示すECDH鍵配送方式の秘密共有処理に使用される。また、図5(c)や図5(d)に示すECDSA署名の署名生成処理や署名検証処理にも使用される。
ここで、数値Pとk2とのスカラー倍演算処理について説明する。スカラー倍演算処理においては、演算結果の初期値を0として、数値Pと再変換後のビット列の部分系列とのスカラー倍演算の結果の値の演算結果への加算と、楕円曲線上での2倍算とが実行される。ここで、符号付き2進数で表される先頭ビットと最後尾ビットとが0でないwビット以下の部分系列と、0のみが連続する区間とでは、実行する処理が異なる。先頭ビットと最後尾ビットとが0でない部分系列では、その部分系列の符号付き2進数が示す値と数値Pとのスカラー倍演算の一次演算結果をそれまでの演算結果に加算して、その部分系列の長さに応じて演算結果に対して2倍算を行う。一方、0のみからなる区間では、値の加算は行わず、その区間の長さの分だけそれまでの演算結果に2倍算を施すのみである。
なお、2倍算の回数は、ビット列の長さ分であり、例えば部分系列の長さが3であれば3回の2倍算を行い、0の区間において、0を1つ読み込むたびに1回の2倍算を行う。ここで、0が連続する区間において、その区間の長さをカウントする計数部を用いて、その個数分に応じて2倍算を行うようにしてもよい。この場合、先頭ビットと最後尾ビットがゼロでない長さw以下のウィンドウを特定し、ウィンドウとウィンドウとの間に存在する0のみからなる部分系列の長さを測定する。
以下、図3(h)の場合を例として、スカラー倍演算処理の例を説明する。まず、演算結果の初期値は0とする。そして、k2を例えば先頭ビットから読み出す。k2の先頭ビット(右から17ビット目)は「0」であるため、演算結果に2倍算が施される。ただし、この時点では演算結果は初期値の0であるため、2倍算後も0である。なお、先頭ビットが0である場合は、最初に0でないビットが出現するまで、2倍算を省略してもよい。
続いて、符号付き2進数の部分系列を読み出す。すなわち、右から16ビット目から14ビット目までの「111」を読み出し、数値Pと「111」とのスカラー倍演算結果の値をそれまでの演算結果に加算する。なお、この「111」と数値Pとの演算結果は、事前計算装置200において事前に計算される。そして、この符号付き2進数の部分系列は3ビットであったため、演算結果に対して3回2倍算を行う。続いて、右から13ビット目から11ビット目までは3ビット連続して0であるため、演算結果に対して3回2倍算を行う。そして右から10ビット目は「1」であるため、演算結果にPを加算して1回の2倍算を実行する。そして、右から9ビット目から7ビット目までは0であるため、演算結果に対して3回の2倍算を施す。そして、右から6ビット目から4ビット目までは「111」であるため、数値Pと「111」とのスカラー倍演算の結果の値を演算結果に加算し、その加算結果に対して3回、2倍算を実行する。そして、右から3ビット目から2ビット目までは0であるため、演算結果に何も足さずに2回2倍算を行い、最後尾ビットが1であるため、Pを加算して、実演算を終了する。なお、k2の系列の最後尾ビットを含む部分系列に対しては、2倍算は行わない。ここで、上述の説明では、k2の最上位ビットから読み出しと実演算を開始したが、最後尾ビットからこれらを開始してもよい。
事前計算装置200は、予めPに1〜2w−1倍した値を算出する。そして、スカラー倍演算実演算装置300は、これを用いて、ウィンドウ毎のPの整数倍計算を省略して実演算処理を行うことができる。その結果、スカラー倍演算の高速化が可能となる。また、例えばw=3の場合、演算の時点において、「001」などは、「00」と「1」とに分けられる。このため、先頭ビットと最後尾ビットとが共に0でない1〜2w−1についてのみ、数値Pの整数倍計算を行っておくようにしてもよい。これにより、計算結果の記憶に必要となる記憶部の容量を削減することが可能となる。例えば、w=3の場合は、「111」「11」「1」「101」の4通りの整数倍計算を行うだけで十分となる。また、「1」については、整数倍計算を行う必要もないため、実際には、3通りの整数倍計算を行うだけで十分となる。
なお、ウィンドウが「10−1」の場合のPとのスカラー倍演算は、「10−1」が実質的には「11」であるため、「11」とPとの演算結果を用いることができる。ただし、この場合、「11」に対応する事前演算の結果を加算するが、「10−1」が3ビットであるため、3回の2倍算が必要となる。このように、ウィンドウ内に正のビットと負のビットが含まれる場合は、ウィンドウに含まれるビット列が表す数に応じた加算と、ウィンドウのビットサイズに応じた2倍算とが行われる。
また、事前計算装置200は、本実施形態でk2を出力したあとに、k2内の各ウィンドウで取りうる値のみに対して事前計算(図3の例では「111」のみに対するPとのスカラー倍演算結果を得る計算)を行い、実演算処理を行うことができる。その結果、無駄な事前演算処理を行うことがなくなり、スカラー倍演算のさらなる高速化が可能となる。なお、「−1−1−1」のウィンドウに対する事前計算については、「111」に対する事前計算結果を流用することができる。このため、「111」と「−1−1−1」の両方を含むk2に対しては、いずれか1つの事前計算のみを実行することにより、さらに無駄な計算を省略し、スカラー倍演算を高速化することが可能となる。
本実施形態について、k0が8185であり、w=3であった場合の例を図9に示す。この場合、符号付き2進数に変換した時点において、図9(a)に示すように、ウィンドウ数は下線で示す3個である。これに対して、図4のフローを適用すると、まず、最初に、14番目のビット(最も左のビット)から、w+1ビット以下の長さのブロックを抽出すると、先頭ビットと最後尾ビットとが非ゼロであるという条件からブロック「1」が抽出される(S405)。しかしながら、「1」は長さuがw+1ではない(S406でNo)。一方、このブロックの長さuは1であるため(S411でYes)、このブロックの後に非ゼロのビットがあるかを判定する(S412)。その結果、右から4ビット目に非ゼロのビットが存在するため、処理対象をそのビットまで移し(S413)、処理をS405へ移す。
S405では、右から4ビット目から1ビット目までの部分系列が、長さw+1であり、先頭ビットと最後尾ビットとが非ゼロであるため、ブロック901として抽出される。このブロック901(z00=「−1001」)の値は、|z00|=|−1×23+1|=7であるため、2w−1以下である。このため、z00は再変換可能と判定できる(S406でYes)。このブロックz00は、先頭ビットが「0」で、以後のビットが−7を符号付き2進数表現した「−1−1−1」である系列で表される。すなわち、z10は「0−1−1−1」として算出される(S407)。そして、z10でz10を置き換えて(S408)、このブロックの後には非ゼロのビットは存在しないため(S409でNo)、最終的に、図8(c)のようなk2を出力し(S416)、処理を終了する。なお、k2において、ウィンドウ数は下線で示す2個であり、再変換前の3個より減少していることが分かる。
本実施形態によれば、NAF Sウィンドウ法で他の符号付き2進数で変換し、ウィンドウの数を減らすことで、スカラー倍演算における処理時間を短縮することができる。
<<実施形態2>>
実施形態1では、鍵k0を一つのウィンドウサイズwを用いてブロック抽出し、そのブロックを再変換可能である場合は再変換し、これにより、ウィンドウの数を減らすことを可能とする方法を説明した。しかしながら、ウィンドウの数は、ウィンドウサイズwの値によって変化するものであり、いずれのwによって、ウィンドウの削減数を最大化、すなわち、ウィンドウの残数を最少化することが可能であるかは処理して初めて判明する。そこで、本実施形態では、複数のウィンドウサイズwで実施形態1の方法を実行し、ウィンドウの削減数が最大となった場合のwと、その時のk2をスカラー倍算処理に利用する。そして、それにより、スカラー倍演算における処理時間の短縮を実現する。
なお、上述の方法は、符号付き2進数への変換にNAFアルゴリズムを用いた場合に限らず、他の方法を用いた場合であっても適用可能である。例えば、MOFアルゴリズムで自然数105を表した場合「100−1−1001」となるところ、上述の方法を用いれば、「01110111」と表すことが可能となり、この場合、ウィンドウ数を3から2へ削減することが可能となる。
(情報処理装置の構成)
本実施形態に係る情報処理装置100は、図1に示す実施形態1と同様の構成を有する。ただし、本実施形態においては、データ取得部101は、複数のウィンドウサイズwa(a=0、1、…、n−1)を入力する。また、再変換部105は、各ウィンドウサイズwaによりk1をk2に再変換した後に、ウィンドウの数が処理前と比べてどの程度減少したかを示す削減数を取得する。すなわち、例えば図3の例では、6個だったウィンドウ数が再変換により4個となっているため、削減数「2」を取得する。そして、ウィンドウの削減数が最大となるウィンドウサイズwmaxと、そのときの出力系列k2とを出力する。再変換部105の処理内容の詳細については後述する。
(情報処理装置の処理)
図6は、情報処理装置100が実行する、自然数k0の入力、数値k1への変換、ブロックの抽出、ブロックの再変換が可能であるかの判定、及びk1のk2への再変換までの一連の動作を示したフローチャートである。処理が開始されると、まず、S601からS603において、それぞれS401からS403と同様の処理を実行する。また、可変のウィンドウサイズのインデックスaと、ウィンドウの削減数の最大値smaxとが0に初期化される(S604)。
続いて、ブロック抽出部103、判定部104および再変換部105は、ウィンドウサイズwaの場合について、図4のS404〜S415の処理を実施し、出力系列k2を生成する(S605)。そして、再変換部105は、ウィンドウの削減数sを検出して取得する(S606)。ウィンドウの数は、例えば、図7の各ビット列の下線部が該当し、図7(a)のw0=3の場合は、再変換前は6個であり、再変換後は4個である。従って、w0=3のウィンドウの削減数sはs=6−4=2となる。
その後、再変換部105は、sがsmaxより大きいかを判定する(S607)。sがsmaxより大きい場合(S607でYes)は、再変換部105は、ウィンドウサイズwaで再変換した場合のk2を、k2maxとする(S608)。同様に、sをsmaxの値とすると共に、waをwmaxの値とし、smax及びwmaxをそれぞれ更新する(S608)。そして、処理をS609へ進める。一方、sがsmax以下の場合(S607でNo)は、S608の処理を行わずに、処理をS609へ進める。
S609では、再変換部105は、ウィンドウサイズを変化させる際に用いるaをインクリメントする。すなわち、現状のaに1を加えた値を新しいaとする(S609)。そして、再変換部105は、aをインクリメントした値がnとなったか否かを判定する(S610)。インクリメント後のaがnとなった場合(S610でYes)、再変換部105は、その時点でのk2maxとwmaxの値とを出力して処理を終了する(S611)。一方、インクリメント後のaがnとなっていない場合(S610でNo)は、処理をS605へ戻す。
次に、図7を用いて、本実施形態の動作について説明する。図7は、k0=57913を符号付き2進数k1に変換後、3つ(n=3)のウィンドウサイズwa(a=0、1、2)で、出力系列k2に再変換した状態を示す図である。なお、符号付き2進数への変換はNAFアルゴリズムを用いた。図7(a)はウィンドウサイズw0=3の場合の、再変換前のk1と再変換後のk2とを示している。同様に、図7(b)はウィンドウサイズw1=4の場合の、図7(c)はウィンドウサイズw2=5の場合の、それぞれ再変換前のk1と再変換後のk2とを示している。
図7の場合、w0=3の場合はs=2であるのに対して、w1=4はs=−1であり、w2=5の場合はs=0である。このため、S611において出力されるwmaxは3となり、k2maxは「01110001000111001」となる。
このようにすることで、ウィンドウの数を最大限減らすことができるウィンドウサイズを決定することができる。そして、ウィンドウの数を減らすことにより、実演算の処理量を削減することが可能となる。
なお、上述の実施形態2では、ウィンドウの減少数が最大のウィンドウサイズを選択したが、これに限られない。例えば、楕円点上の加算と2倍算の演算量を同等とみなし、実演算と事前演算のそれぞれの楕円点上の加算の回数、2倍算の回数の合計が一番小さくなるウィンドウサイズを選択してもよい。
例えば、w0=3の場合、事前演算において「11」=3、「101」=5、「111」=7とPとの演算結果を得ておく必要がある。この計算には、楕円曲線上の点Pを2倍算した2×Pを取得し、以後、2×P+P=3×P、3×P+2×P=5×P、5×P+2×P=7×Pと算出する。このため、1回の2倍算と3回の加算が必要である。そして、実演算では、図7(a)の場合、k2=「01110001000111001」のビット数は先頭の計算時に必要のない「0」を除いて16ビットなので、16回の2倍算が必要である。そして、ウィンドウの数が4個であるため、4回の加算が必要である。以上を合計すると、加算又は2倍算の回数は、1+3+16+4=24回となる。
同様に、w1=4の場合、事前計算において、「11」=3、「101」=5、「111」=7、「1001」=9、「1011」=11、「1101」=13、「1111」=15とPとの演算結果を得ておく必要がある。このため、例えば1回の2倍算と7回の加算が必要である。そして、図7(b)の場合、ウィンドウ数は4つで、先頭のビットも1であることから17回の2倍算が必要であるため、加算又は2倍算の合計回数は、1+7+4+17=29回となる。なお、w1=4の場合は、ウィンドウ数が再変換により増加しているため、再変換前の系列とPとのスカラー倍演算を実行してもよい。この場合は、ウィンドウ数が1つ減るため、加算又は2倍算の合計回数は、28回となる。同様に、w2=5の場合を求めると、加算又は2倍算の合計回数は36回となる。
その結果、加算又は2倍算の回数が最少となるw0=3が選択される。これにより、演算量が実行的に最少となるウィンドウサイズを得ることが可能となる。なお、事前計算結果をあらかじめメモリに格納することにより、事前演算における楕円点上の加算と2倍算との回数の合計を、実演算に必要となる加算と2倍算との数から除いてもよい。この場合、スカラー倍演算処理をすべきビット長が同一である場合、すなわち、先頭ビットがいずれのウィンドウサイズにおいても同一である場合、ウィンドウの削減数によらず、ウィンドウ数が少ないウィンドウサイズが選択されることとなる。したがって、再変換後のウィンドウ数を取得し、その数が最少となるウィンドウサイズを選択するようにしてもよい。
<<その他の実施形態>>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (10)

  1. 数値で表される楕円曲線上の点に対して、自然数を用いて楕円曲線上におけるスカラー倍演算を実行する演算装置であって、
    前記自然数を2進数表現し、0と正のビットである1と負のビットである−1とを用いて、当該2進数表現を符号付き2進数の系列へ変換する変換手段と、
    前記符号付き2進数の系列において、長さが所定のビット長の部分系列であるブロックであって、その先頭ビットと最後尾ビットとが共に0でないブロックを抽出する抽出手段と、
    前記ブロックが示す値が前記所定のビット長より1ビット短い、0および正のビットである1からなるビット列、または0および負のビットである−1からなるビット列で表現できるか否かを判定する判定手段と、
    前記ブロックが示す値が前記所定のビット長より1ビット短いビット列で表現できる場合、前記符号付き2進数の系列のそのブロックの部分を、先頭ビットを0とし、その後に前記ビット列を付したビット列に変換することにより、前記符号付き2進数の系列を再変換する再変換手段と、
    前記再変換された系列に基づいて、前記数値に対する楕円曲線上での加算と2倍算とを行い、前記数値と前記自然数とのスカラー倍演算を実行する実行手段と、
    を備えることを特徴とする演算装置。
  2. 前記実行手段は、前記再変換された系列から、前記所定のビット長より短い部分系列を読み出し、当該部分系列の先頭ビットと最後尾ビットとが共に0でない場合、当該部分系列が示す値と前記数値とを乗じた値の前記演算結果への加算と、その部分系列の長さに応じた前記演算結果に対する2倍算とを行う、
    ことを特徴とする請求項1に記載の演算装置。
  3. 前記実行手段は、前記部分系列が0のみからなる場合、その部分系列の長さに応じて前記演算結果に対する2倍算を行う、
    ことを特徴とする請求項2に記載の演算装置。
  4. 先頭ビットと最後尾ビットとが共に0でない前記所定のビット長より短い系列について、その系列が示す値と前記数値とのスカラー倍演算の結果を記憶する記憶手段をさらに備え、
    前記実行手段は、読み出した前記部分系列の先頭ビットと最後尾ビットとが共に0でない場合、その部分系列の長さに応じて前記演算結果に対して2倍算を行い、その部分系列と前記数値とのスカラー倍演算の結果を前記記憶手段から読みだして、その演算結果に対して加算する
    ことを特徴とする請求項2又は3に記載の演算装置。
  5. 前記実行手段は、前記再変換された系列に含まれる先頭ビットと最後尾ビットとが共に0でない部分系列について、前記数値とのスカラー倍演算の結果の値を予め計算し、
    前記実行手段は、読み出した部分系列の先頭ビットと最後尾ビットとが共に0でない場合、その部分系列の長さに応じて前記演算結果に対して2倍算を行い、その部分系列と前記数値とのスカラー倍演算の予め計算された結果の値を、その演算結果に対して加算する
    ことを特徴とする請求項2又は3に記載の演算装置。
  6. 前記所定のビット長より短い部分系列であって、先頭ビットと最後尾ビットとが共に0でない部分系列の数について、前記符号付き2進数の系列を前記再変換された系列に再変換したことによる前記部分系列の数の削減数を取得する取得手段をさらに備え、
    前記取得手段は、前記所定のビット長を変化させた場合について、それぞれの前記所定のビット長ごとの前記削減数を取得し、
    前記実行手段は、前記削減数が最大となる所定のビット長において得られる前記再変換された系列を用いて、前記数値と前記自然数とのスカラー倍演算を実行する、
    ことを特徴とする請求項1から5のいずれか1項に記載の演算装置。
  7. 前記再変換された系列において、前記所定のビット長より短い部分系列であって、先頭ビットと最後尾ビットとが共に0でない部分系列の数を取得する取得手段をさらに備え、
    前記取得手段は、前記所定のビット長を変化させて前記部分系列の数を取得し、
    前記実行手段は、前記部分系列の数が最少となる所定のビット長において得られる前記再変換された系列を用いて、前記数値と前記自然数とのスカラー倍演算を実行する、
    ことを特徴とする請求項1から5のいずれか1項に記載の演算装置。
  8. 前記再変換された系列において、楕円曲線上の2倍算および加算を行う回数を取得する取得手段をさらに備え、
    前記取得手段は、前記所定のビット長を変化させて前記回数を取得し、
    前記実行手段は、前記回数が最少となる所定のビット長において得られる前記再変換された系列を用いて、前記数値と前記自然数とのスカラー倍演算を実行する、
    ことを特徴とする請求項1から5のいずれか1項に記載の演算装置。
  9. 数値で表される楕円曲線上の点に対して、自然数を用いて楕円曲線上におけるスカラー倍演算を実行する演算装置における演算方法であって、
    変換手段が、前記自然数を2進数表現し、0と正のビットである1と負のビットである−1とを用いて、当該2進数表現を符号付き2進数の系列へ変換する変換工程と、
    抽出手段が、前記符号付き2進数の系列において、長さが所定のビット長の部分系列であるブロックであって、その先頭ビットと最後尾ビットとが共に0でないブロックを抽出する抽出工程と、
    判定手段が、前記ブロックが示す値が前記所定のビット長より1ビット短い、0および正のビットである1からなるビット列、または0および負のビットである−1からなるビット列で表現できるか否かを判定する判定工程と、
    再変換手段が、前記ブロックが示す値が前記所定のビット長より1ビット短いビット列で表現できる場合、前記符号付き2進数の系列のそのブロックの部分を、先頭ビットを0とし、その後に前記ビット列を付したビット列に変換することにより、前記符号付き2進数の系列を再変換する再変換工程と、
    実行手段が、前記再変換された系列に基づいて、前記数値に対する楕円曲線上での加算と2倍算とを行い、前記数値と前記自然数とのスカラー倍演算を実行する実行工程と、
    を有することを特徴とする演算方法。
  10. コンピュータを請求項1から8のいずれか1項に記載の演算装置が備える各手段として機能させるためのプログラム。
JP2012049722A 2012-03-06 2012-03-06 演算装置、演算方法、およびプログラム Expired - Fee Related JP5975682B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012049722A JP5975682B2 (ja) 2012-03-06 2012-03-06 演算装置、演算方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012049722A JP5975682B2 (ja) 2012-03-06 2012-03-06 演算装置、演算方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2013186204A JP2013186204A (ja) 2013-09-19
JP5975682B2 true JP5975682B2 (ja) 2016-08-23

Family

ID=49387699

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012049722A Expired - Fee Related JP5975682B2 (ja) 2012-03-06 2012-03-06 演算装置、演算方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP5975682B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018146766A (ja) 2017-03-06 2018-09-20 キヤノン株式会社 スカラー倍演算装置、スカラー倍演算方法及びプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3797808B2 (ja) * 1998-10-27 2006-07-19 富士通株式会社 スカラー倍算方法およびその装置
JP2005316038A (ja) * 2004-04-28 2005-11-10 Hitachi Ltd 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびプログラム
JP4783061B2 (ja) * 2005-02-04 2011-09-28 ルネサスエレクトロニクス株式会社 楕円曲線暗号におけるスカラー倍計算装置

Also Published As

Publication number Publication date
JP2013186204A (ja) 2013-09-19

Similar Documents

Publication Publication Date Title
JP5027422B2 (ja) 剰余演算処理装置
KR20160132943A (ko) 단열 양자 계산을 통한 디지털 로직 제한 문제 해결
US8417760B2 (en) Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication
CN115906137A (zh) 用于多方安全计算的数据处理方法及装置
JP5975682B2 (ja) 演算装置、演算方法、およびプログラム
JPWO2015145997A1 (ja) 属性変換装置、属性変換方法、学習装置、属性変換プログラム、及び、学習プログラム
CN117155572A (zh) 一种基于gpu并行实现密码技术中大整数乘法的方法
Ruan et al. Left-to-right optimal signed-binary representation of a pair of integers
KR20130128701A (ko) 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법
JP4182226B2 (ja) 剰余系の計算方法及び装置並びにプログラム
JP4398904B2 (ja) 乱数系列生成装置、乱数系列生成方法、演算処理装置、演算処理方法及びプログラム
CN113204780B (zh) 保留格式加密算法的实现方法及装置
JP5225115B2 (ja) Naf変換装置
CN108418687A (zh) 一种适合sm2算法的快速模约减方法和介质
JP2013186202A (ja) 演算装置、演算方法、およびプログラム
CN108075889B (zh) 一种降低加解密运算时间复杂度的数据传输方法及系统
JP2007526513A (ja) 要素の累乗またはスカラー乗算の方法
JP5606516B2 (ja) Naf変換装置
RU2421781C1 (ru) Устройство для формирования остатка по заданному модулю
JP3959076B2 (ja) 有限体の二乗演算方法及び二乗演算装置
RU92212U1 (ru) Устройство для формирования остатка по заданному модулю
JP4197245B2 (ja) 楕円曲線演算装置及び変換装置及び楕円曲線演算装置の楕円曲線演算方法及びプログラム及びコンピュータ読み取り可能な記録媒体
KR100858559B1 (ko) 잉여 이진수의 덧셈 방법, 잉여 이진수의 곱셈 방법, 잉여이진수 덧셈기 및 잉여 이진수 곱셈기
JP2004102071A (ja) 多項式剰余系演算装置、方法及びプログラム
JP5379700B2 (ja) スカラー倍演算装置、スカラー倍演算方法、スカラー倍演算プログラム、記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151218

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160210

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: 20160621

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160719

R151 Written notification of patent or utility model registration

Ref document number: 5975682

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees