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

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

Info

Publication number
JP5730812B2
JP5730812B2 JP2012105277A JP2012105277A JP5730812B2 JP 5730812 B2 JP5730812 B2 JP 5730812B2 JP 2012105277 A JP2012105277 A JP 2012105277A JP 2012105277 A JP2012105277 A JP 2012105277A JP 5730812 B2 JP5730812 B2 JP 5730812B2
Authority
JP
Japan
Prior art keywords
unit
word
column
bits
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.)
Active
Application number
JP2012105277A
Other languages
English (en)
Other versions
JP2013235027A (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.)
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 JP2012105277A priority Critical patent/JP5730812B2/ja
Publication of JP2013235027A publication Critical patent/JP2013235027A/ja
Application granted granted Critical
Publication of JP5730812B2 publication Critical patent/JP5730812B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)

Description

本発明は、線形フィードバックシフトレジスタでの演算に関する。
データを秘匿また改竄検知のためには暗号技術が有効である。暗号技術にはいわゆるRSA暗号を利用した非対称鍵技術およびAESなどをはじめとする共通鍵暗号を利用した対称鍵技術がある。非対称鍵技術は鍵の取扱が容易である利点があるものの、速度の面からは圧倒的に対称鍵技術が有利である。実際、大量のデータの秘匿や改竄検知を目的としてAESを利用した暗号利用モードが多く利用されており、SSLなどで実用化されている。
暗号利用モードは共通鍵ブロック暗号を単純な演算で組み合わせて、もともと共通鍵ブロック暗号では1ブロック(AESでは128ビット)の暗号化しか出来なかったものを、多ブロックの暗号化処理や改竄検知(メッセージ認証)などの機能を追加する方法である。従来、守秘機能を実現するCFBモードや、メッセージ認証を実現するCBC−MACといった方法が知られていたが、高い安全性を示せないという問題があった。
その後、認証暗号モードOCB、MACモードPMAC、ディスク暗号XTSといった方法が提案され、高い安全性が示されるようになった。これらの暗号利用モードではガロア体GF(2)上の演算が使われている。ただしnは1以上の整数である。ガロア体GF(2)の元は、例えば以下のn−1次多項式で表現でき(GF(2)の加法単位元を係数とする項を表現しない場合には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...10となり、これを二進数表記された「10」とみなし、それを十進数表記に変換すると「2」になることに基づく。このような「2倍算」は上記モードなど多くのモードで使用されている。
「2倍算」は線形フィードバックシフトレジスタによって実装できる。以下に、線形フィードバックシフトレジスタで「2倍算」を行うための従来のアルゴリズム(Algorithm1)を例示する(例えば、非特許文献1等参照)。このアルゴリズムでは、2を法とした剰余演算上で四則演算が定義された有限集合でガロア体GF(2)を実装(以下「ビット実装」)し、n−1次多項式g(x)=αn−1×xn−1+...+α(ただしαn−1,...,α∈GF(2))に対するx×g(x) mod f(x)の係数からなるビット列Yを求める。また、n次既約多項式f(x)=e×x+en−1×xn−1+...+eの係数e,...,e∈{0,1}のうち、係数en−1,...,eからなる列をFとする。さらに、n−1次多項式g(x)の係数αn−1,...,αからなる列をXとする。
[Algorithm1]
入力:X
出力:Y
1:if αn−1=1 then
2:Y←(X≪1)(+)F
3:else
4:Y←(X≪1)
5:end if
ただし、X≪αはXに対するαビットの左シフト演算を表し、α(+)βはαとβとの排他的論理和を表し、α←βはβの結果をαに代入することを表す。
近年、Intel(登録商標)のPentium(登録商標) with MMX(登録商標) technologyをはじめとして、PCで用いられるような汎用のCPUでもSIMD(Single instruction, multiple data)演算器が利用可能なものが増えてきている。SIMD演算では、処理対象のビット列に対し、複数個のビットからなるワードごとに独立に同じ演算を施す。例えば、Intelのxmm(登録商標)レジスタは128ビットのビット列を格納し、例えば、32ビットごとや64ビットごとに同じ演算を施す。32ビットごとに処理される場合、4つの32ビットレジスタが並列に並んでいるものとして処理が実行される。64ビットごとに処理される場合、2つの64ビットレジスタが並列に並んでいるものとして処理が実行される。そのため、例えば、異なるレジスタに格納された128ビットのデータ同士の加算を、32ビットや64ビットごとに並行に実行できる。
Ted Krovetz and Phillip Rogaway, "The Software Performance of Authenticated Encryption Modes," Fast Software Encryption 2011 (FSE 2011).
SIMD演算器にとって、同じレジスタ内の2つのデータ間の扱いは非常に苦手である。例えば、SIMD演算による単純なシフト演算は、処理対象のビット列に含まれるワードごとに独立に実行される。そのため、SIMD演算によってビット列全体に対する左シフト演算を行うためには、各ワードでのシフト演算の他にワード間でのビットの移動処理が必要となる。例えば、64ビットごとに処理を行うSIMD演算器によって128ビットのXに対する、Algorithm1での1ビットの左シフト演算を行う場合には、64ビットごとの左シフト演算に加え、63ビット目から64ビット目へのビット(ただし最下位は0ビット目)の移動処理が必要となる。しかしながら、一般的に、SIMD演算にはワード間でビットを直接移動させる命令は存在せず、線形フィードバックシフトレジスタでの「2倍算」をSIMD演算によって効率的に実行する方法は存在しない。
またAlgorithm1では、Xに含まれるビットαn−1が1であるか否かに応じて異なる処理が実行されるが、SIMD演算は特定のワードのみから特定のビットを抽出し、そのビットに応じて異なる処理(分岐処理)を実行することにも適していない。
本発明はこのような点に鑑みてなされたものであり、線形フィードバックシフトレジスタでの「2倍算」をSIMD演算によって効率的に実行するための技術を提供する。
本発明の第1態様では、ガロア体GF(2)のn個の元bn−1,...,b0からなる入力列Xを受け付け、i=d−1,...,0について、w個の元bw×(i+1)−1,...,bw×iからなるワードXに含まれる元bw×(i+1)−1を抽出値cとして得、ワードXごとにw個の元bw×(i+1)−2,...,bw×i,IからなるワードSを得、d個のワードSd−1,...,Sからなるシフト列Sを得、シフト列Sとフィードバック列M[cd−1,...,c]とに対する出力列Y=S+M[cd−1,...,c]∈GF(2)を得る。ただし、wが1以上の整数であり、dが2以上の整数であり、n=w×dを満たし、GF(2)が位数2のガロア体であり、Iがガロア体GF(2)の加法単位元であり、f(x)=e×x+en−1×xn−1+...+eがn次既約多項式であり、xが不定元であり、係数e,...,eがガロア体GF(2)のn+1個の元である。Fがn個の元en−1,...,eからなる列であり、j=d−2,...,0であり、Kがガロア体GF(2)のn個の元kj,n−1,...,kj,0からなる列である。列Kに含まれる元kj,w×(j+1)が抽出値cであり、列Kに含まれる元kj,w×(j+1)以外の元が加法単位元Iである。抽出値cd−1が加法単位元Iである場合のHがn個の加法単位元Iからなる列であり、抽出値cd−1が加法単位元Iでない場合のHが列Fである。フィードバック列は
Figure 0005730812

を満たす。
本発明の第2態様では、n個のビットbn−1,...,b0からなる入力列Xを受け付け、i=d−1,...,0について、w個のビットbw×(i+1)−1,...,bw×iからなるワードXに含まれるbw×(i+1)−1を抽出値cとして得、ワードXごとにw個のビットbw×(i+1)−2,...,bw×i,0からなるワードSを得、d個のワードSd−1,...,Sからなるシフト列Sを得、シフト列Sとフィードバック列M[cd−1,...,c]との排他的論理和である出力列Yを得る。ただし、wが1以上の整数であり、dが2以上の整数であり、n=w×dを満たし、f(x)=e×x+en−1×xn−1+...+eがn次既約多項式であり、xが不定元であり、ビットe,...,eが係数であり、Fがn個のビットen−1,...,eからなる列であり、j=d−2,...,0であり、Kがビットkj,n−1,...,kj,0からなる列である。列Kに含まれるkj,w×(j+1)が抽出値cであり、列Kに含まれるkj,w×(j+1)以外のビットが0である。フィードバック列は
Figure 0005730812

を満たす。
本発明では、線形フィードバックシフトレジスタでの「2倍算」をSIMD演算によって効率的に実行できる。
実施形態のデータ構成を例示するための図。 実施形態の演算装置の機能構成を例示するための図。 実施形態の演算方法を説明するための図。
本発明の実施形態を説明する。
<構成>
図1に例示するように、本形態の演算装置1は、テーブル記憶部11、記憶部12、入力部13、出力部14、制御部15、抽出部16、シフト部17、および演算部18を有する。記憶部12はレジスタ121〜125を有する。演算装置1は、SIMD演算器を備える公知のコンピュータに所定のプログラムが読み込まれることで構成される特別な装置である。抽出部16、シフト部17、および演算部18は、SIMD演算によってワードごとに各処理を実行する。
<処理>
図2および図3を参照しつつ、本形態の処理を説明する。
≪Xの入力(ステップS11)≫
「2倍算」の対象となる入力列X∈GF(2)が入力部13に入力される。入力列Xは前述の式(1)のn−1次多項式のn個の係数bn−1,...,b0∈GF(2)からなる。例えば、ビット実装の場合、入力列Xはn個のビットbn−1,...,b0∈{0,1}からなるビット列である。ただしn=w×dであり、wはワードを構成する元(ビット)の個数を表す1以上の整数であり、dはワードの個数を表す2以上の整数である。入力された入力列Xはレジスタ121に格納される。
≪抽出値の抽出(ステップS12)≫
次に抽出部16が、i=d−1,...,0について、レジスタ121に格納されたw個の元bw×(i+1)−1,...,bw×iからなる処理単位であるワードXに含まれる元bw×(i+1)−1(各ワードX内で最も大きな次数に対応する係数)を抽出し、当該元bw×(i+1)−1を抽出値cとして出力する。例えばビット実装の場合、抽出部16はビットbw×(i+1)−1,...,bw×iからなるワードX(ただしi=d−1,...,0)ごとに、ワードXに含まれるビットbw×(i+1)−1を抽出値cとして得て出力する。これらd個の抽出値cd−1,...,cはレジスタ122に格納される。
≪左シフト演算(ステップS13)≫
次にシフト部17が、i=d−1,...,0について、レジスタ121に格納されたワードXごとに独立に左シフト演算を行い、w個の元bw×(i+1)−2,...,bw×i,IからなるワードSを得て出力する。ただしIはガロア体GF(2)の加法単位元である。例えばビット実装の場合、シフト部17は、ワードX(ただしi=d−1,...,0)ごとに独立にワードXに対する1ビットの左シフト演算を行い、w個のビットbw×(i+1)−2,...,bw×i,0からなるワードSを得て出力する。なお、ワードXごとのαビットの左シフト演算(「≪SIMDα」と表す)とは、ワードXを構成するビットbw×(i+1)−1,...,bw×iを次数の大きな方向(左方向)にαビットシフトし、ワードX内で最も次数の小さなビットからα番目までのビットを0にする処理を意味する。出力されたd個のワードSd−1,...,Sからなるシフト列Sはレジスタ123に格納される。
≪フィードバック列の抽出(ステップS14)≫
テーブル記憶部11には、cd−1,...,cからなる列(順序も考慮した列)に対応する予め得られたフィードバック列M[cd−1,...,c]からなるテーブルが格納されている。列cd−1,...,cは2通り存在し、テーブルは2個のフィードバック列M[cd−1,...,c]の配列からなる。
フィードバック列M[cd−1,...,c]は、以下の関係を満たすガロア体GF(2)の元である。
Figure 0005730812

ただし、Hは抽出値cd−1に対応する。抽出値cd−1が加法単位元Iである場合のHはn個の加法単位元Iからなる列である。一方、抽出値cd−1が加法単位元Iでない場合のHは列Fである。列FはGF(2)上のn次既約多項式f(x)=e×x+en−1×xn−1+...+eの係数e,...,e∈GF(2)からeを除いたen−1,...,eからなる。Kはガロア体GF(2)のn個の元kj,n−1,...,kj,0からなる。列Kに含まれる元kj,w×(j+1)は抽出値cであり、列Kに含まれる元kj,w×(j+1)以外の元は加法単位元Iである。
例えばビット実装の場合、フィードバック列M[cd−1,...,c]は、以下の関係を満たすビット列である。
Figure 0005730812

ただし、列Fはn次既約多項式f(x)=e×x+en−1×xn−1+...+eの係数e,...,e∈{0,1}からeを除いたen−1,...,eからなる。Kはn個のビットkj,n−1,...,kj,0からなる。列Kに含まれるビットkj,w×(j+1)は抽出値cであり、列Kに含まれるビットkj,w×(j+1)以外のビットは0である。各Kは、例えばn個のビット0,,...,0,cからなるビット列(0,,...,0,c)∈{0,1}に対してw×(j+1)ビットの左シフト演算を施すことで得られる。
=(0,,...,0,c)≪w×(j+1)
演算部18は、レジスタ122からcd−1,...,cを読み出し、レジスタ122から読み出した列cd−1,...,cに対応するフィードバック列M[cd−1,...,c]をテーブル記憶部11から読み出し、当該フィードバック列M[cd−1,...,c]をレジスタ124に格納する。
≪出力列生成(ステップS15)≫
演算部18は、レジスタ123からシフト列Sを読み出し、レジスタ124からフィードバック列M[cd−1,...,c]を読み出す。演算部18は、読み出したシフト列Sとフィードバック列M[cd−1,...,c]とに対する出力列Y=S+M[cd−1,...,c]∈GF(2)を得て出力する。演算部18は、i=d−1,...,0について、それぞれ以下のようにY=S+Mの演算を行う。
(yw×(i+1)−1,...,yw×i
=(bw×(i+1)−2+mw×(i+1)−1,...,bw×i+mw×i+1,I+mw×i
ただし、フィードバック列M[cd−1,...,c]はd個のワードM(ただしi=d−1,...,0)からなり、各ワードMがw個の元mw×(i+1)−1,...,mw×i∈GF(2)からなる。また、出力列Yはd個のワードY(ただしi=d−1,...,0)からなり、各ワードYはGF(2)のw個の元yw×(i+1)−1,...,yw×i∈GF(2)からなる。
例えばビット実装の場合、演算部18は、シフト列Sとフィードバック列M[cd−1,...,c]との排他的論理和S(+)M[cd−1,...,c]である出力列Yを得て出力する。演算部18は、i=d−1,...,0について、それぞれ以下のようにY=S(+)Mの演算を行う。
(yw×(i+1)−1,...,yw×i
=(bw×(i+1)−2(+)mw×(i+1)−1,...,bw×i(+)mw×i+1,I(+)mw×i
ただし、フィードバック列M[cd−1,...,c]はd個のワードM(ただしi=d−1,...,0)からなり、各ワードMはw個のビットmw×(i+1)−1,...,mw×i∈{0,1}からなる。出力列Yはd個のワードY(ただしi=d−1,...,0)からなり、各ワードYはGF(2)のw個の元yw×(i+1)−1,...,yw×i∈{0,1}からなる。
出力された出力列Yはレジスタ125に格納される。
≪出力列出力(ステップS16)≫
出力部14は、レジスタ125から出力列Yを読み出し、当該出力列Yを出力する。
<アルゴリズム>
以下に、ビット実装する場合の本形態のアルゴリズムを示す。
[Algorithm2]
入力:X,M[]
出力:Y
1:ワードXごとにcを抽出
2:S←X≪SIMD
3:cd−1,...,cに対応するM[cd−1,...,c]抽出
4:Y←S(+)M[cd−1,...,c
5:Y出力
<具体例>
簡単な例として、n=4、w=2、d=2、f(x)=x+x+1、g(x)=α×x+α×x+α×x+αである場合に、本形態の方法によって、以下ようなx×g(x) mod f(x)の係数y,y,y,y∈{0,1}を求める例を示す。
x×g(x) mod f(x)
=α×x+α×x+α×x+α×x mod (x+x+1)
=(α×x+α×x+α×x)+α×(x+1)
=α×x+α×x+(α+α)×x+α
=α
=α
=α+α
=α
α,α,α,α∈{0,1}からなる入力列Xがレジスタ121に格納される(ステップS11)。抽出値c=α、c=αがレジスタ122に格納される(ステップS12)。ワードごとの左シフト演算によって得られたα,0,α,0がレジスタ123に格納される(ステップS13)。抽出値c=α、c=αに対応するフィードバック列M[c,c]が読み出され(ステップS14)、(y,y,y,y)=(α(+)m,m,α(+)m,m)が得られる(ステップS15)。
この例のフィードバック列M[c=α,c=α]は以下の4種類であり、(y,y,y,y)=(α(+)m,m,α(+)m,m)=(α,α,α+α,α)を満たす。
M[0,0]=(0,0,0,0)
M[0,1]=(0,1,0,0)
M[1,0]=(0,0,1,1)
M[1,1]=(0,1,1,1)
<本形態の特徴>
本形態の各ステップS12〜S15では、複数のワードに対して同一の処理が実行される。また本形態では、Algorithm1のような分岐処理もない。さらに本形態では、ワードごとの左シフト演算に伴って必要となるワード間の値の移動処理と、最大次数よりも大きな項にあふれた係数に対応する係数を最大次数以下の項の係数に加算(例えば排他的論理和)するフィードバック演算と、が同時に行われる。このように本形態では、線形フィードバックシフトレジスタでの「2倍算」をSIMD演算によって効率的に実行できる。すなわち本形態では、SIMD演算を4回呼び出すだけで「2倍算」を計算でき、高速に処理可能となる。これにより、OCBなどの暗号利用モードを効率的に実装可能になった。さらに、フィードバック列M[cd−1,...,c]を事前計算しておくことで、より演算が効率化できる。
<変形例等>
なお、本発明は上述の実施の形態に限定されるものではない。例えば、ステップS13の実行後にステップS14を実行するのではなく、ステップS14の実行後にステップS13が実行されてもよい。あるいは、ステップS13および14が同時に実行されてもよい。その他、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
または、フィードバック列M[cd−1,...,c]を事前計算しておくのではなく、必要に応じてフィードバック列M[cd−1,...,c]が逐一計算されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。例えば、Intel(登録商標)アーキテクチャではSSEで128ビットレジスタxmm(登録商標)が導入され、SSE2でxmmレジスタに対する64ビットワード命令群movmskpd、またpsllqもしくはpaddq命令が導入された。movmskpdは64ビットワード毎の最上位ビットを通常レジスタに書き出す命令であり、psllqは64ビットワード毎にシフトする命令、またpaddqは64ビットワード毎に加算する命令である。Intelアーキテクチャはn=128(w=64,d=2)に対する、上記の実施形態で必要なSIMD演算器を全て備えている。Intelアーキテクチャでも効率的に上記の処理を実施できる。Intel CPUのNehalem(登録商標)以降のアーキテクチャではブロック暗号AESを高速に実現するための命令セットが実装されている。AES命令はxmmレジスタもしくはymmレジスタに対してのみ実行可能であり、通常レジスタにAES対象のデータが保存されている場合はxmmレジスタ等に移動する必要がある。通常レジスタに対して、「2倍算」はそれなりに効率的に実装可能であるが、AES命令と組み合わせる場合は、xmmなどのレジスタへの移動命令を必要とし、効率が悪くなる。本形態では、AESと共に利用されることが多い「2倍算」をxmmレジスタなどを利用するSIMD命令で効率的に実装できる。
上記の処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
上記実施形態では、コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されたが、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
1 演算装置
13 入力部
14 出力部
16 抽出部
17 シフト部
18 演算部

Claims (7)

  1. wが1以上の整数、dが2以上の整数、n=w×d、GF(2)が位数2のガロア体であり、前記ガロア体GF(2)のn個の元bn−1,...,b0からなる入力列Xを受け付ける入力部と、
    i=d−1,...,0について、w個の元bw×(i+1)−1,...,bw×iからなるワードXに含まれる元bw×(i+1)−1を抽出値cとして得る抽出部と、
    が前記ガロア体GF(2)の加法単位元であり、i=d−1,...,0について、前記ワードXごとにw個の元bw×(i+1)−2,...,bw×i,IからなるワードSを得、d個の前記ワードSd−1,...,Sからなるシフト列Sを得るシフト部と、
    n次既約多項式がf(x)=e×x+en−1×xn−1+...+e、xが不定元、e,...,eが前記ガロア体GF(2)のn+1個の元である係数、Fがn個の元en−1,...,eからなる列、j=d−2,...,0、Kが前記ガロア体GF(2)のn個の元kj,n−1,...,kj,0からなる列、前記列Kに含まれる元kj,w×(j+1)が前記抽出値c、前記列Kに含まれる元kj,w×(j+1)以外の元が前記加法単位元I、前記抽出値cd−1が前記加法単位元Iである場合のHがn個の前記加法単位元Iからなる列、前記抽出値cd−1が前記加法単位元Iでない場合のHが前記列F、フィードバック列が
    Figure 0005730812

    を満たす列であり、前記シフト列Sと前記フィードバック列M[cd−1,...,c]とに対する出力列Y=S+M[cd−1,...,c]∈GF(2)を得る演算部と、
    を有する演算装置。
  2. wが1以上の整数、dが2以上の整数、n=w×dであり、n個のビットbn−1,...,b0からなる入力列Xを受け付ける入力部と、
    i=d−1,...,0について、w個のビットbw×(i+1)−1,...,bw×iからなるワードXに含まれるbw×(i+1)−1を抽出値cとして得る抽出部と、
    i=d−1,...,0について、前記ワードXごとにw個のビットbw×(i+1)−2,...,bw×i,0からなるワードSを得、d個の前記ワードSd−1,...,Sからなるシフト列Sを得るシフト部と、
    n次既約多項式がf(x)=e×x+en−1×xn−1+...+e、xが不定元、n個のビットe,...,eが係数、Fがn個のビットen−1,...,eからなる列、j=d−2,...,0、Kがビットkj,n−1,...,kj,0からなる列、前記列Kに含まれるkj,w×(j+1)が前記抽出値c、前記列Kに含まれるkj,w×(j+1)以外のビットが0、フィードバック列が
    Figure 0005730812

    を満たす列であり、前記シフト列Sと前記フィードバック列M[cd−1,...,c]との排他的論理和である出力列Yを得る演算部と、
    を有する演算装置。
  3. 請求項1または2の演算装置であって、
    予め得られた前記フィードバック列M[cd−1,...,c]を格納した記憶部をさらに有し、
    前記演算部は、前記記憶部に格納された前記フィードバック列M[cd−1,...,c]を用い、前記出力列Yを得る、
    ことを特徴とする演算装置。
  4. 請求項1から3の何れかの演算装置であって、
    前記抽出部、前記シフト部および前記演算部の各処理はSIMD演算である、
    ことを特徴とする演算装置。
  5. wが1以上の整数、dが2以上の整数、n=w×d、GF(2)が位数2のガロア体であり、入力部で、前記ガロア体GF(2)のn個の元bn−1,...,b0からなる入力列Xを受け付ける入力ステップと、
    抽出部で、i=d−1,...,0について、w個の元bw×(i+1)−1,...,bw×iからなるワードXに含まれる元bw×(i+1)−1を抽出値cとして得る抽出ステップと、
    が前記ガロア体GF(2)の加法単位元であり、シフト部で、i=d−1,...,0について、前記ワードXごとにw個の元bw×(i+1)−2,...,bw×i,IからなるワードSを得、d個の前記ワードSd−1,...,Sからなるシフト列Sを得るシフトステップと、
    n次既約多項式がf(x)=e×x+en−1×xn−1+...+e、xが不定元、e,...,eが前記ガロア体GF(2)のn+1個の元である係数、Fがn個の元en−1,...,eからなる列、j=d−2,...,0、Kが前記ガロア体GF(2)のn個の元kj,n−1,...,kj,0からなる列、前記列Kに含まれる元kj,w×(j+1)が前記抽出値c、前記列Kに含まれる元kj,w×(j+1)以外の元が前記加法単位元I、前記抽出値cd−1が前記加法単位元Iである場合のHがn個の前記加法単位元Iからなる列、前記抽出値cd−1が前記加法単位元Iでない場合のHが前記列F、フィードバック列が
    Figure 0005730812

    を満たす列であり、演算部で、前記シフト列Sと前記フィードバック列M[cd−1,...,c]とに対する出力列Y=S+M[cd−1,...,c]∈GF(2)を得る演算ステップと、
    を有する演算方法。
  6. wが1以上の整数、dが2以上の整数、n=w×dであり、入力部で、n個のビットbn−1,...,b0からなる入力列Xを受け付ける入力ステップと、
    抽出部で、i=d−1,...,0について、w個のビットbw×(i+1)−1,...,bw×iからなるワードXに含まれるbw×(i+1)−1を抽出値cとして得る抽出ステップと、
    シフト部で、i=d−1,...,0について、前記ワードXごとにw個のビットbw×(i+1)−2,...,bw×i,0からなるワードSを得、d個の前記ワードSd−1,...,Sからなるシフト列Sを得るシフトステップと、
    n次既約多項式がf(x)=e×x+en−1×xn−1+...+e、xが不定元、n個のビットe,...,eが係数、Fがn個のビットen−1,...,eからなる列、j=d−2,...,0、Kがビットkj,n−1,...,kj,0からなる列、前記列Kに含まれるkj,w×(j+1)が前記抽出値c、前記列Kに含まれるkj,w×(j+1)以外のビットが0、フィードバック列が
    Figure 0005730812

    を満たす列であり、演算部で、前記シフト列Sと前記フィードバック列M[cd−1,...,c]との排他的論理和である出力列Yを得る演算ステップと、
    を有する演算方法。
  7. 請求項1から4の何れかの演算装置の各部としてコンピュータを機能させるためのプログラム。
JP2012105277A 2012-05-02 2012-05-02 演算装置、その方法およびプログラム Active JP5730812B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012105277A JP5730812B2 (ja) 2012-05-02 2012-05-02 演算装置、その方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012105277A JP5730812B2 (ja) 2012-05-02 2012-05-02 演算装置、その方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2013235027A JP2013235027A (ja) 2013-11-21
JP5730812B2 true JP5730812B2 (ja) 2015-06-10

Family

ID=49761227

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012105277A Active JP5730812B2 (ja) 2012-05-02 2012-05-02 演算装置、その方法およびプログラム

Country Status (1)

Country Link
JP (1) JP5730812B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5755609B2 (ja) * 2012-07-31 2015-07-29 日本電信電話株式会社 演算装置、その方法およびプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
JP4935367B2 (ja) * 2007-01-19 2012-05-23 富士通株式会社 Raid装置及びガロア体の積演算処理方法
US8150031B2 (en) * 2008-12-19 2012-04-03 Intel Corporation Method and apparatus to perform redundant array of independent disks (RAID) operations

Also Published As

Publication number Publication date
JP2013235027A (ja) 2013-11-21

Similar Documents

Publication Publication Date Title
JP6058245B2 (ja) 乱数拡大装置、乱数拡大方法及び乱数拡大プログラム
US8150031B2 (en) Method and apparatus to perform redundant array of independent disks (RAID) operations
US20090310775A1 (en) Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
Chou McBits revisited
JP6044738B2 (ja) 情報処理装置、プログラム及び記憶媒体
US20180241544A1 (en) Message authenticator generating apparatus, message authenticator generating method, and computer readable recording medium
JP5852518B2 (ja) 認証暗号化装置、認証復号装置、およびプログラム
Lee et al. Efficient implementation of AES-CTR and AES-ECB on GPUs with applications for high-speed FrodoKEM and exhaustive key search
US9515830B2 (en) Universal hash function computing device, method and program
KR20230141045A (ko) 암호 프로세서 장치 및 이를 채용하는 데이터 처리 장치
Bhaskar et al. Efficient Galois field arithmetic on SIMD architectures
JP5730812B2 (ja) 演算装置、その方法およびプログラム
JP5188414B2 (ja) 情報処理装置及び情報処理方法及びプログラム
CN110336658B (zh) 基于aes算法的加密方法、用户设备、存储介质及装置
CN117155572A (zh) 一种基于gpu并行实现密码技术中大整数乘法的方法
CN110071927B (zh) 一种信息加密方法、***及相关组件
KR102541388B1 (ko) Mdf 기반 ntt를 이용한 링-lwe 암호프로세서 장치 및 방법
KR102491902B1 (ko) 완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법
JP5755609B2 (ja) 演算装置、その方法およびプログラム
JP2011517496A (ja) 多項式データ処理演算
JP5840086B2 (ja) 縮約装置、縮約方法、およびプログラム
RU2188513C2 (ru) Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки
CN114626537B (zh) 一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法
KR102451633B1 (ko) 동형암호를 위한 암호화 처리 장치 및 방법
US20230195943A1 (en) Processor architecture and related techniques

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140826

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150318

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150408

R150 Certificate of patent or registration of utility model

Ref document number: 5730812

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150