説明

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

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

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不正な利用者によるソフトウェアの再配布を防止するソフトウェアの不正配布検出装置、ソフトウェアの不正配布検出方法およびプログラムに関する。
【背景技術】
【0002】
ソフトウェアには、価値のあるアルゴリズムおよびコンテンツの暗号鍵等、利用者に対して秘密にすべき情報が含まれる場合がある。一方では、ソフトウェアを解析するための技術(RE:Reverse Engineering)が数多く開発されている。このため、これらの技術によりソフトウェアが解析されると、不正者が秘密情報を入手するという脅威が考えられる。この脅威に対し、ソフトウェアの仕様を保ったまま、ソフトウェアの解析を困難にする難読化という技術がある。
【0003】
一方、近年、ソフトウェアの不正利用が社会的な問題となっており、不正な利用者によるソフトウェアの再配布を防止する技術の必要性が日に日に高まってきている。ここで、ソフトウェアの再配布を行った利用者を追跡する技術としては、利用者ごとに異なるソフトウェアを配布するソフトウェア透かしという技術が知られている(例えば、特許文献1および非特許文献1参照。)。この技術では、ソフトウェアに冗長なデータを挿入することによって、異なるソフトウェアを生成している。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−237687号公報
【非特許文献】
【0005】
【非特許文献1】門田ら、“javaクラスファイルに対する電子透かし法、”情処論、vol.41、No.11、pp3001−3009、2000.
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記の従来の技術では、ソフトウェアの解析や改竄を防止できないという問題があった。また、ソフトウェアが改竄されることによって、透かしも改竄されるという問題もあった。
【0007】
そこで、本発明は、上述の課題に鑑みてなされたものであって、難読化の技術を利用してソフトウェアの解析や改竄を防止するとともに、利用者ごとにことなるソフトウェアを配布することにより、再配布を行った利用者を特定するソフトウェアの不正配布検出装置、ソフトウェアの不正配布検出方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【0009】
(1)本発明は、ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化する難読化処理手段(例えば、図1の難読化処理部101に相当)と、該個別のパラメータに応じて難読化されたソフトウェアを各ユーザに配布する配布手段(例えば、図1の配布部102に相当)と、該ユーザに関する情報と前記パラメータとを対応づけて記憶する記憶手段(例えば、図1の記憶部103に相当)と、不正に流通したソフトウェアから前記パラメータを抽出する抽出手段(例えば、図1の抽出部104に相当)と、該抽出したパラメータと前記記憶手段に記憶されているパラメータとを照合してユーザを特定するユーザ特定手段(例えば、図1のユーザ特定部105に相当)と、を備えたことを特徴とするソフトウェアの不正配布検出装置を提案している。
【0010】
この発明によれば、難読化処理手段は、ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化する。配布手段は、個別のパラメータに応じて難読化されたソフトウェアを各ユーザに配布する。記憶手段は、ユーザに関する情報とパラメータとを対応づけて記憶する。抽出手段は、不正に流通したソフトウェアからパラメータを抽出する。ユーザ特定手段は、抽出したパラメータと記憶手段に記憶されているパラメータとを照合してユーザを特定する。つまり、難読化処理手段は、ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化するため、ソフトウェアの解析や改竄を防止することができる。また、ユーザ特定手段は、不正に流通したソフトウェアから抽出したパラメータと記憶手段に記憶されているパラメータとを照合してユーザを特定する。すなわち、利用者ごとに異なるソフトウェアを配布するため、不正に再配布した利用者を的確に把握することができる。
【0011】
(2)本発明は、(1)のソフトウェアの不正配布検出装置について、前記難読化処理手段が、前記符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択手段(例えば、図2の選択部111に相当)と、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成手段(例えば、図2の生成部112に相当)と、前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の変数を符号化する符号化手段(例えば、図2の符号化部113に相当)と、を備えることを特徴とするソフトウェアの不正配布検出装置を提案している。
【0012】
この発明によれば、難読化処理手段の選択手段は、符号化を施すn個(但し、nは正整数)の変数を任意に選択する。生成手段は、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する。符号化手段は、生成した行列およびベクトルを変換鍵としてn個の変数を線形変換して同時にm個の変数を符号化する。したがって、ソフトウェア中のn個の変数を線形変換により同時にm個の整数に符号化するため、ソフトウェア中で用いられている変数の個数を秘匿すると同時に、変数間の参照および代入関係も秘匿することができる。また、変換鍵として行列およびベクトルを用いるため鍵の候補数を多くすることができる。このことにより、耐性の高いソフトウェアの難読化を実現することができる。
【0013】
(3)本発明は、(2)のソフトウェアの不正配布検出装置について、前記パラメータが、変数を符号化するのに用いる前記行列および前記ベクトルであることを特徴とするソフトウェアの不正配布検出装置を提案している。
【0014】
この発明によれば、パラメータが、変数を符号化するのに用いる行列およびベクトルである。すなわち、変数の符号化ルールに相当する行列およびベクトルを変更することによって、異なるソフトウェアを生成することができる。
【0015】
(4)本発明は、ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化する難読化処理ステップ(例えば、図3のステップS100に相当)と、該個別のパラメータに応じて難読化されたソフトウェアを各ユーザに配布する配布ステップ(例えば、図3のステップS200に相当)と、該ユーザに関する情報と前記パラメータとを対応づけて記憶する記憶ステップ(例えば、図3のステップS300に相当)と、不正に流通したソフトウェアから前記パラメータを抽出する抽出ステップ(例えば、図3のステップS400に相当)と、該抽出したパラメータと前記記憶手段に記憶されているパラメータとを照合してユーザを特定するユーザ特定ステップ(例えば、図3のステップS500に相当)と、を備えたことを特徴とするソフトウェアの不正配布検出方法を提案している。
【0016】
この発明によれば、ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化し、個別のパラメータに応じて難読化されたソフトウェアを各ユーザに配布する。そして、ユーザに関する情報とパラメータとを対応づけて記憶し、不正に流通したソフトウェアからパラメータを抽出して、抽出したパラメータと前記記憶されているパラメータとを照合してユーザを特定する。つまり、難読化処理ステップは、ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化するため、ソフトウェアの解析や改竄を防止することができる。また、ユーザ特定ステップは、不正に流通したソフトウェアから抽出したパラメータと記憶されているパラメータとを照合してユーザを特定する。すなわち、利用者ごとに異なるソフトウェアを配布するため、不正に再配布した利用者を的確に把握することができる。
【0017】
(5)本発明は、(4)のソフトウェアの不正配布検出方法について、前記難読化処理ステップ(例えば、図3のステップS100に相当)が、前記符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択ステップ(例えば、図4のステップS101に相当)と、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成ステップ(例えば、図4のステップS102に相当)と、前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の変数を符号化する符号化ステップ(例えば、図4のステップS103からステップS105に相当)と、を備えることを特徴とする請求項4の記載のソフトウェアの不正配布検出方法を提案している。
【0018】
この発明によれば、難読化処理ステップが、符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択ステップと、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成ステップと、生成した行列およびベクトルを変換鍵としてn個の変数を線形変換して同時にm個の変数を符号化する符号化ステップと、を備える。したがって、ソフトウェア中のn個の変数を線形変換により同時にm個の整数に符号化するため、ソフトウェア中で用いられている変数の個数を秘匿すると同時に、変数間の参照および代入関係も秘匿することができる。また、変換鍵として行列およびベクトルを用いるため鍵の候補数を多くすることができる。このことにより、耐性の高いソフトウェアの難読化を実現することができる。
【0019】
(6)本発明は、(5)のソフトウェアの不正配布検出方法について、前記パラメータが、変数を符号化するのに用いる前記行列および前記ベクトルであることを特徴とするソフトウェアの不正配布検出方法を提案している。
【0020】
この発明によれば、パラメータが、変数を符号化するのに用いる行列およびベクトルである。すなわち、変数の符号化ルールに相当する行列およびベクトルを変更することによって、異なるソフトウェアを生成することができる。
【0021】
(7)本発明は、ソフトウェアの不正配布検出方法をコンピュータに実行させるためのプログラムであって、ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化する難読化処理ステップ(例えば、図3のステップS100に相当)と、該個別のパラメータに応じて難読化されたソフトウェアを各ユーザに配布する配布ステップ(例えば、図3のステップS200に相当)と、該ユーザに関する情報と前記パラメータとを対応づけて記憶する記憶ステップ(例えば、図3のステップS300に相当)と、不正に流通したソフトウェアから前記パラメータを抽出する抽出ステップ(例えば、図3のステップS400に相当)と、該抽出したパラメータと前記記憶手段に記憶されているパラメータとを照合してユーザを特定するユーザ特定ステップ(例えば、図3のステップS500に相当)と、をコンピュータに実行させるためのプログラムを提案している。
【0022】
この発明によれば、ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化し、個別のパラメータに応じて難読化されたソフトウェアを各ユーザに配布する。そして、ユーザに関する情報とパラメータとを対応づけて記憶し、不正に流通したソフトウェアからパラメータを抽出して、抽出したパラメータと前記記憶されているパラメータとを照合してユーザを特定する。つまり、難読化処理ステップは、ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化するため、ソフトウェアの解析や改竄を防止することができる。また、ユーザ特定ステップは、不正に流通したソフトウェアから抽出したパラメータと記憶されているパラメータとを照合してユーザを特定する。すなわち、利用者ごとに異なるソフトウェアを配布するため、不正に再配布した利用者を的確に把握することができる。
【0023】
(8)本発明は、(7)のプログラムについて、前記難読化処理ステップ(例えば、図3のステップS100に相当)が、前記符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択ステップ(例えば、図4のステップS101に相当)と、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成ステップ(例えば、図4のステップS102に相当)と、前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の変数を符号化する符号化ステップ(例えば、図4のステップS103からステップS105に相当)と、をコンピュータに実行させるためのプログラムを提案している。
【0024】
この発明によれば、難読化処理ステップが、符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択ステップと、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成ステップと、生成した行列およびベクトルを変換鍵としてn個の変数を線形変換して同時にm個の変数を符号化する符号化ステップと、を備える。したがって、ソフトウェア中のn個の変数を線形変換により同時にm個の整数に符号化するため、ソフトウェア中で用いられている変数の個数を秘匿すると同時に、変数間の参照および代入関係も秘匿することができる。また、変換鍵として行列およびベクトルを用いるため鍵の候補数を多くすることができる。このことにより、耐性の高いソフトウェアの難読化を実現することができる。
【0025】
(9)本発明は、(8)のプログラムについて、前記パラメータが、変数を符号化するのに用いる前記行列および前記ベクトルであることを特徴とするプログラムを提案している。
【0026】
この発明によれば、パラメータが、変数を符号化するのに用いる行列およびベクトルである。すなわち、変数の符号化ルールに相当する行列およびベクトルを変更することによって、異なるソフトウェアを生成することができる。
【発明の効果】
【0027】
本発明によれば、2n2+42n通りの異なるソフトウェアを生成できる。また、パラメータは、ソフトウェアに含まれる変数の依存関係に基づいているため、コンパイルやその他の変換により除去・改ざんを行うことは困難である。さらに、利用者ごとに異なるソフトウェアを付与した場合、不正者は結託攻撃により、追跡を逃れようとすることが考えられる。例えば、複数のソフトウェアの各部を切り出し合成することにより、提供者のリストのいずれにも合致しないソフトウェアを作成することが考えられる。ところが、ソフトウェアの変数は異なる符号化ルールにより符号化されており、各部を切り貼りしても正しく動作しない。
【図面の簡単な説明】
【0028】
【図1】本発明の実施形態に係るソフトウェアの不正配布検出装置の構成を示す図である。
【図2】本発明の実施形態に係るソフトウェアの不正配布検出装置の難読化処理部の構成を示す図である。
【図3】本発明の実施形態に係るソフトウェアの不正配布検出装置の処理フローを示す図である。
【図4】本発明の実施形態に係るソフトウェアの不正配布検出装置の難読化処理の処理フローを示す図である。
【図5】本発明の実施形態に係るソフトウェアの不正配布検出装置の処理の概念図である。
【発明を実施するための形態】
【0029】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0030】
<ソフトウェアの不正配布検出装置の構成>
図1および図2を用いて、本実施形態に係るソフトウェアの不正配布検出装置の構成について説明する。
【0031】
本実施形態に係るソフトウェアの不正配布検出装置は、図1に示すように、難読化処理部101と、配布部102と、記憶部103と、抽出部104と、ユーザ特定部105とから構成されている。
【0032】
難読化処理部101は、ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化する。配布部102は、個別のパラメータに応じて難読化されたソフトウェアを各ユーザに配布する。
【0033】
記憶部103は、ユーザに関する情報とパラメータとを対応づけて記憶する。抽出部104は、不正に流通したソフトウェアからパラメータを抽出する。ユーザ特定部105は、抽出したパラメータと記憶部103に記憶されているパラメータとを照合してユーザを特定する。
【0034】
一方、難読化処理部101は、図2に示すように、選択部111と、生成部112と、符号化部113とから構成されている。
【0035】
選択部111は、符号化を施すn個(但し、nは正整数)の変数を任意に選択する。生成部112は、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する。符号化部113は、生成した行列およびベクトルを変換鍵としてn個の変数を線形変換して同時にm個の変数を符号化する。なお、パラメータとは、生成部112が生成する行列やベクトルを指し、このパラメータを変化させることにより異なる難読化されたソフトウェアを生成することができる。
【0036】
<ソフトウェアの不正配布検出装置の処理>
図3から図5を用いて、本実施形態に係るソフトウェアの不正配布検出装置の処理について説明する。
【0037】
まず、図3に示すように、ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化する(ステップS100)。次に、個別のパラメータに応じて難読化されたソフトウェアを各ユーザに配布し(ステップS200)、ユーザに関する情報と前記パラメータとを対応づけて記憶する(ステップS300)。
【0038】
そして、不正に流通したソフトウェアから前記パラメータを抽出し(ステップS400)、抽出したパラメータと記憶されているパラメータとを照合してユーザを特定する(ステップS500)。
【0039】
<難読化処理部の動作>
図4に示すように、難読化処理部は、符号化を施すn個(但し、nは正の整数)の変数を任意に選択し、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成して変換鍵とし、n個の変数を線形変換して同時にm個の整数に符号化することを特徴とするものであり、これを実現するために、図4に示されるように、符号化を施すn個の変数を選択する難読化対象選択処理(S101)からはじまり、秘密鍵の生成(S102)、変化式の定義(S103)、復号式の導出(S104)、変数の置換(S105)、後処理(S106)、判定(S107)の各ステップを順次実行する。以下にステップ毎の詳細手順の説明を行う。
【0040】
(S101:難読化対象の選択処理)
まず、ソフトウェアの中から、難読化の対象として符号化を施すn個(nは整数数)の変数を任意に選択する。この操作で選ばれたn個の変数x1,x2…,xn,とする。
(S102:秘密鍵の生成処理)
ここでは、m×n型行列A、m次元ベクトルcを任意に生成し、これらを秘密鍵とする。但し、mは、m≧nなる正整数である。
【0041】
(S103:変換式の定義処理)
次に、生成した行列Aおよびベクトルcを用いて以下の変換式数1を定義する。
【0042】
【数1】

【0043】
ここで、X1,X2,…,Xmは、難読化後のソフトウェアで用いられる符号化されたm個の変数である。
【0044】
(S104:復号式の導出処理)
上記した変換式を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】
(S105:変数の置き換え処理)
ソフトウェア中で用いられている変数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】
(S106:後処理)
後処理として、符号化された変数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】
(S107:判定処理)
ソフトウェアの解析が十分に困難であると判定されれば、難読化処理を終了する。さらなる難読化が必要であると判定されれば、S101からS106までの処理を繰り返す。
【0054】
図5を用いて、上記の処理について、具体例によって、その内容を説明する。
いま、提供者があるソフトウェアを保持しており、これを利用者A、利用者B、利用者Cに配布しようとしている。
【0055】
ここで、提供者は、利用者Aには、「パラメータ1」で、利用者Bには、「パラメータ2」で、利用者Cには、「パラメータ3」によって、元のソフトウェアを難読化する処理を行う。また、このとき、利用者とパラメータとの関係を関連づけてデータベース化しておく。
【0056】
提供者は、難読化したソフトウェア、つまり、利用者Aには、「ソフトウェア1」を、利用者Bには、「ソフトウェア2」を、利用者Cには、「ソフトウェア3」を配布する。
【0057】
しかしながら、後に、「ソフトウェア2」が不正に流通していることがわかった場合、この「ソフトウェア2」からパラメータを抽出し、データベースの登録情報と照合して不正配布者を特定する。本例の場合、「ソフトウェア2」から抽出するパラメータは、「パラメータ2」であるから、この情報をキーにデータベースを検索すれば、不正配布者が、「利用者B」であることを立証することができる。
【0058】
以上、説明したように、本実施形態によれば、ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化するため、ソフトウェアの解析や改竄を防止することができる。また、利用者ごとに異なるパラメータで難読化された異なるソフトウェアを配布するため、不正に流通したソフトウェアから抽出したパラメータと記憶されているパラメータとを照合することによって、不正に再配布した利用者を的確に把握することができる。
【0059】
なお、ソフトウェアの不正配布検出装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをソフトウェアの不正配布検出装置に読み込ませ、実行することによって本発明のソフトウェアの不正配布検出装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
【0060】
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0061】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0062】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0063】
101;難読化処理部
102;配布部
103;記憶部
104;抽出部
105;ユーザ特定部
111;選択部
112;生成部
113;符号化部

【特許請求の範囲】
【請求項1】
ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化する難読化処理手段と、
該個別のパラメータに応じて難読化されたソフトウェアを各ユーザに配布する配布手段と、
該ユーザに関する情報と前記パラメータとを対応づけて記憶する記憶手段と、
不正に流通したソフトウェアから前記パラメータを抽出する抽出手段と、
該抽出したパラメータと前記記憶手段に記憶されているパラメータとを照合してユーザを特定するユーザ特定手段と、
を備えたことを特徴とするソフトウェアの不正配布検出装置。
【請求項2】
前記難読化処理手段が、
前記符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択手段と、
m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成手段と、
前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の変数を符号化する符号化手段と、
を備えることを特徴とする請求項1の記載のソフトウェアの不正配布検出装置。
【請求項3】
前記パラメータが、変数を符号化するのに用いる前記行列および前記ベクトルであることを特徴とする請求項2の記載のソフトウェアの不正配布検出装置。
【請求項4】
ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化する難読化処理ステップと、
該個別のパラメータに応じて難読化されたソフトウェアを各ユーザに配布する配布ステップと、
該ユーザに関する情報と前記パラメータとを対応づけて記憶する記憶ステップと、
不正に流通したソフトウェアから前記パラメータを抽出する抽出ステップと、
該抽出したパラメータと前記記憶されているパラメータとを照合してユーザを特定するユーザ特定ステップと、
を備えたことを特徴とするソフトウェアの不正配布検出方法。
【請求項5】
前記難読化処理ステップが、
前記符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択ステップと、
m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成ステップと、
前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の変数を符号化する符号化ステップと、
を備えることを特徴とする請求項4の記載のソフトウェアの不正配布検出方法。
【請求項6】
前記パラメータが、変数を符号化するのに用いる前記行列および前記ベクトルであることを特徴とする請求項5の記載のソフトウェアの不正配布検出方法。
【請求項7】
ソフトウェアの不正配布検出方法をコンピュータに実行させるためのプログラムであって、
ソフトウェア内の変数を個別のパラメータに応じて線形変換して符号化することにより難読化する難読化処理ステップと、
該個別のパラメータに応じて難読化されたソフトウェアを各ユーザに配布する配布ステップと、
該ユーザに関する情報と前記パラメータとを対応づけて記憶する記憶ステップと、
不正に流通したソフトウェアから前記パラメータを抽出する抽出ステップと、
該抽出したパラメータと前記記憶されているパラメータとを照合してユーザを特定するユーザ特定ステップと、
をコンピュータに実行させるためのプログラム。
【請求項8】
前記難読化処理ステップが、
前記符号化を施すn個(但し、nは正整数)の変数を任意に選択する選択ステップと、
m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する生成ステップと、
前記生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の変数を符号化する符号化ステップと、
をコンピュータに実行させるための請求項7に記載のプログラム。
【請求項9】
前記パラメータが、変数を符号化するのに用いる前記行列および前記ベクトルであることを特徴とする請求項8の記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−32900(P2012−32900A)
【公開日】平成24年2月16日(2012.2.16)
【国際特許分類】
【出願番号】特願2010−170034(P2010−170034)
【出願日】平成22年7月29日(2010.7.29)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】