(57)【要約】  体Ｆの元に計算を実行するように構成された計算デバイス１００である。体加算及び体乗算が体に定義される。符号化体元が、少なくとも２つの異なる符号化のうちの一方によって符号化される。計算マネージャ１３０が、加算では、第２の符号化によって符号化された任意の符号化体元に第２の変換演算子ユニットを適用し、加算演算子ユニットの集合を適用し、乗算では、第１の符号化によって符号化された任意の符号化体元に第１の変換演算子ユニットを適用し、乗算演算子ユニットの集合を適用することによって、第１の符号化体元（ａ，ｂ）及び第２の符号化体元（ｃ，ｄ）を選択的に加算するか又は乗算するように構成される。
2019523492.tif 000002
【特許請求の範囲】
【請求項１】
体の元に計算を実行する計算デバイスであって、体加算及び体乗算が前記体に定義される計算デバイスにおいて、
符号化体元を格納するオペランドストアであって、符号化体元が、前記体の元を符号化形態で表し、符号化体元が、少なくとも２つの異なる符号化、すなわち、
前記少なくとも２つの異なる符号化のうちの第１の符号化であって、前記符号化体元が表される、第１の符号化と、
前記少なくとも２つの異なる符号化のうちの第２の符号化であって、前記符号化体元が指数として表され、前記符号化体元が、前記体の生成元を前記指数で累乗したものであり、前記体の前記元に実行されている計算を隠すために、前記オペランドストア内の少なくともいくつかの体元が前記第１の符号化によって符号化され、前記オペランドストア内の少なくともいくつかの体元が前記第２の符号化によって符号化される、第２の符号化と、
のうちの一方によって符号化される、オペランドストアと、
複数の演算子ユニットを含む演算子モジュールであって、前記複数の演算子ユニットが、
前記第１の符号化によって符号化された体元を受け取り、前記第２の符号化によって再符号化された同じ体元を生成する第１の変換演算子ユニット、
前記第２の符号化によって符号化された体元を受け取り、前記第１の符号化によって再符号化された同じ体元を生成する第２の変換演算子ユニット、
加算演算子ユニットの集合であって、前記第１の符号化によって符号化された２つの体元を加算する、加算演算子ユニットの集合、及び
乗算演算子ユニットの集合であって、前記乗算演算子ユニットの集合が、前記指数を加算することによって、前記第２の符号化によって符号化された前記２つの体元を乗算する、乗算演算子ユニットの集合
を含む、演算子モジュールと、
前記第１の符号化又は前記第２の符号化によって両方とも符号化された第１の符号化体元及び第２の符号化体元をオペランドストアから受け取り、
前記第１の符号化体元及び前記第２の符号化体元を、
加算では、前記第２の符号化によって符号化された任意の符号化体元に前記第２の変換演算子ユニットを適用し、前記加算演算子ユニットの集合を適用し、
乗算では、前記第１の符号化によって符号化された任意の符号化体元に前記第１の変換演算子ユニットを適用し、前記乗算演算子ユニットの集合を適用する
ことによって選択的に加算するか又は乗算する、計算マネージャと
を含む、計算デバイス。
【請求項２】
前記第１の符号化における前記符号化体元が、２つの元のリストとして表され、符号化体元が、前記２つの元の間の差であり、
前記第２の符号化における前記符号化体元が、２つの元のリストとして表され、符号化体元が、前記体の生成元を前記２つの元の間の差で累乗したものである、請求項１に記載の計算デバイス。
【請求項３】
前記加算演算子ユニットの集合及び前記乗算演算子ユニットの集合が、
符号化体元及びパラメータを受け取り、
前記符号化体元及び前記パラメータに固定計算を実行し、それにより、新しい符号化体元を生成する
少なくとも１つの２項演算子ユニット
を含む、請求項１又は２に記載の計算デバイス。
【請求項４】
前記第１の変換演算子ユニット及び前記第２の変換演算子ユニットが単項であり、並びに／又は
前記加算演算子ユニットの集合及び前記乗算演算子ユニットの集合のうちの少なくとも１つの演算子ユニットが単項であり、
単項演算子ユニットが、
符号化体元を受け取り、
前記符号化体元に固定計算を実行し、それにより、新しい符号化体元を生成する、請求項１乃至３のいずれか一項に記載の計算デバイス。
【請求項５】
第１の１対１マッピングが、前記加算演算子ユニットの集合と前記乗算演算子ユニットの集合との間で定義され、加算に適用される前記加算演算子ユニットの集合内の演算ユニットのシーケンスが、乗算に適用される前記乗算演算子ユニットの集合内の演算ユニットのシーケンスへの前記第１の１対１マッピングによって１対１でマップされる、請求項１乃至４のいずれか一項に記載の計算デバイス。
【請求項６】
第２の１対１マッピングが、入力元と、前記加算演算子ユニットの集合内の２項演算子の出力元及びパラメータ並びに前記入力元と、前記乗算演算子ユニットの集合内の２項演算子の出力元及びパラメータとの間で定義される、請求項１乃至５のいずれか一項に記載の計算デバイス。
【請求項７】
前記加算演算子ユニットの集合及び前記乗算演算子ユニットの集合が、２項上昇演算子ユニットを含み、前記上昇演算子ユニットが、
前記第１の符号化又は前記第２の符号化によって符号化された体元を受け取ることであって、前記符号化が、第１の体元及び第２の体元の表現を含む、受け取ること、及び
パラメータ体元を受け取ることと、
前記第１の体元体と前記パラメータの逆数との乗算を計算し、前記第２の体元体と前記パラメータの前記逆数との乗算を計算することであって、前記新しい符号化体元が、前記２つの計算の結果によって表される、計算することと
を行い、
並びに／又は
前記加算演算子ユニットの集合及び前記乗算演算子ユニットの集合が、２項下降演算子ユニットを含み、前記下降演算子ユニットが、
前記第１の符号化又は前記第２の符号化によって符号化された体元を受け取ることであって、前記符号化が、第１の体元及び第２の体元の表現を含む、受け取ること、及びパラメータ体元を受け取ることと、
前記第１の体元体と前記パラメータとの乗算を計算し、前記第２の体元体と前記パラメータとの乗算を計算することであって、前記新しい符号化体元が、前記２つの計算の結果によって表される、計算することと
を行う、請求項２に記載の計算デバイス。
【請求項８】
前記加算演算子ユニットの集合及び前記乗算演算子ユニットの集合が、単項ボックス演算子ユニットを含み、前記ボックス演算子ユニットが、
前記第１の符号化又は前記第２の符号化によって符号化された体元を受け取ることであって、前記符号化が、第１の体元及び第２の体元の表現を含む、受け取ること、及び
パラメータ体元を受け取ることと、
前記符号化体元に固定増分を加えたものの符号反転を符号化形態で得ることと
を行う、請求項２又は７に記載の計算デバイス。
【請求項９】
第１の符号化体元が、変換の後に必要ならば、１番目の第１の体元及び１番目の第２の体元の表現を含み、前記第２の符号化体元が、変換の後に必要ならば、２番目の第１の体元及び２番目の第２の体元の表現を含み、前記加算演算子ユニットの集合の適用及び前記乗算演算子ユニットの集合の適用が、
パラメータの前記２番目の第１の体元をもつ前記上昇演算子ユニット、
ボックス演算子ユニット、
パラメータの前記２番目の第１の体元をもつ前記下降演算子ユニット、
パラメータの前記２番目の第２の体元をもつ前記上昇演算子ユニット、
ボックス演算子ユニット、
パラメータの前記２番目の第２の体元をもつ前記下降演算子ユニット
を含む、請求項７に従属する請求項８に記載の計算デバイス。
【請求項１０】
前記演算子モジュールが、複数の前記演算子ユニットを実施するルックアップテーブルを格納する記憶装置を含む、請求項１乃至９のいずれか一項に記載の計算デバイス。
【請求項１１】
第１の符号化の前記２つの体元のリストが、指数として表され、前記２つの体元が、指数によって示された体の共通基底元の累乗の前記指数である、請求項１乃至１０のいずれか一項に記載の計算デバイス。
【請求項１２】
前記第２の符号化によって符号化された符号化体元は、対応する前記指数が特別な元に等しい場合、数０を表す、請求項１乃至１１のいずれか一項に記載の計算デバイス。
【請求項１３】
前記第２の符号化における前記符号化体元が、２つの元のリストとして表され、符号化体元が、前記体の生成元を前記２つの元の間の差で累乗したものであり、
第２のタイプの符号化体元における元が、ｎを前記体の元の数として、
【数２６】
2019523492.tif 000029
のうちの１つ又は複数と、前記特別な元とからなる第２の符号化集合に制限され、
オプションとして、
第１のタイプの符号化体元における元が、第１の符号化集合に制限され、前記第１の符号化集合が前記体の差集合であり、前記第１の符号化集合及び前記第２の符号化集合が同じサイズを有する、請求項１２に記載の計算デバイス。
【請求項１４】
前記演算子モジュールが、
前記第１の符号化によって符号化された体元を受け取り、前記第１の符号化によって再符号化された同じ体元を生成する第１のダミー変換演算ユニット、及び／又は
前記第２の符号化によって符号化された体元を受け取り、前記第２の符号化によって再符号化された同じ体元を生成する第２のダミー変換演算ユニット
を含む、請求項１乃至１３のいずれか一項に記載の計算デバイス。
【請求項１５】
体の元に計算を実行する計算デバイスであって、体加算及び体乗算が前記体に定義される計算デバイスにおいて、
符号化体元を格納するオペランドストアであって、符号化体元が、前記体の元を符号化形態で表し、符号化体元が、少なくとも２つの異なる符号化、すなわち、
前記少なくとも２つの異なる符号化のうちの第１の符号化であって、前記符号化体元が表される、第１の符号化と、
前記少なくとも２つの異なる符号化のうちの第２の符号化であって、前記符号化体元が指数として表され、前記符号化体元が、前記体の生成元を前記指数で累乗したものであり、前記体の前記元に実行されている計算を隠すために、前記オペランドストア内の少なくともいくつかの体元が前記第１の符号化によって符号化され、前記オペランドストア内の少なくともいくつかの体元が前記第２の符号化によって符号化される、第２の符号化と、
のうちの一方によって符号化される、オペランドストアと、
前記第１の符号化又は前記第２の符号化によって両方とも符号化された第１の符号化体元及び第２の符号化体元を受け取る入力インタフェースと、
プロセッサ回路とを含み、
前記プロセッサ回路が、
前記第１の符号化によって符号化された体元を受け取り、前記第２の符号化によって再符号化された同じ体元を生成する第１の変換演算子、
前記第２の符号化によって符号化された体元を受け取り、前記第１の符号化によって再符号化された同じ体元を生成する第２の変換演算子、
加算演算子の集合であって、前記第１の符号化によって符号化された２つの体元を加算する、加算演算子の集合、及び
乗算演算子の集合であって、前記指数を加算することによって、前記第２の符号化によって符号化された前記２つの体元を乗算する、乗算演算子ユニットの集合
を含む複数の演算子と、
前記第１の符号化又は前記第２の符号化によって両方とも符号化された第１の符号化体元及び第２の符号化体元を前記オペランドストアから受け取り、
前記第１の符号化体元及び前記第２の符号化体元を、
加算では、前記第２の符号化によって符号化された任意の符号化体元に前記第２の変換演算子ユニットを適用し、前記加算演算子ユニットの集合を適用し、
乗算では、前記第１の符号化によって符号化された任意の符号化体元に前記第１の変換演算子ユニットを適用し、前記乗算演算子ユニットの集合を適用する
ことによって選択的に加算すること又は乗算すること
を含む、計算デバイス。
【請求項１６】
体の元に計算を実行する計算方法であって、体加算及び体乗算が体に定義される計算方法において、
符号化体元を格納するステップであって、符号化体元が、前記体の元を符号化形態で表し、符号化体元が、少なくとも２つの異なる符号化、すなわち、
前記少なくとも２つの異なる符号化のうちの第１の符号化であって、前記符号化体元が表される、第１の符号化と、
前記少なくとも２つの異なる符号化のうちの第２の符号化であって、前記符号化体元が指数として表され、前記符号化体元が、前記体の生成元を前記指数で累乗したものであり、前記体の前記元に実行されている計算を隠すために、少なくともいくつかの体元が前記第１の符号化によって符号化されて格納され、少なくともいくつかの体元が前記第２の符号化によって符号化されて格納される、第２の符号化と、
のうちの一方によって符号化される、格納するステップと、
第１の符号化又は第２の符号化によって両方とも符号化されて格納される第１の符号化体元及び第２の符号化体元を受け取るステップと、
前記第１の符号化体元及び前記第２の符号化体元を、
加算では、前記第２の符号化によって符号化された任意の符号化体元に第２の変換演算子ユニットを適用し、加算演算子ユニットの集合を適用することであって、前記第２の変換演算子ユニットが、前記第２の符号化によって符号化された体元を受け取り、前記第１の符号化によって再符号化された同じ体元を生成し、前記加算演算子ユニットの集合が、前記第１の符号化によって符号化された２つの体元を加算する、適用することと、
乗算では、前記第１の符号化によって符号化された任意の符号化体元に第１の変換演算子ユニットを適用し、乗算演算子ユニットの集合を適用することであって、前記第１の変換演算子ユニットが、前記第１の符号化によって符号化された体元を受け取り、前記第２の符号化によって再符号化された同じ体元を生成し、前記乗算演算子ユニットの集合が、前記指数を加算することによって、前記第２の符号化によって符号化された前記２つの体元を乗算する、適用することと
によって選択的に加算するか又は乗算するステップと
を有する、計算方法。
【請求項１７】
請求項１６に記載の方法をプロセッサシステムに実行させる命令を表す一時的又は非一時的データを含む、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算デバイス、計算方法、コンピュータプログラム、及びコンピュータ可読媒体に関する。
【背景技術】
【０００２】
コンピュータでは、計算が、様々なタスクのために実行される。コンピュータは有限であるので、これらの計算は、多くの場合、有限体で行われる。体の一例は、ｐｎ個の元をもつガロア体であり、ここで、ｐは素数である。そのような体の一般例は、素数を法とする算術である。コンピュータ算術のためのさらに普及している体は、２ｎ個の元をもつ体である。体は様々なやり方で構築され、例えば、多項式を法とする簡約によって得られる体は、いくつかの暗号アルゴリズムで使用されている。
【０００３】
いくつかの用途では、プログラムの実行に関する情報を攻撃者から隠したいという要求がある。いわゆるホワイトボックス攻撃モデルでは、攻撃者は、実行中のコンピュータプログラムに細部までアクセスできると想定される。このモデルにおいてさえ、攻撃者からできるだけ隠したいという要求がある。特に、情報を攻撃者から隠すために暗号法を使用する機密用途、例えば、銀行業務用途、コンテンツ保護などは、ホワイトボックスモデルでは脆弱である場合がある。攻撃者が、例えば、情報を暗号化するために使用された秘密鍵を読み取るようなことがあれば、攻撃者は、前記情報を自身で解読し、フィナンシャル、プレーンコンテンツなどを手に入れることができる。
【０００４】
情報の保護に加えて、さらに、より一般的には、計算自体を攻撃者から保護したいという要求がある。攻撃者は、特定のアルゴリズムが実行されている場所が正確に分かる場合、プログラム内の正確な場所に攻撃を集中させることができ、攻撃者は、秘密アルゴリズム、例えば、専用の暗号化又は解読アルゴリズムにリバースエンジニアすることができる。
【０００５】
現在のホワイトボックス技術を使用して一般的な計算フローを保護することは困難である。例えば、Ｃｈｏｗ等による「Ｗｈｉｔｅ−Ｂｏｘ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ａｎｄ  ａｎ  ＡＥＳ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ」という論文は、１つの特定のアルゴリズム（ＡＥＳ）をホワイトボックスモデルで保護するやり方を示している。この技術は、一般的なコンピュータプログラムを保護するために直接適用することができない、すなわち、プログラムの大規模な人間の分析なしに適用することができない。例えばＣｈｏｗにおいて説明されているタイプのテーブル又はテーブルネットワークへの加算演算又は乗算演算の直接変換のため、依然として、攻撃者は、単にどのテーブルネットワークがアクセスされているかを観察することによって、いつ加算又は乗算が実行されるかを推定することができる。
【発明の概要】
【０００６】
計算デバイスが、特許請求の範囲によって提供される。計算デバイスにおいて、体元（ｆｉｅｌｄ  ｅｌｅｍｅｎｔ）が、２つの異なるやり方で符号化される。第１の符号化では符号化体元（ｘ）が表されるが、第２の符号化では符号化体元が指数（ｓ）として表される。この場合、符号化体元は、体の生成元（ｇ）を指数で累乗したもの（ｘ＝ｇｓ）に等しい。
【０００７】
これは、第１の符号化において加算を定義するための演算が、乗算を定義するのにミラーリングされるという利点を有する。これは、第１の変換演算子ユニット及び第２の変換演算子ユニットによって達成される。第１の変換演算子ユニット及び第２の変換演算子ユニットは、体元を、第１の符号化から第２の符号化に、及び第２の符号化から第１の符号化に変換する。
【０００８】
言い換えれば、テーブルネットワーク、例えば複数の相互依存テーブルルックアップを可能にする表現が使用される場合でさえ、同じ構造のテーブルネットワークが乗算並びに加算に使用される。例えば、加算演算子の集合は、入力元、又は演算子の以前の結果の出力に適用される複数の演算子を含む。
【０００９】
使いやすい第１及び第２の符号化は、２つの元のリスト（ａ，ｂ）として元ｘを表すことである。第１の符号化では、元は２つの元の間の差（ｘ＝ａ−ｂ）である。第２の符号化では、元は、生成元ｇを差で累乗したもの（ｘ＝ｇａ−ｂ）である。この表現は、加算が、４つではなく３つの体元のみを受け取り、したがって、より小さい演算子を使用して定義されるという利点を有する。その上、乗算はまた、第１の符号化内においてさえ演算子の同様のシーケンスとして表現することさえできる。したがって、乗算は、第２の符号化タイプに変換することによって、又は第１の符号化にとどまることによって得られる。これは、難読化に対するオプションを拡大する。
【００１０】
本発明による方法は、コンピュータ実施方法としてコンピュータで、専用ハードウェアで、又は両方の組合せで実施される。本発明による方法のための実行可能コードは、コンピュータプログラム製品に格納される。コンピュータプログラム製品の例には、メモリデバイス、光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどが含まれる。好ましくは、コンピュータプログラム製品は、前記プログラムがコンピュータ上で実行されるとき本発明による方法を実行するためのコンピュータ可読媒体に格納された非一時的プログラムコードを含む。
【００１１】
好ましい実施形態では、コンピュータプログラムは、コンピュータプログラムがコンピュータ上で実行されるとき本発明による方法のすべてのステップを実行するように構成されたコンピュータプログラムコードを含む。好ましくは、コンピュータプログラムはコンピュータ可読媒体に具現される。
【００１２】
発明の別の態様は、コンピュータプログラムをダウンロードできるようにする方法を提供する。この態様は、コンピュータプログラムが、例えば、ＡｐｐｌｅのＡｐｐ  Ｓｔｏｒｅ、ＧｏｏｇｌｅのＰｌａｙ  Ｓｔｏｒｅ、又はＭｉｃｒｏｓｏｆｔのＷｉｎｄｏｗｓ  Ｓｔｏｒｅにアップロードされるときに、及びコンピュータプログラムがそのようなストアからダウンロードされるときに使用される。
【００１３】
本発明のさらなる詳細、態様、及び実施形態が、単に例として、図面を参照して説明される。図における要素は、簡潔で明瞭に示されており、必ずしも原寸に比例して描かれていない。図において、既に説明した要素に対応する要素は同じ参照番号を有する。
【図面の簡単な説明】
【００１４】
【図１】計算デバイス１００の一実施形態の一例を概略的に示す図である。
【図２ａ】２つの符号化体元の一実施形態の一例を概略的に示す図である。
【図２ｂ】演算子モジュールの一実施形態の一例を概略的に示す図である。
【図３】計算する方法を概略的に示す流れ図である。
【図４ａ】一実施形態によるコンピュータプログラムを含む書込み可能部分を有するコンピュータ可読媒体を概略的に示す図である。
【図４ｂ】一実施形態によるプロセッサシステムの代表を概略的に示す図である。
【発明を実施するための形態】
【００１５】
本発明は多くの異なる形態の実施形態が可能であるが、本開示は、本発明の原理に例示と考えられるべきであり、本発明を図示され説明される特定の実施形態に限定するものではないことを理解した上で、１つ又は複数の特定の実施形態が、図面に示され、本明細書において詳細に説明されている。
【００１６】
以下では、理解のために、実施形態の要素が動作に関して説明される。しかしながら、それぞれの要素は、それらによって実行されるとして記載されている機能を実行するように構成されていることは明らかであろう。
【００１７】
さらに、本発明は実施形態に限定されず、本発明は上述の又は互いに異なる従属請求項に列挙されたありとあらゆる新規な特徴又は特徴の組合せにある。
【００１８】
図１は、計算デバイス１００の一実施形態の一例を概略的に示す。
【００１９】
計算デバイス１００は、有限体Ｆの元に計算を実行するように構成される。体は、体加算及び体乗算が定義される元の有限集合を有する数学的構造である。加算は、＋で表され、乗算は、・で、又は連接によって表される。元の集合は加算と一緒にアーベル群を形成し、恒等式は０で表される。０を除く体は、乗算下のアーベル群であり、例えば、乗算は結合的であり、１で表される恒等式がある。Ｆにおけるすべての元は、加算下で逆元を有し、乗算下で０を除くすべてを有する。加算及び乗算は分配的である。
【００２０】
当技術分野で知られている多くの異なる体がある。例えば、素数ｐを法とする整数、例えば、
【数１】
2019523492.tif 000003
は体である。例えば、ｐは、５、１７などのような整数である。ｆ（ｘ）が既約多項式である場合、数及び多項式を法とする多項式の集合
【数２】
2019523492.tif 000004
は、やはり体を形成する。ここで、ｘは、体の元のうちの１つを表すために記号的に使用される形式的変数として使用される。
【００２１】
様々な体の計算は、コンピュータサイエンスの多くの部門において重要である。例えば、２進体では、体元は２進列として書かれ、加算はＸＯＲ演算に対応する。多くの用途にとって、計算がそのシステムへの攻撃者から隠されていることが重要である。例えば、セキュリティ用途では、例えば、どの計算が実行されているかを知ることから秘密鍵が引き出されるので、実行されているまさにその計算が隠されたままであることが望まれる。コンピュータソフトウェアコードが実行中である間にそれに攻撃者がフルアクセスできる場合、この情報を隠すことは特に困難である。様々な難読化技法が当技術分野で知られているが、体の計算の難読化をさらに改善することが引き続き望まれている。
【００２２】
他の算術、例えば、数Ｍを法とする算術、例えば、体ＧＦ（２３２）ではなく環
【数３】
2019523492.tif 000005
内にある法２３２は、より大きい体で算術を実行することによってモデル化される。例えば、素数ｐ＞２Ｍ、例えばｐ＝２６４＋１３を選択し、
【数４】
2019523492.tif 000006
において算術を実行し、オペランドがＭ以上になるたびにＭを減算することによってモデル化される。
【００２３】
計算デバイス１００は、符号化体元を格納するように構成されたオペランドストア１１０を含む。図１は、符号化体元１１２、１１４、及び１１６を示す。体元を符号化する様々なやり方がある。符号化体元は、体の元を符号化形態で表す。いくつかの符号化を以下で論じる。符号化のために、符号化体元を、例えば、いくつかの従来の表記法、例えば正準表記のプレーン体元にマップする復号化マッピング、例えば解読と、プレーン体元を符号化体元にマップする符号化マッピングとが存在する。所与の体元は様々なやり方で符号化され、例えば、符号化体元は一意的である必要がない。そのような場合、復号化は多対１マッピングである。複数の異なる符号化を有すると、それにより符号化体元をプレーン体元にマップするテーブルを構築することがより困難になるのでセキュリティが改善される。
【００２４】
計算デバイス１００は、少なくとも２つの異なる符号化を使用する。第１の符号化は、体Ｆの任意の符号化である。例えば、第１の符号化は、体元を体元のリストとして表す。一実施形態では、第１の符号化にとって有利な符号化は差分符号化であり、体元ｘは１対の体元（ａ，ｂ）として表され、その結果、体元ｘは２つの体元の間の差（ｘ＝ａ−ｂ）である。第２の符号化は、体元を生成元の元の指数として符号化する。例えば、第２の符号化は、差分指数符号化であり、体元ｘは１対の体元（ａ，ｂ）として表され、その結果、体元ｘは、生成元を２つの体元の間の差で累乗したもの（ｘ＝ｇａ−ｂ）である。
【００２５】
図２ａは、符号化体元２１２の一実施形態の一例を概略的に示す。符号化体元２１２は、２つの体元２１３及び２１５のリストとして符号化される。したがって、符号化のこのやり方では、同じ体を使用してその要素を符号化方式で表す。数学的表記では、体元ｘは、体元のリスト（ａ，ｂ）として符号化される。
【００２６】
例えば、一実施形態では、符号化体元は、前記２つの体元の間の差（ｘ＝ａ−ｂ）である。
【００２７】
対（ａ，ｂ）としての表現はさらに制限される。符号化体元は、後に、オペランドユニットへの入力として使用され、一般にはルックアップテーブルとして実施されるので、体元のあり得る表示の数を減らすことに利点がある。これは、元（ａ，ｂ）をいわゆるＦの差集合に制限することによって行われる。差集合は、より大きい集合、一般に体又は環のサブ集合であり、その結果、より大きい集合の任意の元は、差集合の元の差として表現される。その結果として、これは、演算子ユニットがテーブルとして実施される場合、演算子ユニットのサイズを制限する。より大きい集合が０を含む場合、差集合が常に存在する。
【００２８】
一実施形態では、リストの両方の元は差集合の元である。表現に課される追加の制約はテーブル演算に反映されることに留意されたい。例えば、ボックス演算子（以下を参照）はテーブルとして表される。差表現が使用される場合、ボックス演算子の出力は同じやり方などで制限される。
【００２９】
リスト表現の元を差集合の要素にするように要求することによって表現の数をどれくらい減らすことができるかは、必要とされるセキュリティに依存する。元の異なる表現が多くなる場合、元のうちの１つのみを知ることから得られる情報は少なくなる。実際、すべての表現が許容される場合、体元の符号化の際に体元のうちの１つを知っても、符号化されている元に関する情報は与えられない。
【００３０】
例えば、元ｒを差として符号化するために、体のランダムな元ｘを選ぶことができ、その後、ｒは、例えば、ｒ＝（ｒ−ｘ）−ｘ、若しくはｒ＝ｘ−（ｘ−ｒ）として、又はタプル（（ｒ−ｘ，ｘ）若しくは（ｘ，（ｘ−ｒ）））として表される。より制限された表現のための符号化は、集合の元の間のすべての差を列挙し、リストをソートすることによって行われる。
【００３１】
一般に、符号化体表現、例えばリスト表現における体元は、プレーン体元である必要がなく、システムをさらに難読化するためにそれら自体符号化されてもよい。それにより、プログラムをリバースエンジニアし、２つの元ａ及びｂを見つけた攻撃者は、ただちには差ａ−ｂが分からない。この符号化は、それ自体への体の直接的な全単射である。当技術分野では普通のことであるが、符号化元を入力として取り入れるルックアップテーブルは、全単射を考慮に入れることができる。例えば、体からそれ自体への全単射Ｅを定義することができ、この場合、ｘ＝ａ−ｂである場合、表現（ａ，ｂ）は、Ｅａ及びＥｂとしてオペランドストア１１０に格納される。さらに、これらの２つの数を互いに隣りに格納する必要はない。
【００３２】
符号化Ｅは全単射である必要がない。例えば、定義域Ａ＝｛０，１｝及び値域Ｂ＝｛０，１，２｝を有すると仮定する。ＢのサイズはＡのサイズよりも大きいことに留意されたい。ＡからＢへの関係Ｅは、｛（０，０｝，（１，１），（１，２）｝によって与えられ、ここで、Ａにおけるａ及びＢにおけるｂに対する（ａ，ｂ）は、「にマップされ得る」と解釈されるべきである。これは、Ａからの元１の暗号化における選択を導入する。関係Ｅで必要とされるのは、それが可逆であることである。
【００３３】
図２ａは、符号化体元２１２と同じように、符号化体元２３２をさらに示し、符号化体元２３２は、２つの体元２３３及び２３５を含む。数学的表記では、体元ｘは、体元のリスト（ａ，ｂ）として符号化される。
【００３４】
第２の符号化のために、任意の体に対して、生成元と呼ばれる元ｇがあり、その結果、体の任意の元ｘ≠０が、あるｉに対してｇｉとして表現されるという考えから開始する。体Ｆの元の数がｎとして表される場合、ｇの位数はｎ−１である、すなわち、ｇｎ−１＝１である。このように、マッピングは、体Ｆから
【数５】
2019523492.tif 000007
に定義され、それは、ｘをｉにマップする。第２の表現では、体の任意の非ゼロ元は２つの元（ａ，ｂ）によって表され、その結果、ｉ＝ａ−ｂであり、したがって、ｘ＝ｇａ−ｂである。これには、数０を表すやり方が残されている。これは、１つの特別な元をマイナス無限大（−∞）として割り当てることによって解決される。この数は、例えば定義によってｇ−∞＝０という性質を有する。第２の符号化は、
ａ及びｂの両方が−∞に等しくない場合、（ａ，ｂ）はｇａ−ｂにマップする、
ａ及びｂのいずれか一方が−∞に等しい場合、（ａ，ｂ）は０にマップする
として定義される。
【００３５】
集合
【数６】
2019523492.tif 000008
の濃度は、体Ｆの濃度に等しい。
【００３６】
一実施形態では、第２の符号化で使用される元は整数｛０，…，ｎ｝であり、例えば、整数｛０，…，ｎ−１｝は、−∞に等しくない元であり、整数ｎは、−∞の部分を取る。しかしながら、任意の他の整数を−∞として使用することもできる。実際、全単射を通して、任意の数が、任意の数によって表される。
【００３７】
さらに、第２の符号化では、元ａ及びｂを
【数７】
2019523492.tif 000009
のあるサブ集合に制限する。
【００３８】
例えば、一実施形態では、体Ｆから整数０〜ｎ−１（０及びｎ−１を含む）の２つの全単射Ｅ１，ｉ、及び
【数８】
2019523492.tif 000010
から整数０〜ｎ−１（０及びｎ−１を含む）の２つの全単射Ｅ２，ｉが、定義される。２つの全単射は、例えば、コンパイル時にランダムに選ばれる。元ｘ＝ａ−ｂは、第１の符号化において対（Ｅ１，２（ａ），Ｅ１，２（ｂ））として格納され、元ｘ＝ｇａ−ｂは、第２の符号化において対（Ｅ２，２（ａ），Ｅ２，２（ｂ））として格納され、元０は、ａ及びｂのいずれか一方をマイナス無限大に設定することによって表される。
【００３９】
例えば、体ＧＦ（２５６）、すなわち、２５６の元をもつ体を考える。ＧＦ（２５６）の元は、ＧＦ（２）の係数をもつ７次以下のｘの多項式と見なされる。ＧＦ（２）は、２進加算及び２進乗算を伴う単なる｛０，１｝であるが、桁上げはない、すなわち、ＧＦ（２）において１＋１＝０である。例えば、ＡＥＳ暗号化は、体を定義するために以下の還元多項式、すなわち、ｘ８＋ｘ４＋ｘ３＋ｘ＋１を使用する。この場合他の既約多項式が使用されてもよい。一般に、任意の体は、適切な既約多項式を選ぶことにより実行される。
【００４０】
体、特にＡＥＳで使用される体ＧＦ（２５６）の元は、２進多項式と考えられる。全部で２５６個の元がある（そのために、ＧＦ（２５６）という名称である）。
【００４１】
ＧＦ（２５６）における２つの多項式の加算は直接的である。これは多項式の単なる通常の加算であるが、計算の係数はＧＦ（２）で行われる。後者はＸＯＲ演算と見なされる。
【００４２】
ＧＦ（２５６）で２つの多項式を乗算するには、最初に、通常の多項式と全く同じように多項式を乗算するが、この場合もやはり、計算がＧＦ（２）で行われていることに留意されたい。次いで、その結果を還元多項式で除算し、剰余を取る。
【００４３】
この体の元は２進列として表され、各ビットは、形式変数ｘの指数の係数を表す。けれども、実際には、これは、体と整数０〜２５５との間の任意の全単射を使用して体元を表すことができるので必要ではない。後者の場合、体元の加算及び乗算演算はルックアップテーブルを使用して実行される。
【００４４】
体ＧＦ（２５６）は多くの生成元、例えば元１＋ｘを有する。生成元の元をｇと呼ぶ。ｇｎ−１＝１であり、ここで、ｎは体のサイズ（この例では２５６）であることに留意されたい。すなわち、（１＋ｘ）２５５＝１  ｍｏｄ  ｘ８ｘ４＋ｘ３＋ｘ＋１である。
【００４５】
形式変数ｘによる表現を使用して、第１の符号化の元、例えば、元ｘ７＋ｘ５＋ｘ３＋ｘ、又は２進列として表された場合の元１０１０１０００を符号化するために、ランダムな元ａ、例えば１１０１１１００を選び、１０１０１０００との差を計算して０１１１０１００を得る。この例は２進体を使用しているので、これはＸＯＲ演算である。そこで、１０１０１０００は、第１の符号化によって（１１０１１１００，０１１１０１００）、言い換えると（２２０，１１６）として符号化される。実際の実施形態では、列もまたそれ自体符号化形態で格納されてもよいので、異なる列が使用されてもよいことに留意されたい。後者の符号化は、任意の従来の符号化、例えばランダムな全単射などとすることができる。このレベルの符号化は、複数の元の符号化と区別する必要がある。
【００４６】
第２の符号化によって元ｘ７＋ｘ５＋ｘ３＋ｘを符号化するには、ｘ７＋ｘ５＋ｘ３＋ｘ＝（１＋ｘ）３１  ｍｏｄ  ｘ８＋ｘ４＋ｘ３＋ｘ＋１であることに留意する。生成元１＋ｘは任意選択である。この任意選択は、演算子の実施において暗黙に示されてもよく、明示的である必要がないことに留意されたい。第２の符号化において、指数３１は０と２５４との間の数であり、２つの整数の間の差、例えば、０と２５４との間の（０と２５４を含む）２つの整数として表される。整数は法２５５（体の位数よりも１小さい）である。例えば、ａ＝１７に設定し、ａ−ｂ＝３１  ｍｏｄ  ２５５になるようにｂを選び、その結果、ｂ＝２４１である。第２の符号化によって符号化された元は（１７，２４１）である。元０を表すために、元マイナス無限大（−∞）を用いて数０〜２５４を拡大する。少なくとも１つがマイナス無限大である２つの数の間の差は、再び、マイナス無限大である。例えば、追加の数のマイナス無限大を表す整数２５５を有する。ｇ（−∞）＝０であると定義する。数０は、０と２５４との間の任意のａに対して、（２５５，ａ）、（ａ，２５５）、（２５５，２５５）として表される。さらに、第２の符号化では、実施形態は、符号化の基礎となる実際の数、例えば、上述の例では１７、２４１、及び２５５を格納する必要がなく、代わりに、整数０〜２５５からそれ自体への任意の全単射が、第２の符号化で数を符号化するために使用されてもよい。指数の符号化は、ＷＯ／２０１６／１０２４４５、例えば、その請求項１に記載されているシステムによって行われてもよい。
【００４７】
任意の２つの符号化と同様に、第１の符号化によって符号化された元は、例えばルックアップテーブルを使用して第２の符号化に変換される。複数の表現が可能である場合、これは、例えば、ルックアップテーブルに１つ又は複数の代替を有することによって使用される。一例では、複数のルックアップテーブルが使用され、その結果、元は２つのルックアップテーブルによって異なるやり方で変換される。
【００４８】
演算子ユニットの同様のシーケンスによって定義された乗算及び加算を有する可能性を維持する多くの代替の第１／第２の符号化が可能である。一般に、元ｘは、元のリスト、例えば元のベクトルνとして表され、その結果、ｌ１・ν＝ｘ（第１の符号化）又はｌ２・ν＝ｓであり、ここで、ｇｓ＝ｘ（第２の符号化）である。ここで、符号化はベクトルｌによって定義される。例えば、差分符号化は、ｌ１＝ｌ２＝（１，−１）を使用して得られる。ｌが完全体（ｆｕｌｌ  ｆｉｅｌｄ）にマップし、完全体のサブグループにマップしない限り、上昇／下降／ボックス演算子（ｕｐ／ｄｏｗｎ／ｂｏｘ  ｏｐｅｒａｔｏｒ）が、同様のやり方で異なるｌに対して定義される。これは、ベクトルｌに少なくとも１ユニットを有することによって達成される。一実施形態では、ｌは２つの元を有する。
【００４９】
一実施形態では、符号化における２つの体元は指数（（α，β））として表される。２つの体元は、指数によって示された体の共通基底元（ｕ）の累乗（ｘ＝ｕα−ｕβ）の指数である。これは、符号化体元（α，β）がプレーン体元ｘ＝ｕα−ｕβに対応することを意味する。このタイプの符号化は、ログ形式と呼ばれる。混乱を避けるために、ログ形式が使われていることを明確にしたい場合、（α，β）ｕと書く。さらにこの場合、指数は、集合に制限されてもよく、及び／又は符号化されてもよい。
【００５０】
図１に戻る。オペランドストア１１０は、定数、例えば、あるアルゴリズム、例えば、暗号化、解読、ＭＡＣ演算（メッセージ認証コード）、署名、署名照合などのような暗号アルゴリズムで使用される定数体元を含むことができる。オペランドストア１１０は、ユーザによって入力されるか、又は例えば計算デバイス１００の外部のコンピュータから受け取る体元をさらに含む。計算デバイス１００は、受け取ったプレーン体元を符号化体元に変換するために符号化ユニット、及び／又は、例えば、プレーン体元を例えば外部コンピュータに送る前に、符号化体元をプレーン体元に変換する復号化ユニットを含む。符号化ユニット及び復号化ユニットは、１つのタイプのみの符号化、例えば第１のタイプのみの符号化に制限されてもよい。この場合、変換テーブルを使用して、元を第２のタイプに符号化するか、又は元を第２のタイプから復号化することができる。
【００５１】
計算デバイス１００は、さらに、符号化形態で直接外部体元を受け取ってもよい。計算デバイス１００の外部では、計算デバイス１００の内部とは違う別の符号化、例えば、暗号化が使用されてもよい。
【００５２】
オペランドストア２２８内の体元の一部は第１の符号化によって符号化され、一部は第２の符号化によって符号化される。一実施形態では、オペランドストア２２８内の少なくとも一部の体元は第１の符号化によって符号化され、少なくとも一部は第２の符号化によって符号化される。
【００５３】
計算デバイス１００は演算子モジュール１２０を含む。演算子モジュール１２０は複数の演算子ユニットを含む。演算子ユニットは、単一のルックアップテーブルとして、又は複数のルックアップテーブルとして、例えばルックアップテーブルネットワークとして実施される。演算子ユニットは、さらに、演算子ユニットの機能を実行するように構成された複数のコンピュータ命令として実施されてもよい。演算子ユニットは、計算デバイス１００の電子メモリに格納される。演算子モジュール１２０は、第１の符号化によって符号化された体元を受け取り、第２の符号化によって再符号化された同じ体元を生成するように構成された第１の変換演算子ユニット１２４と、第２の符号化によって符号化された体元を受け取り、第１の符号化によって再符号化された同じ体元を生成するように構成された第２の変換演算子ユニット１２５とを含む。
【００５４】
さらに、計算デバイス１００は、加算演算子ユニットの集合１２８と、乗算演算子ユニットの集合１２９とを含む。加算集合１２８には、２つの演算子、すなわち、１２２．１及び１２３．１が示されている。乗算集合１２９には、２つの演算子、すなわち、１２２．２及び１２３．２が示されている。
【００５５】
単位元（ｕｎｉｔ  ｅｌｅｍｅｎｔ）をデバイスのユニットと混同すべきでないことに留意されたい。後者は特定の機能を実行する動作部分であり、前者は集合の元であり、元は逆数を有する。
【００５６】
興味深いことには、加算演算子ユニットの集合１２８は、第１の符号化によって符号化された２つの体元を加算するように構成される。乗算演算子ユニットの集合１２９は、第２の符号化において、第２の符号化によって符号化された２つの体元を加算するように構成され、その結果、第１の符号化への変換の後、それらは乗算される。これは、対応ｇｘｇｙ＝ｇ（ｘ＋ｙ）を利用する。ｘ及びｙの一方がマイナス無限大である場合もこの関係は有効であり、その理由は、その場合、ｘ＋ｙはやはりマイナス無限大であり、したがって、式の両辺が数０を表すからであることに留意されたい。
【００５７】
例えば、体元ｘ及びｙを考えよう。以下の演算が可能である。
−  ２つの体元が第１の符号化によって符号化されている場合、それらは集合１２８を適用することによって加算される、
−  ２つの体元の一方又は両方が第１の符号化によって符号化されている場合、それらは、それらを第２の符号化に変換し、集合１２９を適用することによって乗算される、
−  ２つの体元が第２の符号化によって符号化されている場合、それらは集合１２９を適用することによって乗算される、
−  ２つの体元の一方又は両方が第２の符号化によって符号化されている場合、それらは、それらを第１の符号化に変換し、集合１２８を適用することによって加算される。
【００５８】
変換ユニットは、単項演算子ユニットとすることができる。しかしながら、変換ユニットは、例えば複数の異なる表現の中から選択するためにパラメータもまた受け取るようにされてもよい。
【００５９】
複数の演算子ユニットのうちの少なくとも１つは、２項演算子ユニットである。図１は、２項演算子ユニット１２２．１及び１２２．２を示している。演算子モジュール１２０は、１つ又は複数の単項演算子ユニットをさらに含む。図１は、単項演算子ユニット１２３．１及び１２３．２を示している。
【００６０】
２項演算子ユニット１２２．１／２などの２項演算子ユニットは、
−  符号化体元及びパラメータを受け取り、
−  前記符号化体元及びパラメータに固定計算を実行し、それにより、新しい符号化体元を生成する
ように構成される。
【００６１】
単項演算子ユニット１２３．１／２などの単項演算子ユニットは、
−  符号化体元を受け取り、
−  前記符号化体元に固定計算を実行し、それにより、新しい符号化体元を生成する
ように構成される。
【００６２】
２項の場合及び単項の場合の両方において、符号化体元が、オペランドメモリ１１０から、例えば計算マネージャ１３０を介して受け取られる（以下でさらに論じる）。２項の場合には、パラメータが、さらに、オペランドメモリ１１０から、例えば計算マネージャ１３０を介して受け取られる。
【００６３】
演算子ユニットによって実行される計算は固定されている。演算子が異なるパラメータ又は符号化体元で提示された場合、演算子は、異なる入力にもかかわらず計算の同じ集合を実行する。例えば、演算子ユニットの計算は、パラメータ又はその逆数、及び符号化表現の元への体算術を含む（又はさらにそれからなる）。例えば、演算子ユニットの計算は、体乗算と体加算とを含む（又はさらにそれらからなる）。後者を含む体乗算は、固定体元（例えば、−１）との乗算である。
【００６４】
計算デバイス１００は計算マネージャ１３０を含む。計算マネージャ１３０は、第１の符号化体元及び第２の符号化体元を受け取るように構成される。例えば、計算マネージャ１３０は、オペランドメモリ１１０から第１の符号化体元及び第２の符号化体元を取り出すように構成される。例えば、計算マネージャ１３０は、符号化体元１１２及び１１４を取り出すことができる。どのタイプの符号化を体元に使用したかの情報は、計算デバイス１００に、例えばオペランドメモリ１１０に格納される。しかしながら、この情報は、例えば、必要に応じて変換ユニットに適用するように構成された計算マネージャ１３０によって実行されるコンピュータプログラムに定義されるような例えばプロセスフローにおいて暗黙に保持することが可能である。
【００６５】
計算デバイス１００は、第１の符号化体元及び第２の符号化体元に体加算と体乗算の両方を実行する。どの演算が選ばれるか、加算か又は乗算かは、計算デバイス１００が適応される用途に依存する。例えば、乗算と加算の両方を含む複数の算術演算を実行する必要がある暗号演算が実行される。
【００６６】
計算マネージャ１３０は、第１の符号化によって符号化された元に体加算を実行するように構成される。計算マネージャ１３０は、少なくとも第２の符号化体元から得られたパラメータを使用して、加算集合１２８の複数の演算子ユニットのシーケンスを第１の符号化体元に適用するように構成される。例えば、各演算子ユニットはある特定の順序で第１の符号化体元に適用され、それらの一部は、複数回適用される。例えば、シーケンスは、第１の演算子、次に第二演算子、次に第３の演算子、次に再度第３の演算子、などを適用する。
【００６７】
同様に、計算マネージャ１３０は、第２の符号化によって符号化された元に体加算を実行するように構成される（元が第１の符号化に変換される場合、乗算を行う）。計算マネージャ１３０は、少なくとも第２の符号化体元から得られたパラメータを使用して、乗算集合１２９の複数の演算子ユニットのシーケンスを第１の符号化体元に適用するように構成される。
【００６８】
興味深いことには、計算マネージャ１３０が第１の符号化又は第２の符号化で加算に使用するコンピュータ命令は、適用されるテーブルのアドレス及び内容は別として識別不可能である。特に、２つの符号化ドメインで加算を実行するために適用されるテーブルの数は等しくてもよい。さらに、パラメータの順序及び原点は等しくてもよい。
【００６９】
実際、第１の１対１マッピングが、加算演算子ユニットの集合と乗算演算子ユニットの集合との間で定義され、加算のために適用される加算演算子ユニットの集合内の演算ユニットのシーケンスは、乗算に適用される乗算演算子ユニットの集合内の演算ユニットのシーケンスへの第１のマッピングによって１対１でマップされる。
【００７０】
同じことが、２項演算子ユニットで使用されるパラメータに対して行われる。例えば、第２の１対１マッピングが、加算演算子ユニットの集合内の２項演算子の入力元、出力元、及びパラメータと、乗算演算子ユニットの集合内の２項演算子の入力元、出力元、及びパラメータとの間で定義される。
【００７１】
計算マネージャ１３０は、第１の符号化によって体元に体乗算を直接実行するように構成される。これは、さらに、演算子の数及び順序が、第１の符号化によって符号化された体元への加算と同じであるように構成されるが、しかしながら、そのような乗算で使用されるパラメータは異なる。
【００７２】
パラメータを区別することはテーブルを区別することよりも容易であると考えられる。ホワイトボックス実施態様では、多くの演算子ユニットが一般に使用される。演算に対して、複数の演算子ユニットが、例えば、異なる符号化のために定義される。ダミー演算子ユニットは、何もしないか、又は符号化などを変更するだけである。しかしながら、パラメータの様々な使用は、フロー解析によって潜在的に追跡され、そのような分析は自動化される。さらに、一実施形態では、両方の手法、すなわち、テーブル使用を隠すが異なるパラメータフローを使用すること、及び変換テーブルを使用することによってパラメータを隠すことが組み合わされる。
【００７３】
例えば、計算マネージャ１３０は、演算子１３２のシーケンスを含むか、又は演算子１３２のシーケンスにアクセスできる。演算子のシーケンスは、どの演算子がどの符号化体元に実行されるかを決定する。シーケンス１３２は、体加算を表すサブシーケンスと、体乗算を表すサブシーケンスとを含む。サブシーケンスは、全単射下で互いにマップされる。シーケンス１３２は、複数の演算子、例えば、変換演算子、又はさらに他の恐らく無関係な演算子のさらなる適用をさらに含む。シーケンス１３２はプログラムに含まれる。シーケンス１３２は、メモリ、例えばオペランドストア１１０に格納される。
【００７４】
演算子モジュール１２０の演算を分析する攻撃者は、加算又は乗算が実行されることとは関係なく演算の同じシーケンスを知ることになる。したがって、攻撃者は、実行されている計算に関する情報を演算の分析から推定することができない。このようにして、計算デバイスの実行の重要な局面が攻撃者から隠される。
【００７５】
その上、一実施形態では、難読化技法がシステムに適用される。特に、複数の演算がルックアップテーブルとして実行される。符号化体元は、例えばプレーン体元による暗号化又はランダム符号化を介してランダム関係を有することができる。攻撃者は、どのテーブルが適用されており、どの順序で様々な演算子ユニットを実行しているかを知ることができるとはいえ、体加算及び体乗算のシーケンスは無意味になっているので、攻撃者はそこから情報を推定することができない。実際、どちらの場合も、加算は実際に実行される。同時に、パラメータは、その使用がどちらの場合も同じであるので、やはりそれほど有用でなくなっている。
【００７６】
テーブルのサイズは入力の数とともに激しく増加するので、単項演算はルックアップテーブルとしての実施に特に適している。例えば、計算デバイス１００は、ボックス演算子ユニットを実施するルックアップテーブルを格納する記憶装置を含む（以下を参照）。
【００７７】
体乗算及び体加算に加えて、計算デバイス１００は、体元への他の演算のために構成されてもよい。例えば、計算デバイス１００は、加算及び乗算のシーケンスとして（容易に）表すことができない演算を表すテーブルを含む記憶装置を含んでもよい。
【００７８】
体加算及び体乗算に加えて、他の演算も同じ演算子の同じシーケンスを使用して表現される。例えば、一実施形態では、計算マネージャ１３０は、少なくとも第２の符号化体元から得られたパラメータを使用して複数の演算子ユニットのシーケンスを第１の符号化体元に適用することによって、体減算を実行するように構成される。体減算のシーケンスは、体加算のシーケンス及び体乗算のシーケンスと同じである。例えば、否定演算もこのように表現される。
【００７９】
演算の間、デバイス１００は、例えば、以下のように使用される。計算マネージャ１３０は、オペランドストア１１０から第１の符号化体元及び第２の符号化体元を取り込む。計算マネージャ１３０は、必要ならば第１の変換又は第２の変換を適用し、演算子モジュール１２０から演算子ユニットを選択し、それにより、例えば、シーケンス１３２に従って、選択した演算子ユニットが第１の符号化体元に適用される。アプリケーションの中間結果は、演算子ストア１５０に、例えば符号化中間体元として格納されてもよい。計算マネージャ１３０は、必要なパラメータを計算することができる。
【００８０】
保護は、さらに、ハードウェアセキュリティ対策を使用することができるが、特に、難読化などのソフトウェア保護とすることもできる。難読化は、計算マネージャ１３０のオペランド選択がパラメータ計算に依存しない場合、より効果的である。特定の効果的なソフトウェア保護には、ホワイトボックス暗号法の適用が含まれる。
【００８１】
一実施形態では、演算子モジュール１２０は、
−  第１の符号化によって符号化された体元を受け取り、第１の符号化によって再符号化された同じ体元を生成するように構成された第１のダミー変換演算子ユニット、及び／又は
−  第２の符号化によって符号化された体元を受け取り、第２の符号化によって再符号化された同じ体元を生成するように構成された第２のダミー変換演算子ユニット
を含む。
【００８２】
例えば、ダミー変換は、入力体元を、同じ符号化タイプにおける同じ体元の異なる表現にマップする。例えば、計算マネージャ１３０は、例えば、実際の変換が必要とされない場合にダミー変換テーブルを適用することによって、加算又は乗算が実行されるたびに変換テーブルを適用するように構成される。このようにして、加算のシーケンスと乗算のシーケンスとはさらに一段と等しくなる。
【００８３】
一実施形態では、計算デバイス１００は、計算マネージャによって体乗算及び体加算を実行するために、少なくとも第２の符号化体元から得られるパラメータを計算するように構成されたパラメータユニットを含む。例えば、計算マネージャ１３０及びパラメータユニットは別個で異なる回路として実施される。そのような計算システムは地理的に分散されていてもよく、計算マネージャ１００とパラメータユニットとは、互いに地理的に分離されてもよい。例えば、地理的な分離は、所望の距離を超えて、例えば１０ｋｍを超えていてもよい。
【００８４】
計算デバイス１００は仮想マシンで具現されてもよい。この場合、シーケンス１３２は、仮想マシン上で動作するプログラムの一部である。従来の仮想マシン（ＶＭ）は、基本演算を、中でも加算、減算、乗算、排他などを備える。この目的は２つの部分からなる。仮想マシンは、基礎をなすプラットフォームによってそれ自体では提供されない演算及び原始関数を提供し、メモリ制約環境において特に有用なコンパクトな命令フォーマットを可能にする。
【００８５】
しかしながら、ＶＭの命令の多くは、やはり、加算、減算、乗算などのような基本的なものであり、それらは、基礎をなすプラットフォームの命令に直接マップされる。これらは一般によく理解されているので、ＶＭは、電力消費の分析及び障害の注入を介して全く容易に攻撃される。さらには、このマッピングのために、個々の演算にトレース命令を追加することは全く簡単である。
【００８６】
一実施形態による仮想マシンはこの状況を緩和する。仮想マシンは、例えばＶＭの命令セットの一部として、上昇、下降、及びボックス演算のための命令を有する。この命令は、特別な演算動作モード（例えば、セキュリティモード）においてのみ利用可能である。
【００８７】
これらの演算のシーケンスと、実行されている実際の機能との間の関係は、それほど直接的ではない。実際には、算術を実行するコードは、以下のように見える。
１．（オプションとして）モードを変更し（例えば、あるアドレスを割り当てることによって）、続いて、
２．上昇、下降、及びボックス命令のシーケンスが算術を実施し、
３．（オプションとして）再びモード変更して終了する。
【００８８】
代数体の数と可能な表現の変形とが与えられると、すべての仮想マシンは、それ自体の算術を有することができる。
【００８９】
仮想マシンは、上昇、下降、及びボックス命令の実行とインデクス（パラメータ）の計算との間を区別することができる。例えば、これらのアクティビティは分割されてもよい。
【００９０】
例えば、１つのアクティビティは演算のシーケンスの（事前）取込みであり、別のアクティビティは命令の結果の実際のルックアップ化である。これらのアクティビティのパイプラインは、実際には、実際の実行モデルである。
【００９１】
上昇、下降、及びボックス演算は、テーブルを使用して実施され、それはまた、符号化実施を容易にする。基礎をなす体Ｒの正しい選択により、新しく定義された算術は小さいテーブルしか必要としないので、テーブル方式手法の使用はメモリ制約環境においてさえ可能である。
【００９２】
連続する上昇及び下降命令を組み合わせることができる、例えば、
【数９】
2019523492.tif 000011
などである。任意の２つの連続する上昇命令及び下降命令は、これらの規則を使用して、単一の上昇命令又は下降命令として書き直される。計算デバイス又は仮想マシンの一実施形態は、組合せユニットを含む。組合せユニットは計算マネージャ１３０と協働し、計算マネージャ１３０によって計画された演算子を結合し、その後、それらは実行される。
【００９３】
組合せユニットは、上述の規則のうちの１つに従って、２つの連続する上昇、下降、及びボックス演算を組み合わせ、それらを単一の新しい演算に組み合わせる。次いで、組合せユニットは、それに応じて、対応するパラメータを組み合わせる。このタイプの組合せは、パラメータがもはや単一の演算に対応するのではなくて組合せ演算に対応するという利点を有する。組合せユニットはまた、例えば所与のシーケンスを難読化するためにスタンドアロンデバイスとすることができる。組合せユニットは、演算子のシーケンスを生成するコンパイラと統合されてもよい。
【００９４】
図２ｂは、演算子モジュール２２０の一実施形態の一例を概略的に示す。この実施形態は、加算演算子ユニットの集合２２８と、乗算演算子ユニットの集合２２９とを含む。集合２２８、２２９は各々３つの演算子ユニット、すなわち、２つの２項演算子ユニット２２２．１／２及び２２４．１／２と、１つの単項演算子ユニット２２６．１／２とを含む。異なる集合内の同じタイプの演算子ユニットを参照する場合、それらが集合２２８又は集合２２９にあることを示すためにインデクス．１又はインデクス．２を使用する。インデクスを省略することがあり、又はステートメントが集合２２８と集合２２９の両方のオペランドに適用されることを示すためにインデクス．１／２を使用することがある。
【００９５】
実施形態は、より多い又はより少ない演算子ユニットを使用することができる。以下、最初に、体元ｘは、ｘ＝ａ−ｂとなるように、第１の符号化に従って２つの体元のリスト（ａ，ｂ）として符号化される。一実施形態では、体Ｆは、少なくとも４つの元又は少なくとも８つの元などを有する。一実施形態の表現は、複雑にされる及び／又はさらに符号化されることがあるが、議論の混乱を避けるために以下ではこれを含まない。
【００９６】
演算子モジュール２２０内の演算子ユニット２２２．１／２、２２４．１／２、及び２２６．１／２を以下のように呼ぶ。（２項）上昇演算子ユニット２２２．１／２、Δという記号でも表す、（２項）下降演算子ユニット２２４．１／２、∇という記号でも表す、単項ボックス演算子ユニット２２６．１／２、□という記号でも表す。上昇、下降、及びボックスという名前は、便宜上選ばれているが、それ自体に意味はない。演算子２２２．１／２、２２４．１／２、２２６．１／２は、同様に、第１の演算子ユニット、第２の演算子ユニット、及び第３の演算子ユニットと呼ぶことがある。下降及び上昇演算子のパラメータは添字として示される。
【００９７】
２項上昇演算子ユニット２２２．１／２Δは、
−  第１の体元（ａ）及び第２の体元（ｂ）の表現を受け取ることであり、符号化体元（ｘ）が第１の体元と第２の体元との間の差（ｘ＝ａ−ｂ）である、受け取ることと、パラメータ体元（ｃ）を受け取ることと、
−  第１の体元体とパラメータの逆数との乗算（ａｃ−１）を計算し、第２の体元体とパラメータの逆数との乗算（ｂｃ−１）を計算することであり、新しい符号化体元（ｙ）が、前記２つの計算の結果によって表される（ｙ＝ａｃ−１−ｂｃ−１）、計算することと
を行うように構成される。
【００９８】
数学的には、上昇演算子は、Δｃ（（ａ，ｂ））＝（ａｃ−１，ｂｃ−１）によって定義される。この式において、ｃはパラメータであり、（ａ，ｂ）は第１の符号化体元である。符号化体元（ａ，ｂ）は、体元ｘ＝ａ−ｂを符号化する。上昇演算子の出力はそれ自体も符号化形態であり、したがって、元ａｃ−１−ｂｃ−１を符号化する。
【００９９】
２項下降演算子ユニット２２４．１／２∇は、
−  第１の体元（ａ）及び第２の体元（ｂ）の表現を受け取ることであり、符号化体元（ｘ）が第１の体元と第２の体元との間の差（ｘ＝ａ−ｂ）である、受け取ることと、パラメータ体元（ｃ）を受け取ることと、
−  第１の体元体とパラメータとの乗算（ａｃ）を計算し、第２の体元体とパラメータとの乗算（ｂｃ）を計算することであり、新しい符号化体元（ｙ）が、前記２つの計算の結果によって表される（ｙ＝ａｃ−ｂｃ）、計算することと
を行うように構成される。
【０１００】
数学的には、下降演算子は∇ｃ（（ａ，ｂ））＝（ａｃ，ｂｃ）によって定義され、この式において、ｃはパラメータであり、（ａ，ｂ）は第１の符号化体元である。符号化体元（ａ，ｂ）は、体元ｘ＝ａ−ｂを符号化する。下降演算子の出力はそれ自体も符号化形態であり、したがって、元ａｃ−ｂｃを符号化する。
【０１０１】
技術的には、パラメータｃと、上昇演算子及び下降演算子の両方の入力ａ及び入力ｂとは、第１の符号化では体Ｆの範囲から、又は第２の符号化では
【数１０】
2019523492.tif 000012
から取られることに留意されたい。それらは同じサイズを有しており、一実施形態では同じやり方で、例えば等しい長さのビットストリングで表されることに留意されたい。一実施形態では、第２の実施形態による表現における元は、
【数１１】
2019523492.tif 000013
及び−∞のユニットに制限される。乗算集合における演算子、例えば、演算子２２２．２、２２６．２、及び２２４．２は、
【数１２】
2019523492.tif 000014
及び−∞のユニットからなる符号化のみを生成するように構成される。第１のタイプの表現の数を等しく保つために、第１のタイプの符号化は、第２のタイプで使用されるものと同じサイズ、例えばユニット＋１の数の差集合に制限される。
【０１０２】
ボックス演算子ユニット２２６．１／２□は、
−  第１の体元（ａ）及び第２の体元（ｂ）の表現を受け取ることであり、符号化体元（ｘ）が第１の体元と第２の体元との間の差（ｘ＝ａ−ｂ）である、受け取ることと、
−  符号化体元（ｘ）に固定増分を加えたものの符号反転を符号化形態で得る（−（ｘ＋１）＝−ｘ−１）ことと
を行うように構成される。
【０１０３】
数学的には、ボックス演算子２２６．１／２は、□（（ａ，ｂ））＝（ｋ，ｌ）によって定義され、ｋ−ｌ＝−（ｘ＋１）＝−ｘ−１である。（ｋ，ｌ）には複数の選択肢があることに留意されたい。ボックス演算子は常に同じ選択肢を選ぶことができ、それは、ランダムな選択肢、又は符号化表現への制限内の選択肢である。以下では、（ｋ，ｌ）は両方ともユニット又はマイナス無限大であると仮定する。ボックス演算子は、体加算を使用して（ａ，ｂ）から（ｂ，ａ＋１）へのマップとして表現される。この単項演算は、テーブルとしての表現に適する。いくつか非ゼロ元がユニットでない
【数１３】
2019523492.tif 000015
では、テーブルは、ユニット要件（例えば、表現の第１の元がユニットである、又は第２の元がユニットである、又は両方の元がユニットである）を満たす表現を選択することができる。その上、テーブルは、すべての入力に対する基本表現（体加算、減算、乗算、及び逆数のみを含む）として表現された特定の式に従う必要はなく、特に、上述で与えられた表現に従う必要はない。
【０１０４】
演算子２２２．１／２、２２４．１／２、及び２２６．１／２はすべてテーブルとして実施される。ボックス演算子にとって、これは自然な選択肢である。上昇演算子２２２．１／２及び下降演算子２２４．１／２はまた、体算術、例えば、計算デバイスによって難読化される同じ体算術を使用して実施される。
【０１０５】
演算子２２２．２、２２４．２の入力又はパラメータのいずれか一方がマイナス無限大であるときはいつでも、結果は、例えば、点（−∞，−∞）として定義される。ボックス演算子２２６．２の入力のいずれか一方がマイナス無限大であるときはいつでも、結果は、ある整数ａ≠−∞に対して、例えば、点（−∞，−∞）、（−∞，ａ）、又は（ａ，−∞）として定義される。
【０１０６】
一般に、乗算集合１２９、２２９の演算子の入力／パラメータのうちのいずれか１つがマイナス無限大であるときはいつでも、少なくとも１つの出力元をマイナス無限大に設定することによって、これは、計算マネージャ１３０によって乗算される第１の符号化体元及び第２の符号化体元のいずれか一方が、０の表現であり、マイナス無限大元を有しているときはいつでも、乗算集合の適用の最終結果が、やはりマイナス無限大元を有することになり、それゆえに、０の表現となることを保証する。要約すれば、入力のマイナス無限大を出力に常に伝搬すると、０との乗算が結果として０になることが保証される。
【０１０７】
それぞれ（ａ，ｂ）及び（ｃ，ｄ）として表された第１の符号化体元及び第２の符号化体元（両方とも同じタイプに対して符号化された）が与えられると、以下、シーケンスが符号化における体加算に与えられる。効果は以下の通りである。
−  第１の符号化体元及び第２の符号化体元が第１の符号化によって符号化される場合、結果は、第１の符号化によって符号化された加算である、
−  第１の符号化体元及び第２の符号化体元が第２の符号化によって符号化される場合、結果は、第２の符号化によって符号化された乗算である（第２符号化の観点から見ると、２つの表現は加算される）。
【０１０８】
第１の符号化体元及び第２の符号化体元の元は、１番目の第１の体元（ａ）、１番目の第２の体元（ｂ）、２番目の第１の体元（ｃ）、及び２番目の第２の体元（ｄ）と呼ばれる。
【０１０９】
体加算は以下のように表される。
【数１４】
2019523492.tif 000016
【０１１０】
この式において、関数合成は、
【数１５】
2019523492.tif 000017
で示される。例えば、
−  最初に、上昇演算子ユニット２２２が、パラメータｃを使用して第１の符号化体元（ａ，ｂ）に適用され、次いで
−  ボックス演算子２２６が、前の演算子の結果に適用され、次いで、
−  下降演算子ユニット２２４が、パラメータｃを使用して前の演算子の結果に適用され、次いで、
−  上昇演算子ユニット２２２が、パラメータｄを使用して前の演算子の結果に適用され、次いで、
−  ボックス演算子２２６が、前の演算子の結果に適用され、次いで、
−  下降演算子ユニット２２４が、パラメータｄを使用して前の演算子の結果に適用される。
【０１１１】
演算子参照のシーケンスは、例えば、２２４、２２６、２２４、２２２、２２６、２２２である（この場合、第１の演算子は左側にある）。パラメータのシーケンスは、例えば、ｃ，−，ｃ，ｄ，−，ｄであり、パラメータなしはハイフンで示されている。
【０１１２】
乗算は、第１の符号化によって符号化された体元に対して、同じ演算子を使用して定義されることに留意されたい。体乗算は以下のように表される。
【数１６】
2019523492.tif 000018
【０１１３】
例えば、
−  最初に、上昇演算子ユニット２２２が、パラメータｃｂｄを使用して第１の符号化体元（ａ，ｂ）に適用され、次いで
−  ボックス演算子２２６が、前の演算子の結果に適用され、次いで、
−  下降演算子ユニット２２４が、パラメータｂｄを使用して前の演算子の結果に適用され、次いで、
−  上昇演算子ユニット２２２が、パラメータａｄを使用して前の演算子の結果に適用され、次いで、
−  ボックス演算子２２６が、前の演算子の結果に適用され、次いで、
−  下降演算子ユニット２２４が、パラメータａｄを使用して前の演算子の結果に適用される。
【０１１４】
演算子参照のシーケンスは、例えば、２２４、２２６、２２４、２２２、２２６、２２２である（この場合、第１の演算子は左側にある）。パラメータのシーケンスは、例えば、ｃｂｄ，−，ｂｄ，ａｄ，−，ａｄであり、パラメータなしはハイフンで示されている。
【０１１５】
この演算はまた、使用されているテーブルに関係する場合非常に類似しているが、ある情報は、体レベルでの乗算がある程度必要とされることから収集される。第２の符号化に変換すると、この問題は避けられる。
【０１１６】
減算は、元のうちの１つを符号反転することによって、例えば第１の表現における元のスワップによって達成される。除算は、逆数を乗算することによって達成される。逆数は、第２の表現において元をスワップすることによって得られる。元０はこのようにして０にマップされることに留意されたい。
【０１１７】
代替として、体減算は、第１の符号化においてそれぞれ
【数１７】
2019523492.tif 000019
を実行することによって得られる。
【０１１８】
例えば、
−  最初に、上昇演算子ユニット２２２が、パラメータｄを使用して第１の符号化体元（ａ，ｂ）に適用され、次いで
−  ボックス演算子２２６が、前の演算子の結果に適用され、次いで、
−  下降演算子ユニット２２４が、パラメータｄを使用して前の演算子の結果に適用され、次いで、
−  上昇演算子ユニット２２２が、パラメータｃを使用して前の演算子の結果に適用され、次いで、
−  ボックス演算子２２６が、前の演算子の結果に適用され、次いで、
−  下降演算子ユニット２２４が、パラメータｃを使用して前の演算子の結果に適用される。
【０１１９】
演算子参照のシーケンスは、例えば、２２４、２２６、２２４、２２２、２２６、２２２である（この場合、第１の演算子は左側にある）。パラメータのシーケンスは、例えば、ｄ，−，ｄ，ｃ，−，ｃであり、パラメータなしはハイフンで示されている。
【０１２０】
同じやり方で、除算が、第２の表現を使用して得られる。
【０１２１】
それぞれ第１の符号化及び第２の符号化における加算及び乗算を表すことができる性質を有する他のシーケンスを考案することができる。例えば、上述の式におけるボックス演算子と上昇演算子との組合せの
【数１８】
2019523492.tif 000020
である新しい演算子ユニットを代用することによって、新しいシーケンスが得られる。興味深い変形が、
【数１９】
2019523492.tif 000021
を単一の２項演算子へと組み合わせることによって得られる。この場合、ボックス演算は必要とされない。加算集合及び乗算集合には、この場合、１つの元しかない。多くの他の可能性が存在する。一実施形態では、集合１２８及び１２９は各々複数の元を含む。
【０１２２】
上述の式が正しいことは、演算子ユニットの対応する定義を代用し、数学的展開に従うことによって確認される。
【０１２３】
様々なオプションが符号化には存在する。例えば、符号化における２つの体元のリストは指数（（α，β））として表され、２つの体元は、指数によって示された体の共通基底元（ｕ）の累乗（ｘ＝ｕα−ｕβ）の指数である。この表現はログ形式と呼ばれ、この表現を区別するために、小文字ｕが付け加えられる。基本元は、ｕの累乗の集合が、Ｆ（第１のタイプの符号化の場合）の差集合、又は第２のタイプの符号化の場合、
【数２０】
2019523492.tif 000022
の差集合となるような元として選択される。ｕ−∞＝０という慣例を使用する。
【０１２４】
生成元は基本元ｕに対するあり得る選択であるが、しかしながら、それは必要ではない。例えば、上述の例で導入された２５６をもつ体を考えると、ｘ５５＝１であるので、形式変数ｘはＧＦ（２５６）の生成元ではないが、しかしながら、ｘの累乗は明らかに差集合を形成する。
【０１２５】
体元の符号化が異なると、演算子の式が異なる。例えば、上昇、下降、及びボックス演算子の上述の記述は、符号化がログ形式である場合、同様の式に適合される。別の変形は、ログ形式（α，β）ｕを体元［β，δ］のリストとして有するｘとして元を表すことであり、ここで、δ＝α−βであり、すなわち、ｘ＝ｕβ＋δ−ｕβである。さらに、この形式で、演算子を表現することができる。例えば、上昇演算子は、Δγ（［β，δ］）＝［β−γ，δ］になる。下降演算子は、＋γが−γに代わること以外は同じである。ボックス演算は、以前と同じ関係を使用して定義される。
【０１２６】
体乗算のシーケンスが体加算のシーケンスと同じになるように演算子のシーケンスを作り出すために同様に使用される演算子の他のシーケンスが存在する。例えば、一実施形態では、Ｆの元のリスト表現の元に演算する２つ、３つ、又はそれを超える演算子が定義される。演算子のうちのいくつか、例えば、１つ以上、２つ以上、又は１つを除くすべてが、Ｆの２つの元のリスト表現の元に演算する体演算の事前定義されたシーケンスである。体演算の事前定義されたシーケンスは、体乗算及び体逆数演算を含み、そしてオプションとして体加算及び体減算をさらに含む表現として表現される。演算子のうちいくつか、例えば、正確には１つ、１つ以上などは、単項であり、体元への固定演算、例えば、体加算及び加法的逆元（マイナス、「−」、演算）を含む固定表現を表す。この演算はテーブル演算として表現される。それは必要ではないが。符号化実施形態では、リスト表現の元が符号化されてもよい。次いで、体演算、加算、乗算、逆数、及び加法的逆元などが、符号化テーブル又はテーブルネットワークとして実施される。リスト表現は、体Ｆの元のシーケンス、及びリスト表現からＦへの全射として定義される。例えば、（ａ−ｂ）にマップする差表現（ａ，ｂ）は、１つのそのようなリスト表現であり、他の例が本明細書で与えられる。
【０１２７】
以下、体乗算のシーケンスが２つの符号化の体加算のシーケンスと同じになるように演算子のシーケンスを作り出すためにさらに使用される演算子のさらなるシーケンスが与えられる。
【０１２８】
例えば、Ｆを体とし、ａ，ｂ，ｃ，ｄ∈Ｆとする。２つの元ｘ及びｙは、ｘ＝ａ−ｂ、ｙ＝ｃ−ｄという解釈（ｉｎｔｅｒｐｒｅｔａｔｉｏｎ）を使用して対（ａ，ｂ）及び（ｃ，ｄ）として表される。以下の展開に留意されたい。
ｘ＋ｙ＝（ａ−ｂ）＋（ｃ−ｄ）
＝ａ＋ｃ−ｂ−ｄ
＝（ａｂ−１＋ｃｂ−１−１）ｂ−ｄ
＝（ｅ−ｆ）ｂ−ｄ
＝ｅｂ−ｆｂ−ｄ
＝−１（ｆｂ＋ｄ−ｅｂ）
＝−１（ｆｂｂ−１ｅ−１＋ｄｂ−１ｅ−１）ｅｂ
＝−１（ｇ−ｈ）ｅｂ
＝（ｈ−ｇ）ｅｂ
＝（ｈｅｂ−ｇｅｂ）
【０１２９】
後者は再び対（ｈｅｂ，ｇｅｂ）で書かれている。この例では、ボックス演算子□（ａ，ｂ）＝ａ＋ｂ−１＝ｅ−ｆを定義する。計算（ａ，ｂ）＋（ｃ，ｄ）では、最初に（ｘ１，ｘ２）＝∇ｂ□Δｂ（（ａ，ｃ））を計算する。これにより、（ａ，ｂ）＋（ｃ，ｄ）の結果は、
【数２１】
2019523492.tif 000023
として計算される。乗算は、同じ演算子を使用して、しかし第２の符号化で、実行される。さらに、この表現は、恒等式（ａ，ｂ）・（ｃ，ｄ）＝（ａｃ，ａｄ）＋（ｂｄ，ｂｃ）を使用して、第１の符号化タイプにおける乗算に適応される。
【０１３０】
一実施形態では、体Ｆの元は、異なる符号化を使用して符号化される。以下の例では、体元の２つの異なる表現が混合される。
【数２２】
2019523492.tif 000024
及びｙ＝（σ，τ）ｕ＝ｕσ−ｕτとする。ボックス演算子（この例では
【数２３】
2019523492.tif 000025
という記号で表す）を
【数２４】
2019523492.tif 000026
として定義し、ここで、
【数２５】
2019523492.tif 000027
である。以下の表において、展開は左側に示され、演算子は右側に示される。
【０１３１】
【表１】
2019523492.tif 000028
【０１３２】
計算デバイス１００は、第１の符号化又は第２の符号化によって両方とも符号化された第１の符号化体元及び第２の符号化体元を受け取るように構成された入力インタフェースを含む。入力インタフェースは、ローカルエリアネットワーク、又はワイドエリアネットワーク、例えばインターネットへのネットワークインタフェース、内部データ記憶装置又は外部データ記憶装置への記憶装置インタフェース、などのような様々な形態をとることができる。
【０１３３】
一般に、デバイス１００は、デバイス１００に格納された適切なソフトウェアを実行するマイクロプロセッサ（図１には単独では示されていない）を含む。例えば、そのソフトウェアは、ダウンロードし、及び／又は対応するメモリ、例えば、ＲＡＭなどの揮発性メモリ又はフラッシュなどの不揮発性メモリ（単独では図示されていない）に格納されている。代替として、デバイス１００は、全体的に又は部分的に、プログラマブルロジックで、例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）として実施されてもよい。デバイス１００は、全体的に又は部分的に、いわゆる特定用途向け集積回路（ＡＳＩＣ）、すなわち、特定の用途のためにカスタマイズされた集積回路（ＩＣ）として実施されてもよい。例えば、回路は、ＣＭＯＳで、例えば、Ｖｅｒｉｌｏｇ、ＶＨＤＬなどのようなハードウェア記述言語を使用して実施されてもよい。
【０１３４】
一実施形態では、デバイス１００は、オペランドストア回路、演算子モジュール回路、及び計算マネージャ回路を含む。回路は、本明細書に記載した対応するユニットを実施する。回路は、プロセッサ回路及び記憶回路であり、プロセッサ回路は、記憶回路において電子的に表される命令を実行する。回路は、ＦＰＧＡ、ＡＳＩＣなどとすることもできる。オペランドストア回路、演算子モジュール回路は、電子記憶装置、例えば電子メモリである。
【０１３５】
図３は、体の元への計算を実行するように構成された計算方法３００の概略の流れ図を示す。この方法は、
−  符号化体元（１１２、１１４、１１６；２１２）を格納するステップ３１０であり、符号化体元が、体の元を符号化形態で表し、符号化体元が、少なくとも２つの異なる符号化のうちの一方によって符号化されるステップ３１０を有する。例えば、符号化体元は、メモリ、例えば揮発性メモリ、例えばクラウド記憶装置などに格納される。
−  少なくとも２つの異なる符号化のうちの第１の符号化であり、符号化体元（ｘ）が表される、
−  少なくとも２つの異なる符号化のうちの第２の符号化であり、符号化体元が指数（ｓ）として表され、符号化体元が、体の生成元（ｇ）を指数で累乗したもの（ｘ＝ｇｓ）である。
【０１３６】
この方法は、
−  第１の符号化又は第２の符号化によって両方とも符号化された第１の符号化体元及び第２の符号化体元を受け取るステップ３２０であり、これらの符号化元は、格納するステップ３１０の間に格納された元のうちの一部である、受け取るステップ３２０をさらに有する。
【０１３７】
この方法は、第１の符号化体元（（ａ，ｂ））と第２の符号化体元（（ｃ，ｄ））とを加算すべきか乗算すべきかを選択する（３３０）。例えば、演算子のシーケンスは、例えばコンピュータプログラムの一部として実行される。この方法は、
−  加算では、第２の変換演算子ユニットを、第２の符号化によって符号化された任意の符号化体元に適用するステップ３４２、及び加算演算子ユニットの集合を適用するステップ３４４であり、第２の変換演算子ユニットが、第２の符号化によって符号化された体元を受け取り、第１の符号化によって再符号化された同じ体元を生成するように構成され、加算演算子ユニットの集合（１２８）が、第１の符号化によって符号化された２つの体元を加算するように構成される、適用するステップと、
−  乗算では、第１の変換演算子ユニットを、第１の符号化によって符号化された任意の符号化体元に適用するステップ３５２、及び乗算演算子ユニットの集合を適用するステップ３５４であり、第１の変換演算子ユニットが、第１の符号化によって符号化された体元を受け取り、第２の符号化によって再符号化された同じ体元を生成するように構成され、乗算演算子ユニットの集合（１２９）が、指数を加算することによって、第２の符号化によって符号化された２つの体元を乗算するように構成される、適用するステップとをさらに有する。
【０１３８】
当業者には明らかなように、この方法を実行する様々なやり方が可能である。例えば、ステップの順序は変えてもよく、又はいくつかのステップは並列に実行されてもよい。その上、ステップの中間に、他の方法のステップが挿入されてもよい。挿入されたステップは、本明細書に記載されたものなどのこの方法の改善を表してもよく、又はこの方法と無関係であってもよい。所与のステップは、次のステップが開始される前に、完全に終了していなくてもよい。
【０１３９】
本発明による方法は、プロセッサシステムに方法３００を実行させるための命令を含むソフトウェアを使用して実行される。ソフトウェアは、システムの特定のサブエンティティによって行われるステップのみを含んでもよい。ソフトウェアは、ハードディスク、フロッピー、メモリ、光ディスクなどのような適切な記憶媒体に格納される。ソフトウェアは、有線に沿って、無線で、又はデータネットワーク、例えばインターネットを使用して信号として送られてもよい。ソフトウェアは、ダウンロード、及び／又はサーバでの遠隔使用で利用できるようにされてもよい。本発明による方法は、この方法を実行するために、プログラマブルロジック、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を構成するように配列されたビットストリームを使用して実行されてもよい。
【０１４０】
本発明は、本発明を実行に移すように構成されたコンピュータプログラム、特に、キャリア上又はキャリア内のコンピュータプログラムにも及ぶことが理解されよう。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、及び部分的にコンパイルされた形態などのオブジェクトコードの形態、又は本発明による方法の実施で使用するのに適する任意の他の形態であってもよい。コンピュータプログラムに関連する実施形態は、記載された方法のうちの少なくとも１つの処理ステップの各々に対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分され、及び／又は静的に又は動的にリンクされる１つ又は複数のファイルに格納されてもよい。コンピュータプログラムに関連する別の実施形態は、記載されたシステム及び／又は製品のうちの少なくとも１つの手段の各々に対応するコンピュータ実行可能命令を含む。
【０１４１】
図４ａは、コンピュータプログラム１０２０を含む書込み可能部分１０１０を有するコンピュータ可読媒体１０００を示し、コンピュータプログラム１０２０は、一実施形態による計算方法をプロセッサシステムに実行させるための命令を含む。コンピュータプログラム１０２０は、物理的なマークとして、又はコンピュータ可読媒体１０００の磁化によってコンピュータ可読媒体１０００上に具現される。しかしながら、任意の他の適切な実施形態も考えられる。さらに、コンピュータ可読媒体１０００はここでは光ディスクとして示されているが、コンピュータ可読媒体１０００は、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどのような任意の適切なコンピュータ可読媒体であってもよく、書込み不可能又は書込み可能であってもよいことが理解されよう。コンピュータプログラム１０２０は、計算の前記方法をプロセッサシステムに実行させるための命令を含む。
【０１４２】
図４ｂは、一実施形態によるプロセッサシステム１１４０の略図を示す。プロセッサシステムは、１つ又は複数の集積回路１１１０を含む。１つ又は複数の集積回路１１１０の構成が、図４ｂに概略的に示されている。回路１１１０は、一実施形態による方法を実行する、及び／又はそのモジュール又はユニットを実施するためにコンピュータプログラムコンポーネントを実行するための処理ユニット１１２０、例えばＣＰＵを含む。回路１１１０は、プログラミングコード、データなどを格納するためのメモリ１１２２を含む。メモリ１１２２の一部は読出し専用であってもよい。回路１１１０は、通信要素１１２６、例えば、アンテナ、コネクタ、又は両方などを含む。回路１１１０は、方法において定義された処理の一部又はすべてを実行するための専用集積回路１１２４を備えてもよい。プロセッサ１１２０、メモリ１１２２、専用ＩＣ１１２４、及び通信要素１１２６は、相互接続部１１３０、例えばバスを介して互いに接続される。プロセッサシステム１１１０は、それぞれ、アンテナ及び／又はコネクタを使用して接触及び／又は非接触通信のために構成される。
【０１４３】
例えば、一実施形態では、計算デバイスは、プロセッサ回路及びメモリ回路を含み、プロセッサは、メモリ回路に格納されたソフトウェアを実行するように構成される。例えば、プロセッサ回路は、Ｉｎｔｅｌ  Ｃｏｒｅ  ｉ７プロセッサ、ＡＲＭ  Ｃｏｒｔｅｘ−Ｒ８などである。メモリ回路は、ＲＯＭ回路、又は不揮発性メモリ、例えばフラッシュメモリとすることができる。メモリ回路は、揮発性メモリ、例えばＳＲＡＭメモリとすることができる。計算デバイスは、ソフトウェアを供給するように構成された不揮発性ソフトウェアインタフェース、例えば、ハードドライブ、ネットワークインタフェースなどを含む。プロセッサ回路は、ソフトウェアを実行するように協働する複数のプロセッサコアを含む。
【０１４４】
以下の条項は本発明の様々な実施形態に関する。出願人は、本出願又はそれから派生するさらなる出願の遂行中に、記載から得られるそのような条項、及び／又はそのような条項の組み合わせ、及び／又は特徴に対して新しい請求項が考案され得ることをここに通知する。
【０１４５】
条項１：体（Ｆ）の元に計算を実行するように構成された計算デバイス（１００）である。体加算及び体乗算が体に定義される。計算デバイスは、
−  符号化体元（１１２、１１４、１１６；２１２）を格納するように構成されたオペランドストア（１１０）であって、符号化体元が、体の元を符号化形態で表し、符号化体元が、少なくとも２つの異なる符号化、すなわち、
−  少なくとも２つの異なる符号化のうちの第１の符号化であって、符号化体元（ｘ）が表される、第１の符号化、
−  少なくとも２つの異なる符号化のうちの第２の符号化であって、符号化体元が指数（ｓ）として表され、符号化体元が、体の生成元（ｇ）を指数で累乗したもの（ｘ＝ｇｓ）である、第２の符号化のうちの一方によって符号化される、オペランドストア（１１０）と、
−  複数の演算子ユニットを含む演算子モジュール（１２０；２２０）であって、複数の演算子ユニットが、
−  第１の符号化によって符号化された体元を受け取り、第２の符号化によって再符号化された同じ体元を生成するように構成された第１の変換演算子ユニット、
−  第２の符号化によって符号化された体元を受け取り、第１の符号化によって再符号化された同じ体元を生成するように構成された第２の変換演算子ユニット、
−  加算演算子ユニットの集合（１２８）であって、第１の符号化によって符号化された２つの体元を加算するように構成されている、加算演算子ユニットの集合（１２８）、及び
−  乗算演算子ユニットの集合（１２９）であり、指数を加算することによって、第２の符号化によって符号化された２つの体元を乗算するように構成されている、乗算演算子ユニットの集合（１２９）を含む、演算子モジュール（１２０；２２０）と、
−  計算マネージャ（１３０）であって、
−  第１の符号化又は第２の符号化によって両方とも符号化された第１の符号化体元及び第２の符号化体元を受け取り、
−  第１の符号化体元（（ａ，ｂ））及び第２の符号化体元（（ｃ，ｄ））を、
−  加算では、第２の符号化によって符号化された任意の符号化体元に第２の変換演算子ユニットを適用し、加算演算子ユニットの集合を適用し、
−  乗算では、第１の符号化によって符号化された任意の符号化体元に第１の変換演算子ユニットを適用し、乗算演算子ユニットの集合を適用することによって選択的に加算するか又は乗算するように構成されている、計算マネージャ（１３０）とを含む。
【０１４６】
条項２：１１  第１の符号化及び／又は第２の符号化における２つの体元のリストが、指数（（α，β））として表され、２つの体元が、指数によって示された体の共通基底元（ｕ）の累乗（ｘ＝ｕα−ｕβ）の指数である、条項１に記載の計算デバイスである。
【０１４７】
上記の実施形態は本発明を限定するのではなく例示するものであり、当業者は多くの代替実施形態を設計できることに留意されたい。
【０１４８】
特許請求の範囲において、括弧間に置かれたいかなる参照符号も、請求項を限定するものとして解釈されないものとする。「含む、備える、有する（ｃｏｍｐｒｉｓｅ）」という動詞及びその活用形の使用は、請求項に記載された要素又はステップ以外の要素又はステップの存在を排除しない。要素の前の「ａ」又は「ａｎ」という冠詞は、複数のそのような要素の存在を排除しない。本発明は、いくつかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施される。いくつかの手段を列挙するデバイスの請求項において、これらの手段のいくつかは、ハードウェアの全く同一のアイテムによって具現される。特定の手段が相互に異なる従属請求項に列挙されているという単なる事実は、これらの手段の組合せを有利に使用できないことを示していない。
【０１４９】
特許請求の範囲において、括弧内の参照は、実施形態の図面の参照符号又は実施形態の式を参照し、それにより、請求項の理解しやすさを向上させる。これらの参照は、請求項を限定するものとして解釈されないものとする。
【符号の説明】
【０１５０】
図１〜図２ｂにおける参照番号のリスト
１００ａ  計算デバイス
１１０  オペランドストア
１１２、１１４、１１６  符号化体元
１２０  演算子モジュール
１２２．１、１２２．２  ２項演算子ユニット
１２３．１、１２３．２  単項演算子ユニット
１２４  第１の変換演算子ユニット
１２５  第２の変換演算子ユニット
１２８  加算演算子ユニットの集合
１２９  乗算演算子ユニットの集合
１３０  計算マネージャ
１３２  演算子のシーケンス
２１２  符号化体元
２１３、２１５  体元
２３２  符号化体元
２３３、２３５  体元
２２０  演算子モジュール
２２２．１、２２２．２  Δ  ２項上昇演算子ユニット
２２４．１、２２４．２  ∇  ２項下降演算子ユニット
２２６．１、２２６．２  □  単項ボックス演算子ユニット
２２８  加算演算子ユニットの集合
２２９  乗算演算子ユニットの集合
【図１】
2019523492.tif 000030
【図２ａ】
2019523492.tif 000031
【図２ｂ】
2019523492.tif 000032
【図３】
2019523492.tif 000033
【図４ａ】
2019523492.tif 000034
【図４ｂ】
2019523492.tif 000035
【国際調査報告】
2019523492.tif 000036
2019523492.tif 000037