(57)【特許請求の範囲】
【請求項１】
合成法によって定義される可換環における難読化された算術を剰余数系において実行するよう構成された電子的な計算装置であって、前記剰余数系は法の系列について定義され、それぞれの法が可換環を定義し、前記系列のそれぞれの法について関連付けられた基本要素が存在して、その法を法とするそれぞれの環要素が、それらの環要素がその基本要素の冪乗の線形結合に等しくなるよう、整数リストとして表現されうるという条件を満たし、それぞれの冪乗は前記整数リストによって決定される指数をもち、当該計算装置は、
・前記合成法を法とした一つまたは複数のオペランドを、それらの法を法とする環要素の一つまたは複数の系列として記憶するよう構成されたオペランド記憶部であって、ある系列の各環要素は法の系列の対応する法に関連付けられ、前記系列の少なくとも一つの環要素が整数リストとしてエンコードされている、オペランド記憶部と、
・前記可換環における演算を定義するテーブルを記憶しているテーブル記憶部と；
・前記剰余数系に従って前記オペランド記憶部の第一および第二のオペランドを加算および乗算を実行できる計算ユニットであって、
前記テーブル記憶部に記憶されているテーブルが、前記系列におけるそれぞれの法について、法の前記系列の法に関連付けられた、ある増分要素について定義された増分テーブルを含み、
前記増分テーブルは、入力環要素をエンコードする入力整数リストを、該入力環要素に前記増分要素を加えたものに等しい出力環要素をエンコードする出力整数リストにマッピングするものであり、
前記オペランド記憶部の第一および第二のオペランドの加算は、第一のオペランドを表わす環要素の系列のうち前記法の系列のそれぞれの法に対応する環要素を、第二のオペランドを表わす環要素の系列のうち前記法の系列の対応する法に対応する環要素と、前記対応する法のもとで加算することを含み、該加算は、加算される環要素が整数リストとしてエンコードされている場合には、前記テーブル記憶部に記憶されている前記増分テーブルを利用して実行され、
前記オペランド記憶部の第一および第二のオペランドの乗算は、第一のオペランドを表わす環要素の系列のうち前記法の系列のそれぞれの法に対応する環要素を、第二のオペランドを表わす環要素の系列のうち前記法の系列の対応する法に対応する環要素と、前記対応する法のもとで乗算することを含み、該乗算は、乗算される環要素が整数リストとしてエンコードされている場合には、前記テーブル記憶部に記憶されている前記増分テーブルを利用して実行される、計算ユニットとを有する、
計算装置。
【請求項２】
前記合成法および法の前記系列におけるそれらの法は、整数またはモジュラー係数をもつ多項式である、請求項１記載の計算装置。
【請求項３】
前記計算ユニットが前記整数リストに対して演算し、前記演算は前記基本要素の位数を法とするモジュロ演算を含み、法の前記系列の二つの異なる法に関連する少なくとも二つの基本要素の位数が等しい、請求項１または２記載の計算装置。
【請求項４】
法の前記系列の法に関連付けられたすべての基本要素の位数が等しい、請求項１ないし３のうちいずれか一項記載の計算装置。
【請求項５】
前記合成法が、法の前記系列における法の最小公倍数に等しい、請求項１ないし４のうちいずれか一項記載の計算装置。
【請求項６】
整数リストとしてエンコードされている環要素の前記対応する法のもとでの加算および／または乗算のために利用されるテーブルが、前記対応する法に関連付けられた基本要素の位数を法とするモジュロ演算を含む算術を定義する、請求項１記載の計算装置。
【請求項７】
前記計算ユニットが、整数リストとしてエンコードされている環要素の前記対応する法のもとでの前記加算を実行する加算ユニットを有し、
前記加算ユニットは、前記系列のそれぞれの法について、前記テーブルを利用して実行される第一の加算入力環要素および第二の加算入力環要素の加算を、
・前記第一の加算入力環要素をエンコードする第一の加算入力整数リストおよび前記第二の加算入力環要素をエンコードする第二の加算入力整数リストを受領する段階と、
・前記第一および第二の加算入力整数リストから決定される環要素に前記増分テーブルを適用することによって加算出力環要素をエンコードする加算出力整数リストを決定する段階であって、前記加算出力環要素は前記第一の加算入力環要素および前記第二の加算入力環要素のモジュラー加算に等しい、段階とを実行することによって実行するよう構成されている、請求項１ないし６のうちいずれか一項記載の計算装置。
【請求項８】
前記加算出力整数リストを決定することが、
・一つまたは複数の基本要素の冪乗の線形結合である環要素への前記増分テーブルの第一の適用によって、中間加算環要素をエンコードする中間加算整数リストを決定する段階であって、前記冪乗は前記第一および第二の加算入力整数リストおよび前記基本要素の位数を法とするモジュロ演算から決定される、段階と、
・前記加算出力整数リストを決定する段階であって、前記中間加算整数リストから決定されるおよび前記第二の加算入力整数リストから決定される環要素への前記増分テーブルの第二の適用と、前記基本要素の位数を法とするモジュロ演算とを含む、段階とを含む、
請求項７記載の計算装置。
【請求項９】
前記中間加算整数リストを決定することがさらに、前記第一および第二の加算入力整数リストから決定された整数を、第一の適用から帰結する整数リスト中の整数に加算すること前記基本要素の位数を法としてのモジュロ演算を含む、
請求項８記載の計算装置。
【請求項１０】
・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第一の整数から前記第二の整数リストの第一の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第一の整数リストの第二の整数から前記第二の整数リストの第一の整数を引いたもの乗したもの、によって形成される環要素に適用される、および／または
・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第一の整数から前記第一の整数リストの第二の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第二の整数リストの第一の整数から前記第一の整数リストの前記第二の整数を引いたもの乗したもの、によって形成される環要素に適用される、および／または
・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第二の整数から前記第一の整数リストの第一の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第二の整数リストの第一の整数から前記第一の整数リストの前記第一の整数を引いたもの乗したもの、によって形成される環要素に適用される、
請求項８または９記載の計算装置。
【請求項１１】
・前記増分テーブルの前記第二の適用の前に、前記中間加算整数リストによって表わされる前記中間加算環要素が否定にされる、
請求項８ないし１０のうちいずれか一項記載の計算装置。
【請求項１２】
当該計算装置が、整数リストとしてエンコードされている環要素の前記対応する法のもとでの前記乗算を実行する乗算ユニットを有しており、前記乗算ユニットは、前記テーブルを利用して実行される第一の乗算入力環要素および第二の乗算入力環要素の乗算を、
・前記第一の乗算入力環要素をエンコードする第一の乗算入力整数リストおよび前記第二の乗算入力環要素をエンコードする第二の乗算入力整数リストを受領する段階と、
・前記第一および第二の乗算入力整数リストから決定される環要素に前記増分テーブルを適用することによって乗算出力環要素をエンコードする乗算出力整数リストを決定する段階であって、前記乗算出力環要素は前記第一の乗算入力環要素および前記第二の乗算入力環要素のモジュラー乗算に等しい、段階とによって実行するよう構成されている、
請求項１ないし１０のうちいずれか一項記載の計算装置。
【請求項１３】
計算装置が合成法を法とする難読化された算術を剰余数系において実行するための電子的な計算方法であって、前記剰余数系は法の系列について定義され、それぞれの法が可換環を定義し、前記系列のそれぞれの法について関連付けられた基本要素が存在して、その法を法とするそれぞれの環要素が、それらの環要素がその基本要素の冪乗の線形結合に等しくなるよう、整数リストとして表現されうるという条件を満たし、それぞれの冪乗は前記整数リストによって決定される指数をもち、当該方法は、
・前記合成法を法とした一つまたは複数のオペランドを、それらの法を法とする環要素の一つまたは複数の系列として前記計算装置のオペランド記憶部に記憶する段階であって、ある系列の各環要素は法の前記系列の対応する法に関連付けられ、前記系列の少なくとも一つの環要素が整数リストとしてエンコードされている、段階と、
・前記計算装置の計算ユニットによって、テーブル記憶部に記憶された増分テーブルを利用して、環要素数系に従って前記オペランド記憶部の第一および第二のオペランドを加算または乗算する段階であって、
前記増分テーブルは、前記可換環における演算を定義するものであり、
前記増分テーブルは、前記系列におけるそれぞれの法について、法の前記系列の法に関連付けられた、ある増分要素について定義された増分テーブルを含み、
前記増分テーブルは、入力環要素をエンコードする入力整数リストを、該入力環要素に前記増分要素を加えたものに等しい出力環要素をエンコードする出力整数リストにマッピングするものであり、
前記オペランド記憶部の第一および第二のオペランドの加算は、第一のオペランドを表わす環要素の系列のうち前記法の系列のそれぞれの法に対応する環要素を、第二のオペランドを表わす環要素の系列のうち前記法の系列の対応する法に対応する環要素と、前記対応する法のもとで加算することを含み、該加算は、加算される環要素が整数リストとしてエンコードされている場合には、前記テーブル記憶部に記憶されている前記増分テーブルを利用して実行され、
前記オペランド記憶部の第一および第二のオペランドの乗算は、第一のオペランドを表わす環要素の系列のうち前記法の系列のそれぞれの法に対応する環要素を、第二のオペランドを表わす環要素の系列のうち前記法の系列の対応する法に対応する環要素と、前記対応する法のもとで乗算することを含み、該乗算は、乗算される環要素が整数リストとしてエンコードされている場合には、前記テーブル記憶部に記憶されている前記増分テーブルを利用して実行される、
段階とを含む、
とを含む、
計算方法。
【請求項１４】
コンピュータ・プログラムであって、該コンピュータ・プログラムがプログラム可能装置で実行されたときに請求項１３記載の方法を実行するよう構成されたコンピュータ・プログラム命令を有する、コンピュータ・プログラム。
【請求項１５】
コンピュータ可読媒体上に具現されている請求項１４記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、可換環での難読化された算術（obfuscated  arithmetic）を実行するよう構成された電子計算装置に関する。
【０００２】
本発明はさらに、電子計算方法、コンピュータ・プログラムおよびコンピュータ可読媒体に関する。
【背景技術】
【０００３】
ホワイトボックス暗号法およびより一般にはソフトウェア難読化において、計算はしばしば、そのままの値ではなくエンコードされた値に対して実行される。計算が平文値自身ではなくエンコードされた値に対して実行される場合、難読化されたソフトウェアのリバースエンジニアリングはより難しくなる。
【０００４】
エンコード後は、加算または乗算のような通常の演算はもはや、コンピュータの組み込みプリミティブを使って実行することはできない。エンコードされた値のストレートな加算は通常は、値の和のエンコードにはならない。同じことは乗算についてもいえる。公式でいうと、たいていのxおよびyについて、E(x)＋E(y)≠E(x＋y)となる。Eはエンコード関数を表わす。
【０００５】
この問題への解決策は、加算（A）および乗算（M）テーブルを導入することである。それらのテーブルは二つのエンコードされた値を入力として取り、加算演算または乗算演算のエンコードに対応するエンコードされた値を出力として生成する。それらのテーブルは：A(E(x),E(y))＝E(x＋y)；M(E(x),E(y))＝E(xy)として定義されてもよい。これらのテーブルは、エンコードされた値に対して直接、算術が実行されることを許容する。
【０００６】
テーブルを使った難読化された加算および乗算には少なくとも二つの欠点がある。第一に、テーブルがきわめて大きなものとなることがある。xおよびyがl〔エル〕ビットとして表わされる場合、各テーブルは22l・lビットを必要とする。
【０００７】
第二に、そのようなテーブルは簡単にソフトウェアにおいて見出されうる。より悪いことに、それらのテーブルは、エンコードされていたとしても、加算または乗算演算として識別されうる。これはたとえばエンコードにおいて保存されるこれらの関数の特性を通じてである。たとえば、乗算テーブルはM(E(0),E(x))＝E(0)を満たす。攻撃者はこのことおよび同様の特性を使ってテーブルがどの演算を表わしているかを推測しうる。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Omondi,  A.,  Prekumar,  B.、Residue  Number  Systems.  Theory  and  Implementation、Imperial  College  Press
【発明の概要】
【発明が解決しようとする課題】
【０００９】
同じ出願人による以前の出願において、難読化された算術を実行するための改良された仕方が呈示された。該以前の出願は「難読化された算術を実行するための電子計算装置」という名称のもとに欧州特許庁（EPO）に出願された（出願日30-09-2014、出願番号14186951.1）。該以前の出願はここに参照によってその全体において、特に整数環上での同質難読化を使った計算装置の記述についても、組み込まれる。
【００１０】
本発明者らは、場合によっては、エンコードされた値に対する乗算および加算が、複数の値を単一のエンコードされた値にエンコードする必要なく、単一のテーブルを使って実行されうることを見出した。加算および乗算について同じテーブルが使用されるので、リバースエンジニアリングの際に加算または乗算のどちらが実行されるのかを見ることは困難になる。加算および乗算は外部から見たときは同じ演算に見えるので、本発明者らはこの方法を「同質難読化（homogenous  obfuscation）」と名付けた。たとえ攻撃者が使用されているテーブルをみつけることができたとしても、またどうにかしてその機能を増分テーブルとして割り出すことができたとしても、いまだ、加算または乗算演算のどちらが実行されるかを知ることはない。テーブルが整数リストの要素に対して作用する仕方は、加算と乗算とで異なるが、これは伝統的な難読化を使って容易に隠すことができる。加えて、使用される単一テーブルは背景技術において論じたものより小さく、約2l・lビットが必要とされる。たとえ加算のみが使用されるとしても、難読化された加算のために必要とされるテーブルは背景技術において提案されているテーブルより小さい。
【００１１】
たとえば、環要素〔環の元〕は二つの整数(a,b)としてエンコードされうる。算術は、エンコードされた環要素を該エンコードされた環要素に増分値を加えたものにマップする増分テーブルを使って、該エンコードに対して直接実行されることができる。たとえば、テーブルは、uc−ud＝ua−ub＋1である場合に(a,b)を(c,d)にマップしてもよい。加算および乗算はいずれも、該増分テーブルの反復適用によって実行される。
【００１２】
かかる難読化された算術は多くの異なる可換環Rに適用される。ただし、あらゆる環が整数リストとしてのエンコードを許容するわけではない。可換環は、多くの異なるおなじみの数学的構造、たとえばある数を法とする整数（Zn）またはある数および多項式を法とする多項式（Zn[x]/f(x)）を含む数学的概念である。体は可換間の特別な場合である。
【００１３】
これら二つの型の可換環は通常、法演算（modulus  operation）によって定義されることを注意しておく。たとえば、ある整数を法とする整数（ZM）というのは、整数の法（M）によって完全に定義される。同様に、多項式環（Zn[x]/M(x)）は法（M(x)）によって定義される。多項式係数はモジュラー係数、すなわちある整数（n）を法とする整数である。
【００１４】
同質難読化は従来の形の難読化よりも、たとえばより小さなテーブルのため、有利であるが、同質難読化のレンジをより大きな整数に拡張する必要がある。テーブルのサイズは、基礎になる環のサイズとともに線形よりも速く増大する。
【課題を解決するための手段】
【００１５】
これを達成するための有利な仕方は、合成法（M）によって定義される可換環における計算を剰余数系（residue  number  system）においてすることである。剰余数系は一連の法（m1,m2,…,mN）について定義される。オペランド記憶は、前記合成法（M）を法とした一つまたは複数のオペランドを、それらの法を法とする環要素の一つまたは複数の系列として記憶するよう構成される。ある系列の各環要素は法の系列の対応する法に関連付けられる。計算ユニットは、環要素数系に従ってオペランド記憶の第一および第二のオペランドを加算および／または乗算するよう構成される。有利には、計算ユニットが作用する系列の少なくとも一つの環要素は整数リストとしてエンコードされる。これは、同質難読化を使って剰余数系が難読化されることを許容する。
【００１６】
ある実施形態では、計算ユニットは前記整数リストに対して演算する。該演算は、諸基本要素の位数（order）を法とするモジュロ演算を含み、法の系列の二つの異なる法に関連付けられている少なくとも二つの基本要素の位数は等しい。同質難読化演算は、法が基本要素の位数であるモジュロ演算に関わる。こうして、たとえ法が異なっていても、実際のモジュロ演算は同じであることがある。これは、コード・サイズを減らし、難読化を改善する。法演算からはどの法について演算が実行されたのかはわからない。たとえば、計算ユニットは、加算および／または乗算演算を実行するために整数リストの両方の整数を取得するよう構成されてもよい。
【００１７】
本発明に基づく方法は、コンピュータ上でコンピュータ実装される方法として、あるいは専用ハードウェアにおいて、あるいは両者の組み合わせにおいて実装されうる。本発明に基づく方法のための実行可能コードはコンピュータ・プログラム・プロダクトに記憶されうる。コンピュータ・プログラム・プロダクトの例はメモリ・デバイス、光記憶デバイス、集積回路、サーバー、オンライン・ソフトウェアなどを含む。好ましくは、コンピュータ・プログラム・プロダクトは、前記プログラム・プロダクトがコンピュータ上で実行されるときに本発明に基づく方法を実行するためのコンピュータ可読媒体上に記憶された非一時的なプログラム・コード手段を有する。ある好ましい実施形態では、コンピュータ・プログラムは、該コンピュータ・プログラムがコンピュータ上で実行されるときに本発明に基づく方法のすべての段階を実行するよう適応されたコンピュータ・プログラム・コード手段を有する。好ましくは、コンピュータ・プログラムはコンピュータ可読媒体上で具現される。
【００１８】
電子計算装置は、モバイル電子装置、たとえば携帯電話またはセットトップボックス、コンピュータなどであってもよい。
【００１９】
本発明に基づく方法は、コンピュータ上でコンピュータ実装される方法として、あるいは専用ハードウェアにおいて、あるいは両者の組み合わせにおいて実装されうる。本発明に基づく方法のための実行可能コードはコンピュータ・プログラム・プロダクトに記憶されうる。コンピュータ・プログラム・プロダクトの例はメモリ・デバイス、光記憶デバイス、集積回路、サーバー、オンライン・ソフトウェアなどを含む。好ましくは、コンピュータ・プログラム・プロダクトは、前記プログラム・プロダクトがコンピュータ上で実行されるときに本発明に基づく方法を実行するためのコンピュータ可読媒体上に記憶された非一時的なプログラム・コード手段を有する。
【００２０】
ある好ましい実施形態では、コンピュータ・プログラムは、該コンピュータ・プログラムがコンピュータ上で実行されるときに本発明に基づく方法のすべての段階を実行するよう適応されたコンピュータ・プログラム・コード手段を有する。好ましくは、コンピュータ・プログラムはコンピュータ可読媒体上で具現される。
【００２１】
本発明のもう一つの側面は、コンピュータ・プログラムをダウンロードのために利用可能にする方法を提供する。この側面は、該コンピュータ・プログラムがたとえばアップルのアップストア、グーグルのプレイストアまたはマイクロソフトのウィンドウズ（登録商標）ストアにアップロードされるときおよび該コンピュータ・プログラムがそのようなストアからダウンロードのために利用可能であるときに使われる。
【図面の簡単な説明】
【００２２】
本発明のさらなる詳細、側面および実施形態は、単に例として、付属の図面を参照して記述される。図面における要素は簡明のために示されており、必ずしも縮尺どおりに描かれていない。図面において、すでに記述されている要素に対応する要素は同じ参照符号をもつことがある。
【図１】ａは、電子計算装置の実施形態の例を概略的に示し、ｂは、第一の法を法とする剰余の例を概略的に示す。
【図２】電子計算装置のある実施形態の例を概略的に示す。
【図３】電子計算方法のある実施形態の例を概略的に示す。
【図４】ａは、ある実施形態に基づくコンピュータ・プログラムを有する書き込み可能部分をもつコンピュータ可読媒体を示し、ｂは、ある実施形態に基づくプロセッサ・システムの概略的な表現である。
【発明を実施するための形態】
【００２３】
本発明は多くの異なる形の実施形態が可能であるが、本開示は、本発明の原理を例解するものと考えられ、本発明を図示および記述される個別的な実施形態に限定することは意図されていないとの理解のもとに、一つまたは複数の個別的実施形態について図面に示し、本稿で詳細に記述する。
【００２４】
以下では、理解のために、実施形態の諸要素が動作において記述される。しかしながら、それぞれの要素がそれらによって実行されると記述されている機能を実行するよう構成されていることは明白であろう。
【００２５】
図１ａは、電子計算装置のある実施形態の例を概略的に示している。
【００２６】
計算装置１００は、オペランド記憶１１０を有する。オペランド記憶１１０は、計算が実行される対象となる一つまたは複数のオペランドを記憶するよう構成される。計算は加算演算を含む。計算は乗算演算をも含んでいてもよい。加算および／または乗算演算ならびに制御論理を組み合わせることによって、追加的な演算、たとえば減算および除算演算が構築されうる。
【００２７】
図１のａは、オペランド記憶１１０に記憶されている二つのオペランドを示している：オペランド１０１およびオペランド１０６である。図１のａは二つのオペランドしか示していないが、より多くのオペランドがあってもよい。これらのオペランドは合成法（M）を法とする剰余を表現する。これらのオペランドは、剰余数系に好適な仕方で表現される。剰余数系は法の系列（m1,m2,…,mN）によって定義される。それぞれの法が可換環を定義する。ある実施形態では、これらの法はみな整数であり、あるいはみな多項式である。後者の場合、それらの多項式は、全部の多項式について同じ環から取られる係数をもつ。これらの多項式の係数はモジュラー係数、すなわちある法を法とする整数であってもよい。これらの係数についての環を定義するために使われる法は、すべての法について同じである。
【００２８】
前記法の系列のある法miが整数である場合、対応する環は
【００２９】
【数１】
0006387466.tif 000002
〔便宜上Zmiと記すことがある〕と表わされる。前記法の系列のある法mi(x)が多項式である場合、対応する環はZn(x)/mi(x)と表わされる。後者の場合、多項式の係数についての共通の法はnと表わされる。
【００３０】
合成法（combined  modulus）は、法の系列における法（m1,m2,…,mN）の最小公倍数とされてもよい。それらの法がペアごとに互いに素である場合には、合成法はそれらの法の積とされてもよい。合成法を法とする数xを剰余数系で表現するには、その数は系列xi＝x  mod  miにマッピングされる。ここで、miは法m1ないしmNである。ある実施形態では、合成法は、上述した最小公倍数の真の約数である。このことは、表現できる数の空間がより小さくなるという欠点があるが、他方では数が複数の表現を獲得し、このことは難読化計算のいくつかの実施形態では望ましいことがある。
【００３１】
オペランド記憶１１０に記憶されたオペランドは、それらの法を法とする環要素の系列として表現される。系列のそれぞれの環要素は、法の系列の対応する法に関連付けられるので、系列を順に記憶する必要はない。たとえば、系列は、オペランド記憶にわたって分散して記憶されていてもよい。
【００３２】
図１のａは、第一の法を法とする剰余１０２、第二の法を法とする剰余１０３、第三の法を法とする剰余１０４という三つの剰余の系列として記憶されている第一のオペランド１０１を示している。同様に、第二のオペランド１０６は、第一の法を法とする剰余１０７、第二の法を法とする剰余１０８、第三の法を法とする剰余１０９という三つの剰余の系列として記憶されている。第一、第二および第三の剰余はそれぞれm1、m2およびm3を法とする剰余である。異なる数の法、たとえば二つだけの法、あるいは四つ以上の法があってもよい。典型的にはすべての法は異なる。ある実施形態では、それらの法はペアごとに互いに素である。ペアごとに互いに素である法については、合成法はそれらの法の積とされてもよい。これによれば合成法は比較的大きくなる。
【００３３】
計算装置１００は、オペランド記憶の第一のオペランドと第二のオペランドを剰余数系に従って加算および／または乗算するよう構成された計算ユニット１３０を有する。たとえば、二つの系列xiおよびyiによって表現される（オペランドの系列においては、インデックスはたとえば1からNまでのすべての法にわたる）二つのオペランドxおよびy、たとえばオペランド１０１および１０６を考える。二つのオペランドを加算するためには、計算装置は系列xi＋yi  mod  miを計算してもよい。系列の各要素は、法の系列の対応する法を法として計算されることを注意しておく。同様に、二つのオペランドを乗算するためには、計算装置は系列xi・yi  mod  miを計算してもよい。ここでもまた、系列の各要素は、法の系列の対応する法を法として計算される。これが合成法を法とする加算および乗算の表現になるというのが、剰余数系の結果である。このことはいわゆる孫子の剰余定理によって証明される。
【００３４】
これら加算または乗算演算の少なくとも一方について、同質難読化が使われる。これは、実行される実際の計算が法mi自身とは異なる法についてのモジュロ演算を含むことを含意する。こうして、機能的には特定の法miを法とする加算または乗算がなされるが、実際の計算は異なる数についてのモジュロ演算を示すだけである。この奇妙な状況は、同質難読化の帰結の一つであり、下記および先に引用した以前の出願においてさらに説明されている。
【００３５】
この実施形態における法miは、同質難読化を許容するよう、特別に選ばれている。具体的には、系列のそれぞれの法（mi）について、関連付けられた基本要素（ui）が存在して、法（mj）を法とするそれぞれの環要素（xj）が、それらの環要素がその基本要素の冪乗の線形結合に等しくなるよう、整数リスト（aj,bj）として表現されうるという条件を満たす。ここで、前記冪乗は、前記整数リストによって決定される指数をもつ。環要素xjを冪乗の線形結合として表現する正準的な仕方は、環要素xjを基本要素の二つの冪乗の間の差として表現することによるものである。ここで、冪乗の指数は前記整数リストに含まれるものである。たとえば、mjを法とするそれぞれの環要素xjは
【００３６】
【数２】
0006387466.tif 000003
と書かれてもよい。この表現を例示的表現とも称することにする。ただし、たとえば
【００３７】
【数３】
0006387466.tif 000004
など、環要素を表現する種々の仕方がある。さらなる例は以前の出願において与えてある。
【００３８】
図１のｂは、第一の法を法としての剰余の例を概略的に示している。整数１０７．１および１０７．２を含む整数のリストが示されている。たとえば、剰余１０７は二つの整数１０７．１および１０７．２によって表現されうる。それによれば、表現される剰余は基本要素の冪乗の線形結合
【００３９】
【数４】
0006387466.tif 000005
であり、冪乗は整数リストによって決定される指数をもつ。この例では、整数１０７．１はajであることができ、整数１０７．２はbjであることができる。同じ法についてのオペランド１０２における剰余も、整数１０２．１および１０２．２を使って整数リストとして表現される。ある実施形態では、これらの整数リストにおける整数は0から基本要素の位数から1を引いたものまでの間である（両端含む）。
【００４０】
記憶１１０における他の剰余、たとえば１０２、１０３、１０４、１０８、１０９は同様に記憶されうる。ある実施形態では、ある特定の法に関連付けられた系列におけるすべての環要素は、整数リストとして表現される。たとえば、環要素１０７が整数リストとして表現される場合、対応する環要素１０２も同じ基本要素を使って整数リストとして表現されうる。これは、要素１０７および１０２の両方に関わる計算が同質難読化を使って実行されることを許容する。
【００４１】
同質難読化を使って剰余に対して算術を実行することは一般に、二つの型の演算に関わる：基本要素の位数を法とする整数リスト内の整数に対する算術と、テーブルの適用である。このテーブルは、整数リスト内の整数から決定される環要素に固定した要素を加えるので、増分テーブルと称される。これらの計算を組織するための種々の仕方がある。下記では、これがどのようになされうるかを前記例示的表現について説明する。さらなる例は以前の出願において与えてある。
【００４２】
図１のａに戻ると、計算装置１００はテーブル記憶１２０を有する。テーブル記憶１２０は、系列内の法のそれぞれについて、法の系列のある法に関連付けられた、ある増分要素（−1;1;ut）について定義された増分テーブル（T）を記憶するよう構成される。図１の例では、三つの異なる法があり、それぞれ三つの基本要素の一つに関連付けられており、それぞれ増分テーブルに関連付けられている。テーブル記憶１２０は増分テーブル１２１の系列を記憶する。系列は増分テーブル１２２、１２３、１２４を有する。テーブルを法miおよび基本要素uiに対応するTiと表わしてもよい。法および基本要素は計算中は必要とされず、計算装置１００に明示的に記憶される必要はないが、増分テーブルは計算を実行するために必要とされる。増分テーブルは、法、基本要素、冪乗と環要素の間の選ばれた線形マッピングおよび増分値に依存する。
【００４３】
増分テーブルは、入力環要素（たとえばk＝uk1−uk2）を、出力環要素（たとえばl＝ul1−ul2）をエンコードする出力整数リストにマッピングする（たとえばT((k1,k2))＝(l1,l2)）。ここで、出力環要素は入力環要素に増分要素を加えたものに等しくなり（たとえばl＝k＋1）、出力環要素は基本要素（u）の冪乗の線形結合に等しく、冪乗は出力整数リストによって決定される指数をもつ。
【００４４】
増分値は1であってもよいが、これは必須ではない。−1または基本要素の冪乗や他の値であってもよい。
【００４５】
計算ユニット１３０に戻ると、先述したように、剰余数系を使うと、合成法を法とする加算および乗算は、それぞれ法の系列のうちのある法を法とする一連の別個の計算を実行することによって実行されうる。たとえば、計算ユニット１３０は加算ユニット１３１の系列および乗算ユニット１３６の系列を有していてもよい。乗算演算が所望されない場合には、乗算ユニットは省略されてもよい。加算および／または乗算ユニットのそれぞれは、前記の法の一つを法として計算を行なう。図１は、加算ユニット１３２、１３３、１３４および乗算ユニット１３７、１３７、１３９を示している。
【００４６】
計算ユニット１３０は、たとえばモジュロ・ユニットとして実装される、モジュロ演算器１４１の系列をも有する。これらのモジュロ演算器は、法の系列のある法に関連付けられた基本要素の位数を法として、モジュロ演算を実行する。モジュロ演算器１４１は、系列中の法自身を法としてモジュロ演算を実行するよう構成されているのではないことを注意しておく。機能的には系列中の法を法としたモジュロ演算が計算されるが、同質難読化を使ってエンコードされるときは、実行される実際の計算は基本要素の位数を法とするモジュロ演算である。異なる数、すなわち基本要素の位数を法とするモジュロ演算がエンコードにおいてモジュロ演算を実現できることは、同質難読化によって引き起こされる。モジュロ演算器１４１は、それぞれの加算よび乗算ユニット１３１および１３６によって使われる。
【００４７】
まとめると、オペランドはいくつかの異なる法を法として表現される。それぞれの法に基本要素とテーブルが関連付けられている。剰余のうちの少なくとも一つだが可能性としては全部が整数リストとして表現される。該表現は、その剰余の法に関連付けられた基本要素に依存する。その法に関連付けられた基本要素の位数を使ったモジュロ演算が、一つまたは複数の加算ユニットおよび乗算ユニットによって使用される。図１のａの例では、剰余１０２および１０７は同じ法についてであり、テーブル１２２はその法に関連付けられた基本要素についてであり、加算ユニットおよび乗算ユニット１３２および１３７はその法を法として、モジュロ演算器１４２を使って動作する。同じことは同様に他の法についてもいえる。
【００４８】
図１のａでは、一連の法のうち同じ法に関連付けられたすべての要素は縦の列に配置されている。この例では、三つの異なる法が使われた。二つの法または四つ以上の法を使うことも可能である。
【００４９】
一連の法のうちその法を法とするすべての剰余が同質難読化を使ってエンコードされる、すなわち整数リストとして表現されることは必須ではない。たとえば、いくつかは単純な値として、たとえば関連する法を法とする整数として表現されてもよい。たとえば、いくつかは異なる仕方で、たとえば伝統的な非同質な、テーブル・ベースのエンコードを使ってエンコードされてもよい。剰余数系はそれぞれの法に別個に作用するので、そのような異なるエンコードは並列して使用されてもよい。以下の例では、オペランドについての系列中のすべての剰余が整数リストとして同質難読化を使って表現されるとする。
【００５０】
動作では、計算ユニット１３０はオペランド１０１および１０６を加算してもよい。これは次のようになされてもよい：加算または乗算ユニット１３１または１３６は整数リスト１０２および１０７に対して作用して中間整数リストを得る；モジュロ演算器１４２を使って、すなわち関連する基本要素のベースを法として、中間整数リストの各要素にモジュロ演算が適用される。結果として得られる中間整数リストにテーブル１２２が適用される。加算または乗算ユニットはテーブル適用の結果および整数リスト１０２および／または１０７に対して作用し、モジュラー演算器１４２を使って第二のモジュロ演算を実行し、再びテーブル１２２を適用することを続けてもよい。加算および乗算演算のより詳細な記述は、以前の出願に見出すことができる。他の法について同様の演算が実行される。
【００５１】
結果は、整数リスト表現における加算または乗算の表現である。この結果は、オペランド記憶１１０に記憶されて、将来の計算のために使われてもよい。加算および乗算演算を組み合わせることによって他の演算が実装されてもよい。
【００５２】
以前の出願は、整数環（整数の法を法とする整数）または多項式環（多項式の法を法とするモジュラー係数をもつ多項式）の多くの例を与えている。
【００５３】
図２は、電子計算装置２００のある実施形態の例を概略的に示している。装置２００は装置１００に基づく。オペランド記憶１１０およびテーブル記憶１２０は装置２００でも装置１００と同じであってもよい。装置２００は法および基本要素の選択および計算装置２３０の選択において異なっている。
【００５４】
装置２００については、法の系列の二つの異なる法に関連付けられた少なくとも二つの基本要素の位数が等しい。より好ましくは、法の系列の法に関連付けられたすべての基本要素のすべての位数が等しい。装置１００と同様に、合成法は法の系列における法（m1,m2,…,mN）の最小公倍数に等しくてもよい。図２は、すべての位数が同じである状況を示している。
【００５５】
二つの基本要素が同じ位数をもつ場合には、それらの基本要素が異なる法に関連付けられていたとしても、モジュロ演算器はその法についてのモジュロ演算のために共有されてもよい。それぞれの法はテーブル記憶１２０において独自の増分テーブルをもち続けることを注意しておく。異なる法の基本要素の位数が同じであれば、モジュロ演算も含めて整数リストに対する演算はみな同じである。基本要素の位数を法としているからである。しかしながら、テーブル演算は各異なる法について一意的なままである。したがって、異なる法についての計算は高い度合いで同一であり、異なる増分テーブルが使われるというだけである。増分テーブルのサイズも同じであってもよい。増分テーブルのサイズは基本要素の位数に依存しうるからである。（高度な演算では、整数リストにおける整数間の差は許容される差集合に制約される。これは、異なる法について増分テーブルのサイズを異ならせることがある。）
図２に示される計算ユニット２３０は、モジュロ演算器２４２、加算ユニット２３２および乗算ユニット２３７を有する。
【００５６】
動作では、計算ユニット２３０はオペランド１０１および１０６を加算してもよい。これは次のようになされてもよい：加算または乗算ユニット２３２または２３７は整数リスト１０２および１０７に対して作用して中間整数リストを得る；モジュロ演算器２４２を使って、すなわち関連する基本要素のベースを法として、中間整数リストの各要素にモジュロ演算が適用される。結果として得られる中間整数リストにテーブル１２２が適用される。加算または乗算ユニットはテーブル適用の結果および整数リスト２３２および／または２３７に対して作用し、モジュラー演算器２４２を使って第二のモジュロ演算を実行し、再びテーブル１２２を適用することを続けてもよい。
【００５７】
他の法について同様の演算が実行される。たとえば：加算または乗算ユニット２３２または２３７は整数リスト１０３および１０８に対して作用して中間整数リストを得る；モジュロ演算器２４２を使って、すなわち関連する基本要素のベースを法として、中間整数リストの各要素にモジュロ演算が適用される。結果として得られる中間整数リストにテーブル１２３が適用される。加算または乗算ユニットはテーブル適用の結果および整数リスト２３２および／または２３７に対して作用し、モジュラー演算器２４２を使って第二のモジュロ演算を実行し、再びテーブル１２３を適用することを続けてもよい。などとなる。
【００５８】
加算および乗算ユニット２３２および２３７は、それらの法に対応する増分テーブルを、前記系列のある法を法としての計算に適用するよう構成される。あるいはまた、加算および乗算ユニット２３２および２３７は、図１のような加算および乗算ユニットの系列として実装されてもよい。該系列の各ユニットは特定の増分テーブルについて、だがモジュロ演算器２４２を使って配置される。
【００５９】
単一のモジュロ演算器２４２を使うことの利点は、計算ソフトウェアからは、どのモジュロ演算のために計算が実行されるのかがわからないということである。
【００６０】
剰余数系（RNS:  Residue  Number  System）は、より大きな法に対する計算をするために、小さな複数の法を使うことを許容する。下記の法はみな位数30の基本要素をもつ。それぞれの法について、位数30のそのような基本要素の例を下記に与える。
【００６１】
【表１】
0006387466.tif 000006
これらの法を使ってRNS数系を作り出してもよい。たとえば、2^32＝4294967296より大きな合成法をもつ、これらの法の二つの選択が可能である。
93*143*181*209*231＝116213298201
99*151*183*211*241＝139111402617
。
【００６２】
これら二つの集合におけるすべての法が互いに素ではないことを注意しておく。このように、１バイトに収まる要素のみを使う演算を使って、32ビット語に対する演算が計算されうる。RNSおよび混合基系の完全な記述については非特許文献１を参照。
【００６３】
多項式剰余数系が同様に構築されうる。たとえば、同じベース環上で同質難読化を許容するいくつかの互いに素な多項式を選択する。対応するRNS系は、ずっと大きな多項式上での、たとえば選択された多項式の積を法とする難読化計算を許容する。
【００６４】
オペランド記憶部１１０およびテーブル記憶部１２０は電子的なメモリとして実装されてもよい。これらは単一の記憶部に、たとえば単一の電子的なメモリとして組み合わされてもよい。増分テーブルはルックアップテーブルとして実装されてもよい。
【００６５】
典型的には、装置１００および２００はそれぞれ、装置１００および２００において記憶された適切なソフトウェアを実行するマイクロプロセッサ（図示せず）を有する。たとえば、そのソフトウェアは、対応するメモリ、たとえばRAMのような揮発性メモリまたはフラッシュ（図示せず）のような不揮発性メモリ（図示せず）においてダウンロードされているおよび／または記憶されているのでもよい。あるいはまた、装置１００および２００は、全体的にまたは部分的に、プログラム可能な論理において、たとえばフィールドプログラマブルゲートアレイ（FPGA）として実装されてもよい。装置１００および２００は全体的または部分的に、いわゆる特定用途向け集積回路（ASIC）、すなわち特定の用途のためにカスタマイズされる集積回路（IC）として実装されてもよい。テーブルおよびオペランド記憶は、電子的なメモリ、磁気的な記憶などとして実装されてもよい。メモリは揮発性または不揮発性でありうる。
【００６６】
ある実施形態では、装置はオペランド記憶回路および計算回路を有する。装置は、追加的な回路、たとえばモジュラー演算回路、加算回路、乗算回路およびテーブル記憶回路；本稿に記載される対応するユニットを実装する回路の一つまたは複数を有していてもよい。これらの回路はプロセッサ回路および記憶回路であってもよく、プロセッサ回路が記憶回路に電子的に表現されている命令を実行してもよい。それらの回路もFPGA、ASICなどでありうる。
【００６７】
図３は、電子計算方法３００の実施形態の例を概略的に示している。電子計算方法は、合成法（M）を法とした難読化された算術を剰余数系において実行するよう構成される。剰余数系は一連の法（m1,m2,…,mN）について定義され、それぞれの法が可換環（Zm1；Zn[x]/m1(x)）を定義する。系列のそれぞれの法（mi）について、関連付けられた基本要素（ui）が存在して、法（mj）を法とするそれぞれの環要素（xj）が、それらの環要素がその基本要素の冪乗の線形結合に等しくなる（xj＝uiaj−uibj）よう、整数リスト（(aj,bj)）として表現されうるという条件を満たす。ここで、前記冪乗は、前記整数リストによって決定される指数をもつ。本方法は、
・合成法（M）を法とする一つまたは複数のオペランドを、それらの法を法とする一つまたは複数の系列の環要素として記憶する段階３１０であって、ある系列の各環要素はその系列の法のうちの対応する法に関連付けられ、その系列の少なくとも一つの環要素が整数リストとしてエンコードされる、段階と、
・前記オペランド記憶の第一および第二のオペランドを環要素数系に従って加算および／または乗算する段階３２０とを含む。
【００６８】
本方法は、たとえば図１のａ、ｂおよび図２を参照して述べたように拡張されてもよい。
【００６９】
本方法を実行する多くの異なる仕方が可能である。このことは当業者には明白であろう。たとえば、段階の順序は変えられてもよく、いくつかの段階は並列に実行されてもよい。さらに、段階と段階の間に、他の方法段階が挿入されてもよい。挿入される段階は、本稿に記載されるような方法の洗練を表わしていてもよく、あるいは本方法に無関係であってもよい。さらに、所与の段階は次の段階が開始される前に完全に完了していないこともありうる。
【００７０】
実施形態に基づく方法は、プロセッサ・システムに方法３００を実行させるための命令を含むソフトウェアを使って実行されてもよい。ソフトウェアは、システムの特定のサブエンティティによって行なわれる段階のみを含んでいてもよい。ソフトウェアは、ハードディスク、フロッピー、メモリなどといった好適な記憶媒体に記憶されていてもよい。ソフトウェアは、ワイヤに沿ったあるいは無線の信号として、あるいはデータ・ネットワーク、たとえばインターネットを使って送られてもよい。ソフトウェアはダウンロードおよび／またはサーバー上でのリモート使用のために利用可能にされてもよい。本発明に基づく方法は、本方法を実行するようプログラム可能な論理、たとえばフィールドプログラマブルゲートアレイ（FPGA）を構成するよう構成されたビットストリームを使って実行されてもよい。
【００７１】
本発明が、本発明を実施するために適応されたコンピュータ・プログラム、特にキャリア上またはキャリア中のコンピュータ・プログラムに拡張されることは理解されるであろう。プログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形のようなコード中間ソースおよびオブジェクトコードの形で、あるいは本発明に基づく方法の実装において使うために好適な他の任意の形でありうる。コンピュータ・プログラム・プロダクトに関係する実施形態は、記載される方法のうち少なくとも一つの方法の処理段階のそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに分割され、および／または静的または動的にリンクされうる一つまたは複数のファイルにおいて記憶されてもよい。コンピュータ・プログラム・プロダクトに関係する別の実施形態は、記載されるシステムおよび／またはプロダクトのうち少なくとも一方の各手段に対応するコンピュータ実行可能命令を含む。
【００７２】
図４のａは、コンピュータ・プログラム１０２０を有する書き込み可能部分１０１０を有するコンピュータ可読媒体１０００を示している。コンピュータ・プログラム１０２０は、プロセッサ・システムに、実施形態に基づく難読化算術の方法を実行させるための命令を含む。コンピュータ・プログラム１０２０はコンピュータ可読媒体１０００上で、物理的なマークとして、あるいはコンピュータ可読媒体１０００の磁化によって具現されてもよい。しかしながら、他の任意の好適な実施形態も考えられる。さらに、コンピュータ可読媒体１０００はここでは光ディスクとして示されているが、コンピュータ可読媒体１０００はハードディスク、半導体メモリ、フラッシュメモリなどといったいかなる好適なコンピュータ可読媒体であってもよく、記録不可能でも記録可能でもよいことは理解されるであろう。コンピュータ・プログラム１０２０は、難読化算術の前記方法をプロセッサ・システムに実行させるための命令を含む。
【００７３】
図４のｂは、実施形態に基づくプロセッサ・システム１１００の概略的な表現を示している。プロセッサ・システムは、一つまたは複数の集積回路１１１０を有する。一つまたは複数の集積回路１１１０のアーキテクチャーは図４のｂに概略的に示されている。回路１１１０は、実施形態に基づく方法を実行するためおよび／またはそのモジュールもしくはユニットを実装するためにコンピュータ・プログラム・コンポーネントを走らせるための処理ユニット１１２０、たとえばCPUを有する。回路１１１０は、プログラミング・コード、データなどを記憶するためのメモリ１１２２を有する。メモリ１１２２の一部は読み出し専用であってもよい。回路１１１０は通信要素１１２６、たとえばアンテナ、コネクタまたはその両方などを有していてもよい。回路１１１０は、本方法において定義される処理の一部または全部を実行するための専用の集積回路１１２４を有していてもよい。プロセッサ１１２０、メモリ１１２２、専用IC  １１２４および通信要素１１２６は相互接続１１３０、たとえばバスを介して互いに接続されてもよい。プロセッサ・システム１１１０は、それぞれアンテナおよび／またはコネクタを使って接触式および／または非接触式通信のために構成されていてもよい。
【００７４】
上記で引用した以前の出願においては、可換環における難読化算術を実行するための計算装置の実施形態が与えられている。本稿の実施形態では同質難読化は法の系列の個々の法に適用される。
【００７５】
前記計算装置は、たとえば加算および／または乗算ユニットを実装するよう装置１００または２００に適用されてもよい。計算装置および方法は、有限の可換環において難読化算術を実行する。そのような環について挙げられた一例は、ある数を法とする整数（Zn）である。ある実施形態に基づく生成装置は、ある法を法とする整数によって形成される環（Zn）が難読化算術を許容するような法を見出す。環要素、たとえば整数を難読化領域においてエンコードし、難読化領域からデコードするために必要とされる基本要素も生成される。
【００７６】
同質難読化、たとえば環要素、特にある法を法とする整数を表現することは、暗号化算術の一つの型であり、時に準同型暗号と称される。難読化を使って、たとえばコンピュータ・ソフトウェア・コードが、該コードのリバースエンジニアリングに対して保護される。ここでの難読化は、算術を実行するコードの一部である。デジタル難読化算術のある実施形態では、計算は暗号文に対して実行されて、解読されたときに平文に対して実行された演算の結果に一致する暗号化された結果を生成してもよい。換言すれば、何らかの伝統的なソフトウェア難読化の域を越えて、暗号化された値に対して算術が実行されうる。それにもかかわらず、同質難読化を使って実装される算術は、そのままの値に対して実行される算術と、機能的に同一であってもよい。
【００７７】
環の要素は、法を法とする整数として定義されてもよい。環の要素は環要素と称される。環要素は剰余と呼ばれてもよい。環要素は0から法から1を引いたものまでの間の整数（0および法から1を引いたものも含まれる）としてデジタル的に表現されてもよい。環要素に対して、加算および乗算が定義される。これらは環加算および環乗算と称される。
【００７８】
環要素は、必要であればいかなる好適な形で表現されてもよい。たとえば、Znの要素は整数として表現されてもよい。しかしながら、計算装置において、環要素は整数リストとして表現される。たとえば、環要素aは計算装置においてリスト(a1,a2)によって表現されてもよい。整数リストは、環要素と整数リストとの間の何らかのマッピングに従って環要素をエンコードする。任意の環要素を与えられると、その環要素を表わす少なくとも一つの整数リストがあり、任意の整数リストを与えられると、それが表わすちょうど一つの環要素がある。実施形態では、任意の環要素が整数リストとして表現されうる。
【００７９】
整数リストは少なくとも二つの要素をもつ。実のところ、加算および乗算演算は整数リストが短くなればより少数のステップですむ。よって、ある実施形態では、整数リストは常に二つの要素をもつ。メインの記述においては、整数リストは整数対であると想定するが、三つ以上の要素をもつ整数リストの例が以前の出願において与えられている。例として、(a1,a2)は環要素(ua1−ua2)にマッピングされてもよく、ここで、uは基本環要素と称される特別な環要素である。以前の出願において、複数の基本要素の使用を含め多くの変形が論じられている。しかしながら、メインの記述では、「例示的エンコード」として、所与の整数リスト(a1,a2)が環要素(ua1−ua2)にマッピングされると想定する。このように、それぞれの環要素は、基本要素uの二つの冪乗の間の差として表わせる。
【００８０】
下記では、たとえばある実施形態に基づいて生成装置によって生成される、法および基本要素を使った難読化算術のいくつかの例が呈示される。計算装置の否定、加算および乗算ユニットは、これらの実施形態の任意のものについて構成されうる。すべての例は可換環Znに当てはまる。本稿では、nは正の整数の法である。可換環の任意の要素が選ばれたエンコードにおいて表現されうる。すべての可換環がすべての要素が所与のエンコードにおいて、すなわち所与の型の整数リスト表現として、表現されることを許容するものではない。可換環Rを与えられると、R内の任意の要素が所与のエンコード型を使って整数リストとして表現されうる場合に、Rは（フル）同質難読化を許容するという。当業者は、エンコードが与えられたときに所与の可換環が完全な同質難読化を許容するかどうかを、たとえばあらゆる許容できるエンコードを生成してそれらが一緒になって所与の環のすべての要素を表わすことを検証することによって、検証できる。
【００８１】
下記ではまず、例示的エンコードの記述が与えられる。多くの型のエンコードがあるが、環要素が整数のリストとして表現されうることは共通している。これらの整数は環要素ではない。たとえば、環が整数環でなく、たとえば多項式環であっても元〔要素〕は整数リストとして表現されうる。使用されるエンコード、どのように所与の整数リストが環要素にマッピングされるかは、エンコードと称される。典型的には、整数リストは常に同じ長さであるが、これは必須ではない。一般に、エンコードがより多くの型の整数リスト、たとえばより長いリストを許容するほど、所与の環要素が異なる仕方で整数リストとしてエンコードされうる可能性が高くなる。上記例示的エンコードをもつ可換環Rを与えられたとき、Rの任意の元aが何らかの整数a1およびa2についてua1−ua2と書ける特別な環要素uがある。そのような特別な環要素を基本環要素と称することにする。すべての可換環がこのやり方でエンコードされうるのではないが、十分に多くの可換環について可能であり、該エンコードは有用である。整数a1およびa2はそれ自身としては環Rの環の元ではない；これらは基本元〔基本要素〕の位数を法として演算対象となる整数である。環要素aは基本元uの冪乗、つまりua1およびua2の線形結合に等しいことを注意しておく。この場合、線形結合はそれらの冪乗に＋1または−1を乗算して足すことによって、より具体的には、第一の冪乗から第一の冪乗を引くことによって、得られる。計算装置は、上記の仕方でエンコードされた環要素に対して作用する。加算、否定および乗算ユニットはこのエンコードにおいて環要素に作用できる。
【００８２】
増分テーブルTは加算および乗算演算両方において中心的な役割を演じる。増分テーブルは入力環要素をマッピングする。この場合、入力環要素は整数リストとして表現されていてもよい。たとえば、入力環要素k＝uk1−uk2を表現する入力整数リスト(k1,k2)を与えられて、テーブルTはこれを、出力環要素l＝ul1−ul2をエンコードする出力整数リストにマッピングする。たとえば、T((k1,k2))＝(l1,l2)。出力環要素は増分環要素が入力環要素に環加算されたものに等しい。この例では、増分要素は1、すなわち環乗算についての恒等元である環要素に取られてもよい。この場合、l＝k＋1である。テーブルが、同じエンコードを使う諸環要素に直接適用されうることが便利である。よって上記整数リスト表現をもつ諸環要素に適用されうる。それにもかかわらず、テーブルが代替的なエンコードにおける環要素に適用される実施形態がある。該代替的なエンコードも、代替的な型だが、整数リストであってもよい。また、増分環要素は1である必要はない。
【００８３】
下記では、否定、加算および乗算の演算が記述される。
【００８４】
否定。
否定入力環要素a＝ua1−ua2を表わす否定入力整数リスト(a1,a2)を与えられて、該整数リストを並べ替えることによって、この場合は順序を逆にすることによって、否定出力整数リストが得られてもよい。否定出力整数リストは(a2,a1)であってもよい。偶数位数をもつ基本要素についてそうであるようにum＝−1となるmが存在するとすると、否定は代替的には、整数リストの各整数に定数、たとえばmを加算することによって得られてもよい。この場合、否定出力整数リストは(a1＋m,a2＋m)であってもよい。−a＝ua2−ua1＝ua1+m−ua2+mなので、これは成立する。整数リストにおける算術は好ましくは、基本元の位数を法として行なわれる。ここで、整数リストの整数は基本元の指数に対応する。よって、基本元の位数を法として同じである整数は同じ環要素をエンコードする。
【００８５】
加算。
第一の加算入力環要素a＝ua1−ua2をエンコードする受領された第一の加算入力整数リスト(a1,a2)および第二の加算入力環要素b＝ub1−ub2をエンコードする第二の加算入力整数リスト(b1,b2)を加算するには、まず、中間加算環要素cをエンコードする中間加算整数リスト（(c1,c2)）が決定される。
【００８６】
環要素cは、第一の加算入力環要素aに、基本元uの、第二の加算入力整数リスト、特に第二の加算入力整数リストの最初の整数から決定される冪乗を加えたものであってもよい。この例では、c＝ua1−ua2＋ub1としてもよい。これを計算するには、c＝ua1−ua2＋ub1＝(ua1-b1−ua2-b1＋1)ub1であることを観察する。括弧内の項は、増分テーブルを使うエンコードにおいて書き直されてもよい。環要素ua1-b1−ua2-b1への増分テーブルの第一の適用を通じて、要素ud1−ud2＝ua1-b1−ua2-b1＋1が得られる。たとえば、T((a1−b1,a2−b1))＝(d1,d2)による。すると、c1＝d1＋b1およびc2＝d2＋b1が得られる。このように、中間加算整数リスト（(c1,c2)）を決定することはさらに、第二の加算入力整数リストから決定された整数を第一の適用から帰結する整数リストにおける整数に加算することを含んでいてもよい。ub1を整数リスト表現におけるある環要素に、この場合はaに加えることは、時に、正の還元（positive  reduction）ステップと称される。
【００８７】
加算ユニットは、中間加算環要素c＝ua1−ua2＋ub1＝uc1−uc2を整数リスト(c1,c2)として得た。中間加算環要素は、このように、一つまたは複数の基本元の冪乗の線形結合である。ここで、それらの冪乗は、第一および第二の加算入力整数リストから決定される。この場合、増分テーブルが適用されるのは、前記一つまたは複数の基本環要素（u）を第一の整数リストの最初の整数（a1）から第二の整数リストの最初の整数（b1）を引いたもの乗したものから、前記基本環要素（u）を第一の整数リストの第二の整数（a2）から第二の整数リストの最初の整数（b1）を引いたもの乗したものを引いたものによって形成される環要素ua1-b1−ua2-b1である。
【００８８】
この例では、加算出力整数リストは、中間加算整数リストおよび第二の加算入力整数リストから決定された環要素への増分テーブルの第二の適用を通じて決定されてもよい。これは、中間加算環要素cと、基本元を第二の加算入力整数リスト、たとえば第二の加算入力整数リストの第二の整数b2から決定される冪乗にしたもののマイナスとの和を計算することを含んでいてもよい：c−ub2＝uc1−uc2−ub2。これは、増分テーブルの第二の適用前に、中間加算整数リストによって表わされる中間加算環要素を否定にすることによって達成されてもよい。cの否定は、上記のようになされてもよい。例として並べ替えを使うが、同じ動作は、指数に定数を加えることによって実行されてもよい。否定後は、前記和は、基本元を第二の加算入力整数リストから決定される冪乗にしたもののプラス（マイナスではなく）を使ってもよい：−c＋ub2＝uc2−uc1＋ub2。この演算は上記と同じ型であり、ub1を加えるのと同じ仕方でテーブル適用を通じて実行できる。この後は、結果が再び否定にされる。完全な加算は、二回の否定と同じ増分テーブルTの二回のテーブル適用を使ってもよい。
【００８９】
整数リスト表現における環要素から、この場合cからub2を引くこと（すなわち−ub2を加えること）は、時に負の還元（negative  reduction）ステップと称される。負の還元ステップは否定にして、上記正の還元ステップを実行し、再び否定にすることによって実行されてもよい。
【００９０】
多くの変形があり、そのいくつかは以前の出願において記述されている。たとえば、ある変形は、c＝ua1＋ub1−ua2＝(ua1-a2＋ub1-a2−1)ua2であることを使う。この例では、増分要素は−1である。増分テーブルへの入力はa1−a2およびb1−a2であってもよい。これらは整数リストとして書かれてもよいが、それらによって表わされる整数要素(ua1-a2＋ub1-a2)はオペランド（たとえばua1−ua2）とは異なるエンコードを使う。
【００９１】
乗算。
第一の乗算入力環要素r＝ur1−ur2をエンコードする受領された第一の乗算入力整数リスト(r1,r2)と第二の乗算入力環要素s＝us1−us2をエンコードする第二の乗算入力整数リスト（(s1,s2)）とを乗算するために、第一の中間乗算整数リスト(t1,t2)および第二の中間乗算整数リスト(u1,u2)が決定される。乗算出力環要素をエンコードする乗算出力整数リストは、第一および第二の中間要素から決定される。他の実施形態では、二つより多くの中間乗算整数リストがあってもよい。r・s＝(ur1−ur2)(us1−us2)＝ur1+s1−ur1+s2＋ur2+s2−ur2+s1＝(ur1+s1−ur1+s2)＋(ur2+s2−ur2+s1)＝t＋uとなる。展開された積の項を二つの項tおよびuに分割することは、異なる仕方で、たとえば(ur1+s1−ur2+s1)＋(ur2+s2−ur1+s2)のようになされてもよい。
【００９２】
このように、整数リストとして表現されている二つの環要素を乗算するために、それらの環要素は二つの新たな整数リストに変換されてもよく、該新たな変数リストを加算して乗算への答えを得ることができる。加算は上記のようになされてもよい。たとえば、乗算ユニットは中間整数リストを計算して、乗算ユニットに送ってもよい。
【００９３】
たとえば、第一の中間乗算整数リストの第一の整数t1は、第一の乗算入力整数リストの第一の整数r1に第二の乗算入力整数リストの第一の整数s1を加えたものであってもよく、第一の中間乗算整数リストの第二の整数t2は、第一の乗算入力整数リストの第一の整数r1に第二の乗算入力整数リストの第二の整数s2を加えたものであってもよい：t1＝r1＋s1、t2＝r1＋s2；第二の中間乗算整数リストの第一の整数u1は、第一の乗算入力整数リストの第二の整数r2に第二の乗算入力整数リストの第二の整数s2を加えたものであってもよく、第二の中間乗算整数リストの第二の整数u2は、第一の乗算入力整数リストの第二の整数r2に第二の乗算入力整数リストの第一の整数s1を加えたものであってもよい：u1＝r2＋s2、u2＝r2＋s1。
【００９４】
ある実施形態では、たとえばたった今開示した例では、算術は整数リストに対して実行され、環要素は何らかの自然な表現での環要素として計算される必要はない。ここで変形のいくつかを論じる。変形の多くは独立である。たとえば、変形エンコードが加算を実行するための変形と組み合わされてもよい。
【００９５】
たとえばua1-b1などに対応する整数リストにおいて計算が実行されるときの難読化された算術を通じて、値はuの位数を法として約されてもよい。たとえばuの位数が30であれば、すべての計算はmod  30で実行されてもよい。
上述した実施形態は、本発明を限定するのではなく例解するものであり、当業者は多くの代替実施形態を設計できるであろうことを注意しておくべきである。
【００９６】
請求項では、括弧内に参照符号があったとしてもその請求項を限定するものと解釈してはならない。動詞「有する／含む」およびその活用形の使用は、請求項において述べられているもの以外の要素やステップの存在を排除しない。要素の単数形の表現はそのような要素の複数の存在を排除しない。本発明は、いくつかの相異なる要素を有するハードウェアによって、および好適にプログラムされたコンピュータによって実装されうる。いくつかの手段を列挙する装置請求項では、これらの手段のいくつかが同一のハードウェア項目によって具現されてもよい。ある種の施策が互いに異なる従属請求項において記載されているというだけの事実が、これらの施策の組み合わせが有利に使用できないことを示すものではない。
【００９７】
請求項では、括弧内の参照符号は実施形態の図面における参照符号または実施形態の公式を指し、それにより請求項の理解しやすさを増す。これらの参照は請求項を限定するものと解釈してはならない。
いくつかの態様を記載しておく。
〔態様１〕
合成法によって定義される可換環における難読化された算術を剰余数系において実行するよう構成された電子的な計算装置であって、前記剰余数系は法の系列について定義され、それぞれの法が可換環を定義し、前記系列のそれぞれの法について関連付けられた基本要素が存在して、その法を法とするそれぞれの環要素が、それらの環要素がその基本要素の冪乗の線形結合に等しくなるよう、整数リストとして表現されうるという条件を満たし、それぞれの冪乗は前記整数リストによって決定される指数をもち、当該計算装置は、
・前記合成法を法とした一つまたは複数のオペランドを、それらの法を法とする環要素の一つまたは複数の系列として記憶するよう構成されたオペランド記憶部であって、ある系列の各環要素は法の系列の対応する法に関連付けられ、前記系列の少なくとも一つの環要素が整数リストとしてエンコードされている、オペランド記憶部と、
・前記剰余数系に従って前記オペランド記憶部の第一および第二のオペランドを加算および／または乗算するよう構成された計算ユニットとを有する、
計算装置。
〔態様２〕
前記合成法および法の前記系列におけるそれらの法は、整数またはモジュラー係数をもつ多項式である、態様１記載の計算装置。
〔態様３〕
前記計算ユニットが前記整数リストに対して演算し、前記演算は前記基本要素の位数を法とするモジュロ演算を含み、法の前記系列の二つの異なる法に関連する少なくとも二つの基本要素の位数が等しい、態様１または２記載の計算装置。
〔態様４〕
法の前記系列の法に関連付けられたすべての基本要素の位数が等しい、態様１ないし３のうちいずれか一項記載の計算装置。
〔態様５〕
前記合成法が、法の前記系列における法の最小公倍数に等しい、態様１ないし４のうちいずれか一項記載の計算装置。
〔態様６〕
前記系列におけるそれぞれの法について、法の前記系列の法に関連付けられた、ある増分要素について定義された増分テーブルを記憶するよう構成されたテーブル記憶部を有しており、
前記増分テーブルは、入力環要素を、該入力環要素に前記増分要素を加えたものに等しい出力環要素をエンコードする出力整数リストにマッピングし、前記出力環要素は前記基本要素の冪乗の線形結合に等しく、該冪乗は前記出力整数リストによって決定される指数をもつ、
態様１ないし５のうちいずれか一項記載の計算装置。
〔態様７〕
前記計算ユニットが、整数リストとして表現されている前記第一および第二のオペランドにおける同じ法を法とした第一および第二の環要素に対して、該同じ法に関連付けられた基本要素の位数を法とするモジュロ演算を含む算術を実行し、該同じ法について記憶されている関連付けられた増分テーブルを適用するよう構成されている、態様６記載の計算装置。
〔態様８〕
前記計算ユニットが加算ユニットを有し、前記加算ユニットは、前記系列のそれぞれの法について、
・第一の加算入力環要素をエンコードする第一の加算入力整数リストおよび第二の加算入力環要素をエンコードする第二の加算入力整数リストを受領する段階と、
・前記第一および第二の加算入力整数リストから決定される環要素に前記増分テーブルを適用することによって加算出力環要素をエンコードする加算出力整数リストを決定する段階であって、前記加算出力環要素は前記第一の加算入力環要素および前記第二の加算入力環要素のモジュラー加算に等しい、段階とを実行するよう構成されている、
態様６または７記載の計算装置。
〔態様９〕
前記加算出力整数リストを決定することが、
・一つまたは複数の基本要素の冪乗の線形結合である環要素への前記増分テーブルの第一の適用によって、中間加算環要素をエンコードする中間加算整数リストを決定する段階であって、前記冪乗は前記第一および第二の加算入力整数リストおよび前記基本要素の位数を法とするモジュロ演算から決定される、段階と、
・前記加算出力整数リストを決定する段階であって、前記中間加算整数リストから決定されるおよび前記第二の加算入力整数リストから決定される環要素への前記増分テーブルの第二の適用と、前記基本要素の位数を法とするモジュロ演算とを含む、段階とを含む、
態様８記載の計算装置。
〔態様１０〕
前記中間加算整数リストを決定することがさらに、前記第一および第二の加算入力整数リストから決定された整数を、第一の適用から帰結する整数リスト中の整数に加算すること前記基本要素の位数を法としてのモジュロ演算を含む、
態様９記載の計算装置。
〔態様１１〕
・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第一の整数から前記第二の整数リストの第一の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第一の整数リストの第二の整数から前記第二の整数リストの第一の整数を引いたもの乗したもの、によって形成される環要素に適用される、および／または
・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第一の整数から前記第一の整数リストの第二の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第二の整数リストの第一の整数から前記第一の整数リストの前記第二の整数を引いたもの乗したもの、によって形成される環要素に適用される、および／または
・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第二の整数から前記第一の整数リストの第一の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第二の整数リストの第一の整数から前記第一の整数リストの前記第一の整数を引いたもの乗したもの、によって形成される環要素に適用される、
態様９または１０記載の計算装置。
〔態様１２〕
・前記増分テーブルの前記第二の適用の前に、前記中間加算整数リストによって表わされる前記中間加算環要素が否定にされる、
態様９ないし１１のうちいずれか一項記載の計算装置。
〔態様１３〕
当該計算装置が乗算ユニットを有しており、前記乗算ユニットは、
・第一の乗算入力環要素をエンコードする第一の乗算入力整数リストおよび第二の乗算入力環要素をエンコードする第二の乗算入力整数リストを受領する段階と、
・前記第一および第二の乗算入力整数リストから決定される環要素に前記増分テーブルを適用することによって乗算出力環要素をエンコードする乗算出力整数リストを決定する段階であって、前記乗算出力環要素は前記第一の乗算入力環要素および前記第二の乗算入力環要素のモジュラー乗算に等しい、段階とを実行するよう構成されている、
態様６ないし１１のうちいずれか一項記載の計算装置。
〔態様１４〕
合成法を法とする難読化された算術を剰余数系において実行する電子的な計算方法であって、前記剰余数系は法の系列について定義され、それぞれの法が可換環を定義し、前記系列のそれぞれの法について関連付けられた基本要素が存在して、その法を法とするそれぞれの環要素が、それらの環要素がその基本要素の冪乗の線形結合に等しくなるよう、整数リストとして表現されうるという条件を満たし、それぞれの冪乗は前記整数リストによって決定される指数をもち、当該方法は、
・前記合成法を法とした一つまたは複数のオペランドを、それらの法を法とする環要素の一つまたは複数の系列として記憶する段階であって、ある系列の各環要素は法の前記系列の対応する法に関連付けられ、前記系列の少なくとも一つの環要素が整数リストとしてエンコードされている、段階と、
・環要素数系に従って前記オペランド記憶部の第一および第二のオペランドを加算および／または乗算する段階とを含む、
計算方法。
〔態様１５〕
コンピュータ・プログラムであって、該コンピュータ・プログラムがプログラム可能装置で実行されたときに態様１４記載の方法を実行するよう構成されたコンピュータ・プログラム命令を有する、コンピュータ・プログラム。
〔態様１６〕
コンピュータ可読媒体上に具現されている態様１５記載のコンピュータ・プログラム。
【符号の説明】
【００９８】
１００  電子計算装置
１０１  第一のオペランド
１０６  第二のオペランド
１０２、１０７  第一の法を法とする剰余
１０３、１０８  第二の法を法とする剰余
１０４、１０９  第三の法を法とする剰余
１０２．１、１０２．２  整数
１０７．１、１０７．２  整数
１１０  オペランド記憶部
１２０  テーブル記憶部
１２１  テーブルの系列
１２２  第一の法についての増分テーブル
１２３  第二の法についての増分テーブル
１２４  第三の法についての増分テーブル
１３０  計算ユニット
１３１  加算ユニットの系列
１３２  第一の加算ユニット
１３３  第二の加算ユニット
１３４  第三の加算ユニット
１３６  乗算ユニットの系列
１３７  第一の乗算ユニット
１３８  第二の乗算ユニット
１３９  第三の乗算ユニット
１４１  モジュロ演算器の系列
１４２  第一の法を法とした、第一の基本要素の位数についてのモジュロ演算器
１４３  第二の法を法とした、第二の基本要素の位数についてのモジュロ演算器
１４４  第三の法を法とした、第三の基本要素の位数についてのモジュロ演算器
２００  電子計算装置
２３０  計算ユニット
２３２  加算ユニット
２３７  乗算ユニット
２４２  モジュロ演算器
【図１ａ】
0006387466.tif 000007
【図１ｂ】
0006387466.tif 000008
【図２】
0006387466.tif 000009
【図３】
0006387466.tif 000010
【図４ａ】
0006387466.tif 000011
【図４ｂ】
0006387466.tif 000012