説明

ソフトウェアの不正流用検出装置、ソフトウェアの不正流用検出方法およびプログラム

【課題】難読化の技術を利用してソフトウェアの解析や改竄を防止するとともに、利用者ごとにことなるソフトウェアを流用することにより、再流用を行った利用者を特定する。
【解決手段】ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化し、個別のパラメータに応じて難読化されたソフトウェアを各ユーザに流用する。そして、ユーザに関する情報とパラメータとを対応づけて記憶し、不正に流通したソフトウェアからパラメータを抽出して、抽出したパラメータと前記記憶されているパラメータとを照合してユーザを特定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不正な利用者によるソフトウェアの流用を防止するソフトウェアの不正流用検出装置、ソフトウェアの不正流用検出方法およびプログラムに関する。
【背景技術】
【0002】
ソフトウェアには、価値のあるアルゴリズムおよびコンテンツの暗号鍵等、利用者に対して秘密にすべき情報が含まれる場合がある。一方では、ソフトウェアを解析するための技術(RE:Reverse Engineering)が数多く開発されている。このため、これらの技術によりソフトウェアが解析されると、不正者が秘密情報を入手するという脅威が考えられる。この脅威に対し、ソフトウェアの仕様を保ったまま、ソフトウェアの解析を困難にする難読化という技術がある。
【0003】
一方、近年、ソフトウェアの不正利用が社会的な問題となっており、不正な利用者によるソフトウェアの流用を防止する技術の必要性が日に日に高まってきている。ここで、ソフトウェアの特徴を抽出することにより、ソフトウェアの流用を立証する方法としてバースマークという技術が知られている(例えば、非特許文献1および非特許文献2参照。)。この技術では、変数の初期値や関数の呼び出し順序、システムコールの利用頻度等を特徴として利用している。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】岡本ら、”API呼び出しを用いた動的バースマーク”信学論、Vol.J89−D、No.8、pp.1751−1763,2006.
【非特許文献2】Xinran Wangら、“Detecting Software Theft via System Call Based Birthmarks,”Proc. Annual Computer Security Applications Conference 2009, pp.149−158、2009.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記の従来の技術では、ソフトウェアの解析や改竄を防止できないという問題があった。また、ソフトウェアの機能を解析し、同等の機能を持つ別のソフトウェアを作成することにより、バースマークを検知できなくなるという問題がある。さらに、ソフトウェアが改竄されることによって、バースマークも改竄されるという問題もあった。
【0006】
そこで、本発明は、上述の課題に鑑みてなされたものであって、難読化の技術を利用してソフトウェアの解析や改竄を防止するとともに、バースマークを抽出して不正流用を立証するソフトウェアの不正流用検出装置、ソフトウェアの不正流用検出方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【0008】
(1)本発明は、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する変数決定手段と、前記符号化変数を符号化式によって線形変換して符号化することにより難読化する難読化処理手段と、任意のソフトウェアに対して、変数を抽出する抽出手段と、前記抽出した変数が、本来満たすべきm−n個の非自明な関係式を満たすか否かを検証する検証手段と、を備えたことを特徴とするソフトウェアの不正流用検出装置を提案している。
【0009】
この発明によれば、変数決定手段は、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する。難読化処理手段は、符号化変数を符号化式によって線形変換して符号化することにより難読化する。抽出手段は、任意のソフトウェアに対して、変数を抽出する。検証手段は、抽出した変数が、本来満たすべきm−n個の非自明な関係式を満たすか否かを検証する。したがって、m−n個の非自明な関係式をバースマークとして利用できるため、抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証することにより、不正な流用があったか否かを検証できる。
【0010】
(2)本発明は、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する変数決定手段と、前記符号化変数が満たすべきm−n個の非自明な関係式を決定する関係式決定手段と、該関係式が決定した後に、前記符号化変数に対する前記符号化式を任意に決定する符号化式決定手段と、前記符号化変数を符号化式によって線形変換して符号化することにより難読化する難読化処理手段と、任意のソフトウェアに対して、変数を抽出する抽出手段と、前記抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証する検証手段と、を備えたことを特徴とするソフトウェアの不正流用検出装置を提案している。
【0011】
この発明によれば、変数決定手段は、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する。関係式決定手段は、符号化変数が満たすべきm−n個の非自明な関係式を決定する。符号化式決定手段は、関係式が決定した後に、符号化変数に対する符号化式を任意に決定する。難読化処理手段は、符号化変数を符号化式によって線形変換して符号化することにより難読化する。抽出手段は、任意のソフトウェアに対して、変数を抽出する。検証手段は、抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証する。したがって、これにより、同一のバースマークを抽出することができる。また、利用者ごとに異なる複数のソフトウェアを作成することができる。
【0012】
(3)本発明は、(1)または(2)のソフトウェアの不正流出検出装置について、前記難読化処理手段が、前記符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択手段と、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成手段と、前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の変数を符号化する符号化手段と、を備えることを特徴とするソフトウェアの不正流用検出装置を提案している。
【0013】
この発明によれば、難読化処理手段の選択手段は、符号化を施すn個(但し、nは正整数)の変数を任意に選択する。生成手段は、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する。符号化手段は、生成した行列およびベクトルを変換鍵としてn個の変数を線形変換して同時にm個の変数を符号化する。したがって、ソフトウェア中のn個の変数を線形変換により同時にm個の整数に符号化するため、ソフトウェア中で用いられている変数の個数を秘匿すると同時に、変数間の参照および代入関係も秘匿することができる。また、変換鍵として行列およびベクトルを用いるため鍵の候補数を多くすることができる。このことにより、耐性の高いソフトウェアの難読化を実現することができる。
【0014】
(4)本発明は、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する変数決定ステップと、前記符号化変数を符号化式によって線形変換して符号化することにより難読化する難読化処理ステップと、任意のソフトウェアに対して、変数を抽出する抽出ステップと、前記抽出した変数が、本来満たすべきm−n個の非自明な関係式を満たすか否かを検証する検証ステップと、を備えたことを特徴とするソフトウェアの不正流用検出方法を提案している。
【0015】
この発明によれば、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定し、符号化変数を符号化式によって線形変換して符号化することにより難読化する。そして、任意のソフトウェアに対して、変数を抽出し、抽出した変数が、本来満たすべきm−n個の非自明な関係式を満たすか否かを検証する。したがって、m−n個の非自明な関係式をバースマークとして利用できるため、抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証することにより、不正な流用があったか否かを検証できる。
【0016】
(5)本発明は、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する変数決定ステップと、前記符号化変数が満たすべきm−n個の非自明な関係式を決定する関係式決定ステップと、該関係式が決定した後に、前記符号化変数に対する前記符号化式を任意に決定する符号化式決定ステップと、前記符号化変数を符号化式によって線形変換して符号化することにより難読化する難読化処理ステップと、任意のソフトウェアに対して、変数を抽出する抽出ステップと、前記抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証する検証ステップと、を備えたことを特徴とするソフトウェアの不正流用検出方法を提案している。
【0017】
この発明によれば、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定し、符号化変数が満たすべきm−n個の非自明な関係式を決定する。次いで、関係式が決定した後に、符号化変数に対する前記符号化式を任意に決定し、符号化変数を符号化式によって線形変換して符号化することにより難読化する。そして、任意のソフトウェアに対して、変数を抽出し、抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証する。したがって、これにより、同一のバースマークを抽出することができる。また、利用者ごとに異なる複数のソフトウェアを作成することができる。
【0018】
(6)本発明は、(4)または(5)のソフトウェアの不正流用検出方法について、前記難読化処理ステップが、前記符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択ステップと、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成ステップと、前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の変数を符号化する符号化ステップと、を備えることを特徴とするソフトウェアの不正流用検出方法を提案している。
【0019】
この発明によれば、難読化処理ステップが、符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択ステップと、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成ステップと、生成した行列およびベクトルを変換鍵としてn個の変数を線形変換して同時にm個の変数を符号化する符号化ステップと、を備える。したがって、ソフトウェア中のn個の変数を線形変換により同時にm個の整数に符号化するため、ソフトウェア中で用いられている変数の個数を秘匿すると同時に、変数間の参照および代入関係も秘匿することができる。また、変換鍵として行列およびベクトルを用いるため鍵の候補数を多くすることができる。このことにより、耐性の高いソフトウェアの難読化を実現することができる。
【0020】
(7)本発明は、ソフトウェアの不正流用検出方法をコンピュータに実行させるためのプログラムであって、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する変数決定ステップと、前記符号化変数を符号化式によって線形変換して符号化することにより難読化する難読化処理ステップと、任意のソフトウェアに対して、変数を抽出する抽出ステップと、前記抽出した変数が、本来満たすべきm−n個の非自明な関係式を満たすか否かを検証する検証ステップと、を備えたことを特徴とするプログラムを提案している。
【0021】
この発明によれば、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定し、符号化変数を符号化式によって線形変換して符号化することにより難読化する。そして、任意のソフトウェアに対して、変数を抽出し、抽出した変数が、本来満たすべきm−n個の非自明な関係式を満たすか否かを検証する。したがって、m−n個の非自明な関係式をバースマークとして利用できるため、抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証することにより、不正な流用があったか否かを検証できる。
【0022】
(8)本発明は、ソフトウェアの不正流用検出方法をコンピュータに実行させるためのプログラムであって、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する変数決定ステップと、前記符号化変数が満たすべきm−n個の非自明な関係式を決定する関係式決定ステップと、該関係式が決定した後に、前記符号化変数に対する前記符号化式を任意に決定する符号化式決定ステップと、前記符号化変数を符号化式によって線形変換して符号化することにより難読化する難読化処理ステップと、任意のソフトウェアに対して、変数を抽出する抽出ステップと、前記抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証する検証ステップと、を備えたことを特徴とするプログラムを提案している。
【0023】
この発明によれば、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定し、符号化変数が満たすべきm−n個の非自明な関係式を決定する。次いで、関係式が決定した後に、符号化変数に対する前記符号化式を任意に決定し、符号化変数を符号化式によって線形変換して符号化することにより難読化する。そして、任意のソフトウェアに対して、変数を抽出し、抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証する。したがって、これにより、同一のバースマークを抽出することができる。また、利用者ごとに異なる複数のソフトウェアを作成することができる。
【0024】
(9)本発明は、(7)または(8)のプログラムについて、前記難読化処理ステップが、前記符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択ステップと、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成ステップと、前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の変数を符号化する符号化ステップと、を備えることを特徴とするプログラムを提案している。
【0025】
この発明によれば、難読化処理ステップが、符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択ステップと、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成ステップと、生成した行列およびベクトルを変換鍵としてn個の変数を線形変換して同時にm個の変数を符号化する符号化ステップと、を備える。したがって、ソフトウェア中のn個の変数を線形変換により同時にm個の整数に符号化するため、ソフトウェア中で用いられている変数の個数を秘匿すると同時に、変数間の参照および代入関係も秘匿することができる。また、変換鍵として行列およびベクトルを用いるため鍵の候補数を多くすることができる。このことにより、耐性の高いソフトウェアの難読化を実現することができる。
【発明の効果】
【0026】
本発明によれば、2n2+42n通りの異なるソフトウェアを生成できる。また、難読化したソフトウェアから同一のバースマークが検出される確率は、2−(10m+27)(m−n)以下である。例えば、m=3、n=1の場合は、243通りのソフトウェアを生成でき、バースマークが一致する確率は、2−114以下である。さらに、バースマークは、ソフトウェアに含まれる変数の依存関係に基づいている。このため、コンパイルやその他の変換により除去・改ざんを行うことは困難である。
【図面の簡単な説明】
【0027】
【図1】本発明の第1の実施形態に係るソフトウェアの不正流用検出装置の構成を示す図である。
【図2】本発明の第1の実施形態に係るソフトウェアの不正流用検出装置の難読化処理部の構成を示す図である。
【図3】本発明の第1の実施形態に係るソフトウェアの不正流用検出装置の処理フローを示す図である。
【図4】本発明の第1の実施形態に係るソフトウェアの不正流用検出装置の難読化処理の処理フローを示す図である。
【図5】本発明の第1の実施形態に係るソフトウェアの不正流用検出装置の処理の概念図である。
【図6】本発明の第2の実施形態に係るソフトウェアの不正流用検出装置の構成を示す図である。
【図7】本発明の第1の実施形態に係るソフトウェアの不正流用検出装置の処理フローを示す図である。
【発明を実施するための形態】
【0028】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0029】
<第1の実施形態>
図1から図5を用いて、本発明の第1の実施形態について説明する。
【0030】
<ソフトウェアの不正流用検出装置の構成>
図1および図2を用いて、本実施形態に係るソフトウェアの不正流用検出装置の構成について説明する。
【0031】
本実施形態に係るソフトウェアの不正流用検出装置は、図1に示すように、変数決定部101と、難読化処理部102と、抽出部103と、検証部104とから構成されている。
【0032】
変数決定部101は、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する。難読化処理部102は、ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化する。
【0033】
抽出部103は、任意のソフトウェアに対して、変数を抽出する。検証部104は、抽出した変数が、本来満たすべきm−n個の非自明な関係式を満たすか否かを検証する。
【0034】
一方、難読化処理部102は、図2に示すように、選択部111と、生成部112と、符号化部113とから構成されている。
【0035】
選択部111は、符号化を施すn個(但し、nは正整数)の変数を任意に選択する。生成部112は、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する。符号化部113は、生成した行列およびベクトルを変換鍵としてn個の変数を線形変換して同時にm個の変数を符号化する。なお、パラメータとは、生成部112が生成する行列やベクトルを指し、このパラメータを変化させることにより異なる難読化されたソフトウェアを生成することができる。
【0036】
<ソフトウェアの不正流用検出装置の処理>
図3から図5を用いて、本実施形態に係るソフトウェアの不正流用検出装置の処理について説明する。
【0037】
まず、図3に示すように、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する(ステップS100)。符号化変数を符号化式によって線形変換して符号化することにより難読化する(ステップS200)。
【0038】
そして、任意のソフトウェアに対して、変数を抽出する(ステップS300)。抽出した変数が、本来満たすべきm−n個の非自明な関係式を満たすか否かを検証する(ステップS400)。
【0039】
<難読化処理部の動作>
図4に示すように、難読化処理部は、符号化を施すn個(但し、nは正の整数)の変数を任意に選択し、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成して変換鍵とし、n個の変数を線形変換して同時にm個の整数に符号化することを特徴とするものであり、これを実現するために、図4に示されるように、符号化を施すn個の変数を選択する難読化対象選択処理(S201)からはじまり、秘密鍵の生成(S202)、変化式の定義(S203)、復号式の導出(S204)、変数の置換(S205)、後処理(S206)、判定(S207)の各ステップを順次実行する。以下にステップ毎の詳細手順の説明を行う。
【0040】
(S201:難読化対象の選択処理)
まず、ソフトウェアの中から、難読化の対象として符号化を施すn個(nは整数数)の変数を任意に選択する。この操作で選ばれたn個の変数x1,x2…,xn,とする。
(S202:秘密鍵の生成処理)
ここでは、m×n型行列A、m次元ベクトルcを任意に生成し、これらを秘密鍵とする。但し、mは、m≧nなる正整数である。
【0041】
(S203:変換式の定義処理)
次に、生成した行列Aおよびベクトルcを用いて以下の変換式数1を定義する。
【0042】
【数1】

【0043】
ここで、X1,X2,…,Xmは、難読化後のソフトウェアで用いられる符号化されたm個の変数である。
【0044】
(S204:復号式の導出処理)
上記した変換式をn個の変数x1,x2,…,xnに関するm本の連立方程式と見なし、それぞれの変数について解く。その結果、それぞれの変数x1,x2,…,xnに関して以下の数2で示す復号式が成立する。
【0045】
【数2】

【0046】
この復号式により、元のソフトウェア中のそれぞれの変数x1,x2,…,xnの値が、復号化された変数X1,X2,…Xmを用いて表すことが可能になる。この手順では、m本の連立方程式から、n個の変数x1,x2…xnの値を求める。このため、符号化された変数X1,X2,…Xmの間には、m‐n個の自明でない以下の関係式数3が成り立つことになる。
【0047】
【数3】

【0048】
この自明でない関係式を用いることにより、上記の復号式における各変数X1,X2,…,Xmの係数を可変とすることができる。
【0049】
(S205:変数の置き換え処理)
ソフトウェア中で用いられている変数x1,x2,…,xnを以下の規則に従い、符号化された変数X1,X2,…Xmで置き換える。
(a)変数xiへの代入命令への置き換え
アルゴリズム中の変数xiに対する代入命令xi←uを、以下の演算式数4で示されるように、変数X1,X2,…XMに対する代入命令に置き換える。
【0050】
【数4】

【0051】
この代入命令が実行されると、符号化されたm個全ての変換X1,X2,…Xmが、同時に変更される。
(b)参照されている変数xjの置き換え
ソフトウェア中で参照されている変数xjを、S14の処理で求めた復号式xj(X1,X2,…Xm)を用いて、変数X1,X2,…Xmの式に置き換える。
【0052】
(S206:後処理)
後処理として、符号化された変数X1,X2,…,Xmへの初期値を与える。また、連続する変数X1,X2,…Xmへの代入命令のマージを行う。
(a)符号化された変数への初期値代入
上記したS15(a)、(b)の処理により、ソフトウェア中の変数x1,x2,…,xnは全てX1,X2,…,Xmで置き換えられる。これらの変数の初期値は、自明でない関係式f1,f2,…fm‐nを満たす任意の整数とする。
(b)連続する代入命令のマージ
S15(b)の処理により生成された、符号化された変数X1,X2,…Xmへの代入命令の中で、連続するものをマージする。
【0053】
(S207:判定処理)
ソフトウェアの解析が十分に困難であると判定されれば、難読化処理を終了する。さらなる難読化が必要であると判定されれば、S101からS106までの処理を繰り返す。
【0054】
図5を用いて、上記の処理について、具体例によって、その内容を説明する。
いま、提供者があるソフトウェアを保持しており、これを利用者が利用しようとしている。
【0055】
ここで、提供者は、元のソフトウェアを難読化する処理を行い、ソストウェアを「ソフトウェアS」として利用者に渡す。
【0056】
ここで、利用者が「ソフトウェアS」の機能を流用し、新たな「ソフトウェアS´」を作成したとする。そこで、提供者は、変数が図5に示す特定の関係式を満たすことを確認し、ソフトウェアの流用を立証する。
【0057】
以上、説明したように、本実施形態によれば、m−n個の非自明な関係式をバースマークとして利用できるため、抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証することにより、不正な流用があったか否かを検証できる。
【0058】
<第2の実施形態>
図6および図7を用いて、本発明の第2の実施形態について説明する。
【0059】
<ソフトウェアの不正流用検出装置の構成>
図6を用いて、本実施形態に係るソフトウェアの不正流用検出装置の構成について説明する。
【0060】
本実施形態に係るソフトウェアの不正流用検出装置は、図6に示すように、変数決定部101と、難読化処理部102と、抽出部103と、検証部104と、関係式決定部121と、符号化式決定部122とから構成されている。なお、第1の実施形態と同様の符号を付す構成要素については、同様の機能を有することから、詳細な説明については省略する。
【0061】
関係式決定部121は、符号化変数が満たすべきm−n個の非自明な関係式を決定する。符号化式決定部122は、関係式が決定した後に、符号化変数に対する符号化式を任意に決定する。
【0062】
<ソフトウェアの不正流用検出装置の処理>
図7を用いて、本実施形態に係るソフトウェアの不正流用検出装置の処理について説明する。
【0063】
まず、図7に示すように、ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定し(ステップS110)、符号化変数が満たすべきm−n個の非自明な関係式を決定し(ステップS120)、関係式が決定した後に、符号化変数に対する符号化式を任意に決定する(ステップS130)。
【0064】
そして、符号化変数を符号化式によって線形変換して符号化することにより難読化する(ステップS140)。一方、任意のソフトウェアに対して、変数を抽出し(ステップS150)、抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証する(ステップS160)。
【0065】
以上、説明したように、本実施形態によれば、これにより、同一のバースマークを抽出することができる。また、利用者ごとに異なる複数のソフトウェアを作成することができる。
【0066】
なお、ソフトウェアの不正流用検出装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをソフトウェアの不正流用検出装置に読み込ませ、実行することによって本発明のソフトウェアの不正流用検出装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
【0067】
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0068】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0069】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0070】
101;変数決定部
102;難読化処理部
103;抽出部
104;検証部
111;選択部
112;生成部
113;符号化部
121;関係式決定部
122;符号化式決定部

【特許請求の範囲】
【請求項1】
ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する変数決定手段と、
前記符号化変数を符号化式によって線形変換して符号化することにより難読化する難読化処理手段と、
任意のソフトウェアに対して、変数を抽出する抽出手段と、
前記抽出した変数が、本来満たすべきm−n個の非自明な関係式を満たすか否かを検証する検証手段と、
を備えたことを特徴とするソフトウェアの不正流用検出装置。
【請求項2】
ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する変数決定手段と、
前記符号化変数が満たすべきm−n個の非自明な関係式を決定する関係式決定手段と、
該関係式が決定した後に、前記符号化変数に対する前記符号化式を任意に決定する符号化式決定手段と、
前記符号化変数を符号化式によって線形変換して符号化することにより難読化する難読化処理手段と、
任意のソフトウェアに対して、変数を抽出する抽出手段と、
前記抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証する検証手段と、
を備えたことを特徴とするソフトウェアの不正流用検出装置。
【請求項3】
前記難読化処理手段が、
前記符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択手段と、
m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成手段と、
前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の変数を符号化する符号化手段と、
を備えることを特徴とする請求項1または請求項2の記載のソフトウェアの不正流用検出装置。
【請求項4】
ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する変数決定ステップと、
前記符号化変数を符号化式によって線形変換して符号化することにより難読化する難読化処理ステップと、
任意のソフトウェアに対して、変数を抽出する抽出ステップと、
前記抽出した変数が、本来満たすべきm−n個の非自明な関係式を満たすか否かを検証する検証ステップと、
を備えたことを特徴とするソフトウェアの不正流用検出方法。
【請求項5】
ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する変数決定ステップと、
前記符号化変数が満たすべきm−n個の非自明な関係式を決定する関係式決定ステップと、
該関係式が決定した後に、前記符号化変数に対する前記符号化式を任意に決定する符号化式決定ステップと、
前記符号化変数を符号化式によって線形変換して符号化することにより難読化する難読化処理ステップと、
任意のソフトウェアに対して、変数を抽出する抽出ステップと、
前記抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証する検証ステップと、
を備えたことを特徴とするソフトウェアの不正流用検出方法。
【請求項6】
前記難読化処理ステップが、
前記符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択ステップと、
m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成ステップと、
前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の変数を符号化する符号化ステップと、
を備えることを特徴とする請求項4または請求項5の記載のソフトウェアの不正流用検出方法。
【請求項7】
ソフトウェアの不正流用検出方法をコンピュータに実行させるためのプログラムであって、
ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する変数決定ステップと、
前記符号化変数を符号化式によって線形変換して符号化することにより難読化する難読化処理ステップと、
任意のソフトウェアに対して、変数を抽出する抽出ステップと、
前記抽出した変数が、本来満たすべきm−n個の非自明な関係式を満たすか否かを検証する検証ステップと、
を備えたことを特徴とするプログラム。
【請求項8】
ソフトウェアの不正流用検出方法をコンピュータに実行させるためのプログラムであって、
ソフトウェア内の変数のうち符号化の対象とするn個の変数と、符号化変数の個数m(ただし、m>nとする)を決定する変数決定ステップと、
前記符号化変数が満たすべきm−n個の非自明な関係式を決定する関係式決定ステップと、
該関係式が決定した後に、前記符号化変数に対する前記符号化式を任意に決定する符号化式決定ステップと、
前記符号化変数を符号化式によって線形変換して符号化することにより難読化する難読化処理ステップと、
任意のソフトウェアに対して、変数を抽出する抽出ステップと、
前記抽出した変数が、m−n個の非自明な関係式を満たすか否かを検証する検証ステップと、
を備えたことを特徴とするプログラム。
【請求項9】
前記難読化処理ステップが、
前記符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択ステップと、
m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成ステップと、
前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の変数を符号化する符号化ステップと、
を備えることを特徴とする請求項7または請求項8の記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−43322(P2012−43322A)
【公開日】平成24年3月1日(2012.3.1)
【国際特許分類】
【出願番号】特願2010−185828(P2010−185828)
【出願日】平成22年8月23日(2010.8.23)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】