JP4818279B2 - プログラム処理装置、プログラム処理方法及びプログラム - Google Patents

プログラム処理装置、プログラム処理方法及びプログラム Download PDF

Info

Publication number
JP4818279B2
JP4818279B2 JP2007550973A JP2007550973A JP4818279B2 JP 4818279 B2 JP4818279 B2 JP 4818279B2 JP 2007550973 A JP2007550973 A JP 2007550973A JP 2007550973 A JP2007550973 A JP 2007550973A JP 4818279 B2 JP4818279 B2 JP 4818279B2
Authority
JP
Japan
Prior art keywords
program
executable
encrypted
functional part
function
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
Application number
JP2007550973A
Other languages
English (en)
Other versions
JPWO2007072568A1 (ja
Inventor
治 濱上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2007072568A1 publication Critical patent/JPWO2007072568A1/ja
Application granted granted Critical
Publication of JP4818279B2 publication Critical patent/JP4818279B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Description

本発明は、プログラム処理装置、プログラム処理方法及びプログラムに係り、特にプログラム製品を提供する際の処理に係るプログラム処理装置、プログラム処理方法及びプログラムに関する。
ソフトウエアプログラム(以下単に「プログラム」と称する)の提供方式として、実行形式のファイルを提供し、そのファイルの実行を許可するための特別な番号(キーコード)により当該実行形式のファイルを実行装置に実装(インストール)することを可能とする方式がある。
このような方式において、近年のプログラムの機能の拡大に伴い、プログラム製品の提供を受けるユーザ毎に、当該プログラムによって提供する機能を管理する必要性が生じている。
このような場合、ユーザ毎に、所望の機能部分の集合としてのソースプログラムを作成し、これを実行形式のファイル(所謂オブジェクトプログラムのファイルであり、以下単に「実行形式ファイル」と称する)に変換(コンパイル)して提供する。そしてこのようにして提供されたプログラムにつき、提供先の複数のユーザ毎に、その後に発生し得るプログラム更新等に関する管理を行う。
またプログラム製品の提供後にユーザから機能追加の要求等が生じた場合、対応する新たなソースプログラムファイルを作成し、これを上記同様実行形式に変換して提供する。
特開2003−280754号公報
このようなプログラム製品の提供に係るシステムでは、複数のユーザ毎に、提供対象としての異なる機能仕様のプログラムを個々に管理する必要があり、管理が煩雑となる可能性がある。
またユーザからの機能追加の要求等に応じ、その都度当該機能に対応する部分を追加したソースプログラムを作成してこれを実行形式に変換した上でユーザに提供し直す場合、余分な手間を要する。
このような問題点を解決するため予め全ての機能部分を含む一のソースプログラムを作成しておく方法が考えられる。この場合、各ユーザ毎に、所望機能部分以外の部分を暗号化して提供する。しかしながらこの方法の場合、暗号化部分された部分を含んだ状態のソースプログラムは、これを実行形式ファイルに変換する際に当該暗号化部分によりエラーを生ずるため、実行形式ファイルに変換することが困難となることが考えられる。
本発明はこのような問題点に鑑みてなされたものであり、異なる機能を所望する複数のユーザに対して提供するプログラムの管理の一元化を可能とし、かつ新たに機能追加の要求等が生じた場合であっても、その都度対応するソースプログラムを作成することを要しないようなプログラム提供システムを提供することを目的とする。
本発明によれば、少なくとも一部分が暗号化されたプログラムに対し、当該暗号化部分が暗号化された状態で当該プログラムを実行形式ファイル化可能とするための所定の実行形式ファイル化可能化処理を施す構成、或いは少なくとも一部分が暗号化された後に当該暗号化部分が暗号化された状態で当該プログラムを実行形式ファイル化可能とするための所定の実行形式ファイル化可能化処理が施されたプログラム製品に対して当該暗号化部分の復号に際し前記所定の処理による影響を除去するための所定の除去処理を施す構成を設けた。
このように本発明ではプログラム製品の提供時、暗号化部分を含んだ状態での実行形式ファイル化を可能にするための処理を予め行っておく。このような方式を適用することにより、プログラム提供者は予め全ての機能を含んだ一のソースプログラムを作成しておけばよい。そして各ユーザにプログラム製品を提供する際には、上記一のソースプログラム中、当該ユーザが所望する機能に関する部分以外の部分を暗号化する。そしてその後、上記実行形式ファイル化可能化処理を行った上でユーザに対してプログラム製品を提供する。
ユーザはこのように所望の機能部分以外の部分が暗号化され後更に実行形式ファイル化可能化処理が施されたソースプログラムの提供を受ける。このように実行形式ファイル化可能化処理が施されているため、ユーザは所望の機能部分以外の部分が暗号化された状態で当該提供に係るソースプログラムを実行形式ファイルに変換することが可能となる。
その結果ユーザはこのように実行形式に変換されて得られたオブジェクトプログラムを自己の情報処理装置、例えばパーソナルコンピュータ等にインストールして実行することができるようになる。そして当該オブジェクトプログラムに含まれている、当該所望の機能部分の実行が可能となる。
この場合当該オブジェクトプログラムの当該所望の機能部分以外の部分については上記の如くユーザに提供される前に暗号化されているため、当該ユーザはこれを実行することができない。
またユーザから更に他の機能も使用したい旨の要求がなされることが考えられる。そのような場合、プログラム提供者は当該ユーザに対し、当該他の機能部分を復号するための復号化キーを提供する。これを受けたユーザは当該復号化キーを使用して前記当初の提供に係るプログラムに含まれる当該他の機能部分を復号することができる。その結果、当該ユーザは当該他の機能部分についても実行が可能となる。
本発明によれば上記の如くプログラム提供者は予め全ての機能部分を含む一のソースプログラムを作成しておく。そして異なる機能部分に対する要求を有する複数のユーザに対し、該当する機能部分以外の部分を暗号化した上で実行形式ファイル化可能化処理を行って当該ソースプログラムを提供する。
その結果プログラム提供者は、複数のユーザからの異なる機能部分に対する要求に応じて対応する異なる機能のみを有する複数のプログラムをそれぞれ提供して個別に管理する必要がなくなる。
すなわちプログラム提供者は複数のユーザからの異なる機能部分に対する要求に対しても、上記全ての機能部分を含む一のソースプログラムを提供すればよい。但しその際、上記の如く所望の機能部分以外の部分を予め暗号化した上で実行形式ファイル化可能化処理を行っておく。その結果各ユーザは所望の機能部分のみ実行可能となり、その意味では各ユーザ毎に所望の機能部分のみを含むプログラムを個別に提供する場合と同様の効果が得られる。
またプログラム提供者は、複数のユーザによる異なる機能部分に対する要求に対し、全ての機能部分を含む一のソースプログラムを提供して管理する。したがってプログラム提供者におけるプログラム作成及びその後の管理に要する手間が効果的に削減可能となる。
参考例によるプログラム処理システムを説明するための図(その1)である。 図1に示す参考例によるプログラム処理システムを説明するための図(その2)である。 本発明の実施例によるプログラム処理システムを説明するための図(その1)である。 図3の実施例によるプログラム処理システムを説明するための図(その2)である。 本発明の実施例によるプログラム処理システムにおける暗号化処理の処理フローチャートである。 図5の実施例によるプログラム処理システムにおける復号化処理の処理フローチャートである。 ログラム処理システムを実施可能なコンピュータの一例を示すブロック図である。
10 暗号化前のソースプログラム
11 復号化後のソースプログラム
20 暗号化後のソースプログラム
100 プログラム暗号化システム
200 プログラム復号化システム
本発明の実施の形態によれば、プログラム提供方式において、ユーザは機能単位に暗号化されたソースプログラムを受取り、必要となる機能に関する復号化キーを入手し、その部分のみの復号化を行うことが可能となる。その結果、その機能が使用可能な状態で含まれたソースプログラムを得ることができる。
このようなシステムによれば、プログラム提供者はユーザごとにソースプログラムを管理する必要がなくなり、ソースプログラムの一元管理が可能となり、ファイルの管理環境の簡便化が可能となる。
本発明の実施の形態によるプログラム暗号化システムは、暗号化されていないソースプログラムを、機能単位に暗号化したソースプログラムに変換する機能を有する。
またこのプログラム暗号化システムは、このように機能単位に暗号化されたソースプログラムを、実行形式ファイルに変換時にエラーが発生しないよう、予め所定の実行形式ファイル作成制御コードを機能単位に埋め込む機能を有する。
このシステムによれば、このようにしてユーザに対して提供された暗号化ソースプログラムが仮に第三者の手に渡った場合であっても、当該第三者は所定の復号化キーを手に入れない限り暗号化部分の復号化はできない。したがって当該第三者が該当する機能を利用することはできない。
このように本発明の実施の形態によれば、ユーザ毎に個別にプログラムを作成してこれを管理する方式に代えて、全てのユーザに対し一つのプログラムを提供するように方式を提供する。
この場合ユーザに対して提供されるのは全機能を実装したソースプログラムであり、そのソースプログラムをユーザ環境で実行形式ファイル化することにより、ユーザによる当該機能の実行が可能となる。
上記プログラム暗号化システムはユーザ毎に実行可能な機能を制限する機能を有する。
このプログラム暗号化システムによれば、全機能搭載のプログラムが、その各機能部分毎に異なった暗号化キーにより暗号化されるようになる。
またこのようにして得られた各暗号化部分には、当該暗号化部分を含むソースプログラムの実行形式ファイルへの変換時にエラーを生じないよう、予め所定の制御文字列(上記所定の実行形式ファイル作成制御コード)が自動的に埋め込まれる。
その結果ユーザはこのように機能単位に暗号化されたソースプログラムを受取る。そして必要な機能部分について、上記暗号化キーに対応する復号化キーを入手することにより、その部分のみについて復号化を行うことが可能となる。その結果、当該機能部分が実行可能な状態で含まれたソースプログラムを得ることができる。そしてこのソースプログラムを実行形式ファイルに変換することにより、ユーザは該当機能を使うことが可能となる。
以下図と共に参考例に係るプログラム提供システムにつき、図1,図2とともに説明する。
図1は参考例に係る、暗号化されたソースプログラムを提供する方式について説明するための図である。
この方式では最初にソースプログラム10の中に機能A,B,Cにそれぞれ対応した機能部分10A,10B,10Cを作り込む。
そしてこれをプログラム暗号化システム100にて暗号化する。
具体的にはソースプログラム10の機能単位、すなわち機能部分10A,10B,10C毎に暗号化を行い、各々に該当する復号化キー30A,30B,30Cよりなる復号化キー情報30を生成する。
このように3種類の機能部分10A,10B,10Cを含むソースプログラムを入力した場合に当該プログラム暗号化システム100によって生成されるのは、対応する3種類の復号化キー30A,30B,30Cと、機能部分毎に異なる3種類の暗号化によって得られた、暗号化されたソースプログラムの機能部分20A,20B及び20Cとを含む、ユーザ提供用のソースプログラム20である。
又図1に示す如く、当該暗号化後のソースプログラム20には上記暗号化された機能部分20A,20B及び20C以外に、各機能部分毎に、実行ファイル作成制御コード25A,25B及び25Cが埋め込まれている。これらの実行ファイル作成制御コード25A,25Bは上記実行形式ファイル作成時にエラーを生じないように埋め込まれる制御文字列に該当するものである。
次に図2とともに、図1とともに上述した如くにプログラム暗号化システム100の機能によって暗号化されたソースプログラム20を受領したユーザが実際にこれを利用する際の処理について説明する。
まずユーザは、ソースプログラム提供者に対し、必要機能部分に係る復号化キー情報を要求する。
ここでは一例として、ユーザが機能Aに係る機能部分20Aを所望しているとする。この場合、該当する復号化キー情報30Aをプログラム提供者に対し要求する。
その結果ユーザが当該復号化キー情報30Aを受領した場合、当該復号化キー情報30Aとともに、上記暗号化されたソースプログラム20をプログラム復号化システム200に入力する。
その結果プログラム復号化システム200では、該当する機能部分20Aのみを復号化する。その結果、当該機能部分20A及び対応する実行形式ファイル作成制御コード25A以外の部分、すなわち暗号化された機能部分20B及び20C並びにそれぞれに対応する実行形式ファイル作成制御コード25B及び20Cはそのままの状態の、復号化処理後のソースプログラム11が得られる。
次にユーザは同ソースプログラム11を実行形式ファイルに変換する。その結果当該復号化された機能部分10Aの実行が可能となり、該当する機能Aを得ることができる。
以下図3乃至6とともに、本発明の実施例に係るプログラム提供システムにつき説明する。
図3はプログラム提供者がユーザに提供するためのソースプログラムを暗号化する処理を説明するための図である。
暗号化前のソースプログラム10は、異なる機能を提供する3個の機能部分10A,10B,10Cよりなる。
ここで各機能部分10A,10B,10Cによる機能A、B,Cは、それぞれ図示の如く、整数a、b、cの入力を受け、その加算演算結果d=a+b+cを出力(機能A)、減算演算結果d=a−b−cを出力(機能B)、及び乗算演算結果d=a*b*cを出力(機能C)するものである。
なおこの実施例では暗号化するべき機能部分は上記3個の機能部分10A,10B,10Cのうち、機能部分10Bを除いた他の機能部分10A,10Cである。
暗号化は暗号化キーとしてのキー情報40を用いてなされる。当該キー情報40は、暗号化する機能部分10A,10Cの各々に対し、異なる態様にて暗号化を行うための情報を含むものとされる。
これら機能部分10A,10Cそれぞれの暗号化を行うための情報は、キー識別情報Key−xxx1及びKey−xxx2によってそれぞれ識別される。そして後述する図4に示される復号化キー情報70も、これに対応して暗号化する機能部分10A,10C毎に異なる内容の復号化キー情報を含むものとされる。その結果この復号化キー情報70のうち、機能部分10Aに係る復号化キー情報(Key−xxx1)によっては機能部分10Aに係る復号化は可能だが、機能部分10Cについては復号化ができない。同様に機能部分10Cに係る復号化キー情報(Key−xxx1)によっては機能部分10Cに係る復号化は可能だが、機能部分10Aについては復号化ができない。したがってユーザに対する情報開示の範囲を必要最小限度の範囲に留めることが可能となる。
これら暗号化前のソースプログラム10とキー情報40とに対して暗号化・キー生成処理50がなされ、暗号化後のソースプログラム20が得られる。
図示の如く、当該暗号化後のソースプログラ20は、上記暗号化前のソースプログラム10に含まれていた機能部分10B;同じく上記暗号化前のソースプログラム10に含まれていた機能部分10A,10Cがそれぞれ該当するキー情報40の部分(Key−xxx1、Key−xxx2)により暗号化された暗号化機能部分20A―2,20C―2;それら暗号化機能部分20A−2,20C−2のそれぞれの暗号化に係るキー識別情報20A−1,20C−1;上記暗号化機能部分20A−2,20C−2及びキー識別情報20A−1,20C−1を「コメント」として認識させるための記号部分25A−1,25C−1;並びに上記各暗号化機能部分20A−2,20C−2に係る機能A,Cにそれぞれ対応する実行形式ファイル作成制御コード25A―1,25C−1よりなる。
プログラム提供者はここで得られた、暗号化されたソースプログラム20を、この状態でユーザに提供する。
ユーザは同暗号化されたソースプログラム20を、その状態で実行形式ファイルへ変換することが可能である。
すなわち同暗号化されたソースプログラム20には、上記の如く実行形式ファイル作成制御コード25A−1,25C−1が付加されている。
これらはスタブ関数と称されるものであり、その形式上、暗号化前のソースプログラム10の対応する機能部分10A,10Cの、各々の1行目と同様とされている。その結果、当該暗号化後のソースプログラム20は、形式上、暗号化前のソースプログラム10と同様のものとなっている。
すなわち暗号化後のソースプログラム20はこれらスタブ関数としての記号部分25A−1,25C−1内に、暗号化前のソースプログラム10の各機能部分10A,10Cのそれぞれの一行目「int sub001(int a,int b,int c){」、「int sub003(int a,int b,int c){」に対応する部分「int sub001(int a,int b,int c){」、「int sub003(int a,int b,int c){」を有し、引き続き形式的な演算機能部分(return(0))を有する。このため、当該暗号化後のソースプログラム20は暗号化前のソースプログラム10同様、実行形式ファイルへの変換の際にエラーを生ずることなく、同変換の実施が可能となる。
しかしながらこの場合、機能部分10A,10Cは暗号化された20A−1,20C−1の状態であるため、実行形式ファイルへ変換後もこれらに対応する機能を実行させることはできない。したがって実施形式ファイルへ変換後は、暗号化前の機能部分10A,10Cの代わりに、それぞれスタブ関数としての記号部分25A−1,25C−1の機能により、各々、整数a、b、cの入力を受けて0を出力する形式的な演算機能(return(0))が実行される。
すなわち、上記の如くこれら機能部分10A,10Cに対応する暗号化機能部分20A−2,20C−2及び対応するキー識別情報20A−1,20C−1は、これらをコメントとして認識させるための記号25A−2,25C−2によってコメント化されている。その結果、これらは実行形式ファイルへの変換の際も、そのままコメントとして残される。このようにすることにより、実行形式ファイルへ変換時にエラーの発生が防止される。したがってこの暗号化ソースプログラム20の実行形式ファイルへの変換の結果、機能部分10Bのみが実行形式ファイルへと変換されることとなり、対応する機能Bのみの実行が可能となる。
このように本発明の実施例においては、暗号化機能部分20A−2,20C−2の前後の部分における、上記スタブ関数としての記号部分25A−1,25C−1、及び暗号化機能部分20A−1,20C−1をコメントとして認識させるための記号25A−2,25C―2の挿入がなされている。その結果、当該暗号化ソースプログラム20は暗号化機能部分を含んだ状態での実行形式ファイルへの変換、すなわち実行ファイル化が可能とされている。
ここでマスターキー情報ファイル30とは、このようにして暗号化された、暗号化機能部分20A−2,20C−2をそれぞれ復号化するための情報が書き込まれたものであり、それらはそれぞれ上記キー識別情報Key−xxx1,Key−xxx2に対応する。
プログラム提供者はソースプログラム10を暗号化した際に得られるこのマスターキー情報ファイル30を保持し、暗号化後のソースプログラム20をユーザに提供する際、或いは提供後、ユーザの依頼に係る機能に対応するキー情報を抽出して後述する復号化キー情報ファイル70に書き込み、これを当該ユーザに提供する。ユーザは該当するキー情報を使用して対応する機能部分を復号することによりその機能が利用可能となる。他方当該キー情報ではそれ以外の機能部分を復号してその機能を利用することはできない。
次に、図4とともに、このようにして作成され提供された暗号化ソースコード20をユーザが利用する際の手順について説明する。
ここでは一例として、ユーザは、上記の如く元々暗号化されておらずそのまま利用可能な機能部分10Bの機能B以外に、機能Aの利用を希望しているものと仮定する。
したがってこの場合、当該ユーザはプログラム提供者に対し、機能Aの利用を可能とするための復号化キー情報ファイル70を要求する。そしてこのようにしてプログラム提供者から得られた復号化キー情報ファイル70と、上記暗号化ソースプログラム20とに対し、復号化処理60を行う。
上記の如くユーザが要求して得た復号化キー情報ファイル70には機能Aを有効にするためのキー情報、すなわち機能部分20A−2を復号化するために必要となる、Key−xxx1で識別されるキー情報が書き込まれている。したがってこの復号化処理60では該当する暗号化機能部分20A−2が復号化され、その結果復号化ソースプログラム11が得られる。
同復号化ソースプログラム11では、今回の復号化によって得られた機能部分10Aが、実行形式ファイル作成制御コード25A−1、暗号化機能部分20A−2、キー情報20−1及びそれらの前後のコメント化記号25−2に置き換わっている。その結果、当該復号化後のソースプログラム11は上記同様、元のソースプログラム10と同様の形式を有する。
すなわちこの復号化ソースプログラム11は、元のソースプログラム10の各機能部分10A,10B,10Cのそれぞれの一行目「int sub001(int a,int b,int c){」、「int sub002(int a,int b,int c){」、「int sub003(int a,int b,int c){」に対応する部分「int sub001(int a,int b,int c){」、「int sub002(int a,int b,int c){」、「int sub003(int a,int b,int c){」をそれぞれ有し、引き続き対応する実質的な演算機能部分を有する。このため当該復号化ソースプログラム11は元のソースプログラム10同様、実行形式ファイルへの変換が、エラーを生ずることなく実施可能となる。
この復号化ソースプログラム11においてはこのように復号化によって得られた機能部分10Aが、元々暗号化されていなかった機能部分10Bとともに有効な機能部分として含まれている。
これら有効な機能部分10A,10Bは、同ソースプログラム11が実行形式ファイル化される際に実行形式に変換され、実行可能となる。他方暗号化機能部分20C−2は復号化ソースプログラム11においても暗号化されたままとされ、上記の如くコメント化記号25C−2によってコメントとして認識される状態となっている。その結果暗号化ソースプログラム20における場合同様、当該ソースプログラム11の実行形式ファイル化の際にはコメントとして認識されることにより、そのままの状態が維持される。その結果、当該機能部分20C−2は実行され得ず、該当する機能Cは得られない。
このように本発明の実施例によれば、プログラム提供者は全てのユーザに対して一のソースプログラム10を用意し、各機能部分を暗号化した状態で各ユーザに提供する。そしてユーザ毎に所望の機能が異なる場合には、該当する機能に対応する機能部分の復号化に必要なキー情報を併せて提供する。
これを受けたユーザは当該キー情報により、当初提供された暗号化ソースプログラム中、自己が必要とする機能部分を復号することができる。そしてこのようにして得られた復号化ソースプログラムでは、暗号化機能部分に対応して実行形式ファイル作成制御コード及びコメント化記号25C−2が挿入されている。その結果暗号化機能部分を含んでいても実行形式ファイル化の際にエラーを生ずることがない。その結果ユーザは、当該復号化ソースプログラムが実行形式ファイル化されたオブジェクトプログラムにより、必要としている機能が得られる。
またその後同じユーザが、他の暗号化されたままの機能部分に係る機能についても所望するようになった場合、プログラム提供者に対し該当する復号化キー情報を要求してこれを入手する。その結果上記同様、当初提供された暗号化ソースプログラム中、該当する機能部分を更に復号することができる。
そしてこのようにして得られた復号化ソースプログラムにおいても、残存する暗号化機能部分に対応して実行形式ファイル作成制御コード及びコメント化記号が挿入されており、上記同様実行形式ファイル化の際にエラーを生ずることがない。その結果ユーザは当該復号化ソースプログラムが実行形式ファイル化されたオブジェクトプログラムにより、必要としている機能を得られる。
次に、図3とともに上述した、プログラム提供者においてソースプログラム10を暗号化する際の手順につき、図5とともに詳細に説明する。
ステップS1では図1に示されるプログラム暗号化システム100に対し、当該ソースプログラム10に含まれる機能部分のうち、暗号化する機能部分を選択するための指示を入力する。これを受けた同システム100は、指示された選択機能部分を検索し(ステップS2)、その結果該当部分が得られた場合(ステップS3のYes)、ステップS4に移行する。
ステップS4では上記スタブ関数(25A−1,25C−1等)を作成し、これを該当機能部分の手前部分に埋め込む(ステップS5)。その結果スタブ関数が埋め込まれたソースプログラムファイル20−2が得られる。次に、キー情報40が提供され、これに基づいてマスターキー情報を作成し(ステップS6)、これをマスターキー情報ファイル30に書き込む(ステップS7)。
次にステップS8では、当該マスターキーのキー識別情報(20A−1,20C−1等)を、現在処理中のソースプログラムの、上記スタブ関数に続く部分に書き込む。そしてステップS9では当該マスターキー情報に対応するキー情報40を適用して上記該当機能部分を暗号化する。そしてここで得られた暗号化機能部分(20A−2,20C−2等)を、処理中のソースプログラムファイルに埋め込む(ステップS10)。そしてこのようにして得られた暗号化ソースプログラム20のファイルが得られる。
また、ステップS1にて入力された指示中に、更に暗号化するべき機能部分の指定があった場合、これに応じてステップS2乃至S10を繰り返す。
ステップS3にて暗号化するべき機能部分を全て処理し終わったと判定された場合、或いは該当部分が処理中のソースプログラムファイル10中に見つからなかった場合、当該暗号化処理を終了する(ステップS11)。
次に、図4とともに上述した、ユーザにおいて暗号化ソースプログラム20を復号化する際の手順について、図6とともに詳細に説明する。
ユーザはプログラム提供者に要求して受け取った、当初提供された暗号化ソースプログラム20中の必要とする機能に係る機能部分を復号化するためのキー情報が書き込まれた復号化キー情報ファイル70を、プログラム復号化システム200に入力する。
同復号化システム200は、ステップS31にて当該復号化キー情報ファイル70の判定を行う。すなわち、ステップS32にて当該ファイルのデータ形式等をチェックし、所定の復号化キー情報ファイル70の形式的条件を満たしいているか否かを判定する。
その結果問題がない場合(ステップS32のYes)、次にステップS33にて、ユーザから更に提供される暗号化ソースプログラム20―3の内容に基づき、上記復号化キー情報ファイル70に書き込まれているキー情報に該当する機能部分が含まれるか否かを判定する(ステップS33)。ここでは図4に示されるキー識別情報Key−xxx1、20A−1,Key−xxx2、20C−1等により、同判定を下す。
その判定の結果、該当機能部分が存在する場合(ステップS33のYes)、復号化キー情報ファイル70に書き込まれたキー情報を使用して該当機能部分(20A−2,20C−2等)を復号化する(ステップS34)。その結果、元の機能部分(10A,10C等)が得られる。
次に、ここで復号化した機能部分に対応して設けられていた実行形式ファイル作成制御コードとしてのスタブ関数(25A−1、25C−1等)を除去し除去後のソースプログラム20−4を得る(ステップS35)。同スタブ関数は対応する機能部分が暗号化され無効化された状態で所定のプログラム形式を維持するために設けられたものであり、当該機能部分がこのように復号化され有効化された段階では最早不要である。またこのとき、同様に最早不要なキー識別情報(20A−1,20C−1等)及びコメント化記号25A−2,25C−2等)も削除して復号化データを作成する(ズテップS36)。
そしてこのようにして作成された、復号化された機能部分(10A,10C等)は、処理中のソースプログラム中の、元の暗号化機能部分(20A−2,20C−2等)と置き換えられる(ステップS37)。その結果、復号化されたソースプログラム11のファイルが得られる。
他にも復号化キー情報ファイル70に書き込まれた復号化キー情報に対応する暗号化機能部分が上記復号化されたソースプログラム11中に残存している場合、これについてステップS33乃至S38を繰り返す。
他方、ステップS32又はステップS33の判定結果がNoとなった場合、この処理を終了する(ステップS38)。
次に図7とともに、上記プログラム暗号化システム100或いはプログラム復号化システム200として適用可能なコンピュータにつき説明する。
図7のコンピュータは、情報処理の制御を実施するCPU1;CPU1により記憶手段として利用されるメモリ2;ユーザに対する情報の表示を行うディスプレイ4;ユーザが各種指示入力等を行うための操作部3;プログラム、各種データを格納するためのハードディスク装置5;可搬情報記録媒体としてのCD−ROM6Aを媒介として外部とのプログラム、各種データの授受をおこなうためのCD−ROMドライブ6;インターネット、LAN等の通信網9を介して外部サーバとのプログラム、各種データの授受をおこなうためのモデム7よりなる。
上記プログラム暗号化システム100或いはプログラム復号化システム200としてこのコンピュータを適用する際、まず図1乃至6とともに説明した同システム100又は200の動作をコンピュータに実行させるための命令よりなるプログラムを作成する。
次に、このプログラムをCD−ROM6Aに書き込み、CPU1の制御の下、CD−ROMドライブ6を介してハードディスク装置5に転送することにより、同コンピュータにロードする。
或いは外部サーバから通信網9を介し、同プログラムを、CPU1の制御の下、ハードディスク装置5に転送することにより、同コンピュータにロードする。
その後、CPU1がユーザによる操作部3を介した指示入力等に応じ、ハードディスク装置5から同プログラムをメモリ2にロードし、その命令を順次実行する。その結果、上記プログラム暗号化システム100或いはプログラム復号化システム200として同コンピュータが動作する。
なお本発明の実施例は上述のものに限られず、本発明の基本的な技術思想を具現化した他の様々な形態の実施例が可能であることは言うまでもない。

Claims (4)

  1. 複数の機能部分のうちの少なくとも一の機能部分が暗号化されたプログラムに対し、当該暗号化された少なくとも一の機能部分は実行形式に変換されず、暗号化されていない機能部分が実行形式に変換される、当該プログラムの実行形式ファイル化を可能とする実行形式ファイル化可能化処理であって、前記暗号化された少なくとも一の機能部分につき、形式的な演算を行う機能を有するコード及び当該機能部分をコメントとして認識させる機能を有するコードを挿入する実行形式ファイル化可能化処理を施す実行形式ファイル化可能化部、及び
    前記実行形式ファイル化可能化処理が施されたプログラムに対し、前記暗号化された少なくとも一の機能部分の復号に際し、前記実行形式ファイル化可能化処理において挿入された前記形式的な演算を行う機能を有するコード及び当該機能部分をコメントとして認識させる機能を有するコードを除去して記実行形式ファイル化可能化処理による影響を除去する処理を施す除去処理部を有するプログラム処理装置。
  2. 実行形式ファイル化可能化部が、複数の機能部分のうちの少なくとも一の機能部分が暗号化されたプログラムに対し、当該暗号化された少なくとも一の機能部分は実行形式に変換されず、暗号化されていない機能部分が実行形式に変換される、当該プログラムの実行形式ファイル化を可能とする実行形式ファイル化可能化処理であって、前記暗号化された少なくとも一の機能部分につき、形式的な演算を行う機能を有するコード及び当該機能部分をコメントとして認識させる機能を有するコードを挿入する実行形式ファイル化可能化処理を施す段階、及び
    除去処理部が、前記実行形式ファイル化可能化処理が施されたプログラムに対し、前記暗号化された少なくとも一の機能部分の復号に際し、前記実行形式ファイル化可能化処理において挿入された前記形式的な演算を行う機能を有するコード及び当該機能部分をコメントとして認識させる機能を有するコードを除去して前記実行形式ファイル化可能化処理による影響を除去する処理を施す段階を有するプログラム処理方法。
  3. 暗号化部が、複数の機能部分を含むプログラムにつき、前記複数の機能部分のうちの少なくとも一の機能分を暗号化する段階と、
    実行形式ファイル化可能化部が、前記複数の機能部分のうちの少なくとも一の機能部分が暗号化されたプログラムに対し、前記暗号化された少なくとも一の機能部分は実行形式に変換されず、暗号化されていない機能部分が実行形式に変換される、当該プログラムの実行形式ファイル化を可能とする実行形式ファイル化可能化処理であって、前記暗号化された少なくとも一の機能部分につき、形式的な演算を行う機能を有するコード及び当該機能部分をコメントとして認識させる機能を有するコードを挿入する実行形式ファイル化可能化処理を施す段階とを有するプログラム処理方法。
  4. 複数の機能部分のうちの少なくとも一の機能部分が暗号化されたプログラムに対し、前記暗号化された少なくとも一の機能部分は実行形式に変換されず、暗号化されていない機能部分が実行形式に変換される、当該プログラム実行形式ファイル化を可能とする実行形式ファイル化可能化処理であって、前記暗号化された少なくとも一の機能部分につき、形式的な演算を行う機能を有するコード及び当該機能部分をコメントとして認識させる機能を有するコードを挿入する実行形式ファイル化可能化処理を施す手段、及び
    前記実行形式ファイル化可能化処理が施されたプログラムに対し、前記暗号化された少なくとも一の機能部分の復号に際し、前記実行形式ファイル化可能化処理において挿入された前記形式的な演算を行う機能を有するコード及び当該機能部分をコメントとして認識させる機能を有するコードを除去して前記実行形式ファイル化可能化処理による影響を除去する処理を施す手段としてコンピュータを動作させる命を有するプログラム。
JP2007550973A 2005-12-22 2005-12-22 プログラム処理装置、プログラム処理方法及びプログラム Expired - Fee Related JP4818279B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2005/023654 WO2007072568A1 (ja) 2005-12-22 2005-12-22 プログラム処理装置、プログラム処理方法、プログラム及びコンピュータ読取可能な記録媒体

Publications (2)

Publication Number Publication Date
JPWO2007072568A1 JPWO2007072568A1 (ja) 2009-05-28
JP4818279B2 true JP4818279B2 (ja) 2011-11-16

Family

ID=38188359

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007550973A Expired - Fee Related JP4818279B2 (ja) 2005-12-22 2005-12-22 プログラム処理装置、プログラム処理方法及びプログラム

Country Status (3)

Country Link
US (1) US20080301654A1 (ja)
JP (1) JP4818279B2 (ja)
WO (1) WO2007072568A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019053146A (ja) * 2017-09-14 2019-04-04 日本電気株式会社 ソースプログラム保護システム及び方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2525301A1 (en) * 2011-05-19 2012-11-21 Thomson Licensing Syntax-preserving software protection
JP5574550B2 (ja) * 2012-11-22 2014-08-20 京セラドキュメントソリューションズ株式会社 情報秘匿化方法および情報秘匿化装置
CN113987470B (zh) * 2021-10-29 2022-12-23 山西大鲲智联科技有限公司 可执行文件处理方法、装置、电子设备和计算机可读介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10260903A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd グループ暗号方法、及びファイル暗号システム
JP2004265037A (ja) * 2003-02-28 2004-09-24 Nec Corp コンピュータプログラムの編集システム及びその方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5201050A (en) * 1989-06-30 1993-04-06 Digital Equipment Corporation Line-skip compiler for source-code development system
US20010037450A1 (en) * 2000-03-02 2001-11-01 Metlitski Evgueny A. System and method for process protection
CN1241083C (zh) * 2000-04-28 2006-02-08 莫尔德弗洛公司 启用网络的应用软件系统和方法
CA2447451C (en) * 2000-05-12 2013-02-12 Xtreamlok Pty. Ltd. Information security method and system
WO2002019610A2 (en) * 2000-09-01 2002-03-07 Sherwood International Group Limited Method and system for dynamic encryption of a web-page
US6931634B2 (en) * 2000-12-21 2005-08-16 Silicon Metrics Corporation Encrypted compiler
JP2003280754A (ja) * 2002-03-25 2003-10-02 Nec Corp 隠蔽化ソースプログラム、ソースプログラム変換方法及び装置並びにソース変換プログラム
AU2003241297A1 (en) * 2002-04-15 2003-11-03 Core Sdi, Incorporated Security framework for protecting rights in computer software
NO20023194D0 (no) * 2002-07-01 2002-07-01 Sospita As Fremgangsmåte og apparatur for eksekvering av programvareapplikasjoner i et multiprosessormiljö
NO20023860D0 (no) * 2002-08-14 2002-08-14 Sospita As Fremgangsmåte for å generere og prosessere dataströmmer som inneholder krypterte og dekrypterte data
US20050289520A1 (en) * 2004-06-29 2005-12-29 Redvers Consulting, Ltd. Unidirectional cloaking device for source code
WO2007063433A2 (en) * 2005-10-17 2007-06-07 Nxp B.V. Program executable image encryption

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10260903A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd グループ暗号方法、及びファイル暗号システム
JP2004265037A (ja) * 2003-02-28 2004-09-24 Nec Corp コンピュータプログラムの編集システム及びその方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019053146A (ja) * 2017-09-14 2019-04-04 日本電気株式会社 ソースプログラム保護システム及び方法

Also Published As

Publication number Publication date
WO2007072568A1 (ja) 2007-06-28
JPWO2007072568A1 (ja) 2009-05-28
US20080301654A1 (en) 2008-12-04

Similar Documents

Publication Publication Date Title
US20040039932A1 (en) Apparatus, system and method for securing digital documents in a digital appliance
WO2009107351A1 (ja) 情報セキュリティ装置および情報セキュリティシステム
KR101284676B1 (ko) 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템 및 그 방법
CN109992987B (zh) 基于Nginx的脚本文件保护方法、装置及终端设备
CN101449508A (zh) 保护电子衍生作品的完整性
JP2006121689A (ja) Drmシステムにおけるシステムキーを共有及び生成する方法、並びにその装置
US8656159B1 (en) Versioning of modifiable encrypted documents
JP2006323503A (ja) 文書管理装置及びその制御方法、コンピュータプログラム、記憶媒体
JP2006039206A (ja) 暗号化装置および復号化装置
US20080320601A1 (en) Providing access rights to portions of a software application
JP2015529892A (ja) メディア・セキュリティ・コントローラを使用したメディア・アイテムの保護
JP2010086370A (ja) 画像形成装置、配信サーバーおよびファームウェアアップデート方法
US20060059350A1 (en) Strong names
US20100223469A1 (en) Method, System and Computer Program Product for Certifying Software Origination
JPWO2003013054A1 (ja) 処理に伴い暗号データの改ざん検出用データを生成する装置及び方法
JP4818279B2 (ja) プログラム処理装置、プログラム処理方法及びプログラム
CN114547558A (zh) 授权方法、授权控制方法及装置、设备和介质
WO2004114099A1 (en) Digital rights management
JP2007316944A (ja) データ処理装置、データ処理方法、およびデータ処理プログラム
JP2011193264A (ja) コンテンツ配信システム、コンテンツサーバ、クライアント装置、コンテンツ配信方法、コンテンツサーバのコンテンツ配信方法、クライアント装置のコンテンツ取得方法及びプログラム
JP2002132364A (ja) プログラムを内部解析から保護する方法、コンピュータ読み取り可能な記録媒体及びプログラムの配布方法
JP2006195826A (ja) ソフトウェアプロテクト方法及びソフトウェアプロテクト機能を有する事務コンピュータ
JP2005284915A (ja) 情報検索装置および方法、ならびに情報検索システムおよびその制御方法
JP2009009237A (ja) 情報処理装置およびファームウェア更新方法
JP4222132B2 (ja) ソフトウェア提供方法及びシステム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110708

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: 20110802

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110830

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140909

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees