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