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