KR100549645B1 - Guarding method for input data by keyboard and guarding system - Google Patents

Guarding method for input data by keyboard and guarding system Download PDF

Info

Publication number
KR100549645B1
KR100549645B1 KR1020040089873A KR20040089873A KR100549645B1 KR 100549645 B1 KR100549645 B1 KR 100549645B1 KR 1020040089873 A KR1020040089873 A KR 1020040089873A KR 20040089873 A KR20040089873 A KR 20040089873A KR 100549645 B1 KR100549645 B1 KR 100549645B1
Authority
KR
South Korea
Prior art keywords
keyboard
security
usb
input information
hook
Prior art date
Application number
KR1020040089873A
Other languages
Korean (ko)
Inventor
강홍석
장항배
Original Assignee
소프트캠프(주)
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 소프트캠프(주) filed Critical 소프트캠프(주)
Priority to KR1020040089873A priority Critical patent/KR100549645B1/en
Application granted granted Critical
Publication of KR100549645B1 publication Critical patent/KR100549645B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/83Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes

Abstract

본 발명은 로컬단위에서 키보드로 입력되는 데이터의 보안방법과 이를 구현하는 보안시스템에 관한 것으로, 키보드의 입력데이터 보안모듈 활성화단계; 상기 보안모듈로 키보드의 입력데이터가 수신되는 입력데이터 수신단계; 상기 입력데이터로부터 사용자의 키조작으로 발생된 키입력정보를 검출하는 키입력정보 검출단계; 상기 검출단계를 통해 검출/처리된 키입력정보를 암호화하는 키입력정보 암호화단계; 운영체제가 상기 입력데이터를 인식하지 못하도록, 커널영역에 남아 있는 상기 입력데이터를 삭제하는 입력데이터 삭제단계; 상기 암호화단계에서 암호화된 키입력정보를 운영체제가 처리할 수 있도록 복호화하는 키입력정보 복호화단계; 및 복호화된 키입력정보가 그 처리를 위해 해당 응용프로그램으로 전달되는 과정 중, 상기 키입력정보에 있어서 이를 최초 후킹하고 차순위 후킹은 일어나지 않도록 하는 훅프로시져가 실행되는 보안용 훅실행단계가 포함된 것이다.The present invention relates to a security method of data input to a keyboard in a local unit and a security system for implementing the same, comprising: activating an input data security module of a keyboard; An input data reception step of receiving input data of a keyboard by the security module; A key input information detecting step of detecting key input information generated by a user's key operation from the input data; A key input information encryption step of encrypting the key input information detected / processed through the detection step; An input data deletion step of deleting the input data remaining in a kernel area so that an operating system does not recognize the input data; A key input information decrypting step of decrypting the key input information encrypted in the encryption step so that an operating system can process the key input information; And a security hook execution step in which a hook procedure is executed in which the decrypted key input information is first delivered to the corresponding application program for processing and the hook procedure is first hooked in the key input information and the next order hooking does not occur. .

Description

키보드로 입력되는 데이터의 보안방법과 이를 구현하는 보안시스템{Guarding method for input data by keyboard and guarding system}Guarding method for input data by keyboard and guarding system

도 1은 본 발명에 따른 보안시스템의 구성과 신호흐름을 도시한 블록도이고,1 is a block diagram showing the configuration and signal flow of a security system according to the present invention,

도 2는 도 1의 블록도를 보다 명세하게 도시한 블록도이고,FIG. 2 is a block diagram illustrating the block diagram of FIG. 1 in more detail.

도 3은 커널영역에서 USB키보드를 통해 입력되는 입력데이터의 보안을 실시하는 본 발명에 따른 보안시스템의 구성을 도시한 블록도이고,3 is a block diagram showing the configuration of a security system according to the present invention for securing the input data input via the USB keyboard in the kernel area,

도 4는 커널영역에서 PS/2키보드를 통해 입력되는 입력데이터의 보안을 실시하는 본 발명에 따른 보안시스템의 구성을 도시한 블록도이고,4 is a block diagram showing a configuration of a security system according to the present invention for securing input data input through a PS / 2 keyboard in a kernel region;

도 5는 본 발명에 따른 드라이버관리모듈의 구성을 도시한 블록도이고,5 is a block diagram showing the configuration of a driver management module according to the present invention;

도 6은 유저영역에서 키보드를 통해 입력되는 입력데이터의 보안을 실시하는 본 발명에 따른 보안시스템의 구성을 도시한 블록도이고,6 is a block diagram showing a configuration of a security system according to the present invention for securing input data input through a keyboard in a user area;

도 7은 본 발명에 따른 보안방법을 순차적으로 도시한 플로우차트이고,7 is a flowchart sequentially illustrating a security method according to the present invention,

도 8은 도 7의 플로우차트를 구체화하여 도시한 플로우차트이고,FIG. 8 is a flowchart showing the flowchart of FIG. 7 in detail.

도 9는 도 8에 도시된 인터럽트 서비스루틴 주소감시단계를 구체적으로 좀더 상세히 기재한 플로우차트이고,FIG. 9 is a flowchart specifically describing the interrupt service routine address monitoring step illustrated in FIG. 8 in more detail.

도 10은 본 발명에 따른 보안용 훅실행단계를 보다 명세한 플로우차트이고,10 is a flowchart more specifically specifying a security hook execution step according to the present invention;

도 11은 본 발명에 따른 필터 설치방법의 일실시예를 도시한 플로우차트이 다..11 is a flowchart showing an embodiment of a filter installation method according to the present invention.

본 발명은 로컬단위에서 키보드로 입력되는 데이터의 보안방법과 이를 구현하는 보안시스템에 관한 것이다.The present invention relates to a security method of data input by a keyboard in a local unit and a security system implementing the same.

단말기와 단말기, 서버와 서버 및/또는, 서버와 단말기 간 인터넷을 통한 데이터 통신 중 단말기 및/또는 서버에 기저장된 각종 스파이웨어 또는 해킹프로그램(이하 악의적인 프로그램)으로 당해 데이터를 유출시키는 일은 비단 어제 오늘만의 문제는 아니다. 특히, 각종 수단을 통해 이루어지는 데이터 유출방식 중에는 키보드를 통해 입력된 데이터 신호가 운영체제로 전달되기 전에 빼내어지는 방식이 있는데, 이는 운영체제 내에서 데이터를 빼내는 악의적인 프로그램을 백식 프로그램이나 각종 스파이웨어 방지프로그램(이하 보안프로그램)을 통해 무력화시키더라도 데이터 보안에 대한 안정성이 충분히 보장받지 못하는 문제를 낳았다.During the data communication between the terminal and the terminal, the server and the server, and / or the server and the terminal, the data is leaked by various spyware or hacking programs (hereinafter, malicious programs) previously stored on the terminal and / or the server. It's not just a problem today. Particularly, among the data leakage methods made through various means, a data signal input through the keyboard is extracted before being transmitted to the operating system. Even if it is disabled through the security program, the stability of data security is not fully guaranteed.

이러한 문제점들을 해소하기 위해 종래에는 키보드차원에서 정보가 유출되는 문제를 방지하는 보안방법과 시스템에 대한 기술들이 안출되었다.In order to solve these problems, techniques for a security method and a system for preventing information leakage from the keyboard level have been devised.

하지만, 이러한 보안방법과 시스템들은 키보드하드웨어로부터 전송된 신호(사용자가 키보드를 조작함으로서 발생되는 전기적인 신호)를 받아 운영체제가 인식가능한 데이터로 변환하고, 변환한 데이터를 암호 및 복호화하는 보안드라이버를 거치면서 해당 응용프로그램으로 전달되는 과정으로 진행된다.However, these security methods and systems receive signals transmitted from the keyboard hardware (electric signals generated by the user operating the keyboard) and convert them into data recognizable by the operating system, and pass through a security driver that encrypts and decrypts the converted data. The process is delivered to the application.

이러한 기술내용은 선행기술인 '보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 시스템'(출원번호 10-2004-0007614)에 잘 나타나 있다.This description is well described in the prior art 'Computer security system using a security input device driver' (Application No. 10-2004-0007614).

이때, 상기 선행기술에서 제시되고 있는 응용프로그램이라 함은, 물리적인 컴퓨터 본체를 제어하는 툴(tool)인 운영체제(윈도우, NT 등) 하에 설치되어서, 특정한 임무를 수행할 수 있는 개별 프로그램으로, 당해 선행기술에서 개진된 운영프로그램의 유형에 대해서는 인터넷 통신용 응용프로그램으로 추정되지만 청구범위를 통해 구체적으로 특정되고 있지는 않으므로, 인터넷 통신을 가능하게 하는 웹브라우져는 물론 로컬단위에서 사용자가 문서편집, 이미지편집 등을 할 수 있는 워드 또는 이에 준하는 각종 프로그램이 될 수 있을 것이다.In this case, the application program proposed in the prior art is an individual program installed under an operating system (Windows, NT, etc.), which is a tool for controlling a physical computer main body, and performing a specific task. The type of operating program described in the prior art is assumed to be an application for Internet communication, but is not specifically specified through the claims, so that users can edit documents, edit images, etc. at the local level as well as a web browser that enables internet communication. It can be a word or a variety of programs that can be.

하지만 선행기술로서 공개된 기술내용을 보면, 키보드를 통해 입력되는 데이터에 대한 보안범위가 키보드하드웨어를 통해 입력된 신호를 운영체제가 인식하여 처리할 수 있는 단계까지만에 한하고, 운영체제가 당해 데이터를 처리하여 해당 응용프로그램이 인식/처리할 수 있도록 하는 단계에 대해서는 전혀 제시되고 있지 않고 있다.However, in the state of the art disclosed as prior art, the security scope for the data input through the keyboard is limited to the stage where the operating system recognizes and processes the signal input through the keyboard hardware, and the operating system processes the data. Therefore, there is no suggestion about the steps to enable the application to recognize / process.

즉, 종래 보안기술은 키보드하드웨어 상에서 발생되는 신호 및 데이터를 운영체제가 최초 처리하게 되는 과정(커널영역)에만 국한되고, 응용프로그램이 구동되면서 당해 데이터를 처리하는 과정(유저영역)에서의 보안은 전혀 제시되지 못하고 있는 것이다. 특히, 상기 응용프로그램이 로컬단위에서 구동될 경우에는, 인터넷 상에서 데이터의 유출방지를 위한 각종 보안프로그램이 적용되는 인터넷 통신용 응용프로그램에서의 보안기능을 전혀 제공받지 못하므로, 악의적인 프로그램에 의 한 정보유출에 대해서는 대비가 이루어지지 못하는 실정이다.That is, the conventional security technology is limited only to the process (kernel area) where the operating system first processes signals and data generated on keyboard hardware, and there is no security in the process of processing the data (user area) while the application program is running. It is not presented. In particular, when the application program is run on a local unit, since no security function is provided in the application program for Internet communication to which various security programs for preventing data leakage on the Internet are applied, information by malicious programs is provided. There is no preparation for spills.

일반적으로, 유저영역에서 이루어지는 정보유출은 일명 훅(Hook)을 실행시키는 악의적인 프로그램에 의한다.In general, information leakage in the user area is caused by a malicious program that executes a so-called hook.

한편, 종래 키보드 보안을 위해 제시된 보안방법 및 보안시스템들은 PS/2방식의 키보드에만 한정되고 있어서, USB키보드를 통해 입력되는 데이터를 보안하는 방식은 전무한 상태일뿐만 아니라, PS/2 방식 및 USB키보드 방식에 있어서 보안을 범용적으로 수행할 수 있는 보안시스템과 보안방법은 전혀 제시되지 못하고 있다.On the other hand, the security methods and security systems proposed for the conventional keyboard security is limited to PS / 2 type keyboard, there is no way to secure data input through the USB keyboard, PS / 2 type and USB keyboard In terms of methods, security systems and security methods that can perform security universally have not been proposed at all.

상기 USB키보드란, 컴퓨터의 본체와 주변장치들 간의 통신이 단순한 전기적인 신호흐름이 아닌 다수 데이터를 담은 패킷의 흐름으로 이루어지면서 운영체제와 메세지를 교환하는 개념으로 연결되는 것이다. 이러한 USB키보드는 기존 데스크탑 형식의 거대한 컴퓨터에서, 컴팩트하고 주변장치들과의 탈부착이 용이하도록 하는 추세에 따라 개발되었으며, 그 수요도 점차 증가되고 있다. 즉, PS/2방식의 키보드와는 달리 USB키보드는 컴퓨터 본체의 USB포트와 곧바로 연결이 가능하고, 연결과 동시에 재부팅되어야 하는 이용상의 번거로움을 줄일 수 있는 장점이 있는 것이다.The USB keyboard is connected to the concept of exchanging messages with the operating system while the communication between the main body of the computer and peripheral devices is not a simple electrical signal flow but a packet flow containing a plurality of data. These USB keyboards have been developed in accordance with the trend of compact and easy attachment and detachment of peripheral devices in large desktop computers, and the demand is gradually increasing. In other words, unlike the PS / 2 type keyboard, the USB keyboard can be directly connected to the USB port of the computer main body, and has the advantage of reducing the inconvenience of using the rebooting at the same time.

이에 본 발명은 상기와 같은 문제를 해소하기 위해 안출된 것으로, 키보드로 입력되는 데이터가 응용프로그램까지 전달되는 동안 키보드하드웨어 단위에서 이루어지는 정보유출이 방지 됨은 물론 운영체제 단위에서 이루어지는 정보유출까지 철저히 차단할 수 있는 로컬단위에서 키보드로 입력되는 데이터의 보안방법과 이를 구현하는 보안시스템을 제공함에 목적이 있다.Accordingly, the present invention has been made to solve the above problems, it is possible to prevent the leakage of information made in the keyboard hardware unit as well as to prevent the leakage of information made in the operating system unit while the data input to the keyboard is transmitted to the application program It is an object of the present invention to provide a security method for data input from the keyboard in a local unit and a security system implementing the same.

또한, 키보드에서 PS/2방식과 USB케이블 접속방식에 구분없이 범용적으로 보안기능을 수행할 수 있는 로컬단위에서 키보드로 입력되는 데이터의 보안방법과 이를 구현하는 보안시스템을 제공함에 또 다른 목적이 있다.In addition, another object of the present invention is to provide a security method for data input to the keyboard at a local unit capable of performing a general-purpose security function regardless of the PS / 2 method and the USB cable connection method, and a security system implementing the same. have.

상기의 목적을 달성하기 위하여 본 발명은,In order to achieve the above object, the present invention,

키보드의 입력데이터 보안모듈 활성화단계;Activating the input data security module of the keyboard;

상기 보안모듈로 키보드의 입력데이터가 수신되는 입력데이터 수신단계;An input data reception step of receiving input data of a keyboard by the security module;

상기 입력데이터로부터 사용자의 키조작으로 발생된 키입력정보를 검출하는 키입력정보 검출단계;A key input information detecting step of detecting key input information generated by a user's key operation from the input data;

상기 검출단계를 통해 검출/처리된 키입력정보를 암호화하는 키입력정보 암호화단계;A key input information encryption step of encrypting the key input information detected / processed through the detection step;

운영체제가 상기 입력데이터를 인식하지 못하도록, 커널영역에 남아 있는 상기 입력데이터를 삭제하는 입력데이터 삭제단계;An input data deletion step of deleting the input data remaining in a kernel area so that an operating system does not recognize the input data;

상기 암호화단계에서 암호화된 키입력정보를 운영체제가 처리할 수 있도록 복호화하는 키입력정보 복호화단계; 및A key input information decrypting step of decrypting the key input information encrypted in the encryption step so that an operating system can process the key input information; And

복호화된 키입력정보가 그 처리를 위해 해당 응용프로그램으로 전달되는 과정 중, 상기 키입력정보에 있어서 이를 최초 후킹하고 차순위 후킹은 일어나지 않도록 하는 훅프로시져가 실행되는 보안용 훅실행단계;A security hook execution step of executing a hook procedure for firstly hooking the key input information in a process of transmitting the decrypted key input information to a corresponding application program for processing the second key and preventing a second order hooking from occurring;

가 포함된 키보드로 입력되는 데이터의 보안방법이다.This is a security method for data input with the keyboard included.

상기의 목적을 달성하기 위하여 본 발명은, 키보드로 입력되는 데이터의 보안방법에 있어서,In order to achieve the above object, the present invention provides a security method of data input by a keyboard,

상기 보안모듈에 수신되는 입력데이터가 USB키보드로부터 발생된 것일 경우, 상기 키입력검출단계를 통해 검출된 키입력정보를 발생순서에 따라 정렬하는 키입력정보 파싱단계;A key input information parsing step of arranging the key input information detected through the key input detection step according to the generation order when the input data received by the security module is generated from the USB keyboard;

가 더 포함된 것이다.Is more included.

상기의 목적을 달성하기 위하여 본 발명은, 키보드로 입력되는 데이터의 보안방법에 있어서, 상기 보안모듈 활성화단계는In order to achieve the above object, the present invention, in the security method of data input by the keyboard, the security module activation step is

USB키보드의 초기입력데이터를 통해 당해 USB키보드의 레지스트리 등록을 확인하는 USB키보드확인단계;A USB keyboard checking step of confirming registry registration of the USB keyboard through initial input data of the USB keyboard;

상기 USB키보드확인단계에서 확인된 USB키보드의 레지스트리에 따라 상기 보안모듈에 포함된 USB필터를 활성화하는 필터활성화단계;A filter activation step of activating a USB filter included in the security module according to the registry of the USB keyboard identified in the USB keyboard verification step;

가 더 포함된 것이다.Is more included.

상기의 목적을 달성하기 위하여 본 발명은, 키보드로 입력되는 데이터의 보안방법에 있어서, In order to achieve the above object, the present invention provides a security method of data input by a keyboard,

상기 USB키보드확인단계를 통해 당해 USB키보드의 하드웨어ID가 등록되지 않은 것으로 확인될 경우, 상기 USB키보드에 대응하는 USB필터의 설치를 결정하는 USB필터설치 결정단계;A USB filter installation determining step of determining installation of a USB filter corresponding to the USB keyboard when it is determined that the hardware ID of the USB keyboard is not registered through the USB keyboard checking step;

상기 새로운 USB키보드의 키입력정보를 보안하는 USB필터가 설치되는 필터설치단계;A filter installation step of installing a USB filter that secures key input information of the new USB keyboard;

가 더 포함된 것이다.Is more included.

상기의 목적을 달성하기 위하여 본 발명은, 키보드로 입력되는 데이터의 보안방법에 있어서, 상기 필터설치단계는In order to achieve the above object, the present invention, in the security method of data input by the keyboard, the filter installation step is

운영체제 레지스트리에 등록된 HID디바이스의 하드웨어ID가 검색되는 HID디바이스 검색단계;A HID device search step of searching for a hardware ID of the HID device registered in the operating system registry;

상기 하드웨어ID에서 키보드로 분류된 하드웨어ID가 검색되는 키보드 검색단계;A keyboard search step of searching for a hardware ID classified as a keyboard in the hardware ID;

운영체제 레지스트리에 등록된 USB디바이스의 하드웨어ID가 검색되는 USB디바이스 검색단계;A USB device searching step of searching for a hardware ID of a USB device registered in an operating system registry;

상기 키보드 검색단계와 상기 USB디바이스 검색단계를 통해 각각 검색된 하드웨어ID에서 상호 매칭되는 하드웨어ID가 확인되는 매칭ID확인단계;A matching ID checking step of checking hardware IDs matched with the hardware IDs searched through the keyboard searching step and the USB device searching step;

상기 매칭ID검색단계를 통해 검색된 해당 하드웨어ID의 디바이스 레지스트리에 USB필터가 등록되는 필터등록단계;A filter registration step of registering a USB filter in the device registry of the corresponding hardware ID searched through the matching ID search step;

가 더 포함된 것이다.Is more included.

상기 보안모듈 활성화단계는, 보안대상 응용프로그램의 실행파일과 연동되어 서 당해 응용프로그램의 실행과 더불어 이루어지고;The security module activation step is made in conjunction with the execution of the application program in conjunction with the executable file of the security target application program;

키보드의 조작을 통해 발생된 인터럽트를 수신하여 인터럽트 디스크립터 테이블의 인터럽트 서비스루틴주소를 교체하는 인터럽트 서비스루틴 교체단계가 더 포함되며;An interrupt service routine replacement step of receiving an interrupt generated through operation of the keyboard to replace the interrupt service routine address of the interrupt descriptor table;

상기 키입력정보 암호화단계는, 상기 인터럽트 서비스루틴교체단계를 통해 교체된 서비스루틴주소에 따라 상기 키입력정보가 전달되는 보안입력드라이버에서 이루어지는 것;The key input information encryption step is performed by a security input driver through which the key input information is transmitted according to the service routine address replaced by the interrupt service routine replacement step;

을 특징으로 하는 것이다.It is characterized by.

상기의 목적을 달성하기 위하여 본 발명은, 키보드로 입력되는 데이터의 보안방법에 있어서,In order to achieve the above object, the present invention provides a security method of data input by a keyboard,

상기 보안입력드라이버의 주소를 저장하는 보안입력드라이버주소 저장단계;A secure input driver address storing step of storing an address of the secure input driver;

상기 인터럽트 디스크립터 테이블의 인터럽트 서비스루틴주소를 저장하는 서비스루틴주소 저장단계;A service routine address storing step of storing an interrupt service routine address of the interrupt descriptor table;

상기 보안입력드라이버주소와 서비스루틴주소를 비교하는 주소비교단계;An address comparison step of comparing the security input driver address with a service routine address;

가 더 포함된 것이다.Is more included.

상기의 목적을 달성하기 위하여 본 발명은, 키보드로 입력되는 데이터의 보안방법에 있어서,In order to achieve the above object, the present invention provides a security method of data input by a keyboard,

상기 주소비교단계 이후, 보안입력드라이버주소와 인터럽트 서비스루틴주소 가 서로 다를 경우 상기 인터럽트 디스크립터 테이블의 인터럽트 서비스루틴주소를 상기 보안입력드라이버주소와 일치되도록 교체하는 주소변경단계;An address changing step of replacing an interrupt service routine address of the interrupt descriptor table with the security input driver address when the security input driver address and the interrupt service routine address are different from each other after the address comparing step;

가 더 포함된 것이다.Is more included.

상기의 목적을 달성하기 위하여 본 발명은, 키보드로 입력되는 데이터의 보안방법에 있어서, 상기 보안용 훅실행단계는In order to achieve the above object, the present invention, in the security method of data input to the keyboard, the security hook execution step is

응용프로그램 실행과 함께 생성되는 프로세스 또는 스레드에 대한 후킹을 실행하는 보안용 전역훅 활성화단계Activation of global hooks for security that hooks to processes or threads created with the application execution

해당 응용프로그램에 허용된 타 전역훅의 내용을 확인하는 허용전역훅 확인단계;An allowable global hook checking step of checking the contents of other global hooks allowed in the corresponding application;

상기 응용프로그램으로 전달되는 키입력정보가 포함된 메세지를 후킹하는 키입력정보 후킹단계;A key input information hooking step of hooking a message including key input information transmitted to the application program;

상기 보안용 전역훅 이외에 차순위 후킹이 이루어지지 않도록, 다음후킹진행 API를 호출하지 않는 다음훅 무력화단계; 및Next hook neutralization step not to call the next hook progress API, so that next-order hooking is not made other than the security global hook; And

상기 프로세스 또는 스레드가 소멸되면 실행중인 상기 보안용 전역훅을 제거하는 훅제거단계;A hook removal step of removing the security global hook being executed when the process or thread is destroyed;

를 포함하는 것Comprising

상기의 목적을 달성하기 위하여 본 발명은, 키보드로 입력되는 데이터의 보안방법에 있어서,In order to achieve the above object, the present invention provides a security method of data input by a keyboard,

상기 보안용 전역훅의 활성화 상태에서 키보드와 관련된 타 전역훅이 새로히 시도될 경우, 상기 타 전역훅설치 API를 리턴시켜 타 전역훅의 실행을 차단하는 전역훅시도 감시단계가 더 포함된 것이다.If another global hook related to the keyboard is newly attempted in the security global hook activated state, a global hook attempt monitoring step of returning the other global hook installation API to block execution of another global hook is further included.

상기의 목적을 달성하기 위하여 본 발명은, 키보드로 입력되는 데이터의 보안방법에 있어서,In order to achieve the above object, the present invention provides a security method of data input by a keyboard,

지정된 응용프로그램만이 키보드 보안의 대상이 되도록 해당 응용프로그램의 리스트를 생성하고, 상기 키입력정보 후킹단계 실시 전 상기 리스트를 검색하여 키입력정보의 후킹을 결정하는 대상프로그램 확인단계가 더 포함된 것이다.Generating a list of the corresponding application so that only the designated application is the target of keyboard security, and further comprises a target program confirmation step of determining the hooking of the key input information by searching the list before the hooking step of the key input information .

상기의 목적을 달성하기 위하여 본 발명은,In order to achieve the above object, the present invention,

커널영역에서, 키보드를 통해 최초로 입력되는 신호를 받게되는 키보드하드웨어로부터 입력데이터를 받아 상기 입력데이터에 포함된 키입력정보를 암/복호화하는 보안모듈; 및In the kernel area, the security module for receiving the input data from the keyboard hardware receives the first signal input through the keyboard to encrypt / decrypt the key input information contained in the input data; And

운영체제의 서브시스템에 의해 상기 키입력정보가 메세지큐를 거쳐 응용프로그램으로의 전달이 진행되는 유저영역에서, 상기 키입력정보의 전달과정 중 상기 키입력정보를 최우선 후킹하여 차순위 후킹이 이루어지지 않도록 차단하는 훅모듈;In a user area where the key input information is delivered to an application program through a message queue by a subsystem of an operating system, the key input information is first hooked during the delivery of the key input information to prevent next hooking. A hook module;

로 이루어진 키보드로 입력되는 데이터의 보안시스템이다.It is a security system for data entered with a keyboard.

상기의 목적을 달성하기 위하여 본 발명은, 키보드로 입력되는 데이터의 보 안시스템에 있어서,In order to achieve the above object, the present invention provides a security system for data input by a keyboard,

상기 보안모듈은The security module

키조작으로 발생된 입력데이터 중 키에 대한 키입력정보를 검출하는 키입력정보검출모듈, 상기 키입력정보를 그 발생순서에 따라 정렬시키는 파싱모듈, 정렬된 상기 키입력정보를 암호화시키는 암호화모듈 및, 상기 운영체제가 상기 입력데이터를 인식하지 못하도록 처리하는 입력데이터삭제모듈을 포함하는 USB필터; A key input information detection module for detecting key input information of a key among input data generated by a key operation, a parsing module for arranging the key input information according to the generation order, an encryption module for encrypting the sorted key input information, and And a USB filter including an input data deletion module for processing the operating system not to recognize the input data.

다수의 상기 USB필터들과 운영체제 간의 통신을 중개하는 관리모듈이 포함된 USB필터드라이버; 및A USB filter driver including a management module for mediating communication between the plurality of USB filters and an operating system; And

상기 암호화모듈을 통해 암호화된 키입력정보를 복호화하는 복호화모듈이 포함된 드라이버관리모듈;A driver management module including a decryption module for decrypting the key input information encrypted by the encryption module;

이 포함된 것이다.This is included.

상기의 목적을 달성하기 위하여 본 발명은, 키보드로 입력되는 데이터의 보안시스템에 있어서, 상기 USB필터드라이버는In order to achieve the above object, the present invention, in the security system for data input by the keyboard, the USB filter driver is

상기 본체와 연결된 USB키보드의 하드웨어ID와 이에 대응하는 상기 USB필터를 카운팅하여 새로운 USB키보드의 설치여부를 확인하는 필터확인모듈;A filter check module for checking whether a new USB keyboard is installed by counting a hardware ID of the USB keyboard connected to the main body and the corresponding USB filter;

새로운 USB키보드에 대응하는 USB필터를 설치하는 필터설치모듈;A filter installation module for installing a USB filter corresponding to the new USB keyboard;

이 더 포함된 것이다.This is more included.

상기의 목적을 달성하기 위하여 본 발명은, 키보드로 입력되는 데이터의 보 안시스템에 있어서, 상기 보안모듈은In order to achieve the above object, the present invention, in the security system for data input by the keyboard, the security module is

상기 키입력정보를 전달받아 암호화하는 보안입력드라이버;A security input driver for receiving and encrypting the key input information;

보안대상 응용프로그램이 실행되면, 상기 키보드하드웨어로부터 키보드 조작으로 발생된 인터럽트에 의해 인터럽트 서비스루틴을 실행하고, 당해 키입력정보를 암호화하는 상기 보안입력드라이버의 주소를 교체하는 보안용 인터럽트 디스클립터 테이블; 및When the security target application is executed, the interrupt interrupter table for executing an interrupt service routine by an interrupt generated by keyboard operation from the keyboard hardware and replacing the address of the security input driver encrypting the key input information. ; And

상기 보안입력드라이버를 통해 암호화된 키입력정보를 복호화하는 복호화모듈이 포함된 드라이버관리모듈;A driver management module including a decryption module for decrypting the key input information encrypted by the security input driver;

이 포함된 것이다.This is included.

상기의 목적을 달성하기 위하여 본 발명은, 키보드로 입력되는 데이터의 보안시스템에 있어서, 상기 훅모듈은In order to achieve the above object, the present invention, in the security system for data input by the keyboard, the hook module is

보안대상 응용프로그램의 실행으로 프로세스 또는 스레드가 생성되면, 상기 응용프로그램으로 전달되는 키입력정보가 포함된 메세지를 최초 후킹하고 차순위 후킹은 차단하는 전역훅프로시져를 구동시키는 한편, 상기 프로세스 또는 스레드가 소멸되면 실행 중인 전역훅을 제거하는 시스템훅모듈;When the process or thread is created by the execution of the secured application, the process or thread is destroyed while running a global hook procedure that first hooks a message containing key input information delivered to the application and blocks next-order hooking. System hook module for removing the running global hook;

상기 응용프로그램에 허용된 타 전역훅의 내용을 확인하여 차순위 후킹의 허용여부를 결정하는 훅허용프로그램 관리모듈; A hook permission program management module for determining whether to allow next-order hooking by checking contents of other global hooks allowed in the application program;

상기 응용프로그램에 허용된 타 전역훅에 대한 데이터를 포함하면서 상기 훅허용프로그램 관리모듈의 검색/요청으로 상기 데이터를 전송하는 훅허용프로그램리 스트 저장모듈; 및A hook permission program list storage module including data for other global hooks allowed by the application program and transmitting the data to a search / request of the hook permission program management module; And

상기 보안용 전역훅의 활성화 상태에서 키보드와 관련된 타 전역훅이 새로히 시도될 경우, 상기 타 전역훅설치 API를 리턴시켜 타 전역훅의 실행을 차단하는 훅설치감시모듈;A hook installation monitoring module that blocks the execution of another global hook by returning the other global hook installation API when a new global hook related to the keyboard is newly attempted in the active global hook for security;

이 포함된 것이다.This is included.

이하 본 발명을 첨부된 예시도면에 의거하여 상세히 설명한다.Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명에 따른 보안시스템의 구성과 신호흐름을 도시한 블록도이고, 도 7은 본 발명에 따른 보안방법을 순차적으로 도시한 플로우차트인바 이를 참조하여 설명한다.1 is a block diagram showing the configuration and signal flow of the security system according to the present invention, Figure 7 is a flow chart illustrating a security method according to the present invention will be described with reference to this.

본 발명은 로컬단위에서 응용프로그램에 의해 실행/연산/처리/저장되는 데이터를 보안하여 상기 데이터의 외부 유출을 방지하고자 발명된 것이며, 이를 구현하기 위해 본 발명에 따른 보안방법 및 보안시스템은, 사용자에 의해 조작되는 키보드를 통한 입력데이터 발생단계부터(커널영역), 상기 입력데이터가 운영체제에 의해 처리되어 해당 응용프로그램으로 전달되어지는 전달단계(유저영역)까지, 상기 입력데이터가 로컬단위에서 이루어지는 전반에 걸친 보안을 그 내용으로 한다.The present invention has been invented to prevent external leakage of the data by securing data that is executed / operated / processed / stored by an application program in a local unit. The first half of the input data is generated in the local unit from the input data generation step through the keyboard operated by the (kernel area) to the delivery step (user area) in which the input data is processed by the operating system and delivered to the corresponding application program. Security over is made into that content.

이를 위해 본 발명에 따른 보안시스템은, 커널영역(20)에서, 키보드(10)를 통해 최초로 입력되는 신호를 받게되는 키보드하드웨어로부터 입력데이터를 받아 상기 입력데이터에 포함된 키입력정보를 암/복호화하는 보안모듈(100); 및, 운영체제의 서브시스템에 의해 상기 키입력정보가 메세지큐를 거쳐 응용프로그램(40)으로 의 전달이 진행되는 유저영역(30)에서, 상기 키입력정보의 전달과정 중 상기 키입력정보를 최우선 후킹하여 차순위 후킹이 이루어지지 않도록 차단하는 훅모듈(200);로 이루어진다.To this end, the security system according to the present invention, in the kernel region 20, receives the input data from the keyboard hardware that receives a signal first input through the keyboard 10, encrypting / decrypting the key input information included in the input data A security module 100; And a first hooking of the key input information during the transfer of the key input information in the user area 30 in which the key input information is transmitted to the application program 40 through the message queue by a subsystem of an operating system. By hook module 200 to block so that the next-order hooking is made; consists of.

상기 커널영역(20)이라 함은, 컴퓨터 운영체계의 가장 중요한 핵심으로서, 운영체계의 다른 모든 부분에 여러 가지 기본적인 서비스를 제공한다. 비슷한말로는 '뉴클리어스'라는 용어가 있다. 일반적으로, 커널에는 종료된 입출력 연산 등, 커널의 서비스를 경쟁적으로 요구하는 모든 요청들을 처리하는 인터럽트 처리기와, 어떤 프로그램들이 어떤 순서로 커널의 처리시간을 공유할 것인지를 결정하는 스케줄러, 그리고 스케줄이 끝나면 실제로 각 프로세스들에게 컴퓨터의 사용권을 부여하는 수퍼바이저 등이 포함되어 있다. 커널(20)은 또한, 메모리나 저장장치 내에서 운영체계의 주소공간을 관리하고, 이들을 모든 주변장치들과 커널(20)의 서비스들을 사용하는 다른 사용자들에게 고루 나누어주는 메모리 관리자를 가지고 있다. 커널(20)의 서비스는 운영체계의 다른 부분이나, 흔히 시스템 호출이라고 알려진 일련의 프로그램 인터페이스들을 통해 요청된다. 커널(20)을 유지하기 위한 코드는 지속적으로 사용되기 때문에, 보통 커널은 자주 사용되지 않는 운영체계의 나머지 부분에 의해 덮어씌워져 훼손되지 않도록, 보호된 메모리 영역에 적재된다.The kernel area 20 is the most important core of the computer operating system, and provides various basic services to all other parts of the operating system. Similarly, there is the term 'nucleus'. In general, the kernel has an interrupt handler that handles all requests that competitively require the services of the kernel, such as terminated I / O operations, a scheduler that determines which programs share the kernel's processing time, and in what order. After that, it actually includes a supervisor that gives each process a license to the computer. The kernel 20 also has a memory manager that manages the operating system's address space in memory or storage and distributes it evenly among all the peripherals and other users of the kernel 20's services. Services of the kernel 20 are requested through other parts of the operating system, or through a series of program interfaces, commonly known as system calls. Since the code for maintaining the kernel 20 is used continuously, the kernel is usually loaded in a protected memory area so that it is not overwritten by the rest of the operating system, which is not frequently used.

한편, 상기 유저영역(30)이라 함은, 운영체계의 가장 바깥부분에 위치하고 있으면서, 사용자 명령에 대한 처리를 담당한다. 일명 셀이라고도 불리운다.Meanwhile, the user area 30 is located at the outermost part of the operating system and is responsible for processing user commands. Also called a cell.

이하의 설명에서는, 상기 커널(20)은 키보드하드웨어(21, 22)와 키보드클래스드라이버(25)를 수단으로 키보드(10)로부터 전달되는 입력데이터를 운영체제가 응용프로그램(40)에 제공하여 활용할 수 있도록 하는 최초 처리영역으로 하며, 상기 유저영역(30)은 운영체제의 서브시스템(31) 기반으로 입력데이터 또는 키입력정보를 시간적 또는 연산을 위한 순서적으로 처리하기 위한 영역으로 본다. 이때, 본 발명은 키보드 보안에 관한 것으로서, 키보드(10)로 입력되는 입력데이터를 입력순으로 처리해야 하므로, FIFO(First In, First Out)으로 데이터를 처리하는 큐 시스템이 유저영역(30)에 포함되며, 시스템 전체에 대한 메세지를 관할하게 되는 시스템메세지큐(32)와 다수의 응용프로그램(40)을 독립적으로 구동시키기 위한 스레드메세지큐(33)에 대한 시스템이 포함된다.(도 2 참조)In the following description, the kernel 20 may use the input data transmitted from the keyboard 10 to the application 40 by the operating system via the keyboard hardware 21 and 22 and the keyboard class driver 25. The user area 30 is regarded as an area for processing input data or key input information in order for temporal or arithmetic operations based on the subsystem 31 of the operating system. At this time, the present invention relates to the security of the keyboard, and since the input data input by the keyboard 10 must be processed in the order of input, a queue system for processing data with FIFO (First In, First Out) is provided in the user area 30. Included is a system for the system message queue 32, which will govern messages for the entire system, and a thread message queue 33 for independently running multiple applications 40 (see FIG. 2).

상술된 본 발명에 따른 보안시스템을 보안방법과 더불어 설명한다.The security system according to the present invention described above will be described along with a security method.

(1) 키보드의 입력데이터 보안모듈 활성화단계(S400);(1) activating the input data security module of the keyboard (S400);

본 발명에 따른 보안모듈(100)은 키보드(10)를 통해 입력되는 입력데이터가 외부로 유출되지 않도록, 기존 커널영역의 시스템을 대신하여 상기 입력데이터를 암복호화하고 이를 유저영역으로 전달하는 시스템이다.The security module 100 according to the present invention is a system for encrypting and decrypting the input data on behalf of the system of the existing kernel area so as not to leak the input data input through the keyboard 10 to the user area. .

일반적으로, 상기 보안모듈(100)의 활성화 방법은 다양한 방식이 적용될 수 있는데, 본 발명에서는 종래 널리 활용된 PS/2 방식의 키보드와 근래 보급되고 있는 USB 연결방식의 키보드를 사용함에 있어서, 이 두가지 방식의 키보드 중 하나이상에 대해서 보안기능을 수행할 수 있도록 된다.In general, the method of activating the security module 100 may be applied in various ways. In the present invention, in the present invention, the PS / 2-type keyboard and the USB-type keyboard, which are widely used in recent years, are used. Security functions can be performed on one or more of the keyboards.

이하에서 다시한번 언급되겠지만 우선적으로 간략히 설명하면, PS/2키보드의 경우에는 사용자가 키보드 자판을 조작함과 동시에 인터럽트가 발생되고, 이를 수신한 커널영역(20)은 상기 PS/2키보드를 통해 입력되고 있는 입력데이터를 처리할 드라이버의 인터럽트 서비스루틴주소를 전달하게 되는데, 본 발명에서는 상기 인터럽트 서비스루틴주소를 당해 보안모듈(100)의 보안입력드라이버에 맞추게 된다. 이때, 상기 인터럽트 서비스루틴주소는 보안대상 응용프로그램이 실행됨과 동시에 기존의 인터럽트 서비스루틴주소와 교체된다. 이렇게 교체됨과 아울러 보안모듈(100)이 활성화된다. 한편, USB키보드의 경우에는 본체의 USB포트에 상기 USB키보드의 USB케이블을 연결시키면, 운영체제는 이를 인식하여 상기 USB키보드를 인식하고 이에 맞는 보안모듈(100)을 설치/활성화시키게 된다. 좀더 상세한 내용은 이하에서 도면을 첨부하여 설명한다.As will be described again below, first of all, briefly, in the case of the PS / 2 keyboard, an interrupt is generated at the same time as the user operates the keyboard keyboard, and the kernel area 20 receiving the input is input through the PS / 2 keyboard. The interrupt service routine address of the driver to process the input data is transmitted. In the present invention, the interrupt service routine address is adapted to the security input driver of the security module 100. At this time, the interrupt service routine address is replaced with the existing interrupt service routine address at the same time the security target application program is executed. In addition to this replacement, the security module 100 is activated. On the other hand, in the case of the USB keyboard, when the USB cable of the USB keyboard is connected to the USB port of the main body, the operating system recognizes this and recognizes the USB keyboard and installs / activates the security module 100 accordingly. More details will be described with reference to the accompanying drawings.

(2) 상기 입력데이터를 상기 보안모듈에서 우선적으로 수신하는 입력데이터 수신단계(S500);(2) an input data receiving step of first receiving the input data in the security module (S500);

본 발명은 가장 말단에서 이루어지는 입력데이터에 대한 유출을 방지하기 위하여 발명된 것이므로, 키보드(10)로 입력된 입력데이터를 최초로 수신하여 이를 보안처리하게 되므로 상기 보안모듈(100)은 키보드(10)로부터 입력되는 입력데이터를 최초로 수신하게 된다.Since the present invention is invented to prevent leakage of the input data made at the most end, the security module 100 is received from the keyboard 10 because the first input data input to the keyboard 10 is first received and securely processed. The input data to be received is first received.

(3) 상기 입력데이터로부터 사용자의 키조작으로 발생된 키입력정보를 검출하는 키입력정보 검출단계(S600);(3) a key input information detecting step (S600) of detecting key input information generated by a user's key operation from the input data;

상기 입력데이터에는 사용자가 키조작하여 실제로 입력되고 있는 키입력정보와 더불어 해당 키보드(10)에 대한 정보와 경로 등이 담긴 보조정보가 더불어 포함된다. 그런데 본 발명은 상기 키입력정보를 보안함으로서 입력데이터를 보호하므로, 상기 입력데이터로부터 키입력정보를 검출하는 과정을 수행한다. 하지만, 반 드시 이에 한정되는 것은 아니며, 본 발명에 따른 보안모듈(100)은 키입력정보를 포함한 입력데이터 전체를 암복호화할 수도 있음은 물론이다.The input data includes key information that is actually input by the user by key manipulation, and auxiliary information including information about the corresponding keyboard 10 and a path. However, since the present invention protects the input data by securing the key input information, a process of detecting the key input information from the input data is performed. However, the present invention is not limited thereto, and the security module 100 according to the present invention may also decrypt and decrypt the entire input data including key input information.

(4) 상기 검출단계를 통해 검출/처리된 키입력정보를 암호화하는 키입력정보 암호화단계(S800);(4) a key input information encryption step (S800) for encrypting key input information detected / processed through the detection step;

이렇게 검출된 키입력정보는 상기 보안모듈(100)을 통해 암호화된다. 본 발명에서 이루어지는 암호화는 미국 고급 암호 표준(AES)의 표준 알고리즘인 Rijndael 알고리즘을 이용한 128비트 암호화 방식이다. Rijndael 알고리즘은 보안성 및 처리속도, 메모리 활용능력에서 우수한 성능을 갖고 있다. 그러나 이러한 알고리즘은 본 발명의 일실시에 불과하며 기타 다양한 방식이 적용될 수 있음은 물론이다.The detected key input information is encrypted through the security module 100. Encryption in the present invention is a 128-bit encryption method using the Rijndael algorithm, which is a standard algorithm of the American Advanced Encryption Standard (AES). Rijndael algorithm has excellent performance in terms of security, processing speed and memory utilization. However, such an algorithm is only one embodiment of the present invention and various other methods may be applied.

(5) 운영체제가 상기 입력데이터를 인식하지 못하도록, 커널영역에 남아 있는 상기 입력데이터를 삭제하는 입력데이터 삭제단계(S900);(5) an input data deletion step (S900) of deleting the input data remaining in a kernel area so that an operating system does not recognize the input data;

본 발명에 따른 보안모듈(100)은 기존 커널영역(20)에서 키보드의 입력데이터를 처리하기 위한 시스템을 대체하므로, 커널영역(20) 내에 상기 입력데이터가 잔존하게 된다. 물론 이렇게 잔존하는 입력데이터를 기존 시스템을 통해 유저영역(30)으로 전달되므로, 운영체제는 보안모듈(100)로부터 전달된 입력데이터와 기존 커널영역(20)으로부터 전달된 입력데이터를 동시에 수신하여 충돌을 일으킨다. 따라서, 이러한 에러발생을 방지하기 위해 기존 커널영역(20)에서 상기 입력데이터를 처리할 수 없도록 잔존하는 입력데이터를 삭제한다.Since the security module 100 according to the present invention replaces a system for processing input data of a keyboard in the existing kernel area 20, the input data remains in the kernel area 20. Of course, the remaining input data is transmitted to the user region 30 through the existing system, so that the operating system simultaneously receives the input data transmitted from the security module 100 and the input data transmitted from the existing kernel region 20 and conflicts with each other. Cause Accordingly, in order to prevent such an error from occurring, the remaining input data is deleted so that the input data cannot be processed in the existing kernel region 20.

(6) 상기 암호화단계에서 암호화된 키입력정보를 운영체제가 처리할 수 있도 록 복호화하는 키입력정보 복호화단계(S1000);(6) a key input information decryption step (S1000) for decrypting the key input information encrypted in the encryption step so that the operating system can process it;

상기 보안모듈(100)은 기존 커널영역에서 담당하는 키보드 입력데이터에 대한 처리작업을 대신하여 유저영역(30)으로 전달하게 되므로, 전달된 입력데이터가 상기 유저영역(30)에서 처리가능한 상태로 되어야 한다. 따라서, 상기 입력데이터의 키입력정보는 암호화되어 있으므로 이를 다시 복호화한다. Since the security module 100 transmits the input data to the user area 30 instead of processing the keyboard input data in the existing kernel area, the transmitted input data must be processed in the user area 30. do. Therefore, since the key input information of the input data is encrypted, it is decrypted again.

(7) 복호화된 키입력정보가 그 처리를 위해 해당 응용프로그램으로 전달되는 과정 중, 상기 키입력정보에 있어서 이를 우선적으로 후킹하고 차순위 후킹은 발생되지 않도록 하는 훅프로시져가 실행되는 보안용 훅실행단계(S1100);(7) a security hook execution step in which a hook procedure is executed in which the decrypted key input information is first transmitted to a corresponding application program for processing thereof, and the hook procedure is executed to hook the key first in the key input information and prevent the next order hooking from occurring. (S1100);

상기 커널영역(20)의 보안모듈(100)에 대응하는 유저영역(30)의 훅모듈(200)은 상기 유저영역(30)에서 이루어지는 입력데이터의 처리과정 중 훅을 통해 당해 입력데이터가 유출되는 것을 방지하기 위해 보안용 전역훅을 실행한다. 일반적으로, 상기 훅은 훅체인을 통해 메세지큐 등에서 순차적으로 실행되며, 이러한 과정 중 악의적인 프로그램 등으로 설치된 해킹용 훅이 포함되어 입력데이터가 담긴 메세지를 빼내게 된다. 따라서 본 발명에 따른 상기 훅모듈(200)은 상기 해킹용 훅에 의한 입력데이터의 유출을 막도록 키보드에 관련된 입력데이터에 대한 훅을 최초로 실행하고 훅체인 내 차순위 훅은 모두 무력화시킴으로서, 상기 해킹용 훅에 의한 정보유출을 원천적으로 차단할 수 있게 된다. 이에 대한 좀더 상세한 설명은 이하에서 도면을 첨부하여 하겠다.The hook module 200 of the user area 30 corresponding to the security module 100 of the kernel area 20 may leak the input data through a hook during the processing of the input data made in the user area 30. To prevent this, execute a security global hook. In general, the hook is executed sequentially in the message queue through a hook chain, and during this process, a hacking hook installed by a malicious program is included to extract a message containing input data. Therefore, the hook module 200 according to the present invention executes the hook for the input data related to the keyboard for the first time to prevent leakage of the input data by the hacking hook, and disables all the next-order hooks in the hook chain. Information leakage by hook can be blocked at source. A more detailed description thereof will be made with reference to the accompanying drawings.

도 2는 도 1의 블록도를 보다 명세하게 도시한 블록도이고, 도 8은 도 7의 플로우차트를 구체화하여 도시한 플로우차트인바, 이를 참조하여 설명한다.FIG. 2 is a block diagram illustrating the block diagram of FIG. 1 in more detail, and FIG. 8 is a flowchart illustrating the flowchart of FIG. 7 in detail.

앞서 기술된 바와 같이, 유저영역(30)은 키보드를 통해 입력된 입력데이터가 응용프로그램(40)까지 전달되는 동안 이를 처리하기 위해 서브시스템(31), 시스템메세지큐(32) 및 스레드메세지큐(33)을 포함한다. 여기에 본 발명에 따른 훅모듈(200)이 더 포함된다. 한편, 커널영역(20)은 키보드를 통해 입력된 입력데이터가 유저영역(30)까지 전달되는 동안 이를 처리하기 위해 키보드하드웨어(21, 22), HID클래스드라이버(23), 키보드클래스드라이버(25) 및, 포트트라이버(24)를 포함한다. 여기에 본발명에 따른 보안모듈(100)이 더 포함되여, 상기 보안모듈(100)은 USB필터(110), USB필터드라이버(120), 보안인터럽트핸들러(130) 및, 드라이버관리모듈(140)을 포함한다.As described above, the user area 30 includes a subsystem 31, a system message queue 32, and a thread message queue to process input data input through the keyboard while being transmitted to the application program 40. 33). It further includes a hook module 200 according to the present invention. On the other hand, the kernel area 20 is the keyboard hardware 21, 22, HID class driver 23, keyboard class driver 25 to process the input data input through the keyboard to the user area 30, while processing it; And port driver 24. The security module 100 according to the present invention is further included, the security module 100 is a USB filter 110, USB filter driver 120, security interrupt handler 130 and the driver management module 140 It includes.

물론, 도 2에 도시된 구성도에서 상기 훅모듈(200)과 보안모듈(100)을 제외한 구성블록은 모두 기존 운영체계를 개략적으로 도시한 것이므로, 이외에 더 포함될 수 있다. 한편, 상기 커널영역(20)에서 키보드포트부(22), 인터럽트핸들러(미도시됨), 포트드라이버(24) 및 키보드클래스드라이버(25)는 종래 PS/2키보드(11)의 입력데이터를 처리하기 위해 구성되는 것이며, USB키보드(11)의 입력데이터를 처리하기 위해 추가적으로 USB장치(21), HID클래스드라이버(23)가 더 포함될 수 있다.Of course, all of the configuration blocks except for the hook module 200 and the security module 100 in the configuration diagram shown in FIG. 2 schematically illustrate the existing operating system, and thus may be further included. Meanwhile, in the kernel region 20, the keyboard port 22, an interrupt handler (not shown), the port driver 24, and the keyboard class driver 25 process input data of the conventional PS / 2 keyboard 11. In order to process the input data of the USB keyboard 11, the USB device 21 and the HID class driver 23 may be further included.

상기 키보드포트부(22)는 PS/2키보드(12)로부터 발생된 입력데이터를 처리하는 키보드하드웨어로 PS/2키보드(12)의 케이블이 연결되는 포트를 포함하며, PS/2키보드(12)의 신호를 받아 인터럽트를 발생시킨다.The keyboard port unit 22 is a keyboard hardware for processing input data generated from the PS / 2 keyboard 12 and includes a port to which a cable of the PS / 2 keyboard 12 is connected, and the PS / 2 keyboard 12 Receives a signal of and generates an interrupt.

상기 인터럽트핸들러는 상기 인터럽트의 발생과 더불어 PS/2키보드(12)의 입력데이터를 처리할 포트드라이버(24)의 인터럽트 서비스루틴주소를 제공한다.The interrupt handler provides the interrupt service routine address of the port driver 24 to process the input data of the PS / 2 keyboard 12 along with the occurrence of the interrupt.

상기 포트드라이버(24)는 널리 활용되고 있는 i8042 포트드라이버이며, 상기 인터럽트핸들러에 의해 입력데이터의 경로가 설정되어서 상기 입력데이터를 처리하게 된다.The port driver 24 is a widely used i8042 port driver, and the interrupt handler sets the path of the input data to process the input data.

상기 키보드클래스드라이버(25)는 Keyboard HID mapper driver(kbdhid.sys)와 Keyboard class driver(kbdclass.sys)로 구성되며, 상기 키보드포트부(22)를 통해 입력되고 있는 데이터를 발생시키는 키보드의 종류를 운영체제가 확인하도록 된다.The keyboard class driver 25 is composed of a Keyboard HID mapper driver (kbdhid.sys) and a Keyboard class driver (kbdclass.sys). The keyboard class driver 25 is a type of a keyboard that generates data input through the keyboard port unit 22. The operating system will confirm.

한편, 상기 USB장치(21)는 USB키보드(21)의 USB케이블이 본체와 물리적으로 연결되어지는 USB포트가 포함된 USB버스 하드웨어(미도시됨), 호스트 컨트롤러 드라이버(usbport.sys) 및, USB허브 드라이버(usbhub.sys)가 포함된다.The USB device 21 may include a USB bus hardware (not shown), a host controller driver (usbport.sys), and a USB port including a USB port through which a USB cable of the USB keyboard 21 is physically connected to the main body. Hub driver (usbhub.sys) is included.

상기 USB장치(21)로 입력되는 입력데이터는 운영체제의 HID클래스드라이버(23)로 전달된다. 상기 "HID" 란 Human Input Device의 약자이며, 영문의 의미대로 사람이 수동적으로 데이터를 입력시킬 수 있는 장치를 말한다. 즉, '키보드'를 포함하여 '마우스', '조이스틱' 같은 것들이다.The input data input to the USB device 21 is transferred to the HID class driver 23 of the operating system. "HID" is an abbreviation of Human Input Device, and refers to a device capable of manually inputting data by a human in an English meaning. In other words, including the 'keyboard', 'mouse' and 'joystick'.

계속해서, 상기 HID클래스드라이버(23)로 전송된 입력데이터에는 당해 입력데이터를 발생시킨 입력장치 즉, '키보드'에 대한 정보를 가진 입력데이터가 포함되어 있으며, 이를 통해 상기 HID클래스드라이버(23)는 지금 USB포트를 통해 들어오고 있는 입력데이터가 '키보드'에 의한 입력데이터임을 인식한다. 이를 위해 참고적으로 상기 HID클래스드라이버(23)는 HID minidriver(hidusb.sys)와 Hid class driver(hidclass.sys)을 포함하며, USB포트를 통해 입력되는 입력데이터를 운영체 제가 인식하도록 된다.Subsequently, the input data transmitted to the HID class driver 23 includes an input device that generates the input data, that is, input data having information on a 'keyboard', and thus the HID class driver 23. Recognizes that the input data coming in through the USB port is input data by the keyboard. For this purpose, the HID class driver 23 includes a HID minidriver (hidusb.sys) and a Hid class driver (hidclass.sys), and the operating system recognizes input data input through the USB port.

이렇게 USB포트로부터 들어오고 있는 입력데이터가 '키보드'를 통한 입력데이터임이 확인되면, 운영체제는 상기 입력데이터로부터 당해 '키보드'의 종류를 확인하고 당해 '키보드'가 본체와 연결되어 활용가능하도록 하는 드라이버를 검색하게 된다. 이를 위해, 상기 HID클래스드라이버(23)를 경유한 입력데이터는 키보드클래스드라이버(25)로 전달된다.When it is confirmed that the input data coming from the USB port is input data through the 'keyboard', the operating system checks the type of the 'keyboard' from the input data and allows the 'keyboard' to be connected to the main body and used for the driver. Will be searched. To this end, the input data via the HID class driver 23 is transferred to the keyboard class driver 25.

여기서 상기 입력데이터를 발생시킨 '키보드'의 드라이버를 검색/구동시켜 당해 키보드를 활용할 수 있게 한다.Here, the driver of the 'keyboard' which generated the input data can be searched / driven to utilize the keyboard.

이때, 당해 '키보드'가 이전에는 본체와 연결되지 않았던 새로운 키보드일 경우에는 당해 '키보드'의 활용을 가능하도록 하기 위해 당해 '키보드'의 드라이버를 설치하도록 사용자에게 요구하거나 운영체제 자체에서 필요한 드라이버를 설치한다.At this time, if the 'keyboard' is a new keyboard that was not previously connected to the main body, the user is required to install a driver of the 'keyboard' in order to enable the use of the 'keyboard' or install a driver required by the operating system itself. do.

상기 키보드클래스드라이버(25)를 거치면서 운영체제가 당해 키보드의 종류를 인식하면 상기 키입력정보는 유저영역(30)으로 전달된다.When the operating system recognizes the type of the keyboard while passing through the keyboard class driver 25, the key input information is transmitted to the user area 30.

상기 키입력정보는 운영체제의 서브시스템(31)으로 전달되어 응용프로그램(40)과의 통신가능한 형태로 변형된다. 일반적으로 Window와 같은 운영체제의 경우에는 상기 키입력정보가 Window Message 형태로 변형된다. 이때, 상기 서브시스템(31)은 Window 체제의 경우 Win32 Subsystem이 될 것이다.The key input information is transmitted to the subsystem 31 of the operating system and transformed into a form that can communicate with the application program 40. In general, in an operating system such as a window, the key input information is transformed into a window message. At this time, the subsystem 31 will be Win32 Subsystem in the case of Window system.

상기 Window Message는 메세지큐(32, 33)를 통해 큐(Queue) 방식으로 응용프로그램에 전달된다. 큐라하면 앞서 설명한 바와 같이 먼저 입력된 데이터가 먼저 처리되어지는 것으로서, 사용자가 키를 조작함에 있어 먼저 조작된 것이 먼저 처리되어야 하는 키보드 또는 각종 입력장치들의 키입력정보 처리과정에 공통적으로 적용되는 것이다. 한편, 상기 메세지큐(32, 33)는 서브시스템(31)으로부터 전달된 Window Message를 상기 큐방식으로 처리하는 수단이다.The Window Message is delivered to an application program in a queue manner through message queues 32 and 33. As described above, the first input data is processed first, and when the user operates the keys, the first operation is commonly applied to the key input information processing process of the keyboard or various input devices to be processed first. On the other hand, the message queues 32 and 33 are means for processing the Window Message transmitted from the subsystem 31 in the queue manner.

상기 메세지큐(32, 33)를 통해 Window Message는 응용프로그램(40)으로 전달되고, 이후 응용프로그램(40)의 자체 기능에 의해 해당 키입력정보는 처리된다. 이때, 상기 응용프로그램(40)은 로컬단위에서 실행되는 문서작성/편집프로그램, 도면작성프로그램 등이 될 것이다.Through the message queues 32 and 33, the window message is delivered to the application program 40, and the corresponding key input information is then processed by its own function. In this case, the application program 40 may be a document creation / editing program, a drawing creation program, or the like executed in a local unit.

이러한 흐름을 좀더 기술적으로 논한다면, 상기 USB버스 하드웨어의 전기적인 데이터는 상기 호스트 컨트롤러 드라이버를 거쳐 USB허브에서는 URB(USB Request Blocks) 형태로 변형되고, HID클래스드라이버(23)와 키보드클래스드라이버(25)에서는 IRP(I/O Request Packet) 형태로 변형되어 서브시스템(31)으로 전달된다. 상기 서브시스템(31)에서는 다시 Window Message 형태로 변형되어 응용프로그램(40)에 전달된다.In more technical terms, the electrical data of the USB bus hardware is transformed into USB Request Blocks (URB) in the USB hub via the host controller driver, and the HID class driver 23 and the keyboard class driver 25 ) Is transformed into an IRP (I / O Request Packet) form and delivered to the subsystem 31. The subsystem 31 is transformed into a window message and transmitted to the application program 40.

이상 상술된 기존 커널영역 및 유저영역 기반으로 본 발명은 USB키보드 보안은 물론 PS/2키보드 보안을 수행할 수 있다. Based on the above-described existing kernel area and user area, the present invention can perform PS / 2 keyboard security as well as USB keyboard security.

우선 상기 USB키보드(11)로 입력되는 입력데이터에 대한 본 발명에 따른 보안방법과 그 보안시스템을 설명한다.First, a security method and a security system according to the present invention for input data input to the USB keyboard 11 will be described.

도 3은 커널영역에서 USB키보드를 통해 입력되는 입력데이터의 보안을 실시하는 본 발명에 따른 보안시스템의 구성을 도시한 블록도인바 이를 참조한다.3 is a block diagram illustrating a configuration of a security system according to the present invention which secures input data input through a USB keyboard in a kernel region.

본 발명에 따른 USB필터(110)는 상기 USB장치(21)와 우선적으로 연결되도록 시스템적으로 배치된다. 이렇게 배치된 USB필터(110)는 운영체제가 상기 USB장치(21)를 통해 입력되는 USB키보드(11)의 입력데이터를 인식하기 전에 상기 USB필터(110)가 우선적으로 인식한다.The USB filter 110 according to the present invention is systematically arranged to be connected with the USB device 21 first. The USB filter 110 disposed as described above is preferentially recognized by the USB filter 110 before the operating system recognizes the input data of the USB keyboard 11 input through the USB device 21.

본 발명에 따른 보안시스템에서는 상기 USB장치(21)로부터 전달되는 URB(입력데이터)를 우선적으로 전달받아 이를 암호화 처리하여 상기 응용프로그램(40)으로 전달되고, 상기 운영체제를 통한 입력데이터의 기존 커널영역에서의 전달과정은 이루어지지 않는다. In the security system according to the present invention, the URB (input data) transmitted from the USB device 21 is first received, encrypted, and then transmitted to the application program 40, and the existing kernel area of the input data through the operating system. There is no delivery process in.

USB필터드라이버(120)는 상기 USB필터(110)를 운영체제가 직접적으로 제어하지 못하므로 운영체제와 USB필터(110)를 상호 중계하기 위한 구성이며, 이에 대한 보다 상세한 설명은 아래에서 하도록 하겠다.The USB filter driver 120 is a configuration for relaying the operating system and the USB filter 110 because the operating system does not directly control the USB filter 110, a detailed description thereof will be described below.

본 발명에 따른 보안시스템에서 상기 USB필터(110)는, 운영체제로 구동되는 본체와 접속된 USB키보드(11)에서, 키조작으로 발생된 입력데이터 중 키에 대한 키입력정보를 검출하는 키입력정보검출모듈(111), 상기 키입력정보를 그 발생순서에 따라 정렬시키는 파싱모듈(112), 정렬된 상기 키입력정보를 패킷형태로 암호화시키는 암호화모듈(113) 및, 상기 운영체제가 상기 입력데이터를 인식하지 못하도록 처리하는 입력데이터삭제모듈(114)을 포함한다.In the security system according to the present invention, the USB filter 110, in the USB keyboard 11 connected to the main body driven by the operating system, key input information for detecting the key input information for the key of the input data generated by the key operation A detection module 111, a parsing module 112 for arranging the key input information according to the generation order, an encryption module 113 for encrypting the aligned key input information in a packet form, and the operating system converts the input data. It includes an input data deletion module 114 for processing not to recognize.

상술된 바와 같이, 상기 USB필터(110)는 USB장치(21)로부터 운영체제로 전달되는 입력데이터(키입력정보)를 우선적으로 캣취하여 암호화하고, 상기 USB장치(21)에 남아있는 입력데이터를 삭제하여 운영체제가 USB키보드(11)를 통해 입력된 데이터를 인식하지 못하도록 한다. 따라서, 상기 USB필터(110)에 의해 암호화된 입력데이터(키입력정보)가 드라이버관리모듈(140)로 전달됨과 동시에, 운영체제 또한 당해 입력데이터(키입력정보)를 인식하여 상술된 과정을 통해 처리한 후 유저영역(30)에 전달함으로서 발생될 수 있는 충돌을 방지할 수 있는 것이다.As described above, the USB filter 110 first captures and encrypts input data (key input information) transmitted from the USB device 21 to the operating system, and deletes the input data remaining in the USB device 21. To prevent the operating system from recognizing data input through the USB keyboard 11. Therefore, while the input data (key input information) encrypted by the USB filter 110 is transferred to the driver management module 140, the operating system also recognizes the input data (key input information) and processes it through the above-described process. After that, it is possible to prevent a collision that may occur by transferring to the user area (30).

도 3에 도시된 바와 같이, 본 발명에 따른 USB필터(110, 110', 110")는 USB를 통해 접속되는 주변장치들의 수에 따라 다수개가 설치될 수 있으며, 현실적으로도 본체에는 다수의 USB 주변장치를 본체와 동시에 연결할 수 있도록 다수의 USB장치(21, 21', 21")가 구비된다.As shown in FIG. 3, a plurality of USB filters 110, 110 ′ and 110 ″ according to the present invention may be installed according to the number of peripheral devices connected through USB. A plurality of USB devices 21, 21 ', 21 "are provided to connect the device to the main body at the same time.

따라서, 다수개의 USB필터(110, 110', 110")를 운영체제와 중계하기 위해 이들을 관리하는 USB필터드라이버(120)가 구비되어야 한다.Therefore, in order to relay the plurality of USB filters 110, 110 ′, 110 ″ with the operating system, a USB filter driver 120 managing them should be provided.

이를 위해 본 발명에 따른 보안시스템에서 상기 USB필터드라이버(120)에는, 다수의 상기 USB필터(110, 110', 110")들과 운영체제 간의 통신을 매개/관리하는 관리모듈(123), 상기 본체와 연결된 USB키보드(11)의 하드웨어ID와 이에 대응하는 상기 USB필터(110, 110', 110")를 카운팅하여 새로운 USB키보드(11)의 설치여부를 확인하는 필터확인모듈(121), 새로운 USB키보드(11)에 대한 USB필터(110, 110', 110")를 설치하는 필터설치모듈(122)이 더 구성된다.To this end, in the security system according to the present invention, the USB filter driver 120 includes a management module 123 for mediating / managing communication between a plurality of the USB filters 110, 110 ′, 110 ″ and an operating system, and the main body. Filter identification module 121 for checking whether the new USB keyboard 11 is installed by counting the hardware ID of the USB keyboard 11 connected thereto and the corresponding USB filter 110, 110 ′, 110 ″. The filter installation module 122 for installing the USB filter (110, 110 ', 110 ") for the keyboard 11 is further configured.

이상 상술된 구성을 갖는 보안시스템에서, 상기 보안방법과 더불어 키입력정보파싱단계(S701)가 더 포함된다.In the security system having the above-described configuration, a key input information parsing step S701 is further included in addition to the security method.

(1) 상기 보안모듈은 USB키보드의 입력데이터를 보안하는 USB필터를 포함함에 있어서, 상기 키입력검출단계를 통해 검출된 키입력정보를 발생순서에 따라 정 렬하는 키입력정보 파싱단계(S701);(1) The security module includes a USB filter for securing the input data of the USB keyboard, and the key input information parsing step of sorting the key input information detected through the key input detection step according to the generation order (S701). ;

상기 파싱단계(S701)의 구체적인 이해를 돕기 위해 앞서 기술된 본 발명에 따른 보안방법에서 USB키보드(11)의 입력데이터를 처리하는 과정을 상기 파싱단계(S701)와 더불어 추가적으로 설명한다.The process of processing the input data of the USB keyboard 11 in the security method according to the present invention described above to further understand the parsing step (S701) will be described in addition to the parsing step (S701).

(1) 키보드확인단계(S100);(1) keyboard confirmation step (S100);

사용자가 USB키보드의 키를 하나하나 조작하면서 발생되는 전기적 데이터는 USB장치(21)를 통해 운영체제가 인식가능한 형태의 데이터로 변형된다. 이렇게 변형된 데이터를 입력데이터라 칭한다. 이러한 입력데이터는 키조작 내용에 대한 실질적인 사용자의 의사내용이 담긴 키입력정보는 물론이며 당해 USB키보드(11)에 대한 정보를 포함한다. 따라서, 운영체제는 후자의 정보를 통해 당해 USB키보드(11)가 운영체제 하에서 활용될 수 있도록 하는 드라이버를 검색하고 이를 설치 및 설치하기를 요청함으로서, 사용자가 운영체제와 응용프로그램(40)에 대한 의사전달을 당해 USB키보드(11)를 통해 이룰 수 있도록 셋팅한다.Electrical data generated while the user manipulates the keys of the USB keyboard one by one is transformed into data in a form recognizable by the operating system through the USB device 21. This modified data is called input data. Such input data includes information on the USB keyboard 11 as well as key input information containing the actual user's intention about the key operation contents. Accordingly, the operating system requests the user to communicate with the operating system and the application 40 by searching for, installing, and installing a driver that enables the USB keyboard 11 to be utilized under the operating system through the latter information. It is set to achieve through the USB keyboard (11).

이를 좀더 구체적으로 설명한다. 본체의 USB포트에 상기 USB키보드(11)의 케이블을 꽂으면 운영체제는 이를 확인하기 위해 상기 케이블을 매개로 USB키보드(11)와 신호를 교류한다. 이러한 신호교류를 통해 USB키보드(11)의 정보가 담긴 초기입력데이터가 운영체제로 전달되어 당해 USB키보드의 종류를 확인하고 활용에 필요한 드라이버를 설치한다.This will be described in more detail. When the cable of the USB keyboard 11 is plugged into the USB port of the main body, the operating system exchanges a signal with the USB keyboard 11 through the cable to check this. Through such signal exchange, the initial input data containing the information of the USB keyboard 11 is transferred to the operating system to check the type of the USB keyboard and install a driver necessary for utilization.

여기서, 초기입력데이터와 입력데이터의 의미를 명확히 정의한다.Here, the meanings of the initial input data and the input data are clearly defined.

상기 초기입력데이터는 USB포트에 케이블을 매개로 접속된 주변장치를 확인 하기 위해 운영체제가 능동적으로 신호를 교류하면서 상기 주변장치로부터 얻어내는 데이터이고, 상기 입력데이터는 USB키보드의 키를 사용자가 조작함으로서 발생되는 키입력정보를 포함하면서 해당 키입력정보의 출처가 어디인지 운영체제가 인식할 수 있도록 하는 부가데이터를 포함하는 것으로 본다.The initial input data is data obtained from the peripheral device while the operating system actively exchanges signals to identify the peripheral device connected to the USB port via a cable, and the input data is obtained by a user operating a key on the USB keyboard. It includes the generated key input information and includes additional data that allows the operating system to recognize the source of the key input information.

일반적으로, 주변장치가 본체에 새롭게 접속되면, 운영체제는 당해 주변장치의 활용을 위한 드라이버 설치와 인식할 수 있는 하드웨어ID를 부여하여 레지스트리에 등록시킨다.In general, when a peripheral device is newly connected to the main body, the operating system assigns a driver ID for recognizing the peripheral device and recognizes a hardware ID to be registered in the registry.

도 3에 도시된 바와 같이, USB필터(110, 110', 110")는 다수개가 설치될 수 있으며, 각각의 USB필터(110, 110', 110")는 해당 USB키보드(11)와 연동되어서 상기 확인단계(S100)에서 키입력정보를 보안할 준비를 한다.As shown in FIG. 3, a plurality of USB filters 110, 110 ′ and 110 ″ may be installed, and each of the USB filters 110, 110 ′ and 110 ″ may be interlocked with the corresponding USB keyboard 11. In the checking step (S100) it is prepared to secure the key input information.

한편, 상기 키보드확인단계(S100)는 본체에 오직 한개의 USB키보드만이 존재하고 다른 USB키보드가 추가적으로 설치될 여지가 없을 경우에는 USB키보드를 확인할 필요가 없을 것이므로 반드시 선행되어야 할 과정은 아니다. 그러나 도 2에 도시된 바와 같이, 현실적으로 본체에는 USB장치(21, 21', 21")가 다수개가 구비되고, 이에 따라 USB키보드(11, 11', 11") 또한 하나이상의 접속될 수 있으므로, 이에 상응하여 USB필터(110, 110', 110") 또한 다수개가 형성될 것이다. On the other hand, the keyboard check step (S100) is not necessarily a process that must be preceded because only one USB keyboard exists in the main body and there is no need to check the USB keyboard if there is no room for another USB keyboard to be additionally installed. However, as shown in FIG. 2, since a plurality of USB devices 21, 21 ′, 21 ″ are provided in the main body, the USB keyboards 11, 11 ′, 11 ″ may also be connected to one or more of them. Correspondingly, a plurality of USB filters 110, 110 ', 110 "will also be formed.

즉, 상기 USB키보드확인단계(S100)에서 이루어지는 USB키보드(11)의 확인과정은 USB키보드가 다수개가 접속될 수 있고, 이에 따라 다수개의 USB필터가 설치될 때 그 실효가 있다 할 것이다.That is, the verification process of the USB keyboard 11 performed in the USB keyboard verification step (S100) may be effective when a plurality of USB keyboards are connected, and thus a plurality of USB filters are installed.

한편, 상기 USB키보드(11)와 PS/2키보드(12)가 병용될 경우에는 본 발명에 따른 보안시스템이 현재 입력데이터가 발생되고 있는 키보드가 무엇인지 알 필요가 있다. 따라서, 당해 키보드확인단계(S100)는 USB키보드의 확인뿐만 아니라 USB키보드(11)인지 PS/2키보드(12) 인지를 확인/판별한다.(S200)On the other hand, when the USB keyboard 11 and the PS / 2 keyboard 12 are used together, the security system according to the present invention needs to know what keyboard is currently generating the input data. Therefore, the keyboard check step (S100) checks / determines whether the USB keyboard 11 or the PS / 2 keyboard 12 as well as the confirmation of the USB keyboard.

(2) USB필터설치 결정단계(S301);(2) USB filter installation determination step (S301);

상술된 바와 같이, 본 발명에 따른 USB필터(110, 110', 110")는 본체와 접속된 USB키보드(11, 11', 11")에 따라 각각 설치되므로, 이미 드라이버가 설치되고 당해 USB키보드(11, 11', 11")의 보안을 위해 연동되는 USB필터(110, 110', 110")가 있을 경우에는 별도의 설치과정을 진행하지 않는 한편, 새로운 USB키보드가 본체와 접속되어 이에 대한 USB필터가 설치되어 있지 않을 경우에는 당해 USB키보드의 보안을 위해 연동될 USB필터를 설치할 것인지를 결정한다. As described above, since the USB filters 110, 110 ', and 110 "according to the present invention are installed according to the USB keyboards 11, 11' and 11" connected to the main body, drivers are already installed and the USB keyboards are installed. If there is a USB filter (110, 110 ', 110 ") that is interlocked for security of (11, 11', 11"), a separate installation process is not carried out, while a new USB keyboard is connected to the main body, If the USB filter is not installed, it is determined whether to install a USB filter to be interlocked for security of the USB keyboard.

이때, 상기 결정과정에서는 사용자의 의사불문방식과 사용자의 의사에 따라 설치여부를 결정하는 방식이 있을 것이다.At this time, there will be a method of determining whether or not to install according to the user's intention and the user's intention in the determination process.

일반적으로, 운영체제는 본체와 연결되는 주변장치가 접속되면 이를 구분하여 인식할 수 있도록 고유한 하드웨어ID를 설정하게 되며, 이를 레지스트리에 등록한다. 따라서, 기존에 일회 이상 본체와 접속하여 활용된 USB장치들은 운영체제의 레지스트리에 하드웨어ID가 등록되어 있어, 당해 USB장치(21)가 본체와의 접속이 끊긴 후 다시 접속되더라도 운영체제가 이를 인식하여 드라이버 설치없이 곧바로 활용할 수 있도록 되고, 하드웨어ID가 없는 USB키보드가 본체와 새로히 접속될 경우에는 당해 USB키보드를 활용할 수 있는 드라이버의 설치여부를 확인하여 해당 드라이버를 설치하거나 사용자에게 설치할지 여부를 묻게 된다. 이후, 드라이버 설 치가 완료되고 운영체제는 레지스트리에 당해 USB키보드를 인식할 수 있는 하드웨어ID를 설정/등록시킨다.In general, the operating system sets a unique hardware ID so as to recognize and recognize a peripheral device connected to the main body and registers it in a registry. Therefore, the USB devices that have been used by connecting to the main body more than once are registered with the hardware ID in the registry of the operating system, and even though the USB device 21 is disconnected from the main body and connected again, the operating system recognizes this and installs the driver. If the USB keyboard without a hardware ID is newly connected with the main body, the driver can check whether the driver that can use the USB keyboard is installed and ask the user to install the driver or to install the driver. After the driver installation is completed, the OS sets / registers a hardware ID for recognizing the USB keyboard in the registry.

(3) 필터설치단계(S311);(3) filter installation step (S311);

새로히 접속된 당해 USB키보드에서는 보안을 위해 본 발명에 따른 USB필터(110, 110', 110")가 설치되어 있지 못하므로, 새롭게 등록된 하드웨어ID에 해당하는 운영체제의 레지스트리에 USB필터(110, 110', 110")를 등록시킨다.In the newly connected USB keyboard, the USB filters 110, 110 ', and 110 "according to the present invention are not installed for security. Therefore, the USB filters 110 and 110 are stored in the registry of the operating system corresponding to the newly registered hardware ID. ', 110 ").

결과적으로, 본체의 USB포트에 USB키보드(11)가 접속되면 운영체제는 상기 USB키보드(11)와 통신하면서 하드웨어ID와 드라이버의 설치여부를 확인하여, 새로운 USB키보드인지 아니면 기존에 이미 하드웨어ID와 드라이버가 존재하는 것인지를 판단한다. 또한, 이렇게 판단된 내용에 따라 상기 필터확인모듈(121)은 운영체제와 연동하면서 USB필터수와 이에 적용되는 USB키보드의 하드웨어ID의 수를 카운팅하여 USB필터 수가 하드웨어ID의 수보다 적을 경우, 상기 필터설치모듈(122)은 USB필터(110, 110', 110")가 설치되지 않은 하드웨어ID를 검색하고 이에 해당하는 레지스트리에 USB필터(110, 110', 110")를 설치하게 된다.As a result, when the USB keyboard 11 is connected to the USB port of the main body, the operating system communicates with the USB keyboard 11 and checks whether the hardware ID and the driver are installed, and whether it is a new USB keyboard or an existing hardware ID and driver. Determine if is present. In addition, the filter check module 121 according to the determined content counts the number of USB filters and the number of hardware IDs of the USB keyboard applied thereto while interworking with the operating system, and the number of USB filters is smaller than the number of hardware IDs. The installation module 122 searches for a hardware ID for which the USB filters 110, 110 ', and 110 "are not installed, and installs the USB filters 110, 110', and 110" in the corresponding registry.

그런데 HID에서 PS/2방식으로 관리되는 주변장치들은 운영체제 내에 Class(키보드, 마우스, 조이스틱 등) 별로 각각 분류되어 있는 반면, USB의 경우에는 HID 분류단계에서 상기 Class와 같은 세부적인 분류없이 키보드, 마우스, 조이스틱, 메모리 등의 주변장치들이 통합적으로 등록 및 관리되므로, 상기 USB필터를 해당 USB키보드에만 연동할 수 있도록 되는 설치위치를 찾는데 곤란함이 있다.However, peripheral devices managed by HID in PS / 2 system are classified by class (keyboard, mouse, joystick, etc.) in the operating system, whereas in case of USB, keyboard, mouse without detailed classification like Class in the HID classification step. Since peripheral devices such as joysticks and memory are registered and managed in an integrated manner, it is difficult to find an installation position where the USB filter can be linked only to the corresponding USB keyboard.

(4) 보안모듈활성화단계(S401);(4) activating the security module (S401);

USB키보드(11)의 입력데이터를 보안하는 보안모듈(100)에서, 상술된 바와 같이 USB포트를 본체와 연결하는 것만으로 USB필터(110)가 설치되어 활성화될 수 있지만, 사용자에게 직접 활성화 여부를 물어 그 결과에 따라 보안모듈(100)의 활성화를 결정할 수 있다. 사용자에 의한 활성화가 선택되면 상기 USB필터(110)는 작동되고, 활성화가 선택되지 않는다면 상기 USB필터(110)는 작동되지 않으면서 기존의 커널영역(20)에서 이루어지는 입력데이터 처리과정을 유지하게 될 것이다.(S411, S501)In the security module 100 to secure the input data of the USB keyboard 11, as described above, the USB filter 110 can be installed and activated simply by connecting the USB port to the main body, The activation of the security module 100 may be determined according to the result of the query. When the activation is selected by the user, the USB filter 110 is operated. If the activation is not selected, the USB filter 110 is not operated and maintains the input data processing performed in the existing kernel region 20. (S411, S501)

(5) 키입력정보 검출단계(S601);(5) detecting key input information (S601);

USB키보드(11)의 키조작으로 발생되어 전달되는 입력데이터에서 실질적으로 사용자가 키조작으로 발생시킨 의사내용 즉, 조작이 이루어진 키에 대한 정보가 담긴 키입력정보를 상기 키입력정보검출모듈(111)을 통해 검출한다. 상기 키입력정보는 실질적으로 보안을 위해 암호화가 진행되어야 할 부분이다. 한편, 상기 키입력정보는 USB키보드(11)의 데이터 입력방식의 특성상 다수의 정보가 패킷단위로 한꺼번에 전달된다.In the input data generated and transmitted by the key operation of the USB keyboard 11, the key input information containing the intention contents generated by the user by the key operation, that is, information on the key on which the operation is performed, is performed. Detects through). The key input information is a part that should be encrypted for security. On the other hand, in the key input information, a plurality of pieces of information are transmitted at the same time in a packet unit due to the characteristics of the data input method of the USB keyboard 11.

참고적으로, PS/2방식의 키보드일 경우에는 키조작이 이루어지면서 발생된 키입력정보가 큐에 따라 하나씩 개별 전달되므로, USB키보드(11)의 키입력정보 전달방식과는 큰 차이가 있다 할 것이다.For reference, in the case of the PS / 2 type keyboard, since key input information generated by key manipulation is individually transmitted according to a queue, there is a big difference from the key input information transmission method of the USB keyboard 11. will be.

(6) 키입력정보 파싱단계(S701);(6) parsing key input information (S701);

앞서 기술된 바와 같이, 상기 키입력정보검출모듈(111)을 통해 입력데이터로부터 키입력정보가 검출되면 상기 파싱모듈(112)에 의해 키입력정보의 입력순서에 따라 그 정보가 정렬된다. 이렇게 정렬된 키입력정보는 암복호화를 거치면서 상기 유저영역(30)으로 전달되어 키입력정보의 입력순서에 따라 처리된다.As described above, when the key input information is detected from the input data through the key input information detection module 111, the information is arranged by the parsing module 112 according to the input order of the key input information. The sorted key input information is transmitted to the user area 30 while being decrypted and processed according to the input order of the key input information.

(7) 상기 파싱단계에서 정렬이 이루어진 키입력정보가 패킷단위로 하여 암호화되는 키입력정보 암호화단계(S801);(7) a key input information encryption step (S801) in which the key input information arranged in the parsing step is encrypted on a packet basis;

상기 파싱모듈(112)을 통해 패킷단위로 정렬된 키입력정보는 상기 암호화모듈(113)을 통해 암호화되어 외부에서 악의적인 프로그램을 통한 해킹 또는 확인이 불가능하도록 된다. 따라서, 상기 키입력정보가 상기 USB장치(21, 21', 21")를 포함하여 로컬단위에서 유저영역(30)으로 전달되는 동안 중간에서 해킹되어 유출되는 것을 방지할 수 있다.The key input information arranged in packet units through the parsing module 112 is encrypted through the encryption module 113 so that hacking or confirmation through a malicious program from the outside is impossible. Therefore, it is possible to prevent the key input information from being hacked and leaked in the middle while being transmitted from the local unit to the user area 30 including the USB devices 21, 21 ′, 21 ″.

(8) 입력데이터 삭제단계(S901);(8) deleting input data (S901);

운영체제는 USB장치(21, 21', 21")에서 USB키보드(11)로부터 전달된 입력데이터를 확인하기 위해 USB장치(21, 21', 21")의 USB버스에서 입력데이터를 읽게된다. 이렇게 될 경우, 이미 USB필터(110, 110', 110")를 경유하여 유저영역(30)으로 전달되는 동일한 키입력정보가 운영체제에 의해 USB버스에서 읽혀진 입력데이터와 상호 충돌하여 시스템에 에러를 발생시킴은 물론, 상기 입력데이터가 운영체제를 통해 유저영역(30)으로 전달되는 동안 해킹되어 USB필터(110, 110', 110")의 보안기능이 무의미해지게 된다.The operating system reads the input data from the USB bus of the USB devices 21, 21 ', 21 "to check the input data transmitted from the USB keyboard 11 in the USB devices 21, 21', 21". In this case, the same key input information already transmitted to the user area 30 via the USB filters 110, 110 ′ and 110 ″ collides with the input data read from the USB bus by the operating system and causes an error in the system. Of course, while the input data is hacked while being transmitted to the user area 30 through the operating system, the security functions of the USB filters 110, 110 ′ and 110 ″ become meaningless.

따라서, 상기 입력데이터삭제모듈(114)은 USB장치(21) 즉, USB버스에 남아있는 입력데이터를 처리하여 운영체제가 USB키보드(11)로부터 입력된 데이터가 없는 것으로 인식하도록 한다. 따라서, 당해 USB키보드(11)로부터 입력되는 입력데이터 는 USB필터(110, 110', 110")를 통해서만 유저영역(30)으로 전달된다.Accordingly, the input data deletion module 114 processes the input data remaining in the USB device 21, that is, the USB bus so that the operating system recognizes that there is no data input from the USB keyboard 11. Therefore, the input data input from the USB keyboard 11 is transferred to the user area 30 only through the USB filters 110, 110 ′ and 110 ″.

상기 키입력정보복호화단계(S1000)와, 보안용 훅실행단계(S1100)은 앞서 기술된 바 있으므로 여기서는 생략한다.Since the key input information decryption step S1000 and the security hook execution step S1100 have been described above, they will be omitted here.

본 발명에 따른 보안방법에서는 상술된 문제에 대해 기존 운영체제의 수정없이도 해소할 수 있는 필터설치단계(S311)를 안출하였으며, 이하에서는 이에대해 도면과 더불어 상세히 설명한다.In the security method according to the present invention has proposed a filter installation step (S311) that can be solved without modifying the existing operating system for the above-described problem, will be described in detail with reference to the drawings.

도 11은 본 발명에 따른 필터 설치방법의 일실시예를 도시한 플로우차트인바 이를 참조하여 설명한다.11 is a flowchart illustrating an embodiment of a filter installation method according to the present invention.

상기 필터설치단계(S311)는,The filter installation step (S311),

(1) 운영체제 레지스트리에 등록된 HID 디바이스의 하드웨어ID가 검색되는 HID디바이스 검색단계(S311a);(1) HID device search step (S311a) in which the hardware ID of the HID device registered in the operating system registry is searched for;

상기 필터설치모듈(122)은 레지스트리 엑세스 API를 통해 현재 시스템에서 사용중이거나 이전에 설치되었던 주변장치들 중 "HID"에 해당하는 주변장치의 하드웨어ID를 모두 찾는다. 이때, 운영체제가 윈도우 기반일 경우에는 상기 레지스트리 엑세스 API로써 SetUpDiGetClassDevs Win32 API가 활용될 수 있다.The filter installation module 122 finds all hardware IDs of peripheral devices corresponding to "HID" among the peripheral devices currently used or previously installed in the system through the registry access API. In this case, when the operating system is Windows-based, the SetUpDiGetClassDevs Win32 API may be used as the registry access API.

(2) 상기 하드웨어ID에서 키보드로 분류된 하드웨어ID가 검색되는 키보드 검색단계(S311b);(2) a keyboard search step of searching for a hardware ID classified as a keyboard in the hardware ID (S311b);

상기 HID디바이스 검색단계(S311a)를 통해 검색된 하드웨어ID에서 Class Guid가 키보드로 분류된 주변장치에 대한 하드웨어ID를 검색한다.The hardware ID of the peripheral device whose Class Guid is classified as a keyboard is searched from the hardware ID searched through the HID device search step S311a.

(3) 운영체제 레지스트리에 등록된 USB 디바이스의 하드웨어ID가 검색되는 USB디바이스 검색단계(S311c);(3) a USB device searching step (S311c) in which the hardware ID of the USB device registered in the operating system registry is searched;

상기 필터설치모듈(122)은 레지스트리 엑세스 API를 통해 현재 시스템에서 사용중이거나 이전에 설치되었던 주변장치들 중 "USB"에 해당하는 주변장치의 하드웨어ID를 모두 찾는다. 이때, 운영체제가 윈도우 기반일 경우에는 상기 레지스트리 엑세스 API로써 SetUpDiGetClassDevs Win32 API가 활용될 수 있다.The filter installation module 122 finds all hardware IDs of the peripheral devices corresponding to "USB" among the peripheral devices currently used or previously installed in the system through the registry access API. In this case, when the operating system is Windows-based, the SetUpDiGetClassDevs Win32 API may be used as the registry access API.

(4) 상기 키보드 검색단계와 상기 USB디바이스 검색단계를 통해 각각 검색된 하드웨어ID에서 상호 매칭되는 하드웨어ID가 확인되는 매칭ID확인단계(S311d);(4) a matching ID verification step (S311d) in which hardware IDs matched with each other in hardware IDs searched through the keyboard search step and the USB device search step are identified;

상기 과정을 통해 검색된 키보드 관련 하드웨어ID와 USB 관련 하드웨어ID를 비교하여 상호 동일한 하드웨어ID를 찾는다. 이렇게 찾은 하드웨어ID는 USB키보드와 관련하여 운영체제의 레지스트리에 등록된 주변장치이므로, 본 발명에 따른 USB필터를 설치할 수 있는 하드웨어ID의 레지스트리에 접근할 수 있게 된다.The same hardware ID is found by comparing the keyboard related hardware ID and the USB related hardware ID. Since the found hardware ID is a peripheral device registered in the registry of the operating system in relation to the USB keyboard, it is possible to access the registry of the hardware ID for installing the USB filter according to the present invention.

(5) 상기 매칭ID검색단계를 통해 검색된 해당 하드웨어ID의 디바이스 레지스트리에 USB필터가 등록되는 필터등록단계(S311e);(5) a filter registration step (S311e) in which a USB filter is registered in the device registry of the corresponding hardware ID searched through the matching ID search step;

상기 필터설치모듈(122)은 상술된 과정을 통해 본 발명에 따른 USB필터(110, 110', 110")가 설치되어야 하는 USB키보드(11, 11', 11")의 레지스트리에 접근하게 되고, 해당 레지스트리의 LowerFilters 항목에 USB필터(110, 110', 110")의 서비스 이름을 추가로 등록시킴으로서, 당해 USB키보드(11, 11', 11")의 활용시 본 발명에 따른 USB필터(110, 110', 110")가 우선적으로 작동되어 보안기능을 수행할 수 있도록 된다.The filter installation module 122 accesses the registry of the USB keyboard 11, 11 ′, 11 ″ in which the USB filters 110, 110 ′, 110 ″ according to the present invention are to be installed through the above-described process, By additionally registering the service name of the USB filter (110, 110 ', 110 ") in the LowerFilters item of the registry, the USB filter 110, according to the present invention when the USB keyboard (11, 11', 11") is utilized. 110 ', 110 ") are operated preferentially to perform security functions.

한편, 추가적으로, 본 발명에 따른 보안방법의 실시예에서는 "SetupDiCallClassInstaller" 함수를 통해 당해 주변장치, 즉 USB키보드(11, 11', 11")를 다시 로딩시켜 상기 USB필터(110, 110', 110")가 당해 USB키보드(11, 11', 11")와 함께 구동되도록 한다.Meanwhile, in the embodiment of the security method according to the present invention, the USB device 110, 110 ', 110 is reloaded by reloading the peripheral device, that is, the USB keyboard 11, 11', 11 "through the function" SetupDiCallClassInstaller ". &Quot;) is driven together with the corresponding USB keyboards 11, 11 ', 11 ".

이상은 커널영역(20)에서 USB키보드(11, 11', 11")의 보안을 수행하는 본 발명에 따른 보안방법 및 보안시스템에 대한 설명이었다. 이하에서는 커널영역(20)에서 PS/2키보드(12, 12', 12")의 보안을 수행하는 본 발명에 따른 보안방법 및 보안시스템에 대하여 설명한다.The above is a description of a security method and a security system according to the present invention for performing security of the USB keyboards 11, 11 ', 11 "in the kernel area 20. Hereinafter, the PS / 2 keyboard in the kernel area 20 will be described. A security method and a security system according to the present invention for performing security of (12, 12 ', 12 ") will be described.

도 4는 커널영역에서 PS/2키보드를 통해 입력되는 입력데이터의 보안을 실시하는 본 발명에 따른 보안시스템의 구성을 도시한 블록도이고, 도 9는 도 8에 도시된 인터럽트 서비스루틴 주소감시단계를 구체적으로 좀더 상세히 기재한 플로우차트인바, 도 8과 더불어 설명한다.Figure 4 is a block diagram showing the configuration of a security system according to the present invention for implementing the security of input data input through the PS / 2 keyboard in the kernel area, Figure 9 is an interrupt service routine address monitoring step shown in FIG. The flowchart is described in more detail with reference to FIG. 8.

(1) 키보드확인단계(S100, S200)는 앞서 기술한 바 있으므로 여기서는 생략한다.(1) The keyboard checking steps S100 and S200 have been described above and thus will be omitted here.

(2) 대상 응용프로그램 실행단계(S302)와 대상 응용프로그램 스레드 생성단계(S303);(2) a target application program execution step (S302) and a target application program thread generation step (S303);

본 발명에 있어서, PS/2키보드 보안은 USB키보드 보안과는 달리 해당 응용프로그램 별로 그 보안이 이루어진다. 즉, 앞서 기술된 바와 같이 USB키보드는 USB장치에 USB키보드의 포트가 접속되는 순간 보안모듈(100)이 활성화되는 한편, PS/2키보드의 경우에는 보안을 실행하는 해당 응용프로그램의 실행파일과 연동되어서 보안모듈(100)이 활성화되는 것이다. 또한, 해당 응용프로그램의 활성화여부를 감 지하는 수단의 일실시예로서 상기 응용프로그램을 처리하는 스레드의 생성여부를 파악하는 방식이 적용될 수 있다.In the present invention, the PS / 2 keyboard security, unlike the USB keyboard security, the security is made for each application. That is, as described above, the USB keyboard is activated when the security module 100 is activated at the moment the port of the USB keyboard is connected to the USB device, while in the case of the PS / 2 keyboard, the USB keyboard is interlocked with the executable file of the corresponding application executing security. The security module 100 is activated. In addition, as an embodiment of a means for detecting whether the corresponding application is activated, a method of determining whether a thread for processing the application is generated may be applied.

(3) 보안모듈 활성화단계(S402);(3) activating the security module (S402);

USB키보드에서의 보안모듈 활성화단계(S401)와 동일하므로 중복설명은 피하기로 한다.Since the same as the security module activation step (S401) in the USB keyboard will not be duplicated.

(4) 인터럽트 서비스루틴교체단계(S412);(4) interrupt service routine replacement step (S412);

상기 보안모듈(100)이 활성화되면, 인터럽트 디스크립터 테이블의 루틴주소가 교체된다. 즉, 상기 인터럽트 디스크립터 테이블이 보안용 인터럽트 디스크립터 테이블(132)로 되어서 PS/2키보드(12)로부터 발생된 인터럽트에 의해 해당 입력데이터를 처리할 보안입력드라이버(131)의 인터럽트 서비스루틴주소를 제공하여셔, 기존의 포트드라이버(24)로의 입력데이터 전송을 차단한다. 여기서, 상기 보안용 인터럽트 디스크립터 테이블(132)과 보안입력드라이버(131)를 인터럽트핸들러(130)로 한다.When the security module 100 is activated, the routine address of the interrupt descriptor table is replaced. That is, the interrupt descriptor table becomes the security interrupt descriptor table 132 to provide an interrupt service routine address of the security input driver 131 to process the corresponding input data by an interrupt generated from the PS / 2 keyboard 12. In operation, the input data to the existing port driver 24 is blocked. Here, the security interrupt descriptor table 132 and the security input driver 131 are used as the interrupt handler 130.

(5) 입력데이터 수신단계(S502);(5) receiving input data (S502);

상기 PS/2키보드(12)를 통해 입력되는 입력데이터는 상기 인터럽트 서비스루틴주소에 따라 본 발명에 따른 보안입력드라이버(131)로 처리된다.The input data input through the PS / 2 keyboard 12 is processed by the secure input driver 131 according to the present invention according to the interrupt service routine address.

(6) 키입력정보 검출단계(S702);(6) key input information detection step (S702);

USB키보드에서의 키입력정보 검출단계(S701)와 동일하므로 중복설명은 피하기로 한다. 이때, 상기 입력데이터에는 키보드에 대한 식별번호를 담은 인터럽트 벡터가 포함되는 등 사용자의 키조작에 의한 데이터 이외에 다양한 정보들이 구성 된다. 여기서, 상기 보안입력드라이버(131)는 상기 입력데이터로부터 키입력정보를 검출하는 기능을 더불어 갖는다.Since the same as the key input information detection step (S701) in the USB keyboard, duplicate description will be avoided. In this case, the input data includes an interrupt vector containing an identification number for the keyboard, and various other information is configured in addition to the data by the user's key manipulation. Here, the security input driver 131 also has a function of detecting key input information from the input data.

(7) 키입력정보 암호화단계(S802);(7) encrypting key input information (S802);

상기 보안입력드라이버(131)는 전달된 키입력정보에 따라 암호화를 수행한다.The security input driver 131 performs encryption according to the transmitted key input information.

(8) 잔존하는 입력데이터 삭제단계(S902);(8) deleting remaining input data (S902);

상기 보안입력드라이버(131)는 포트에 남아있는 입력데이터를 인지확인메세지(Acknowledgement) 또는 ECHO명령을 통해 삭제시킨다.The security input driver 131 deletes input data remaining in the port through an acknowledgment message or an ECHO command.

한편, USB키보드를 통해 입력된 입력데이터로부터 키입력정보를 검출하여 암호화된 데이터에 대한 복호화와, 상기 PS/2키보드를 통해 입력된 입력데이터로부터 키입력정보를 검출하여 암호화된 데이터에 대한 복호화는, 상기 드라이버관리모듈(140)에 의해 이루어진다. 이를 위해 상기 드라이버관리모듈(140)에는 상기 복호화를 수행하는 복호화모듈(141)과, USB키보드 또는 PS/2키보드의 동작을 위해 발생된 스레드를 개별적으로 관리하여 이종의 키보드를 관리하는 키보드별스레드처리모듈(142)이 포함될 수 있다.(도 5 참조)Meanwhile, decryption of encrypted data by detecting key input information from input data input through the USB keyboard, and decryption of encrypted data by detecting key input information from input data input through the PS / 2 keyboard are performed. By the driver management module 140 is made. To this end, the driver management module 140 includes a decryption module 141 for performing the decryption and a thread for each keyboard for managing heterogeneous keyboards by separately managing threads generated for the operation of the USB keyboard or the PS / 2 keyboard. The processing module 142 may be included (see FIG. 5).

상기 드라이버관리모듈(140)은 복호화된 키입력정보를 유저영역(30)으로 전달하는 한편, 상기 보안모듈(100)과 운영체제 간의 중계기능을 수행한다.The driver management module 140 transmits the decrypted key input information to the user area 30 and performs a relay function between the security module 100 and the operating system.

한편, 상기 PS/2키보드의 입력데이터 처리과정에서, 악의적인 프로그램을 통해 정보의 유출을 목적으로 상기 인터럽트 디스크립터 테이블 내의 인터럽트 서비스루틴주소를 변경시키려는 시도가 있을 경우, 이를 저지하여 지속적인 보안상태가 유지되도록 해야할 것이다. 이를 위해, 본 발명에 따른 보안방법에서는 인터럽트 서비스루틴주소 감시단계(S602)가 더 포함될 수 있다.On the other hand, in the process of processing the input data of the PS / 2 keyboard, if there is an attempt to change the interrupt service routine address in the interrupt descriptor table for the purpose of information leakage through a malicious program, it prevents it and maintains a continuous security state. You will have to. To this end, the security method according to the invention may further include an interrupt service routine address monitoring step (S602).

상기 인터럽트 서비스루틴주소 감시단계(S602)를 도 9(도 8에 도시된 인터럽트 서비스루틴 주소감시단계를 구체적으로 좀더 상세히 기재한 플로우차트)를 통해 설명한다.The interrupt service routine address monitoring step S602 will be described with reference to FIG. 9 (a flowchart describing the interrupt service routine address monitoring step shown in FIG. 8 in more detail).

(1) 상기 보안입력드라이버의 주소를 저장하는 보안입력드라이버주소 저장단계(S602a);(1) a security input driver address storing step of storing an address of the security input driver (S602a);

PS/2키보드를 통해 입력되는 입력데이터가 상기 보안용 인터럽트 디스크립터 테이블(132)의 인터럽트 서비스루틴주소에 따라 상기 보안입력드라이버(131)로 전달되는데, 이때의 서비스루틴주소를 저장한다.Input data input through the PS / 2 keyboard is transmitted to the security input driver 131 according to the interrupt service routine address of the security interrupt descriptor table 132, and stores the service routine address at this time.

(2) 상기 인터럽트 디스크립터 테이블의 인터럽트 서비스루틴주소를 저장하는 서비스루틴주소 저장단계(S602b);(2) a service routine address storing step (S602b) for storing an interrupt service routine address of the interrupt descriptor table;

현재 보안용 인터럽트 디스크립터 테이블(132)의 인터럽트 서비스 루틴 영역에 저장된 주소값을 저장한다.The address value stored in the interrupt service routine area of the current security interrupt descriptor table 132 is stored.

(3) 상기 보안입력드라이버주소와 서비스루틴주소를 비교하는 주소비교단계(S602c);(3) an address comparison step (S602c) for comparing the security input driver address with a service routine address;

상기 보안입력드라이버주소 저장단계(S602a)와 상기 서비스루틴주소 저장단계(S602b)의 서비스루틴주소를 비교하여 그 일치여부를 확인한다.The service routine address of the secure input driver address storage step (S602a) and the service routine address storage step (S602b) are compared to check whether they match.

(4) 인터럽트 디스크립터 테이블의 인터럽트 서비스루틴주소를 상기 보안입력드라이버주소로의 변경단계(S602d);(4) changing the interrupt service routine address in the interrupt descriptor table to the secure input driver address (S602d);

상기 주소비교단계(S602c)를 통해 상기 서비스루틴주소가 일치하면 PS/2키보드의 입력데이터 처리를 속행하고, 일치하지 않으면 상기 보안용 인터럽트 디스크립터 테이블(132)의 인터럽트 서비스루틴주소가 보안입력드라이버(131)의 주소와 일치되도록 교체/변경한다.If the service routine address matches through the address comparison step (S602c), processing of input data of the PS / 2 keyboard is continued. If the service routine address does not match, the interrupt service routine address of the security interrupt descriptor table 132 is a security input driver (S602c). Replace / change to match the address of 131).

도 6은 유저영역에서 키보드를 통해 입력되는 입력데이터의 보안을 실시하는 본 발명에 따른 보안시스템의 구성을 도시한 블록도이고, 도 10는 본 발명에 따른 보안용 훅실행단계를 보다 명세한 플로우차트인바 이를 참조하여 설명한다.6 is a block diagram showing the configuration of a security system according to the present invention that secures input data input through a keyboard in a user area, and FIG. 10 is a more detailed flow of the execution of a security hook according to the present invention. The chart will be described with reference to this.

앞서 기술된 본 발명에 따른 보안방법 및 보안시스템은 커널영역(20)에서 이루어지는 키보드보안인 반면, 이하의 보안방법 및 보안시스템은 상기 커널영역(20)에서의 보안방법 및 보안시스템과 더불어 유저영역(30)에서 이루어지는 키보드의 입력데이터 처리를 보안하는 보안방법 및 보안시스템이다.The security method and security system according to the present invention described above is a keyboard security made in the kernel area 20, while the following security methods and security systems are user areas in addition to the security method and security system in the kernel area 20. A security method and a security system for securing the input data processing of the keyboard made in (30).

이미 살펴본 바와 같이, 커널영역(20)에서 보안모듈(100)을 통해 키보드의 입력데이터를 암복호화하여 해당 데이터들이 외부로 유출되는 것을 차단했다. 이후 복호화된 키입력정보를 포함하는 입력데이터가 유저영역(30)에서 서브시스템(31)으로 전달되면, 상기 서브시스템(31)은 응용프로그램(40)으로 당해 입력데이터를 처리/전달하기 위해 메세지큐(32, 33)를 이용하게 된다. 이때, 상기 메세지큐(32, 33)는 현재 실행되고 있는 응용프로그램들로 입력될 데이터들을 총괄하는 시스템메세지큐(32)와 응용프로그램별로 이를 처리하는 스레드메세지큐(33) 등을 포함하게 되며, 키보드를 통해 입력된 데이터들은 상기 메세지큐(32, 33) 등을 통해 순차적으로 응용프로그렘(40)에 전달되는 것이다. 이미 큐방식에 대해서는 앞서 기술한 바 있으므로 여기서는 그 설명을 생략한다.As already seen, the kernel region 20 decrypts the input data of the keyboard through the security module 100 to prevent the corresponding data from leaking to the outside. Then, when the input data including the decrypted key input information is transferred from the user area 30 to the subsystem 31, the subsystem 31 sends a message for processing / delivering the input data to the application program 40. The queues 32 and 33 are used. In this case, the message queues 32 and 33 may include a system message queue 32 which manages data to be input to applications currently being executed and a thread message queue 33 which processes them for each application program. Data input through the keyboard are sequentially transmitted to the application program 40 through the message queues 32 and 33. Since the queue method has already been described above, the description thereof is omitted here.

한편, 운영체제(Window) 기반 입력데이터의 전달은 메세지큐를 통해 응용프로그램(40)으로 순차 전달되며, 연동되는 다른 응용프로그램으로도 당해 입력데이터가 전달될 수 있도록, 입력데이터 전달과정에서 후킹을 시도한다. 물론, 상기 후킹의 경우에는 운영체제에서 그 필요성에 의해 필수적으로 수행되므로 보안에 대해 문제 시 될 것은 없다. 하지만, 악의적인 프로그램을 통해 필수적이지 못한 후킹이 이루어질 수 있으며, 상기 후킹은 입력데이터를 빼낼 수 있는 기능이므로 입력데이터가 사용자에게 인증받지 못한 상태로 유출될 수 있다.On the other hand, the operating system (Window) -based input data is sequentially delivered to the application program 40 through the message queue, and attempts to hook in the input data delivery process so that the input data can also be transferred to other application programs to work with. do. Of course, in the case of the hooking is essentially performed by the need in the operating system there is no problem with security. However, hooking may not be essential through a malicious program. Since the hooking is a function of extracting input data, the input data may be leaked without being authenticated by the user.

본 발명에서는 훅모듈(200)이 더 포함되어서, 상기 악의적인 프로그램을 통해 설치된 훅프로시져의 활동을 차단하고 이를 통해 사용자가 알지 못하는 사이 키보드를 통해 입력되고 있는 입력데이터가 외부로 유출되는 것을 방지할 수 있다.In the present invention, the hook module 200 is further included to block the activity of the hook procedure installed through the malicious program, thereby preventing the input data being input through the keyboard from leaking to the outside without the user knowing it. Can be.

본 발명에 따른 보안시스템에서 상기 훅모듈(200)은, 보안대상 응용프로그램의 실행으로 프로세스 또는 스레드가 생성되면, 상기 응용프로그램으로 전달되는 키입력정보가 포함된 메세지를 최초 후킹하고 차순위 후킹은 차단하는 전역훅프로시져를 구동시키는 한편, 상기 프로세스 또는 스레드가 소멸되면 실행 중인 전역훅을 제거하는 시스템훅모듈(210); 상기 응용프로그램에 허용된 타 전역훅의 내용을 확인하여 차순위 후킹의 허용여부를 결정하는 훅허용프로그램 관리모듈(230); 상기 응용프로그램에 허용된 타 전역훅에 대한 데이터를 포함하면서 상기 훅허용프로그램 관리모듈(230)의 검색/요청으로 상기 데이터를 전송하는 훅허용프로그램리스트 저장모듈(260); 및, 상기 보안용 전역훅의 활성화 상태에서 키보드와 관련된 타 전 역훅이 새로히 시도될 경우, 상기 타 전역훅설치 API를 리턴시켜 타 전역훅의 실행을 차단하는 훅설치감시모듈(240)을 포함한다.In the security system according to the present invention, the hook module 200, when a process or a thread is generated by the execution of a security target application program, first hooks a message including key input information delivered to the application program and blocks next-order hooking. A system hook module 210 for driving a global hook procedure and removing a global hook that is being executed when the process or thread is destroyed; A hook allowable program management module 230 for determining whether to allow next order hooking by checking contents of other global hooks allowed in the application program; A hook allowable program list storage module 260 including data about other global hooks allowed in the application program and transmitting the data to a search / request of the hook allowable program management module 230; And a hook installation monitoring module 240 which blocks the execution of another global hook by returning the other global hook installation API when a new global hook related to the keyboard is newly attempted in the security global hook activation state. .

상술된 보안시스템의 구성요소를 참조하여 본 발명에 따른 보안방법을 순차적으로 설명한다.The security method according to the present invention will be described sequentially with reference to the components of the security system described above.

(1) 응용프로그램 실행과 함께 생성되는 프로세스 또는 스레드에 대한 후킹을 실행하는 보안용 전역훅 활성화단계(S1110);(1) activating a global hook for security that executes hooking for a process or thread generated with the execution of an application program (S1110);

상기 시스템훅모듈(210)은 보안대상 응용프로그램의 실행파일 확장자인 .EXE 내부에 CALLBACK 함수를 두고 각종 HOOK을 수행하게 된다. 즉, 상기 보안대상 응용프로그램이 실행되면 당해 응용프로그램의 스레드가 발생되고 상기 훅모듈(200)은 WH_CBT 전역훅을 수행시켜 현재 컴퓨터 내에 수행 중인 모든 프로세스와 스레드에 대한 WH_KEYBOARD, WH_GETMESSAGE, WH_CALLWNDPROC, WH_CBT 훅을 수행하도록 한다. 물론, 훅체인의 특성 상 가장 늦게 실행되는 훅프로시져가 최우선적으로 동작되므로, 상기 훅모듈(200)에 의해 설치되는 훅은 상기 보안대상 응용프로그램이 실행되면서 기존에 실행되고 있던 훅프로시져보다 우선적으로 작동하게 된다.The system hook module 210 executes various HOOKs by placing a CALLBACK function inside .EXE, which is an executable file extension of a security target application program. That is, when the security target application program is executed, a thread of the application program is generated, and the hook module 200 executes a WH_CBT global hook, so that WH_KEYBOARD, WH_GETMESSAGE, WH_CALLWNDPROC, and WH_CBT hooks for all processes and threads currently running in the computer. To do this. Of course, the hook procedure that is executed at the latest due to the nature of the hook chain is operated first and foremost, so that the hook installed by the hook module 200 has priority over the hook procedure previously executed while the security target application program is executed. It works.

(2) 해당 응용프로그램에 허용된 타 전역훅의 내용을 확인하는 허용전역훅 확인단계(S1130);(2) allow global hook confirmation step (S1130) to check the contents of other global hooks allowed for the application;

앞서 설명한 바와 같이, 응용프로그램으로의 데이터 전달과정 중 운영체제에서 필수적으로 이루어져야할 훅이 있다. 따라서, 상기 훅모듈(200)에서 보안대상 응용프로그램의 실행과 함께 동작되는 보안용 전역훅이 필수적으로 작동되어야 할 전역훅의 활동을 차단함으로서 응용프로그램의 정상적인 수행이 이루어지지 못할 수도 있다. 따라서, 상기 훅허용프로그램관리모듈(230)은 해당 응용프로그램에 필수적으로 이루어져야 할 전역훅의 리스트를 상기 훅허용프로그램리스트 저장모듈(260)에서 검색하여서 상기 리스트에 포함되지 않은 전역훅이 훅체인 내에 있음이 확인될 경우 이를 사용자에게 알려주게 된다. 물론 사용자는 인가되지 않은 상기 전역훅을 찾아 그 기능을 상실시키거나 삭제시키게 된다.As described above, there is a hook that must be made in the operating system during the data transfer process to the application program. Thus, the hook module 200 may not be able to perform a normal execution of the application by blocking the activity of the global hook, which must be operated by the security global hook operating with the execution of the security target application program. Accordingly, the hook allowable program management module 230 searches the hook allowable program list storage module 260 for a list of global hooks that are essential to the corresponding application program, so that a global hook not included in the list is included in the hook chain. If it is confirmed, it will be notified to the user. Of course, the user finds the unauthorized global hook and loses or deletes its function.

일반적으로, 훅모듈(200)에 의해 실행되는 훅프로시져는 키보드의 조작으로 입력되어지는 입력데이터만을 보안하게 되므로 직접적으로 감시되는 전역훅은 키보드를 통해 입력되는 데이터를 훅킹하려는 훅에 한정될 것이다.In general, since the hook procedure executed by the hook module 200 secures only the input data input by the operation of the keyboard, the global hook directly monitored will be limited to the hook to hook the data input through the keyboard.

(3) 상기 응용프로그램으로 전달되는 키입력정보가 포함된 메세지를 후킹하는 키입력정보 후킹단계(S1140);(3) a key input information hooking step of hooking a message including key input information transmitted to the application program (S1140);

사용자가 키보드를 조작하여 입력데이터를 응용프로그램으로 전달하는 과정에서 훅모듈(200)에 의해 설치된 전역훅은 상기 입력데이터를 다른 훅프로시져에 비해 최우선적으로 훅킹한다.The global hook installed by the hook module 200 in the process of transmitting the input data to the application program by the user operating the keyboard hooks the input data as compared with other hook procedures.

(4) 상기 보안용 전역훅 이외에 차순위 후킹이 이루어지지 않도록, 다음후킹진행 API를 호출하지 않는 다음훅 무력화단계(S1150);(4) disabling the next hook that does not call the next hooking progress API such that the next hooking is not made in addition to the security global hook (S1150);

상기 후킹단계(S1140)에서 훅모듈(200)을 통해 설치된 보안용 훅프로시져에 의해 최초로 훅킹된 입력데이터가 차순위 훅프로시져에 의해 후킹되지 못하도록 훅체인의 연속성을 깨뜨린다. 일반적으로, 상기 후킹이라 함은 메세지큐를 통해 응용프로그램으로 전달되는 데이터를 중간에서 잠시 끌어내어 볼 수 있도록 하는 것이다. 이때, 응용프로그램으로 전달되는 과정에서 데이터를 끌어내는 것은 순차적 으로 이루어지며, 우선적으로 끌어낸 훅프로시져는 다음 훅프로시져에게 자신의 동작이 종료되었음을 알리는 신호를 주게 된다. 이렇게 신호가 순차적으로 연속해서 이루어지므로, 다수의 훅프로시져는 그 작동모습에 있어 일렬로 배열된 체인의 모습을 띠게 된다. 본 발명에 따른 보안방법에서는 보안용 훅프로시져가 체인의 최우선에 위치되면서 키보드를 통해 입력되는 데이터를 최초로 끌어내어 보고 이후에 동작되는 훅프로시져에 대해서는 신호를 주지 않아 동작이 이루어지지 못하도록 하는 것이다. 따라서, 기존에 악의적인 프로그램에 의해 기 설치되었던 훅프로시져는 그 동작이 이루어지지 않아 데이터가 유출되는 것을 방지할 수 있는 것이다.In the hooking step (S1140), the continuity of the hook chain is broken so that the input data first hooked by the security hook procedure installed through the hook module 200 is not hooked by the next order hook procedure. In general, the hooking means that the data delivered to the application through the message queue can be briefly drawn in the middle. At this time, the data is pulled out in the process of being delivered to the application program in sequence, and the hook procedure that is drawn first gives a signal indicating that its operation is finished to the next hook procedure. Since the signals are sequentially and sequentially, many hook procedures have the shape of chains arranged in a line in operation. In the security method according to the present invention, the security hook procedure is located at the top of the chain and draws out the data input through the keyboard for the first time, and thus does not give a signal to the hook procedure operated afterwards so that the operation is not performed. Therefore, the hook procedure, which was previously installed by a malicious program, can not prevent the data from being leaked because its operation is not performed.

이를 위해, 훅모듈(200)은 훅의 CALLBACK 함수에서 차순위 훅프로시져의 작동을 지시하는 API인 CallNextHookeX() 함수를 호출하지 않고 0을 리턴하게 하여 키보드의 입력데이터와 관련된 차순위 훅프로시져의 작동이 이루어지지 못하도록 하는 것이다.To this end, the hook module 200 returns 0 without calling the CallNextHookeX () API, which instructs the operation of the next-order hook procedure in the CALLBACK function of the hook, to operate the next-order hook procedure related to the input data of the keyboard. It is not to be supported.

WH_KEYBOARD, WH_GETMESSAGE, WH_CALLWNDPROC, WH_CBT에 대한 CALLBACK 함수에서 CallNextHookeX() 함수를 호출하지 않으면, 상기 훅 이후의 다른 WH_KEYBOARD, WH_GETMESSAGE, WH_CALLWNDPROC, WH_CBT은 동작하지 않게 된다.If the CallNextHookeX () function is not called in the CALLBACK function for WH_KEYBOARD, WH_GETMESSAGE, WH_CALLWNDPROC, and WH_CBT, other WH_KEYBOARD, WH_GETMESSAGE, WH_CALLWNDPROC, and WH_CBT after the hook will not work.

(5) 상기 프로세스 또는 스레드가 소멸되면 실행중인 상기 보안용 전역훅을 제거하는 훅제거단계(S1170);(5) a hook removal step (S1170) for removing the security global hook being executed when the process or thread is destroyed;

보안대상 응용프로그램이 종료되면 더 이상의 키보드보안이 불필요하므로, 컴퓨터의 처리속도를 높이기 위해 당해 훅들은 제거된다.Since the keyboard security is no longer needed when the application to be secured is terminated, the hooks are removed to speed up the processing of the computer.

상술된 보안방법에 다음 과정이 더 포함될 수 있다.The following process may be further included in the above-described security method.

(1) 상기 보안용 전역훅의 활성화 상태에서 키보드와 관련된 타 전역훅이 새로히 시도될 경우, 상기 타 전역훅설치 API를 리턴시켜 타 전역훅의 실행을 차단하는 전역훅시도 감시단계(S1160);(1) a global hook attempt monitoring step (S1160) to block execution of another global hook by returning the other global hook installation API when a new global hook associated with a keyboard is newly attempted in the active global hook for security;

현재 보안용 전역훅이 활성화 된 상태에서 새로운 전역훅이 작동을 시도할 경우, 상술된 방법만으로는 키보드 보안을 완전히 할 수 없다. 따라서, 새로히 작동을 시도하는 전역훅에 대해 지속적인 감시가 필요하다. 이를 위해, 상기 훅설치감시모듈(240)은 운영체제에서 발생되는 프로세스 및 스레드를 실시간으로 확인하는 한편 전역훅의 생성 및 제거를 확인하여 키보드를 통해 입력되는 데이터를 훅킹하려는 전역훅의 발생을 감지한다. If a new global hook attempts to operate with the current security global hook enabled, keyboard security cannot be fully secured using the methods described above. Therefore, constant monitoring of global hooks attempting to work is required. To this end, the hook installation monitoring module 240 checks the processes and threads generated in the operating system in real time and detects the generation and removal of global hooks to detect the occurrence of global hooks for hooking data input through the keyboard. .

상기 훅설치감시모듈(240)은 SetWindowsHookEx() 함수에 대해 API HOOK을 수행하여 키보드 관련 전역훅을 시도하는 프로그램이 있을 경우 이를 감지하여 사용자에게 알려주고, 사용자의 결정에 따라 당해 전역훅의 동작을 혀용 또는 차단작업이 이루어진다. The hook installation monitoring module 240 performs API HOOK on the SetWindowsHookEx () function to detect and notify the user when there is a program that attempts a global hook related to the keyboard, and uses the operation of the global hook according to the user's decision. Or a blocking operation is made.

상술된 내용의 경우, 운영체제 기반 컴퓨터 내에 활성화되는 프로세스 또는 스레드에 대해 훅이 이루어지도록 전역훅프로시져를 설치하게 된다. 따라서, 응용프로그램의 종류에 관계없이 응용프로그램이 실행되면 본 발명에 따른 보안시스템은 구동된다. 하지만, 이외에도, 보안대상 응용프로그램을 선택하여 당해 응용프로그램이 실행될 경우에만 본 발명에 따른 보안시스템이 작동되도록 할 수도 있다.In the above description, the global hook procedure is installed so that a hook is made to a process or a thread that is activated in an OS-based computer. Therefore, when the application program is executed regardless of the type of the application program, the security system according to the present invention is driven. However, in addition to this, it is also possible to select a security target application program to operate the security system according to the present invention only when the application program is executed.

이를 위해 다음의 과정이 더 포함될 수 있다.To this end, the following process may be further included.

(1) 지정된 응용프로그램만이 키보드 보안의 대상이 되도록 해당 응용프로그 램의 리스트를 생성하고, 상기 키입력정보 후킹단계 실시 전 상기 리스트를 검색하여 키입력정보의 후킹을 결정하는 대상프로그램 확인단계(S1120);(1) A target program checking step of generating a list of the corresponding application programs so that only the designated application program is the target of keyboard security, and determining the hooking of the key input information by searching the list before performing the key input information hooking step ( S1120);

상술된 바와 같이, 보안대상 응용프로그램에 대한 리스트를 보안대상프로그램리스트 저장모듈(250)에 저장시켜두면, 보안대상프로그램 관리모듈(220)은 현재 수행되고 있는 프로세스와 스레드를 확인하여 실행되는 응용프로그램을 상기 보안대상프로그램리스트 저장모듈(250)에서 검색하여 보안을 위한 훅프로시져의 동작을 결정하게 된다.As described above, when the list of the security target application program is stored in the security target program list storage module 250, the security target program management module 220 checks the processes and threads that are currently being executed and executes the application program. The security target program list storage module 250 searches for the operation of the hook procedure for security.

이상 상기와 같은 본 발명에 따르면, USB키보드 또는 PS/2키보드에 관계없이 키보드를 통해 컴퓨터로 입력되고 있는 데이터의 보안을 커널영역 또는 유저영역에 상관없이 로컬단위에서 광범위하게 실시할 수 있더,According to the present invention as described above, regardless of the USB keyboard or PS / 2 keyboard, security of the data input to the computer through the keyboard can be widely implemented in the local unit irrespective of the kernel area or the user area,

Claims (16)

키보드의 입력데이터 보안모듈 활성화단계;Activating the input data security module of the keyboard; 상기 보안모듈로 키보드의 입력데이터가 수신되는 입력데이터 수신단계;An input data reception step of receiving input data of a keyboard by the security module; 상기 입력데이터로부터 사용자의 키조작으로 발생된 키입력정보를 검출하는 키입력정보 검출단계;A key input information detecting step of detecting key input information generated by a user's key operation from the input data; 상기 검출단계를 통해 검출/처리된 키입력정보를 암호화하는 키입력정보 암호화단계;A key input information encryption step of encrypting the key input information detected / processed through the detection step; 운영체제가 상기 입력데이터를 인식하지 못하도록, 커널영역에 남아 있는 상기 입력데이터를 삭제하는 입력데이터 삭제단계;An input data deletion step of deleting the input data remaining in a kernel area so that an operating system does not recognize the input data; 상기 암호화단계에서 암호화된 키입력정보를 운영체제가 처리할 수 있도록 복호화하는 키입력정보 복호화단계; 및A key input information decrypting step of decrypting the key input information encrypted in the encryption step so that an operating system can process the key input information; And 복호화된 키입력정보가 그 처리를 위해 해당 응용프로그램으로 전달되는 과정 중, 상기 키입력정보에 있어서 이를 최초 후킹하고 차순위 후킹은 일어나지 않도록 하는 훅프로시져가 실행되는 보안용 훅실행단계;A security hook execution step of executing a hook procedure for firstly hooking the key input information in a process of transmitting the decrypted key input information to a corresponding application program for processing the second key and preventing a second order hooking from occurring; 가 포함된 것을 특징으로 하는 키보드로 입력되는 데이터의 보안방법.Security method of data input by the keyboard comprising a. 제 1 항에 있어서,The method of claim 1, 상기 보안모듈에 수신되는 입력데이터가 USB키보드로부터 발생된 것일 경우, 상기 키입력검출단계를 통해 검출된 키입력정보를 발생순서에 따라 정렬하는 키입 력정보 파싱단계;A key input information parsing step of arranging the key input information detected through the key input detection step according to the generation order when the input data received by the security module is generated from the USB keyboard; 가 더 포함된 것을 특징으로 하는 키보드로 입력되는 데이터의 보안방법.Security method of data input by the keyboard, characterized in that it further comprises. 제 2 항에 있어서, 상기 보안모듈 활성화단계는The method of claim 2, wherein the security module activation step USB키보드의 초기입력데이터를 통해 당해 USB키보드의 레지스트리 등록을 확인하는 USB키보드확인단계;A USB keyboard checking step of confirming registry registration of the USB keyboard through initial input data of the USB keyboard; 상기 USB키보드확인단계에서 확인된 USB키보드의 레지스트리에 따라 상기 보안모듈에 포함된 USB필터를 활성화하는 필터활성화단계;A filter activation step of activating a USB filter included in the security module according to the registry of the USB keyboard identified in the USB keyboard verification step; 가 더 포함된 것을 특징으로 하는 키보드로 입력되는 데이터의 보안방법.Security method of data input by the keyboard, characterized in that it further comprises. 제 3 항에 있어서,The method of claim 3, wherein 상기 USB키보드확인단계를 통해 당해 USB키보드의 하드웨어ID가 등록되지 않은 것으로 확인될 경우, 상기 USB키보드에 대응하는 USB필터의 설치를 결정하는 USB필터설치 결정단계;A USB filter installation determining step of determining installation of a USB filter corresponding to the USB keyboard when it is determined that the hardware ID of the USB keyboard is not registered through the USB keyboard checking step; 상기 새로운 USB키보드의 키입력정보를 보안하는 USB필터가 설치되는 필터설치단계;A filter installation step of installing a USB filter that secures key input information of the new USB keyboard; 가 더 포함된 것을 특징으로 하는 키보드로 입력되는 데이터의 보안방법.Security method of data input by the keyboard, characterized in that it further comprises. 제 4 항에 있어서, 상기 필터설치단계는The method of claim 4, wherein the filter installation step 운영체제 레지스트리에 등록된 HID디바이스의 하드웨어ID가 검색되는 HID디 바이스 검색단계;HID device search step of searching for the hardware ID of the HID device registered in the operating system registry; 상기 하드웨어ID에서 키보드로 분류된 하드웨어ID가 검색되는 키보드 검색단계;A keyboard search step of searching for a hardware ID classified as a keyboard in the hardware ID; 운영체제 레지스트리에 등록된 USB디바이스의 하드웨어ID가 검색되는 USB디바이스 검색단계;A USB device searching step of searching for a hardware ID of a USB device registered in an operating system registry; 상기 키보드 검색단계와 상기 USB디바이스 검색단계를 통해 각각 검색된 하드웨어ID에서 상호 매칭되는 하드웨어ID가 확인되는 매칭ID확인단계;A matching ID checking step of checking hardware IDs matched with the hardware IDs searched through the keyboard searching step and the USB device searching step; 상기 매칭ID검색단계를 통해 검색된 해당 하드웨어ID의 디바이스 레지스트리에 USB필터가 등록되는 필터등록단계;A filter registration step of registering a USB filter in the device registry of the corresponding hardware ID searched through the matching ID search step; 가 더 포함된 것을 특징으로 하는 키보드로 입력되는 데이터의 보안방법.Security method of data input by the keyboard, characterized in that it further comprises. 제 1 항 또는 제 2 항에 있어서, The method according to claim 1 or 2, 상기 보안모듈 활성화단계는, 보안대상 응용프로그램의 실행파일과 연동되어 서 당해 응용프로그램의 실행과 더불어 이루어지고;The security module activation step is made in conjunction with the execution of the application program in conjunction with the executable file of the security target application program; 키보드의 조작을 통해 발생된 인터럽트를 수신하여 인터럽트 디스크립터 테이블의 인터럽트 서비스루틴주소를 교체하는 인터럽트 서비스루틴 교체단계가 더 포함되며;An interrupt service routine replacement step of receiving an interrupt generated through operation of the keyboard to replace the interrupt service routine address of the interrupt descriptor table; 상기 키입력정보 암호화단계는, 상기 인터럽트 서비스루틴교체단계를 통해 교체된 서비스루틴주소에 따라 상기 키입력정보가 전달되는 보안입력드라이버에서 이루어지는 것;The key input information encryption step is performed by a security input driver through which the key input information is transmitted according to the service routine address replaced by the interrupt service routine replacement step; 을 특징으로 하는 키보드로 입력되는 데이터의 보안방법.Security method of data input by the keyboard characterized in that. 제 6 항에 있어서,The method of claim 6, 상기 보안입력드라이버의 주소를 저장하는 보안입력드라이버주소 저장단계;A secure input driver address storing step of storing an address of the secure input driver; 상기 인터럽트 디스크립터 테이블의 인터럽트 서비스루틴주소를 저장하는 서비스루틴주소 저장단계;A service routine address storing step of storing an interrupt service routine address of the interrupt descriptor table; 상기 보안입력드라이버주소와 서비스루틴주소를 비교하는 주소비교단계;An address comparison step of comparing the security input driver address with a service routine address; 가 더 포함된 것을 특징으로 하는 키보드로 입력되는 데이터의 보안방법.Security method of data input by the keyboard, characterized in that it further comprises. 제 7 항에 있어서,The method of claim 7, wherein 상기 주소비교단계 이후, 보안입력드라이버주소와 인터럽트 서비스루틴주소가 서로 다를 경우 상기 인터럽트 디스크립터 테이블의 인터럽트 서비스루틴주소를 상기 보안입력드라이버주소와 일치되도록 교체하는 주소변경단계;An address changing step of replacing an interrupt service routine address of the interrupt descriptor table with the security input driver address when the security input driver address and the interrupt service routine address are different from each other after the address comparing step; 가 더 포함된 것을 특징으로 하는 키보드로 입력되는 데이터의 보안방법.Security method of data input by the keyboard, characterized in that it further comprises. 제 1 항 내지 제 5 항, 제 7 항 또는 제 8 항 중 어느 한 항에 있어서, 상기 보안용 훅실행단계는9. The security hook execution step according to any one of claims 1 to 5, 7 or 8, wherein 응용프로그램 실행과 함께 생성되는 프로세스 또는 스레드에 대한 후킹을 실행하는 보안용 전역훅 활성화단계Activation of global hooks for security that hooks to processes or threads created with the application execution 해당 응용프로그램에 허용된 타 전역훅의 내용을 확인하는 허용전역훅 확인 단계;A step of allowing global hooks to check the contents of other global hooks allowed to the corresponding application; 상기 응용프로그램으로 전달되는 키입력정보가 포함된 메세지를 후킹하는 키입력정보 후킹단계;A key input information hooking step of hooking a message including key input information transmitted to the application program; 상기 보안용 전역훅 이외에 차순위 후킹이 이루어지지 않도록, 다음후킹진행 API를 호출하지 않는 다음훅 무력화단계; 및Next hook neutralization step not to call the next hook progress API, so that next-order hooking is not made other than the security global hook; And 상기 프로세스 또는 스레드가 소멸되면 실행중인 상기 보안용 전역훅을 제거하는 훅제거단계;A hook removal step of removing the security global hook being executed when the process or thread is destroyed; 를 포함하는 것을 특징으로 하는 키보드로 입력되는 데이터의 보안방법.Security method of the data input by the keyboard comprising a. 제 9 항에 있어서,The method of claim 9, 상기 보안용 전역훅의 활성화 상태에서 키보드와 관련된 타 전역훅이 새로히 시도될 경우, 상기 타 전역훅설치 API를 리턴시켜 타 전역훅의 실행을 차단하는 전역훅시도 감시단계가 더 포함된 것을 특징으로 하는 키보드로 입력되는 데이터의 보안방법.If another global hook related to the keyboard is newly attempted in the security global hook activation state, a global hook attempt monitoring step of returning the other global hook installation API to block execution of another global hook is further included. How to secure the data entered by the keyboard. 제 9 항에 있어서,The method of claim 9, 지정된 응용프로그램만이 키보드 보안의 대상이 되도록 해당 응용프로그램의 리스트를 생성하고, 상기 키입력정보 후킹단계 실시 전 상기 리스트를 검색하여 키입력정보의 후킹을 결정하는 대상프로그램 확인단계가 더 포함된 것을 특징으로 하는 키보드로 입력되는 데이터의 보안방법.And a target program check step of generating a list of the corresponding application programs so that only the designated application programs are subject to keyboard security, and determining the hooking of the key input information by searching the list before performing the key input information hooking step. Security method of data input by the keyboard characterized in that. 커널영역에서, 키보드를 통해 최초로 입력되는 신호를 받게되는 키보드하드웨어로부터 입력데이터를 받아 상기 입력데이터에 포함된 키입력정보를 암/복호화하는 보안모듈; 및In the kernel area, the security module for receiving the input data from the keyboard hardware receives the first signal input through the keyboard to encrypt / decrypt the key input information contained in the input data; And 운영체제의 서브시스템에 의해 상기 키입력정보가 메세지큐를 거쳐 응용프로그램으로의 전달이 진행되는 유저영역에서, 상기 키입력정보의 전달과정 중 상기 키입력정보를 최우선 후킹하여 차순위 후킹이 이루어지지 않도록 차단하는 훅모듈;In a user area where the key input information is delivered to an application program through a message queue by a subsystem of an operating system, the key input information is first hooked during the delivery of the key input information to prevent next hooking. A hook module; 로 이루어진 것을 특징으로 하는 키보드로 입력되는 데이터의 보안시스템.Security system of data input by the keyboard, characterized in that consisting of. 제 12 항에 있어서, 상기 보안모듈은The method of claim 12, wherein the security module 키조작으로 발생된 입력데이터 중 키에 대한 키입력정보를 검출하는 키입력정보검출모듈, 상기 키입력정보를 그 발생순서에 따라 정렬시키는 파싱모듈, 정렬된 상기 키입력정보를 암호화시키는 암호화모듈 및, 상기 운영체제가 상기 입력데이터를 인식하지 못하도록 처리하는 입력데이터삭제모듈을 포함하는 USB필터; A key input information detection module for detecting key input information of a key among input data generated by a key operation, a parsing module for arranging the key input information according to the generation order, an encryption module for encrypting the sorted key input information, and And a USB filter including an input data deletion module for processing the operating system not to recognize the input data. 다수의 상기 USB필터들과 운영체제 간의 통신을 중개하는 관리모듈이 포함된 USB필터드라이버; 및A USB filter driver including a management module for mediating communication between the plurality of USB filters and an operating system; And 상기 암호화모듈을 통해 암호화된 키입력정보를 복호화하는 복호화모듈이 포함된 드라이버관리모듈;A driver management module including a decryption module for decrypting the key input information encrypted by the encryption module; 이 포함된 것을 특징으로 하는 키보드로 입력되는 데이터의 보안시스템.Security system of data input by the keyboard comprising a. 제 13 항에 있어서, 상기 USB필터드라이버는The method of claim 13, wherein the USB filter driver 상기 본체와 연결된 USB키보드의 하드웨어ID와 이에 대응하는 상기 USB필터를 카운팅하여 새로운 USB키보드의 설치여부를 확인하는 필터확인모듈;A filter check module for checking whether a new USB keyboard is installed by counting a hardware ID of the USB keyboard connected to the main body and the corresponding USB filter; 새로운 USB키보드에 대응하는 USB필터를 설치하는 필터설치모듈;A filter installation module for installing a USB filter corresponding to the new USB keyboard; 이 더 포함된 것을 특징으로 하는 키보드로 입력되는 데이터의 보안시스템.Security system for data input by the keyboard, characterized in that further comprises. 제 12 항에 있어서, 상기 보안모듈은The method of claim 12, wherein the security module 상기 키입력정보를 전달받아 암호화하는 보안입력드라이버;A security input driver for receiving and encrypting the key input information; 보안대상 응용프로그램이 실행되면, 상기 키보드하드웨어로부터 키보드 조작으로 발생된 인터럽트에 의해 인터럽트 서비스루틴을 실행하고, 당해 키입력정보를 암호화하는 상기 보안입력드라이버의 주소를 교체하는 보안용 인터럽트 디스클립터 테이블; 및When the security target application is executed, the interrupt interrupter table for executing an interrupt service routine by an interrupt generated by keyboard operation from the keyboard hardware and replacing the address of the security input driver encrypting the key input information. ; And 상기 보안입력드라이버를 통해 암호화된 키입력정보를 복호화하는 복호화모듈이 포함된 드라이버관리모듈;A driver management module including a decryption module for decrypting the key input information encrypted by the security input driver; 이 포함된 것을 특징으로 하는 키보드로 입력되는 데이터의 보안시스템.Security system of data input by the keyboard comprising a. 제 12 항 내지 제 15 항 중 어느 한 항에 있어서, 상기 훅모듈은The method of claim 12, wherein the hook module is 보안대상 응용프로그램의 실행으로 프로세스 또는 스레드가 생성되면, 상기 응용프로그램으로 전달되는 키입력정보가 포함된 메세지를 최초 후킹하고 차순위 후킹은 차단하는 전역훅프로시져를 구동시키는 한편, 상기 프로세스 또는 스레드가 소멸되면 실행 중인 전역훅을 제거하는 시스템훅모듈;When the process or thread is created by the execution of the secured application, the process or thread is destroyed while running a global hook procedure that first hooks a message containing key input information delivered to the application and blocks next-order hooking. System hook module for removing the running global hook; 상기 응용프로그램에 허용된 타 전역훅의 내용을 확인하여 차순위 후킹의 허용여부를 결정하는 훅허용프로그램 관리모듈; A hook permission program management module for determining whether to allow next-order hooking by checking contents of other global hooks allowed in the application program; 상기 응용프로그램에 허용된 타 전역훅에 대한 데이터를 포함하면서 상기 훅허용프로그램 관리모듈의 검색/요청으로 상기 데이터를 전송하는 훅허용프로그램리스트 저장모듈; 및A hook allowable program list storage module including data about other global hooks allowed in the application program and transmitting the data to a search / request of the hook allowable program management module; And 상기 보안용 전역훅의 활성화 상태에서 키보드와 관련된 타 전역훅이 새로히 시도될 경우, 상기 타 전역훅설치 API를 리턴시켜 타 전역훅의 실행을 차단하는 훅설치감시모듈;A hook installation monitoring module that blocks the execution of another global hook by returning the other global hook installation API when a new global hook related to the keyboard is newly attempted in the active global hook for security; 이 포함된 것을 특징으로 하는 키보드로 입력되는 데이터의 보안시스템.Security system of data input by the keyboard comprising a.
KR1020040089873A 2004-11-05 2004-11-05 Guarding method for input data by keyboard and guarding system KR100549645B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040089873A KR100549645B1 (en) 2004-11-05 2004-11-05 Guarding method for input data by keyboard and guarding system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040089873A KR100549645B1 (en) 2004-11-05 2004-11-05 Guarding method for input data by keyboard and guarding system

Publications (1)

Publication Number Publication Date
KR100549645B1 true KR100549645B1 (en) 2006-02-06

Family

ID=37178664

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040089873A KR100549645B1 (en) 2004-11-05 2004-11-05 Guarding method for input data by keyboard and guarding system

Country Status (1)

Country Link
KR (1) KR100549645B1 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008048035A1 (en) * 2006-10-16 2008-04-24 Kings Information & Network Apparatus and method for preservation of usb keyboard
WO2009017378A2 (en) * 2007-07-31 2009-02-05 Ahnlab, Inc. Method for generating data of keyboard and apparatus thereof
WO2009014402A3 (en) * 2007-07-25 2009-04-02 Ahnlab Inc Method of protecting input/output packet of usb device and apparatus thereof
WO2009045059A2 (en) * 2007-10-02 2009-04-09 Softcamp Co., Ltd Security method of keyboard input by directly controling the keyboard controler
KR100952644B1 (en) * 2009-04-17 2010-04-13 주식회사 잉카인터넷 Security system and method of keyboard input data
KR100999022B1 (en) 2005-01-14 2010-12-09 주식회사 하우리 Apparatus and method for protecting computer sysytem against hacking, and medium recorded with the program thereof
WO2011019167A2 (en) * 2009-08-10 2011-02-17 주식회사 안철수연구소 Method and apparatus for protecting the security of input data from a bluetooth device
KR101473633B1 (en) 2007-07-24 2014-12-17 쥬키 가부시키가이샤 Control device
KR20160077938A (en) 2014-12-24 2016-07-04 소프트캠프(주) System and method for securing input-data by keyboard based on network
CN117389421A (en) * 2023-12-07 2024-01-12 浙江网商银行股份有限公司 Trusted access processing method and device, storage medium and electronic equipment

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100999022B1 (en) 2005-01-14 2010-12-09 주식회사 하우리 Apparatus and method for protecting computer sysytem against hacking, and medium recorded with the program thereof
KR100861104B1 (en) * 2006-10-16 2008-09-30 킹스정보통신(주) Apparatus and method for preservation of usb keyboard
WO2008048035A1 (en) * 2006-10-16 2008-04-24 Kings Information & Network Apparatus and method for preservation of usb keyboard
KR101473633B1 (en) 2007-07-24 2014-12-17 쥬키 가부시키가이샤 Control device
US8230127B2 (en) 2007-07-25 2012-07-24 Anhlab, Inc. Method of protecting input/output packet of USB device and apparatus thereof
WO2009014402A3 (en) * 2007-07-25 2009-04-02 Ahnlab Inc Method of protecting input/output packet of usb device and apparatus thereof
WO2009017378A2 (en) * 2007-07-31 2009-02-05 Ahnlab, Inc. Method for generating data of keyboard and apparatus thereof
WO2009017378A3 (en) * 2007-07-31 2009-04-16 Ahnlab Inc Method for generating data of keyboard and apparatus thereof
WO2009045059A2 (en) * 2007-10-02 2009-04-09 Softcamp Co., Ltd Security method of keyboard input by directly controling the keyboard controler
WO2009045059A3 (en) * 2007-10-02 2009-05-22 Softcamp Co Ltd Security method of keyboard input by directly controling the keyboard controler
KR100909891B1 (en) 2007-10-02 2009-07-31 소프트캠프(주) Encode processing method of the Keyboard input data for security in kernel
US8340290B2 (en) 2007-10-02 2012-12-25 Softcamp Co., Ltd. Security method of keyboard input directly controlling the keyboard controller
KR100952644B1 (en) * 2009-04-17 2010-04-13 주식회사 잉카인터넷 Security system and method of keyboard input data
WO2010120055A3 (en) * 2009-04-17 2010-12-23 (주)잉카인터넷 System and method for the security of keyboard input data
WO2010120055A2 (en) * 2009-04-17 2010-10-21 (주)잉카인터넷 System and method for the security of keyboard input data
WO2011019167A3 (en) * 2009-08-10 2011-05-26 주식회사 안철수연구소 Method and apparatus for protecting the security of input data from a bluetooth device
WO2011019167A2 (en) * 2009-08-10 2011-02-17 주식회사 안철수연구소 Method and apparatus for protecting the security of input data from a bluetooth device
KR20160077938A (en) 2014-12-24 2016-07-04 소프트캠프(주) System and method for securing input-data by keyboard based on network
CN117389421A (en) * 2023-12-07 2024-01-12 浙江网商银行股份有限公司 Trusted access processing method and device, storage medium and electronic equipment

Similar Documents

Publication Publication Date Title
CN110998582B (en) Secure storage device and computer security method
US8838812B2 (en) Network security enhancement methods, apparatuses, system, media, signals and computer programs
EP1745343B1 (en) A generic framework for runtime interception and execution control of interpreted languages
KR100861104B1 (en) Apparatus and method for preservation of usb keyboard
CN108475217A (en) System and method for virtual machine of auditing
CN107851153A (en) Use asynchronous abnormal computer safety system and the method for testing oneself
EP2388726B1 (en) Detection of hidden objects in a computer system
CN101488092A (en) System and method to update device driver or firmware using a hypervisor environment without system shutdown
EP3182325B1 (en) Input peripheral device security
KR101516093B1 (en) Out-of-band access to storage devices through port-sharing hardware
US8230127B2 (en) Method of protecting input/output packet of USB device and apparatus thereof
US20080313370A1 (en) Guarding Method For Input Data By Usb Keyboard and Guarding System
EP3190537A1 (en) Protection method and device for application data
KR100549645B1 (en) Guarding method for input data by keyboard and guarding system
JP2010541093A (en) Keyboard input information security method by direct control of keyboard controller
US8635664B2 (en) Method and system for securing application program interfaces in unified extensible firmware interface
KR100985076B1 (en) Apparatus and method for protecting data in usb devices
US20080127352A1 (en) System and method for protecting a registry of a computer
CN114270346A (en) Data storage device with changeable computer file system
KR100537930B1 (en) Guarding method for input data by usb keyboard and guarding system
US11461490B1 (en) Systems, methods, and devices for conditionally allowing processes to alter data on a storage device
US8214896B2 (en) Method of securing USB keyboard
CN117034330A (en) macOS-based safety protection method, macOS-based safety protection equipment and storage medium
JP2006031540A (en) Access control system
KR20110067332A (en) System for network duplication and method thereof

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
O035 Opposition [patent]: request for opposition
O132 Decision on opposition [patent]
O074 Maintenance of registration after opposition [patent]: final registration of opposition
FPAY Annual fee payment

Payment date: 20121129

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140203

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150130

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20151215

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170109

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20200106

Year of fee payment: 15