(57)【要約】【課題】  正規の通信メッセージを取得することができない場合にはプログラム内の正規の命令群を特定することができないようにすることにより、攻撃者によるプログラム解析を防止する。【解決手段】  ユーザ個別のクライアントプログラム３ａ、３ｂに専用の命令実行条件を含む通信メッセージ４ａ、４ｂを正規のユーザ端末２ａ、２ｂへ通信回線を介して供給する通信メッセージ供給サーバ１を備え、クライアントプログラム３ａ、３ｂは、一機能をコンピュータに実現させる正規の命令群とこの正規の命令群に類似したダミー命令群とを含み、さらに、ユーザ端末を介して通信メッセージを受信する機能と、この受信された通信メッセージに基づいて正規の命令群又はダミー命令群のいずれか予め定められた一方を実行対象に選択する機能とをコンピュータに実現させることを特徴とする。【選択図】    図１
2005202608.tif 000002
【特許請求の範囲】
【請求項１】
各々のユーザに対して提供されるユーザ個別プログラムに専用の命令実行条件を含む通信メッセージを正規のユーザ端末へ通信回線を介して供給する通信メッセージ供給装置を備え、
前記ユーザ個別プログラムは、
一機能をコンピュータに実現させる正規の命令群とこの正規の命令群に類似したダミー命令群とを含み、さらに、
ユーザ端末を介して通信メッセージを受信する機能と、
この受信された通信メッセージに基づいて、前記正規の命令群又は前記ダミー命令群のいずれか予め定められた一方を実行対象に選択する機能とをコンピュータに実現させることを特徴とするプログラム難読化システム。
【請求項２】
各々のユーザに対してユーザ個別プログラムを提供し、
前記ユーザに提供されたユーザ個別プログラムに専用の命令実行条件を含む通信メッセージを正規のユーザ端末へ通信回線を介して供給し、
前記ユーザ個別プログラムは、
一機能をコンピュータに実現させる正規の命令群とこの正規の命令群に類似したダミー命令群とを含み、さらに、
ユーザ端末を介して通信メッセージを受信する機能と、
この受信された通信メッセージに基づいて、前記正規の命令群又は前記ダミー命令群のいずれか予め定められた一方を実行対象に選択する機能とをコンピュータに実現させることを特徴とするプログラム難読化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムの難読化システム及び難読化方法に関する。
【背景技術】
【０００２】
近年、コンピュータを利用した様々なサービスが提供されている。このサービス提供システムにおいて、サービス提供者はユーザに対して当該サービスを利用するためのプログラムを提供する。そして、ユーザは受け取ったプログラムをコンピュータ上で実行することにより、当該サービスを受けることができる。また、そのサービス提供者からユーザに提供されるプログラムに対して、何らかの秘密情報（例えば暗号化用の鍵）を隠蔽することが考えられる。このような場合、プログラムを変形することによって、攻撃者が当該プログラムを理解しにくいようにすることが行われている。この技術は一般に難読化技術と称されている。そして、その難読化技術は、プログラムの解析を困難にする用途にも使用される。
【０００３】
従来の難読化技術としては、プログラム内にダミーコードを挿入するものが知られている。或いは、プログラムに対して、プログラム内で呼び出される関数へのポインタ変数を新たに複数個設けるとともに、該関数ポインタ変数のいずれかに関数のアドレスを代入する命令文を複数個挿入し、関数ポインタ変数の値に応じて関数を呼び出すように変換するものが知られている（例えば、特許文献１参照）。
【特許文献１】特開２００３−３３７６２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上述した従来の難読化技術では、プログラム単体で動作することを前提としているために静的解析や動的解析に対して脆弱であり、攻撃者によるプログラム解析を防ぐ上で十分とはいえないという問題がある。
【０００５】
本発明は、このような事情を考慮してなされたもので、その目的は、正規の通信メッセージを取得することができない場合にはプログラム内の正規の命令群を特定することができないようにすることにより、攻撃者によるプログラム解析を防止することができるプログラム難読化システム及びプログラム難読化方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、本発明に係るプログラム難読化システムは、各々のユーザに対して提供されるユーザ個別プログラムに専用の命令実行条件を含む通信メッセージを正規のユーザ端末へ通信回線を介して供給する通信メッセージ供給装置を備え、前記ユーザ個別プログラムは、一機能をコンピュータに実現させる正規の命令群とこの正規の命令群に類似したダミー命令群とを含み、さらに、ユーザ端末を介して通信メッセージを受信する機能と、この受信された通信メッセージに基づいて、前記正規の命令群又は前記ダミー命令群のいずれか予め定められた一方を実行対象に選択する機能とをコンピュータに実現させることを特徴としている。
【０００７】
本発明に係るプログラム難読化方法は、各々のユーザに対してユーザ個別プログラムを提供し、前記ユーザに提供されたユーザ個別プログラムに専用の命令実行条件を含む通信メッセージを正規のユーザ端末へ通信回線を介して供給し、前記ユーザ個別プログラムは、一機能をコンピュータに実現させる正規の命令群とこの正規の命令群に類似したダミー命令群とを含み、さらに、ユーザ端末を介して通信メッセージを受信する機能と、この受信された通信メッセージに基づいて、前記正規の命令群又は前記ダミー命令群のいずれか予め定められた一方を実行対象に選択する機能とをコンピュータに実現させることを特徴としている。
【発明の効果】
【０００８】
本発明によれば、各々のユーザに対して提供されるユーザ個別プログラムが通信メッセージに基づいて正規の命令群又はダミー命令群のいずれか予め定められた一方を実行対象に選択するものであり、ユーザ個別プログラムに専用の命令実行条件を含む通信メッセージは正規のユーザ端末へ供給される。これにより、正規の通信メッセージを取得することができない場合にはユーザ個別プログラム内の正規の処理を特定することができない。この結果として、攻撃者によるプログラム解析を防止することができるという効果が得られる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照し、本発明の一実施形態について説明する。
図１は、本発明の一実施形態に係るプログラム難読化システムの構成を示すブロック図である。図１において、通信メッセージ供給サーバ１（通信メッセージ供給装置）は、通信回線を介して携帯電話端末２ａ、クライアントＰＣ２ｂ（以下、特に区別しないときは「クライアント端末２」と称する）と接続される。
【００１０】
各クライアント端末２には、各々のユーザに個別のクライアントプログラム３ａ、３ｂ（以下、特に区別しないときは「クライアントプログラム３」と称する）がインストールされている。通信メッセージ供給サーバ１は、携帯電話端末２ａ、クライアントＰＣ２ｂに対して、それぞれのクライアントプログラム３に専用の通信メッセージ４ａ、４ｂ（以下、特に区別しないときは「通信メッセージ４」と称する）を通信回線を介して供給する。
【００１１】
図２は、図１に示す通信メッセージ供給サーバ１の構成を示すブロック図である。図２において、通信部１１は通信ネットワークに接続されており、該通信ネットワークを介してクライアント端末２との間でデータを送受信する。認証部１２は、当該サーバ１に対して通信接続を要求した端末の正当性を認証する。メッセージ送信処理部１３は、認証部１２により正規のクライアント端末２であると認証された端末に対して、該当する通信メッセージ４を送信する。クライアントデータベース１４は、正規のクライアント端末２に関する情報（端末識別情報等）、各クライアント端末２にインストールされているクライアントプログラム３に関する情報（プログラム識別情報等）、及び各クライアントプログラム３毎に専用の通信メッセージ４を予め格納している。
【００１２】
次に、図３を参照して、通信メッセージ供給サーバ１の動作を説明する。
先ず、通信メッセージ供給サーバ１の通信部１１が端末からの通信接続要求を受信する（ステップＳ１）。次いで、認証部１２が、当該端末の正当性を検証するために、クライアントデータベース１４を参照する。そして、クライアントデータベース１４に登録されている場合には、当該通信接続要求元の端末を正規のクライアント端末２であると判断する（ステップＳ２）。次いで、メッセージ送信処理部１３が、正規のクライアント端末２に対して、該当する通信メッセージ４をクライアントデータベース１４から取得して送信する（ステップＳ３）。
【００１３】
次に、図４を参照して、クライアントプログラム３について説明する。
クライアントプログラム３は、サービス提供者によりユーザに対して予め提供される。ユーザはこのクライアントプログラム３により当該サービス提供者によるサービスを受けることができる。そのクライアントプログラム３は、ユーザ共通のオリジナルプログラムが難読化されたものであり、ユーザ毎に個別のプログラムとなっている。
【００１４】
図４において、オリジナルプログラム１００は難読化前のものである。この実施例では、オリジナルプログラム１００は、正規の処理１、２、３がステップＳ１０１、Ｓ１０２、Ｓ１０３の順で順番に実行される構造である。各正規の処理１、２、３は、それぞれ一機能をコンピュータに実現させる命令群から構成される。そして、オリジナルプログラム１００は難読化作業によりユーザ個別のクライアントプログラム３に変形される。この難読化作業は、コンピュータ処理により自動的に行うことができる。
【００１５】
図４に示されるように、クライアントプログラム３には、オリジナルプログラム１００に対して、メッセージ受信処理（ステップＳ３１）と、実行対象選択処理（ステップＳ３２−１〜３）と、ダミー処理１、２、３（ステップＳ３０１、Ｓ３０２、Ｓ３０３）とが追加されている。
【００１６】
メッセージ受信処理は、端末を介して通信メッセージを受信する機能をコンピュータに実現させる命令群から構成される。
実行対象選択処理は、メッセージ受信処理により受信された通信メッセージに基づいて、正規の処理又はダミー処理のいずれか予め定められた一方を実行対象に選択する機能をコンピュータに実現させる命令群から構成される。実行対象選択処理は、正規の処理とダミー処理の組合せ単位で設けられる。図４の実施例では、正規の処理１、２、３とダミー処理１、２、３の各組合せに対して、各々対応する実行対象選択処理が設けられている。これら実行対象選択処理において、正規の処理又はダミー処理のいずれを実行対象に選択するかについての条件分岐の真偽設定は、難読化作業時に、各ユーザ毎に変更して行われる。
【００１７】
ダミー処理１、２、３は、それぞれ正規の処理１、２、３に含まれる正規の命令群に類似した命令群（ダミー命令群）から構成される。例えば、ダミー処理１のダミー命令群は、正規の処理１の正規の命令群に非常に似たものとして作成される。これにより、ダミー処理１と正規の処理１とは、単に両者を比べただけではいずれが正規のものであるのかが見分けが付かないものとなる。具体的な例を挙げると、例えば、正規の処理がある値に１を加算するものであった場合に、ダミー処理ではある値に２を加算するようにする。これら２つの処理は、プログラム上どちらももっともらしい処理となっているために、見分けが付かない。
【００１８】
上記した通信メッセージ供給サーバ１から供給される正規の通信メッセージ４には、当該ユーザに提供されたクライアントプログラム３に専用の命令実行条件が含まれている。すなわち、通信メッセージ４に含まれる命令実行条件は、該当するクライアントプログラム３の実行対象選択処理内容に予め適合するように設定されている。そして、各実行対象選択処理により、正規の通信メッセージ４に含まれる命令実行条件に従って実行対象処理が選択された場合にのみ、正規の処理１、２、３が実行される。
【００１９】
図４の実施例においては、ステップＳ３２−１の実行対象選択処理ではその命令実行条件が０ならば正規の処理１が選択され、ステップＳ３２−２ではその命令実行条件が１ならば正規の処理２が選択され、ステップＳ３２−３ではその命令実行条件が１ならば正規の処理３が選択される。そして、正規の通信メッセージ４には、ステップＳ３２−１〜３の各々に対応する命令実行条件として、ステップＳ３２−１は０、ステップＳ３２−２は１、ステップＳ３２−３は１が含まれる。これにより、通信メッセージ供給サーバ１から正規の通信メッセージ４が取得されれば、オリジナルプログラム１００と同様に、正規の処理１、２、３がステップＳ１０１、Ｓ１０２、Ｓ１０３の順で順番に実行される。
【００２０】
しかし、通信メッセージ供給サーバ１から正規の通信メッセージ４を取得することができなければ正規の処理かダミー処理のいずれかが実行されるが、この実行された処理が正規のものであるのかダミーであるのかは、両者が非常に類似しているために判別することができない。
【００２１】
上述したように本実施形態によれば、通信メッセージ供給サーバ１から正規の通信メッセージを取得することができない場合にはクライアントプログラム３内の正規の処理を特定することができない。これにより、攻撃者によるプログラム解析を防止することができる。また、クライアントプログラムを保護することができるので、より安全なサービス提供システムの構築を行うことができる。
【００２２】
なお、本発明は、携帯電話端末上で動作するプログラムや、その他の通信ネットワークに接続されるＰＣ等の機器上で動作するプログラムなどに対して広く適用することが可能である。
【００２３】
以上、本発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施形態に係るプログラム難読化システムの構成を示すブロック図である。
【図２】図１に示す通信メッセージ供給サーバ１の構成を示すブロック図である。
【図３】図２に示す通信メッセージ供給サーバ１の処理フローを示す図である。
【図４】本発明に係るクライアントプログラム３の構成を説明するための図である。
【符号の説明】
【００２５】
１…通信メッセージ供給サーバ（通信メッセージ供給装置）、２ａ…携帯電話端末（ユーザ端末）、２ｂ…クライアントＰＣ（ユーザ端末）、３ａ，３ｂ…クライアントプログラム（ユーザ個別プログラム）、４ａ，４ｂ…通信メッセージ、１１…通信部、１２…認証部、１３…メッセージ送信処理部、１４…クライアントデータベース。
【図１】
2005202608.tif 000003
【図２】
2005202608.tif 000004
【図３】
2005202608.tif 000005
【図４】
2005202608.tif 000006