JP6387466B2 - 電子計算装置 - Google Patents

電子計算装置 Download PDF

Info

Publication number
JP6387466B2
JP6387466B2 JP2017533225A JP2017533225A JP6387466B2 JP 6387466 B2 JP6387466 B2 JP 6387466B2 JP 2017533225 A JP2017533225 A JP 2017533225A JP 2017533225 A JP2017533225 A JP 2017533225A JP 6387466 B2 JP6387466 B2 JP 6387466B2
Authority
JP
Japan
Prior art keywords
integer
ring
modulo
ring element
integer list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2017533225A
Other languages
English (en)
Other versions
JP2018506057A (ja
Inventor
マリン,レアンドロ
アントニウス マリア ランベルテュス ブリューケルス,アルフォンス
アントニウス マリア ランベルテュス ブリューケルス,アルフォンス
マティアス ヒューベルテュス メヒティルディス アントニウス ホリッセン,パウリュス
マティアス ヒューベルテュス メヒティルディス アントニウス ホリッセン,パウリュス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips NV filed Critical Koninklijke Philips NV
Publication of JP2018506057A publication Critical patent/JP2018506057A/ja
Application granted granted Critical
Publication of JP6387466B2 publication Critical patent/JP6387466B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/729Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using representation by a residue number system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)
  • Organic Low-Molecular-Weight Compounds And Preparation Thereof (AREA)
  • Metal-Oxide And Bipolar Metal-Oxide Semiconductor Integrated Circuits (AREA)
  • Stored Programmes (AREA)
  • Error Detection And Correction (AREA)

Description

本発明は、可換環での難読化された算術(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)を法とするモジュロ演算を含み、法の系列の二つの異なる法に関連付けられている少なくとも二つの基本要素の位数は等しい。同質難読化演算は、法が基本要素の位数であるモジュロ演算に関わる。こうして、たとえ法が異なっていても、実際のモジュロ演算は同じであることがある。これは、コード・サイズを減らし、難読化を改善する。法演算からはどの法について演算が実行されたのかはわからない。たとえば、計算ユニットは、加算および/または乗算演算を実行するために整数リストの両方の整数を取得するよう構成されてもよい。
本発明に基づく方法は、コンピュータ上でコンピュータ実装される方法として、あるいは専用ハードウェアにおいて、あるいは両者の組み合わせにおいて実装されうる。本発明に基づく方法のための実行可能コードはコンピュータ・プログラム・プロダクトに記憶されうる。コンピュータ・プログラム・プロダクトの例はメモリ・デバイス、光記憶デバイス、集積回路、サーバー、オンライン・ソフトウェアなどを含む。好ましくは、コンピュータ・プログラム・プロダクトは、前記プログラム・プロダクトがコンピュータ上で実行されるときに本発明に基づく方法を実行するためのコンピュータ可読媒体上に記憶された非一時的なプログラム・コード手段を有する。ある好ましい実施形態では、コンピュータ・プログラムは、該コンピュータ・プログラムがコンピュータ上で実行されるときに本発明に基づく方法のすべての段階を実行するよう適応されたコンピュータ・プログラム・コード手段を有する。好ましくは、コンピュータ・プログラムはコンピュータ可読媒体上で具現される。
電子計算装置は、モバイル電子装置、たとえば携帯電話またはセットトップボックス、コンピュータなどであってもよい。
本発明に基づく方法は、コンピュータ上でコンピュータ実装される方法として、あるいは専用ハードウェアにおいて、あるいは両者の組み合わせにおいて実装されうる。本発明に基づく方法のための実行可能コードはコンピュータ・プログラム・プロダクトに記憶されうる。コンピュータ・プログラム・プロダクトの例はメモリ・デバイス、光記憶デバイス、集積回路、サーバー、オンライン・ソフトウェアなどを含む。好ましくは、コンピュータ・プログラム・プロダクトは、前記プログラム・プロダクトがコンピュータ上で実行されるときに本発明に基づく方法を実行するためのコンピュータ可読媒体上に記憶された非一時的なプログラム・コード手段を有する。
ある好ましい実施形態では、コンピュータ・プログラムは、該コンピュータ・プログラムがコンピュータ上で実行されるときに本発明に基づく方法のすべての段階を実行するよう適応されたコンピュータ・プログラム・コード手段を有する。好ましくは、コンピュータ・プログラムはコンピュータ可読媒体上で具現される。
本発明のもう一つの側面は、コンピュータ・プログラムをダウンロードのために利用可能にする方法を提供する。この側面は、該コンピュータ・プログラムがたとえばアップルのアップストア、グーグルのプレイストアまたはマイクロソフトのウィンドウズ(登録商標)ストアにアップロードされるときおよび該コンピュータ・プログラムがそのようなストアからダウンロードのために利用可能であるときに使われる。
本発明のさらなる詳細、側面および実施形態は、単に例として、付属の図面を参照して記述される。図面における要素は簡明のために示されており、必ずしも縮尺どおりに描かれていない。図面において、すでに記述されている要素に対応する要素は同じ参照符号をもつことがある。
aは、電子計算装置の実施形態の例を概略的に示し、bは、第一の法を法とする剰余の例を概略的に示す。 電子計算装置のある実施形態の例を概略的に示す。 電子計算方法のある実施形態の例を概略的に示す。 aは、ある実施形態に基づくコンピュータ・プログラムを有する書き込み可能部分をもつコンピュータ可読媒体を示し、bは、ある実施形態に基づくプロセッサ・システムの概略的な表現である。
本発明は多くの異なる形の実施形態が可能であるが、本開示は、本発明の原理を例解するものと考えられ、本発明を図示および記述される個別的な実施形態に限定することは意図されていないとの理解のもとに、一つまたは複数の個別的実施形態について図面に示し、本稿で詳細に記述する。
以下では、理解のために、実施形態の諸要素が動作において記述される。しかしながら、それぞれの要素がそれらによって実行されると記述されている機能を実行するよう構成されていることは明白であろう。
図1aは、電子計算装置のある実施形態の例を概略的に示している。
計算装置100は、オペランド記憶110を有する。オペランド記憶110は、計算が実行される対象となる一つまたは複数のオペランドを記憶するよう構成される。計算は加算演算を含む。計算は乗算演算をも含んでいてもよい。加算および/または乗算演算ならびに制御論理を組み合わせることによって、追加的な演算、たとえば減算および除算演算が構築されうる。
図1のaは、オペランド記憶110に記憶されている二つのオペランドを示している:オペランド101およびオペランド106である。図1のaは二つのオペランドしか示していないが、より多くのオペランドがあってもよい。これらのオペランドは合成法(M)を法とする剰余を表現する。これらのオペランドは、剰余数系に好適な仕方で表現される。剰余数系は法の系列(m1,m2,…,mN)によって定義される。それぞれの法が可換環を定義する。ある実施形態では、これらの法はみな整数であり、あるいはみな多項式である。後者の場合、それらの多項式は、全部の多項式について同じ環から取られる係数をもつ。これらの多項式の係数はモジュラー係数、すなわちある法を法とする整数であってもよい。これらの係数についての環を定義するために使われる法は、すべての法について同じである。
前記法の系列のある法miが整数である場合、対応する環は
Figure 0006387466
〔便宜上Zmiと記すことがある〕と表わされる。前記法の系列のある法mi(x)が多項式である場合、対応する環はZn(x)/mi(x)と表わされる。後者の場合、多項式の係数についての共通の法はnと表わされる。
合成法(combined modulus)は、法の系列における法(m1,m2,…,mN)の最小公倍数とされてもよい。それらの法がペアごとに互いに素である場合には、合成法はそれらの法の積とされてもよい。合成法を法とする数xを剰余数系で表現するには、その数は系列xi=x mod miにマッピングされる。ここで、miは法m1ないしmNである。ある実施形態では、合成法は、上述した最小公倍数の真の約数である。このことは、表現できる数の空間がより小さくなるという欠点があるが、他方では数が複数の表現を獲得し、このことは難読化計算のいくつかの実施形態では望ましいことがある。
オペランド記憶110に記憶されたオペランドは、それらの法を法とする環要素の系列として表現される。系列のそれぞれの環要素は、法の系列の対応する法に関連付けられるので、系列を順に記憶する必要はない。たとえば、系列は、オペランド記憶にわたって分散して記憶されていてもよい。
図1のaは、第一の法を法とする剰余102、第二の法を法とする剰余103、第三の法を法とする剰余104という三つの剰余の系列として記憶されている第一のオペランド101を示している。同様に、第二のオペランド106は、第一の法を法とする剰余107、第二の法を法とする剰余108、第三の法を法とする剰余109という三つの剰余の系列として記憶されている。第一、第二および第三の剰余はそれぞれm1、m2およびm3を法とする剰余である。異なる数の法、たとえば二つだけの法、あるいは四つ以上の法があってもよい。典型的にはすべての法は異なる。ある実施形態では、それらの法はペアごとに互いに素である。ペアごとに互いに素である法については、合成法はそれらの法の積とされてもよい。これによれば合成法は比較的大きくなる。
計算装置100は、オペランド記憶の第一のオペランドと第二のオペランドを剰余数系に従って加算および/または乗算するよう構成された計算ユニット130を有する。たとえば、二つの系列xiおよびyiによって表現される(オペランドの系列においては、インデックスはたとえば1からNまでのすべての法にわたる)二つのオペランドxおよびy、たとえばオペランド101および106を考える。二つのオペランドを加算するためには、計算装置は系列xi+yi mod miを計算してもよい。系列の各要素は、法の系列の対応する法を法として計算されることを注意しておく。同様に、二つのオペランドを乗算するためには、計算装置は系列xi・yi mod miを計算してもよい。ここでもまた、系列の各要素は、法の系列の対応する法を法として計算される。これが合成法を法とする加算および乗算の表現になるというのが、剰余数系の結果である。このことはいわゆる孫子の剰余定理によって証明される。
これら加算または乗算演算の少なくとも一方について、同質難読化が使われる。これは、実行される実際の計算が法mi自身とは異なる法についてのモジュロ演算を含むことを含意する。こうして、機能的には特定の法miを法とする加算または乗算がなされるが、実際の計算は異なる数についてのモジュロ演算を示すだけである。この奇妙な状況は、同質難読化の帰結の一つであり、下記および先に引用した以前の出願においてさらに説明されている。
この実施形態における法miは、同質難読化を許容するよう、特別に選ばれている。具体的には、系列のそれぞれの法(mi)について、関連付けられた基本要素(ui)が存在して、法(mj)を法とするそれぞれの環要素(xj)が、それらの環要素がその基本要素の冪乗の線形結合に等しくなるよう、整数リスト(aj,bj)として表現されうるという条件を満たす。ここで、前記冪乗は、前記整数リストによって決定される指数をもつ。環要素xjを冪乗の線形結合として表現する正準的な仕方は、環要素xjを基本要素の二つの冪乗の間の差として表現することによるものである。ここで、冪乗の指数は前記整数リストに含まれるものである。たとえば、mjを法とするそれぞれの環要素xj
Figure 0006387466
と書かれてもよい。この表現を例示的表現とも称することにする。ただし、たとえば
Figure 0006387466
など、環要素を表現する種々の仕方がある。さらなる例は以前の出願において与えてある。
図1のbは、第一の法を法としての剰余の例を概略的に示している。整数107.1および107.2を含む整数のリストが示されている。たとえば、剰余107は二つの整数107.1および107.2によって表現されうる。それによれば、表現される剰余は基本要素の冪乗の線形結合
Figure 0006387466
であり、冪乗は整数リストによって決定される指数をもつ。この例では、整数107.1はajであることができ、整数107.2はbjであることができる。同じ法についてのオペランド102における剰余も、整数102.1および102.2を使って整数リストとして表現される。ある実施形態では、これらの整数リストにおける整数は0から基本要素の位数から1を引いたものまでの間である(両端含む)。
記憶110における他の剰余、たとえば102、103、104、108、109は同様に記憶されうる。ある実施形態では、ある特定の法に関連付けられた系列におけるすべての環要素は、整数リストとして表現される。たとえば、環要素107が整数リストとして表現される場合、対応する環要素102も同じ基本要素を使って整数リストとして表現されうる。これは、要素107および102の両方に関わる計算が同質難読化を使って実行されることを許容する。
同質難読化を使って剰余に対して算術を実行することは一般に、二つの型の演算に関わる:基本要素の位数を法とする整数リスト内の整数に対する算術と、テーブルの適用である。このテーブルは、整数リスト内の整数から決定される環要素に固定した要素を加えるので、増分テーブルと称される。これらの計算を組織するための種々の仕方がある。下記では、これがどのようになされうるかを前記例示的表現について説明する。さらなる例は以前の出願において与えてある。
図1のaに戻ると、計算装置100はテーブル記憶120を有する。テーブル記憶120は、系列内の法のそれぞれについて、法の系列のある法に関連付けられた、ある増分要素(−1;1;ut)について定義された増分テーブル(T)を記憶するよう構成される。図1の例では、三つの異なる法があり、それぞれ三つの基本要素の一つに関連付けられており、それぞれ増分テーブルに関連付けられている。テーブル記憶120は増分テーブル121の系列を記憶する。系列は増分テーブル122、123、124を有する。テーブルを法miおよび基本要素uiに対応するTiと表わしてもよい。法および基本要素は計算中は必要とされず、計算装置100に明示的に記憶される必要はないが、増分テーブルは計算を実行するために必要とされる。増分テーブルは、法、基本要素、冪乗と環要素の間の選ばれた線形マッピングおよび増分値に依存する。
増分テーブルは、入力環要素(たとえばk=uk1−uk2)を、出力環要素(たとえばl=ul1−ul2)をエンコードする出力整数リストにマッピングする(たとえばT((k1,k2))=(l1,l2))。ここで、出力環要素は入力環要素に増分要素を加えたものに等しくなり(たとえばl=k+1)、出力環要素は基本要素(u)の冪乗の線形結合に等しく、冪乗は出力整数リストによって決定される指数をもつ。
増分値は1であってもよいが、これは必須ではない。−1または基本要素の冪乗や他の値であってもよい。
計算ユニット130に戻ると、先述したように、剰余数系を使うと、合成法を法とする加算および乗算は、それぞれ法の系列のうちのある法を法とする一連の別個の計算を実行することによって実行されうる。たとえば、計算ユニット130は加算ユニット131の系列および乗算ユニット136の系列を有していてもよい。乗算演算が所望されない場合には、乗算ユニットは省略されてもよい。加算および/または乗算ユニットのそれぞれは、前記の法の一つを法として計算を行なう。図1は、加算ユニット132、133、134および乗算ユニット137、137、139を示している。
計算ユニット130は、たとえばモジュロ・ユニットとして実装される、モジュロ演算器141の系列をも有する。これらのモジュロ演算器は、法の系列のある法に関連付けられた基本要素の位数を法として、モジュロ演算を実行する。モジュロ演算器141は、系列中の法自身を法としてモジュロ演算を実行するよう構成されているのではないことを注意しておく。機能的には系列中の法を法としたモジュロ演算が計算されるが、同質難読化を使ってエンコードされるときは、実行される実際の計算は基本要素の位数を法とするモジュロ演算である。異なる数、すなわち基本要素の位数を法とするモジュロ演算がエンコードにおいてモジュロ演算を実現できることは、同質難読化によって引き起こされる。モジュロ演算器141は、それぞれの加算よび乗算ユニット131および136によって使われる。
まとめると、オペランドはいくつかの異なる法を法として表現される。それぞれの法に基本要素とテーブルが関連付けられている。剰余のうちの少なくとも一つだが可能性としては全部が整数リストとして表現される。該表現は、その剰余の法に関連付けられた基本要素に依存する。その法に関連付けられた基本要素の位数を使ったモジュロ演算が、一つまたは複数の加算ユニットおよび乗算ユニットによって使用される。図1のaの例では、剰余102および107は同じ法についてであり、テーブル122はその法に関連付けられた基本要素についてであり、加算ユニットおよび乗算ユニット132および137はその法を法として、モジュロ演算器142を使って動作する。同じことは同様に他の法についてもいえる。
図1のaでは、一連の法のうち同じ法に関連付けられたすべての要素は縦の列に配置されている。この例では、三つの異なる法が使われた。二つの法または四つ以上の法を使うことも可能である。
一連の法のうちその法を法とするすべての剰余が同質難読化を使ってエンコードされる、すなわち整数リストとして表現されることは必須ではない。たとえば、いくつかは単純な値として、たとえば関連する法を法とする整数として表現されてもよい。たとえば、いくつかは異なる仕方で、たとえば伝統的な非同質な、テーブル・ベースのエンコードを使ってエンコードされてもよい。剰余数系はそれぞれの法に別個に作用するので、そのような異なるエンコードは並列して使用されてもよい。以下の例では、オペランドについての系列中のすべての剰余が整数リストとして同質難読化を使って表現されるとする。
動作では、計算ユニット130はオペランド101および106を加算してもよい。これは次のようになされてもよい:加算または乗算ユニット131または136は整数リスト102および107に対して作用して中間整数リストを得る;モジュロ演算器142を使って、すなわち関連する基本要素のベースを法として、中間整数リストの各要素にモジュロ演算が適用される。結果として得られる中間整数リストにテーブル122が適用される。加算または乗算ユニットはテーブル適用の結果および整数リスト102および/または107に対して作用し、モジュラー演算器142を使って第二のモジュロ演算を実行し、再びテーブル122を適用することを続けてもよい。加算および乗算演算のより詳細な記述は、以前の出願に見出すことができる。他の法について同様の演算が実行される。
結果は、整数リスト表現における加算または乗算の表現である。この結果は、オペランド記憶110に記憶されて、将来の計算のために使われてもよい。加算および乗算演算を組み合わせることによって他の演算が実装されてもよい。
以前の出願は、整数環(整数の法を法とする整数)または多項式環(多項式の法を法とするモジュラー係数をもつ多項式)の多くの例を与えている。
図2は、電子計算装置200のある実施形態の例を概略的に示している。装置200は装置100に基づく。オペランド記憶110およびテーブル記憶120は装置200でも装置100と同じであってもよい。装置200は法および基本要素の選択および計算装置230の選択において異なっている。
装置200については、法の系列の二つの異なる法に関連付けられた少なくとも二つの基本要素の位数が等しい。より好ましくは、法の系列の法に関連付けられたすべての基本要素のすべての位数が等しい。装置100と同様に、合成法は法の系列における法(m1,m2,…,mN)の最小公倍数に等しくてもよい。図2は、すべての位数が同じである状況を示している。
二つの基本要素が同じ位数をもつ場合には、それらの基本要素が異なる法に関連付けられていたとしても、モジュロ演算器はその法についてのモジュロ演算のために共有されてもよい。それぞれの法はテーブル記憶120において独自の増分テーブルをもち続けることを注意しておく。異なる法の基本要素の位数が同じであれば、モジュロ演算も含めて整数リストに対する演算はみな同じである。基本要素の位数を法としているからである。しかしながら、テーブル演算は各異なる法について一意的なままである。したがって、異なる法についての計算は高い度合いで同一であり、異なる増分テーブルが使われるというだけである。増分テーブルのサイズも同じであってもよい。増分テーブルのサイズは基本要素の位数に依存しうるからである。(高度な演算では、整数リストにおける整数間の差は許容される差集合に制約される。これは、異なる法について増分テーブルのサイズを異ならせることがある。)
図2に示される計算ユニット230は、モジュロ演算器242、加算ユニット232および乗算ユニット237を有する。
動作では、計算ユニット230はオペランド101および106を加算してもよい。これは次のようになされてもよい:加算または乗算ユニット232または237は整数リスト102および107に対して作用して中間整数リストを得る;モジュロ演算器242を使って、すなわち関連する基本要素のベースを法として、中間整数リストの各要素にモジュロ演算が適用される。結果として得られる中間整数リストにテーブル122が適用される。加算または乗算ユニットはテーブル適用の結果および整数リスト232および/または237に対して作用し、モジュラー演算器242を使って第二のモジュロ演算を実行し、再びテーブル122を適用することを続けてもよい。
他の法について同様の演算が実行される。たとえば:加算または乗算ユニット232または237は整数リスト103および108に対して作用して中間整数リストを得る;モジュロ演算器242を使って、すなわち関連する基本要素のベースを法として、中間整数リストの各要素にモジュロ演算が適用される。結果として得られる中間整数リストにテーブル123が適用される。加算または乗算ユニットはテーブル適用の結果および整数リスト232および/または237に対して作用し、モジュラー演算器242を使って第二のモジュロ演算を実行し、再びテーブル123を適用することを続けてもよい。などとなる。
加算および乗算ユニット232および237は、それらの法に対応する増分テーブルを、前記系列のある法を法としての計算に適用するよう構成される。あるいはまた、加算および乗算ユニット232および237は、図1のような加算および乗算ユニットの系列として実装されてもよい。該系列の各ユニットは特定の増分テーブルについて、だがモジュロ演算器242を使って配置される。
単一のモジュロ演算器242を使うことの利点は、計算ソフトウェアからは、どのモジュロ演算のために計算が実行されるのかがわからないということである。
剰余数系(RNS: Residue Number System)は、より大きな法に対する計算をするために、小さな複数の法を使うことを許容する。下記の法はみな位数30の基本要素をもつ。それぞれの法について、位数30のそのような基本要素の例を下記に与える。
Figure 0006387466
これらの法を使ってRNS数系を作り出してもよい。たとえば、2^32=4294967296より大きな合成法をもつ、これらの法の二つの選択が可能である。
93*143*181*209*231=116213298201
99*151*183*211*241=139111402617
これら二つの集合におけるすべての法が互いに素ではないことを注意しておく。このように、1バイトに収まる要素のみを使う演算を使って、32ビット語に対する演算が計算されうる。RNSおよび混合基系の完全な記述については非特許文献1を参照。
多項式剰余数系が同様に構築されうる。たとえば、同じベース環上で同質難読化を許容するいくつかの互いに素な多項式を選択する。対応するRNS系は、ずっと大きな多項式上での、たとえば選択された多項式の積を法とする難読化計算を許容する。
オペランド記憶部110およびテーブル記憶部120は電子的なメモリとして実装されてもよい。これらは単一の記憶部に、たとえば単一の電子的なメモリとして組み合わされてもよい。増分テーブルはルックアップテーブルとして実装されてもよい。
典型的には、装置100および200はそれぞれ、装置100および200において記憶された適切なソフトウェアを実行するマイクロプロセッサ(図示せず)を有する。たとえば、そのソフトウェアは、対応するメモリ、たとえばRAMのような揮発性メモリまたはフラッシュ(図示せず)のような不揮発性メモリ(図示せず)においてダウンロードされているおよび/または記憶されているのでもよい。あるいはまた、装置100および200は、全体的にまたは部分的に、プログラム可能な論理において、たとえばフィールドプログラマブルゲートアレイ(FPGA)として実装されてもよい。装置100および200は全体的または部分的に、いわゆる特定用途向け集積回路(ASIC)、すなわち特定の用途のためにカスタマイズされる集積回路(IC)として実装されてもよい。テーブルおよびオペランド記憶は、電子的なメモリ、磁気的な記憶などとして実装されてもよい。メモリは揮発性または不揮発性でありうる。
ある実施形態では、装置はオペランド記憶回路および計算回路を有する。装置は、追加的な回路、たとえばモジュラー演算回路、加算回路、乗算回路およびテーブル記憶回路;本稿に記載される対応するユニットを実装する回路の一つまたは複数を有していてもよい。これらの回路はプロセッサ回路および記憶回路であってもよく、プロセッサ回路が記憶回路に電子的に表現されている命令を実行してもよい。それらの回路もFPGA、ASICなどでありうる。
図3は、電子計算方法300の実施形態の例を概略的に示している。電子計算方法は、合成法(M)を法とした難読化された算術を剰余数系において実行するよう構成される。剰余数系は一連の法(m1,m2,…,mN)について定義され、それぞれの法が可換環(Zm1;Zn[x]/m1(x))を定義する。系列のそれぞれの法(mi)について、関連付けられた基本要素(ui)が存在して、法(mj)を法とするそれぞれの環要素(xj)が、それらの環要素がその基本要素の冪乗の線形結合に等しくなる(xj=ui aj−ui bj)よう、整数リスト((aj,bj))として表現されうるという条件を満たす。ここで、前記冪乗は、前記整数リストによって決定される指数をもつ。本方法は、
・合成法(M)を法とする一つまたは複数のオペランドを、それらの法を法とする一つまたは複数の系列の環要素として記憶する段階310であって、ある系列の各環要素はその系列の法のうちの対応する法に関連付けられ、その系列の少なくとも一つの環要素が整数リストとしてエンコードされる、段階と、
・前記オペランド記憶の第一および第二のオペランドを環要素数系に従って加算および/または乗算する段階320とを含む。
本方法は、たとえば図1のa、bおよび図2を参照して述べたように拡張されてもよい。
本方法を実行する多くの異なる仕方が可能である。このことは当業者には明白であろう。たとえば、段階の順序は変えられてもよく、いくつかの段階は並列に実行されてもよい。さらに、段階と段階の間に、他の方法段階が挿入されてもよい。挿入される段階は、本稿に記載されるような方法の洗練を表わしていてもよく、あるいは本方法に無関係であってもよい。さらに、所与の段階は次の段階が開始される前に完全に完了していないこともありうる。
実施形態に基づく方法は、プロセッサ・システムに方法300を実行させるための命令を含むソフトウェアを使って実行されてもよい。ソフトウェアは、システムの特定のサブエンティティによって行なわれる段階のみを含んでいてもよい。ソフトウェアは、ハードディスク、フロッピー、メモリなどといった好適な記憶媒体に記憶されていてもよい。ソフトウェアは、ワイヤに沿ったあるいは無線の信号として、あるいはデータ・ネットワーク、たとえばインターネットを使って送られてもよい。ソフトウェアはダウンロードおよび/またはサーバー上でのリモート使用のために利用可能にされてもよい。本発明に基づく方法は、本方法を実行するようプログラム可能な論理、たとえばフィールドプログラマブルゲートアレイ(FPGA)を構成するよう構成されたビットストリームを使って実行されてもよい。
本発明が、本発明を実施するために適応されたコンピュータ・プログラム、特にキャリア上またはキャリア中のコンピュータ・プログラムに拡張されることは理解されるであろう。プログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形のようなコード中間ソースおよびオブジェクトコードの形で、あるいは本発明に基づく方法の実装において使うために好適な他の任意の形でありうる。コンピュータ・プログラム・プロダクトに関係する実施形態は、記載される方法のうち少なくとも一つの方法の処理段階のそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに分割され、および/または静的または動的にリンクされうる一つまたは複数のファイルにおいて記憶されてもよい。コンピュータ・プログラム・プロダクトに関係する別の実施形態は、記載されるシステムおよび/またはプロダクトのうち少なくとも一方の各手段に対応するコンピュータ実行可能命令を含む。
図4のaは、コンピュータ・プログラム1020を有する書き込み可能部分1010を有するコンピュータ可読媒体1000を示している。コンピュータ・プログラム1020は、プロセッサ・システムに、実施形態に基づく難読化算術の方法を実行させるための命令を含む。コンピュータ・プログラム1020はコンピュータ可読媒体1000上で、物理的なマークとして、あるいはコンピュータ可読媒体1000の磁化によって具現されてもよい。しかしながら、他の任意の好適な実施形態も考えられる。さらに、コンピュータ可読媒体1000はここでは光ディスクとして示されているが、コンピュータ可読媒体1000はハードディスク、半導体メモリ、フラッシュメモリなどといったいかなる好適なコンピュータ可読媒体であってもよく、記録不可能でも記録可能でもよいことは理解されるであろう。コンピュータ・プログラム1020は、難読化算術の前記方法をプロセッサ・システムに実行させるための命令を含む。
図4のbは、実施形態に基づくプロセッサ・システム1100の概略的な表現を示している。プロセッサ・システムは、一つまたは複数の集積回路1110を有する。一つまたは複数の集積回路1110のアーキテクチャーは図4のbに概略的に示されている。回路1110は、実施形態に基づく方法を実行するためおよび/またはそのモジュールもしくはユニットを実装するためにコンピュータ・プログラム・コンポーネントを走らせるための処理ユニット1120、たとえばCPUを有する。回路1110は、プログラミング・コード、データなどを記憶するためのメモリ1122を有する。メモリ1122の一部は読み出し専用であってもよい。回路1110は通信要素1126、たとえばアンテナ、コネクタまたはその両方などを有していてもよい。回路1110は、本方法において定義される処理の一部または全部を実行するための専用の集積回路1124を有していてもよい。プロセッサ1120、メモリ1122、専用IC 1124および通信要素1126は相互接続1130、たとえばバスを介して互いに接続されてもよい。プロセッサ・システム1110は、それぞれアンテナおよび/またはコネクタを使って接触式および/または非接触式通信のために構成されていてもよい。
上記で引用した以前の出願においては、可換環における難読化算術を実行するための計算装置の実施形態が与えられている。本稿の実施形態では同質難読化は法の系列の個々の法に適用される。
前記計算装置は、たとえば加算および/または乗算ユニットを実装するよう装置100または200に適用されてもよい。計算装置および方法は、有限の可換環において難読化算術を実行する。そのような環について挙げられた一例は、ある数を法とする整数(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で実行されてもよい。
上述した実施形態は、本発明を限定するのではなく例解するものであり、当業者は多くの代替実施形態を設計できるであろうことを注意しておくべきである。
請求項では、括弧内に参照符号があったとしてもその請求項を限定するものと解釈してはならない。動詞「有する/含む」およびその活用形の使用は、請求項において述べられているもの以外の要素やステップの存在を排除しない。要素の単数形の表現はそのような要素の複数の存在を排除しない。本発明は、いくつかの相異なる要素を有するハードウェアによって、および好適にプログラムされたコンピュータによって実装されうる。いくつかの手段を列挙する装置請求項では、これらの手段のいくつかが同一のハードウェア項目によって具現されてもよい。ある種の施策が互いに異なる従属請求項において記載されているというだけの事実が、これらの施策の組み合わせが有利に使用できないことを示すものではない。
請求項では、括弧内の参照符号は実施形態の図面における参照符号または実施形態の公式を指し、それにより請求項の理解しやすさを増す。これらの参照は請求項を限定するものと解釈してはならない。
いくつかの態様を記載しておく。
〔態様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記載のコンピュータ・プログラム。
100 電子計算装置
101 第一のオペランド
106 第二のオペランド
102、107 第一の法を法とする剰余
103、108 第二の法を法とする剰余
104、109 第三の法を法とする剰余
102.1、102.2 整数
107.1、107.2 整数
110 オペランド記憶部
120 テーブル記憶部
121 テーブルの系列
122 第一の法についての増分テーブル
123 第二の法についての増分テーブル
124 第三の法についての増分テーブル
130 計算ユニット
131 加算ユニットの系列
132 第一の加算ユニット
133 第二の加算ユニット
134 第三の加算ユニット
136 乗算ユニットの系列
137 第一の乗算ユニット
138 第二の乗算ユニット
139 第三の乗算ユニット
141 モジュロ演算器の系列
142 第一の法を法とした、第一の基本要素の位数についてのモジュロ演算器
143 第二の法を法とした、第二の基本要素の位数についてのモジュロ演算器
144 第三の法を法とした、第三の基本要素の位数についてのモジュロ演算器
200 電子計算装置
230 計算ユニット
232 加算ユニット
237 乗算ユニット
242 モジュロ演算器

Claims (15)

  1. 合成法によって定義される可換環における難読化された算術を剰余数系において実行するよう構成された電子的な計算装置であって、前記剰余数系は法の系列について定義され、それぞれの法が可換環を定義し、前記系列のそれぞれの法について関連付けられた基本要素が存在して、その法を法とするそれぞれの環要素が、それらの環要素がその基本要素の冪乗の線形結合に等しくなるよう、整数リストとして表現されうるという条件を満たし、それぞれの冪乗は前記整数リストによって決定される指数をもち、当該計算装置は、
    ・前記合成法を法とした一つまたは複数のオペランドを、それらの法を法とする環要素の一つまたは複数の系列として記憶するよう構成されたオペランド記憶部であって、ある系列の各環要素は法の系列の対応する法に関連付けられ、前記系列の少なくとも一つの環要素が整数リストとしてエンコードされている、オペランド記憶部と、
    ・前記可換環における演算を定義するテーブルを記憶しているテーブル記憶部と;
    ・前記剰余数系に従って前記オペランド記憶部の第一および第二のオペランドを加算および乗算を実行できる計算ユニットであって、
    前記テーブル記憶部に記憶されているテーブルが、前記系列におけるそれぞれの法について、法の前記系列の法に関連付けられた、ある増分要素について定義された増分テーブルを含み、
    前記増分テーブルは、入力環要素をエンコードする入力整数リストを、該入力環要素に前記増分要素を加えたものに等しい出力環要素をエンコードする出力整数リストにマッピングするものであり、
    前記オペランド記憶部の第一および第二のオペランドの加算は、第一のオペランドを表わす環要素の系列のうち前記法の系列のそれぞれの法に対応する環要素を、第二のオペランドを表わす環要素の系列のうち前記法の系列の対応する法に対応する環要素と、前記対応する法のもとで加算することを含み、該加算は、加算される環要素が整数リストとしてエンコードされている場合には、前記テーブル記憶部に記憶されている前記増分テーブルを利用して実行され、
    前記オペランド記憶部の第一および第二のオペランドの乗算は、第一のオペランドを表わす環要素の系列のうち前記法の系列のそれぞれの法に対応する環要素を、第二のオペランドを表わす環要素の系列のうち前記法の系列の対応する法に対応する環要素と、前記対応する法のもとで乗算することを含み、該乗算は、乗算される環要素が整数リストとしてエンコードされている場合には、前記テーブル記憶部に記憶されている前記増分テーブルを利用して実行される、計算ユニットとを有する、
    計算装置。
  2. 前記合成法および法の前記系列におけるそれらの法は、整数またはモジュラー係数をもつ多項式である、請求項1記載の計算装置。
  3. 前記計算ユニットが前記整数リストに対して演算し、前記演算は前記基本要素の位数を法とするモジュロ演算を含み、法の前記系列の二つの異なる法に関連する少なくとも二つの基本要素の位数が等しい、請求項1または2記載の計算装置。
  4. 法の前記系列の法に関連付けられたすべての基本要素の位数が等しい、請求項1ないし3のうちいずれか一項記載の計算装置。
  5. 前記合成法が、法の前記系列における法の最小公倍数に等しい、請求項1ないし4のうちいずれか一項記載の計算装置。
  6. 整数リストとしてエンコードされている環要素の前記対応する法のもとでの加算および/または乗算のために利用されるテーブルが、前記対応する法に関連付けられた基本要素の位数を法とするモジュロ演算を含む算術を定義する、請求項記載の計算装置。
  7. 前記計算ユニットが、整数リストとしてエンコードされている環要素の前記対応する法のもとでの前記加算を実行する加算ユニットを有し、
    前記加算ユニットは、前記系列のそれぞれの法について、前記テーブルを利用して実行される第一の加算入力環要素および第二の加算入力環要素の加算を、
    ・前記第一の加算入力環要素をエンコードする第一の加算入力整数リストおよび前記第二の加算入力環要素をエンコードする第二の加算入力整数リストを受領する段階と、
    ・前記第一および第二の加算入力整数リストから決定される環要素に前記増分テーブルを適用することによって加算出力環要素をエンコードする加算出力整数リストを決定する段階であって、前記加算出力環要素は前記第一の加算入力環要素および前記第二の加算入力環要素のモジュラー加算に等しい、段階とを実行することによって実行するよう構成されている、請求項1ないし6のうちいずれか一項記載の計算装置。
  8. 前記加算出力整数リストを決定することが、
    ・一つまたは複数の基本要素の冪乗の線形結合である環要素への前記増分テーブルの第一の適用によって、中間加算環要素をエンコードする中間加算整数リストを決定する段階であって、前記冪乗は前記第一および第二の加算入力整数リストおよび前記基本要素の位数を法とするモジュロ演算から決定される、段階と、
    ・前記加算出力整数リストを決定する段階であって、前記中間加算整数リストから決定されるおよび前記第二の加算入力整数リストから決定される環要素への前記増分テーブルの第二の適用と、前記基本要素の位数を法とするモジュロ演算とを含む、段階とを含む、
    請求項記載の計算装置。
  9. 前記中間加算整数リストを決定することがさらに、前記第一および第二の加算入力整数リストから決定された整数を、第一の適用から帰結する整数リスト中の整数に加算すること前記基本要素の位数を法としてのモジュロ演算を含む、
    請求項記載の計算装置。
  10. ・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第一の整数から前記第二の整数リストの第一の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第一の整数リストの第二の整数から前記第二の整数リストの第一の整数を引いたもの乗したもの、によって形成される環要素に適用される、および/または
    ・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第一の整数から前記第一の整数リストの第二の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第二の整数リストの第一の整数から前記第一の整数リストの前記第二の整数を引いたもの乗したもの、によって形成される環要素に適用される、および/または
    ・前記増分テーブルは、前記一つまたは複数の基本環要素を前記第一の整数リストの第二の整数から前記第一の整数リストの第一の整数を引いたもの乗したもの、足すまたは引く、ある基本環要素を前記第二の整数リストの第一の整数から前記第一の整数リストの前記第一の整数を引いたもの乗したもの、によって形成される環要素に適用される、
    請求項または記載の計算装置。
  11. ・前記増分テーブルの前記第二の適用の前に、前記中間加算整数リストによって表わされる前記中間加算環要素が否定にされる、
    請求項ないし10のうちいずれか一項記載の計算装置。
  12. 当該計算装置が、整数リストとしてエンコードされている環要素の前記対応する法のもとでの前記乗算を実行する乗算ユニットを有しており、前記乗算ユニットは、前記テーブルを利用して実行される第一の乗算入力環要素および第二の乗算入力環要素の乗算を、
    ・前記第一の乗算入力環要素をエンコードする第一の乗算入力整数リストおよび前記第二の乗算入力環要素をエンコードする第二の乗算入力整数リストを受領する段階と、
    ・前記第一および第二の乗算入力整数リストから決定される環要素に前記増分テーブルを適用することによって乗算出力環要素をエンコードする乗算出力整数リストを決定する段階であって、前記乗算出力環要素は前記第一の乗算入力環要素および前記第二の乗算入力環要素のモジュラー乗算に等しい、段階とによって実行するよう構成されている、
    請求項ないし10のうちいずれか一項記載の計算装置。
  13. 計算装置が合成法を法とする難読化された算術を剰余数系において実行するための電子的な計算方法であって、前記剰余数系は法の系列について定義され、それぞれの法が可換環を定義し、前記系列のそれぞれの法について関連付けられた基本要素が存在して、その法を法とするそれぞれの環要素が、それらの環要素がその基本要素の冪乗の線形結合に等しくなるよう、整数リストとして表現されうるという条件を満たし、それぞれの冪乗は前記整数リストによって決定される指数をもち、当該方法は、
    ・前記合成法を法とした一つまたは複数のオペランドを、それらの法を法とする環要素の一つまたは複数の系列として前記計算装置のオペランド記憶部に記憶する段階であって、ある系列の各環要素は法の前記系列の対応する法に関連付けられ、前記系列の少なくとも一つの環要素が整数リストとしてエンコードされている、段階と、
    ・前記計算装置の計算ユニットによって、テーブル記憶部に記憶された増分テーブルを利用して、環要素数系に従って前記オペランド記憶部の第一および第二のオペランドを加算または乗算する段階であって、
    前記増分テーブルは、前記可換環における演算を定義するものであり、
    前記増分テーブルは、前記系列におけるそれぞれの法について、法の前記系列の法に関連付けられた、ある増分要素について定義された増分テーブルを含み、
    前記増分テーブルは、入力環要素をエンコードする入力整数リストを、該入力環要素に前記増分要素を加えたものに等しい出力環要素をエンコードする出力整数リストにマッピングするものであり、
    前記オペランド記憶部の第一および第二のオペランドの加算は、第一のオペランドを表わす環要素の系列のうち前記法の系列のそれぞれの法に対応する環要素を、第二のオペランドを表わす環要素の系列のうち前記法の系列の対応する法に対応する環要素と、前記対応する法のもとで加算することを含み、該加算は、加算される環要素が整数リストとしてエンコードされている場合には、前記テーブル記憶部に記憶されている前記増分テーブルを利用して実行され、
    前記オペランド記憶部の第一および第二のオペランドの乗算は、第一のオペランドを表わす環要素の系列のうち前記法の系列のそれぞれの法に対応する環要素を、第二のオペランドを表わす環要素の系列のうち前記法の系列の対応する法に対応する環要素と、前記対応する法のもとで乗算することを含み、該乗算は、乗算される環要素が整数リストとしてエンコードされている場合には、前記テーブル記憶部に記憶されている前記増分テーブルを利用して実行される、
    段階とを含む、
    とを含む、
    計算方法。
  14. コンピュータ・プログラムであって、該コンピュータ・プログラムがプログラム可能装置で実行されたときに請求項13記載の方法を実行するよう構成されたコンピュータ・プログラム命令を有する、コンピュータ・プログラム。
  15. コンピュータ可読媒体上に具現されている請求項14記載のコンピュータ・プログラム。
JP2017533225A 2014-12-22 2015-12-21 電子計算装置 Expired - Fee Related JP6387466B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP14199622 2014-12-22
EP14199622.3 2014-12-22
PCT/EP2015/080760 WO2016102445A1 (en) 2014-12-22 2015-12-21 Electronic calculating device

Publications (2)

Publication Number Publication Date
JP2018506057A JP2018506057A (ja) 2018-03-01
JP6387466B2 true JP6387466B2 (ja) 2018-09-05

Family

ID=52282483

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017533225A Expired - Fee Related JP6387466B2 (ja) 2014-12-22 2015-12-21 電子計算装置

Country Status (8)

Country Link
US (1) US10505710B2 (ja)
EP (1) EP3238366B1 (ja)
JP (1) JP6387466B2 (ja)
CN (1) CN107005403A (ja)
BR (1) BR112017013069A2 (ja)
RU (1) RU2698763C2 (ja)
TR (1) TR201907713T4 (ja)
WO (1) WO2016102445A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL2015955B1 (en) * 2015-12-14 2017-06-28 Koninklijke Philips Nv Calculating device and method.
US20190287427A1 (en) 2016-07-21 2019-09-19 Koninklijke Philips N.V. Device and method for performing obfuscated arithmetic

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4418394A (en) * 1980-08-13 1983-11-29 Environmental Research Institute Of Michigan Optical residue arithmetic computer having programmable computation module
FR2622713A1 (fr) * 1987-10-30 1989-05-05 Thomson Csf Circuit de calcul utilisant une arithmetique residuelle
US5069547A (en) * 1988-11-23 1991-12-03 The Boeing Company Multitrack multilevel sensing system with error detecting
SU1667059A2 (ru) 1989-07-11 1991-07-30 Научно-Исследовательский Институт Бытовой Радиоэлектронной Аппаратуры Устройство дл умножени двух чисел
US5270956A (en) * 1991-03-18 1993-12-14 University Of Maryland System and method for performing fast algebraic operations on a permutation network
US6760742B1 (en) * 2000-02-18 2004-07-06 Texas Instruments Incorporated Multi-dimensional galois field multiplier
CA2327911A1 (en) * 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
US7711763B2 (en) * 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7218734B2 (en) 2001-05-02 2007-05-15 Nciper Corporation Limited Ring arithmetic method, system, and apparatus
CA2369304A1 (en) 2002-01-30 2003-07-30 Cloakware Corporation A protocol to hide cryptographic private keys
EP1636932A2 (en) * 2003-06-13 2006-03-22 Koninklijke Philips Electronics N.V. Multiplication in a finite field
WO2007055104A1 (ja) * 2005-11-08 2007-05-18 Matsushita Electric Industrial Co., Ltd. 認証システム、署名生成装置、署名検証装置
WO2007126049A1 (ja) 2006-04-28 2007-11-08 Panasonic Corporation プログラム難読化システム、プログラム難読化装置及びプログラム難読化方法
WO2008007305A2 (en) * 2006-07-12 2008-01-17 Koninklijke Philips Electronics N.V. Method and system for obfuscating a gryptographic function
US8090097B2 (en) * 2006-10-11 2012-01-03 Frank Rubin Device, system and method for cryptographic key exchange
GB0621951D0 (en) 2006-11-03 2006-12-13 Univ Oxford Brookes Polynonomial synthesis
US8752032B2 (en) * 2007-02-23 2014-06-10 Irdeto Canada Corporation System and method of interlocking to protect software-mediated program and device behaviours
US20090158054A1 (en) 2007-12-13 2009-06-18 Massachusetts Institute Of Technology Private data processing
CA2717622C (en) 2008-03-05 2017-10-17 Irdeto B.V. White-box implementation
US10102398B2 (en) * 2009-06-01 2018-10-16 Ab Initio Technology Llc Generating obfuscated data
US8667301B2 (en) 2010-04-01 2014-03-04 Apple Inc. Obfuscating transformations on data array content and addresses
FR2968104B1 (fr) 2010-11-30 2013-07-12 Logiways France Procede et systeme de protection d'un dispositif de cryptographie
RU2467389C1 (ru) 2011-06-07 2012-11-20 Антон Андреевич Краснопевцев Способ защиты программно-информационного обеспечения от несанкционированного использования
EP2831797B1 (en) * 2012-03-30 2018-05-02 Irdeto B.V. Securing accessible systems using dynamic data mangling
US9313028B2 (en) 2012-06-12 2016-04-12 Kryptnostic Method for fully homomorphic encryption using multivariate cryptography
WO2014016795A2 (en) 2012-07-26 2014-01-30 Nds Limited Method and system for homomorphicly randomizing an input
US9576116B2 (en) * 2013-12-26 2017-02-21 Nxp B.V. Secure software components anti-reverse-engineering by table interleaving
WO2015149826A1 (en) * 2014-03-31 2015-10-08 Irdeto B.V. Protecting an item of software
EP3201758A1 (en) * 2014-09-30 2017-08-09 Koninklijke Philips N.V. Electronic calculating device for performing obfuscated arithmetic
EP3224982B1 (en) * 2014-11-27 2018-07-11 Koninklijke Philips N.V. Electronic calculating device for performing obfuscated arithmetic
US9288039B1 (en) 2014-12-01 2016-03-15 Xerox Corporation Privacy-preserving text language identification using homomorphic encryption

Also Published As

Publication number Publication date
BR112017013069A2 (pt) 2018-02-27
RU2698763C2 (ru) 2019-08-29
JP2018506057A (ja) 2018-03-01
EP3238366A1 (en) 2017-11-01
RU2017126055A (ru) 2019-01-24
US20170353294A1 (en) 2017-12-07
WO2016102445A1 (en) 2016-06-30
EP3238366B1 (en) 2019-03-13
TR201907713T4 (tr) 2019-06-21
RU2017126055A3 (ja) 2019-02-28
US10505710B2 (en) 2019-12-10
CN107005403A (zh) 2017-08-01

Similar Documents

Publication Publication Date Title
JP6621813B2 (ja) 難読化された算術を実行するための電子計算装置
EP3224982B1 (en) Electronic calculating device for performing obfuscated arithmetic
US20190287427A1 (en) Device and method for performing obfuscated arithmetic
WO2012090288A1 (ja) 暗号処理装置、暗号処理方法、およびプログラム
JP2017533458A5 (ja)
JP6387466B2 (ja) 電子計算装置
JP6368051B2 (ja) 電子生成装置
Lombardo et al. Computing twists of hyperelliptic curves
EP3484093A1 (en) A computation device and method
JP6522860B2 (ja) 計算装置及び方法
CN109952558B (zh) 用于将余数系统表示转换为基数表示的电子计算装置
JP2018538620A (ja) 計算デバイス及び方法
JP2014235384A (ja) 演算装置、演算方法及びプログラム

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20171127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180222

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180612

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20180620

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180717

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180813

R150 Certificate of patent or registration of utility model

Ref document number: 6387466

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees