(57)【要約】【課題】実行可能な圧縮ファイルを保護するためのファイル保護方法およびシステムを提供する。【解決手段】ファイル保護方法は、実行可能な原本圧縮ファイルを変更する段階、前記変更された原本圧縮ファイルを復元するための復元情報を生成する段階、前記変更された原本圧縮ファイルおよび前記復元情報を含む実行可能な新たな圧縮ファイルを生成する段階、および前記新たな圧縮ファイルのファイル名を前記原本圧縮ファイルのファイル名に変更する段階を含む。【選択図】図３
2019021310.tif 000002
【特許請求の範囲】
【請求項１】
実行可能な原本圧縮ファイルを変更する段階、
前記変更された原本圧縮ファイルを復元するための復元情報を生成する段階、
前記変更された原本圧縮ファイルおよび前記復元情報を含む実行可能な新たな圧縮ファイルを生成する段階、および
前記新たな圧縮ファイルのファイル名を前記原本圧縮ファイルのファイル名に変更する段階
を含むことを特徴とする、ファイル保護方法。
【請求項２】
前記実行可能な原本圧縮ファイルを変更する段階は、
前記原本圧縮ファイルに対する圧縮解除によって前記原本圧縮ファイルが含む内部ファイルを抽出し、前記抽出された内部ファイルのうちの少なくとも１つのクラスファイルを認識不可能な形態に変更して前記原本圧縮ファイルを変更し、
前記新たな圧縮ファイルを生成する段階は、
前記変更されたクラスファイル、前記復元情報、および前記内部ファイルのうちの前記少なくとも１つのクラスファイルを除いた残りのファイルを含む新たな圧縮ファイルを生成することを特徴とする、請求項１に記載のファイル保護方法。
【請求項３】
前記変更されたクラスファイルを含む新たな圧縮ファイルを、予め設定されたキーを利用して暗号化するか、または予め設定された方式にしたがって符号化して変更する段階、
前記変更された新たな圧縮ファイルを復元するための追加復元情報を生成する段階、および
前記変更された新たな圧縮ファイルおよび前記追加復元情報を含む追加圧縮ファイルを生成する段階
をさらに含み、
前記新たな圧縮ファイルのファイル名を前記原本圧縮ファイルのファイル名に変更する段階は、
前記新たな圧縮ファイルのファイル名の代わりに、前記追加圧縮ファイルのファイル名を前記原本圧縮ファイルのファイル名に変更することを特徴とする、請求項２に記載のファイル保護方法。
【請求項４】
前記原本圧縮ファイルに対するクライアントの要請にしたがって前記新たな圧縮ファイルを前記クライアントに提供する段階
をさらに含み、
前記クライアントで前記新たな圧縮ファイルの実行に応答し、前記クライアントが、
前記新たな圧縮ファイルの実行と関連して伝達される因子を抽出し、
前記新たな圧縮ファイルが含む前記復元情報を利用して前記変更されたクラスファイルを前記クライアントのメモリ上で復元し、
前記復元されたクラスファイルを前記クライアントのメモリ上に積載し、
前記メモリ上に積載された前記復元されたクラスファイルに含まれたメインクラスのメイン関数を呼び出して前記抽出された因子を伝達することにより、前記原本圧縮ファイルによる機能を実行すること
を特徴とする、請求項２に記載のファイル保護方法。
【請求項５】
前記実行可能な原本圧縮ファイルを変更する段階は、
前記原本圧縮ファイルに対する圧縮解除によって前記原本圧縮ファイルが含む内部ファイルを抽出する第１段階、
前記抽出された内部ファイルのうちの少なくとも１つのクラスファイルを認識不可能な形態に変更して前記原本圧縮ファイルを変更する第２段階、
前記変更されたクラスファイルを圧縮する第３段階、および
前記第２段階および前記第３段階を予め設定された回数だけ繰り返し実行する第４段階
をさらに含むことを特徴とする、請求項１に記載のファイル保護方法。
【請求項６】
前記実行可能な原本圧縮ファイルを変更する段階は、
前記原本圧縮ファイルを、予め設定されたキーを利用して暗号化するか、または予め設定された方式にしたがって符号化して前記原本圧縮ファイルを変更することを特徴とする、請求項１に記載のファイル保護方法。
【請求項７】
前記原本圧縮ファイルに対するクライアントの要請にしたがって前記新たな圧縮ファイルを前記クライアントに提供する段階
をさらに含み、
前記クライアントで前記新たな圧縮ファイルの実行に応答し、前記クライアントが、
前記新たな圧縮ファイルの実行と関連して伝達される因子を抽出し、
前記新たな圧縮ファイルが含む前記復元情報を利用して前記変更された原本圧縮ファイルを復元し、
前記復元された原本圧縮ファイルを実行して前記抽出された因子を伝達することにより、前記原本圧縮ファイルによる機能を実行し、
前記機能の終了後に前記復元された原本圧縮ファイルを除去すること
を特徴とする、請求項１に記載のファイル保護方法。
【請求項８】
前記実行可能な原本圧縮ファイルを変更する段階は、
前記原本圧縮ファイルを予め設定されたキーによって暗号化するか、または予め設定された方式にしたがって符号化することにより、前記原本圧縮ファイルを認識不可能な形態に変更する第１段階、
前記変更された原本圧縮ファイルを圧縮する第２段階、および
前記第１段階および前記第２段階を予め設定された回数だけ繰り返し実行する第３段階
を含むことを特徴とする、請求項１に記載のファイル保護方法。
【請求項９】
前記復元情報を生成する段階は、
前記変更された原本圧縮ファイルを本来の原本圧縮ファイルに復元するための復元コードを生成するか、前記原本圧縮ファイルの変更方式に対応する復元方式を説明する復元方式情報を前記復元情報として生成することを特徴とする、請求項１に記載のファイル保護方法。
【請求項１０】
前記新たな圧縮ファイルを生成する段階は、
前記復元情報を、キーを利用して暗号化するか、予め設定された方式にしたがって符号化して前記新たな圧縮ファイル内部の別のファイルに含ませるか、前記新たな圧縮ファイル内部のクラスファイル内部に含ませることを特徴とする、請求項１に記載のファイル保護方法。
【請求項１１】
前記復元情報を生成する段階は、
前記変更された原本圧縮ファイルを本来の原本圧縮ファイルに復元するための復元コードを生成するか、前記原本圧縮ファイルの変更方式に対応する復元方式を説明する復元方式情報を生成する段階、
前記復元コードまたは前記復元方式情報を予め設定されたサーバに格納する段階、および
前記新たな圧縮ファイルの実行時に前記予め設定されたサーバに接続して前記復元コードまたは前記復元方式情報を取得するための接続情報を前記復元情報として生成する段階
を含むことを特徴とする、請求項１に記載のファイル保護方法。
【請求項１２】
実行可能な原本圧縮ファイルをサーバに要請する段階、
前記要請にしたがって前記サーバから実行可能な新たな圧縮ファイルを受信する段階、
前記新たな圧縮ファイルの実行と関連して伝達される因子を抽出する段階、
前記新たな圧縮ファイルが含む復元情報を利用して前記新たな圧縮ファイルがさらに含む変更された原本圧縮ファイルを復元する段階、
前記復元された原本圧縮ファイルを実行して前記抽出された因子を伝達することにより、前記原本圧縮ファイルによる機能を実行する段階、および
前記機能の終了後に前記復元された原本圧縮ファイルを除去する段階
を含むことを特徴とする、ファイル保護方法。
【請求項１３】
前記サーバは、
前記原本圧縮ファイルを変更し、
前記変更された原本圧縮ファイルを復元するための復元情報を生成し、
前記変更された原本圧縮ファイルおよび前記復元情報を含む実行可能な新たな圧縮ファイルを生成し、
前記原本圧縮ファイルに対する要請にしたがって前記新たな圧縮ファイルを提供するように実現されること
を特徴とする、請求項１２に記載のファイル保護方法。
【請求項１４】
実行可能な原本圧縮ファイルをサーバに要請する段階、
前記要請にしたがって前記サーバから実行可能な新たな圧縮ファイルを受信する段階、
前記新たな圧縮ファイルの実行と関連して伝達される因子を抽出する段階、
前記新たな圧縮ファイルが含む復元情報を利用して前記新たな圧縮ファイルがさらに含む変更されたクラスファイルをメモリ上で復元する段階、
前記復元されたクラスファイルをメモリ上に積載する段階、および
前記メモリ上に積載された前記復元されたクラスファイルに含まれたメインクラスのメイン関数を呼び出して前記抽出された因子を伝達することにより、前記原本圧縮ファイルによる機能を実行する段階
を含むことを特徴とする、ファイル保護方法。
【請求項１５】
前記サーバは、
前記原本圧縮ファイルに対する圧縮解除によって前記原本圧縮ファイルが含む内部ファイルを抽出し、前記抽出された内部ファイルのうちの少なくとも１つのクラスファイルを認識不可能な形態に変更して前記原本圧縮ファイルを変更し、
前記変更されたクラスファイル、前記復元情報、および前記内部ファイルのうちの前記少なくとも１つのクラスファイルを除いた残りのファイルを含む新たな圧縮ファイルを生成し、
前記原本圧縮ファイルに対する要請にしたがって前記新たな圧縮ファイルを提供するように実現されること
を特徴とする、請求項１４に記載のファイル保護方法。
【請求項１６】
前記新たな圧縮ファイルを受信する段階は、
前記サーバで前記新たな圧縮ファイルを、予め設定されたキーを利用して暗号化するか、または予め設定された方式にしたがって符号化して変更した変更された新たな圧縮ファイルおよび前記変更された新たな圧縮ファイルを復元するための追加復元情報を含む追加圧縮ファイルを受信する段階、および
前記受信された追加圧縮ファイルが含む追加復元情報を利用して前記受信された追加圧縮ファイルがさらに含む、前記変更された新たな圧縮ファイルを復元する段階
を含むことを特徴とする、請求項１４に記載のファイル保護方法。
【請求項１７】
前記復元情報は、前記変更された原本圧縮ファイルを本来の原本圧縮ファイルに復元するための復元コードまたは前記原本圧縮ファイルの変更方式に対応する復元方式を説明する復元方式情報を含み、キーを利用して暗号化されるか、または予め設定された方式にしたがって符号化されて前記新たな圧縮ファイルが含む別のファイルまたはクラスファイル内部に含まれることを特徴とする、請求項１２または１４に記載のファイル保護方法。
【請求項１８】
前記サーバまたは前記サーバとは区別される予め設定された他のサーバに、前記変更された原本圧縮ファイルを本来の原本圧縮ファイルに復元するための復元コードまたは前記原本圧縮ファイルの変更方式に対応する復元方式を説明する復元方式情報が格納され、
前記復元情報は、前記新たな圧縮ファイルの実行時に前記サーバまたは前記サーバとは区別される予め設定された他のサーバに接続して前記復元コードまたは前記復元方式情報の提供を受けるための接続情報を含むことを特徴とする、請求項１２または１４に記載のファイル保護方法。
【請求項１９】
請求項１〜１８のうちのいずれか一項に記載の方法をコンピュータに実行させるためのプログラムが記録されていることを特徴とする、コンピュータで読み取り可能な記録媒体。
【請求項２０】
コンピュータと結合して請求項１〜１８のうちのいずれか一項に記載の方法をコンピュータに実行させるためのコンピュータで読み取り可能な記録媒体に格納された、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の説明は、実行可能な圧縮ファイルを保護するためのファイル保護方法およびシステム、コンピュータ装置と結合してファイル保護方法を実行させるためにコンピュータで読み取り可能な記録媒体に格納されたコンピュータプログラムと記録媒体に関する。
【背景技術】
【０００２】
ＪＡＲ（Ｊａｖａ  Ａｒｃｈｉｖｅｒ）は、クラスファイルを効率的に配布するために多数のクラスファイルを１つにまとめて単一ファイルとして生成するフォーマットであって、ＪＡＲファイルは、ローカル（ｌｏｃａｌ）上での便利な管理はもちろん、ジャバ（Ｊａｖａ）プログラムの実行中には、遠隔地でＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などを通じてダウンロードして直ぐに使用することができるという特徴がある。例えば、特許文献１は、ジャバアップルを含むＪＡＲファイルの生成方法について開示している。
【０００３】
このように、ジャバクラスファイルと関連するファイルを１つにまとめたＪＡＲファイルは、ＺＩＰファイルフォーマットによって構成された圧縮ファイルであるため、ＪＡＲファイルの内部に含まれた内容を誰でも簡単に確認できてしまうという特性がある。例えば、ＪＡＲファイルに含まれているクラスファイルの場合は、デコンパイラを利用してソースコード形態で抽出可能であるが、結局これは、サーバ基盤で作動するＪＡＲファイルではなくクライアントに配布されて独立的に実行可能なＪＡＲファイルの場合には盗用または悪用される恐れがあることから、保安性が低いという問題がある。
【０００４】
このために、一部の従来技術では、悪意のあるユーザによって抽出されたソースコードが簡単に認識されないように、クラスと内部変数の名称を意味のないものに置換した後にＪＡＲファイルをビルドすることにより、ＪＡＲファイルが含むクラスファイルがデコンパイルされたとしても、ソースコードを分析するのに時間がかかるようにした。
【０００５】
しかし、このような従来技術は、ソースコードの分析にかかる時間を延ばすだけで、ＪＡＲファイルに含まれている内部の確認を根本的に遮断したり、ＪＡＲファイルからクラスファイルを抽出してデコンパイルする過程自体を遮断したりすることはできていない。さらに、上述したような従来技術は、ＪＡＲファイルのビルド前に実行されなければならないため、保護したい内容を変更するたびに新たなビルド過程を踏まなければならない上に、ソースコードが分析されてＪＡＲファイルが盗用または悪用される可能性も依然残っている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】韓国公開特許第１０−２００７−００１８９５６号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＪＡＲファイルのように実行可能な圧縮ファイルに対する保護技術を適用するにあたり、保護しようとする実行可能な圧縮ファイルを再びビルドする必要なく既存にビルドされた実行可能な圧縮ファイルに容易に適用することができ、実行可能な圧縮ファイルの内容が把握された後にクラスファイルが抽出されてデコンパイルされるという一連の過程の試行を不可能にし、最初から実行可能な圧縮ファイル自体の内容を把握できないように遮断することができるファイル保護方法およびシステム、コンピュータ装置と結合してファイル保護方法を実行させるためにコンピュータで読み取り可能な記録媒体に格納されたコンピュータプログラムと記録媒体を提供する。
【課題を解決するための手段】
【０００８】
実行可能な原本圧縮ファイルを変更する段階、前記変更された原本圧縮ファイルを復元するための復元情報を生成する段階、前記変更された原本圧縮ファイルおよび前記復元情報を含む実行可能な新たな圧縮ファイルを生成する段階、および前記新たな圧縮ファイルのファイル名を前記原本圧縮ファイルのファイル名に変更する段階を含むことを特徴とする、ファイル保護方法を提供する。
【０００９】
実行可能な原本圧縮ファイルをサーバに要請する段階、前記要請にしたがって前記サーバから実行可能な新たな圧縮ファイルを受信する段階、前記新たな圧縮ファイルの実行と関連して伝達される因子を抽出する段階、前記新たな圧縮ファイルが含む復元情報を利用して前記新たな圧縮ファイルがさらに含む変更された原本圧縮ファイルを復元する段階、前記復元された原本圧縮ファイルを実行して前記抽出された因子を伝達することにより、前記原本圧縮ファイルによる機能を実行する段階、および前記機能の終了後に前記復元された原本圧縮ファイルを除去する段階を含むことを特徴とする、ファイル保護方法を提供する。
【００１０】
実行可能な原本圧縮ファイルをサーバに要請する段階、前記要請にしたがって前記サーバから実行可能な新たな圧縮ファイルを受信する段階、前記新たな圧縮ファイルの実行と関連して伝達される因子を抽出する段階、前記新たな圧縮ファイルが含む復元情報を利用して前記新たな圧縮ファイルがさらに含む変更されたクラスファイルをメモリ上で復元する段階、前記復元されたクラスファイルをメモリ上に積載する段階、および前記メモリ上に積載された前記復元されたクラスファイルに含まれたメインクラスのメイン関数を呼び出して前記抽出された因子を伝達することにより、前記原本圧縮ファイルによる機能を実行する段階を含むことを特徴とする、ファイル保護方法を提供する。
【００１１】
前記ファイル保護方法をコンピュータに実行させるためのプログラムが記録されていることを特徴とする、コンピュータで読み取り可能な記録媒体を提供する。
【００１２】
コンピュータと結合して前記ファイル保護方法をコンピュータに実行させるためのコンピュータで読み取り可能な記録媒体に格納された、コンピュータプログラムを提供する。
【発明の効果】
【００１３】
ＪＡＲファイルのように実行可能な圧縮ファイルに対する保護技術を適用するにあたり、保護しようとする実行可能な圧縮ファイルを再びビルドする必要なく既存にビルドされた実行可能な圧縮ファイルに容易に適用することができ、実行可能な圧縮ファイルの内容が把握された後にクラスファイルが抽出されてデコンパイルされるという一連の過程の試行を不可能にし、最初から実行可能な圧縮ファイル自体の内容を把握できないように遮断することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態における、ネットワーク環境の例を示した図である。
【図２】本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。
【図３】本発明の一実施形態における、ファイル保護方法の例を示したフローチャートである。
【図４】本発明の一実施形態における、解体方式のファイル保護方法の例を示したフローチャートである。
【図５】本発明の一実施形態における、コンテナ方式のファイル保護方法の例を示したフローチャートである。
【図６】本発明の一実施形態における、解体方式にしたがって実行可能なＪＡＲファイルを変更して新たなＪＡＲファイルを生成する例を示した図である。
【図７】本発明の一実施形態における、コンテナ方式にしたがって実行可能なＪＡＲファイルを変更して新たなＪＡＲファイルを生成する例を示した図である。
【図８】本発明の一実施形態における、コンテナ方式によるクライアントでのファイル保護方法の例を示したフローチャートである。
【図９】本発明の一実施形態における、解体方式によるクライアントでのファイル保護方法の例を示したフローチャートである。
【図１０】本発明の一実施形態における、解体方式で原本圧縮ファイルを変更する例を示した図である。
【図１１】本発明の一実施形態における、コンテナ方式で原本圧縮ファイルを変更する例を示した図である。
【図１２】本発明の一実施形態における、復元情報を保護する方法の例を示した図である。
【発明を実施するための形態】
【００１５】
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
【００１６】
本発明の実施形態に係るファイル保護システムは、以下で説明される電子機器またはサーバによって実現されてよく、本発明の実施形態に係るファイル保護方法は、このような電子機器またはサーバによって実行されてよい。例えば、電子機器やサーバには、本発明の一実施形態に係るコンピュータプログラムがインストールおよび駆動されてよく、電子機器やサーバは、駆動するコンピュータプログラムの制御にしたがって実行可能な圧縮ファイルを保護するためのファイル保護方法を実行してよい。このようなコンピュータプログラムは、電子機器やサーバと結合してファイル保護方法を実行させるためにコンピュータで読み取り可能な記録媒体に格納されてよい。
【００１７】
図１は、本発明の一実施形態における、ネットワーク環境の例を示した図である。図１のネットワーク環境は、複数の電子機器１１０、１２０、１３０、１４０、複数のサーバ１５０、１６０、およびネットワーク１７０を含む例を示している。このような図１は、発明の説明のための一例に過ぎず、電子機器の数やサーバの数が図１のように限定されることはない。
【００１８】
複数の電子機器１１０、１２０、１３０、１４０は、コンピュータ装置によって実現される固定端末や移動端末であってよい。複数の電子機器１１０、１２０、１３０、１４０の例としては、スマートフォン、携帯電話、ナビゲーション、ＰＣ（ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ）、ノート型パンコン、デジタル放送用端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、ＰＭＰ（Ｐｏｒｔａｂｌｅ  Ｍｕｌｔｉｍｅｄｉａ  Ｐｌａｙｅｒ）、タブレットなどがある。一例として、図１では、電子機器１（１１０）の例としてスマートフォンの形状を示しているが、本発明の実施形態では、実質的に無線または有線通信方式を利用してネットワーク１７０を介して他の電子機器１２０、１３０、１４０および／またはサーバ１５０、１６０と通信することのできる多様な機器のうちの１つを意味してよい。
【００１９】
通信方式が限定されることはなく、ネットワーク１７０が含むことのできる通信網（一例として、移動通信網、有線インターネット、無線インターネット、放送網）を活用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク１７０は、ＰＡＮ（ｐｅｒｓｏｎａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＣＡＮ（ｃａｍｐｕｓ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＭＡＮ（ｍｅｔｒｏｐｏｌｉｔａｎ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＢＢＮ（ｂｒｏａｄｂａｎｄ  ｎｅｔｗｏｒｋ）、インターネットなどのネットワークのうちの１つ以上の任意のネットワークを含んでよい。さらに、ネットワーク１７０は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター−バスネットワーク、ツリーまたは階層的（ｈｉｅｒａｒｃｈｉｃａｌ）ネットワークなどを含むネットワークトポロジのうちの任意の１つ以上を含んでもよいが、これらに限定されることはない。
【００２０】
サーバ１５０、１６０それぞれは、複数の電子機器１１０、１２０、１３０、１４０とネットワーク１７０を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供するコンピュータ装置または複数のコンピュータ装置によって実現されてよい。例えば、サーバ１５０は、ネットワーク１７０を介して接続した複数の電子機器１１０、１２０、１３０、１４０に第１サービスを提供するシステムであってよく、サーバ１６０も、ネットワーク１７０を介して接続した複数の電子機器１１０、１２０、１３０、１４０に第２サービスを提供するシステムであってよい。より具体的な例として、サーバ１５０は、第１サービスとして、実行可能な原本圧縮ファイルを保護するための処理によって保護機能が含まれた新たな圧縮ファイルを生成して複数の電子機器１１０、１２０、１３０、１４０に提供するサービスのためのシステムであってよい。また、サーバ１６０は、第２サービスとして、変更された圧縮ファイルの復元のための情報を複数の電子機器１１０、１２０、１３０、１４０に提供するサービスのためのシステムであってよい。
【００２１】
このようなサービスは、ネットワーク環境を説明するための１つの実施形態に過ぎず、ネットワーク環境においてサーバ１５０、１６０それぞれが実際に提供するサービスは、極めて多様であってよい。
【００２２】
図２は、本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。図２では、電子機器に対する例として電子機器１（１１０）の内部構成を、サーバに対する例としてサーバ１５０の内部構成を説明する。他の電子機器１２０、１３０、１４０やサーバ１６０も、上述した電子機器１（１１０）またはサーバ１５０と同一または類似の内部構成を有してよい。
【００２３】
電子機器１（１１０）とサーバ１５０は、メモリ２１１、２２１、プロセッサ２１２、２２２、通信モジュール２１３、２２３、および入力／出力インタフェース２１４、２２４を含んでよい。メモリ２１１、２２１は、コンピュータで読み取り可能な記録媒体であって、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、およびディスクドライブのような永久大容量記憶装置（ｐｅｒｍａｎｅｎｔ  ｍａｓｓ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）を含んでよい。ここで、ＲＯＭとディスクドライブのような永久大容量記憶装置は、メモリ２１１、２２１とは区分される別の永久格納装置として電子機器１（１１０）やサーバ１５０に含まれてもよい。また、メモリ２１１、２２１には、オペレーティングシステムと、少なくとも１つのプログラムコード（一例として、電子機器１（１１０）にインストールされ駆動するブラウザや、特定のサービスを提供するために電子機器１（１１０）にインストールされたアプリケーションなどのためのコード）が格納されてよい。このようなソフトウェア構成要素は、メモリ２１１、２２１とは別のコンピュータで読み取り可能な記録媒体からロードされてよい。このような別のコンピュータで読み取り可能な記録媒体は、フロッピー（登録商標）ドライブ、ディスク、テープ、ＤＶＤ／ＣＤ−ＲＯＭドライブ、メモリカードなどのコンピュータで読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータで読み取り可能な記録媒体ではない通信モジュール２１３、２２３を通じてメモリ２１１、２２１にロードされてもよい。例えば、少なくとも１つのプログラムは、開発者またはアプリケーションのインストールファイルを配布するファイル配布システム（一例として、サーバ１５０）がネットワーク１７０を介して提供するファイルによってインストールされるプログラム（一例として、上述したアプリケーション）に基づいてメモリ２１１、２２１にロードされてよい。
【００２４】
プロセッサ２１２、２２２は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ２１１、２２１または通信モジュール２１３、２２３によって、プロセッサ２１２、２２２に提供されてよい。例えば、プロセッサ２１２、２２２は、メモリ２１１、２２１のような記録装置に格納されたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
【００２５】
通信モジュール２１３、２２３は、ネットワーク１７０を介して電子機器１（１１０）とサーバ１５０とが互いに通信するための機能を提供してもよいし、電子機器１（１１０）および／またはサーバ１５０が他の電子機器（一例として、電子機器２（１２０））または他のサーバ（一例として、サーバ１６０）と通信するための機能を提供してもよい。一例として、電子機器１（１１０）のプロセッサ２１２がメモリ２１１のような記録装置に格納されたプログラムコードにしたがって生成した要求が、通信モジュール２１３の制御にしたがってネットワーク１７０を介してサーバ１５０に伝達されてよい。これとは逆に、サーバ１５０のプロセッサ２２２の制御にしたがって提供される制御信号や命令、コンテンツ、ファイルなどが、通信モジュール２２３とネットワーク１７０を経て電子機器１（１１０）の通信モジュール２１３を通じて電子機器１（１１０）に受信されてもよい。例えば、通信モジュール２１３を通じて受信したサーバ１５０の制御信号や命令、コンテンツ、ファイルなどは、プロセッサ２１２やメモリ２１１に伝達されてよく、コンテンツやファイルなどは、電子機器１（１１０）がさらに含むことのできる格納媒体（上述した永久格納装置）に格納されてよい。
【００２６】
入力／出力インタフェース２１４は、入力／出力装置２１５とのインタフェースのための手段であってよい。例えば、入力装置は、キーボードまたはマウスなどの装置を含んでよく、出力装置は、ディスプレイのような装置を含んでよい。他の例として、入力／出力インタフェース２１４は、タッチスクリーンのように入力と出力のための機能が１つに統合された装置とのインタフェースのための手段であってもよい。入力／出力装置２１５は、電子機器１（１１０）と１つの装置によって構成されてもよい。また、サーバ１５０の入力／出力インタフェース２２４は、サーバ１５０と連結してもよいし、サーバ１５０が含むことのできる入力または出力のための装置（図示せず）とのインタフェースのための手段であってもよい。より具体的な例として、電子機器１（１１０）のプロセッサ２１２は、メモリ２１１にロードされたコンピュータプログラムの命令を処理するにあたり、サーバ１５０や電子機器２（１２０）が提供するデータを利用して構成されるサービス画面やコンテンツが、入力／出力インタフェース２１４を通じてディスプレイに表示されてよい。
【００２７】
また、他の実施形態において、電子機器１（１１０）およびサーバ１５０は、図２の構成要素よりも多くの構成要素を含んでもよい。しかし、大部分の従来技術的構成要素を明確に図に示す必要はない。例えば、電子機器１（１１０）は、上述した入力／出力装置２１５のうちの少なくとも一部を含むように実現されてもよいし、トランシーバ、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）モジュール、カメラ、各種センサ、データベースなどのような他の構成要素をさらに含んでもよい。より具体的な例として、電子機器１（１１０）がスマートフォンである場合、一般的にスマートフォンが含んでいる加速度センサやジャイロセンサ、カメラモジュール、物理的な各種ボタン、タッチパネルを利用したボタン、入力／出力ポート、振動のための振動器などのような多様な構成要素が、電子機器１（１１０）にさらに含まれるように実現されてもよい。
【００２８】
図３は、本発明の一実施形態における、ファイル保護方法の例を示したフローチャートである。本実施形態に係るファイル保護方法は、上述したサーバ１５０のようなコンピュータ装置によって実行されてよい。サーバ１５０のプロセッサ２２２は、メモリ２２１が含むオペレーティングシステムのコードや、少なくとも１つのコンピュータプログラムのコードによる制御命令（ｉｎｓｔｒｕｃｔｉｏｎ）を実行するように実現されてよい。ここで、プロセッサ２２２は、サーバ１５０に格納されたコードが提供する制御命令にしたがってサーバ１５０が図３の実施形態に係るファイル保護方法が含む段階３１０〜３４０を実行するように、サーバ１５０を制御してよい。
【００２９】
段階３１０で、サーバ１５０は、実行可能な原本圧縮ファイルを変更してよい。ここで、実行可能な原本圧縮ファイルは、一例として、ＪＡＲ（Ｊａｖａ  Ａｒｃｈｉｖｅｒ）ファイルのように複数のファイルを含む圧縮ファイルの形態であって、ＥＸＥファイルのように独立して実行可能なファイルであれば制限されることはない。サーバ１５０は、実行可能な原本圧縮ファイルを多様な方法によって変更してよいが、このような原本圧縮ファイルを変更する多様な方法については、以下でさらに詳しく説明する。
【００３０】
段階３２０で、サーバ１５０は、変更された原本圧縮ファイルを復元するための復元情報を生成してよい。復元情報も、原本圧縮ファイルを変更する多様な方法によって多様に生成されてよい。このような復元情報についても、以下でさらに詳しく説明する。
【００３１】
段階３３０で、サーバ１５０は、変更された原本圧縮ファイルおよび復元情報を含む実行可能な新たな圧縮ファイルを生成してよい。このような新たな圧縮ファイルの圧縮を解除することにより、変更された原本圧縮ファイルと復元情報の取得が可能となる。悪意のあるユーザが、変更された原本圧縮ファイルと復元情報を取得することはできても、変更された原本圧縮ファイルの圧縮は解除することがでないし、正確なソースコードを得ることもできないため、復元情報が何であるか、または復元情報を利用して変更された原本圧縮ファイルをどのように復元すればいいのかは知ることができないため、新たな圧縮ファイルからは本来のソースファイルを取得したり分析したりすることはできない。
【００３２】
段階３４０で、サーバ１５０は、新たな圧縮ファイルのファイル名を原本圧縮ファイルのファイル名に変更してよい。上述したように、ＪＡＲファイルは、ジャバ（Ｊａｖａ）プログラムの実行中に遠隔地でＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などを通じてダウンロードされて直ぐに使用可能であるという特徴がある。これは、ダウンロードされなければならないファイルが既に決定されていることを意味しており、サーバ１５０は、提供しなければならない原本圧縮ファイルの代わりに新たな圧縮ファイルを提供するために、新たな圧縮ファイルのファイル名を原本圧縮ファイルのファイル名に変更してよい。例えば、上述した電子機器１（１１０）のようなクライアント側の機器から原本圧縮ファイルが要求された場合、サーバ１５０は、原本圧縮ファイルの代わりに新たな圧縮ファイルを提供することにより、新たな圧縮ファイルを受信したユーザが、原本圧縮ファイルのソースコードを取得あるいは分析できないようにする。新たな圧縮ファイルを利用して原本圧縮ファイルによる機能を実行できるようにするための方法については、以下で詳しく説明する。
【００３３】
実行可能な原本圧縮ファイルを変更する方法は、大きく、解体（ｄｅｃｏｎｓｔｒｕｃｔ）方式とコンテナ（ｃｏｎｔａｉｎｅｒ）方式を含む。解体方式は、原本圧縮ファイルが含む少なくとも１つのクラスファイルを変更することで原本圧縮ファイルを変更する方式であり、コンテナ方式は、原本圧縮ファイル自体を変更する方式である。
【００３４】
図４は、本発明の一実施形態における、解体方式のファイル保護方法の例を示したフローチャートである。図４に示す段階４１０および段階４２０は、原本圧縮ファイルを解体方式によって変更する例であって、図３を参照しながら説明した段階３１０に含まれて実行されてよい。また、図４に示された段階４３０は、図３を参照しながら説明した段階３３０に含まれて実行されてよい。
【００３５】
段階４１０で、サーバ１５０は、原本圧縮ファイルに対する圧縮解除によって原本圧縮ファイルが含む内部ファイルを抽出してよい。上述したように、ＪＡＲファイルのような圧縮ファイルは、複数のファイルを圧縮して生成されるファイルであって、圧縮を解除することで含まれた内部ファイルを抽出してよい。
【００３６】
段階４２０で、サーバ１５０は、抽出された内部ファイルのうちの少なくとも１つのクラスファイルを認識不可能な形態に変更して原本圧縮ファイルを変更してよい。サーバ１５０は、すべてのクラスファイル（一例として、拡張子が「．ｃｌａｓｓ」であるファイル）を確認し、確認されたすべてのクラスファイルのうちの少なくとも１つのクラスファイルを変更してよい。例えば、サーバ１５０は、変更しようとするクラスファイルを認知することができないように、予め設定されたキー（対象キーまたは非対象キー）を利用することで変更しようとするクラスファイルを暗号化するか、または予め設定された方式にしたがって変更しようとするクラスファイルを符号化することにより、原本圧縮ファイルを変更してよい。
【００３７】
このとき、復元情報は、多様な方式によって生成されてよい。例えば、サーバ１５０は、変更されたクラスファイルを復元するようにクライアントを制御するための復元コードを復元情報として直接生成してよい。または、サーバ１５０は、変更されたクラスファイルの変更方式に対応する復元方式を説明するための復元説明情報を復元情報として生成してよい。生成される復元情報は、それ自体でも、悪意のあるユーザが復元情報を分析するまで変更されたクラスファイルを復元できないように防ぐことができる。これだけでなく、以下で説明されるように、復元情報も多様な方式によって保護されてよい。
【００３８】
段階４３０で、サーバ１５０は、変更されたクラスファイル、復元情報、および内部ファイルのうちの少なくとも１つのクラスファイルを除いた残りのファイルを含む新たな圧縮ファイルを生成してよい。言い換えれば、本実施形態に係る新たな圧縮ファイルは、少なくとも１つのクラスファイルが変更された原本圧縮ファイルと復元情報を含んでよい。
【００３９】
図５は、本発明の一実施形態における、コンテナ方式のファイル保護方法の例を示したフローチャートである。図５に示された段階５１０は、原本圧縮ファイルをコンテナ方式によって変更する例であって、図３を参照しながら説明した段階３１０に含まれて実行されてよい。
【００４０】
段階５１０で、サーバ１５０は、原本圧縮ファイルを、予め設定されたキーを利用して暗号化するか、または予め設定された方式にしたがって符号化して原本圧縮ファイルを変更してよい。このように、コンテナ方式は、原本圧縮ファイル自体の認識が不可能となるように変更するための方式であってよく、この場合、変更された原本圧縮ファイルは、圧縮解除自体の実行が不可能となる。
【００４１】
このようなコンテナ方式でも、復元情報は、多様な方式によって生成されてよい。例えば、サーバ１５０は、変更された原本圧縮ファイルを復元するようにクライアントを制御するための復元コードを復元情報として直接生成してよい。または、サーバ１５０は、変更された原本圧縮ファイルの変更方式に対応する復元方式を説明するための復元説明情報を復元情報として生成してよい。この場合、クライアントは、復元説明情報にしたがって変更された原本圧縮ファイルを復元して原本圧縮ファイルを取得するようになる。上述したように、生成される復元情報は、それ自体でも、悪意のあるユーザが復元情報を分析するまで変更された原本圧縮ファイルを復元できないように防ぐことができる。これだけでなく、以下で説明されるように、復元情報も多様な方式によって保護されてよい。
【００４２】
また、解体方式とコンテナ方式の両方が利用されてもよい。例えば、図４の実施形態で説明したように、変更されたクラスファイルを含む新たな圧縮ファイルが生成されたとする。このとき、サーバ１５０は、生成された新たな圧縮ファイルを、予め設定されたキーを利用して暗号化するか、または予め設定された方式にしたがって符号化して変更してよい。また、サーバ１５０は、変更された新たな圧縮ファイルを復元するための追加復元情報を生成してよい。この場合、サーバ１５０は、変更された新たな圧縮ファイルおよび追加復元情報を含む追加圧縮ファイルを生成してよい。言い換えれば、解体方式を利用して生成された新たな圧縮ファイルを、コンテナ方式にしたがって変更した後、変更された新たな圧縮ファイルとこれを復元するための追加復元情報を含む追加圧縮ファイルを生成することが可能となる。このような追加圧縮ファイルは、原本圧縮ファイルの代わりに提供されてよい。このために、追加圧縮ファイルのファイル名が原本圧縮ファイルのファイル名に変更されてよい。例えば、図３の段階３４０において、新たな圧縮ファイルは中間過程の圧縮ファイルであるため、解体方式とコンテナ方式の両方が利用される実施形態において、サーバ１５０は、新たな圧縮ファイルの代わりに追加圧縮ファイルのファイル名を原本圧縮ファイルのファイル名に変更してよい。
【００４３】
図６は、本発明の一実施形態における、解体方式にしたがって実行可能なＪＡＲファイルを変更して新たなＪＡＲファイルを生成する例を示した図である。例えば、サーバ１５０は、実行可能なＪＡＲファイル６１０の圧縮を解除してクラスファイル６２０と残りのファイル６３０を抽出してよい。このとき、サーバ１５０は、抽出されたクラスファイル６２０を変更し、変更されたクラスファイル６４０を生成してよい。上述したように、サーバ１５０は、クラスファイル６２０それぞれを予め設定されたキーによって暗号化するか、または予め設定された方式にしたがって符号化することによってクラスファイル６２０を変更してよい。また、サーバ１５０は、利用された変更方式に対応する復元方式にしたがって復元情報６５０を生成してよい。このとき、サーバ１５０は、変更されたクラスファイル６４０と復元情報６５０、または残りのファイル６３０を含む実行可能な新たなＪＡＲファイル６６０を生成してよい。また、サーバ１５０は、生成された実行可能な新たなＪＡＲファイル６６０のファイル名を実行可能なＪＡＲファイル６１０のファイル名に変更してよく、実行可能なＪＡＲファイル６１０に対する要請にしたがって実行可能な新たなＪＡＲファイル６６０を提供することにより、実行可能なＪＡＲファイル６１０が分析されないように防ぐことが可能となる。一方、実行可能な新たなＪＡＲファイル６６０は、クライアントで実行されるときに、クライアントのメモリに基づいて実行されてよい。このような実行可能な新たなＪＡＲファイル６６０の実行については、以下でさらに詳しく説明する。
【００４４】
一方、図６では、抽出されたクラスファイル６２０すべてを変更する例を説明しているが、実施形態によっては、抽出されたクラスファイル６２０のうちの少なくとも１つのクラスファイルが選択的に変更されてもよい。例えば、実行可能なＪＡＲファイル６１０による機能を実行するために最初に呼び出されるメインクラスのメイン関数が含まれたクラスファイルや主要ソースコードを含んでいるクラスファイルが選択的に変更されてよい。
【００４５】
図７は、本発明の一実施形態における、コンテナ方式にしたがって実行可能なＪＡＲファイルを変更して新たなＪＡＲファイルを生成する例を示した図である。例えば、サーバ１５０は、実行可能なＪＡＲファイル７１０を変更し、変更された実行可能なＪＡＲファイル７２０を生成してよい。より具体的な例として、サーバ１５０は、実行可能なＪＡＲファイル７１０を予め設定されたキーによって暗号化するか、または予め設定された方式にしたがって符号化することにより、変更された実行可能なＪＡＲファイル７２０を生成してよい。変更された実行可能なＪＡＲファイル７２０は、実行または圧縮解除が不可能である。また、サーバ１５０は、実行可能なＪＡＲファイル７１０の変更方式に対応する復元方式にしたがって復元情報７３０を生成してよく、変更された実行可能なＪＡＲファイル７２０と生成された復元情報７３０を含む実行可能な新たなＪＡＲファイル７４０を生成してよい。悪意のあるユーザが実行可能な新たなＪＡＲファイル７４０を圧縮解除することにより、変更された実行可能なＪＡＲファイル７２０と復元情報７３０を取得することはできるが、復元情報７３０を完全に分析するまでは、変更された実行可能なＪＡＲファイル７２０を圧縮解除または実行することができない。このような実行可能な新たなＪＡＲファイル７４０は、ファイル基盤で実行されてよい。このような実行可能な新たなＪＡＲファイル７４０の実行については、以下でさらに詳しく説明する。
【００４６】
また、上述したように、解体方式とコンテナ方式の両方が利用されてもよい。例えば、図６で解体方式によって生成された実行可能な新たなＪＡＲファイル６６０が図７の実行可能なＪＡＲファイル７１０となり、図７のコンテナ方式にしたがって変更され、実行可能な新たなＪＡＲファイル７４０が生成されてよい。このとき、実行可能な新たなＪＡＲファイル７４０のファイル名が、最初の実行可能なＪＡＲファイル６１０のファイル名に変更されてよく、最初の実行可能なＪＡＲファイル６１０に対する要請にしたがって実行可能な新たなＪＡＲファイル７４０が提供されてよい。この場合、図６の実行可能なＪＡＲファイル６１０を得るためには、実行可能な新たなＪＡＲファイル７４０を、復元情報７３０を利用してコンテナ方式にしたがって復元することにより、実行可能な新たなＪＡＲファイル６６０が得られるようになる。また、実行可能な新たなＪＡＲファイル６６０が含む変更されたクラスファイル６４０を、復元情報６５０を利用して解体方式にしたがって復元することにより、最初の実行可能なＪＡＲファイル６１０による機能が実行されてよい。
【００４７】
以下では、生成された新たな圧縮ファイルを実行する過程について説明する。生成された新たな圧縮ファイルは、サーバ１５０で実行されてもよいが、一般的には、サーバ１５０からネットワーク（一例として、上述したネットワーク１７０）を介してクライアント（一例として、電子機器１（１１０））に送信されてよく、クライアントで実行されてよい。
【００４８】
図８は、本発明の一実施形態における、コンテナ方式によるクライアントでのファイル保護方法の例を示したフローチャートである。本実施形態に係るファイル保護方法は、上述した電子機器１（１１０）のようなクライアント側のコンピュータ装置によって実行されてよい。電子機器１（１１０）のプロセッサ２１２は、メモリ２１１が含むオペレーティングシステムのコードや、少なくとも１つのコンピュータプログラムのコードによる制御命令（ｉｎｓｔｒｕｃｔｉｏｎ）を実行するように実現されてよい。ここで、プロセッサ２１２は、電子機器１（１１０）に格納されたコードが提供する制御命令にしたがって電子機器１（１１０）が図８の実施形態に係るファイル保護方法が含む段階８１０〜８６０を実行するように、電子機器１（１１０）を制御してよい。
【００４９】
段階８１０で、電子機器１（１１０）は、実行可能な原本圧縮ファイルをサーバに要請してよい。ここで、サーバは、上述したサーバ１５０に対応してよい。上述したように、サーバ１５０は、原本圧縮ファイルに基づいて新たな圧縮ファイルを生成してよく、新たな圧縮ファイルのファイル名を原本圧縮ファイルのファイル名に変更して格納してよい。サーバ１５０は、電子機器１（１１０）の要請にしたがって新たな圧縮ファイルを電子機器１（１１０）に送信してよい。
【００５０】
段階８２０で、電子機器１（１１０）は、要請にしたがってサーバから実行可能な新たな圧縮ファイルを受信してよい。上述したように、サーバ１５０は、原本圧縮ファイルに対する要請にしたがって原本圧縮ファイルの代わりに新たな圧縮ファイルを送信してよく、電子機器１（１１０）は、サーバ１５０からネットワークを介して送信された新たな圧縮ファイルを受信してよい。
【００５１】
段階８３０で、電子機器１（１１０）は、新たな圧縮ファイルの実行と関連して伝達される因子を抽出してよい。ここで、因子は、原本圧縮ファイルの実行時に原本圧縮ファイルとして伝達される因子を含んでよい。上述したように、ＪＡＲファイルは、ローカル（ｌｏｃａｌ）上における便利な管理はもちろん、ジャバ（Ｊａｖａ）プログラムの実行中に遠隔地でＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などを通じてダウンロードして直ぐに使用可能であるという特徴がある。このとき、既に実行中であるジャバプログラムは、ＪＡＲファイルによる機能の実行時に初期パラメータとなり得る因子をＪＡＲファイルとして伝達してよい。電子機器１（１１０）は、このような初期パラメータに対応する因子を抽出してよい。
【００５２】
段階８４０で、電子機器１（１１０）は、新たな圧縮ファイルが含む復元情報を利用して新たな圧縮ファイルがさらに含む変更された原本圧縮ファイルを復元してよい。原本圧縮ファイルの復元は、新たな圧縮ファイルの実行時にだけなされる。言い換えれば、新たな圧縮ファイルが実行されない場合には、原本圧縮ファイルが変更された状態で新たな圧縮ファイルに含まれているため、悪意のあるユーザが復元情報を分析して変更された原本圧縮ファイルを復元するまでは実行または圧縮解除することができない。これだけでなく、以下で説明するように、復元情報は、多様な方式にしたがって保護されるため、悪意のあるユーザが復元情報を取得したり分析したりできないようにする。
【００５３】
段階８５０で、電子機器１（１１０）は、復元された原本圧縮ファイルを実行して抽出された因子を伝達することにより、原本圧縮ファイルによる機能を実行してよい。このように、原本圧縮ファイルによる機能は、ファイル基盤で行われてよい。伝達された因子は、復元された原本圧縮ファイルが含むメインクラスのメイン関数として伝達されてよく、メイン関数が呼び出されることによって原本圧縮ファイルが実行されてよい。
【００５４】
段階８６０で、電子機器１（１１０）は、機能の終了後に復元された原本圧縮ファイルを除去してよい。このように、原本圧縮ファイルは、新たな圧縮ファイルが実行されるときにだけ復元された後、除去されるため、悪意のあるユーザが原本圧縮ファイルを取得して分析することができないように遮断することができる。これだけでなく、新たな圧縮ファイルが実行されるときにだけ原本圧縮ファイルの取得が可能であるということは、新たな圧縮ファイルに多様な追加保護モジュールを挿入することで復元原本圧縮ファイルを追加的に保護できるということを意味する。
【００５５】
図９は、本発明の一実施形態における、解体方式によるクライアントでのファイル保護方法の例を示したフローチャートである。本実施形態に係るファイル保護方法も、上述した電子機器１（１１０）のようなクライアント側のコンピュータ装置によって実行されてよい。電子機器１（１１０）のプロセッサ２１２は、メモリ２１１が含むオペレーティングシステムのコードや、少なくとも１つのコンピュータプログラムのコードによる制御命令（ｉｎｓｔｒｕｃｔｉｏｎ）を実行するように実現されてよい。ここで、プロセッサ２１２は、電子機器１（１１０）に格納されたコードが提供する制御命令にしたがって電子機器１（１１０）が図９の実施形態に係るファイル保護方法に含まれる段階９１０〜９６０を実行するように、電子機器１（１１０）を制御してよい。
【００５６】
段階９１０で、電子機器１（１１０）は、実行可能な原本圧縮ファイルをサーバに要請してよい。ここで、サーバは、上述したサーバ１５０に対応してよい。上述したように、サーバ１５０は、原本圧縮ファイルに基づいて新たな圧縮ファイルを生成してよく、新たな圧縮ファイルのファイル名を原本圧縮ファイルのファイル名に変更して格納してよい。サーバ１５０は、電子機器１（１１０）の要請にしたがって新たな圧縮ファイルを電子機器１（１１０）に送信してよい。
【００５７】
段階９２０で、電子機器１（１１０）は、要請にしたがってサーバから実行可能な新たな圧縮ファイルを受信してよい。上述したように、サーバ１５０は、原本圧縮ファイルに対する要請にしたがって原本圧縮ファイルの代わりに新たな圧縮ファイルを送信してよく、電子機器１（１１０）は、サーバ１５０からネットワークを介して送信された新たな圧縮ファイルを受信してよい。
【００５８】
段階９３０で、電子機器１（１１０）は、新たな圧縮ファイルの実行と関連して伝達される因子を抽出してよい。ここで、因子は、原本圧縮ファイルの実行時に原本圧縮ファイルとして伝達される因子を含んでよい。上述したように、ＪＡＲファイルは、ローカル（ｌｏｃａｌ）上における便利な管理はもちろん、ジャバ（Ｊａｖａ）プログラムの実行中に遠隔地でＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などを通じてダウンロードして直ぐに使用可能であるという特徴がある。このとき、既に実行中であるジャバプログラムは、ＪＡＲファイルによる機能の実行時に初期パラメータとなり得る因子をＪＡＲファイルとして伝達してよい。電子機器１（１１０）は、このような初期パラメータに対応する因子を抽出してよい。
【００５９】
段階９４０で、電子機器１（１１０）は、新たな圧縮ファイルが含む復元情報を利用して新たな圧縮ファイルがさらに含む変更されたクラスファイルをメモリ上で復元してよい。
【００６０】
段階９５０で、電子機器１（１１０）は、復元されたクラスファイルをメモリ上に積載してよい。このように、クラスファイルの復元はメモリ上でなされ、復元されたクラスファイルもメモリ上に積載されて利用されるため、復元されたクラスファイルは、新たな圧縮ファイルが実行されるときにだけ得られるようになる。復元されたクラスファイルが揮発性格納所であるメモリ上だけに存在するということは、復元されたクラスファイルの分析をより難しくできるということを意味する。また、上述したように、新たな圧縮ファイルが実行されるときにだけクラスファイルが復元されるということは、新たな圧縮ファイルに追加保護モジュールを挿入することで復元されたクラスファイルを追加的に保護できるということを意味する。
【００６１】
段階９６０で、電子機器１（１１０）は、メモリ上に積載された復元されたクラスファイルに含まれたメインクラスのメイン関数を呼び出して抽出された因子を伝達することにより、原本圧縮ファイルによる機能を実行してよい。
【００６２】
このように、新たな圧縮ファイルは、原本圧縮ファイルが圧縮解除あるいは実行されたり、またはソースコードが抽出されて分析されたりすることを遮断することができ、変更された原本圧縮ファイルの復元を新たな圧縮ファイルの実行中に制限することができるため、追加的な保護が可能となる。
【００６３】
以下では、原本圧縮ファイルをより複雑に変更することにより、悪意のあるユーザが復元情報を取得したとしても、復元方式の分析を難しくするための方法と、復元情報自体をより安全に保護するための方法について説明する。
【００６４】
図１０は、本発明の一実施形態における、解体方式で原本圧縮ファイルを変更する例を示した図である。図１０の段階１０１０〜１０４０は、図３を参照しながら説明した段階３１０に含まれ、サーバ１５０によって実行されてよい。
【００６５】
段階１０１０で、サーバ１５０は、原本圧縮ファイルに対する圧縮解除によって原本圧縮ファイルが含む内部ファイルを抽出してよい。上述したように、ＪＡＲファイルのような圧縮ファイルは、複数のファイルを圧縮して生成されるファイルであって、圧縮解除によって含まれた内部ファイルを抽出してよい。
【００６６】
段階１０２０で、サーバ１５０は、抽出された内部ファイルのうちの少なくとも１つのクラスファイルを認識不可能な形態に変更して原本圧縮ファイルを変更してよい。サーバ１５０は、すべてのクラスファイル（一例として、拡張子が「．ｃｌａｓｓ」であるファイル）を確認し、確認されたすべてのクラスファイルのうちの少なくとも１つのクラスファイルを変更してよい。例えば、サーバ１５０は、変更しようとするクラスファイルを認知することができないように、予め設定されたキー（対象キーまたは非対称キー）を利用して変更しようとするクラスファイルを暗号化するか、または予め設定された方式にしたがって変更しようとするクラスファイルを符号化することによって原本圧縮ファイルを変更してよい。
【００６７】
段階１０３０で、サーバ１５０は、変更されたクラスファイルを圧縮してよい。このような変更されたクラスファイルの圧縮により、クラスファイルのサイズを減らすことができると同時に、クラスファイルに対するより複雑な変更を可能にする。
【００６８】
段階１０４０で、サーバ１５０は、段階１０２０および段階１０３０を予め設定された回数だけ繰り返し実行してよい。例えば、暗号化されたクラスファイルを復号化するために必要となるキーをクライアントが取得したとしても、このような暗号化と圧縮の過程が繰り返された回数が分からなかったり、または変更されたクラスファイルの圧縮方式が分からなかったりする場合には、変更されたクラスファイルを復元することができない。このような変更と圧縮の回数、さらに圧縮方式などに関する情報は、復元情報に基づいてクライアントに提供されてよいが、以下で説明するように、復元情報は多様な方法によって保護されてよく、または復元情報を取得できたとしても、その意味の分析は難い。例えば、特定の項目として提供される上述した予め設定された回数が何を意味するかを知るためには、クライアントで復元情報がどのように利用されるかを確認しなければならないが、このような復元情報がどのように利用されるかに関する情報は、新たな圧縮ファイルが実行されるときにだけ得ることができる。ファイル自体を分析してコードを分析することとファイルの実行中にメモリを分析することはまったく異なる問題であり、本発明の実施形態によれば、原本圧縮ファイルの圧縮解除や実行、または原本圧縮ファイルのソースコードの取得および分析が遮断可能であることが分かる。
【００６９】
図１１は、本発明の一実施形態における、コンテナ方式で原本圧縮ファイルを変更する例を示した図である。図１１の段階１１１０〜１１３０は、図３を参照しながら説明した段階３１０に含まれ、サーバ１５０によって実行されてよい。
【００７０】
段階１１１０で、サーバ１５０は、原本圧縮ファイルを予め設定されたキーによって暗号化するか、または予め設定された方式にしたがって符号化することにより、原本圧縮ファイルを認識不可能な形態に変更してよい。上述したように、コンテナ方式は、原本圧縮ファイル自体を認識することができないように変更するための方式であり、この場合、変更された原本圧縮ファイルは、圧縮解除自体の実行が不可能となる。
【００７１】
段階１１２０で、サーバ１５０は、変更された原本圧縮ファイルを圧縮してよい。このような変更された原本圧縮ファイルを圧縮することにより、圧縮ファイルのサイズを減らすことができると同時に、圧縮ファイルに対するより複雑な変更が可能となる。
【００７２】
段階１１３０で、サーバ１５０は、段階１１１０および段階１１２０を予め設定された回数だけ繰り返し実行してよい。上述したように、クライアントが圧縮方式や上述した予め設定された回数が分からない場合には、暗号化された原本圧縮ファイルを復号化するためのキーを取得したとしても、原本圧縮ファイルを得ることはできない。
【００７３】
このような場合でも、悪意のあるユーザが、新たな圧縮ファイルの実行中にメモリを分析して原本圧縮ファイルを取得できてしまうこともある。
【００７４】
図１２は、本発明の一実施形態における、復元情報を保護する方法の例を示した図である。復元情報１２１０は、上述した多様な実施形態における復元情報に対応してよい。
【００７５】
一実施形態において、復元情報１２１０は、変更された原本圧縮ファイルを本来の原本圧縮ファイルに復元するための復元コード、または原本圧縮ファイルの変更方式に対応する復元方式を説明する復元方式情報を含んでよい。このとき、復元情報１２１０は、暗号化および／または符号化によって変更されてよく、暗号化および／または符号化された状態で新たな圧縮ファイル１２２０に含まれてよい。例えば、復元情報は、新たな圧縮ファイル１２２０が含むクラスファイル内部のコードの一部分として含まれてよい。他の例として、復元情報は、ファイルの形態で生成されて、新たな圧縮ファイル１２２０内部の別のファイルとして含まれてもよい。このとき、暗号化および／または符号化された復元情報を復元するための関連情報は、クライアント、新たな圧縮ファイル１２２０、またはサーバ１２３０に格納されてよい。このような関連情報がクライアントや新たな圧縮ファイル１２２０に格納されていたとしても、悪意のあるユーザによる原本圧縮ファイルの取得がより困難になるということは、当業者であれば容易に理解することができるであろう。また、関連情報がサーバ１２３０に格納される場合、クライアントは、提供された新たな圧縮ファイル１２２０がクライアントで実行されるときに、サーバ１２３０に暗号化および／または符号化された復元情報を復元するための関連情報を要請してよい。このとき、サーバ１２３０は、新たな圧縮ファイル１２２０または新たな圧縮ファイル１２２０が含む保護モジュールが現在実行中であるかを判断し、新たな圧縮ファイル１２２０または保護モジュールが現在実行中の場合にだけ関連情報をクライアントに提供してよい。ここで、サーバ１２３０は、上述したサーバ１５０や、サーバ１５０とは異なる他のサーバであってよい。
【００７６】
他の実施形態において、復元情報１２１０は、サーバ１２３０への接続情報だけを含んでもよい。例えば、上述した復元コードや復元方式情報は、サーバ１２３０にそのままあるいは暗号化および／または符号化されて格納されてよい。このとき、クライアントは、復元情報１２１０として新たな圧縮ファイル１２２０に含まれた接続情報を利用してサーバ１２３０に接続して上述した復元コードや復元方式情報を要請してよく、サーバ１２３０は、新たな圧縮ファイル１２２０または保護モジュールの実行有無に基づいて復元コードや復元方式情報をクライアントに提供してよい。復元コードや復元方式情報が暗号化および／または符号化されている場合、サーバ１２３０は、暗号化および／または符号化されている復元コードや復元方式情報をクライアントに送信してよく、クライアントは、サーバ１５０と予め設定されている方式にしたがって復元コードや復元方式情報を復元してよい。例えば、サーバ１５０とクライアントが安全な方法にしたがって共有した対称キーによって暗号化された復元コードが、クライアントで共有された対称キーとして復号化されてよい。
【００７７】
このように、本発明の実施形態によると、ＪＡＲファイルのように実行可能な圧縮ファイルに対する保護技術を適用するにあたり、保護しようとする実行可能な圧縮ファイルを再びビルドする必要がなく既存にビルドされた実行可能な圧縮ファイルに容易に適用することができ、実行可能な圧縮ファイルの内容が把握された後にクラスファイルが抽出されてデコンパイルされるという一連の過程の試行を不可能にし、最初から実行可能な圧縮ファイル自体の内容を把握できないように遮断することができる。
【００７８】
悪意のあるユーザは、新たな圧縮ファイルからは復元された状態の原本圧縮ファイルを直ぐに得ることはできない。言い換えれば、原本圧縮ファイルを得ようとする悪意のあるユーザが、新たな圧縮ファイルが実行である状態でメモリを分析することによって原本圧縮ファイルの取得が可能となるように強制することができる。しかし、新たな圧縮ファイルは、ファイルの実行中に保護モジュールを実行することでメモリやファイルの保護を可能にする周知の多様な従来技術によって保護されることができるため、悪意のあるユーザが原本圧縮ファイルにアクセスすることを遮断できるようになる。
【００７９】
上述したシステムまたは装置は、ハードウェア構成要素、ソフトウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ＡＬＵ（ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）、デジタル信号プロセッサ、マイクロコンピュータ、ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、ＰＬＵ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｕｎｉｔ）、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、１つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム（ＯＳ）および前記ＯＳ上で実行される１つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してもよい。理解の便宜のために、１つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素および／または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは１つのプロセッサおよび１つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
【００８０】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの１つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび／またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置、コンピュータ格納媒体または装置に永久的または一時的に具現化されてもよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で格納されても実行されてもよい。ソフトウェアおよびデータは、１つ以上のコンピュータで読み取り可能な記録媒体に格納されてもよい。
【００８１】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータで読み取り可能な媒体に記録されてよい。前記コンピュータで読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでよい。前記媒体に記録されるプログラム命令は、実施形態のために特別に設計されて構成されたものであってもよいし、コンピュータソフトウェア当業者に公知な使用可能なものであってもよい。コンピュータで読み取り可能な記録媒体の例としては、ハードディスク、フロッピー（登録商標）ディスク、および磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光媒体、フロプティカルディスク（ｆｌｏｐｔｉｃａｌ  ｄｉｓｋ）のような光磁気媒体、およびＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を格納して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。
【００８２】
以上のように、実施形態を、限定された実施形態と図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ／あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
【００８３】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
【符号の説明】
【００８４】
１１０、１２０、１３０、１４０：電子機器
１５０、１６０：サーバ
１７０：ネットワーク
【図１】
2019021310.tif 000003
【図２】
2019021310.tif 000004
【図３】
2019021310.tif 000005
【図４】
2019021310.tif 000006
【図５】
2019021310.tif 000007
【図６】
2019021310.tif 000008
【図７】
2019021310.tif 000009
【図８】
2019021310.tif 000010
【図９】
2019021310.tif 000011
【図１０】
2019021310.tif 000012
【図１１】
2019021310.tif 000013
【図１２】
2019021310.tif 000014