JP4497450B2 - プログラム認証システム - Google Patents

プログラム認証システム Download PDF

Info

Publication number
JP4497450B2
JP4497450B2 JP2003411884A JP2003411884A JP4497450B2 JP 4497450 B2 JP4497450 B2 JP 4497450B2 JP 2003411884 A JP2003411884 A JP 2003411884A JP 2003411884 A JP2003411884 A JP 2003411884A JP 4497450 B2 JP4497450 B2 JP 4497450B2
Authority
JP
Japan
Prior art keywords
program
secret key
key information
application program
authentication system
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
JP2003411884A
Other languages
English (en)
Other versions
JP2005173903A (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.)
Japan Science and Technology Agency
National Institute of Japan Science and Technology Agency
Original Assignee
Japan Science and Technology Agency
National Institute of Japan Science and Technology Agency
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 Japan Science and Technology Agency, National Institute of Japan Science and Technology Agency filed Critical Japan Science and Technology Agency
Priority to JP2003411884A priority Critical patent/JP4497450B2/ja
Publication of JP2005173903A publication Critical patent/JP2005173903A/ja
Application granted granted Critical
Publication of JP4497450B2 publication Critical patent/JP4497450B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

本発明は、正規プログラムと認証するプログラム認証システムに関し、特に、プログラム実行時の振舞いに基づき認証するプログラム認証システムに関する。
コンピュータ上で不正プログラムの実行を回避する方法は、大別すると「セキュリティ・ルール方式」と「プログラム認証方式」とがある。前者のセキュリティ・ルール方式は、プログラムを実行する場合にセキュリティ・ルールを予め決めておき、実行対象となるプログラムがそのセキュリティ・ルールを満たしているか否かを判定する。一方、後者のプログラム認証方式では実行するプログラムがウィルスが混入していない所謂ウィルス・フリーであることが保障されており、実行対象となるプログラムが本当に認証されたものであるか否かを判定する。これら前者及び後者の方式において、それぞれ、プログラムの実行開始前に行う静的手法とプログラムの実行中に行う動的手法とが存在する。
前者セキュリティ・ルール方式の静的手法としては、ウィルス・スキャンが一般的となっている。このウィルス・スキャンでは既知のウィルスに関するリスト(これを一種のセキュリティ・ルールとみなす。また別名としてパターンファイル、定義ファイルと呼ばれる場合もある)をコンピュータ内に保有しておき、プログラム実行開始前にコンピュータ内部の全て又は一部に対して前記リストに登録されたウィルスが存在しないか検索する。これに対し、動的手法としては、プログラム実行中に予め決められたセキュリティ・ルールを犯していないか監視する方法である。
後者プログラム認証方式の静的手法としては、秘密鍵情報を用いた暗号化がある。つまり、実行対象となるプログラムは、プログラム発行元と利用者の間で共通の秘密鍵により暗号化されており、プログラム実行前にこの秘密鍵を用いて復号化する。これに対し、動的手法としては、プログラム本体とその実行時の振舞い情報を組としてプログラム発行者が利用者に提供し、プログラム利用者側ではプログラム実行中にプログラムの振舞いを監視し、プログラム本体と共に入手した実行時の振舞い情報と比較する方法である。
前記セキュリテイ・ルール方式では、予めセキュリティ・ルールを決めておかなければならないので、未知のセキュリテイ・ホールやウィルスには適切に対応できないとう課題を有する。なお、ここで「適切に」という言葉を用いたのは、未知のセキュリテイ・ホールやウィルスを想定してセキュリティ・ルールを決めて動作させる試みがなされているが、このようなセキュリティ・ルールがプログラムの正常な動作を妨げるという問題が生じている事実を含ませるためである。一方、プログラム認証方式の静的手法においては、プログラム実行中に突然ウィルス等の不正プログラムが実行開始となった場合に対応できないという課題を有する。また、プログラム認証方式の動的手法においても、ウィルスや不正プログラムが、それらの実行の振舞い情報と共にコンピュータ内部に侵入した場合には誤って正規プログラムだと誤認する場合もあるという課題を有する。
本発明は、前記課題を解決するためになされたものであり、プログラム認証方式を改良してプログラム認証方式の鍵情報を用いた静的手法と実行の振舞いを監視する動的手法を融合させ、コンピュータ上で不正プログラムの実行を回避してより安全性の高いプログラム認証システムを提供することを目的とする。
本発明に係るプログラム認証システムは、アプリケーションプログラムを正規プログラムと認証するためのプログラム実行の振舞いであって、前記アプリケーションプログラムで使用するアドレス領域でない任意のアドレス領域を確保し、当該アドレス領域の先頭番地及びアドレス領域に格納されている情報を参照する認証振舞いをコンピュータによる処理に適した命令の順序付けられた列として定めた秘密鍵情報から当該認証振舞いを前記アプリケーションプログラムにおける任意の処理数ごとに繰り返してプログラム・コードに挿入する鍵挿入手段と、プログラム実行時に、前記アプリケーションプログラムの振舞いとしての当該アプリケーションプログラムのプロセス情報を実秘密鍵情報として検出する鍵検出手段とを備え、当該鍵検出手段は、前記アプリケーションプログラム実行時に前記秘密鍵情報と前記実秘密鍵情報とを比較し、当該秘密鍵情報と同一の実秘密鍵情報が検出されなかった場合に、相違検出信号を出力するものである。このように本発明においては、鍵挿入手段が秘密鍵情報から、アプリケーションプログラムで使用するアドレス領域でない任意のアドレス領域を確保し、当該アドレス領域の先頭番地及びアドレス領域に格納されている情報を参照する認証振舞いを前記アプリケーションプログラムにおける任意の処理数ごとに繰り返してアプリケーションプログラムに挿入して、鍵検出手段が挿入されたアプリケーションプログラムが起動されて行う振舞いから検出される実秘密鍵情報と秘密鍵情報とを同一か否か判断しており、すなわち、アプリケーションプログラムの認証振舞い自体が動作させるための鍵となって、その鍵自体をアプリケーションプログラムのプログラム・コードに挿入しており、ウィルスに感染したアプリケーションプログラムは挿入された認証振舞いにしたがった振舞いをすることができず、まだ発見されていないウィルス等の動作を特に意識することなく、かかるウィルスに感染したアプリケーションプログラムを発見することができる。また、プログラム認証システムを導入していない者のPCに、転々流通した正規プログラムが導入されたとしても、鍵検出手段が導入されていない場合にはアプリケーションプログラム動作することができず、仮に鍵検出手段が導入されていると仮定しても、秘密鍵情報がないことで鍵検出手段が正常に動作することができないため、アプリケーションプログラム提供側の想定した使用者のみに使用させることができる。
また、本発明に係るプログラム認証システムは必要に応じて、前記鍵検出手段は、前記アプリケーションプログラム実行時に前記秘密鍵情報と同一の実秘密鍵情報が検出されなかった場合に、以降の実秘密鍵情報が秘密鍵情報と同一であるとき、相違検出信号を出力しないものである。このように本発明においては、ある程度の幅を持たせて鍵検出手段が秘密鍵情報と実秘密鍵情報との同一の判断をしており、比較する最小単位が実秘密情報内で一意となっていないものがあったとしても他の部分で一意となっていれば同一だと判断され、アプリケーションプログラムの正常な動作を妨げることを抑制することができる。
また、本発明に係るプログラム認証システムは必要に応じて、前記鍵検出手段が出力した相違検出信号が入力された場合に、前記アプリケーションプログラムの実行そのものを中止又は停止する実行停止手段を備えるものである。このように本発明においては、プログラムの実行そのものを中止又は停止する実行停止手段を備えるので、ウィルスに感染している可能性のあるアプリケーションプログラム、不正に入手したアプリケーションプログラムの実行を中止又は停止することができ、ウィルスの被害を防止すると共に、アプリケーションプログラム提供者が認めない使用者の使用を防止することができ、さらに、ウィルスに感染していることを間接的に伝えることができる。直接的に使用者PCの表示画面にウィルスに感染していることを出力したり、管理者端末にその旨をメールで知らせる等を行うことができる。
また、本発明に係るプログラム認証システムは必要に応じて、前記鍵挿入手段が、前記秘密鍵情報から認証振舞いを前記アプリケーションプログラムのプログラム・コードに挿入してオブジェクト・コードを生成するアセンブラ、及び/又は認証振舞いを前記アプリケーションプログラムのプログラム・コードに挿入してアセンブリ・コードを生成するコンパイラであるものである。このように本発明においては、前記鍵挿入手段が、オブジェクト・コードを生成するアセンブラ、及び/又はアセンブリ・コードを生成するコンパイラであり、すなわち、鍵挿入手段が別個のプログラムでなく、高級言語で記述されたソースプログラムをアセンブリ言語に変換するプログラムであるコンパイラの一部、及び/又は低レベルな機械語と1対1に対応する文字列を機械語に置き換えるプログラムであるアセンブラの一部として実装することで、認証振舞いに係るプログラム・コードを円滑に挿入することができる。
また、本発明に係るプログラム認証システムは必要に応じて、前記鍵検出手段が秘密鍵情報に基づきプログラム実行時に認証振舞い検出する鍵検出回路を生成する鍵検出回路生成部からなるものである。このように本発明においては、鍵検出手段が秘密鍵情報に基づきプログラム実行時に認証振舞い検出する鍵検出回路を生成する鍵検出回路生成部からなるので、アプリケーション毎に異なる秘密鍵情報であった場合にも鍵検出手段が検出できない行為があるという事態を回避し、最適な鍵検出回路を生成し適切に認証振舞いに係る行為を検出することができ、動作においても検出対象となる行為を限定しているため検出時の動作が高速となる。
また、本発明に係るプログラム認証システムは必要に応じて、前記鍵検出手段が鍵検出回路を実行する再構成可能なハードウェアである鍵検出回路実行部からなるものである。このように本発明においては、鍵検出手段が前記鍵検出回路を実行する再構成可能なハードウェアである鍵検出回路実行部からなるので、鍵検出回路実行部は、鍵検出回路生成部から出力された回路情報を受け回路を再構成しており、鍵検出回路生成部をソフトウェアで実装した場合と比べ高速な動作を行うことができる。
(本発明の第1の実施形態)
本発明の第1の実施形態に係るプログラム認証システムについて図1ないし図7に基づき説明する。図1は本実施形態に係るプログラム認証システムの構成ブロック図(なお図中破線でMPU及びメモリにより実現される手段等をデータ類と区別するため囲った)、図2は本実施形態に係る認証振舞いに係る行為の挿入形態、図3は本実施形態に係る認証振舞いに係る行為の挿入形態に対応する同一性の判断方法、図4は本実施形態に係るアプリケーション提供システムの構成ブロック図、図5は本実施形態に係るアプリケーション提供システムの動作フローチャート、図6は本実施形態に係るプログラム認証システムの挿入処理の動作フローチャート及び図7は本実施形態に係るプログラム認証システムの検出処理の動作フローチャートである。
本実施形態に係るプログラム認証システムは、正規プログラムと認証するためのプログラム実行の振舞いである認証振舞いを定めた秘密鍵情報3からこの認証振舞いをプログラム・コードに挿入する鍵挿入手段1と、プログラム実行時に実際のプログラムの振舞い、すなわち図1に示すようにアプリケーションプログラムのプロセス情報を実秘密鍵情報として検出する鍵検出手段2とを備え、この鍵検出手段2は、プログラム実行時に前記秘密鍵情報3と実秘密鍵情報との比較を行い同一か否かを判断し、同一の実秘密鍵情報が検出されなかった場合に、相違検出信号を出力する構成である。
前記正規プログラムとは、ワープロソフト、メールソフト、作図ソフト、ブラウザ、ウィルススキャンソフト及びCADソフト等のアプリケーションプログラムの内このアプリケーションプログラムの真正の出所元から適法に譲渡、再譲渡等されたもののことをいい、鍵検出手段2が実秘密鍵情報と秘密鍵情報3との比較を行い同一か否かを判断し、同一である場合には、アプリケーションプログラムの実行を継続するものをいう。
前記振舞いとは、プログラムによるコンピュータの処理が該当し、当該プログラムはコンピュータによる処理に適した命令の順序付けられた列、すなわちプログラム・コードからなるものである振舞いは行為が順序付けられてなり、この行為は前記各命令に対応する。
前記認証振舞いとは、鍵検出手段2がアプリケーションプログラムを正規プログラムと認証するためのものであり、ある特定のアドレス領域を確保してかかるアドレス領域の先頭番地及びアドレス領域に格納されている情報を参照する処理であって、かかるアドレス領域をアプリケーションプログラムで使用するアドレス領域でないアドレス領域としたものである。
前記秘密鍵情報3とは、認証振舞い、すなわちある特定のアドレス領域を確保してかかるアドレス領域の先頭番地及びアドレス領域に格納されている情報を参照する処理であって、かかるアドレス領域をアプリケーションプログラムで使用するアドレス領域でないアドレス領域としたものを定めたものであり、直接的にプログラム・コード(ソース・コード、アセンブリ・コード、オブジェクト・コード)、すなわちコンピュータによる処理に適した命令の順序付けられた列であってもよいし、間接的に秘密鍵情報専用の書式に従ったものであってもよい。秘密鍵情報専用の書式に従ったものとしては、例えば、1桁の数字をスペースで区切って記載したもので、各1桁の数字がある行為、すなわち対応する各命令に該当し、全体で認証振舞いを定めるものが該当する。また、鍵情報とせず、秘密鍵情報3としたのは、前記鍵挿入手段1で用いられる秘密鍵情報3と前記鍵検出手段2で参照される秘密鍵情報3とは同一のものであり、鍵挿入手段側から鍵検出手段側へ、又は、鍵検出手段から鍵挿入手段側へ、第三者に取得されないような方式で送る必要があり、所謂秘密鍵暗号方式の秘密鍵と扱いが同様であるためである。
前記鍵挿入手段1とは、秘密鍵情報3からこの認証振舞いの処理に適した命令をプログラム・コードに挿入するものであり、実際には、アプリケーションプログラムのプログラム・コードに認証振舞いの処理に適した命令、すなわちプログラム・コードを挿入している。前記鍵挿入手段1は、認証振舞いに係るプログラムコードの全てをアプリケーションプログラムのプログラム・コードの所定箇所に全て挿入する(以下、通常挿入とする)こともできるが(図2(a)参照)、認証振舞いに係るプログラムコードを分割してそれぞれアプリケーションプログラムのプログラム・コードの異なる場所に挿入する(以下、分割挿入とする)こともできる(図2(b)参照)。また、認証振舞いに係るプログラムコードの全てを繰り返して異なる場所に挿入する(以下、繰返挿入とする)こともできる(図2(c)参照)。
鍵検出手段2とは、プログラム実行時に実際のアプリケーションプログラムの振舞い、すなわちアプリケーションプログラムのプロセス情報を実秘密鍵情報として検出し、秘密鍵情報3と実秘密鍵情報とを比較するものであるが、プログラム実行時の実際のアプリケーションプログラムの振舞い全てを実秘密鍵情報とする全検出方式(ただし、全検出方式といってもアプリケーションプログラムの開始から終了までを一括して検出するわけではなく、秘密鍵情報3に関連する振舞い以外の振舞いも含めて実秘密情報とするものである。)と、プログラム実行時の実際のアプリケーションプログラムの振舞いの内秘密鍵情報3に関連する振舞いのみを実秘密鍵情報とする一部検出方式とがある。全検出方式は、振舞い全てを検出して実秘密鍵情報とするので、検出処理は容易であるが後の処理である秘密鍵情報3との同一性を比較する処理に時間がかかる。一部検出方式は、精査して実秘密鍵情報とするので検出処理で時間がかかるが、後の処理である秘密鍵情報との同一性を比較する処理は迅速に行うことができる。全検出方式における鍵検出手段2の同一性の判断方法は、例えば、通常挿入の場合には図3(a)のようにすることができ、分割挿入の場合には図3(b)のようにすることができ、繰返挿入の場合には図3(c)のように任意の処理数ごとに同一の秘密鍵情報3を繰り返して挿入することができる。ここで、図3のような単純な比較により秘密鍵情報3と実秘密鍵情報との同一性を比較する場合には、前提条件として比較する行為、すなわちプログラム・コードの命令の最小単位が実秘密情報内で一意となっている必要がある。言い換えると、図3(a)の通常挿入では、行為Aの命令と行為Bの命令とからなる秘密鍵情報が実秘密鍵情報内で一意となる必要があり、例えば、行為1の命令が行為Aの命令と同一で行為2の命令が行為Bの命令と同一である場合にはたまたまアプリケーションプログラムが正規プログラムと認証され認証振舞いが挿入されていないアプリケーションプログラムでも正規プログラムだと認証される可能性が生じる。図3(b)の分割挿入では、最小単位が一の行為、すなわちプログラム・コードの一の命令となり、行為Aの命令及び行為Bの命令がそれぞれ実秘密情報内で一意である必要がある。比較する行為が常に一意となるようにするには、ある特定のアドレス領域を確保してかかるアドレス領域の先頭番地及びアドレス領域に格納されている情報を参照するという行為を最小単位とすると、かかるアドレス領域アプリケーションプログラムで使用するアドレス領域でない領域とすることで、かかる最小単位、すなわち最小単位とした行為は実秘密鍵情報内で一意となる。
次に、本実施形態に係るプログラム認証システムについての動作について説明する。動作に関して大きくわけると、鍵挿入手段1が行う挿入処理と、鍵検出手段2が行う検出処理とからなる。また、プログラム認証システムを物理的構成と結びつけるために、図4に示すようなアプリケーション提供システムの物理的構成を採った。図中、データベースA11には秘密鍵情報3とアプリケーションプログラムの情報が格納されており、受付用サーバ12はデータベースA内に格納されているアプリケーションプログラムを管理し、秘密鍵情報3の生成も行っており、挿入処理用サーバ13には鍵挿入手段1が実装され、データベースB14には挿入処理用サーバ13により作成された挿入済アプリケーションプログラムが格納されており、ダウンロード用サーバ15は使用者PC16の要求に応じて挿入済アプリケーションプログラムを使用者側PC16に送信する構成である。
受付用サーバは、使用者PC16からアプリケーションのダウンロード要求があるか否かを判断する(以下図5参照、ステップ1)。このステップ1において、ダウンロード要求がないと判断した場合には、ステップ1に移行する。前記ステップ1において、ダウロード要求があると判断した場合には、受付用サーバ12が使用者毎で且つアプリケーション毎の秘密鍵情報3を生成する(ステップ2)。ステップ2の処理後、生成した秘密鍵情報3をデータベースA11に格納する(ステップ3)。ステップ3の処理後、受付用サーバ12は、データベースA11中の使用者要求したアプリケーションプログラムと秘密鍵情報3との格納位置を特定した上で挿入処理要求を行う(ステップ4)。次に、挿入処理が行われる(ステップ5)のだが、詳しくは後記する。ステップ5の処理後、挿入処理用サーバが作成された挿入済アプリケーションプログラムをデータベースB14に格納する(ステップ6)。挿入処理用サーバ13は受付用サーバ12に挿入処理が終了した旨を出力し、かかる旨の出力を受けた受付用サーバ12は使用者PC16に対してダウンロードの準備が完了した旨と、ダウンロード用サーバ15からダウンロードする旨を出力する。ダウンロード用サーバ15は使用者PC16からのダウンロード要求があるか否かを判断する(ステップ7)。ステップ7において、ダウンロード要求がないと判断された場合には、ステップ7に移行する。前記ステップ7において、ダウンロード要求があると判断された場合には、ダウンロード用サーバ15が使用者PC16に対して挿入済アプリケーションプログラムを送信する(ステップ8)。さらに、受付用サーバ12は、使用者PC16に秘密鍵情報を第三者に取得されないように公開鍵暗号システム(取得されないような方式であれば何でもよい)を用いて送信する。
前記挿入処理(ステップ5)について説明する。挿入処理用サーバ13が受付用サーバ12から挿入処理を要求された(ステップ4)後に、データベースA11から秘密鍵情報3を参照し(以下図6参照、ステップ101)、アプリケーションプログラムを参照する(ステップ102)。秘密鍵情報3が定めている認証振舞いの行為アプリケーションプログラムの行為の最小単位で一意となるか否かを判断する(ステップ103)。ステップ103において一意でないと判断された場合には、秘密鍵情報3が定めている認証振舞いの行為の最小単位を一意に変更、すなわちアプリケーションプログラムで使用するアドレス領域でない、ある特定のアドレス領域の先頭番地及びアドレス領域に格納されている情報を参照するという行為を最小単位に変更する(ステップ104)。前記ステップ103において、一意であると判断された場合には、アプリケーションプログラムのプログラム・コードに認証振舞いの処理に適した命令を挿入する(ステップ105)。
前記検出処理について説明する。使用者PCには、前記ステップ1ないし8及び前記ステップ101ないしステップ105が終了した時点で、秘密鍵情報3が挿入済みの挿入済アプリケーションプログラム及び秘密鍵情報3が記憶されている。前記アプリケーション提供システムを用いる使用者PC16には、予め鍵検出手段2が実装されている検出ソフトが導入されており、アプリケーション提供システムから提供されたアプリケーションプログラムを起動させると、動作開始するように実装されている。なお、この検出ソフトが導入されていない使用者PC16又は検出ソフトが動作開始しなければ、アプリケーションプログラムは動作しないようにも設計されている。挿入済アプリケーションプログラムを起動させると、検出ソフトも動作を開始し、鍵検出手段2がコンピュータ上に展開される。鍵検出手段2は、使用者PC16に記憶されている秘密鍵情報3を参照し(以下図7参照、ステップ201)、続けて、鍵検出手段2がアプリケーションプログラムの振舞い、すなわちアプリケーションプログラムのプロセス情報を検出して実秘密鍵情報とし(ステップ202)、秘密鍵情報と実秘密鍵情報との比較を行い同一か否かを判断する(ステップ203)。ステップ203において、同一であると判断された場合にはステップ202に移行する。前記ステップ203において、同一でないと判断された場合には、鍵検出手段2が相違検出信号の出力する(ステップ204)。
このように本実施形態に係るプログラム認証システムによれば、アプリケーションプログラムの認証振舞い自体が動作させるための鍵となって、その鍵自体をアプリケーションプログラムのプログラム・コードに挿入しており、ウィルスに感染したアプリケーションプログラムは挿入された認証振舞いにしたがった振舞いをすることができず、まだ発見されていないウィルス等の動作を特に意識することなく、かかるウィルスに感染したアプリケーションプログラムを発見することができる。また、プログラム認証システムを導入していない者のPCに、転々流通した正規プログラムが導入されたとしても、検出ソフトがないためアプリケーションプログラム動作することができず、仮に検出ソフトまでを手に入れたと仮定しても、秘密鍵情報がないことで鍵検出手段2が正常に動作することができないため、アプリケーションプログラム提供側の想定した使用者のみに使用させることができる。
なお、本実施形態に係るプログラム認証システムにおいては、図1の一点鎖線で示され、前記鍵検出手段2が出力した相違検出信号が入力された場合に、アプリケーションプログラムの実行そのものを中止又は停止する実行停止手段4を備えることもでき、ウィルスに感染している可能性のあるアプリケーションプログラム、不正に入手したアプリケーションプログラムの実行を中止又は停止することができ、ウィルスの被害を防止すると共に、アプリケーションプログラム提供者が認めない使用者の使用を防止することができ、さらに、ウィルスに感染していることを間接的に伝えることができる。直接的に使用者PCの表示画面にウィルスに感染していることを出力したり、管理者端末にその旨をメールで知らせる等を行うことができる。また、中止又は停止する場合に、ウィルスがいる場合であってもデータのバックアップ等を行う必要があり、アプリケーションプログラムに強制終了するようなAPI(Application Program Interface)を用いて終了させることが望ましい。ただし、不正にアプリケーションプログラムを使用している場合には、保護する必要性に乏しいので、ウィルスの場合は安全に終了、不正使用の場合には強制終了という切り分けをすることもできる。
また、本実施形態に係るプログラム認証システムにおいては、前記鍵挿入手段1が、オブジェクト・コードを生成するアセンブラ、及び/又はアセンブリ・コードを生成するコンパイラであり、すなわち、鍵挿入手段1が別個のプログラムでなく、高級言語で記述されたソースプログラムをアセンブリ言語に変換するプログラムであるコンパイラの一部、及び/又は低レベルな機械語と1対1に対応する文字列を機械語に置き換えるプログラムであるアセンブラの一部として実装することで、認証振舞いに係るプログラム・コードを円滑に挿入することができる。ただし、ソース・コードを解析できるプログラム、オブジェクト・コードを解析できるプログラムというものも存在し、鍵挿入手段1をこのプログラムの一部として実装することもでき、同様な効果を得ることができる。
また、本実施形態に係るプログラム認証システムにおいては、前記認証振舞いが、ある特定のアドレス領域を確保してかかるアドレス領域の先頭番地及びアドレス領域に格納されている情報を参照する処理であって、かかるアドレス領域をアプリケーションプログラムで使用するアドレス領域でないアドレス領域としたものであるためアクセスしたアドレス番地及びかかるアドレスの値の内容を参照することができ、このような行為は他のアプリケーションプログラムの実行の行為と明確に識別することができ、認証振舞いの1つの行為として容易に検出することができ、前記鍵検出手段2の検出を簡易且つ迅速に行うことができる。
また、本実施形態に係るプログラム認証システムにおいては、秘密鍵情報3から鍵挿入手段1が認証振舞いに係る行為を挿入しているが、秘密鍵情報からある種のアルゴリズムを用いて認証振舞いを決定してもよく、この場合には、使用者PC16においても同様なアルゴリズムを用いて認証振舞いを決定することもできる。
また、本実施形態に係るプログラム認証システムにおいては、使用者PC16を用いて構成したが、スマートカード等のハードを使用者PC16に代わって用いることもでき、スマートカードの読み取り機に鍵検出手段2を実装し、スマートカードの書き換え機に鍵挿入手段1を実装することで、スマートカードがウィルスフリーであること、正規のスマートカードであることを認証することができる。
また、本実施形態に係るプログラム認証システムにおいては、受付用サーバ12が秘密鍵情報3を生成しているが、使用者PC16で秘密鍵情報3を生成し、受付用サーバ12に送信してもよい。
また、本実施形態に係るプログラム認証システムにおいては、検出ソフトとして別途鍵検出手段2を使用者PC16に導入したが、挿入済みアプリケーションプログラムに鍵検出手段2の機能も鍵挿入手段1、コンパイラ及びアセンブラ等により挿入してもよい。別途検出ソフトを導入する必要がなく、使用者にとって環境構築の手間が省ける。このようにアプリケーションプログラムに挿入した場合には、別プロセスとして動作してもよいし、同プロセス内で動作させてもよいし、スレッド(thread)で並列的に動作させてもよい。
また、本実施形態に係るプログラム認証システムにおいては、鍵検出手段2を使用者PC16に導入したが、鍵検出手段2を検出処理用サーバ上に構築し、ネットワークを介して使用者PC16からアクセス可能にし、使用者PC16から随時アプリケーションプログラムの実行中の振舞いの行為を送信するようにし、検出処理用サーバでウィルスフリーか否かを判断することもできる。このように実装する場合には、ネットワーク資源を考慮しなければならないが、行為をデータ量の少ないものに変換しさらに圧縮して送信し、検出処理用サーバで解凍し判断することで現実的に実現することができる。
(本発明の第2の実施形態)
本発明の第2の実施形態に係るプログラム認証システムについて図8に基づき説明する。図8は本実施形態に係る鍵検出手段による同一性の判断の説明図である。
本実施形態に係るプログラム認証システムは、前記第1の実施形態に係るプログラム認証システムと同様に構成され、この構成に加え、前記鍵検出手段2は、プログラム実行時に前記秘密鍵情報3と同一の実秘密鍵情報が検出されなかった場合に、以降の実秘密鍵情報が秘密鍵情報3と同一であるとき、相違検出信号を出力しない構成である。
前記鍵検出手段2は、プログラム実行時に前記秘密鍵情報3と同一の実秘密鍵情報が検出されなかったときとは、認証振舞いが複数の行為からなるときに、実際のアプリケーションプログラムの行為がかかる認証振舞いの複数の行為と合致しないものがある場合を示す。このように合致しないものがあれば、前記第1の実施形態に係るプログラム認証システムにおいては、直ちに相違検出信号が鍵検出手段2から出力されるが、本実施形態においては、相違検出信号の出力を待って、合致しない行為が検出された以降の行為が認証振舞いの行為と合致すれば相違検出信号の出力をせず、合致しない行為が検出された以降であっても認証振舞いの行為と合致しなければ相違検出信号を出力するものである。
本実施の具体例を、鍵検出手段2が一部検出方法を採用した場合で図8を用いて説明する。図8(a)が秘密鍵情報3であり、図8(b)ないし図8(e)が鍵検出手段2が検出して秘密鍵情報3との同一性を比較する対象となる実秘密鍵情報である(ここで、一部検出方法を採用しているので、実秘密鍵情報は全て認証振舞いに関連する行為からなる)。図8(b)の実秘密鍵情報は、図8(a)の秘密鍵情報3と同一であり、鍵検出手段2は同一であると判断し相違検出信号を出力しない。図8(c)の実秘密鍵情報は、図8(a)の秘密鍵情報3と2つ目までの行為が同一であるが、3つ目の行為から異なり、それ以降も異なるので、鍵検出手段2はもはや同一でないと判断し相違検出信号を出力する。図8(d)の実秘密鍵情報は、図8(a)の秘密鍵情報3と2つ目までの行為が同一であり3つ目の行為が異なるものの4つ目以降の行為が秘密鍵情報3の3つ目以降の行為と同一となっており鍵検出手段2は相違検出信号を出力しない。図8(e)の実秘密鍵情報は、図8(a)の秘密鍵情報3と2つ目までの行為が同一であり3つ目の行為及び4つ目の行為が異なるものの5つ目以降の行為が秘密鍵情報3の4つ目以降の行為と同一となっており鍵検出手段2は相違検出信号を出力しない。
どの範囲までの相違を鍵検出手段2が認めて相違検出信号を出力しないかは、例えば、設定により変化させることが好ましく、例えば、ウィルスに感染する可能性が少しでもあればシステムを停止させる方が好ましい環境であれば少しの相違も認めず相違検出信号を出力するようにする。さらに、相違検出信号を出力した後の処理をも考慮して、少しでも相違する場合には取りあえず第1の相違検出信号を出力して管理者に通知し、さらに、相違する場合には第2の相違検出信号を出力してアプリケーションプログラムを停止するような構成にすることもできる。
このように本実施形態に係るプログラム認証システムによれば、前記鍵検出手段2は、プログラム実行時に前記秘密鍵情報3と同一の実秘密鍵情報が検出されなかった場合に、以降の実秘密鍵情報が秘密鍵情報3と同一であるとき、相違検出信号を出力しないので、ある程度の幅を持たせて鍵検出手段2が秘密鍵情報3と実秘密鍵情報との同一の判断をしており、比較する最小単位が実秘密情報内で一意となっていないものがあったとしても他の部分で一意となっていれば同一だと判断され、アプリケーションプログラムの正常な動作を妨げることを抑制することができる。
(本発明の第3の実施形態)
本発明の第3の実施形態に係るプログラム認証システムについて説明する。
本実施形態に係るプログラム認証システムは、前記第1の実施形態に係るプログラム認証システムと同様に構成され、この構成に加え、前記鍵検出手段2は、秘密鍵情報3に基づきプログラム実行時に認証振舞い検出する鍵検出回路を生成する鍵検出回路生成部と、当該鍵検出回路を実行する再構成可能なハードウェアである鍵検出回路実行部とからなる構成である。
前記第1の実施形態に係るプログラム認証システム及び第2の実施形態に係るプログラム認証システムでは、鍵検出手段2がどのような行為であっても検出できるようにして全ての行為を検出していたが、このように鍵検出手段2を構成することは実装面で複雑且つ肥大となってしまう。しかし、認証振舞いに係る行為のみを検出することができればよいとの考えに基づけば、秘密鍵情報を生成した場合に想定した行為のみを最低限検出対象とすればよい。このように鍵検出手段2を構成した場合には比較的単純で動作も軽快となるというメリットがある。さらに本実施形態のように、鍵検出回路生成部が秘密鍵情報3に基づき鍵検出回路を生成すれば、アプリケーション毎に異なる秘密鍵情報であった場合にも鍵検出手段2が検出できない行為があるという事態を回避し、最適な鍵検出回路を生成し適切に認証振舞いに係る行為を検出することができる。
このような検出回路は鍵検出回路生成部が、ソフトウェアのプログラムとして生成することもできるが、本実施形態においては、実際の電気・電子回路の回路情報として生成し、鍵検出回路実行部に出力する。鍵検出回路実行部は、再構成可能なハードウェアであり、回路を書き換えることができるICであるFPGA(Field Programmable Gate-Array)が該当する(FPGAでなくても回路を書き換えることができるものであればよい)。したがって、鍵検出回路実行部は、鍵検出回路生成部から出力された回路情報(FPGAでは回路情報をネットリストと呼ぶ場合がある)を受け、回路を再構成する。このような再構成可能なハードウェアを用いることのメリットは、鍵検出回路生成部をソフトウェアで実装した場合と比べ高速な動作を行うことができ、使用者にとってみればアプリケーションプログラムの動作がメインであり本鍵検出手段2は付加的なものに過ぎずパフォーマンスを消費することを最大限抑える必要があり、この要請を満たすことができる。再構成可能なハードウェアも専用ICと比べると動作が遅いが、秘密鍵情報3に基づき鍵検出手段2の動作が異なる本実施形態においては、専用ICを用いることができないことから最適な選択と言える。鍵検出手段2の検出対象とする行為に変更がない場合には、専用のICで実装した方が動作面では好ましい。
このように本実施形態に係るプログラム認証システムによれば、鍵検出手段2が秘密鍵情報3に基づきプログラム実行時に認証振舞い検出する鍵検出回路を生成する鍵検出回路生成部からなるので、アプリケーション毎に異なる秘密鍵情報であった場合にも鍵検出手段2が検出できない行為があるという事態を回避し、最適な鍵検出回路を生成し適切に認証振舞いに係る行為を検出することができ、動作においても検出対象となる行為を限定しているため検出時の動作が高速となる。また、鍵検出手段2が前記鍵検出回路を実行する再構成可能なハードウェアである鍵検出回路実行部からなるので、鍵検出回路実行部は、鍵検出回路生成部から出力された回路情報を受け回路を再構成しており、鍵検出回路生成部をソフトウェアで実装した場合と比べ高速な動作を行うことができる。また、動作が高速となるだけでなく、消費電力の削減も図ることができる。
また、本実施形態に係るプログラム認証システムにおいては、鍵挿入手段1、鍵検出手段2、アプリケーションプログラムをネットリストで実現して、FPGA上で実現することもできる。
また、本実施形態に係るプログラム認証システムにおいては、使用者PC16側に前記鍵検出手段2の鍵検出回路生成部及び鍵検出回路実行部があるとした構成であるが、この鍵検出回路生成部のみをアプリケーションプログラム提供側の構成に組み入れることもでき、例えば、挿入処理サーバ13に組み入れ、この挿入処理サーバ13が挿入済アプリケーションプログラムだけでなく、回路情報(ネットリスト)を生成してデータベースB14に格納し、ダウンロード用サーバ15から使用者PC16に挿入済アプリケーションプログラム及び回路情報(ネットリスト)をダウンロードすることもでき、使用者PC側で回路情報(ネットリスト)を生成する必要がなく迅速にアプリケーションプログラムを起動させることができ、さらに、セキュリティ向上の観点から鍵検出回路生成部をバージョンアップさせた場合に使用者PC16側は何の保守行為をすることなくアプリケーションプログラム提供側で保守行為をすることで対応することができ使用者の負担が管理面で軽減される。
本発明の第1の実施形態に係るプログラム認証システムの構成ブロック図である。 本発明の第1の実施形態に係る各種プログラムの挿入形態である。 本発明の第1の実施形態に係る各種プログラムの挿入形態に対応する同一性の判断方法である。 本発明の第1の実施形態に係るアプリケーション提供システムの構成ブロック図である。 本発明の第1の実施形態に係るアプリケーション提供システムの動作フローチャートである。 本発明の第1の実施形態に係るプログラム認証システムの挿入処理の動作フローチャートである。 本発明の第1の実施形態に係るプログラム認証システムの検出処理の動作フローチャートである。 本発明の第2の実施形態に係る鍵検出手段による同一性の判断の説明図である。
1 鍵挿入手段
2 鍵検出手段
3 秘密鍵情報
4 実行停止手段
11 データベースA
12 受付用サーバ
13 挿入処理用サーバ
14 データベースB
15 ダウンロード用サーバ
16 使用者PC

Claims (6)

  1. アプリケーションプログラムを正規プログラムと認証するためのプログラム実行の振舞いであって、前記アプリケーションプログラムで使用するアドレス領域でない任意のアドレス領域を確保し、当該アドレス領域の先頭番地及びアドレス領域に格納されている情報を参照する認証振舞いをコンピュータによる処理に適した命令の順序付けられた列として定めた秘密鍵情報から当該認証振舞いを前記アプリケーションプログラムにおける任意の処理数ごとに繰り返してプログラム・コードに挿入する鍵挿入手段と、
    プログラム実行時に、前記アプリケーションプログラムの振舞いとしての当該アプリケーションプログラムのプロセス情報を実秘密鍵情報として検出する鍵検出手段とを備え、
    当該鍵検出手段は、前記アプリケーションプログラム実行時に前記秘密鍵情報と前記実秘密鍵情報とを比較し、当該秘密鍵情報と同一の実秘密鍵情報が検出されなかった場合に、相違検出信号を出力することを 特徴とするプログラム認証システム。
  2. 前記請求項1に記載のプログラム認証システムにおいて、
    前記鍵検出手段は、前記アプリケーションプログラム実行時に前記秘密鍵情報と同一の実秘密鍵情報が検出されなかった場合に、以降の実秘密鍵情報が秘密鍵情報と同一であるとき、相違検出信号を出力しないことを
    特徴とするプログラム認証システム。
  3. 前記請求項1または2に記載のプログラム認証システムにおいて、
    前記鍵検出手段が出力した相違検出信号が入力された場合に、前記アプリケーションプログラムの実行そのものを中止又は停止する実行停止手段を備えることを
    特徴とするプログラム認証システム。
  4. 前記請求項1ないし3のいずれかに記載の認証システムにおいて、
    前記鍵挿入手段が、前記秘密鍵情報から認証振舞いを前記アプリケーションプログラムのプログラム・コードに挿入してオブジェクト・コードを生成するアセンブラ、及び/又は認証振舞いを前記アプリケーションプログラムのプログラム・コードに挿入してアセンブリ・コードを生成するコンパイラであることを
    特徴とする認証システム。
  5. 前記請求項1ないし4のいずれかに記載の認証システムにおいて、
    前記鍵検出手段が秘密鍵情報に基づきプログラム実行時に認証振舞い検出する鍵検出回路を生成する鍵検出回路生成部からなることを
    特徴とする認証システム。
  6. 前記請求項5に記載の認証システムにおいて、
    前記鍵検出手段が鍵検出回路を実行する再構成可能なハードウェアである鍵検出回路実行部からなることを
    特徴とする認証システム。
JP2003411884A 2003-12-10 2003-12-10 プログラム認証システム Expired - Fee Related JP4497450B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003411884A JP4497450B2 (ja) 2003-12-10 2003-12-10 プログラム認証システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003411884A JP4497450B2 (ja) 2003-12-10 2003-12-10 プログラム認証システム

Publications (2)

Publication Number Publication Date
JP2005173903A JP2005173903A (ja) 2005-06-30
JP4497450B2 true JP4497450B2 (ja) 2010-07-07

Family

ID=34732497

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003411884A Expired - Fee Related JP4497450B2 (ja) 2003-12-10 2003-12-10 プログラム認証システム

Country Status (1)

Country Link
JP (1) JP4497450B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8302188B2 (en) 2006-07-18 2012-10-30 Panasonic Corporation Instruction generation apparatus for generating a computer program resistant to unauthorized analyses and tampering
EP2053533A4 (en) 2006-11-09 2011-03-23 Panasonic Corp FAKE DETECTION SYSTEM, FAKE DETECTION METHOD, FAKE IDENTIFICATION PROGRAM, RECORDING MEDIUM, INTEGRATED CIRCUIT, DEVICE FOR GENERATING AUTHENTICATION INFORMATION AND FAKE DETECTION DEVICE
JP5404463B2 (ja) * 2010-02-12 2014-01-29 三菱電機株式会社 制御装置及び管理装置
JP6594213B2 (ja) * 2016-01-20 2019-10-23 株式会社東芝 制御装置およびプログラム
CN109472143A (zh) * 2017-12-29 2019-03-15 北京安天网络安全技术有限公司 一种对勒索软件进行自动分析的方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000076064A (ja) * 1998-09-01 2000-03-14 Hitachi Software Eng Co Ltd プログラムへの透かしの挿入方法及びシステム
JP2003523003A (ja) * 1999-12-20 2003-07-29 パット−ライツ リミテッド 他のソフトウェアの使用を正当なユーザのみに規制するためのソフトウェアおよびその方法
JP2003308129A (ja) * 2002-02-12 2003-10-31 Xerox Corp アクセスを制御するためのシステムおよび方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000076064A (ja) * 1998-09-01 2000-03-14 Hitachi Software Eng Co Ltd プログラムへの透かしの挿入方法及びシステム
JP2003523003A (ja) * 1999-12-20 2003-07-29 パット−ライツ リミテッド 他のソフトウェアの使用を正当なユーザのみに規制するためのソフトウェアおよびその方法
JP2003308129A (ja) * 2002-02-12 2003-10-31 Xerox Corp アクセスを制御するためのシステムおよび方法

Also Published As

Publication number Publication date
JP2005173903A (ja) 2005-06-30

Similar Documents

Publication Publication Date Title
US8800042B2 (en) Secure web application development and execution environment
US8266700B2 (en) Secure web application development environment
US9118666B2 (en) Computing device integrity verification
KR101393307B1 (ko) 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템
JP4729575B2 (ja) ソフトウェアのセキュリティ確保
US20070180509A1 (en) Practical platform for high risk applications
US7870613B2 (en) Automating software security restrictions on applications
US20100037317A1 (en) Mehtod and system for security monitoring of the interface between a browser and an external browser module
JP4975127B2 (ja) 取り外し可能な媒体に格納された実行可能なコードにタンパーエビデント性を提供する装置
US20060242406A1 (en) Protected computing environment
BRPI0815605B1 (pt) Método para a comunicação de dados usando um dispositivo de computação; método para gerar uma segunda versão de um componente de comunicação de dados usando um dispositivo de computação; método para comunicação de dados usando um dispositivo de computação; método para a criação de um certificado usando um dispositivo de computação; e método para usar um certificado utilizando um dispositivo de computação
US20150095652A1 (en) Encryption and decryption processing method, apparatus, and device
KR101969481B1 (ko) 다이나믹 보안모듈 생성방법 및 생성장치
EP3127034A1 (en) Software protection
JP2004265286A (ja) 環境に応じて選択されたセキュリティ・ポリシーに従うモバイル機器の管理
CN107533594B (zh) 验证软件的方法、安全软件系统及可读存储介质
US8127033B1 (en) Method and apparatus for accessing local computer system resources from a browser
CN112861191A (zh) 一种应用程序监控方法及装置
Gittins et al. Malware persistence mechanisms
JP2010040044A (ja) ネットワーク化されたコンピュータ環境にあるターゲットコンピュータにソフトウェアをプッシュインストールする間にライセンスを実行するためのシステム(計算デバイス、コンピュータサーバー)、方法、および記録媒体
US9665711B1 (en) Managing and classifying states
JP4497450B2 (ja) プログラム認証システム
US9177123B1 (en) Detecting illegitimate code generators
KR102583995B1 (ko) 암호화 프로그램 다양화
CN106648770B (zh) 一种应用程序安装包的生成方法、加载方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100119

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

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

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

Free format text: PAYMENT UNTIL: 20130423

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