JP2018538620A - 計算デバイス及び方法 - Google Patents

計算デバイス及び方法 Download PDF

Info

Publication number
JP2018538620A
JP2018538620A JP2018529239A JP2018529239A JP2018538620A JP 2018538620 A JP2018538620 A JP 2018538620A JP 2018529239 A JP2018529239 A JP 2018529239A JP 2018529239 A JP2018529239 A JP 2018529239A JP 2018538620 A JP2018538620 A JP 2018538620A
Authority
JP
Japan
Prior art keywords
group
input
subset
addition
main group
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.)
Pending
Application number
JP2018529239A
Other languages
English (en)
Other versions
JP2018538620A5 (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 JP2018538620A publication Critical patent/JP2018538620A/ja
Publication of JP2018538620A5 publication Critical patent/JP2018538620A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Operations Research (AREA)
  • Complex Calculations (AREA)

Abstract

主群((M,+))の2つの元を加算するように構成された電子計算デバイスであって、主群が有限アーベル群、式(I)であり、− 第2の部分集合(M0)の各元(mi)についてルックアップテーブル(Pi)を記憶する加算テーブル記憶装置110と、− 第1の加算入力(α0X0)及び第2の加算入力(γ0mi0h0+γ1mi1h1+γ2mi2h2+・・・)を受信するように構成された加算ユニットであって、第1及び第2の加算入力が主群(M)の元であり、第1の加算入力が正規化表現で受信され、第2の加算入力が一般化表現で受信され、第1の加算入力及び第2の加算入力の主群Mにおける和を計算する、加算ユニットとを備える、電子計算デバイス。

Description

本発明は、電子計算デバイス、電子計算方法、テーブル計算デバイス、テーブル計算方法及びコンピュータプログラム、並びにコンピュータ可読媒体に関する。
ホワイトボックス暗号、より一般的にはソフトウェア難読化において、単純な値ではなく符号化された値に対して計算が行われることが多い。単純な値そのものではなく、符号化された値に対して計算が行われる場合、難読化されたソフトウェアのリバースエンジニアリングはより困難になる。
符号化の後では、コンピュータの組み込みのプリミティブを使用して、加算又は乗算などの通常の演算を行うことはできなくなる。符号化された値の単純な加算は、通常、値の加算の符号化とはならない。同じことが乗算にも当てはまる。公式では、ほとんどの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ビットで表される場合、各テーブルは22llビットを必要とする。さらに、符号化は固定であり、これは攻撃者が可能な符号化のリストを作成する可能性を広げてしまう。
これら及び他の懸案事項に対処する計算デバイスを有することは有利である。
本発明者は、背景技術で論じられた、テーブルあたり約2lビットが必要とされるものよりもはるかに小さいテーブルを使用して、加算が符号化された値に対して行われる手法を考案した。また、このシステムは、それを広く適用可能にする全てのアーベル群に適用可能である。さらに、小さいテーブル及び広い適用範囲を有することに加えて、可能性のある符号化の数は多いままであり、したがってセキュリティが向上する。
実際に、このシステムは、冗長な変数に頼ることなく、同一の元に対する異なる表現を可能にする。これは、複数の異なる符号化が簡単に崩壊しないことを意味する。また、このシステムは、内部で使用されるものとは異なる、外部データに使用される異なる符号化を可能にする(一般化表現)。また、可能な表現の数は、外部表現が二度以上使用される必要がない時点まで増加し、攻撃者が可能な符号化のリストを有効に使用する可能性をさらに低減させる。
本発明は多数の異なる可換群Mに適用される。アーベル群としても知られている可換群は、多数の異なる馴染みのある数学的構造、たとえば、ある数を法とする整数
Figure 2018538620
又はある数及びある多項式を法とする多項式
Figure 2018538620
を含む数学的概念である。一実施形態では、このシステムは可換環に拡張される。
本明細書でより完全に論じられるように、多数の可能性及び変形が存在する。任意の所与の実装において多数の変形のうちのいずれが選択されているかは、攻撃者には典型的には未知である。
計算デバイスは電子デバイスであり、モバイル電子デバイス、たとえば、携帯電話、セットトップボックス、コンピュータ、スマートカードなどでもよい。
本明細書に記載される算術は、広範囲の実際のアプリケーションに適用される。そのような実際のアプリケーションは、リバースエンジニアリングが防止されるべきである、銀行業務アプリケーションなどの、プライベートハードウェア上で動作する安全なアプリケーションを含む。他のアプリケーションは、データの不慮の漏洩が防止されるべきであるアプリケーションを含む。プログラムがプライベートデータを解放するように騙された場合、漏洩したデータが符号化されていれば、これはあまり懸念されることではない。また、算術はアプリケーションを動作させるサーバにも適用される。ユーザが符号化された形式でデータを送受信する場合、プライバシーが向上する。
本発明による方法は、コンピュータで実施される方法として、若しくは専用ハードウェアで、又はその両方の組み合わせで、コンピュータ上に実装される。本発明による方法の実行可能コード又はその一部は、コンピュータプログラム製品に記憶される。コンピュータプログラム製品の例は、メモリデバイス、光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどを含む。好ましくは、コンピュータプログラム製品は、前記プログラム製品がコンピュータ上で実行された場合に本発明による方法を実施するためのコンピュータ可読媒体上に記憶された非一時的プログラムコード手段を含む。
好ましい実施形態では、コンピュータプログラムは、コンピュータプログラムがコンピュータ上で実行された場合に、本発明による方法の全てのステップを実施するように適合されたコンピュータプログラムコード手段を含む。好ましくは、コンピュータプログラムは、コンピュータ可読媒体上に具現化される。
本発明のさらなる詳細、態様、及び実施形態が、図面を参照して単なる例として説明される。図中の要素は簡潔かつ明瞭にするために示されており、必ずしも縮尺通りに描かれていない。図面では、説明済みの要素に対応する要素は同一の参照番号を有する場合がある。
計算デバイス100の一実施形態の一例を概略的に示す図である。 加算ユニット130の一実施形態の一例を概略的に示す図である。 乗算ユニット140の一実施形態の一例を概略的に示す図である。 計算デバイス100’の一実施形態の一例を概略的に示す図である。 計算デバイス101の一実施形態の一例を概略的に示す図である。 計算デバイスで使用される増分テーブルを計算するためのテーブル計算デバイス200の一実施形態の一例を概略的に示す図である。 計算方法300の一実施形態の一例を概略的に示す図である。 テーブル計算方法400の一実施形態の一例を概略的に示す図である。 一実施形態によるコンピュータプログラムを含む書き込み可能部分を有するコンピュータ可読媒体を概略的に示す図である。 一実施形態によるプロセッサシステムの表現を概略的に示す図である。
本発明は多くの異なる形の実施形態が可能であるが、図面に示され、本明細書で詳細に説明されるのは1つ又は複数の特定の実施形態であって、本開示が本発明の原理の例示と見なされるべきであり、本発明を図示及び説明される特定の実施形態に限定するものではないという理解の下でのものである。
以下では、理解のために、動作中の実施形態の要素が説明される。しかしながら、それぞれの要素が、それらによって実施されるように記載された機能を実施するように構成されることは明らかであろう。
さらに、本発明は実施形態に限定されず、本発明は上述の、又は相異なる従属請求項に記載された各新規の特徴又は特徴の組み合わせの中にある。
図1は電子計算デバイス100の一実施形態を概略的な形で示す。計算デバイス100は主群(M,+)の2つの元を加算するように構成される。主群は元の集合Mと、Mの元の各ペアに対して定義された、+で示される2値演算とで表される。主群は群であるための通常の数学的要件を満たす(加算は結合法則を満たし、両側単位元が存在し、群の各元は逆元を有する)。さらに、群は有限かつアーベルに制限される。後者は群がある素数p及び指数kについて、
Figure 2018538620
と表されることを示す。主群について、加算は+と表記される。群の演算を+と表記、又はその単位元を0と表記するとしても、これは計算デバイスが従来の算術的意味での加算に制限されなければならないことを意味しないことに留意されたい。たとえば、ある法を法とする加算の群は、計算デバイスが適用されるアーベル群であるが、これに制限されず、代わりに任意のアーベル群に適用される。全ての群及び集合は有限であり、空ではない。
計算デバイス100は、群における加算を計算するように構成される。群の元は、それらを符号化することによって難読化される。計算デバイスをリバースエンジニアリングしようとする攻撃者は使用された符号化を知らないので、群の元の難読化はセキュリティにとって有益である。したがって、たとえ攻撃者が計算デバイスの内部動作を観測できたとしても、そのデバイスが何を計算しているのかが分からない。
興味深いことに、計算デバイス100は、本特許のために名付けられた2つの異なる手法、すなわち、正規化表現及び一般化表現によって群の元を符号化する。本発明者は、そのような表現が全ての有限アーベル群に対して発見されることを見出した。さらに、群は正規化表現及び一般化表現の多数の異なる選択肢を可能にする。また、後者はセキュリティを向上させ、その理由は、1つ又は少数の符号化しか利用できないのであれば、一般的な符号化システムの知識を有する攻撃者は、全ての可能な符号化を試み、どの符号化が使用されたかを解明するためである。しかしながら、符号化の多数の選択肢が利用可能である場合、後者の攻撃ラインは実行不可能になる。
また、正規化表現及び一般化表現の両方は、同一の元の複数の異なる表現を可能にする。特に、一般化表現は、同一の群の元の多数の異なる表現を可能にするように容易に適合される。同様に、これはセキュリティにとって有益であり、1つの可能性のある攻撃ラインは、群の表現をより従来的な表現に写像する変換テーブルを作成してみることであろう。しかしながら、同一の元に対してより多数の表現が存在する場合、これはより困難である。
正規化表現及び一般化表現は、以下で論じられるいくつかの集合に対して定義される。これらの集合の選択は、表現と、それらが加算される方式、具体的には、加算で使用されるルックアップテーブル(以下でさらに論じられる)とを決定する。
主群に対して定義されるのは、第1の作用群N及び第2の作用群Hである。これらの群の両方が主群Mに作用する。注:Aの全てのg及びBのxについて、群Bの元g・xが定義される場合、群Aは群Bに作用する。群Aの単位元はxを変化させず、また、Aの任意のg及びgについて、(g)・x=g・(g・x)である。
第2の作用群Hは、生成元(h)によって生成される巡回群である(H=(h))。両方の作用群は有限である。hが単位元となるような、次数と呼ばれる、ある指数kが存在する。第1及び第2の作用群の両方は、数学的意味での群である。主群への作用群の作用は積と呼ばれる。作用群の単位元は1と呼ばれる。したがって、たとえば、h・x=1・x=xである。第2の作用群は、好都合な表記のために、右作用として表記されていることに留意されたい。
第1の作用群N及び第2の作用群Hは、全てのn∈N、m∈M、h∈Hについて、(nm)h=n(mh)であるという性質を有するように選択されている。
第1及び第2の作用群は、たとえば、主群Mの自己への同型写像の集合などの、Mの自己同型群の部分群として選択される。これは、第1及び第2の群が常に選択され得ることを示している。第2の作用群は、Mの自己同型群の元hを選択し、H=<h>、すなわち、hにより生成される群を設定することによって選択され得る。たとえば、第1及び第2の作用群は、行列群として得られる。
必須ではないが、実施形態では、第1の作用群は
Figure 2018538620
の行列部分群Nであり、hは第1の作用群Nの生成元と可換である他の行列である。この場合、列ベクトルをMの元に使用し、標準的な行列乗算によって全ての行列を左に書くことができる。作用群及びMそれぞれについての行列及びベクトルの表記は都合が良く、たとえば作用群において計算するために、又は加算テーブルを計算するために使用されるが、この形式は、たとえば符号化された表現が使用される計算デバイス自体で使用される必要はない。
計算デバイス100における計算は、作用群で行われる計算を必要とする。作用群が、たとえば第2の作用群と同様に巡回的である場合、これは、群の次数を法とする指数で計算することによって行われる。いずれにしても、作用群での群演算を表すためにテーブルが使用される。
また、主群に対して定義されるのは、主群Mの第1の部分集合Δであって、主群Mの任意の元mがm=nXとして、たとえば、第1の作用群Nの元nと第1の部分集合Δの元Xとの積として表され得るようなものである。これの他の言い方は、第1の作用群Nの作用の下での第1の部分集合Δの軌道が主群と等しいということである。
第1の作用群N及び主群Mが与えられた場合、N・M=Mであるので、そのような第1の部分集合Δは存在が保証される。たとえば、第1の部分集合は、Nによって誘導されるMにおける軌道を決定し、各軌道の少なくとも1つの元を選択することによって発見される。最小の大きさの第1の部分集合Δは、各軌道のちょうど1つの元を選択することによって発見される。Mの2つの元a及びbは、na=bとなるようなNのnが存在する場合、同一軌道にある。同一軌道からより多数の元を選択することは、正規化表現の数を増加させる。
Mの任意の元mは、m=nXとなる第1の作用群Nの元nと、第1の部分集合Δの元Xとのペアとして表される。後者の表現は正規化表現と呼ばれる。異なる第1の作用群及び/又は異なる第1の部分集合を選択することによって、多数の異なる正規化表現が得られる。
内部的には、ペア(n,X)は整数のペアで表される。たとえば、元nは、Nの特定の元を符号化する整数で表される。たとえば、元Xは、第1の部分集合Δの特定の元を符号化する整数で表される。この符号化は正準である必要はない。たとえば、整数の符号化は、第1の作用群及び/又は第1の部分集合にランダムな順序を与え、第1の作用群及び/又は第1の部分集合の元をその順序におけるインデックスとして表すことによって得られる。代替的には、元n及びXは、従来の表現、たとえば正準表現で表される。後者の表現は、それ自体が符号化され、たとえば暗号化される。
また、主群に対して定義されるのは、主群Mの第2の部分集合M={m,...,mr−1}であって、主群Mの任意の元mが複数の被加数の和として表され得、各被加数が、第1の作用群Nの元γと、第2の部分集合Mの元mitと、生成元の冪乗hとの積であるようなものである。たとえば、
Figure 2018538620
である。一般化元は、たとえば、
Figure 2018538620
と記述される。後者の場合、最大の指数は第2の作用群の次数、すなわち、hの次数マイナス1である。より一般的には、インデックスtはλk−1、すなわち、hの次数の倍数マイナス1に制限される。全ての群についてではないが、k−1の最大指数で十分であることが多い。以下、特に明記しない限り、一般化表現が高々k−1のhの冪乗を使用すると一般に仮定する。それにもかかわらず、たとえば、より多くの一般化表現が所望される場合、以下に与えられる例はより大きい指数に拡張される。
Mの全ての元が表されることを可能にする第2の部分集合Mが与えられた場合、集合nMも有効な第2の部分集合であり、ここでn及びhはそれぞれ第1及び第2の作用群のものである。
一般化形式の元は2つの系列、すなわち、{γ,γ,...,γk−1}及び
Figure 2018538620
又は{i,i,...,ik−1}と表される。後者の系列は、元をリストにおけるそれらのインデックスによって表す一例である。また、元γは整数として、たとえば、Nのリスト表現におけるインデックスとして表される。一実施形態では、第2の部分集合は単一の元mを含み、この場合、第2の系列は明示的である必要はなく、暗黙的でもよい。一実施形態では、系列は、Mの全ての元について同一の長さを有する。一実施形態では、系列は、0からhの限度までの、たとえば、k−1又はλ>1でのλk−1までのhの各冪乘についてのエントリを有する。
また、2つの系列は単一の系列、たとえば、
Figure 2018538620
と表される。
以下の境界、#N・#Δ≧#M、及び(#N・#M#H≧#Mを有し、ここで、
#Nは第1の作用群(N)の大きさであり、
#Hは第2の作用群(H)の大きさであり、
#Δは第1の部分集合(Δ)の大きさであり、
#Mは第2の部分集合(M)の大きさであり、
#Mは主群(M)の大きさである。
また、第1の作用群(N)、第2の作用群(H)、第1の部分集合(Δ)、第2の部分集合(M)、及び主群(M)の大きさはいずれも空ではない。所望であれば、正規化表現の数は、主群Mの大きさに比べて上限が与えられ得、たとえば、いくつかの実施形態では、2#M≧#N・#Δである。これは、正規化元の数を制限することが加算テーブルの大きさを減少させるので、利点を有する場合がある。しかしながら、これは必須ではないことに留意するべきであり、具体的には、表現の数、特に一般化表現の数が、群の大きさに比べて大きいことが望ましい場合がある。たとえば、正規化表現の数は、より大きい第1の作用群又はより大きい第1の部分集合を選択することによって増加し、一般化表現の数は、hに対してより大きい指数を許可するか、又はより大きい作用群又はより大きい第2の部分集合を選択することによって増加する。
図1はオペランド記憶装置150を示す。オペランド記憶装置150は、加算対象の群Mの元を記憶する。また、加算以外の他の演算、たとえば乗算などが、オペランド記憶装置150内の元に対して行われる。オペランド記憶装置150は、正規化表現及び一般化表現のオペランドを含む。オペランド記憶装置150の一部は、正規化表現の1つ又は複数の定数加算入力を記憶するように構成される定数記憶装置152である。また、オペランド記憶装置150は、一般化形式の定数を含む。Mの元が加算されたか、さもなければ計算された後、それらはオペランド記憶装置150に、たとえば作業メモリとして再び記憶され得る。
計算デバイス100は、第2の部分集合Mの各元mについて、ルックアップテーブルPを記憶する加算テーブル記憶装置110を備える。そのようなルックアップテーブルは、主群Mの正規化元(γ,X)を入力として取り、入力を第1の作用群Nの元λと第1の部分集合Δの元Yとに写像して、第1の作用群Nの元λと第1の部分集合Δの元Yと積が、正規化元γXと、第2の部分集合Mの前記元mとの和になる、すなわち、λYh=γX+mとなるようにする。たとえば、ルックアップテーブルPは、λYh=γX+mとなるようにP(γ,X)=(λ,Y)を写像する。一実施形態では、元mについてのルックアップテーブルは、正規化入力を正規化出力元に写像して、正規化入力プラス(群Mの)元mが、(第2の作用群の作用を使用して)生成元hの正規化出力倍と等しくなるようにする。
ルックアップテーブルが正規化形式のMの単一の元のみを入力として取ることに留意されたい。テーブルの大きさは正規化元の数に見合っており、これはほぼM自体の大きさである。それにもかかわらず、そのようなテーブルはMの2つの元を加算するために使用される。2つの入力を取って和を計算するテーブルは、Mの大きさの二乗で増加することに留意されたい。これは、群Mの大きさが大きくなるように、たとえば512より大きく、又は1024個の元より大きくなるように選択されても、テーブルの大きさが二次的にではなくほぼ線形に増加することを意味する。
計算デバイス100は加算ユニット130を備える。加算ユニット130は、たとえば加算ユニット130のインターフェースなどを介して第1の加算入力及び第2の加算入力を受信するように構成され、第1の加算入力及び第2の加算入力は主群Mの元である。第1の加算入力は正規化表現、たとえば、αで受信され、ここでαは第1の作用群Nのものであり、Xは第1の部分集合のものである。第2の加算入力は一般化表現、たとえば、
Figure 2018538620
で受信される。加算ユニット130は、主群Mにおける第1及び第2の加算入力の和を計算するように構成される。
加算ユニット130は、第2の加算入力の被加数を第1の加算入力に順次加算することによって部分和を計算するように構成される。第2の加算入力の被加数
Figure 2018538620
を部分和に加算することは、前記被加数における第2の部分集合Mの元
Figure 2018538620
についての、加算テーブル記憶装置110に記憶されたルックアップテーブル
Figure 2018538620
を適用することを含む。
図1bは加算ユニット130の一実施形態を示す。加算ユニット130は、第1の加算入力131と第2の加算入力132とを受信する。加算ユニット130は、第2の加算入力132から得られた被加数を第1の加算入力元に反復的に加算するように構成される部分加算ユニット134を備える。たとえば、部分加算ユニット134は、第1の加算入力131に初期化された部分和133に加算する。加算は、記憶装置110からのルックアップテーブルの適用を含む。実施形態の数学的詳細が以下でさらに論じられる。
たとえば、加算ユニットは、部分和131を最初は第1の加算入力αに設定し、第1の加算入力の被加数にわたってループし、各ループにおいて、第1の加算入力
Figure 2018538620
の被加数を加算することによって部分和を更新するように構成される。以下、加算ユニット130によって第1及び第2の加算入力を加算するために使用される例示的なアルゴリズムが与えられる。
第1の加算入力131は主群の元(α,X)に初期化され、ここでα∈N及びX∈Δであり、たとえば、第1の加算入力131はペア{α,X}と表される。第2の加算入力は主群の元
Figure 2018538620
であり、ここでkは生成元の次数であり、γ∈N及びm∈Mであり、hは生成元である。λ=1を仮定するが、以下の式はλ>1の場合に直接拡張されることに留意されたい。たとえば、第2の加算入力132は、系列
Figure 2018538620
と表される。
加算ユニット130は、加算テーブルPの1つを適用した結果として得られる以下の部分的な結果の系列を計算するように構成される。以下、ルックアップテーブルPの正規化入力及び出力は、第1の作用群Nの元と第1の部分集合Δの元とのペアとして表されている。
Figure 2018538620
たとえば、加算ユニット130は、部分和を最初は第1の加算入力(α,X)に設定するように構成される。たとえば0からλk−1までの生成元の各指数tについて、部分加算ユニット134は、冪乗
Figure 2018538620
に対応する被加数を加算することによって、現在の部分和(α,X)から次の部分和(αt+1,Xt+1)を得る。後者は、
Figure 2018538620
についてのルックアップテーブル
Figure 2018538620
を(γ −1γt−1α,X)に適用することを含み、ここでγ−1は第1の作用群における単位元であり、(α,X)は部分和133に記憶された現在の部分和である。
部分和133内の部分和(α,X)は、第1及び第2の加算入力の部分和を表す。部分和(α,X)は前記和と同一ではないが、値γt−1αは部分和、たとえば、第1の加算入力と、第2の加算入力の最初のt個の被加数との和と等しくなる。部分和が値γt−1αに等しくなるように部分和を表すことは効率的であることが分かっている。これは計算の短い系列をもたらす。しかしながら、他の表現も可能であり、具体的には、部分和は、部分和に直接(定数なしで)等しい正規化元によって表され得るが、これは不必要に加算を複雑にする。部分和は正規化表現であることに留意されたい。加算テーブルの定義及び部分和を代入することにより、上記のアルゴリズムが実際に正しい結果を生成することが検証され得る。アルゴリズムは第1の作用群における計算を含むことに留意されたい。そのような計算は任意の従来の手法で、たとえば、第1の作用群の何らかの正準表現を使用して、又は第1の作用群における計算の結果を示すテーブルを記憶するなどして行われる。
アルゴリズムの結果、上記アルゴリズムの最終的な部分和(α,X)について、(γk−1α)が第1及び第2の加算入力の和に等しくなる。所望であれば、加算ユニット130は、γk−1αが計算されるさらなるステップと共に構成される。ペア{γk−1α,X}は正規化表現での和を表す。以下、最終的な正規化出力が、第1の作用群の元にγk−1を乗算することによって変換されていると仮定する。しかしながら、この最後のステップは必須でないことに留意されたい。たとえば、最後の乗算は、同一の元に行われる次の演算と組み合わせられる。特に、難読化された実装では、補正の乗算を延期する際に利点がある。たとえば、最終的な部分和は、符号化された和と見なされる。加算の最終的な正規化出力を得るためには、γk−1も必要であり、それは攻撃者には入手できない場合がある。
一実施形態では、加算ユニット130は、入力として2つの元を取り、1つは正規化表現であり、1つは一般化表現であり、正規化表現の元を出力として生成する。一実施形態では、加算ユニット130は、複数の元、たとえば3つ以上の元を入力として取り、1つは正規化表現であり、残りは一般化表現であり、正規化表現の和を出力として生成する。たとえば、全ての一般化元が加算されるまで、正規化元が各一般化元に加算されて、正規化元が部分和として生成され、複数の元の最終的な和は正規化表現である。
上記の例示的なアルゴリズムは、正規化元に一般化(非正規化)元を加算する。加算は正規化入力を使用する。正規化入力は、一般化されたオペランドを正規化することによって、或いは前の加算から得られる出力若しくは他の正規化関数、又は正規化定数を使用することによって得られる。
一実施形態では、計算デバイス100への外部入力は、非正規化されるように選択される。これは値の繰り返しを回避し、一般に、正規化元よりもはるかに多くの非正規化元を有する。たとえば、一実施形態では、いくつかの非正規化元が使用され、その後は再度使用されない。
たとえば、入力値x及び定数cによってx+cを計算することが望まれる場合、正規化形式で与えられたcと、非正規化形式のxとによってc+xを計算する。d+e=cによって(d+x)+eを計算する方がさらに良く、ここで、dは正規化形式であり、x及びeは非正規化形式である。後者の形式では、計算はcの正規化値を公開せず、これは攻撃者にとって処理中に現れる値の下に隠された実際の値を知ることを困難にする。値c又は値d及びeは、オペランド記憶装置150、たとえば定数記憶装置152に記憶される。値dはランダムに選択され、値eはd+e=c.sとなるように選択される。
2つの非正規化値の加算を計算する必要がある場合、一連の演算を開始することができる正規化定数(又は複数の定数)を含めることが可能である。たとえば、0+x+yの正規化表現は、x及びyが両方とも一般化されていない場合、x+yの計算を置き換えることができる。定数0は正規化元として表される。2つの正規化元を加算する必要がある場合、それらのうちの1つ、たとえば第2のものを一般化表現に置き換えることが可能である。たとえば、これは、全てのX∈Δについて、Xの一般化表現を写像するテーブルなどの写像によって行われる。一実施形態では、写像はxの複数の一般化表現を含み、その結果、Xの一般化表現の選択は一意でなく、選択を難読化するためにある程度の柔軟性を提供する。
一実施形態では、計算デバイス100は、電子計算デバイスの外部のコンピュータから1つ又は複数の加算入力を受信するように構成されるネットワークインターフェースを備える。1つ又は複数の加算入力は一般化表現であり、1つ又は複数の加算入力に加えて、他の入力も受信され、その一部は正規化表現でもよい。定数記憶装置152には、1つ又は複数の定数加算入力が正規化表現で記憶される。計算デバイス100は、ネットワークインターフェースを介して受信された一般化形式の選択された加算入力と、定数記憶装置152からの正規化形式の選択された定数加算入力とを加算ユニットを使用して加算するように構成される。一般に、計算デバイス100は、オペランド記憶装置150内のどのオペランドに対して、加算などのどの演算が行われるかを制御するように構成される計算コントローラを備える。計算コントローラは別途図示されていない。一実施形態では、定数記憶装置は、dが正規化され、eが一般化されたペア(d,e)を含み、定数dが選択された加算入力に最初に加算され、続いて定数eが加算される。得られた正規化元は、オペランド記憶装置150に記憶される。
正規化表現よりさらに多数の一般化表現が存在するように計算システムを構成することは比較的容易である。デバイスの外部でより多数の選択肢を有することは、外部の通信におけるセキュリティを向上させる。たとえば、一実施形態では、複数のセンサ(又は他のデバイス)が、一般化表現で符号化されたセンサデータ(又は他のデータ)を通信する。各センサは全ての一般化表現のプライベートな部分集合へのアクセスを有し、たとえば、前記複数のプライベートな部分集合のうちの2つが、たとえば、前記2つのプライベートな部分集合のいずれかの大きさの10%未満である元の閾値を超えて重複することはない。一実施形態では、前記複数のプライベートな部分集合のうちの2つが重複することはない。これは、2つのセンサが異なる表現を使用してそれらのデータを通信するという利点を有する。センサへのアクセスを有し、センサデータとその一般化表現との関係をどうにかして発見した攻撃者は、この写像を使用して、異なるセンサから傍受された通信を復号することはできない。複数の、さらには多数の一般化表現を作成することがより簡単であっても、任意の所与の群の元は、複数の正規化表現によって表されてもよいことに留意されたい。
一実施形態では、計算デバイス100は、変換入力を受信するように構成される変換ユニット150を備える。
たとえば、変換入力は一般化形式であり、正規化形式に変換される。この場合、変換ユニット150は、正規化形式の主群の元を加算することによって、変換入力を正規化形式に変換するように構成される。その元は0でもよい。変換ユニット150は非ゼロの元を加算してもよく、その場合、たとえば符号化として入力が変更されるように、後の演算が適合される。変換ユニット150は、和が0になる複数の元であって、そのうちの少なくとも1つが正規化形式であるものを加算してもよい。
たとえば、変換入力は正規化形式であり、一般化形式に変換される。この場合、変換ユニット150は、少なくとも第1の部分集合の元を一般化形式に写像する変換テーブルを記憶するように構成される。たとえば、写像に従って、正規化形式nXのXが
Figure 2018538620
に写像される場合、正規化形式nXは
Figure 2018538620
に写像する。Xを表す系列をnXを表す系列に変換することは、第1の作用群において計算することによって行われる。
変換ユニットは、表現にかかわらず主群の2つの元の加算を可能にする。たとえば、2つの元が共に正規表現である場合、そのうちの1つが一般化表現に変換される。たとえば、2つの元が共に一般化表現である場合、そのうちの1つが正規表現に変換される。
計算デバイス100の一実施形態は関数ユニット124を備える。関数ユニットは、線形関数fを一般化形式の関数入力に適用するように構成される。たとえば、一般化形式はオペランド記憶装置150から受信される。
関数入力は、第1の作用群Nの元γと、第2の部分集合Mの元
Figure 2018538620
と、生成元の冪乗hとの積
Figure 2018538620
を入力として取り、積を、線形関数を積に適用した結果に写像するテーブルが記憶される線形関数テーブル記憶装置を備える。関数ユニットは、線形関数テーブル記憶装置のテーブルを関数入力の被加数に適用するように構成される。たとえば、入力
Figure 2018538620
は出力
Figure 2018538620
に写像される。一般化表現での可能な被加数の数は、一般化表現の数よりはるかに少ないことに留意されたい。したがって、線形関数fを計算するために必要とされるテーブルは、任意の一般化元を入力として取るテーブルに必要とされるよりもはるかに小さい。非線形演算が主群Mの元に実行されてもよく、たとえばテーブルによって実行される。
本明細書で説明された原理は、広範なアーベル群に適用可能であり、多数の表現を可能にする。以下、これらの多数の可能性の中のいくつかの選択肢が与えられる。本発明者によって行われた広範な実験は、これらの選択肢の全てについて、多数の可能な主群Mが可能であることを示している。
一実施形態では、hの次数が制限される。たとえば、一実施形態では、第2の作用群Hは3つの元を有するか、又は第2の作用群Hは2つの元を有する。より一般的には、次数は4若しくは8又は16未満などである。組み合わせて、一般化表現における指数の上限は、k−1となるように取られる。加算中に取られるステップの数は、Hの大きさと共に増加する。たとえば、2つ又は3つの元を有する比較的小さいHを選択することにより、加算はより少ないステップを有し、計算はより高速になる。
一実施形態では、第2の部分集合Mは少なくとも2つの元を有する。第2の部分集合の元の数を増加させることは、一般化表現の数を増加させる。具体的には、一般化表現の数は、任意の一般化表現が一度しか使用される必要がない時点まで増加する。後者は、一般化表現から変換テーブルを簡単に構成することに基づく攻撃を完全に排除する。
一実施形態では、第2の部分集合の元の数が制限される。第2の部分集合の大きさが増加するにつれて、加算記憶装置110内のテーブルの数も増加する。たとえば、第2の部分集合の元の数は、4若しくは8又は16未満などである。具体的には、第2の部分集合の元の数は1でもよい。一実施形態では、第2の部分集合Mは、単位元でない1つの元を有する。
上記のオプションは組み合わせられる。たとえば、一実施形態では、第2の部分集合は単一の元のみを有し、第2の作用群はちょうど2つの元を有する。十分に大きい第1の作用群を選択することにより、Mの全ての元が依然として表現される。
実装に都合が良いのは、Nが巡回群、たとえば少なくとも3つの元を有する巡回群である選択肢である。この場合、Nはいくつかの元によって生成され、Nの元は生成元の指数として表される。指数は符号化された形式で記憶される。有利なことに、生成元は秘密に保たれ得る。
アーベル群Mは法nを法とする整数の群
Figure 2018538620
である。剰余数系においてこれらの群の倍数を組み合わせることにより、任意の大きい数に対して算術が行われる。有利には、これらの群において指数を表す数は、実施形態の1つ又は複数に従って表され、再帰的定義を生成する。法nは、たとえば8より大きい。
また、アーベル群Mは、たとえば、l≧4のアーベル群
Figure 2018538620
であり、2個の元を有することは(群
Figure 2018538620
と混同されるべきでない)、2値計算、特にXOR演算に特に適している。
上記の群は標数2を有する。これは小さい第2の作用群H、特に2つの元を有する第2の作用群Hと組み合わせられ得る。たとえば、Hは元h=−1によって生成される。この場合、十分な一般化元を得るためには、一般化表現の生成元の冪乗hは、次数マイナス(k−1)を超えることが許される必要がある。一実施形態では、一般化表現における指数は、高々次数の2倍マイナス1であり、たとえば、t≦2k−1である。
主群Mが2より大きい標数を有するか、又は第2の作用群の次数が2より大きい場合、一般化表現のhの指数は、高々次数マイナス1に制限され、たとえば、t≦k−1である。有利なことに、生成元は秘密に保たれ得、テーブルは比較的小さい。一般化元の数は、たとえば、より大きいH、Mなどを選択することによって、所望の大きさとなる。
いくつかの実施形態では、たとえば、外部入力を保護するために一般化元が使用される場合、正規化元より多数の一般化元が存在することが望ましい。これは、十分に大きい第2の作用群、許容可能な指数、第2の部分集合、さらには第1の作用群を選択することによって得られる。一実施形態では、(#N・#M#H≧3/2#N・#Δであり、すなわち、一般化表現の数は、正規化表現の数の少なくとも3/2であり、より詳細には、(#N・#M#H≧5/2#N・#Δなどである。
上記で論じられたように、第1の部分集合Δの元は、第1の作用群によって主群Mに誘導される軌道から選択される。一実施形態では、第1の部分集合Δの元は、第1及び第2の作用群並びに第2の部分集合から得られ、すなわち、第1の作用群Nの元と、第2の部分集合の元と、第2の作用群Hの元との積を総和して形成される元に、生成元の、生成元の次数マイナス1乘を加えたものである。第2の作用群の元は、高々生成元の次数マイナス2乗の生成元hの冪乗である。すなわち、第1の部分集合Δの元が、
Figure 2018538620
となるように選択され、βは第1の作用群から取得され、mは第2の部分集合から取得される。これは、機能する第1の部分集合を以下のように生成することが分かる:任意の元が
Figure 2018538620
と記述され得るので、後者は
Figure 2018538620
と記述され、これは第1の作用群の元(γk−1)と、上記で定義された第1の部分集合の元との積である。典型的には、第1の部分集合には他の多数の可能な選択肢があり、そのうちのいくつかはこの例よりも小さくてもよいことに留意されたい。しかしながら、これは、第2の部分集合が与えられた場合、少なくともこのようにして適切な第1の部分集合が構成されることを示す。
第1の部分集合の上記の構成は、第2の部分集合Mが単一の元からなる状況にも適している。この場合、元β+・・・βk−2k−2+mk−1を取得し、第1の部分集合の大きさの大幅な削減を与える。一般に、小さい第1の部分集合を有することは、正規化表現の数を減少させ、これは加算テーブルの大きさを削減する。加算テーブルは、特に難読化された実装、たとえば符号化された実装のコードサイズの重要な部分を表す。
以下、主群、作用群、及び部分集合のいくつかの例が与えられる。
第1の例では、主群は群
Figure 2018538620
である。Mの元は、2つの要素の列ベクトルとして表され得る。第1の作用群Nは行列
Figure 2018538620
によって生成され、大きさ4を有する。第2の作用群は元−1によって生成され、H=<−1>であり、大きさ2を有する。群Hの元は+I及び−Iと表され、Iは単位行列を表す。第2の部分集合は、単一の元
Figure 2018538620
を有する集合として選択される。Mの全ての元は一般化表現でγ−γと記述され、ここでγ及びγはNのものである。第1の部分集合は、上記の構成を使用して集合{xm−m}として選択され、ここでxはNの全ての元に及ぶ。主群、第1及び第2の作用群、並びに第1及び第2の部分集合の元は、行列又はベクトルとして表され得るが、一般的に可能であるように、何らかの符号化された形式で、たとえば、対応する群又は集合のランダムな順序のインデックスとして表されてもよい。
第2の例では、主群は
Figure 2018538620
である。第1の作用群は行列
Figure 2018538620
によって生成され、次数5を有する。第2の作用群は、元−1によって生成され、大きさ2を有する。第1の部分集合は3つの元を有する。
Figure 2018538620
第1の部分集合は、群MにおけるNの軌道の任意の元を取ることによって選択される。第1の部分集合は17個の元を有する。
第3の例では、主群は
Figure 2018538620
であり、標数2の群である。第1の作用群Nは14個の元を有し、
Figure 2018538620
及び、
Figure 2018538620
によって生成される。
元gは次数7を有し、元sは次数2を有し、互いに可換である。g及びsによって生成される第1の作用群Nは次数14を有する。Nの全ての元はgと記述され得、整数のペア(i,j)は第1の作用群の元を表すために使用され得る。第2の部分集合は単一の元
Figure 2018538620
からなる。
第2の作用群は、単位元のみを有する大きさ1の群である。生成元の次数kは1である。この場合、一般化表現における指数の上限は、k−1から2k−1まで増加し、したがって、2つの被加数を有する。第1の部分集合は、M上のNの軌道から選択され、最小限の選択肢では9つの元を有する。
第4の例では、主群は
Figure 2018538620
である。第1及び第2の作用群の両方は
Figure 2018538620
に同形である。第1の作用群は
Figure 2018538620
によって生成され、第2の作用群は
Figure 2018538620
によって生成され、両方の生成元は次数3を有する。第2の部分集合は単一の元
Figure 2018538620
を有する。
第1の部分集合は、Mに誘導されるNの軌道から6つの元が選択され得る。
第5の例では、主群は
Figure 2018538620
である。第1の作用群は6つの元を有し、
Figure 2018538620
によって生成され、第2の作用群は2つの元を有し、
Figure 2018538620
によって生成される。第2の部分集合は単一の元
Figure 2018538620
を有する。第1の部分集合は軌道から選択され得、5つの元を含む。
例全体にわたって、第2の作用群の大きさは、より多くの一般化表現を作成するために増加されてもよい。同様に、第1及び第2の部分集合の大きさは増加されてもよい。加算テーブルは定義式から計算され得る。
一般に、アーベル群Mが与えられた場合、他の元は以下のように選択される。群Mは
Figure 2018538620
の積として、d|d・・・|dによって記述される。これは、
Figure 2018538620
の元を見つけてMに投影すれば十分であることを意味する。以下の手順に従ってもよい。
1.Mの自己同型群の生成元、たとえば、行列群
Figure 2018538620
の可逆元を取得する。
2.自己同型群の元hを、たとえば生成元のランダムな積として選択する。hによって生成される群としてHが得られる。
3.自己同型群の部分群として群Nを選択する。たとえば、自己同型群において1つ、2つ又はそれ以上の生成元を選択する。生成元は群Hと可換になるように選択される。Nについてそのような生成元を見つけることは、行列として見た場合に生成元の元に関する線形連立方程式を解くことによって行われることに留意されたい。
4.最後に、第1及び第2の集合M及びΔを選択する。後者は、Nの軌道を計算することから得られる。前者は、たとえば、空集合を徐々に拡大することによって選択される。
最後に、このようにして得られた算術が、たとえば、Hの大きさ、一般化表現の数などの制約を満たすか否かが判定され、満たさなければ、たとえば処理はステップ2から繰り返される。異なるアルゴリズムが可能であり、たとえば、ステップ2及び3を入れ替えてもよいことに留意されたい。これらの構成は、たとえば効率的なメモリ使用を可能にする。
図1は、計算デバイス100において入力を受信するための2つのオプションを示す。計算デバイス100は、符号化されていない入力、たとえば任意の従来の形式の主群Mの元を受信するように構成される符号化ユニット170を備える。符号化ユニット170は、入力を正規表現又は一般化表現に変換する。一実施形態では、符号化ユニット170は、群Mの元を正規表現又は一般化表現に写像するための符号化テーブルを含む。一実施形態では、符号化ユニット170は、一般化元を生成する。符号化ユニット170は計算デバイス100の一部である必要はなく、たとえば、計算デバイスは符号化された形式で、具体的には一般化表現で入力を直接受信する。たとえば、後者は、直接入力171がそこから受信される外部コンピュータに符号化ユニット170を有することによって実現される。
一実施形態では、複数の符号化ユニット170が同一の計算デバイス100に対して生成される。複数の符号化ユニット170は、符号化されていない入力を受信し、入力を一般化表現に変換するように構成される。複数の符号化ユニット170は異なる一般化表現を使用する。たとえば、複数の符号化ユニットのうちの任意の2つの符号化ユニットに対して、主群Mの元xであって、xがその2つの符号化ユニットによって異なって符号化されるようなものが存在する。たとえば、一実施形態では、複数の符号化ユニットのそれぞれによって異なって符号化される主群Mの元xが存在する。
また、計算デバイス100の出力は、復号ユニット160によって復号される。代替的には、計算デバイス100の出力は、符号化された形式、たとえば正規化表現又は一般化表現で返される。ローカルに、外部のコンピュータにおいて、符号化は復号ユニット160などによって取り除かれる。したがって、ユニット160及び170は共にデバイス100から省略されてもよい。
図1dは、乗算ユニット140を含む計算デバイス100’の改良を概略的な形で示す。計算デバイス100’は、以下に示される以外は、計算デバイス100と同一である。
この場合、主群(M,+)は環(R,+,・)でもあり、加算に加えて、乗算も定義される。乗算は結合法則を満たし、アーベル群の演算において分配法則を満たし、単位元を有する。乗算の単位元は1と記述されることが多い。
表記の都合上、このセクションでは、第1の作用群の作用には右表記が使用される。これは正規化元がXαと記述されることを意味し、ここでXは第1の部分集合のものであり、αは第1の作用群のものである。第1及び第2の作用群は、たとえば、主環Mの自己への環同型写像の集合など、環としてMの自己同型群から取得される。
乗算ユニット140は、第1の乗算入力141及び第2の乗算入力142を受信するように構成される。図1cは乗算ユニット140の可能な実施形態を概略的な形で与える。第1の乗算入力141及び第2の乗算入力142は主群(R)の元であり、これはこの場合、実際には環である。第1の乗算入力141は正規化表現Xαで受信され、第2の乗算入力142は一般化表現で受信される。乗算ユニット140は、第1の乗算入力141及び第2の乗算入力142の環(R)における積を計算するように構成される。
乗算ユニット140は、
− 第1の乗算入力141と、第2の乗算入力142の第1の被加数とから第1の加算入力145を計算し、第1の加算入力が正規化形式であり、
− 第1の乗算入力と、第1の加算入力145を計算するために使用された第1の被加数以外の第2の乗算入力142の複数の被加数とから1つ又は複数の第2の加算入力146を計算するように構成される。1つ又は複数の第2の加算入力146は一般化形式である。
乗算ユニット140は、図1cに示されるように、第1の乗算入力141及び第2の乗算入力142から第1の加算入力145及び1つ又は複数の第2の加算入力146を計算するように構成される中間乗算ユニット144を備える。加算入力を決定することは、第1及び第2の作用群における演算を含むが、加算テーブルを必要としない。乗算入力から加算入力への変換の後、第1の加算入力145及び1つ又は複数の第2の加算入力146は、たとえば加算ユニット130を介して加算される。
同一のテーブルが加算及び乗算に使用されるので、加算又は乗算のいずれが行われているかをリバースエンジニアリング中に見極めることは困難である。攻撃者が使用されるテーブルを発見できたとしても、どうにかしてその関数が加算テーブルであると把握できたとしても、加算演算又は乗算演算のいずれが行われているかはまだ分からない。さらに、乗算のために追加のテーブルが必要とされないので、コードサイズが縮小される。
一実施形態では、第1の作用群N及び第2の作用群Hは環U(R)の単元群の部分群であり、乗算によって主群に作用し、第2の部分集合Mは主群の単位元、たとえば、元m=1のみを含む。この場合、第1の部分集合は、上述されたように、元β+・・・βk−2k−2+hk−1として構成される。この場合、第1の乗算入力141は((β+・・・βk−2k−2+hk−1)α=Xα)の形を有し、第2の乗算入力142は(γ+γ+γ+・・・)の形を有する。
以下、乗算入力を加算入力に変換する変換アルゴリズムの一例が与えられる。第1の乗算入力141をr=Xα=(β+・・・βk−2k−2+hk−1)αとし、第2の乗算入力142をr’=γ+γ+γ+・・・+γk−1k−1とする。乗算r・r’は、’の各被加数によって行われる。第1のものはrγ=X(αγ)であり、この正規化元は第1の乗算入力145である。後のものは、i>0でのXαγである。分配性とh=1であることとを使用した簡単な計算を使用して、Xαγの一般表現を得る。この処理は一般表現のk−1個の加算入力146を生成し、これらは、正規化元である第1の加算入力145のために加算式によって加算される。加算の回数はkと共に増加する。k=2を使用することは、乗算及び加算が同一の複雑性を有することを意味し、攻撃者がコード内の加算演算と乗算演算とを区別することをより困難にする。
一実施形態では、第1の作用群N及び第2の作用群Hは環U(R)の単元群の部分群であり、乗算によって主群に作用し、第2の部分集合Mは主群の単位元のみを含む。
図2は計算デバイス101の一実施形態の一例を概略的に示す。計算デバイス101は計算デバイス100’の改良である。一実施形態では、計算デバイス101は、複数の加算ユニットと、複数の乗算ユニットとを備える。たとえば、図2は、3つの乗算ユニット140.1、140.2及び140.3と、2つの加算ユニット130.1及び130.2とを示す。これらのユニットは、それぞれユニット140及び130と同一の設計である。乗算及び加算ユニットは比較的小さいスペースしか取らず、たとえば、ソフトウェアで実装される場合、これらのユニットは数百の低レベルのコンピュータ命令より多い必要はない。具体的には、コンピュータプログラムにおいて必要とされる各乗算又は加算のために、加算及び/又は乗算ユニットのコピーが使用される。これは、従来の難読化手法がこれらのコピーを異ならせて、同一の演算子が使用されていることを攻撃者が知ることができないようにすることを可能にする。たとえば、使用される難読化に応じて、乗算及び/又は加算ユニットが複数の計算に再利用される。一例として、図2は、難読化された算術を使用して多項式ax+bx+cがどのように計算されるかを示す。
加算、乗算などの複数の算術ユニットの演算は、それらのデータの依存関係によって許容される任意の順序のものである。たとえば、演算140.3は、順序140.1、140.2、130.1、及び130.2に、130.1より前の任意の時点で挿入される。また、その後の乗算又は加算の順序は逆にされてもよい。したがって、図2のような図は、多数の方式でソフトウェアプログラムのために線形順序に変換される。ユニットが厳密に分離される必要はなく、第1のユニットのための命令には、他のユニットのための命令が散在してもよい。
図3は、計算デバイスで使用される加算テーブルを計算するためのテーブル計算デバイス200の一実施形態の一例を概略的に示す。加算テーブルは、計算デバイス100などのようなデバイスで使用される。加算テーブルは、たとえば、ハードディスク、不揮発性メモリチップなどの非一時的記憶デバイスに記憶される。
テーブル計算デバイス200は、主群((M,+))の2つの元を加算するように構成される電子計算デバイスで使用されるルックアップテーブルを計算するように構成され、主群は有限アーベル群
Figure 2018538620
である。
テーブル計算デバイスは、第2の部分集合Mの元mについてのルックアップテーブルを構築するように構成されるテーブル作成ユニット210を備える。テーブル作成ユニットは、以下を行うように構成される。
− 主群Mの入力された正規化元(γ,X)を繰り返し選択する。たとえば、デバイス200は、正規化元を選択するために、第1の作用群及び第1の部分集合の元を選択する。
− 入力された正規化元γXと第2の部分集合の前記元mとの和s=γX+mを決定する。この加算は主群Mにおいて行われる。たとえば、入力された正規化元及びmの両方が、Mの正準表現に変換される。デバイス200が難読化なしで主群Mにおいて計算することには反対ではなく、その理由は、デバイス200が典型的には計算デバイス100自体の一部ではないためである。
− 第1の作用群Nの元λと、第1の部分集合Δの元Yとを、第1の作用群Nの元λと、第1の部分集合Δの元Yとの積が前記和となるように決定する:λYh=s=γX+m。たとえば、sh−1を計算し、変換テーブルを使用するなどしてこれを正規化形式に変換する。代替的には、全ての正規化元についての和を計算して、和のテーブルを作成し、次に全ての正規化元λYにわたってループし、どの和がλYhと等しいかを決定する。
− 入力された環の元を第1の作用群Nの元λと、第1の部分集合Δの元Yとに写像するルックアップテーブルにエントリを追加する。
その結果は、第2の部分集合Mの元mについてのテーブルである。テーブル作成は、第2の部分集合の他の全ての元について繰り返される。
オペランド記憶装置150、加算テーブル記憶装置110などは、電子メモリとして実装される。メモリの一部は揮発性又は不揮発性である。たとえば、それらはSRAM、FLASH又はROMメモリを備える。他の記憶技術、たとえば、磁気記憶装置、クラウド記憶装置なども使用される。好都合なことに、使用される記憶装置は、高速ランダムアクセス、たとえば、緊密に/密接に結合されたメモリを可能にする。
典型的には、デバイス100、100’及び200はそれぞれ、デバイスに記憶された適切なソフトウェアを実行するマイクロプロセッサ(別途図示せず)を備え、たとえば、そのソフトウェアは対応するメモリ、たとえばRAMなどの揮発性メモリ、又はフラッシュなどの不揮発性メモリ(別途図示せず)にダウンロード及び/又は記憶される。デバイス100、100’及び200は、マイクロプロセッサ及びメモリ(別途図示せず)が設けられる。代替的には、デバイスは、たとえばフィールドプログラマブルゲートアレイ(FPGA)として、プログラマブルロジックに全体的又は部分的に実装される。デバイス100、100’及び200は、いわゆる特定用途向け集積回路(ASIC)、すなわち、それらの特定の用途向けにカスタマイズされた集積回路(IC)として、全体的又は部分的に実装される。たとえば、回路は、たとえば、Verilog、VHDLなどのハードウェア記述言語を使用して、CMOSに実装される。
計算の一実施形態は、加算回路、変換回路、関数回路、及び/又は乗算回路などを備える。回路は本明細書に記載された対応するユニットを実装する。回路はプロセッサ回路及び記憶回路であり、プロセッサ回路は記憶回路内で電子的に表される命令を実行する。回路もFPGA、ASICなどである。
図3は、主群((M,+))の2つの元を加算するための電子計算方法300を概略的な形態で示すフローチャートであり、主群は有限アーベル群
Figure 2018538620
である。
方法300は以下を有する。
− 第2の部分集合(M)の各元(m)についてルックアップテーブル(P)を記憶するステップ310であって、前記ルックアップテーブルが、主群(M)の正規化元((γ,X))を入力として取り、入力を第1の作用群(N)の元(λ)と第1の部分集合(Δ)の元(Y)とに写像し、第1の作用群(N)の元(λ)と第1の部分集合(Δ)の元(Y)との積が、正規化元(γX)と第2の部分集合(M)の前記元(m)との和(λYh=γX+m)である、記憶するステップ310。たとえば、記憶するステップは、加算テーブルが記憶されるメモリを有することによって実行される。
− 第1の加算入力(α)及び第2の加算入力
Figure 2018538620
を受信し、第1及び第2の加算入力が主群(M)の元であり、第1の加算入力が正規化表現で受信され、第2の加算入力が一般化表現で受信され、第1の加算入力及び第2の加算入力の主群(M)における和を計算するステップ320であって、
− 第2の加算入力の被加数を第1の加算入力に順次加算することによって部分和を計算するステップ330
を有し、
− 第2の加算入力の被加数
Figure 2018538620
を部分和に加算するステップ340が、前記被加数における第2の部分集合(M)の元
Figure 2018538620
についてのルックアップテーブル
Figure 2018538620
を適用するステップを有する、
計算するステップ320。
図5は、主群((M,+))の2つの元を加算するように構成される電子計算デバイスで使用されるルックアップテーブルを計算するためのテーブル計算方法400を概略的な形で示すフローチャートを示し、主群は有限アーベル群
Figure 2018538620
であり、テーブル計算方法は、
− 主群(M)の入力された正規化元((γ,X))を繰り返し選択するステップ(410)と、
− 入力された正規化元(γX)と第2の部分集合(M)の前記元(m)との和(λYh=γX+m)を決定するステップと、
− 第1の作用群(N)の元(λ)と、第1の部分集合(Δ)の元(Y)とを、第1の作用群(N)の元(λ)と、第1の部分集合(Δ)の元(Y)との積が前記和となるように決定するステップ(420)と、
− 入力された環の元を第1の作用群(N)の元(λ)と、第1の部分集合(Δ)の元(Y)とに写像するルックアップテーブルにエントリを追加するステップ(430)と
を有する。
当業者には明らかであるように、本方法を実行する多数の異なる手法が可能である。たとえば、ステップの順序は変更され得、又はいくつかのステップは並行して実行され得る。さらに、ステップの間に、他の方法のステップが挿入され得る。挿入されたステップは、本明細書に記載されるような本方法の改良を表現し、又は本方法と無関係である。また、所与のステップは、次のステップが開始される前に完全に終了していない場合がある。
本発明による方法は、プロセッサシステムに方法300又は400を実施させるための命令を含むソフトウェアを使用して実行される。ソフトウェアは、システムの特定のサブエンティティによって取られるステップのみを含む。ソフトウェアは、ハードディスク、フロッピー、メモリ、光ディスクなどの適切な記憶媒体に記憶される。ソフトウェアは信号としてワイヤに沿って、若しくは無線で、又はインターネットなどのデータネットワークを使用して送信される。ソフトウェアは、ダウンロード及び/又はサーバ上でのリモート使用が可能にされる。本発明による方法は、方法を実施するようにフィールドプログラマブルゲートアレイ(FPGA)などのプログラマブルロジックを構成するようになされるビットストリームを使用して実行される。
本発明が、本発明を実施するようになされたコンピュータプログラム、特に、キャリア上又は内のコンピュータプログラムにも拡張されることは理解されよう。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、及びオブジェクトコード、たとえば部分的にコンパイルされた形式、又は本発明による方法の実装での使用に適した任意の他の形式のものである。コンピュータプログラム製品に関する一実施形態は、記載された方法のうちの少なくとも1つの処理ステップのそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令はサブルーチンに細分され、及び/又は静的若しくは動的にリンクされる1つ又は複数のファイルに記憶される。コンピュータプログラム製品に関する他の実施形態は、記載されたシステム及び/又は製品のうちの少なくとも1つの手段のそれぞれに対応するコンピュータ実行可能命令を含む。
図6aはコンピュータプログラム1020を含む書き込み可能部分1010を有するコンピュータ可読媒体1000を示し、コンピュータプログラム1020は、プロセッサシステムに一実施形態による主群の2つの元を加算するための計算方法、又は電子計算デバイスで使用されるルックアップテーブルを計算するための方法を実施させるための命令を含む。コンピュータプログラム1020は、コンピュータ可読媒体1000上に物理的なマークとして、又はコンピュータ可読媒体1000の磁化によって具現化される。しかしながら、任意の他の適切な実施形態も考えられる。さらに、コンピュータ可読媒体1000はここでは光ディスクとして示されているが、コンピュータ可読媒体1000は、ハードディスク、固体メモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体であり、記録不可能又は記録可能であることは理解されよう。コンピュータプログラム1020は、プロセッサシステムに、主群の2つの元を加算するための計算方法、又は電子計算デバイスで使用されるルックアップテーブルを計算するための方法である前記方法を実施させるための命令を含む。
図6bは一実施形態によるプロセッサシステム1140の概略図を示す。プロセッサシステムは1つ又は複数の集積回路1110を備える。1つ又は複数の集積回路1110のアーキテクチャは図6bに概略的に示されている。回路1110は、一実施形態による方法を実行し、及び/又はそのモジュール若しくはユニットを実装するためにコンピュータプログラムコンポーネントを動作させるための、CPUなどの処理ユニット1120を備える。回路1110は、プログラミングコード、データなどを記憶するためのメモリ1122を備える。メモリ1122の一部は読み出し専用である。回路1110は通信素子1126、たとえば、アンテナ、コネクタ又はその両方などを備える。回路1110は、本方法で定義された処理の一部又は全部を実施するための専用集積回路1124を備える。プロセッサ1120、メモリ1122、専用IC1124及び通信素子1126は相互接続1130、たとえばバスを介して互いに接続される。プロセッサシステム1110は、アンテナ及び/又はコネクタを使用して、それぞれ接触及び/又は非接触通信用に構成される。
上記の実施形態は本発明を限定するものではなく例示するものであり、当業者は多くの代替的実施形態を設計できることに留意されたい。
特許請求の範囲において、括弧内に置かれた任意の参照符号は、請求項を限定するものとして解釈されるべきではない。「備える」という動詞及びその活用形の使用は、請求項に記述された以外の要素又はステップの存在を排除するものではない。要素に先行する冠詞「a」又は「an」は、複数のそのような要素の存在を排除するものではない。本発明は、いくつかの個別の素子を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実装される。いくつかの手段を列挙したデバイスの請求項において、これらの手段のいくつかは、同一のハードウェア項目によって具現化される。特定の対策が相異なる従属請求項に列挙されているという単なる事実は、これらの対策の組み合わせが有利に使用できないことを示すものではない。
特許請求の範囲において、括弧内の参照は、実施形態の図面における参照符号又は実施形態の式を参照して、請求項の明瞭性を高めている。これらの参照は請求項を限定するものとして解釈されるべきではない。
図1a〜図1dの参照番号のリスト:
100 計算デバイス
110 加算テーブル記憶装置
122 変換ユニット
124 関数ユニット
130 加算ユニット
131 第1の加算入力
132 第2の加算入力
133 部分和
134 部分加算ユニット
140 乗算ユニット
141 第1の乗算入力
142 第2の乗算入力
144 中間乗算ユニット
145 第1の加算入力
146 1つ又は複数の第2の加算入力
150 オペランド記憶装置
152 定数記憶装置
160 復号ユニット
170 符号化ユニット
171 直接入力
172 符号化テーブルを記憶するように構成される記憶装置

Claims (19)

  1. 主群((M,+))の2つの元を加算する電子計算デバイスであって、前記主群が有限アーベル群(
    Figure 2018538620
    )であり、
    前記主群に対して定義されるのは、
    第1(N)及び第2(H)の作用群であって、前記第1(N)及び第2(H)の作用群が前記主群(M)に作用し、前記第2の作用群(H)が生成元(h)によって生成される巡回群である(H=(h))、第1(N)及び第2(H)の作用群と、
    前記主群(M)の第1の部分集合(Δ)であって、前記主群(M)の任意の元(m)が、前記第1の作用群(N)の元(n)と前記第1の部分集合(Δ)の元(X)との積(m=nX)として表され得る第1の部分集合(Δ)において、前記第1の作用群(N)の前記元(n)と前記第1の部分集合(Δ)の前記元(X)とが、前記主群(M)の前記元(m)の正規化表現と呼ばれる、第1の部分集合(Δ)と、
    前記主群(M)の任意の元(m)が複数の被加数の和(
    Figure 2018538620
    )として表され得る前記主群(M)の第2の部分集合(M={m,...,mr−1})であって、各被加数が前記第1の作用群(N)の元(γ)と、前記第2の部分集合(M)の元(
    Figure 2018538620
    )と、前記生成元の冪乗(h)との積であり、
    前記複数の被加数における前記第1の作用群の複数の元が、前記主群(M)の前記元(m)の一般化表現と呼ばれる、第2の部分集合(M={m,...,mr−1})と
    であり、前記電子計算デバイスが、
    前記第2の部分集合(M)の各元(m)についてルックアップテーブル(P)を記憶する加算テーブル記憶装置であって、前記ルックアップテーブルが、前記主群(M)の正規化元((γ,X))を入力として取り、前記入力を前記第1の作用群(N)の元(λ)と前記第1の部分集合(Δ)の元(Y)とに写像し、前記第1の作用群(N)の前記元(λ)と前記第1の部分集合(Δ)の前記元(Y)との積が、前記正規化元(γX)と前記第2の部分集合(M)の前記元(m)との和(λYh=γX+m)である、加算テーブル記憶装置と、
    第1の加算入力(α)及び第2の加算入力(
    Figure 2018538620
    )を受信する加算ユニットであって、前記第1及び第2の加算入力が前記主群(M)の元であり、前記第1の加算入力が正規化表現で受信され、前記第2の加算入力が一般化表現で受信され、前記第1の加算入力及び前記第2の加算入力の前記主群(M)における和を計算し、
    前記第2の加算入力の前記被加数を前記第1の加算入力に順次加算することによって部分和を計算し、
    前記第2の加算入力の被加数(
    Figure 2018538620
    )を前記部分和に加算することが、前記被加数における前記第2の部分集合(M)の前記元(
    Figure 2018538620
    )についての、前記加算テーブル記憶装置に記憶された前記ルックアップテーブル(
    Figure 2018538620
    )を適用することを含む、
    加算ユニットと
    を備える、電子計算デバイス。
  2. 正規化表現の前記主群(M)の元(m)が、前記電子計算デバイスにおいて2つの数のペアとして表され、前記2つの数の第1の数が前記第1の作用群(N)の前記元(n)を示し、前記2つの数の第2の数が前記第1の部分集合(Δ)の前記元(X)を示し、
    一般化表現の前記主群(M)の元(m)が、前記電子計算デバイスにおいて少なくとも第1の数の系列として表され、前記第1の数の系列が前記被加数における前記第1の作用群(N)の前記元(γ)を示す、
    請求項1に記載の電子計算デバイス。
  3. 前記加算ユニットによって計算される前記和が正規化形式で表される、
    請求項1又は2に記載の電子計算デバイス。
  4. 前記電子計算デバイスの外部のコンピュータから1つ又は複数の加算入力を受信するネットワークインターフェースであって、前記1つ又は複数の加算入力が一般化表現である、ネットワークインターフェースと、
    1つ又は複数の定数加算入力を正規化表現で記憶する定数記憶装置と
    を備え、
    前記電子計算デバイスが、前記ネットワークインターフェースを介して受信される選択された加算入力と、前記定数記憶装置からの選択された定数加算入力とを前記加算ユニットを使用して加算する、
    請求項1乃至3のいずれか一項に記載の電子計算デバイス。
  5. 変換入力を受信する変換ユニット
    を備え、
    前記変換入力が一般化形式であり、前記変換ユニットが、正規化形式の前記主群の元を加算することによって、前記変換入力を正規化形式に変換し、及び/又は、
    前記変換入力が正規化入力であり、前記変換ユニットが、前記第1の部分集合の元を一般化形式に写像する変換テーブルを記憶する、
    請求項1乃至4のいずれか一項に記載の電子計算デバイス。
  6. 線形関数(f)を一般化形式の関数入力に適用する関数ユニットと、
    前記第1の作用群(N)の元(γ)と、前記第2の部分集合(M)の元(
    Figure 2018538620
    )と、前記生成元の冪乗(h)との積(
    Figure 2018538620
    )を入力として取り、
    前記積を、前記線形関数を前記積に適用した結果に写像するテーブルを記憶する線形関数テーブル記憶装置と
    を備え、
    前記関数ユニットが、前記線形関数テーブル記憶装置の前記テーブルを前記関数入力の前記被加数に適用する、
    請求項1乃至5のいずれか一項に記載の電子計算デバイス。
  7. 前記第2の作用群(H)が3つ以上の元を有するか、
    前記第2の作用群(H)が2つの元を有するか、
    前記第2の部分集合(M)が2つ以上の元を有するか、
    前記第2の部分集合(M)が単位元でない1つの元を有するか、
    前記主群(M)が、たとえばl≧4のアーベル群(
    Figure 2018538620
    )であるか、又は、
    前記第1の作用群(N)が3つ以上の元を有する巡回群である、
    請求項1乃至6のいずれか一項に記載の電子計算デバイス。
  8. 前記生成元(h)が次数kを有し、一般化表現の前記生成元(h)の指数(t)が、高々前記次数(k)の特定の倍数マイナス1であり(t≦λk−1)、前記特定の倍数が前記主群の全ての元について同一である、
    請求項1乃至7のいずれか一項に記載の電子計算デバイス。
  9. 前記主群が標数2を有し、前記第2の作用群が次数2を有し、一般化表現の前記生成元(h)の前記冪乗(h)が、高々前記次数の2倍マイナス1であるか(t≦2k−1)、又は、
    前記主群が2より大きい標数を有するか、若しくは前記第2の作用群の次数が2より大きく、一般化表現の前記生成元(h)の前記冪乗(h)が高々前記次数マイナス1である(t≦k−1)、
    請求項8に記載の電子計算デバイス。
  10. 前記加算ユニットが、
    前記部分和を最初は前記第1の加算入力(α,X)に設定し、
    前記第1の加算入力の前記被加数にわたってループし、各ループにおいて、前記第1の加算入力の前記被加数(
    Figure 2018538620
    )を加算することによって前記部分和を更新する、
    請求項1乃至9のいずれか一項に記載の電子計算デバイス。
  11. 前記第1の加算入力が、α∈N及びX∈Δでの前記主群の元αであり、前記第2の加算入力が前記主群の元
    Figure 2018538620
    であり、kが前記生成元の次数であり、γ∈N及びm∈Mであり、hが前記生成元であり、
    前記加算ユニットが、
    前記部分和を最初は前記第1の加算入力α,Xに設定し、
    0からλk−1までの前記生成元(h)の各指数(t)について、
    Figure 2018538620
    についての前記ルックアップテーブル(
    Figure 2018538620
    )をγ −1γt−1αに適用して、前記指数(
    Figure 2018538620
    )に対応する前記被加数を加算することによって、現在の部分和(α)から次の部分和(αt+1t+1)を取得し、γ−1が前記主群(M)の単位元であり、αが前記現在の部分和であり、
    前記部分和がγt−1αに等しい、
    請求項10に記載の電子計算デバイス。
  12. 前記第1の部分集合(Δ)が、前記第1の作用群(N)の元と、前記第2の部分集合の元と、前記第2の作用群(H)の元との積を総和して形成される元に、前記生成元の、前記生成元の次数マイナス1乘を加えたもの(
    Figure 2018538620
    )のみを含み、前記第2の作用群の前記元が、高々前記生成元の次数マイナス2乗の前記生成元(h)の冪乗である、
    請求項1乃至11のいずれか一項に記載の電子計算デバイス。
  13. 前記主群((M,+))が、前記主群を環((R,+,・))にするさらなる演算(・)を有し、
    第1の乗算入力及び第2の乗算入力を受信する乗算ユニットであって、前記第1及び第2の乗算入力が前記主環(R)の元であり、前記第1の乗算入力が正規化表現((β+・・・βk−2k−2+hk−1)α=Xα)で受信され、前記第2の乗算入力が一般化表現(γ+γ+γ+・・・)で受信され、前記第1の乗算入力及び前記第2の乗算入力の前記環(R)における積を計算し、
    前記第1の乗算入力と、前記第2の乗算入力の第1の被加数とから第1の加算入力を計算し、前記第1の加算入力が正規化形式(X(αγ))であり、
    前記第1の乗算入力と、前記第1の被加数以外の前記第2の乗算入力の複数の被加数とから1つ又は複数の第2の加算入力を計算し、前記1つ又は複数の第2の加算入力が一般化形式(X(αγ)h=(Xh)n’)であり、
    前記第1の加算入力と前記1つ又は複数の第2の加算入力とを前記加算ユニットを介して加算する、
    乗算ユニット
    を備える、
    請求項12に記載の電子計算デバイス。
  14. (#N・#M#H≧3/2(#N・#Δ)であり、
    より詳細には、
    (#N・#M#H≧5/2(#N・#Δ)であり、
    #Nが前記第1の作用群(N)の大きさであり、
    #Hが前記第2の作用群(H)の大きさであり、
    #Δが前記第1の部分集合(Δ)の大きさであり、
    #Mが前記第2の部分集合(M)の大きさであり、
    #Mが前記主群(M)の大きさである、
    請求項1乃至13のいずれか一項に記載の電子計算デバイス。
  15. 主群((M,+))の2つの元を加算する電子計算デバイスで使用されるルックアップテーブルを計算するためのテーブル計算デバイスであって、前記主群が有限アーベル群
    Figure 2018538620
    であり、
    前記第2の部分集合(M)の元(m)についての前記ルックアップテーブルを構築するテーブル作成ユニットであって、
    前記主群(M)の入力された正規化元((γ,X))を繰り返し選択し、
    前記入力された正規化元(γX)と前記第2の部分集合(M)の前記元(m)との和(λYh=γX+m)を決定し、
    前記第1の作用群(N)の元(λ)と、前記第1の部分集合(Δ)の元(Y)とを、前記第1の作用群(N)の前記元(λ)と、前記第1の部分集合(Δ)の前記元(Y)との積が前記和となるように決定し、
    入力された環の元を前記第1の作用群(N)の前記元(λ)と、前記第1の部分集合(Δ)の前記元(Y)とに写像する前記ルックアップテーブルにエントリを追加する
    テーブル作成ユニット
    を備える、テーブル計算デバイス。
  16. 主群((M,+))の2つの元を加算するための電子計算方法であって、前記主群が有限アーベル群
    Figure 2018538620
    であり、
    前記主群に対して定義されるのは、
    第1(N)及び第2(H)の作用群であって、前記第1(N)及び第2(H)の作用群が前記主群(M)に作用し、前記第2の作用群(H)が生成元(h)によって生成される巡回群である(H=(h))、第1(N)及び第2(H)の作用群と、
    前記主群(M)の第1の部分集合(Δ)であって、前記主群(M)の任意の元(m)が、前記第1の作用群(N)の元(n)と前記第1の部分集合(Δ)の元(X)との積(m=nX)として表され得る第1の部分集合(Δ)において、前記第1の作用群(N)の前記元(n)と前記第1の部分集合(Δ)の前記元(X)とが、前記主群(M)の前記元(m)の正規化表現と呼ばれる、第1の部分集合(Δ)と、
    前記主群(M)の任意の元(m)が複数の被加数の和として表され得る前記主群(M)の第2の部分集合(M={m,...,mr−1})であって、各被加数が前記第1の作用群(N)の元(γ)と、前記第2の部分集合(M)の元(
    Figure 2018538620
    )と、前記生成元の冪乗(h)との積(
    Figure 2018538620
    )であり、
    前記複数の被加数における前記第1の作用群の複数の元が、前記主群(M)の前記元(m)の一般化表現と呼ばれる、第2の部分集合(M={m,...,mr−1})と
    であり、前記電子計算方法が、
    前記第2の部分集合(M)の各元(m)についてルックアップテーブル(P)を記憶するステップであって、前記ルックアップテーブルが、前記主群(M)の正規化元((γ,X))を入力として取り、前記入力を前記第1の作用群(N)の元(λ)と前記第1の部分集合(Δ)の元(Y)とに写像し、前記第1の作用群(N)の前記元(λ)と前記第1の部分集合(Δ)の前記元(Y)との積が、前記正規化元(γX)と前記第2の部分集合(M)の前記元(m)との和(λYh=γX+m)である、記憶するステップと、
    第1の加算入力(α)及び第2の加算入力(
    Figure 2018538620
    )を受信し、前記第1及び第2の加算入力が前記主群(M)の元であり、前記第1の加算入力が正規化表現で受信され、前記第2の加算入力が一般化表現で受信され、前記第1の加算入力及び前記第2の加算入力の前記主群(M)における和を計算するステップであって、
    前記第2の加算入力の前記被加数を前記第1の加算入力に順次加算することによって部分和を計算するステップ
    を有し、
    前記第2の加算入力の被加数(
    Figure 2018538620
    )を前記部分和に加算するステップが、前記被加数における前記第2の部分集合(M)の前記元(
    Figure 2018538620
    )についての、記憶された前記ルックアップテーブル(
    Figure 2018538620
    )を適用するステップを有する、
    計算するステップと
    を有する、電子計算方法。
  17. 主群((M,+))の2つの元を加算する電子計算デバイスで使用されるルックアップテーブルを計算するためのテーブル計算方法であって、前記主群が有限アーベル群(
    Figure 2018538620
    )であり、
    前記主群(M)の入力された正規化元((γ,X))を繰り返し選択するステップと、
    前記入力された正規化元(γX)と前記第2の部分集合(M)の前記元(m)との和(λYh=γX+m)を決定するステップと、
    前記第1の作用群(N)の元(λ)と、前記第1の部分集合(Δ)の元(Y)とを、前記第1の作用群(N)の前記元(λ)と、前記第1の部分集合(Δ)の前記元(Y)との積が前記和となるように決定するステップと、
    入力された環の元を前記第1の作用群(N)の前記元(λ)と、前記第1の部分集合(Δ)の前記元(Y)とに写像する前記ルックアップテーブルにエントリを追加するステップと
    を有する、テーブル計算方法。
  18. コンピュータ上で実行された場合に、請求項16又は17に記載の方法を実施するコンピュータプログラム命令を含む、コンピュータプログラム。
  19. 請求項18に記載のコンピュータプログラムを含む、コンピュータ可読媒体。
JP2018529239A 2015-12-07 2016-12-07 計算デバイス及び方法 Pending JP2018538620A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
NL2015911 2015-12-07
NL2015911A NL2015911B1 (en) 2015-12-07 2015-12-07 Calculating device and method.
PCT/EP2016/079971 WO2017097791A1 (en) 2015-12-07 2016-12-07 Calculating device and method

Publications (2)

Publication Number Publication Date
JP2018538620A true JP2018538620A (ja) 2018-12-27
JP2018538620A5 JP2018538620A5 (ja) 2020-01-23

Family

ID=56027122

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018529239A Pending JP2018538620A (ja) 2015-12-07 2016-12-07 計算デバイス及び方法

Country Status (7)

Country Link
US (1) US20180373672A1 (ja)
EP (1) EP3387552A1 (ja)
JP (1) JP2018538620A (ja)
CN (1) CN108475255A (ja)
NL (1) NL2015911B1 (ja)
RU (1) RU2018124780A (ja)
WO (1) WO2017097791A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11764940B2 (en) 2019-01-10 2023-09-19 Duality Technologies, Inc. Secure search of secret data in a semi-trusted environment using homomorphic encryption

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007286380A (ja) * 2006-04-18 2007-11-01 Nippon Telegr & Teleph Corp <Ntt> 有限可換群演算方法、装置およびそのプログラム
JP2012520589A (ja) * 2009-03-10 2012-09-06 イルデト・コーポレート・ビー・ヴイ 入力に依存する符号化を用いたホワイトボックス暗号システム
CN105099666A (zh) * 2015-06-26 2015-11-25 中国科学院信息工程研究所 混淆轮边界的白盒密码系统和方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010146140A1 (en) * 2009-06-19 2010-12-23 Irdeto B.V. White-box cryptographic system with configurable key using block selection
US9455833B2 (en) * 2014-04-28 2016-09-27 Nxp B.V. Behavioral fingerprint in a white-box implementation
US20190305927A1 (en) * 2016-03-18 2019-10-03 University Of Florida Research Foundation Incorporated Bitstream security based on node locking

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007286380A (ja) * 2006-04-18 2007-11-01 Nippon Telegr & Teleph Corp <Ntt> 有限可換群演算方法、装置およびそのプログラム
JP2012520589A (ja) * 2009-03-10 2012-09-06 イルデト・コーポレート・ビー・ヴイ 入力に依存する符号化を用いたホワイトボックス暗号システム
CN105099666A (zh) * 2015-06-26 2015-11-25 中国科学院信息工程研究所 混淆轮边界的白盒密码系统和方法

Also Published As

Publication number Publication date
US20180373672A1 (en) 2018-12-27
RU2018124780A3 (ja) 2020-06-04
RU2018124780A (ru) 2020-01-14
CN108475255A (zh) 2018-08-31
NL2015911B1 (en) 2017-06-28
EP3387552A1 (en) 2018-10-17
WO2017097791A1 (en) 2017-06-15

Similar Documents

Publication Publication Date Title
KR102136911B1 (ko) 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법
US9520995B2 (en) Efficient prime-number check
JP2019523492A (ja) 難読化算術を実行するためのデバイス及び方法
RU2701716C2 (ru) Электронное вычислительное устройство для выполнения арифметики с обфускацией
JP2018503113A (ja) 難読化された演算を実行するための電子計算装置
JP2020515093A (ja) 符号化加算のための計算デバイス
JP7558432B2 (ja) 完全準同型評価のための計算ネットワーク変換
CN107896142B (zh) 一种执行模幂运算的方法及装置、计算机可读存储介质
JP2024517800A (ja) 完全準同型暗号化で使用するためのブラインド回転
CN113273131A (zh) 使用共享的份额的计算设备
CN112398488B (zh) 向量压缩的方法和装置
CN106371803B (zh) 用于蒙哥马利域的计算方法和计算装置
JP2018538620A (ja) 計算デバイス及び方法
WO2023232951A1 (en) Method and circuit for securely mapping a masked variable
JP7191097B2 (ja) 計算デバイス及び方法
WO2023141934A1 (en) Efficient masking of secure data in ladder-type cryptographic computations
JP6890589B2 (ja) 計算デバイス及び方法
CN107005403A (zh) 电子计算设备
CN109952558B (zh) 用于将余数系统表示转换为基数表示的电子计算装置
CN108369613A (zh) 计算设备和方法
CN116127534A (zh) 标量到陶氏表示法的约简和转换
CN117196053A (zh) 多项式模平方运算器、运算方法及相关装置
CN116301710A (zh) 数据处理方法及装置
KR20200034936A (ko) 인증 코드를 생성하는 방법 및 관련 암호화 처리 디바이스
CN116561774A (zh) 数据处理方法、装置、设备、存储介质及程序产品

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20180606

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191205

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210308

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20211029