JP2018522291A - 信頼できないコンピュータ上でプライベートプログラムを実行するためのシステム及びプロセス - Google Patents
信頼できないコンピュータ上でプライベートプログラムを実行するためのシステム及びプロセス Download PDFInfo
- Publication number
- JP2018522291A JP2018522291A JP2018523361A JP2018523361A JP2018522291A JP 2018522291 A JP2018522291 A JP 2018522291A JP 2018523361 A JP2018523361 A JP 2018523361A JP 2018523361 A JP2018523361 A JP 2018523361A JP 2018522291 A JP2018522291 A JP 2018522291A
- Authority
- JP
- Japan
- Prior art keywords
- computer
- driver
- sending
- network driver
- operations
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 114
- 230000008569 process Effects 0.000 title description 24
- 238000004590 computer program Methods 0.000 claims abstract description 26
- 230000006870 function Effects 0.000 claims description 87
- 238000004364 calculation method Methods 0.000 claims description 57
- 230000004044 response Effects 0.000 claims description 46
- 230000007704 transition Effects 0.000 claims description 30
- 239000000654 additive Substances 0.000 claims description 19
- 230000000996 additive effect Effects 0.000 claims description 19
- 230000035772 mutation Effects 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims 2
- 238000004891 communication Methods 0.000 description 7
- 239000013256 coordination polymer Substances 0.000 description 7
- 230000003993 interaction Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000189617 Chorda Species 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- ZINJLDJMHCUBIP-UHFFFAOYSA-N ethametsulfuron-methyl Chemical compound CCOC1=NC(NC)=NC(NC(=O)NS(=O)(=O)C=2C(=CC=CC=2)C(=O)OC)=N1 ZINJLDJMHCUBIP-UHFFFAOYSA-N 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0407—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/18—Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Computer And Data Communications (AREA)
Abstract
【選択図】図1
Description
本出願は、2015年7月21日に出願された米国特許出願第14/804,713号に対する優先権を主張するものであり、この文献の開示は全体が引用により本明細書に組み入れられる。
表1:難読化された回路ゲート演算の選択
図7では、演算が「g=a&b」であるため、CC2 720は、AND列の下の計算のうちの1つを選択する。その後、CC2 720は「f」をTC700に送信し、TC700が最終結果を求めて「f」を逆難読化する。
PG(c)=
let m=u((cb mod n2−1)/n)mod n
in(gr mod n, m hr mod n)
関数「PG(c)」は、以下のプロセスを用いて「PG1(c)」、「PG2(a、c)」及び「PG3(w)」にシュレッディングすることができる。値b1及びb2は、b1とb2の和が、b(b1+b2=b)に等しくなるようにランダムに選択される。値u1及びu2は、u1とu2の積がu mod n(u1*u2=u mod n)に等しくなるようにランダムに選択される。これらの関数は、以下のように定められる。
PG1(c)=cb1 mod n2
PG2(a,c)=
let b=u2((a cb2 mod n2)−1)/n)mod n
in(gr mod n,b hr mod n)
PG3(w)=u1 w mod n
これらの関数を組み合わせると、以下の関数「PG_shred(c)」が得られる。
PG_shred(c)=
let a=PG1(c)
let(v,w)=PG2(a,c)
let z=PG3(w)
in(v,z)
GP(e,c)=
let m=eq-x c mod n
in(n+1)m rn mod n2
関数「GP(e,c)」は、以下のプロセスを用いて「GP(e)」、「GP(f)」及び「GP(v,c)」にシュレッディングすることができる。値x1及びx2は、x1とx2の積が「q−x」(x1*x2=q−x)に等しくなるようにランダムに選択される。これらの関数は、以下のように定められる。
GP1(e)=ex1 mod n
GP2(f)=
let a=fx2 mod n
in(n+1)a mod n2
GP3(v,c)=
let w=vc mod n2
in w rn mod n2
これらの関数を組み合わせると、以下の関数「GP_shred(e,c)」が得られる。
GP_shred(e,c)=
let f=GP1(e)
let v=GP2(f)
in GP3(v,c)
CP(c1,c2)=
let c3=invert c2 mod n2
let c=c1 c3 mod n2
let d=u((cb mod n2−1)/n) mod n
in
if d=0 then EQ
else if d<n/2 then GT
else LT
ここでの「EQ」は「c1=c2」を意味し、「GT」は「c1>c2」を意味し、「LT」は「c1<c2」を意味する。なお、「c」は、「c1」と「c2」との間の暗号化差分であり、「d」は、「c1」と「c2」との間の暗号解読差分である。関数「CP(c1,c2)」は、以下のプロセスを用いて「CP1(c1,c2)」、「CP2(a,c)」及び「CP3(b)」にシュレッディングすることができる。値b1及びb2は、b1とb2の和がb(b1+b2=b)に等しくなるようにランダムに選択される。値u1及びu2は、u1とu2の積がu mod n(u1*u2=u mod n)に等しくなるようにランダムに選択される。これらの関数は、以下のように定められる。
CP1(c1,c2)=
let c3=invert c2 mod n2
let c=c1 c3 mod n2
let a=cb1 mod n2
in(a,c)
CP2(a,c)=
let b=u2((a cb2 mod n2)−1)/n)mod n
in CP3(b)
CP3(b)=
let d=u1 b mod n
in
if d=0 then EQ
else if d<n/2 then GT
else LT
これらの関数を組み合わせると、以下の関数「CP_shred(c1,c2)」が得られる。
CP_shred(c1,c2)=
let(a,c)=CP1(c1,c2)
let b=CP2(a,c)
in CP3(b)
図16では、信頼できるコンピュータ1(TC1)1600が、公開鍵「pk」を用いてメッセージ「m1」をPaillier暗号文「c1」に暗号化し、公開鍵「pk」を用いてメッセージ「m2」をPaillier暗号文「c2」に暗号化する。その後、TC1 1600は、(c1,c2)をクラウドコンピュータ2(CC2)1610に送信する。CC2 1610は、「CP1(c1,c2)」を計算して結果を(a,c)に割り当てた後に、(a,c)をクラウドコンピュータ3(CC3)1620に送信する。CC3 1620は、「CP2(a,c)」を計算して結果を「b」に割り当てた後に、これをクラウドコンピュータ4(CC4)1630に送信する。CC4 1630は、「CP3(b)」を計算して結果を「z」に割り当てた後に、「z」をCC2 1610に送信する。CC2 1610は「z」を受け取り、条件文を実行して「EQ」、「GT」又は「LT」を判断し、これらをさらなる計算に使用することができる。全てのランダムに選択された値「b1」、「b2」、「u1」及び「u2」は、クラウドコンピュータに分からない。図16では、公開鍵「pk」が「n」と置き換わるように意図される。
CG((e1,c1),(e2,c2))=
let p1=GP(e1,c1)
let p2=GP(e2,c2)
in CP(p1,p2)
ここでの「GP()」は、図15で定められるEl GamalからPaillierへの遷移関数であり、「CP()」は、図16で定められるPaillier比較関数である。関数CG((e1,c1),(e2,c2))は、以下のようにシュレッディングすることができる。
CG_shred((e1,c1),(e2,c2))=
let p1=GP_shred(e1,c1)
let p2=GP_shred(e2,c2)
in CP_shred(p1,p2)
図17では、信頼できるコンピュータ1(TC1)1700が、公開鍵「pk」を用いてメッセージ「m1」をEl Gamal暗号文(e1,c1)に暗号化し、公開鍵「pk」を用いてメッセージ「m2」をEl Gamal暗号文(e2,c2)に暗号化する。その後、TC1 1700は、(e1,c1)及び(e2,c2)をクラウドコンピュータ2(CC2)1710に送信する。CC2 1710は、「GP1(e1)」を計算して結果を「f1」に割り当て、「GP1(e2)」を計算して結果を「f2」に割り当てた後に、「f1」及び「f2」をクラウドコンピュータ3(CC3)1720に送信する。CC3 1720は、「GP2(f1)」を計算して結果を「v1」に割り当て、「GP2(f2)」を計算して結果を「v2」に割り当てた後に、「v1」及び「v2」をCC2 1710に返送する。CC2 1710は、「GP3(v1,c1)」を計算して結果を「p1」に割り当て、「GP3(v2,c2)」を計算して結果を「p2」に割り当てる。CC2 1710は、「CP1(p1,p2)」を計算して結果を(a,c)に割り当てた後に、(a,c)をクラウドコンピュータ3(CC3)1720に送信する。CC3 1720は、「CP2(a,c)」を計算して結果を「b」に割り当て、これをクラウドコンピュータ4(CC4)1730に送信する。CC4 1730は、「CP3(b)」を計算して結果を「z」に割り当てた後に、「z」をCC2 1710に送信する。CC2 1710は「z」を受け取り、条件文を実行して「EQ」、「GT」、又は「LT」を判断し、これらをさらなる計算に使用することができる。全てのランダムに選択された値は、クラウドコンピュータに分からない。図17では、公開鍵「pk」が(n,g,q,h)と置き換わるように意図される。
110 信頼できるコンピュータ1
120 クラウドコンピュータ2
130 クラウドコンピュータ3
140 信頼できるコンピュータ4
Claims (121)
- コンピュータプログラムの実行方法であって、
少なくとも1つの他のコンピュータに接続された信頼できるコンピュータ上に存在するコンピュータプログラムを一連の演算に分割するステップと、
前記一連の演算の各演算を、前記それぞれの演算の結果を計算して該結果を別のコンピュータに転送する付属命令と共に前記少なくとも1つの他のコンピュータに送信するステップと、
前記信頼できるコンピュータにおいて、前記コンピュータプログラムの計算結果を受け取るステップと、
を含むことを特徴とする方法。 - 前記一連の演算の各演算を他のそれぞれのコンピュータに送信する前に各演算を難読化するステップと、
前記受け取った前記コンピュータプログラムの計算結果を逆難読化するステップと、
をさらに含む、請求項1に記載の方法。 - 前記一連の演算は回路ゲート演算であり、各回路ゲート演算は、演算子と、第1のオペランドと、第2のオペランドとを有する、
請求項2に記載の方法。 - 前記一連の演算の各演算を難読化する前記ステップは、
前記第1のオペランドを第1の乱数値で難読化するステップと、
前記第2のオペランドを第2の乱数値で難読化するステップと、
を含む、請求項3に記載の方法。 - 前記一連の演算の各演算を付属命令と共に少なくとも1つの他のコンピュータに送信する前記ステップは、
前記難読化されたオペランドを、
前記難読化されたオペランドを用いて複数の演算の複数の結果を計算し、
前記複数の結果を第2のコンピュータに送信する、
ことを含む命令と共に第1のコンピュータに送信するステップと、
前記演算子、前記第1の乱数値及び前記第2の乱数値に基づいて前記複数の結果から1つの結果を選択し、
前記選択された結果を第3の乱数値で難読化し、
前記選択された結果を異なるコンピュータに送信する、
ことを含む命令を前記第2のコンピュータに送信するステップと、
を含む、請求項4に記載の方法。 - 前記一連の演算は数学演算であり、各数学演算は、演算子と、第1のオペランドと、第2のオペランドとを有する、
請求項2に記載の方法。 - 前記一連の演算の各演算を送信前に難読化する前記ステップは、
前記第1のオペランドを第1の乱数値で難読化するステップと、
前記第2のオペランドを第2の乱数値で難読化するステップと、
を含む、請求項6に記載の方法。 - 前記一連の演算の各演算を付属命令と共に少なくとも1つの他のコンピュータに送信する前記ステップは、
前記演算子及び難読化されたオペランドを、
前記演算子と、前記難読化された第1のオペランドと、前記難読化された第2のオペランドとを用いて第1の演算結果を計算し、
第2のコンピュータから値を受け取り、
前記演算子と、前記第1の結果と、前記値とを用いて第2の演算結果を計算し、
前記第2の結果を異なるコンピュータに送信する、
ことを含む命令と共に第1のコンピュータに送信するステップを含む、
請求項7に記載の方法。 - 前記第1のオペランドの前記難読化スキームは、前記第2のオペランドの前記難読化スキームと一致しない、
請求項7に記載の方法。 - 第3の乱数値を用いて前記第1のオペランドの前記難読化スキームを前記第2のオペランドの前記難読化スキームに変換する遷移難読化関数が使用される、
請求項9に記載の方法。 - 前記遷移難読化関数を一連の演算に分割するステップと、
前記遷移難読化関数の各演算を、前記それぞれの演算の結果を計算して該結果を別のコンピュータに転送する付属命令と共に少なくとも1つの他のコンピュータに送信するステップと、
をさらに含む、請求項10に記載の方法。 - 前記遷移難読化関数の各演算を付属命令と共に少なくとも1つの他のコンピュータに送信する前記ステップは、
前記第1のオペランドが乗法難読化される場合、
前記難読化されたオペランドを、
第2のコンピュータから値を受け取り、
前記難読化された第1のオペランドと前記値との和を計算し、
前記和を第3のコンピュータに送信する、
ことを含む命令と共に第1のコンピュータに送信するステップと、
前記和と前記第1の乱数値との商を計算し、
前記商を異なるコンピュータに送信する、
ことを含む命令を前記第3のコンピュータに送信するステップと、
を含み、前記第1のオペランドが加法難読化される場合、
前記難読化されたオペランドを、
前記難読化された第1のオペランドと前記第3の乱数値との積を計算し、
前記積を第1のコンピュータに送信する、
ことを含む命令と共に第3のコンピュータに送信するステップと、
第2のコンピュータから値を受け取り、
前記積と前記値との間の差分を計算し、
前記差分を異なるコンピュータに送信する、
ことを含む命令を前記第1のコンピュータに送信するステップと、
を含む、請求項11に記載の方法。 - 前記第2のコンピュータから受け取られる前記値は、前記第1の乱数値と前記第3の乱数値との積である、
請求項12に記載の方法。 - 前記難読化は、コード難読化、データ難読化、又はこれらの両方を含む、
請求項2に記載の方法。 - 前記コード難読化は、
前記一連の演算がプログラムオペコードを含む場合に、
前記プログラムオペコードをランダムなオペコード順列にマッピングする置換マップを生成するステップと、
前記置換マップを介して前記一連のオペコードを前記ランダムなオペコード順列に変換するステップと、
前記置換マップを、前記他のそれぞれのコンピュータによる逆難読化において使用されるようにリモートコンピュータに送信するステップと、
を含む、請求項14に記載の方法。 - 前記逆難読化は、
前記リモートコンピュータにおいて、前記置換マップの一部に対応するインデックスを他のコンピュータから受け取るステップと、
前記置換マップの一部を前記リモートコンピュータから前記他のコンピュータに送信するステップと、
を含む、請求項15に記載の方法。 - 前記逆難読化は、
前記置換マップの一部に対応するインデックスを他のコンピュータから前記リモートコンピュータに送信するステップと、
前記他のコンピュータにおいて、前記リモートコンピュータから前記置換マップの一部を受け取るステップと、
前記置換マップの前記一部を介して前記ランダムなオペコード順列を前記一連のオペコードに変換するステップと、
を含む、請求項15に記載の方法。 - 前記一連の演算がプログラムオペコードを含む場合のコード難読化は、無関係な関数を単一の関数に組み合わせるステップをさらに含む、
請求項15に記載の方法。 - 前記無関係な関数は、パラメータを有して該パラメータのそれぞれの挙動を保持し、前記単一の関数は、前記パラメータとさらなるパラメータとを取ってどの挙動を実行すべきかを選択する、
請求項18に記載の方法。 - 前記一連の演算がプログラムオペコードを含む場合のコード難読化は、関数を無限ループに変換するステップをさらに含み、前記無限ループは、switch文を含んで前記関数の挙動と同じ挙動を実行する、
請求項15に記載の方法。 - 前記一連の演算がプログラムオペコードを含む場合のコード難読化は、前記コンピュータプログラムにデコイコードを挿入するステップをさらに含む、
請求項15に記載の方法。 - 前記デコイコードは、不明瞭な述語スキームの一部である、
請求項21に記載の方法。 - 前記デコイコードは、複数のわずかな変異を伴うコンピュータプログラムのオリジナルコードを含む、
請求項21に記載の方法。 - 前記わずかな変異の数は、ユーザによって指定される、
請求項23に記載の方法。 - 前記信頼できるコンピュータと前記少なくとも1つの他のコンピュータとの間の接続を暗号化するステップをさらに含む、
請求項1に記載の方法。 - 前記一連の演算の各演算の各データ値を暗号化するステップをさらに含む、
請求項1に記載の方法。 - 各演算の各データ値を暗号化するステップは、加算演算については加法準同型暗号スキームを用いて実行され、乗算演算については乗法準同型暗号スキームを用いて実行される、
請求項26に記載の方法。 - 加法準同型暗号データ値を乗法準同型暗号データ値に変換し、乗法準同型暗号データ値を加法準同型暗号データ値に変換する遷移暗号関数が使用される、
請求項27に記載の方法。 - 前記遷移暗号関数を一連の演算に分割するステップと、
前記遷移暗号関数の各演算を、前記それぞれの演算の結果を計算して該結果を別のコンピュータに転送する付属命令と共に少なくとも1つの他のコンピュータに送信するステップと、
をさらに含む、請求項28に記載の方法。 - 前記一連の演算の各演算を暗号化するステップをさらに含む、
請求項1に記載の方法。 - 特定のコンピュータ上における演算の結果の計算中に、該演算が、第1の信頼できるコンピュータに接続された装置からの入力を必要とする場合、
前記特定のコンピュータ上のプログラムドライバにおいて入力要求を生成するステップと、
前記入力要求を前記プログラムドライバからネットワークドライバに受け渡すステップと、
前記ネットワークドライバを介して前記入力要求を前記第1の信頼できるコンピュータに送信するステップと、
前記ネットワークドライバにおいて前記第1の信頼できるコンピュータから前記装置の応答を受け取るステップと、
前記応答を、前記計算において使用されるように前記ネットワークドライバから前記プログラムドライバに受け渡すステップと、
をさらに含む、請求項1に記載の方法。 - 前記受け取られる応答は暗号化される、
請求項31に記載の方法。 - 特定のコンピュータ上における演算の結果の計算中に、該演算が、第1の信頼できるコンピュータに接続された装置からの入力を必要とする場合、
前記第1の信頼できるコンピュータ上のネットワークドライバにおいて、前記装置に入力を求める要求を前記特定のコンピュータから受け取るステップと、
前記要求を前記ネットワークドライバから前記装置の入力ドライバに受け渡すステップと、
前記装置からの応答を前記入力ドライバから前記ネットワークドライバに受け渡すステップと、
前記ネットワークドライバを介して前記応答を前記特定のコンピュータに送信するステップと、
をさらに含む、請求項1に記載の方法。 - 前記装置からの前記応答を前記入力ドライバから前記ネットワークドライバに受け渡す前に、前記応答を暗号化するステップをさらに含む、
請求項33に記載の方法。 - 特定のコンピュータ上における演算の結果の計算中に、該演算が、第1の信頼できるコンピュータに接続された装置からの出力を必要とする場合、
前記特定のコンピュータ上のプログラムドライバにおいて出力要求を生成するステップと、
前記出力要求を前記プログラムドライバからネットワークドライバに受け渡すステップと、
前記ネットワークドライバを介して前記出力要求を前記第1の信頼できるコンピュータに送信するステップと、
前記ネットワークドライバにおいて前記第1の信頼できるコンピュータから前記装置の状態を受け取るステップと、
前記状態を、前記計算において使用されるように前記ネットワークドライバから前記プログラムドライバに受け渡すステップと、
をさらに含む、請求項1に記載の方法。 - 前記出力要求は、暗号化データを含む、
請求項35に記載の方法。 - 特定のコンピュータ上における演算の結果の計算中に、該演算が、第1の信頼できるコンピュータに接続された装置からの出力を必要とする場合、
前記第1の信頼できるコンピュータ上のネットワークドライバにおいて、前記装置への出力要求を前記特定のコンピュータから受け取るステップと、
前記要求を前記ネットワークドライバから前記装置の出力ドライバに受け渡すステップと、
前記装置からの状態を前記出力ドライバから前記ネットワークドライバに受け渡すステップと、
前記ネットワークドライバを介して前記状態を前記特定のコンピュータに送信するステップと、
をさらに含む、請求項1に記載の方法。 - 前記出力要求は、暗号化データを含む、
請求項37に記載の方法。 - 前記要求を前記ネットワークドライバから前記出力ドライバに受け渡す前に、前記暗号化データを暗号解読するステップをさらに含む、
請求項38に記載の方法。 - 特定のコンピュータ上における演算の結果の計算中に、該演算が、第1の信頼できるコンピュータに接続された装置からの入力を必要とする場合、
前記特定のコンピュータ上のプログラムドライバにおいて入力要求を生成するステップと、
前記入力要求を前記プログラムドライバから第1のネットワークドライバに受け渡すステップと、
前記第1のネットワークドライバを介して前記入力要求を前記第1の信頼できるコンピュータに送信するステップと、
前記第1の信頼できるコンピュータ上の第2のネットワークドライバにおいて前記入力要求を前記特定のコンピュータから受け取るステップと、
前記入力要求を前記第2のネットワークドライバから前記装置の入力ドライバに受け渡すステップと、
前記装置からの応答を前記入力ドライバから前記第2のネットワークドライバに受け渡すステップと、
前記第2のネットワークドライバを介して前記応答を前記特定のコンピュータに送信するステップと、
前記第1のネットワークドライバにおいて前記第1の信頼できるコンピュータから前記装置の応答を受け取るステップと、
前記応答を、前記計算において使用されるように前記第1のネットワークドライバから前記プログラムドライバに受け渡すステップと、
をさらに含む、請求項1に記載の方法。 - 前記装置からの前記応答を前記入力ドライバから前記第2のネットワークドライバに受け渡す前に、前記応答を暗号化するステップをさらに含む、
請求項40に記載の方法。 - 前記第1の信頼できるコンピュータからの前記受け取られる応答は暗号化される、
請求項40に記載の方法。 - 特定のコンピュータ上における演算の結果の計算中に、該演算が、第1の信頼できるコンピュータに接続された装置からの出力を必要とする場合、
前記特定のコンピュータ上のプログラムドライバにおいて出力要求を生成するステップと、
前記出力要求を前記プログラムドライバから第1のネットワークドライバに受け渡すステップと、
前記第1のネットワークドライバを介して前記出力要求を前記第1の信頼できるコンピュータに送信するステップと、
前記第1の信頼できるコンピュータ上の第2のネットワークドライバにおいて前記出力要求を前記特定のコンピュータから受け取るステップと、
前記出力要求を前記第2のネットワークドライバから前記装置の出力ドライバに受け渡すステップと、
前記装置からの状態を前記出力ドライバから前記第2のネットワークドライバに受け渡すステップと、
前記第2のネットワークドライバを介して前記状態を前記特定のコンピュータに送信するステップと、
前記第1のネットワークドライバにおいて前記第1の信頼できるコンピュータから前記状態を受け取るステップと、
前記状態を、前記計算において使用されるように前記第1のネットワークドライバから前記プログラムドライバに受け渡すステップと、
をさらに含む、請求項1に記載の方法。 - 前記出力要求は、暗号化データを含む、
請求項43に記載の方法。 - 前記出力要求を前記第2のネットワークドライバから前記出力ドライバに受け渡す前に、前記暗号化データを暗号解読するステップをさらに含む、
請求項44に記載の方法。 - 前記少なくとも1つの他のコンピュータはクラウドの一部である、
請求項1に記載の方法。 - 前記クラウドは信頼できない、
請求項46に記載の方法。 - 前記クラウドは、複数の管理領域にわたる、
請求項46に記載の方法。 - 前記クラウドは、複数の商業的に異なるインフラにわたる、
請求項46に記載の方法。 - 前記少なくとも1つの他のコンピュータは、企業ネットワークの一部である、
請求項1に記載の方法。 - 前記少なくとも1つの他のコンピュータは、複数のコンピュータからランダムに選択される、
請求項1に記載の方法。 - 前記複数のコンピュータの各コンピュータは信頼できない、
請求項51に記載の方法。 - 前記少なくとも1つの他のコンピュータは信頼できない、
請求項1に記載の方法。 - 前記少なくとも1つの他のコンピュータは、前記信頼できるコンピュータではない、
請求項1に記載の方法。 - システムであって、少なくとも1つの他のコンピュータに通信可能に接続された少なくとも1つの信頼できるコンピュータを備え、該少なくとも1つの信頼できるコンピュータのうちの第1の信頼できるコンピュータは、実行時に前記システムに、
前記第1の信頼できるコンピュータ上に存在するコンピュータプログラムを一連の演算に分割するステップと、
前記一連の演算の各演算を、前記それぞれの演算の結果を計算して該結果を別のコンピュータに転送する付属命令と共に前記少なくとも1つの他のコンピュータに送信するステップと、
前記信頼できるコンピュータにおいて、前記コンピュータプログラムの計算結果を受け取るステップと、
を含む動作を実行させるコンピュータ命令を記憶する、
ことを特徴とするシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、
前記一連の演算の各演算を他のそれぞれのコンピュータに送信する前に各演算を難読化するステップと、
前記受け取った前記コンピュータプログラムの計算結果を逆難読化するステップと、
をさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項55に記載のシステム。 - 前記一連の演算は回路ゲート演算であり、各回路ゲート演算は、演算子と、第1のオペランドと、第2のオペランドとを有する、
請求項56に記載のシステム。 - 前記一連の演算の各演算を難読化する前記ステップは、
前記第1のオペランドを第1の乱数値で難読化するステップと、
前記第2のオペランドを第2の乱数値で難読化するステップと、
を含む、請求項57に記載のシステム。 - 前記一連の演算の各演算を付属命令と共に少なくとも1つの他のコンピュータに送信する前記ステップは、
前記難読化されたオペランドを、
前記難読化されたオペランドを用いて複数の演算の複数の結果を計算し、
前記複数の結果を第2のコンピュータに送信する、
ことを含む命令と共に第1のコンピュータに送信するステップと、
前記演算子、前記第1の乱数値及び前記第2の乱数値に基づいて前記複数の結果から1つの結果を選択し、
前記選択された結果を第3の乱数値で難読化し、
前記選択された結果を異なるコンピュータに送信する、
ことを含む命令を前記第2のコンピュータに送信するステップと、
を含む、請求項58に記載のシステム。 - 前記一連の演算は数学演算であり、各数学演算は、演算子と、第1のオペランドと、第2のオペランドとを有する、
請求項56に記載のシステム。 - 前記一連の演算の各演算は、ハードウェアユニットによって実行される演算に対応する、
請求項56に記載のシステム。 - 前記少なくとも1つの他のコンピュータ上の整数加算器をさらに備える、
請求項61に記載のシステム。 - 前記少なくとも1つの他のコンピュータ上の整数乗算器をさらに備える、
請求項61に記載のシステム。 - 前記少なくとも1つの他のコンピュータ上の整数比較器をさらに備える、
請求項61に記載のシステム。 - 前記少なくとも1つの他のコンピュータ上の浮動小数点乗算器をさらに備える、
請求項61に記載のシステム。 - 前記一連の演算の各演算を送信前に難読化する前記ステップは、
前記第1のオペランドを第1の乱数値で難読化するステップと、
前記第2のオペランドを第2の乱数値で難読化するステップと、
を含む、請求項60に記載のシステム。 - 前記一連の演算の各演算を付属命令と共に少なくとも1つの他のコンピュータに送信する前記ステップは、
前記演算子及び難読化されたオペランドを、
前記演算子と、前記難読化された第1のオペランドと、前記難読化された第2のオペランドとを用いて第1の演算結果を計算し、
第2のコンピュータから値を受け取り、
前記演算子と、前記第1の結果と、前記値とを用いて第2の演算結果を計算し、
前記第2の結果を異なるコンピュータに送信する、
ことを含む命令と共に第1のコンピュータに送信するステップを含む、
請求項66に記載のシステム。 - 前記第1のオペランドの前記難読化スキームは、前記第2のオペランドの前記難読化スキームと一致しない、
請求項66に記載のシステム。 - 第3の乱数値を用いて前記第1のオペランドの前記難読化スキームを前記第2のオペランドの前記難読化スキームに変換する遷移難読化関数が使用される、
請求項68に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、
前記遷移難読化関数を一連の演算に分割するステップと、
前記遷移難読化関数の各演算を、前記それぞれの演算の結果を計算して該結果を別のコンピュータに転送する付属命令と共に少なくとも1つの他のコンピュータに送信するステップと、
をさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項69に記載のシステム。 - 前記遷移難読化関数の各演算を付属命令と共に少なくとも1つの他のコンピュータに送信する前記ステップは、
前記第1のオペランドが乗法難読化される場合、
前記難読化されたオペランドを、
第2のコンピュータから値を受け取り、
前記難読化された第1のオペランドと前記値との和を計算し、
前記和を第3のコンピュータに送信する、
ことを含む命令と共に第1のコンピュータに送信するステップと、
前記和と前記第1の乱数値との商を計算し、
前記商を異なるコンピュータに送信する、
ことを含む命令を前記第3のコンピュータに送信するステップと、
を含み、前記第1のオペランドが加法難読化される場合、
前記難読化されたオペランドを、
前記難読化された第1のオペランドと前記第3の乱数値との積を計算し、
前記積を第1のコンピュータに送信する、
ことを含む命令と共に第3のコンピュータに送信するステップと、
第2のコンピュータから値を受け取り、
前記積と前記値との間の差分を計算し、
前記差分を異なるコンピュータに送信する、
ことを含む命令を前記第1のコンピュータに送信するステップと、
を含む、請求項70に記載のシステム。 - 前記第2のコンピュータから受け取られる前記値は、前記第1の乱数値と前記第3の乱数値との積である、
請求項71に記載のシステム。 - 前記難読化は、コード難読化、データ難読化、又はこれらの両方を含む、
請求項56に記載のシステム。 - 前記コード難読化は、
前記一連の演算がプログラムオペコードを含む場合に、
前記プログラムオペコードをランダムなオペコード順列にマッピングする置換マップを生成するステップと、
前記置換マップを介して前記一連のオペコードを前記ランダムなオペコード順列に変換するステップと、
前記置換マップを、前記他のそれぞれのコンピュータによる逆難読化において使用されるようにリモートコンピュータに送信するステップと、
を含む、請求項73に記載のシステム。 - 前記逆難読化は、
前記リモートコンピュータにおいて、前記置換マップの一部に対応するインデックスを他のコンピュータから受け取るステップと、
前記置換マップの一部を前記リモートコンピュータから前記他のコンピュータに送信するステップと、
を含む、請求項74に記載のシステム。 - 前記逆難読化は、
前記置換マップの一部に対応するインデックスを他のコンピュータから前記リモートコンピュータに送信するステップと、
前記他のコンピュータにおいて、前記リモートコンピュータから前記置換マップの一部を受け取るステップと、
前記置換マップの前記一部を介して前記ランダムなオペコード順列を前記一連のオペコードに変換するステップと、
を含む、請求項74に記載のシステム。 - 前記一連の演算がプログラムオペコードを含む場合のコード難読化は、無関係な関数を単一の関数に組み合わせるステップをさらに含む、
請求項74に記載のシステム。 - 前記無関係な関数は、パラメータを有して該パラメータのそれぞれの挙動を保持し、前記単一の関数は、前記パラメータとさらなるパラメータとを取ってどの挙動を実行すべきかを選択する、
請求項77に記載のシステム。 - 前記一連の演算がプログラムオペコードを含む場合のコード難読化は、関数を無限ループに変換するステップをさらに含み、前記無限ループは、switch文を含んで前記関数の挙動と同じ挙動を実行する、
請求項74に記載のシステム。 - 前記一連の演算がプログラムオペコードを含む場合のコード難読化は、前記コンピュータプログラムにデコイコードを挿入するステップをさらに含む、
請求項74に記載のシステム。 - 前記デコイコードは、不明瞭な述語スキームの一部である、
請求項80に記載のシステム。 - 前記デコイコードは、複数のわずかな変異を伴うコンピュータプログラムのオリジナルコードを含む、
請求項80に記載のシステム。 - 前記わずかな変異の数は、ユーザによって指定される、
請求項82に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、前記信頼できるコンピュータと前記少なくとも1つの他のコンピュータとの間の接続を暗号化するステップをさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項55に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、前記一連の演算の各演算の各データ値を暗号化するステップをさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項55に記載のシステム。 - 各演算の各データ値を暗号化するステップは、加算演算については加法準同型暗号スキームを用いて実行され、乗算演算については乗法準同型暗号スキームを用いて実行される、
請求項85に記載のシステム。 - 加法準同型暗号データ値を乗法準同型暗号データ値に変換し、乗法準同型暗号データ値を加法準同型暗号データ値に変換する遷移暗号関数が使用される、
請求項86に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、
前記遷移暗号関数を一連の演算に分割するステップと、
前記遷移暗号関数の各演算を、前記それぞれの演算の結果を計算して該結果を別のコンピュータに転送する付属命令と共に少なくとも1つの他のコンピュータに送信するステップと、
をさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項87に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、前記一連の演算の各演算を暗号化するステップをさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項55に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、
特定のコンピュータ上における演算の結果の計算中に、該演算が、第1の信頼できるコンピュータに接続された装置からの入力を必要とする場合、
前記特定のコンピュータ上のプログラムドライバにおいて入力要求を生成するステップと、
前記入力要求を前記プログラムドライバからネットワークドライバに受け渡すステップと、
前記ネットワークドライバを介して前記入力要求を前記第1の信頼できるコンピュータに送信するステップと、
前記ネットワークドライバにおいて前記第1の信頼できるコンピュータから前記装置の応答を受け取るステップと、
前記応答を、前記計算において使用されるように前記ネットワークドライバから前記プログラムドライバに受け渡すステップと、
をさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項55に記載のシステム。 - 前記受け取られる応答は暗号化される、
請求項90に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、
特定のコンピュータ上における演算の結果の計算中に、該演算が、第1の信頼できるコンピュータに接続された装置からの入力を必要とする場合、
前記第1の信頼できるコンピュータ上のネットワークドライバにおいて、前記装置に入力を求める要求を前記特定のコンピュータから受け取るステップと、
前記要求を前記ネットワークドライバから前記装置の入力ドライバに受け渡すステップと、
前記装置からの応答を前記入力ドライバから前記ネットワークドライバに受け渡すステップと、
前記ネットワークドライバを介して前記応答を前記特定のコンピュータに送信するステップと、
をさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項55に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、前記装置からの前記応答を前記入力ドライバから前記ネットワークドライバに受け渡す前に、前記応答を暗号化するステップをさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項92に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、
特定のコンピュータ上における演算の結果の計算中に、該演算が、第1の信頼できるコンピュータに接続された装置からの出力を必要とする場合、
前記特定のコンピュータ上のプログラムドライバにおいて出力要求を生成するステップと、
前記出力要求を前記プログラムドライバからネットワークドライバに受け渡すステップと、
前記ネットワークドライバを介して前記出力要求を前記第1の信頼できるコンピュータに送信するステップと、
前記ネットワークドライバにおいて前記第1の信頼できるコンピュータから前記装置の状態を受け取るステップと、
前記状態を、前記計算において使用されるように前記ネットワークドライバから前記プログラムドライバに受け渡すステップと、
をさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項55に記載のシステム。 - 前記出力要求は、暗号化データを含む、
請求項94に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、
特定のコンピュータ上における演算の結果の計算中に、該演算が、第1の信頼できるコンピュータに接続された装置からの出力を必要とする場合、
前記第1の信頼できるコンピュータ上のネットワークドライバにおいて、前記装置への出力要求を前記特定のコンピュータから受け取るステップと、
前記要求を前記ネットワークドライバから前記装置の出力ドライバに受け渡すステップと、
前記装置からの状態を前記出力ドライバから前記ネットワークドライバに受け渡すステップと、
前記ネットワークドライバを介して前記状態を前記特定のコンピュータに送信するステップと、
をさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項55に記載のシステム。 - 前記出力要求は、暗号化データを含む、
請求項96に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、前記要求を前記ネットワークドライバから前記出力ドライバに受け渡す前に、前記暗号化データを暗号解読するステップをさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項97に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、
特定のコンピュータ上における演算の結果の計算中に、該演算が、第1の信頼できるコンピュータに接続された装置からの入力を必要とする場合、
前記特定のコンピュータ上のプログラムドライバにおいて入力要求を生成するステップと、
前記入力要求を前記プログラムドライバから第1のネットワークドライバに受け渡すステップと、
前記第1のネットワークドライバを介して前記入力要求を前記第1の信頼できるコンピュータに送信するステップと、
前記第1の信頼できるコンピュータ上の第2のネットワークドライバにおいて前記入力要求を前記特定のコンピュータから受け取るステップと、
前記入力要求を前記第2のネットワークドライバから前記装置の入力ドライバに受け渡すステップと、
前記装置からの応答を前記入力ドライバから前記第2のネットワークドライバに受け渡すステップと、
前記第2のネットワークドライバを介して前記応答を前記特定のコンピュータに送信するステップと、
前記第1のネットワークドライバにおいて前記第1の信頼できるコンピュータから前記装置の応答を受け取るステップと、
前記応答を、前記計算において使用されるように前記第1のネットワークドライバから前記プログラムドライバに受け渡すステップと、
をさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項55に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、前記装置からの前記応答を前記入力ドライバから前記第2のネットワークドライバに受け渡す前に、前記応答を暗号化するステップをさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項99に記載のシステム。 - 前記第1の信頼できるコンピュータからの前記受け取られる応答は暗号化される、
請求項99に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、
特定のコンピュータ上における演算の結果の計算中に、該演算が、第1の信頼できるコンピュータに接続された装置からの出力を必要とする場合、
前記特定のコンピュータ上のプログラムドライバにおいて出力要求を生成するステップと、
前記出力要求を前記プログラムドライバから第1のネットワークドライバに受け渡すステップと、
前記第1のネットワークドライバを介して前記出力要求を前記第1の信頼できるコンピュータに送信するステップと、
前記第1の信頼できるコンピュータ上の第2のネットワークドライバにおいて前記出力要求を前記特定のコンピュータから受け取るステップと、
前記出力要求を前記第2のネットワークドライバから前記装置の出力ドライバに受け渡すステップと、
前記装置からの状態を前記出力ドライバから前記第2のネットワークドライバに受け渡すステップと、
前記第2のネットワークドライバを介して前記状態を前記特定のコンピュータに送信するステップと、
前記第1のネットワークドライバにおいて前記第1の信頼できるコンピュータから前記状態を受け取るステップと、
前記状態を、前記計算において使用されるように前記第1のネットワークドライバから前記プログラムドライバに受け渡すステップと、
をさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項55に記載のシステム。 - 前記出力要求は、暗号化データを含む、
請求項102に記載のシステム。 - 前記少なくとも1つの信頼できるコンピュータは、実行時に前記システムに、前記出力要求を前記第2のネットワークドライバから前記出力ドライバに受け渡す前に、前記暗号化データを暗号解読するステップをさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項103に記載のシステム。 - 前記少なくとも1つの他のコンピュータはクラウドの一部である、
請求項55に記載のシステム。 - 前記クラウドは信頼できない、
請求項105に記載のシステム。 - 前記クラウドは、複数の管理領域にわたる、
請求項105に記載のシステム。 - 前記クラウドは、複数の商業的に異なるインフラにわたる、
請求項105に記載のシステム。 - 前記少なくとも1つの他のコンピュータは、企業ネットワークの一部である、
請求項55に記載のシステム。 - 前記少なくとも1つの他のコンピュータは、複数のコンピュータからランダムに選択される、
請求項55に記載のシステム。 - 前記複数のコンピュータの各コンピュータは信頼できない、
請求項110に記載のシステム。 - 前記少なくとも1つの他のコンピュータは信頼できない、
請求項55に記載のシステム。 - 前記少なくとも1つの他のコンピュータは、前記信頼できるコンピュータではない、
請求項55に記載のシステム。 - 前記信頼できるコンピュータは、1又は2以上の仮想機械を含む、
請求項1に記載の方法。 - 前記少なくとも1つの他のコンピュータは、1又は2以上の仮想機械を含む、
請求項1に記載の方法。 - 前記別のコンピュータは、1又は2以上の仮想機械を含む、
請求項1に記載の方法。 - 前記信頼できるコンピュータは、1又は2以上の仮想機械を含む、
請求項55に記載のシステム。 - 前記少なくとも1つの他のコンピュータは、1又は2以上の仮想機械を含む、
請求項55に記載のシステム。 - 前記別のコンピュータは、1又は2以上の仮想機械を含む、
請求項55に記載のシステム。 - 前記一連の演算の各演算を付属命令と共に前記少なくとも1つの他のコンピュータに送信する前記ステップは、各演算を計算のために複数のコンピュータに送信するステップを含む、
請求項1に記載の方法。 - 前記一連の演算の各演算を付属命令と共に前記少なくとも1つの他のコンピュータに送信する前記ステップは、各演算を計算のために複数のコンピュータに送信するステップを含む、
請求項55に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/804,713 US10110566B2 (en) | 2015-07-21 | 2015-07-21 | Systems and processes for executing private programs on untrusted computers |
US14/804,713 | 2015-07-21 | ||
PCT/US2016/043117 WO2017015357A1 (en) | 2015-07-21 | 2016-07-20 | Systems and processes for executing private programs on untrusted computers |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2018522291A true JP2018522291A (ja) | 2018-08-09 |
JP2018522291A5 JP2018522291A5 (ja) | 2019-08-29 |
JP6880017B2 JP6880017B2 (ja) | 2021-06-02 |
Family
ID=57834671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018523361A Active JP6880017B2 (ja) | 2015-07-21 | 2016-07-20 | 信頼できないコンピュータ上でプライベートプログラムを実行するためのシステム及びプロセス |
Country Status (10)
Country | Link |
---|---|
US (2) | US10110566B2 (ja) |
EP (1) | EP3326345B1 (ja) |
JP (1) | JP6880017B2 (ja) |
KR (1) | KR102315831B1 (ja) |
CN (1) | CN108476198B (ja) |
AU (1) | AU2016297559B2 (ja) |
CA (1) | CA2998323C (ja) |
DK (1) | DK3326345T3 (ja) |
IL (1) | IL257040B (ja) |
WO (1) | WO2017015357A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023007633A1 (ja) * | 2021-07-28 | 2023-02-02 | 富士通株式会社 | 制御方法、制御プログラム、ノード、およびシステム |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10348503B2 (en) * | 2016-12-12 | 2019-07-09 | Sap Portals Israel Ltd. | Client side actions validation |
SG11202004674VA (en) * | 2017-12-18 | 2020-06-29 | University Of Central Florida Research Foundation Inc | Techniques for securely executing code that operates on encrypted data on a public computer |
US11232224B2 (en) | 2018-03-15 | 2022-01-25 | Servicenow, Inc. | Database encryption |
CN109446828B (zh) * | 2018-11-07 | 2020-10-13 | 北京邮电大学 | 一种安全多方计算方法及装置 |
US11042634B2 (en) * | 2018-12-21 | 2021-06-22 | Fujitsu Limited | Determining information leakage of computer-readable programs |
WO2020240246A1 (en) * | 2019-05-29 | 2020-12-03 | Commissariat A L 'energie Atomique Et Aux Energies Alternatives | A computer-implemented method for obfuscating a program code |
US11973743B2 (en) | 2019-12-13 | 2024-04-30 | TripleBlind, Inc. | Systems and methods for providing a systemic error in artificial intelligence algorithms |
US11431688B2 (en) | 2019-12-13 | 2022-08-30 | TripleBlind, Inc. | Systems and methods for providing a modified loss function in federated-split learning |
US10924460B2 (en) * | 2019-12-13 | 2021-02-16 | TripleBlind, Inc. | Systems and methods for dividing filters in neural networks for private data computations |
US11853793B2 (en) | 2020-10-09 | 2023-12-26 | Samsung Electronics Co., Ltd. | Methods and system for on-device AI model parameter run-time protection |
EP4050471A1 (en) * | 2021-02-26 | 2022-08-31 | Zama SAS | Encrypted scalar multiplication |
US20240004998A1 (en) * | 2022-07-01 | 2024-01-04 | Nxp B.V. | Method for protecting a machine learning model from a side channel attack |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008283672A (ja) * | 2007-03-14 | 2008-11-20 | Intel Corp | 複数モードでのaes暗号化または復号の単一命令での実行 |
US20120066510A1 (en) * | 2010-09-15 | 2012-03-15 | At&T Intellectual Property I, L.P. | Methods, systems, and computer program products for performing homomorphic encryption and decryption on individual operations |
JP2015501946A (ja) * | 2011-11-17 | 2015-01-19 | エイアールエム リミテッド | 暗号化アルゴリズム内のハッシュ値の生成をサポートするためのsimd命令 |
Family Cites Families (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6067620A (en) * | 1996-07-30 | 2000-05-23 | Holden; James M. | Stand alone security device for computer networks |
US6477648B1 (en) * | 1997-03-23 | 2002-11-05 | Novell, Inc. | Trusted workstation in a networked client/server computing system |
US6957341B2 (en) * | 1998-05-14 | 2005-10-18 | Purdue Research Foundation | Method and system for secure computational outsourcing and disguise |
US7430670B1 (en) | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
AU2001243365A1 (en) * | 2000-03-02 | 2001-09-12 | Alarity Corporation | System and method for process protection |
US7343619B2 (en) * | 2002-03-16 | 2008-03-11 | Trustedflow Systems, Inc. | Trusted flow and operation control method |
US7363620B2 (en) * | 2003-09-25 | 2008-04-22 | Sun Microsystems, Inc. | Non-linear execution of application program instructions for application program obfuscation |
US7353499B2 (en) * | 2003-09-25 | 2008-04-01 | Sun Microsystems, Inc. | Multiple instruction dispatch tables for application program obfuscation |
US8220058B2 (en) * | 2003-09-25 | 2012-07-10 | Oracle America, Inc. | Rendering and encryption engine for application program obfuscation |
US7415618B2 (en) * | 2003-09-25 | 2008-08-19 | Sun Microsystems, Inc. | Permutation of opcode values for application program obfuscation |
US20050069138A1 (en) * | 2003-09-25 | 2005-03-31 | Sun Microsystems, Inc., A Delaware Corporation | Application program obfuscation |
DE102005021749A1 (de) * | 2005-05-11 | 2006-11-16 | Fachhochschule Dortmund | Verfahren und Vorrichtung zur programmgesteuerten Informationsverarbeitung |
CN101491000B (zh) * | 2006-07-12 | 2011-12-28 | 耶德托公司 | 用于混淆密码函数的方法和系统 |
US20090249492A1 (en) * | 2006-09-21 | 2009-10-01 | Hans Martin Boesgaard Sorensen | Fabrication of computer executable program files from source code |
US9411976B2 (en) * | 2006-12-01 | 2016-08-09 | Maidsafe Foundation | Communication system and method |
US9124650B2 (en) | 2006-12-13 | 2015-09-01 | Quickplay Media Inc. | Digital rights management in a mobile environment |
US8312518B1 (en) * | 2007-09-27 | 2012-11-13 | Avaya Inc. | Island of trust in a service-oriented environment |
US8762736B1 (en) * | 2008-04-04 | 2014-06-24 | Massachusetts Institute Of Technology | One-time programs |
US8209744B2 (en) * | 2008-05-16 | 2012-06-26 | Microsoft Corporation | Mobile device assisted secure computer network communication |
US8171306B2 (en) * | 2008-11-05 | 2012-05-01 | Microsoft Corporation | Universal secure token for obfuscation and tamper resistance |
WO2011037665A2 (en) * | 2009-08-04 | 2011-03-31 | Carnegie Mellon University | Methods and apparatuses for user-verifiable trusted path in the presence of malware |
US8347398B1 (en) * | 2009-09-23 | 2013-01-01 | Savvystuff Property Trust | Selected text obfuscation and encryption in a local, network and cloud computing environment |
US20110202765A1 (en) * | 2010-02-17 | 2011-08-18 | Microsoft Corporation | Securely move virtual machines between host servers |
US9703586B2 (en) * | 2010-02-17 | 2017-07-11 | Microsoft Technology Licensing, Llc | Distribution control and tracking mechanism of virtual machine appliances |
US8862895B2 (en) * | 2010-04-27 | 2014-10-14 | Fuji Xerox Co., Ltd. | Systems and methods for communication, storage, retrieval, and computation of simple statistics and logical operations on encrypted data |
US20110296164A1 (en) * | 2010-05-28 | 2011-12-01 | Mcafee, Inc. | System and method for providing secure network services |
WO2011150346A2 (en) * | 2010-05-28 | 2011-12-01 | Laurich Lawrence A | Accelerator system for use with secure data storage |
US9165137B2 (en) * | 2010-08-18 | 2015-10-20 | Security First Corp. | Systems and methods for securing virtual machine computing environments |
US20120084562A1 (en) * | 2010-10-04 | 2012-04-05 | Ralph Rabert Farina | Methods and systems for updating a secure boot device using cryptographically secured communications across unsecured networks |
US8762964B2 (en) | 2010-12-17 | 2014-06-24 | Cisco Technology, Inc. | Optimizing symbol manipulation language-based executable applications for distributed execution |
US8700906B2 (en) * | 2011-01-14 | 2014-04-15 | Microsoft Corporation | Secure computing in multi-tenant data centers |
US9647989B2 (en) | 2011-04-27 | 2017-05-09 | Symantec Corporation | System and method of data interception and conversion in a proxy |
US9077525B2 (en) * | 2011-06-24 | 2015-07-07 | Microsoft Technology Licensing, Llc | User-controlled data encryption with obfuscated policy |
US9203621B2 (en) * | 2011-07-11 | 2015-12-01 | Hewlett-Packard Development Company, L.P. | Policy-based data management |
US20130019092A1 (en) * | 2011-07-14 | 2013-01-17 | Barracuda Inc. | System to Embed Enhanced Security / Privacy Functions Into a User Client |
JP2015503280A (ja) * | 2011-11-28 | 2015-01-29 | ポルティコア エルティディ. | 仮想化とクラウド・コンピューティングの安全確保と管理に適用される、安全未確保のコンピュータ環境で暗号化キーを確保する方法と装置。 |
US9208319B2 (en) * | 2011-12-15 | 2015-12-08 | Microsoft Technology Licensing, Llc | Code base partitioning system |
US8615656B2 (en) * | 2012-01-09 | 2013-12-24 | The Mitre Corporation | Secure remote peripheral encryption tunnel |
RU2620712C2 (ru) * | 2012-01-09 | 2017-05-29 | Конинклейке Филипс Н.В. | Устройство виртуальной машины, имеющее управляемую ключом обфускацию, и способ |
US9454666B2 (en) * | 2012-03-26 | 2016-09-27 | Irdeto B.V. | Method for protecting data |
EP2645618A1 (en) * | 2012-03-30 | 2013-10-02 | British Telecommunications Public Limited Company | Method and system for network data access |
EP2672673B1 (en) * | 2012-06-07 | 2016-05-25 | Alcatel Lucent | Apparatus and method for secure data processing |
EP2672672A1 (en) * | 2012-06-07 | 2013-12-11 | Alcatel-Lucent | Secure data processing |
US8656482B1 (en) * | 2012-08-20 | 2014-02-18 | Bitdefender IPR Management Ltd. | Secure communication using a trusted virtual machine |
US20140195804A1 (en) * | 2012-10-12 | 2014-07-10 | Safelylocked, Llc | Techniques for secure data exchange |
US9176838B2 (en) * | 2012-10-19 | 2015-11-03 | Intel Corporation | Encrypted data inspection in a network environment |
GB2508894A (en) * | 2012-12-14 | 2014-06-18 | Ibm | Preventing a trusted boot device from being booted in a virtual machine |
US9535715B2 (en) * | 2012-12-14 | 2017-01-03 | Microsoft Technology Licensing, Llc | Booting from a trusted network image |
US8909967B1 (en) * | 2012-12-31 | 2014-12-09 | Emc Corporation | Technique for secure computation |
US10063380B2 (en) * | 2013-01-22 | 2018-08-28 | Amazon Technologies, Inc. | Secure interface for invoking privileged operations |
US9503268B2 (en) * | 2013-01-22 | 2016-11-22 | Amazon Technologies, Inc. | Securing results of privileged computing operations |
US9055038B1 (en) * | 2013-02-04 | 2015-06-09 | Stealth Software Technologies, Inc. | Apparatus, system, and method to garble programs |
US9141823B2 (en) * | 2013-03-15 | 2015-09-22 | Veridicom, Sa De Cv | Abstraction layer for default encryption with orthogonal encryption logic session object; and automated authentication, with a method for online litigation |
US9104862B2 (en) * | 2013-04-01 | 2015-08-11 | Uniquesoft, Llc | Secure computing device using new software versions |
US10275593B2 (en) * | 2013-04-01 | 2019-04-30 | Uniquesoft, Llc | Secure computing device using different central processing resources |
US9361456B2 (en) * | 2013-04-01 | 2016-06-07 | Uniquesoft, Llc | Secure computing device using a library of programs |
US9424421B2 (en) | 2013-05-03 | 2016-08-23 | Visa International Service Association | Security engine for a secure operating environment |
US9558358B2 (en) * | 2013-06-27 | 2017-01-31 | Visa International Service Association | Random number generator in a virtualized environment |
CN105408913B (zh) * | 2013-08-21 | 2019-03-15 | 英特尔公司 | 在云中隐私地处理数据 |
CN103559458B (zh) * | 2013-10-09 | 2016-08-17 | 广州华迅网络科技有限公司 | 数据散列获取方法及其系统 |
US9235692B2 (en) * | 2013-12-13 | 2016-01-12 | International Business Machines Corporation | Secure application debugging |
EP3860041B1 (en) * | 2014-06-18 | 2023-03-15 | Visa International Service Association | Efficient methods for authenticated communication |
US9813245B2 (en) * | 2014-08-29 | 2017-11-07 | Visa International Service Association | Methods for secure cryptogram generation |
US9584517B1 (en) * | 2014-09-03 | 2017-02-28 | Amazon Technologies, Inc. | Transforms within secure execution environments |
CN104243166A (zh) * | 2014-09-05 | 2014-12-24 | 深圳市中兴移动通信有限公司 | 录音加密方法和装置 |
US9735968B2 (en) * | 2014-10-20 | 2017-08-15 | Microsoft Technology Licensing, Llc | Trust service for a client device |
EP3234782A4 (en) * | 2014-12-16 | 2018-10-17 | Kyndi, Inc. | Method and apparatus for randomizing computer instruction sets, memory registers and pointers |
CN107251476A (zh) * | 2015-02-13 | 2017-10-13 | 维萨国际服务协会 | 保密通信管理 |
US9596263B1 (en) * | 2015-02-23 | 2017-03-14 | Amazon Technolgies, Inc. | Obfuscation and de-obfuscation of identifiers |
US10484168B2 (en) * | 2015-03-02 | 2019-11-19 | Dell Products L.P. | Methods and systems for obfuscating data and computations defined in a secure distributed transaction ledger |
US9712503B1 (en) * | 2015-03-23 | 2017-07-18 | Amazon Technologies, Inc. | Computing instance migration |
US20160294794A1 (en) * | 2015-04-04 | 2016-10-06 | Aleksandar Mancic | Security System For Data Communications Including Key Management And Privacy |
EP3284003B1 (en) * | 2015-04-14 | 2021-02-24 | Gigavation, Inc. | Paravirtualized security threat protection of a computer-driven system with networked devices |
SG11201804478VA (en) * | 2015-05-19 | 2018-06-28 | Cryptomove Inc | Security via data concealment |
US20180089415A1 (en) * | 2015-06-11 | 2018-03-29 | International Business Machines Corporation | User trusted device for detecting a virtualized environment |
US9667606B2 (en) * | 2015-07-01 | 2017-05-30 | Cyphermatrix, Inc. | Systems, methods and computer readable medium to implement secured computational infrastructure for cloud and data center environments |
-
2015
- 2015-07-21 US US14/804,713 patent/US10110566B2/en active Active
-
2016
- 2016-07-20 CA CA2998323A patent/CA2998323C/en active Active
- 2016-07-20 EP EP16828463.6A patent/EP3326345B1/en active Active
- 2016-07-20 KR KR1020187005125A patent/KR102315831B1/ko active IP Right Grant
- 2016-07-20 DK DK16828463.6T patent/DK3326345T3/da active
- 2016-07-20 JP JP2018523361A patent/JP6880017B2/ja active Active
- 2016-07-20 CN CN201680054703.XA patent/CN108476198B/zh active Active
- 2016-07-20 WO PCT/US2016/043117 patent/WO2017015357A1/en active Application Filing
- 2016-07-20 AU AU2016297559A patent/AU2016297559B2/en active Active
-
2018
- 2018-01-21 IL IL257040A patent/IL257040B/en active IP Right Grant
- 2018-09-28 US US16/146,212 patent/US10652216B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008283672A (ja) * | 2007-03-14 | 2008-11-20 | Intel Corp | 複数モードでのaes暗号化または復号の単一命令での実行 |
US20120066510A1 (en) * | 2010-09-15 | 2012-03-15 | At&T Intellectual Property I, L.P. | Methods, systems, and computer program products for performing homomorphic encryption and decryption on individual operations |
JP2015501946A (ja) * | 2011-11-17 | 2015-01-19 | エイアールエム リミテッド | 暗号化アルゴリズム内のハッシュ値の生成をサポートするためのsimd命令 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023007633A1 (ja) * | 2021-07-28 | 2023-02-02 | 富士通株式会社 | 制御方法、制御プログラム、ノード、およびシステム |
Also Published As
Publication number | Publication date |
---|---|
EP3326345A4 (en) | 2019-03-27 |
CA2998323A1 (en) | 2017-01-26 |
US20170026342A1 (en) | 2017-01-26 |
US10110566B2 (en) | 2018-10-23 |
DK3326345T3 (da) | 2021-10-11 |
CN108476198B (zh) | 2020-09-22 |
IL257040A (en) | 2018-03-29 |
CA2998323C (en) | 2022-06-07 |
EP3326345A1 (en) | 2018-05-30 |
EP3326345B1 (en) | 2021-10-06 |
JP6880017B2 (ja) | 2021-06-02 |
AU2016297559B2 (en) | 2020-09-03 |
IL257040B (en) | 2020-02-27 |
KR20180084732A (ko) | 2018-07-25 |
CN108476198A (zh) | 2018-08-31 |
AU2016297559A1 (en) | 2018-03-15 |
WO2017015357A1 (en) | 2017-01-26 |
US20190044915A1 (en) | 2019-02-07 |
KR102315831B1 (ko) | 2021-10-22 |
US10652216B2 (en) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6880017B2 (ja) | 信頼できないコンピュータ上でプライベートプログラムを実行するためのシステム及びプロセス | |
Sadeghi et al. | Token-based cloud computing: secure outsourcing of data and arbitrary computations with lower latency | |
US10367637B2 (en) | Modular exponentiation with transparent side channel attack countermeasures | |
Tsoutsos et al. | The HEROIC framework: Encrypted computation without shared keys | |
US11575501B2 (en) | Preserving aggregation using homomorphic encryption and trusted execution environment, secure against malicious aggregator | |
US8976960B2 (en) | Methods and apparatus for correlation protected processing of cryptographic operations | |
CN113326518A (zh) | 一种数据处理方法及装置 | |
US10075290B2 (en) | Operator lifting in cryptographic algorithm | |
KR20040052304A (ko) | 디지털 하드웨어 시스템 보안 장치 및 방법 | |
US11496287B2 (en) | Privacy preserving fully homomorphic encryption with circuit verification | |
AU2018374489B2 (en) | Method for protecting a source of entropy used in countermeasures securing a whitebox cryptographic algorithm | |
US20170134379A1 (en) | Method for securing an application and data | |
CN114124366A (zh) | 一种可信芯片的密钥生成方法及相关设备 | |
Muhammed et al. | Comparative Analysis of AES, Blowfish, Twofish, Salsa20, and ChaCha20 for Image Encryption | |
Elrabaa et al. | A protection and pay-per-use licensing scheme for on-cloud FPGA circuit IPs | |
Selo et al. | Private function evaluation using intel’s sgx | |
Abou Selo et al. | Research Article Private Function Evaluation Using Intel’s SGX | |
Jaswanth et al. | Data Encryption: A Compiler Based Approach | |
Rass et al. | Licensed processing of encrypted information | |
EP3010172A1 (en) | System enabling licensed processing of encrypted information | |
Ruan et al. | Building blocks of the security and management engine | |
Kariapper | Cryptography in the Cloud: Securing Data in Cloud with Encryption | |
KR20140119837A (ko) | 인터넷서비스 등에 응용가능한 패턴암호와 이 암호를 이용한 시스템과 비즈니스방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190722 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190722 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200819 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20201001 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20210104 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210222 |
|
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: 20210401 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210430 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6880017 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |