【手続補正書】
【提出日】令和1年7月31日(2019.7.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータで実現される方法であって、
複数のクラスおよび複数のメソッドを含むアプリケーションのためのコードがコンパイルされて生成された中間言語コードをデックスファイルとして含む応用プログラムパッケージをネットワークを介して受信する受信工程、
前記複数のクラスおよび前記複数のメソッドから保護対象クラスまたは保護対象メソッドを選別する選別工程、
前記デックスファイルから前記選別された保護対象クラスまたは前記選別された保護対象メソッドに対応する中間言語コードを検索して暗号化することにより、前記選別された保護対象クラスまたは前記選別された保護対象メソッドを暗号化する暗号化工程、および
前記暗号化された保護対象クラスまたは前記暗号化された保護対象メソッドを復号化するための復号化情報を、前記応用プログラムパッケージがさらに含むセキュアモジュールに追加する追加工程
を含むことを特徴とする、コンピュータで実現される方法。
【請求項２】
前記受信工程は、
クラスまたはメソッドを指定するための選別情報を前記ネットワークを介してさらに受信し、
前記選別工程は、
前記選別情報に基づいて指定されたクラスまたはメソッドを前記保護対象クラスまたは前記保護対象メソッドとして選別することを特徴とする、請求項１に記載のコンピュータで実現される方法。
【請求項３】
前記選別工程は、
前記複数のクラスおよび前記複数のメソッドから前記アプリケーションの予め設定された機能に対応するクラスまたはメソッドを見つけ出して前記保護対象クラスまたは前記保護対象メソッドとして選別することを特徴とする、請求項１に記載のコンピュータで実現される方法。
【請求項４】
前記予め設定された機能は、前記アプリケーションで提供されるサービスにおける課金機能、前記サービスにおける認証機能、および前記サービスを提供するサーバとの通信機能のうちの少なくとも１つを含むことを特徴とする、請求項３に記載のコンピュータで実現される方法。
【請求項５】
前記デックスファイルは、前記複数のクラスの個数とクラステーブルのオフセットが格納されたヘッダを含み、
前記複数のクラスそれぞれは、前記複数のクラスそれぞれが含むメソッドに対するメソッドテーブルのオフセットを含み、
前記暗号化工程は、
前記クラステーブルを利用して前記保護対象クラスに対応する中間言語コードを検索するか、前記メソッドテーブルを利用して前記保護対象メソッドに対応する中間言語コードを検索することを特徴とする、請求項１に記載のコンピュータで実現される方法。
【請求項６】
前記応用プログラムパッケージがインストールされる電子機器におけるランタイム方式に応じて互いに異なる復号化情報が要求され、
前記追加工程は、
前記互いに異なる復号化情報すべてを前記応用プログラムパッケージのセキュアモジュールに追加するか、前記互いに異なる復号化情報がセキュアモジュールに追加された互いに異なる複数の応用プログラムパッケージを生成することを特徴とする、請求項１に記載のコンピュータで実現される方法。
【請求項７】
前記復号化情報は、電子機器において前記アプリケーションをダルビックランタイムで実行する場合のために、前記暗号化された中間言語コードのオフセット、前記暗号化された中間言語コードのサイズ、および暗号化に利用されたキーに関する情報を含むことを特徴とする、請求項１に記載のコンピュータで実現される方法。
【請求項８】
前記電子機器において、前記電子機器のメモリにロードされた前記デックスファイルのデックスヘッダで前記暗号化された中間言語コードのオフセットから前記暗号化された中間言語コードのサイズだけのコードを前記キーによって復号化して前記デックスヘッダにオーバーライトすることにより、前記暗号化された保護対象メソッドが復号化されることを特徴とする、請求項７に記載のコンピュータで実現される方法。
【請求項９】
前記復号化情報は、電子機器において前記アプリケーションをＡＲＴ（Ａｎｄｒｏｉｄ  ｒｕｎｔｉｍｅ）で実行する場合のために、（１）前記暗号化された保護対象メソッドが含まれたクラスまたは前記暗号化された保護対象クラスのクラスインデックス、（２）前記暗号化された保護対象メソッドのメソッドインデックス、および（３）前記保護対象クラスまたは前記保護対象メソッドを含むデックスファイルを含むことを特徴とする、請求項１に記載のコンピュータで実現される方法。
【請求項１０】
前記電子機器において前記復号化情報として含まれたデックスファイルをコンバータによってコンパイルして保護対象クラスまたは保護対象メソッドのネイティブコードを取得し、前記電子機器のメモリにロードされたデックスファイルのヘッダから前記クラスインデックスおよび前記メソッドインデックスを利用して暗号化された中間言語コードを検索し、前記検索された暗号化された中間言語コードに前記取得したネイティブコードのうちの前記暗号化された中間言語コードに対応するネイティブコードをオーバーライトすることにより、前記暗号化された保護対象メソッドが復号化されることを特徴とする、請求項９に記載のコンピュータで実現される方法。
【請求項１１】
前記中間言語コードの暗号化によって変更されたデックスファイルのＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）およびハッシュ値を更新する更新工程
をさらに含むことを特徴とする、請求項１に記載のコンピュータで実現される方法。
【請求項１２】
ネットワークを介した電子機器からの要請に応じて前記中間言語コードが暗号化されて前記復号化情報が追加された前記応用プログラムパッケージを前記電子機器に送信する送信工程
をさらに含むことを特徴とする、請求項１に記載のコンピュータで実現される方法。
【請求項１３】
コンピュータで実現される方法であって、
複数のクラスおよび複数のメソッドを含むアプリケーションのためのコードがコンパイルされて生成された中間言語コードをデックスファイルとして含み、前記中間言語コードのうちの少なくとも一部のコードが暗号化され、前記暗号化された中間言語コードを復号化するための復号化情報がセキュアモジュールに含まれた応用プログラムパッケージをサーバからネットワークを介して受信する受信工程、および
前記アプリケーションの実行過程で適用可能なランタイム方式に応じ、前記復号化情報を利用して前記暗号化された中間言語コードを復号化するか、前記暗号化された中間言語コードを前記復号化情報が含む中間言語コードと交換して実行する実行工程
を含み、
前記暗号化された中間言語コードは、前記複数のクラスおよび前記複数のメソッドのうち、前記サーバで選別された保護対象クラスまたは保護対象メソッドの中間言語コードが暗号化されて生成されることを特徴とする、コンピュータで実現される方法。
【請求項１４】
前記復号化情報は、ダルビックランタイムのために、前記暗号化された中間言語コードのオフセット、前記暗号化された中間言語コードのサイズ、および暗号化に利用されたキーに関する情報を含むことを特徴とする、請求項１３に記載のコンピュータで実現される方法。
【請求項１５】
前記実行工程は、
前記ダルビックランタイムにおいて、メモリにロードされた前記デックスファイルのデックスヘッダで前記暗号化された中間言語コードのオフセットから前記暗号化された中間言語コードのサイズだけのコードを前記キーによって復号化して前記デックスヘッダにオーバーライトすることにより、前記保護対象メソッドを復号化することを特徴とする、請求項１４に記載のコンピュータで実現される方法。
【請求項１６】
前記復号化情報は、ＡＲＴ（Ａｎｄｒｏｉｄ  ｒｕｎｔｉｍｅ）のために、（１）前記暗号化された保護対象メソッドが含まれたクラスまたは前記暗号化された保護対象クラスのクラスインデックス、（２）前記暗号化された保護対象メソッドのメソッドインデックス、および（３）前記保護対象クラスまたは前記保護対象メソッドを含むデックスファイルを含むことを特徴とする、請求項１３に記載のコンピュータで実現される方法。
【請求項１７】
前記実行工程は、
前記復号化情報として含まれたデックスファイルをコンバータによってコンパイルして保護対象クラスまたは保護対象メソッドのネイティブコードを取得し、メモリにロードされたデックスファイルのヘッダから前記クラスインデックスおよび前記メソッドインデックスを利用して前記暗号化された中間言語コードを検索し、前記検索された暗号化された中間言語コードに、前記取得したネイティブコードのうちの前記暗号化された中間言語コードに対応するネイティブコードをオーバーライトすることにより、前記保護対象メソッドを復号化することを特徴とする、請求項１６に記載のコンピュータで実現される方法。
【請求項１８】
複数のクラスおよび複数のメソッドを含むアプリケーションのためのコードがコンパイルされて生成された中間言語コードをデックスファイルとして含む応用プログラムパッケージをネットワークを介して受信するようにサーバを制御する受信制御手段、
前記複数のクラスおよび前記複数のメソッドから保護対象クラスまたは保護対象メソッドを選別するように前記サーバを制御する選別制御手段、
前記デックスファイルから前記選別された保護対象クラスまたは前記選別された保護対象メソッドに対応する中間言語コードを検索して暗号化することにより、前記選別された保護対象クラスまたは前記選別された保護対象メソッドを暗号化するように前記サーバを制御する暗号化制御手段、および
前記暗号化された保護対象クラスまたは前記暗号化された保護対象メソッドを復号化するための復号化情報を、前記応用プログラムパッケージがさらに含むセキュアモジュールに追加するように前記サーバを制御する追加制御手段
を備えることを特徴とする、システム。
【請求項１９】
前記受信制御手段は、
クラスまたはメソッドを指定するための選別情報を前記ネットワークを介してさらに受信するように前記サーバを制御し、
前記選別制御手段は、
前記選別情報に基づいて指定されたクラスまたはメソッドを前記保護対象クラスまたは前記保護対象メソッドとして選別するように前記サーバを制御することを特徴とする、請求項１８に記載のシステム。
【請求項２０】
前記選別制御手段は、
前記複数のクラスおよび前記複数のメソッドから前記アプリケーションの予め設定された機能に対応するクラスまたはメソッドを見つけ出して前記保護対象クラスまたは前記保護対象メソッドとして選別するように前記サーバを制御することを特徴とする、請求項１８に記載のシステム。
【請求項２１】
前記応用プログラムパッケージがインストールされる電子機器におけるランタイム方式に応じて互いに異なる復号化情報が要求され、
前記追加制御手段は、
前記互いに異なる復号化情報すべてを前記応用プログラムパッケージのセキュアモジュールに追加するか、前記互いに異なる復号化情報がセキュアモジュールに追加された互いに異なる複数の応用プログラムパッケージを生成するように前記サーバを制御することを特徴とする、請求項１８に記載のシステム。