(57)【特許請求の範囲】
【請求項１】
データの難読化された表現を使ってデータに対する演算を実行するシステムであって：
（ｉ）第一のデータ値w0の第一の難読化された表現（X0,Y0）を取得し、（ｉｉ）第二のデータ値w1の第二の難読化された表現（X1,Y1）を取得するよう構成された入力装置であって、以下の関係、すなわち：
【数１】
0006397921.tif 000073
が成り立ち、
【数２】
0006397921.tif 000074
は演算子であり、
A0およびA1はデータ値(w0,w1)に依存する線形演算子であり、
B0およびB1は状態変数(σ0,σ1)に依存する線形演算子であり、
(u,v)を
【数３】
0006397921.tif 000075
にマッピングする演算子Eはuに関して可逆であり、
σ0およびσ1は難読化された表現に冗長性を与える状態変数である、入力装置と；
第一のデータ値w0の難読化された表現（X0,Y0）および第二のデータ値w1の難読化された表現（X1,Y1）に対して
【数４】
0006397921.tif 000076
を含む演算を実行することによって、第三のデータ値w2の難読化された表現（X2,Y2）を決定するよう構成された第一の処理器であって、
【数５】
0006397921.tif 000077
であり、
【数６】
0006397921.tif 000078
は演算子である、第一の処理器と；
第三のデータ値w2の難読化された表現（X2,Y2）を第二の装置の受信器に送信するよう構成されている、前記第一の処理器に結合された送信器とを有する、
システム。
【請求項２】
（ｉ）第一のデータ値w0に基づく第一の難読化された表現（X0,Y0）および（ｉｉ）第二のデータ値w1に基づく第二の難読化された表現（X1,Y1）を生成するよう構成された、前記入力装置に結合された第二の処理器をさらに有する、請求項１記載のシステム。
【請求項３】
【数７】
0006397921.tif 000079
を含む連立方程式を使って第三のデータ値w2を得るために第三のデータ値w2の難読化された表現(X2,Y2)を難読化解除するよう構成された、前記第二の装置の前記受信器に結合された、前記第二の装置の処理器をさらに有しており、
σ2は第三のデータ値w2の難読化された表現(X2,Y2)に冗長性を与えるための状態変数である
請求項１記載のシステム。
【請求項４】
状態変数σ0の値および／または状態変数σ1の値を生成するよう構成されたランダムまたは擬似ランダム値生成器をさらに有しており、前記第二の処理器は、（ｉ）第一のデータ値w0および状態変数σ0に基づいて第一の難読化された表現（X0,Y0）を生成し、（ｉｉ）第二のデータ値w1および状態変数σ1に基づいて第二の難読化された表現（X1,Y1）を生成するようさらに構成されている、請求項２記載のシステム。
【請求項５】
前記第二の処理器は、第一の難読化された表現（X0,Y0）および第二の難読化された表現（X1,Y1）をルックアップテーブルにおいて見出すよう構成されている、請求項２記載のシステム。
【請求項６】
前記第一の処理器は、X0およびX1からのX2の計算およびY0およびY1からのY2の計算の少なくとも一方を平文で実行するよう構成されている、請求項１記載のシステム。
【請求項７】
w0,w1,w2,σ0,σ1,σ2,X0,X1,X2,Y0,Y1およびY2は同数のビットをもつ値である、請求項１記載のシステム。
【請求項８】
演算子A0、B0、A1およびB1のうちの少なくとも一つは可逆な演算子である、請求項１記載のシステム。
【請求項９】
演算子A0、B0、A1およびB1のそれぞれが可逆な演算子である、請求項８記載のシステム。
【請求項１０】
演算子
【数８】
0006397921.tif 000080
はビット毎のXOR演算であり、
演算子
【数９】
0006397921.tif 000081
はビット毎のXOR演算である、請求項１記載のシステム。
【請求項１１】
前記ビット毎のXOR演算は少なくとも一つのXORマシン命令によって実行される、請求項１０記載のシステム。
【請求項１２】
データの難読化された表現を使ってデータに対する演算を実行する方法であって：
入力装置により、第一のデータ値w0の第一の難読化された表現（X0,Y0）および第二のデータ値w1の第二の難読化された表現（X1,Y1）を取得する段階であって、以下の関係、すなわち：
【数１０】
0006397921.tif 000082
が成り立ち、
【数１１】
0006397921.tif 000083
は演算子であり、
A0およびA1はデータ値(w0,w1)に依存する線形演算子であり、
B0およびB1は状態変数(σ0,σ1)に依存する線形演算子であり、
(u,v)を
【数１２】
0006397921.tif 000084
にマッピングする演算子Eはuに関して可逆であり、
σ0およびσ1は難読化された表現に冗長性を与えるための状態変数である、段階と；
第一の処理器により、第一のデータ値w0の難読化された表現（X0,Y0）および第二のデータ値w1の難読化された表現（X1,Y1）に対して
【数１３】
0006397921.tif 000085
を含む演算を実行することによって、第三のデータw2の難読化された表現（X2,Y2）を決定する段階であって、
【数１４】
0006397921.tif 000086
であり、
【数１５】
0006397921.tif 000087
は演算子である、段階と；
前記第一の処理器に結合された送信器により、第三のデータ値w2の難読化された表現（X2,Y2）を第二の装置の受信器に送信する段階とを含む、
方法。
【請求項１３】
プロセッサに、データの難読化された表現を使ってデータに対する演算を実行する方法を実行させるためのコンピュータ・プログラムであって、前記方法は：
方法であって：
入力装置により、第一のデータ値w0の第一の難読化された表現（X0,Y0）および第二のデータ値w1の第二の難読化された表現（X1,Y1）を取得する段階であって、以下の関係、すなわち：
【数１６】
0006397921.tif 000088
が成り立ち、
【数１７】
0006397921.tif 000089
は演算子であり、
A0およびA1はデータ値(w0,w1)に依存する線形演算子であり、
B0およびB1は状態変数(σ0,σ1)に依存する線形演算子であり、
(u,v)を
【数１８】
0006397921.tif 000090
にマッピングする演算子Eはuに関して可逆であり、
σ0およびσ1は難読化された表現に冗長性を与えるための状態変数である、段階と；
第一の処理器により、第一のデータ値w0の難読化された表現（X0,Y0）および第二のデータ値w1の難読化された表現（X1,Y1）に対して
【数１９】
0006397921.tif 000091
を含む演算を実行することによって、第三のデータw2の難読化された表現（X2,Y2）を決定する段階であって、
【数２０】
0006397921.tif 000092
であり、
【数２１】
0006397921.tif 000093
は演算子である、段階と；
前記第一の処理器に結合された送信器により、第三のデータ値w2の難読化された表現（X2,Y2）を第二の装置の受信器に送信する段階とを含む、
コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オペランドの難読化された表現を使って演算を実行することに関する。
【背景技術】
【０００２】
今日、膨大な量のデータがネットワーク、携帯電話、ブルートゥース（登録商標）装置、銀行自動窓口機（ATM）などを介して転送される。望まれないアクセスから情報を保護するために、暗号化が非常にしばしば用いられる。暗号学では、暗号化は、第三者が読めず、権限のある当事者のみが読めるような仕方でメッセージをエンコードするプロセスである。暗号化方式において、平文と称されるメッセージは、暗号化アルゴリズムを使って暗号化され、読むことのできない暗号文にする。これは通例、メッセージがどのようにエンコードされるかを指定する暗号化鍵の使用によりなされる。暗号文を見ることのできるいかなる敵も、もとのメッセージについていかなることも判別できないべきである。しかしながら、権限のある当事者は、復号アルゴリズムを使って暗号文を復号できる。復号アルゴリズムは、通例、敵がアクセスをもたない秘密の復号鍵を要求する。
【０００３】
暗号化は、コンピュータおよび記憶装置におけるファイルのような記憶されたデータを保護するためにも適用されることができる。
【０００４】
クラウド・コンピューティングでは、通例、リアルタイム・ネットワークを通じて接続された多数のコンピュータに関わる、ネットワークを通じた分散コンピューティングが実行される。そうした計算に関わるデータは、第三者が容易にアクセスを得ることができるネットワークに記憶されるので、保護される必要がある。
【０００５】
非特許文献１では、データを秘密に保つが演算を実行することを許容する暗号化方式が開示されている。しかしながら、この暗号化された方式は計算上高価である。
【０００６】
非特許文献２は、加法的に準同型な（homomorphic）ストリーム暗号を開示している。
【０００７】
特許文献１は、SIM上で実装される暗号関数を開示している。実行されるべき暗号関数への入力データをマスクするためにランダム・マスクが使われる。特に、マスキング関数は有利には群演算である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】国際公開第2006/058561A1号
【非特許文献】
【０００９】
【非特許文献１】Craig  Gentry、"Computing  Arbitrary  Functions  of  Encrypted  Data"、Communications  of  the  ACM,  Vol.53,  No3,  pp.97-105,  March  2010
【非特許文献２】Castelluccia  C  et  al.、"Efficient  Aggregation  Of  Encrypted  Data  In  Wireless  Sensor  Networks"、Mobile  and  Ubiquitous  Systems:  Networking  and  Services,  2005.  MOBIQUIT  OUS  2005,  17  July  2005,  pp.109-117,  XP010853989,  ISBN:  978-0-7695-2375-0
【発明の概要】
【発明が解決しようとする課題】
【００１０】
データ値の暗号化された表現を使って演算を実行することを許容するシステムをもつことが有利であろう。
【課題を解決するための手段】
【００１１】
この懸案によりよく対処するために、本発明の第一の側面は、データの難読化された（obfuscated）表現を使ってデータに対する演算を実行するシステムであって：
第一のデータ値w0の第一の難読化された表現（X0,Y0）を取得し、第二のデータ値w1の第二の難読化された表現（X1,Y1）を取得するよう構成された取得手段であって、以下の関係、すなわち：
【００１２】
【数１】
0006397921.tif 000002
が成り立ち、
【００１３】
【数２】
0006397921.tif 000003
は演算子であり、
A0、B0、A1およびB1は線形演算子であり、(u,v)を
【００１４】
【数３】
0006397921.tif 000004
にマッピングする演算子Eはuに関して可逆であり、
σ0およびσ1は難読化された表現に冗長性を与えるための状態変数である、手段と；
第一のデータ値w0の難読化された表現（X0,Y0）および第二のデータ値w1の難読化された表現（X1,Y1）に対して以下の演算、すなわち
【００１５】
【数４】
0006397921.tif 000005
を実行することによって、第三のデータ値w2の難読化された表現（X2,Y2）を決定するよう構成された決定手段であって、
【００１６】
【数５】
0006397921.tif 000006
であり、
【００１７】
【数６】
0006397921.tif 000007
は演算子である、手段とを有するシステムを提供する。
【００１８】
このシステムは、二つの入力データ値w0およびw1の間の演算
【００１９】
【数７】
0006397921.tif 000008
が入力データ値w0の難読化された表現（X0,Y0）および入力データ値w1の難読化された表現（X1,Y1）を使って、これらの難読化された表現を復号する必要なく実行できるという利点がある。さらに、演算の計算量は、演算
【００２０】
【数８】
0006397921.tif 000009
の計算量と同様である。結果として、演算は効率的に実行されうる。したがって、w0およびw1の難読化された表現を、それらの間の演算を実行するために難読化解除する必要はなく、このようにして、過度の複雑さを加えることなくシステムのセキュリティを改善する。
【００２１】
たとえば、X0、Y0、X1、Y1がZの要素であり；w0およびw1がWの要素であり、σ0およびσ1がΣの要素であり、A0：W×W→Z、A1：W×W→Z、B0：Σ×Σ→Z、B1：Σ×Σ→Zであるよう定義されたドメインW、Σ、Zがあってもよい。演算子
【００２２】
【数９】
0006397921.tif 000010
はZ上で定義されてもよく、演算子
【００２３】
【数１０】
0006397921.tif 000011
はW上で定義されてもよく、演算子△はΣ上で定義されてもよい。演算
【００２４】
【数１１】
0006397921.tif 000012
は可換、すなわちすべてのz1、z2∈Zについて
【００２５】
【数１２】
0006397921.tif 000013
であり、かつ結合則を満たす、すなわちすべてのz1、z2、z3∈Zについて
【００２６】
【数１３】
0006397921.tif 000014
である。WからZへのマッピングA0、A1はすべてのw0,w1∈Wおよびi＝0,1について、
【００２７】
【数１４】
0006397921.tif 000015
というものであってもよい。これは、A0、A1は線形であると言うことによって表現されてもよい。ΣからZへのマッピングB0、B1はすべてのσ0,σ1∈Σおよびi＝0,1について、
【００２８】
【数１５】
0006397921.tif 000016
というものであってもよい。これは、B0、B1は線形であると言うことによって表現する。さらに、A0,B0,A1,B1は、
【００２９】
【数１６】
0006397921.tif 000017
の組み合わせからw∈Wを一意的に決定することが可能なように選択される。すなわち、w,w'∈Wおよびσ,σ'∈Σがi＝1,2について
【００３０】
【数１７】
0006397921.tif 000018
であれば、w＝w'である。
【００３１】
本システムはさらに、第一のデータ値w0に基づく第一の難読化された表現（X0,Y0）および第二のデータ値w1に基づく第二の難読化された表現（X1,Y1）を生成するよう構成された難読化手段を有していてもよい。
【００３２】
本システムはさらに、連立方程式
【００３３】
【数１８】
0006397921.tif 000019
から第三のデータ値w2を得るために第三のデータ値w2の難読化された表現(X2,Y2)を難読化解除するよう構成された難読化解除手段を有していてもよい。ここで、
σ2は第三のデータ値w2の難読化された表現(X2,Y2)に冗長性を与えるための状態変数である。
【００３４】
本システムはさらに、状態変数σ0の値および／または状態変数σ1の値をランダムまたは擬似ランダムに生成する状態生成器を有していてもよく、前記難読化手段は、第一のデータ値w0および状態変数σ0に基づいて第一の難読化された表現（X0,Y0）を生成し、第二のデータ値w1および状態変数σ1に基づいて第二の難読化された表現（X1,Y1）を生成するよう構成されている。これは、状態変数σ0および／またはσ1によって課される追加的な冗長性を制御することによって強い難読化を生じることを許容する。
【００３５】
前記難読化手段は、第一の難読化された表現（X0,Y0）および第二の難読化された表現（X1,Y1）をルックアップテーブルにおいて見出すよう構成されていてもよい。追加的または代替的に、難読化解除手段は、第三のデータ値w2をルックアップテーブルにおいて見出すよう構成されていてもよい。これは、難読化を実装する効率的な仕方である。ルックアップテーブルによる実装は、攻撃者が難読化を破るのをより困難にもする。
【００３６】
前記難読化手段および前記難読化解除手段は第一の装置の一部であってもよく、前記決定手段は第二の、異なる装置の一部であってもよい。前記第一の装置はさらに送信手段および受信手段を有していてもよく、前記第二の装置はさらに送信手段および受信手段を有していてもよい。前記第一の装置の送信手段は、第一の難読化された表現（X0,Y0）および第二の難読化された表現（X1,Y1）を前記第二の装置の受信手段に送信するよう構成されていてもよい。前記第二の装置の送信手段は、難読化された表現（X2,Y2）を前記第一の装置の受信手段に送信するよう構成されていてもよい。この構成は、前記第二の装置に難読化されていない（すなわち平文の）データ値w0,w1,w2へのアクセスを与えることなく、
【００３７】
【数１９】
0006397921.tif 000020
演算の前記第二の装置への委任を許容する。
【００３８】
前記決定手段は、X0およびX1からのX2の計算およびY0およびY1からのY2の計算の少なくとも一方を平文で実行するよう構成されていてもよい。これは、計算自身を難読化する必要なしに、それでいてもとのデータ値を攻撃者に明かすことなく、X2およびY2の効率的な計算を許容する。
【００３９】
w0,w1,w2,σ0,σ1,σ2,X0,X1,X2,Y0,Y1,Y2の値は同数のビットをもつ値であってもよい。これは実装を容易にする。
【００４０】
演算子
【００４１】
【数２０】
0006397921.tif 000021
はビット毎のXOR演算であってもよい。これはこの用途のための特に好適な演算である。ビット毎のXOR演算は少なくとも一つのXORマシン命令によって実行されうる。これは、XOR演算を計算する効率的な方法であり、もとのデータ値を攻撃者に明かさない。
【００４２】
本発明のもう一つの側面では、データの難読化された表現を使ってデータに対する演算を実行する方法が提供される。本方法は：
第一のデータ値w0の第一の難読化された表現（X0,Y0）を取得し、第二のデータ値w1の第二の難読化された表現（X1,Y1）を取得する段階であって、以下の関係、すなわち：
【００４３】
【数２１】
0006397921.tif 000022
が成り立ち、
【００４４】
【数２２】
0006397921.tif 000023
は演算子であり、
A0、B0、A1およびB1は線形演算子であり、(u,v)を
【００４５】
【数２３】
0006397921.tif 000024
にマッピングする演算子Eはuに関して可逆であり、
σ0およびσ1は難読化された表現に冗長性を与えるための状態変数である、段階と；
第一のデータ値w0の難読化された表現（X0,Y0）および第二のデータ値w1の難読化された表現（X1,Y1）に対して以下の演算、すなわち
【００４６】
【数２４】
0006397921.tif 000025
を実行することによって、第三のデータw2の難読化された表現（X2,Y2）を決定する段階であって、
【００４７】
【数２５】
0006397921.tif 000026
であり、
【００４８】
【数２６】
0006397921.tif 000027
は演算子である、段階とを含む。
【００４９】
もう一つの側面では、プロセッサ・システムに上記の方法を実行させるための命令を有するコンピュータ・プログラム・プロダクトが提供される。
【００５０】
当業者には、本発明の上述した実施形態、実装および／または側面が有用と見なされる任意の仕方で組み合わされてもよいことが理解されるであろう。
【００５１】
システムの記載された修正および変形に対応する画像取得装置、ワークステーション、システム、方法および／またはコンピュータ・プログラム・プロダクトの修正および変形が、本稿に基づいて当業者によって実行されることができる。
【図面の簡単な説明】
【００５２】
本発明のこれらおよび他の側面が以下の実施形態から明白となり、以下の実施形態を参照することで明快にされるであろう。
【図１】入力データ値の難読化された表現を使って演算を安全に実行するためのシステムのブロック図である。
【図２】入力データ値の難読化された表現を使って演算を安全に実行する方法を示す図である。
【図３】入力データ値の難読化された表現を使って演算を安全に実行したあとにデータを難読化解除する方法を示す図である。
【発明を実施するための形態】
【００５３】
多くの応用において、第一の入力データ値w0および第二の入力データ値w1に安全な仕方で演算を適用する必要がある。ここで、第一の入力データ値w0の第一の難読化された表現Z0および第二の入力データ値w1の第二の難読化された表現Z1が入手可能である。たとえ悪意のあるユーザーが作業メモリへのアクセスを含め当該装置へのフル・アクセスを有する場合でも、あるいは悪意のあるユーザーがアプリケーションを解析するデバッグ・ツールを使う能力をもつ場合でも、第一の入力データ値w0および第二の入力データ値w1を悪意のあるユーザーから隠すことが望ましいであろう。
【００５４】
したがって、値w0およびw1を計算して前記演算を実行する代わりに、前記演算は、第一の入力データ値w0の第一の難読化された表現Z0および第二の入力データ値w1の第二の難読化された表現Z1を使って実行されてもよい。
【００５５】
Z0およびZ1は、Z0＝(X0,Y0)およびZ1＝(X1,Y1)というように二つの成分に分けられていてもよいことを注意しておく。
【００５６】
図１は、安全な演算を実行するためのシステムの実施形態を示している。図面において、いくつかの処理手段が長方形によって表わされている。
【００５７】
さらに、データ要素はその変数記号および所与の長さのビット・シーケンスを象徴する描かれた配列によって示されている。しかしながら、各データ要素のビット・シーケンスの実際の長さは変えられてもよい。図面はデータ要素の実際の長さを示すものではない。システムは、適正にプログラムされたコンピュータ、スマートフォンまたはスマートカードのような単一の処理装置上で実装されてもよい。システムは、いくつかの異なる処理装置上に分散されてもよい。
【００５８】
システムは、第一の入力データ値w0の第一の難読化された表現（X0,Y0）および第二の入力データ値w1の第二の難読化された表現（X1,Y1）を取得する取得手段を有する。ここで、以下の関係、すなわち：
【００５９】
【数２７】
0006397921.tif 000028
が成り立ち、
【００６０】
【数２８】
0006397921.tif 000029
は演算子であり、
A0、B0、A1およびB1は線形演算子であり、
【００６１】
【数２９】
0006397921.tif 000030
とマッピングする演算子Eはuに関して可逆であり、σ0およびσ1は難読化された表現に冗長性を与えるための状態変数である。演算子
【００６２】
【数３０】
0006397921.tif 000031
はビット毎のXOR演算であってもよい。あるいはまた、これらの演算子は、所与のドメイン上で定義された算術加算であることができる。
【００６３】
X0、Y0、X1、Y1がZの要素であり；w0およびw1がWの要素であり、σ0およびσ1がΣの要素であり、A0：W×W→Z、A1：W×W→Z、B0：Σ×Σ→Z、B1：Σ×Σ→Zであるよう定義されたドメインW、Σ、Zがあってもよい。演算子
【００６４】
【数３１】
0006397921.tif 000032
はZ上で定義され、演算子
【００６５】
【数３２】
0006397921.tif 000033
はW上で定義され、演算子△はΣ上で定義される。演算子A0,B0,A1,B1は線形演算子である。これはたとえば、W内のすべてのw0およびw1について
【００６６】
【数３３】
0006397921.tif 000034
であり、W内のすべてのw0およびw1について
【００６７】
【数３４】
0006397921.tif 000035
であり、
【００６８】
【数３５】
0006397921.tif 000036
であることを意味する。
【００６９】
演算
【００７０】
【数３６】
0006397921.tif 000037
は可換、すなわちすべてのz1、z2∈Zについて
【００７１】
【数３７】
0006397921.tif 000038
であり、かつ結合則を満たす、すなわちすべてのz1、z2、z3∈Zについて
【００７２】
【数３８】
0006397921.tif 000039
である。WからZへのマッピングA0、A1はすべてのw0,w1∈Wおよびi＝0,1について、
【００７３】
【数３９】
0006397921.tif 000040
というものである。ΣからZへのマッピングB0、B1はすべてのσ0,σ1∈Σおよびi＝0,1について、
【００７４】
【数４０】
0006397921.tif 000041
というものである。最後に、
【００７５】
【数４１】
0006397921.tif 000042
からw∈Wを決定することが実現可能であるべきである。すなわち、w,w'∈Wおよびσ,σ'∈Σがi＝1,2について
【００７６】
【数４２】
0006397921.tif 000043
であれば、w＝w'である。たとえば、マッピング
【００７７】
【数４３】
0006397921.tif 000044
は可逆である。一般に、所与のX、Y∈Zおよびσ∈Σから、wを得ることが可能であるべきである。
【００７８】
ここで、この原理を例解するための個別的な例を論じる。データ値をよりよく難読化するために、選択された集合および演算は異なるように、より複雑な仕方で選ばれてもよいことを注意しておく。この例では、W＝{0,1}3、Σ＝{0,1}2、Z＝{0,1}2である。換言すれば、Wはあらゆる三ビット値の集合であり、Σはあらゆる二ビット値の集合であり、Zはあらゆる二ビット値の集合である。演算子
【００７９】
【数４４】
0006397921.tif 000045
はそれぞれのドメインにおけるビット毎のXOR演算子である。この例の線形演算子はそれぞれのドメイン上で次のように定義される。
【００８０】
【数４５】
0006397921.tif 000046
すると、状態パラメータσ＝(σ1,σ2)を用いた値w＝(w1,w2,w3)の難読化された表現(X,Y)＝((x1,x2),(y1,y2))は次のように計算できる。
【００８１】
【数４６】
0006397921.tif 000047
データを難読化解除するために必要とされるように、((x1,x2),(y1,y2))の各値は(w1,w2,w3)の値を一意的に定義することを注意しておく。A1(w1,w2,w3)＋B1(σ1,σ2)＝(σ1,x2)およびA0(x1,x2,x3)＋B0(σ1,σ2)＝(x1,σ1＋x2)であるため、任意の所与の((x1,x2),(y1,y2))および(σ1,σ2)から(w1,w2,w3)を一意的に決定することが可能だからである。
【００８２】
この個別的な例では、(σ1,σ2)の値は((x1,x2),(y1,y2))の値によって一意的に定義されない。しかしながら、関心対象のデータは(w1,w2,w3)によって具現されており、(σ1,σ2)の値を復元できる必要はない。
【００８３】
もう一つの単純化された例が下記で呈示される。この場合、W、Σ、Zは正の実数の集合に等しい。演算子
【００８４】
【数４７】
0006397921.tif 000048
は実数乗算であり、演算子
【００８５】
【数４８】
0006397921.tif 000049
は実数加算である。さらに、線形演算は次のように選択される：A0(w)＝w、A1(w)＝w2、B0(σ)＝B1(σ)＝eσ。この場合にも、wは所与の(X,Y)およびσから復元できる。実際、
【００８６】
【数４９】
0006397921.tif 000050
から、wは除算を実行することによって得ることができる。
【００８７】
以下では、演算子はすべてのドメインW、ΣおよびZにおいて
【００８８】
【数５０】
0006397921.tif 000051
によって示される。しかしながら、原理的には、W、ΣおよびZ上の演算子はみな異なる演算子であることができることを念頭に置いておくべきである。あるいはまた、たとえばW＝Σ＝Zの場合、各ドメイン上で同じ演算子が使われてもよい。
【００８９】
ある個別的な例では、システムをより効率的な仕方で実装するために、w0,σ0,X0,Y0,w1,σ1,X1,Y1は8個のビットを有していてもよく、あるいは2の倍数個のビットを有していてもよい。
【００９０】
ある個別的な例では、A0,B0,A1,B1の少なくとも一つは可逆な線形演算子である。より特定的な例では、A0,B0,A1,B1のそれぞれが可逆な線形演算子である。
【００９１】
システムは、第一の入力データ値w0および第二の入力データ値w1を決定するためのデータ入力ユニット１００を有していてもよい。たとえば、入力ユニット１００は第一の入力データ値w0および第二の入力データ値w1を装置の通信サブシステムを介して受領するよう構成される。あるいはまた、入力ユニット１００はメモリからそれらの入力データ値を受領するよう構成されていてもよい。メモリは内部メモリまたは外部メモリでありうる。
【００９２】
たとえば、取得手段は、データ入力ユニット１００から入力値として第一のデータ値w0および第二のデータ値w1を受領し、第一の入力データ値w0に基づく第一の難読化された表現（X0,Y0）および第二の入力データ値w1に基づく第二の難読化された表現（X1,Y1）を生成するよう構成された難読化手段１０１を有していてもよい。たとえば、難読化された表現とデータ値との間の関係が事前計算されてルックアップテーブルに記憶されていてもよい。任意的に、難読化手段１０１は、状態変数σ0および／または状態変数σ1の値を生成する状態生成器を有する。これらの値はたとえばランダムまたは擬似ランダムに生成されてもよい。たとえば、これらの値はそれぞれw0およびw1に依存してもよい。難読化手段１０１は、第一のデータ値w0および状態変数σ0に基づいて第一の難読化された表現（X0,Y0）を生成し、第二のデータ値w1および状態変数σ1に基づいて第二の難読化された表現（X1,Y1）を生成するよう構成されていてもよい。この場合、たとえば、難読化された表現とデータ値の対の間の関係が事前計算されてルックアップテーブルに記憶されていてもよい。
【００９３】
あるいはまた、前記取得手段は、第一の難読化された表現（X0,Y0）および第二の難読化された表現（X1,Y1）を異なる仕方で取得するよう構成される。たとえば、これらの値は外部源から受領されてもよく、あるいは他のデータの難読化された表現に対する計算の結果であってもよい。
【００９４】
システムはさらに、決定手段１０２を有する。決定手段１０２は、データ値w2の難読化された表現(X2,Y2)を決定するよう構成されている。ここで、
【００９５】
【数５１】
0006397921.tif 000052
である。より特定的には、決定手段１０２は次式を計算する。
【００９６】
【数５２】
0006397921.tif 000053
ある個別的な例では、これらの演算
【００９７】
【数５３】
0006397921.tif 000054
は平文で計算される。たとえば、該演算がXOR演算である場合、該演算は、本システムが実装される装置のプロセッサの対応するXORマシン命令を使って実行されうる。
【００９８】
演算子
【００９９】
【数５４】
0006397921.tif 000055
が交換則および結合則を満たす性質および前記いくつかの演算子の線形性のため、次式が成り立つ。
【０１００】
【数５５】
0006397921.tif 000056
これに鑑み、(X2,Y2)は
【０１０１】
【数５６】
0006397921.tif 000057
の難読化された表現である。先に定義されたように、
【０１０２】
【数５７】
0006397921.tif 000058
である。
【０１０３】
【数５８】
0006397921.tif 000059
と定義されるとき、(X2,Y2)は、σ2を状態変数とした、w2の難読化された表現ということになる。
【０１０４】
難読化手段１０１がルックアップテーブルによって実装されてもよいことを注意しておく。たとえば、難読化手段１０１は単一のルックアップテーブルによって実装されてもよい。任意的に、これらのルックアップテーブルは、たとえばChow  et  al.から知られる技法を使って、ルックアップテーブルの入力および出力をエンコードすることによってさらに難読化されてもよい。
【０１０５】
難読化された値(X2,Y2)は任意的に、難読化解除される前に、たとえば追加的な
【０１０６】
【数５９】
0006397921.tif 000060
演算または他の種類の演算を実行することによって、さらなる難読化処理にかけられてもよい。何らかの取得された難読化された値によって表わされるデータ値を復元する時になったら、難読化された値は、難読化解除のために難読化解除手段に与えられてもよい。よって、本システムはさらに、難読化解除手段１０３を有していてもよい。難読化解除手段１０３は、上述した連立方程式
【０１０７】
【数６０】
0006397921.tif 000061
を解くことによってw2を得るために、データ値w2の難読化された表現(X2,Y2)を難読化解除してもよい。ここで、σ2は難読化された表現(X2,Y2)に冗長性を与える状態変数である。
【０１０８】
本システムはさらに、難読化解除手段１０３からw2の計算された値を受領し、該w2の値をシステムの他のコンポーネント（図示せず）に転送するおよび／または該w2の値をメモリに記憶するよう構成された出力ユニットを有していてもよい。たとえば、出力ユニットは、データw2の視覚化を表示装置上に表示するおよび／または該データをオーディオ装置で再生するよう構成されていてもよい。
【０１０９】
入力手段１００および／または難読化手段１０１は第一の装置の一部であってもよく、決定手段１０２は第二の装置の一部であってもよい。ここで、第一の装置は第二の装置とは異なる装置である。たとえば、入力手段１００は第一の入力データ値w0および第二の入力データ値w1をメモリからまたは外部源から受領し、それらを難読化手段１０１に提供してもよく、難読化手段１０１が第一の入力データ値w0の第一の難読化された表現(X0,Y0)および第二の入力データ値w1の第二の難読化された表現(X1,Y1)を計算する。第一の装置は送信機手段を有していてもよい。送信機手段は、第一の入力データ値w0の難読化された表現(X0,Y0)および第二の入力データ値w1の第二の難読化された表現(X1,Y1)を第二の装置に送信してもよい。第二の装置は受信手段を有していてもよい。受信手段は、第一の入力データ値w0の難読化された表現(X0,Y0)および第二の入力データ値w1の第二の難読化された表現(X1,Y1)を第一の装置から受信し、それらを決定手段１０２に提供してもよい。決定手段１０２は、データ値w2の難読化された表現(X2,Y2)を決定してもよい。ここで、上記のように
【０１１０】
【数６１】
0006397921.tif 000062
である。難読化解除手段１０３（および任意的な出力ユニット）は第一の装置の一部であってもよく、あるいは第二の装置の一部であってもよく、あるいはさらなる第三の装置の一部であってもよい。よって、第二の装置は、第一または第三の装置に難読化された表現(X2,Y2)を送信するよう構成された送信機を有していてもよい。
【０１１１】
図２は、入力データ値の難読化された表現を使って演算を実行するセキュリティの方法を示している。
【０１１２】
本方法は、第一の入力データ値w0および第二の入力データ値w1を難読化して、第一の入力データ値w0の第一の難読化された表現（X0,Y0）および／または第二の入力データ値w1の第二の難読化された表現（X1,Y1）を生成する段階を含む。第一の入力データ値w0の第一の難読化された表現（X0,Y0）および／または第二の入力データ値w1の第二の難読化された表現（X1,Y1）は、次の式、すなわち：
【０１１３】
【数６２】
0006397921.tif 000063
を計算することによって生成されてもよい。
【０１１４】
第一の入力データ値w0の第一の難読化された表現（X0,Y0）および／または第二の入力データ値w1の第二の難読化された表現（X1,Y1）はルックアップテーブルの検索によって生成されてもよい。ルックアップテーブルは、あるデータ値w3の難読化された表現(X3,Y3)と前記第一の入力データ値w0の難読化された表現（X0,Y0）との間の関係を定義してもよい。
【０１１５】
本方法はさらに、第三のデータw2の難読化された表現(X2,Y2)を決定する段階２０２を含んでいてもよい。ここで、
【０１１６】
【数６３】
0006397921.tif 000064
である。第三のデータw2の難読化された表現(X2,Y2)は、次の演算
【０１１７】
【数６４】
0006397921.tif 000065
を実行することによって決定されてもよい。
【０１１８】
ここで、(X0,Y0)は第一の入力データ値w0の第一の難読化された表現であってもよく、（X1,Y1）は第二の入力データ値w1の第二の難読化された表現であってもよい。
【０１１９】
本方法はさらに、第三のデータw2の決定された難読化された表現(X2,Y2)をさらなる処理のために（たとえば新たな演算を実行するために）またはルックアップテーブルに記憶するために送る段階２０３を含んでいてもよい。ここで、ルックアップテーブルは、難読化された表現を生成するために使用されうる。
【０１２０】
図３は、入力データ値の難読化された表現を使って演算を実行したあとに難読化されたデータが難読化解除される方法を示している。
【０１２１】
本方法は、第一の入力データ値w0の第一の難読化された表現（X0,Y0）および第二の入力データ値w1の第二の難読化された表現（X1,Y1）を受領する段階３０１を含んでいてもよい。第一の入力データ値w0の第一の難読化された表現（X0,Y0）および／または第二の入力データ値w1の第二の難読化された表現（X1,Y1）は、次の式、すなわち
【０１２２】
【数６５】
0006397921.tif 000066
を計算することによって生成されたものであってもよい。
【０１２３】
第一の入力データ値w0の第一の難読化された表現（X0,Y0）および／または第二の入力データ値w1の第二の難読化された表現（X1,Y1）はルックアップテーブルを使って生成されたものであってもよい。ルックアップテーブルはあるデータ値w3の難読化された表現(X3,Y3)と前記第一の入力データ値w0の前記難読化された表現（X0,Y0）との間の関係を定義してもよい。
【０１２４】
本方法はさらに、第三のデータw2の難読化された表現(X2,Y2)を決定する段階３０２を含んでいてもよい。ここで、
【０１２５】
【数６６】
0006397921.tif 000067
である。第三のデータw2の難読化された表現(X2,Y2)は、次の演算
【０１２６】
【数６７】
0006397921.tif 000068
を実行することによって決定されてもよい。
【０１２７】
ここで、(X0,Y0)は第一の入力データ値w0の第一の難読化された表現であってもよく、（X1,Y1）は第二の入力データ値w1の第二の難読化された表現であってもよい。
【０１２８】
本方法はさらに、w2を得るために、第三のデータw2の決定された難読化された表現(X2,Y2)を難読化解除する段階３０３を含んでいてもよい。難読化解除は、連立方程式
【０１２９】
【数６８】
0006397921.tif 000069
を解くことによって実行されてもよい。ここで、
【０１３０】
【数６９】
0006397921.tif 000070
は演算子であり、A0、B0、A1およびB1は演算子
【０１３１】
【数７０】
0006397921.tif 000071
に関して線形な演算子であり、(u,v)を
【０１３２】
【数７１】
0006397921.tif 000072
にマッピングする演算子Eはuに関して可逆であり、σ2は難読化された表現に冗長性を与えるための状態変数である。
【０１３３】
難読化解除された値w2は、さらなる処理のために（たとえば新たな演算を実行するためまたは表示のために）またはルックアップテーブルに記憶するために別のユニットに送られてもよい。ここで、ルックアップテーブルは、難読化された表現を難読化解除するためにのちに使用されうる。
【０１３４】
本発明が、本発明を実施するよう適応されたコンピュータ・プログラム、特に担体上または担体中のコンピュータ・プログラムにも適用されることは理解されるであろう。プログラムはソース・コード、オブジェクト・コード、部分的にコンパイルされた形のようなソースとオブジェクト・コードの中間のコードの形で、または本発明に基づく方法の実装において使うのに好適な他の任意の形であってもよい。また、そのようなプログラムが多くの異なるアーキテクチャー上のデザインをもちうることも理解されるであろう。たとえば、本発明に基づく方法またはシステムの機能を実装するプログラム・コードは、一つまたは複数のサブルーチンに細分されてもよい。機能をこれらのサブルーチンの間で分配する多くの異なる方法が当業者には明白であろう。サブルーチンは、自己完結したプログラムをなすよう一つの実行可能ファイルにまとめて格納されてもよい。そのような実行可能ファイルは、コンピュータ実行可能命令、たとえばプロセッサ命令および／またはインタープリター命令（たとえばジャバ・インタープリター命令）を含んでいてもよい。あるいはまた、サブルーチンの一つまたは複数または全部が少なくとも一つの外部ライブラリ・ファイルに格納されて、静的にまたは動的に、たとえばランタイムにメイン・プログラムとリンクされてもよい。メイン・プログラムは、サブルーチンの少なくとも一つへの少なくとも一つの呼び出しを含む。サブルーチンは、互いに対する呼び出しをも含んでいてもよい。コンピュータ・プログラム・プロダクトに関係するある実施形態は、本稿に記載される方法の少なくとも一つの方法の各処理段階に対応するコンピュータ実行可能命令を含む。これらの命令はサブルーチンに細分されるおよび／または静的にまたは動的にリンクされうる一つまたは複数のファイルに格納されるのでもよい。コンピュータ・プログラム・プロダクトに関係するもう一つの実施形態は、本稿に記載されるシステムおよび／またはプロダクトの少なくとも一方の各手段に対応するコンピュータ実行可能命令を含む。これらの命令はサブルーチンに細分されるおよび／または静的にまたは動的にリンクされうる一つまたは複数のファイルに格納されるのでもよい。
【０１３５】
コンピュータ・プログラムの担体は、そのプログラムを担持することのできる任意のエンティティまたはデバイスでありうる。たとえば、担体は、ROM、たとえばCD-ROMまたは半導体ROMまたは磁気記録媒体、たとえばフラッシュドライブまたはハードディスクのような記憶媒体を含んでいてもよい。さらに、担体は、電気ケーブルもしくは光ケーブルによってまたは電波もしくは他の手段によって搬送されうる、電気信号または光信号のような伝送可能な担体であってもよい。プログラムがそのような信号において具現されるときは、担体はそのようなケーブルまたは他のデバイスもしくは手段によって構成されてもよい。あるいはまた、担体は、プログラムが埋め込まれる集積回路であってもよく、該集積回路が関連する方法を実行するよう、あるいはその実行において使用されるよう適応される。
【０１３６】
上述した実施形態は本発明を限定するのではなく例解すること、当業者は付属の請求項の範囲から外れることなく多くの代替的な実施形態を設計できるであろうことを注意しておくべきである。請求項においては、括弧内に置かれた参照符号があったとしても、請求項を限定するものと解釈されるものではない。動詞「有する／含む」およびその活用形の使用は、請求項に述べられている以外の要素や段階の存在を排除するものではない。要素の単数形の表現はそのような要素の複数の存在を排除しない。本発明は、いくつかの相異なる要素を含むハードウェアによって、および好適にプログラムされたコンピュータによって実装されてもよい。いくつかの手段を列挙する装置請求項では、これらの手段のいくつかは同一のハードウェア項目によって具現されてもよい。ある種の施策が互いに異なる従属請求項において記載されているというだけの事実がこれらの施策の組み合わせが有利に使用できないことを示すものではない。
【図１】
0006397921.tif 000094
【図２】
0006397921.tif 000095
【図３】
0006397921.tif 000096