【手続補正書】
【提出日】令和1年7月22日(2019.7.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータプログラムの実行方法であって、
少なくとも１つの他のコンピュータに接続された信頼できるコンピュータ上に存在する実行可能なコンピュータプログラムを一連の演算に分割するステップと、
前記一連の演算の各演算を難読化するステップと、
前記それぞれの演算の結果を計算して該結果を別のコンピュータに転送する付属命令と共に前記難読化した演算を、実行可能なコンピュータプログラムのリモート実行のために、前記少なくとも１つの他のコンピュータに送信するステップであって、
前記付属命令は、前記難読化された演算のそれぞれの結果を計算し、前記難読化された演算のそれぞれの結果を、難読化された演算を計算するために、前記それぞれの結果を必要とする前記少なくとも１つの他のコンピュータの別のコンピュータに転送し、前記実行可能なコンピュータプログラムの難読化された計算結果を前記信頼できるコンピュータに転送する、ステップと、
を含み、
前記方法は、前記信頼できるコンピュータにおいて、前記実行可能なコンピュータプログラムの前記難読化された計算結果を受信するステップと、
前記実行可能なコンピュータプログラムの受信した前記難読化された計算結果を逆難読化するステップと、
をさらに含むことを特徴とする方法。
【請求項２】
前記一連の演算は回路ゲート演算であり、各回路ゲート演算は、演算子と、第１のオペランドと、第２のオペランドとを有する、
請求項１に記載の方法。
【請求項３】
前記一連の演算の各演算を難読化する前記ステップは、
前記第１のオペランドを第１の乱数値で難読化するステップと、
前記第２のオペランドを第２の乱数値で難読化するステップと、
を含む、請求項２に記載の方法。
【請求項４】
前記一連の演算の各演算を付属命令と共に少なくとも１つの他のコンピュータに送信する前記ステップは、
前記難読化されたオペランドを、
前記難読化されたオペランドを用いて複数の演算の複数の結果を計算し、
前記複数の結果を第２のコンピュータに送信する、
ことを含む命令と共に第１のコンピュータに送信するステップと、
前記演算子、前記第１の乱数値及び前記第２の乱数値に基づいて前記複数の結果から１つの結果を選択し、
前記選択された結果を第３の乱数値で難読化し、
前記選択された結果を異なるコンピュータに送信する、
ことを含む命令を前記第２のコンピュータに送信するステップと、
を含む、請求項３に記載の方法。
【請求項５】
前記一連の演算はコンピュータ算術演算であり、各コンピュータ算術演算は、演算子と、第１のオペランドと、第２のオペランドとを有する、
請求項１に記載の方法。
【請求項６】
前記一連の演算の各演算を送信前に難読化する前記ステップは、
前記第１のオペランドを第１の乱数値で難読化するステップと、
前記第２のオペランドを第２の乱数値で難読化するステップと、
を含む、請求項５に記載の方法。
【請求項７】
前記一連の演算の各演算を付属命令と共に少なくとも１つの他のコンピュータに送信する前記ステップは、
前記演算子及び難読化されたオペランドを、
前記演算子と、前記難読化された第１のオペランドと、前記難読化された第２のオペランドとを用いて第１の演算結果を計算し、
第２のコンピュータから値を受け取り、
前記演算子と、前記第１の結果と、前記値とを用いて第２の演算結果を計算し、
前記第２の結果を異なるコンピュータに送信する、
ことを含む命令と共に第１のコンピュータに送信するステップを含む、
請求項６に記載の方法。
【請求項８】
前記第１のオペランドの前記難読化スキームは、前記第２のオペランドの前記難読化スキームと一致しない、
請求項６に記載の方法。
【請求項９】
第３の乱数値を用いて前記第１のオペランドの前記難読化スキームを前記第２のオペランドの前記難読化スキームに変換する遷移難読化関数が使用される、
請求項８に記載の方法。
【請求項１０】
前記遷移難読化関数を一連の演算に分割するステップと、
前記遷移難読化関数の各演算を、前記それぞれの演算の結果を計算して該結果を別のコンピュータに転送する付属命令と共に少なくとも１つの他のコンピュータに送信するステップと、
をさらに含む、請求項９に記載の方法。
【請求項１１】
前記遷移難読化関数の各演算を付属命令と共に少なくとも１つの他のコンピュータに送信する前記ステップは、
前記第１のオペランドが乗法難読化される場合、
前記難読化されたオペランドを、
第２のコンピュータから値を受け取り、
前記難読化された第１のオペランドと前記値との和を計算し、
前記和を第３のコンピュータに送信する、
ことを含む命令と共に第１のコンピュータに送信するステップと、
前記和と前記第１の乱数値との商を計算し、
前記商を異なるコンピュータに送信する、
ことを含む命令を前記第３のコンピュータに送信するステップと、
を含み、前記第１のオペランドが加法難読化される場合、
前記難読化されたオペランドを、
前記難読化された第１のオペランドと前記第３の乱数値との積を計算し、
前記積を第１のコンピュータに送信する、
ことを含む命令と共に第３のコンピュータに送信するステップと、
第２のコンピュータから値を受け取り、
前記積と前記値との間の差分を計算し、
前記差分を異なるコンピュータに送信する、
ことを含む命令を前記第１のコンピュータに送信するステップと、
を含む、請求項１０に記載の方法。
【請求項１２】
前記第２のコンピュータから受け取られる前記値は、前記第１の乱数値と前記第３の乱数値との積である、
請求項１１に記載の方法。
【請求項１３】
前記難読化は、コード難読化、データ難読化、又はこれらの両方を含む、
請求項１に記載の方法。
【請求項１４】
前記少なくとも１つの他のコンピュータはクラウドの一部である、
請求項１に記載の方法。
【請求項１５】
前記クラウドは信頼できない、
請求項１４に記載の方法。
【請求項１６】
前記クラウドは、複数の管理領域にわたる、
請求項１４に記載の方法。
【請求項１７】
前記クラウドは、複数の商業的に異なるインフラにわたる、
請求項１４に記載の方法。
【請求項１８】
前記少なくとも１つの他のコンピュータは、企業ネットワークの一部である、
請求項１に記載の方法。
【請求項１９】
前記少なくとも１つの他のコンピュータは、複数のコンピュータからランダムに選択される、
請求項１に記載の方法。
【請求項２０】
前記複数のコンピュータの各コンピュータは信頼できない、
請求項１９に記載の方法。
【請求項２１】
前記少なくとも１つの他のコンピュータは信頼できない、
請求項１に記載の方法。
【請求項２２】
前記少なくとも１つの他のコンピュータは、前記信頼できるコンピュータではない、
請求項１に記載の方法。
【請求項２３】
システムであって、少なくとも１つの他のコンピュータに通信可能に接続された少なくとも１つの信頼できるコンピュータを備え、該少なくとも１つの信頼できるコンピュータのうちの第１の信頼できるコンピュータは、実行時に前記システムに、
前記第１の信頼できるコンピュータ上に存在する実行可能なコンピュータプログラムを一連の演算に分割するステップと、
前記一連の演算の各演算を、前記それぞれの演算の結果を計算して該結果を別のコンピュータに転送する付属命令と共に前記難読化した演算を、実行可能なコンピュータプログラムのリモート実行のために、前記少なくとも１つの他のコンピュータに送信するステップであって、
前記付属命令は、前記難読化された演算のそれぞれの結果を計算し、前記難読化された演算のそれぞれの結果を、難読化された演算を計算するために、前記それぞれの結果を必要とする前記少なくとも１つの他のコンピュータの別のコンピュータに転送し、前記実行可能なコンピュータプログラムの難読化された計算結果を前記第１の信頼できるコンピュータに転送する、ステップと、
を含む動作を実行させるコンピュータ命令を記憶し、
前記命令は、さらに前記システムに、
前記第１の信頼できるコンピュータにおいて、前記実行可能なコンピュータプログラムの前記難読化された計算結果を受け取るステップと、
を含む動作を実行させる、
ことを特徴とするシステム。
【請求項２４】
前記一連の演算は回路ゲート演算であり、各回路ゲート演算は、演算子と、第１のオペランドと、第２のオペランドとを有する、
請求項２３に記載のシステム。
【請求項２５】
前記一連の演算の各演算を難読化する前記ステップは、
前記第１のオペランドを第１の乱数値で難読化するステップと、
前記第２のオペランドを第２の乱数値で難読化するステップと、
を含む、請求項２４に記載のシステム。
【請求項２６】
前記一連の演算の各演算を付属命令と共に少なくとも１つの他のコンピュータに送信する前記ステップは、
前記難読化されたオペランドを、
前記難読化されたオペランドを用いて複数の演算の複数の結果を計算し、
前記複数の結果を第２のコンピュータに送信する、
ことを含む命令と共に第１のコンピュータに送信するステップと、
前記演算子、前記第１の乱数値及び前記第２の乱数値に基づいて前記複数の結果から１つの結果を選択し、
前記選択された結果を第３の乱数値で難読化し、
前記選択された結果を異なるコンピュータに送信する、
ことを含む命令を前記第２のコンピュータに送信するステップと、
を含む、請求項２５に記載のシステム。
【請求項２７】
前記一連の演算はコンピュータ算術演算であり、各コンピュータ算術演算は、演算子と、第１のオペランドと、第２のオペランドとを有する、
請求項２３に記載のシステム。
【請求項２８】
前記一連の演算の各演算は、ハードウェアユニットによって実行される演算に対応する、
請求項２３に記載のシステム。
【請求項２９】
前記少なくとも１つの他のコンピュータ上の整数加算器をさらに備える、
請求項２８に記載のシステム。
【請求項３０】
前記少なくとも１つの他のコンピュータ上の整数乗算器をさらに備える、
請求項２８に記載のシステム。
【請求項３１】
前記少なくとも１つの他のコンピュータ上の整数比較器をさらに備える、
請求項２８に記載のシステム。
【請求項３２】
前記少なくとも１つの他のコンピュータ上の浮動小数点乗算器をさらに備える、
請求項２８に記載のシステム。
【請求項３３】
前記一連の演算の各演算を送信前に難読化する前記ステップは、
前記第１のオペランドを第１の乱数値で難読化するステップと、
前記第２のオペランドを第２の乱数値で難読化するステップと、
を含む、請求項２７に記載のシステム。
【請求項３４】
前記一連の演算の各演算を付属命令と共に少なくとも１つの他のコンピュータに送信する前記ステップは、
前記演算子及び難読化されたオペランドを、
前記演算子と、前記難読化された第１のオペランドと、前記難読化された第２のオペランドとを用いて第１の演算結果を計算し、
第２のコンピュータから値を受け取り、
前記演算子と、前記第１の結果と、前記値とを用いて第２の演算結果を計算し、
前記第２の結果を異なるコンピュータに送信する、
ことを含む命令と共に第１のコンピュータに送信するステップを含む、
請求項３３に記載のシステム。
【請求項３５】
前記第１のオペランドの前記難読化スキームは、前記第２のオペランドの前記難読化スキームと一致しない、
請求項３３に記載のシステム。
【請求項３６】
第３の乱数値を用いて前記第１のオペランドの前記難読化スキームを前記第２のオペランドの前記難読化スキームに変換する遷移難読化関数が使用される、
請求項３５に記載のシステム。
【請求項３７】
前記少なくとも１つの信頼できるコンピュータは、実行時に前記システムに、
前記遷移難読化関数を一連の演算に分割するステップと、
前記遷移難読化関数の各演算を、前記それぞれの演算の結果を計算して該結果を別のコンピュータに転送する付属命令と共に少なくとも１つの他のコンピュータに送信するステップと、
をさらに含む動作を実行させるコンピュータ命令を記憶する、
請求項３６に記載のシステム。
【請求項３８】
前記遷移難読化関数の各演算を付属命令と共に少なくとも１つの他のコンピュータに送信する前記ステップは、
前記第１のオペランドが乗法難読化される場合、
前記難読化されたオペランドを、
第２のコンピュータから値を受け取り、
前記難読化された第１のオペランドと前記値との和を計算し、
前記和を第３のコンピュータに送信する、
ことを含む命令と共に第１のコンピュータに送信するステップと、
前記和と前記第１の乱数値との商を計算し、
前記商を異なるコンピュータに送信する、
ことを含む命令を前記第３のコンピュータに送信するステップと、
を含み、前記第１のオペランドが加法難読化される場合、
前記難読化されたオペランドを、
前記難読化された第１のオペランドと前記第３の乱数値との積を計算し、
前記積を第１のコンピュータに送信する、
ことを含む命令と共に第３のコンピュータに送信するステップと、
第２のコンピュータから値を受け取り、
前記積と前記値との間の差分を計算し、
前記差分を異なるコンピュータに送信する、
ことを含む命令を前記第１のコンピュータに送信するステップと、
を含む、請求項３７に記載のシステム。
【請求項３９】
前記第２のコンピュータから受け取られる前記値は、前記第１の乱数値と前記第３の乱数値との積である、
請求項３８に記載のシステム。
【請求項４０】
前記難読化は、コード難読化、データ難読化、又はこれらの両方を含む、
請求項２３に記載のシステム。
【請求項４１】
前記少なくとも１つの他のコンピュータはクラウドの一部である、
請求項２３に記載のシステム。
【請求項４２】
前記クラウドは信頼できない、
請求項４１に記載のシステム。
【請求項４３】
前記クラウドは、複数の管理領域にわたる、
請求項４１に記載のシステム。
【請求項４４】
前記クラウドは、複数の商業的に異なるインフラにわたる、
請求項４１に記載のシステム。
【請求項４５】
前記少なくとも１つの他のコンピュータは、企業ネットワークの一部である、
請求項２３に記載のシステム。
【請求項４６】
前記少なくとも１つの他のコンピュータは、複数のコンピュータからランダムに選択される、
請求項２３に記載のシステム。
【請求項４７】
前記複数のコンピュータの各コンピュータは信頼できない、
請求項４６に記載のシステム。
【請求項４８】
前記少なくとも１つの他のコンピュータは信頼できない、
請求項２３に記載のシステム。
【請求項４９】
前記少なくとも１つの他のコンピュータは、前記信頼できるコンピュータではない、
請求項２３に記載のシステム。
【請求項５０】
前記信頼できるコンピュータは、１又は２以上の仮想機械を含む、
請求項１に記載の方法。
【請求項５１】
前記少なくとも１つの他のコンピュータは、１又は２以上の仮想機械を含む、
請求項１に記載の方法。
【請求項５２】
前記別のコンピュータは、１又は２以上の仮想機械を含む、
請求項１に記載の方法。
【請求項５３】
前記信頼できるコンピュータは、１又は２以上の仮想機械を含む、
請求項２３に記載のシステム。
【請求項５４】
前記少なくとも１つの他のコンピュータは、１又は２以上の仮想機械を含む、
請求項２３に記載のシステム。
【請求項５５】
前記別のコンピュータは、１又は２以上の仮想機械を含む、
請求項２３に記載のシステム。
【請求項５６】
前記一連の演算の各演算を付属命令と共に前記少なくとも１つの他のコンピュータに送信する前記ステップは、各演算を計算のために複数のコンピュータに送信するステップを含む、
請求項１に記載の方法。
【請求項５７】
前記一連の演算の各演算を付属命令と共に前記少なくとも１つの他のコンピュータに送信する前記ステップは、各演算を計算のために複数のコンピュータに送信するステップを含む、
請求項２３に記載のシステム。