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

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

Info

Publication number
JP2014029358A
JP2014029358A JP2012169258A JP2012169258A JP2014029358A JP 2014029358 A JP2014029358 A JP 2014029358A JP 2012169258 A JP2012169258 A JP 2012169258A JP 2012169258 A JP2012169258 A JP 2012169258A JP 2014029358 A JP2014029358 A JP 2014029358A
Authority
JP
Japan
Prior art keywords
column
elements
galois field
unit
sequence
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
JP2012169258A
Other languages
English (en)
Other versions
JP5755609B2 (ja
Inventor
Kazumaro Aoki
和麻呂 青木
Miki Yasuda
幹 安田
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2012169258A priority Critical patent/JP5755609B2/ja
Publication of JP2014029358A publication Critical patent/JP2014029358A/ja
Application granted granted Critical
Publication of JP5755609B2 publication Critical patent/JP5755609B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】x×g(x) mod f(x)の係数からなる列を効率よく求める。
【解決手段】列FL,0に含まれるk個の元bn−1,...,bn−kからなる列hを得、i=1,...,kについて、bn−i=Iであるiについて列FL,i=(FL,i−1≪1)+F∈GF(2)を得、bn−i=Iであるiについて列FL,i=(FL,i−1≪1)を得る。Iがガロア体GF(2)の加法単位元、IがI≠Iであるガロア体GF(2)の元、f(x)がn次既約多項式f(x)=e×x+en−1×xn−1+...+e、Fがn個の元en−1,...,eからなる列、en−1=...=en−κ=Iであり、g(x)がn−1次多項式g(x)=bn−1×xn−1+...+b、FL,0がn個の元bn−1,...,bからなる列である。
【選択図】図1

Description

本発明は、線形フィードバックシフトを行う演算技術に関する。
データを秘匿また改竄検知のためには暗号技術が有効である。暗号技術にはいわゆるRSA暗号を利用した非対称鍵技術およびAESなどをはじめとする共通鍵暗号を利用した対称鍵技術がある。非対称鍵技術は鍵の取扱が容易である利点があるものの、速度の面からは圧倒的に対称鍵技術が有利である。実際、大量のデータの秘匿や改竄検知を目的としてAESを利用した暗号利用モードが多く利用されており、SSLなどで実用化されている。
暗号利用モードは共通鍵ブロック暗号を単純な演算で組み合わせて、もともと共通鍵ブロック暗号では1ブロック(AESでは128ビット)の暗号化しか出来なかったものを、多ブロックの暗号化処理や改竄検知(メッセージ認証)などの機能を追加する方法である。従来、守秘機能を実現するCFBモードや、メッセージ認証を実現するCBC−MACといった方法が知られていたが、高い安全性を示せないという問題があった。
その後、認証暗号モードOCB、MACモードPMAC、ディスク暗号XTSといった方法が提案され、高い安全性が示されるようになった。これらの暗号利用モードではガロア体GF(2)上の演算が使われている。ただしnは1以上の整数である。ガロア体GF(2)の元は、例えば以下のn−1次多項式で表現でき(最高次数が加法単位元(零元)であるn−1次多項式も含む)、さらには当該n−1次多項式のn個の係数からなるガロア体GF(2)の元の列(ベクトル)でも表現できる。
GF(2)[x]/(f(x)) (1)
ただし、GF(2)[x]はガロア体GF(2)の元を係数とする多項式の集合、xは不定元、f(x)はガロア体GF(2)上のn次既約多項式、ρ/(ε)はεを法としたρの剰余の集合を表す。
ここで式(1)のように表現されるガロア体GF(2)の元をx倍する演算を「2倍算」と呼ぶ。すなわち、以下を「2倍算」と呼ぶ。
x×γ∈GF(2)[x]/(f(x)) (2)
ただし、x,γ∈GF(2)[x]/(f(x))である。
これを「2倍算」と呼ぶのは、ガロア体GF(2)の元の集合を整数集合{0,1}とみなし、xをn−1次多項式とみなした場合、n−1次多項式xの係数からなる列は00...010となり、これを二進数表記された「10」とみなし、それを十進数表記に変換すると「2」になることに基づく。このような「2倍算」は上記モードなど多くのモードで使用されている。
以下に「2倍算」を行うための従来のアルゴリズム(Algorithm1)を例示する(例えば、非特許文献1等参照)。このアルゴリズムでは、2を法とした剰余演算上で四則演算が定義された有限集合でガロア体GF(2)を実装(以下「ビット実装」)し、n−1次多項式g(x)=bn−1×xn−1+...+b、bn−1,...,b(ただしbn−1,...,b∈GF(2))に対するx×g(x) mod f(x)の係数からなる列Yを求める。ここで、n次既約多項式f(x)=e×x+en−1×xn−1+...+eの係数e,...,e∈GF(2)のうち、係数en−1,...,eからなる列をFとする。また、n−1次多項式g(x)の係数bn−1,...,bからなる列をLとする。
[Algorithm]
入力:L
出力:Y
1:if bn−1=1 then
2:Y←(L≪1)+F∈GF(2
3:else
4:Y←(L≪1)∈GF(2
5:end if
ただし、α≪ρはαに対する左ρシフト演算を表し、ρ←εはεをρに代入することを表す。「2倍算」をi(i=1,...,k)回実行してx×g(x) mod f(x)の係数からなる列を順次求める場合には、列Yを新たな列Lとして[Algorithm]をi回実行すればよい。
Ted Krovetz and Phillip Rogaway, "The Software Performance of Authenticated Encryption Modes," Fast Software Encryption 2011 (FSE 2011).
一般に、列Yを新たな列Lとして[Algorithm]を繰り返す場合、i−1回目に[Algorithm]を実行して列Yを得た後でないと、i回目に[Algorithm]を実行するための条件分岐処理に必要なbn−1を得ることができない。そのため、列Yを新たな列Lとして[Algorithm]をi回実行するためには、[Algorithm]を1回実行するたびに、次の[Algorithm]での条件分岐処理に必要なbn−1を記憶部に格納しなければならず、効率が悪い。
本発明はこのような点に鑑みてなされたものであり、x×g(x) mod f(x)の係数からなる列を効率よく求めることが可能な技術を提供する。
入力列FL,0に含まれるk個の元bn−1,...,bn−kからなる列hを得、i=1,...,kについて、bn−i=Iであるiについて列FL,i=(FL,i−1≪1)+F∈GF(2)を得、bn−i=Iであるiについて列FL,i=(FL,i−1≪1)を得る。ただし、nが2以上の整数、ιが1以上の整数、κが1以上n未満の整数、kが1以上κ以下の整数、GF(2)が位数2のガロア体、GF(2)がガロア体GF(2)をn次拡大したガロア体、Iがガロア体GF(2)の加法単位元、IがI≠Iであるガロア体GF(2)の元、α≪ιがガロア体GF(2)のn個の元αn−1,...,αからなる列αに対するガロア体GF(2)のn個の元αn−1−ι,...,α,I,...,Iからなる列、xが不定元、f(x)がn次既約多項式f(x)=e×x+en−1×xn−1+...+e、e,...,eがガロア体GF(2)のn+1個の元である係数、Fがn個の元en−1,...,eからなる列、en−1=...=en−κ=Iであり、g(x)がn−1次多項式g(x)=bn−1×xn−1+...+b、bn−1,...,bがガロア体GF(2)のn個の元である係数、FL,0がn個の元bn−1,...,bからなる列である。
n−iに応じてFL,i=(FL,i−1≪1)+FであるかFL,i=(FL,i−1≪1)であるかが異なるが、en−1=...=en−κ=Iであるため、すべてのbn−i(i=1,...,k)は初期の列FL,0に含まれる。そのため、記憶部へのbn−iの格納回数を削減でき、x×g(x) mod f(x)の係数からなる列を効率よく求めることができる。
第1実施形態の演算装置を例示するためのブロック図。 第1実施形態の演算方法を例示するためのフロー図。 第2実施形態の演算装置を例示するためのブロック図。 第2実施形態の演算方法を例示するためのフロー図。 第3実施形態の演算装置を例示するためのブロック図。 第3実施形態の演算方法を例示するためのフロー図。 第4実施形態の演算装置を例示するためのブロック図。 第4実施形態の演算方法を例示するためのフロー図。
以下、図面を参照して実施形態を説明する。
〔定義〕
用語および記号を定義する。
GF(2)は位数2のガロア体(有限体)を表し、GF(2)はガロア体GF(2)をn次拡大したガロア体(拡大体)を表す。例えばビット実装の場合には、GF(2)がビット集合{0,1}であり、GF(2)がnビットのビット列の集合{0,1}である。ただしnは2以上の整数であり、nの例はn=8,64,128などである。
はガロア体GF(2)の加法単位元であり、IはI≠Iであるガロア体GF(2)の元である。例えばビット実装の場合には、I=0,I=1である。
α≪ιはn個の元αn−1,...,α∈GF(2)からなる列α∈GF(2)に対する左ιシフト演算を表す。ただし、ιが1以上の整数である。すなわち、α≪ιはガロア体GF(2)のn個の元αn−1,...,αからなる列αに対し、ガロア体GF(2)のn個の元αn−1−ι,...,α,I,...,Iからなる列を得る操作を表す。列αに対する左ιシフト演算結果もα≪ιと表す。なお、左ιシフト演算は、シフト命令によって実行されてもよいし、n個のガロア体GF(2)の元からなる列を整数とみた場合の加算命令(自分自身への繰り上がりがある加算演算命令)の組み合わせによって実行されてもよい。またα≪0は無操作を表し、α≪0のための処理や構成は不要である。
ν+η∈GF(2)は、列ν,η∈GF(2)のガロア体GF(2)上での加算を表す。ビット実装の場合、ν+η∈GF(2)はν(+)η∈{0,1}となる。ただし、ν(+)ηは、n個のビットνn−1,...,ν∈{0,1}からなるビット列νとn個のビットηn−1,...,η∈{0,1}からなるビット列η∈{0,1}とのビットごとの排他的論理和演算
Figure 2014029358

を表す。
f(x)はn次既約多項式f(x)=e×x+en−1×xn−1+...+eを表す。ただし、xは不定元であり、e,...,eはガロア体GF(2)のn+1個の元であり、n次既約多項式f(x)の係数である。Fはn次既約多項式f(x)の最高次数を除いた多項式のn個の係数からなる列である。言い換えると、Fはn個の元en−1,...,eからなる列である。本形態ではen−1=...=en−κ=Iを満たすn次既約多項式f(x)を用いる。ただし、κは1以上n未満の整数である。このようなn次既約多項式f(x)は多用されており、このようなn次既約多項式f(x)の選択は容易である。例えば、n=128の場合、ビット実装されたn次既約多項式としてf(x)=x128+x+x+x+1を選ぶことができ、この場合、F=0...010000111(2)であり、Fの上位120ビットは0である。
g(x)はn−1次多項式g(x)=bn−1×xn−1+...+bである。ただし、bn−1,...,bはガロア体GF(2)のn個の元であり、n−1次多項式g(x)の係数である。
〔第1実施形態〕
<構成>
図1に例示するように、本形態の演算装置1は、入力部11、出力部12、記憶部13、制御部14、生成部15、判定部16、および演算部17を有する。演算装置1は、例えば、公知または専用のコンピュータに所定のプログラムが読み込まれることで構成される特別な装置である。例えば、生成部15および判定部16は汎用演算器を含み、演算部17はSIMD(Single instruction, multiple data)演算器を含み、記憶部13はSIMDレジスタおよび汎用レジスタを含む。演算装置1の各部は、制御部14の制御に基づいて各処理を実行する。入力部11に入力されたデータおよび各部から出力されたデータは記憶部13に格納される。各部には記憶部13から読み出されたデータが入力される。各部は入力されたデータを用いて各処理を実行する。
<方法>
本形態の演算装置1は、n個の元bn−1,...,bからなる列FL,0を入力とし、各i=1,...,kに対するx×g(x) mod f(x)の係数からなる列FL,iを得て出力する。
図2に例示するように、まず、入力部11にn個の元bn−1,...,bからなる列FL,0、および1以上κ以下の整数kが入力される。元bn−1,...,bおよび整数kは記憶部13に格納される。例えば、元bn−1,...,bは記憶部13のSIMDレジスタに格納され、整数kは汎用レジスタに格納される(ステップS11)。
生成部15は、整数kを入力とし、記憶部13から列FL,0に含まれるk個の元bn−1,...,bn−kを抽出し、それらの元bn−1,...,bn−kからなる列hを得て出力する。例えばビット実装の場合、生成部15は列FL,0の上位kビットからなる列hを得て出力する。列hは記憶部13に格納される。例えば、列hは記憶部13の汎用レジスタに格納される(ステップS12)。
制御部14はi=1に設定する(ステップS13)。
判定部16は、iを入力とし、記憶部13に格納された列hから元bn−iを抽出し、元bn−i=Iであるかを判定する(ステップS14)。
n−i=Iである場合、判定部16は演算部17にステップS15の処理を行う旨の指示を与え、演算部17は列FL,i−1を入力とし、列FL,i=(FL,i−1≪1)+F∈GF(2)を得て出力する。得られた列FL,iは記憶部13に格納される。例えば、列FL,iは記憶部13のSIMDレジスタに格納される(ステップS15)。
n−i≠Iである場合、すなわちbn−i=Iである場合、判定部16は演算部17にステップS16の処理を行う旨の指示を与え、演算部17は列FL,i−1を入力とし、列FL,i=(FL,i−1≪1)∈GF(2)を得て出力する。得られた列FL,iは記憶部13に格納される。例えば、列FL,iは記憶部13のSIMDレジスタに格納される(ステップS16)。
次に制御部14はi=kであるかを判定する(ステップS17)。制御部14がi=kでないと判定した場合、制御部14はiを1増加させた値を新たなiとし(ステップS18)、処理をステップS14に戻す。制御部14がi=kであると判定した場合、出力部12は記憶部13に格納された列FL,i(i=1,...,k)を出力する(ステップS19)。
<本形態の特徴>
本形態では、条件分岐処理の指標であるbn−iに応じてFL,i=(FL,i−1≪1)+FまたはFL,i=(FL,i−1≪1)が実行される。ここでen−1=...=en−κ=Iであるため、すべてのbn−i(i=1,...,k)はステップS12で一度に得られる。そのため、bn−i(i=1,...,k)の記憶部13への格納回数はステップS12での1回のみである。これに対し、前述のように従来の[Algorithm]をk回繰り返し実行して各i=1,...,kに対する列FL,iを得る場合には、条件分岐処理の指標となる最高次数の元([Algorithm]でのbn−1)の記憶部への格納回数はk回となる。このように、本形態では条件分岐処理の指標の記憶部への格納回数を従来の1/kにすることができる。
〔第2実施形態〕
前述のように、bn−i=Iであるiでの列FL,iはFL,i=(FL,i−1≪1)+F∈GF(2)を満たし、bn−i=Iであるiでの列FL,iはFL,i=(FL,i−1≪1)∈GF(2)を満たす。そのため、bn−iの値に応じ、列FL,iを得るために(FL,i−1≪1)に加算(ガロア体GF(2)上での加算)される列(加算列)が異なる(Fまたはn個のIからなる列)。第2実施形態では、k個の元bn−1,...,bn−kからなる列hに対応するk個の加算列の組み合わせを事前に得ておき、さらなる演算の効率化を図る。以下では第1実施形態の相違点を説明し、第1実施形態と共通する部分については第1実施形態で用いた参照記号を用い、説明を省略する。
<構成>
図3に例示するように、本形態の演算装置2は、入力部11、出力部12、記憶部13、制御部14、生成部15、演算部27、およびテーブル記憶部28を有する。演算装置2は、例えば、公知または専用のコンピュータに所定のプログラムが読み込まれることで構成される特別な装置である。例えば、演算部27はSIMD演算器を含み、テーブル記憶部28はRAM(Random Access Memory)やハードディスクなどを含む。演算装置2の各部は、制御部14の制御に基づいて各処理を実行する。
図3に例示するように、テーブル記憶部28は、ガロア体GF(2)のk個の元βn−1,...,βn−kからなる任意の列βのそれぞれに対し、k個の列γ(βn−1),...,γ(βn−k)の組み合わせγからなるテーブルを格納する。ただし、βn−i=Iに対する列γ(βn−i)はn個のIからなる列であり、βn−i=Iに対する列γ(βn−i)は列Fである。k個の元βn−1,...,βn−kからなる列βは2種類存在する。テーブル記憶部28は、2種類の列βにそれぞれ対応する組み合わせγを格納し、指定された特定の列βに対応する組み合わせγを返す。
<方法>
本形態の演算装置2は、テーブル記憶部28から抽出した、列hに対応するk個の列γ(bn−1),...,γ(bn−k)からなる組み合わせを用い、i=1,...,kについて、列FL,i=(FL,i−1≪1)+γ(bn−i)∈GF(2)を得る点で第1実施形態と相違する。
図4に例示するように、本形態では、まず第1実施形態で説明したステップS11およびS13が実行される。
次に演算部27は、記憶部13から抽出した列hを入力とし、テーブル記憶部28から列hに対応するk個の列γ(bn−1),...,γ(bn−k)からなる組み合わせを抽出する。列γ(bn−1),...,γ(bn−k)は記憶部13に格納される。例えば、列γ(bn−1),...,γ(bn−k)は記憶部13のSIMDレジスタに格納される。演算部27は、記憶部13から抽出した列FL,i−1および列γ(bn−i)を入力とし、列FL,i=(FL,i−1≪1)+γ(bn−i)∈GF(2)を得て出力する。列FL,iは記憶部13に格納される。例えば、列FL,iは記憶部13のSIMDレジスタに格納される(ステップS25)。
次に制御部14はi=kであるかを判定する(ステップS17)。制御部14がi=kでないと判定した場合、制御部14はiを1増加させた値を新たなiとし(ステップS18)、処理をステップS25に戻す。制御部14がi=kであると判定した場合、出力部12は記憶部13に格納された列FL,i(i=1,...,k)を出力する(ステップS19)。
<本形態の特徴>
本形態では、各列hに対してそれぞれ対応するk個の加算列の組み合わせを事前に得ておき、それを用いて列FL,iを得るため、条件分岐処理が不要である。SIMD演算では、処理対象のビット列に対して複数個のビットからなるワードごとに独立に同じ演算を施すため一般に高速であるが、条件分岐処理には適していない。本形態では条件分岐処理が不要であるため、高速なSIMD演算を用いて「2倍算」の計算が可能である。
〔第3実施形態〕
本形態では前述の加算列を左シフトして得られる列(シフト加算列)を事前に得ておき、シフト加算列を用いて列FL,iを得る。これにより、さらなる演算の効率化を図る。以下では第1実施形態の相違点を説明し、第1実施形態と共通する部分については第1実施形態で用いた参照記号を用い、説明を省略する。
<構成>
図5に例示するように、本形態の演算装置3は、入力部11、出力部12、記憶部13、制御部14、生成部15、演算部36,37、およびテーブル記憶部38を有する。演算装置3は、例えば、公知または専用のコンピュータに所定のプログラムが読み込まれることで構成される特別な装置である。例えば、演算部36,37はSIMD演算器を含み、テーブル記憶部38はRAMやハードディスクなどを含む。演算装置3の各部は、制御部14の制御に基づいて各処理を実行する。
図5に例示するように、テーブル記憶部38は、ガロア体GF(2)のk個の元βn−1,...,βn−kからなる任意の列βのそれぞれに対し、k個の列δ(βn−1),...,δ(βn−k)の組み合わせδからなるテーブルを格納する。ただし、βn−i=Iに対する列δ(βn−i)はn個のIからなる列であり、βn−i=Iに対する列δ(βn−i)は列F≪i−1であり、F≪0=Fである。テーブル記憶部38は、2種類の列βにそれぞれ対応する組み合わせγを格納し、指定された特定の列βに対応する組み合わせδを返す。
<方法>
本形態の演算装置3は、テーブル記憶部38から抽出した、列hに対応するk個の列δ(bn−1),...,δ(bn−k)からなる組み合わせを用い、i=1,...,kについて、FL,0=LおよびL=(Li−1≪1)∈GF(2)に対する列FL,i=L+δ(bn−i)∈GF(2)を得る点で第1実施形態と相違する。
図4に例示するように、本形態では、まず第1実施形態で説明したステップS11およびS13が実行される。
次に演算部36は、記憶部13から抽出した列Li−1を入力とし、列L=(Li−1≪1)∈GF(2)を得て出力する。列Lは記憶部13に格納される。例えば、列Lは記憶部13のSIMDレジスタに格納される。ただしFL,0=Lである(ステップS31)。
次に制御部14はi=kであるかを判定する(ステップS17)。制御部14がi=kでないと判定した場合、制御部14はiを1増加させた値を新たなiとし(ステップS18)、処理をステップS31に戻す。制御部14がi=kであると判定した場合、制御部14はi=1に設定し(ステップS32)、ステップS33の処理を実行させる。
ステップS33では、演算部37が記憶部13から抽出した列hを入力とし、テーブル記憶部38から列hに対応するk個の列δ(bn−1),...,δ(bn−k)からなる組み合わせを抽出する。列δ(bn−1),...,δ(bn−k)は記憶部13に格納される。例えば、列δ(bn−1),...,δ(bn−k)は記憶部13のSIMDレジスタに格納される。演算部37は、記憶部13から抽出した列Lおよび列δ(bn−i)を入力とし、列FL,i=L+δ(bn−i)∈GF(2)を得て出力する。列FL,iは記憶部13に格納される。例えば、列FL,iは記憶部13のSIMDレジスタに格納される(ステップS33)。
次に制御部14はi=kであるかを判定する(ステップS34)。制御部14がi=kでないと判定した場合、制御部14はiを1増加させた値を新たなiとし(ステップS35)、処理をステップS33に戻す。制御部14がi=kであると判定した場合、出力部12は記憶部13に格納された列FL,i(i=1,...,k)を出力する(ステップS36)。
<本形態の特徴>
各列hに対してそれぞれ対応するk個のシフト加算列の組み合わせを事前に得ておき、それを用いて列FL,iを得るため、条件分岐処理が不要である。よって本形態でも、高速なSIMD演算を用いて「2倍算」の計算が可能である。さらに本形態ではシフト加算列を用いることにより、列Lの演算と列FL,iの演算とを独立させることができ、さらなる演算の効率化を図ることができる。例えば、本形態では説明の便宜上、ステップS17でi=kであると判定された後にステップS33〜S35の繰り返し処理を実行することとしたが、ステップS31,S17およびS18の繰り返し処理とステップS33〜S35の繰り返し処理とを並列に行うことも可能である。これにより、より高速な演算が可能となる。
〔第4実施形態〕
本形態でも、n次既約多項式f(x)=e×x+en−1×xn−1+...+eの一部の係数がIであることを利用し、初期の列FL,0から抽出した列を用いて「2倍算」の繰り返し処理を行うことで演算を効率化する。
さらに本形態では、以下のようなSIMD演算の問題点をも解決する。SIMD演算器にとって、同じレジスタ内の2つのデータ間の扱いは非常に苦手である。例えば、SIMD演算による単純なシフト演算は、処理対象のビット列に含まれるワードごとに独立に実行される。そのため、ワード長がn未満である場合にSIMD演算によってビット列全体に対する左シフト演算を行うためには、各ワードでのシフト演算の他にワード間でのビットの移動処理が必要となる。例えば、64ビットごとに処理を行うSIMD演算器によって128ビットの列に対する左シフト演算を行う場合には、64ビットごとの左シフト演算に加え、63ビット目から64ビット目へのビット(ただし最下位は0ビット目)の移動処理が必要となる。しかしながら、一般的に、SIMD演算にはワード間でビットを直接移動させる命令は存在しない。本形態では、このようなSIMD演算の問題点にかかわらず、効率的に「2倍算」の計算を行うことができる。
<構成>
図7に例示するように、本形態の演算装置4は、入力部11、出力部12、記憶部13、制御部14、生成部45、および演算部46,47を有する。演算装置4は、例えば、公知または専用のコンピュータに所定のプログラムが読み込まれることで構成される特別な装置である。例えば、生成部45は汎用演算器を含み、演算部46,47はSIMD演算器を含む。演算装置4の各部は、制御部14の制御に基づいて各処理を実行する。
なお本形態では、wが2以上の整数、dが2以上の整数、n=w×d、κが1以上w未満の整数、kが1以上κ以下の整数である。また、f(x)がn次既約多項式f(x)=e×x+en−1×xn−1+...+e、e,...,eがガロア体GF(2)のn+1個の元である係数であり、Fがn個の元en−1,...,eからなる列であり、t=d−1,...,0についてew×(t+1)−1=...=ew×(t+1)−κ=Iである。また、g(x)がn−1次多項式g(x)=bn−1,0×xn−1+...+b0,0であり、bn−1,0,...,b0,0がガロア体GF(2)のn個の元である係数であり、FL,0がn個の元bn−1,0,...,b0,0からなる列である。
<方法>
本形態の演算装置4は、n個の元bn−1,0,...,b0,0からなる列FL,0を入力とし、各i=1,...,kに対するx×g(x) mod f(x)の係数からなる列FL,iを得て出力する。
図8に例示するように、まず第1実施形態で説明したステップS11が実行される。次に生成部45が、整数kを入力とし、t=d−1,...,0について、記憶部13から列FL,0に含まれるw個の元bw×(t+1)−1,0,...,bw×t,0からなるワードXt,0に含まれるk個の元bw×(t+1)−1,0,...,bw×(t+1)−k,0からなる各列hを得て出力する。各列h(ただしt=d−1,...,0)は記憶部13に格納される。例えば、各列hは記憶部13の汎用レジスタに格納される(ステップS42)。
制御部14はi=1に設定する(ステップS13)。
演算部46は、記憶部13に格納された列FL,i−1を入力とし、t=d−1,...,0について、ガロア体GF(2)のn個の元bn−1,i−1,...,b0,i−1からなる列FL,i−1に含まれるw個の元bw×(t+1)−1,i−1,...,bw×t,i−1からなるワードXt,i−1ごとに、w個の元bw×(t+1)−2,i−1,...,bw×t,i−1,IからなるシフトワードSt,iを得、d個のシフトワードSd−1,i,...,S0,iからなるシフト列Sを得る。すなわち、演算部46は、t=d−1,...,0について、元bw×(t+1)−1,i−1,...,bw×t,i−1からなるワードXt,i−1ごとに左1シフト演算を行い、元bw×(t+1)−2,i−1,...,bw×t,i−1,IからなるシフトワードSt,iを得、シフト列Sを得る。シフト列Sは記憶部13に格納される。例えば、シフト列Sは記憶部13のSIMDレジスタに格納される(ステップS44)。
次に演算部47は、記憶部13から抽出した列hを入力とし、シフト列Sとフィードバック列M[cd−1,i,...,c0,i]とに対する列S+M[cd−1,i,...,c0,i]∈GF(2)を列FL,iとして得て出力する。ただし、抽出値ct,iが列hに含まれる元bw×(t+1)−i,0であり、Kj,iがガロア体GF(2)のn個の元kj,n−1,i,...,kj,0,iからなる列であり、列Kj,iに含まれる元kj,w×(j+1),iが抽出値cj,iであり、列Kj,iに含まれる元kj,w×(j+1),i以外の元が加法単位元Iであり、j=d−2,...,0である。また、抽出値cd−1,iが加法単位元Iである場合のHがn個の加法単位元Iからなる列であり、抽出値cd−1,iが元Iである場合のHが列Fであり、フィードバック列が
Figure 2014029358

を満たす列である。列FL,iは記憶部13に格納される。例えば列FL,iは記憶部13のSIMDレジスタに格納される(ステップS45)。
次に制御部14はi=kであるかを判定する(ステップS17)。制御部14がi=kでないと判定した場合、制御部14はiを1増加させた値を新たなiとし(ステップS18)、処理をステップS44に戻す。制御部14がi=kであると判定した場合、出力部12は記憶部13に格納された列FL,i(i=1,...,k)を出力する(ステップS19)。
<本形態の特徴>
本形態でも第1実施形態と同様な効果を得ることができる。さらに本形態では、SIMD演算でのワード長がn未満である場合であっても効率的に「2倍算」を計算できる。
〔第4実施形態の変形例〕
なお、第4実施形態において、とり得るすべてのcd−1,i,...,c0,iの組について、事前にフィードバック列M[cd−1,i,...,c0,i]を得ておき、それらをテーブル記憶部(図示せず)に格納しておいてもよい。この場合、演算部47は、生成部45で得られた各列h(ただしt=d−1,...,0)に対応するフィードバック列M[cd−1,i,...,c0,i]をテーブル記憶部から抽出し、それを用いて列FL,iを得てもよい。これにより、演算効率が向上する。
〔その他の変形例等〕
本発明は上述の実施の形態に限定されるものではない。上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。
上記実施形態では、コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されたが、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
1〜4 演算装置

Claims (8)

  1. nが2以上の整数、ιが1以上の整数、κが1以上n未満の整数、kが1以上κ以下の整数、GF(2)が位数2のガロア体、GF(2)がガロア体GF(2)をn次拡大したガロア体、Iが前記ガロア体GF(2)の加法単位元、IがI≠Iである前記ガロア体GF(2)の元、α≪ιが前記ガロア体GF(2)のn個の元αn−1,...,αからなる列αに対する前記ガロア体GF(2)のn個の元αn−1−ι,...,α,I,...,Iからなる列、xが不定元、f(x)がn次既約多項式f(x)=e×x+en−1×xn−1+...+e、e,...,eが前記ガロア体GF(2)のn+1個の元である係数、Fがn個の元en−1,...,eからなる列、en−1=...=en−κ=Iであり、g(x)がn−1次多項式g(x)=bn−1×xn−1+...+b、bn−1,...,bが前記ガロア体GF(2)のn個の元である係数、FL,0がn個の元bn−1,...,bからなる列であり、
    前記列FL,0に含まれるk個の元bn−1,...,bn−kからなる列hを得る生成部と、
    i=1,...,kについて、bn−i=Iであるiについて列FL,i=(FL,i−1≪1)+F∈GF(2)を得、bn−i=Iであるiについて列FL,i=(FL,i−1≪1)を得る演算部と、
    を有する演算装置。
  2. 請求項1の演算装置であって、
    前記ガロア体GF(2)のk個の元βn−1,...,βn−kからなる任意の列βのそれぞれに対し、k個の列γ(βn−1),...,γ(βn−k)の組み合わせを格納したテーブル記憶部をさらに有し、
    βn−i=Iに対する前記列γ(βn−i)はn個のIからなる列であり、βn−i=Iに対する前記列γ(βn−i)は列Fであり、
    前記演算部は、前記テーブル記憶部から抽出した、前記列hに対応するk個の列γ(bn−1),...,γ(bn−k)からなる組み合わせを用い、i=1,...,kについて、列FL,i=(FL,i−1≪1)+γ(bn−i)∈GF(2)を得る、演算装置。
  3. 請求項1の演算装置であって、
    前記ガロア体GF(2)のk個の元βn−1,...,βn−kからなる任意の列βのそれぞれに対し、k個の列δ(βn−1),...,δ(βn−k)の組み合わせを格納したテーブル記憶部をさらに有し、
    βn−i=Iに対する前記列δ(βn−i)はn個のIからなる列であり、βn−i=Iに対する前記列δ(βn−i)は列F≪i−1であり、F≪0=Fであり、
    前記演算部は、前記テーブル記憶部から抽出した、前記列hに対応するk個の列δ(bn−1),...,δ(bn−k)からなる組み合わせを用い、i=1,...,kについて、FL,0=LおよびL=(Li−1≪1)∈GF(2)に対する列FL,i=L+δ(bn−i)∈GF(2)を得る、演算装置。
  4. wが2以上の整数、dが2以上の整数、n=w×d、κが1以上w未満の整数、kが1以上κ以下の整数、GF(2)が位数2のガロア体、GF(2)がガロア体GF(2)をn次拡大したガロア体、Iが前記ガロア体GF(2)の加法単位元、IがI≠Iである前記ガロア体GF(2)の元、xが不定元、f(x)がn次既約多項式f(x)=e×x+en−1×xn−1+...+e、e,...,eが前記ガロア体GF(2)のn+1個の元である係数、Fがn個の元en−1,...,eからなる列、t=d−1,...,0についてew×(t+1)−1=...=ew×(t+1)−κ=Iであり、g(x)がn−1次多項式g(x)=bn−1,0×xn−1+...+b0,0、bn−1,0,...,b0,0が前記ガロア体GF(2)のn個の元である係数、FL,0がn個の元bn−1,0,...,b0,0からなる列であり、
    t=d−1,...,0について、w個の元bw×(t+1)−1,0,...,bw×t,0からなるワードXt,0に含まれるk個の元bw×(t+1)−1,0,...,bw×(t+1)−k,0からなる列hを得る生成部と、
    t=d−1,...,0について、前記ガロア体GF(2)のn個の元bn−1,i−1,...,b0,i−1からなる列FL,i−1に含まれるw個の元bw×(t+1)−1,i−1,...,bw×t,i−1からなるワードXt,i−1ごとに、w個の元bw×(t+1)−2,i−1,...,bw×t,i−1,IからなるシフトワードSt,iを得、d個の前記シフトワードSd−1,i,...,S0,iからなるシフト列Sを得る第1演算部と、
    抽出値ct,iが前記列hに含まれる元bw×(t+1)−i,0であり、j=d−2,...,0であり、Kj,iが前記ガロア体GF(2)のn個の元kj,n−1,i,...,kj,0,iからなる列、前記列Kj,iに含まれる元kj,w×(j+1),iが前記抽出値cj,i、前記列Kj,iに含まれる元kj,w×(j+1),i以外の元が前記加法単位元I、前記抽出値cd−1,iが前記加法単位元Iである場合のHがn個の前記加法単位元Iからなる列、前記抽出値cd−1,iが前記元Iである場合のHが前記列F、フィードバック列が
    Figure 2014029358

    を満たす列であり、前記シフト列Sと前記フィードバック列M[cd−1,i,...,c0,i]とに対する列S+M[cd−1,i,...,c0,i]∈GF(2)を前記列FL,iとして得る第2演算部と、を有し
    前記第1演算部の処理と前記第2演算部の処理とがi=1,...,kについて実行される、演算装置。
  5. 請求項4の演算装置であって、
    予め得られた前記フィードバック列M[cd−1,i,...,c0,i]を格納したテーブル記憶部をさらに有し、
    前記第2演算部は、前記テーブル記憶部に格納された前記フィードバック列M[cd−1,i,...,c0,i]を用いて前記列FL,iを得る、演算装置。
  6. nが2以上の整数、ιが1以上の整数、κが1以上n未満の整数、kが1以上κ以下の整数、GF(2)が位数2のガロア体、GF(2)がガロア体GF(2)をn次拡大したガロア体、Iが前記ガロア体GF(2)の加法単位元、IがI≠Iである前記ガロア体GF(2)の元、α≪ιが前記ガロア体GF(2)のn個の元αn−1,...,αからなる列αに対する前記ガロア体GF(2)のn個の元αn−1−ι,...,α,I,...,Iからなる列、xが不定元、f(x)がn次既約多項式f(x)=e×x+en−1×xn−1+...+e、e,...,eが前記ガロア体GF(2)のn+1個の元である係数、Fがn個の元en−1,...,eからなる列、en−1=...=en−κ=Iであり、g(x)がn−1次多項式g(x)=bn−1×xn−1+...+b、bn−1,...,bが前記ガロア体GF(2)のn個の元である係数、FL,0がn個の元bn−1,...,bからなる列であり、
    生成部で、前記列FL,0に含まれるk個の元bn−1,...,bn−kからなる列hを得るステップと、
    演算部で、i=1,...,kについて、bn−i=Iであるiについて列FL,i=(FL,i−1≪1)+F∈GF(2)を得、bn−i=Iであるiについて列FL,i=(FL,i−1≪1)を得るステップと、
    を有する演算方法。
  7. wが2以上の整数、dが2以上の整数、n=w×d、κが1以上w未満の整数、kが1以上κ以下の整数、GF(2)が位数2のガロア体、GF(2)がガロア体GF(2)をn次拡大したガロア体、Iが前記ガロア体GF(2)の加法単位元、IがI≠Iである前記ガロア体GF(2)の元、xが不定元、f(x)がn次既約多項式f(x)=e×x+en−1×xn−1+...+e、e,...,eが前記ガロア体GF(2)のn+1個の元である係数、Fがn個の元en−1,...,eからなる列、t=d−1,...,0についてew×(t+1)−1=...=ew×(t+1)−κ=Iであり、g(x)がn−1次多項式g(x)=bn−1,0×xn−1+...+b0,0、bn−1,0,...,b0,0が前記ガロア体GF(2)のn個の元である係数、FL,0がn個の元bn−1,0,...,b0,0からなる列であり、
    生成部で、t=d−1,...,0について、w個の元bw×(t+1)−1,0,...,bw×t,0からなるワードXt,0に含まれるk個の元bw×(t+1)−1,0,...,bw×(t+1)−k,0からなる列hを得る生成ステップと、
    第1演算部で、t=d−1,...,0について、前記ガロア体GF(2)のn個の元bn−1,i−1,...,b0,i−1からなる列FL,i−1に含まれるw個の元bw×(t+1)−1,i−1,...,bw×t,i−1からなるワードXt,i−1ごとに、w個の元bw×(t+1)−2,i−1,...,bw×t,i−1,IからなるシフトワードSt,iを得、d個の前記シフトワードSd−1,i,...,S0,iからなるシフト列Sを得る第1演算ステップと、
    抽出値ct,iが前記列hに含まれる元bw×(t+1)−i,0であり、j=d−2,...,0であり、Kj,iが前記ガロア体GF(2)のn個の元kj,n−1,i,...,kj,0,iからなる列、前記列Kj,iに含まれる元kj,w×(j+1),iが前記抽出値cj,i、前記列Kj,iに含まれる元kj,w×(j+1),i以外の元が前記加法単位元I、前記抽出値cd−1,iが前記加法単位元Iである場合のHがn個の前記加法単位元Iからなる列、前記抽出値cd−1,iが前記元Iである場合のHが前記列F、フィードバック列が
    Figure 2014029358

    を満たす列であり、第2演算部で、前記シフト列Sと前記フィードバック列M[cd−1,i,...,c0,i]とに対する列S+M[cd−1,i,...,c0,i]∈GF(2)を前記列FL,iとして得る第2演算ステップと、を有し
    前記第1演算ステップと前記第2演算ステップとがi=1,...,kについて実行される、演算方法。
  8. 請求項1から5の何れかの演算装置の各部としてコンピュータを機能させるためのプログラム。
JP2012169258A 2012-07-31 2012-07-31 演算装置、その方法およびプログラム Active JP5755609B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012169258A JP5755609B2 (ja) 2012-07-31 2012-07-31 演算装置、その方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012169258A JP5755609B2 (ja) 2012-07-31 2012-07-31 演算装置、その方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2014029358A true JP2014029358A (ja) 2014-02-13
JP5755609B2 JP5755609B2 (ja) 2015-07-29

Family

ID=50201992

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012169258A Active JP5755609B2 (ja) 2012-07-31 2012-07-31 演算装置、その方法およびプログラム

Country Status (1)

Country Link
JP (1) JP5755609B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000148013A (ja) * 1998-11-16 2000-05-26 Fujitsu Ltd 有限体の定義多項式を用いた剰余演算装置
US20080240423A1 (en) * 2007-03-28 2008-10-02 Shay Gueron Speeding up galois counter mode (gcm) computations
US20080279368A1 (en) * 2007-05-10 2008-11-13 Chih-Hsu Yen Low-Latency Method And Apparatus Of Ghash Operation For Authenticated Encryption Galois Counter Mode
JP2013235027A (ja) * 2012-05-02 2013-11-21 Nippon Telegr & Teleph Corp <Ntt> 演算装置、その方法およびプログラム
JP2014021237A (ja) * 2012-07-17 2014-02-03 Nippon Telegr & Teleph Corp <Ntt> 縮約装置、縮約方法、およびプログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000148013A (ja) * 1998-11-16 2000-05-26 Fujitsu Ltd 有限体の定義多項式を用いた剰余演算装置
US20080240423A1 (en) * 2007-03-28 2008-10-02 Shay Gueron Speeding up galois counter mode (gcm) computations
US20120106731A1 (en) * 2007-03-28 2012-05-03 Shay Gueron Speeding up galois counter mode (gcm) computations
US20080279368A1 (en) * 2007-05-10 2008-11-13 Chih-Hsu Yen Low-Latency Method And Apparatus Of Ghash Operation For Authenticated Encryption Galois Counter Mode
JP2013235027A (ja) * 2012-05-02 2013-11-21 Nippon Telegr & Teleph Corp <Ntt> 演算装置、その方法およびプログラム
JP2014021237A (ja) * 2012-07-17 2014-02-03 Nippon Telegr & Teleph Corp <Ntt> 縮約装置、縮約方法、およびプログラム

Also Published As

Publication number Publication date
JP5755609B2 (ja) 2015-07-29

Similar Documents

Publication Publication Date Title
Chou McBits revisited
GB2549981A (en) A public key cryptosystem based on the partitioning of elements of vectors
US10326589B2 (en) Message authenticator generating apparatus, message authenticator generating method, and computer readable recording medium
JP6575532B2 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
JP5852518B2 (ja) 認証暗号化装置、認証復号装置、およびプログラム
JP6044738B2 (ja) 情報処理装置、プログラム及び記憶媒体
JP6552184B2 (ja) 情報処理装置およびその方法
US9515830B2 (en) Universal hash function computing device, method and program
US9391770B2 (en) Method of cryption
JP6337133B2 (ja) 非減少列判定装置、非減少列判定方法及びプログラム
JP5755609B2 (ja) 演算装置、その方法およびプログラム
JP5730812B2 (ja) 演算装置、その方法およびプログラム
CN110071927B (zh) 一种信息加密方法、系统及相关组件
JP7016457B2 (ja) 最終べき計算装置、ペアリング演算装置、暗号処理装置、最終べき計算方法及び最終べき計算プログラム
JP2018092010A (ja) 暗号化装置と暗号化方法、暗号化プログラム及び鍵生成装置と鍵生成方法、鍵生成プログラム
JP5840086B2 (ja) 縮約装置、縮約方法、およびプログラム
JP5354914B2 (ja) 暗号処理装置及び復号処理装置及びプログラム
KR102451633B1 (ko) 동형암호를 위한 암호화 처리 장치 및 방법
JP6929491B1 (ja) 最終べき計算装置、ペアリング演算装置、暗号処理装置、最終べき計算方法及び最終べき計算プログラム
JP7261502B2 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
JP5488608B2 (ja) ブロック暗号装置、ブロック暗号化方法およびプログラム
WO2022270080A1 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
JP5818768B2 (ja) マスク生成装置、情報処理装置、及びその方法、プログラム
KR20240073510A (ko) 영지식 증명에서 효율적인 일방향 함수를 이용한 연산 방법, 그리고 이를 구현하기 위한 장치
JP3881273B2 (ja) 暗号鍵生成装置、暗号鍵生成プログラムおよびそのプログラムを記録した記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140924

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150513

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150527

R150 Certificate of patent or registration of utility model

Ref document number: 5755609

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150