(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-12
(45)【発行日】2022-09-21
(54)【発明の名称】実行可能な圧縮ファイルを保護するためのファイル保護方法およびシステム
(51)【国際特許分類】
G06F 21/14 20130101AFI20220913BHJP
G06F 16/174 20190101ALI20220913BHJP
G06F 21/62 20130101ALI20220913BHJP
【FI】
G06F21/14
G06F16/174
G06F21/62 309
(21)【出願番号】P 2018133758
(22)【出願日】2018-07-13
【審査請求日】2021-07-08
(31)【優先権主張番号】10-2017-0091867
(32)【優先日】2017-07-20
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】321003371
【氏名又は名称】LINE株式会社
(74)【代理人】
【識別番号】110003199
【氏名又は名称】弁理士法人高田・高橋国際特許事務所
(72)【発明者】
【氏名】チョン・サンミン
(72)【発明者】
【氏名】シム・ミンヨン
(72)【発明者】
【氏名】チョン・サンフン
(72)【発明者】
【氏名】チョン・ミョンジュ
(72)【発明者】
【氏名】ハン・グァンヒ
(72)【発明者】
【氏名】イム・ソンヒョン
(72)【発明者】
【氏名】イム・ソンヨル
(72)【発明者】
【氏名】ヘオ・ドンヨン
【審査官】小林 秀和
(56)【参考文献】
【文献】米国特許出願公開第2004/0039926(US,A1)
【文献】特開2006-350829(JP,A)
【文献】特開2000-259456(JP,A)
【文献】特開2002-351709(JP,A)
【文献】特開2009-104250(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/14
G06F 16/174
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
コンピュータ装置によって実行されるファイル保護方法であって、
前記コンピュータ装置により、実行可能な原本圧縮ファイルを変更
して中間ファイルを生成する段階、
前記コンピュータ装置により、前記
中間ファイルから前記原本圧縮ファイルを復元するための復元情報を生成する段階、
前記コンピュータ装置により、前記
中間ファイルおよび前記復元情報を含む実行可能な新たな圧縮ファイルを生成する段階、および
前記コンピュータ装置により、前記新たな圧縮ファイルのファイル名を前記原本圧縮ファイルのファイル名に変更する段階
を含
み、
前記中間ファイルを生成する段階は、
前記コンピュータ装置により、前記原本圧縮ファイルに対する圧縮解除によって前記原本圧縮ファイルが含む内部ファイルを抽出する第1段階、
前記コンピュータ装置により、前記抽出された内部ファイルのうちの少なくとも1つのクラスファイルを認識不可能な形態に変更する第2段階、
前記コンピュータ装置により、前記変更されたクラスファイルを圧縮する第3段階、および
前記コンピュータ装置により、前記第2段階および前記第3段階を予め設定された回数だけ繰り返し実行する第4段階
を含み、
前記新たな圧縮ファイルを生成する段階は、
前記変更されたクラスファイルが圧縮されたファイル、前記復元情報、および前記内部ファイルのうちの前記第2段階、前記第3段階および前記第4段階の対象のクラスファイルを除いた残りのファイルを含む新たな圧縮ファイルを生成することを特徴とする、ファイル保護方法。
【請求項2】
前記コンピュータ装置により、前記変更されたクラスファイル
が圧縮されたファイルおよび前記復元情報を含む新たな圧縮ファイルを、予め設定されたキーを利用して暗号化するか、または予め設定された方式にしたがって符号化して変更する段階、
前記コンピュータ装置により、前記変更された新たな圧縮ファイルを復元するための追加復元情報を生成する段階、および
前記コンピュータ装置により、前記変更された新たな圧縮ファイルおよび前記追加復元情報を含む追加圧縮ファイルを生成する段階
をさらに含み、
前記新たな圧縮ファイルのファイル名を前記原本圧縮ファイルのファイル名に変更する段階は、
前記新たな圧縮ファイルのファイル名の代わりに、前記追加圧縮ファイルのファイル名を前記原本圧縮ファイルのファイル名に変更することを特徴とする、請求項
1に記載のファイル保護方法。
【請求項3】
前記コンピュータ装置により、前記原本圧縮ファイルに対するクライアントの要請にしたがって前記新たな圧縮ファイルを前記クライアントに提供する段階
をさらに含み、
前記クライアントで前記新たな圧縮ファイルの実行に応答し、前記クライアント
のコンピュータ装置が、
前記新たな圧縮ファイルの実行と関連して伝達される因子を抽出し、
前記新たな圧縮ファイルが含む前記復元情報を利用して前記変更されたクラスファイルを前記クライアントのメモリ上で復元し、
前記復元されたクラスファイルを前記クライアントのメモリ上に積載し、
前記メモリ上に積載された前記復元されたクラスファイルに含まれたメインクラスのメイン関数を呼び出して前記抽出された因子を伝達することにより、前記原本圧縮ファイルによる機能を実行すること
を特徴とする、請求項
1に記載のファイル保護方法。
【請求項4】
前記コンピュータ装置により、前記原本圧縮ファイルに対するクライアントの要請にしたがって前記新たな圧縮ファイルを前記クライアントに提供する段階
をさらに含み、
前記クライアントで前記新たな圧縮ファイルの実行に応答し、前記クライアント
のコンピュータ装置が、
前記新たな圧縮ファイルの実行と関連して伝達される因子を抽出し、
前記新たな圧縮ファイルが含む前記復元情報を利用して前記
中間ファイルから前記原本圧縮ファイルを復元し、
前記復元された原本圧縮ファイルを実行して前記抽出された因子を伝達することにより、前記原本圧縮ファイルによる機能を実行し、
前記機能の終了後に前記復元された原本圧縮ファイルを除去すること
を特徴とする、請求項1に記載のファイル保護方法。
【請求項5】
前記復元情報を生成する段階は、
前記
中間ファイルを本来の原本圧縮ファイルに復元するための復元コードを生成するか、前記原本圧縮ファイルの変更方式に対応する復元方式を説明する復元方式情報を前記復元情報として生成することを特徴とする、請求項1に記載のファイル保護方法。
【請求項6】
前記新たな圧縮ファイルを生成する段階は、
前記復元情報を、キーを利用して暗号化するか、予め設定された方式にしたがって符号化して前記新たな圧縮ファイル内部の別のファイルに含ませるか、前記新たな圧縮ファイル内部のクラスファイル内部に含ませることを特徴とする、請求項1に記載のファイル保護方法。
【請求項7】
前記復元情報を生成する段階は、
前記コンピュータ装置により、前記
中間ファイルを本来の原本圧縮ファイルに復元するための復元コードを生成するか、前記原本圧縮ファイルの変更方式に対応する復元方式を説明する復元方式情報を生成する段階、
前記コンピュータ装置により、前記復元コードまたは前記復元方式情報を予め設定されたサーバに格納する段階、および
前記コンピュータ装置により、前記新たな圧縮ファイルの実行時に前記予め設定されたサーバに接続して前記復元コードまたは前記復元方式情報を取得するための接続情報を前記復元情報として生成する段階
を含むことを特徴とする、請求項1に記載のファイル保護方法。
【請求項8】
請求項1~
7のうちのいずれか一項に記載の方法をコンピュータに実行させるためのプログラムが記録されていることを特徴とする、コンピュータで読み取り可能な記録媒体。
【請求項9】
コンピュータと結合して請求項1~
7のうちのいずれか一項に記載の方法をコンピュータに実行させるためのコンピュータで読み取り可能な記録媒体に格納された、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
以下の説明は、実行可能な圧縮ファイルを保護するためのファイル保護方法およびシステム、コンピュータ装置と結合してファイル保護方法を実行させるためにコンピュータで読み取り可能な記録媒体に格納されたコンピュータプログラムと記録媒体に関する。
【背景技術】
【0002】
JAR(Java Archiver)は、クラスファイルを効率的に配布するために多数のクラスファイルを1つにまとめて単一ファイルとして生成するフォーマットであって、JARファイルは、ローカル(local)上での便利な管理はもちろん、ジャバ(Java)プログラムの実行中には、遠隔地でHTTP(Hyper Text Transfer Protocol)などを通じてダウンロードして直ぐに使用することができるという特徴がある。例えば、特許文献1は、ジャバアップルを含むJARファイルの生成方法について開示している。
【0003】
このように、ジャバクラスファイルと関連するファイルを1つにまとめたJARファイルは、ZIPファイルフォーマットによって構成された圧縮ファイルであるため、JARファイルの内部に含まれた内容を誰でも簡単に確認できてしまうという特性がある。例えば、JARファイルに含まれているクラスファイルの場合は、デコンパイラを利用してソースコード形態で抽出可能であるが、結局これは、サーバ基盤で作動するJARファイルではなくクライアントに配布されて独立的に実行可能なJARファイルの場合には盗用または悪用される恐れがあることから、保安性が低いという問題がある。
【0004】
このために、一部の従来技術では、悪意のあるユーザによって抽出されたソースコードが簡単に認識されないように、クラスと内部変数の名称を意味のないものに置換した後にJARファイルをビルドすることにより、JARファイルが含むクラスファイルがデコンパイルされたとしても、ソースコードを分析するのに時間がかかるようにした。
【0005】
しかし、このような従来技術は、ソースコードの分析にかかる時間を延ばすだけで、JARファイルに含まれている内部の確認を根本的に遮断したり、JARファイルからクラスファイルを抽出してデコンパイルする過程自体を遮断したりすることはできていない。さらに、上述したような従来技術は、JARファイルのビルド前に実行されなければならないため、保護したい内容を変更するたびに新たなビルド過程を踏まなければならない上に、ソースコードが分析されてJARファイルが盗用または悪用される可能性も依然残っている。
【先行技術文献】
【特許文献】
【0006】
【文献】韓国公開特許第10-2007-0018956号
【発明の概要】
【発明が解決しようとする課題】
【0007】
JARファイルのように実行可能な圧縮ファイルに対する保護技術を適用するにあたり、保護しようとする実行可能な圧縮ファイルを再びビルドする必要なく既存にビルドされた実行可能な圧縮ファイルに容易に適用することができ、実行可能な圧縮ファイルの内容が把握された後にクラスファイルが抽出されてデコンパイルされるという一連の過程の試行を不可能にし、最初から実行可能な圧縮ファイル自体の内容を把握できないように遮断することができるファイル保護方法およびシステム、コンピュータ装置と結合してファイル保護方法を実行させるためにコンピュータで読み取り可能な記録媒体に格納されたコンピュータプログラムと記録媒体を提供する。
【課題を解決するための手段】
【0008】
実行可能な原本圧縮ファイルを変更する段階、前記変更された原本圧縮ファイルを復元するための復元情報を生成する段階、前記変更された原本圧縮ファイルおよび前記復元情報を含む実行可能な新たな圧縮ファイルを生成する段階、および前記新たな圧縮ファイルのファイル名を前記原本圧縮ファイルのファイル名に変更する段階を含むことを特徴とする、ファイル保護方法を提供する。
【0009】
実行可能な原本圧縮ファイルをサーバに要請する段階、前記要請にしたがって前記サーバから実行可能な新たな圧縮ファイルを受信する段階、前記新たな圧縮ファイルの実行と関連して伝達される因子を抽出する段階、前記新たな圧縮ファイルが含む復元情報を利用して前記新たな圧縮ファイルがさらに含む変更された原本圧縮ファイルを復元する段階、前記復元された原本圧縮ファイルを実行して前記抽出された因子を伝達することにより、前記原本圧縮ファイルによる機能を実行する段階、および前記機能の終了後に前記復元された原本圧縮ファイルを除去する段階を含むことを特徴とする、ファイル保護方法を提供する。
【0010】
実行可能な原本圧縮ファイルをサーバに要請する段階、前記要請にしたがって前記サーバから実行可能な新たな圧縮ファイルを受信する段階、前記新たな圧縮ファイルの実行と関連して伝達される因子を抽出する段階、前記新たな圧縮ファイルが含む復元情報を利用して前記新たな圧縮ファイルがさらに含む変更されたクラスファイルをメモリ上で復元する段階、前記復元されたクラスファイルをメモリ上に積載する段階、および前記メモリ上に積載された前記復元されたクラスファイルに含まれたメインクラスのメイン関数を呼び出して前記抽出された因子を伝達することにより、前記原本圧縮ファイルによる機能を実行する段階を含むことを特徴とする、ファイル保護方法を提供する。
【0011】
前記ファイル保護方法をコンピュータに実行させるためのプログラムが記録されていることを特徴とする、コンピュータで読み取り可能な記録媒体を提供する。
【0012】
コンピュータと結合して前記ファイル保護方法をコンピュータに実行させるためのコンピュータで読み取り可能な記録媒体に格納された、コンピュータプログラムを提供する。
【発明の効果】
【0013】
JARファイルのように実行可能な圧縮ファイルに対する保護技術を適用するにあたり、保護しようとする実行可能な圧縮ファイルを再びビルドする必要なく既存にビルドされた実行可能な圧縮ファイルに容易に適用することができ、実行可能な圧縮ファイルの内容が把握された後にクラスファイルが抽出されてデコンパイルされるという一連の過程の試行を不可能にし、最初から実行可能な圧縮ファイル自体の内容を把握できないように遮断することができる。
【図面の簡単な説明】
【0014】
【
図1】本発明の一実施形態における、ネットワーク環境の例を示した図である。
【
図2】本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。
【
図3】本発明の一実施形態における、ファイル保護方法の例を示したフローチャートである。
【
図4】本発明の一実施形態における、解体方式のファイル保護方法の例を示したフローチャートである。
【
図5】本発明の一実施形態における、コンテナ方式のファイル保護方法の例を示したフローチャートである。
【
図6】本発明の一実施形態における、解体方式にしたがって実行可能なJARファイルを変更して新たなJARファイルを生成する例を示した図である。
【
図7】本発明の一実施形態における、コンテナ方式にしたがって実行可能なJARファイルを変更して新たなJARファイルを生成する例を示した図である。
【
図8】本発明の一実施形態における、コンテナ方式によるクライアントでのファイル保護方法の例を示したフローチャートである。
【
図9】本発明の一実施形態における、解体方式によるクライアントでのファイル保護方法の例を示したフローチャートである。
【
図10】本発明の一実施形態における、解体方式で原本圧縮ファイルを変更する例を示した図である。
【
図11】本発明の一実施形態における、コンテナ方式で原本圧縮ファイルを変更する例を示した図である。
【
図12】本発明の一実施形態における、復元情報を保護する方法の例を示した図である。
【発明を実施するための形態】
【0015】
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
【0016】
本発明の実施形態に係るファイル保護システムは、以下で説明される電子機器またはサーバによって実現されてよく、本発明の実施形態に係るファイル保護方法は、このような電子機器またはサーバによって実行されてよい。例えば、電子機器やサーバには、本発明の一実施形態に係るコンピュータプログラムがインストールおよび駆動されてよく、電子機器やサーバは、駆動するコンピュータプログラムの制御にしたがって実行可能な圧縮ファイルを保護するためのファイル保護方法を実行してよい。このようなコンピュータプログラムは、電子機器やサーバと結合してファイル保護方法を実行させるためにコンピュータで読み取り可能な記録媒体に格納されてよい。
【0017】
図1は、本発明の一実施形態における、ネットワーク環境の例を示した図である。
図1のネットワーク環境は、複数の電子機器110、120、130、140、複数のサーバ150、160、およびネットワーク170を含む例を示している。このような
図1は、発明の説明のための一例に過ぎず、電子機器の数やサーバの数が
図1のように限定されることはない。
【0018】
複数の電子機器110、120、130、140は、コンピュータ装置によって実現される固定端末や移動端末であってよい。複数の電子機器110、120、130、140の例としては、スマートフォン、携帯電話、ナビゲーション、PC(personal computer)、ノート型パンコン、デジタル放送用端末、PDA(Personal Digital Assistant)、PMP(Portable Multimedia Player)、タブレットなどがある。一例として、
図1では、電子機器1(110)の例としてスマートフォンの形状を示しているが、本発明の実施形態では、実質的に無線または有線通信方式を利用してネットワーク170を介して他の電子機器120、130、140および/またはサーバ150、160と通信することのできる多様な機器のうちの1つを意味してよい。
【0019】
通信方式が限定されることはなく、ネットワーク170が含むことのできる通信網(一例として、移動通信網、有線インターネット、無線インターネット、放送網)を活用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク170は、PAN(personal area network)、LAN(local area network)、CAN(campus area network)、MAN(metropolitan area network)、WAN(wide area network)、BBN(broadband network)、インターネットなどのネットワークのうちの1つ以上の任意のネットワークを含んでよい。さらに、ネットワーク170は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター-バスネットワーク、ツリーまたは階層的(hierarchical)ネットワークなどを含むネットワークトポロジのうちの任意の1つ以上を含んでもよいが、これらに限定されることはない。
【0020】
サーバ150、160それぞれは、複数の電子機器110、120、130、140とネットワーク170を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供するコンピュータ装置または複数のコンピュータ装置によって実現されてよい。例えば、サーバ150は、ネットワーク170を介して接続した複数の電子機器110、120、130、140に第1サービスを提供するシステムであってよく、サーバ160も、ネットワーク170を介して接続した複数の電子機器110、120、130、140に第2サービスを提供するシステムであってよい。より具体的な例として、サーバ150は、第1サービスとして、実行可能な原本圧縮ファイルを保護するための処理によって保護機能が含まれた新たな圧縮ファイルを生成して複数の電子機器110、120、130、140に提供するサービスのためのシステムであってよい。また、サーバ160は、第2サービスとして、変更された圧縮ファイルの復元のための情報を複数の電子機器110、120、130、140に提供するサービスのためのシステムであってよい。
【0021】
このようなサービスは、ネットワーク環境を説明するための1つの実施形態に過ぎず、ネットワーク環境においてサーバ150、160それぞれが実際に提供するサービスは、極めて多様であってよい。
【0022】
図2は、本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。
図2では、電子機器に対する例として電子機器1(110)の内部構成を、サーバに対する例としてサーバ150の内部構成を説明する。他の電子機器120、130、140やサーバ160も、上述した電子機器1(110)またはサーバ150と同一または類似の内部構成を有してよい。
【0023】
電子機器1(110)とサーバ150は、メモリ211、221、プロセッサ212、222、通信モジュール213、223、および入力/出力インタフェース214、224を含んでよい。メモリ211、221は、コンピュータで読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永久大容量記憶装置(permanent mass storage device)を含んでよい。ここで、ROMとディスクドライブのような永久大容量記憶装置は、メモリ211、221とは区分される別の永久格納装置として電子機器1(110)やサーバ150に含まれてもよい。また、メモリ211、221には、オペレーティングシステムと、少なくとも1つのプログラムコード(一例として、電子機器1(110)にインストールされ駆動するブラウザや、特定のサービスを提供するために電子機器1(110)にインストールされたアプリケーションなどのためのコード)が格納されてよい。このようなソフトウェア構成要素は、メモリ211、221とは別のコンピュータで読み取り可能な記録媒体からロードされてよい。このような別のコンピュータで読み取り可能な記録媒体は、フロッピー(登録商標)ドライブ、ディスク、テープ、DVD/CD-ROMドライブ、メモリカードなどのコンピュータで読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータで読み取り可能な記録媒体ではない通信モジュール213、223を通じてメモリ211、221にロードされてもよい。例えば、少なくとも1つのプログラムは、開発者またはアプリケーションのインストールファイルを配布するファイル配布システム(一例として、サーバ150)がネットワーク170を介して提供するファイルによってインストールされるプログラム(一例として、上述したアプリケーション)に基づいてメモリ211、221にロードされてよい。
【0024】
プロセッサ212、222は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ211、221または通信モジュール213、223によって、プロセッサ212、222に提供されてよい。例えば、プロセッサ212、222は、メモリ211、221のような記録装置に格納されたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
【0025】
通信モジュール213、223は、ネットワーク170を介して電子機器1(110)とサーバ150とが互いに通信するための機能を提供してもよいし、電子機器1(110)および/またはサーバ150が他の電子機器(一例として、電子機器2(120))または他のサーバ(一例として、サーバ160)と通信するための機能を提供してもよい。一例として、電子機器1(110)のプロセッサ212がメモリ211のような記録装置に格納されたプログラムコードにしたがって生成した要求が、通信モジュール213の制御にしたがってネットワーク170を介してサーバ150に伝達されてよい。これとは逆に、サーバ150のプロセッサ222の制御にしたがって提供される制御信号や命令、コンテンツ、ファイルなどが、通信モジュール223とネットワーク170を経て電子機器1(110)の通信モジュール213を通じて電子機器1(110)に受信されてもよい。例えば、通信モジュール213を通じて受信したサーバ150の制御信号や命令、コンテンツ、ファイルなどは、プロセッサ212やメモリ211に伝達されてよく、コンテンツやファイルなどは、電子機器1(110)がさらに含むことのできる格納媒体(上述した永久格納装置)に格納されてよい。
【0026】
入力/出力インタフェース214は、入力/出力装置215とのインタフェースのための手段であってよい。例えば、入力装置は、キーボードまたはマウスなどの装置を含んでよく、出力装置は、ディスプレイのような装置を含んでよい。他の例として、入力/出力インタフェース214は、タッチスクリーンのように入力と出力のための機能が1つに統合された装置とのインタフェースのための手段であってもよい。入力/出力装置215は、電子機器1(110)と1つの装置によって構成されてもよい。また、サーバ150の入力/出力インタフェース224は、サーバ150と連結してもよいし、サーバ150が含むことのできる入力または出力のための装置(図示せず)とのインタフェースのための手段であってもよい。より具体的な例として、電子機器1(110)のプロセッサ212は、メモリ211にロードされたコンピュータプログラムの命令を処理するにあたり、サーバ150や電子機器2(120)が提供するデータを利用して構成されるサービス画面やコンテンツが、入力/出力インタフェース214を通じてディスプレイに表示されてよい。
【0027】
また、他の実施形態において、電子機器1(110)およびサーバ150は、
図2の構成要素よりも多くの構成要素を含んでもよい。しかし、大部分の従来技術的構成要素を明確に図に示す必要はない。例えば、電子機器1(110)は、上述した入力/出力装置215のうちの少なくとも一部を含むように実現されてもよいし、トランシーバ、GPS(Global Positioning System)モジュール、カメラ、各種センサ、データベースなどのような他の構成要素をさらに含んでもよい。より具体的な例として、電子機器1(110)がスマートフォンである場合、一般的にスマートフォンが含んでいる加速度センサやジャイロセンサ、カメラモジュール、物理的な各種ボタン、タッチパネルを利用したボタン、入力/出力ポート、振動のための振動器などのような多様な構成要素が、電子機器1(110)にさらに含まれるように実現されてもよい。
【0028】
図3は、本発明の一実施形態における、ファイル保護方法の例を示したフローチャートである。本実施形態に係るファイル保護方法は、上述したサーバ150のようなコンピュータ装置によって実行されてよい。サーバ150のプロセッサ222は、メモリ221が含むオペレーティングシステムのコードや、少なくとも1つのコンピュータプログラムのコードによる制御命令(instruction)を実行するように実現されてよい。ここで、プロセッサ222は、サーバ150に格納されたコードが提供する制御命令にしたがってサーバ150が
図3の実施形態に係るファイル保護方法が含む段階310~340を実行するように、サーバ150を制御してよい。
【0029】
段階310で、サーバ150は、実行可能な原本圧縮ファイルを変更してよい。ここで、実行可能な原本圧縮ファイルは、一例として、JAR(Java Archiver)ファイルのように複数のファイルを含む圧縮ファイルの形態であって、EXEファイルのように独立して実行可能なファイルであれば制限されることはない。サーバ150は、実行可能な原本圧縮ファイルを多様な方法によって変更してよいが、このような原本圧縮ファイルを変更する多様な方法については、以下でさらに詳しく説明する。
【0030】
段階320で、サーバ150は、変更された原本圧縮ファイルを復元するための復元情報を生成してよい。復元情報も、原本圧縮ファイルを変更する多様な方法によって多様に生成されてよい。このような復元情報についても、以下でさらに詳しく説明する。
【0031】
段階330で、サーバ150は、変更された原本圧縮ファイルおよび復元情報を含む実行可能な新たな圧縮ファイルを生成してよい。このような新たな圧縮ファイルの圧縮を解除することにより、変更された原本圧縮ファイルと復元情報の取得が可能となる。悪意のあるユーザが、変更された原本圧縮ファイルと復元情報を取得することはできても、変更された原本圧縮ファイルの圧縮は解除することがでないし、正確なソースコードを得ることもできないため、復元情報が何であるか、または復元情報を利用して変更された原本圧縮ファイルをどのように復元すればいいのかは知ることができないため、新たな圧縮ファイルからは本来のソースファイルを取得したり分析したりすることはできない。
【0032】
段階340で、サーバ150は、新たな圧縮ファイルのファイル名を原本圧縮ファイルのファイル名に変更してよい。上述したように、JARファイルは、ジャバ(Java)プログラムの実行中に遠隔地でHTTP(Hyper Text Transfer Protocol)などを通じてダウンロードされて直ぐに使用可能であるという特徴がある。これは、ダウンロードされなければならないファイルが既に決定されていることを意味しており、サーバ150は、提供しなければならない原本圧縮ファイルの代わりに新たな圧縮ファイルを提供するために、新たな圧縮ファイルのファイル名を原本圧縮ファイルのファイル名に変更してよい。例えば、上述した電子機器1(110)のようなクライアント側の機器から原本圧縮ファイルが要求された場合、サーバ150は、原本圧縮ファイルの代わりに新たな圧縮ファイルを提供することにより、新たな圧縮ファイルを受信したユーザが、原本圧縮ファイルのソースコードを取得あるいは分析できないようにする。新たな圧縮ファイルを利用して原本圧縮ファイルによる機能を実行できるようにするための方法については、以下で詳しく説明する。
【0033】
実行可能な原本圧縮ファイルを変更する方法は、大きく、解体(deconstruct)方式とコンテナ(container)方式を含む。解体方式は、原本圧縮ファイルが含む少なくとも1つのクラスファイルを変更することで原本圧縮ファイルを変更する方式であり、コンテナ方式は、原本圧縮ファイル自体を変更する方式である。
【0034】
図4は、本発明の一実施形態における、解体方式のファイル保護方法の例を示したフローチャートである。
図4に示す段階410および段階420は、原本圧縮ファイルを解体方式によって変更する例であって、
図3を参照しながら説明した段階310に含まれて実行されてよい。また、
図4に示された段階430は、
図3を参照しながら説明した段階330に含まれて実行されてよい。
【0035】
段階410で、サーバ150は、原本圧縮ファイルに対する圧縮解除によって原本圧縮ファイルが含む内部ファイルを抽出してよい。上述したように、JARファイルのような圧縮ファイルは、複数のファイルを圧縮して生成されるファイルであって、圧縮を解除することで含まれた内部ファイルを抽出してよい。
【0036】
段階420で、サーバ150は、抽出された内部ファイルのうちの少なくとも1つのクラスファイルを認識不可能な形態に変更して原本圧縮ファイルを変更してよい。サーバ150は、すべてのクラスファイル(一例として、拡張子が「.class」であるファイル)を確認し、確認されたすべてのクラスファイルのうちの少なくとも1つのクラスファイルを変更してよい。例えば、サーバ150は、変更しようとするクラスファイルを認知することができないように、予め設定されたキー(対象キーまたは非対象キー)を利用することで変更しようとするクラスファイルを暗号化するか、または予め設定された方式にしたがって変更しようとするクラスファイルを符号化することにより、原本圧縮ファイルを変更してよい。
【0037】
このとき、復元情報は、多様な方式によって生成されてよい。例えば、サーバ150は、変更されたクラスファイルを復元するようにクライアントを制御するための復元コードを復元情報として直接生成してよい。または、サーバ150は、変更されたクラスファイルの変更方式に対応する復元方式を説明するための復元説明情報を復元情報として生成してよい。生成される復元情報は、それ自体でも、悪意のあるユーザが復元情報を分析するまで変更されたクラスファイルを復元できないように防ぐことができる。これだけでなく、以下で説明されるように、復元情報も多様な方式によって保護されてよい。
【0038】
段階430で、サーバ150は、変更されたクラスファイル、復元情報、および内部ファイルのうちの少なくとも1つのクラスファイルを除いた残りのファイルを含む新たな圧縮ファイルを生成してよい。言い換えれば、本実施形態に係る新たな圧縮ファイルは、少なくとも1つのクラスファイルが変更された原本圧縮ファイルと復元情報を含んでよい。
【0039】
図5は、本発明の一実施形態における、コンテナ方式のファイル保護方法の例を示したフローチャートである。
図5に示された段階510は、原本圧縮ファイルをコンテナ方式によって変更する例であって、
図3を参照しながら説明した段階310に含まれて実行されてよい。
【0040】
段階510で、サーバ150は、原本圧縮ファイルを、予め設定されたキーを利用して暗号化するか、または予め設定された方式にしたがって符号化して原本圧縮ファイルを変更してよい。このように、コンテナ方式は、原本圧縮ファイル自体の認識が不可能となるように変更するための方式であってよく、この場合、変更された原本圧縮ファイルは、圧縮解除自体の実行が不可能となる。
【0041】
このようなコンテナ方式でも、復元情報は、多様な方式によって生成されてよい。例えば、サーバ150は、変更された原本圧縮ファイルを復元するようにクライアントを制御するための復元コードを復元情報として直接生成してよい。または、サーバ150は、変更された原本圧縮ファイルの変更方式に対応する復元方式を説明するための復元説明情報を復元情報として生成してよい。この場合、クライアントは、復元説明情報にしたがって変更された原本圧縮ファイルを復元して原本圧縮ファイルを取得するようになる。上述したように、生成される復元情報は、それ自体でも、悪意のあるユーザが復元情報を分析するまで変更された原本圧縮ファイルを復元できないように防ぐことができる。これだけでなく、以下で説明されるように、復元情報も多様な方式によって保護されてよい。
【0042】
また、解体方式とコンテナ方式の両方が利用されてもよい。例えば、
図4の実施形態で説明したように、変更されたクラスファイルを含む新たな圧縮ファイルが生成されたとする。このとき、サーバ150は、生成された新たな圧縮ファイルを、予め設定されたキーを利用して暗号化するか、または予め設定された方式にしたがって符号化して変更してよい。また、サーバ150は、変更された新たな圧縮ファイルを復元するための追加復元情報を生成してよい。この場合、サーバ150は、変更された新たな圧縮ファイルおよび追加復元情報を含む追加圧縮ファイルを生成してよい。言い換えれば、解体方式を利用して生成された新たな圧縮ファイルを、コンテナ方式にしたがって変更した後、変更された新たな圧縮ファイルとこれを復元するための追加復元情報を含む追加圧縮ファイルを生成することが可能となる。このような追加圧縮ファイルは、原本圧縮ファイルの代わりに提供されてよい。このために、追加圧縮ファイルのファイル名が原本圧縮ファイルのファイル名に変更されてよい。例えば、
図3の段階340において、新たな圧縮ファイルは中間過程の圧縮ファイルであるため、解体方式とコンテナ方式の両方が利用される実施形態において、サーバ150は、新たな圧縮ファイルの代わりに追加圧縮ファイルのファイル名を原本圧縮ファイルのファイル名に変更してよい。
【0043】
図6は、本発明の一実施形態における、解体方式にしたがって実行可能なJARファイルを変更して新たなJARファイルを生成する例を示した図である。例えば、サーバ150は、実行可能なJARファイル610の圧縮を解除してクラスファイル620と残りのファイル630を抽出してよい。このとき、サーバ150は、抽出されたクラスファイル620を変更し、変更されたクラスファイル640を生成してよい。上述したように、サーバ150は、クラスファイル620それぞれを予め設定されたキーによって暗号化するか、または予め設定された方式にしたがって符号化することによってクラスファイル620を変更してよい。また、サーバ150は、利用された変更方式に対応する復元方式にしたがって復元情報650を生成してよい。このとき、サーバ150は、変更されたクラスファイル640と復元情報650、または残りのファイル630を含む実行可能な新たなJARファイル660を生成してよい。また、サーバ150は、生成された実行可能な新たなJARファイル660のファイル名を実行可能なJARファイル610のファイル名に変更してよく、実行可能なJARファイル610に対する要請にしたがって実行可能な新たなJARファイル660を提供することにより、実行可能なJARファイル610が分析されないように防ぐことが可能となる。一方、実行可能な新たなJARファイル660は、クライアントで実行されるときに、クライアントのメモリに基づいて実行されてよい。このような実行可能な新たなJARファイル660の実行については、以下でさらに詳しく説明する。
【0044】
一方、
図6では、抽出されたクラスファイル620すべてを変更する例を説明しているが、実施形態によっては、抽出されたクラスファイル620のうちの少なくとも1つのクラスファイルが選択的に変更されてもよい。例えば、実行可能なJARファイル610による機能を実行するために最初に呼び出されるメインクラスのメイン関数が含まれたクラスファイルや主要ソースコードを含んでいるクラスファイルが選択的に変更されてよい。
【0045】
図7は、本発明の一実施形態における、コンテナ方式にしたがって実行可能なJARファイルを変更して新たなJARファイルを生成する例を示した図である。例えば、サーバ150は、実行可能なJARファイル710を変更し、変更された実行可能なJARファイル720を生成してよい。より具体的な例として、サーバ150は、実行可能なJARファイル710を予め設定されたキーによって暗号化するか、または予め設定された方式にしたがって符号化することにより、変更された実行可能なJARファイル720を生成してよい。変更された実行可能なJARファイル720は、実行または圧縮解除が不可能である。また、サーバ150は、実行可能なJARファイル710の変更方式に対応する復元方式にしたがって復元情報730を生成してよく、変更された実行可能なJARファイル720と生成された復元情報730を含む実行可能な新たなJARファイル740を生成してよい。悪意のあるユーザが実行可能な新たなJARファイル740を圧縮解除することにより、変更された実行可能なJARファイル720と復元情報730を取得することはできるが、復元情報730を完全に分析するまでは、変更された実行可能なJARファイル720を圧縮解除または実行することができない。このような実行可能な新たなJARファイル740は、ファイル基盤で実行されてよい。このような実行可能な新たなJARファイル740の実行については、以下でさらに詳しく説明する。
【0046】
また、上述したように、解体方式とコンテナ方式の両方が利用されてもよい。例えば、
図6で解体方式によって生成された実行可能な新たなJARファイル660が
図7の実行可能なJARファイル710となり、
図7のコンテナ方式にしたがって変更され、実行可能な新たなJARファイル740が生成されてよい。このとき、実行可能な新たなJARファイル740のファイル名が、最初の実行可能なJARファイル610のファイル名に変更されてよく、最初の実行可能なJARファイル610に対する要請にしたがって実行可能な新たなJARファイル740が提供されてよい。この場合、
図6の実行可能なJARファイル610を得るためには、実行可能な新たなJARファイル740を、復元情報730を利用してコンテナ方式にしたがって復元することにより、実行可能な新たなJARファイル660が得られるようになる。また、実行可能な新たなJARファイル660が含む変更されたクラスファイル640を、復元情報650を利用して解体方式にしたがって復元することにより、最初の実行可能なJARファイル610による機能が実行されてよい。
【0047】
以下では、生成された新たな圧縮ファイルを実行する過程について説明する。生成された新たな圧縮ファイルは、サーバ150で実行されてもよいが、一般的には、サーバ150からネットワーク(一例として、上述したネットワーク170)を介してクライアント(一例として、電子機器1(110))に送信されてよく、クライアントで実行されてよい。
【0048】
図8は、本発明の一実施形態における、コンテナ方式によるクライアントでのファイル保護方法の例を示したフローチャートである。本実施形態に係るファイル保護方法は、上述した電子機器1(110)のようなクライアント側のコンピュータ装置によって実行されてよい。電子機器1(110)のプロセッサ212は、メモリ211が含むオペレーティングシステムのコードや、少なくとも1つのコンピュータプログラムのコードによる制御命令(instruction)を実行するように実現されてよい。ここで、プロセッサ212は、電子機器1(110)に格納されたコードが提供する制御命令にしたがって電子機器1(110)が
図8の実施形態に係るファイル保護方法が含む段階810~860を実行するように、電子機器1(110)を制御してよい。
【0049】
段階810で、電子機器1(110)は、実行可能な原本圧縮ファイルをサーバに要請してよい。ここで、サーバは、上述したサーバ150に対応してよい。上述したように、サーバ150は、原本圧縮ファイルに基づいて新たな圧縮ファイルを生成してよく、新たな圧縮ファイルのファイル名を原本圧縮ファイルのファイル名に変更して格納してよい。サーバ150は、電子機器1(110)の要請にしたがって新たな圧縮ファイルを電子機器1(110)に送信してよい。
【0050】
段階820で、電子機器1(110)は、要請にしたがってサーバから実行可能な新たな圧縮ファイルを受信してよい。上述したように、サーバ150は、原本圧縮ファイルに対する要請にしたがって原本圧縮ファイルの代わりに新たな圧縮ファイルを送信してよく、電子機器1(110)は、サーバ150からネットワークを介して送信された新たな圧縮ファイルを受信してよい。
【0051】
段階830で、電子機器1(110)は、新たな圧縮ファイルの実行と関連して伝達される因子を抽出してよい。ここで、因子は、原本圧縮ファイルの実行時に原本圧縮ファイルとして伝達される因子を含んでよい。上述したように、JARファイルは、ローカル(local)上における便利な管理はもちろん、ジャバ(Java)プログラムの実行中に遠隔地でHTTP(Hyper Text Transfer Protocol)などを通じてダウンロードして直ぐに使用可能であるという特徴がある。このとき、既に実行中であるジャバプログラムは、JARファイルによる機能の実行時に初期パラメータとなり得る因子をJARファイルとして伝達してよい。電子機器1(110)は、このような初期パラメータに対応する因子を抽出してよい。
【0052】
段階840で、電子機器1(110)は、新たな圧縮ファイルが含む復元情報を利用して新たな圧縮ファイルがさらに含む変更された原本圧縮ファイルを復元してよい。原本圧縮ファイルの復元は、新たな圧縮ファイルの実行時にだけなされる。言い換えれば、新たな圧縮ファイルが実行されない場合には、原本圧縮ファイルが変更された状態で新たな圧縮ファイルに含まれているため、悪意のあるユーザが復元情報を分析して変更された原本圧縮ファイルを復元するまでは実行または圧縮解除することができない。これだけでなく、以下で説明するように、復元情報は、多様な方式にしたがって保護されるため、悪意のあるユーザが復元情報を取得したり分析したりできないようにする。
【0053】
段階850で、電子機器1(110)は、復元された原本圧縮ファイルを実行して抽出された因子を伝達することにより、原本圧縮ファイルによる機能を実行してよい。このように、原本圧縮ファイルによる機能は、ファイル基盤で行われてよい。伝達された因子は、復元された原本圧縮ファイルが含むメインクラスのメイン関数として伝達されてよく、メイン関数が呼び出されることによって原本圧縮ファイルが実行されてよい。
【0054】
段階860で、電子機器1(110)は、機能の終了後に復元された原本圧縮ファイルを除去してよい。このように、原本圧縮ファイルは、新たな圧縮ファイルが実行されるときにだけ復元された後、除去されるため、悪意のあるユーザが原本圧縮ファイルを取得して分析することができないように遮断することができる。これだけでなく、新たな圧縮ファイルが実行されるときにだけ原本圧縮ファイルの取得が可能であるということは、新たな圧縮ファイルに多様な追加保護モジュールを挿入することで復元原本圧縮ファイルを追加的に保護できるということを意味する。
【0055】
図9は、本発明の一実施形態における、解体方式によるクライアントでのファイル保護方法の例を示したフローチャートである。本実施形態に係るファイル保護方法も、上述した電子機器1(110)のようなクライアント側のコンピュータ装置によって実行されてよい。電子機器1(110)のプロセッサ212は、メモリ211が含むオペレーティングシステムのコードや、少なくとも1つのコンピュータプログラムのコードによる制御命令(instruction)を実行するように実現されてよい。ここで、プロセッサ212は、電子機器1(110)に格納されたコードが提供する制御命令にしたがって電子機器1(110)が
図9の実施形態に係るファイル保護方法に含まれる段階910~960を実行するように、電子機器1(110)を制御してよい。
【0056】
段階910で、電子機器1(110)は、実行可能な原本圧縮ファイルをサーバに要請してよい。ここで、サーバは、上述したサーバ150に対応してよい。上述したように、サーバ150は、原本圧縮ファイルに基づいて新たな圧縮ファイルを生成してよく、新たな圧縮ファイルのファイル名を原本圧縮ファイルのファイル名に変更して格納してよい。サーバ150は、電子機器1(110)の要請にしたがって新たな圧縮ファイルを電子機器1(110)に送信してよい。
【0057】
段階920で、電子機器1(110)は、要請にしたがってサーバから実行可能な新たな圧縮ファイルを受信してよい。上述したように、サーバ150は、原本圧縮ファイルに対する要請にしたがって原本圧縮ファイルの代わりに新たな圧縮ファイルを送信してよく、電子機器1(110)は、サーバ150からネットワークを介して送信された新たな圧縮ファイルを受信してよい。
【0058】
段階930で、電子機器1(110)は、新たな圧縮ファイルの実行と関連して伝達される因子を抽出してよい。ここで、因子は、原本圧縮ファイルの実行時に原本圧縮ファイルとして伝達される因子を含んでよい。上述したように、JARファイルは、ローカル(local)上における便利な管理はもちろん、ジャバ(Java)プログラムの実行中に遠隔地でHTTP(Hyper Text Transfer Protocol)などを通じてダウンロードして直ぐに使用可能であるという特徴がある。このとき、既に実行中であるジャバプログラムは、JARファイルによる機能の実行時に初期パラメータとなり得る因子をJARファイルとして伝達してよい。電子機器1(110)は、このような初期パラメータに対応する因子を抽出してよい。
【0059】
段階940で、電子機器1(110)は、新たな圧縮ファイルが含む復元情報を利用して新たな圧縮ファイルがさらに含む変更されたクラスファイルをメモリ上で復元してよい。
【0060】
段階950で、電子機器1(110)は、復元されたクラスファイルをメモリ上に積載してよい。このように、クラスファイルの復元はメモリ上でなされ、復元されたクラスファイルもメモリ上に積載されて利用されるため、復元されたクラスファイルは、新たな圧縮ファイルが実行されるときにだけ得られるようになる。復元されたクラスファイルが揮発性格納所であるメモリ上だけに存在するということは、復元されたクラスファイルの分析をより難しくできるということを意味する。また、上述したように、新たな圧縮ファイルが実行されるときにだけクラスファイルが復元されるということは、新たな圧縮ファイルに追加保護モジュールを挿入することで復元されたクラスファイルを追加的に保護できるということを意味する。
【0061】
段階960で、電子機器1(110)は、メモリ上に積載された復元されたクラスファイルに含まれたメインクラスのメイン関数を呼び出して抽出された因子を伝達することにより、原本圧縮ファイルによる機能を実行してよい。
【0062】
このように、新たな圧縮ファイルは、原本圧縮ファイルが圧縮解除あるいは実行されたり、またはソースコードが抽出されて分析されたりすることを遮断することができ、変更された原本圧縮ファイルの復元を新たな圧縮ファイルの実行中に制限することができるため、追加的な保護が可能となる。
【0063】
以下では、原本圧縮ファイルをより複雑に変更することにより、悪意のあるユーザが復元情報を取得したとしても、復元方式の分析を難しくするための方法と、復元情報自体をより安全に保護するための方法について説明する。
【0064】
図10は、本発明の一実施形態における、解体方式で原本圧縮ファイルを変更する例を示した図である。
図10の段階1010~1040は、
図3を参照しながら説明した段階310に含まれ、サーバ150によって実行されてよい。
【0065】
段階1010で、サーバ150は、原本圧縮ファイルに対する圧縮解除によって原本圧縮ファイルが含む内部ファイルを抽出してよい。上述したように、JARファイルのような圧縮ファイルは、複数のファイルを圧縮して生成されるファイルであって、圧縮解除によって含まれた内部ファイルを抽出してよい。
【0066】
段階1020で、サーバ150は、抽出された内部ファイルのうちの少なくとも1つのクラスファイルを認識不可能な形態に変更して原本圧縮ファイルを変更してよい。サーバ150は、すべてのクラスファイル(一例として、拡張子が「.class」であるファイル)を確認し、確認されたすべてのクラスファイルのうちの少なくとも1つのクラスファイルを変更してよい。例えば、サーバ150は、変更しようとするクラスファイルを認知することができないように、予め設定されたキー(対象キーまたは非対称キー)を利用して変更しようとするクラスファイルを暗号化するか、または予め設定された方式にしたがって変更しようとするクラスファイルを符号化することによって原本圧縮ファイルを変更してよい。
【0067】
段階1030で、サーバ150は、変更されたクラスファイルを圧縮してよい。このような変更されたクラスファイルの圧縮により、クラスファイルのサイズを減らすことができると同時に、クラスファイルに対するより複雑な変更を可能にする。
【0068】
段階1040で、サーバ150は、段階1020および段階1030を予め設定された回数だけ繰り返し実行してよい。例えば、暗号化されたクラスファイルを復号化するために必要となるキーをクライアントが取得したとしても、このような暗号化と圧縮の過程が繰り返された回数が分からなかったり、または変更されたクラスファイルの圧縮方式が分からなかったりする場合には、変更されたクラスファイルを復元することができない。このような変更と圧縮の回数、さらに圧縮方式などに関する情報は、復元情報に基づいてクライアントに提供されてよいが、以下で説明するように、復元情報は多様な方法によって保護されてよく、または復元情報を取得できたとしても、その意味の分析は難い。例えば、特定の項目として提供される上述した予め設定された回数が何を意味するかを知るためには、クライアントで復元情報がどのように利用されるかを確認しなければならないが、このような復元情報がどのように利用されるかに関する情報は、新たな圧縮ファイルが実行されるときにだけ得ることができる。ファイル自体を分析してコードを分析することとファイルの実行中にメモリを分析することはまったく異なる問題であり、本発明の実施形態によれば、原本圧縮ファイルの圧縮解除や実行、または原本圧縮ファイルのソースコードの取得および分析が遮断可能であることが分かる。
【0069】
図11は、本発明の一実施形態における、コンテナ方式で原本圧縮ファイルを変更する例を示した図である。
図11の段階1110~1130は、
図3を参照しながら説明した段階310に含まれ、サーバ150によって実行されてよい。
【0070】
段階1110で、サーバ150は、原本圧縮ファイルを予め設定されたキーによって暗号化するか、または予め設定された方式にしたがって符号化することにより、原本圧縮ファイルを認識不可能な形態に変更してよい。上述したように、コンテナ方式は、原本圧縮ファイル自体を認識することができないように変更するための方式であり、この場合、変更された原本圧縮ファイルは、圧縮解除自体の実行が不可能となる。
【0071】
段階1120で、サーバ150は、変更された原本圧縮ファイルを圧縮してよい。このような変更された原本圧縮ファイルを圧縮することにより、圧縮ファイルのサイズを減らすことができると同時に、圧縮ファイルに対するより複雑な変更が可能となる。
【0072】
段階1130で、サーバ150は、段階1110および段階1120を予め設定された回数だけ繰り返し実行してよい。上述したように、クライアントが圧縮方式や上述した予め設定された回数が分からない場合には、暗号化された原本圧縮ファイルを復号化するためのキーを取得したとしても、原本圧縮ファイルを得ることはできない。
【0073】
このような場合でも、悪意のあるユーザが、新たな圧縮ファイルの実行中にメモリを分析して原本圧縮ファイルを取得できてしまうこともある。
【0074】
図12は、本発明の一実施形態における、復元情報を保護する方法の例を示した図である。復元情報1210は、上述した多様な実施形態における復元情報に対応してよい。
【0075】
一実施形態において、復元情報1210は、変更された原本圧縮ファイルを本来の原本圧縮ファイルに復元するための復元コード、または原本圧縮ファイルの変更方式に対応する復元方式を説明する復元方式情報を含んでよい。このとき、復元情報1210は、暗号化および/または符号化によって変更されてよく、暗号化および/または符号化された状態で新たな圧縮ファイル1220に含まれてよい。例えば、復元情報は、新たな圧縮ファイル1220が含むクラスファイル内部のコードの一部分として含まれてよい。他の例として、復元情報は、ファイルの形態で生成されて、新たな圧縮ファイル1220内部の別のファイルとして含まれてもよい。このとき、暗号化および/または符号化された復元情報を復元するための関連情報は、クライアント、新たな圧縮ファイル1220、またはサーバ1230に格納されてよい。このような関連情報がクライアントや新たな圧縮ファイル1220に格納されていたとしても、悪意のあるユーザによる原本圧縮ファイルの取得がより困難になるということは、当業者であれば容易に理解することができるであろう。また、関連情報がサーバ1230に格納される場合、クライアントは、提供された新たな圧縮ファイル1220がクライアントで実行されるときに、サーバ1230に暗号化および/または符号化された復元情報を復元するための関連情報を要請してよい。このとき、サーバ1230は、新たな圧縮ファイル1220または新たな圧縮ファイル1220が含む保護モジュールが現在実行中であるかを判断し、新たな圧縮ファイル1220または保護モジュールが現在実行中の場合にだけ関連情報をクライアントに提供してよい。ここで、サーバ1230は、上述したサーバ150や、サーバ150とは異なる他のサーバであってよい。
【0076】
他の実施形態において、復元情報1210は、サーバ1230への接続情報だけを含んでもよい。例えば、上述した復元コードや復元方式情報は、サーバ1230にそのままあるいは暗号化および/または符号化されて格納されてよい。このとき、クライアントは、復元情報1210として新たな圧縮ファイル1220に含まれた接続情報を利用してサーバ1230に接続して上述した復元コードや復元方式情報を要請してよく、サーバ1230は、新たな圧縮ファイル1220または保護モジュールの実行有無に基づいて復元コードや復元方式情報をクライアントに提供してよい。復元コードや復元方式情報が暗号化および/または符号化されている場合、サーバ1230は、暗号化および/または符号化されている復元コードや復元方式情報をクライアントに送信してよく、クライアントは、サーバ150と予め設定されている方式にしたがって復元コードや復元方式情報を復元してよい。例えば、サーバ150とクライアントが安全な方法にしたがって共有した対称キーによって暗号化された復元コードが、クライアントで共有された対称キーとして復号化されてよい。
【0077】
このように、本発明の実施形態によると、JARファイルのように実行可能な圧縮ファイルに対する保護技術を適用するにあたり、保護しようとする実行可能な圧縮ファイルを再びビルドする必要がなく既存にビルドされた実行可能な圧縮ファイルに容易に適用することができ、実行可能な圧縮ファイルの内容が把握された後にクラスファイルが抽出されてデコンパイルされるという一連の過程の試行を不可能にし、最初から実行可能な圧縮ファイル自体の内容を把握できないように遮断することができる。
【0078】
悪意のあるユーザは、新たな圧縮ファイルからは復元された状態の原本圧縮ファイルを直ぐに得ることはできない。言い換えれば、原本圧縮ファイルを得ようとする悪意のあるユーザが、新たな圧縮ファイルが実行である状態でメモリを分析することによって原本圧縮ファイルの取得が可能となるように強制することができる。しかし、新たな圧縮ファイルは、ファイルの実行中に保護モジュールを実行することでメモリやファイルの保護を可能にする周知の多様な従来技術によって保護されることができるため、悪意のあるユーザが原本圧縮ファイルにアクセスすることを遮断できるようになる。
【0079】
上述したシステムまたは装置は、ハードウェア構成要素、ソフトウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)および前記OS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
【0080】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置、コンピュータ格納媒体または装置に永久的または一時的に具現化されてもよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で格納されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータで読み取り可能な記録媒体に格納されてもよい。
【0081】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータで読み取り可能な媒体に記録されてよい。前記コンピュータで読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでよい。前記媒体に記録されるプログラム命令は、実施形態のために特別に設計されて構成されたものであってもよいし、コンピュータソフトウェア当業者に公知な使用可能なものであってもよい。コンピュータで読み取り可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープのような磁気媒体、CD-ROM、DVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどのようなプログラム命令を格納して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。
【0082】
以上のように、実施形態を、限定された実施形態と図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
【0083】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
【符号の説明】
【0084】
110、120、130、140:電子機器
150、160:サーバ
170:ネットワーク