(57)【要約】  本発明は、データ入力装置を介して印加されるデータが運営体制でサポートする運営体制の入力デバイスドライバを経ることなく、直ちに保安入力デバイスドライバを介して暗号化するようにして、ハッキングプログラムがデータ入力装置を介して印加されるデータを不法的に獲得することを根本的に遮断する保安入力デバイスドライバを利用したコンピュータ保安装置及び保安方法を開示する。
2007525752.tif 000002
【特許請求の範囲】
【請求項１】
インタラプトを担当する関数アドレスの目録を格納し、運営体制によりサポートされる運営体制の入力インタラプトサービスルーチンアドレス領域の一部に保安入力インタラプトサービスルーチンアドレスを格納するインタラプトディスクリプタテーブルと、
データ入力装置によりインタラプトが発生する場合、前記保安入力インタラプトサービスルーチンアドレスによって保安入力インタラプトサービスルーチンが実行され、前記データ入力装置を介してデータを印加され、これを暗号化する保安入力デバイスドライバと、
前記保安入力デバイスドライバで暗号化されたデータを復号化し、アプリケーションプログラムに伝達する保安入力部と、を備えることを特徴とするコンピュータ保安装置。  
【請求項２】
前記保安入力デバイスドライバは、
前記データ入力装置によりインタラプトが発生する場合、前記保安入力インタラプトサービスルーチンが実行され、前記データ入力装置から印加されるデータを受信するデータ入力受信部と、
前記データ入力受信部に受信されたデータを暗号化するデータ暗号化部と、
前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する監視部と、
前記保安入力デバイスドライバの動作を制御する制御部と、を備えることを特徴とする請求項１に記載のコンピュータ保安装置。
【請求項３】
前記監視部は、既格納された前記データ入力受信部のアドレスと前記データ入力装置に対応する前記インタラプトディスクリプタテーブルの入力インタラプトサービスルーチン領域のアドレスとを比較し、アドレスが変更された場合、変更されたアドレスを前記データ入力受信部のアドレスにさらに交替することを特徴とする請求項２に記載のコンピュータ保安装置。
【請求項４】
データ入力装置によりインタラプトが発生する場合、インタラプトディスクリプタテーブルに既登録された保安インタラプトサービスルーチンであるデータ入力受信部のアドレスを参照して保安入力デバイスドライバを駆動させる段階と、
前記データ入力受信部から受信されたデータを暗号化して伝達する段階と、
前記暗号化されたデータを復号化し、アプリケーションプログラムに伝達する段階と、を備えることを特徴とするコンピュータ保安方法。
【請求項５】
前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する段階をさらに備えることを特徴とする請求項４に記載のコンピュータ保安方法。
【請求項６】
前記インタラプトディスクリプタが変更された場合、元来データ入力受信部のアドレスにさらに変更する段階をさらに備えることを特徴とする請求項５に記載のコンピュータ保安方法。
【請求項７】
前記保安インタラプトサービスルーチンのハッシュ値とバイナリコードをあらかじめ格納する段階と、
現在保安インタラプトサービスルーチンのハッシュ値を読み出す段階と、
前記読み出されたハッシュ値と前記格納されたハッシュ値とを比較し、同一可否を判断する段階と、をさらに備えることを特徴とする請求項４に記載のコンピュータ保安方法。
【請求項８】
周期的にコントロールレジスタＣＲ４のＤＥフラグをディセイブルさせ、デバッグコントロールレジスタＤＲ７をディセイブルさせる段階をさらに備えることを特徴とする請求項４に記載のコンピュータ保安方法。
【請求項９】
所定周期の時間に、キーボードバッファをリセットし、入出力ポートを介してデータを読み取らないようにする段階をさらに備えることを特徴とする請求項４に記載のコンピュータ保安方法。
【請求項１０】
データ入力装置によりインタラプトが発生する場合、インタラプトディスクリプタテーブルに既登録された保安インタラプトサービスルーチンであるデータ入力受信部のアドレスを参照して保安入力デバイスドライバを駆動させる段階と、
前記データ入力受信部から受信されたデータをアプリケーションプログラムに伝達する段階と、
前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する段階と、を備えることを特徴とするコンピュータ保安方法。
【請求項１１】
インタラプトを担当する関数アドレスの目録を格納し、運営体制によりサポートされる元来入力インタラプトサービスルーチン以外の保安入力インタラプトサービスルーチンアドレスを格納するインタラプトディスクリプタテーブルと、
データ入力装置によりインタラプトが発生する場合、前記保安入力インタラプトサービスルーチンが実行され、前記データ入力装置を介してデータを印加され、これを暗号化する保安入力デバイスドライバと、
前記保安入力デバイスドライバで暗号化されたデータを復号化し、アプリケーションプログラムに伝達する保安入力部と、を備えることを特徴とするコンピュータ保安装置。  
【請求項１２】
前記保安入力デバイスドライバは、
前記データ入力装置によりインタラプトが発生する場合、前記保安入力インタラプトサービスルーチンが実行され、前記データ入力装置から印加されるデータを受信するデータ入力受信部と、
前記データ入力受信部に受信されたデータを暗号化するデータ暗号化部と、
前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する監視部と、
前記保安入力デバイスドライバの動作を制御する制御部と、を備えることを特徴とする請求項１１に記載のコンピュータ保安装置。
【請求項１３】
前記監視部は、既格納された前記データ入力受信部のアドレスと前記データ入力装置に対応する前記インタラプトディスクリプタテーブルの入力インタラプトサービスルーチン領域のアドレスとを比較し、アドレスが変更された場合、変更されたアドレスを前記データ入力受信部のアドレスにさらに交替することを特徴とする請求項１２に記載のコンピュータ保安装置。
【請求項１４】
データ入力装置によりインタラプトが発生する場合、運営体制によりサポートされる元来入力インタラプトサービスルーチン以外のインタラプトディスクリプタテーブルに既登録された保安インタラプトサービスルーチンであるデータ入力受信部のアドレスを参照して保安入力デバイスドライバを駆動させる段階と、
前記データ入力受信部から受信されたデータを暗号化して伝達する段階と、
前記暗号化されたデータを復号化し、アプリケーションプログラムに伝達する段階と、を備えることを特徴とするコンピュータ保安方法。
【請求項１５】
前記インタラプトディスクリプタテーブル内で前記データ入力受信部のアドレスの登録は、前記データ入力装置アドレスのインタラプトベクトルだけ移動した領域を前記データ入力受信部のアドレスに交替することを特徴とする請求項１４に記載のコンピュータ保安方法。
【請求項１６】
前記保安インタラプトサービスルーチンのハッシュ値とバイナリコードをあらかじめ格納する段階と、
現在保安インタラプトサービスルーチンのハッシュ値を読み出す段階と、
前記読み出されたハッシュ値と前記格納されたハッシュ値とを比較し、同一可否を判断する段階と、をさらに備えることを特徴とする請求項１４に記載のコンピュータ保安方法。
【請求項１７】
周期的にコントロールレジスタＣＲ４のＤＥフラグをディセイブルさせ、デバッグコントロールレジスタＤＲ７をディセイブルさせる段階をさらに備えることを特徴とする請求項１４に記載のコンピュータ保安方法。
【請求項１８】
所定周期の時間に、キーボードバッファをリセットし、入出力ポートを介してデータを読み取らないようにする段階をさらに備えることを特徴とする請求項１４に記載のコンピュータ保安方法。
【請求項１９】
データ入力装置によりインタラプトが発生する場合、インタラプトディスクリプタテーブルに既登録された保安インタラプトサービスルーチンであるデータ入力受信部のアドレスを参照して保安入力デバイスドライバを駆動させる手段と、
前記データ入力受信部から受信されたデータを暗号化して伝達する手段と、
前記暗号化されたデータを復号化し、アプリケーションプログラムに伝達する手段と、を備えるプログラムを記録したことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ保安に関し、より詳細には、インタラプトディスクリプタテーブルに登録された運営体制（Operating System）の入力インタラプトサービスルーチンを保安入力インタラプトサービスルーチンに交替するコンピュータ保安装置及び保安方法に関する。このような構成により、データ入力装置から入力されるデータが運営体制の入力インタラプトサービスルーチンにより処理されずに、直ちにデータ保安のための保安入力インタラプトサービスルーチンにより処理されるようにすることによって、ハッキングプログラムによる不法な入力データ獲得及び伝送を遮断することができる。
【背景技術】
【０００２】
最近、コンピュータやインターネットなどが急速に発展するにつれて、インターネットバンキングや証券ＨＴＳ（Home Trading System）のような重要業務をコンピュータを用いて行うことができるようになった。しかしながら、これを悪用してスパイウェア（spyware）やキーストロークロガー（key stroke logger）を用いてキーボードのようなデータ入力装置を介して入力されるデータを別途に全て獲得して記録した後、これを電子メールアドレスやウェブサイトアドレスを通じて外部に送り盗用する事例が増加している。
【０００３】
このような悪用事例を解決するために多様な技術が利用されている。一般的に、ＰＣにウイルスワクチン、スパイウェア除去ツールまたはファイアーウォールなどを設置してスパイウェアなどの悪性プログラムを探知し除去する。しかし、変形された悪性プログラムに対しては、そのプログラムを獲得し分析し除去する方法を探し出す前までは役に立たない。
【０００４】
このような問題点を補完するために、悪性プログラムが入力データを横取りしないように、入力データをシステムから伝達され、アプリケーションプログラムに安全に伝達する方式が紹介されている。このような方式が紹介された文献として、特許文献１：韓国特許公開第２００２−４８３１３号公報の「キーボードハッキング防止方法」、特許文献２：韓国特許登録第３７８５８６号公報の「アクティブエックス基盤のキーボードハッキング防止方法及び装置」、特許文献３：韓国特許公開第２００４−９２１０１号公報の「仮想キーボードデータ伝送を利用したキーボードハッキング防止方法」、特許文献４：韓国特許公開２００４−６６２３７の「キー入力盗用防止方法」、特許文献５：韓国登録特許第４４７７７７号公報の「キーストロークデータのハッキング防止方法及びこれを記録したコンピュータで読み取り可能な記録媒体」、及び特許文献６：韓国特許公開第２００３−３６２７６号公報の「保安入力デバイスドライバを利用したコンピュータ保安システム」などが挙げられる。
【０００５】
前述した先行特許文献のうち、代表的に特許文献２：韓国特許登録第３７８５８６号公報を紹介する。この特許文献に開示された方式は、ウィンドウ入力メッセージ情報を横取りするようなレベルのアプリケーションプログラムに対してのみ、入力データを保護する。従って、保安デバイスドライバより先に入力データを横取りするフィルタドライバや、インタラプトサービスルーチンのような下位段階で入力データを受け取るハッキングプログラムに対しては、保安が無力化されるという欠点を有する。
【０００６】
以下、図１を参照して従来技術に係るコンピュータ保安装置を説明する。図１は、従来技術に係るコンピュータ保安装置を説明する概念図である。データ入力装置の１つであるキーボードを介して印加されるデータを保護する方法を説明している。
【０００７】
キーボードが押圧されると、運営体制は、インタラプトディスクリプタテーブル１１に格納されたキーボードインタラプトサービスルーチンアドレスを参照してキーボードインタラプトサービスルーチン１２を実行させる。キーボードインタラプトサービスルーチン１２は、キーボードデバイスドライバ１３を経てキーボードを介して入力されたデータをアプリケーションプログラムで使用可能なスキャンコードに変形させる。スキャンコードに変形されたデータは、キーボードフィルタデバイスドライバ１４を経て保安キーボードフィルタデバイスドライバ１５に伝達され、暗号化された後、復号化ＤＬＬ（Dynamic Link library）１６でさらに復号化され、アプリケーションプログラム１７に伝達される。
【０００８】
このように、キーボードを介して入力されたデータは、運営体制でサポートするキーボード処理モジュールを経て保安キーボードフィルタデバイスドライバ１５で暗号化されるので、キーボードフィルタデバイスドライバ１４のようなフィルタドライバに、データが暗号化される前の段階でキーストロークロガーのようなハッキングプログラムを設置すれば、データを獲得できるようになる。
【０００９】
すなわち、従来技術に係るキーボード入力保安システムを適用する場合、変形された形態のスパイウェアやキーストロークロガーから安定性を保証されない不完全性を内包しているので、これを根本的に解決できる新しい方式の保安技術が必要である。
【００１０】
その他の従来技術も、同じ問題点を持っており、一部は、実際具現において具体的でなく、具現可能可否を知ることができず、付加的に発生する欠点を保護できる装置が設けられていないという問題点がある。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
従って、本発明は、前述したような問題点を解決するためになされたもので、その目的は、データ入力装置を介して入力されるデータを効果的に保護するための新しい方式を提供することにある。
【００１２】
本発明の他の目的は、データが運営体制の入力デバイスドライバを経るうちにハッキングプログラムにより不法的に獲得され、外部に流出されることを根本的に遮断することのにある。
【００１３】
本発明のさらに他の目的は、運営体制の入力インタラプトサービスルーチンアドレス領域に保安入力インタラプトサービスルーチンアドレスを格納する基本的な原理に追加して保安性をさらに向上させることができる多様な方式を提供することにある。
【課題を解決するための手段】
【００１４】
前記目的を達成するために、本発明の第１態様は、インタラプトを担当する関数アドレスの目録を格納し、運営体制によりサポートされる運営体制の入力インタラプトサービスルーチンアドレス領域の一部に保安入力インタラプトサービスルーチンアドレスを格納するインタラプトディスクリプタテーブルと、データ入力装置によりインタラプトが発生する場合、前記保安入力インタラプトサービスルーチンアドレスによって保安入力インタラプトサービスルーチンが実行され、前記データ入力装置を介してデータを印加され、これを暗号化する保安入力デバイスドライバと、前記保安入力デバイスドライバで暗号化されたデータを復号化し、アプリケーションプログラムに伝達する保安入力部と、を備えることを特徴とするコンピュータ保安装置を提供する。  
【００１５】
好ましくは、保安入力デバイスドライバは、データ入力装置によりインタラプトが発生する場合、保安入力インタラプトサービスルーチンが実行され、データ入力装置から印加されるデータを受信するデータ入力受信部と、データ入力受信部に受信されたデータを暗号化するデータ暗号化部と、前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する監視部と、前記保安入力デバイスドライバの動作を制御する制御部と、を備える。
【００１６】
一方、監視部は、既格納された前記データ入力受信部のアドレスと前記データ入力装置に対応する前記インタラプトディスクリプタテーブルの入力インタラプトサービスルーチン領域のアドレスとを比較し、アドレスが変更された場合、変更されたアドレスを前記データ入力受信部のアドレスにさらに交替するように構成することができる。
【００１７】
本発明の第２態様は、データ入力装置によりインタラプトが発生する場合、インタラプトディスクリプタテーブルに既登録された保安インタラプトサービスルーチンであるデータ入力受信部のアドレスを参照して保安入力デバイスドライバを駆動させる段階と、前記データ入力受信部から受信されたデータを暗号化して伝達する段階と、前記暗号化されたデータを復号化し、アプリケーションプログラムに伝達する段階と、を備えることを特徴とするコンピュータ保安方法を提供する。
【００１８】
好ましくは、前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する段階をさらに備える。インタラプトディスクリプタが変更された場合、元来データ入力受信部のアドレスにさらに変更する段階をさらに備えることができる。
【００１９】
一方、本発明のコンピュータ保安方法は、保安インタラプトサービスルーチンのハッシュ値とバイナリコードをあらかじめ格納する段階と、現在保安インタラプトサービスルーチンのハッシュ値を読み出す段階と、前記読み出されたハッシュ値と前記格納されたハッシュ値とを比較し、同一可否を判断する段階と、をさらに備えることができる。
【００２０】
また、本発明のコンピュータ保安方法は、周期的にコントロールレジスタＣＲ４のＤＥフラグをディセイブルさせ、デバッグコントロールレジスタＤＲ７をディセイブルさせる段階をさらに備えることができる。
【００２１】
また、本発明のコンピュータ保安方法は、所定周期の時間に、キーボードバッファをリセットし、入出力ポートを介してデータを読み取らないようにする段階をさらに備えることができる。
【００２２】
本発明の第３態様は、データ入力装置によりインタラプトが発生する場合、インタラプトディスクリプタテーブルに既登録された保安インタラプトサービスルーチンであるデータ入力受信部のアドレスを参照して保安入力デバイスドライバを駆動させる段階と、前記データ入力受信部から受信されたデータをアプリケーションプログラムに伝達する段階と、前記インタラプトディスクリプタテーブルに登録された前記データ入力受信部のアドレスの変更可否を監視する段階と、を備えることを特徴とするコンピュータ保安方法を提供する。
【００２３】
本発明の第４態様は、上述したコンピュータ保安方法を実行させるためのプログラムを記録した記録媒体を提供する。「記録媒体」とは、本発明の保安方法を適用したプログラムが記録された媒体なら特に限定されない意味である。例えば、ユーザによりオフラインで各コンピュータに設置されるためのＣＤ、フロッピー（登録商標）、メモリスティックなどの製品、またはインターネット上でダウンロードされ得る形態で前記プログラムを格納するためのウェブサーバー、データベースなどを例示することができる。また、「実行させるためのプログラム」とは、公知の圧縮方式で圧縮されている形態を含むことができることは自明である。
【発明を実施するための最良の形態】
【００２４】
以下、添付の図面を参照して本発明の好ましい実施例に係るコンピュータ保安装置を詳細に説明する。しかし、本発明の実施例は、様々な変形が可能であり、本発明の範囲が下記実施例に限定されるわけではない。本発明の実施例は、本発明が属する技術分野における通常の知識を有する者にとって本発明をより完全に説明するために提供されるものである。
【００２５】
図２は、本発明の好ましい実施例に係るコンピュータ保安装置の概略的な構成図である。
【００２６】
図２のコンピュータ保安装置２は、データ入力装置２１０から入力されるデータを保護するための装置であって、図２のコンピュータ保安装置２は、インタラプトディスクリプタテーブル（Interrupt Descriptor Table）２２０、保安入力デバイスドライバ２３０、及び保安入力部２４０を備える。
【００２７】
データ入力部２１０は、特に限定されるものではなく、システムユーザからデータを入力されるユーザインタフェース装置全てを意味する総称であり、例えば、キーボード、数字キーパッド、マウスまたはジョイスチックなどが可能である。好ましくは、比較的多量の情報を入力可能であり、ＰＣなどに広く用いられるキーボードである。
【００２８】
インタラプトディスクリプタテーブル２２０は、インタラプトを担当する関数アドレスの目録を格納し、運営体制によりサポートされる運営体制の入力インタラプトサービスルーチンアドレス領域に保安入力インタラプトサービスルーチンアドレスを格納する。
【００２９】
インタラプトディスクリプタテーブル２２０は、システムの運営体制で提供される領域に外部インタラプト、内部インタラプト及び例外処理を担当する関数アドレスの目録を格納する。例えば、インタラプトディスクリプタテーブル２２０は、２５６個のインタラプトサービスルーチンを割り当てられたメモリにおいて１つの８バイトアレイである。この場合、最初の３２個のエントリーは、プロセッサー例外処理を担当し、他の１６個のエントリーは、ハードウェアインタラプタ（外部インタラプタ）として使われ、残りは、ソフトインタラプタ（内部インタラプタ）として使われるように構成することができる。インタラプトディスクリプタテーブル２２０のアドレスは、「インタラプトディスクリプタテーブルレジスタ」と呼ばれるプロセッサーレジスタに格納される。インタラプトディスクリプタテーブルとインタラプトディスクリプタテーブルレジスタ（Interrupt Descriptor Table Register）との関係についての詳細な説明を含むインタラプトディスクリプタテーブルに関する詳細な説明は、“IA-32 Intel Architecture Software Developer’s manual Volume 3, System Programming Guide”を参照することができ、この内容は、本明細書に併合される（incorporated）。
【００３０】
データ入力装置２１０を介してデータが入力される場合、インタラプトが発生し、当該データ入力装置２１０に対する識別番号が発生する。この番号をインタラプトベクトルと言い、運営体制は、これをインデックスにしてインタラプトディスクリプタテーブル２２０に格納されたインタラプトサービスルーチンアドレスを探し、目的に合わせて作成された関数であるインタラプトサービスルーチンを実行する。インタラプトディスクリプタテーブル２２０には、従来は、運営体制によりサポートされていた入力インタラプトサービスルーチンアドレスの代わりに、保安入力デバイスドライバ２３０により駆動される保安入力インタラプトサービスルーチンアドレスが登録され格納されている。従って、データ入力装置２１０にデータが入力され、インタラプトが発生する場合、保安入力インタラプトサービスルーチンが実行される。
【００３１】
保安入力デバイスドライバ２３０は、インタラプトディスクリプタテーブル２２０に登録された保安入力インタラプトサービスルーチンアドレスによってデータ入力装置２１０を介してデータを入力され、これを暗号化し、保安入力部２４０に伝送する。インタラプトディスクリプタテーブル２２０には、従来のような運営体制の入力デバイスドライバ１３のアドレスの代わりに、保安入力デバイスドライバ２３０のアドレスを登録する。従って、データ入力装置２１０によりインタラプトが発生する場合、運営体制によりサポートされる運営体制の入力インタラプトサービスルーチンが実行されずに、保安入力デバイスドライバ２３０によりサポートされる保安入力インタラプトサービスルーチンが実行される。
【００３２】
インタラプトディスクリプタテーブル２２０にデータ入力受信部２３１のアドレスを登録する方法は、特に限定されるものではなく、多様な方式が可能であるが、好ましくは、インタラプトディスクリプタテーブル２２０内でデータ入力装置２１０アドレスのインタラプトベクトルだけ移動した領域をデータ入力受信部２３１のアドレスに交替する方式を利用することができる。インタラプトディスクリプタテーブル２２０のアドレスは、インタラプトディスクリプタテーブルレジスタに格納されており、各データ入力装置２１０のインタラプトベクトルは、例えば、Ｗｉｎｄｏｗｓ（登録商標）２０００運営体制の場合、ＨａｌＧｅｔＩｎｔｅｒｒｕｐｔＶｅｃｔｏｒのような関数を用いてキーボード及びマウスインタラプタベクトルを得ることができる。インタラプトディスクリプタテーブルレジスタで得られたインタラプトディスクリプタテーブル２２０のアドレス値に入力デバイスベクトルだけ移動した領域が保安入力インタラプトサービスルーチンのアドレス領域であるから、当該領域にデータ入力受信部２３１のアドレスを登録すればよい。次の例文は、Ｗｉｎｄｏｗｓ（登録商標）２０００でＰＳ／２  Ｔｙｐｅの運営体制キーボードインタラプトサービスルーチンを保安インタラプトサービスルーチンに交替するルーチンが含まれる場合を例示している。
【００３３】
【表１】
2007525752.tif 000003
【００３４】
ＨｏｏｋＩｎｔｅｒｒｕｐｔ（）関数は、インタラプトディスクリプタテーブルでキーボードインタラプトサービスの交替を行う関数であり、ＳｅｃｕＫｂｄＩＳＲ（）関数は、キーボードデータを保護するための保安キーボードインタラプトサービスルーチンである。
【００３５】
ＨｏｏｋＩｎｔｅｒｒｕｐｔ（）関数では、ＨａｌＧｅｔＩｎｔｅｒｒｕｐｔＶｅｃｔｏｒ（）関数で運営体制で提供するＩＲＱ  １番に該当するキーボードインタラプトベクトル値を受け取り、変数ｎＳａｖｅＶｅｃＮｏに格納する。各プロセッサーは、別途のインタラプトディスクリプタテーブルが存在するので、プロセッサー毎にインタラプトディスクリプタテーブルに保安インタラプトサービスルーチンアドレスを登録する。当該インタラプトのＫｅＮｕｍｂｅｒＰｒｏｃｅｓｓｏｒｓは、プロセッサーの個数を示し、ｐＩｄｔＢａｓｅは、インタラプトディスクリプタテーブルレジスタに格納されているインタラプトディスクリプタテーブルのアドレスを有する。ＯｒｉｇｉｎａｌＩＳＲは、既に登録されているキーボードインタラプトサービスのアドレスを格納する格納先であり、ＭｙＫｄｂＩＳＲは、既に登録されていたキーボードインタラプトサービスルーチンを代替する保安キーボードインタラプトサービスルーチンのアドレスである。ＩＤＴ＿ＳｅｔＶｅｃｔｏｒ（）関数は、インタラプトディスクリプタテーブルにＳｅｃｕＫｂｄＩＳＲを登録し、既に設置されているインタラプトサービスルーチンアドレスをバックアップする。
【００３６】
【表２】
2007525752.tif 000004
【００３７】
キーボードインタラプトが発生する場合、ＳｅｃｕＫｂｄＩＳＲ（）関数が呼出される。ＲｅａｄＤａｔａ（）では、６０ｈポートを介してキーボードバッファからキーボード入力データを読み込む。Ｐｒｏｔｅｃｔｉｏｎ＿ｍｏｄｅは、現在キーボード入力データを保護するための状態なら、Ｐｒｏｔｅｃｔｉｏｎ＿ｍｏｄｅは、‘１’値を有し、それとも、‘０’値を有する。Ｐｒｏｔｅｃｔｉｏｎ＿ｍｏｄｅが‘１’の場合には、キーボードバッファをリセットし、６０ｈポートを介してデータを読み取らないようにする役割をするＣｌｅａｒＢｕｆｆｅｒ関数を用いて６０ｈポートを０Ｆ４ｈ（clears output buffer）や０ＥＥ（echo、keyboard responds with EEh）のようなダミーデータでリセットする。これは、６０ｈポートにダミーデータを送り、キーロガーが６０ｈポートを反復的に読み取って入力データを確認するポートスキャニングを行っても、データが流出されないようにするための方法である。これは、保安性を強化するための方法であって、詳細は後述する。
【００３８】
データをアプリケーションプログラムにアップロードするためには、ＳｔｏｒｅＤａｔａ関数を用いてキーボード入力データを格納する。Ｐｒｏｔｅｃｔｉｏｎ＿ｍｏｄｅが‘０’の場合は、データを保護せずに、ＷｒｉｔｅＫｂｄＢｕｆｆｅｒ関数では、キーボードｏｕｔｐｕｔ  ｐｏｒｔにキーボード入力データをさらに書き込む。前記関数では、ｄ２ｈ（write keyboard buffer）８０４８キーボード命令語（keyboard command）を使用した。次に、ＣａｌｌＯｒｉｇｉｎａｌＩＳＲ（）関数を用いてＨｏｏｋＩｎｔｅｒｒｕｐｔ（）で格納しておいたＯｒｉｇｉｎａｌＩＳＲを呼出する。
【００３９】
保安入力部２４０は、保安入力デバイスドライバ２３０で暗号化されたデータを元来のデータに復号化し、アプリケーションプログラム２５０に伝達する。そして、保安入力部２４０は、データが復号化されると、復号化が完了したという状態をディスプレイし、図３に示されるようなトレイアイコンを用いて保安システムが正常に動作するか否かをユーザに通知する。本実施例では、保安入力部２４０で前記暗号化されたデータを元来のデータに復号化し、アプリケーションプログラム２５０に伝達するものに限定して説明しているが、実際に具現化するには、アプリケーションプログラム２５０で復号化を行うことができ、又は、暗号化された情報がインターネット網を介して伝達され、特定のサーバーで復号化されるように構成することができる。このような場合、アプリケーションプログラムの画面上にキー値を表示しなければならない制限条件を満足するために、多様な具現方法が存在する。例えば、アプリケーションプログラム画面上にキー値を表示しなければならない場合であって、キー値がパスワードの場合、＊を出力するように構成することができる。
【００４０】
次に、保安入力デバイスドライバ２３０を詳細に説明する。
【００４１】
保安入力デバイスドライバ２３０は、データ入力受信部２３１、データ暗号化部２３２、及び制御部２３４を備える。必要に応じて、保安入力デバイスドライバ２３０に監視部２３３を更に備えることができる。監視部２３３は、インタラプトディスクリプタテーブル２２０に登録されたデータ入力受信部２３１のアドレスが変更されるか否かを監視する。監視部２３３の機能や役目の詳細については後述する。
【００４２】
データ入力受信部２３１は、データ入力装置２１０によりインタラプトが発生した場合、データ入力装置２１０を介して入力されるデータを読み取り、データ暗号化部２３２に伝送する。
【００４３】
データ暗号化部２３２は、データ入力受信部２３１から受信されたデータを暗号化し、保安入力部２４０に伝送する。すなわち、データ入力装置２１０を介して印加されたデータは、運営体制の入力デバイスドライバを経ることなく、直ちに保安入力デバイスドライバ２３０で暗号化され、保安入力部２４０に伝送されるので、ハッキングプログラムは、原本入力データを得ず、又は、既にデータ暗号化部２３２で暗号化されたデータを得る。好ましくは、暗号化方法は、米国高級暗号標準（ＡＥＳ）の標準アルゴリズムであるＲｉｊｎｄａｅｌアルゴリズムを利用した１２８ビット暗号化方式を使用する。Ｒｉｊｎｄａｅｌアルゴリズムは、保安性及び処理速度、メモリ活用能力において優れた性能を有する。しかしながら、このようなアルゴリズムは、本発明の一実施例に過ぎないもので、従来使われている他の優れた暗号化アルゴリズムを使用することができることは自明である。
【００４４】
制御部２３４は、監視部２３３及びデータ暗号化部２３２を制御するように構成することができ、保安入力部２４０の復号化部２４１を制御することができる。実際に具現化するには、保安入力部２４０内に別途に制御部２３４を更に含めることはもちろん可能である。
【００４５】
保安入力部２４０は、保安入力デバイスドライバ２３０で暗号化されたデータを元来のデータに復号化する復号化部２４１と、復号化事実を通知し、保安システムが正常に動作するか否かをディスプレイする保安状態ディスプレイ部２４２とを備える。保安状態ディスプレイ部２４２は、復号化部２４１で復号化されたデータをアプリケーションプログラム２５０に伝達する時、共に動作するように構成され、図３に示されるようにアイコンのイメージを変更し、ユーザに入力データが保護されていることを通知する。図３は、本発明の保安装置が正常に動作するか否かをユーザに通知するための手段の一例であるトレイアイコンを示す図である。この際、使われるアイコンは、トレイアイコンであってもよく、又は、アプリケーションプログラム内に含まれたアイコンであってもよい。
【００４６】
以下、図４及び図５を参照して本発明の実施例に係るコンピュータ保安装置の動作を概略的に説明する。図４は、本発明の保安装置により、データ入力装置を介して印加されるデータを保護する方法を説明する流れ図である。
【００４７】
図４を参照すれば、アプリケーションプログラム２５０が活性化された後（ステップＳ３０１）、データ入力装置２１０によりインタラプトが発生する場合（ステップＳ３０３）、運営体制は、インタラプトディスクリプタテーブル２２０に登録されたデータ入力受信部２３１のアドレスを参照して保安入力デバイスドライバ２３０のデータ入力受信部２３１を駆動させる（ステップＳ３０５）。すなわち、運営体制は、データ入力装置２１０によるインタラプトが発生する場合、一般的な運営体制の入力デバイスドライバのインタラプトサービスルーチンを実行させることなく、保安インタラプトサービスルーチンであるデータ入力受信部２３１を実行させることによって、データ入力装置２１０を介して印加されるデータを受信する。
【００４８】
次に、データ暗号化部２３２は、データ入力受信部２３１から受信されたデータを暗号化し（ステップＳ３０７）、保安入力部２４０に伝送する。保安入力部２４０は、保安入力デバイスドライバ２３０で暗号化されたデータを元来のデータに復号化し、アプリケーションプログラム２５０に伝達する（ステップＳ３０７）。
【００４９】
図５は、本発明の好ましい実施例に係るコンピュータ保安方法を説明する概念図である。図５は、従来技術に係る保安方法（図１）との比較によりさらに明確に理解される。
【００５０】
すなわち、図１の場合は、キーボードが押圧されると、運営体制は、インタラプトディスクリプタテーブルに格納されたキーボードインタラプトサービスルーチンアドレスを参照してキーボードインタラプトサービスルーチンを実行するのに対し、図５の場合は、データ入力装置から入力されるデータが運営体制の入力インタラプトサービスルーチンにより処理されずに、直ちにデータ保安のための保安入力インタラプトサービスルーチンにより処理される。すなわち、本発明のコンピュータ保安装置によれば、運営体制処理モジュールによる処理以前に、データ保護システムがまず動作する。このような差異点により、上位段階で多くのハッキングプログラムが設置されていても、ハッキングプログラムがデータ入力装置を介して印加されるデータを不法的に獲得することを根本的に防止することができる。
【００５１】
次に、本実施例に係るコンピュータ保安装置において監視部２３３の役目を詳細に説明する。監視部（図２の２３３）は、選択的な構成要素であって、保安性を強化するための手段である。監視部（図２の２３３）は、インタラプトディスクリプタテーブル２２０に登録されたデータ入力受信部２３１のアドレスが変更されるか否かを監視し、保安インタラプトサービスルーチンの無欠性を検査する。
【００５２】
図６は、図２の監視部２３３がインタラプトディスクリプタテーブル２２０に登録されたデータ入力受信部２３１のアドレスの変更可否を監視する方法を説明するための流れ図である。
【００５３】
監視部２３３は、データ入力受信部２３１のアドレスをあらかじめ格納（ステップＳ４０１）した後、インタラプトディスクリプタテーブル２２０の入力インタラプトサービスルーチン領域に格納されたアドレス値を読み出す（ステップＳ４０２）。
【００５４】
次に、監視部２３３は、既格納されたデータ入力受信部２３１のアドレスと入力インタラプトサービスルーチンアドレスとを比較する（ステップＳ４０３）。
【００５５】
比較結果、２つのアドレス値が同じ場合には、Ｓ４０２及びＳ４０３を繰り返して実行する。しかし、２つのアドレス値が異なる場合には、インタラプトディスクリプタテーブル２２０に登録されたデータ入力受信部２３１のアドレスがハッキングプログラムなどにより不法的に変更されたものなので、変更されたインタラプトディスクリプタテーブル２２０の入力インタラプトサービスルーチン領域のアドレスをデータ入力受信部２３１のアドレスに交替する（ステップＳ４０４）。
【００５６】
また、監視部２３３は、当該事実を制御部２３４に通知する。すると、制御部２３４は、図７のようなメッセージウィンドウを画面に表示し、ユーザに当該事実を通知する（ステップＳ４０５）。
【００５７】
次に、保安インタラプトサービスルーチンをインタラプトディスクリプタテーブルに登録する概念に追加して保安性をさらに向上させることができる方法を例示する。以下では、保安インタラプトサービスルーチンをインタラプトディスクリプタテーブルに登録する段階で存在するいくつかの欠点と解決策を説明する。
【００５８】
第一に、保安インタラプトサービスルーチンを登録する方法と同様の方法で保安インタラプトサービスルーチンアドレスをインタラプトディスクリプタテーブルに登録した後、不法データ取得のためのインタラプトサービスルーチンアドレスに登録する方法に対する対策が必要である。すなわち、悪意的なキーストロークロガープログラムがキーボードデータを得るために、インタラプトディスクリプタテーブル（図２の２２０）の入力インタラプトサービスルーチン領域に登録されているデータ入力受信部（図２の２３１）のアドレスを変更する場合、入力データは、データ入力受信部（図２の２３１）に正常に受信されず、キーストロークロガープログラムにより変更された他の箇所に伝送される。
【００５９】
これを遮断するための対策として、例えば、監視部２３３は、データ入力受信部２３１のアドレスを継続的に監視しつつ、仮に変更される場合、その事実を制御部２３４に伝達した後、変更された入力インタラプトサービスルーチン領域のアドレスをデータ入力受信部２３１のアドレスにさらに変更させるように構成することができる。この場合、前記事実を伝達された制御部２３４は、メッセージウィンドウを画面に表示し、ユーザに当該事実を通知することができる。
【００６０】
第二に、保安インタラプトサービスルーチンにジャンプバイナリコードを挿入する方法であって、ＡＰＩフッキング（hooking）にも使われる技術がある。図８は、本実施例のコンピュータ保安装置において保安インタラプトサービスルーチンにジャンプバイナリコードを挿入する方法で保安性を害する状況を説明するための概念図である。図８を参照してこの方法を説明すれば、不法データ取得を目的とする関数領域に所望の関数のアドレス７３０にジャンプするバイナリコード（ｊｍｐ）７２０を挿入し、インタラプトの発生時、保安インタラプトサービスルーチンより先ず指定した悪意的なインタラプトサービスルーチン関数が実行され、データを受け取り、格納した後、保安インタラプトサービスルーチンにジャンプさせる方法である。
【００６１】
図９は、本実施例のコンピュータ保安装置において保安インタラプトサービスルーチンにジャンプバイナリコードを挿入する方法で保安性を害する問題点を解決するための過程を説明する流れ図である。図９を参照して、第二の方式に対する対策を説明する。まず、保安インタラプトサービスルーチンのハッシュ値とバイナリコードをあらかじめ格納し（ステップＳ５０１）、現在保安インタラプトサービスルーチンのハッシュ値を読み出す（ステップＳ５０３）。その後、保安インタラプトサービスルーチンのバイナリをチェックサムやハッシングアルゴリズムを用いてデータ無欠性を確認できる機能を挿入する。すなわち、ジャンプコードが挿入されているか否かを監視するために、読み出されたハッシュ値と格納されたハッシュ値とを比較し、同一可否を判断し（ステップＳ５０５）、同一でない場合、無欠性が破れるようになった時、格納しておいた保安インタラプトサービスルーチンデータを従来のコードに復旧し（ステップＳ５０７）、制御部２３４に結果を伝達する。制御部２３４は、メッセージウィンドウを画面に表示し、ユーザに当該事実を通知することができる（ステップＳ５０９）。
【００６２】
第三に、図１０を参照して保安インタラプトサービスルーチンを呼出する前に、トラップインタラプトサービスルーチンにジャンプする方法で保安性を害する状況を説明する。トラップインタラプトディスクリプタテーブルにキーロガーインタラプトサービスルーチンを登録し、ＣＲ４ＤＥフラグをイネーブルさせ、ＤＲ７からＤＲ０にセッティングしたポート番号を持ってＩ／Ｏ読み取り（read）または書き込み（write）する場合、プロセッサーインタラプトを発生させ得るようにセッティングし、ＤＲ０レジスタに６０ｈをセッティングする。従って、キーボードを入力すれば、登録されている保安インタラプトサービスルーチンに呼び出され（１）、インタラプトサービスルーチンでは、例えば、（ｉｎ  ａｌ、６０ｈ）のように６０ｈポートを介して入力データを読み取ると、ポートを監視していたＣＰＵは、インタラプトを発生（２）させ、トラップインタラプトディスクリプタテーブルに登録しておいたキーロガーインタラプトサービスルーチンにジャンプ（３）する。キーロガーインタラプトサービスルーチンは、入力データをＡＬレジスタから読み込んで格納し、トラップインタラプトサービスルーチン処理が終了すれば、ジャンプした位置に戻るようになる（４）。これに対する対策として、デバッグコントロールレジスタを用いてトラップインタラプトサービスルーチンにジャンプしないように周期的にコントロールレジスタＣＲ４のＤＥフラグをディセイブル（disable）させ、デバッグコントロールレジスタＤＲ７をディセイブル（disable）させるように構成することができる。
【００６３】
第四に、ポートスキャン方法でキーボードやマウスＩ／Ｏ入出力をする６０ｈポートを反復的に読み取り、入力データを確認する方法であるポートスキャニングを用いたデータ獲得に対する対策が必要である。前述したように、Ｐｒｏｔｅｃｔｉｏｎ＿ｍｏｄｅは、現在キーボード入力データを保護するための状態なら、Ｐｒｏｔｅｃｔｉｏｎ＿ｍｏｄｅは、‘１’値を有し、それとも、‘０’値を有する。従って、ポートスキャニングを利用したデート獲得に対処するために、Ｐｒｏｔｅｃｔｉｏｎ＿ｍｏｄｅが‘１’の場合には、キーボードバッファをリセットし、入出力ポート６０ｈポートを介してデータを読み取らないようにする役目をするＣｌｅａｒＢｕｆｆｅｒ関数を用いて６０ｈポートを０Ｆ４ｈ（clears output buffer）や０ＥＥ（echo、keyboard responds with EEh）のようなダミーデータでリセットするように構成することができる。
【００６４】
一方、本発明の保安方法を適用したプログラムが記録された格納媒体は、ＣＤ、フロッピー（登録商標）、メモリスティックなどの格納媒体に記録されて商品として販売され、ユーザによりオフラインで各コンピュータに設置され、特定のプログラムまたは全てのプログラムを利用する場合に適用することができ、他の方式としては、インターネットを介して特定のサイトに接続する時、自動または選択によりファイル形態で本発明の保安方法を適用したプログラムを伝送し、これを設置し、ユーザがエクスプローラのようなウェブブラウザを通じてサイトに情報を送信するために、キーボードのようなデータ入力装置を介してデータを入力する場合、前記保安方法が適用されたプログラムが実行されるようにすることができる。
【００６５】
以上において説明した本発明は、本発明が属する技術の分野における通常の知識を有する者であれば、本発明の技術的思想を逸脱しない範囲内で、様々な置換、変形及び変更が可能であるので、上述した実施形態及び添付された図面に限定されるものではない。
【００６６】
本発明によれば、コンピュータシステムに設置されたハッキングツールがコンピュータ入力装置から入力されるデータを横取りして第３者に伝達されないように安全にアプリケーションプログラムに伝達されるようにするという効果がある。
【００６７】
また、本発明の保安システムは、データ入力装置を介して印加されるデータが運営体制でサポートする運営体制の入力デバイスドライバを経ることなく、直ちに保安入力デバイスドライバを介して暗号化されるようにすることで、上位段階でいくら多くのハッキングプログラムが設置されているとしても、ハッキングプログラムがデータ入力装置を介して印加されるデータを不法的に獲得することを根本的に遮断することができる。
【００６８】
また、本発明の運営体制の入力インタラプトサービスルーチンアドレス領域に保安入力インタラプトサービスルーチンアドレスを格納する基本的な原理に追加して、保安インタラプトサービスルーチンをインタラプトディスクリプタテーブルに登録する段階で存在する多様な欠点を解決することができるという効果がある。
【図面の簡単な説明】
【００６９】
【図１】従来技術に係るコンピュータ保安装置を説明する概念図である。
【図２】本発明の好ましい実施例に係るコンピュータ保安装置の概略的な構成図である。
【図３】本発明のコンピュータ保安装置が正常に動作するか否かをユーザに通知するための手段の一例であるトレイアイコンを示す図である。
【図４】本発明のコンピュータ保安装置により、データ入力装置を介して印加されるデータを保護する方法を説明するための流れ図である。
【図５】本発明の好ましい実施例に係るコンピュータ保安方法を説明する概念図である。
【図６】本発明のコンピュータ保安装置の監視部がインタラプトディスクリプタテーブルに登録されたデータ入力受信部のアドレスの変更可否を監視する方法を説明する流れ図である。
【図７】本発明の好ましい実施例により保安状態を表示する画面の一例を示す図である。
【図８】本実施例のコンピュータ保安装置において保安インタラプトサービスルーチンにジャンプバイナリコードを挿入する方法で保安性を害する状況を説明する概念図である。
【図９】本実施例のコンピュータ保安装置において保安インタラプトサービスルーチンにジャンプバイナリコードを挿入する方法で保安性を害する問題点を解決するための過程を説明する流れ図である。
【図１０】保安インタラプトサービスルーチンを呼出する前にトラップインタラプトサービスルーチンにジャンプする方法で保安性を害する状況を説明する概念図である。
【図１】
2007525752.tif 000005
【図２】
2007525752.tif 000006
【図３】
2007525752.tif 000007
【図４】
2007525752.tif 000008
【図５】
2007525752.tif 000009
【図６】
2007525752.tif 000010
【図７】
2007525752.tif 000011
【図８】
2007525752.tif 000012
【図９】
2007525752.tif 000013
【図１０】
2007525752.tif 000014
【国際調査報告】
2007525752.tif 000015
2007525752.tif 000016