(57)【要約】  可換環(Zn; Zn [x] / f(x))で難読化演算を実行する電子計算装置100が提示される。計算装置は、インクリメント環要素(1; ut)について定義されたインクリメントテーブル(T)を格納するように構成された記憶装置110を有し、インクリメントテーブルは、出力環要素が、入力環要素に環加算されたインクリメント環要素に等しくなる(l = k + 1)ように、出力環要素(l = ul1 - ul2))を符号化する出力整数リストに入力環要素(k =uk1 - uk2)をマッピングする(T((k1、k2))=(l1、l2))。インクリメントテーブルを使用して、環加算ユニット130は、第1の加算入力環要素を符号化する第1の加算入力整数リスト(a1, a2)と、第2の加算入力環要素を符号化する第2の加算入力整数リスト(b1、b2)とを加算する。装置は、同様にインクリメントテーブルを使用する環乗算ユニット140を備えることができる。
2018503113.tif 000002
【特許請求の範囲】
【請求項１】
可換環における難読化演算を実行するための電子計算装置であって、前記環は、有限個の環要素を持ち、前記環要素上で環加算及び環乗算が定義され、前記計算装置は、環要素を符号化する整数リスト上で演算し、前記整数リストは、少なくとも２つの整数を有し、整数リストは、環要素が基数環要素のべき乗の線形結合に等しいように環要素を符号化し、前記基数環要素は、前記環におけるオーダーを持ち、前記べき乗は、前記整数リストにより決定される指数を持ち、第１の指数と第２の指数との差は、許容差分リストに含まれ、前記許容差分リストのサイズは、前記オーダー未満であり、前記計算装置は、
インクリメント環要素のために定義されるインクリメントテーブルを記憶するための記憶部、
を有し、
前記インクリメントテーブルは、入力環要素を表す整数リストを、出力環要素を符号化する出力整数リストにマッピングし、前記出力環要素は、前記入力環要素に環加算された前記インクリメント環要素に等しく、前記出力環要素は、前記基数環要素のべき乗の線形結合に等しく、前記べき乗は、前記出力整数リストによって決定される指数を持ち、第１の指数と第２の指数との差は、許容差分リストに含まれる、計算装置。
【請求項２】
前記許容差分リストのサイズが、前記オーダーの５０％未満、好ましくは前記オーダーの２０％未満、より好ましくは前記オーダーの１０％未満、さらにより好ましくは前記オーダーの５％未満である、請求項１に記載の計算装置。
【請求項３】
前記基数環要素のオーダーをｋ、前記許容差分リストのサイズをｃ、前記環のサイズをＮとしたとき、k*(c-1)/(N-1)が２未満であり、好ましくは１に等しい、請求項１または請求項２に記載の計算装置。
【請求項４】
前記基数環要素のオーダーをｋ、前記許容差分リストのサイズをｃ、前記環のサイズをＮとしたとき、k*(c-1)/(N-1)が２以上である、請求項１または請求項２に記載の計算装置。
【請求項５】
前記インクリメントテーブルが、入力として、前記入力環要素を表す入力整数リストをとり、
前記入力整数リストの第１の整数と第２の整数との間の算術差が、前記許容差分リストに含まれ、
前記入力整数リストの整数が、前記許容差分リストに含まれる、
請求項１から請求項４のいずれか一項に記載の計算装置。
【請求項６】
第１加算入力環要素を符号化する第１加算入力整数リスト、及び、第２加算入力環要素を符号化する第２加算入力整数リストを受け取り、
前記第１及び第２加算入力整数リストから決定される環要素に前記インクリメントテーブルを適用することにより、加算出力環要素を符号化する加算出力整数リストを決定する、
ための環加算ユニットを有し、
前記加算出力環要素が、前記第１加算入力環要素と前記第２加算入力環要素の環加算に等しい、
請求項１から請求項５のいずれか一項に記載の計算装置。
【請求項７】
前記加算出力整数リストの決定が、
１つ又は複数の基数要素のべき乗の線形結合に等しい環要素への前記インクリメントテーブルの第１の適用によって中間加算環要素を符号化する中間加算整数リストを決定するステップであって、前記べき乗は、前記第１及び第２加算入力整数リストから決定されるステップ、
前記中間加算整数リストから決定される及び前記第２加算入力整数リストから決定される環要素への前記インクリメントテーブルの第２の適用を有する前記加算出力整数リストを決定するステップ、
を有する、請求項６に記載の計算装置。
【請求項８】
第１乗算入力環要素を符号化する第１乗算入力整数リスト、及び、第２乗算入力環要素を符号化する第２乗算入力整数リストを受け取り、
前記第１及び第２乗算入力整数リストから決定される環要素に前記インクリメントテーブルを適用することにより、乗算出力環要素を符号化する乗算出力整数リストを決定する、
ための環乗算ユニットを有し、
前記乗算出力環要素が、前記第１乗算入力環要素と前記第２乗算入力環要素の環乗算に等しい、
請求項１から請求項７のいずれか一項に記載の計算装置。
【請求項９】
前記可換環は、整数係数を法とする整数により形成される環である、及び／又は、
前記可換環は、整数多項式係数を法とする整数多項式により形成される環である、
請求項１から請求項８のいずれか一項に記載の計算装置。
【請求項１０】
請求項１に記載の計算装置に用いるための、整数リストとして可換環の環要素を符号化するための環符号化装置であって、
基数環要素のために定義された符号化テーブルを記憶するための記憶部を有し、
前記符号化テーブルは、前記環要素を整数リストにマッピングし、前記環要素は、前記基数環要素のべき乗の線形結合に等しく、前記べき乗は、前記整数リストにより決定される指数を持ち、第１の指数と第２の指数との差が許容差分リストに含まれ、前記許容差分リストのサイズが前記オーダー未満である、環符号化装置。
【請求項１１】
請求項１に記載の計算装置に用いるための、可換環の環要素へと整数リストを復号するための環復号装置であって、前記環復号装置は、１つ又は複数の基数環要素のために、前記環要素を決定し、前記環要素は、１つ又は複数の基数環要素のべき乗の線形結合に等しく、前記べき乗は、前記整数リストにより決定される指数を持ち、第１の指数と第２の指数との間の差が許容差分リストに含まれ、前記許容差分リストのサイズが前記オーダー未満である、環復号装置。
【請求項１２】
可換環における難読化演算を実行するための計算装置において使用するためのインクリメントテーブルを計算するためのテーブル計算装置であって、前記環は、有限個の環要素を持ち、前記環要素上で環加算及び環乗算が定義され、前記計算装置は、環要素を符号化する整数リスト上で演算し、前記整数リストは、少なくとも２つの整数を有し、前記テーブル計算装置は、インクリメントテーブルを構成するためのテーブル作成ユニットを有し、前記テーブル作成ユニットは、
入力環要素を繰り返し選択し、
前記入力環要素に環加算されたインクリメント環要素に等しい出力環要素を決定し、
基数環要素のべき乗の線形結合として前記出力環要素を符号化する出力整数リストを決定し、
前記基数環要素は、前記環におけるオーダーを持ち、前記べき乗は、前記出力整数リストにより決定される指数を持ち、第１の指数と第２の指数との間の差が許容差分リストに含まれ、前記許容差分リストのサイズが前記オーダー未満であり、
前記テーブル作成ユニットはさらに、
前記入力環要素を前記出力整数リストにマッピングするインクリメントテーブルにエントリを追加する、環復号装置。
【請求項１３】
請求項１に記載の可換環において難読化演算を実行するための電子計算装置を構成するための電子構成装置であって、
有限個の環要素を持つ環を提供し、
オーダーkを持つ基数環要素uを提供し、
2018503113.tif 000095
の何らかの要素tについて前記環において
2018503113.tif 000096
の場合にのみ、２つの要素r1及びr2が等価であるように、
2018503113.tif 000097
に関する等価関係であって、
2018503113.tif 000098
に関する等価クラスを誘導する等価関係を定義し、
各等価クラスから少なくとも１つの要素を選択することにより許容差分リストを決定する、電子構成装置。
【請求項１４】
可換環における難読化演算を実行するための電子計算方法であって、前記環は、有限個の環要素を持ち、前記環要素上で環加算及び環乗算が定義され、前記計算方法は、環要素を符号化する整数リスト上で演算し、前記整数リストは、少なくとも２つの整数を有し、整数リストは、環要素が基数環要素のべき乗の線形結合に等しいように環要素を符号化し、前記基数環要素は、前記環におけるオーダーを持ち、前記べき乗は、前記整数リストにより決定される指数を持ち、第１の指数と第２の指数との差は、許容差分リストに含まれ、前記許容差分リストのサイズは、前記オーダー未満であり、前記計算方法は、インクリメント環要素のために定義されるインクリメントテーブルを記憶し、前記インクリメントテーブルは、入力環要素を表す整数リストを、出力環要素を符号化する出力整数リストにマッピングし、前記出力環要素は、前記入力環要素に環加算された前記インクリメント環要素に等しく、前記出力環要素は、前記基数環要素のべき乗の線形結合に等しく、前記べき乗は、前記出力整数リストによって決定される指数を持ち、第１の指数と第２の指数との差は、許容差分リストに含まれ、前記許容差分リストのサイズは、前記オーダー未満である、方法。
【請求項１５】
第１加算入力環要素を符号化する第１加算入力整数リスト、及び、第２加算入力環要素を符号化する第２加算入力整数リストを受け取り、
前記第１及び第２加算入力整数リストから決定される環要素に前記インクリメントテーブルを適用することにより、加算出力環要素を符号化する加算出力整数リストを決定し、前記加算出力環要素が、前記第１加算入力環要素と前記第２加算入力環要素の環加算に等しい、請求項１４に記載の電子計算方法。
【請求項１６】
プログラム可能装置により実行されて前記プログラム可能装置に請求項１４または請求項１５に記載の方法を実行させるコンピュータプログラム。
【請求項１７】
請求項１６に記載のコンピュータプログラム、及び
可換環における難読化演算を実行するためのインクリメントテーブル
を有するコンピュータ可読媒体であって、
前記環は、有限個の環要素を持ち、前記環要素上で環加算及び環乗算が定義され、整数リストは、環要素を符号化し、前記整数リストは、少なくとも２つの整数を有し、整数リストは、環要素が基数環要素のべき乗の線形結合に等しいように環要素を符号化し、前記基数環要素は、前記環におけるオーダーを持ち、前記べき乗は、前記整数リストにより決定される指数を持ち、第１の指数と第２の指数との差は、許容差分リストに含まれ、前記許容差分リストのサイズは、前記オーダー未満であり、
前記インクリメントテーブルは、インクリメント環要素のために定義され、
前記インクリメントテーブルは、入力環要素を表す整数リストを、出力環要素を符号化する出力整数リストにマッピングし、前記出力環要素は、前記入力環要素に環加算された前記インクリメント環要素に等しく、前記出力環要素は、前記基数環要素のべき乗の線形結合に等しく、前記べき乗は、前記出力整数リストによって決定される指数を持ち、第１の指数と第２の指数との差は、許容差分リストに含まれる、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子計算装置、環符号化装置、環復号装置、テーブル計算装置、電子計算方法、コンピュータプログラム、およびコンピュータ可読媒体に関する。
【背景技術】
【０００２】
ホワイトボックス暗号や一般的なソフトウェアの難読化では、プレーンな値ではなく符号化された値で計算が行われることがよくある。計算が、プレーンな値自体ではなく、符号化された値で実行される場合、難読化されたソフトウェアのリバースエンジニアリングは難しくなる。
【０００３】
符号化後では、コンピュータの組み込み基本命令を使用して、加算や乗算などの通常の演算を実行することはできない。符号化された値の直接的な加算は、通常、値の加算の符号化をもたらさない。同じことが、乗算にも当てはまる。式にすると、殆どのxおよびyに対して、E(x)+E(y)≠E(x+y)である(Eは符号化関数を表す)。
【０００４】
この問題の解決策は、加算(A)および乗算(M)テーブルを導入することである。テーブルは、入力として2つの符号化された値を取り、加算または乗算演算の符号化に対応する出力として符号化された値を生成する。テーブルは以下のように定義することができる：A(E(x), E(y)) = E(x+y); M(E(x), E(y)) = E(xy).これらのテーブルは、算術演算が符号化された値に対して直接実行されることを可能にする。
【０００５】
テーブルを使用する難読化された加算および乗算には、少なくとも2つの欠点がある。まず、テーブルが非常に大きくなる可能性がある。xおよびyがl(エル)ビットで表される場合、各テーブルは(22l)*lビットを必要とする。
【０００６】
第２に、そのような大きなテーブルはソフトウェア中で容易に見つかる可能性がある。さらに悪いことに、たとえ符号化されていても、例えば符号化で保持されているこれらの関数の特性を介して、テーブルは加算演算または乗算演算として識別される可能性がある。例えば、乗算テーブルは、M(E(0), E(x)) = E(0)を満たす。攻撃者は、テーブルが表す演算を推測するためにこれと同様の特性を使用することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
難読化演算を行う改良された方法を有することは有益であろう。特許請求の範囲で定義されるような計算装置が提供される。
【課題を解決するための手段】
【０００８】
本発明者らは、場合によっては、複数の値を単一の符号化された値に符号化する必要なく、単一のテーブルを使用して符号化された値に対する乗算および加算を実行できることを見出した。同じテーブルが加算および乗算に使用されるので、リバースエンジニアリングの間に、加算が実行されるのか乗算が実行されるのかを知ることは難しいだろう。加算および乗算は外部から見て同じ動作であるように見えるので、発明者はこの方法を「均質な難読化」と呼んでいる。たとえ攻撃者が使用されているテーブルを見つけることができたとしても、何らかの形でインクリメントテーブルとしての関数を把握できたとしても、加算演算が実行されているのか乗算演算が実行されているのかはまだ分からない。テーブルが整数リストの要素に作用する方法は加算と乗算で異なるが、これは従来の難読化を使用して簡単に隠蔽することができる。
【０００９】
さらに、使用される単一のテーブルは背景技術で説明されたテーブルよりも小さく、約2llビットが必要である。加算のみが使用される場合でも、難読化された加算のために必要なテーブルは背景技術で提案されたテーブルよりも小さい。
ありとあらゆる環が整数リストとして符号化を可能にすることはできないが、本発明は、多くの異なる可換環Rに適用される。可換環は、数多くのよく知られた数学的構造、例えば数を法とする整数
2018503113.tif 000003
または数と多項式を法とする多項式
2018503113.tif 000004
を含む数学的概念である。体は可換環の特殊な場合である。本明細書で説明するように、当業者は、所与の環が難読化を可能にするかどうかを検証することができる。
【００１０】
例えば、環要素は、2つの整数(a, b)として符号化することができる。符号化された環要素を符号化された環要素にインクリメント値を加えたものをマッピングするインクリメントテーブルを使用して、符号化に対して直接的に算術演算を行うことができる。例えば、uc-ud = ua-ub+1の場合、テーブルは、(a, b)を(c, d)にマッピングすることができる。加算および乗算の両方は、インクリメントテーブルを繰り返し適用することによって実行される。
【００１１】
インクリメントテーブルを使用して加算および乗算を行うと、インクリメント演算が２変数ではなく１変数である(すなわち、テーブルは、2つの環要素の代わりに、１つの環要素に作用することができる)ため、同じテーブルを加算および乗算に使用し、サイズを小さくすることができるため、難読化が改善される。しかし、インクリメントテーブルのサイズをさらに縮小することが望まれる。
【００１２】
発明者らは、基本要素の指数に制限を設け、環要素を表す整数リスト内の整数に含意することによって、インクリメントテーブルをさらに減らすことができることを見出した。特に、整数リスト内の整数間の差は、特定の許容差分リストに制限されることができる。このリストのサイズは、基数環要素(または2つ以上ある場合には基数環要素の1つ)のオーダーよりも小さい。
【００１３】
本明細書でより十分に議論されるように、多くの他の可能性および変形例が存在する。攻撃者には、多くの変形例のうちのどれが任意の所与の実装において選択されているのかは一般的には分からない。
【００１４】
計算装置は電子装置であり、携帯電話などのモバイル電子デバイス、セットトップボックス、コンピュータ、スマートカードとすることができる。
【００１５】
本明細書で説明されるような難読化された演算は、広範囲の実用的なアプリケーションに適用されることができる。そのような実用的なアプリケーションには、リバースエンジニアリングが防止されるべきである、プライベートハードウェア上で動作する安全なアプリケーション、例えばバンキングアプリケーションなどが含まれる。他のアプリケーションは、データの偶発的な漏洩が防止されるべきであるアプリケーションを含む。プログラムが秘密のデータを解放するように謀られた場合、漏れたデータが符号化されていれば、懸念が少なくなる。難読化された演算は、アプリケーションを実行しているサーバに適用されることもできる。ユーザーが符号化された形式でデータを送受信する場合はプライバシーが増加する。
【００１６】
本発明による方法は、コンピュータ実装された方法としてコンピュータ上で、または専用ハードウェアにおいて、あるいはその両方の組み合わせで実施されてもよい。本発明による方法のための実行可能コードまたはその部分は、コンピュータプログラム製品に記憶されることができる。コンピュータプログラム製品の例には、メモリデバイス、光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどが含まれる。好ましくは、コンピュータプログラム製品は、コンピュータ上で実行されるときに本発明による方法を実行するためのコンピュータ可読媒体上に記憶された非一過性プログラムコード手段を含む。
【００１７】
好ましい実施形態では、コンピュータプログラムは、コンピュータプログラムがコンピュータ上で実行されるときに本発明による方法のすべてのステップを実行するように適合されたコンピュータプログラムコード手段を含む。好ましくは、コンピュータプログラムは、コンピュータ読取可能媒体上に具現化される。
【００１８】
本発明のこれらのおよび他の態様は、以下に記載される実施形態から明らかであり、以下に説明される実施形態を参照して説明される。
【図面の簡単な説明】
【００１９】
【図１ａ】概略的に演算装置100の実施形態の一例を示す図。
【図１ｂ】概略的に環加算ユニット130の実施形態の一例を示す図。
【図１ｃ】概略的に環乗算ユニット40の実施形態の一例を示す図。
【図２】概略的に演算装置101の実施形態の一例を示す図。
【図３】概略的に、演算装置で使用するためのインクリメントテーブルを計算するためのテーブル計算装置200の実施形態の一例を示す図。
【図４】概略的に難読化演算を実行するための計算方法30の実施形態の一例を示す図。
【図５】概略的に加算方法400の実施形態の一例を示す図。
【図６】概略的に乗算方法500の実施形態の一例を示す図。
【図７ａ】本実施形態に係るコンピュータプログラムを含む書込可能部分を有するコンピュータ可読媒体を示す図。
【図７ｂ】本実施形態に係るプロセッサシステムの概略図を示す図。  異なる図面において同じ参照番号を有する項目は、同じ構造的特徴および同じ機能を有するか、または同じ信号である。そのような項目の機能および/または構造が説明されている場合、詳細な説明においてそれらの繰り返しの説明の必要はない。
【発明を実施するための形態】
【００２０】
本発明は多くの異なる形態で実施可能であるが、1つまたは複数の特定の実施形態が図面には示され、明細書において詳細に説明されており、本開示は、本発明の原理の例示として考えられるべきであり、示されて説明された特定の実施形態に本発明を限定することを意図するものではないことを理解されたい。
【００２１】
以下では、理解のために、実施形態の要素についてその動作を説明する。しかしながら、各要素は、それらによって実行されるように記載された機能を実行するように構成されていることは明らかであろう。
【００２２】
実施形態は、同じテーブルを使用して乗算および加算演算が実行されることを可能にする。以下では、まず、計算装置の実施形態の可能なアーキテクチャのいくつかについて論じられる。次に、難読化演算を実行するためのいくつかの代替方法について議論される。
【００２３】
図1は、計算装置100の実施形態の一例を概略的に示す。計算装置100は、有限の可換環における難読化演算を実行するための電子装置である。可換環の多くの例が知られている。以下の例は、このような2つの環：数を法とする整数
2018503113.tif 000005
ならびに数および多項式を法とする多項式
2018503113.tif 000006
について与えられる。他の実施形態は、他の可換環を使用することができる。
【００２４】
環の要素は環要素と呼ばれる。環要素上では、加算および乗算が定義され、後者は、環加算および環乗算と呼ばれる。
【００２５】
環要素は、必要であれば、任意の適切な形態で表すことができる。例えば、
2018503113.tif 000007
の要素は整数で表すことができ、
2018503113.tif 000008
の要素は多項式で表すことができる。しかし、計算装置100では、環要素は整数リストとして表される。例えば、環要素aは、計算装置100においてリスト(a1, a2)によって表されてもよい。後者は、非整数環、例えば多項式環に対しても成り立つ。整数リストは、環要素と整数リストとの間の何らかのマッピングに従って環要素を符号化する。任意の環要素を所与として、その環要素を表す少なくとも1つの整数リストが存在し、任意の整数リストを所与として、それが表す環要素が1つだけ存在する。実施形態では、任意の環要素は、整数のリストとして表すことができる。
【００２６】
整数リストは少なくとも2つの整数を含み、環要素が、基数である環要素のべき乗の線形結合に等しくなるように環要素を符号化し、そのべき乗は、整数リストによって決定される指数を有する。例えば、整数リスト(a1, a2)は、基数環要素uを使用して、環要素がべき乗の線形結合、例えば
2018503113.tif 000009
に等しくなるように、環要素aを符号化することができる。
【００２７】
基数環要素は、環内のオーダを有する。基数環要素uのオーダーは、環内でuk = 1となるような最小の正の整数kとして定義される。時に、オーダーはorder(u) = kとして示される。
【００２８】
指数の差は許容差分リストに含まれる。指数自体が整数リスト内にある場合、整数リストの第1の整数、例えばa1、および整数リストの第2の整数、例えばa2が許容差分リストに含まれる。一方、これは必須ではない。たとえば、整数リスト(a1, a2)は、
2018503113.tif 000010
2018503113.tif 000011
などにマップすることもできる。この場合、整数リストの1つの要素が許容差分リストに含まれていればよい。整数のリストから指数への他のマッピングが可能である。
【００２９】
許容差分リストのサイズは、基数要素のオーダーよりも小さい。これは、整数リストの選択肢の数が減少することを意味する。例えば、オーダーkの一つの基数環要素uが与えられると、異なる表現の総数はk2となる。しかしながら、差がサイズcの許容差分リスト中にあることが要求される場合、表現の総数はk2未満であるkcになる。文字Aを使用して許容差分リストを示す。
【００３０】
整数リストは少なくとも2つの要素を持つ。結局のところ、整数リストが短い場合は、加算と乗算の演算に必要なステップが少なくなる。したがって、一実施形態では、整数リストは常に2つの要素を有する。主な説明では、整数リストが整数対であると仮定するが、2つより多い要素を有する整数リストの例が提供される。
【００３１】
一例として、整数リスト(a1, a2)は環要素
2018503113.tif 000012
にマッピングすることができ、uは基数環要素と呼ばれる特別な環要素である。さらに、単一の基数環要素uが使用されると仮定する。以下では、複数の基数要素の使用を含む多くの変形例について議論される。しかし、主な議論では、「一例の符号化」として、所与の整数リスト(a1, a2)が環要素
2018503113.tif 000013
にマッピングされ、a1 - a2∈A(ここで、Aは許容差分リストを表す)であることを仮定する(他の選択肢があることに注意)。
【００３２】
許容差分リストAは、
2018503113.tif 000014
のサブセットと見なすことができる。許容差分リストは、正の整数のリスト、例えば配列として表されることができる。ある差がリスト中にあるかどうかを検証するには、モジュロk演算を実行する必要がある。しかし、実際の実装では、許容差分リストの使用は暗黙的になり、エンコーディング演算は、条件を満たす整数リストを生成し、整数リストに対する演算は、条件を満たす整数リストを出力として生成する。
【００３３】
実施形態では、整数リスト内の整数は非負である。これは、計算を簡略化するが、必須ではない。また、本実施形態では、整数リストの整数は、基数要素のオーダーを法として取られる。基数要素uのオーダーは、uk = 1となる最小の整数kである。例えば、モジュロk演算を実行することによって、整数リスト中の値を[0, k-1]の範囲に維持することが便利である。
【００３４】
計算装置100は、オペランド記憶部150を備えることができる。オペランドは、整数リストとしてオペランド記憶部150に格納される。演算は、オペランド記憶部150に格納されたオペランドに対して実行されることができる。前記演算の結果はオペランド記憶部150に格納され、新しい演算で使用されてもよいし、別のデバイスに出力されるなどしてもよい。
【００３５】
整数リスト、例えば、オペランド記憶部150内のオペランドは、いくつかの異なる方法で表現されることができる。整数リストは、整数のリスト、例えば配列として表現されることができます。例えば、整数リストの第1の整数と整数リストの第2の整数との間の算術差は、許容差分リストに含まれる。例えば、2つの要素を有する整数リストの好ましい場合を仮定すると、整数リストは、k1 - k2∈ Aとなるように、順序付きリスト(k1, k2)として表され得る。この例では、パラメータk1とk2の両方をmod k、すなわち、基数環要素のオーダーを法として選択することができる。これは厳密には必要ではなく、パラメータは任意の整数であってもよく、この場合、要件は、例えば(k1 - k2)mod k ∈ Aとして実現されることができる。
【００３６】
別の例として、許容差分リストから整数リスト内の整数の1つを選択することによって、インクリメントリストが表されることができる。例えば、この表現は整数リスト(k1, k2)を取ることができ、ここで、k2が許容差分リストに含まれているとすると、他の整数は、基数環要素uのオーダーkを法として取ることができる。許される差異のリストは、オーダーよりも大幅に小さくすることができ、この表現では、Aの要素を表現するために必要なビット数が少なくてすみ、スペースの必要性が減少する。一実施形態では、許容差分リストAのメンバであることが要求される整数リスト内の整数は、固定位置、例えば一番目または二番目の位置にある。しかし、後者は必要ではなく、その位置は、更なる難読化の手段として変化する可能性がある。
【００３７】
計算装置100は、インクリメント環要素に対して定義されたインクリメントテーブルTを記憶するように構成された記憶部110を備える。インクリメントテーブルは、出力環要素が入力環要素に環加算されたインクリメント環要素と等しくなるように、入力環要素を、出力環要素を符号化する出力整数リストに、マッピングする。実施形態では、入力環要素は、整数リストとして表される。このようにして、 テーブルTは、両方とも同じ符号化、例えば 同じマッピングにしたがう、整数リストを整数リストにマップする。しかし、入力環要素が別の符号化の整数リストとして表現される実施形態もある。いずれにしても、入力環要素はデジタル形式で表され、テーブルが入力環要素を出力環要素にマッピングすることを可能にする。
【００３８】
インクリメントテーブルの出力整数リストは、出力整数リストが表す出力環要素が基数環要素(u)のべき乗の線形結合に等しいという要件を満たし、ここで、べき乗は出力整数リストによって決定される指数を持ち、第１の指数(l1)と第2の指数(l2)との間の差は許容差分リスト(A)に含まれる。これは限定差分要件と呼ばれる。実施形態では、限定差分要件は、例えば整数リスト内の整数の関数が許容差分リストに含まれるといった、整数リスト内の整数に関する要件に変換される。
【００３９】
テーブルは、関連する出力整数リストと一緒に、何らかの形式で入力環要素をリストすることができる。テーブルは、入力環を省略し、出力整数リストのみをリストすることによって、記憶装置において表現されることもできる。例えば、これは、入力環が標準形式で表される場合に行われることができる。
【００４０】
例えば、例示的な符号化を仮定すると、入力環要素
2018503113.tif 000015
は、テーブルTによって出力整数リストにマッピングされることができる。この場合、入力環要素は、(T(k1, k2))=(l1, l2)となるように、整数リストとして表現されることができる。後者は出力環要素
2018503113.tif 000016
を符号化する。出力環要素は、入力環要素に環加算されたインクリメント環要素に等しい。例えば、インクリメント環要素が1である場合、l = k + 1である。一実施形態では、インクリメント要素は1であってもよいが、これは必須ではない。例えば、例示的な符号化を使用して、インクリメント要素は、tのある値、例えば、任意の値0 <= t <order(u)に対してutとして選択されることができる。
【００４１】
多くの整数リストは、限定差分要件による環要素を表さないので、入力整数リストの可能な組み合わせのすべてを表に表現する必要はない。
【００４２】
インクリメントテーブルは、背景技術で説明されたテーブルよりもはるかに小さい。後者のテーブルは、符号化された出力を生成するために、2つの入力、例えば、2つの符号化された数を取ります。しかしながら、テーブルTは、1つの符号化された出力を生成するために1つの符号化された入力のみをとり、インクリメント環要素は固定されている。符号化が同様の量の空間を占めると仮定すると、Tの入力空間は平方根に縮小される。これは大幅なサイズの改善である。
【００４３】
インクリメントテーブルだけで、計算装置は、難読化された態様で環要素を表現することができ、インクリメント要素をそのような符号化された環要素に追加することができる。これは、例えば、カウンタを実装するために使用されることができる。
【００４４】
一実施形態では、計算装置100は、環加算ユニット130および環乗算ユニット140を備える。計算装置100はまた、環否定ユニット120を備えることができる。一実施形態では、環乗算ユニット140は、加算を行うために加算ユニット130を用いてことができ、加算ユニット130は否定ユニット120を使用することができる。これは、ユニット120,130、および140の間の線によって図1に示されている。ただし、ユニットは複製されることができ、例えば、加算ユニット130はそれ自体の否定を行うことができ、乗算140はそれ自身の加算を行うことができる。否定はまた、「符号の変更」とも呼ばれる。
【００４５】
否定ユニット120は、否定入力環要素aを符号化する否定入力整数リスト(a1、a2)を受け取ることができる。否定ユニット120は、否定出力環要素bを符号化する否定出力整数リスト(b1, b2)を決定するように構成される。否定出力環要素は、否定入力環要素の否定であり、例えば、否定出力環要素は、加算のための中立環要素(0)から否定入力環要素を減算したものに等しい。すなわち、b = -aである。
【００４６】
一実施形態では、否定ユニットは、否定入力整数リストを置換することによって出力整数リストを計算することができる。一例のエンコーディング
2018503113.tif 000017
を使用すると、出力整数リストは(a2, a1)になる。0置換によって否定することは、要素が読み出されるアドレスを変更することによってコード内で効率的に実施することができ、メモリ内の実際の順序を必ずしも変更する必要はない。許容差分リストが、a∈Aが-a∈Aを意味するという要件を満たす場合、これは可能です。
【００４７】
一実施形態では、否定ユニットは、整数リストの各整数に定数を加えることによって出力整数リストを計算することができる。例えば、um = -1となるような整数mを用いた符号化の例では、例えば、出力整数リストは、(a1 + m, a2 + m)とすることができる。
【００４８】
実施形態では、否定ユニットが否定テーブルを含む。否定テーブルは、否定入力環要素aを符号化する否定入力整数リスト((a1, a2))を受け取り、b = -aとなるように否定出力環要素bを符号化する否定出力整数リスト((b1, b2))を生成するように構成される。 否定テーブルは、単項式であるためにそれほど大きくはなく、さらに、否定テーブルは、整数リストに対する限定差分要件を満たす入力用の否定出力整数リストを含む必要があるだけである。否定テーブルは、加算および乗算演算において同様に使用される。
【００４９】
環加算ユニット130は、第1の加算入力環要素を符号化する第1の加算入力整数リスト(a1, a2)と第2の加算入力環要素を符号化する第2の加算入力整数リスト(b1, b2) を受け取るように構成される。例えば、環加算ユニット130は、オペランド記憶部150から2つのオペランドを受け取ることができる。環加算部130は、第1及び第2の加算入力整数リストから決定された環要素にインクリメントテーブルを適用することにより加算出力環要素を符号化する加算出力整数リストを決定するように構成され、加算出力環要素は、第1の加算入力環要素および第2の加算入力環要素の環加算に等しい。
【００５０】
一実施形態では、整数リストを特定の環要素にマッピングすることは、複数のサブマッピングを含み、各サブマッピングは整数リストの整数に関連し、サブマッピングは整数を環要素にマッピングする。マッピングは、関連する整数に適用されるサブマッピングの線形結合、例えば、和である。サブマッピングは、基数要素を、関連する整数によって決定される指数に上げることであることができる。例えば、符号化の例では、(a1, a2)はサブマッピング
2018503113.tif 000018
と
2018503113.tif 000019
との和であると言える。
【００５１】
図1bは、加算ユニット130の一実施形態を示す。加算ユニット130は、第1の加算入力整数リスト131と、第2の加算入力整数リスト132とを入力する。加算ユニット130は、第2の加算入力整数リスト132の整数から得られる環要素を第1の加算入力環要素に繰り返し加算する中間加算ユニット134を備える。例えば、中間加算ユニット134は、第1の整数リスト要素に初期化された中間合計133に加算することができる。この加算には、記憶部110からインクリメントテーブルを適用することが含まれる。
【００５２】
環乗算ユニット140は、第1の乗算入力環要素を符号化する第1の乗算入力整数リスト(r1, r2)と、第2の乗算入力環要素を符号化する第2の乗算入力整数リスト(s1, s2)とを入力するように構成される 。例えば、乗算ユニット140は、オペランド記憶部150から2つのオペランドを受信することができる。環乗算ユニット140は、第1および第2の乗算入力整数リストから決定された環要素にインクリメントテーブルを適用することによって、乗算出力環要素を符号化する乗算出力整数リストを決定するように構成され、乗算出力環要素は、第1の乗算入力環要素と第2の乗算入力環要素との環乗算に等しい。
【００５３】
図1cは、乗算ユニット140の考えられる実施形態を示す。乗算ユニット140は、第1の乗算入力整数リスト141および第2の乗算入力整数リスト142を受け取る。乗算ユニット140は、第1および第2の乗算入力整数リスト141,142から、第1および第2の中間乗算環要素をそれぞれ符号化する第1の中間乗算整数リスト145(t1, t2)および第2の中間乗算整数リスト146(u1, u2)を決定するように構成された中間乗算ユニット144を含む。乗算ユニット140は、環加算ユニット130を介して、第1の中間乗算整数リスト145および第2の中間乗算整数リスト146を加算するように構成される。中間整数リストを決定することは、整数リスト内の整数に対する算術演算を含むが、インクリメントテーブルを必要としない。
【００５４】
演算装置100は、可換環の環要素を整数リストとして符号化する環符号化ユニット170と、整数リスト(a, b)を可換環の環要素(x)に復号する環復号ユニット160とをオプションとして備える。 例えば、計算装置100が符号化された入力を受信し、及び/又は、符号化された出力として報告するときには、符号化ユニット170および/または復号化ユニット160は存在しなくてもよい。符号化ユニット170および/または復号ユニット160は、例えば、符号化デバイスおよび/または復号デバイス160などのスタンドアロン・ユニットとして実装されてもよい。
【００５５】
環符号化ユニット170は、基数環要素(u)に対して定義された符号化テーブルを格納するように構成された記憶装置172を有し、符号化テーブルは、環要素が基数環要素のべき乗の線形結合(x = ua - ub)に等しくなるように、環要素(x)を整数リスト((a、b))にマッピングし、べき乗は整数リストによって決定される指数を有する。符号化ユニット170は、符号化された環要素をオペレータ記憶部150に格納することができる。符号化ユニット170は、システムが平易な情報で動作することを可能にする。
【００５６】
符号化テーブルは、環要素が基数環要素のべき乗の線形結合(x = ua - ub)に等しくなるように環要素(x)を整数リスト((a、b))にマッピングし、べき乗は整数リストによって決定される指数を持ち、第1の指数(a1)と第2の指数(a2)との差が許容差分リスト(A)に含まれ、許容差分リストのサイズはオーダー(k)より小さい。
【００５７】
環復号ユニット160は、1つ以上の基数環要素(u)に対して、環要素が1つ以上の基数環要素のべき乗の線形結合(x = ua - ub)に等しくなるように、環要素(x)を決定し、ここで、べき乗は整数リストによって決定される指数を有する。例えば、復号ユニット160は、整数リストを環要素にマッピングする復号テーブルを記憶する記憶部を含むことができる。例えば、復号ユニット160は、べき乗およびそれらの線形結合を計算するための計算ユニットを備えることができる。
【００５８】
復号テーブルは、制限付き差分要件を満たす整数リストをマップするだけでよく、その結果、復号テーブルは、可能性のあるすべての差分をマッピングする必要がある復号化テーブルよりもサイズが小さい。
【００５９】
多くの興味深い実施形態は、符号化ユニットおよび復号ユニット160および170の一方または両方を省略する。例えば、計算装置100は、コンピュータネットワーク、例えばインターネットを介して符号化された情報を受信するように構成されることができる。難読化計算装置100が動作するシステム、例えば難読化計算ソフトウェアを実行しているコンピュータの所有者は、入力情報、又は、例えばコンピュータネットワークを介して返送される、システム100によって出力される情報に使用される符号化を知らなくてよい。したがって、たとえ計算がクラウドで実行されたとしても、情報の所有者は、情報が安全であるという何らかの保証を有する。符号化された形式の情報で演算することは、暗号化、例えば暗証化を使用して、通常は不可能である。背景技術で概説されているようなテーブル・システムを使用が使用されても、これには２つの表が必要である。
【００６０】
典型的には、計算装置100は、装置100に格納された適切なソフトウェアを実行するマイクロプロセッサ(図示せず)を有し、そのソフトウェアは、ダウンロードされ、および/または、対応するメモリ、例えばRAMのような揮発性メモリまたはフラッシュのような不揮発性メモリ(図示せず)に格納されていることができる。あるいは、装置100は、全体としてまたは部分的に、例えばフィールドプログラマブルゲートアレイ(FPGA)のような、プログラマブルロジックに実装されてもよい。装置100は、全体としてまたは部分的に、いわゆる特定用途向け集積回路(ASIC)、すなわち、それらの特定の用途向けにカスタマイズされた集積回路(IC)として実装されることができる。
【００６１】
一実施形態では、電子計算装置は、対応するユニットの機能を実行するように構成された環加算回路と環乗算回路とを備える。計算装置は、否定回路を含んでもよい。回路は、例えば、VerilogやVHDLなどのハードウェア記述言語で関数を記述することによって得られるCMOSなどの集積回路であってもよい。回路は、プロセッサ回路および記憶回路であってもよく、プロセッサ回路は、記憶回路内で電子的に表される命令を実行する。回路は、FPGA、ASIC等であってもよい。
【００６２】
テーブル記憶部110およびオペランド記憶部150は、電子記憶装置、例えばメモリとして実装されることができる。両方の記憶部は同じメモリの一部であってもよいが、別個のメモリでもよい。テーブル記憶部110は、不揮発性の、書き込み不可能なメモリ、例えばROM、またはWORM(Write Once Read Many)メモリであってもよい。オペランドストア150は、揮発性または不揮発性の書き込み可能メモリ、たとえばフラッシュまたはRAMであってもよい。
【００６３】
図2は、計算装置101の一実施形態の一例を概略的に示す。計算装置101は、計算装置100の改良である。一実施形態では、計算装置101は、複数の環加算ユニット、複数の環乗算ユニット、および任意選択で複数の否定ユニットを備える。例えば、図2は、3つの乗算ユニット140.1、140.2および140.3、ならびに2つの加算ユニット130.1および130.2を示す。これらのユニットは、それぞれユニット140および130と同じ設計であってもよい。乗算および加算ユニットは、比較的小さなスペースしか取らず、例えば、ソフトウェアで実装された場合、これらのユニットは、数百の低レベルのコンピュータ命令を超える必要はない。特に、加算および/または乗算ユニットのコピーが、コンピュータプログラムで必要とされる各乗算または加算のために使用されてもよい。これは、伝統的な難読化技術を可能にする。一例として、図2は、難読化演算を用いて多項式ax2 + bx + cをどのように計算することができるかを示す。
【００６４】
加算、乗算、否定などの複数の演算ユニットの演算は、データ依存性によって許容される任意の順序の順序でよい。例えば、演算140.3は、130.1より前の任意の時点で、順序140.1,140.2,130.1および130.2中に挿入されることができる。また、後続の乗算や加算の順序は逆であってもよい。したがって、図2のような図は、多くの態様でソフトウェアプログラムの線形順序で変換され得る。ユニットは厳密に分離されている必要はなく、第1のユニットのための命令には、別のユニットのための命令が組み入れられていることができる。
【００６５】
図3は、計算装置で使用するインクリメントテーブルを計算するためのテーブル計算装置200の実施形態の一例を概略的に示す。インクリメントテーブルは、計算装置100のような装置において使用されることができる。インクリメントテーブルは、一時的ではない記憶装置、例えば、ハードディスク、不揮発性メモリチップなどに格納されてもよい。
【００６６】
テーブル計算装置200は、インクリメントテーブルを構築するように構成されたテーブル作成部210を備えている。例えば、テーブル作成部は、
- 入力環要素、例えばｘを繰り返し選択する；
- 入力環要素に環加算されたインクリメント環要素に等しい出力環要素を決定する。例えば、インクリメント値が１である場合、y=x+1である。
【００６７】
出力環要素のための出力整数リスト符号化を決定する。例えば、テーブル計算装置200は、符号化ユニット170のような符号化ユニットを含んでもよい。
【００６８】
- 入力環要素を限定差分要件を満たす出力整数リストにマッピングするエントリをインクリメントテーブルに追加する。
【００６９】
全ての環要素が整数リストにマッピングされるまで、これらのステップが実行されてもよい。いくつかの実施形態では、要素をスキップして、部分インクリメントテーブルを構築することができ、例えば、文脈から特定の環要素が発生しないことが既知である場合がある。
【００７０】
環R、潜在的な基数環要素u、符号化、例えば例示の符号化、および整数リスト長、例えば2が与えられれば、以下に示すように復号テーブルを生成することができる。kをuのオーダーとする。
【００７１】
例えば、kを法とする整数を持つ、整数リスト長の全ての整数リストを生成することによって、限定差分要件を満たす全ての整数リストを生成し、そして整数リストの第1の整数および出力整数リストの整数は許容差分リストAに含まれる。
【００７２】
例えば、長さ2の整数リストの場合、次のアルゴリズムの例を使用できる。0から(k-1)までのk1に対して、Aのすべてのdについて、(k1, k1 + d mod k)を生成する。例えば、差分リストA = {0,1,4,5,902,903,906}の場合、(0,0), (0,1), (0,4),..., (1,1), (1,5), ...などを生成する。この例では、差分リストは、環Z907、 u= 10, k = 151と共に用いられることができる。
【００７３】
生成された各整数リストについて、整数リストによって符号化された環要素を計算し、整数リストを復号に関連付ける復号テーブルにエントリを追加する。例えば、上記の例を続けて、1511- 1515 mod 907 = 76と計算することができる。したがって、復号テーブルは、(1,5)が76に復号するエントリを受信することができる。
【００７４】
復号は、復号テーブルを使用しても使用しなくてもよいが、例えば環要素のためにテーブルをソートすることによって、復号テーブルから符号化テーブルを生成することができるので、そのようなテーブルも有用である。ある環要素に複数の符号化が存在する場合がある。例えば、環要素0(加算のための中性要素)は、任意のaに対して符号化する例において、(a, a)として表されることができる。例えば、所与の環要素のための複数のエントリのうちの1つを除くすべてを削除することによって、または複数の符号化をテーブルに残し、複数のエントリのうちのランダムなものに符号化するために符号化テーブルを使用することによって、そのような複数の符号化は、テーブルから取り除かれてもよい。
【００７５】
環要素uが基数環要素であるかどうかを調べるために、復号または符号化テーブルを構築することもできる。符号化テーブルの作成に失敗した場合、いくつかの環要素に符号化がないことが判明するため、uは基数環要素ではない。
【００７６】
以下では、符号化、インクリメントテーブル、環加算方法、および環乗算方法のいくつかの実施形態が提示される。計算装置100の否定、加算および乗算ユニットは、これらの実施形態のいずれかのために構成されることができる。すべての例は、任意の可換環、特に、
2018503113.tif 000020
及び
2018503113.tif 000021
に適用される。ここで、ｎは正の整数である。さらに、可換環の任意の要素が選択された符号化で表現されることができることが非常に好ましい。全ての可換環が、所与のタイプの整数リスト表現のように、所与の符号化において全ての要素が表現されることを可能にするとは限らない。可換環Rが与えられると、Rの任意の要素が所与の符号化タイプを使用して整数リストとして表現される場合、完全に均質な難読化が可能になるだろう。当業者は、例えば許容される全ての符号化を生成し、一緒にそれらが所与の環のすべての要素を表すことを検証することによって、所与の可換環が、或る符号化が与えられると完全に均質な難読化を可能にするかどうかを検証することができる。いくつかのアプリケーションに対しては、符号化がいくつかのギャップを伴うことが許容されることができる。これは結果として、少なくとも、難読化された整数リスト符号化を使用しないで、それらのギャップで算術演算を実行することができない可能性がある。特定のタイプの符号化を可能にする可換環の具体例を以下に示す。
【００７７】
以下では先ず、パラメータが許容差分リスト内にあるように制限されている例示的な符号化について説明する。環要素が整数のリストとして表現できるという共通点がある多くのタイプの符号化が存在する。これらの整数は環要素ではなく、例えば、環が整数環、例えば多項式環でなくても、要素は整数リストとして表されることができる。使用されるエンコーディング、与えられた整数リストがどのように環要素にマップされるかを符号化という。典型的には、整数リストは常に同じ長さであるが、これは必須ではない。一般に、符号化がより多くのタイプの整数リスト、例えばより長いリストを可能にするので、所与の環要素が異なる態様で整数リストとして符号化される可能性が高くなる。
【００７８】
基数環要素uを持つ可換環Rが与えられると、a1 - a2 ∈ Aとなるような整数a1とa2については、Rの任意の要素aを
2018503113.tif 000022
と書くことができる。全ての可換環がこのように符号化されることができるわけではないが、符号化が有用であるために十分多くの環が存在する。整数a1とa2は、それら自体は環Rの環要素ではなく、それらは基数要素のオーダーを法とする整数である。環要素aは、基数要素uのべき乗、すなわち
2018503113.tif 000023
及び
2018503113.tif 000024
の線形結合に等しい。この場合、線形結合は、それらのべき乗に+1または-1を乗算し、それらを合計することによって、より詳細には、第1のべき乗から第2のべき乗を減算することによって得られる。計算装置は、上記の態様で符号化された環要素上で動作する。加算、否定及び乗算ユニットは、この符号化における環要素上で動作することができる。
【００７９】
インクリメントテーブルTは、加算および乗算演算の両方において中心的な役割を果たす。インクリメントテーブルは入力環要素をマッピングし、この場合、入力環要素は整数リストとして表される。例えば、入力環要素
2018503113.tif 000025
を表す入力整数リスト(k1, k2)が与えられると、テーブルTはこれを、出力環要素
2018503113.tif 000026
を符号化する出力整数リストにマッピングする（例えば、T((k1, k2)) = (l1, l2)）。
【００８０】
出力環要素は、入力環要素に環加算されたインクリメント環要素に等しい。この例では、インクリメント要素は1、すなわち環乗算の単位元である環要素と見なすことができ、この場合、l = k + 1である。同じ符号化を使用する、したがって整数リスト表現を有する環要素に適用されることができる環要素にテーブルが直接適用されることができることが便利である。それにもかかわらず、テーブルが代替の符号化で環要素に適用される実施形態がある。代替の符号化は整数リストであってもよいが、代わりのタイプであってもよい。また、インクリメント環要素が1である必要はない。
【００８１】
以下において、演算、否定、加算、および乗算について説明する。
【００８２】
否定：否定入力環要素
2018503113.tif 000027
を表す否定入力整数リスト(a1, a2)が与えられると、否定出力整数リストは、整数リストの順序を変えることによって、この場合は順序を逆転させることによって、得られる。否定出力整数リストは、(a1, a2)であることができる。順列による否定は、A = -Aであることを要する。多くの環Rについて起こるum = -1のようなmが存在すると仮定すると、否定は、代替的に、整数リストの各整数に定数、例えばmを加えることによって得ることができる。後者の場合、否定出力整数リストは、(a1+m, a2+m)であることができる。これは、
2018503113.tif 000028
であるので、機能する。整数リストにおける演算は、好ましくは、基数要素のオーダーを法として行われる。ここで、整数リストの整数は、基数要素の指数に対応するので、基数要素のオーダーを法として同じである整数は、同じ環要素を符号化する。いずれにしても、否定は、第1の環要素を表す第1の整数リストを、第1の環要素の負を表す第2の整数リストにマッピングする否定テーブルによって行われることができる。否定のためにテーブルが使用されるとき、或る環要素を記述するパラメータと、その環要素の負を記述するパラメータとの間には固定の関係は必要ではない。
【００８３】
加算：受信された、第1の加算入力環要素
2018503113.tif 000029
を符号化する第1の加算入力整数リスト(a1, a2)、及び、第2の加算入力環要素
2018503113.tif 000030
を符号化する第2の加算入力整数リスト(b1, b2)を加算するために、中間の加算環要素cを符号化する中間加算整数リスト((c1, c2))がまず決定される。
【００８４】
環要素cは、第2加算入力整数リストから決定されたべき乗、特に第2加算入力整数リストの第1整数に対する第1加算入力環要素a +基数要素uであってもよい。この例では、
2018503113.tif 000031
とすることができる。後者を計算するために、
2018503113.tif 000032
とする。括弧内の項は、インクリメントテーブルを用いて符号化において書き換えられることができる。なお、(a1, a2)が満たせば、整数リスト(a1 - b1, a2 - b1)も制限差分要件を満たす。
【００８５】
インクリメントテーブルを環要素
2018503113.tif 000033
に最初に適用することにより、要素
2018503113.tif 000034
が得られる。例えば、T((a1 - b1, a2 - b1)) = (d1, d2)によって。そこで、c1 = d1 + b1およびc2 = d2 + b1とし、中間加算整数リスト((c1, c2))を決定することは、さらに、第2の加算入力整数リストから決定された整数を、最初の適用の結果として生じる整数リスト中の整数に加算することを含む。
2018503113.tif 000035
を整数リスト表現中の環要素に、この場合にはａに加算することは、時々、正の約分ステップと呼ばれる。
【００８６】
したがって、加算ユニットは、整数リスト(c1, c2)として中間加算環要素
2018503113.tif 000036
を得た。したがって、中間添加環要素は、1つまたは複数の基本要素の累乗の線形結合であり、ここで、 べき乗は、第1および第2の加算入力整数リストから決定される。この場合、基数環要素(u)の(第1の整数リストの第1の整数(a1) − 第2の整数リストの第1の整数(b1))乗、マイナス、基数環要素(u)の(第1の整数リストの第2の整数(a2) − 第2の整数リストの第1の整数(b1))乗によって形成された環要素
2018503113.tif 000037
にインクリメントテーブルが適用される。
【００８７】
この例では、加算出力整数リストは、中間加算整数リストおよび第2の加算入力整数リストから決定された環要素へのインクリメントテーブルの第2の適用によって決定されてもよい。これは、中間加算環要素と、第2の加算入力整数リストから決定された例えば第2の加算入力整数リストの第2の整数b2による基数要素のべき乗の負との和を計算することを含むことができる：
2018503113.tif 000038
これは、インクリメントテーブルの第2の適用の前に、中間加算整数リストによって表される中間加算環要素を否定することによって達成され得る。cの否定は、上述のように実行されることができる。一例として、置換を使用するが、指数に定数を加えることによって同じ演算を行うことができる。否定の後、和は、基数要素の第2の加算入力整数リストから決定されるべき乗の(マイナスではなく)プラスを使用してもよい：
2018503113.tif 000039
【００８８】
後者の演算は上記と同じタイプであり、
2018503113.tif 000040
を加算するのと同じ態様でテーブル適用を通じて実行されることができる。この後、結果が再び否定される。完全な加算は、同じインクリメントテーブルTの2つの否定と2つのテーブル適用を使用することができる。
【００８９】
整数リスト表現の環要素(この場合はc)から
2018503113.tif 000041
を減算することは、時には、負の約分ステップと呼ばれる。負の約分ステップは、否定し、正の約分ステップを行い、再度否定することによって、行われてもよい。
【００９０】
第1のパラメータa及び差dを介して、例えば環要素ua - ua + dを表すことによってインクリメントテーブルをインデックスすることにより、計算時間の短縮が達成される。この場合、インクリメントテーブルは、T(a, d)によってインデックス付けされてもよい。ubを加算するための正の約分ステップを考えてみよう。これは、
2018503113.tif 000042
によって実行されることができ、この場合、テーブルはT(a-b, d)としてインデックス付けされる。したがって、kを法とする単一の減算演算のみが必要とされる。
【００９１】
乗算：受信された、第1の乗算入力環要素
2018503113.tif 000043
を符号化する第1の乗算入力整数リスト(r1, r2)と、第2の乗算入力環要素
2018503113.tif 000044
を符号化する第2の乗算入力整数リスト((s1, s2))とを乗算するために、第1の中間乗算整数リスト(t1, t2)および第2の中間乗算整数リスト(u1, u2)が決定される。乗算出力環要素を符号化する乗算出力整数リストは、第1および第2の中間要素から決定される。他の実施形態では、２つより多くの中間乗算整数リストがあってもよい。
2018503113.tif 000045
とする。展開された積中の項を２つの項tおよびuに分割することは、異なる態様で、例えば
2018503113.tif 000046
のように実行されることができる。
【００９２】
したがって、整数リストとして表された2つの環要素を掛け合わせるために、それらは、乗算の答えを得るために加算されることができる2つの新しい整数リストに変換されることができる。加算は、上述のように行うことができる。例えば、乗算ユニットは、中間整数リストを計算し、それらを乗算ユニットに送ることができる。
【００９３】
例えば、第1の中間乗算整数リストの第1の整数t1は、第1の乗算入力整数リストの第1の整数r1 + 第2の乗算入力整数リストの第1の整数s1からなり、そして、第1の中間乗算整数リストの第2の整数t2は、第1の乗算入力整数リストの第1の整数r1 + 第2の乗算入力整数リストの第2の整数s2からなることができる：t1 = r1 + s1、t2 = r1 + s2。第2の中間乗算整数リストの第1の整数u1は、第1の乗算入力整数リストの第2の整数r2 + 第2の乗算入力整数リストの第2の整数s2からなり、そして、第2の乗算入力整数リストの第2の整数u2は、第1の乗算入力整数リストの第2の整数r2 + 第2の乗算入力整数リストの第1の整数s1からなることができる：u1 = r2 + s2、u2 = r2 + s1。
【００９４】
一実施形態、例えば、今開示された例では、演算は整数リストに対して実行され、環要素は、何らかの自然な表現での環要素として計算される必要はない。ここで、複数の変形例が議論される。変形例の多くは独立しており、例えば、変形例の符号化は、加算を実行するための変形例と組み合わせられることができる。
【００９５】
例えば、
2018503113.tif 000047
等に対応する整数リストにおいて計算が行われるときの難読化された演算を介して、値はuのオーダーを法として低減されることができる。例えば、uのオーダーが30の場合、全ての計算は30を法として実行されることができる。
【００９６】
インクリメント値：インクリメント値は1である必要はない。異なるインクリメント値を使用するための少なくとも2つの方法がある。まず、式
2018503113.tif 000048
は、
2018503113.tif 000049
に変更されることができる。これは、値utを加算するインクリメントテーブルが構築されることを意味する。このインクリメントテーブルは、整数tが加えられること以外は、同じ整数リストに適用される。インクリメントテーブルを最初に適用した後、b1の代わりにb1 - tが加えられる。
【００９７】
インクリメント値を変更する別の方法は、環のgの繰り返しの加算がpを与えるように、Rの2つの要素gとpをとることである。例えば、h・g = g + ・・・+g = pであるような、整数hが存在する。インクリメント値pを有するインクリメントテーブルTpが存在すると仮定すると、例えば、p=1またはp=utである。インクリメントテーブルTgは、インクリメント値としてgに対して構築されることができる。テーブルTgは、Tpを直接適用するのと同じ効果を得るために、h回適用されることができる。異なるインクリメント値を有する異なるインクリメントテーブルを使用することは、例えば、難読化を増加させるために、単一の実施形態で組み合わせることさえできる。後者の構成は、複数のインクリメント値が、後続の加算演算を変更することなく組み合わせられることができるという利点を有する。
【００９８】
例示的な符号化について説明した原理は、多数の代替の符号化に適用されることができる。第1の代替の符号化は、符号化
2018503113.tif 000050
を用いて整数リスト(a1, a2)として環要素ａを符号化することであり、やはりa1 - a2 ∈Ａを必要とする。任意の環要素がこのように符号化され得るように、基数環要素uを有する環は、正の難読化演算を可能にすると言われる。例示した符号化は、負の難読化演算と呼ばれる。基数環要素uによる正の難読化演算を可能にする任意の環に対して、um = -1となるような整数mが存在することが数学的に証明される。さらに、負の難読化演算を可能にする環は、そのような値mが存在する場合に、そしてその場合にのみ、正の難読演算を可能にする。正の難読化演算を可能にする任意の環は、負の難読化演算を可能にすることもできるが、その逆は真ではない。
【００９９】
正の難読化演算は、上で概説した負の難読化演算とほぼ同じ方針に従う。簡単に説明すると、整数リストの符号の変更は、整数リスト内のすべての整数に値mを加算することによって行うことができる。加算入力
2018503113.tif 000051
および
2018503113.tif 000052
が与えられると、加算は、中間値
2018503113.tif 000053
を計算することによって、例えば
2018503113.tif 000054
によって実行され得る。インクリメントテーブルは
2018503113.tif 000055
に適用され、インクリメント値は1である。整数リスト(a1, a2)が要件を満たすと仮定すると、後者の数も同様である。
【０１００】
正の約分は
2018503113.tif 000056
と
2018503113.tif 000057
の両方に対して2回適用されることができ、負の約分は必要ない。これは、加算を簡素化する。インクリメントテーブルの構成は、上述したように、uの異なるべき乗を因数分解することによって変更されることができる。上述したようにインクリメント値を変化させることができる。正の難読化演算は、インクリメントテーブルが常に対称であり、圧縮された形式で格納できるという利点がある。正の難読化の欠点は、このタイプの符号化を可能にする環が少ないことである。
【０１０１】
これまでに与えられた符号化は、オプションとして、何らかのvに対して一定の環要素w = uvによって乗算されてもよい。したがって、整数リスト(a1, a2)は、環要素
2018503113.tif 000058
を表すことができる。否定ステップは変更されない。正の約分ステップは、
2018503113.tif 000059
となる。インクリメントテーブルはインクリメント値wを使用することができ、同じ符号化タイプを有する
2018503113.tif 000060
に適用される。上述したように、負の約分ステップは、正の約分ステップから導出されることができる。乗算は、
2018503113.tif 000061
を用いて、整数リスト(r1, r2)及び整数リスト(s1, s2)として表される
2018503113.tif 000062
および
2018503113.tif 000063
を掛け算する。
【０１０２】
整数のリスト内の整数の数：これまで説明した例では、整数のリスト内の要素の数は常に2であった。この数には利点があり、すなわち、それは計算ステップの数を減らすことができる。一方、整数リスト内の要素を増やすことは、難読化を可能にする環の数を拡張する。以下の例では、リストごとに3つの整数を考慮するが、それ以上が可能であり、同様に動作する。
【０１０３】
要素
2018503113.tif 000064
および要素
2018503113.tif 000065
をそれぞれ符号化する第1の整数リスト(a1, a2, a3)および第2の整数リスト(b1, b2, b3)を考える。否定は、定数mをリスト中の整数に加えることによって行うことができる。加算は、第2の整数リスト内の各整数に対するインクリメントテーブルの適用によって行うことができる(この場合は3回)。第1の中間加算整数リストは、
2018503113.tif 000066
から計算することができる。この場合、インクリメント値は１であり、インクリメントテーブルが
2018503113.tif 000067
に適用される。乗算するために、同じ数の中間乗算整数リストが、第２の整数リストにおけるように作成される。例えば、(a1+b1, a2+b1, a3+b1), (a1+b2, a2+b2, a3+b2), (a1+b3, a2+b3, a3+b3)。
【０１０４】
整数リスト(a1, a2, a3)が、このリストの２つの特定の数が、許容差分リスト中の差を持つことを満足する場合(例えば、a1 - a2 ∈ A1)、(a1 - b3) - (a2 - a3) = a1 - a2であるから、
2018503113.tif 000068
もまた満足する。2より大きい長さの整数リストについては、例えば整数リストのさらなる第1の整数および整数リストのさらなる第2の整数がさらなる許容差分リストに含まれるという追加の制約、例えば、a2 - a3 ∈ A2という追加の制約を課すこともできる。A1 = A2とすることができる。
【０１０５】
以下に、負および/または正の難読化を可能にする環の例と、許容差分リストの検索方法を示す。環Rは、モジュラスnに対する整数環
2018503113.tif 000069
であることができる。環Rはまた、何らかのモジュラスnおよび還元多項式f(x)の多項式環
2018503113.tif 000070
であってもよい。
【０１０６】
Rを難読化可能な演算および基数uを持つ環とし、k =order(u)とする。共に
2018503113.tif 000071
中の２つの要素r1およびr2は、
2018503113.tif 000072
であるような
2018503113.tif 000073
が存在する場合、等価であると言われる。なお、この条件は、
2018503113.tif 000074
を意味する。砕けた表現では、２つの整数が、許容差分リストにそれらの一方を加えることが他方を加えることと同じ効果を与えるならば、この条件の下で等価であると言える。例えば、R=Z151、基数要素u=2とし、オーダーk=15とする。(22 - 1) 211 = 28 - 1であるので、要素2および8は等価である。同様に、(24 - 1) 213 = 210 - 1であるので、要素4及び10は等価である。
【０１０７】
Rがum = -1のような環ならば、rと-rは常に等価であるということを数学的に証明することができる。
【０１０８】
この等価関係は、
2018503113.tif 000075
に関する等価クラス、例えばすべての要素が互いに等価である集合を誘導する。ここで、許容差分リストは、0を含む等価クラス以外の各等価クラスの同じ数の要素を選択することによって決定されることができる。要素0は、環要素0を表現する必要がある場合には、許容差集合にも含まれる。可換環において難読化演算を実行するための電子計算装置(100)を構成するこの方法は、例えばソフトウェアを実行するためのマイクロプロセッサおよびソフトウェアを含む電子構成装置によって実行することができる。
【０１０９】
以下の実施例を提供する。
【０１１０】
Rを、
2018503113.tif 000076
として生成される256個の要素を持つ体、
2018503113.tif 000077
とする。ここで、f(x) = x8 + x4 + x3 + x + 1であり、基数環要素はu = x5 + x4 + x + 1であり、オーダー51であり、体Rにおける難読化演算のための基数である。なお、Rは標数2を持つので、正と負の難読化は同じである。等価クラスは以下の通り。
[0]
[1; 3; 11; 16; 21; 23; 28; 30; 35; 40; 48; 50]
[2; 5; 6; 9; 19; 22; 29; 32; 42; 45; 46; 49]
[4; 7; 10; 12; 13; 18; 33; 38; 39; 41; 44; 47]
[8; 14; 15; 20; 24; 25; 26; 27; 31; 36; 37; 43]
[17; 34]
【０１１１】
許容差集合は、各クラスから少なくとも1つの要素を選択することによって得ることができ、例えばA = {0,1,2,4,8,17}である。
【０１１２】
Rを、
2018503113.tif 000078
として生成される212個の要素を持つ体、
2018503113.tif 000079
とする。ここで、f(x) =x12 + x7 + x6 + x5 + x3 + x + 1であり、基数環要素はu = x7 + x5 +x3 + x2 + x + 1であり、オーダー195であり、体Rにおける難読化演算のための基数である。等価クラスは以下の通り。
[0]
[13; 26; 39; 52; 65; 78; 91; 104; 117; 130; 143; 156; 169; 182]
[1; 8; 64; 73; 84; 87; 108; 111; 122; 131; 187; 194]
[2; 16; 21; 27; 49; 67; 128; 146; 168; 174; 179; 193]
[4; 32; 42; 54; 61; 97; 98; 134; 141; 153; 163; 191]
[3; 47; 72; 83; 112; 123; 148; 192]
[6; 29; 51; 94; 101; 144; 166; 189]
[7; 12; 58; 93; 102; 137; 183; 188]
[9; 14; 24; 79; 116; 171; 181; 186]
[18; 28; 37; 48; 147; 158; 167; 177]
[36; 56; 74; 96; 99; 121; 139; 159]
[5; 25; 40; 70; 125; 155; 170; 190]
[10; 50; 55; 80; 115; 140; 145; 185]
[20; 35; 85; 95; 100; 110; 160; 175]
[11; 69; 76; 90; 105; 119; 126; 184]
[15; 22; 43; 57; 138; 152; 173; 180]
[30; 44; 81; 86; 109; 114; 151; 165]
[23; 33; 60; 88; 107; 135; 162; 172]
[19; 46; 66; 75; 120; 129; 149; 176]
[38; 45; 63; 92; 103; 132; 150; 157]
[17; 53; 62; 68; 77; 82; 113; 118; 127; 133; 142; 178]
[31; 34; 41; 59; 71; 89; 106; 124; 136; 154; 161; 164]
【０１１３】
ここでも、各等価クラスから少なくとも1つの要素を選択することによって、許容差集合を得ることができる。選択はランダムであってもよい。
【０１１４】
2018503113.tif 000080
とし、基数環要素はu=10であり、オーダー151をもち、体Rにおける難読化演算のための基数である。7つの等価クラスは次の通り。
[0]
±[1; 3; 8; 16; 18; 30; 31; 32; 33; 43; 53; 56; 62; 75; 78; 79; 101; 102; 113; 116; 124; 126; 128; 140; 149]
±[4; 9; 12; 15; 28; 44; 45; 47; 55; 57; 66; 67; 69; 71; 81; 83; 92; 99; 112; 114; 115; 127; 137; 138]
±[5; 6; 7; 21; 26; 29; 34; 40; 41; 51; 54; 61; 63; 64; 74; 86; 91; 93; 103; 105; 109; 129; 131; 132; 134; 141]
【０１１５】
なお、等価クラスは対称性を持ち、クラスを短縮形で表すために使用される。
【０１１６】
2018503113.tif 000081
とし、基数環要素をu=2、オーダー100を持つとする。なお、この環は体ではない。17個の等価クラスは以下の通り。
[0]
±[1; 23; 25; 27; 42; 49; 94]
±[2; 34; 54; 55; 57; 67; 74; 83; 93; 95]
±[3; 11; 39; 47; 82; 90]
[4; 16; 24; 48; 52; 76; 84; 96]
[8; 44; 56; 92]
±[9; 19; 31; 38; 41; 70; 78]
[12; 20; 28; 72; 80; 88]
±[13; 14; 21; 29; 37; 65; 85]
[32; 40; 60; 68]
[36; 64]
[50]
【０１１７】
ある体において、与えられたrについて、(ur - 1)usは、
2018503113.tif 000082
のすべての値に対して異なっていることを証明することができる。したがって、各クラスは、ちょうどk個の要素を表すことができる。したがって、体に対して式k(c-1) = n-1となる。数値実験は、体ではない可換環では、比k(c-1)/(n-1)が、特にnが大きくなるにつれて、1に近いことを示す。
【０１１８】
これはまた、与えられた体と、各等価クラスからちょうど１つの要素を選択することによって得られた許容差分リストと、長さ2の整数リストが、各々の体の要素の一意の表現を与えることを意味する。各等価クラスから複数の要素を選択することにより、環要素は、複数の表現を得る。
【０１１９】
以下にいくつかの例を要約し、追加の例を示す。多項式環の場合、基数環要素とジェネレータの詳細は上記の通りである。なお、φ(1255) = 100 (オイラーのファイ関数)であり、これは、与えられた環
2018503113.tif 000083
がちょうど1000個の要素を持つ理由である。
【表１】
2018503113.tif 000084
【０１２０】
上記の表から分かるように、様々なサイズの許容差分リストを有する環は、難読化演算を用いて環を生成し、等価クラスを計算することによって得ることができる。
【０１２１】
許容差分リストが小さいほど、インクリメントテーブルのサイズが小さくなるという利点がある。一実施形態では、例えば、差分が許容差分リスト(A)内にある整数リストによって決定される制限差分要件を満たす指数をべき乗が持たない場合、インクリメントテーブルは、基数環要素(u)のべき乗の線形結合
2018503113.tif 000085
として入力整数リストによって表される入力環要素をマッピングせず、許容差分リストのサイズはorder(k)より小さい。
【０１２２】
より多くの環を検索することにより、許容差分リストのサイズは、そのオーダーkに関して小さいものを選択することができる。許容差分リストは、各等価クラスの要素を1つだけ選択することによってサイズが縮小されることができ、 許容差分リストは、各等価クラスの2つ以上の要素を選択することによってサイズが拡張されることができる。許容差分リストのサイズがオーダーの50％未満であることが好ましく、より好ましくはオーダーの20％未満、さらにより好ましくはオーダーの10％未満、さらにより好ましくはオーダーの5％未満である。体における一意の表現の場合、c/kは0.5未満, 0.2未満, 0.1未満および0.05未満であることが望ましい。
【０１２３】
各等価クラスの要素を1つだけ選択することによって、
2018503113.tif 000086
が得られ、これにより、テーブルの削減量が大きくなる。(ここで、Cは、許容差分リスト内の要素の数を表す。)体ではない環の場合、境界は1よりも多少大きく、例えば2よりも小さい。後者の場合、表現は時には一意的ではあるが、必ずしもそうではない。一方、環要素について複数の異なる表現を有することが望ましい場合がある。これは、
2018503113.tif 000087
となるように許容差分リストを拡大することによって達成することができる。
【０１２４】
図4は、可換環
2018503113.tif 000088
2018503113.tif 000089
において難読化演算を実行するための計算方法300の実施形態の一例を概略的に示し、環は有限数の環要素を有し、環加算及び環乗算は前記環要素上に定義され、環要素 当該計算方法は
2018503113.tif 000090
を符号化する整数リスト(a1, a2)上で動作し、整数リストは少なくとも２つの整数を含み、整数リスト(a1, a2)は、環要素が基数環要素(u)の線形結合
2018503113.tif 000091
に等しくなるように環要素(a)を符号化し、基数環要素は環におけるオーダー(k)を有し、べき乗は整数リストによって決定される指数を持ち、第1の指数(a1)と第2の指数(a2)との差は許容差分リスト(A)に含まれ、許容差分リストのサイズは前記オーダー(k)より小さい。当該計算方法は、インクリメント環要素(1; ut)について定義されたインクリメントテーブル(T)を格納するステップ(305)を有し、インクリメントテーブルは、出力環要素が入力環要素に環加算されたインクリメント環要素と等しくなる(l = k + 1)ように、入力環要素
2018503113.tif 000092
を、出力環要素
2018503113.tif 000093
を符号化する出力整数リストにマッピングし(T((k1, k2))=(l1, l2))、出力環要素は、基数環要素(u)のべき乗の線形結合に等しく、べき乗は出力整数リストによって決定される指数を持ち、第１の指数(l1)と第2の指数(l2)との間の差は許容差分リスト(A)に含まれ、許容差分リストのサイズはオーダー(k)より小さい。
【０１２５】
この方法はさらに、環加算を含み、第1の加算入力環要素を符号化する第1の加算入力整数リスト(a1, a2)と、第2の加算入力環要素を符号化する第2の加算入力整数リスト(b1, b2)を受信するステップ310、第1および第2の加算入力整数リストから決定された環要素にインクリメントテーブルを適用することによって、加算出力環要素を符号化する加算出力整数リストを決定するステップ320を有し、前記加算出力環要素は、前記第1の加算入力環要素と前記第2の加算入力環要素の環加算に等しい。
【０１２６】
この方法はさらに、環乗算を含み、第1の乗算入力環要素を符号化する第1の乗算入力整数リスト(r1, r2)および第2の乗算入力環要素を符号化する第2の乗算入力整数リスト(s1, s2)を受信するステップ330と、第1および第2の乗算入力整数リストから決定された環要素にインクリメントテーブルを適用することによって乗算出力環要素を符号化する乗算出力整数リストを決定するステップ340と、を有し、乗算出力環要素は、第1の乗算入力環要素と第2の乗算入力環要素との環乗算に等しい。
【０１２７】
図5は、デバイス100または方法300などで使用され得る加算方法400の実施形態の例を概略的に示す。この例は、例示的な符号化を使用する。この方法は、他の符号化に適応されることができます。本明細書に記載される全ての変形例が適用されてもよい。 この例ではインクリメント値1を使用し、インクリメントテーブルは
2018503113.tif 000094
をくくり出すことによって構成される。
【０１２８】
方法400は加算オペランド410を受け取ることを含む。これは、第1の加算入力整数リスト、例えば(a1, a2)を受け取るステップ410と、第2の加算入力整数リスト、例えば(b1, b2)を受け取るステップ420とを含むことができる。
【０１２９】
加算入力整数リストは、それぞれ、環要素が基数環要素のべき乗の線形結合に等しくなるように環要素を符号化し、基数環要素は環におけるオーダーを有し、べき乗は整数リストによって決定される指数を有する。指数は、第1の指数と第2の指数との差が許容差分リストに含まれるという要件を満たす。
【０１３０】
方法400は、中間加算整数リスト、例えば(c1, c2)を決定するステップ420をさらに含む。例えば、これは、第1および第2の加算入力整数リストから決定された環要素にインクリメントテーブルを適用することを含むことができる。具体的には、インクリメントテーブルを整数リストに適用することができ、その整数の要素は入力整数リストの要素から導出される。テーブルの出力は、要件を満たす。
【０１３１】
例えば、決定するステップ420は、(a1 - b1, a2 - b1)にインクリメントテーブルを適用(422)し、例えば(d1, d2)を得て、そして、最初の適用の結果として生じる整数リストの整数に第2の加算入力整数リストから決定された整数b1を加算し(424)、例えば(c1, c2)=(d1 + b1, d2 + b1)となる。
【０１３２】
方法400は、中間加算整数リストおよび第2の加算入力整数リストから決定された環要素へのインクリメントテーブルの第2の適用を介して加算出力整数リストを決定するステップ430をさらに含む。より長い整数リストの場合、追加のインクリメントテーブルの適用が必要な場合がある。例えば、これは中間加算整数リストを否定すること、例えば(c1, c2)に置換することを含むことができる。インクリメントテーブルを適用するステップ432及び加算ステップ434は、加算入力整数リスト(a1, a2)が中間整数リスト(c2, c1)に置き換えられ、b1がb2に置き換えられることを除いて、適用ステップ422及び加算ステップ424と同じである。最終的に434の結果は、難読化された加算結果を得るために、否定される(435)。
【０１３３】
ここでのように、負の難読化の代わりに、正の難読化が使用される場合、否定431と435は省略されてもよい。
【０１３４】
図6は、デバイス100または方法300などで使用され得る乗算方法500の実施形態の一例を概略的に示す。この例は、方法400と同じ符号化およびインクリメントテーブルを使用する。加算に関しては、乗算の入力と出力が要件を満たす。
【０１３５】
方法500は、乗算オペランド510を受け取ることを含む。これは、第1の乗算入力整数リスト、例えば(r1, r2)を受け取るステップ510と、第2の乗算入力整数リスト(s1, s2)を受け取るステップ514とを含むことができる。
【０１３６】
方法500は、第1および第2中間乗算整数リストを決定するステップ520をさらに含む。例えば、520は、第1の中間乗算整数リストを決定するステップ522と、第2の中間乗算整数リストを決定するステップ524とを含むことができる。これらは、例えば、(s1 + r1、s1 + r2)と(s2 + r2、s2 + r1)としてそれぞれ選択されることができるが、他の選択肢もある。乗算は、加算方法400においてこれらの数を加算することによって継続される。
【０１３７】
このテーブルは、適用ステップ422および適用ステップ432においてのみ使用され、その他は方法400および500において使用されないことに留意されたい。加算と乗算の両方が同じテーブルを使用し、両方が同じ回数(2)、テーブルを使用する。他の演算は、例えば、基数環要素のオーダーを法とした、整数リスト内の整数に対する少ない算術演算を含む。
【０１３８】
当業者には明らかであるように、この方法を実行する多くの異なる方法が可能である。例えば、ステップの順序を変更したり、いくつかのステップを並行して実行したりすることができる。さらに、ステップの間に他の方法ステップを挿入することができる。挿入されたステップは、本明細書に記載されているような方法の細分化を表してもよく、または本方法と無関係であってもよい。さらに、次のステップが開始される前に、あるステップが完全に終了していなくてもよい。
【０１３９】
実施形態による方法は、プロセッサシステムに方法300,400および500のうちのいずれかを実行させる命令を含むソフトウェアを使用して実行されることができる。ソフトウェアには、システムの特定のサブエンティティが引き受けるステップのみが含まれていてもよい。ソフトウェアは、ハードディスク、フロッピー(登録商標)、メモリなどの適切な記憶媒体に格納されてもよい。ソフトウェアは、有線、無線、またはインターネットなどのデータネットワークを使用して信号として送信されてもよい。ソフトウェアは、ダウンロードのため、および/または、サーバ上でのリモート使用のために利用可能とすることができる。方法は、当該方法を実行するためにプログラマブルロジック、例えばフィールドプログラマブルゲートアレイ(FPGA)を設定するように構成されたビットストリームを使用して実行されてもよい。
【０１４０】
実施形態はまた、実施形態を実際に実施するように構成されたコンピュータプログラム、特にキャリア上のまたはキャリア内のコンピュータプログラムにも及ぶことは理解されよう。プログラムは、ソースコード、オブジェクトコード、コード中間ソースおよび部分的にコンパイルされた形式のようなオブジェクトコード、または実施形態による方法の実装に使用するのに適した他の形式であってもよい。コンピュータプログラム製品に関する実施形態は、記載された方法のうちの少なくとも1つの処理ステップのそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分されてもよく、および/または静的にもしくは動的にリンクされ得る1つまたは複数のファイルに格納されてもよい。コンピュータプログラム製品に関する他の実施形態は、記載されたシステムおよび/または製品の少なくとも1つの手段のそれぞれに対応するコンピュータ実行可能命令を含む。
【０１４１】
図7aは、コンピュータプログラム1020を含む書き込み可能部分1010を有するコンピュータ可読媒体1000を示し、コンピュータプログラム1020は、プロセッサシステムに、一実施形態による難読化演算を実行するための計算方法を実行させる命令を含む。書き込み可能な部分は、複数回の書き込み用に、または1回だけの書き込み用として用意されることができる。コンピュータプログラム1020は、物理的なマークとして、またはコンピュータ可読媒体1000の磁化によって、コンピュータ可読媒体1000上に具体化されることができる。しかしながら、任意の他の適切な実施形態も考えられる。さらに、コンピュータ可読媒体1000はここでは光ディスクとして示されているが、コンピュータ可読媒体1000は、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体であってもよく、記録不可能であっても記録可能であってもよい。コンピュータプログラム1020は、プロセッサシステムに難読化演算を実行するための前記計算方法を実行させるための命令を含む。
【０１４２】
コンピュータ可読媒体、例えばコンピュータ可読媒体1000は、インクリメントテーブル、および/または復号テーブル、および/または符号化テーブルを備えることができる。
【０１４３】
図7bは、一実施形態によるプロセッサシステム1100の概略図を示す。プロセッサシステムは、1つの以上の集積回路1110を含む。1つ以上の集積回路1110のアーキテクチャが、図7bに概略的に示される。回路1110は、一実施形態による方法を実行する、および/または、そのモジュールもしくはユニットを実装するためのコンピュータプログラムコンポーネントを実行するための、例えばCPUなどの処理ユニット1120を備える。回路1110は、プログラミングコード、データ等を記憶するためのメモリ1122を含む。メモリ1122の一部分は読み出し専用であってもよい。回路1110は、通信要素1126、例えば、アンテナ、コネクタまたはその両方などを備えることができる。回路1110は、この方法で定義された処理の一部または全部を実行するための専用集積回路1124を備えることができる。プロセッサ1120、メモリ1122、専用IC1124および通信要素1126は相互接続1130、例えばバスを介して互いに接続されることができる。プロセッサシステム1110は、アンテナおよび/またはコネクタをそれぞれ使用して、接触および/または非接触通信のために配置されてもよい。
【０１４４】
上述の実施形態は本発明を限定するものではなく例示するものであり、当業者は多くの代替実施形態を設計できることに留意されたい。
【０１４５】
特許請求の範囲において、括弧内に置かれている参照符号は、特許請求の範囲を限定するものとして解釈されるべきではない。「comprise」という動詞およびその活用形の使用は、請求項に記載された要素またはステップ以外の要素またはステップの存在を排除するものではない。要素に先行する冠詞「a」または「an」は、複数のそのような要素の存在を排除するものではない。本発明は、いくつかの別個の要素を含むハードウェアによって、および適切にプログラムされたコンピュータによって実施されることができる。いくつかの手段を列挙する装置の請求項において、これらの手段のいくつかは、同一のハードウェアアイテムによって具体化されてもよい。特定の手段が相互に異なる従属請求項に列挙されているという単なる事実は、これらの手段の組み合わせが有利に使用できないことを示すものではない。
【０１４６】
特許請求の範囲において、括弧内の参照は、実施形態の図面または実施形態の式における参照符号を参照し、したがって、請求項の明瞭性を高める。これらの参照は網羅的ではなく、請求項を限定するものと解釈されるべきではない。
【符号の説明】
【０１４７】
100  演算装置
110  インクリメントテーブルを記憶するように構成された記憶装置
120  環否定ユニット
130  環加算ユニット
140  環乗算ユニット
150  オペランド記憶部
160  復号ユニット
170  符号化ユニット
172  符号化テーブルを記憶するように構成された記憶部
【図１ａ】
2018503113.tif 000099
【図１ｂ】
2018503113.tif 000100
【図１ｃ】
2018503113.tif 000101
【図２】
2018503113.tif 000102
【図３】
2018503113.tif 000103
【図４】
2018503113.tif 000104
【図５】
2018503113.tif 000105
【図６】
2018503113.tif 000106
【図７ａ】
2018503113.tif 000107
【図７ｂ】
2018503113.tif 000108
【国際調査報告】
2018503113.tif 000109
2018503113.tif 000110
2018503113.tif 000111