JP2886969B2 - プログラム変換方法 - Google Patents
プログラム変換方法Info
- Publication number
- JP2886969B2 JP2886969B2 JP2288524A JP28852490A JP2886969B2 JP 2886969 B2 JP2886969 B2 JP 2886969B2 JP 2288524 A JP2288524 A JP 2288524A JP 28852490 A JP28852490 A JP 28852490A JP 2886969 B2 JP2886969 B2 JP 2886969B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- argument
- hash total
- character string
- conversion method
- 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 - Lifetime
Links
Description
ム保護(プログラムの不正使用防止及び、コンピュータ
ウイルスに対する検知)を実現するための技術に関す
る。
tograpic Techniques Paris,France,April 1984 “A Method of Software Protection Based on the U
se of smart Cards and Cryptographic Techniques" Ingrid Schaumueller−Bichl and Erust Piller 近年、ネットワークの拡大及び、衛星通信の実用化等
に伴い、プログラムのダウンロード等が容易に行えるよ
うになり、その陰の部分として、プログラムの不正使用
及び、コンピュータウィルス等が大きな社会問題となっ
てきている。プログラムの不正使用に対しては、ソフト
ウェアの価値の低減及び、ソフトウェア生産者に経済的
損失(不正使用に対する損害は、売上高の50%以上とい
うデータもある。)を与えている。又、コンピュータウ
ィルスに対しては、システムの破壊等、高度情報社会に
おいて不安因子になっている。
暗号技術を用いたプログラムの暗号化というものが従来
考えだされている。以下、詳細に述べる。
書き込んでおく。プログラムを実行する場合、ICカード
内に納められている暗号鍵より暗号文を復号化し、その
後プログラムを実行するというものである。これによ
り、ICカードを所有している者のみがプログラムを使用
することができることになる。
般に、ワクチンプログラムという名称でよく知られてい
る。)として、暗号技術を用いたハッシュトータルの比
較というものが次の文献で開示されている。
formation theory and Its Applications Cryptographt
and Information security “ウィルスと暗号” 松本勉,松井秀智,今井秀樹 以下、詳細に述べる。
ュトータルを計算し、記憶媒体上に書き込んでおく。プ
ログラムを実行する際、実行プログラムに対して、ハッ
シュトータルを計算し、記憶媒体上に書かれたハッシュ
トータルと比較する。もし等しくない場合、警告を発す
るというものである。
グラムの組み込みは、人間の手によって行なわれている
ため効率が悪い。
ンプログラムの取外しが容易である。
合、それぞれの機能が独立していれば、第三者によりプ
ログラムの変更が容易である。
ある。
タルを生成し、その値をソースプログラムに代入した
後、再びロードモジュールを生成するのでは結果として
2回ロードモジュールを生成することになり、処理時間
がかかる。
ムの組み込み効率の向上という意味で、本発明は、次の
点を改善する。
ュータウィルスの有無をチェックする機能及び、ICリー
ダライタとの回線を立ち上げる機能を有した保護プログ
ラム,保護プログラムの取外しを困難なものとするため
の保護プログラム取外し防止機能及び、ソースプログラ
ムの一部の暗号文をICカードの暗号機能多を用いて復号
化し、出力することにより、不正使用を防止する機能を
有した管理プログラム、保護するべき被保護プログラム
において、 (1)高級言語(例えば、C言語)で書かれた被保護プ
ログラムの文字列認識により、然るべきところに保護プ
ログラム及び、管理プログラムを、機械によって代入さ
せる。これにより、保護プログラム及び、管理プログラ
ムの組み込みが効率を図る。
グラムに取付けることにより、保護プログラムの取外し
を困難にする。又、複数の機能を持つ保護プログラム,
管理プログラムにおいて、それぞれの機能を実現するた
めのコマンドを交互に組み込むことによって、保護プロ
グラム,管理プログラムの変更を困難にする。
ログラム上に書き込んでおく。これにより、第三者によ
るハッシュトールの変更を困難にする。
込むことによって、処理時間の短縮を図る。
なうことにより、保護プログラム及び、管理プログラム
を自動的に被保護プログラムに組み込むことができる。
これにより、保護プログラム及び、管理プログラム付き
ロードモジュールの生成を効率良く行なうことができ
る。
の比較及び、ICカードアクセス機能)を従属な位置関係
でプログラム上に配置し、かつソースハッシュトータル
の暗号化により、保護プログラムの変更を困難にでき
る。
機能を設けることにより、保護プログラムの取外しを困
難にできる。
に対して行うことにより、保護プログラムの組み込み処
理を高速に実行することができる。
図は、保護プログラム組込システムプログラム(101)
の処理手順の概略を示す図である。以下、C言語で書か
れたプログラムについて説明する。
により入力する。被保護プログラム(109)のファイル
がオープンされる。
04)がCPU(114)で処理され、プログラムの命令に従
い、被保護プログラム(109)上に保護プログラム(10
2)が組み込まれる。
08)がCPU(114)で処理され、前記処理実施後の被保護
プログラム(109)の中の引数(例えば、for(i=0:i
=7)という条件文の中の“7")を検索し、存在すれば
抜き出し、暗号プログラム(106)によって暗号化を行
う。もし、引数が存在しない場合、(205)の処理に移
る。
記の暗号文を代入した後、被保護プログラム(109)上
の引数を抜き出した場所に管理プログラム(107)のコ
ール文を埋め込む。
て、ロードモジュール(110)の生成を行う。
CPU(114)で処理を行い、実行ファイル上のロードモジ
ュール(110)の一部に対してハッシュトータルをと
る。
4)で処理を行い、出力されたハッシュトータルに対し
て暗号化する。
(103)がCPU(114)で処理され、暗号化されたハッシ
ュトータルを被保護プログラム(110)に代入する。
ことができる。
の詳細、第5図(a)は、被保護プログラム、第5図
(b)は、保護プログラム,管理プログラム埋込処理実
行後のソースプログラムを示した図である。
n(){”、及び、それに続く変数型文字列(例えば、i
nt。C言語では、他に、char,long,shortなどが挙げら
れる。)を認識することによって、変数宣言の列(例え
ば、int,i,data;)を検索する(ステップ301)。
02のコール文で使用される変数(例えば、X)を宣言し
ておくために、上記変数宣言の列(int,i,data;)の最
後の文字“;"を認識し、この文字“;"の後に、特別な変
数宣言の列(例えば、int X;)を代入する。
する。一般に、プログラムの領域は、内部で用いる変数
などを宣言しておくための変数宣言部と、目的のプロセ
スの実行をするための実行部とに分けられる。したがっ
て、ステップ302で代入された特別な変数宣言の列が最
後の変数宣言の列であれば、その最後の文字“;"の次が
実行部の先頭であり、特別な変数宣言の列の後に、別の
変数宣言の列があれば、その最後の文字“;"の次が実行
部の先頭であることがわかる。
護プログラム102へのコール文(例えば、X=chk_del
(a…a,a…a,…);)を組み込む。
chk_del(a…a,…)”が被保護プログラム(109)に設
め込まれる。
ラム埋込処理手順の詳細である。
列“for"の検出を行い、“for"文の有無を確認する。
最初の“for"に対して、“for"文の条件文の中で使われ
ている引数を検出する。
(i=0,i<7;i++){”中の“7"である。
場合は、その旨をディスプレイ(112)に出力し、管理
プログラム埋込処理を終了させる事により(205)の処
理に移る。
数を暗号化するために暗号プログラム(106)を実行す
る。
*”)と所定の文字列“a…a"とを含む管理プログラム
へのコール文(例えば、admi(***,a…a))を作成
し(ステップ406)、ステップ405で抜き出された引数
“7"の位置に埋め込む(ステップ407)。
まれた状態(第5図(b))で、ロードモジュールにコ
ンパイルされる(第2図、ステップ205)。
に図示できる。
ル生成プログラム105を実行する(第2図、206)。
細、第7図はハッシュトータル生成処理と埋込処理手順
を説明するためのイメージ図である。
ラム付ロードモジュールを実行ファイルよりコピーす
る。
特定の文字列(aa…a)を検出する。
位置に空白を代入する。
に対して、ハッシュトータルを生成する。
求められると、暗号プログラム(106)を起動して、ハ
ッシュトータルを暗号化し、ハッシュトータル埋込プロ
グラム(103)を起動して、ロードモジュール中の特定
の文字列(aa…a)を検出し(207)、その部分に暗号
化されたハッシュトータル(1101**…1)を埋め込む
(208)。
ジを第7図(c)に示す。
とき、コール文“X=chk_del(a…a,a…a,…)”が保
護プログラム(102)を起動し、次に、for文の中のコー
ル文“admi(***,1101**…1)”が管理プログラ
ムを起動する。このような、実行時の処理手順を第8
図,第9図をもちいて説明する。
タル「1101**…1」をうけとると、ICカード内部に格
納されている復号化プログラムを起動することによって
復号化し、メモリ上に格納しておく(801)。このと
き、ICカード内部の復号化プログラムのファイルをオー
プンにしたままにしておく。
作成し、コピーファイルからソースハッシュトータル
「1101**…1」と同じ文字列を検出し、その部分を除
いた部分にたいしてハッシュトータル(実行ハッシュト
ータル)をとり(802)、その実行ハッシュトータルと
復号化されたソースハッシュトータルとを比較する(80
3)。
トータルとが一致する場合は、そのままプログラムを進
める。
ルとが不一致の場合には、プログラムが改ざんされたと
判断されるので、強制終了する。
よって起動された管理プログラムは、再び、実行ハッシ
ュトータルとソースハッシュトータルとの比較をおこな
う(901,902)。尚、管理プログラムには、ICカード内
部に格納されている復号化プログラムを起動する命令を
含まないように作成しておく。したがって、保護プログ
ラムによって復号化プログラムのファイルがオープンさ
れていない場合には、エラーが生じることになる。
トータルとが一致する場合には、引数(***)を復号
化し(906)、復号化した結果(“7")を返り値とし
て、実行ファイル上のロードモジュールに戻る(90
7)。また、その時、復号化プログラムのファイルをク
ローズしておく。一方、一致しない場合には、強制終了
する(904)。
理プログラムとを被保護プログラムに組み込むことによ
って改ざんされたプログラムをチェックするようにして
いる。しかしながら、場合に応じて、これらのいずれか
一方を採用するようにしても構わない。
て、保護プログラム(102)へのコール文「X=chk_del
(a…a,a…a,…)」に該当する部分は、比較的取り除
きやすいので、保護プログラムへのコール文だけでは、
改ざんのチェックは完全といいがたい。
グラムのファイルをオープンする命令を含ませておき、
管理プログラムへのコール文のみを組み込ませることも
できる。管理プログラムは、プログラム内部の引数の復
号化と、実行ハッシュトータルとソースハッシュトータ
ルの比較とを行うため、コール文「admi(***,1101
**…1)」を簡単に、取り除くことはできない。しか
しながら、管理プログラムへのコール文は、被保護プロ
グラムのどこに組み込まれるか分からないので、早期
に、改ざんのチェックを行う保護プログラム(102)へ
のコール文も併用して組込むことが望ましい態様であ
る。
を挙げる。
r文の有無を確認し、最初のfor文に対する条件文で使わ
れている数値を検出し、管理プログラムを埋めこんだ
が、変形例としてwhile文、if文の有無を確認し、その
条件文で使われている数値の検出によって管理プログラ
ムの埋込も可能である。
法についてはC言語を対象としてきたが、本方式による
保護プログラム及び、管理プログラム埋込方法は、高級
言語全てに適用可能である。又、埋込個数も複数個の埋
込が可能である。
を挙げる。
詳細である。
べる。
ディングメモリ上にあるロードモジュールのテキスト部
の長さ及び、アドレスを調べる。
のハッシュトータルを生成する。
ァイル上にあるロードモジュールよりテキスト部を検出
し、その部分に対して行う。
の変更チェックが可能である。
ムを自動的に被保護プログラムに埋込かつ、ハッシュト
ータルの設込に対しても、ロードモジュールに対して直
接行なうことにより、保護プログラム付きロードモジュ
ールの生成を高速に行なうことができる。
入、複数の機能を持つ保護プログラムにおいて、それぞ
れの機能を実現するためのコマンドの交互組み込み等に
より、保護プログラムの改ざん及び、取外しを困難にで
きる。
メモリ構成を示した図、第2図は、保護プログラム組込
システムプログラムの処理手順を示した図、第3図は、
保護プログラムを埋め込む処理手順を示した図、第4図
は、管理プログラムを埋め込む処理手順を示した図、第
5図は、保護プログラム埋込処理及び、管理プログラム
埋込処理を実行した後の被保護プログラム(ソースプロ
グラム)の変化を示した図、第6図はハッシュトータル
生成処理手順を説明するための図、第7図は、ハッシュ
トータル埋込処理についてのイメージ図、第8図は、保
護プログラムの処理手順を示す図、第9図は管理プログ
ラムの処理手順を示す図、第10図は、ハッシュトータル
を生成する処理手順を示した図である。
Claims (6)
- 【請求項1】改ざん検出機能を有しないプログラムに、
該プログラムの改ざん検出を行うワクチンプログラムで
あって、該ワクチンプログラムへのコール文に含まれる
引数と該引数の部分を除く上記プログラムのハッシュト
ータルとを比較することによって上記プログラムの改ざ
んを検出するワクチンプログラムのコール文を組み込む
ためのプログラム変換方法において、 上記プログラムの実行部の先頭の位置または上記プログ
ラム中の所定の命令文に含まれる引数に代えて、所定の
記号列を引数として含む上記ワクチンプログラムのコー
ル文を挿入し、 上記プログラムをコンパイルしてロードモジュールを生
成し、 該ロードモジュールから上記記号列の部分を検出し、 該記号列の部分を除く上記ロードモジュールに対しハッ
シュトータルを算出し、 上記記号列の部分を該ハッシュトータルに置き換えるこ
とによってプログラムの改ざん検出機能を備えたプログ
ラムを生成することを特徴とするプログラム変換方法。 - 【請求項2】プログラムの不正改ざんおよび不正使用を
防止するためにプログラム内部に不正改ざんを検知する
機能を追加するためのプログラム変換方法であって、 メモリ内に存在する保護対象となる第1のプログラム
に、所定のパターンを有する文字列を含む命令文を挿入
することによって、第2のプログラムに変換し、 該第2のプログラムを機械語による実行形式である第3
のプログラムに変換し、 該第3のプログラムから上記文字列を検索して、該第3
のプログラムの上記文字列を除いた部分に対してハッシ
ュトータルを算出し、 上記文字列を該ハッシュトータルに置き換えることによ
って、不正改ざんを検出する機能を備えたプログラムを
生成することを特徴とするプログラム変換方法。 - 【請求項3】前記ハッシュトータルを算出するステップ
は、算出されたハッシュトータルを所定の暗号鍵で暗号
化する処理を含むことを特徴とする請求項第2項記載の
プログラム変換方法。 - 【請求項4】前記命令文は、暗号化されたハッシュトー
タルを引数とする処理を行うと共に、所定のICカードへ
該暗号化されたハッシュトータルを送り、該ICカードか
ら復号化されたハッシュトータルを受け取る処理を含む
ことを特徴とする請求項第3項記載のプログラム変換方
法。 - 【請求項5】プログラム内部に不正使用を防止する機能
を追加するためのプログラム変換方法であって、 メモリ内に存在する保護対象となる第1のプログラムに
ついて特定の引数を検索し、該引数の暗号文を生成し、
該引数を所定のパターンの文字列および該暗号文を引数
とする命令文に置き換えることによって、第2のプログ
ラムに変換し、 該第2のプログラムを機械語による実行形式であるロー
ドモジュールに変換することによって、第3のプログラ
ムを生成し、 該第3のプログラムについて該所定のパターンの文字列
を検索し、該所定のパターンの文字列を除いた第3のプ
ログラムの部分に対してハッシュトータルを算出し、 該所定のパターンの文字列を該ハッシュトータルに置き
換えることによって、不正改ざん検出機能を備えたプロ
グラムを出力することを特徴とするプログラム変換方
法。 - 【請求項6】前記命令文は、前記暗号文を引数とする処
理を行い、所定のICカードへ前記暗号文を送り、該ICカ
ードから前記暗号文に基づくデータを受け取り該データ
を返り値として返す処理を含むことを特徴とする請求項
第5項記載のプログラム変換方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2288524A JP2886969B2 (ja) | 1990-10-29 | 1990-10-29 | プログラム変換方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2288524A JP2886969B2 (ja) | 1990-10-29 | 1990-10-29 | プログラム変換方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH04163627A JPH04163627A (ja) | 1992-06-09 |
JP2886969B2 true JP2886969B2 (ja) | 1999-04-26 |
Family
ID=17731355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2288524A Expired - Lifetime JP2886969B2 (ja) | 1990-10-29 | 1990-10-29 | プログラム変換方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2886969B2 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0822390A (ja) * | 1994-07-05 | 1996-01-23 | Advance Co Ltd | ソフトウエア防衛方式 |
US6175924B1 (en) * | 1997-06-20 | 2001-01-16 | International Business Machines Corp. | Method and apparatus for protecting application data in secure storage areas |
JP4892167B2 (ja) * | 2000-07-18 | 2012-03-07 | シンプレックス メジャー センドリアン ベルハッド | ディジタル・データ保護構成 |
AU2001285125B2 (en) | 2000-08-21 | 2004-08-26 | Igt | Method and apparatus for software authentication |
JP4664055B2 (ja) * | 2004-12-10 | 2011-04-06 | 株式会社エヌ・ティ・ティ・ドコモ | プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法 |
JP4923925B2 (ja) * | 2006-09-29 | 2012-04-25 | 富士通株式会社 | チェックプログラム、監視装置および監視方法 |
GB0806284D0 (en) * | 2008-04-07 | 2008-05-14 | Metaforic Ltd | Profile-guided tamper-proofing |
WO2013161974A1 (ja) * | 2012-04-24 | 2013-10-31 | 大日本印刷株式会社 | 改竄検知が可能なアプリケーションプログラムの配布実行方法 |
JP5126447B1 (ja) * | 2012-08-31 | 2013-01-23 | 大日本印刷株式会社 | アプリケーションプログラムの実行方法 |
JP5056995B1 (ja) * | 2012-04-24 | 2012-10-24 | 大日本印刷株式会社 | 改竄検知が可能なアプリケーションプログラムの配布実行方法 |
JP5182445B1 (ja) * | 2012-09-18 | 2013-04-17 | 大日本印刷株式会社 | アプリケーションプログラムの改竄検知方法 |
JP5574550B2 (ja) * | 2012-11-22 | 2014-08-20 | 京セラドキュメントソリューションズ株式会社 | 情報秘匿化方法および情報秘匿化装置 |
-
1990
- 1990-10-29 JP JP2288524A patent/JP2886969B2/ja not_active Expired - Lifetime
Non-Patent Citations (1)
Title |
---|
「1990年電子情報通信学会春季全国大会」P.1−288(1989−3) |
Also Published As
Publication number | Publication date |
---|---|
JPH04163627A (ja) | 1992-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Collberg et al. | Dynamic path-based software watermarking | |
US7739511B2 (en) | Systems and methods for watermarking software and other media | |
US7779478B2 (en) | System and method for distributed module authentication | |
EP1546892B1 (en) | Protecting mobile code against malicious hosts cross references to related applications | |
CA2437645C (en) | Electronic document management system with the use of signature technique capable of masking | |
JP2886969B2 (ja) | プログラム変換方法 | |
CN101477610B (zh) | 源码和目标码联合嵌入的软件水印方法 | |
US6519702B1 (en) | Method and apparatus for limiting security attacks via data copied into computer memory | |
CN106650327A (zh) | 基于动态恢复so文件的Android应用加固方法 | |
JPWO2006009081A1 (ja) | アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法 | |
CN105653905A (zh) | 一种基于api安全属性隐藏与攻击威胁监控的软件保护方法 | |
CN111680272A (zh) | 一种字节码加密和解密方法及装置 | |
JP2005085188A (ja) | プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置 | |
JPH1139158A (ja) | 実行プログラムの保護方法およびその装置 | |
CN117150515A (zh) | Eda二次开发源代码的安全保护方法、电子设备及存储介质 | |
JP2004192068A (ja) | 自己書換え処理追加プログラム、自己書換え処理追加装置及び自己書換え処理追加方法 | |
US7552342B1 (en) | Method and system for increasing the tamper resistance of a software application | |
CN102117394A (zh) | 检测是否已经复制了计算机文件的方法和装置以及能够进行这种检测的方法和装置 | |
CN111881485B (zh) | 一种基于arm指针验证的内核敏感数据完整性保护方法 | |
JP3266021B2 (ja) | セキュリティ確保方式 | |
Toll et al. | The Caernarvon secure embedded operating system | |
CN116089983B (zh) | 一种py文件的加固编译方法及装置 | |
CN111581654B (zh) | 一种加密芯片性能放大的方法 | |
JP2004362077A (ja) | データ変換システム | |
CN117610057A (zh) | 一种基于bytecode的electron源代码加密解密方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080212 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090212 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090212 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100212 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100212 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110212 Year of fee payment: 12 |
|
EXPY | Cancellation because of completion of term | ||
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110212 Year of fee payment: 12 |