説明

コンピュータ保安装置、コンピュータ保安方法、及び記録媒体

本発明は、データ入力装置を介して印加されるデータが運営体制でサポートする運営体制の入力デバイスドライバを経ることなく、直ちに保安入力デバイスドライバを介して暗号化するようにして、ハッキングプログラムがデータ入力装置を介して印加されるデータを不法的に獲得することを根本的に遮断する保安入力デバイスドライバを利用したコンピュータ保安装置及び保安方法を開示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ保安に関し、より詳細には、インタラプトディスクリプタテーブルに登録された運営体制(Operating System)の入力インタラプトサービスルーチンを保安入力インタラプトサービスルーチンに交替するコンピュータ保安装置及び保安方法に関する。このような構成により、データ入力装置から入力されるデータが運営体制の入力インタラプトサービスルーチンにより処理されずに、直ちにデータ保安のための保安入力インタラプトサービスルーチンにより処理されるようにすることによって、ハッキングプログラムによる不法な入力データ獲得及び伝送を遮断することができる。
【背景技術】
【0002】
最近、コンピュータやインターネットなどが急速に発展するにつれて、インターネットバンキングや証券HTS(Home Trading System)のような重要業務をコンピュータを用いて行うことができるようになった。しかしながら、これを悪用してスパイウェア(spyware)やキーストロークロガー(key stroke logger)を用いてキーボードのようなデータ入力装置を介して入力されるデータを別途に全て獲得して記録した後、これを電子メールアドレスやウェブサイトアドレスを通じて外部に送り盗用する事例が増加している。
【0003】
このような悪用事例を解決するために多様な技術が利用されている。一般的に、PCにウイルスワクチン、スパイウェア除去ツールまたはファイアーウォールなどを設置してスパイウェアなどの悪性プログラムを探知し除去する。しかし、変形された悪性プログラムに対しては、そのプログラムを獲得し分析し除去する方法を探し出す前までは役に立たない。
【0004】
このような問題点を補完するために、悪性プログラムが入力データを横取りしないように、入力データをシステムから伝達され、アプリケーションプログラムに安全に伝達する方式が紹介されている。このような方式が紹介された文献として、特許文献1:韓国特許公開第2002−48313号公報の「キーボードハッキング防止方法」、特許文献2:韓国特許登録第378586号公報の「アクティブエックス基盤のキーボードハッキング防止方法及び装置」、特許文献3:韓国特許公開第2004−92101号公報の「仮想キーボードデータ伝送を利用したキーボードハッキング防止方法」、特許文献4:韓国特許公開2004−66237の「キー入力盗用防止方法」、特許文献5:韓国登録特許第447777号公報の「キーストロークデータのハッキング防止方法及びこれを記録したコンピュータで読み取り可能な記録媒体」、及び特許文献6:韓国特許公開第2003−36276号公報の「保安入力デバイスドライバを利用したコンピュータ保安システム」などが挙げられる。
【0005】
前述した先行特許文献のうち、代表的に特許文献2:韓国特許登録第378586号公報を紹介する。この特許文献に開示された方式は、ウィンドウ入力メッセージ情報を横取りするようなレベルのアプリケーションプログラムに対してのみ、入力データを保護する。従って、保安デバイスドライバより先に入力データを横取りするフィルタドライバや、インタラプトサービスルーチンのような下位段階で入力データを受け取るハッキングプログラムに対しては、保安が無力化されるという欠点を有する。
【0006】
以下、図1を参照して従来技術に係るコンピュータ保安装置を説明する。図1は、従来技術に係るコンピュータ保安装置を説明する概念図である。データ入力装置の1つであるキーボードを介して印加されるデータを保護する方法を説明している。
【0007】
キーボードが押圧されると、運営体制は、インタラプトディスクリプタテーブル11に格納されたキーボードインタラプトサービスルーチンアドレスを参照してキーボードインタラプトサービスルーチン12を実行させる。キーボードインタラプトサービスルーチン12は、キーボードデバイスドライバ13を経てキーボードを介して入力されたデータをアプリケーションプログラムで使用可能なスキャンコードに変形させる。スキャンコードに変形されたデータは、キーボードフィルタデバイスドライバ14を経て保安キーボードフィルタデバイスドライバ15に伝達され、暗号化された後、復号化DLL(Dynamic Link library)16でさらに復号化され、アプリケーションプログラム17に伝達される。
【0008】
このように、キーボードを介して入力されたデータは、運営体制でサポートするキーボード処理モジュールを経て保安キーボードフィルタデバイスドライバ15で暗号化されるので、キーボードフィルタデバイスドライバ14のようなフィルタドライバに、データが暗号化される前の段階でキーストロークロガーのようなハッキングプログラムを設置すれば、データを獲得できるようになる。
【0009】
すなわち、従来技術に係るキーボード入力保安システムを適用する場合、変形された形態のスパイウェアやキーストロークロガーから安定性を保証されない不完全性を内包しているので、これを根本的に解決できる新しい方式の保安技術が必要である。
【0010】
その他の従来技術も、同じ問題点を持っており、一部は、実際具現において具体的でなく、具現可能可否を知ることができず、付加的に発生する欠点を保護できる装置が設けられていないという問題点がある。
【発明の開示】
【発明が解決しようとする課題】
【0011】
従って、本発明は、前述したような問題点を解決するためになされたもので、その目的は、データ入力装置を介して入力されるデータを効果的に保護するための新しい方式を提供することにある。
【0012】
本発明の他の目的は、データが運営体制の入力デバイスドライバを経るうちにハッキングプログラムにより不法的に獲得され、外部に流出されることを根本的に遮断することのにある。
【0013】
本発明のさらに他の目的は、運営体制の入力インタラプトサービスルーチンアドレス領域に保安入力インタラプトサービスルーチンアドレスを格納する基本的な原理に追加して保安性をさらに向上させることができる多様な方式を提供することにある。
【課題を解決するための手段】
【0014】
前記目的を達成するために、本発明の第1態様は、インタラプトを担当する関数アドレスの目録を格納し、運営体制によりサポートされる運営体制の入力インタラプトサービスルーチンアドレス領域の一部に保安入力インタラプトサービスルーチンアドレスを格納するインタラプトディスクリプタテーブルと、データ入力装置によりインタラプトが発生する場合、前記保安入力インタラプトサービスルーチンアドレスによって保安入力インタラプトサービスルーチンが実行され、前記データ入力装置を介してデータを印加され、これを暗号化する保安入力デバイスドライバと、前記保安入力デバイスドライバで暗号化されたデータを復号化し、アプリケーションプログラムに伝達する保安入力部と、を備えることを特徴とするコンピュータ保安装置を提供する。
【0015】
好ましくは、保安入力デバイスドライバは、データ入力装置によりインタラプトが発生する場合、保安入力インタラプトサービスルーチンが実行され、データ入力装置から印加されるデータを受信するデータ入力受信部と、データ入力受信部に受信されたデータを暗号化するデータ暗号化部と、前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する監視部と、前記保安入力デバイスドライバの動作を制御する制御部と、を備える。
【0016】
一方、監視部は、既格納された前記データ入力受信部のアドレスと前記データ入力装置に対応する前記インタラプトディスクリプタテーブルの入力インタラプトサービスルーチン領域のアドレスとを比較し、アドレスが変更された場合、変更されたアドレスを前記データ入力受信部のアドレスにさらに交替するように構成することができる。
【0017】
本発明の第2態様は、データ入力装置によりインタラプトが発生する場合、インタラプトディスクリプタテーブルに既登録された保安インタラプトサービスルーチンであるデータ入力受信部のアドレスを参照して保安入力デバイスドライバを駆動させる段階と、前記データ入力受信部から受信されたデータを暗号化して伝達する段階と、前記暗号化されたデータを復号化し、アプリケーションプログラムに伝達する段階と、を備えることを特徴とするコンピュータ保安方法を提供する。
【0018】
好ましくは、前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する段階をさらに備える。インタラプトディスクリプタが変更された場合、元来データ入力受信部のアドレスにさらに変更する段階をさらに備えることができる。
【0019】
一方、本発明のコンピュータ保安方法は、保安インタラプトサービスルーチンのハッシュ値とバイナリコードをあらかじめ格納する段階と、現在保安インタラプトサービスルーチンのハッシュ値を読み出す段階と、前記読み出されたハッシュ値と前記格納されたハッシュ値とを比較し、同一可否を判断する段階と、をさらに備えることができる。
【0020】
また、本発明のコンピュータ保安方法は、周期的にコントロールレジスタCR4のDEフラグをディセイブルさせ、デバッグコントロールレジスタDR7をディセイブルさせる段階をさらに備えることができる。
【0021】
また、本発明のコンピュータ保安方法は、所定周期の時間に、キーボードバッファをリセットし、入出力ポートを介してデータを読み取らないようにする段階をさらに備えることができる。
【0022】
本発明の第3態様は、データ入力装置によりインタラプトが発生する場合、インタラプトディスクリプタテーブルに既登録された保安インタラプトサービスルーチンであるデータ入力受信部のアドレスを参照して保安入力デバイスドライバを駆動させる段階と、前記データ入力受信部から受信されたデータをアプリケーションプログラムに伝達する段階と、前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する段階と、を備えることを特徴とするコンピュータ保安方法を提供する。
【0023】
本発明の第4態様は、上述したコンピュータ保安方法を実行させるためのプログラムを記録した記録媒体を提供する。「記録媒体」とは、本発明の保安方法を適用したプログラムが記録された媒体なら特に限定されない意味である。例えば、ユーザによりオフラインで各コンピュータに設置されるためのCD、フロッピー(登録商標)、メモリスティックなどの製品、またはインターネット上でダウンロードされ得る形態で前記プログラムを格納するためのウェブサーバー、データベースなどを例示することができる。また、「実行させるためのプログラム」とは、公知の圧縮方式で圧縮されている形態を含むことができることは自明である。
【発明を実施するための最良の形態】
【0024】
以下、添付の図面を参照して本発明の好ましい実施例に係るコンピュータ保安装置を詳細に説明する。しかし、本発明の実施例は、様々な変形が可能であり、本発明の範囲が下記実施例に限定されるわけではない。本発明の実施例は、本発明が属する技術分野における通常の知識を有する者にとって本発明をより完全に説明するために提供されるものである。
【0025】
図2は、本発明の好ましい実施例に係るコンピュータ保安装置の概略的な構成図である。
【0026】
図2のコンピュータ保安装置2は、データ入力装置210から入力されるデータを保護するための装置であって、図2のコンピュータ保安装置2は、インタラプトディスクリプタテーブル(Interrupt Descriptor Table)220、保安入力デバイスドライバ230、及び保安入力部240を備える。
【0027】
データ入力部210は、特に限定されるものではなく、システムユーザからデータを入力されるユーザインタフェース装置全てを意味する総称であり、例えば、キーボード、数字キーパッド、マウスまたはジョイスチックなどが可能である。好ましくは、比較的多量の情報を入力可能であり、PCなどに広く用いられるキーボードである。
【0028】
インタラプトディスクリプタテーブル220は、インタラプトを担当する関数アドレスの目録を格納し、運営体制によりサポートされる運営体制の入力インタラプトサービスルーチンアドレス領域に保安入力インタラプトサービスルーチンアドレスを格納する。
【0029】
インタラプトディスクリプタテーブル220は、システムの運営体制で提供される領域に外部インタラプト、内部インタラプト及び例外処理を担当する関数アドレスの目録を格納する。例えば、インタラプトディスクリプタテーブル220は、256個のインタラプトサービスルーチンを割り当てられたメモリにおいて1つの8バイトアレイである。この場合、最初の32個のエントリーは、プロセッサー例外処理を担当し、他の16個のエントリーは、ハードウェアインタラプタ(外部インタラプタ)として使われ、残りは、ソフトインタラプタ(内部インタラプタ)として使われるように構成することができる。インタラプトディスクリプタテーブル220のアドレスは、「インタラプトディスクリプタテーブルレジスタ」と呼ばれるプロセッサーレジスタに格納される。インタラプトディスクリプタテーブルとインタラプトディスクリプタテーブルレジスタ(Interrupt Descriptor Table Register)との関係についての詳細な説明を含むインタラプトディスクリプタテーブルに関する詳細な説明は、“IA-32 Intel Architecture Software Developer’s manual Volume 3, System Programming Guide”を参照することができ、この内容は、本明細書に併合される(incorporated)。
【0030】
データ入力装置210を介してデータが入力される場合、インタラプトが発生し、当該データ入力装置210に対する識別番号が発生する。この番号をインタラプトベクトルと言い、運営体制は、これをインデックスにしてインタラプトディスクリプタテーブル220に格納されたインタラプトサービスルーチンアドレスを探し、目的に合わせて作成された関数であるインタラプトサービスルーチンを実行する。インタラプトディスクリプタテーブル220には、従来は、運営体制によりサポートされていた入力インタラプトサービスルーチンアドレスの代わりに、保安入力デバイスドライバ230により駆動される保安入力インタラプトサービスルーチンアドレスが登録され格納されている。従って、データ入力装置210にデータが入力され、インタラプトが発生する場合、保安入力インタラプトサービスルーチンが実行される。
【0031】
保安入力デバイスドライバ230は、インタラプトディスクリプタテーブル220に登録された保安入力インタラプトサービスルーチンアドレスによってデータ入力装置210を介してデータを入力され、これを暗号化し、保安入力部240に伝送する。インタラプトディスクリプタテーブル220には、従来のような運営体制の入力デバイスドライバ13のアドレスの代わりに、保安入力デバイスドライバ230のアドレスを登録する。従って、データ入力装置210によりインタラプトが発生する場合、運営体制によりサポートされる運営体制の入力インタラプトサービスルーチンが実行されずに、保安入力デバイスドライバ230によりサポートされる保安入力インタラプトサービスルーチンが実行される。
【0032】
インタラプトディスクリプタテーブル220にデータ入力受信部231のアドレスを登録する方法は、特に限定されるものではなく、多様な方式が可能であるが、好ましくは、インタラプトディスクリプタテーブル220内でデータ入力装置210アドレスのインタラプトベクトルだけ移動した領域をデータ入力受信部231のアドレスに交替する方式を利用することができる。インタラプトディスクリプタテーブル220のアドレスは、インタラプトディスクリプタテーブルレジスタに格納されており、各データ入力装置210のインタラプトベクトルは、例えば、Windows(登録商標)2000運営体制の場合、HalGetInterruptVectorのような関数を用いてキーボード及びマウスインタラプタベクトルを得ることができる。インタラプトディスクリプタテーブルレジスタで得られたインタラプトディスクリプタテーブル220のアドレス値に入力デバイスベクトルだけ移動した領域が保安入力インタラプトサービスルーチンのアドレス領域であるから、当該領域にデータ入力受信部231のアドレスを登録すればよい。次の例文は、Windows(登録商標)2000でPS/2 Typeの運営体制キーボードインタラプトサービスルーチンを保安インタラプトサービスルーチンに交替するルーチンが含まれる場合を例示している。
【0033】
【表1】

【0034】
HookInterrupt()関数は、インタラプトディスクリプタテーブルでキーボードインタラプトサービスの交替を行う関数であり、SecuKbdISR()関数は、キーボードデータを保護するための保安キーボードインタラプトサービスルーチンである。
【0035】
HookInterrupt()関数では、HalGetInterruptVector()関数で運営体制で提供するIRQ 1番に該当するキーボードインタラプトベクトル値を受け取り、変数nSaveVecNoに格納する。各プロセッサーは、別途のインタラプトディスクリプタテーブルが存在するので、プロセッサー毎にインタラプトディスクリプタテーブルに保安インタラプトサービスルーチンアドレスを登録する。当該インタラプトのKeNumberProcessorsは、プロセッサーの個数を示し、pIdtBaseは、インタラプトディスクリプタテーブルレジスタに格納されているインタラプトディスクリプタテーブルのアドレスを有する。OriginalISRは、既に登録されているキーボードインタラプトサービスのアドレスを格納する格納先であり、MyKdbISRは、既に登録されていたキーボードインタラプトサービスルーチンを代替する保安キーボードインタラプトサービスルーチンのアドレスである。IDT_SetVector()関数は、インタラプトディスクリプタテーブルにSecuKbdISRを登録し、既に設置されているインタラプトサービスルーチンアドレスをバックアップする。
【0036】
【表2】

【0037】
キーボードインタラプトが発生する場合、SecuKbdISR()関数が呼出される。ReadData()では、60hポートを介してキーボードバッファからキーボード入力データを読み込む。Protection_modeは、現在キーボード入力データを保護するための状態なら、Protection_modeは、‘1’値を有し、それとも、‘0’値を有する。Protection_modeが‘1’の場合には、キーボードバッファをリセットし、60hポートを介してデータを読み取らないようにする役割をするClearBuffer関数を用いて60hポートを0F4h(clears output buffer)や0EE(echo、keyboard responds with EEh)のようなダミーデータでリセットする。これは、60hポートにダミーデータを送り、キーロガーが60hポートを反復的に読み取って入力データを確認するポートスキャニングを行っても、データが流出されないようにするための方法である。これは、保安性を強化するための方法であって、詳細は後述する。
【0038】
データをアプリケーションプログラムにアップロードするためには、StoreData関数を用いてキーボード入力データを格納する。Protection_modeが‘0’の場合は、データを保護せずに、WriteKbdBuffer関数では、キーボードoutput portにキーボード入力データをさらに書き込む。前記関数では、d2h(write keyboard buffer)8048キーボード命令語(keyboard command)を使用した。次に、CallOriginalISR()関数を用いてHookInterrupt()で格納しておいたOriginalISRを呼出する。
【0039】
保安入力部240は、保安入力デバイスドライバ230で暗号化されたデータを元来のデータに復号化し、アプリケーションプログラム250に伝達する。そして、保安入力部240は、データが復号化されると、復号化が完了したという状態をディスプレイし、図3に示されるようなトレイアイコンを用いて保安システムが正常に動作するか否かをユーザに通知する。本実施例では、保安入力部240で前記暗号化されたデータを元来のデータに復号化し、アプリケーションプログラム250に伝達するものに限定して説明しているが、実際に具現化するには、アプリケーションプログラム250で復号化を行うことができ、又は、暗号化された情報がインターネット網を介して伝達され、特定のサーバーで復号化されるように構成することができる。このような場合、アプリケーションプログラムの画面上にキー値を表示しなければならない制限条件を満足するために、多様な具現方法が存在する。例えば、アプリケーションプログラム画面上にキー値を表示しなければならない場合であって、キー値がパスワードの場合、*を出力するように構成することができる。
【0040】
次に、保安入力デバイスドライバ230を詳細に説明する。
【0041】
保安入力デバイスドライバ230は、データ入力受信部231、データ暗号化部232、及び制御部234を備える。必要に応じて、保安入力デバイスドライバ230に監視部233を更に備えることができる。監視部233は、インタラプトディスクリプタテーブル220に登録されたデータ入力受信部231のアドレスが変更されるか否かを監視する。監視部233の機能や役目の詳細については後述する。
【0042】
データ入力受信部231は、データ入力装置210によりインタラプトが発生した場合、データ入力装置210を介して入力されるデータを読み取り、データ暗号化部232に伝送する。
【0043】
データ暗号化部232は、データ入力受信部231から受信されたデータを暗号化し、保安入力部240に伝送する。すなわち、データ入力装置210を介して印加されたデータは、運営体制の入力デバイスドライバを経ることなく、直ちに保安入力デバイスドライバ230で暗号化され、保安入力部240に伝送されるので、ハッキングプログラムは、原本入力データを得ず、又は、既にデータ暗号化部232で暗号化されたデータを得る。好ましくは、暗号化方法は、米国高級暗号標準(AES)の標準アルゴリズムであるRijndaelアルゴリズムを利用した128ビット暗号化方式を使用する。Rijndaelアルゴリズムは、保安性及び処理速度、メモリ活用能力において優れた性能を有する。しかしながら、このようなアルゴリズムは、本発明の一実施例に過ぎないもので、従来使われている他の優れた暗号化アルゴリズムを使用することができることは自明である。
【0044】
制御部234は、監視部233及びデータ暗号化部232を制御するように構成することができ、保安入力部240の復号化部241を制御することができる。実際に具現化するには、保安入力部240内に別途に制御部234を更に含めることはもちろん可能である。
【0045】
保安入力部240は、保安入力デバイスドライバ230で暗号化されたデータを元来のデータに復号化する復号化部241と、復号化事実を通知し、保安システムが正常に動作するか否かをディスプレイする保安状態ディスプレイ部242とを備える。保安状態ディスプレイ部242は、復号化部241で復号化されたデータをアプリケーションプログラム250に伝達する時、共に動作するように構成され、図3に示されるようにアイコンのイメージを変更し、ユーザに入力データが保護されていることを通知する。図3は、本発明の保安装置が正常に動作するか否かをユーザに通知するための手段の一例であるトレイアイコンを示す図である。この際、使われるアイコンは、トレイアイコンであってもよく、又は、アプリケーションプログラム内に含まれたアイコンであってもよい。
【0046】
以下、図4及び図5を参照して本発明の実施例に係るコンピュータ保安装置の動作を概略的に説明する。図4は、本発明の保安装置により、データ入力装置を介して印加されるデータを保護する方法を説明する流れ図である。
【0047】
図4を参照すれば、アプリケーションプログラム250が活性化された後(ステップS301)、データ入力装置210によりインタラプトが発生する場合(ステップS303)、運営体制は、インタラプトディスクリプタテーブル220に登録されたデータ入力受信部231のアドレスを参照して保安入力デバイスドライバ230のデータ入力受信部231を駆動させる(ステップS305)。すなわち、運営体制は、データ入力装置210によるインタラプトが発生する場合、一般的な運営体制の入力デバイスドライバのインタラプトサービスルーチンを実行させることなく、保安インタラプトサービスルーチンであるデータ入力受信部231を実行させることによって、データ入力装置210を介して印加されるデータを受信する。
【0048】
次に、データ暗号化部232は、データ入力受信部231から受信されたデータを暗号化し(ステップS307)、保安入力部240に伝送する。保安入力部240は、保安入力デバイスドライバ230で暗号化されたデータを元来のデータに復号化し、アプリケーションプログラム250に伝達する(ステップS307)。
【0049】
図5は、本発明の好ましい実施例に係るコンピュータ保安方法を説明する概念図である。図5は、従来技術に係る保安方法(図1)との比較によりさらに明確に理解される。
【0050】
すなわち、図1の場合は、キーボードが押圧されると、運営体制は、インタラプトディスクリプタテーブルに格納されたキーボードインタラプトサービスルーチンアドレスを参照してキーボードインタラプトサービスルーチンを実行するのに対し、図5の場合は、データ入力装置から入力されるデータが運営体制の入力インタラプトサービスルーチンにより処理されずに、直ちにデータ保安のための保安入力インタラプトサービスルーチンにより処理される。すなわち、本発明のコンピュータ保安装置によれば、運営体制処理モジュールによる処理以前に、データ保護システムがまず動作する。このような差異点により、上位段階で多くのハッキングプログラムが設置されていても、ハッキングプログラムがデータ入力装置を介して印加されるデータを不法的に獲得することを根本的に防止することができる。
【0051】
次に、本実施例に係るコンピュータ保安装置において監視部233の役目を詳細に説明する。監視部(図2の233)は、選択的な構成要素であって、保安性を強化するための手段である。監視部(図2の233)は、インタラプトディスクリプタテーブル220に登録されたデータ入力受信部231のアドレスが変更されるか否かを監視し、保安インタラプトサービスルーチンの無欠性を検査する。
【0052】
図6は、図2の監視部233がインタラプトディスクリプタテーブル220に登録されたデータ入力受信部231のアドレスの変更可否を監視する方法を説明するための流れ図である。
【0053】
監視部233は、データ入力受信部231のアドレスをあらかじめ格納(ステップS401)した後、インタラプトディスクリプタテーブル220の入力インタラプトサービスルーチン領域に格納されたアドレス値を読み出す(ステップS402)。
【0054】
次に、監視部233は、既格納されたデータ入力受信部231のアドレスと入力インタラプトサービスルーチンアドレスとを比較する(ステップS403)。
【0055】
比較結果、2つのアドレス値が同じ場合には、S402及びS403を繰り返して実行する。しかし、2つのアドレス値が異なる場合には、インタラプトディスクリプタテーブル220に登録されたデータ入力受信部231のアドレスがハッキングプログラムなどにより不法的に変更されたものなので、変更されたインタラプトディスクリプタテーブル220の入力インタラプトサービスルーチン領域のアドレスをデータ入力受信部231のアドレスに交替する(ステップS404)。
【0056】
また、監視部233は、当該事実を制御部234に通知する。すると、制御部234は、図7のようなメッセージウィンドウを画面に表示し、ユーザに当該事実を通知する(ステップS405)。
【0057】
次に、保安インタラプトサービスルーチンをインタラプトディスクリプタテーブルに登録する概念に追加して保安性をさらに向上させることができる方法を例示する。以下では、保安インタラプトサービスルーチンをインタラプトディスクリプタテーブルに登録する段階で存在するいくつかの欠点と解決策を説明する。
【0058】
第一に、保安インタラプトサービスルーチンを登録する方法と同様の方法で保安インタラプトサービスルーチンアドレスをインタラプトディスクリプタテーブルに登録した後、不法データ取得のためのインタラプトサービスルーチンアドレスに登録する方法に対する対策が必要である。すなわち、悪意的なキーストロークロガープログラムがキーボードデータを得るために、インタラプトディスクリプタテーブル(図2の220)の入力インタラプトサービスルーチン領域に登録されているデータ入力受信部(図2の231)のアドレスを変更する場合、入力データは、データ入力受信部(図2の231)に正常に受信されず、キーストロークロガープログラムにより変更された他の箇所に伝送される。
【0059】
これを遮断するための対策として、例えば、監視部233は、データ入力受信部231のアドレスを継続的に監視しつつ、仮に変更される場合、その事実を制御部234に伝達した後、変更された入力インタラプトサービスルーチン領域のアドレスをデータ入力受信部231のアドレスにさらに変更させるように構成することができる。この場合、前記事実を伝達された制御部234は、メッセージウィンドウを画面に表示し、ユーザに当該事実を通知することができる。
【0060】
第二に、保安インタラプトサービスルーチンにジャンプバイナリコードを挿入する方法であって、APIフッキング(hooking)にも使われる技術がある。図8は、本実施例のコンピュータ保安装置において保安インタラプトサービスルーチンにジャンプバイナリコードを挿入する方法で保安性を害する状況を説明するための概念図である。図8を参照してこの方法を説明すれば、不法データ取得を目的とする関数領域に所望の関数のアドレス730にジャンプするバイナリコード(jmp)720を挿入し、インタラプトの発生時、保安インタラプトサービスルーチンより先ず指定した悪意的なインタラプトサービスルーチン関数が実行され、データを受け取り、格納した後、保安インタラプトサービスルーチンにジャンプさせる方法である。
【0061】
図9は、本実施例のコンピュータ保安装置において保安インタラプトサービスルーチンにジャンプバイナリコードを挿入する方法で保安性を害する問題点を解決するための過程を説明する流れ図である。図9を参照して、第二の方式に対する対策を説明する。まず、保安インタラプトサービスルーチンのハッシュ値とバイナリコードをあらかじめ格納し(ステップS501)、現在保安インタラプトサービスルーチンのハッシュ値を読み出す(ステップS503)。その後、保安インタラプトサービスルーチンのバイナリをチェックサムやハッシングアルゴリズムを用いてデータ無欠性を確認できる機能を挿入する。すなわち、ジャンプコードが挿入されているか否かを監視するために、読み出されたハッシュ値と格納されたハッシュ値とを比較し、同一可否を判断し(ステップS505)、同一でない場合、無欠性が破れるようになった時、格納しておいた保安インタラプトサービスルーチンデータを従来のコードに復旧し(ステップS507)、制御部234に結果を伝達する。制御部234は、メッセージウィンドウを画面に表示し、ユーザに当該事実を通知することができる(ステップS509)。
【0062】
第三に、図10を参照して保安インタラプトサービスルーチンを呼出する前に、トラップインタラプトサービスルーチンにジャンプする方法で保安性を害する状況を説明する。トラップインタラプトディスクリプタテーブルにキーロガーインタラプトサービスルーチンを登録し、CR4DEフラグをイネーブルさせ、DR7からDR0にセッティングしたポート番号を持ってI/O読み取り(read)または書き込み(write)する場合、プロセッサーインタラプトを発生させ得るようにセッティングし、DR0レジスタに60hをセッティングする。従って、キーボードを入力すれば、登録されている保安インタラプトサービスルーチンに呼び出され(1)、インタラプトサービスルーチンでは、例えば、(in al、60h)のように60hポートを介して入力データを読み取ると、ポートを監視していたCPUは、インタラプトを発生(2)させ、トラップインタラプトディスクリプタテーブルに登録しておいたキーロガーインタラプトサービスルーチンにジャンプ(3)する。キーロガーインタラプトサービスルーチンは、入力データをALレジスタから読み込んで格納し、トラップインタラプトサービスルーチン処理が終了すれば、ジャンプした位置に戻るようになる(4)。これに対する対策として、デバッグコントロールレジスタを用いてトラップインタラプトサービスルーチンにジャンプしないように周期的にコントロールレジスタCR4のDEフラグをディセイブル(disable)させ、デバッグコントロールレジスタDR7をディセイブル(disable)させるように構成することができる。
【0063】
第四に、ポートスキャン方法でキーボードやマウスI/O入出力をする60hポートを反復的に読み取り、入力データを確認する方法であるポートスキャニングを用いたデータ獲得に対する対策が必要である。前述したように、Protection_modeは、現在キーボード入力データを保護するための状態なら、Protection_modeは、‘1’値を有し、それとも、‘0’値を有する。従って、ポートスキャニングを利用したデート獲得に対処するために、Protection_modeが‘1’の場合には、キーボードバッファをリセットし、入出力ポート60hポートを介してデータを読み取らないようにする役目をするClearBuffer関数を用いて60hポートを0F4h(clears output buffer)や0EE(echo、keyboard responds with EEh)のようなダミーデータでリセットするように構成することができる。
【0064】
一方、本発明の保安方法を適用したプログラムが記録された格納媒体は、CD、フロッピー(登録商標)、メモリスティックなどの格納媒体に記録されて商品として販売され、ユーザによりオフラインで各コンピュータに設置され、特定のプログラムまたは全てのプログラムを利用する場合に適用することができ、他の方式としては、インターネットを介して特定のサイトに接続する時、自動または選択によりファイル形態で本発明の保安方法を適用したプログラムを伝送し、これを設置し、ユーザがエクスプローラのようなウェブブラウザを通じてサイトに情報を送信するために、キーボードのようなデータ入力装置を介してデータを入力する場合、前記保安方法が適用されたプログラムが実行されるようにすることができる。
【0065】
以上において説明した本発明は、本発明が属する技術の分野における通常の知識を有する者であれば、本発明の技術的思想を逸脱しない範囲内で、様々な置換、変形及び変更が可能であるので、上述した実施形態及び添付された図面に限定されるものではない。
【0066】
本発明によれば、コンピュータシステムに設置されたハッキングツールがコンピュータ入力装置から入力されるデータを横取りして第3者に伝達されないように安全にアプリケーションプログラムに伝達されるようにするという効果がある。
【0067】
また、本発明の保安システムは、データ入力装置を介して印加されるデータが運営体制でサポートする運営体制の入力デバイスドライバを経ることなく、直ちに保安入力デバイスドライバを介して暗号化されるようにすることで、上位段階でいくら多くのハッキングプログラムが設置されているとしても、ハッキングプログラムがデータ入力装置を介して印加されるデータを不法的に獲得することを根本的に遮断することができる。
【0068】
また、本発明の運営体制の入力インタラプトサービスルーチンアドレス領域に保安入力インタラプトサービスルーチンアドレスを格納する基本的な原理に追加して、保安インタラプトサービスルーチンをインタラプトディスクリプタテーブルに登録する段階で存在する多様な欠点を解決することができるという効果がある。
【図面の簡単な説明】
【0069】
【図1】従来技術に係るコンピュータ保安装置を説明する概念図である。
【図2】本発明の好ましい実施例に係るコンピュータ保安装置の概略的な構成図である。
【図3】本発明のコンピュータ保安装置が正常に動作するか否かをユーザに通知するための手段の一例であるトレイアイコンを示す図である。
【図4】本発明のコンピュータ保安装置により、データ入力装置を介して印加されるデータを保護する方法を説明するための流れ図である。
【図5】本発明の好ましい実施例に係るコンピュータ保安方法を説明する概念図である。
【図6】本発明のコンピュータ保安装置の監視部がインタラプトディスクリプタテーブルに登録されたデータ入力受信部のアドレスの変更可否を監視する方法を説明する流れ図である。
【図7】本発明の好ましい実施例により保安状態を表示する画面の一例を示す図である。
【図8】本実施例のコンピュータ保安装置において保安インタラプトサービスルーチンにジャンプバイナリコードを挿入する方法で保安性を害する状況を説明する概念図である。
【図9】本実施例のコンピュータ保安装置において保安インタラプトサービスルーチンにジャンプバイナリコードを挿入する方法で保安性を害する問題点を解決するための過程を説明する流れ図である。
【図10】保安インタラプトサービスルーチンを呼出する前にトラップインタラプトサービスルーチンにジャンプする方法で保安性を害する状況を説明する概念図である。

【特許請求の範囲】
【請求項1】
インタラプトを担当する関数アドレスの目録を格納し、運営体制によりサポートされる運営体制の入力インタラプトサービスルーチンアドレス領域の一部に保安入力インタラプトサービスルーチンアドレスを格納するインタラプトディスクリプタテーブルと、
データ入力装置によりインタラプトが発生する場合、前記保安入力インタラプトサービスルーチンアドレスによって保安入力インタラプトサービスルーチンが実行され、前記データ入力装置を介してデータを印加され、これを暗号化する保安入力デバイスドライバと、
前記保安入力デバイスドライバで暗号化されたデータを復号化し、アプリケーションプログラムに伝達する保安入力部と、を備えることを特徴とするコンピュータ保安装置。
【請求項2】
前記保安入力デバイスドライバは、
前記データ入力装置によりインタラプトが発生する場合、前記保安入力インタラプトサービスルーチンが実行され、前記データ入力装置から印加されるデータを受信するデータ入力受信部と、
前記データ入力受信部に受信されたデータを暗号化するデータ暗号化部と、
前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する監視部と、
前記保安入力デバイスドライバの動作を制御する制御部と、を備えることを特徴とする請求項1に記載のコンピュータ保安装置。
【請求項3】
前記監視部は、既格納された前記データ入力受信部のアドレスと前記データ入力装置に対応する前記インタラプトディスクリプタテーブルの入力インタラプトサービスルーチン領域のアドレスとを比較し、アドレスが変更された場合、変更されたアドレスを前記データ入力受信部のアドレスにさらに交替することを特徴とする請求項2に記載のコンピュータ保安装置。
【請求項4】
データ入力装置によりインタラプトが発生する場合、インタラプトディスクリプタテーブルに既登録された保安インタラプトサービスルーチンであるデータ入力受信部のアドレスを参照して保安入力デバイスドライバを駆動させる段階と、
前記データ入力受信部から受信されたデータを暗号化して伝達する段階と、
前記暗号化されたデータを復号化し、アプリケーションプログラムに伝達する段階と、を備えることを特徴とするコンピュータ保安方法。
【請求項5】
前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する段階をさらに備えることを特徴とする請求項4に記載のコンピュータ保安方法。
【請求項6】
前記インタラプトディスクリプタが変更された場合、元来データ入力受信部のアドレスにさらに変更する段階をさらに備えることを特徴とする請求項5に記載のコンピュータ保安方法。
【請求項7】
前記保安インタラプトサービスルーチンのハッシュ値とバイナリコードをあらかじめ格納する段階と、
現在保安インタラプトサービスルーチンのハッシュ値を読み出す段階と、
前記読み出されたハッシュ値と前記格納されたハッシュ値とを比較し、同一可否を判断する段階と、をさらに備えることを特徴とする請求項4に記載のコンピュータ保安方法。
【請求項8】
周期的にコントロールレジスタCR4のDEフラグをディセイブルさせ、デバッグコントロールレジスタDR7をディセイブルさせる段階をさらに備えることを特徴とする請求項4に記載のコンピュータ保安方法。
【請求項9】
所定周期の時間に、キーボードバッファをリセットし、入出力ポートを介してデータを読み取らないようにする段階をさらに備えることを特徴とする請求項4に記載のコンピュータ保安方法。
【請求項10】
データ入力装置によりインタラプトが発生する場合、インタラプトディスクリプタテーブルに既登録された保安インタラプトサービスルーチンであるデータ入力受信部のアドレスを参照して保安入力デバイスドライバを駆動させる段階と、
前記データ入力受信部から受信されたデータをアプリケーションプログラムに伝達する段階と、
前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する段階と、を備えることを特徴とするコンピュータ保安方法。
【請求項11】
インタラプトを担当する関数アドレスの目録を格納し、運営体制によりサポートされる元来入力インタラプトサービスルーチン以外の保安入力インタラプトサービスルーチンアドレスを格納するインタラプトディスクリプタテーブルと、
データ入力装置によりインタラプトが発生する場合、前記保安入力インタラプトサービスルーチンが実行され、前記データ入力装置を介してデータを印加され、これを暗号化する保安入力デバイスドライバと、
前記保安入力デバイスドライバで暗号化されたデータを復号化し、アプリケーションプログラムに伝達する保安入力部と、を備えることを特徴とするコンピュータ保安装置。
【請求項12】
前記保安入力デバイスドライバは、
前記データ入力装置によりインタラプトが発生する場合、前記保安入力インタラプトサービスルーチンが実行され、前記データ入力装置から印加されるデータを受信するデータ入力受信部と、
前記データ入力受信部に受信されたデータを暗号化するデータ暗号化部と、
前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する監視部と、
前記保安入力デバイスドライバの動作を制御する制御部と、を備えることを特徴とする請求項11に記載のコンピュータ保安装置。
【請求項13】
前記監視部は、既格納された前記データ入力受信部のアドレスと前記データ入力装置に対応する前記インタラプトディスクリプタテーブルの入力インタラプトサービスルーチン領域のアドレスとを比較し、アドレスが変更された場合、変更されたアドレスを前記データ入力受信部のアドレスにさらに交替することを特徴とする請求項12に記載のコンピュータ保安装置。
【請求項14】
データ入力装置によりインタラプトが発生する場合、運営体制によりサポートされる元来入力インタラプトサービスルーチン以外のインタラプトディスクリプタテーブルに既登録された保安インタラプトサービスルーチンであるデータ入力受信部のアドレスを参照して保安入力デバイスドライバを駆動させる段階と、
前記データ入力受信部から受信されたデータを暗号化して伝達する段階と、
前記暗号化されたデータを復号化し、アプリケーションプログラムに伝達する段階と、を備えることを特徴とするコンピュータ保安方法。
【請求項15】
前記インタラプトディスクリプタテーブル内で前記データ入力受信部のアドレスの登録は、前記データ入力装置アドレスのインタラプトベクトルだけ移動した領域を前記データ入力受信部のアドレスに交替することを特徴とする請求項14に記載のコンピュータ保安方法。
【請求項16】
前記保安インタラプトサービスルーチンのハッシュ値とバイナリコードをあらかじめ格納する段階と、
現在保安インタラプトサービスルーチンのハッシュ値を読み出す段階と、
前記読み出されたハッシュ値と前記格納されたハッシュ値とを比較し、同一可否を判断する段階と、をさらに備えることを特徴とする請求項14に記載のコンピュータ保安方法。
【請求項17】
周期的にコントロールレジスタCR4のDEフラグをディセイブルさせ、デバッグコントロールレジスタDR7をディセイブルさせる段階をさらに備えることを特徴とする請求項14に記載のコンピュータ保安方法。
【請求項18】
所定周期の時間に、キーボードバッファをリセットし、入出力ポートを介してデータを読み取らないようにする段階をさらに備えることを特徴とする請求項14に記載のコンピュータ保安方法。
【請求項19】
データ入力装置によりインタラプトが発生する場合、インタラプトディスクリプタテーブルに既登録された保安インタラプトサービスルーチンであるデータ入力受信部のアドレスを参照して保安入力デバイスドライバを駆動させる手段と、
前記データ入力受信部から受信されたデータを暗号化して伝達する手段と、
前記暗号化されたデータを復号化し、アプリケーションプログラムに伝達する手段と、を備えるプログラムを記録したことを特徴とする記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公表番号】特表2007−525752(P2007−525752A)
【公表日】平成19年9月6日(2007.9.6)
【国際特許分類】
【出願番号】特願2006−552052(P2006−552052)
【出願日】平成17年2月4日(2005.2.4)
【国際出願番号】PCT/KR2005/000338
【国際公開番号】WO2005/074397
【国際公開日】平成17年8月18日(2005.8.18)
【出願人】(506261925)
【Fターム(参考)】