JP2020515093A - 符号化加算のための計算デバイス - Google Patents

符号化加算のための計算デバイス Download PDF

Info

Publication number
JP2020515093A
JP2020515093A JP2019532987A JP2019532987A JP2020515093A JP 2020515093 A JP2020515093 A JP 2020515093A JP 2019532987 A JP2019532987 A JP 2019532987A JP 2019532987 A JP2019532987 A JP 2019532987A JP 2020515093 A JP2020515093 A JP 2020515093A
Authority
JP
Japan
Prior art keywords
group
encoded
elements
type
abelian
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
JP2019532987A
Other languages
English (en)
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 JP2020515093A publication Critical patent/JP2020515093A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/509Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
    • 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
    • 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/724Finite field arithmetic
    • 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
    • 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)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Software Systems (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

アーベル群Nにおける符号化加算用に構成された電子計算デバイス100が提供される。この計算デバイスは、アーベル群Nの符号化された要素を記憶するように設定された記憶装置140と、複数の符号化された加数を加算するように構成された加算ユニットであって、複数の符号化された加数のうち少なくとも符号化された部分を含む符号化された要素を形成するように設定されている加算ユニットと、符号化された要素のシーケンスにおいて、2つの符号化された要素をさらなる符号化された要素で置換することにより、符号化された要素を減少させるように構成された減少ユニット160とを備える。

Description

本発明は、電子計算デバイス、電子計算方法、及びコンピュータ可読媒体に関する。
コンピュータでは様々なタスクのために計算が実施される。コンピュータが有限であるので、これらの計算は多くの場合有限群において行われる。これらの群は通常はアーベル群である。群の一例には、
Figure 2020515093
と表記される、素数を法とする計算がある。コンピュータに関して特に重要な群は、2nの要素を伴う群
Figure 2020515093
である。群は様々なやり方で構築され得、例えば、より大きい群はより小さい群を掛け合わせることによって構築され得る。
いくつかの用途では、プログラムの実行に関する情報を攻撃者から隠すという要求がある。いわゆるホワイトボックス攻撃モデルでは、攻撃者は動作中のコンピュータプログラムの詳細な情報を入手することができると想定される。このモデルであっても、できるだけ攻撃者から隠したいという要求がある。特に、攻撃者から情報を隠すために暗号手法を使用する銀行業務アプリケーション、コンテンツ保護などの機密のアプリケーションは、ホワイトボックスモデルでは脆弱である。例えば、情報を暗号化するのに使用された秘密キーを攻撃者が読み取ると、攻撃者は上記情報を解読することができ、したがって財務報告書、プレーンコンテンツなどを取得してしまう。
現在のホワイトボックス技術を使用して一般的な計算の流れを保護するのは困難である。例えば(参照によって本明細書に含まれる)Chowらの「White−Box Cryptography and an AES Implementation」という論文は、ホワイトボックスモデルにおいて特定のアルゴリズム(AES)を保護するやり方を示している。この技術は、汎用コンピュータプログラムを保護するために直接適用されるわけではなく、すなわち、適用するには人によるプログラムの広汎な解析を必要とする。例えば、Chowらの論文で説明されたタイプの表又は表ネットワークに対する加算又は乗算の演算といった直接的な変換は、攻撃者が、単にどの表ネットワークがアクセスされているかを観察することによって加算又は乗算が実施されたときを推定することを許容してしまう。
残念ながら、攻撃者には、ホワイトボックスの実装形態を攻撃するための多様な選択肢がある。攻撃者は、例えばプログラムにおいて使用される中間値を狙うサイドチャネルタイプ攻撃といったパッシブな攻撃に加えて、アクティブな攻撃を使用することもできる。例えば、攻撃者は、実行中に使用される中間値を作表することができ、実行中に、中間値を、プログラムの異なる位置で観測された中間値又は異なる実行中に観測された中間値と交換する。このように、攻撃者は、中間値に対して使用される符号化に関する情報を学習することができる。
ホワイトボックス耐性のある実装形態においてデータを隠すことを改善するという要求がある。
アーベル群Nにおける符号化加算用に構成された電子計算デバイス(100)が提供される。この計算デバイスは、アーベル群Nの符号化された要素を記憶するように設定された記憶装置(140)と、複数の符号化された加数を加算するように構成された加算ユニット(150)であって、複数の符号化された加数の少なくとも符号化された部分を含む符号化された要素を形成するように設定された加算ユニットと、符号化された要素のシーケンスにおいて、2つの符号化された要素をさらなる符号化された要素で置換することにより、符号化された要素を減少させるように構成された減少ユニット(160)とを備える。
要素が、計算デバイスにおいて明示的に表現される必要のない群A又は群Mの要素に基づいて符号化されるので、群Nの要素が符号化される。しかしながら、これらの要素が符号化されたとしても、この場合は加算である計算は、符号化された形式のまま依然として可能である。これは利点である。その上、計算デバイスには、可変値を互換性のないタイプと交換すると未定義の結果をもたらし、攻撃者が得られる情報がより少なくなるというさらなる利点がある。
本明細書で説明される計算デバイス及び方法は、アーベル群におけるホワイトボックス符号化加算に適するものである。ホワイトボックス符号化加算では、攻撃者が加算に関する詳細を取得するのを困難にする対策が採用されている。取得されるホワイトボックス保護をさらに改善するために、これらのデバイス及び方法は、例えばコード難読化といった既知の難読化技術と組み合わされる。ホワイトボックス符号化加算は、暗号アプリケーションを保護するのに特に適する。例えば、暗号アプリケーションでは、キーはデバイスに備わっていて、例えばキーの不正使用を防止するためにデバイスの攻撃者にはアクセスできないものにするべきである。ホワイトボックス符号化は、非暗号の状況においても適用される。例えば、本明細書で説明されるものなどのホワイトボックス符号化が採用されていると、例えば画像改善アルゴリズムといった著作権付きアルゴリズムをリバースエンジニアリングするのがより困難になる。
本発明による方法は、コンピュータで実施される方法として、コンピュータ上で、専用ハードウェアにおいて、又は両方の組合せにおいて実施される。本発明による方法に関する実行可能コードは、コンピュータプログラム製品に記憶される。コンピュータプログラム製品の例は、記憶デバイス、光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどを含む。好ましくは、コンピュータプログラム製品は、コンピュータ上で実行されたとき、本発明による方法を実施するための、コンピュータ可読媒体に記憶された非一時的プログラムコードを含む。
好ましい実施形態では、コンピュータプログラムが含むコンピュータプログラムコードは、コンピュータプログラムがコンピュータ上で実行されたとき本発明による方法のステップをすべて実施するように適合されている。好ましくは、コンピュータプログラムはコンピュータ可読媒体上に具現される。
本発明の別の態様は、コンピュータプログラムをダウンロード可能にする方法を提供する。この態様は、コンピュータプログラムが、例えばApple社のApp Store、Google社のPlay Store、又はMicrosoft社のWindows Storeにアップロードされていて、そのようなStoreからダウンロード可能なとき使用される。
「Electronic calculating device for performing obfuscated arithmetic」という名称の、国際特許出願WO2016/050884 A1が参照される。
本発明のさらなる詳細、態様、及び実施形態を、図面を参照しながら、例としてのみ説明する。図における要素は簡単さ及び明瞭さのために示されており、必ずしも原寸に比例しない。図では、既に説明された要素に対応する要素は同一の参照数字を有する。
電子計算デバイスの実施形態の一例を示す概略図である。 符号化加算の一例を示す概略図である。 減少の一例を示す概略図である。 AES用に構成された電子計算デバイスの実施形態の一例を示す概略図である。 電子計算方法の実施形態の一例を示す概略図である。 一実施形態による、コンピュータプログラムを含む書込み可能部分を有するコンピュータ可読媒体を示す概略図である。 一実施形態によるプロセッサシステムの表現を示す概略図である。 図の表現を示す概略図である。
この発明は多くの異なる形式における実施形態の余地があるが、1つ又は複数の特定の実施形態が図面に示されて本明細書で詳細に説明され、本開示は、本発明の原理の例示と見なされるべきであり、本発明を、示されて説明された特定の実施形態に限定するように意図されたものではないという理解を伴う。
以下では、理解のために、実施形態の要素が動作において説明される。しかしながら、それぞれの要素が、実施すると説明されている機能を実施するように構成されていることは明らかであろう。
さらに、本発明は、実施形態に限定されることなく、本明細書で説明されるあらゆる斬新な特徴若しくは特徴の組合せにあり、又は互いに異なる従属請求項において詳述される。
図1は電子計算デバイス100の実施形態の一例を概略的に示すものである。電子計算デバイス100はアーベル群Nにおける符号化加算用に構成されている。例えば、アーベル群Nは
Figure 2020515093
である。例えば、アーベル群Nは
Figure 2020515093
である。詳細には、アーベル群Nは
Figure 2020515093
又は
Figure 2020515093
である。後の2つの例は、既存のコンピュータプログラム又はプロトコルなどに生じる普通のデータサイズに対応するものであり、したがって一実施形態による符号化方法に変換するのがより容易になる。
以下では、実行中に、符号化された値が攻撃者によって交換されると、少なくともいくつかの事例ではプログラムが機能不全になって、例えば無意味な結果をもたらすように、アーベル群の要素を符号化するやり方を示す。結果として、攻撃者が使用されている符号化について、アクティブ攻撃、詳細には計算デバイスの実行中に中間値を交換することに基づく攻撃によって学習する範囲は、結果を出す可能性が低下する。
いくつかの実施形態では、以下の数学的オブジェクトのうち1つ又は複数を使用する。
アーベル群Mと、MからNへの準同形の全射投影π:M→Nとが定義される。群Mはアーベルである。このオブジェクトは任意選択であり、M=Nを採用する。この場合、投影πは同一性である。より小さい群Nを表現するためにより大きい群Mを使用することにはいくつかの利点がある。例えば、Mは、Nの自己同形群よりも大きい自己同形群を有するように選択され得る。その結果、NよりもMに関して、より多くの符号化が直接利用可能である。その上、Mは計算を簡単にするように選択され得、例えば、Mは、
Figure 2020515093
といった群の直積でよい。有限的に生成されたアーベル群の基本的な定理は、これが常に可能であることを保証する。例えば
Figure 2020515093
であり、84=3・4・7であるため、
Figure 2020515093
を選択する。一実施形態では、例えばこの場合は数字nであるMの次数は、少なくとも2、又は少なくとも3などである。
Mの自己同形群のサブ群Hが選択される。群Hは、2つの非自明なサブ群GとAの積と書かれる。すなわちH=GAである。サブ群は、A及びGにおける任意のa及びgに関してga=agとなる特性を有するように選択される。一実施形態では、簡単にH=Aut(M)が採用される。しかし、Hのサブ群をより小さくすることを可能にするには、可能な符号化の選択肢がより少なくなる。特に、例えば非線形演算及び同種のものといった表ルックアップとしていくつかの演算を実施する必要がある場合、これは利点である。
群N及びMを加法群と書き、群H、G、及びAを乗法群と書くことにする。しかしながら、当業者には群の書き方は重要ではないことが明らかである。乗法的に書かれた同一の群は、単に異なる語法で加法的に書かれたときも、同じ作用をする。どちらの場合も、この同一性をeと書くことにする。
群Mは(Nさえも)グランド(接地)リングの上のモジュールであり、群H、G及びAはグランドリングの上のマトリクスの群である。例えば、Mの要素は、群のグランドリングの(場合により、符号化された)要素を用いてベクトルとして書かれる。例えば
Figure 2020515093
であれば、Mの要素は次数nのベクトルとして表現される。この場合、Mの自己同形群はn×nのマトリクスのセットとして書かれる。例えば、正常に機能する群Aを選択するための簡単なやり方には、例えばそれぞれのマトリクスが対角又は反対角の等しい要素を有するすべての対角マトリクス及び/又は反対角マトリクスのセットを採用することがある。Gの要素は、線形方程式としてga=agの条件を明示することによって見いだされ得る。一実施形態では、Aは、例えば3次の循環群といった循環群である。一実施形態では、Aはベキ等である。後の2つの実施形態は、どちらも対角マトリクス及び/又は反対角マトリクスとして実施される。
基底Xは集合X及びマップ[ ]:X→Mとして定義される。マップ[ ]は部分関数であり、例えばある値Xにおいて未定義であるが、合成π[ ]:X→Nは全射である。以下の要件が基底として課される。集合XはHアクションを有し、したがって、Hにおける任意のh、h及びXにおけるxについて、(h)x=h(hx)、及びex=xとなる。マップはこのアクションを守り、その結果、関数が定義されていれば、任意のXにおけるx及びHにおけるhについて[xh]=[x]hとなる。
アーベル群Nに関して少なくとも1つの基底が定義される。実際には、難読化する有効な符号化は単一の基底を使用して行われる。しかしながら、複数の基底が同様に使用されてもよい。第2の基底はYとして表され、Yのマップ[ ]:Y→Mには同一の表記法[ ]が使用されることが状況から明らかであろう。
基底を構築するための実際的なやり方は、Hのコピー、又はHの多重コピーの互いに素の結合である。Hの多重コピーの互いに素の結合を表現するやり方の1つには対(i,h)とするものがあり、ここでiはHのコピーを表すインデックスであり、hはHの要素である。例えば、k個のコピーが使用される場合、X={(i,h):1≦i≦k,h∈H}を採用する。必要なHアクションは普通の群アクションである。例えば、XがHの互いに素のk個のコピーであり、hがHの要素であり、x=(i,h)がXの要素であれば、アクションhxは(i,hh)となる。基底を構築するための別のやり方には、Gの多重コピーの1つ又は複数の互いに素の結合、或いはG及び/又はHのコピーの互いに素の結合を得るものがある。例えば、G∩A={e}、且つA={a,a,...,a}であれば、H=GA=Ga∪Ga∪...∪Gaであり、したがって上記の構成が使用され得る。部分関数を回避するために、マップ[ ]を、定義されていない場合は常に、ランダムな値に設定する。正確な実行では、マップが定義されていない値は使用されない。
少なくとも1つの減少関数Wが定義され、関数Wは第1の集合Xから第2の集合Yへの関数であり、タイプ((X,a,Y,a’,m))を有する。減少関数は「ボックス」関数とも名付けられる。減少関数のタイプは、第1の集合X、第2の集合Y、Aの要素a、Aの要素a’、及び群Mの要素mを含む。減少関数Wは、マップ[ ]が定義されている、Xにおけるx、Aにおけるa及びa’、Mにおけるmのすべてについて[xa]+m=[W(x)a’]という特性を有する。左側の[ ]はXからMへのマップであり、右側の[ ]はYからMへのマップであることに留意されたい。減少関数の定義では、第1の集合Xと第2の集合Yが同一であることが許される。複数の減少関数が定義される。集合X及びYに対してマップ[ ]が一旦固定されると、そこから減少関数Wが計算されることに留意されたい。例えば、Xにおけるxを所与として、Mの要素である([xa]+m)a’−1が計算される。Yのマップ向けにこの要素を反転するとW(x)向けの値が得られ、複数解があり得ることに留意されたい。減少関数Wは部分関数でもあり得るが、合成π([W( )])はN上の全射である。
次にアーベル群Nの要素の符号化を定義することができる。群要素は3つの主要なやり方又は形式で符号化され得る。第1の形式及び第2の形式には複数のタイプがある。第3の形式は第1の形式と第2の形式のハイブリッドである。
第1の形式では、アーベル群Nの要素は、計算デバイスにおいて集合Xの要素として表現される。第1の形式はフックとも呼ばれる。フックは、集合Xによって定義されるタイプと、群Aの要素bとを有する。フックのタイプはH(X,b)と表される。タイプH(X,b)の要素xはアーベル群Nの要素π([x]b)を表現する。本明細書では集合Xは基底である。単一の基底Xに対しても、Aの要素bを変化させることによって様々なタイプのフックが定義され得ることに留意されたい。複数の集合が可能であれば、タイプの数がさらに増加する。プログラムにおいて要素xが生じても、攻撃者は、値bを知らなので、要素xが表現するNにおける値を知り得ないことに留意されたい。値bがプログラムのどこかに生じる必要はない。
第2の形式では、アーベル群Nの要素は、計算デバイスにおいて群Gの要素として表現される。第2の形式はリンクとも呼ばれる。リンクは、Mの要素m及びAの要素b’によって定義されるタイプを有する。リンクのタイプはL(m,b’)と表される。例えばGの要素gであるタイプL(m,b’)の要素gは、Nの要素π(mgb’)を表現する。
第3の形式では、アーベル群Nの要素は、符号化された要素のシーケンスとして符号化され、第3の形式のシーケンスは、第1の形式又は第2の形式によって符号化された、少なくとも2つの符号化された要素を含む。第3の形式は、符号化された要素を含む形式和又は集合として実施される。符号化された要素は、第1の符号化及び第2の符号化によって符号化されている。符号化された要素のシーケンスは、シーケンスの要素によって表現されるアーベル群Nの要素の、アーベル群Nにおける和を表現する。第3の形式の符号化は例えば形式和と称される。一実施形態では、形式和は、2つの符号化された要素を非常に直接的に加算する。2つの加数を単純に結合するか又は連結して、第3の形式で符号化された加算を得ることができる。
例えば、第1のオペランドはフック及びゼロ以上のリンクの第1のシーケンスとして表現され、フックのタイプ及びリンクは異なるものであり得る。第1のオペランドによって表現されるNの要素は、第1のシーケンスにおけるフック及びリンクによって表現されるNの要素の和である。第2のオペランドは、少なくとも1つのリンクの第2のシーケンスとして表現される。第2のシーケンスにおけるリンクのタイプは異なり得る。第2のオペランドによって表現されるNの要素は、第2のシーケンスにおけるリンクによって表現されるNの要素の和である。第1のオペランドと第2のオペランドの和は、第1のシーケンスのフック及びゼロ以上のリンク並びに第2のシーケンスのリンクを含む第3のシーケンスによって表現される。
減少関数を使用すると、いくつかの対のフック及びリンクを減少することができる。しかしながら、フックとリンクとのすべての対が削減可能であるわけではなく、削減可能なすべての対は同一の減少関数により削減可能でなければならない。減少ステップは、第3のシーケンスにおけるタイプH(X,ab)のフックx及びタイプL(m,b)のリンクgをタイプH(X,a’b)のフックW(xg−1)gで置換することにより、第3のシーケンスに対して適用される。これはタイプ(X,a,Y,a’,m)の減少関数Wを必要とする。攻撃者がデータを交換すると、入れ替えられたデータ要素がもはや特定の減少関数の正確なタイプではないという見込みがかなりある。その結果、プログラムは未定義値を作成する。
第3の形式要素に対して減少演算を適用した結果、同一の値を表現する第1の形式又は第3の形式の新規の符号化された要素を得ることを、数学的に検証することができる。
このように、Nの要素は、第1又は第2の形式によってそれぞれ異なるタイプで符号化され、或いは第1の形式の符号化された要素及び/又は第2の形式の符号化された要素のうちの1つ又は複数のシーケンスとして符号化される。減少ユニットがタイプ(X,a,Y,a’,m)の減少関数Wで構成されている場合、集合Xによって定義される第1の形式のタイプ(H(X,ab))の符号化された要素と、群Mの要素m及び群Aの要素bによって定義される群Aの要素ab及び第2の形式のタイプ(L(m,b))の符号化された要素とは、互換性がある。この場合、フック及びリンクは、例えば新規のフックによって交換されることにより、新規のフックへと減少される。リンクは、Nの同一性を表現するフックを加算することによってフックに変換され得る。そのようなフックはあらかじめ計算することができる。2つのフックの加算は、より複雑である。加算は、例えば、フックをリンクに変換するルックアップ表を得ることにより、又はフックなしでリンクのみを含む第3の形式の符号化によって、行われ得る。
一実施形態では、様々な集合及び群の値、詳細には基底Xの要素又は群Gの要素は、従来の符号化された形式で表現される。それらは、例えば、群のより大きなセットにおけるインデックスとして符号化される。例えば、上記の減少を実行するために、例えば集合Xにおけるインデックスといったxの従来の符号化であるxの表現を採用するルックアップ表を使用して、値xg−1を計算してよい。この結果が、Wに関するルックアップ表に対して提示される。最後に、例えば第3のルックアップ表を使用してgとの乗算が実施されてよい。第1のルックアップ表と第2のルックアップ表が、又はすべての3つの表などが、単一の表へと組み合わされてよいことに留意されたい。例えば、単一の表が、x及びgの表現を入力として採用する。インデックス表現はランダム化されてよく、インデックスの値と表現されたX又はGの要素との間に論理関係がなくてもよいことに留意されたい。例えば、X及び/又はGに対してランダム置換が適用され、その後、要素は、置換された集合又は群におけるインデックスとして表現される。
図1に戻る。計算デバイス1は、アーベル群Nの符号化された要素を記憶するように設定された記憶装置130を備える。記憶装置は、3つの形式のうちいずれかによって符号化された要素を含み得る。
図1に示された記憶装置140は、フックとしても知られている第1の形式の3つの要素を含む。例えば、フック112とフック114は同一のタイプH(X,b)を有し得るが、フック116は、Yが異なる基底であり、且つ/又はcがAの異なる要素であるという状況で、例えばH(X,c)又はH(Y,c)といった異なるタイプを有し得る。
図2に示された記憶装置140は、リンクとしても知られている第2の形式の3つの要素を含む。例えば、リンク122及びリンク124はL(m,b’)のタイプでよいが、リンク126は例えばタイプL(m,b’’)及び/又はL(m’,b’’)などの異なるタイプを有し得る。
図2に示された記憶装置140は、第3の形式の3つの要素を含む。第3の形式の要素は、フック及び/又は複数のリンクをつなぎ合わせるものである。2つのフックに関する減少は、1つのフック及び1つのリンクに関する減少よりも複雑なので、第3の形式の符号化された要素は高々1つしかフックを含まないのが望ましい。例えば、符号化された要素131は、例えば互換性のないフックとリンクといったフックとリンクの和である可能性がある。例えば、符号化された要素132は、例えばタイプの異なるリンクとリンクの和である可能性がある。計算デバイスは、アプリケーションに依拠して、第3の形式が2つ以上のフックを含むことを可能にする。例えば、異なるソースからのデータを加算する必要がある場合、単一の第3の形式の符号化された要素が2つのフックを有するのを回避するのは困難であろう。他方では、符号化された計算が、例えばコンパイラ又は人間のコーダによる単一の制御下で完全に行われる場合、全体で2つのフックを有する第3の形式の符号化された要素を有するのを回避することが可能になる。例えば、一実施形態では、ほとんどの符号化された要素はリンクのみから成る符号化された第2又は第3の形式であり、フックを含むのは、これらの符号化されたリンクのみの要素が加算されるアキュムレータのみである。その場合、減少が行われるのはアキュムレータにおいてのみである。加算については、例えば連結といった加数の単なる結合であるので、要素のタイプ又は形式は重要ではないことに留意されたい。
計算デバイス100は、複数の符号化された加数を加算するように構成された加算ユニット150をさらに備える。例えば、加算ユニット150は、例えば加算するための入力といった2つの加数を加算するように構成され、且つ/又は3つ以上の要素を加算するように構成されている。興味深いことに、このシステムでは、加算は意外にも簡単である。2つの数字を加算するには、加数の符号化された要素を含む第3の形式の要素を作成すれば十分である。第3の形式の要素は、それが含む符号化された要素のアーベル群Nにおける和を表現すると定義されるので、加数の結合は、例えば加算される値である加数の和を自動的に表現する。群Nがアーベルであるため、第3の形式のコンポーネントが列記される順序は無関係であり、例えば第1又は第2の形式の要素である第3の形式の要素のコンポーネントが列記されるいかなる順序も、同一の加算結果を表現する。
例えば、加算ユニット150は、記憶装置140から第1の加数及び第2の加数を取り出して、加算結果を第3の形式で記憶装置140に書き込むように構成される。例えば、第3の形式は、リンクのリスト又は配列などとして実施される。例えば、前者の場合には、例えば加数に含まれる第1又は第2の形式の符号化された要素である加数のコンポーネントに対するポインタを生成すれば十分であるため、加算結果は加数のコンポーネントをコピーする必要はない。それにもかかわらず、ポインタが使用される場合には入力コンポーネントのコピーも作成される。
図2aは、符号化された要素に加算するやり方を概略的に図示するものである。図2aには、要素210及び要素220といった、第3の形式の2つの符号化された要素が示されている。それぞれの要素が、第1又は第2の形式の複数の符号化された要素を含む。例えば、第3の形式の要素210は符号化された要素212及び214を含む。例えば、要素214はフックであり、要素212はリンクである。例えば、第3の形式の要素220は、符号化された要素222、224、及び226を含み、例えばこれらのすべてがリンクである。このようにしてフックを互いに加算することが禁止されていないので、この加算機構は非常に柔軟である。しかしながら、2つのフックの減少は、高々1つのフックを含む第1の/第2の又は第3の形式の要素に対して、例えば2つのフックの組合せをマッピングする表、又はいくつかのタイプの少なくとも2つのフックといった、追加のインフラストラクチュアを必要とする。例えば、第1のフック及び第2のフックの加算表が含まれるのは、第1のフックが特定の第1のタイプであって第2のフックが特定の第2のタイプである場合のみである。そのような1つ又は少数の表により、要素を加算する範囲が既にかなり大きくなっているはずである。減少システムを用いると、例えばゼロを表現する既知の値及びタイプのリンクを加算することにより、フックのタイプを変更し得ることを特に考慮に入れる。
図2aは、加数210と加数220の加算、すなわち加算結果230をさらに示すものである。結果230は第3の形式の要素でもあり、加数210及び220における要素を含む。
図1に戻る。計算デバイス100は、第3の形式の符号化された要素を減少するように構成された減少ユニット160をさらに備える。減少なしでは加算結果がますます長くなってしまうが、減少は第3の形式の表現を短くする。減少ユニット160は、第3の形式の符号化された要素のシーケンスにおいて、フック及びリンクを新規のフックで置換し、元のフック及びリンクを置換するように構成されている。その結果、表現が、1つのコンポーネント分、より短くなる。その上、減少の結果として、第3の形式の要素におけるフックの数は変化しない。詳細には、すべての要素が最大数のフック(詳細には高々1つのフック)を含む場合、この不変量は減少演算によって尊重される。興味深いことに、任意のフックとリンクの組合せに対して同一の減少演算が必ずしも作用するわけではなく、むしろ、減少演算は、例えばフックのタイプ及びリンクのタイプといった入力のタイプに対して要件を適用する。これは、減少が互換性のないタイプを用いて試行されるので、一実施形態による動作中のコンピュータプログラムにおいて再構成されたデータは、恐らく無意味な結果もたらすことを意味する。
減少ユニット160には減少関数Wが備わっている。例えば、減少ユニット160は減少関数Wのユニットを含む。例えば、減少ユニット160は、減少関数を実施するコンピュータプログラムコードを含む。例えば、減少関数Wはルックアップ表として実施される。
減少関数Wは、第1の集合Xから第2の集合Yへの関数であり、第1の集合X、第2の集合Y、Aの要素a、Aの要素a’、及び群Mの要素mによって定義されるタイプ((X,a,Y,a’,m))を有する。減少関数のタイプは、減少関数によって減少され得るフックとリンク組合せと、結果として生じるフックのタイプを判定するものである。関数Wは、マップ[ ]が定義されている、Xにおけるx、Aにおけるa及びa’、Mにおけるmのすべてについて[xa]+m=[W(x)a’]という特性も有する。
減少ユニット160は、
− 集合Xによって定義されるタイプの第1の形式の第1の符号化された要素x及び群Aの要素abと、
− 群Mの要素mによって定義されるタイプの第2の形式の第2の符号化された要素g及び群Aの要素bとを得るように構成されている。
言い換えれば、フックのタイプを定義するAの要素は、リンクのタイプを定義するAの要素のa倍程度である。
減少ユニット160は、入力として取得されたフック及びリンクを、例えば第2の集合Yによって定義されるタイプ(H(Y,a’b))のフックW(xg−1)gといった第1の形式の符号化された要素及び要素a’と要素bの積(a’b)で置換する。
計算ユニット100は、加算ユニット150のそれぞれの加算の後に減少ユニット160を活性化するように構成されている。これによって、第3の形式の要素ができるだけ短く保たれる。減少は、それ以上の減少が不可能になるまで複数回適用される。或いは、計算ユニット100は、例えば所定回数である複数の加算が実施された後まで減少を先送りするようにも構成される。例えば、数が、例えばフック及び/又はリンクである若干のコンポーネント以上であると、計算デバイス100は減少を適用する。例えば、減少は、4つ以上のフック及び/又はリンクを有する任意の第3の形式の要素に対して適用される。4つという数は、2つ以上、3つ以上などでもよい。
興味深いことに、一実施形態では、記憶装置140は、互換性がなく、例えば適合する減少ユニット160の減少関数がない、第1の形式の符号化された要素及び第2の形式の符号化された要素を含む第3の形式の第1の加数を記憶することがある。したがって、この第2の形式はさらに減少することができない。記憶装置140は、第1の加数における第1の形式の符号化された要素と互換性のある第2の形式の符号化された要素を含んでいる第2の加数をさらに含み得る。これら第1の加数と第2の加数が加算された後に、互換性のあるフック及びリンクを含んでいる第3の形式がもたらされる。第1の加数と第2の加数の和に対して減少ユニットが適用され得て、より短い第3の形式がもたらされる。攻撃者が、悪意を持って、第1の加数又は第2の加数を、プログラムのどこか他のところに見られる数字と交換した場合には、それらは不適当なタイプであり得る。そこで、結果として生じる加算は偽りの結果をもたらすことになる。或いは、交換によって未定義値がコールされる場合、これは、例えば所定値といったランダム値の代用により、又は、場合により、例えばエラーメッセージ、クラッシュなどの他の未定義動作を生成することによってさえ、解決される。ランダム値又は何か所定の非ランダム値などを代用することの利点は、攻撃者が、交換が不当だったかどうかということに関するフィードバックを受け取らないことである。
図2bは、減少プロセスを実施するためのやり方を概略的に示すものである。図2bには、図2aに関して与えられた例から取得された加算結果230が示されている。加算結果230は、フック214及び互換性のあるリンク226を含む。減少プロセスは、フック214及びリンク226を新規のフック242で置換する。減少結果231は、新規のフック242と、加算結果230にもあったリンク212、222及び224とを含む。減少結果231には、フック214及びリンク226がない。
フックとチェーンとの加算は、より長いチェーンを作成する、両方のオペランドの形式的な加算でしかない。減少ステップは、少なくとも1つのリンクを有するフックに対して適用され、フックをこのリンクと組み合わせる。減少経路は、いくつかのリンクを有するフックが減少され得る正確な順序であり、例えばチェーンH+L+L+Lを検討する。減少経路は、(1,3,2)及び他のもの(3,1,2)とする。これらの経路は、演算の順序が、
− 減少経路(1,3,2)については、
1. H+L→H’
2. H’+L→H’’
3. H’’+L→H’’’であり、
− 減少経路(3,1,2)については、
1. H+L→K’
2. K’+L→K’’
3. K’’+L→H’’’
であることを意味する。
第1の場合の結果はH’’’であり、第2の場合の結果はK’’’である。どちらもMにおける同一の要素を表現しているが、減少経路が異なる軌跡を辿ったので、恐らくタイプは異なる。一般に、多くのタイプがある状況では、各減少経路がタイプにおける同一の起点及び終端を有するとしても、固有の結果をもたらす可能性は低い。
減少経路が、場合によっては、例えば第1の形式の要素に対して完全なものではない部分的減少である可能性があり、これは、リンクのいくつかが、さらなる減少又は演算の余地があるので、結果がすべてのリンクを削除するわけではないことを意味することに留意されたい。
興味深いことに、M又はAの要素はプログラムの中で表現される必要はなく、この態様は非常に望ましいものである。これらの要素は、仮想要素又は「架空の」要素と見なされ、例えばコンピュータプログラムといった実装形態、又は、結果が正確であることを示す、プログラムに出現することのない正当性の証明において、暗黙的にのみ使用される。プログラムはXの要素及びGの要素を有する。これらは、例えば従来のやり方といった様々なやり方でも符号化され得る。
設計によって、すべての可能な加算が減少され得るわけではない。減少が可能であっても、減少が可能であることを保証するために正確な順序が必要である。場合によっては、リンク及び/又はフックを、同一の値を表現するが異なるタイプを有する他のものに変換することに関心がある場合がある。これはジャンプと呼ばれる。例えばg+...+g=IdとなるようなGの要素g、...、g及びa、...、aを想定すると、後者の要素は主対角線上のもののみを有する同一性マトリクスである。値mgaを有するリンクを所与として、mga=mga・Id=mga(g+...+g)=mgga+...+mggaを計算することができる。後者は、タイプが異なるリンクの和と見なすことができる。このようにして、単一のリンクが、例えば少なくとも2つといった複数の、タイプの異なる新規のリンクに拡張される。新規のリンクは他のフックと組み合わされ得る。例えば、この機能を用いて減少ユニット160が拡張されてよく、又はこの拡張用に構成された新規の拡張ユニットが導入されてもよい。
図1に戻る。計算デバイス100は、任意選択の入力ユニット及び/又は任意選択の出力ユニットを備える。図1に示された実施形態では、組み合わされた入出力ユニット170が示されている。一実施形態では、個別の入力ユニット及び出力ユニットが使用される。
例えば、I/Oユニット170は、プレーン入力がアーベル群Nの要素を受け取り、例えばルックアップ表を使用して、受け取った要素を第1、第2、又は第3の形式の符号化された要素に変換するように構成されるプレーン入力で構成されている。例えば、I/Oユニット170は、プレーン出力が第1、第2、又は第3の形式の符号化された要素を受け取り、受け取った要素をアーベル群Nの符号化されていない要素に変換するように構成されるプレーン出力で構成されている。この状況では、「符号化されていない」は、第1、第2、又は第3の形式によって符号化されていないことを意味する。入力及び出力は、外部符号化方式によって確実に符号化される。
例えば、入力及び/又は出力は、群Nの1つ又は複数の要素を、例えば群Nのいくつかの標準的な表現で、例えば係数を法とする整数として、例えばコンポーネントのような係数を法とするベクトルとしてなど、プレーン形式で受け取るか又は生成する。例えば、入力及び/又は出力は、例えば群Nにおけるインデックスとして、詳細には群Nが例えば群Nの符号化といった何かの符号化置換で置換された後に、群Nの1つ又は複数の要素を符号化された形式で受け取るか又は生成する。使用される符号化は、群Nの等しい要素が常に同一の符号化に対応するのを回避するために、例えば状態といったある形式の機知を含む。
入力又は出力は、ルックアップ表によって好都合に符号化される。例えば、入力では、Nの入力要素が、いくつかの同一の要素の、第1、第2、又は第3の形式の表現にマッピングされる。同一の要素を表現するための複数のやり方がある。出力では、表が、第1、第2、又は第3の形式の要素を出力にマッピングする。これが必ずしも必要とは限らず、例えばデータが同一の計算デバイスによって後に使用するように記憶される場合には、第1/第2/第3の形式の符号化はそのままでよいことに留意されたい。表を小さく保つために、要素を出力用に変換する前に減少が適用されるのが望ましい。
計算デバイス100は、任意選択で線形演算子ユニット180を備える。線形演算子ユニット180は、符号化された要素に線形演算子を適用するように構成されている。第3の形式の符号化された要素に適用される線形演算子は、第3の形式の符号化された要素におけるフック及びリンクに個々に適用される線形演算子と等しいものである。例えばf:M→M、又はNからNといった線形演算子は、f(L+L+...+L)=f(L)+f(L)+...+f(L)という特性を有し、したがって、例えばGの要素といった所与のリンクがGの要素によって表現されることを再呼出しする表を得るのに十分なものであり、このリンクにわたって、fの値をリンクの和として与える。代表例には、G→GxGxGによって与えられる線形マップがある。特にXがGの多重コピーによって与えられ、G→Gの表はt|G|log(|G|)というサイズを有するが、G→Gの表は、r|G|log(|G|)という、指数tのためにはるかに大きいサイズを有する、Xから他の集合への表と比較して、一般にGがMよりも小さく、これらの表は特に大きいものではない。
一実施形態では、線形演算子ユニット180は、例えば第2の形式の要素又は第3の形式のリンクのみの要素といったリンクに線形演算子を適用するように制限される。線形演算子を適用しなければならないときには、リンクを使用する方がよい。減少する必要があるときには、フックのみ使用するのが望ましい。例えば、AESでは、フックが与えられると、S−Boxの出力をリンクのセットとして与える、S−Boxを使用して、MixColumnによって表現される線形演算子を作成し、ラウンドの最後においてキーによってもたらされるフック及び追加のリンクを用いて減少されるリンクの長いリストを生成する。
一実施形態では、群Hが、自己同形群Aut(X)と自己同形群Aut(M)の共通のサブ群であるように、基底Xはアーベル群Xである。この場合、基底Xは追加の付加構造を有する。例えば、HがAut(X)とAut(M)の共通のサブ群であるように、アーベル群Xを使用する。Xの付加構造は、演算に使用する必要はないが、Xの要素をコンパクトなやり方で表現するのにかなり便利である。例えば、Xの自己同形としてHを表現するマトリクスが、異なる次数及び基底フィールドさえ伴って、Mのものとは完全に異なると想定する。また、これらのマトリクスは、Aut(X)における任意の自己同形fについて、h→fhf−1によって与えられた同形H→fHf−1を使用して容易に変更され得る。このようにしてコンパクトな表現が得られ、マトリクスとベクトルの間の実際の演算により、それらのうち多数が、実際にはそれらのうちボックス演算子以外のすべてが置換され得るので、表のサイズがさらに縮小する。その場合、セキュリティを改善するために、マップ[ ]が線形ではないことが重要であり、詳細には、加算を保存するとシステムがより簡単に解析されてしまうため、加算を保存しないことが重要である。
減少を行うとき、計算デバイス100において、例えば記憶装置140において、様々なフック及びリンクのタイプに関して管理を続ける可能性がある。この場合、減少ユニット160は、互換性のあるフック及びリンクを同一の第3の形式で収集して、例えばフック及びリンクが互換性のあるタイプを有することの管理を検証することによってそれらを減少するための選択肢を有する。しかしながら、タイプ情報は、計算デバイスにおいて暗示でしかないのが望ましい。例えば、コンパイラは(実装者さえも)、変数のタイプの経過を追って、それらに正確な減少関数を適用することができる。このように、攻撃者は変数のタイプを判定することができない。一般に、どの変数がどの変数に加算されるかということはあらかじめ知られている。コンパイラは、これらの変数のタイプの経過を追うことができる。必要に応じて、コンパイラは、最初に、コンピュータコードの一部分に関する静的単一代入(SSA)グラフを計算することができる。ループ展開することにより、単一のSSAを与えられたコンピュータコードの一部分のサイズが増加する可能性がある。SSAグラフにおいて、コンパイラは、コンパイル時に変数に対してタイプを割り当てて、互換性がある変数とない変数とを判定することができる。例えば、コンパイラは、減少のためのその時その時の機会を用いて、変数における互換性のないタイプを最適化する。
加算の一部は定数の加算であり、定数のタイプはコンパイラによって判定される。定数は、例えば互換性のない要素を最適化するために、必要に応じて、第1/第2/第3の形式で符号化される。
減少ユニット、加算ユニット、線形演算子ユニット、及び/又はI/Oユニットは、プロセッサ回路により、例えばそれぞれのユニットを実施する複数のコンピュータプログラム命令、それぞれのユニットを実施する回路、及び/又は専用ハードウェアとソフトウェア命令のハイブリッドとして実施される。
一般に、ルックアップ表は、例えば大きな入力を複数のより小さい表に分割するために、ルックアップ表ネットワークとしても実施される。
様々な実施形態において、入力及び/又は出力のユニットのための入出力インターフェースは様々な選択肢から選択される。例えば、入力及び/又は出力のインターフェースは、ローカルエリアネットワーク又は広域ネットワークに対するネットワークインターフェースであり、例えばインターネット、内部又は外部のデータ記憶装置に対する記憶装置インターフェース、キーボードなどである。
記憶装置140は、例えばフラッシュメモリといった電子メモリ、又は例えばハードディスクなどの磁気メモリとして実施される。記憶装置140が備える複数の離散メモリが、ともに記憶装置140を構成する。記憶装置140は、例えばRAMといった一時的メモリでもよい。一時的記憶装置140の場合には、記憶装置140は、例えば入力から、例えば任意選択のネットワーク接続(図示せず)などを通じて符号化された要素を取得することにより、使用される前に符号化された要素を取得するためのいくつかの手段を含有している。
一般的には、デバイス100は、デバイス100に記憶された適切なソフトウェアを実行するマイクロプロセッサ(別個には示されていない)を備え、例えば、そのソフトウェアは、例えばRAMなどの揮発性メモリ又はフラッシュなどの不揮発性メモリ(別個には示されていない)といった対応するメモリにダウンロードされ、且つ/又は記憶されている。或いは、デバイス100は、全体又は一部において、例えばフィールドプログラマブルゲートアレイ(FPGA)としてプログラマブルロジックで実施される。デバイス100は、全体又は一部において、いわゆる特定用途向け集積回路(ASIC)すなわち特別な用途向けにカスタマイズされた集積回路(IC)として実施される。例えば、回路は、例えばVerilog、VHDLなどのハードウェア記述言語を使用してCMOSで実施される。
一実施形態では、デバイス100は記憶回路、加算回路、減少回路を備える。デバイス100は、例えば線形演算子回路、入力及び/又は出力の回路といった追加の回路を備えることがある。これらの回路は、本明細書で説明された対応するユニットを実施する。これらの回路はプロセッサ回路及び記憶回路であり、プロセッサ回路は、記憶回路において電子的に表現された命令を実行する。回路は、FPGA、ASIC又はその他同種のものでもよい。
プロセッサ回路は、例えば複数のサブプロセッサ回路として分散型で実施される。記憶装置は、複数の分散型サブ記憶装置にわたって分散している。メモリの一部又はすべてが、電子メモリ、磁気メモリなどである。例えば、記憶装置は揮発性の部分及び不揮発性の部分を有する。記憶装置の一部は読取り専用である。
図3は、ブロック暗号AES用に構成された電子計算デバイスの実施形態の一例を概略的に示すものである。計算デバイス300は、AESブロック暗号のいわゆるホワイトボックス実装形態でよい。これは、攻撃者が、ブロック暗号を実施するプログラムに対する完全な低レベルアクセスを得たとしても、暗号化演算及び/又は復号化演算を実施するために使用される暗号化キーを導出するのは不可能であることを意味する。
計算デバイス300は、以下の演算を実施するユニットを備える。これらの演算は、図1に示されたユニットを使用して実施される。例えば、デバイス300は図1による一実施形態でよいが、例えば以下に示される演算を実施する回路及び/又はプログラミングといった付加ユニットを伴う。AES実装形態は、参照により本明細書に含まれている、2001年11月26日の連邦情報処理標準の公布197、「Announcing the ADVANCED ENCRYPTION STANDARD(AES)」に従うものでよい。
図3に示されるAES実装形態300は、ラウンドキー加算演算310、バイト置換演算320、行シフト演算330、列混合演算340、ラウンドキー加算演算350を含む。これらの演算は、例えばFips 197で説明されているようなステート上で動作するものである。ステートは、一実施形態によって符号化されたバイトのシーケンスである。例えば、ステートはバイトごとに符号化され、各バイトは高々1つのフックを含む。完全なAESはこれらの演算以上のものを含有しているが、これらは十分に類似しており、図3には省略としてさらに示されているのみであることに留意されたい。
このAES実装形態は、完全にループ展開されていることに留意されたい。ラウンドキーは固定され、プログラムにおいてハードコード化されている。ラウンドキーはまた、入力を通じて受け取られる。例えば、AES実装形態におけるステートはリンクしか含まないが、ラウンドキーはそれぞれの符号化されたバイトについてフックとリンクの両方を含む。これによってステートとラウンドキーの加算及び減少が可能になる。バイト置換演算320はルックアップ表として実施される。バイト置換演算320はフックを削除するのにも使用され、例えば、表は、入力としてフックを受け取り、出力としてもう1つのリンクを生成する。例えば、AES 300は、バイト置換演算320の前に、減少が、ステートのそれぞれのバイトをたった1つのフックへと完全に減少するように構成される。これによって演算320用の表のサイズが縮小する。行シフト演算330は、符号化されたバイト上で問題なく実施される。列混合演算340は線形であり、前述のように線形演算子ユニットを使用して実施される。
以下に、選択された実施形態の詳細な例を示す。
Nは7つの要素のアーベル群と見なされ、N=Zである。アーベル群Mは
Figure 2020515093
となり、マップπ:M→Nはπ(x,y)=2x+3yとなる。Mの要素は順序対(r,s)によって表現され、r,s∈Zである。アーベル群Mはベクトル空間であるため、その自己同形群の要素は正方マトリクスによって表現され得る。Hの要素、したがってA及びGの要素は、マトリクスと見なされ得る。
次に、マトリクス
Figure 2020515093
によって生成される次数3の群Aと、要素
Figure 2020515093
及び
Figure 2020515093
によって生成される群Gとを使用する。fの次数は2であり、gの次数は6である。これら2つのマトリクスは交換され、またaとも交換され、したがって群H=GA=AGはアーベル群である。Gの要素の数は12であり、G∩Aが同一性であるため、Hの要素の数は36である。
Gの要素は、i∈{0,1,2,3,4,5}且つj∈{0,1}の状況でgと書くことができる。これらを<i,j>と書くことにより、表記法を簡単にすることができる。群Gは、同形が<i,j>=gと与えられる状況で、Z×Zと同形である。
Gにおける、gを表す<i,j>及びgを表す<r,s>という2つの要素を所与とする。これらを掛け合わせると、マトリクスfとgは交換されるため、g=gi+rj+sとなる。したがって、<i,j>と<r,s>のこの演算は、正確に<i+r,j+s>となる。このルールにより、Gにおける演算の加法の表記法が使用され、これらは正確に指数であるため、<i,j>+<r,s>=<i+r,j+s>と書かれる。要素<i,j>の逆数は(g−1=g−i−jであり、正確に<−i,−j>である。
この情報は計算するのに不可欠ではないが、すべての可能な表現の間の明瞭な対応を得るために、この表記法におけるGのすべての値と、乗法の表記法におけるGのすべての値と、マトリクスとを用いて表を書くことにする。
Figure 2020515093
MのG軌道の数は8である。要素を1つだけ有する0の軌道、2つの要素を有する3つの軌道、12の要素を有する他の3つの軌道、及び6つの要素を有する1つの軌道がある。2つの要素を有するものは、
C={(5,1),(2,6)}
Ca={(3,2),(4,5)}
Ca={(6,4),(1,3)}
となる。
12の要素を有するものは、
D={(1,0),(6,5),(2,1),(3,4),(2,3),(0,1),(5,4),(0,6),(4,3),(5,6),(6,0),(1,2)}
Da={(5,3),(4,2),(2,0),(4,6),(0,2),(6,1),(0,5),(1,6),(3,1),(5,0),(2,4),(3,5)}
Da={(1,4),(4,0),(3,6),(0,4),(5,2),(1,5),(2,5),(6,2),(0,3),(4,1),(6,3),(3,0)}となり、6つの要素を有するものは、
E=Ea=Ea={(1,1),(2,2),(4,4),(6,6),(5,5),(3,3)}となる。
この場合、0の軌道は禁じられた軌道と見なされる。他のすべての軌道が許容される。
X及びYの2つのH集合を選択する。前述のように、集合X及びYを生成するやり方の1つには、Gの多重コピーを生成し、それらの互いに素の結合を作成するものがある。どちらの場合もGの7つのコピーを使用する。X及びYの要素は<t:i,j>によって表現され、ここで、tは使用されるGのコピーを表す0〜7のインデックスであり、値i,jはこの集合から採用されるGの要素を表現する。Mの要素x、x、...、x及びy,y,...,y∈Mを選択し、値
Figure 2020515093
Figure 2020515093
を与えることにより、マップ[ ]:X→M及び[ ]:Y→Mが生成される。
すべての可能な要素を表すことができるために、許容された軌道の各々に対して要素x及びyが1つずつ選択される。
Xの場合、これらの要素は、
=(5,5)∈E、x=(3,1)∈Da、x=(5,1)∈C、x=(4,5)∈Ca、x=(1,3)∈Ca、x=(4,1)∈Da、及びx=(6,0)∈Dとなる。Yについては、それらは、
=(0,3)∈Da、y=(1,3)∈Ca、y=(3,5)∈Da、y=(3,4)∈D、y=(4,4)∈E、y=(2,6)∈C、及びy=(3,2)∈Caとなる。
この場合、0の軌道についての表現はないため、[ ]の部分的マップを使用することは必須ではく、したがって、禁じられた要素はX又はYにはない。マップ[ ]:X→M及び[ ]:Y→Mは、それらの像には0がないため、全射ではない。しかし、π:M→Nがカーネルに非ゼロ要素を有するため、Nには0の表現があり、π(2,1)=2・2+3・1=7≡0∈Zであるため、例えば対(2,1)によってNにおける要素0を表現することができる。要素(2,1)が軌道Dにあるという事実を使用して、X及びYにおけるこの要素を表現するために、Gにおける対応する要素とともにx又はyを使用することができる。
これらの禁じられた要素に対応するために、l(x,y)=yによって与えられるマップl:M→Zを検討する。適用されたlが0と異なるように値を生成するような表現又は表現の組合せのみを容認する。部分和の値は、lが線形であるという事実によって制御される。
<t:i,j>という表記法は、Xの要素及びYの要素とGの要素との間の演算を表現するのに非常に便利である。というのは、(x)(g)=xi+rj+sであり、加法の表記法を使用すると、これは、両方の場合において、それらがX又はYについて異なる要素を表現していても、<t:i,j>+<r,s>=<t:i+r,j+s>と書くことができるからである。
これらの演算は、Gにおける演算によって与えられたルールを守り、したがって、i+rはZにおいて計算され、j+sはZにおいて計算される。
次に2つのボックス演算子W及びWを定義する。演算子Wは値m=(2,1)について(Xa,Ya,m)のタイプになり、演算子Wは値m=(6,2)について(Ya,Xa,m)のタイプになる。これらの演算子はマップW:X→Y及びW:Y→Xを生成する。これらのマップはX又はYにおいて要素<t:i,j>を採用し、同一の表現の出力を与える。列に値tを適用し、行に値i,jを適用する。この表記法を用いると、Wの表は
Figure 2020515093
となり、Wの表は
Figure 2020515093
となる。
演算子W及びWは部分的マップであり、すべての要素に対して定義されているわけではない。未定義の値は、結果が0である場合を想定して書かれてきたが、この要素は禁じられた軌道にあり、表現されない。計算においてこれらのエントリがアクセスされることはなく、完全な表が望まれるのであれば、コンピュータプログラムに任意の値を入れることができる。これらの値が使用されるのは攻撃者が何かのコードを挿入する場合のみであり、その目的は、その場合にはエラーを伝搬させることであり、したがって偽の値が許容され得る。
g及びfと交換するマトリクスaによって生成される群Aは、次数3の群である。その要素はa、a及びaである。Aには2つの基底及び3つの要素があることを考慮して、フックには以下の6つのタイプがある。
H(X,a)、H(X,a)、H(X,a)、H(Y,a)、H(Y,a)、H(Y,a
2つの値m及びmを使用するものとし、したがって、L(m,a)、L(m,a)、L(m,a)、L(m,a)、L(m,a)、L(m,a)といった6つのタイプのリンクも得られる。
演算子Wはタイプ(Xa,Ya,m)を有し、Wはタイプ(Ya,Xa,m)を有し、したがって6つの可能な減少が得られる。以下の3つはWによって与えられ、
:H(X,a)×L(m,a)→H(Y,a
:H(X,a)×L(m,a)→H(Y,a
:H(X,a)×L(m,a)→H(Y,a
以下の3つはWによって与えられる。
:H(Y,a)×L(m,a)→H(X,a
:H(Y,a)×L(m,a)→H(X,a
:H(Y,a)×L(m,a)→H(X,a
図6の図には6つのタイプのフック及び6つのタイプのリンクがそれらの減少とともに見られ、フックとリンクを(正確なタイプを有する場合には)加算する。難読化アルゴリズムにおいてこれを使用するやり方は以下の通りである。置換S:N→Nと、Sを適用して、ラウンドi=0,1,...,rに関するラウンドキーKを加算する必要のあるアルゴリズムとを有すると想定する。第1のラウンドはキーKを加算するのみである。
このアルゴリズムの実装形態は以下のようになる。
・入力は表であり、任意の可能なn∈Nについて、要素
Figure 2020515093
及びI(n)∈H(Y,a)は、
Figure 2020515093
となるように選択される。
・キーKについて、値
Figure 2020515093

Figure 2020515093
及び
Figure 2020515093
は、
Figure 2020515093
となるように選択される。
・i=1,...,r−1であるキーKについて、値
Figure 2020515093
及び
Figure 2020515093
は、
Figure 2020515093
となるように選択される。
・最後のキーKについて、値
Figure 2020515093

Figure 2020515093
及び
Figure 2020515093
は、
Figure 2020515093
となるように選択される。
・置換のために、任意のJ∈H(Y,a)について、π([H(J)])+π(L(J))=S(π([H]))となるような要素H(J)∈H(X,a)及びL(J)∈L(m,a)を得るように表を得る。
入力表を定義する必要があり、すべての要素n∈Nについて、I(n)∈H(Y,a)及び
Figure 2020515093
は、所与の条件を満たすように選択される。
Figure 2020515093
キーKについて、キーのすべての可能な値に対して可能なリンクを選択する必要があり、可能な選択肢の1つには
Figure 2020515093
がある。
次に第1のラウンドにおける計算の一例を示す。初期値はn=3であり、キーK=2を加算する必要があると想定する。表を見て、これらの要素は以下の要素によって表現される。
・初期値n=3は、
− タイプH(Y,a)のフックI(3)=<3:2,1>と、
− タイプL(m,a)のリンク
Figure 2020515093
とによって与えられる。
・キーK=2は、
− タイプL(m,a)のリンク
Figure 2020515093
− タイプL(m,a)のリンク
Figure 2020515093
− タイプL(m,a)のリンク
Figure 2020515093
といった3つのリンクによって与えられる。
これらの要素の加算は
Figure 2020515093
となるが、これらの要素は正確な位置にないため、この順序で加算することはできない。減少するために使用する正確な順序を示す減少経路が必要である。この特定の例では可能性は1つしかないが、一般に複数の選択肢があり得る。順序は
Figure 2020515093
となる。初期値の一部分と、キーの一部分と、初期値の第2の部分と、キーの最後の部分とは、この順序で加算されなければならない。
演算は以下のようになる。
1.フックI(3)=<3:2,1>とリンク
Figure 2020515093
を加算する必要がある。適用される減少はボックス演算子Wを用いるTである。この減少には、常に、リンクによって表現される群の逆数を用いる演算(a)と、ボックス演算子を適用する演算(b)と、最後に、リンクによって表現される群を用いて元に戻す演算(c)との、3つのステップがある。
(a)<3:2−4,1−1>=<3:4,0>
(b)W(<3:4,0>)=<3:1,0>
(c)<3:1+4,0+1>=<3:5,1>
2.タイプH(X,a)のフックである第1の演算の出力<3:5,1>は、ボックス演算子Wによって誘導される減少Rを使用してリンク
Figure 2020515093
を用いて動作される。
(a)<3:5−0,1−1>=<3:5,0>
(b)W(<3:5,0>)=<3:1,0>
(c)<3:1+0,0+1>=<3:1,1>
3.タイプH(Y,a)のフックであるこの出力<3:1,1>は、ボックス演算子Wによって誘導される減少Tを使用してリンク
Figure 2020515093
を用いて動作される。
(a)<3:1−4,1−0>=<3:3,1>
(b)W(<3:3,1>)=<5:4,1>
(c)<4:4+4,1+0>=<5:2,1>
4.タイプH(X,a)のフックであるこの出力<5:2,1>は、ボックス演算子Wによって誘導される減少Rを使用してリンク
Figure 2020515093
を用いて動作される。
(a)<5:2−1,1−1>=<5:1,0>
(b)W(<5:1,0>)=<3:0,0>
(c)<3:0+1,0+1>=<3:1,1>
5.このラウンドの最終結果は、タイプH(Y,a)のフックである<3:1,1>となる。この要素に対して演算子[ ]及びπを適用すれば初期値2とキー3の加算である5が正確に得られ、すなわちπ([<3:1,1>])=π(y)=π(2,5)=2・2+3・5=19=5(mod7)である。
図4は電子計算方法400の実施形態の一例を概略的に示すものである。アーベル群Nにおける符号化加算用に構成された電子計算方法400は、
− アーベル群Nの符号化された要素を記憶するステップ(410)であって、これらの符号化された要素が、
− 1つ又は複数のタイプの第1の形式(110)であって、第1の形式のタイプ(H(X,b))が、集合X、群Aの要素b、及びマップ[ ]:X→Mによって定義され、集合Xの要素xがアーベル群Nの要素π([x]b)を表現し、
− πはアーベル群Mから群Nへの準同形の全射投影π:M→Nであり、
− 群Aと群Gは、一緒に、自己同形群Aut(M)のサブ群Hを分解し、H=GAであり、群Aと群Gは、任意の、Aにおけるa及びGにおけるgについて、ga=agとなる特性を有し、群Hは集合Xに対するアクションを有し、
− マップ[ ]は、このマップが定義されている、任意のXにおけるx及びHにおけるhについて[xh]=[x]hとなるような少なくとも部分的なマップ[ ]:X→Mであり、合成π[ ]:X→Nが全射である、第1の形式(110)と、
− 少なくとも1つのタイプの第2の形式(120)であって、第2の形式のタイプ(L(m,b’))が、群Mの要素m及び群Aの要素b’によって定義され、群Gの要素gがアーベル群Nの要素π(mgb’)を表現する、第2の形式(120)と、
− アーベル群Nの要素が、符号化された要素のシーケンスとして符号化される第3の形式(130)であって、第3の形式のシーケンスが、第1の形式又は第2の形式によって符号化された、少なくとも2つの符号化された要素を含み、符号化された要素のシーケンスが、シーケンスの要素によって表現されるアーベル群Nの要素の、アーベル群Nにおける和を表現する、第3の形式(130)とで記憶される、記憶するステップ(410)と、
− 複数の符号化された加数を加算するステップ(420)であって、加算ユニットが、複数の符号化された加数のうち少なくとも符号化された部分を含む第3の形式の符号化された要素を形成するように設定される、加算するステップ(420)と、
− 符号化された要素のシーケンスにおいて、集合X及び群Aの要素abによって定義されるタイプの第1の形式の第1の符号化された要素xと、群Mの要素m及び群Aの要素bによって定義されるタイプの第2の形式の第2の符号化された要素gとを、第2の集合Y及び要素a’と要素bの積(a’b)によって定義されるタイプ(H(Y,a’b))の第1の形式の符号化された要素W(xg−1)gで置換することにより、第3の形式の符号化された要素を減少するステップ(430)とを有し、
− 減少ユニットには、第1の集合Xから第2の集合Yへの関数である減少関数Wが備わっており、関数Wは、第1の集合X、第2の集合Y、Aの要素a、Aの要素a’、及び群Mの要素mによって定義されるタイプ((X,a,Y,a’,m))を有し、関数Wは、マップ[ ]が定義されている、Xにおけるx、Aにおけるa及びa’、Mにおけるmのすべてについて[xa]+m=[W(x)a’]という特性を有する。
当業者には明らかなように、方法を実行する様々なやり方が可能である。例えば、ステップの順序を変えることができ、又はいくつかのステップを並行して実行することができる。その上に、ステップの間で、他の方法のステップが挿入され得る。挿入されるステップは、本明細書で説明された方法などの改善を表現するものでよく、又は方法とは無関係でもよい。例えば、記憶するステップと、加算するステップと、減少するステップとは、少なくとも部分的に並行して実行され得る。その上に、所与のステップは、次のステップが開始される前に完了していなくてもよい。
本発明による方法は、プロセッサシステムに方法400を実施させるための命令を含むソフトウェアを使用して実行される。ソフトウェアは、システムの特定のサブエンティティによって採用されたステップのみ含めばよい。ソフトウェアは、ハードディスク、フロッピーディスク、メモリ、光ディスクなどの適切な記憶媒体に記憶される。ソフトウェアは、ワイヤに沿った信号、無線、又は例えばインターネットといったデータネットワークを使用して送られる。ソフトウェアは、ダウンロードして使用され得るように、且つ/又はサーバ上にあって遠隔で利用され得るように作成される。本発明による方法は、例えばフィールドプログラマブルゲートアレイ(FPGA)といったプログラマブルロジックを、方法を実施するように設定するように構成されたビットストリームを使用して実行される。
本発明は、本発明を実施するように適合されたコンピュータプログラム、特にキャリア上のコンピュータプログラム又はキャリアにおけるコンピュータプログラムにも及ぶことが了解されよう。プログラムは、ソースコード、オブジェクトコード、コードの中間のソース、及び部分的にコンパイルされた形式などのオブジェクトコードの形式、又は本発明による方法の実装形態において使用するのに適した任意の他の形式でよい。コンピュータプログラム製品に関する一実施形態は、説明された方法のうちの少なくとも1つの処理ステップの各々に対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分され、並びに/或いは静的又は動的にリンクされる1つ若しくは複数のファイルに記憶される。コンピュータプログラム製品に関する別の実施形態は、説明されたシステム及び/又は製品のうちの少なくとも1つの手段の各々に対応するコンピュータ実行可能命令を含む。
図5aは、コンピュータプログラム1020を含む書込み可能な部分1010を有するコンピュータ可読媒体1000を示すものであり、コンピュータプログラム1020は、プロセッサシステムに、一実施形態による計算方法を実施させるための命令を含む。コンピュータプログラム1020は、コンピュータ可読媒体1000上の物理マークとして、又はコンピュータ可読媒体1000を磁化することにより、具現され得る。しかしながら、任意の他の適切な実施形態も同様に考えられる。その上、コンピュータ可読媒体1000は、ここでは光ディスクとして示されているが、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体でよく、記録不可能でも記録可能でもよいことが了解されよう。コンピュータプログラム1020は、プロセッサシステムに、上記計算方法を実施させるための命令を含む。
図5bは、一実施形態によるプロセッサシステム1140を概略的に示すものである。プロセッサシステムは1つ又は複数の集積回路1110を備える。図5bには1つ又は複数の集積回路1110のアーキテクチャが概略的に示されている。回路1110は、一実施形態による方法を実行するため、及び/又はそのモジュール若しくはユニットを実施するためのコンピュータプログラムコンポーネントを動作させるための、例えばCPUである処理ユニット1120を備える。回路1110は、プログラムコード、データなどを記憶するためのメモリ1122を備える。メモリ1122の一部は読取り専用である。回路1110は、例えばアンテナ、コネクタ、又は両方などの通信要素1126を備える。回路1110は、方法において定義された処理の一部分又はすべてを実施するための専用の集積回路1124を備えてよい。プロセッサ1120と、メモリ1122と、専用のIC1124と、通信要素1126とは、例えばバスである相互接続1130を介して互いに接続されてよい。プロセッサシステム1110は、コネクタを使用する接触型通信用、及び/又はアンテナを使用する非接触型通信用に構成されている。
例えば、一実施形態では、計算デバイスはプロセッサ回路及びメモリ回路を備え、プロセッサはメモリ回路に記憶されたソフトウェアを実行するように構成されている。例えば、プロセッサ回路は、Intel社のCore i7プロセッサ、ARM社のCortex−R8などである。メモリ回路は、ROM回路、すなわち、例えばフラッシュメモリといった不揮発性メモリでよい。メモリ回路は、例えばSRAMメモリである揮発性メモリでよい。後者の場合には、検証デバイスは、例えばハードドライブ、ネットワークインターフェースなど、ソフトウェアを供給するように構成され不揮発性のソフトウェアインターフェースを備える。ソフトウェアは、記憶命令、加算命令、及び減少命令を含む。ソフトウェアは、入力命令、出力命令及び/又は線形演算子命令も含み得る。これらの命令は、本明細書で説明された対応するユニットの一実施形態を実施するものである。
前述の実施形態は、本発明を限定するのではなく、当業者が、多くの代替実施形態を設計することを可能にするように示されるものであることに留意されたい。
特許請求の範囲では、括弧の間のいかなる参照符号も、特許請求の範囲の制限として解釈されないものとする。動詞「備える(comprise)」及びその語形変化の使用は、特許請求の範囲において明示されたもの以外の要素又はステップの存在を排除するものではない。要素の前の冠詞「1つの(a)」又は「1つの(an)」は、そのような要素が複数存在すること排除するものではない。本発明は、いくつかの別個の要素を含むハードウェアと、適切にプログラムされたコンピュータとによって実施される。いくつかの手段を列挙しているデバイスの請求項では、これらの手段のいくつかは、ハードウェアの同一の品目によって具現され得る。特定の方策が互いに異なる従属請求項において詳述されるという単なる事実は、これらの方策の組合せが有利に使用され得ないことを指示するわけではない。
特許請求の範囲では、括弧の中の参照は、実施形態を例示する図面における参照符号又は実施形態の式を参照するものであり、したがって特許請求の範囲における理解し易さが向上する。これらの参照は、特許請求の範囲の制限として解釈されることはないものとする。
以下は図1〜図3における参照数字のリストである。
100 計算デバイス
110 第1の形式の複数の符号化された要素
112 第1のタイプの第1の形式の符号化された要素
114 第2のタイプの第1の形式の符号化された要素
116 第3のタイプの第1の形式の符号化された要素
120 第2の形式の複数の符号化された要素
122 第1のタイプの第2の形式の符号化された要素
124 第2のタイプの第2の形式の符号化された要素
126 第3のタイプの第2の形式の符号化された要素
130 第3の形式の複数の符号化された要素
131 第3の形式の符号化された要素
132 第3の形式の符号化された要素
140 記憶装置
150 加算ユニット
160 減少ユニット
170 入出力ユニット
180 線形演算子ユニット
210 第3の形式の符号化された要素
220 第3の形式の符号化された要素
212、214、222〜226 第1又は第2の形式の符号化された要素
214 第1の形式の符号化された要素
226 第2の形式の符号化された要素
230 第3の形式の符号化された要素
231 第3の形式の符号化された要素
300 AES実装形態
310 ラウンドキー加算演算
320 バイト置換演算
330 行シフト演算
340 列混合演算
350 ラウンドキー加算演算

Claims (16)

  1. アーベル群Nにおけるホワイトボックス符号化加算用に構成された電子計算デバイスであって、前記電子計算デバイスは、
    前記アーベル群Nの符号化された要素を記憶するように設定された記憶装置とプロセッサ回路とを備え、前記記憶装置は、
    1つ又は複数のタイプの第1の形式であって、前記第1の形式のタイプ(H(X,b))が、集合X、群Aの要素b、及びマップ[ ]:X→Mによって定義され、
    前記集合Xの要素xが前記アーベル群Nの要素π([x]b)を表現し、
    πはアーベル群Mから前記アーベル群Nへの準同形の全射投影π:M→Nであり、
    前記群Aと群Gとは、一緒に、自己同形群Aut(M)のサブ群Hを分解し、H=GAであり、前記群Aと前記群Gとは、任意の、Aにおけるa及びGにおけるgについて、ga=agとなる特性を有し、前記群Hが前記集合Xに対するアクションを有し、
    前記マップ[ ]は、前記マップが定義されている、任意の、Xにおけるx及びHにおけるhについて[xh]=[x]hとなるような少なくとも部分的なマップ[ ]:X→Mであり、合成π[ ]:X→Nが全射である、第1の形式と、
    少なくとも1つのタイプの第2の形式であって、前記第2の形式のタイプ(L(m,b’))が、前記アーベル群Mの要素m及び前記群Aの要素b’によって定義され、前記群Gの要素gがアーベル群Nの要素π(mgb’)を表現する、第2の形式と、
    アーベル群Nの要素が、符号化された要素のシーケンスとして符号化される第3の形式であって、前記第3の形式の前記シーケンスが、前記第1の形式又は前記第2の形式によって符号化された、少なくとも2つの符号化された要素を含み、符号化された要素の前記シーケンスが、前記シーケンスの前記要素によって表現される前記アーベル群Nの前記要素の、前記アーベル群Nにおける和を表現する、第3の形式とで符号化された要素を記憶し、
    前記プロセッサ回路は、
    複数の符号化された加数を加算するように構成された加算ユニットであって、前記複数の符号化された加数のうち少なくとも符号化された部分を含む前記第3の形式の符号化された要素を形成する加算ユニットと、
    前記符号化された要素の前記シーケンスにおいて、前記集合X及び前記群Aの要素abによって定義されるタイプの前記第1の形式の第1の符号化された要素xと、前記アーベル群Mの要素m及び前記群Aの要素bによって定義されるタイプの第2の形式の第2の符号化された要素gとを、第2の集合Y及び要素a’と前記要素bの積(a’b)によって定義されるタイプ(H(Y,a’b))の前記第1の形式の符号化された要素W(xg−1)gで置換することにより、前記第3の形式の符号化された要素を減少させる減少ユニットであって、
    前記減少ユニットには、第1の集合Xから第2の集合Yへの関数である減少関数Wが備わっており、前記減少関数Wが、第1の集合X、第2の集合Y、Aの前記要素a、Aの前記要素a’、及び前記アーベル群Mの前記要素mによって定義されるタイプ((X,a,Y,a’,m))を有し、前記減少関数Wが、前記マップ[ ]が定義されている、Xにおけるx、Aにおけるa及びa’、Mにおけるmのすべてについて[xa]+m=[W(x)a’]という特性を有する、減少ユニットとで構成されている、電子計算デバイス。
  2. 前記第1の集合Xと前記第2の集合Yとが同一のものである、請求項1に記載の電子計算デバイス。
  3. 前記記憶装置が、第2の集合Yによって定義されるタイプの前記第1の形式の要素、前記群Aの要素b、及びマップ[ ]:Y→Mを含み、前記第2の集合Yの要素xが前記アーベル群Nの前記要素π([x]b)を表現し、前記マップ[ ]が、前記マップが定義されている、任意の、Yにおけるx及びHにおけるhについて[xh]=[x]hとなるような少なくとも部分的なマップ[ ]:Y→Mであり、合成π[ ]:Y→Nが全射である、請求項1又は2に記載の電子計算デバイス。
  4. 前記減少ユニットがもう1つの減少関数Wで構成されており、前記第1の形式のタイプ(H(X,ab))の符号化された要素が、集合Xによって定義され、前記減少ユニットがタイプ(X,a,Y,a’,m)の減少関数Wで構成されている場合には、前記群Aの要素abと、前記群Mの要素m及び前記群Aの要素bによって定義される前記第2の形式のタイプ(L(m,b))の符号化された要素とに、互換性があり、前記減少ユニットが、前記第3の形式の符号化された要素のシーケンスにおいて、2つである互換性のある前記第1の形式の符号化された要素と前記第2の形式の符号化された要素とに対して、対応する減少関数を適用する、請求項1乃至3のいずれか一項に記載の電子計算デバイス。
  5. 前記第3の形式の第1の加数が、互換性のない前記第1の形式の符号化された要素と前記第2の形式の符号化された要素とを含み、
    第2の加数が、前記第1の加数における前記第1の形式の符号化された要素と互換性のある前記第2の形式の符号化された要素を含む、請求項4に記載の電子計算デバイス。
  6. 前記合成π([W( )])がN上の全射である、請求項1乃至5のいずれか一項に記載の電子計算デバイス。
  7. アーベル群Nの要素を受け取って、当該受け取った要素を、例えばルックアップ表を使用して、前記第1の形式の、前記第2の形式の、又は前記第3の形式の符号化された要素に変換するように構成されたプレーン入力、及び/又は
    前記第1の形式の、前記第2の形式の、又は前記第3の形式の符号化された要素を受け取って、当該受け取った要素をアーベル群Nの符号化されていない要素に変換するように構成されたプレーン出力を備える、請求項1乃至6のいずれか一項に記載の電子計算デバイス。
  8. 前記アーベル群MとNとが同一のものであり、前記全射投影πが同一性である、請求項1乃至7のいずれか一項に記載の電子計算デバイス。
  9. 前記アーベル群M及びNが、グランドリングの上のモジュールであり、前記群H、前記群G及び前記群Aが前記グランドリングの上のマトリクスの群である、請求項1乃至8のいずれか一項に記載の電子計算デバイス。
  10. 前記群Aが対角マトリクス及び/又は反対角マトリクスのみを含むマトリクス群である、請求項1乃至9のいずれか一項に記載の電子計算デバイス。
  11. 前記アーベル群Nが、n≧2について、群
    Figure 2020515093
    である、請求項1乃至10のいずれか一項に記載の電子計算デバイス。
  12. 前記第1の集合及び/又は前記第2の集合が、前記群Hの1つ又は複数のコピーの互いに素の結合である、請求項1乃至11のいずれか一項に記載の電子計算デバイス。
  13. 前記プロセッサ回路が、符号化された要素に対して線形演算子を適用するように構成された線形演算子ユニットで構成されている、請求項1乃至12のいずれか一項に記載の電子計算デバイス。
  14. 前記群Hが前記自己同形群Aut(X)と前記自己同形群Aut(M)との共通のサブ群であるように、前記第1の集合Xがアーベル群Xである、請求項1乃至13のいずれか一項に記載の電子計算デバイス。
  15. アーベル群Nにおけるホワイトボックス符号化加算用に構成された電子計算方法であって、前記電子計算方法は、
    前記アーベル群Nの符号化された要素を記憶するステップであって、当該記憶するステップは、
    1つ又は複数のタイプの第1の形式であって、前記第1の形式のタイプ(H(X,b))が、集合X、群Aの要素b、及びマップ[ ]:X→Mによって定義され、前記集合Xの要素xが前記アーベル群Nの要素π([x]b)を表現し、
    πはアーベル群Mから前記アーベル群Nへの準同形の全射投影π:M→Nであり、
    前記群Aと群Gは、一緒に、自己同形群Aut(M)のサブ群Hを分解し、H=GAであり、前記群Aと前記群Gは、任意の、Aにおけるa及びGにおけるgについて、ga=agとなる特性を有し、前記群Hが前記集合Xに対するアクションを有し、
    前記マップ[ ]が、前記マップ[ ]が定義されている、任意の、Xにおけるx及びHにおけるhについて[xh]=[x]hとなるような少なくとも部分的なマップ[ ]:X→Mであり、合成π[ ]:X→Nが全射である、第1の形式と、
    少なくとも1つのタイプの第2の形式であって、前記第2の形式のタイプ(L(m,b’))が、前記アーベル群Mの要素m及び前記群Aの要素b’によって定義され、前記群Gの要素gがアーベル群Nの要素π(mgb’)を表現する、第2の形式と、
    アーベル群Nの要素が、符号化された要素のシーケンスとして符号化される第3の形式であって、前記第3の形式の前記シーケンスが、前記第1の形式又は前記第2の形式によって符号化された、少なくとも2つの符号化された要素を含み、符号化された要素の前記シーケンスが、前記シーケンスの前記要素によって表現される前記アーベル群Nの要素の、前記アーベル群Nにおける和を表現する、第3の形式とで、前記符号化された要素を記憶するステップと、
    複数の符号化された加数を加算するステップであって、加算ユニットが、前記複数の符号化された加数のうち少なくとも符号化された部分を含む前記第3の形式の符号化された要素を形成するように設定されている、加算するステップと、
    前記符号化された要素の前記シーケンスにおいて、前記集合X及び前記群Aの要素abによって定義されるタイプの前記第1の形式の第1の符号化された要素xと、前記アーベル群Mの要素m及び前記群Aの要素bによって定義されるタイプの第2の形式の第2の符号化された要素gとを、第2の集合Y及び要素a’と前記要素bの積(a’b)によって定義されるタイプ(H(Y,a’b))の前記第1の形式の符号化された要素W(xg−1)gで置換することにより、前記第3の形式の符号化された要素を減少させるステップとを有し、
    減少ユニットには、第1の集合Xから第2の集合Yへの関数である減少関数Wが備わっており、前記減少関数Wが、第1の集合X、第2の集合Y、Aの前記要素a、Aの前記要素a’、及び前記アーベル群Mの前記要素mによって定義されるタイプ((X,a,Y,a’,m))を有し、前記減少関数Wが、前記マップ[ ]が定義されている、Xにおけるx、Aにおけるa及びa’、Mにおけるmのすべてについて[xa]+m=[W(x)a’]という特性を有する、電子計算方法。
  16. 請求項15に記載の方法をプロセッサシステムに実施させる命令を表現する一時的データ又は非一時的データを含む、コンピュータ可読媒体。
JP2019532987A 2016-12-20 2017-12-20 符号化加算のための計算デバイス Pending JP2020515093A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP16205277 2016-12-20
EP16205277.3 2016-12-20
PCT/EP2017/083856 WO2018115143A1 (en) 2016-12-20 2017-12-20 A calculation device for encoded addition

Publications (1)

Publication Number Publication Date
JP2020515093A true JP2020515093A (ja) 2020-05-21

Family

ID=57708366

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019532987A Pending JP2020515093A (ja) 2016-12-20 2017-12-20 符号化加算のための計算デバイス

Country Status (7)

Country Link
US (1) US20200097256A1 (ja)
EP (1) EP3559799A1 (ja)
JP (1) JP2020515093A (ja)
CN (1) CN110088728A (ja)
BR (1) BR112019012368A2 (ja)
RU (1) RU2019122810A (ja)
WO (1) WO2018115143A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110167447B (zh) 2016-12-21 2023-02-03 皇家飞利浦有限公司 用于快速和自动超声探头校准的系统和方法
US11764940B2 (en) 2019-01-10 2023-09-19 Duality Technologies, Inc. Secure search of secret data in a semi-trusted environment using homomorphic encryption
FR3105684B1 (fr) * 2019-12-20 2022-12-23 Idemia France Procede de traitement cryptographique, dispositif electronique et programme d'ordinateur associes
US12099997B1 (en) 2020-01-31 2024-09-24 Steven Mark Hoffberg Tokenized fungible liabilities
CN112231561B (zh) * 2020-10-14 2024-06-07 深圳前海微众银行股份有限公司 数据处理方法、装置、设备及存储介质
US11765127B1 (en) * 2022-04-20 2023-09-19 Dell Products, L.P. Pluggable network address management stack

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2179366C1 (ru) * 2001-05-22 2002-02-10 Плотников Андрей Алексеевич Способ передачи дискретного сообщения и система для его осуществления
KR100395158B1 (ko) * 2001-07-12 2003-08-19 한국전자통신연구원 유한 비가환군을 이용한 공개키 암호 시스템
US9313027B2 (en) * 2005-12-29 2016-04-12 Proton World International N.V. Protection of a calculation performed by an integrated circuit
US8504845B2 (en) * 2011-03-30 2013-08-06 Apple Inc. Protecting states of a cryptographic process using group automorphisms
BR112017006236A2 (pt) 2014-09-30 2017-12-12 Koninklijke Philips Nv dispositivo de cálculo eletrônico, dispositivo de codificação de anel, dispositivo de cálculo de tabela, método de cálculo eletrônico, programa de computador, e, mídia legível por computador

Also Published As

Publication number Publication date
CN110088728A (zh) 2019-08-02
EP3559799A1 (en) 2019-10-30
RU2019122810A (ru) 2021-01-22
US20200097256A1 (en) 2020-03-26
BR112019012368A2 (pt) 2020-02-27
WO2018115143A1 (en) 2018-06-28

Similar Documents

Publication Publication Date Title
JP2020515093A (ja) 符号化加算のための計算デバイス
CN109661792B (zh) 计算分组密码的设备和方法
CN105453481B (zh) 包括表网络的计算设备
CN110663215B (zh) 在白盒场景中的椭圆曲线点乘设备和方法
EP3632032B1 (en) Cryptographic device and method
JP2019523492A (ja) 難読化算術を実行するためのデバイス及び方法
CN108141352B (zh) 密码设备、方法、装置和计算机可读介质和编码设备、方法、装置和计算机可读介质
US20130259226A1 (en) Methods and apparatus for correlation protected processing of cryptographic operations
US12052348B2 (en) Computation device using shared shares
CN105814833B (zh) 用于安全的数据变换的方法和系统
CN111480140B (zh) 计算设备和方法
RU2708439C1 (ru) Вычислительное устройство и способ
CN113475034B (zh) 电路编译设备和电路评估设备
CN108475255A (zh) 计算设备和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190618

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20190618

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20191205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200121

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200923