JP5670269B2 - プログラムの流用検出方法 - Google Patents
プログラムの流用検出方法 Download PDFInfo
- Publication number
- JP5670269B2 JP5670269B2 JP2011156526A JP2011156526A JP5670269B2 JP 5670269 B2 JP5670269 B2 JP 5670269B2 JP 2011156526 A JP2011156526 A JP 2011156526A JP 2011156526 A JP2011156526 A JP 2011156526A JP 5670269 B2 JP5670269 B2 JP 5670269B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- diversion
- authentication
- class
- cpu
- 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.)
- Expired - Fee Related
Links
- 238000001514 detection method Methods 0.000 title claims description 19
- 238000000034 method Methods 0.000 claims description 116
- 238000012545 processing Methods 0.000 claims description 38
- 238000007689 inspection Methods 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 28
- 238000003672 processing method Methods 0.000 claims description 14
- 238000012360 testing method Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 description 43
- 238000012986 modification Methods 0.000 description 9
- 230000004048 modification Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 4
- 238000012966 insertion method Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 230000033772 system development Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
上述したように、システムの発注元にソースコードを開示すると、ソースコードを保護するために、ソースコードに対して、コメントでコピーライトを記載したり、その一部に特殊なコードを埋め込んだりする対策をとっていても、プログラムの開発元とは異なるベンダーがそのソースコードを不正に流用してプログラムを開発したり改良したりすることが可能となる。
更に、不用意なコピーが繰り返された結果、開発元のソースコードを不正に流用した開発者が権利を主張して、開発元を訴えることさえ可能となる。
特許文献1には、透かしが挿入されるプログラムのソースコードから、順序を入れ替えてもプログラムの仕様に影響がない命令文を複数個取り出し、その命令文と命令文との間に、ダミー変数に関する計算式を挿入し、命令文同士をランダムに入れ替え、入れ替えた命令文の順序を透かし情報として保存する透かし挿入方法が開示されている。
特許文献2には、識別情報(透かし情報)をビット列に変換し、ソースコードに含まれる空白または行間の長さをこのビット列に含まれる各ビットの1/0に合わせて変換するソフトウェア識別情報埋め込み方法が開示されている。例えば、1のビットはブランク1個または行間1行、0のビットはブランク2個または行間2行に変換する。
また、特許文献2に記載のソフトウェア識別情報埋め込み方法では、ファイルの文字コードが変更された場合に、透かしとして埋め込んだビット列が有効にならない可能性があり、ちょっとしたソースコードの変更に弱いことが想定される。さらに各所に埋め込んでいるために、ソースコードの修正に弱いことが想定される。また、デコンパイルなどを通して復元されたソースコードでは、透かし情報が消滅するおそれがある点は特許文献1に記載の透かし挿入方法と同様である。
しかし、従来のコメントによる著作者のコピーライト表記では、ソースコードを流用する際に安易にコピーライトの変更や削除が可能であり、流用され続けていると、本当の著作者を判別することが難しくなる。
CPUを備えるコンピュータを用いてオブジェクト指向言語で書かれた検査対象プログラムの流用を検出するプログラムの流用検出方法であって、
前記CPUが、
前記検査対象プログラムを記憶装置からメモリに読み込むステップと、
前記検査対象プログラムが、複数の機能クラスによって継承される共通クラスに含まれる認証メソッドのメソッド名であって、他の名前と識別可能な独自の当該メソッド名を含むか否かを判別するステップと、
前記検査対象プログラムが前記独自のメソッド名を含むと判別されたことに応答して、前記検査対象プログラムは特定のプログラムを流用して作成されたものであると判定し、流用に対応するための所定の処理を行うステップと、
を実行することを特徴とする。
CPUを備えるコンピュータを用いてオブジェクト指向言語で書かれた検査対象プログラムの流用を検出するプログラムの流用検出方法であって、
前記CPUが、
前記検査対象プログラムの実行を開始するステップと、
前記検査対象プログラムの各機能クラスに含まれるメソッドの処理の中で、複数の機能クラスによって継承される共通クラスに含まれる認証メソッドを呼び出すステップと、
前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれるか否かを判別するステップと、
前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれていないと判別されたことに応答して、前記検査対象のプログラムは特定のプログラムを不正に流用して作成されたものであると判定し、不正流用に対応するための所定の処理を行うステップと、
を実行することを特徴とする。
前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、初期化処理を行うメソッドであることを特徴とする。
前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、エラー処理を行うメソッドであることを特徴とする。
図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)
- CPUを備えるコンピュータを用いてオブジェクト指向言語で書かれた検査対象プログラムの流用を検出するプログラムの流用検出方法であって、
前記CPUが、
前記検査対象プログラムを記憶装置からメモリに読み込むステップと、
前記検査対象プログラムが、複数の機能クラスによって継承される共通クラスに含まれる認証メソッドのメソッド名であって、他の名前と識別可能な独自の当該メソッド名を含むか否かを判別するステップと、
前記検査対象プログラムが前記独自のメソッド名を含むと判別されたことに応答して、前記検査対象プログラムは特定のプログラムを流用して作成されたものであると判定し、流用に対応するための所定の処理を行うステップと、
を実行することを特徴とするプログラムの流用検出方法。 - CPUを備えるコンピュータを用いてオブジェクト指向言語で書かれた検査対象プログラムの流用を検出するプログラムの流用検出方法であって、
前記CPUが、
前記検査対象プログラムの実行を開始するステップと、
前記検査対象プログラムの各機能クラスに含まれるメソッドの処理の中で、複数の機能クラスによって継承される共通クラスに含まれる認証メソッドを呼び出すステップと、
前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれるか否かを判別するステップと、
前記呼び出された認証メソッドの処理の中で、前記共通クラスに付与された認証キーが引数に含まれていないと判別されたことに応答して、前記検査対象のプログラムは特定のプログラムを不正に流用して作成されたものであると判定し、不正流用に対応するための所定の処理を行うステップと、
を実行することを特徴とするプログラムの流用検出方法。 - 前記共通クラスに含まれる所定のメソッド名を有する認証メソッドが、初期化処理を行うメソッドであることを特徴とする請求項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 JP2013025356A (ja) | 2013-02-04 |
JP5670269B2 true 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) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3570222B1 (en) * | 2017-01-12 | 2023-02-08 | KDDI Corporation | Information processing device and method, and computer readable storage medium |
WO2018131409A1 (ja) * | 2017-01-13 | 2018-07-19 | Kddi株式会社 | 情報処理方法、情報処理装置及びコンピュータ可読記憶媒体 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005165742A (ja) * | 2003-12-03 | 2005-06-23 | Matsushita Electric Ind Co Ltd | プログラム製作装置 |
US7493596B2 (en) * | 2004-06-30 | 2009-02-17 | International Business Machines Corporation | Method, system and program product for determining java software code plagiarism and infringement |
KR100920795B1 (ko) * | 2007-08-28 | 2009-10-08 | 김정태 | 컨텐츠의 저작정보 추적 시스템 및 그 제어방법 |
WO2011018871A1 (ja) * | 2009-08-14 | 2011-02-17 | 日本電気株式会社 | デジタルコンテンツ管理システム、電子透かし埋め込み装置、電子透かし検出装置、プログラム、およびデジタルコンテンツ管理方法 |
-
2011
- 2011-07-15 JP JP2011156526A patent/JP5670269B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2013025356A (ja) | 2013-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4976991B2 (ja) | 情報処理装置、プログラム検証方法及びプログラム | |
CN101414339B (zh) | 保护进程内存及确保驱动程序加载的安全性的方法 | |
JP4844102B2 (ja) | サブプログラム及びそのサブプログラムを実行する情報処理装置 | |
JP7154365B2 (ja) | ソフトウェアコードをセキュアにするための方法 | |
CN108197476B (zh) | 一种智能终端设备的漏洞检测方法及装置 | |
CN104866739A (zh) | 安卓系统中应用程序加密方法及系统 | |
US7036111B2 (en) | Code verification system and method | |
JP2011170836A (ja) | 情報処理装置及びプログラム、情報処理方法、記録媒体 | |
US11269988B2 (en) | Automated software application verification system | |
JP6435834B2 (ja) | 命令実行制御装置、命令実行制御方法 | |
CN110717181B (zh) | 基于新型程序依赖图的非控制数据攻击检测方法及装置 | |
JP5670269B2 (ja) | プログラムの流用検出方法 | |
JP2005316599A (ja) | 割込制御装置 | |
CN107368713B (zh) | 保护软件的方法和安全组件 | |
CN105912893A (zh) | 一种基于Android系统微指令即时编译的加固方法 | |
KR101842263B1 (ko) | 어플리케이션에 대한 역공학 차단 방법 및 장치 | |
CN115422554A (zh) | 请求处理方法、编译方法和可信计算系统 | |
JP5374348B2 (ja) | ソフトウェア検査装置及びプログラム | |
KR101052735B1 (ko) | 메모리 조작유무를 감지하는 방법 및 이를 이용한 장치 | |
JP4728619B2 (ja) | ソフトウェアの改竄検出装置、改竄防止装置、改竄検出方法及び改竄防止方法 | |
JP5177206B2 (ja) | ソフトウェアの改竄検出装置及び改竄検出方法 | |
WO2020261430A1 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
JP2010113566A (ja) | 情報処理装置、アクセス制御方法、及びプログラム | |
KR102193017B1 (ko) | 메소드 생성기반 워터마킹을 이용한 소프트웨어 저작권보호 방법 | |
JP5177205B2 (ja) | ソフトウェアの改竄防止装置及び改竄防止方法 |
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 | Request for written amendment filed |
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 |