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