JP6522860B2 - 計算装置及び方法 - Google Patents

計算装置及び方法 Download PDF

Info

Publication number
JP6522860B2
JP6522860B2 JP2018530719A JP2018530719A JP6522860B2 JP 6522860 B2 JP6522860 B2 JP 6522860B2 JP 2018530719 A JP2018530719 A JP 2018530719A JP 2018530719 A JP2018530719 A JP 2018530719A JP 6522860 B2 JP6522860 B2 JP 6522860B2
Authority
JP
Japan
Prior art keywords
ring
ring element
encoded
operator
elements
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2018530719A
Other languages
English (en)
Other versions
JP2019506031A (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 JP2019506031A publication Critical patent/JP2019506031A/ja
Application granted granted Critical
Publication of JP6522860B2 publication Critical patent/JP6522860B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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
    • 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
    • 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/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7261Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
    • 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

Description

本発明は、計算装置、計算システム、計算方法、コンピュータプログラム、及びコンピュータ可読媒体に関する。
コンピュータでは、様々なタスクのために計算が実行される。コンピュータは有限であるため、これらの計算は有限環で行われる。このような環の一般的な例は、ある数を法とする演算、特に2のべき乗を法とする演算である。しかし、他の様々な用途のための他の多くの環が存在する。例えば、いくつかの暗号アルゴリズムでは多項式環が使用される。
一部の用途では、プログラムの実行に関する情報を攻撃者から隠すことが望まれる。いわゆるホワイトボックス攻撃モデルでは、攻撃者が実行中のコンピュータプログラムへの詳細なアクセスを持つと想定される。このモデルであっても、可能な限り多くを攻撃者から隠すことが望まれる。特に、暗号化を使用して攻撃者から情報を隠す、銀行アプリケーションやコンテンツ保護などの機密アプリケーションは、ホワイトボックスモデルでは脆弱である可能性がある。攻撃者が、例えば、情報を暗号化するために使用された秘密鍵を読み取った場合、攻撃者が自らその情報を解読し、財務情報、プレーンコンテンツなどを取得する可能性がる。
情報を保護することに加えて、より一般的に、計算自体を攻撃者から保護したいという要望がある。特定のアルゴリズムが実行される場所を攻撃者が正確に知っている場合、攻撃者は、プログラム内の適切な場所に攻撃を集中させることができるおそれがあり、また、秘密アルゴリズム、例えばプロプライエタリ暗号化又は解読アルゴリズムをリバースエンジニアリングすることができる可能性がある。
現在のホワイトボックス技術を使用して一般的な計算フローを保護することは困難である。例えば、Chowらの論文「White−Box Cryptography and AES Implementation」は、ホワイトボックスモデルで特定の1つのアルゴリズム(AES)を保護する方法を示す。この技術は、一般的なコンピュータプログラムを保護するために直接適用することはできず、すなわち、プログラムの大規模な人間解析なくしては適用することができない。例えば、加算又は乗算演算を、Chowに記載されているようなテーブル又はテーブルネットワークに直接変換した場合、攻撃者は依然として、どのテーブルネットワークがアクセスされているかを観察するだけで、加算又は乗算がいつ実行されるかを推測することができる。
改良された環演算を有する計算装置を有することは有利であろう。
環の要素に対して計算を実行するように構成された計算装置が提供される。環について、環加算及び環乗算が定義されている。計算装置は、
− 符号化された環要素を保存するオペランドストアであって、符号化された環要素は、符号化された形式の前記環の要素を表す、オペランドストアと、
− 複数の演算子ユニットを含む演算子モジュールであって、前記演算子ユニットのうちの少なくとも1つは二項である、演算子モジュールと、
− 二項演算子ユニットであって、
− 符号化された環要素及びパラメータを受けとり、
− 前記符号化された環要素及び前記パラメータに対して、固定された計算を実行し、それにより新しい符号化された環要素を生成する、二項演算子ユニットと、
− 計算マネージャであって、
− 第1の符号化された環要素及び第2の符号化された環要素を受け取り、
− 少なくとも前記第2の符号化された環要素から得られたパラメータを使用して、前記第1の符号化された環要素に前記複数の演算子ユニットのシーケンスを適用することによって環乗算を実行し、
− 少なくとも前記第2の符号化された環要素から得られたパラメータを使用して、前記第1の符号化された環要素に前記複数の演算子ユニットのシーケンスを適用することによって環加算を実行する、計算マネージャとを備え、前記環乗算のための前記シーケンスは、前記環加算のための前記シーケンスと同じである。
演算子モジュールを観察する攻撃者は、どの演算子が実行されるかに関する情報を取得し得る。環加算のための演算子のシーケンスは、環乗算のためのシーケンスと同じであるので、攻撃者は、演算子のシーケンスから乗算又は加算のいずれが実行されるのかを推論することができない。したがって、攻撃者は基礎的なパラメータ計算を攻撃せざるを得ないが、そのための解析ははるかに複雑かつ困難である。
一実施形態では、演算子ユニットは、ホワイトボックス暗号を使用してテーブル又はテーブルネットワークとして実装される。このような実装ではしばしば、テーブルアクセスを明確に見ることができる。攻撃者が、ある特定のテーブルが加算に対応し、他のテーブルが乗算に対応することを知っている場合、正確な入力及び出力を知らなくても、計算を推測することができる可能性がある。しかし、同じ演算子シーケンスが加算又は乗算を与え得る場合、攻撃者は、テーブルアクセスを観察するだけでは、実行されているアルゴリズムを突き止めることができない。
一実施形態では、演算子ユニットのうちの1つ又は複数は単項である。単項テーブルはより小さいので、計算装置のサイズを小さくすることができる。一実施形態では、単項及び二項演算子のみが使用され、三項以上の演算子は使用されない。
アップ及びダウンのための演算子は、パラメータと符号化された環要素の両方を受け取るため、二項として上記されている。しかし、一実施形態では、許容されるパラメータの数は、符号化された環要素の数よりも少ない。
一実施形態では、計算装置は結合ユニットを含み、前記結合ユニットは、前記演算子ユニットの2つの連続する演算を選択し、前記選択された演算を単一の新しい演算ユニットに結合し、それに応じて対応するパラメータを結合する。演算子を組み合わせることにより、テーブルが複数の演算に対応するので、攻撃者は、パラメータを考慮に入れても、テーブルの観察からより少ない知識しか得られない。演算子の数を減らすことに加えて、結合が最終結果に影響を与えない複数の演算子を挿入することによって演算子の数が増やされてもよい。
本発明の他の側面は、
− 請求項1乃至11のいずれか一項に記載の計算装置と、
− 前記計算マネージャとは別個のパラメータユニットであって、前記計算マネージャによって前記環乗算及び前記環加算を実行するために、少なくとも前記第2の符号化された環要素から得られる前記パラメータを計算する、パラメータユニットとを含む、計算システムである。パラメータの計算及び演算子の実行は、システム内で分割されてもよい。これにより、両者が並列に実行され、また、並列に保護される。
計算装置は、例えばセットトップボックス、コンピュータなどの電子装置であり、特に例えば携帯電話などの携帯電子装置であってもよい。
本発明に係る方法は、コンピュータ実装方法としてコンピュータ上に、専用ハードウェアに、又はこれらの組み合わせとして実装されてもよい。本発明に係る方法のための実行可能コードは、コンピュータプログラム製品に保存されてもよい。コンピュータプログラム製品の例は、メモリデバイス、光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどを含む。好ましくは、コンピュータプログラム製品は、プログラム製品がコンピュータ上で実行されるとき、本発明に係る方法を実行するためのコンピュータ可読媒体上に保存された非一時的プログラムコードを含む。
好ましい実施形態では、コンピュータプログラムは、該コンピュータプログラムがコンピュータ上で実行されるとき、本発明に係る方法のすべてのステップを実行するように構成されたコンピュータプログラムコードを含む。好ましくは、コンピュータプログラムは、コンピュータ可読媒体上に具現化される。
本発明の別の側面は、コンピュータプログラムをダウンロード可能にする方法を提供する。この側面は、コンピュータプログラムが例えばアップルのApp Store、GoogleのPlay Store、又はMicrosoftのWindows Storeなどにアップロードされており、そのようなストアからコンピュータプログラムをダウンロード可能な場合に使用される。
以下、本発明の単なる例に過ぎないさらなる詳細、側面、及び実施形態について、以下の図面を参照しながら説明する。図中の要素は、簡潔さ及び明瞭さを意図して描かれており、必ずしも縮尺通りに描かれていない。図面において、すでに説明した要素に対応する要素には同じ参照番号を付している。
図1aは、計算装置100の一実施形態の一例を概略的に示す。 図1bは、計算装置101の一実施形態の一例を概略的に示す。 図2aは、符号化された環要素の一実施形態の一例を概略的に示す。 図2bは、演算子モジュールの一実施形態の一例を概略的に示す。 図3は、環における計算方法を概略的に示すフローチャートである。 図4aは、一実施形態に係るコンピュータプログラムを含む書き込み可能部分を有するコンピュータ可読媒体を概略的に示す。 図4bは、一実施形態に係るプロセッサシステムを概略的に示す。
本発明は、様々な形態の実施形態を取り得るが、図面及び以下の説明では、1つ又は複数の具体的実施形態が詳細に示される。本開示は、本発明の原理の例示として考えられるべきであり、本発明を図示及び説明される具体的実施形態に限定するものではないことを理解されたい。
以下、理解を目的として、動作中の実施形態の要素が説明される。しかしながら、各要素が、各要素によって実行されるものとして記載されている機能を実行するように構成されていることは明らかであろう。
さらに、本発明は、実施形態に限定されるものではなく、本発明は、上記される又は互いに異なる従属請求項に記載される全ての新規の特徴又は特徴の組み合わせに及ぶ。
図1aは、計算装置100の一実施形態の一例を概略的に示す。
計算装置100は、有限環Rの要素に対して計算を行うように構成される。環とは、環加算及び環乗算が定義された要素の有限集合を有する数学的構造である。加算は+によって、乗算は・、又は連結(concatenation)によって示される。要素の集合と加算を合わせたものはアーベル群を形成し、単位元は0と表される。環は、乗算の下ではモノイドであり、例えば、乗算は結合的(associative)であり、1として示される単位元が存在する。乗算の下で逆数を持つR内の要素は、単元と呼ばれる。環の単元(unit)を装置のユニットと混乱することがないよう注意されたい。後者は、特定の機能を実行する動作部であり、前者は、逆数を有する集合の要素である。以下に説明するシステムは、全ての非ゼロ要素が逆数を有する場合、例えば体にも適している。
当該技術分野では多くの異なる環が知られている。例えば、整数モジュロ数字、n例えば
Figure 0006522860
は環である。例えば、nは、5、17などの整数であり得る。この環の中の要素χで、gcd(χ,n)=1であるものは単元である。環の要素からなる正方行列の集合もまた環を形成する。多項式の集合モジュロ数字及び多項式
Figure 0006522860
も環を形成し、又はより一般的には、所与の環Rについて、R[χ]/f(χ)が新しい環として得られる。
様々な環における計算は、コンピュータサイエンスの多くの分野において重要である。コンピュータでは、特に有限環での計算が重要である。多くの用途において、システムに対する攻撃者から計算が隠されていることは重要である。例えば、セキュリティアプリケーションの場合、例えば、どの計算が実行されるかが知られることによって秘密鍵が導出され得るので、実行される正確な計算は隠されたままであることが望ましい可能性がある。この情報を隠すことは、攻撃者が実行中にコンピュータソフトウェアコードに完全にアクセス可能な場合、特に困難である。複数の異なる難読化技術が当該技術分野で知られているが、依然として、環における計算の難読化をさらに改善することが望まれている。
計算装置100は、符号化された環要素を保存するように構成されたオペランドストア110を含む。図1aは、符号化された環要素112、114、及び116を示す。環要素の符号化には様々なやり方がある。符号化された環要素は、符号化された形態の環の要素を表す。いくつかの符号化について以下で説明する。符号化においては、符号化された環要素をプレーンな環要素(例えば何らかの従来の表記、例えば正準表記(canonical notation))にマッピングする復号マッピング、例えば解読と、プレーンな環要素を符号化された環要素にマッピングする符号化マッピングとが存在する。所与の環要素は、様々なやり方で符号化され、例えば、符号化された環要素は一意である必要はない。このような場合、復号は多対一(many−to−one)マッピングである。複数の異なる符号化を有する場合、符号化されたものをプレーンな環要素にマッピングするテーブルの作成が難しくなるため、セキュリティを向上させる。
オペランドストア110は、定数を含むことができる。例えば、暗号化、解読、MAC演算(メッセージ認証コード)、署名、署名検証などの暗号アルゴリズムといった何らかのアルゴリズムで使用される定数環要素である。オペランドストア110はまた、ユーザによって入力されるか、又は例えば計算装置100の外部のコンピュータから受信される環要素を含み得る。計算装置100は、受け取られたプレーン環要素を符号化された環要素に変換する符号化ユニット、及び/又は、(例えば、外部コンピュータに送信する前に)符号化された環要素をプレーン環要素に変換する復号ユニットを含み得る。計算装置100は、符号化された形態で外部環要素を直接受け取ることもできる。計算装置100の外で、計算装置100内とは別の符号化、例えば暗号化が使用されてもよい。
計算装置100は、演算子モジュール120を備える。演算子モジュール120は、複数の演算子ユニットを含む。複数の演算子ユニットのうちの少なくとも1つは二項演算子ユニットである。図1aは、1つの二項演算子ユニット122を示す。演算子モジュール120はまた、1つ以上の単項演算子ユニットを含み得る。図1aは、1つの単項演算子ユニット123を示す。
二項演算子ユニット122のような二項演算子ユニットは、
− 符号化された環要素及びパラメータを受けとり、
− 前記符号化された環要素及びパラメータに対して、固定された計算を実行し、それにより新しい符号化された環要素を生成するよう構成される。
単項演算子ユニット123のような単項演算子ユニットは、
− 符号化された環要素を受け取り、
− 前記符号化された環要素に対して、固定された計算を実行し、それにより新しい符号化された環要素を生成するよう構成される。
二項及び単項の両方の場合において、符号化された環要素は、例えば計算マネージャ130(以下でさらに説明する)を介して、オペランドメモリ110から受け取られ得る。二項の場合、パラメータも、例えば計算マネージャ130を介してオペランドメモリ110から受け取られ得る。また、パラメータは、例えば、計算マネージャ130又はパラメータユニット140(以下でさらに説明する)によって計算されてもよい。
演算子ユニットによって実行される計算は固定である。異なるパラメータ又は符号化された環要素が演算子に提示された場合、異なる帰属を有するにもかかわらず、同じ計算セットを実行する。例えば、演算子ユニットの計算は、パラメータ又はその逆数及び符号化された表現の要素に対する環演算を含み得る(又は、場合によってはこれからなり得る)。例えば、演算子ユニットの計算は、環乗算及び環加算を含み得る(又は、場合によってはこれらからなり得る)。環乗算(後者を含む)は、固定された環要素(例えば、−1)との乗算であってもよい。
計算装置100は、計算マネージャ130を備える。計算マネージャ130は、第1の符号化された環要素及び第2の符号化された環要素を受け取るように構成される。例えば、計算マネージャ130は、第1の符号化された環要素及び第2の符号化された環要素をオペランドメモリ110からフェッチするように構成され得る。例えば、計算マネージャ130は、符号化された環要素112及び114をフェッチし得る。
計算装置100は、第1の符号化された環要素及び第2の符号化された環要素に対して、環加算及び環乗算の両方を実行することができる。どちらの演算が選択されるか(加算又は乗算)は、計算装置100が適合されるアプリケーションに依存する。例えば、乗算及び加算の両方を含む多数の計算の実行を必要とする暗号演算が実行され得る。
計算マネージャ130は、少なくとも第2の符号化された環要素から得られたパラメータを使用して、第1の符号化された環要素に複数の演算子ユニットのシーケンスを適用することによって環乗算を実行するように構成される。例えば、各演算子ユニットは、ある特定の順序で第1の符号化された環要素に適用され、そのうちのいくつかは複数回適用されてもよい。例えば、シーケンスは、第1の演算子、次に第2の演算子、次に第3の演算子、次に再度第3の演算子、・・・と適用し得る。
計算マネージャ130はまた、少なくとも第2の符号化された環要素から得られたパラメータを使用して、第1の符号化された環要素に複数の演算子ユニットのシーケンスを適用することによって環加算を実行するように構成される。興味深いことに、計算マネージャ130が環乗算に用いることができるシーケンスは、環加算のシーケンスと同じである。したがって、符号化された要素に対する環加算を実行するために、計算マネージャは上記シーケンス例と同じもの、すなわち、第1の演算子、次に第2の演算子、次に第3の演算子、次に再度第3の演算子、・・・を適用し得る。
例えば、計算マネージャ130は、演算子のシーケンス132を含む又はこれへのアクセスを有し得る。演算子のシーケンスは、符号化された環要素に対してどの演算子が実行されるかを決定する。シーケンス132は、環算を表すサブシーケンスと、環乗算を表すサブシーケンスとを含み得る。これらのサブシーケンスは、互いに等しくてもよい。また、シーケンス132は、上記演算子、又は場合によっては無関係な演算子のさらなる適用を含んでもよい。シーケンス132は、プログラムに含まれ得る。シーケンス132は、メモリ、例えば、オペランドストア110に保存され得る。
演算子モジュール120の演算を解析する攻撃者は、加算が行われようと乗算が行われようと、同じ演算シーケンスを見ることになる。したがって、攻撃者は演算の解析から実行される計算に関する情報を推測することはできない。このようにして、計算装置の実行の重要な側面が攻撃者から隠される。
理論的には、攻撃者は、パラメータと演算子との組み合わせから情報を推測し得る。しかし、攻撃者は、通常、環加算及び乗算がどのように2つの等しいシーケンスに変換されたかを知らない。さらに、一実施形態では、難読化技術がシステムに適用され得る。特に、複数の演算はルックアップテーブルとして実行されてもよい。符号化された環要素は、例えば、暗号化又はランダムな符号化を介して、プレーンな環要素とランダムな関係を有し得る。攻撃者は、どのテーブルが適用されるか、及び様々な演算子ユニットが実行される順序を見ることができるかもしれないが、環加算及び環乗算のシーケンスが無意味になったので、そこから情報を推測することはできない。同時に、テーブルは符号化された情報に対して作用するので、パラメータはあまり有用でなくなる。
入力の数(1、2、又は場合によってはそれ以上)によってテーブルのサイズは大きく増加するので、単項演算は、ルックアップテーブルとしての実装に特に適する。例えば、計算装置100は、ボックス演算子ユニット(下記参照)を実装するルックアップテーブルを保存するストレージを含むことができる。
環乗算及び環加算に加えて、計算装置100は、環要素に対する他の演算のために構成されてもよい。例えば、計算装置は、加算及び乗算のシーケンスとして(容易に)表現することができない演算を表すテーブルを含むストレージを備えることができる。
環加算及び環乗算に加えて、他の演算も、同じ演算子の同じシーケンスを使用して表され得る。例えば、一実施形態では、計算マネージャ130は、少なくとも第2の符号化された環要素から取得されたパラメータを使用して、複数の演算子ユニットのシーケンスを第1の符号化された環要素に適用することによって環減算を実行するように構成され、ここで、環減算のためのシーケンスは、環加算のためのシーケンス及び環乗算のためのシーケンスと同じである。例えば、否定演算も同様に表現され得る。
装置100は、動作中、例えば以下のように使用されてもよい。計算装置130は、第1及び第2の符号化された環要素をオペランドストレージ110から取得する。計算装置130は、演算子モジュール120から演算子ユニットを選択し(例えば、シーケンス132に従って)、選択された演算子ユニットを第1の符号化された環要素に適用させる。中間適用結果が、例えば符号された中間環要素として、演算子ストア150に保存され得る。計算装置130は、要求されるパラメータを計算してもよく、又は別のソース、例えばパラメータユニット140から取得し得る。
パラメータユニット140は任意選択の要素である。例えば、パラメータは、例えば、計算マネージャ130によって計算されることによって取得され得る。ただし、マネージャ130及び演算子モジュール120とは別個のパラメータユニット140は、演算子選択及びパラメータ計算が独立しているので、別々に保護可能であるという利点を有する。保護は、ハードウェアセキュリティ手段を使用し得るが、特に、難読化のようなソフトウェア保護であってもよい。計算マネージャ130の演算子選択がパラメータ計算から独立している場合、難読化はより効果的である。計算マネージャ130がパラメータユニット140から独立しており、両者がさらに別々に難読化されている場合、攻撃者が2つのサブシステムから集められた情報を相互に関連付けることはより困難になる。特に効果的なソフトウェア保護は、ホワイトボックス暗号の適用を含む。
一実施形態では、計算システムは、
− パラメータユニット140を有さなくてもよい計算装置100のような計算装置と、
− パラメータユニット140とを備える。
したがって、パラメータユニット140は計算マネージャとは別個のものであってもよく、計算マネージャによって環乗算及び環加算を実行するために、少なくとも第2の符号化された環要素から得られるパラメータを計算するよう構成される。例えば、計算装置100及びパラメータユニット140は、別個の異なる回路として実装されてもよい。このような計算システムは地理的に分散されていてもよく、ここで、計算装置100及びパラメータユニット140も互いに地理的に分離されている。例えば、地理的分離は、所望の距離より大きい距離、例えば10kmより大きくてもよい。
図1bは、計算装置101の一実施形態の一例を概略的に示す。計算装置101は、以下に示す以外は装置100と同じである。装置101において、計算マネージャ130は、例えば演算子リファレンスの形態で演算子ユニットを選択するように構成される。したがって、計算マネージャ130は、複数の演算子リファレンス150のストリームを生成する。演算子リファレンスストリーム150は、演算子リファレンス152及び151を示す。例えば、演算子はポインタ、識別子などによって参照されてもよい。また、計算マネージャ130は、オペランド、例えば第1の符号化された環要素を演算子が作用すべきストリーム150内に含んでもよい。また、符号化された環要素は、オペランドストア110などへのポインタによって参照されてもよく、又は、オペランドストア110などからコピーされてもよい。計算マネージャ130とは独立して、パラメータユニット140はパラメータストリーム160を生成する。パラメータ161及び162が示されている。パラメータユニット140及び計算マネージャ130は、演算子リファレンス及びパラメータをそれぞれ生成するための異なるプログラムを含み得る。パラメータユニット140及び計算マネージャ130は協働して、正しい環演算を実行するために協働する演算子リファレンス及びパラメータを生成するが、それにもかかわらず、独立しており、例えばハードウェア保護、ソフトウェア保護、又はこれらの組み合わせによって独立して保護され得る。ストリーム160内のいくつかのパラメータは空であってもよく、又は例えば、対応する演算子ユニットが単項である場合にはダミー値を含んでもよい。あるいは、ストリーム160は、パラメータユニットによって実際に使用されるパラメータのみを含むことができるが、(例えば)演算子モジュール120は、パラメータが必要な場合にのみストリーム160からパラメータを取得するように構成される。ストリーム160におけるダミー値が使用される場合、単項演算子がいつ使用されるかを攻撃者がストリーム160から知ることができないので、計算装置160の作業が難読化される。
ストリーム150及び160は、例えばメモリなどの記憶装置に保存された適切な構造、例えばスタック、キューなどを使用して実装され得る。
計算装置100、101は、仮想マシンで具現化されてもよい。この場合、シーケンス132は、仮想マシン上で動作するプログラムの一部であってもよい。
従来の仮想マシン(VM)は、加算、減算、乗算、相互排除などの基本演算を提供する。これの目的は2つある。つまり、仮想マシンは基礎プラットフォームによってはそれ自体は提供されない演算及びプリミティブを提供し、また、メモリが制約された環境で特に有用なコンパクトな命令フォーマットを可能にする。
しかしながら、VMの命令の多くは依然として、基礎プラットフォームの命令に直接マッピングされる加算、減算、乗算などの基本的な命令である。これらは一般的によく理解されているので、VMは、電力消費の解析及びフォールト挿入によって非常に容易に攻撃され得る。さらに、このマッピングのために、個々の演算にトレース命令を追加することは非常に容易である。
一実施形態に係る仮想マシンは、この状況を緩和する。仮想マシンは、例えばVMの命令セットの一部として、アップ、ダウン、ボックス演算のための命令を有する。命令は、特別な演算モード(例えば、セキュリティモード)でのみ利用可能であってもよい。
これらの演算のシーケンスと実行される実際の機能との関係は、直接的ではない。実際には、算術を実行するコードは次のようなものであり得る。
1.(オプションで)モードを変更する(例えば、何らかのアドレスを割り当てることによって)、次に、
2.算術を実装するアップ、ダウン、及びボックス命令のシーケンス、そして
3.(オプションで)再度のモード変更とともに終了。
代数的環の数、及び可能な表現のバリエーションを考えると、全ての仮想マシンが独自の算術を有し得る。
仮想マシンは、アップ、ダウン、ボックス命令の実行とインデックス(パラメータ)の計算とを区別し得る。たとえば、これらのアクティビティは分割され得る。
例えば、一方のアクティビティが、演算子シーケンスの(プリ)フェッチであってもよく、他方のアクティビティは、命令の結果の実際のルックアップであってもよい。実際には、これらのアクティビティのパイプラインは、実際の実行モデルであってもよい。
アップ、ダウン、及びボックス演算はテーブルを使用して実装されてもよく、これはまた、符号化された実装を容易化する。テーブル駆動型アプローチの使用は、メモリが制約された環境においても可能である。なぜなら、基礎となる環Rが適切に選択されれば、新たに定義される算術は小さなテーブルしか必要としないからである。
連続的なアップ及びダウン命令は結合され、例えば
Figure 0006522860
などである。これらの規則を使用して、任意の連続する2つのアップ又はダウン命令は、単一のアップ又はダウン命令として書き直すことができる。計算装置又は仮想マシンの一実施形態は、結合ユニットを備える。結合ユニットは、例えば、ストリーム150から取得された2つの連続するアップ、ダウン、又はボックス演算を結合し、上記規則のうちの1つに従って、それらを単一の新しい演算に結合する。結合ユニット150はその後、それに応じて対応するパラメータを結合する。このタイプの結合には、パラメータが単一の演算に対応せず、結合された演算に対応するという利点を有する。また、結合ユニットは、例えば所与のシーケンス132を難読化するために、スタンドアローンデバイスであってもよい。結合ユニット132は、演算子シーケンスを生成するコンパイラと一体化されてもよい。
好適な計算装置は、環(R)の要素に対して計算を実行するように構成され、環に対して環加算及び環乗算が定義されている。計算装置は、符号化された環要素を保存するように構成されたオペランドストア110と、複数の演算子ユニットを含む演算子モジュール120と、演算子ユニットのうちの2つの連続した演算を選択し、選択された演算を単一の新しい演算ユニットに結合し、それに応じて対応するパラメータを結合するように構成された結合ユニットとを備える。
図2aは、符号化された環要素212の一実施形態の一例を概略的に示す。符号化された環要素212は、複数の環要素213及び215のリストとして符号化される。したがって、このように符号化方法では、同じ環を使用して、そのメンバーが符号化された形態で表現される。数学的表記では、環要素χは、環要素のリスト(a,b)として符号化され得る。
例えば、一実施形態では、符号化された環要素は、上記2ユニット環要素の差である(χ=a−b)。ペアとしての表現(a,b)はさらに制限されてもよく、例えば、符号化された環要素を表すリスト内の少なくとも1つの要素が環のユニットである場合、特に好都合である。後者は、環要素の要素に対して計算がより容易に実行され得ることを意味する。差表現は、環要素を符号化する環要素のうちの1つについて知られたとしても、符号化された環に関する情報をほとんど又は全く与えないというさらなる利点を有する。一実施形態では、リストの両方の要素が環のユニットである。表現に課せられる追加制約は、テーブル演算に反映され得ることに留意されたい。例えば、ボックス演算子がテーブルとして表現され得る。差表現が使用される場合、ボックス演算子の出力は同様に制限され、例えば、少なくとも1つのユニットを有する、少なくとも2つのユニットを有するなどと制限され得る。
たとえば、要素rを差として符号化するにあたり、Rのランダムなユニットχが選択され、その後、rは例えば、r=(r+χ)−χ若しくはr=χ−(χ−r)、又はタプル((r+χ,χ)若しくは(χ,(χ−r))として表現され得る。多くの環が、rが2つのユニット間の差として記述される、より制限された表現を許容する。これは、演算子のためのテーブルが小さくなるという利点を有する。より制限された表現のための符号化は、ユニット間の全ての差を列挙し、リストをソートすることによって実施され得る。
一実施形態では、パラメータの少なくとも一部は、符号化された表現の複数の環要素の全てを使用することなく、計算される。例えば、一実施形態では、少なくとも1つのパラメータは、最大で、第1及び第2の符号化された環要素のそれぞれからの1つの値を使用して計算される。
より一般的には、リスト内の要素がリングのサブセットから選択されること、又はより具体的には環のユニットのサブセットから選択されることを要求することには利点がある。これは、符号化された環要素としての所与の環要素の差表現の数を制限する。これにより、演算子ユニットがテーブルとして実装される場合、演算子ユニットのサイズが制限される。以下、2つのユニット間の差として環要素を符号化する1つの具体的なシステムをより詳細に説明する。
このリスト符号化環表現の環要素は、プレーンな環要素でなくてもよく、システムをさらに難読化するために、それら自体が符号化されていてもよい。
一実施形態では、リスト符号化における2つの環要素は、指数として表現される((α,β))。2つの環要素は、指数によって示される冪に上昇された環の共通の底(base)要素(u)の指数である(χ=uα−uβ)。これは、符号化された環要素(α,β)がプレーン環要素χ=uα−uβに対応することを意味する。このタイプの符号化は、log形式と呼ばれ得る。混乱を避けるために、log形式が使用されていることを明示したい場合には、(α,β)と記載され得る。この場合でも、指数はセットに制限されてもよく、かつ/又は符号化されてもよい。
図2bは、演算子モジュール220の一実施形態の一例を概略的に示す。この実施形態は、2つの二項演算子ユニット222及び224と、1つの単項演算子ユニット226とからなる3つの演算子ユニットを備える。他の実施形態は、それより多い又は少ない演算子ユニットを使用することができる。以下、環要素χが、χ=a−bであるような2つの環要素のリスト(a,b)として符号化されると仮定する。a及びbは、環Rのユニットとなるように選択されたと仮定する(すなわち、a及びbはR内に逆数を有する)。一実施形態では、例えば、環Rは少なくとも4個、又は少なくとも8個の要素を有する。
表現は複雑化及び/又は符号化され得るが、議論を混乱させないために、以下ではこれを含まない。
演算子モジュール120の演算子ユニット222、224、及び226は、以下、(二項)アップ演算子ユニット222(△とも記される)、(二項)ダウン演算子ユニット224(∇とも記される)、及び単項ボックス演算子ユニット226(□とも記される)と称される。アップ、ダウン、及びボックスという名称は便宜上選択されているに過ぎず、それら自体では意味を持たない。演算子222、224、226は、第1の演算子ユニット、第2の演算子ユニット、及び第3の演算子ユニットと同等に称され得る。ダウン及びアップ演算子内のパラメータは、サブスプリクトとして示され得る。
二項アップ演算子ユニット222、△は、
− 第1の環要素(a)及び第2の環要素(b)の表現を受け取り、ここで、符号化された環要素(χ)は、第1の環要素と第2の環要素との間の差であり(χ=a−b)、また、パラメータ環要素(c)を受け取り、
− 第1の環要素をパラメータの逆数と環乗算したものを計算し(ac−1)、第2の環要素をパラメータの逆数と環乗算したものを計算するよう構成され(bc−1)、新しい符号化された環要素(y)は、前記2つの計算の結果によって表される(y=ac−1−bc−1)。
数学的には、アップ演算子は△((a,b))=(ac−1−bc−1)によって定義される。この式において、cはパラメータであり、(a,b)は第1の符号化された環要素である。符号化された環要素(a,b)は環要素χ=a−bを符号化する。アップ演算子の出力自体も符号化された形式であり、したがって、要素ac−1−bc−1を符号化する。
二項ダウン演算子ユニット224、∇は、
− 第1の環要素(a)及び第2の環要素(b)の表現を受け取り、ここで、符号化された環要素(χ)は、第1の環要素と第2の環要素との間の差であり(χ=a−b)、また、パラメータ環要素(c)を受け取り、
− 第1の環要素をパラメータと環乗算したものを計算し(ac)、第2の環要素をパラメータと環乗算したものを計算するよう構成され(bc)、新しい符号化された環要素(y)は、前記2つの計算の結果によって表される(y=ac−bc)。
数学的には、ダウン演算子は∇((a,b))=(ac,bc)によって定義され、この公式において、cはパラメータであり、(a,b)は第1の符号化された環要素である。符号化された環要素(a,b)は環要素χ=a−bを符号化する。アップ演算子の出力自体も符号化された形式であり、したがって、要素ac−bcを符号化する。
アップ及びダウン演算子両方のためのパラメータcが、環Rの範囲から取得されることに留意されたい。したがって、許容されるパラメータの数は、アップダウン演算子のための許容される入力の数よりもはるかに少ない。許容される入力の数は、ユニットの数掛けるRの要素の数に等しい可能性がある。例えば、許容されるパラメータの数は、許容される入力の数の半分よりも少ない可能性がある。
ボックス演算子ユニット226は、
− 第1の環要素(a)及び第2の環要素(b)の表現を受け取り、ここで、符号化された環要素(χ)は、第1の環要素と第2の環要素との間の差であり(χ=a−b)、
− 符号化された環要素(χ)と固定インクリメント(−(χ+1)=−χ−1)とを足したものの否定(negation)を符号化された形式で取得するよう構成される。
数学的には、ボックス演算子226は、((a,b))=(k,l)によって定義され、ここでk−1=−(χ+1)=−χ−1である。(k,l)について、複数の選択肢が存在し得ることに留意されたい。ボックス演算子は常に同じ選択肢を選んでもよく、これはランダムな選択肢でもよいし、又は符号化された表現に対する何らかの制限の範囲内の選択肢であってもよい。以下、(k,l)は共にRのユニットであると仮定する。ボックス演算子は、環加算を使用する、(a,b)から(b,a+1)へのマップとして表現され得る。この単項演算はテーブルとしての表現に適している。全ての非ゼロ要素がユニットというわけではない環では、テーブルは、任意のユニット要件を満たす表現を選択し得る(例えば、第1の要素はユニットである、第2の要素はユニットである、又は両方の要素がユニットである)。さらに、テーブルは、全ての入力について、要素的表現として表現された特定の式(環加算、減算、乗算、及び逆数のみを含む)に従う必要はなく、特に、上記式に必ずしも従う必要はない。
演算子222、224、及び226が全て、テーブルとして実装されてもよい。ボックス演算子に関しては、これは自然な選択である。アップ及びダウン演算子222及び224は、環算術、例えば、計算装置によって難読化される環算術と同じものを使用して実装され得る。
(a,b)及び(c,d)としてそれぞれ表現される第1の符号化された環要素及び第2の符号化された環要素が与えられる場合において、以下、これらを環加算及び環乗算するためのシーケンスが与えられる。第1の符号化された環要素及び第2の符号化された環要素の要素は、第1の第1の環要素(a)、第1の第2の環要素(b)、第2の第1の環要素(c)、及び第2の第2の環要素(d)と称され得る。
環加算は以下のように表現され得る。
Figure 0006522860
この式において、関数合成(function composition)は
Figure 0006522860
によって示される。例えば、
− まず、アップ演算子ユニット222が、パラメータcを使用して第1の符号化された環要素(a,b)に適用され、その後
− ボックス演算子226が、前の演算子の結果に適用され、次に
− ダウン演算子ユニット224が、パラメータcを使用して前の演算子の結果に適用され、次に
− アップ演算子ユニット222が、パラメータdを使用して前の演算子の結果に適用され、次に
− ボックス演算子226が、前の演算子の結果に適用され、次に
− ダウン演算子ユニット224が、パラメータdを使用して前の演算子の結果に適用される。
演算子リファレンスのシーケンスは、例えば、224、226、224、222、226、222であってもよい(この場合、最初の演算子は左側)。パラメータのシーケンスは、例えばc,−,c,d,−,dであってもよく、ここで、パラメータ無しはハイフンで示されている。
環乗算は以下のように表現され得る。
Figure 0006522860
例えば、
− まず、アップ演算子ユニット222が、パラメータcbdを使用して第1の符号化された環要素(a,b)に適用され、その後
− ボックス演算子226が、前の演算子の結果に適用され、次に
− ダウン演算子ユニット224が、パラメータbdを使用して前の演算子の結果に適用され、次に
− アップ演算子ユニット222が、パラメータadを使用して前の演算子の結果に適用され、次に
− ボックス演算子226が、前の演算子の結果に適用され、次に
− ダウン演算子ユニット224が、パラメータadを使用して前の演算子の結果に適用される。
演算子リファレンスのシーケンスは、例えば、224、226、224、222、226、222であってもよい(この場合、最初の演算子は左側)。パラメータのシーケンスは、例えばcbd,−,bd,ad,−,adであってもよく、ここで、パラメータ無しはハイフンで示されている。
環減算は以下のように表現され得る。
Figure 0006522860
例えば、
− まず、アップ演算子ユニット222が、パラメータdを使用して第1の符号化された環要素(a,b)に適用され、その後
− ボックス演算子226が、前の演算子の結果に適用され、次に
− ダウン演算子ユニット224が、パラメータdを使用して前の演算子の結果に適用され、次に
− アップ演算子ユニット222が、パラメータcを使用して前の演算子の結果に適用され、次に
− ボックス演算子226が、前の演算子の結果に適用され、次に
− ダウン演算子ユニット224が、パラメータcを使用して前の演算子の結果に適用される。
演算子リファレンスのシーケンスは、例えば、224、226、224、222、226、222であってもよい(この場合、最初の演算子は左側)。パラメータのシーケンスは、例えばd,−,d,c,−,cであってもよく、ここで、パラメータ無しはハイフンで示されている。
加算及び乗算の両方を計算することができるという特性を有する他のシーケンスが考案されてもよい。例えば、上記式において、ボックス及びアップ演算子の組み合わせ
Figure 0006522860
である新しい演算子ユニットを代入することによって、新しいシーケンスが得られる。他にも多くの可能性が存在する。
これらの式において、中間結果としての演算子ユニットの結果は、符号化された環要素の形態であってもよい。これらの式は、入力が環ユニットである場合、環ユニットの差として符号化された環要素を生成することに留意されたい。上記式が正しいことは、演算子ユニットの対応する定義を代入し、数学的導出を辿ることによって検証され得る。
環要素のための異なる符号化は、演算子のための異なる式を与え得る。例えば、符号化がlog形式の場合、アップ、ダウン、及びボックス演算子に関する上記の記述は、類似の式に適合させられ得る。別の変形例では、要素は、環要素[β,δ]のリストとしてlog形式(α,β)を有するχとして表現され、ここで、δ=α−βであり、すなわちχ=uβ+δ−uβである。演算子はこの形式でも表現され得る。例えば、アップ演算子は△γ([β,δ])=[β−γ,δ]となる。ダウン演算子は、−γの代わりに+γとなる点を除き、同じである。ボックス演算は、上記と同じ関係を使用して定義され得る。
環乗算のシーケンスが環加算のシーケンスと同じになるよう、演算子のシーケンスを作成するために使用され得る他の演算子シーケンスが存在する。例えば、一実施形態では、Rの要素のリスト表現の要素に対して作用する2つ、3つ、又はそれ以上の演算子が定義される。演算子の一部、例えば1つ以上、2つ以上、又は1つを除き全てが、Rの2つの要素のリスト表現の要素に対して作用する環演算の事前定義されたシーケンスである。事前定義された環演算シーケンスは、環乗算及び環逆数演算を含む表現として表現され、場合によっては、環加算及び環減算も含まれ得る。演算子の一部、例えばちょうど1つ、1以上などは単項であり、環要素に対する固定演算、例えば、環加算及び加法逆元(マイナス、「−」、演算)を含む固定表現を表す。この演算は、テーブル演算として表現され得る。ただし、これは必須ではない。符号化された一実施形態では、リスト表現の要素が符号化され得る。その場合、環演算、加算、乗算、乗法及び加法逆元などは、符号化されたテーブル又はテーブルネットワークとして実装され得る。リスト表現は、環Rの要素のシーケンス、及びリスト表現からRへの全射的(surjective)マップとして定義され得る。例えば、(a−b)への差表現(a,b)マッピングは、そのようなリスト表現の1つであり、本明細書中に他の例が示されている。
以下、環乗算のシーケンスが環加算のシーケンスと同じになるよう、演算子のシーケンスを作成するために使用され得るさらなる演算子シーケンスを示す。
例えば、Rを環とし、また、
Figure 0006522860
とする。2つの要素χ及びyは、解釈χ=a−b;y=c−dを使用して、ペア(a,b)及び(c,d)として表される。少なくともbはユニットであると仮定する。これは、各要素がユニットである差表現を使用することによって達成され得る。これはa、c、及びdもユニットであることを示唆する。以下の導出に留意されたい。
Figure 0006522860
後者は再度、ペア(heb,geb)と記載され得る。この例では、ボックス演算子□(a,b)=a+b−1=e−fを定義する。ここで、eはユニットである。計算(a,b)+(c,d)のために、まず、(χ,χ)=∇□△((a,c))が計算される。これから、(a,b)+(c,d)の結果が−∇eb□△eb((χ,d))として計算される。χは使用されないことに留意されたい。乗算は、恒等式(a,b)・(c,d)=(ac,ad)+(bd,bc)を使用して、同一の演算子を使用して実行され得る。
一実施形態では、環Rの要素は、異なる符号化を使用して符号化され得る。以下の例では、環要素の2つの異なる表現が混同する。
Figure 0006522860
、かつy=(δ,τ)=uδ−uτとする。ボックス演算子(この例では、
Figure 0006522860
と記される)は
Figure 0006522860
と定義され、ここで、
Figure 0006522860
である。下の表では、導出が左側に示され、演算子が右側に示されている。
Figure 0006522860
典型的には、装置100は、装置100に保存された適切なソフトウェアを実行するマイクロプロセッサを備える。ソフトウェアは、対応するメモリ、例えばRAMのような揮発性メモリ、又はフラッシュ(別途図示せず)のような不揮発性メモリにダウンロード及び/又は保存されていてもよい。あるいは、装置100は、全体的に又は部分的に、例えばフィールドプログラマブルゲートアレイ(FPGA)として、プログラマブルロジックに実装されてもよい。装置100は、全体的に又は部分的に、いわゆる特定用途向け集積回路(ASIC)、すなわち、特定の用途向けにカスタマイズされた集積回路(IC)として実装されてもよい。例えば、回路は、例えばVerilog、VHDLなどのハードウェア記述言語を使用して、CMOSで実装されてもよい。
一実施形態では、装置100は、演算子ストア回路と、複数の演算子回路を含む演算子モジュール回路と、計算マネージャ回路と、パラメータ回路とを備える。これらの回路は、本明細書に記載される対応するユニットを実装する。回路は、プロセッサ回路及び記憶回路であってもよく、プロセッサ回路は、記憶回路において電子的に表現される命令を実行する。また、回路はFPGA、ASICなどであってもよい。オペランドストレージはメモリ回路であってもよく、プログラムコードの保存と共有されてもよい。オペランドストレージの一部は、例えば定数を保存するために、不揮発性ストレージであってもよく、オペランドストレージの一部は、例えば入力、中間結果、出力結果などを保存するために、揮発性ストレージであってもよい。オペランドストレージ110は、1つ又は複数のレジスタを含み得る。
図3は、一実施形態に係る計算方法300をフローチャートで概略的に示す。計算方法300は、環(R)の要素に対して計算を実行するように構成され、環について、環加算及び環乗算が定義されている。計算方法300は、
− 符号化された環要素を保存するステップ310であって、符号化された環要素は、符号化された形態の環の要素を表す、ステップを含む。
さらに、方法300は複数の演算を含み、図3には、演算322、324、及び326が示されている。この実施形態では、演算322はアップ演算子222を表し、演算324はダウン演算子224を表し、演算326はボックス演算子を表し得る。少なくとも1つの演算は二項であることに留意されたい。
方法300は、少なくとも第2の符号化された環要素から得られたパラメータを使用して、第1の符号化された環要素に複数の演算子からなるシーケンスを適用することによって環乗算321を実行するステップと、少なくとも第2の符号化された環要素から取得されたパラメータを使用して、複数の演算子からなるシーケンスを第1の符号化された環要素に適用することによって環加算323を実行するステップとを含み、ここで、環乗算のためのシーケンスは、環加算のためのシーケンスと同じである。
方法300は、演算において使用するためのパラメータを計算するステップを含み得る。
当業者には明らかであるように、この方法を実行する多くの異なる態様が存在する。例えば、ステップの順序を変更したり、いくつかのステップを並行して実行したりすることができる。さらに、ステップ間に他の方法ステップを挿入することができる。挿入されるステップは、本明細書に記載されるような方法の改良を表し、又は方法と無関係であってもよい。例えば、演算は、少なくとも部分的に並列に実行されてもよい。さらに、あるステップは、次のステップが開始される前に完全に終了していなくてもよい。実際には、演算子はパイプライン化されてもよい。
本発明に係る方法は、プロセッサシステムに方法300を実行させるための命令を含むソフトウェアを使用して実行され得る。ソフトウェアは、システムの特定のサブエンティティによって取られるステップのみを含んでもよい。ソフトウェアは、ハードディスク、フロッピー、メモリ、光ディスクなどの適切な記憶媒体に保存されてもよい。ソフトウェアは、有線又は無線を介する信号として、又はインターネットなどのデータネットワークを使用して供給されてもよい。ソフトウェアは、サーバ上でダウンロード及び/又はリモート使用可能にされてもよい。本発明に係る方法は、方法を実行するためにプログラマブルロジック、例えばフィールドプログラマブルゲートアレイ(FPGA)を構成するように構成されたビットストリームを使用して実行されてもよい。
本発明は、コンピュータプログラム、特に、本発明を実施するように適合された、キャリア上の又はキャリア内のコンピュータプログラムにも及ぶことが理解されよう。プログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形式のようなコード中間ソース及びオブジェクトコード、又は本発明に係る方法の実施のための使用に適した任意の他の形式などの形式を取り得る。コンピュータプログラム製品に関する実施形態は、少なくとも1つの上記方法の処理ステップに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分され、かつ/又は静的に若しくは動的にリンクされ得る1つ又は複数のファイルに保存され得る。コンピュータプログラム製品に関する他の実施形態は、少なくとも1つの上記システム及び/又は製品の手段に対応するコンピュータ実行可能命令を含む。
図4aは、一実施形態に係る、コンピュータプログラム1020を含む書き込み可能部分1010を有するコンピュータ可読媒体1000を示し、コンピュータプログラム1020は、プロセッサシステムに環内の計算方法を実行させるための命令を含む。コンピュータプログラム1020は、物理的なマークとして、又はコンピュータ可読媒体1000の磁化によって、コンピュータ可読媒体1000上に具現化され得る。しかしながら、任意の他の適切な実施形態もまた考えられる。さらに、ここではコンピュータ可読媒体1000が光ディスクとして示されているが、コンピュータ可読媒体1000は、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体であってもよく、また、記録不能又は記録可能であってもよい。コンピュータプログラム1020は、プロセッサシステムに環内で前記計算方法を実行させるための命令を含む。
図4bは、一実施形態に係るプロセッサシステム1140の概略図である。プロセッサシステムは、1つ以上の集積回路1110を備える。1つ以上の集積回路1110のアーキテクチャが図4bに概略的に示されている。回路1110は、一実施形態に係る方法を実行し、かつ/又は、そのモジュール若しくはユニットを実装するためにコンピュータプログラムコンポーネントを実行するための処理ユニット1120(例えばCPUなど)を備える。回路1110は、プログラミングコード、データ等を保存するためのメモリ1122を含む。メモリ1122の一部は読み出し専用であってもよい。回路1110は、通信要素1126、例えばアンテナ若しくはコネクタ、又は両方などを備え得る。回路1110は、本方法で定義された処理の一部又は全部を実行するための専用集積回路1124を備え得る。プロセッサ1120、メモリ1122、専用IC1124、及び通信要素1126は相互接続1130、例えばバスを介して相互に接続され得る。プロセッサシステム1110は、アンテナ及び/又はコネクタを用いた接触及び/又は非接触通信のために構成され得る。
上記実施形態は本発明を限定するものではなく、当業者は多くの代替的実施形態を設計することができることに留意されたい。
計算のための有利な実施形態が、以下の項に記載されている。出願人は、本願又は本願から導出されるさらなる出願の処理中に、かかる項及び/又はかかる項及び/又は明細書に記載される特徴の組み合わせに対して、新たな請求項が形成され得ることをここに述べる。
特許請求の範囲において、括弧間に置かれた参照符号は、請求項を限定するものとして解釈されるべきではない。「含む」という動詞及びその活用形の使用は、請求項に記載された要素又はステップ以外の要素又はステップの存在を排除するものではない。要素に先行する冠詞「a」又は「an」は、複数のかかる要素の存在を排除するものではない。本発明は、複数の別々の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施され得る。いくつかの手段を列挙する装置クレームにおいて、これらの手段のうちのいくつかは、同一のハードウェアアイテムによって具現化されてもよい。複数の手段が互いに異なる従属請求項に記載されているからといって、これらの手段の組み合わせが好適に使用することができないとは限らない。
特許請求の範囲において、括弧内の参照符号は、実施形態の図面内の参照符号又は実施形態の数式を指し、したがって、請求項の明瞭さを高める。これらの参照符号は、請求項を限定するものとして解釈されるべきではない。
100,101 計算装置
110 オペランドストア
112,114,116 符号化された環要素
120 演算子モジュール
122 二項演算子ユニット
123 単項演算子ユニット
130 計算マネージャ
132 シーケンス
140 パラメータユニット
150 演算子リファレンスのストリーム
151,152 演算子リファレンス
160 パラメータのストリーム
161,162 パラメータ
212 符号化された環要素
213,215 環要素
220 演算子モジュール
222,△ 二項アップ演算子ユニット
224,∇ 二項ダウン演算子ユニット
226,□ 単項ボックス演算子ユニット

Claims (16)

  1. 環の要素に対して計算を実行する計算装置であって、前記環について、環加算及び環乗算が定義されており、前記計算装置は、
    符号化された環要素を保存するオペランドストアであって、符号化された環要素は、符号化された形式の前記環の要素を表す、オペランドストアと、
    複数の演算子ユニットを含む演算子モジュールであって、前記演算子ユニットのうちの少なくとも1つは二項である、演算子モジュールと、
    二項演算子ユニットであって、
    符号化された環要素及びパラメータを受けとり、
    前記符号化された環要素及び前記パラメータに対して、固定された計算を実行し、それにより新しい符号化された環要素を生成する、二項演算子ユニットと、
    計算マネージャであって、
    第1の符号化された環要素及び第2の符号化された環要素を受け取り、
    少なくとも前記第2の符号化された環要素から得られたパラメータを使用して、前記第1の符号化された環要素に前記複数の演算子ユニットのシーケンスを適用することによって環乗算を実行し、
    少なくとも前記第2の符号化された環要素から得られたパラメータを使用して、前記第1の符号化された環要素に前記複数の演算子ユニットのシーケンスを適用することによって環加算を実行する、計算マネージャとを備え、前記環乗算のためのシーケンスは、前記環加算のためのシーケンスと同じである、計算装置。
  2. 前記演算子ユニットのうちの少なくとも1つは単項であり、
    単項演算子ユニットは、
    符号化された環要素を受け取り、
    前記符号化された環要素に対して、固定された計算を実行し、それにより新しい符号化された環要素を生成する、請求項1に記載の計算装置。
  3. 符号化された環要素は、前記環の複数の環要素のリストとして符号化される、請求項1又は2に記載の計算装置。
  4. 前記リストは2つの環要素を含み、前記符号化された環要素は、前記2つの環要素の差である、請求項3に記載の計算装置。
  5. 前記2つの環要素は指数として表され、前記2つの環要素は、前記指数によって示される冪に冪乗される前記環の共通の底要素の指数である、請求項4に記載の計算装置。
  6. 前記計算マネージャは、少なくとも前記第2の符号化された環要素から取得されたパラメータを使用して、前記第1の符号化された環要素に前記複数の演算子ユニットのシーケンスを適用することによって環減算を実行し、前記環減算のためのシーケンスは、前記環加算のためのシーケンス及び前記環乗算のためのシーケンスと同じである、請求項1乃至5のいずれか一項に記載の計算装置。
  7. 前記複数の演算子ユニットは二項アップ演算子ユニットを含み、前記アップ演算子ユニットは、
    第1の環要素及び第2の環要素の表現を受け取り、ここで、前記符号化された環要素は、前記第1の環要素と前記第2の環要素との差であり、また、パラメータ環要素を受け取り、
    前記第1の環要素を前記パラメータの逆数と環乗算したものを計算し、前記第2の環要素を前記パラメータの逆数と環乗算したものを計算し、新しい符号化された環要素は、前記2つの計算の結果によって表され、並びに/又は、
    前記複数の演算子ユニットは二項ダウン演算子ユニットを含み、前記ダウン演算子ユニットは、
    第1の環要素及び第2の環要素の表現を受け取り、ここで、前記符号化された環要素は、前記第1の環要素と前記第2の環要素との差であり、また、パラメータ環要素を受け取り、
    前記第1の環要素を前記パラメータと環乗算したものを計算し、前記第2の環要素を前記パラメータと環乗算したものを計算し、新しい符号化された環要素は、前記2つの計算の結果によって表される、請求項1乃至6のいずれか一項に記載の計算装置。
  8. 前記複数の演算子ユニットは、単項ボックス演算子ユニットを含み、前記ボックス演算子ユニットは、
    第1の環要素及び第2の環要素の表現を受け取り、ここで、前記符号化された環要素は、前記第1の環要素と前記第2の環要素との差であり、
    前記符号化された環要素と固定インクリメントとを足したものの否定を符号化された形式で取得する、請求項7に記載の計算装置。
  9. 前記ボックス演算子ユニットを実装するルックアップテーブルを保存するストレージを含む、請求項8に記載の計算装置。
  10. 前記計算マネージャは、
    第1の第1の環要素及び第1の第2の環要素の表現を受け取り、ここで、前記第1の符号化された環要素は、前記第1の第1の環要素と前記第1の第2の環要素との差であり、
    第2の第1の環要素及び第2の第2の環要素の表現を受け取り、ここで、前記第2の符号化された環要素は、前記第2の第1の環要素と前記第2の第2の環要素との差であり、
    前記環加算のためのシーケンスは、
    前記アップ演算子ユニットがパラメータを用いて前記第2の第1の環要素に適用され、
    前記ボックス演算子ユニットが適用され、
    前記ダウン演算子ユニットがパラメータを用いて前記第2の第1の環要素に適用され、
    前記アップ演算子ユニットがパラメータを用いて前記第2の第2の環要素に適用され、
    前記ボックス演算子ユニットが適用され、
    前記ダウン演算子ユニットがパラメータを用いて前記第2の第2の環要素に適用されることによって与えられ、及び/又は、
    前記環乗算のための前記シーケンスは、
    前記アップ演算子ユニットがパラメータを用いて前記第2の第1の環要素と、前記第1の第2の環要素と、前記第2の第2の環要素との環乗算に適用され、
    前記ボックス演算子ユニットが適用され、
    前記ダウン演算子ユニットがパラメータを用いて前記第1の第2の環要素と前記第2の第2の環要素との環乗算に適用され、
    前記アップ演算子ユニットがパラメータを用いて前記第1の第1の環要素と前記第2の第2の環要素との環乗算に適用され、
    前記ボックス演算子ユニットが適用され、
    前記ダウン演算子ユニットがパラメータを用いて前記第1の第1の環要素と前記第2の第2の環要素との環乗算に適用されることよって与えられる、請求項8又は9に記載の計算装置。
  11. 結合ユニットを含み、前記結合ユニットは、前記演算子ユニットの2つの連続する演算を選択し、選択された当該演算を単一の新しい演算ユニットに結合し、それに応じて対応するパラメータを結合する、請求項1乃至10のいずれか一項に記載の計算装置。
  12. 請求項1乃至11のいずれか一項に記載の計算装置と、
    前記計算マネージャとは別個のパラメータユニットであって、前記計算マネージャによって前記環乗算及び前記環加算を実行するために、少なくとも前記第2の符号化された環要素から得られる前記パラメータを計算する、パラメータユニットとを含む、計算システム。
  13. 前記計算装置として構成された第1の回路と、前記パラメータユニットとして構成された第2の回路とを含み、前記第1の回路と前記第2の回路とは別個の異なる回路である、請求項12に記載の計算システム。
  14. 環の要素に対して計算を実行する計算装置の作動方法であって、前記環について、環加算及び環乗算が定義されており、前記計算装置の作動方法は、
    前記計算装置のオペランドストアが、符号化された環要素を保存するステップであって、符号化された環要素は、符号化された形式の前記環の要素を表す、ステップと、
    前記計算装置の演算子モジュールが、少なくとも1つの演算は二項である、複数の演算を実行するステップと、
    前記計算装置の二項演算子ユニットが、符号化された環要素及びパラメータを受けと
    前記符号化された環要素及び前記パラメータに対して、固定された計算を実行し、それにより新しい符号化された環要素を生成するステップと、
    前記計算装置の計算マネージャが、第1の符号化された環要素及び第2の符号化された環要素を受け取
    少なくとも前記第2の符号化された環要素から得られたパラメータを使用して、前記第1の符号化された環要素に前記複数の演算のシーケンスを適用することによって環乗算を実行
    少なくとも前記第2の符号化された環要素から得られたパラメータを使用して、前記第1の符号化された環要素に前記複数の演算のシーケンスを適用することによって環加算を実行するステップと、を含み、前記環乗算のためのシーケンスは、前記環加算のためのシーケンスと同じである、計算装置の作動方法。
  15. 環の要素に対して計算をコンピュータに実行させるためのコンピュータプログラムであって、前記環について、環加算及び環乗算が定義されており、前記コンピュータプログラムは、
    符号化された環要素を保存するステップであって、符号化された環要素は、符号化された形式の前記環の要素を表す、ステップと、
    少なくとも1つの演算は二項である、複数の演算を実行するステップと、
    二項演算であって、
    符号化された環要素及びパラメータを受けとることと、
    前記符号化された環要素及び前記パラメータに対して、固定された計算を実行し、それにより新しい符号化された環要素を生成することと、
    第1の符号化された環要素及び第2の符号化された環要素を受け取ることと、
    少なくとも前記第2の符号化された環要素から得られたパラメータを使用して、前記第1の符号化された環要素に前記複数の演算のシーケンスを適用することによって環乗算を実行することと、
    少なくとも前記第2の符号化された環要素から得られたパラメータを使用して、前記第1の符号化された環要素に前記複数の演算のシーケンスを適用することによって環加算を実行することと、を含む、二項演算を含むステップと、をコンピュータに実行させるためのコンピュータプログラムであり、前記環乗算のためのシーケンスは、前記環加算のためのシーケンスと同じである、コンピュータプログラム。
  16. 請求項15に記載のコンピュータプログラムを含む、コンピュータ可読記録媒体。
JP2018530719A 2015-12-14 2016-12-05 計算装置及び方法 Expired - Fee Related JP6522860B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
NL2015955 2015-12-14
NL2015955A NL2015955B1 (en) 2015-12-14 2015-12-14 Calculating device and method.
PCT/EP2016/079694 WO2017102392A1 (en) 2015-12-14 2016-12-05 Calculating device and method

Publications (2)

Publication Number Publication Date
JP2019506031A JP2019506031A (ja) 2019-02-28
JP6522860B2 true JP6522860B2 (ja) 2019-05-29

Family

ID=56027124

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018530719A Expired - Fee Related JP6522860B2 (ja) 2015-12-14 2016-12-05 計算装置及び方法

Country Status (8)

Country Link
US (1) US20200264872A1 (ja)
EP (1) EP3391264B1 (ja)
JP (1) JP6522860B2 (ja)
CN (1) CN108369613A (ja)
BR (1) BR112018011790A2 (ja)
NL (1) NL2015955B1 (ja)
RU (1) RU2018125606A (ja)
WO (1) WO2017102392A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347432B (zh) * 2019-06-17 2021-09-14 海光信息技术股份有限公司 处理器、分支预测器及其数据处理方法、分支预测方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009024520A1 (en) * 2007-08-17 2009-02-26 International Business Machines Corporation Method and system for atomicity for elliptic curve cryptosystems
US8160247B2 (en) * 2007-09-27 2012-04-17 Adobe Systems Incorporated Providing local storage service to applications that run in an application execution environment
WO2014095772A1 (en) * 2012-12-21 2014-06-26 Koninklijke Philips N.V. Computing device comprising a table network
JP6173904B2 (ja) * 2013-12-13 2017-08-02 株式会社東芝 共通鍵暗号装置及びプログラム、並びに、共通鍵復号装置及びプログラム
CN104917536B (zh) * 2014-03-11 2019-11-12 中兴通讯股份有限公司 一种支持低码率编码的方法及装置
CN107004072A (zh) * 2014-12-12 2017-08-01 皇家飞利浦有限公司 电子生成设备
US10505710B2 (en) * 2014-12-22 2019-12-10 Koninklijke Philips N.V. Electronic calculating device

Also Published As

Publication number Publication date
RU2018125606A3 (ja) 2020-04-16
JP2019506031A (ja) 2019-02-28
BR112018011790A2 (pt) 2018-12-04
NL2015955B1 (en) 2017-06-28
RU2018125606A (ru) 2020-01-16
WO2017102392A1 (en) 2017-06-22
EP3391264A1 (en) 2018-10-24
CN108369613A (zh) 2018-08-03
EP3391264B1 (en) 2020-02-12
US20200264872A1 (en) 2020-08-20

Similar Documents

Publication Publication Date Title
US20190287427A1 (en) Device and method for performing obfuscated arithmetic
JP5861018B1 (ja) テーブルネットワークによって構成されたコンピューティングデバイス
JP2016505891A (ja) テーブルネットワークを有する計算装置
JP2018522291A (ja) 信頼できないコンピュータ上でプライベートプログラムを実行するためのシステム及びプロセス
US8976960B2 (en) Methods and apparatus for correlation protected processing of cryptographic operations
Brenner et al. How practical is homomorphically encrypted program execution? an implementation and performance evaluation
KR20060134992A (ko) 정수를 가산하는 컴퓨터 시스템
JP2020515093A (ja) 符号化加算のための計算デバイス
RU2680761C1 (ru) Безопасные преобразования данных
JP2021507391A (ja) コンパイル装置及び方法
CN105765896B (zh) 用于表格网络的迭代应用的计算设备
CN113273131A (zh) 使用共享的份额的计算设备
JP6522860B2 (ja) 計算装置及び方法
US11200346B2 (en) Secure computation for reading multiple elements from a secure text array
KR20220079522A (ko) 기하 대수 및 헨젤 코드들을 이용한 암호화를 위한 방법들 및 시스템들과 동형 암호화 시스템들
KR101440680B1 (ko) 중국인 나머지 정리에 기반한 준동형 암복호화 방법 및 이를 이용한 장치
US10505710B2 (en) Electronic calculating device
JP7191097B2 (ja) 計算デバイス及び方法
EP3238113B1 (en) Hiding of a program execution
JP6876423B2 (ja) ストリーム暗号における内部状態の初期化装置、方法及びプログラム
JP2015118439A (ja) 演算装置、演算方法およびコンピュータプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190314

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190326

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190424

R150 Certificate of patent or registration of utility model

Ref document number: 6522860

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees