JP5449349B2 - 標数2の乗算を実現するための方法、コンピュータ装置およびコンピュータプログラム - Google Patents

標数2の乗算を実現するための方法、コンピュータ装置およびコンピュータプログラム Download PDF

Info

Publication number
JP5449349B2
JP5449349B2 JP2011519095A JP2011519095A JP5449349B2 JP 5449349 B2 JP5449349 B2 JP 5449349B2 JP 2011519095 A JP2011519095 A JP 2011519095A JP 2011519095 A JP2011519095 A JP 2011519095A JP 5449349 B2 JP5449349 B2 JP 5449349B2
Authority
JP
Japan
Prior art keywords
bit
bit string
bits
strings
bit strings
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
JP2011519095A
Other languages
English (en)
Other versions
JP2011528810A (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.)
Siemens AG
Original Assignee
Siemens AG
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 Siemens AG filed Critical Siemens AG
Publication of JP2011528810A publication Critical patent/JP2011528810A/ja
Application granted granted Critical
Publication of JP5449349B2 publication Critical patent/JP5449349B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は少なくとも2つの入力ビットストリングの標数2の乗算を実現するための方法とプロセッサ装置とに関する。
標数2の乗算は多くの暗号化方法において、特に公開鍵暗号化法において、例えば楕円曲線に基づいた暗号化方法をハードウェア寄りに実現する場合などに使用される。このような標数2の算術で使用される数はプロセッサ装置、プロセッサまたはコンピュータ上でビットストリングとして効率的に表現される。このようなビットストリングはレジスタにバッファ記憶することができる。このような表現での2つの数の加算は表現ビットストリングのビットごとのXOR結合に相応する。標数2の算術における2つのビットストリングまたはオペランドの乗算は数学的にはGF(2)[x]に属する2つの多項式の積に相応する。この場合、数を表現するのに使われるビットストリングは各多項式の係数の0/1列に相当する。
標数2の乗算の数学的基礎は、2つの数の積を部分積の所定の集りに帰着させ、これらの部分積を加算して結果を得るということにある。例として、数1011と1101の乗算について、上記した部分積と和を以下に挙げる。
Figure 0005449349
結果は部分積の加算を列ごとにXOR結合することで得られる。このような乗算を実行するための基本演算として、上記テーブルの行における部分積の計算のためにシフト演算とビットごとのAND結合が、部分積の各列和を計算するためにビットごとのXOR結合が使用される。
この乗法の最適化された形態として、いわゆる窓法が知られている。窓法では、特にオペランドの倍数の小さなテーブルが予め計算されるため、部分積の加算に必要な数が少なくなる。この予め計算されたテーブルを用いれば、続く各ステップにおいて、複数のビットを部分積の計算に一度に用いることができる。したがって、部分積の計算は予め計算されたテーブルを参照することに帰着される。パラメータが最適に選択されている場合には、複数のビットを一度に処理することによる部分積の加算の削減は、付加的にテーブルを予め計算する場合よりも必要コストが高くなってしまうことがありうる。
さらに、窓法はシフト命令と効率的に組み合わせることができる。実現のために使用されるプロセッサが所定のステップ幅で効率的なシフト命令を供給するならば、部分積を複数の部分和で加算すると有利である。例えば8ビットのバス幅のプロセッサで、4ビット幅の窓による窓法を適用した場合、2つの加算の間の累算器における中間結果は4ビットだけ左にシフトする。しかし、部分和の加算に異なる2つの累算器を使用すると、累算器の内容はそれぞれ8ビットシフトすることになる。従来のプロセッサでは、1バイト、つまり8ビットのシフトはメモリ内のデータをコピーすることで非常に効率的に実現できる。累算器の内容を4ビットだけ左にシフトしなければならないのは、次のステップにおいて、それまでに計算した2つの累算器の中間結果を加算する段になってからである。このやり方では、積を計算する際に多数のコスト集約的なシフト命令を削減することが可能である。
オペランドが長い場合には、例えばカラツバ乗算またはフーリエ乗算のような漸近的に速いアルゴリズムを使用して乗算の計算を行うと有利である。上記の乗算法は乗算される数の一部分にも適用できる。
たしかに従来のプロセッサまたはプロセッサ装置のほぼすべてはプロセッサ装置のバス幅で2つのビットストリングの整数乗算を高速に行うハードウェアを有しているが、これら従来のプロセッサのいずれも標数2の乗算をハードウェアでサポートしていない。
したがって、このような乗算はつねにソフトウェアで実現しなければならず、一般にハードウェア技術による整数乗算に比べて明らかに遅い。
それゆえ、本発明の課題は整数乗算に適したプロセッサ装置で少なくとも2つのビットストリングの標数2の乗算を可能にすることである。
本発明によれば、上に掲げた課題は請求項1に記載の特徴を備えた方法および/または請求項14に記載の特徴を備えたプロセッサ装置によって解決される。
したがって、それぞれNビットの少なくとも2つの入力ビットストリングの標数2の乗算をハードウェア技術的な整数乗算の実行に適したプロセッサ装置によって実現する方法が提案される。この方法は以下のステップを有する。
a)各入力ビットストリング内の少なくとも1つの所定の位置において各入力ビットストリングの第1の変換によってK個の"0"ビットからなる少なくとも1つのシーケンス(K∈{1,…,N})を生成することにより、各入力ビットストリングに対して少なくとも1つの第1中間ビットストリングを生成するステップと、
b)プロセッサ装置のハードウェア技術的な整数乗算により少なくとも2つの第1中間ビットストリングを結合し、少なくとも1つの第2中間ビットストリングを生成するステップと、
c)少なくとも1つの第2中間ビットストリングを第2の変換により変換し、結果ビットストリングを形成するステップ。
さらに、それぞれNビットの少なくとも2つの入力ビットストリングの標数2の乗算を実現するプロセッサ装置も提案される。このプロセッサ装置は以下の構成要素を有する。
各入力ビットストリング内の少なくとも1つの所定の位置において各入力ビットストリングの第1の変換によりK個の"0"ビットからなる少なくとも1つのシーケンス(K∈{1,…,N})を生成することにより、各入力ビットストリングに対して少なくとも1つの第1中間ビットストリングを生成する生成装置と、
ハードウェア技術的な整数乗算により少なくとも2つの第1中間ビットストリングを結合し、少なくとも1つの第2中間ビットストリングを生成する論理結合装置と、
少なくとも1つの第2中間ビットストリングを第2の変換により変換し、結果ビットストリングを形成する変換装置。
本発明の利点は、2つのビットストリング、入力ビットストリングまたは数の標数2の乗算が、ハードウェア技術による整数乗算に適した従来のプロセッサまたは従来のプロセッサ装置で可能になることである。
標数2の乗算と従来の整数乗算はとりわけ、計算された部分積がどのように加算されるかという点で異なっている。標数2の乗算が桁上げなしの和に相当する列ごとのXOR結合を用いるのに対して、従来の整数乗算では桁上げありの列和が計算される。しかし従来、この桁上げは隣り合う列の列和に影響し、変化させてしまうことがあった。
それゆえ本発明によれば、乗算される数にK個の"0"ビットから成るシーケンスにより人為的に空白が挿入され、これらの空白に従来の整数乗算で必然的に生じる桁上げが集められる。このようにすることで、ずっと左にある列和は発生した桁上げによってもはや変化させられたり、影響されたりすることがない。
上ですでに述べたように、標数2の乗算の他のビット和が改竄されることなく、従来の整数乗算においてステップb)で必然的に生じる桁上げを集めることができる。
従来の多くのプロセッサは整数乗算を高速かつ効率的に行うハードウェアを有している。従来はこの他にさらに個別のアセンブラ命令が必要であった。
本発明による標数2の乗算方法はこのような乗算命令を実行している間に実行することができる。つまり、個別のアセンブラ命令が必要なシフト演算を含めて部分積の計算および加算を遂行することができる。一方、ソフトウェアで実現された標数2の乗算アルゴリズムは一般にプロセッサ装置のハードウェアによって提供されるような高速かつ効率的な実現を達成することができない。
したがって本発明は、使用されるプロセッサ装置がビットごとのシフトしか行わない、または提供されるシフト命令が長い実行時間を要する場合に特に有利である。
本発明の有利な実施形態は従属請求項と図面を参照した以下の説明に示されている。
1つの有利な実施形態によれば、シーケンスのK個の"0"ビットは入力ビットストリングのN個のビットに応じて決定される。
別の有利な実施形態によれば、上記方法のステップa)は、各入力ビットストリングを少なくとも2つの異なるマスクとそれぞれビットごとにAND結合することにより各入力ビットストリングをマスクし、少なくとも2つの第1中間ビットストリングを生成することから成る。
別の有利な実施形態によれば、K個の"0"ビットから成る各シーケンスは、N個のビットから成る所定の各マスクにおいてそれぞれ1つのマスク窓を形成する。ここで、Kは次の条件を満たす。
Figure 0005449349
別の有利な実施形態によれば、所定の異なるマスクの個数MはK+1に等しい(M=K+1)。
別の有利な実施形態によれば、m番目ごとのマスクはそれぞれ1つの"1"ビットとそれに続くK個の"0"ビットを含むシーケンスとから成る周期的なパターンの少なくとも一部から形成される。ここで、m∈{1,…,M}。
別の有利な実施形態によれば、(m+1)番目ごとのマスクはm番目ごとのマスクを1ビットだけシフトさせることにより形成される。
別の有利な実施形態によれば、上記方法のステップc)において、
少なくとも4つの第2中間ビットストリングのそれぞれをそれぞれ2倍の長さの少なくとも2つの異なるマスクとビットごとにAND結合することにより、少なくとも4つの第3中間ビットストリングを生成し、
少なくとも4つの第3中間ビットストリングをXOR結合し、結果ビットストリングを生成する。
本発明の1つの有利な実施形態によれば、上記方法のステップa)において、各入力ビットストリングのN個のすべてのビットの間にK個の"0"ビットから成るシーケンスを挿入することにより各入力ビットストリングを広げ、各入力ビットストリングに対してそれぞれ中間ビットストリングを生成する。
別の有利な実施形態によれば、K個の"0"ビットを含む各シーケンスはそれぞれの第1中間ビットストリングにおいて窓を形成する。ここで、Kは以下の条件を満たす。
Figure 0005449349
別の有利な実施形態によれば、上記方法のステップb)において、2つの第1中間ビットストリングをプロセッサ装置の整数乗算により結合し、ただ1つの第2中間ビットストリングを生成する。
別の有利な実施形態によれば、ステップc)において、
生成された第2中間ビットストリングの位置0における最下位ビットから始まり、所定の位置i・(K+1)までのビットを抽出する。
さらに、プログラム制御された装置において本発明による上記の方法を実行させるコンピュータプログラム製品が提案される。
コンピュータプログラム媒体のようなコンピュータプログラム製品は、例えばメモリーカード、USBスティック、フロッピー、CDスティック、CD−ROM、DVDのような記憶媒体またはネットワーク内のサーバからダウンロードされるデータとして提供または供給されるものであってよい。これは例えばワイヤレス通信ネットワーク内でコンピュータプログラム製品またはコンピュータプログラム媒体を含むデータの伝送によって行うことができる。
以下では、概略図に示されている実施例に基づいて本発明をより詳しく説明する。
標数2の乗算を実現する本発明による方法の第1の実施例の概略的なフローチャートを示す。 標数2の乗算を実現する本発明による方法の第2の実施例の概略的なフローチャートを示す。 図2の本発明による方法の第2の実施例の適用例を概略的に示す。 標数2の乗算を実現する本発明による方法の第3の実施例の概略的なフローチャートを示す。 図4の本発明による方法の第3の実施例の適用例を概略的に示す。 標数2の乗算を実現する本発明によるプロセッサ装置の実施例の概略的なブロック回路図を示す。 2つの第1中間ビットストリングの整数乗算の例を概略的に示す。
すべての図において、同じまたは同機能の手段および装置には、特にことわらない限り、同一の参照番号が付されている。
図1には、第1の実施例の概略的なフローチャートが示されている。第1の実施例は、それぞれN個のビットを有する少なくとも2つの入力ビットストリングEB1,EB2の標数2の乗算を整数乗算の実行に適したプロセッサ装置10により実現する。
以下では、図3および図5の例を参照して、図1のブロック回路図に基づいて本発明による方法を説明する。
図3および5において、参照番号EBiはi番目の入力ビットストリングEB1,EB2のそれぞれを表している(i∈{1,2})。また、M1iは第1のマスクM11,M12のそれぞれを表す。また、M2iは第1のマスクM21,M22のそれぞれを表す。さらに、Z1jは第1中間ビットストリングZ11,Z12,Z13およびZ14のそれぞれを表す(j∈{1,2,3,4})。さらに、Z2jは第2中間ビットストリングZ21,Z22,Z23およびZ24のそれぞれを表す(j∈{1,2,3,4})。Eは結果ビットストリングを表し、参照番号r1−r6はそれぞれ図3および5の行を表しており、これらの図を参照し易くしている。
図1の本発明による方法は方法ステップR1−R3を有している。
方法ステップR1:
K個の"0"ビットを含む少なくとも1つのシーケンスFが、各入力ビットストリングEB1,EB2内の少なくとも1つの所定の位置において各入力ビットストリングの第1の変換によって生成され、少なくとも1つの第1中間ビットストリングZ11−Z14が生成される(K∈{1,…,N})。ここで、シーケンスFの"0"ビットの個数Kは有利には入力ビットストリングEB1,EB2のビットの個数Nに応じて決まる。
方法ステップR2:
少なくとも2つの第1中間ビットストリングZ11−Z14がプロセッサ装置10のハードウェア技術による整数乗算により論理結合され、少なくとも1つの第2中間ビットストリングZ21−Z24が生成される。
方法ステップR3:
所定の第2の変換により少なくとも1つの第2中間ビットストリングZ21−Z24が変換され、結果ビットストリングEが形成される。
図2には、それぞれN個のビットを含む少なくとも2つの入力ビットストリングEB1,EB2の標数2の乗算を整数乗算の実行に適したプロセッサ装置により実現する本発明による方法の第2の実施例の概略的なフローチャートが示されている。
図2による第2の実施例は以下の方法ステップS1−S4を有している。
方法ステップS1:
少なくとも2つの入力ビットストリングEB1,EB2の各入力ビットストリングEB1,EB2が、2つの異なるマスクM11,M12の各マスクM11,M12とのビットごとのAND結合によりマスクされ、少なくとも2つの第1中間ビットストリングZ11−Z14が生成される。したがって、方法ステップR1に関連して図1に示されている第1の変換が図2のマスキングとして形成されている。
K個の"0"ビットを含む各シーケンスFはN個のビットを含む所定の各マスクM11,M12においてそれぞれ1つのマスクを形成する。ここで、Kは次の条件を満たす。
Figure 0005449349
所定の異なるマスクM11,M12の個数Mは有利にはK+1に等しい(M=K+1)。
m番目ごとのマスクM11,M12はそれぞれ1つの"1"ビットとそれに続くK個の"0"ビットから成るシーケンスFとから成る周期的パターンの少なくとも一部から形成される(m∈{1,…,N})。これに関して、図3には図2による本発明の方法の第2の実施例の適用例が概略的に示されている。行r1には、EB1="ABCD"かつEB2="EFGH"の2つの入力ビットストリングEB1,EB2が示されている。また行r2には、M11="0101"かつM12="1010"の2つのマスクM11およびM12が示されている。図3の行r2の例によれば、K=1かつM=2である。この例はまた、m番目ごとのマスクM11,M12を1ビットだけシフトすることで(m+1)番目ごとのマスクM12,M11が形成されることを示している。
また行r3には、入力ビットストリングEB1,EB2をマスクM11,M12でマスキングした結果を表す第1の中間ビットストリングZ11−Z14が示されている。
また行r4には、行r3の抽象的な表現が示されている。行r3の16進数A−Hはそれぞれ抽象項"*"で置き換えられている。抽象項"*"は単にそれぞれの値がゼロではないことを示しているだけである。
方法ステップS2:
行r5の4つの第2の中間ビットストリングZ21−Z24は、行r4の第1の中間ビットストリングZ11−Z14をプロセッサ装置10の整数乗算によって論理結合することで得られる。このために、プロセッサ装置10の整数乗算により積、Z11*Z13,Z11*Z14,Z12*Z13およびZ12*Z14が計算される。これらの計算ステップの結果が第2の中間ビットストリングZ21−Z24を形成する。
方法ステップS3:
さらに、4つの第2の中間ビットストリングZ21−Z24をビットごとのAND結合結合により行r6の2つの異なるマスクM21,M22でマスキングすることにより、少なくとも4つの第3の中間ビットストリング(図示せず)が生成される。
方法ステップS4:
さらに、少なくとも4つの第4の中間ビットストリングをビットごとにXOR結合することにより結果ビットストリングEが生成される。
図4には、それぞれN個のビットを含む少なくとも2つの入力ビットストリングEB1,EB2の標数2の乗算を整数乗算の実行に適したプロセッサ装置により実現する本発明による方法の第3の実施例の概略的なフローチャートが示されている。
図4の実施例は方法ステップT1−T3を有している。
方法ステップT1:
各入力ビットストリングEB1,EB2の隣り合うすべてのビットの間にK個の"0"ビットから成るシーケンスFを挿入することにより各入力ビットストリングEB1,EB2を広げ、各入力ビットストリングEB1,EB2に対してそれぞれ第1の中間ビットストリングZ11,Z12が生成される。これに関して、図5の行r1には2つの異なる入力ビットストリングEB1,EB2が示されており、行r2には第1の中間ビットストリングZ11,Z12を生成するためにシーケンスFで広げられた各入力ビットストリングEB1,EB2が示されている。こうして左の第1の中間ビットストリングZ11は第1の入力ビットストリングEB1の拡散から、右の第1の中間ビットストリングZ12は第2の入力ビットストリングEB2の拡散から生じる。
図5の行r2に示されているように、K個の"0"ビットを含む各シーケンスFは第1の中間ビットストリングZ11,Z12のそれぞれにおいて窓を形成する。
さらに、各シーケンスFの"0"ビットの個数Kは以下の条件を満たす。
Figure 0005449349
方法ステップT2:
図5の行r2による2つの第1の中間ビットストリングZ11,Z12がプロセッサ装置10の整数乗算により論理結合され、行r3によるただ1つの第2の中間ビットストリングZ2が生成される。
方法ステップT3:
第2の中間ビットストリングZ2の位置0における最下位ビットから始まり所定の位置i・(K+1)で、生成された第2の中間ビットストリングZ2のビット(行r4を参照)が抽出される(i∈{0,…,2N−2})。この抽出により、図5の行r5の結果ビットストリングEが得られる。
図6には、それぞれN個のビットを含む少なくとも2つの入力ビットストリングEB1,EB2の標数2の乗算を整数乗算の実行に適したプロセッサ装置により実現する本発明によるプロセッサ装置10の実施例の概略的なブロック回路図が示されている。
プロセッサ装置10はこのために生成装置11、論理結合装置12および変換装置13を有している。
生成装置11は、少なくとも1つの第1の中間ビットストリングZ11−Z12を生成するために、各入力ビットストリングEB1,EB2の少なくとも1つの所定の位置において第1の変換により各入力ビットストリングEB1,EB2を変換してK個の"0"ビットから成るシーケンスFを生成する(K∈{1,…,N})。
論理結合装置12は少なくとも2つの第1の中間ビットストリングZ11−Z12を整数乗算により結合し、少なくとも1つの第2の中間ビットストリングZ21を生成する。
変換装置13は、少なくとも1つの第2の中間ビットストリングZ21を少なくとも1つの第2の変換により変換し、結果ビットストリングEを形成する。
さらに図7には2つの第1の中間ビットストリングの整数乗算の概略的な例が示されている。これら2つの第1の中間ビットストリングは例えばビットパターン"ABCD"および"EFGH"によって与えられる。第1のステップでは、これら第1の中間ビットストリングがマスク"0101"および"1010"でマスクされる、つまりビットごとにAND結合される。これにより4つのビットパターンまたは数"0B0D"、"A0C0"、"0F0H"および"E0G0"が得られる。次に"ABCD"から生じたすべてのビットパターンが従来の整数乗算を使用して"EFGH"から生じたすべてのビットパターンと掛け合わされる。この乗算はパターン"0B0D"および"0F0H"を例として図7に示されている。
マスキングにより、図7の部分積のテーブルにおける0以外のエントリは必然的にエントリ間に1ビット空白を有する規則的な行および列格子を形成する。したがって、整数乗算を用いた場合に列和を加算する際に生じる桁上げはちょうどこれらマスクされた数の人為的に形成された空白に挿入される。図7の例では、生じうる桁上げ"BH AND DF"は"*"で表されている。この結果をマスク"1010101"とビットごとにAND結合すると、(図3に示されているように)桁上げがなくなり、所望の標数2の乗算の結果の一部が得られる。マスクされた異なる数の間の残りの3つの積も相応のビットマスクを用いて計算され、残りの値が得られる。このようにして計算された4つの値のビットごとのXOR結合から標数2の乗算の結果が得られる。
全体として、本発明は数のマスキングと部分積のマスキングのためのビットごとのAND結合、プロセッサ装置の従来の整数乗算、および複数の部分結果を加算するためのビットごとのXOR結合しか使用しない。とりわけ、本発明によればシフト命令は不要である。シフト命令は整数乗算によって暗に実行される。
本発明を実施するためのマスクは乗算される数または入力ビットストリングの長さ(ビットの個数N)に依存して正確に選択される。以下のテーブルには、乗算される入力ビットストリングEB1,EB2または数のさまざまなビット長Nについて、マスク内の窓のビット幅および必要な整数乗算の回数が示されている。
Figure 0005449349
以下では、SSE2ユニットを有する32ビットIntel Pentium 4またはAMD Athlonプロセッサの場合について、標数2の乗算を実現する本発明の実施例を説明する。これらのプロセッサは記号xmm0−xmm7で表される128ビット長の8つのレジスタを有している。2つのレジスタ間のまたは1つのレジスタとメモリ内容との間のビットごとのANDおよびXOR結合に関するアセンブラ命令pandおよびpxorが存在している。さらに、これらのプロセッサは32ビットオペランドと64ビット結果とでの2回の整数乗算を並行して実行する命令pmuludqを有している。これらの命令を用いて、128ビットの結果を出す64ビットの数の標数2の乗算を行う以下のアセンブラルーチンが形成される。以下のアセンブラルーチンはnasmアセンブラでコンパイルでき、gccコンパイラで実行可能である。4つの異なるマスクが使用され、マスク窓のビット長は3である。
Figure 0005449349
Figure 0005449349
Figure 0005449349
Figure 0005449349
Figure 0005449349
Figure 0005449349
以上に本発明を有利な実施例に基づいて説明したが、本発明はこれらの実施例に限定されず、さまざまに変更可能である。

Claims (15)

  1. それぞれNビットの少なくとも2つの入力ビットストリングの標数2の乗算を実行するための、プロセッサ装置およびメモリを備えたコンピュータ装置において、
    a)前記プロセッサ装置は、前記各入力ビットストリング(EB1,EB2)を少なくとも2つの所定の異なるマスク(M11,M12)とそれぞれビットごとにAND結合することにより前記各入力ビットストリング(EB1,EB2)をマスクし、前記各入力ビットストリング(EB1,EB2)に対して少なくとも2つの第1中間ビットストリング(Z11−Z14)を生成ただし、前記各第1中間ビットストリング(Z11−Z14)は隣り合う1ビットを有してない
    b)前記プロセッサ装置は、整数乗算により少なくとも2つの第1中間ビットストリングを結合し、少なくとも1つの第2中間ビットストリングを生成
    c)前記プロセッサ装置は、少なくとも1つの第2中間ビットストリングを第2の変換により変換し、結果ビットストリング(E)生成する、
    ことを特徴とする、コンピュータ装置
  2. 前記プロセッサ装置は、
    個数K個の"0"ビットのシーケンス(F)の個数Kを、
    前記入力ビットストリング(EB1,EB2)のビットの個数Nに依存して決定する、
    請求項1記載のコンピュータ装置。
  3. 前記プロセッサ装置は、
    前記個数K個の"0"ビットを有する前記シーケンス(F)により、N個のビットを含む前記した所定の各マスク(M11,M12)においてそれぞれ1つのマスク窓を形成する、なお、前記Kは次の条件を満たす
    Figure 0005449349
    請求項1記載のコンピュータ装置
  4. 前記所定の異なるマスク(M11,M12)の個数MはK+1に等しい(M=K+1)、請求項1または3記載のコンピュータ装置
  5. m番目ごとのマスク(M11,M12)はそれぞれ1つの"1"ビットとそれに続くK個の"0"ビットを含むシーケンス(F)とから成る周期的なパターンの少なくとも一部から形成され、前記mにつきm∈{1,…,M}である、請求項4記載のコンピュータ装置
  6. 前記プロセッサ装置は、
    (m+1)番目ごとのマスク(M12,M11)はm番目ごとのマスク(M11,M12)を1ビットだけシフトさせて生成する、請求項5記載のコンピュータ装置
  7. 前記結果ビットストリング(E)を生成することが、
    前記プロセッサ装置が更に、
    − 少なくとも4つの第2中間ビットストリング(Z21−Z24)のそれぞれを、それぞれ2倍の長さの少なくとも2つの異なるマスク(M21,M24)とビットごとにAND結合することによりマスクし、少なくとも4つの第3中間ビットストリングを生成し、
    − 少なくとも4つの第3中間ビットストリングをXOR結合し
    少なくとも4つの第4中間ビットストリングをXOR結合し、結果ビットストリング(E)を生成する、
    請求項1または3から5のいずれか1項記載のコンピュータ装置
  8. 請求項1から6いずれか1項記載のコンピュータ装置であって、
    前記各入力ビットストリング(EB1,EB2)を少なくとも2つの異なるマスク(M11,M12)とそれぞれビットごとにAND結合することにより前記各入力ビットストリング(EB1,EB2)をマスクし、前記各入力ビットストリング(EB1,EB2)に対して少なくとも2つの第1中間ビットストリング(Z11−Z14)を生成する生成装置(11)と、ただし、前記第1中間ビットストリング(Z11−Z14)のそれぞれは隣り合う1ビットを有してない、
    整数乗算により少なくとも2つの第1中間ビットストリングを結合し、少なくとも1つの第2中間ビットストリングを生成する論理結合装置(12)と、
    少なくとも1つの第2中間ビットストリングを第2の変換により変換し、結果ビットストリング(E)を生成する変換装置(13)と、
    を有するコンピュータ装置。
  9. それぞれNビットの少なくとも2つの入力ビットストリングの標数2の乗算を実行する、プロセッサおよびメモリを備えたコンピュータ装置のためのコンピュータプログラムであって
    前記プログラムは前記プロセッサに下記ステップ、すなわち
    a)前記各入力ビットストリング(EB1,EB2)を少なくとも2つの異なるマスク(M11,M12)とそれぞれビットごとにAND結合することにより前記各入力ビットストリング(EB1,EB2)をマスクし、前記各入力ビットストリング(EB1,EB2)に対して少なくとも2つの第1中間ビットストリング(Z11−Z14)を生成するステップと、ただし、前記第1中間ビットストリング(Z11−Z14)のそれぞれは隣り合う1ビットを有してない、
    b)整数乗算により少なくとも2つの第1中間ビットストリングを結合し、少なくとも1つの第2中間ビットストリングを生成するステップと、
    c)少なくとも1つの第2中間ビットストリングを第2の変換により変換し、結果ビットストリング(E)を生成するステップと
    を実行させることを特徴とする、コンピュータプログラム
  10. 前記コンピュータプログラムは、前記プロセッサ装置に、
    個数K個の"0"ビットのシーケンス(F)の個数Kを、
    前記入力ビットストリング(EB1,EB2)のビットの個数Nに依存して決定させる、
    請求項9記載のコンピュータプログラム
  11. 前記個数K個の"0"ビットを有する前記シーケンス(F)により、N個のビットを含む前記した所定の各マスク(M11,M12)においてそれぞれ1つのマスク窓を形成する、なお、前記Kは次の条件を満たす
    Figure 0005449349
    請求項9記載のコンピュータプログラム
  12. 前記所定の異なるマスク(M11,M12)の個数MはK+1に等しい(M=K+1)、請求項10または11記載のコンピュータプログラム
  13. m番目ごとのマスク(M11,M12)はそれぞれ1つの"1"ビットとそれに続くK個の"0"ビットを含むシーケンス(F)とから成る周期的なパターンの少なくとも一部から形成され、前記mにつきm∈{1,…,M}である、請求項12記載のコンピュータプログラム
  14. 前記コンピュータプログラムは、前記プロセッサ装置に、
    (m+1)番目ごとのマスク(M12,M11)はm番目ごとのマスク(M11,M12)を1ビットだけシフトさせて生成させる、請求項13記載のコンピュータプログラム
  15. 記結果ビットストリング(E)を生成することが、
    前記コンピュータプログラムは、前記プロセッサ装置に、
    − 少なくとも4つの第2中間ビットストリング(Z21−Z24)のそれぞれを、それぞれ2倍の長さの少なくとも2つの異なるマスク(M21,M24)とビットごとにAND結合することによりマスクし、少なくとも4つの第3中間ビットストリングを生成し、
    − 少なくとも4つの第3中間ビットストリングをXOR結合させ、
    − 少なくとも4つの第4中間ビットストリングをXOR結合し、結果ビットストリング(E)を生成させる、
    請求項9から14のいずれか1項記載のコンピュータプログラム。
JP2011519095A 2008-07-21 2009-05-22 標数2の乗算を実現するための方法、コンピュータ装置およびコンピュータプログラム Expired - Fee Related JP5449349B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102008033962A DE102008033962B4 (de) 2008-07-21 2008-07-21 Verfahren und Prozessor-Einrichtung zum Implementieren einer Charakteristik-2-Multiplikation
DE102008033962.8 2008-07-21
PCT/EP2009/056228 WO2010009917A1 (de) 2008-07-21 2009-05-22 Verfahren und prozessor-einrichtung zum implementieren einer charakteristik-2-multiplikation

Publications (2)

Publication Number Publication Date
JP2011528810A JP2011528810A (ja) 2011-11-24
JP5449349B2 true JP5449349B2 (ja) 2014-03-19

Family

ID=40941502

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011519095A Expired - Fee Related JP5449349B2 (ja) 2008-07-21 2009-05-22 標数2の乗算を実現するための方法、コンピュータ装置およびコンピュータプログラム

Country Status (6)

Country Link
US (1) US8732227B2 (ja)
EP (1) EP2304549A1 (ja)
JP (1) JP5449349B2 (ja)
CN (1) CN102105860A (ja)
DE (1) DE102008033962B4 (ja)
WO (1) WO2010009917A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102008033962B4 (de) 2008-07-21 2011-11-24 Siemens Aktiengesellschaft Verfahren und Prozessor-Einrichtung zum Implementieren einer Charakteristik-2-Multiplikation
FR2952773B1 (fr) * 2009-11-13 2012-07-20 Inst Telecom Telecom Paristech Circuit electronique de faible complexite protege par masquage personnalise
CN104636113A (zh) * 2015-02-06 2015-05-20 周炜 一种计算机处理大整数的算法
KR102430873B1 (ko) * 2017-12-29 2022-08-09 제넨테크, 인크. 전달 시그니처를 갖는 주입 모니터링 디바이스
KR102674032B1 (ko) 2019-12-26 2024-06-12 삼성전자주식회사 리페어 동작을 수행하는 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법
US11227641B1 (en) * 2020-07-21 2022-01-18 Micron Technology, Inc. Arithmetic operations in memory

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7277540B1 (en) * 1999-01-20 2007-10-02 Kabushiki Kaisha Toshiba Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
DE10107376A1 (de) 2001-02-16 2002-08-29 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren und Rechenwerk zum modularen Multiplizieren
US7243292B1 (en) * 2002-10-17 2007-07-10 Telefonaktiebolaget Lm Ericsson (Publ) Error correction using finite fields of odd characteristics on binary hardware
EP1595357A4 (en) 2003-02-06 2006-03-01 Discretix Technologies Ltd DEVICE AND METHOD FOR HANDLING MASKED DATA
JP4986206B2 (ja) 2006-02-22 2012-07-25 株式会社日立製作所 暗号処理方法及び暗号処理装置
DE102008033962B4 (de) 2008-07-21 2011-11-24 Siemens Aktiengesellschaft Verfahren und Prozessor-Einrichtung zum Implementieren einer Charakteristik-2-Multiplikation

Also Published As

Publication number Publication date
JP2011528810A (ja) 2011-11-24
WO2010009917A1 (de) 2010-01-28
US8732227B2 (en) 2014-05-20
US20110131395A1 (en) 2011-06-02
CN102105860A (zh) 2011-06-22
DE102008033962B4 (de) 2011-11-24
DE102008033962A1 (de) 2010-01-28
EP2304549A1 (de) 2011-04-06

Similar Documents

Publication Publication Date Title
JP5449349B2 (ja) 標数2の乗算を実現するための方法、コンピュータ装置およびコンピュータプログラム
US20070140478A1 (en) Encryption apparatus and encryption method
EP3559811B1 (en) Protecting parallel multiplication operations from external monitoring attacks
Niasar et al. Optimized architectures for elliptic curve cryptography over Curve448
JP2002040933A (ja) データ暗号化標準アルゴリズムを利用した暗号化装置
Koppermann et al. X25519 hardware implementation for low-latency applications
Granger et al. Faster ECC over
US20100115017A1 (en) Semi-Sequential Galois Field Multiplier And The Method For Performing The Same
CN112491543B (zh) 基于改进的蒙哥马利模幂电路的ic卡解密方法
Taşkin et al. Speeding up curve25519 using Toeplitz matrix-vector multiplication
US8909510B2 (en) LFSR emulation
JP5147085B2 (ja) 演算方法及び演算装置
US6480870B1 (en) Random number generator using lehmer algorithm
Keliris et al. Investigating large integer arithmetic on Intel Xeon Phi SIMD extensions
JP5193358B2 (ja) 多項式データ処理演算
US10133554B2 (en) Non-modular multiplier, method for non-modular multiplication and computational device
JP4728392B2 (ja) 大数乗算方法およびデバイス
CN115664634A (zh) 一种抗侧信道攻击的aes加密算法硬件实现方法及***
KR100954843B1 (ko) 센서 모트에서의 블록 인덱싱 기반의 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록 매체
JP5822757B2 (ja) ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム
Slobodová Formal verification of hardware support for advanced encryption standard
JP4472808B2 (ja) 積和演算装置及びこれを用いた暗号・復号装置
Ali et al. Optimal datapath design for a cryptographic processor: the Blowfish algorithm
JPS61193183A (ja) 乱数発生回路
KR101883643B1 (ko) 토플리츠 행렬 처리 장치 및 방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130208

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130507

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130514

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130610

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130617

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130708

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130716

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130805

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131224

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees