JP2013025356A - プログラムの流用検出方法 - Google Patents
プログラムの流用検出方法 Download PDFInfo
- Publication number
- JP2013025356A JP2013025356A JP2011156526A JP2011156526A JP2013025356A JP 2013025356 A JP2013025356 A JP 2013025356A JP 2011156526 A JP2011156526 A JP 2011156526A JP 2011156526 A JP2011156526 A JP 2011156526A JP 2013025356 A JP2013025356 A JP 2013025356A
- Authority
- JP
- Japan
- Prior art keywords
- program
- class
- authentication
- diversion
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
【解決手段】複数の機能クラス100が共通クラス200を継承する。メソッド101は共通クラス200に含まれる認証メソッド201を呼び出す処理を含む。認証メソッド201のメソッド名を透かし情報とみなし、他の名前と識別可能な独自のものとする。コンピュータのCPUは、検査対象プログラムを記憶部からメモリに読み込み、検査対象プログラムに認証メソッド201のメソッド名と一致するメソッド名が含まれるか否かを判別する。一致するメソッド名が含まれていた場合、CPUは、検査対象プログラムは流用されたものであると判定し、流用されたプログラムに対応するための所定の処理を行う。
【選択図】図2
Description
上述したように、システムの発注元にソースコードを開示すると、ソースコードを保護するために、ソースコードに対して、コメントでコピーライトを記載したり、その一部に特殊なコードを埋め込んだりする対策をとっていても、プログラムの開発元とは異なるベンダーがそのソースコードを不正に流用してプログラムを開発したり改良したりすることが可能となる。
更に、不用意なコピーが繰り返された結果、開発元のソースコードを不正に流用した開発者が権利を主張して、開発元を訴えることさえ可能となる。
特許文献1には、透かしが挿入されるプログラムのソースコードから、順序を入れ替えてもプログラムの仕様に影響がない命令文を複数個取り出し、その命令文と命令文との間に、ダミー変数に関する計算式を挿入し、命令文同士をランダムに入れ替え、入れ替えた命令文の順序を透かし情報として保存する透かし挿入方法が開示されている。
特許文献2には、識別情報(透かし情報)をビット列に変換し、ソースコードに含まれる空白または行間の長さをこのビット列に含まれる各ビットの1/0に合わせて変換するソフトウェア識別情報埋め込み方法が開示されている。例えば、1のビットはブランク1個または行間1行、0のビットはブランク2個または行間2行に変換する。
また、特許文献2に記載のソフトウェア識別情報埋め込み方法では、ファイルの文字コードが変更された場合に、透かしとして埋め込んだビット列が有効にならない可能性があり、ちょっとしたソースコードの変更に弱いことが想定される。さらに各所に埋め込んでいるために、ソースコードの修正に弱いことが想定される。また、デコンパイルなどを通して復元されたソースコードでは、透かし情報が消滅するおそれがある点は特許文献1に記載の透かし挿入方法と同様である。
しかし、従来のコメントによる著作者のコピーライト表記では、ソースコードを流用する際に安易にコピーライトの変更や削除が可能であり、流用され続けていると、本当の著作者を判別することが難しくなる。
オブジェクト指向言語で書かれたプログラムの流用検出方法であって、
検査対象プログラムを記憶装置からメモリに読み込むステップと、
前記検査対象プログラムが複数の機能クラスによって継承される共通クラスに含まれる所定のメソッド名を含むか否かを判別するステップと、
前記検査対象プログラムが前記所定のメソッド名を含むと判別されたことに応答して、前記検査対象プログラムは特定のプログラムを流用して作成されたものであると判定し、流用に対応するための所定の処理を行うステップと、
を備えることを特徴とする。
前記検査対象プログラムの実行を開始するステップと、
前記各機能クラスに含まれるメソッドの処理の中で、前記共通クラスに含まれる所定のメソッド名を有する認証メソッドを呼び出すステップと、
前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれるか否かを判別するステップと、
前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれていないと判別されたことに応答して、前記検査対象のプログラムは特定のプログラムを不正に流用して作成されたものであると判定し、不正流用に対応するための所定の処理を行うステップと、
を備えることを特徴とする。
前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、初期化処理を行うメソッドであることを特徴とする。
前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、エラー処理を行うメソッドであることを特徴とする。
図1は、プログラムを実行するコンピュータ1の構成の一例を示す。
コンピュータ1は、CPU(Central Processing Unit)11とメモリ12とを含むコンピュータ本体10と、記憶部20と、入力部30と、表示部40とを有している。
記憶部20は、ハードディスク装置やDVD(Digital Versatile Disc)等の光ディスク装置等で構成される。記憶部20は、検査用プログラムと検査対象プログラムの両方、または検査対象プログラムを記憶する。
メモリ12は、RAM(Random Access Memory)やROM(Read Only Memory)等で構成される。CPU11は記憶部20から検査用プログラムと検査対象プログラムの両方、または検査対象プログラムをメモリ12に読み出し、メモリ12に記憶されている検査用プログラムまたは検査対象プログラムを実行する。
入力部30は、キーボードやマウス等で構成される。表示部40は、ディスプレイやプリンタ等で構成される。利用者は、表示部40に検査用プログラムや検査対象プログラムを表示させ、入力部30を用いて検査用プログラムや検査対象プログラムを作成し、また修正する。
第1の実施形態に係る検査対象プログラムは、複数の機能クラス100と共通クラス200とを含む。各機能クラス100はメソッド101を含み、共通クラス200は認証メソッド201を含む。
各機能クラス100は、共通クラス200を継承する。共通クラス200は、例えば基底クラスであるが、基底クラスを継承したクラスであってもよい。各機能クラス100は、システムやアプリケーションにおける所定の機能を実現するクラスである。
プログラムではエラー処理や初期化処理は開発者の意識に関わらず、行われる。特に、Java(登録商標)ではエラー処理として、必ず例外処理が行われる。エラー処理や初期化処理は類似のソースコードを記述することが多く、共通化の対象となることが多い。
なお、共通に実行される処理が初期化処理である場合、認証メソッド201はコンストラクタである。この場合には、Java(登録商標)の規約により認証メソッド201(コンストラクタ)の名前は共通クラス200のクラス名と同一でなければならない。
第1の実施形態では、各機能クラス100から共通クラス200を呼び出すため、認証メソッド201のメソッド名により独自性が見出せることになる。さらにメソッド名が独自であれば、中間コードなどからデコンパイルされても再生される。このため、デコンパイル後のソースコードをチェックすることによりプログラムが流用されたものであるか否かを判別することができる。
第2の実施形態に係る検査対象プログラムは、複数の機能クラス110と共通クラス210とを含む。各機能クラス110はメソッド111を含み、共通クラス210は認証メソッド211を含む。
機能クラス110と共通クラス210の関係は、第1の実施形態における機能クラス100と共通クラス200の関係と同様であり、説明を省略する。
本発明の第2の実施形態では、CPU11は検査対象プログラム自身を実行することによってその流用の有無を判定する。
検査対象のプログラムが開発元によって作成された正当なものである場合、当然ながらそれは認証メソッド201のメソッド名を含んでいる。このため、第1の実施形態に係るプログラムの流用検出方法では、CPU11は検査対象プログラムが開発元によって作成された正当なものであっても流用対応処理を行う(S103)。このため、第1の実施形態に係る流用検出方法によって流用と判定された後に、第2の実施形態に係る流用検出方法によって流用の有無を更に判定することにより、開発元によって作成された正当なものを流用と判定する誤判定を防ぐことができる。
第2の実施形態の第1の変形例に係る検査対象プログラムは、複数の機能クラス120と基底クラス220とを含む。各機能クラス120は、コンストラクタ121と、機能メソッド122とを含む。基底クラス220は、コンストラクタ221と、エラー処理メソッド222と、認証サブメソッド223とを含む。
各機能クラス120は、基底クラス220を継承する。各機能クラス120は、システムやアプリケーションにおける所定の機能を実現するクラスである。機能メソッド122は、基底クラス220毎に付与された認証キーを引数として基底クラス220に含まれるエラー処理メソッド222を呼び出す処理を含む。
Java(登録商標)はエラー処理として、必ず例外処理を行う。これらの例外処理は類似のソースコードを記述することが多く、共通化の対象となることが多い。そのため、基底クラス220にエラー処理メソッド222を作成する意味が発生する。機能メソッド122がエラー処理を行う場合はエラー処理メソッド222を実行することで処理の共通化が図られ、効率的なソースコードとすることができる。認証サブメソッド223は、エラー処理メソッド222から呼び出され、不正流用に対する処理の中断等を行う。
次に、CPU11は、呼び出されたエラー処理メソッド222の中で、もらった認証キーを引数として認証サブメソッド223を呼び出し(S302)、認証処理を行う。
一方、基底クラス220に付与された認証キーと異なる認証キーが引数に含まれていた場合、または認証キーが引数に含まれていなかった場合(S303:No)、CPU11は、検査対象のプログラムは流用されたものであると判定して処理を中断し、不正利用を防ぐ(S308)。
なお、エラー処理メソッド222は認証メソッドの一例である。エラー処理メソッド222と認証サブメソッド223を分離せず、エラー処理メソッド222の中で認証処理を行うこととしてもよい。
第2の実施形態の第2の変形例に係る検査対象プログラムは、複数の機能クラス130と基底クラス230とを含む。各機能クラス130は、コンストラクタ131と、機能メソッド132とを含む。基底クラス230は、コンストラクタ231と、認証サブメソッド232とを含む。
各機能クラス130は、基底クラス230を継承する。各機能クラス130は、システムやアプリケーションにおける所定の機能を実現するクラスである。コンストラクタ131は、基底クラス230毎に付与された認証キーを引数として基底クラス230に含まれるコンストラクタ231を呼び出す処理を含む。
初期化もエラー処理同様に、クラスを使う上で必ず実行される。ただし、初期化処理はメソッドが使われる場合がなく、コンストラクタと呼ばれるクラス名と同じ名称のメソッドが動作する。この初期化処理はクラスファイルが記憶部20からコンピュータ1のメモリ12にロードされるタイミングで実行される。機能クラス130は基底クラス230を継承して作成されているため、機能クラス130のコンストラクタ131が実行されると、基底クラス230のコンストラクタ231が実行される。
認証サブメソッド232は、基底クラス230のコンストラクタ231から呼び出され、不正流用に対する処理の中断等を行う。
次に、CPU11は呼び出された基底クラス230のコンストラクタ231の中で、もらった認証キーを引数として認証サブメソッド232を呼び出し(S402)、認証処理を行う。
一方、基底クラス230に付与された認証キーと異なる認証キーが引数に含まれていた場合、または認証キーが引数に含まれていなかった場合(S403:No)、CPU11は、検査対象のプログラムは流用されたものであると判定して処理を中断し、不正利用を防ぐ(S407)。
なお、基底クラス230のコンストラクタ231は認証メソッドの一例である。コンストラクタ231と認証サブメソッド232を分離せず、コンストラクタ231の中で認証処理を行うとしてもよい。
Claims (4)
- オブジェクト指向言語で書かれたプログラムの流用検出方法であって、
検査対象プログラムを記憶装置からメモリに読み込むステップと、
前記検査対象プログラムが複数の機能クラスによって継承される共通クラスに含まれる所定のメソッド名を含むか否かを判別するステップと、
前記検査対象プログラムが前記所定のメソッド名を含むと判別されたことに応答して、前記検査対象プログラムは特定のプログラムを流用して作成されたものであると判定し、流用に対応するための所定の処理を行うステップと、
を備えることを特徴とするプログラムの流用検出方法。 - 前記検査対象プログラムの実行を開始するステップと、
前記各機能クラスに含まれるメソッドの処理の中で、前記共通クラスに含まれる所定のメソッド名を有する認証メソッドを呼び出すステップと、
前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれるか否かを判別するステップと、
前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれていないと判別されたことに応答して、前記検査対象のプログラムは特定のプログラムを不正に流用して作成されたものであると判定し、不正流用に対応するための所定の処理を行うステップと、
を備えることを特徴とする請求項1に記載のプログラムの流用検出方法。 - 前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、初期化処理を行うメソッドであることを特徴とする請求項1または2に記載のプログラムの流用検出方法。
- 前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、エラー処理を行うメソッドであることを特徴とする請求項1または2に記載のプログラムの流用検出方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011156526A JP5670269B2 (ja) | 2011-07-15 | 2011-07-15 | プログラムの流用検出方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011156526A JP5670269B2 (ja) | 2011-07-15 | 2011-07-15 | プログラムの流用検出方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013025356A true JP2013025356A (ja) | 2013-02-04 |
JP5670269B2 JP5670269B2 (ja) | 2015-02-18 |
Family
ID=47783683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011156526A Expired - Fee Related JP5670269B2 (ja) | 2011-07-15 | 2011-07-15 | プログラムの流用検出方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5670269B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018131409A1 (ja) * | 2017-01-13 | 2018-07-19 | Kddi株式会社 | 情報処理方法、情報処理装置及びコンピュータ可読記憶媒体 |
WO2018131405A1 (ja) * | 2017-01-12 | 2018-07-19 | Kddi株式会社 | 情報処理装置、方法及びコンピュータ可読記憶媒体 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005165742A (ja) * | 2003-12-03 | 2005-06-23 | Matsushita Electric Ind Co Ltd | プログラム製作装置 |
US20060005166A1 (en) * | 2004-06-30 | 2006-01-05 | Atkin Steven E | Method, system and program product for determining java software code plagiarism and infringement |
EP2031821A2 (en) * | 2007-08-28 | 2009-03-04 | Kim, Chung-tae | System for tracing copyright of contents and control method thereof |
WO2011018871A1 (ja) * | 2009-08-14 | 2011-02-17 | 日本電気株式会社 | デジタルコンテンツ管理システム、電子透かし埋め込み装置、電子透かし検出装置、プログラム、およびデジタルコンテンツ管理方法 |
-
2011
- 2011-07-15 JP JP2011156526A patent/JP5670269B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005165742A (ja) * | 2003-12-03 | 2005-06-23 | Matsushita Electric Ind Co Ltd | プログラム製作装置 |
US20060005166A1 (en) * | 2004-06-30 | 2006-01-05 | Atkin Steven E | Method, system and program product for determining java software code plagiarism and infringement |
EP2031821A2 (en) * | 2007-08-28 | 2009-03-04 | Kim, Chung-tae | System for tracing copyright of contents and control method thereof |
WO2011018871A1 (ja) * | 2009-08-14 | 2011-02-17 | 日本電気株式会社 | デジタルコンテンツ管理システム、電子透かし埋め込み装置、電子透かし検出装置、プログラム、およびデジタルコンテンツ管理方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018131405A1 (ja) * | 2017-01-12 | 2018-07-19 | Kddi株式会社 | 情報処理装置、方法及びコンピュータ可読記憶媒体 |
JPWO2018131405A1 (ja) * | 2017-01-12 | 2019-07-25 | Kddi株式会社 | 情報処理装置、方法及びコンピュータ可読記憶媒体 |
US11521043B2 (en) | 2017-01-12 | 2022-12-06 | Kddi Corporation | Information processing apparatus for embedding watermark information, method, and computer readable storage medium |
WO2018131409A1 (ja) * | 2017-01-13 | 2018-07-19 | Kddi株式会社 | 情報処理方法、情報処理装置及びコンピュータ可読記憶媒体 |
JPWO2018131409A1 (ja) * | 2017-01-13 | 2019-11-07 | Kddi株式会社 | 情報処理方法、情報処理装置及びコンピュータ可読記憶媒体 |
US11586909B2 (en) | 2017-01-13 | 2023-02-21 | Kddi Corporation | Information processing method, information processing apparatus, and computer readable storage medium |
Also Published As
Publication number | Publication date |
---|---|
JP5670269B2 (ja) | 2015-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4976991B2 (ja) | 情報処理装置、プログラム検証方法及びプログラム | |
CN101908119B (zh) | 一种动态链接库dll文件的处理方法和装置 | |
EP3455764B1 (en) | Method and apparatus for dynamic executable verification | |
JP4844102B2 (ja) | サブプログラム及びそのサブプログラムを実行する情報処理装置 | |
JP7154365B2 (ja) | ソフトウェアコードをセキュアにするための方法 | |
US20080271001A1 (en) | Method of generating program, information processing device and microcomputer | |
CN103530563A (zh) | 用于更新经授权软件的系统和方法 | |
CN104866739A (zh) | 安卓系统中应用程序加密方法及系统 | |
US7036111B2 (en) | Code verification system and method | |
JP6435834B2 (ja) | 命令実行制御装置、命令実行制御方法 | |
US20190205528A1 (en) | Automated software application verification system | |
EP1722313A2 (en) | Method for creating unique identification for copies of executable code and management thereof | |
CN110717181B (zh) | 基于新型程序依赖图的非控制数据攻击检测方法及装置 | |
JP2005316599A (ja) | 割込制御装置 | |
JP5670269B2 (ja) | プログラムの流用検出方法 | |
US8423974B2 (en) | System and method for call replacement | |
CN107368713B (zh) | 保护软件的方法和安全组件 | |
KR20190105774A (ko) | 스마트 계약 언어에서 함수 호출의 안전성 향상 방법 | |
JP5177206B2 (ja) | ソフトウェアの改竄検出装置及び改竄検出方法 | |
JP2011123658A (ja) | ソフトウェア検査装置及びプログラム | |
CN116880884B (zh) | 电子设备的更新方法、更新设备以及可读存储介质 | |
KR102193017B1 (ko) | 메소드 생성기반 워터마킹을 이용한 소프트웨어 저작권보호 방법 | |
JP2010113566A (ja) | 情報処理装置、アクセス制御方法、及びプログラム | |
JP5177205B2 (ja) | ソフトウェアの改竄防止装置及び改竄防止方法 | |
CN112685697B (zh) | 一种防止安卓应用被破解篡改的方法及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131227 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140829 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140909 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141105 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20141202 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141217 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5670269 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |