【文献】
William ZHU and Clark THOMBORSON,A PROVABLE SCHEME FOR HOMOMORPHIC OBFUSCATIONS IN SOFTWARE SECURITY,2005年12月,[2017年11月27日検索],インターネット,URL,https://www.cs.auckland.ac.nz/~cthombor/Pubs/AProvableSchemeforHomomorphicObfuscationinSoftwareSecurity.pdf
【文献】
D2.01 Early White-Box Cryptography and Data Obfuscation Report,2014年12月10日,Version 1.01,[2017年11月27日検索],インターネット,URL,https://aspire-fp7.eu/sites/default/files/D2.01-ASPIRE-Early-White-Box-Cryptography-and-Data-Obfuscation-Report-v1.01.pdf
(58)【調査した分野】(Int.Cl.,DB名)
合成法によって定義される可換環における難読化された算術を剰余数系において実行するよう構成された電子的な計算装置であって、前記剰余数系は法の系列について定義され、それぞれの法が可換環を定義し、前記系列のそれぞれの法について関連付けられた基本要素が存在して、その法を法とするそれぞれの環要素が、それらの環要素がその基本要素の冪乗の線形結合に等しくなるよう、整数リストとして表現されうるという条件を満たし、それぞれの冪乗は前記整数リストによって決定される指数をもち、当該計算装置は、
・前記合成法を法とした一つまたは複数のオペランドを、それらの法を法とする環要素の一つまたは複数の系列として記憶するよう構成されたオペランド記憶部であって、ある系列の各環要素は法の系列の対応する法に関連付けられ、前記系列の少なくとも一つの環要素が整数リストとしてエンコードされている、オペランド記憶部と、
・前記可換環における演算を定義するテーブルを記憶しているテーブル記憶部と;
・前記剰余数系に従って前記オペランド記憶部の第一および第二のオペランドを加算および乗算を実行できる計算ユニットであって、
前記テーブル記憶部に記憶されているテーブルが、前記系列におけるそれぞれの法について、法の前記系列の法に関連付けられた、ある増分要素について定義された増分テーブルを含み、
前記増分テーブルは、入力環要素をエンコードする入力整数リストを、該入力環要素に前記増分要素を加えたものに等しい出力環要素をエンコードする出力整数リストにマッピングするものであり、
前記オペランド記憶部の第一および第二のオペランドの加算は、第一のオペランドを表わす環要素の系列のうち前記法の系列のそれぞれの法に対応する環要素を、第二のオペランドを表わす環要素の系列のうち前記法の系列の対応する法に対応する環要素と、前記対応する法のもとで加算することを含み、該加算は、加算される環要素が整数リストとしてエンコードされている場合には、前記テーブル記憶部に記憶されている前記増分テーブルを利用して実行され、
前記オペランド記憶部の第一および第二のオペランドの乗算は、第一のオペランドを表わす環要素の系列のうち前記法の系列のそれぞれの法に対応する環要素を、第二のオペランドを表わす環要素の系列のうち前記法の系列の対応する法に対応する環要素と、前記対応する法のもとで乗算することを含み、該乗算は、乗算される環要素が整数リストとしてエンコードされている場合には、前記テーブル記憶部に記憶されている前記増分テーブルを利用して実行される、計算ユニットとを有する、
計算装置。
前記計算ユニットが前記整数リストに対して演算し、前記演算は前記基本要素の位数を法とするモジュロ演算を含み、法の前記系列の二つの異なる法に関連する少なくとも二つの基本要素の位数が等しい、請求項1または2記載の計算装置。
整数リストとしてエンコードされている環要素の前記対応する法のもとでの加算および/または乗算のために利用されるテーブルが、前記対応する法に関連付けられた基本要素の位数を法とするモジュロ演算を含む算術を定義する、請求項1記載の計算装置。
前記中間加算整数リストを決定することがさらに、前記第一および第二の加算入力整数リストから決定された整数を、第一の適用から帰結する整数リスト中の整数に加算すること前記基本要素の位数を法としてのモジュロ演算を含む、
請求項8記載の計算装置。
・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第一の整数から前記第二の整数リストの第一の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第一の整数リストの第二の整数から前記第二の整数リストの第一の整数を引いたもの乗したもの、によって形成される環要素に適用される、および/または
・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第一の整数から前記第一の整数リストの第二の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第二の整数リストの第一の整数から前記第一の整数リストの前記第二の整数を引いたもの乗したもの、によって形成される環要素に適用される、および/または
・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第二の整数から前記第一の整数リストの第一の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第二の整数リストの第一の整数から前記第一の整数リストの前記第一の整数を引いたもの乗したもの、によって形成される環要素に適用される、
請求項8または9記載の計算装置。
当該計算装置が、整数リストとしてエンコードされている環要素の前記対応する法のもとでの前記乗算を実行する乗算ユニットを有しており、前記乗算ユニットは、前記テーブルを利用して実行される第一の乗算入力環要素および第二の乗算入力環要素の乗算を、
・前記第一の乗算入力環要素をエンコードする第一の乗算入力整数リストおよび前記第二の乗算入力環要素をエンコードする第二の乗算入力整数リストを受領する段階と、
・前記第一および第二の乗算入力整数リストから決定される環要素に前記増分テーブルを適用することによって乗算出力環要素をエンコードする乗算出力整数リストを決定する段階であって、前記乗算出力環要素は前記第一の乗算入力環要素および前記第二の乗算入力環要素のモジュラー乗算に等しい、段階とによって実行するよう構成されている、
請求項1ないし10のうちいずれか一項記載の計算装置。
計算装置が合成法を法とする難読化された算術を剰余数系において実行するための電子的な計算方法であって、前記剰余数系は法の系列について定義され、それぞれの法が可換環を定義し、前記系列のそれぞれの法について関連付けられた基本要素が存在して、その法を法とするそれぞれの環要素が、それらの環要素がその基本要素の冪乗の線形結合に等しくなるよう、整数リストとして表現されうるという条件を満たし、それぞれの冪乗は前記整数リストによって決定される指数をもち、当該方法は、
・前記合成法を法とした一つまたは複数のオペランドを、それらの法を法とする環要素の一つまたは複数の系列として前記計算装置のオペランド記憶部に記憶する段階であって、ある系列の各環要素は法の前記系列の対応する法に関連付けられ、前記系列の少なくとも一つの環要素が整数リストとしてエンコードされている、段階と、
・前記計算装置の計算ユニットによって、テーブル記憶部に記憶された増分テーブルを利用して、環要素数系に従って前記オペランド記憶部の第一および第二のオペランドを加算または乗算する段階であって、
前記増分テーブルは、前記可換環における演算を定義するものであり、
前記増分テーブルは、前記系列におけるそれぞれの法について、法の前記系列の法に関連付けられた、ある増分要素について定義された増分テーブルを含み、
前記増分テーブルは、入力環要素をエンコードする入力整数リストを、該入力環要素に前記増分要素を加えたものに等しい出力環要素をエンコードする出力整数リストにマッピングするものであり、
前記オペランド記憶部の第一および第二のオペランドの加算は、第一のオペランドを表わす環要素の系列のうち前記法の系列のそれぞれの法に対応する環要素を、第二のオペランドを表わす環要素の系列のうち前記法の系列の対応する法に対応する環要素と、前記対応する法のもとで加算することを含み、該加算は、加算される環要素が整数リストとしてエンコードされている場合には、前記テーブル記憶部に記憶されている前記増分テーブルを利用して実行され、
前記オペランド記憶部の第一および第二のオペランドの乗算は、第一のオペランドを表わす環要素の系列のうち前記法の系列のそれぞれの法に対応する環要素を、第二のオペランドを表わす環要素の系列のうち前記法の系列の対応する法に対応する環要素と、前記対応する法のもとで乗算することを含み、該乗算は、乗算される環要素が整数リストとしてエンコードされている場合には、前記テーブル記憶部に記憶されている前記増分テーブルを利用して実行される、
段階とを含む、
とを含む、
計算方法。
【発明を実施するための形態】
【0023】
本発明は多くの異なる形の実施形態が可能であるが、本開示は、本発明の原理を例解するものと考えられ、本発明を図示および記述される個別的な実施形態に限定することは意図されていないとの理解のもとに、一つまたは複数の個別的実施形態について図面に示し、本稿で詳細に記述する。
【0024】
以下では、理解のために、実施形態の諸要素が動作において記述される。しかしながら、それぞれの要素がそれらによって実行されると記述されている機能を実行するよう構成されていることは明白であろう。
【0025】
図1aは、電子計算装置のある実施形態の例を概略的に示している。
【0026】
計算装置100は、オペランド記憶110を有する。オペランド記憶110は、計算が実行される対象となる一つまたは複数のオペランドを記憶するよう構成される。計算は加算演算を含む。計算は乗算演算をも含んでいてもよい。加算および/または乗算演算ならびに制御論理を組み合わせることによって、追加的な演算、たとえば減算および除算演算が構築されうる。
【0027】
図1のaは、オペランド記憶110に記憶されている二つのオペランドを示している:オペランド101およびオペランド106である。
図1のaは二つのオペランドしか示していないが、より多くのオペランドがあってもよい。これらのオペランドは合成法(M)を法とする剰余を表現する。これらのオペランドは、剰余数系に好適な仕方で表現される。剰余数系は法の系列(m
1,m
2,…,m
N)によって定義される。それぞれの法が可換環を定義する。ある実施形態では、これらの法はみな整数であり、あるいはみな多項式である。後者の場合、それらの多項式は、全部の多項式について同じ環から取られる係数をもつ。これらの多項式の係数はモジュラー係数、すなわちある法を法とする整数であってもよい。これらの係数についての環を定義するために使われる法は、すべての法について同じである。
【0028】
前記法の系列のある法m
iが整数である場合、対応する環は
【0029】
【数1】
〔便宜上Z
miと記すことがある〕と表わされる。前記法の系列のある法m
i(x)が多項式である場合、対応する環はZ
n(x)/m
i(x)と表わされる。後者の場合、多項式の係数についての共通の法はnと表わされる。
【0030】
合成法(combined modulus)は、法の系列における法(m
1,m
2,…,m
N)の最小公倍数とされてもよい。それらの法がペアごとに互いに素である場合には、合成法はそれらの法の積とされてもよい。合成法を法とする数xを剰余数系で表現するには、その数は系列x
i=x mod m
iにマッピングされる。ここで、m
iは法m
1ないしm
Nである。ある実施形態では、合成法は、上述した最小公倍数の真の約数である。このことは、表現できる数の空間がより小さくなるという欠点があるが、他方では数が複数の表現を獲得し、このことは難読化計算のいくつかの実施形態では望ましいことがある。
【0031】
オペランド記憶110に記憶されたオペランドは、それらの法を法とする環要素の系列として表現される。系列のそれぞれの環要素は、法の系列の対応する法に関連付けられるので、系列を順に記憶する必要はない。たとえば、系列は、オペランド記憶にわたって分散して記憶されていてもよい。
【0032】
図1のaは、第一の法を法とする剰余102、第二の法を法とする剰余103、第三の法を法とする剰余104という三つの剰余の系列として記憶されている第一のオペランド101を示している。同様に、第二のオペランド106は、第一の法を法とする剰余107、第二の法を法とする剰余108、第三の法を法とする剰余109という三つの剰余の系列として記憶されている。第一、第二および第三の剰余はそれぞれm
1、m
2およびm
3を法とする剰余である。異なる数の法、たとえば二つだけの法、あるいは四つ以上の法があってもよい。典型的にはすべての法は異なる。ある実施形態では、それらの法はペアごとに互いに素である。ペアごとに互いに素である法については、合成法はそれらの法の積とされてもよい。これによれば合成法は比較的大きくなる。
【0033】
計算装置100は、オペランド記憶の第一のオペランドと第二のオペランドを剰余数系に従って加算および/または乗算するよう構成された計算ユニット130を有する。たとえば、二つの系列x
iおよびy
iによって表現される(オペランドの系列においては、インデックスはたとえば1からNまでのすべての法にわたる)二つのオペランドxおよびy、たとえばオペランド101および106を考える。二つのオペランドを加算するためには、計算装置は系列x
i+y
i mod m
iを計算してもよい。系列の各要素は、法の系列の対応する法を法として計算されることを注意しておく。同様に、二つのオペランドを乗算するためには、計算装置は系列x
i・y
i mod m
iを計算してもよい。ここでもまた、系列の各要素は、法の系列の対応する法を法として計算される。これが合成法を法とする加算および乗算の表現になるというのが、剰余数系の結果である。このことはいわゆる孫子の剰余定理によって証明される。
【0034】
これら加算または乗算演算の少なくとも一方について、同質難読化が使われる。これは、実行される実際の計算が法m
i自身とは異なる法についてのモジュロ演算を含むことを含意する。こうして、機能的には特定の法m
iを法とする加算または乗算がなされるが、実際の計算は異なる数についてのモジュロ演算を示すだけである。この奇妙な状況は、同質難読化の帰結の一つであり、下記および先に引用した以前の出願においてさらに説明されている。
【0035】
この実施形態における法m
iは、同質難読化を許容するよう、特別に選ばれている。具体的には、系列のそれぞれの法(m
i)について、関連付けられた基本要素(u
i)が存在して、法(m
j)を法とするそれぞれの環要素(x
j)が、それらの環要素がその基本要素の冪乗の線形結合に等しくなるよう、整数リスト(a
j,b
j)として表現されうるという条件を満たす。ここで、前記冪乗は、前記整数リストによって決定される指数をもつ。環要素x
jを冪乗の線形結合として表現する正準的な仕方は、環要素x
jを基本要素の二つの冪乗の間の差として表現することによるものである。ここで、冪乗の指数は前記整数リストに含まれるものである。たとえば、m
jを法とするそれぞれの環要素x
jは
【0036】
【数2】
と書かれてもよい。この表現を例示的表現とも称することにする。ただし、たとえば
【0037】
【数3】
など、環要素を表現する種々の仕方がある。さらなる例は以前の出願において与えてある。
【0038】
図1のbは、第一の法を法としての剰余の例を概略的に示している。整数107.1および107.2を含む整数のリストが示されている。たとえば、剰余107は二つの整数107.1および107.2によって表現されうる。それによれば、表現される剰余は基本要素の冪乗の線形結合
【0039】
【数4】
であり、冪乗は整数リストによって決定される指数をもつ。この例では、整数107.1はa
jであることができ、整数107.2はb
jであることができる。同じ法についてのオペランド102における剰余も、整数102.1および102.2を使って整数リストとして表現される。ある実施形態では、これらの整数リストにおける整数は0から基本要素の位数から1を引いたものまでの間である(両端含む)。
【0040】
記憶110における他の剰余、たとえば102、103、104、108、109は同様に記憶されうる。ある実施形態では、ある特定の法に関連付けられた系列におけるすべての環要素は、整数リストとして表現される。たとえば、環要素107が整数リストとして表現される場合、対応する環要素102も同じ基本要素を使って整数リストとして表現されうる。これは、要素107および102の両方に関わる計算が同質難読化を使って実行されることを許容する。
【0041】
同質難読化を使って剰余に対して算術を実行することは一般に、二つの型の演算に関わる:基本要素の位数を法とする整数リスト内の整数に対する算術と、テーブルの適用である。このテーブルは、整数リスト内の整数から決定される環要素に固定した要素を加えるので、増分テーブルと称される。これらの計算を組織するための種々の仕方がある。下記では、これがどのようになされうるかを前記例示的表現について説明する。さらなる例は以前の出願において与えてある。
【0042】
図1のaに戻ると、計算装置100はテーブル記憶120を有する。テーブル記憶120は、系列内の法のそれぞれについて、法の系列のある法に関連付けられた、ある増分要素(−1;1;u
t)について定義された増分テーブル(T)を記憶するよう構成される。
図1の例では、三つの異なる法があり、それぞれ三つの基本要素の一つに関連付けられており、それぞれ増分テーブルに関連付けられている。テーブル記憶120は増分テーブル121の系列を記憶する。系列は増分テーブル122、123、124を有する。テーブルを法m
iおよび基本要素u
iに対応するT
iと表わしてもよい。法および基本要素は計算中は必要とされず、計算装置100に明示的に記憶される必要はないが、増分テーブルは計算を実行するために必要とされる。増分テーブルは、法、基本要素、冪乗と環要素の間の選ばれた線形マッピングおよび増分値に依存する。
【0043】
増分テーブルは、入力環要素(たとえばk=u
k1−u
k2)を、出力環要素(たとえばl=u
l1−u
l2)をエンコードする出力整数リストにマッピングする(たとえばT((k
1,k
2))=(l
1,l
2))。ここで、出力環要素は入力環要素に増分要素を加えたものに等しくなり(たとえばl=k+1)、出力環要素は基本要素(u)の冪乗の線形結合に等しく、冪乗は出力整数リストによって決定される指数をもつ。
【0044】
増分値は1であってもよいが、これは必須ではない。−1または基本要素の冪乗や他の値であってもよい。
【0045】
計算ユニット130に戻ると、先述したように、剰余数系を使うと、合成法を法とする加算および乗算は、それぞれ法の系列のうちのある法を法とする一連の別個の計算を実行することによって実行されうる。たとえば、計算ユニット130は加算ユニット131の系列および乗算ユニット136の系列を有していてもよい。乗算演算が所望されない場合には、乗算ユニットは省略されてもよい。加算および/または乗算ユニットのそれぞれは、前記の法の一つを法として計算を行なう。
図1は、加算ユニット132、133、134および乗算ユニット137、137、139を示している。
【0046】
計算ユニット130は、たとえばモジュロ・ユニットとして実装される、モジュロ演算器141の系列をも有する。これらのモジュロ演算器は、法の系列のある法に関連付けられた基本要素の位数を法として、モジュロ演算を実行する。モジュロ演算器141は、系列中の法自身を法としてモジュロ演算を実行するよう構成されているのではないことを注意しておく。機能的には系列中の法を法としたモジュロ演算が計算されるが、同質難読化を使ってエンコードされるときは、実行される実際の計算は基本要素の位数を法とするモジュロ演算である。異なる数、すなわち基本要素の位数を法とするモジュロ演算がエンコードにおいてモジュロ演算を実現できることは、同質難読化によって引き起こされる。モジュロ演算器141は、それぞれの加算よび乗算ユニット131および136によって使われる。
【0047】
まとめると、オペランドはいくつかの異なる法を法として表現される。それぞれの法に基本要素とテーブルが関連付けられている。剰余のうちの少なくとも一つだが可能性としては全部が整数リストとして表現される。該表現は、その剰余の法に関連付けられた基本要素に依存する。その法に関連付けられた基本要素の位数を使ったモジュロ演算が、一つまたは複数の加算ユニットおよび乗算ユニットによって使用される。
図1のaの例では、剰余102および107は同じ法についてであり、テーブル122はその法に関連付けられた基本要素についてであり、加算ユニットおよび乗算ユニット132および137はその法を法として、モジュロ演算器142を使って動作する。同じことは同様に他の法についてもいえる。
【0048】
図1のaでは、一連の法のうち同じ法に関連付けられたすべての要素は縦の列に配置されている。この例では、三つの異なる法が使われた。二つの法または四つ以上の法を使うことも可能である。
【0049】
一連の法のうちその法を法とするすべての剰余が同質難読化を使ってエンコードされる、すなわち整数リストとして表現されることは必須ではない。たとえば、いくつかは単純な値として、たとえば関連する法を法とする整数として表現されてもよい。たとえば、いくつかは異なる仕方で、たとえば伝統的な非同質な、テーブル・ベースのエンコードを使ってエンコードされてもよい。剰余数系はそれぞれの法に別個に作用するので、そのような異なるエンコードは並列して使用されてもよい。以下の例では、オペランドについての系列中のすべての剰余が整数リストとして同質難読化を使って表現されるとする。
【0050】
動作では、計算ユニット130はオペランド101および106を加算してもよい。これは次のようになされてもよい:加算または乗算ユニット131または136は整数リスト102および107に対して作用して中間整数リストを得る;モジュロ演算器142を使って、すなわち関連する基本要素のベースを法として、中間整数リストの各要素にモジュロ演算が適用される。結果として得られる中間整数リストにテーブル122が適用される。加算または乗算ユニットはテーブル適用の結果および整数リスト102および/または107に対して作用し、モジュラー演算器142を使って第二のモジュロ演算を実行し、再びテーブル122を適用することを続けてもよい。加算および乗算演算のより詳細な記述は、以前の出願に見出すことができる。他の法について同様の演算が実行される。
【0051】
結果は、整数リスト表現における加算または乗算の表現である。この結果は、オペランド記憶110に記憶されて、将来の計算のために使われてもよい。加算および乗算演算を組み合わせることによって他の演算が実装されてもよい。
【0052】
以前の出願は、整数環(整数の法を法とする整数)または多項式環(多項式の法を法とするモジュラー係数をもつ多項式)の多くの例を与えている。
【0053】
図2は、電子計算装置200のある実施形態の例を概略的に示している。装置200は装置100に基づく。オペランド記憶110およびテーブル記憶120は装置200でも装置100と同じであってもよい。装置200は法および基本要素の選択および計算装置230の選択において異なっている。
【0054】
装置200については、法の系列の二つの異なる法に関連付けられた少なくとも二つの基本要素の位数が等しい。より好ましくは、法の系列の法に関連付けられたすべての基本要素のすべての位数が等しい。装置100と同様に、合成法は法の系列における法(m
1,m
2,…,m
N)の最小公倍数に等しくてもよい。
図2は、すべての位数が同じである状況を示している。
【0055】
二つの基本要素が同じ位数をもつ場合には、それらの基本要素が異なる法に関連付けられていたとしても、モジュロ演算器はその法についてのモジュロ演算のために共有されてもよい。それぞれの法はテーブル記憶120において独自の増分テーブルをもち続けることを注意しておく。異なる法の基本要素の位数が同じであれば、モジュロ演算も含めて整数リストに対する演算はみな同じである。基本要素の位数を法としているからである。しかしながら、テーブル演算は各異なる法について一意的なままである。したがって、異なる法についての計算は高い度合いで同一であり、異なる増分テーブルが使われるというだけである。増分テーブルのサイズも同じであってもよい。増分テーブルのサイズは基本要素の位数に依存しうるからである。(高度な演算では、整数リストにおける整数間の差は許容される差集合に制約される。これは、異なる法について増分テーブルのサイズを異ならせることがある。)
図2に示される計算ユニット230は、モジュロ演算器242、加算ユニット232および乗算ユニット237を有する。
【0056】
動作では、計算ユニット230はオペランド101および106を加算してもよい。これは次のようになされてもよい:加算または乗算ユニット232または237は整数リスト102および107に対して作用して中間整数リストを得る;モジュロ演算器242を使って、すなわち関連する基本要素のベースを法として、中間整数リストの各要素にモジュロ演算が適用される。結果として得られる中間整数リストにテーブル122が適用される。加算または乗算ユニットはテーブル適用の結果および整数リスト232および/または237に対して作用し、モジュラー演算器242を使って第二のモジュロ演算を実行し、再びテーブル122を適用することを続けてもよい。
【0057】
他の法について同様の演算が実行される。たとえば:加算または乗算ユニット232または237は整数リスト103および108に対して作用して中間整数リストを得る;モジュロ演算器242を使って、すなわち関連する基本要素のベースを法として、中間整数リストの各要素にモジュロ演算が適用される。結果として得られる中間整数リストにテーブル123が適用される。加算または乗算ユニットはテーブル適用の結果および整数リスト232および/または237に対して作用し、モジュラー演算器242を使って第二のモジュロ演算を実行し、再びテーブル123を適用することを続けてもよい。などとなる。
【0058】
加算および乗算ユニット232および237は、それらの法に対応する増分テーブルを、前記系列のある法を法としての計算に適用するよう構成される。あるいはまた、加算および乗算ユニット232および237は、
図1のような加算および乗算ユニットの系列として実装されてもよい。該系列の各ユニットは特定の増分テーブルについて、だがモジュロ演算器242を使って配置される。
【0059】
単一のモジュロ演算器242を使うことの利点は、計算ソフトウェアからは、どのモジュロ演算のために計算が実行されるのかがわからないということである。
【0060】
剰余数系(RNS: Residue Number System)は、より大きな法に対する計算をするために、小さな複数の法を使うことを許容する。下記の法はみな位数30の基本要素をもつ。それぞれの法について、位数30のそのような基本要素の例を下記に与える。
【0061】
【表1】
これらの法を使ってRNS数系を作り出してもよい。たとえば、2^32=4294967296より大きな合成法をもつ、これらの法の二つの選択が可能である。
93*143*181*209*231=116213298201
99*151*183*211*241=139111402617
。
【0062】
これら二つの集合におけるすべての法が互いに素ではないことを注意しておく。このように、1バイトに収まる要素のみを使う演算を使って、32ビット語に対する演算が計算されうる。RNSおよび混合基系の完全な記述については非特許文献1を参照。
【0063】
多項式剰余数系が同様に構築されうる。たとえば、同じベース環上で同質難読化を許容するいくつかの互いに素な多項式を選択する。対応するRNS系は、ずっと大きな多項式上での、たとえば選択された多項式の積を法とする難読化計算を許容する。
【0064】
オペランド記憶部110およびテーブル記憶部120は電子的なメモリとして実装されてもよい。これらは単一の記憶部に、たとえば単一の電子的なメモリとして組み合わされてもよい。増分テーブルはルックアップテーブルとして実装されてもよい。
【0065】
典型的には、装置100および200はそれぞれ、装置100および200において記憶された適切なソフトウェアを実行するマイクロプロセッサ(図示せず)を有する。たとえば、そのソフトウェアは、対応するメモリ、たとえばRAMのような揮発性メモリまたはフラッシュ(図示せず)のような不揮発性メモリ(図示せず)においてダウンロードされているおよび/または記憶されているのでもよい。あるいはまた、装置100および200は、全体的にまたは部分的に、プログラム可能な論理において、たとえばフィールドプログラマブルゲートアレイ(FPGA)として実装されてもよい。装置100および200は全体的または部分的に、いわゆる特定用途向け集積回路(ASIC)、すなわち特定の用途のためにカスタマイズされる集積回路(IC)として実装されてもよい。テーブルおよびオペランド記憶は、電子的なメモリ、磁気的な記憶などとして実装されてもよい。メモリは揮発性または不揮発性でありうる。
【0066】
ある実施形態では、装置はオペランド記憶回路および計算回路を有する。装置は、追加的な回路、たとえばモジュラー演算回路、加算回路、乗算回路およびテーブル記憶回路;本稿に記載される対応するユニットを実装する回路の一つまたは複数を有していてもよい。これらの回路はプロセッサ回路および記憶回路であってもよく、プロセッサ回路が記憶回路に電子的に表現されている命令を実行してもよい。それらの回路もFPGA、ASICなどでありうる。
【0067】
図3は、電子計算方法300の実施形態の例を概略的に示している。電子計算方法は、合成法(M)を法とした難読化された算術を剰余数系において実行するよう構成される。剰余数系は一連の法(m
1,m
2,…,m
N)について定義され、それぞれの法が可換環(Z
m1;Z
n[x]/m
1(x))を定義する。系列のそれぞれの法(m
i)について、関連付けられた基本要素(u
i)が存在して、法(m
j)を法とするそれぞれの環要素(x
j)が、それらの環要素がその基本要素の冪乗の線形結合に等しくなる(x
j=u
iaj−u
ibj)よう、整数リスト((a
j,b
j))として表現されうるという条件を満たす。ここで、前記冪乗は、前記整数リストによって決定される指数をもつ。本方法は、
・合成法(M)を法とする一つまたは複数のオペランドを、それらの法を法とする一つまたは複数の系列の環要素として記憶する段階310であって、ある系列の各環要素はその系列の法のうちの対応する法に関連付けられ、その系列の少なくとも一つの環要素が整数リストとしてエンコードされる、段階と、
・前記オペランド記憶の第一および第二のオペランドを環要素数系に従って加算および/または乗算する段階320とを含む。
【0068】
本方法は、たとえば
図1のa、bおよび
図2を参照して述べたように拡張されてもよい。
【0069】
本方法を実行する多くの異なる仕方が可能である。このことは当業者には明白であろう。たとえば、段階の順序は変えられてもよく、いくつかの段階は並列に実行されてもよい。さらに、段階と段階の間に、他の方法段階が挿入されてもよい。挿入される段階は、本稿に記載されるような方法の洗練を表わしていてもよく、あるいは本方法に無関係であってもよい。さらに、所与の段階は次の段階が開始される前に完全に完了していないこともありうる。
【0070】
実施形態に基づく方法は、プロセッサ・システムに方法300を実行させるための命令を含むソフトウェアを使って実行されてもよい。ソフトウェアは、システムの特定のサブエンティティによって行なわれる段階のみを含んでいてもよい。ソフトウェアは、ハードディスク、フロッピー、メモリなどといった好適な記憶媒体に記憶されていてもよい。ソフトウェアは、ワイヤに沿ったあるいは無線の信号として、あるいはデータ・ネットワーク、たとえばインターネットを使って送られてもよい。ソフトウェアはダウンロードおよび/またはサーバー上でのリモート使用のために利用可能にされてもよい。本発明に基づく方法は、本方法を実行するようプログラム可能な論理、たとえばフィールドプログラマブルゲートアレイ(FPGA)を構成するよう構成されたビットストリームを使って実行されてもよい。
【0071】
本発明が、本発明を実施するために適応されたコンピュータ・プログラム、特にキャリア上またはキャリア中のコンピュータ・プログラムに拡張されることは理解されるであろう。プログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形のようなコード中間ソースおよびオブジェクトコードの形で、あるいは本発明に基づく方法の実装において使うために好適な他の任意の形でありうる。コンピュータ・プログラム・プロダクトに関係する実施形態は、記載される方法のうち少なくとも一つの方法の処理段階のそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに分割され、および/または静的または動的にリンクされうる一つまたは複数のファイルにおいて記憶されてもよい。コンピュータ・プログラム・プロダクトに関係する別の実施形態は、記載されるシステムおよび/またはプロダクトのうち少なくとも一方の各手段に対応するコンピュータ実行可能命令を含む。
【0072】
図4のaは、コンピュータ・プログラム1020を有する書き込み可能部分1010を有するコンピュータ可読媒体1000を示している。コンピュータ・プログラム1020は、プロセッサ・システムに、実施形態に基づく難読化算術の方法を実行させるための命令を含む。コンピュータ・プログラム1020はコンピュータ可読媒体1000上で、物理的なマークとして、あるいはコンピュータ可読媒体1000の磁化によって具現されてもよい。しかしながら、他の任意の好適な実施形態も考えられる。さらに、コンピュータ可読媒体1000はここでは光ディスクとして示されているが、コンピュータ可読媒体1000はハードディスク、半導体メモリ、フラッシュメモリなどといったいかなる好適なコンピュータ可読媒体であってもよく、記録不可能でも記録可能でもよいことは理解されるであろう。コンピュータ・プログラム1020は、難読化算術の前記方法をプロセッサ・システムに実行させるための命令を含む。
【0073】
図4のbは、実施形態に基づくプロセッサ・システム1100の概略的な表現を示している。プロセッサ・システムは、一つまたは複数の集積回路1110を有する。一つまたは複数の集積回路1110のアーキテクチャーは
図4のbに概略的に示されている。回路1110は、実施形態に基づく方法を実行するためおよび/またはそのモジュールもしくはユニットを実装するためにコンピュータ・プログラム・コンポーネントを走らせるための処理ユニット1120、たとえばCPUを有する。回路1110は、プログラミング・コード、データなどを記憶するためのメモリ1122を有する。メモリ1122の一部は読み出し専用であってもよい。回路1110は通信要素1126、たとえばアンテナ、コネクタまたはその両方などを有していてもよい。回路1110は、本方法において定義される処理の一部または全部を実行するための専用の集積回路1124を有していてもよい。プロセッサ1120、メモリ1122、専用IC 1124および通信要素1126は相互接続1130、たとえばバスを介して互いに接続されてもよい。プロセッサ・システム1110は、それぞれアンテナおよび/またはコネクタを使って接触式および/または非接触式通信のために構成されていてもよい。
【0074】
上記で引用した以前の出願においては、可換環における難読化算術を実行するための計算装置の実施形態が与えられている。本稿の実施形態では同質難読化は法の系列の個々の法に適用される。
【0075】
前記計算装置は、たとえば加算および/または乗算ユニットを実装するよう装置100または200に適用されてもよい。計算装置および方法は、有限の可換環において難読化算術を実行する。そのような環について挙げられた一例は、ある数を法とする整数(Z
n)である。ある実施形態に基づく生成装置は、ある法を法とする整数によって形成される環(Z
n)が難読化算術を許容するような法を見出す。環要素、たとえば整数を難読化領域においてエンコードし、難読化領域からデコードするために必要とされる基本要素も生成される。
【0076】
同質難読化、たとえば環要素、特にある法を法とする整数を表現することは、暗号化算術の一つの型であり、時に準同型暗号と称される。難読化を使って、たとえばコンピュータ・ソフトウェア・コードが、該コードのリバースエンジニアリングに対して保護される。ここでの難読化は、算術を実行するコードの一部である。デジタル難読化算術のある実施形態では、計算は暗号文に対して実行されて、解読されたときに平文に対して実行された演算の結果に一致する暗号化された結果を生成してもよい。換言すれば、何らかの伝統的なソフトウェア難読化の域を越えて、暗号化された値に対して算術が実行されうる。それにもかかわらず、同質難読化を使って実装される算術は、そのままの値に対して実行される算術と、機能的に同一であってもよい。
【0077】
環の要素は、法を法とする整数として定義されてもよい。環の要素は環要素と称される。環要素は剰余と呼ばれてもよい。環要素は0から法から1を引いたものまでの間の整数(0および法から1を引いたものも含まれる)としてデジタル的に表現されてもよい。環要素に対して、加算および乗算が定義される。これらは環加算および環乗算と称される。
【0078】
環要素は、必要であればいかなる好適な形で表現されてもよい。たとえば、Z
nの要素は整数として表現されてもよい。しかしながら、計算装置において、環要素は整数リストとして表現される。たとえば、環要素aは計算装置においてリスト(a
1,a
2)によって表現されてもよい。整数リストは、環要素と整数リストとの間の何らかのマッピングに従って環要素をエンコードする。任意の環要素を与えられると、その環要素を表わす少なくとも一つの整数リストがあり、任意の整数リストを与えられると、それが表わすちょうど一つの環要素がある。実施形態では、任意の環要素が整数リストとして表現されうる。
【0079】
整数リストは少なくとも二つの要素をもつ。実のところ、加算および乗算演算は整数リストが短くなればより少数のステップですむ。よって、ある実施形態では、整数リストは常に二つの要素をもつ。メインの記述においては、整数リストは整数対であると想定するが、三つ以上の要素をもつ整数リストの例が以前の出願において与えられている。例として、(a
1,a
2)は環要素(u
a1−u
a2)にマッピングされてもよく、ここで、uは基本環要素と称される特別な環要素である。以前の出願において、複数の基本要素の使用を含め多くの変形が論じられている。しかしながら、メインの記述では、「例示的エンコード」として、所与の整数リスト(a
1,a
2)が環要素(u
a1−u
a2)にマッピングされると想定する。このように、それぞれの環要素は、基本要素uの二つの冪乗の間の差として表わせる。
【0080】
下記では、たとえばある実施形態に基づいて生成装置によって生成される、法および基本要素を使った難読化算術のいくつかの例が呈示される。計算装置の否定、加算および乗算ユニットは、これらの実施形態の任意のものについて構成されうる。すべての例は可換環Z
nに当てはまる。本稿では、nは正の整数の法である。可換環の任意の要素が選ばれたエンコードにおいて表現されうる。すべての可換環がすべての要素が所与のエンコードにおいて、すなわち所与の型の整数リスト表現として、表現されることを許容するものではない。可換環Rを与えられると、R内の任意の要素が所与のエンコード型を使って整数リストとして表現されうる場合に、Rは(フル)同質難読化を許容するという。当業者は、エンコードが与えられたときに所与の可換環が完全な同質難読化を許容するかどうかを、たとえばあらゆる許容できるエンコードを生成してそれらが一緒になって所与の環のすべての要素を表わすことを検証することによって、検証できる。
【0081】
下記ではまず、例示的エンコードの記述が与えられる。多くの型のエンコードがあるが、環要素が整数のリストとして表現されうることは共通している。これらの整数は環要素ではない。たとえば、環が整数環でなく、たとえば多項式環であっても元〔要素〕は整数リストとして表現されうる。使用されるエンコード、どのように所与の整数リストが環要素にマッピングされるかは、エンコードと称される。典型的には、整数リストは常に同じ長さであるが、これは必須ではない。一般に、エンコードがより多くの型の整数リスト、たとえばより長いリストを許容するほど、所与の環要素が異なる仕方で整数リストとしてエンコードされうる可能性が高くなる。上記例示的エンコードをもつ可換環Rを与えられたとき、Rの任意の元aが何らかの整数a
1およびa
2についてu
a1−u
a2と書ける特別な環要素uがある。そのような特別な環要素を基本環要素と称することにする。すべての可換環がこのやり方でエンコードされうるのではないが、十分に多くの可換環について可能であり、該エンコードは有用である。整数a
1およびa
2はそれ自身としては環Rの環の元ではない;これらは基本元〔基本要素〕の位数を法として演算対象となる整数である。環要素aは基本元uの冪乗、つまりu
a1およびu
a2の線形結合に等しいことを注意しておく。この場合、線形結合はそれらの冪乗に+1または−1を乗算して足すことによって、より具体的には、第一の冪乗から第一の冪乗を引くことによって、得られる。計算装置は、上記の仕方でエンコードされた環要素に対して作用する。加算、否定および乗算ユニットはこのエンコードにおいて環要素に作用できる。
【0082】
増分テーブルTは加算および乗算演算両方において中心的な役割を演じる。増分テーブルは入力環要素をマッピングする。この場合、入力環要素は整数リストとして表現されていてもよい。たとえば、入力環要素k=u
k1−u
k2を表現する入力整数リスト(k
1,k
2)を与えられて、テーブルTはこれを、出力環要素l=u
l1−u
l2をエンコードする出力整数リストにマッピングする。たとえば、T((k
1,k
2))=(l
1,l
2)。出力環要素は増分環要素が入力環要素に環加算されたものに等しい。この例では、増分要素は1、すなわち環乗算についての恒等元である環要素に取られてもよい。この場合、l=k+1である。テーブルが、同じエンコードを使う諸環要素に直接適用されうることが便利である。よって上記整数リスト表現をもつ諸環要素に適用されうる。それにもかかわらず、テーブルが代替的なエンコードにおける環要素に適用される実施形態がある。該代替的なエンコードも、代替的な型だが、整数リストであってもよい。また、増分環要素は1である必要はない。
【0083】
下記では、否定、加算および乗算の演算が記述される。
【0084】
否定。
否定入力環要素a=u
a1−u
a2を表わす否定入力整数リスト(a
1,a
2)を与えられて、該整数リストを並べ替えることによって、この場合は順序を逆にすることによって、否定出力整数リストが得られてもよい。否定出力整数リストは(a
2,a
1)であってもよい。偶数位数をもつ基本要素についてそうであるようにu
m=−1となるmが存在するとすると、否定は代替的には、整数リストの各整数に定数、たとえばmを加算することによって得られてもよい。この場合、否定出力整数リストは(a
1+m,a
2+m)であってもよい。−a=u
a2−u
a1=u
a1+m−u
a2+mなので、これは成立する。整数リストにおける算術は好ましくは、基本元の位数を法として行なわれる。ここで、整数リストの整数は基本元の指数に対応する。よって、基本元の位数を法として同じである整数は同じ環要素をエンコードする。
【0085】
加算。
第一の加算入力環要素a=u
a1−u
a2をエンコードする受領された第一の加算入力整数リスト(a
1,a
2)および第二の加算入力環要素b=u
b1−u
b2をエンコードする第二の加算入力整数リスト(b
1,b
2)を加算するには、まず、中間加算環要素cをエンコードする中間加算整数リスト((c
1,c
2))が決定される。
【0086】
環要素cは、第一の加算入力環要素aに、基本元uの、第二の加算入力整数リスト、特に第二の加算入力整数リストの最初の整数から決定される冪乗を加えたものであってもよい。この例では、c=u
a1−u
a2+u
b1としてもよい。これを計算するには、c=u
a1−u
a2+u
b1=(u
a1-b1−u
a2-b1+1)u
b1であることを観察する。括弧内の項は、増分テーブルを使うエンコードにおいて書き直されてもよい。環要素u
a1-b1−u
a2-b1への増分テーブルの第一の適用を通じて、要素u
d1−u
d2=u
a1-b1−u
a2-b1+1が得られる。たとえば、T((a
1−b
1,a
2−b
1))=(d
1,d
2)による。すると、c
1=d
1+b
1およびc
2=d
2+b
1が得られる。このように、中間加算整数リスト((c
1,c
2))を決定することはさらに、第二の加算入力整数リストから決定された整数を第一の適用から帰結する整数リストにおける整数に加算することを含んでいてもよい。u
b1を整数リスト表現におけるある環要素に、この場合はaに加えることは、時に、正の還元(positive reduction)ステップと称される。
【0087】
加算ユニットは、中間加算環要素c=u
a1−u
a2+u
b1=u
c1−u
c2を整数リスト(c
1,c
2)として得た。中間加算環要素は、このように、一つまたは複数の基本元の冪乗の線形結合である。ここで、それらの冪乗は、第一および第二の加算入力整数リストから決定される。この場合、増分テーブルが適用されるのは、前記一つまたは複数の基本環要素(u)を第一の整数リストの最初の整数(a
1)から第二の整数リストの最初の整数(b
1)を引いたもの乗したものから、前記基本環要素(u)を第一の整数リストの第二の整数(a
2)から第二の整数リストの最初の整数(b
1)を引いたもの乗したものを引いたものによって形成される環要素u
a1-b1−u
a2-b1である。
【0088】
この例では、加算出力整数リストは、中間加算整数リストおよび第二の加算入力整数リストから決定された環要素への増分テーブルの第二の適用を通じて決定されてもよい。これは、中間加算環要素cと、基本元を第二の加算入力整数リスト、たとえば第二の加算入力整数リストの第二の整数b
2から決定される冪乗にしたもののマイナスとの和を計算することを含んでいてもよい:c−u
b2=u
c1−u
c2−u
b2。これは、増分テーブルの第二の適用前に、中間加算整数リストによって表わされる中間加算環要素を否定にすることによって達成されてもよい。cの否定は、上記のようになされてもよい。例として並べ替えを使うが、同じ動作は、指数に定数を加えることによって実行されてもよい。否定後は、前記和は、基本元を第二の加算入力整数リストから決定される冪乗にしたもののプラス(マイナスではなく)を使ってもよい:−c+u
b2=u
c2−u
c1+u
b2。この演算は上記と同じ型であり、u
b1を加えるのと同じ仕方でテーブル適用を通じて実行できる。この後は、結果が再び否定にされる。完全な加算は、二回の否定と同じ増分テーブルTの二回のテーブル適用を使ってもよい。
【0089】
整数リスト表現における環要素から、この場合cからu
b2を引くこと(すなわち−u
b2を加えること)は、時に負の還元(negative reduction)ステップと称される。負の還元ステップは否定にして、上記正の還元ステップを実行し、再び否定にすることによって実行されてもよい。
【0090】
多くの変形があり、そのいくつかは以前の出願において記述されている。たとえば、ある変形は、c=u
a1+u
b1−u
a2=(u
a1-a2+u
b1-a2−1)u
a2であることを使う。この例では、増分要素は−1である。増分テーブルへの入力はa
1−a
2およびb
1−a
2であってもよい。これらは整数リストとして書かれてもよいが、それらによって表わされる整数要素(u
a1-a2+u
b1-a2)はオペランド(たとえばu
a1−u
a2)とは異なるエンコードを使う。
【0091】
乗算。
第一の乗算入力環要素r=u
r1−u
r2をエンコードする受領された第一の乗算入力整数リスト(r
1,r
2)と第二の乗算入力環要素s=u
s1−u
s2をエンコードする第二の乗算入力整数リスト((s
1,s
2))とを乗算するために、第一の中間乗算整数リスト(t
1,t
2)および第二の中間乗算整数リスト(u
1,u
2)が決定される。乗算出力環要素をエンコードする乗算出力整数リストは、第一および第二の中間要素から決定される。他の実施形態では、二つより多くの中間乗算整数リストがあってもよい。r・s=(u
r1−u
r2)(u
s1−u
s2)=u
r1+s1−u
r1+s2+u
r2+s2−u
r2+s1=(u
r1+s1−u
r1+s2)+(u
r2+s2−u
r2+s1)=t+uとなる。展開された積の項を二つの項tおよびuに分割することは、異なる仕方で、たとえば(u
r1+s1−u
r2+s1)+(u
r2+s2−u
r1+s2)のようになされてもよい。
【0092】
このように、整数リストとして表現されている二つの環要素を乗算するために、それらの環要素は二つの新たな整数リストに変換されてもよく、該新たな変数リストを加算して乗算への答えを得ることができる。加算は上記のようになされてもよい。たとえば、乗算ユニットは中間整数リストを計算して、乗算ユニットに送ってもよい。
【0093】
たとえば、第一の中間乗算整数リストの第一の整数t
1は、第一の乗算入力整数リストの第一の整数r
1に第二の乗算入力整数リストの第一の整数s
1を加えたものであってもよく、第一の中間乗算整数リストの第二の整数t
2は、第一の乗算入力整数リストの第一の整数r
1に第二の乗算入力整数リストの第二の整数s
2を加えたものであってもよい:t
1=r
1+s
1、t
2=r
1+s
2;第二の中間乗算整数リストの第一の整数u
1は、第一の乗算入力整数リストの第二の整数r
2に第二の乗算入力整数リストの第二の整数s
2を加えたものであってもよく、第二の中間乗算整数リストの第二の整数u
2は、第一の乗算入力整数リストの第二の整数r
2に第二の乗算入力整数リストの第一の整数s
1を加えたものであってもよい:u
1=r
2+s
2、u
2=r
2+s
1。
【0094】
ある実施形態では、たとえばたった今開示した例では、算術は整数リストに対して実行され、環要素は何らかの自然な表現での環要素として計算される必要はない。ここで変形のいくつかを論じる。変形の多くは独立である。たとえば、変形エンコードが加算を実行するための変形と組み合わされてもよい。
【0095】
たとえばu
a1-b1などに対応する整数リストにおいて計算が実行されるときの難読化された算術を通じて、値はuの位数を法として約されてもよい。たとえばuの位数が30であれば、すべての計算はmod 30で実行されてもよい。
上述した実施形態は、本発明を限定するのではなく例解するものであり、当業者は多くの代替実施形態を設計できるであろうことを注意しておくべきである。
【0096】
請求項では、括弧内に参照符号があったとしてもその請求項を限定するものと解釈してはならない。動詞「有する/含む」およびその活用形の使用は、請求項において述べられているもの以外の要素やステップの存在を排除しない。要素の単数形の表現はそのような要素の複数の存在を排除しない。本発明は、いくつかの相異なる要素を有するハードウェアによって、および好適にプログラムされたコンピュータによって実装されうる。いくつかの手段を列挙する装置請求項では、これらの手段のいくつかが同一のハードウェア項目によって具現されてもよい。ある種の施策が互いに異なる従属請求項において記載されているというだけの事実が、これらの施策の組み合わせが有利に使用できないことを示すものではない。
【0097】
請求項では、括弧内の参照符号は実施形態の図面における参照符号または実施形態の公式を指し、それにより請求項の理解しやすさを増す。これらの参照は請求項を限定するものと解釈してはならない。
いくつかの態様を記載しておく。
〔態様1〕
合成法によって定義される可換環における難読化された算術を剰余数系において実行するよう構成された電子的な計算装置であって、前記剰余数系は法の系列について定義され、それぞれの法が可換環を定義し、前記系列のそれぞれの法について関連付けられた基本要素が存在して、その法を法とするそれぞれの環要素が、それらの環要素がその基本要素の冪乗の線形結合に等しくなるよう、整数リストとして表現されうるという条件を満たし、それぞれの冪乗は前記整数リストによって決定される指数をもち、当該計算装置は、
・前記合成法を法とした一つまたは複数のオペランドを、それらの法を法とする環要素の一つまたは複数の系列として記憶するよう構成されたオペランド記憶部であって、ある系列の各環要素は法の系列の対応する法に関連付けられ、前記系列の少なくとも一つの環要素が整数リストとしてエンコードされている、オペランド記憶部と、
・前記剰余数系に従って前記オペランド記憶部の第一および第二のオペランドを加算および/または乗算するよう構成された計算ユニットとを有する、
計算装置。
〔態様2〕
前記合成法および法の前記系列におけるそれらの法は、整数またはモジュラー係数をもつ多項式である、態様1記載の計算装置。
〔態様3〕
前記計算ユニットが前記整数リストに対して演算し、前記演算は前記基本要素の位数を法とするモジュロ演算を含み、法の前記系列の二つの異なる法に関連する少なくとも二つの基本要素の位数が等しい、態様1または2記載の計算装置。
〔態様4〕
法の前記系列の法に関連付けられたすべての基本要素の位数が等しい、態様1ないし3のうちいずれか一項記載の計算装置。
〔態様5〕
前記合成法が、法の前記系列における法の最小公倍数に等しい、態様1ないし4のうちいずれか一項記載の計算装置。
〔態様6〕
前記系列におけるそれぞれの法について、法の前記系列の法に関連付けられた、ある増分要素について定義された増分テーブルを記憶するよう構成されたテーブル記憶部を有しており、
前記増分テーブルは、入力環要素を、該入力環要素に前記増分要素を加えたものに等しい出力環要素をエンコードする出力整数リストにマッピングし、前記出力環要素は前記基本要素の冪乗の線形結合に等しく、該冪乗は前記出力整数リストによって決定される指数をもつ、
態様1ないし5のうちいずれか一項記載の計算装置。
〔態様7〕
前記計算ユニットが、整数リストとして表現されている前記第一および第二のオペランドにおける同じ法を法とした第一および第二の環要素に対して、該同じ法に関連付けられた基本要素の位数を法とするモジュロ演算を含む算術を実行し、該同じ法について記憶されている関連付けられた増分テーブルを適用するよう構成されている、態様6記載の計算装置。
〔態様8〕
前記計算ユニットが加算ユニットを有し、前記加算ユニットは、前記系列のそれぞれの法について、
・第一の加算入力環要素をエンコードする第一の加算入力整数リストおよび第二の加算入力環要素をエンコードする第二の加算入力整数リストを受領する段階と、
・前記第一および第二の加算入力整数リストから決定される環要素に前記増分テーブルを適用することによって加算出力環要素をエンコードする加算出力整数リストを決定する段階であって、前記加算出力環要素は前記第一の加算入力環要素および前記第二の加算入力環要素のモジュラー加算に等しい、段階とを実行するよう構成されている、
態様6または7記載の計算装置。
〔態様9〕
前記加算出力整数リストを決定することが、
・一つまたは複数の基本要素の冪乗の線形結合である環要素への前記増分テーブルの第一の適用によって、中間加算環要素をエンコードする中間加算整数リストを決定する段階であって、前記冪乗は前記第一および第二の加算入力整数リストおよび前記基本要素の位数を法とするモジュロ演算から決定される、段階と、
・前記加算出力整数リストを決定する段階であって、前記中間加算整数リストから決定されるおよび前記第二の加算入力整数リストから決定される環要素への前記増分テーブルの第二の適用と、前記基本要素の位数を法とするモジュロ演算とを含む、段階とを含む、
態様8記載の計算装置。
〔態様10〕
前記中間加算整数リストを決定することがさらに、前記第一および第二の加算入力整数リストから決定された整数を、第一の適用から帰結する整数リスト中の整数に加算すること前記基本要素の位数を法としてのモジュロ演算を含む、
態様9記載の計算装置。
〔態様11〕
・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第一の整数から前記第二の整数リストの第一の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第一の整数リストの第二の整数から前記第二の整数リストの第一の整数を引いたもの乗したもの、によって形成される環要素に適用される、および/または
・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第一の整数から前記第一の整数リストの第二の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第二の整数リストの第一の整数から前記第一の整数リストの前記第二の整数を引いたもの乗したもの、によって形成される環要素に適用される、および/または
・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第二の整数から前記第一の整数リストの第一の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第二の整数リストの第一の整数から前記第一の整数リストの前記第一の整数を引いたもの乗したもの、によって形成される環要素に適用される、
態様9または10記載の計算装置。
〔態様12〕
・前記増分テーブルの前記第二の適用の前に、前記中間加算整数リストによって表わされる前記中間加算環要素が否定にされる、
態様9ないし11のうちいずれか一項記載の計算装置。
〔態様13〕
当該計算装置が乗算ユニットを有しており、前記乗算ユニットは、
・第一の乗算入力環要素をエンコードする第一の乗算入力整数リストおよび第二の乗算入力環要素をエンコードする第二の乗算入力整数リストを受領する段階と、
・前記第一および第二の乗算入力整数リストから決定される環要素に前記増分テーブルを適用することによって乗算出力環要素をエンコードする乗算出力整数リストを決定する段階であって、前記乗算出力環要素は前記第一の乗算入力環要素および前記第二の乗算入力環要素のモジュラー乗算に等しい、段階とを実行するよう構成されている、
態様6ないし11のうちいずれか一項記載の計算装置。
〔態様14〕
合成法を法とする難読化された算術を剰余数系において実行する電子的な計算方法であって、前記剰余数系は法の系列について定義され、それぞれの法が可換環を定義し、前記系列のそれぞれの法について関連付けられた基本要素が存在して、その法を法とするそれぞれの環要素が、それらの環要素がその基本要素の冪乗の線形結合に等しくなるよう、整数リストとして表現されうるという条件を満たし、それぞれの冪乗は前記整数リストによって決定される指数をもち、当該方法は、
・前記合成法を法とした一つまたは複数のオペランドを、それらの法を法とする環要素の一つまたは複数の系列として記憶する段階であって、ある系列の各環要素は法の前記系列の対応する法に関連付けられ、前記系列の少なくとも一つの環要素が整数リストとしてエンコードされている、段階と、
・環要素数系に従って前記オペランド記憶部の第一および第二のオペランドを加算および/または乗算する段階とを含む、
計算方法。
〔態様15〕
コンピュータ・プログラムであって、該コンピュータ・プログラムがプログラム可能装置で実行されたときに態様14記載の方法を実行するよう構成されたコンピュータ・プログラム命令を有する、コンピュータ・プログラム。
〔態様16〕
コンピュータ可読媒体上に具現されている態様15記載のコンピュータ・プログラム。