(57)【要約】  主群（（Ｍ，＋））の２つの元を加算するように構成された電子計算デバイスであって、主群が有限アーベル群、式（Ｉ）であり、−  第２の部分集合（Ｍ０）の各元（ｍｉ）についてルックアップテーブル（Ｐｉ）を記憶する加算テーブル記憶装置１１０と、−  第１の加算入力（α０Ｘ０）及び第２の加算入力（γ０ｍｉ０ｈ０＋γ１ｍｉ１ｈ１＋γ２ｍｉ２ｈ２＋・・・）を受信するように構成された加算ユニットであって、第１及び第２の加算入力が主群（Ｍ）の元であり、第１の加算入力が正規化表現で受信され、第２の加算入力が一般化表現で受信され、第１の加算入力及び第２の加算入力の主群Ｍにおける和を計算する、加算ユニットとを備える、電子計算デバイス。
2018538620.tif 000002
【特許請求の範囲】
【請求項１】
主群（（Ｍ，＋））の２つの元を加算する電子計算デバイスであって、前記主群が有限アーベル群（
【数６１】
2018538620.tif 000063
）であり、
前記主群に対して定義されるのは、
第１（Ｎ）及び第２（Ｈ）の作用群であって、前記第１（Ｎ）及び第２（Ｈ）の作用群が前記主群（Ｍ）に作用し、前記第２の作用群（Ｈ）が生成元（ｈ）によって生成される巡回群である（Ｈ＝（ｈ））、第１（Ｎ）及び第２（Ｈ）の作用群と、
前記主群（Ｍ）の第１の部分集合（Δ）であって、前記主群（Ｍ）の任意の元（ｍ）が、前記第１の作用群（Ｎ）の元（ｎ）と前記第１の部分集合（Δ）の元（Ｘ）との積（ｍ＝ｎＸ）として表され得る第１の部分集合（Δ）において、前記第１の作用群（Ｎ）の前記元（ｎ）と前記第１の部分集合（Δ）の前記元（Ｘ）とが、前記主群（Ｍ）の前記元（ｍ）の正規化表現と呼ばれる、第１の部分集合（Δ）と、
前記主群（Ｍ）の任意の元（ｍ）が複数の被加数の和（
【数６３】
2018538620.tif 000064
）として表され得る前記主群（Ｍ）の第２の部分集合（Ｍ０＝｛ｍ０，．．．，ｍｒ−１｝）であって、各被加数が前記第１の作用群（Ｎ）の元（γｔ）と、前記第２の部分集合（Ｍ０）の元（
【数６２】
2018538620.tif 000065
）と、前記生成元の冪乗（ｈｔ）との積であり、
前記複数の被加数における前記第１の作用群の複数の元が、前記主群（Ｍ）の前記元（ｍ）の一般化表現と呼ばれる、第２の部分集合（Ｍ０＝｛ｍ０，．．．，ｍｒ−１｝）と
であり、前記電子計算デバイスが、
前記第２の部分集合（Ｍ０）の各元（ｍｉ）についてルックアップテーブル（Ｐｉ）を記憶する加算テーブル記憶装置であって、前記ルックアップテーブルが、前記主群（Ｍ）の正規化元（（γ，Ｘ））を入力として取り、前記入力を前記第１の作用群（Ｎ）の元（λ）と前記第１の部分集合（Δ）の元（Ｙ）とに写像し、前記第１の作用群（Ｎ）の前記元（λ）と前記第１の部分集合（Δ）の前記元（Ｙ）との積が、前記正規化元（γＸ）と前記第２の部分集合（Ｍ０）の前記元（ｍｉ）との和（λＹｈ＝γＸ＋ｍｉ）である、加算テーブル記憶装置と、
第１の加算入力（α０Ｘ０）及び第２の加算入力（
【数６４】
2018538620.tif 000066
）を受信する加算ユニットであって、前記第１及び第２の加算入力が前記主群（Ｍ）の元であり、前記第１の加算入力が正規化表現で受信され、前記第２の加算入力が一般化表現で受信され、前記第１の加算入力及び前記第２の加算入力の前記主群（Ｍ）における和を計算し、
前記第２の加算入力の前記被加数を前記第１の加算入力に順次加算することによって部分和を計算し、
前記第２の加算入力の被加数（
【数６５】
2018538620.tif 000067
）を前記部分和に加算することが、前記被加数における前記第２の部分集合（Ｍ０）の前記元（
【数６６】
2018538620.tif 000068
）についての、前記加算テーブル記憶装置に記憶された前記ルックアップテーブル（
【数６７】
2018538620.tif 000069
）を適用することを含む、
加算ユニットと
を備える、電子計算デバイス。
【請求項２】
正規化表現の前記主群（Ｍ）の元（ｍ）が、前記電子計算デバイスにおいて２つの数のペアとして表され、前記２つの数の第１の数が前記第１の作用群（Ｎ）の前記元（ｎ）を示し、前記２つの数の第２の数が前記第１の部分集合（Δ）の前記元（Ｘ）を示し、
一般化表現の前記主群（Ｍ）の元（ｍ）が、前記電子計算デバイスにおいて少なくとも第１の数の系列として表され、前記第１の数の系列が前記被加数における前記第１の作用群（Ｎ）の前記元（γｔ）を示す、
請求項１に記載の電子計算デバイス。
【請求項３】
前記加算ユニットによって計算される前記和が正規化形式で表される、
請求項１又は２に記載の電子計算デバイス。
【請求項４】
前記電子計算デバイスの外部のコンピュータから１つ又は複数の加算入力を受信するネットワークインターフェースであって、前記１つ又は複数の加算入力が一般化表現である、ネットワークインターフェースと、
１つ又は複数の定数加算入力を正規化表現で記憶する定数記憶装置と
を備え、
前記電子計算デバイスが、前記ネットワークインターフェースを介して受信される選択された加算入力と、前記定数記憶装置からの選択された定数加算入力とを前記加算ユニットを使用して加算する、
請求項１乃至３のいずれか一項に記載の電子計算デバイス。
【請求項５】
変換入力を受信する変換ユニット
を備え、
前記変換入力が一般化形式であり、前記変換ユニットが、正規化形式の前記主群の元を加算することによって、前記変換入力を正規化形式に変換し、及び／又は、
前記変換入力が正規化入力であり、前記変換ユニットが、前記第１の部分集合の元を一般化形式に写像する変換テーブルを記憶する、
請求項１乃至４のいずれか一項に記載の電子計算デバイス。
【請求項６】
線形関数（ｆ）を一般化形式の関数入力に適用する関数ユニットと、
前記第１の作用群（Ｎ）の元（γｔ）と、前記第２の部分集合（Ｍ０）の元（
【数６８】
2018538620.tif 000070
）と、前記生成元の冪乗（ｈｔ）との積（
【数６９】
2018538620.tif 000071
）を入力として取り、
前記積を、前記線形関数を前記積に適用した結果に写像するテーブルを記憶する線形関数テーブル記憶装置と
を備え、
前記関数ユニットが、前記線形関数テーブル記憶装置の前記テーブルを前記関数入力の前記被加数に適用する、
請求項１乃至５のいずれか一項に記載の電子計算デバイス。
【請求項７】
前記第２の作用群（Ｈ）が３つ以上の元を有するか、
前記第２の作用群（Ｈ）が２つの元を有するか、
前記第２の部分集合（Ｍ０）が２つ以上の元を有するか、
前記第２の部分集合（Ｍ０）が単位元でない１つの元を有するか、
前記主群（Ｍ）が、たとえばｌ≧４のアーベル群（
【数７０】
2018538620.tif 000072
）であるか、又は、
前記第１の作用群（Ｎ）が３つ以上の元を有する巡回群である、
請求項１乃至６のいずれか一項に記載の電子計算デバイス。
【請求項８】
前記生成元（ｈ）が次数ｋを有し、一般化表現の前記生成元（ｈ）の指数（ｔ）が、高々前記次数（ｋ）の特定の倍数マイナス１であり（ｔ≦λｋ−１）、前記特定の倍数が前記主群の全ての元について同一である、
請求項１乃至７のいずれか一項に記載の電子計算デバイス。
【請求項９】
前記主群が標数２を有し、前記第２の作用群が次数２を有し、一般化表現の前記生成元（ｈ）の前記冪乗（ｈｔ）が、高々前記次数の２倍マイナス１であるか（ｔ≦２ｋ−１）、又は、
前記主群が２より大きい標数を有するか、若しくは前記第２の作用群の次数が２より大きく、一般化表現の前記生成元（ｈ）の前記冪乗（ｈｔ）が高々前記次数マイナス１である（ｔ≦ｋ−１）、
請求項８に記載の電子計算デバイス。
【請求項１０】
前記加算ユニットが、
前記部分和を最初は前記第１の加算入力（α０，Ｘ０）に設定し、
前記第１の加算入力の前記被加数にわたってループし、各ループにおいて、前記第１の加算入力の前記被加数（
【数７１】
2018538620.tif 000073
）を加算することによって前記部分和を更新する、
請求項１乃至９のいずれか一項に記載の電子計算デバイス。
【請求項１１】
前記第１の加算入力が、α０∈Ｎ及びＸ０∈Δでの前記主群の元α０Ｘ０であり、前記第２の加算入力が前記主群の元
【数７２】
2018538620.tif 000074
であり、ｋが前記生成元の次数であり、γｉ∈Ｎ及びｍｉ∈Ｍ０であり、ｈが前記生成元であり、
前記加算ユニットが、
前記部分和を最初は前記第１の加算入力α０，Ｘ０に設定し、
０からλｋ−１までの前記生成元（ｈｔ）の各指数（ｔ）について、
【数７３】
2018538620.tif 000075
についての前記ルックアップテーブル（
【数７４】
2018538620.tif 000076
）をγｔ−１γｔ−１αｔＸｔに適用して、前記指数（
【数７５】
2018538620.tif 000077
）に対応する前記被加数を加算することによって、現在の部分和（αｔＸｔ）から次の部分和（αｔ＋１Ｘｔ＋１）を取得し、γ−１が前記主群（Ｍ）の単位元であり、αｔＸｔが前記現在の部分和であり、
前記部分和がγｔ−１αｔＸｔｈｔに等しい、
請求項１０に記載の電子計算デバイス。
【請求項１２】
前記第１の部分集合（Δ）が、前記第１の作用群（Ｎ）の元と、前記第２の部分集合の元と、前記第２の作用群（Ｈ）の元との積を総和して形成される元に、前記生成元の、前記生成元の次数マイナス１乘を加えたもの（
【数７６】
2018538620.tif 000078
）のみを含み、前記第２の作用群の前記元が、高々前記生成元の次数マイナス２乗の前記生成元（ｈ）の冪乗である、
請求項１乃至１１のいずれか一項に記載の電子計算デバイス。
【請求項１３】
前記主群（（Ｍ，＋））が、前記主群を環（（Ｒ，＋，・））にするさらなる演算（・）を有し、
第１の乗算入力及び第２の乗算入力を受信する乗算ユニットであって、前記第１及び第２の乗算入力が前記主環（Ｒ）の元であり、前記第１の乗算入力が正規化表現（（β０ｈ０＋・・・βｋ−２ｈｋ−２＋ｈｋ−１）α＝Ｘα）で受信され、前記第２の乗算入力が一般化表現（γ０ｈ０＋γ１ｈ１＋γ２ｈ２＋・・・）で受信され、前記第１の乗算入力及び前記第２の乗算入力の前記環（Ｒ）における積を計算し、
前記第１の乗算入力と、前記第２の乗算入力の第１の被加数とから第１の加算入力を計算し、前記第１の加算入力が正規化形式（Ｘ（αγ０））であり、
前記第１の乗算入力と、前記第１の被加数以外の前記第２の乗算入力の複数の被加数とから１つ又は複数の第２の加算入力を計算し、前記１つ又は複数の第２の加算入力が一般化形式（Ｘ（αγｉ）ｈｉ＝（Ｘｈｉ）ｎ’）であり、
前記第１の加算入力と前記１つ又は複数の第２の加算入力とを前記加算ユニットを介して加算する、
乗算ユニット
を備える、
請求項１２に記載の電子計算デバイス。
【請求項１４】
（＃Ｎ・＃Ｍ０）＃Ｈ≧３／２（＃Ｎ・＃Δ）であり、
より詳細には、
（＃Ｎ・＃Ｍ０）＃Ｈ≧５／２（＃Ｎ・＃Δ）であり、
＃Ｎが前記第１の作用群（Ｎ）の大きさであり、
＃Ｈが前記第２の作用群（Ｈ）の大きさであり、
＃Δが前記第１の部分集合（Δ）の大きさであり、
＃Ｍ０が前記第２の部分集合（Ｍ０）の大きさであり、
＃Ｍが前記主群（Ｍ）の大きさである、
請求項１乃至１３のいずれか一項に記載の電子計算デバイス。
【請求項１５】
主群（（Ｍ，＋））の２つの元を加算する電子計算デバイスで使用されるルックアップテーブルを計算するためのテーブル計算デバイスであって、前記主群が有限アーベル群
【数７７】
2018538620.tif 000079
であり、
前記第２の部分集合（Ｍ０）の元（ｍｉ）についての前記ルックアップテーブルを構築するテーブル作成ユニットであって、
前記主群（Ｍ）の入力された正規化元（（γ，Ｘ））を繰り返し選択し、
前記入力された正規化元（γＸ）と前記第２の部分集合（Ｍ０）の前記元（ｍｉ）との和（λＹｈ＝γＸ＋ｍｉ）を決定し、
前記第１の作用群（Ｎ）の元（λ）と、前記第１の部分集合（Δ）の元（Ｙ）とを、前記第１の作用群（Ｎ）の前記元（λ）と、前記第１の部分集合（Δ）の前記元（Ｙ）との積が前記和となるように決定し、
入力された環の元を前記第１の作用群（Ｎ）の前記元（λ）と、前記第１の部分集合（Δ）の前記元（Ｙ）とに写像する前記ルックアップテーブルにエントリを追加する
テーブル作成ユニット
を備える、テーブル計算デバイス。
【請求項１６】
主群（（Ｍ，＋））の２つの元を加算するための電子計算方法であって、前記主群が有限アーベル群
【数７８】
2018538620.tif 000080
であり、
前記主群に対して定義されるのは、
第１（Ｎ）及び第２（Ｈ）の作用群であって、前記第１（Ｎ）及び第２（Ｈ）の作用群が前記主群（Ｍ）に作用し、前記第２の作用群（Ｈ）が生成元（ｈ）によって生成される巡回群である（Ｈ＝（ｈ））、第１（Ｎ）及び第２（Ｈ）の作用群と、
前記主群（Ｍ）の第１の部分集合（Δ）であって、前記主群（Ｍ）の任意の元（ｍ）が、前記第１の作用群（Ｎ）の元（ｎ）と前記第１の部分集合（Δ）の元（Ｘ）との積（ｍ＝ｎＸ）として表され得る第１の部分集合（Δ）において、前記第１の作用群（Ｎ）の前記元（ｎ）と前記第１の部分集合（Δ）の前記元（Ｘ）とが、前記主群（Ｍ）の前記元（ｍ）の正規化表現と呼ばれる、第１の部分集合（Δ）と、
前記主群（Ｍ）の任意の元（ｍ）が複数の被加数の和として表され得る前記主群（Ｍ）の第２の部分集合（Ｍ０＝｛ｍ０，．．．，ｍｒ−１｝）であって、各被加数が前記第１の作用群（Ｎ）の元（γｔ）と、前記第２の部分集合（Ｍ０）の元（
【数７９】
2018538620.tif 000081
）と、前記生成元の冪乗（ｈｔ）との積（
【数８０】
2018538620.tif 000082
）であり、
前記複数の被加数における前記第１の作用群の複数の元が、前記主群（Ｍ）の前記元（ｍ）の一般化表現と呼ばれる、第２の部分集合（Ｍ０＝｛ｍ０，．．．，ｍｒ−１｝）と
であり、前記電子計算方法が、
前記第２の部分集合（Ｍ０）の各元（ｍｉ）についてルックアップテーブル（Ｐｉ）を記憶するステップであって、前記ルックアップテーブルが、前記主群（Ｍ）の正規化元（（γ，Ｘ））を入力として取り、前記入力を前記第１の作用群（Ｎ）の元（λ）と前記第１の部分集合（Δ）の元（Ｙ）とに写像し、前記第１の作用群（Ｎ）の前記元（λ）と前記第１の部分集合（Δ）の前記元（Ｙ）との積が、前記正規化元（γＸ）と前記第２の部分集合（Ｍ０）の前記元（ｍｉ）との和（λＹｈ＝γＸ＋ｍｉ）である、記憶するステップと、
第１の加算入力（α０Ｘ０）及び第２の加算入力（
【数８１】
2018538620.tif 000083
）を受信し、前記第１及び第２の加算入力が前記主群（Ｍ）の元であり、前記第１の加算入力が正規化表現で受信され、前記第２の加算入力が一般化表現で受信され、前記第１の加算入力及び前記第２の加算入力の前記主群（Ｍ）における和を計算するステップであって、
前記第２の加算入力の前記被加数を前記第１の加算入力に順次加算することによって部分和を計算するステップ
を有し、
前記第２の加算入力の被加数（
【数８２】
2018538620.tif 000084
）を前記部分和に加算するステップが、前記被加数における前記第２の部分集合（Ｍ０）の前記元（
【数８３】
2018538620.tif 000085
）についての、記憶された前記ルックアップテーブル（
【数８４】
2018538620.tif 000086
）を適用するステップを有する、
計算するステップと
を有する、電子計算方法。
【請求項１７】
主群（（Ｍ，＋））の２つの元を加算する電子計算デバイスで使用されるルックアップテーブルを計算するためのテーブル計算方法であって、前記主群が有限アーベル群（
【数８５】
2018538620.tif 000087
）であり、
前記主群（Ｍ）の入力された正規化元（（γ，Ｘ））を繰り返し選択するステップと、
前記入力された正規化元（γＸ）と前記第２の部分集合（Ｍ０）の前記元（ｍｉ）との和（λＹｈ＝γＸ＋ｍｉ）を決定するステップと、
前記第１の作用群（Ｎ）の元（λ）と、前記第１の部分集合（Δ）の元（Ｙ）とを、前記第１の作用群（Ｎ）の前記元（λ）と、前記第１の部分集合（Δ）の前記元（Ｙ）との積が前記和となるように決定するステップと、
入力された環の元を前記第１の作用群（Ｎ）の前記元（λ）と、前記第１の部分集合（Δ）の前記元（Ｙ）とに写像する前記ルックアップテーブルにエントリを追加するステップと
を有する、テーブル計算方法。
【請求項１８】
コンピュータ上で実行された場合に、請求項１６又は１７に記載の方法を実施するコンピュータプログラム命令を含む、コンピュータプログラム。
【請求項１９】
請求項１８に記載のコンピュータプログラムを含む、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子計算デバイス、電子計算方法、テーブル計算デバイス、テーブル計算方法及びコンピュータプログラム、並びにコンピュータ可読媒体に関する。
【背景技術】
【０００２】
ホワイトボックス暗号、より一般的にはソフトウェア難読化において、単純な値ではなく符号化された値に対して計算が行われることが多い。単純な値そのものではなく、符号化された値に対して計算が行われる場合、難読化されたソフトウェアのリバースエンジニアリングはより困難になる。
【０００３】
符号化の後では、コンピュータの組み込みのプリミティブを使用して、加算又は乗算などの通常の演算を行うことはできなくなる。符号化された値の単純な加算は、通常、値の加算の符号化とはならない。同じことが乗算にも当てはまる。公式では、ほとんどのｘ及びｙについて、Ｅ（ｘ）＋Ｅ（ｙ）≠Ｅ（ｘ＋ｙ）であり、Ｅは符号化関数を表す。
【０００４】
この問題の解決策は、加算（Ａ）及び乗算（Ｍ）のテーブルを導入することである。これらのテーブルは２つの符号化された値を入力として取り、加算又は乗算演算の符号化に対応する符号化された値を出力として生成する。テーブルは、Ａ（Ｅ（ｘ），Ｅ（ｙ））＝Ｅ（ｘ＋ｙ）、Ｍ（Ｅ（ｘ），Ｅ（ｙ））＝Ｅ（ｘｙ）として定義される。これらのテーブルは、符号化された値に対して算術が直接行われることを可能にする。
【０００５】
テーブルを使用する難読化された加算及び乗算には、少なくとも２つの欠点がある。まず、テーブルが非常に大きくなり得る。ｘ及びｙがｌビットで表される場合、各テーブルは２２ｌｌビットを必要とする。さらに、符号化は固定であり、これは攻撃者が可能な符号化のリストを作成する可能性を広げてしまう。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
これら及び他の懸案事項に対処する計算デバイスを有することは有利である。
【課題を解決するための手段】
【０００７】
本発明者は、背景技術で論じられた、テーブルあたり約２ｌｌビットが必要とされるものよりもはるかに小さいテーブルを使用して、加算が符号化された値に対して行われる手法を考案した。また、このシステムは、それを広く適用可能にする全てのアーベル群に適用可能である。さらに、小さいテーブル及び広い適用範囲を有することに加えて、可能性のある符号化の数は多いままであり、したがってセキュリティが向上する。
【０００８】
実際に、このシステムは、冗長な変数に頼ることなく、同一の元に対する異なる表現を可能にする。これは、複数の異なる符号化が簡単に崩壊しないことを意味する。また、このシステムは、内部で使用されるものとは異なる、外部データに使用される異なる符号化を可能にする（一般化表現）。また、可能な表現の数は、外部表現が二度以上使用される必要がない時点まで増加し、攻撃者が可能な符号化のリストを有効に使用する可能性をさらに低減させる。
【０００９】
本発明は多数の異なる可換群Ｍに適用される。アーベル群としても知られている可換群は、多数の異なる馴染みのある数学的構造、たとえば、ある数を法とする整数
【数１】
2018538620.tif 000003
又はある数及びある多項式を法とする多項式
【数２】
2018538620.tif 000004
を含む数学的概念である。一実施形態では、このシステムは可換環に拡張される。
【００１０】
本明細書でより完全に論じられるように、多数の可能性及び変形が存在する。任意の所与の実装において多数の変形のうちのいずれが選択されているかは、攻撃者には典型的には未知である。
【００１１】
計算デバイスは電子デバイスであり、モバイル電子デバイス、たとえば、携帯電話、セットトップボックス、コンピュータ、スマートカードなどでもよい。
【００１２】
本明細書に記載される算術は、広範囲の実際のアプリケーションに適用される。そのような実際のアプリケーションは、リバースエンジニアリングが防止されるべきである、銀行業務アプリケーションなどの、プライベートハードウェア上で動作する安全なアプリケーションを含む。他のアプリケーションは、データの不慮の漏洩が防止されるべきであるアプリケーションを含む。プログラムがプライベートデータを解放するように騙された場合、漏洩したデータが符号化されていれば、これはあまり懸念されることではない。また、算術はアプリケーションを動作させるサーバにも適用される。ユーザが符号化された形式でデータを送受信する場合、プライバシーが向上する。
【００１３】
本発明による方法は、コンピュータで実施される方法として、若しくは専用ハードウェアで、又はその両方の組み合わせで、コンピュータ上に実装される。本発明による方法の実行可能コード又はその一部は、コンピュータプログラム製品に記憶される。コンピュータプログラム製品の例は、メモリデバイス、光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどを含む。好ましくは、コンピュータプログラム製品は、前記プログラム製品がコンピュータ上で実行された場合に本発明による方法を実施するためのコンピュータ可読媒体上に記憶された非一時的プログラムコード手段を含む。
【００１４】
好ましい実施形態では、コンピュータプログラムは、コンピュータプログラムがコンピュータ上で実行された場合に、本発明による方法の全てのステップを実施するように適合されたコンピュータプログラムコード手段を含む。好ましくは、コンピュータプログラムは、コンピュータ可読媒体上に具現化される。
【００１５】
本発明のさらなる詳細、態様、及び実施形態が、図面を参照して単なる例として説明される。図中の要素は簡潔かつ明瞭にするために示されており、必ずしも縮尺通りに描かれていない。図面では、説明済みの要素に対応する要素は同一の参照番号を有する場合がある。
【図面の簡単な説明】
【００１６】
【図１ａ】計算デバイス１００の一実施形態の一例を概略的に示す図である。
【図１ｂ】加算ユニット１３０の一実施形態の一例を概略的に示す図である。
【図１ｃ】乗算ユニット１４０の一実施形態の一例を概略的に示す図である。
【図１ｄ】計算デバイス１００’の一実施形態の一例を概略的に示す図である。
【図２】計算デバイス１０１の一実施形態の一例を概略的に示す図である。
【図３】計算デバイスで使用される増分テーブルを計算するためのテーブル計算デバイス２００の一実施形態の一例を概略的に示す図である。
【図４】計算方法３００の一実施形態の一例を概略的に示す図である。
【図５】テーブル計算方法４００の一実施形態の一例を概略的に示す図である。
【図６ａ】一実施形態によるコンピュータプログラムを含む書き込み可能部分を有するコンピュータ可読媒体を概略的に示す図である。
【図６ｂ】一実施形態によるプロセッサシステムの表現を概略的に示す図である。
【発明を実施するための形態】
【００１７】
本発明は多くの異なる形の実施形態が可能であるが、図面に示され、本明細書で詳細に説明されるのは１つ又は複数の特定の実施形態であって、本開示が本発明の原理の例示と見なされるべきであり、本発明を図示及び説明される特定の実施形態に限定するものではないという理解の下でのものである。
【００１８】
以下では、理解のために、動作中の実施形態の要素が説明される。しかしながら、それぞれの要素が、それらによって実施されるように記載された機能を実施するように構成されることは明らかであろう。
【００１９】
さらに、本発明は実施形態に限定されず、本発明は上述の、又は相異なる従属請求項に記載された各新規の特徴又は特徴の組み合わせの中にある。
【００２０】
図１は電子計算デバイス１００の一実施形態を概略的な形で示す。計算デバイス１００は主群（Ｍ，＋）の２つの元を加算するように構成される。主群は元の集合Ｍと、Ｍの元の各ペアに対して定義された、＋で示される２値演算とで表される。主群は群であるための通常の数学的要件を満たす（加算は結合法則を満たし、両側単位元が存在し、群の各元は逆元を有する）。さらに、群は有限かつアーベルに制限される。後者は群がある素数ｐｉ及び指数ｋｉについて、
【数３】
2018538620.tif 000005
と表されることを示す。主群について、加算は＋と表記される。群の演算を＋と表記、又はその単位元を０と表記するとしても、これは計算デバイスが従来の算術的意味での加算に制限されなければならないことを意味しないことに留意されたい。たとえば、ある法を法とする加算の群は、計算デバイスが適用されるアーベル群であるが、これに制限されず、代わりに任意のアーベル群に適用される。全ての群及び集合は有限であり、空ではない。
【００２１】
計算デバイス１００は、群における加算を計算するように構成される。群の元は、それらを符号化することによって難読化される。計算デバイスをリバースエンジニアリングしようとする攻撃者は使用された符号化を知らないので、群の元の難読化はセキュリティにとって有益である。したがって、たとえ攻撃者が計算デバイスの内部動作を観測できたとしても、そのデバイスが何を計算しているのかが分からない。
【００２２】
興味深いことに、計算デバイス１００は、本特許のために名付けられた２つの異なる手法、すなわち、正規化表現及び一般化表現によって群の元を符号化する。本発明者は、そのような表現が全ての有限アーベル群に対して発見されることを見出した。さらに、群は正規化表現及び一般化表現の多数の異なる選択肢を可能にする。また、後者はセキュリティを向上させ、その理由は、１つ又は少数の符号化しか利用できないのであれば、一般的な符号化システムの知識を有する攻撃者は、全ての可能な符号化を試み、どの符号化が使用されたかを解明するためである。しかしながら、符号化の多数の選択肢が利用可能である場合、後者の攻撃ラインは実行不可能になる。
【００２３】
また、正規化表現及び一般化表現の両方は、同一の元の複数の異なる表現を可能にする。特に、一般化表現は、同一の群の元の多数の異なる表現を可能にするように容易に適合される。同様に、これはセキュリティにとって有益であり、１つの可能性のある攻撃ラインは、群の表現をより従来的な表現に写像する変換テーブルを作成してみることであろう。しかしながら、同一の元に対してより多数の表現が存在する場合、これはより困難である。
【００２４】
正規化表現及び一般化表現は、以下で論じられるいくつかの集合に対して定義される。これらの集合の選択は、表現と、それらが加算される方式、具体的には、加算で使用されるルックアップテーブル（以下でさらに論じられる）とを決定する。
【００２５】
主群に対して定義されるのは、第１の作用群Ｎ及び第２の作用群Ｈである。これらの群の両方が主群Ｍに作用する。注：Ａの全てのｇ及びＢのｘについて、群Ｂの元ｇ・ｘが定義される場合、群Ａは群Ｂに作用する。群Ａの単位元はｘを変化させず、また、Ａの任意のｇ１及びｇ２について、（ｇ１ｇ２）・ｘ＝ｇ１・（ｇ２・ｘ）である。
【００２６】
第２の作用群Ｈは、生成元（ｈ）によって生成される巡回群である（Ｈ＝（ｈ））。両方の作用群は有限である。ｈｋが単位元となるような、次数と呼ばれる、ある指数ｋが存在する。第１及び第２の作用群の両方は、数学的意味での群である。主群への作用群の作用は積と呼ばれる。作用群の単位元は１と呼ばれる。したがって、たとえば、ｈｋ・ｘ＝１・ｘ＝ｘである。第２の作用群は、好都合な表記のために、右作用として表記されていることに留意されたい。
【００２７】
第１の作用群Ｎ及び第２の作用群Ｈは、全てのｎ∈Ｎ、ｍ∈Ｍ、ｈ∈Ｈについて、（ｎｍ）ｈ＝ｎ（ｍｈ）であるという性質を有するように選択されている。
【００２８】
第１及び第２の作用群は、たとえば、主群Ｍの自己への同型写像の集合などの、Ｍの自己同型群の部分群として選択される。これは、第１及び第２の群が常に選択され得ることを示している。第２の作用群は、Ｍの自己同型群の元ｈを選択し、Ｈ＝＜ｈ＞、すなわち、ｈにより生成される群を設定することによって選択され得る。たとえば、第１及び第２の作用群は、行列群として得られる。
【００２９】
必須ではないが、実施形態では、第１の作用群は
【数４】
2018538620.tif 000006
の行列部分群Ｎであり、ｈは第１の作用群Ｎの生成元と可換である他の行列である。この場合、列ベクトルをＭの元に使用し、標準的な行列乗算によって全ての行列を左に書くことができる。作用群及びＭそれぞれについての行列及びベクトルの表記は都合が良く、たとえば作用群において計算するために、又は加算テーブルを計算するために使用されるが、この形式は、たとえば符号化された表現が使用される計算デバイス自体で使用される必要はない。
【００３０】
計算デバイス１００における計算は、作用群で行われる計算を必要とする。作用群が、たとえば第２の作用群と同様に巡回的である場合、これは、群の次数を法とする指数で計算することによって行われる。いずれにしても、作用群での群演算を表すためにテーブルが使用される。
【００３１】
また、主群に対して定義されるのは、主群Ｍの第１の部分集合Δであって、主群Ｍの任意の元ｍがｍ＝ｎＸとして、たとえば、第１の作用群Ｎの元ｎと第１の部分集合Δの元Ｘとの積として表され得るようなものである。これの他の言い方は、第１の作用群Ｎの作用の下での第１の部分集合Δの軌道が主群と等しいということである。
【００３２】
第１の作用群Ｎ及び主群Ｍが与えられた場合、Ｎ・Ｍ＝Ｍであるので、そのような第１の部分集合Δは存在が保証される。たとえば、第１の部分集合は、Ｎによって誘導されるＭにおける軌道を決定し、各軌道の少なくとも１つの元を選択することによって発見される。最小の大きさの第１の部分集合Δは、各軌道のちょうど１つの元を選択することによって発見される。Ｍの２つの元ａ及びｂは、ｎａ＝ｂとなるようなＮのｎが存在する場合、同一軌道にある。同一軌道からより多数の元を選択することは、正規化表現の数を増加させる。
【００３３】
Ｍの任意の元ｍは、ｍ＝ｎＸとなる第１の作用群Ｎの元ｎと、第１の部分集合Δの元Ｘとのペアとして表される。後者の表現は正規化表現と呼ばれる。異なる第１の作用群及び／又は異なる第１の部分集合を選択することによって、多数の異なる正規化表現が得られる。
【００３４】
内部的には、ペア（ｎ，Ｘ）は整数のペアで表される。たとえば、元ｎは、Ｎの特定の元を符号化する整数で表される。たとえば、元Ｘは、第１の部分集合Δの特定の元を符号化する整数で表される。この符号化は正準である必要はない。たとえば、整数の符号化は、第１の作用群及び／又は第１の部分集合にランダムな順序を与え、第１の作用群及び／又は第１の部分集合の元をその順序におけるインデックスとして表すことによって得られる。代替的には、元ｎ及びＸは、従来の表現、たとえば正準表現で表される。後者の表現は、それ自体が符号化され、たとえば暗号化される。
【００３５】
また、主群に対して定義されるのは、主群Ｍの第２の部分集合Ｍ０＝｛ｍ０，．．．，ｍｒ−１｝であって、主群Ｍの任意の元ｍが複数の被加数の和として表され得、各被加数が、第１の作用群Ｎの元γｔと、第２の部分集合Ｍ０の元ｍｉｔと、生成元の冪乗ｈｔとの積であるようなものである。たとえば、
【数５】
2018538620.tif 000007
である。一般化元は、たとえば、
【数６】
2018538620.tif 000008
と記述される。後者の場合、最大の指数は第２の作用群の次数、すなわち、ｈの次数マイナス１である。より一般的には、インデックスｔはλｋ−１、すなわち、ｈの次数の倍数マイナス１に制限される。全ての群についてではないが、ｋ−１の最大指数で十分であることが多い。以下、特に明記しない限り、一般化表現が高々ｋ−１のｈの冪乗を使用すると一般に仮定する。それにもかかわらず、たとえば、より多くの一般化表現が所望される場合、以下に与えられる例はより大きい指数に拡張される。
【００３６】
Ｍの全ての元が表されることを可能にする第２の部分集合Ｍ０が与えられた場合、集合ｎＭ０ｈｊも有効な第２の部分集合であり、ここでｎ及びｈｊはそれぞれ第１及び第２の作用群のものである。
【００３７】
一般化形式の元は２つの系列、すなわち、｛γ０，γ１，．．．，γｋ−１｝及び
【数７】
2018538620.tif 000009
又は｛ｉ０，ｉ１，．．．，ｉｋ−１｝と表される。後者の系列は、元をリストにおけるそれらのインデックスによって表す一例である。また、元γｉは整数として、たとえば、Ｎのリスト表現におけるインデックスとして表される。一実施形態では、第２の部分集合は単一の元ｍ０を含み、この場合、第２の系列は明示的である必要はなく、暗黙的でもよい。一実施形態では、系列は、Ｍの全ての元について同一の長さを有する。一実施形態では、系列は、０からｈの限度までの、たとえば、ｋ−１又はλ＞１でのλｋ−１までのｈの各冪乘についてのエントリを有する。
【００３８】
また、２つの系列は単一の系列、たとえば、
【数８】
2018538620.tif 000010
と表される。
【００３９】
以下の境界、＃Ｎ・＃Δ≧＃Ｍ、及び（＃Ｎ・＃Ｍ０）＃Ｈ≧＃Ｍを有し、ここで、
＃Ｎは第１の作用群（Ｎ）の大きさであり、
＃Ｈは第２の作用群（Ｈ）の大きさであり、
＃Δは第１の部分集合（Δ）の大きさであり、
＃Ｍ０は第２の部分集合（Ｍ０）の大きさであり、
＃Ｍは主群（Ｍ）の大きさである。
【００４０】
また、第１の作用群（Ｎ）、第２の作用群（Ｈ）、第１の部分集合（Δ）、第２の部分集合（Ｍ０）、及び主群（Ｍ）の大きさはいずれも空ではない。所望であれば、正規化表現の数は、主群Ｍの大きさに比べて上限が与えられ得、たとえば、いくつかの実施形態では、２＃Ｍ≧＃Ｎ・＃Δである。これは、正規化元の数を制限することが加算テーブルの大きさを減少させるので、利点を有する場合がある。しかしながら、これは必須ではないことに留意するべきであり、具体的には、表現の数、特に一般化表現の数が、群の大きさに比べて大きいことが望ましい場合がある。たとえば、正規化表現の数は、より大きい第１の作用群又はより大きい第１の部分集合を選択することによって増加し、一般化表現の数は、ｈに対してより大きい指数を許可するか、又はより大きい作用群又はより大きい第２の部分集合を選択することによって増加する。
【００４１】
図１はオペランド記憶装置１５０を示す。オペランド記憶装置１５０は、加算対象の群Ｍの元を記憶する。また、加算以外の他の演算、たとえば乗算などが、オペランド記憶装置１５０内の元に対して行われる。オペランド記憶装置１５０は、正規化表現及び一般化表現のオペランドを含む。オペランド記憶装置１５０の一部は、正規化表現の１つ又は複数の定数加算入力を記憶するように構成される定数記憶装置１５２である。また、オペランド記憶装置１５０は、一般化形式の定数を含む。Ｍの元が加算されたか、さもなければ計算された後、それらはオペランド記憶装置１５０に、たとえば作業メモリとして再び記憶され得る。
【００４２】
計算デバイス１００は、第２の部分集合Ｍ０の各元ｍｉについて、ルックアップテーブルＰｉを記憶する加算テーブル記憶装置１１０を備える。そのようなルックアップテーブルは、主群Ｍの正規化元（γ，Ｘ）を入力として取り、入力を第１の作用群Ｎの元λと第１の部分集合Δの元Ｙとに写像して、第１の作用群Ｎの元λと第１の部分集合Δの元Ｙと積が、正規化元γＸと、第２の部分集合Ｍ０の前記元ｍｉとの和になる、すなわち、λＹｈ＝γＸ＋ｍｉとなるようにする。たとえば、ルックアップテーブルＰｉは、λＹｈ＝γＸ＋ｍｉとなるようにＰｉ（γ，Ｘ）＝（λ，Ｙ）を写像する。一実施形態では、元ｍｉについてのルックアップテーブルは、正規化入力を正規化出力元に写像して、正規化入力プラス（群Ｍの）元ｍｉが、（第２の作用群の作用を使用して）生成元ｈの正規化出力倍と等しくなるようにする。
【００４３】
ルックアップテーブルが正規化形式のＭの単一の元のみを入力として取ることに留意されたい。テーブルの大きさは正規化元の数に見合っており、これはほぼＭ自体の大きさである。それにもかかわらず、そのようなテーブルはＭの２つの元を加算するために使用される。２つの入力を取って和を計算するテーブルは、Ｍの大きさの二乗で増加することに留意されたい。これは、群Ｍの大きさが大きくなるように、たとえば５１２より大きく、又は１０２４個の元より大きくなるように選択されても、テーブルの大きさが二次的にではなくほぼ線形に増加することを意味する。
【００４４】
計算デバイス１００は加算ユニット１３０を備える。加算ユニット１３０は、たとえば加算ユニット１３０のインターフェースなどを介して第１の加算入力及び第２の加算入力を受信するように構成され、第１の加算入力及び第２の加算入力は主群Ｍの元である。第１の加算入力は正規化表現、たとえば、α０Ｘ０で受信され、ここでα０は第１の作用群Ｎのものであり、Ｘ０は第１の部分集合のものである。第２の加算入力は一般化表現、たとえば、
【数９】
2018538620.tif 000011
で受信される。加算ユニット１３０は、主群Ｍにおける第１及び第２の加算入力の和を計算するように構成される。
【００４５】
加算ユニット１３０は、第２の加算入力の被加数を第１の加算入力に順次加算することによって部分和を計算するように構成される。第２の加算入力の被加数
【数１０】
2018538620.tif 000012
を部分和に加算することは、前記被加数における第２の部分集合Ｍ０の元
【数１１】
2018538620.tif 000013
についての、加算テーブル記憶装置１１０に記憶されたルックアップテーブル
【数１２】
2018538620.tif 000014
を適用することを含む。
【００４６】
図１ｂは加算ユニット１３０の一実施形態を示す。加算ユニット１３０は、第１の加算入力１３１と第２の加算入力１３２とを受信する。加算ユニット１３０は、第２の加算入力１３２から得られた被加数を第１の加算入力元に反復的に加算するように構成される部分加算ユニット１３４を備える。たとえば、部分加算ユニット１３４は、第１の加算入力１３１に初期化された部分和１３３に加算する。加算は、記憶装置１１０からのルックアップテーブルの適用を含む。実施形態の数学的詳細が以下でさらに論じられる。
【００４７】
たとえば、加算ユニットは、部分和１３１を最初は第１の加算入力α０Ｘ０に設定し、第１の加算入力の被加数にわたってループし、各ループにおいて、第１の加算入力
【数１３】
2018538620.tif 000015
の被加数を加算することによって部分和を更新するように構成される。以下、加算ユニット１３０によって第１及び第２の加算入力を加算するために使用される例示的なアルゴリズムが与えられる。
【００４８】
第１の加算入力１３１は主群の元（α０，Ｘ０）に初期化され、ここでα０∈Ｎ及びＸ０∈Δであり、たとえば、第１の加算入力１３１はペア｛α０，Ｘ０｝と表される。第２の加算入力は主群の元
【数１４】
2018538620.tif 000016
であり、ここでｋは生成元の次数であり、γｉ∈Ｎ及びｍｉ∈Ｍ０であり、ｈは生成元である。λ＝１を仮定するが、以下の式はλ＞１の場合に直接拡張されることに留意されたい。たとえば、第２の加算入力１３２は、系列
【数１５】
2018538620.tif 000017
と表される。
【００４９】
加算ユニット１３０は、加算テーブルＰの１つを適用した結果として得られる以下の部分的な結果の系列を計算するように構成される。以下、ルックアップテーブルＰｉの正規化入力及び出力は、第１の作用群Ｎの元と第１の部分集合Δの元とのペアとして表されている。
【数１６】
2018538620.tif 000018
【００５０】
たとえば、加算ユニット１３０は、部分和を最初は第１の加算入力（α０，Ｘ０）に設定するように構成される。たとえば０からλｋ−１までの生成元の各指数ｔについて、部分加算ユニット１３４は、冪乗
【数１７】
2018538620.tif 000019
に対応する被加数を加算することによって、現在の部分和（αｔ，Ｘｔ）から次の部分和（αｔ＋１，Ｘｔ＋１）を得る。後者は、
【数１８】
2018538620.tif 000020
についてのルックアップテーブル
【数１９】
2018538620.tif 000021
を（γｔ−１γｔ−１αｔ，Ｘｔ）に適用することを含み、ここでγ−１は第１の作用群における単位元であり、（αｔ，Ｘｔ）は部分和１３３に記憶された現在の部分和である。
【００５１】
部分和１３３内の部分和（αｉ，Ｘｉ）は、第１及び第２の加算入力の部分和を表す。部分和（αｉ，Ｘｉ）は前記和と同一ではないが、値γｔ−１αｔＸｔｈｔは部分和、たとえば、第１の加算入力と、第２の加算入力の最初のｔ個の被加数との和と等しくなる。部分和が値γｔ−１αｔＸｔｈｔに等しくなるように部分和を表すことは効率的であることが分かっている。これは計算の短い系列をもたらす。しかしながら、他の表現も可能であり、具体的には、部分和は、部分和に直接（定数なしで）等しい正規化元によって表され得るが、これは不必要に加算を複雑にする。部分和は正規化表現であることに留意されたい。加算テーブルの定義及び部分和を代入することにより、上記のアルゴリズムが実際に正しい結果を生成することが検証され得る。アルゴリズムは第１の作用群における計算を含むことに留意されたい。そのような計算は任意の従来の手法で、たとえば、第１の作用群の何らかの正準表現を使用して、又は第１の作用群における計算の結果を示すテーブルを記憶するなどして行われる。
【００５２】
アルゴリズムの結果、上記アルゴリズムの最終的な部分和（αｋ，Ｘｋ）について、（γｋ−１αｋＸｋ）が第１及び第２の加算入力の和に等しくなる。所望であれば、加算ユニット１３０は、γｋ−１αｋが計算されるさらなるステップと共に構成される。ペア｛γｋ−１αｋ，Ｘｋ｝は正規化表現での和を表す。以下、最終的な正規化出力が、第１の作用群の元にγｋ−１を乗算することによって変換されていると仮定する。しかしながら、この最後のステップは必須でないことに留意されたい。たとえば、最後の乗算は、同一の元に行われる次の演算と組み合わせられる。特に、難読化された実装では、補正の乗算を延期する際に利点がある。たとえば、最終的な部分和は、符号化された和と見なされる。加算の最終的な正規化出力を得るためには、γｋ−１も必要であり、それは攻撃者には入手できない場合がある。
【００５３】
一実施形態では、加算ユニット１３０は、入力として２つの元を取り、１つは正規化表現であり、１つは一般化表現であり、正規化表現の元を出力として生成する。一実施形態では、加算ユニット１３０は、複数の元、たとえば３つ以上の元を入力として取り、１つは正規化表現であり、残りは一般化表現であり、正規化表現の和を出力として生成する。たとえば、全ての一般化元が加算されるまで、正規化元が各一般化元に加算されて、正規化元が部分和として生成され、複数の元の最終的な和は正規化表現である。
【００５４】
上記の例示的なアルゴリズムは、正規化元に一般化（非正規化）元を加算する。加算は正規化入力を使用する。正規化入力は、一般化されたオペランドを正規化することによって、或いは前の加算から得られる出力若しくは他の正規化関数、又は正規化定数を使用することによって得られる。
【００５５】
一実施形態では、計算デバイス１００への外部入力は、非正規化されるように選択される。これは値の繰り返しを回避し、一般に、正規化元よりもはるかに多くの非正規化元を有する。たとえば、一実施形態では、いくつかの非正規化元が使用され、その後は再度使用されない。
【００５６】
たとえば、入力値ｘ及び定数ｃによってｘ＋ｃを計算することが望まれる場合、正規化形式で与えられたｃと、非正規化形式のｘとによってｃ＋ｘを計算する。ｄ＋ｅ＝ｃによって（ｄ＋ｘ）＋ｅを計算する方がさらに良く、ここで、ｄは正規化形式であり、ｘ及びｅは非正規化形式である。後者の形式では、計算はｃの正規化値を公開せず、これは攻撃者にとって処理中に現れる値の下に隠された実際の値を知ることを困難にする。値ｃ又は値ｄ及びｅは、オペランド記憶装置１５０、たとえば定数記憶装置１５２に記憶される。値ｄはランダムに選択され、値ｅはｄ＋ｅ＝ｃ．ｓとなるように選択される。
【００５７】
２つの非正規化値の加算を計算する必要がある場合、一連の演算を開始することができる正規化定数（又は複数の定数）を含めることが可能である。たとえば、０＋ｘ＋ｙの正規化表現は、ｘ及びｙが両方とも一般化されていない場合、ｘ＋ｙの計算を置き換えることができる。定数０は正規化元として表される。２つの正規化元を加算する必要がある場合、それらのうちの１つ、たとえば第２のものを一般化表現に置き換えることが可能である。たとえば、これは、全てのＸ∈Δについて、Ｘの一般化表現を写像するテーブルなどの写像によって行われる。一実施形態では、写像はｘの複数の一般化表現を含み、その結果、Ｘの一般化表現の選択は一意でなく、選択を難読化するためにある程度の柔軟性を提供する。
【００５８】
一実施形態では、計算デバイス１００は、電子計算デバイスの外部のコンピュータから１つ又は複数の加算入力を受信するように構成されるネットワークインターフェースを備える。１つ又は複数の加算入力は一般化表現であり、１つ又は複数の加算入力に加えて、他の入力も受信され、その一部は正規化表現でもよい。定数記憶装置１５２には、１つ又は複数の定数加算入力が正規化表現で記憶される。計算デバイス１００は、ネットワークインターフェースを介して受信された一般化形式の選択された加算入力と、定数記憶装置１５２からの正規化形式の選択された定数加算入力とを加算ユニットを使用して加算するように構成される。一般に、計算デバイス１００は、オペランド記憶装置１５０内のどのオペランドに対して、加算などのどの演算が行われるかを制御するように構成される計算コントローラを備える。計算コントローラは別途図示されていない。一実施形態では、定数記憶装置は、ｄが正規化され、ｅが一般化されたペア（ｄ，ｅ）を含み、定数ｄが選択された加算入力に最初に加算され、続いて定数ｅが加算される。得られた正規化元は、オペランド記憶装置１５０に記憶される。
【００５９】
正規化表現よりさらに多数の一般化表現が存在するように計算システムを構成することは比較的容易である。デバイスの外部でより多数の選択肢を有することは、外部の通信におけるセキュリティを向上させる。たとえば、一実施形態では、複数のセンサ（又は他のデバイス）が、一般化表現で符号化されたセンサデータ（又は他のデータ）を通信する。各センサは全ての一般化表現のプライベートな部分集合へのアクセスを有し、たとえば、前記複数のプライベートな部分集合のうちの２つが、たとえば、前記２つのプライベートな部分集合のいずれかの大きさの１０％未満である元の閾値を超えて重複することはない。一実施形態では、前記複数のプライベートな部分集合のうちの２つが重複することはない。これは、２つのセンサが異なる表現を使用してそれらのデータを通信するという利点を有する。センサへのアクセスを有し、センサデータとその一般化表現との関係をどうにかして発見した攻撃者は、この写像を使用して、異なるセンサから傍受された通信を復号することはできない。複数の、さらには多数の一般化表現を作成することがより簡単であっても、任意の所与の群の元は、複数の正規化表現によって表されてもよいことに留意されたい。
【００６０】
一実施形態では、計算デバイス１００は、変換入力を受信するように構成される変換ユニット１５０を備える。
【００６１】
たとえば、変換入力は一般化形式であり、正規化形式に変換される。この場合、変換ユニット１５０は、正規化形式の主群の元を加算することによって、変換入力を正規化形式に変換するように構成される。その元は０でもよい。変換ユニット１５０は非ゼロの元を加算してもよく、その場合、たとえば符号化として入力が変更されるように、後の演算が適合される。変換ユニット１５０は、和が０になる複数の元であって、そのうちの少なくとも１つが正規化形式であるものを加算してもよい。
【００６２】
たとえば、変換入力は正規化形式であり、一般化形式に変換される。この場合、変換ユニット１５０は、少なくとも第１の部分集合の元を一般化形式に写像する変換テーブルを記憶するように構成される。たとえば、写像に従って、正規化形式ｎＸのＸが
【数２０】
2018538620.tif 000022
に写像される場合、正規化形式ｎＸは
【数２１】
2018538620.tif 000023
に写像する。Ｘを表す系列をｎＸを表す系列に変換することは、第１の作用群において計算することによって行われる。
【００６３】
変換ユニットは、表現にかかわらず主群の２つの元の加算を可能にする。たとえば、２つの元が共に正規表現である場合、そのうちの１つが一般化表現に変換される。たとえば、２つの元が共に一般化表現である場合、そのうちの１つが正規表現に変換される。
【００６４】
計算デバイス１００の一実施形態は関数ユニット１２４を備える。関数ユニットは、線形関数ｆを一般化形式の関数入力に適用するように構成される。たとえば、一般化形式はオペランド記憶装置１５０から受信される。
【００６５】
関数入力は、第１の作用群Ｎの元γｔと、第２の部分集合Ｍ０の元
【数２２】
2018538620.tif 000024
と、生成元の冪乗ｈｔとの積
【数２３】
2018538620.tif 000025
を入力として取り、積を、線形関数を積に適用した結果に写像するテーブルが記憶される線形関数テーブル記憶装置を備える。関数ユニットは、線形関数テーブル記憶装置のテーブルを関数入力の被加数に適用するように構成される。たとえば、入力
【数２４】
2018538620.tif 000026
は出力
【数２５】
2018538620.tif 000027
に写像される。一般化表現での可能な被加数の数は、一般化表現の数よりはるかに少ないことに留意されたい。したがって、線形関数ｆを計算するために必要とされるテーブルは、任意の一般化元を入力として取るテーブルに必要とされるよりもはるかに小さい。非線形演算が主群Ｍの元に実行されてもよく、たとえばテーブルによって実行される。
【００６６】
本明細書で説明された原理は、広範なアーベル群に適用可能であり、多数の表現を可能にする。以下、これらの多数の可能性の中のいくつかの選択肢が与えられる。本発明者によって行われた広範な実験は、これらの選択肢の全てについて、多数の可能な主群Ｍが可能であることを示している。
【００６７】
一実施形態では、ｈの次数が制限される。たとえば、一実施形態では、第２の作用群Ｈは３つの元を有するか、又は第２の作用群Ｈは２つの元を有する。より一般的には、次数は４若しくは８又は１６未満などである。組み合わせて、一般化表現における指数の上限は、ｋ−１となるように取られる。加算中に取られるステップの数は、Ｈの大きさと共に増加する。たとえば、２つ又は３つの元を有する比較的小さいＨを選択することにより、加算はより少ないステップを有し、計算はより高速になる。
【００６８】
一実施形態では、第２の部分集合Ｍ０は少なくとも２つの元を有する。第２の部分集合の元の数を増加させることは、一般化表現の数を増加させる。具体的には、一般化表現の数は、任意の一般化表現が一度しか使用される必要がない時点まで増加する。後者は、一般化表現から変換テーブルを簡単に構成することに基づく攻撃を完全に排除する。
【００６９】
一実施形態では、第２の部分集合の元の数が制限される。第２の部分集合の大きさが増加するにつれて、加算記憶装置１１０内のテーブルの数も増加する。たとえば、第２の部分集合の元の数は、４若しくは８又は１６未満などである。具体的には、第２の部分集合の元の数は１でもよい。一実施形態では、第２の部分集合Ｍ０は、単位元でない１つの元を有する。
【００７０】
上記のオプションは組み合わせられる。たとえば、一実施形態では、第２の部分集合は単一の元のみを有し、第２の作用群はちょうど２つの元を有する。十分に大きい第１の作用群を選択することにより、Ｍの全ての元が依然として表現される。
【００７１】
実装に都合が良いのは、Ｎが巡回群、たとえば少なくとも３つの元を有する巡回群である選択肢である。この場合、Ｎはいくつかの元によって生成され、Ｎの元は生成元の指数として表される。指数は符号化された形式で記憶される。有利なことに、生成元は秘密に保たれ得る。
【００７２】
アーベル群Ｍは法ｎを法とする整数の群
【数２６】
2018538620.tif 000028
である。剰余数系においてこれらの群の倍数を組み合わせることにより、任意の大きい数に対して算術が行われる。有利には、これらの群において指数を表す数は、実施形態の１つ又は複数に従って表され、再帰的定義を生成する。法ｎは、たとえば８より大きい。
【００７３】
また、アーベル群Ｍは、たとえば、ｌ≧４のアーベル群
【数２７】
2018538620.tif 000029
であり、２ｌ個の元を有することは（群
【数２８】
2018538620.tif 000030
と混同されるべきでない）、２値計算、特にＸＯＲ演算に特に適している。
【００７４】
上記の群は標数２を有する。これは小さい第２の作用群Ｈ、特に２つの元を有する第２の作用群Ｈと組み合わせられ得る。たとえば、Ｈは元ｈ＝−１によって生成される。この場合、十分な一般化元を得るためには、一般化表現の生成元の冪乗ｈｔは、次数マイナス（ｋ−１）を超えることが許される必要がある。一実施形態では、一般化表現における指数は、高々次数の２倍マイナス１であり、たとえば、ｔ≦２ｋ−１である。
【００７５】
主群Ｍが２より大きい標数を有するか、又は第２の作用群の次数が２より大きい場合、一般化表現のｈの指数は、高々次数マイナス１に制限され、たとえば、ｔ≦ｋ−１である。有利なことに、生成元は秘密に保たれ得、テーブルは比較的小さい。一般化元の数は、たとえば、より大きいＨ、Ｍ０などを選択することによって、所望の大きさとなる。
【００７６】
いくつかの実施形態では、たとえば、外部入力を保護するために一般化元が使用される場合、正規化元より多数の一般化元が存在することが望ましい。これは、十分に大きい第２の作用群、許容可能な指数、第２の部分集合、さらには第１の作用群を選択することによって得られる。一実施形態では、（＃Ｎ・＃Ｍ０）＃Ｈ≧３／２＃Ｎ・＃Δであり、すなわち、一般化表現の数は、正規化表現の数の少なくとも３／２であり、より詳細には、（＃Ｎ・＃Ｍ０）＃Ｈ≧５／２＃Ｎ・＃Δなどである。
【００７７】
上記で論じられたように、第１の部分集合Δの元は、第１の作用群によって主群Ｍに誘導される軌道から選択される。一実施形態では、第１の部分集合Δの元は、第１及び第２の作用群並びに第２の部分集合から得られ、すなわち、第１の作用群Ｎの元と、第２の部分集合の元と、第２の作用群Ｈの元との積を総和して形成される元に、生成元の、生成元の次数マイナス１乘を加えたものである。第２の作用群の元は、高々生成元の次数マイナス２乗の生成元ｈの冪乗である。すなわち、第１の部分集合Δの元が、
【数２９】
2018538620.tif 000031
となるように選択され、βｉは第１の作用群から取得され、ｍは第２の部分集合から取得される。これは、機能する第１の部分集合を以下のように生成することが分かる：任意の元が
【数３０】
2018538620.tif 000032
と記述され得るので、後者は
【数３１】
2018538620.tif 000033
と記述され、これは第１の作用群の元（γｋ−１）と、上記で定義された第１の部分集合の元との積である。典型的には、第１の部分集合には他の多数の可能な選択肢があり、そのうちのいくつかはこの例よりも小さくてもよいことに留意されたい。しかしながら、これは、第２の部分集合が与えられた場合、少なくともこのようにして適切な第１の部分集合が構成されることを示す。
【００７８】
第１の部分集合の上記の構成は、第２の部分集合Ｍ０が単一の元からなる状況にも適している。この場合、元β０ｍ０ｈ０＋・・・βｋ−２ｍ０ｈｋ−２＋ｍ０ｈｋ−１を取得し、第１の部分集合の大きさの大幅な削減を与える。一般に、小さい第１の部分集合を有することは、正規化表現の数を減少させ、これは加算テーブルの大きさを削減する。加算テーブルは、特に難読化された実装、たとえば符号化された実装のコードサイズの重要な部分を表す。
【００７９】
以下、主群、作用群、及び部分集合のいくつかの例が与えられる。
【００８０】
第１の例では、主群は群
【数３２】
2018538620.tif 000034
である。Ｍの元は、２つの要素の列ベクトルとして表され得る。第１の作用群Ｎは行列
【数３３】
2018538620.tif 000035
によって生成され、大きさ４を有する。第２の作用群は元−１によって生成され、Ｈ＝＜−１＞であり、大きさ２を有する。群Ｈの元は＋Ｉ及び−Ｉと表され、Ｉは単位行列を表す。第２の部分集合は、単一の元
【数３４】
2018538620.tif 000036
を有する集合として選択される。Ｍの全ての元は一般化表現でγ０ｍ０−γ１ｍ０と記述され、ここでγ０及びγ１はＮのものである。第１の部分集合は、上記の構成を使用して集合｛ｘｍ０−ｍ０｝として選択され、ここでｘはＮの全ての元に及ぶ。主群、第１及び第２の作用群、並びに第１及び第２の部分集合の元は、行列又はベクトルとして表され得るが、一般的に可能であるように、何らかの符号化された形式で、たとえば、対応する群又は集合のランダムな順序のインデックスとして表されてもよい。
【００８１】
第２の例では、主群は
【数３５】
2018538620.tif 000037
である。第１の作用群は行列
【数３６】
2018538620.tif 000038
によって生成され、次数５を有する。第２の作用群は、元−１によって生成され、大きさ２を有する。第１の部分集合は３つの元を有する。
【数３７】
2018538620.tif 000039
第１の部分集合は、群ＭにおけるＮの軌道の任意の元を取ることによって選択される。第１の部分集合は１７個の元を有する。
【００８２】
第３の例では、主群は
【数３８】
2018538620.tif 000040
であり、標数２の群である。第１の作用群Ｎは１４個の元を有し、
【数３９】
2018538620.tif 000041
及び、
【数４０】
2018538620.tif 000042
によって生成される。
【００８３】
元ｇは次数７を有し、元ｓは次数２を有し、互いに可換である。ｇ及びｓによって生成される第１の作用群Ｎは次数１４を有する。Ｎの全ての元はｇｉｓｊと記述され得、整数のペア（ｉ，ｊ）は第１の作用群の元を表すために使用され得る。第２の部分集合は単一の元
【数４１】
2018538620.tif 000043
からなる。
【００８４】
第２の作用群は、単位元のみを有する大きさ１の群である。生成元の次数ｋは１である。この場合、一般化表現における指数の上限は、ｋ−１から２ｋ−１まで増加し、したがって、２つの被加数を有する。第１の部分集合は、Ｍ上のＮの軌道から選択され、最小限の選択肢では９つの元を有する。
【００８５】
第４の例では、主群は
【数４２】
2018538620.tif 000044
である。第１及び第２の作用群の両方は
【数４３】
2018538620.tif 000045
に同形である。第１の作用群は
【数４４】
2018538620.tif 000046
によって生成され、第２の作用群は
【数４５】
2018538620.tif 000047
によって生成され、両方の生成元は次数３を有する。第２の部分集合は単一の元
【数４６】
2018538620.tif 000048
を有する。
【００８６】
第１の部分集合は、Ｍに誘導されるＮの軌道から６つの元が選択され得る。
【００８７】
第５の例では、主群は
【数４７】
2018538620.tif 000049
である。第１の作用群は６つの元を有し、
【数４８】
2018538620.tif 000050
によって生成され、第２の作用群は２つの元を有し、
【数４９】
2018538620.tif 000051
によって生成される。第２の部分集合は単一の元
【数５０】
2018538620.tif 000052
を有する。第１の部分集合は軌道から選択され得、５つの元を含む。
【００８８】
例全体にわたって、第２の作用群の大きさは、より多くの一般化表現を作成するために増加されてもよい。同様に、第１及び第２の部分集合の大きさは増加されてもよい。加算テーブルは定義式から計算され得る。
【００８９】
一般に、アーベル群Ｍが与えられた場合、他の元は以下のように選択される。群Ｍは
【数５１】
2018538620.tif 000053
の積として、ｄ１｜ｄ２・・・｜ｄｔによって記述される。これは、
【数５２】
2018538620.tif 000054
の元を見つけてＭに投影すれば十分であることを意味する。以下の手順に従ってもよい。
【００９０】
１．Ｍ＋の自己同型群の生成元、たとえば、行列群
【数５３】
2018538620.tif 000055
の可逆元を取得する。
【００９１】
２．自己同型群の元ｈを、たとえば生成元のランダムな積として選択する。ｈによって生成される群としてＨが得られる。
【００９２】
３．自己同型群の部分群として群Ｎを選択する。たとえば、自己同型群において１つ、２つ又はそれ以上の生成元を選択する。生成元は群Ｈと可換になるように選択される。Ｎについてそのような生成元を見つけることは、行列として見た場合に生成元の元に関する線形連立方程式を解くことによって行われることに留意されたい。
【００９３】
４．最後に、第１及び第２の集合Ｍ０及びΔを選択する。後者は、Ｎの軌道を計算することから得られる。前者は、たとえば、空集合を徐々に拡大することによって選択される。
【００９４】
最後に、このようにして得られた算術が、たとえば、Ｈの大きさ、一般化表現の数などの制約を満たすか否かが判定され、満たさなければ、たとえば処理はステップ２から繰り返される。異なるアルゴリズムが可能であり、たとえば、ステップ２及び３を入れ替えてもよいことに留意されたい。これらの構成は、たとえば効率的なメモリ使用を可能にする。
【００９５】
図１は、計算デバイス１００において入力を受信するための２つのオプションを示す。計算デバイス１００は、符号化されていない入力、たとえば任意の従来の形式の主群Ｍの元を受信するように構成される符号化ユニット１７０を備える。符号化ユニット１７０は、入力を正規表現又は一般化表現に変換する。一実施形態では、符号化ユニット１７０は、群Ｍの元を正規表現又は一般化表現に写像するための符号化テーブルを含む。一実施形態では、符号化ユニット１７０は、一般化元を生成する。符号化ユニット１７０は計算デバイス１００の一部である必要はなく、たとえば、計算デバイスは符号化された形式で、具体的には一般化表現で入力を直接受信する。たとえば、後者は、直接入力１７１がそこから受信される外部コンピュータに符号化ユニット１７０を有することによって実現される。
【００９６】
一実施形態では、複数の符号化ユニット１７０が同一の計算デバイス１００に対して生成される。複数の符号化ユニット１７０は、符号化されていない入力を受信し、入力を一般化表現に変換するように構成される。複数の符号化ユニット１７０は異なる一般化表現を使用する。たとえば、複数の符号化ユニットのうちの任意の２つの符号化ユニットに対して、主群Ｍの元ｘであって、ｘがその２つの符号化ユニットによって異なって符号化されるようなものが存在する。たとえば、一実施形態では、複数の符号化ユニットのそれぞれによって異なって符号化される主群Ｍの元ｘが存在する。
【００９７】
また、計算デバイス１００の出力は、復号ユニット１６０によって復号される。代替的には、計算デバイス１００の出力は、符号化された形式、たとえば正規化表現又は一般化表現で返される。ローカルに、外部のコンピュータにおいて、符号化は復号ユニット１６０などによって取り除かれる。したがって、ユニット１６０及び１７０は共にデバイス１００から省略されてもよい。
【００９８】
図１ｄは、乗算ユニット１４０を含む計算デバイス１００’の改良を概略的な形で示す。計算デバイス１００’は、以下に示される以外は、計算デバイス１００と同一である。
【００９９】
この場合、主群（Ｍ，＋）は環（Ｒ，＋，・）でもあり、加算に加えて、乗算も定義される。乗算は結合法則を満たし、アーベル群の演算において分配法則を満たし、単位元を有する。乗算の単位元は１と記述されることが多い。
【０１００】
表記の都合上、このセクションでは、第１の作用群の作用には右表記が使用される。これは正規化元がＸαと記述されることを意味し、ここでＸは第１の部分集合のものであり、αは第１の作用群のものである。第１及び第２の作用群は、たとえば、主環Ｍの自己への環同型写像の集合など、環としてＭの自己同型群から取得される。
【０１０１】
乗算ユニット１４０は、第１の乗算入力１４１及び第２の乗算入力１４２を受信するように構成される。図１ｃは乗算ユニット１４０の可能な実施形態を概略的な形で与える。第１の乗算入力１４１及び第２の乗算入力１４２は主群（Ｒ）の元であり、これはこの場合、実際には環である。第１の乗算入力１４１は正規化表現Ｘαで受信され、第２の乗算入力１４２は一般化表現で受信される。乗算ユニット１４０は、第１の乗算入力１４１及び第２の乗算入力１４２の環（Ｒ）における積を計算するように構成される。
【０１０２】
乗算ユニット１４０は、
−  第１の乗算入力１４１と、第２の乗算入力１４２の第１の被加数とから第１の加算入力１４５を計算し、第１の加算入力が正規化形式であり、
−  第１の乗算入力と、第１の加算入力１４５を計算するために使用された第１の被加数以外の第２の乗算入力１４２の複数の被加数とから１つ又は複数の第２の加算入力１４６を計算するように構成される。１つ又は複数の第２の加算入力１４６は一般化形式である。
【０１０３】
乗算ユニット１４０は、図１ｃに示されるように、第１の乗算入力１４１及び第２の乗算入力１４２から第１の加算入力１４５及び１つ又は複数の第２の加算入力１４６を計算するように構成される中間乗算ユニット１４４を備える。加算入力を決定することは、第１及び第２の作用群における演算を含むが、加算テーブルを必要としない。乗算入力から加算入力への変換の後、第１の加算入力１４５及び１つ又は複数の第２の加算入力１４６は、たとえば加算ユニット１３０を介して加算される。
【０１０４】
同一のテーブルが加算及び乗算に使用されるので、加算又は乗算のいずれが行われているかをリバースエンジニアリング中に見極めることは困難である。攻撃者が使用されるテーブルを発見できたとしても、どうにかしてその関数が加算テーブルであると把握できたとしても、加算演算又は乗算演算のいずれが行われているかはまだ分からない。さらに、乗算のために追加のテーブルが必要とされないので、コードサイズが縮小される。
【０１０５】
一実施形態では、第１の作用群Ｎ及び第２の作用群Ｈは環Ｕ（Ｒ）の単元群の部分群であり、乗算によって主群に作用し、第２の部分集合Ｍ０は主群の単位元、たとえば、元ｍ０＝１のみを含む。この場合、第１の部分集合は、上述されたように、元β０ｈ０＋・・・βｋ−２ｈｋ−２＋ｈｋ−１として構成される。この場合、第１の乗算入力１４１は（（β０ｈ０＋・・・βｋ−２ｈｋ−２＋ｈｋ−１）α＝Ｘα）の形を有し、第２の乗算入力１４２は（γ０ｈ０＋γ１ｈ１＋γ２ｈ２＋・・・）の形を有する。
【０１０６】
以下、乗算入力を加算入力に変換する変換アルゴリズムの一例が与えられる。第１の乗算入力１４１をｒ＝Ｘα＝（β０ｈ０＋・・・βｋ−２ｈｋ−２＋ｈｋ−１）αとし、第２の乗算入力１４２をｒ’＝γ０ｈ０＋γ１ｈ１＋γ２ｈ２＋・・・＋γｋ−１ｈｋ−１とする。乗算ｒ・ｒ’は、’の各被加数によって行われる。第１のものはｒγ０ｈ０＝Ｘ（αγ０）であり、この正規化元は第１の乗算入力１４５である。後のものは、ｉ＞０でのＸαγｉｈｉである。分配性とｈｋ＝１であることとを使用した簡単な計算を使用して、Ｘαγｉｈｉの一般表現を得る。この処理は一般表現のｋ−１個の加算入力１４６を生成し、これらは、正規化元である第１の加算入力１４５のために加算式によって加算される。加算の回数はｋと共に増加する。ｋ＝２を使用することは、乗算及び加算が同一の複雑性を有することを意味し、攻撃者がコード内の加算演算と乗算演算とを区別することをより困難にする。
【０１０７】
一実施形態では、第１の作用群Ｎ及び第２の作用群Ｈは環Ｕ（Ｒ）の単元群の部分群であり、乗算によって主群に作用し、第２の部分集合Ｍ０は主群の単位元のみを含む。
【０１０８】
図２は計算デバイス１０１の一実施形態の一例を概略的に示す。計算デバイス１０１は計算デバイス１００’の改良である。一実施形態では、計算デバイス１０１は、複数の加算ユニットと、複数の乗算ユニットとを備える。たとえば、図２は、３つの乗算ユニット１４０．１、１４０．２及び１４０．３と、２つの加算ユニット１３０．１及び１３０．２とを示す。これらのユニットは、それぞれユニット１４０及び１３０と同一の設計である。乗算及び加算ユニットは比較的小さいスペースしか取らず、たとえば、ソフトウェアで実装される場合、これらのユニットは数百の低レベルのコンピュータ命令より多い必要はない。具体的には、コンピュータプログラムにおいて必要とされる各乗算又は加算のために、加算及び／又は乗算ユニットのコピーが使用される。これは、従来の難読化手法がこれらのコピーを異ならせて、同一の演算子が使用されていることを攻撃者が知ることができないようにすることを可能にする。たとえば、使用される難読化に応じて、乗算及び／又は加算ユニットが複数の計算に再利用される。一例として、図２は、難読化された算術を使用して多項式ａｘ２＋ｂｘ＋ｃがどのように計算されるかを示す。
【０１０９】
加算、乗算などの複数の算術ユニットの演算は、それらのデータの依存関係によって許容される任意の順序のものである。たとえば、演算１４０．３は、順序１４０．１、１４０．２、１３０．１、及び１３０．２に、１３０．１より前の任意の時点で挿入される。また、その後の乗算又は加算の順序は逆にされてもよい。したがって、図２のような図は、多数の方式でソフトウェアプログラムのために線形順序に変換される。ユニットが厳密に分離される必要はなく、第１のユニットのための命令には、他のユニットのための命令が散在してもよい。
【０１１０】
図３は、計算デバイスで使用される加算テーブルを計算するためのテーブル計算デバイス２００の一実施形態の一例を概略的に示す。加算テーブルは、計算デバイス１００などのようなデバイスで使用される。加算テーブルは、たとえば、ハードディスク、不揮発性メモリチップなどの非一時的記憶デバイスに記憶される。
【０１１１】
テーブル計算デバイス２００は、主群（（Ｍ，＋））の２つの元を加算するように構成される電子計算デバイスで使用されるルックアップテーブルを計算するように構成され、主群は有限アーベル群
【数５４】
2018538620.tif 000056
である。
【０１１２】
テーブル計算デバイスは、第２の部分集合Ｍ０の元ｍｉについてのルックアップテーブルを構築するように構成されるテーブル作成ユニット２１０を備える。テーブル作成ユニットは、以下を行うように構成される。
−  主群Ｍの入力された正規化元（γ，Ｘ）を繰り返し選択する。たとえば、デバイス２００は、正規化元を選択するために、第１の作用群及び第１の部分集合の元を選択する。
−  入力された正規化元γＸと第２の部分集合の前記元ｍｉとの和ｓ＝γＸ＋ｍｉを決定する。この加算は主群Ｍにおいて行われる。たとえば、入力された正規化元及びｍｉの両方が、Ｍの正準表現に変換される。デバイス２００が難読化なしで主群Ｍにおいて計算することには反対ではなく、その理由は、デバイス２００が典型的には計算デバイス１００自体の一部ではないためである。
−  第１の作用群Ｎの元λと、第１の部分集合Δの元Ｙとを、第１の作用群Ｎの元λと、第１の部分集合Δの元Ｙとの積が前記和となるように決定する：λＹｈ＝ｓ＝γＸ＋ｍｉ。たとえば、ｓｈ−１を計算し、変換テーブルを使用するなどしてこれを正規化形式に変換する。代替的には、全ての正規化元についての和を計算して、和のテーブルを作成し、次に全ての正規化元λＹにわたってループし、どの和がλＹｈと等しいかを決定する。
−  入力された環の元を第１の作用群Ｎの元λと、第１の部分集合Δの元Ｙとに写像するルックアップテーブルにエントリを追加する。
【０１１３】
その結果は、第２の部分集合Ｍ０の元ｍｉについてのテーブルである。テーブル作成は、第２の部分集合の他の全ての元について繰り返される。
【０１１４】
オペランド記憶装置１５０、加算テーブル記憶装置１１０などは、電子メモリとして実装される。メモリの一部は揮発性又は不揮発性である。たとえば、それらはＳＲＡＭ、ＦＬＡＳＨ又はＲＯＭメモリを備える。他の記憶技術、たとえば、磁気記憶装置、クラウド記憶装置なども使用される。好都合なことに、使用される記憶装置は、高速ランダムアクセス、たとえば、緊密に／密接に結合されたメモリを可能にする。
【０１１５】
典型的には、デバイス１００、１００’及び２００はそれぞれ、デバイスに記憶された適切なソフトウェアを実行するマイクロプロセッサ（別途図示せず）を備え、たとえば、そのソフトウェアは対応するメモリ、たとえばＲＡＭなどの揮発性メモリ、又はフラッシュなどの不揮発性メモリ（別途図示せず）にダウンロード及び／又は記憶される。デバイス１００、１００’及び２００は、マイクロプロセッサ及びメモリ（別途図示せず）が設けられる。代替的には、デバイスは、たとえばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）として、プログラマブルロジックに全体的又は部分的に実装される。デバイス１００、１００’及び２００は、いわゆる特定用途向け集積回路（ＡＳＩＣ）、すなわち、それらの特定の用途向けにカスタマイズされた集積回路（ＩＣ）として、全体的又は部分的に実装される。たとえば、回路は、たとえば、Ｖｅｒｉｌｏｇ、ＶＨＤＬなどのハードウェア記述言語を使用して、ＣＭＯＳに実装される。
【０１１６】
計算の一実施形態は、加算回路、変換回路、関数回路、及び／又は乗算回路などを備える。回路は本明細書に記載された対応するユニットを実装する。回路はプロセッサ回路及び記憶回路であり、プロセッサ回路は記憶回路内で電子的に表される命令を実行する。回路もＦＰＧＡ、ＡＳＩＣなどである。
【０１１７】
図３は、主群（（Ｍ，＋））の２つの元を加算するための電子計算方法３００を概略的な形態で示すフローチャートであり、主群は有限アーベル群
【数５５】
2018538620.tif 000057
である。
【０１１８】
方法３００は以下を有する。
−  第２の部分集合（Ｍ０）の各元（ｍｉ）についてルックアップテーブル（Ｐｉ）を記憶するステップ３１０であって、前記ルックアップテーブルが、主群（Ｍ）の正規化元（（γ，Ｘ））を入力として取り、入力を第１の作用群（Ｎ）の元（λ）と第１の部分集合（Δ）の元（Ｙ）とに写像し、第１の作用群（Ｎ）の元（λ）と第１の部分集合（Δ）の元（Ｙ）との積が、正規化元（γＸ）と第２の部分集合（Ｍ０）の前記元（ｍｉ）との和（λＹｈ＝γＸ＋ｍｉ）である、記憶するステップ３１０。たとえば、記憶するステップは、加算テーブルが記憶されるメモリを有することによって実行される。
−  第１の加算入力（α０Ｘ０）及び第２の加算入力
【数５６】
2018538620.tif 000058
を受信し、第１及び第２の加算入力が主群（Ｍ）の元であり、第１の加算入力が正規化表現で受信され、第２の加算入力が一般化表現で受信され、第１の加算入力及び第２の加算入力の主群（Ｍ）における和を計算するステップ３２０であって、
−  第２の加算入力の被加数を第１の加算入力に順次加算することによって部分和を計算するステップ３３０
を有し、
−  第２の加算入力の被加数
【数５７】
2018538620.tif 000059
を部分和に加算するステップ３４０が、前記被加数における第２の部分集合（Ｍ０）の元
【数５８】
2018538620.tif 000060
についてのルックアップテーブル
【数５９】
2018538620.tif 000061
を適用するステップを有する、
計算するステップ３２０。
【０１１９】
図５は、主群（（Ｍ，＋））の２つの元を加算するように構成される電子計算デバイスで使用されるルックアップテーブルを計算するためのテーブル計算方法４００を概略的な形で示すフローチャートを示し、主群は有限アーベル群
【数６０】
2018538620.tif 000062
であり、テーブル計算方法は、
−  主群（Ｍ）の入力された正規化元（（γ，Ｘ））を繰り返し選択するステップ（４１０）と、
−  入力された正規化元（γＸ）と第２の部分集合（Ｍ０）の前記元（ｍｉ）との和（λＹｈ＝γＸ＋ｍｉ）を決定するステップと、
−  第１の作用群（Ｎ）の元（λ）と、第１の部分集合（Δ）の元（Ｙ）とを、第１の作用群（Ｎ）の元（λ）と、第１の部分集合（Δ）の元（Ｙ）との積が前記和となるように決定するステップ（４２０）と、
−  入力された環の元を第１の作用群（Ｎ）の元（λ）と、第１の部分集合（Δ）の元（Ｙ）とに写像するルックアップテーブルにエントリを追加するステップ（４３０）と
を有する。
【０１２０】
当業者には明らかであるように、本方法を実行する多数の異なる手法が可能である。たとえば、ステップの順序は変更され得、又はいくつかのステップは並行して実行され得る。さらに、ステップの間に、他の方法のステップが挿入され得る。挿入されたステップは、本明細書に記載されるような本方法の改良を表現し、又は本方法と無関係である。また、所与のステップは、次のステップが開始される前に完全に終了していない場合がある。
【０１２１】
本発明による方法は、プロセッサシステムに方法３００又は４００を実施させるための命令を含むソフトウェアを使用して実行される。ソフトウェアは、システムの特定のサブエンティティによって取られるステップのみを含む。ソフトウェアは、ハードディスク、フロッピー、メモリ、光ディスクなどの適切な記憶媒体に記憶される。ソフトウェアは信号としてワイヤに沿って、若しくは無線で、又はインターネットなどのデータネットワークを使用して送信される。ソフトウェアは、ダウンロード及び／又はサーバ上でのリモート使用が可能にされる。本発明による方法は、方法を実施するようにフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのプログラマブルロジックを構成するようになされるビットストリームを使用して実行される。
【０１２２】
本発明が、本発明を実施するようになされたコンピュータプログラム、特に、キャリア上又は内のコンピュータプログラムにも拡張されることは理解されよう。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、及びオブジェクトコード、たとえば部分的にコンパイルされた形式、又は本発明による方法の実装での使用に適した任意の他の形式のものである。コンピュータプログラム製品に関する一実施形態は、記載された方法のうちの少なくとも１つの処理ステップのそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令はサブルーチンに細分され、及び／又は静的若しくは動的にリンクされる１つ又は複数のファイルに記憶される。コンピュータプログラム製品に関する他の実施形態は、記載されたシステム及び／又は製品のうちの少なくとも１つの手段のそれぞれに対応するコンピュータ実行可能命令を含む。
【０１２３】
図６ａはコンピュータプログラム１０２０を含む書き込み可能部分１０１０を有するコンピュータ可読媒体１０００を示し、コンピュータプログラム１０２０は、プロセッサシステムに一実施形態による主群の２つの元を加算するための計算方法、又は電子計算デバイスで使用されるルックアップテーブルを計算するための方法を実施させるための命令を含む。コンピュータプログラム１０２０は、コンピュータ可読媒体１０００上に物理的なマークとして、又はコンピュータ可読媒体１０００の磁化によって具現化される。しかしながら、任意の他の適切な実施形態も考えられる。さらに、コンピュータ可読媒体１０００はここでは光ディスクとして示されているが、コンピュータ可読媒体１０００は、ハードディスク、固体メモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体であり、記録不可能又は記録可能であることは理解されよう。コンピュータプログラム１０２０は、プロセッサシステムに、主群の２つの元を加算するための計算方法、又は電子計算デバイスで使用されるルックアップテーブルを計算するための方法である前記方法を実施させるための命令を含む。
【０１２４】
図６ｂは一実施形態によるプロセッサシステム１１４０の概略図を示す。プロセッサシステムは１つ又は複数の集積回路１１１０を備える。１つ又は複数の集積回路１１１０のアーキテクチャは図６ｂに概略的に示されている。回路１１１０は、一実施形態による方法を実行し、及び／又はそのモジュール若しくはユニットを実装するためにコンピュータプログラムコンポーネントを動作させるための、ＣＰＵなどの処理ユニット１１２０を備える。回路１１１０は、プログラミングコード、データなどを記憶するためのメモリ１１２２を備える。メモリ１１２２の一部は読み出し専用である。回路１１１０は通信素子１１２６、たとえば、アンテナ、コネクタ又はその両方などを備える。回路１１１０は、本方法で定義された処理の一部又は全部を実施するための専用集積回路１１２４を備える。プロセッサ１１２０、メモリ１１２２、専用ＩＣ１１２４及び通信素子１１２６は相互接続１１３０、たとえばバスを介して互いに接続される。プロセッサシステム１１１０は、アンテナ及び／又はコネクタを使用して、それぞれ接触及び／又は非接触通信用に構成される。
【０１２５】
上記の実施形態は本発明を限定するものではなく例示するものであり、当業者は多くの代替的実施形態を設計できることに留意されたい。
【０１２６】
特許請求の範囲において、括弧内に置かれた任意の参照符号は、請求項を限定するものとして解釈されるべきではない。「備える」という動詞及びその活用形の使用は、請求項に記述された以外の要素又はステップの存在を排除するものではない。要素に先行する冠詞「ａ」又は「ａｎ」は、複数のそのような要素の存在を排除するものではない。本発明は、いくつかの個別の素子を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実装される。いくつかの手段を列挙したデバイスの請求項において、これらの手段のいくつかは、同一のハードウェア項目によって具現化される。特定の対策が相異なる従属請求項に列挙されているという単なる事実は、これらの対策の組み合わせが有利に使用できないことを示すものではない。
【０１２７】
特許請求の範囲において、括弧内の参照は、実施形態の図面における参照符号又は実施形態の式を参照して、請求項の明瞭性を高めている。これらの参照は請求項を限定するものとして解釈されるべきではない。
【符号の説明】
【０１２８】
図１ａ〜図１ｄの参照番号のリスト：
１００  計算デバイス
１１０  加算テーブル記憶装置
１２２  変換ユニット
１２４  関数ユニット
１３０  加算ユニット
１３１  第１の加算入力
１３２  第２の加算入力
１３３  部分和
１３４  部分加算ユニット
１４０  乗算ユニット
１４１  第１の乗算入力
１４２  第２の乗算入力
１４４  中間乗算ユニット
１４５  第１の加算入力
１４６  １つ又は複数の第２の加算入力
１５０  オペランド記憶装置
１５２  定数記憶装置
１６０  復号ユニット
１７０  符号化ユニット
１７１  直接入力
１７２  符号化テーブルを記憶するように構成される記憶装置
【図１ａ】
2018538620.tif 000088
【図１ｂ】
2018538620.tif 000089
【図１ｃ】
2018538620.tif 000090
【図１ｄ】
2018538620.tif 000091
【図２】
2018538620.tif 000092
【図３】
2018538620.tif 000093
【図４】
2018538620.tif 000094
【図５】
2018538620.tif 000095
【図６ａ】
2018538620.tif 000096
【図６ｂ】
2018538620.tif 000097
【手続補正書】
【提出日】平成30年1月31日(2018.1.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
主群（（Ｍ，＋））の２つの元の難読化された加算のための電子計算デバイスであって、前記主群が有限アーベル群（
【数６１】
2018538620.tif 000098
）であり、
前記主群に対して定義されるのは、
第１（Ｎ）及び第２（Ｈ）の作用群であって、前記第１（Ｎ）及び第２（Ｈ）の作用群が前記主群（Ｍ）に作用し、前記第２の作用群（Ｈ）が生成元（ｈ）によって生成される巡回群である（Ｈ＝（ｈ））、第１（Ｎ）及び第２（Ｈ）の作用群と、
前記主群（Ｍ）の第１の部分集合（Δ）であって、前記主群（Ｍ）の任意の元（ｍ）が、前記第１の作用群（Ｎ）の元（ｎ）と前記第１の部分集合（Δ）の元（Ｘ）との積（ｍ＝ｎＸ）として表され得る第１の部分集合（Δ）において、前記第１の作用群（Ｎ）の前記元（ｎ）と前記第１の部分集合（Δ）の前記元（Ｘ）とが、前記主群（Ｍ）の前記元（ｍ）の正規化表現と呼ばれる、第１の部分集合（Δ）と、
前記主群（Ｍ）の任意の元（ｍ）が複数の被加数の和（
【数６３】
2018538620.tif 000099
）として表され得る前記主群（Ｍ）の第２の部分集合（Ｍ０＝｛ｍ０，．．．，ｍｒ−１｝）であって、各被加数が前記第１の作用群（Ｎ）の元（γｔ）と、前記第２の部分集合（Ｍ０）の元（
【数６２】
2018538620.tif 000100
）と、前記生成元の冪乗（ｈｔ）との積であり、
前記複数の被加数における前記第１の作用群の複数の元が、前記主群（Ｍ）の前記元（ｍ）の一般化表現と呼ばれる、第２の部分集合（Ｍ０＝｛ｍ０，．．．，ｍｒ−１｝）と
であり、前記電子計算デバイスが、
前記第２の部分集合（Ｍ０）の各元（ｍｉ）についてルックアップテーブル（Ｐｉ）を記憶する加算テーブル記憶装置であって、前記ルックアップテーブルが、前記主群（Ｍ）の正規化元（（γ，Ｘ））を入力として取り、前記入力を前記第１の作用群（Ｎ）の元（λ）と前記第１の部分集合（Δ）の元（Ｙ）とに写像し、前記第１の作用群（Ｎ）の前記元（λ）と前記第１の部分集合（Δ）の前記元（Ｙ）との積が、前記正規化元（γＸ）と前記第２の部分集合（Ｍ０）の前記元（ｍｉ）との和（λＹｈ＝γＸ＋ｍｉ）である、加算テーブル記憶装置と、
第１の加算入力（α０Ｘ０）及び第２の加算入力（
【数６４】
2018538620.tif 000101
）を受信する加算ユニットであって、前記第１及び第２の加算入力が前記主群（Ｍ）の元であり、前記第１の加算入力が正規化表現で受信され、前記第２の加算入力が一般化表現で受信され、前記第１の加算入力及び前記第２の加算入力の前記主群（Ｍ）における和を計算し、
前記第２の加算入力の前記被加数を前記第１の加算入力に順次加算することによって部分和を計算し、
前記第２の加算入力の被加数（
【数６５】
2018538620.tif 000102
）を前記部分和に加算することが、前記被加数における前記第２の部分集合（Ｍ０）の前記元（
【数６６】
2018538620.tif 000103
）についての、前記加算テーブル記憶装置に記憶された前記ルックアップテーブル（
【数６７】
2018538620.tif 000104
）を適用することを含む、
加算ユニットと
を備え、
＃Ｎ・＃Δ≧＃Ｍ、及び（＃Ｎ・＃Ｍ０）＃Ｈ≧＃Ｍであり、ここで、
＃Ｎは第１の作用群（Ｎ）の大きさであり、
＃Ｈは第２の作用群（Ｈ）の大きさであり、
＃Δは第１の部分集合（Δ）の大きさであり、
＃Ｍ０は第２の部分集合（Ｍ０）の大きさであり、
＃Ｍは主群（Ｍ）の大きさである、
電子計算デバイス。
【請求項２】
正規化表現の前記主群（Ｍ）の元（ｍ）が、前記電子計算デバイスにおいて２つの数のペアとして表され、前記２つの数の第１の数が前記第１の作用群（Ｎ）の前記元（ｎ）を示し、前記２つの数の第２の数が前記第１の部分集合（Δ）の前記元（Ｘ）を示し、
一般化表現の前記主群（Ｍ）の元（ｍ）が、前記電子計算デバイスにおいて少なくとも第１の数の系列として表され、前記第１の数の系列が前記被加数における前記第１の作用群（Ｎ）の前記元（γｔ）を示す、
請求項１に記載の電子計算デバイス。
【請求項３】
前記加算ユニットによって計算される前記和が正規化形式で表される、
請求項１又は２に記載の電子計算デバイス。
【請求項４】
前記電子計算デバイスの外部のコンピュータから１つ又は複数の加算入力を受信するネットワークインターフェースであって、前記１つ又は複数の加算入力が一般化表現である、ネットワークインターフェースと、
１つ又は複数の定数加算入力を正規化表現で記憶する定数記憶装置と
を備え、
前記電子計算デバイスが、前記ネットワークインターフェースを介して受信される選択された加算入力と、前記定数記憶装置からの選択された定数加算入力とを前記加算ユニットを使用して加算する、
請求項１乃至３のいずれか一項に記載の電子計算デバイス。
【請求項５】
変換入力を受信する変換ユニット
を備え、
前記変換入力が一般化形式であり、前記変換ユニットが、正規化形式の前記主群の元を加算することによって、前記変換入力を正規化形式に変換し、及び／又は、
前記変換入力が正規化入力であり、前記変換ユニットが、前記第１の部分集合の元を一般化形式に写像する変換テーブルを記憶する、
請求項１乃至４のいずれか一項に記載の電子計算デバイス。
【請求項６】
線形関数（ｆ）を一般化形式の関数入力に適用する関数ユニットと、
前記第１の作用群（Ｎ）の元（γｔ）と、前記第２の部分集合（Ｍ０）の元（
【数６８】
2018538620.tif 000105
）と、前記生成元の冪乗（ｈｔ）との積（
【数６９】
2018538620.tif 000106
）を入力として取り、
前記積を、前記線形関数を前記積に適用した結果に写像するテーブルを記憶する線形関数テーブル記憶装置と
を備え、
前記関数ユニットが、前記線形関数テーブル記憶装置の前記テーブルを前記関数入力の前記被加数に適用する、
請求項１乃至５のいずれか一項に記載の電子計算デバイス。
【請求項７】
前記第２の作用群（Ｈ）が３つ以上の元を有するか、
前記第２の作用群（Ｈ）が２つの元を有するか、
前記第２の部分集合（Ｍ０）が２つ以上の元を有するか、
前記第２の部分集合（Ｍ０）が単位元でない１つの元を有するか、
前記主群（Ｍ）が、たとえばｌ≧４のアーベル群（
【数７０】
2018538620.tif 000107
）であるか、又は、
前記第１の作用群（Ｎ）が３つ以上の元を有する巡回群である、
請求項１乃至６のいずれか一項に記載の電子計算デバイス。
【請求項８】
前記生成元（ｈ）が次数ｋを有し、一般化表現の前記生成元（ｈ）の指数（ｔ）が、高々前記次数（ｋ）の特定の倍数マイナス１であり（ｔ≦λｋ−１）、前記特定の倍数が前記主群の全ての元について同一である、
請求項１乃至７のいずれか一項に記載の電子計算デバイス。
【請求項９】
前記主群が標数２を有し、前記第２の作用群が次数２を有し、一般化表現の前記生成元（ｈ）の前記冪乗（ｈｔ）が、高々前記次数の２倍マイナス１であるか（ｔ≦２ｋ−１）、又は、
前記主群が２より大きい標数を有するか、若しくは前記第２の作用群の次数が２より大きく、一般化表現の前記生成元（ｈ）の前記冪乗（ｈｔ）が高々前記次数マイナス１である（ｔ≦ｋ−１）、
請求項８に記載の電子計算デバイス。
【請求項１０】
前記加算ユニットが、
前記部分和を最初は前記第１の加算入力（α０，Ｘ０）に設定し、
前記第１の加算入力の前記被加数にわたってループし、各ループにおいて、前記第１の加算入力の前記被加数（
【数７１】
2018538620.tif 000108
）を加算することによって前記部分和を更新する、
請求項１乃至９のいずれか一項に記載の電子計算デバイス。
【請求項１１】
前記第１の加算入力が、α０∈Ｎ及びＸ０∈Δでの前記主群の元α０Ｘ０であり、前記第２の加算入力が前記主群の元
【数７２】
2018538620.tif 000109
であり、ｋが前記生成元の次数であり、γｉ∈Ｎ及びｍｉ∈Ｍ０であり、ｈが前記生成元であり、
前記加算ユニットが、
前記部分和を最初は前記第１の加算入力α０，Ｘ０に設定し、
０からλｋ−１までの前記生成元（ｈｔ）の各指数（ｔ）について、
【数７３】
2018538620.tif 000110
についての前記ルックアップテーブル（
【数７４】
2018538620.tif 000111
）をγｔ−１γｔ−１αｔＸｔに適用して、前記指数（
【数７５】
2018538620.tif 000112
）に対応する前記被加数を加算することによって、現在の部分和（αｔＸｔ）から次の部分和（αｔ＋１Ｘｔ＋１）を取得し、γ−１が前記主群（Ｍ）の単位元であり、αｔＸｔが前記現在の部分和であり、
前記部分和がγｔ−１αｔＸｔｈｔに等しい、
請求項１０に記載の電子計算デバイス。
【請求項１２】
前記第１の部分集合（Δ）が、前記第１の作用群（Ｎ）の元と、前記第２の部分集合の元と、前記第２の作用群（Ｈ）の元との積を総和して形成される元に、前記生成元の、前記生成元の次数マイナス１乘を加えたもの（
【数７６】
2018538620.tif 000113
）のみを含み、前記第２の作用群の前記元が、高々前記生成元の次数マイナス２乗の前記生成元（ｈ）の冪乗である、
請求項１乃至１１のいずれか一項に記載の電子計算デバイス。
【請求項１３】
前記主群（（Ｍ，＋））が、前記主群を環（（Ｒ，＋，・））にするさらなる演算（・）を有し、
第１の乗算入力及び第２の乗算入力を受信する乗算ユニットであって、前記第１及び第２の乗算入力が前記主環（Ｒ）の元であり、前記第１の乗算入力が正規化表現（（β０ｈ０＋・・・βｋ−２ｈｋ−２＋ｈｋ−１）α＝Ｘα）で受信され、前記第２の乗算入力が一般化表現（γ０ｈ０＋γ１ｈ１＋γ２ｈ２＋・・・）で受信され、前記第１の乗算入力及び前記第２の乗算入力の前記環（Ｒ）における積を計算し、
前記第１の乗算入力と、前記第２の乗算入力の第１の被加数とから第１の加算入力を計算し、前記第１の加算入力が正規化形式（Ｘ（αγ０））であり、
前記第１の乗算入力と、前記第１の被加数以外の前記第２の乗算入力の複数の被加数とから１つ又は複数の第２の加算入力を計算し、前記１つ又は複数の第２の加算入力が一般化形式（Ｘ（αγｉ）ｈｉ＝（Ｘｈｉ）ｎ’）であり、
前記第１の加算入力と前記１つ又は複数の第２の加算入力とを前記加算ユニットを介して加算する、
乗算ユニット
を備える、
請求項１２に記載の電子計算デバイス。
【請求項１４】
（＃Ｎ・＃Ｍ０）＃Ｈ≧３／２（＃Ｎ・＃Δ）であり、
より詳細には、
（＃Ｎ・＃Ｍ０）＃Ｈ≧５／２（＃Ｎ・＃Δ）であり、
＃Ｎが前記第１の作用群（Ｎ）の大きさであり、
＃Ｈが前記第２の作用群（Ｈ）の大きさであり、
＃Δが前記第１の部分集合（Δ）の大きさであり、
＃Ｍ０が前記第２の部分集合（Ｍ０）の大きさであり、
＃Ｍが前記主群（Ｍ）の大きさである、
請求項１乃至１３のいずれか一項に記載の電子計算デバイス。
【請求項１５】
主群（（Ｍ，＋））の２つの元を加算する電子計算デバイスで使用されるルックアップテーブルを計算するためのテーブル計算デバイスであって、前記主群が有限アーベル群
【数７７】
2018538620.tif 000114
であり、
前記第２の部分集合（Ｍ０）の元（ｍｉ）についての前記ルックアップテーブルを構築するテーブル作成ユニットであって、
前記主群（Ｍ）の入力された正規化元（（γ，Ｘ））を繰り返し選択し、
前記入力された正規化元（γＸ）と前記第２の部分集合（Ｍ０）の前記元（ｍｉ）との和（λＹｈ＝γＸ＋ｍｉ）を決定し、
前記第１の作用群（Ｎ）の元（λ）と、前記第１の部分集合（Δ）の元（Ｙ）とを、前記第１の作用群（Ｎ）の前記元（λ）と、前記第１の部分集合（Δ）の前記元（Ｙ）との積が前記和となるように決定し、
入力された環の元を前記第１の作用群（Ｎ）の前記元（λ）と、前記第１の部分集合（Δ）の前記元（Ｙ）とに写像する前記ルッ
クアップテーブルにエントリを追加する
テーブル作成ユニット
を備える、テーブル計算デバイス。
【請求項１６】
主群（（Ｍ，＋））の２つの元の難読化された加算のための電子計算方法であって、前記主群が有限アーベル群
【数７８】
2018538620.tif 000115
であり、
前記主群に対して定義されるのは、
第１（Ｎ）及び第２（Ｈ）の作用群であって、前記第１（Ｎ）及び第２（Ｈ）の作用群が前記主群（Ｍ）に作用し、前記第２の作用群（Ｈ）が生成元（ｈ）によって生成される巡回群である（Ｈ＝（ｈ））、第１（Ｎ）及び第２（Ｈ）の作用群と、
前記主群（Ｍ）の第１の部分集合（Δ）であって、前記主群（Ｍ）の任意の元（ｍ）が、前記第１の作用群（Ｎ）の元（ｎ）と前記第１の部分集合（Δ）の元（Ｘ）との積（ｍ＝ｎＸ）として表され得る第１の部分集合（Δ）において、前記第１の作用群（Ｎ）の前記元（ｎ）と前記第１の部分集合（Δ）の前記元（Ｘ）とが、前記主群（Ｍ）の前記元（ｍ）の正規化表現と呼ばれる、第１の部分集合（Δ）と、
前記主群（Ｍ）の任意の元（ｍ）が複数の被加数の和として表され得る前記主群（Ｍ）の第２の部分集合（Ｍ０＝｛ｍ０，．．．，ｍｒ−１｝）であって、各被加数が前記第１の作用群（Ｎ）の元（γｔ）と、前記第２の部分集合（Ｍ０）の元（
【数７９】
2018538620.tif 000116
）と、前記生成元の冪乗（ｈｔ）との積（
【数８０】
2018538620.tif 000117
）であり、
前記複数の被加数における前記第１の作用群の複数の元が、前記主群（Ｍ）の前記元（ｍ）の一般化表現と呼ばれる、第２の部分集合（Ｍ０＝｛ｍ０，．．．，ｍｒ−１｝）と
であり、前記電子計算方法が、
前記第２の部分集合（Ｍ０）の各元（ｍｉ）についてルックアップテーブル（Ｐｉ）を記憶するステップであって、前記ルックアップテーブルが、前記主群（Ｍ）の正規化元（（γ，Ｘ））を入力として取り、前記入力を前記第１の作用群（Ｎ）の元（λ）と前記第１の部分集合（Δ）の元（Ｙ）とに写像し、前記第１の作用群（Ｎ）の前記元（λ）と前記第１の部分集合（Δ）の前記元（Ｙ）との積が、前記正規化元（γＸ）と前記第２の部分集合（Ｍ０）の前記元（ｍｉ）との和（λＹｈ＝γＸ＋ｍｉ）である、記憶するステップと、
第１の加算入力（α０Ｘ０）及び第２の加算入力（
【数８１】
2018538620.tif 000118
）を受信し、前記第１及び第２の加算入力が前記主群（Ｍ）の元であり、前記第１の加算入力が正規化表現で受信され、前記第２の加算入力が一般化表現で受信され、前記第１の加算入力及び前記第２の加算入力の前記主群（Ｍ）における和を計算するステップであって、
前記第２の加算入力の前記被加数を前記第１の加算入力に順次加算することによって部分和を計算するステップ
を有し、
前記第２の加算入力の被加数（
【数８２】
2018538620.tif 000119
）を前記部分和に加算するステップが、前記被加数における前記第２の部分集合（Ｍ０）の前記元（
【数８３】
2018538620.tif 000120
）についての、記憶された前記ルックアップテーブル（
【数８４】
2018538620.tif 000121
）を適用するステップを有する、
計算するステップと
を有し、
＃Ｎ・＃Δ≧＃Ｍ、及び（＃Ｎ・＃Ｍ０）＃Ｈ≧＃Ｍであり、ここで、
＃Ｎは第１の作用群（Ｎ）の大きさであり、
＃Ｈは第２の作用群（Ｈ）の大きさであり、
＃Δは第１の部分集合（Δ）の大きさであり、
＃Ｍ０は第２の部分集合（Ｍ０）の大きさであり、
＃Ｍは主群（Ｍ）の大きさである、
電子計算方法。
【請求項１７】
主群（（Ｍ，＋））の２つの元を加算する電子計算デバイスで使用されるルックアップテーブルを計算するためのテーブル計算方法であって、前記主群が有限アーベル群（
【数８５】
2018538620.tif 000122
）であり、
前記主群（Ｍ）の入力された正規化元（（γ，Ｘ））を繰り返し選択するステップと、
前記入力された正規化元（γＸ）と前記第２の部分集合（Ｍ０）の前記元（ｍｉ）との和（λＹｈ＝γＸ＋ｍｉ）を決定するステップと、
前記第１の作用群（Ｎ）の元（λ）と、前記第１の部分集合（Δ）の元（Ｙ）とを、前記第１の作用群（Ｎ）の前記元（λ）と、前記第１の部分集合（Δ）の前記元（Ｙ）との積が前記和となるように決定するステップと、
入力された環の元を前記第１の作用群（Ｎ）の前記元（λ）と、前記第１の部分集合（Δ）の前記元（Ｙ）とに写像する前記ルックアップテーブルにエントリを追加するステップと
を有する、テーブル計算方法。
【請求項１８】
コンピュータ上で実行された場合に、請求項１６又は１７に記載の方法を実施するコンピュータプログラム命令を含む、コンピュータプログラム。
【請求項１９】
請求項１８に記載のコンピュータプログラムを含む、コンピュータ可読媒体。
【国際調査報告】
2018538620.tif 000123
2018538620.tif 000124
2018538620.tif 000125