KR20080036699A - Method for keyboard security and storage medium recording keyboard security driver using the method - Google Patents

Method for keyboard security and storage medium recording keyboard security driver using the method Download PDF

Info

Publication number
KR20080036699A
KR20080036699A KR1020060103248A KR20060103248A KR20080036699A KR 20080036699 A KR20080036699 A KR 20080036699A KR 1020060103248 A KR1020060103248 A KR 1020060103248A KR 20060103248 A KR20060103248 A KR 20060103248A KR 20080036699 A KR20080036699 A KR 20080036699A
Authority
KR
South Korea
Prior art keywords
security
irp
keyboard
function
input data
Prior art date
Application number
KR1020060103248A
Other languages
Korean (ko)
Other versions
KR100846123B1 (en
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 KR1020060103248A priority Critical patent/KR100846123B1/en
Publication of KR20080036699A publication Critical patent/KR20080036699A/en
Application granted granted Critical
Publication of KR100846123B1 publication Critical patent/KR100846123B1/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
    • 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Storage Device Security (AREA)

Abstract

A method for keyboard security and a recording medium storing a keyboard security driver using the same are provided to block malicious keyboard data leakage by modifying a call function of an IRP(I/O(Input/Output) Request Packet) dispatch table of a USB(Universal Serial Bus) hub driver, which is the bottom layer of a system. A call function for IRP_ML_INTERNAL_DEVICE_CONTROL among an IRP dispatch table of a USB hub driver is changed into a security device control function(S534). The call functions for a keyboard disconnection request IRP among the IRP dispatch table of the USB hub driver are changed into a security device disconnection function. Device objects to protect inputted data are registered to a protected device list database. It is continuously monitored whether contents of the IRP dispatch table of the USB hub driver are changed. First and second stages are repeated when the contents of the IRP dispatch table of the USB hub driver are changed.

Description

키보드 보안 방법 및 상기 방법을 이용한 키보드 보안 드라이버를 기록한 기록 매체{Method for keyboard security and storage medium recording keyboard security driver using the method}Method for keyboard security and storage medium recording keyboard security driver using the method}

도 1은 일반적인 키보드 입력 데이터가 웹브라우저까지 전송되는 과정을 순차적으로 도시한 구성도이다.FIG. 1 is a block diagram sequentially illustrating a process of transmitting general keyboard input data to a web browser.

도 2는 본 발명의 바람직한 실시예에 따른 키보드 보안 방법이 적용되어 키보드 입력 데이터가 웹브라우저까지 전송되는 과정을 순차적으로 도시한 구성도이다. FIG. 2 is a configuration diagram sequentially illustrating a process of transmitting keyboard input data to a web browser by applying a keyboard security method according to an exemplary embodiment of the present invention.

도 3은 본 발명의 바람직한 실시예에 따른 키보드 보안 드라이버의 내부 구성을 개략적으로 도시한 블록도이다. 3 is a block diagram schematically illustrating an internal configuration of a keyboard security driver according to a preferred embodiment of the present invention.

도 4는 본 발명의 바람직한 실시예에 따른 키보드 보안 드라이버의 보안 드라이버 설치 모듈의 내부 구성을 개략적으로 도시한 블록도이다.4 is a block diagram schematically illustrating an internal configuration of a security driver installation module of a keyboard security driver according to an exemplary embodiment of the present invention.

도 5는 본 발명의 바람직한 실시예에 따른 키보드 보안 드라이버의 보안용 장치 제어 함수의 동작을 순차적으로 설명하는 흐름도이다. 5 is a flowchart sequentially illustrating the operation of the security device control function of the keyboard security driver according to an embodiment of the present invention.

도 6은 본 발명의 바람직한 실시예에 따른 키보드 보안 드라이버의 보안용 입력 데이터 처리 함수의 동작을 순차적으로 설명하는 흐름도이다.6 is a flowchart sequentially illustrating the operation of a security input data processing function of a keyboard security driver according to an embodiment of the present invention.

도 7은 본 발명의 바람직한 실시예에 따른 키보드 보안 드라이버의 새장치기 술자 처리 함수의 동작을 순차적으로 설명하는 흐름도이다. 7 is a flowchart sequentially illustrating operations of a new device operator processing function of a keyboard security driver according to an exemplary embodiment of the present invention.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for main parts of the drawings>

20 : 키보드 보안 드라이버20: keyboard security driver

200 : 보안 드라이버 설치 모듈200: security driver installation module

210 : 설정 변경 감시 모듈210: configuration change monitoring module

230 : 보호 디바이스 목록 데이터베이스 230: protected device list database

240 : 보안용 장치 제어 함수240: device control functions for security

242 : 보안용 입력 데이터 처리 함수242: Security input data processing function

250 : 보안용 디바이스 연결 해지 처리 함수250: device disconnection processing function for security

270 : 새장치기술자 처리 함수270: New device descriptor processing function

202 : 보호 디바이스 등록부202: protection device register

204 : 장치 제어 함수 설치부204: device control function installation unit

206 : 디바이스 연결 해지 처리 함수 설치부206: device connection termination processing function installation unit

본 발명은 키보드의 입력 데이터가 외부로 유출되는 것을 차단하는 키보드 보안 방법 및 상기 방법을 적용한 키보드 보안 드라이버를 기록한 컴퓨터로 읽을 수 있는 기록 매체에 관한 것으로서, 더욱 구체적으로는 USB 키보드를 사용함에 있어서 USB 허브 드라이버의 입출력 요청 패킷(IRP)의 디스패치 테이블을 변경시키고 URB를 가로챔으로써 USB 키보드로부터 입력되는 데이터가 외부로 유출되는 것을 차단하는 키보드 보안 방법 및 상기 방법을 적용한 키보드 보안 드라이버를 기록한 컴퓨터로 읽을 수 있는 기록 매체에 관한 것이다. The present invention relates to a keyboard security method for preventing the input data of the keyboard from leaking to the outside, and to a computer readable recording medium recording a keyboard security driver to which the method is applied. More specifically, in using a USB keyboard, A keyboard security method that changes the dispatch table of the I / O request packet (IRP) of the hub driver and intercepts the URB to prevent the data from the USB keyboard from leaking to the outside, and a computer that records the keyboard security driver applying the method A recording medium that can be used.

도 1은 컴퓨터의 커널 영역이 USB 인터페이스를 이용하는 키보드(이하, 'USB 키보드'라 한다)로부터 키보드 입력 데이터를 입력받아 사용자 영역인 응용 프로그램까지 전달하는 일반적인 과정을 순차적으로 도시한 블록도이다. 도 1에 도시된 바와 같이, USB 키보드로부터 데이터가 입력되면, USB 루트 허브 드라이버, HID (Human Interface Device) 드라이버, 키보드 드라이버 및 운영 시스템(O/S) 프로그램인 윈도우즈를 순차적으로 거친 후 응용 프로그램인 웹 브라우저에 키보드의 입력 데이터가 디스플레이된다. FIG. 1 is a block diagram sequentially illustrating a general process in which a kernel area of a computer receives keyboard input data from a keyboard using a USB interface (hereinafter, referred to as a “USB keyboard”) and transfers it to an application program which is a user area. As shown in FIG. 1, when data is input from a USB keyboard, the USB root hub driver, a HID (Human Interface Device) driver, a keyboard driver, and an operating system (O / S) program are sequentially passed through the application program. The input data of the keyboard is displayed in the web browser.

그런데, 정보 유출을 의도하는 각종 스파이웨어 또는 해킹 프로그램들의 대부분은 키보드 등과 같은 입력 장치로부터 입력되는 데이터들이 전송되는 중간에 해킹하게 된다. 도 1에 도시된 바와 같이, 악의적인 해킹 기능을 수행할 수 있는 필터 드라이버가 USB 루트 허브 드라이버와 HID 드라이버 사이(A), HID 드라이버와 키보드 드라이버 사이(B) 등에 설치되고, USB 루트 허브 드라이버에서 HID 드라이버로 전송되는 키보드 데이터, HID 드라이버에서 키보드 드라이버로 전송되는 키보드 데이터 등을 해킹하게 되는 것이다. However, most of the various spyware or hacking programs intended to leak information are hacked while data input from an input device such as a keyboard is transmitted. As shown in FIG. 1, a filter driver capable of performing a malicious hacking function is installed between the USB root hub driver and the HID driver (A), between the HID driver and the keyboard driver (B), and the like. Keyboard data transmitted to the HID driver and keyboard data transmitted from the HID driver to the keyboard driver are hacked.

전술한 문제점을 해결하기 위한 본 발명의 목적은 시스템의 최하단인 USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수를 변경시켜 악의적인 키보드 데이 터 유출을 차단시키는 USB 키보드에 대한 보안 방법을 제공하는 것이다. An object of the present invention to solve the above-mentioned problem is to provide a security method for a USB keyboard to prevent malicious keyboard data leakage by changing the call function of the IRP dispatch table of the USB hub driver, which is the bottom of the system.

본 발명의 다른 목적은 전술한 USB 키보드 보안 방법을 적용한 키보드 보안 드라이버 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는 것이다. Another object of the present invention is to provide a computer-readable recording medium recording a keyboard security driver program to which the above USB keyboard security method is applied.

전술한 기술적 과제를 달성하기 위한 본 발명의 특징에 따른 키보드 보안 드라이버 프로그램은 USB 허브 드라이버의 IRP(I/O Request Packet) 디스패치 테이블의 호출 함수들을 변경하여 키보드 입력 정보의 유출을 차단시키는 것으로서, The keyboard security driver program according to an aspect of the present invention for achieving the above technical problem is to block the leakage of keyboard input information by changing the calling functions of the I / O Request Packet (IRP) dispatch table of the USB hub driver,

입력 데이터를 보호할 디바이스 객체들에 대한 목록을 저장하는 보호 디바이스 목록 데이터베이스,A protected device list database that stores a list of device objects that will protect the input data;

USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수들을 보안용 호출 함수들로 변경시키고, 입력 데이터를 보호할 디바이스 객체들을 상기 보호 디바이스 목록 데이터베이스에 등록시키는 보안 드라이버 설치 모듈,A security driver installation module for changing the calling functions of the IRP dispatch table of the USB hub driver to the calling functions for security and registering device objects to protect the input data in the protected device list database;

상기 보안 드라이버 설치 모듈의 동작이 완료된 후, 상기 USB 허브 드라이버의 IRP 디스패치 테이블의 내용이 변경되는지 여부를 지속적으로 감시하고, 만약 상기 IRP 디스패치 테이블의 내용이 변경되는 경우 IRP 디스패치 테이블의 호출 함수를 상기 보안용 호출 함수들로 다시 변경시키는 설정 변경 감시 모듈을 구비한다. After the operation of the security driver installation module is completed, continuously monitoring whether the contents of the IRP dispatch table of the USB hub driver is changed, and if the contents of the IRP dispatch table are changed, the call function of the IRP dispatch table is recalled. It has a configuration change monitoring module that changes back to security call functions.

전술한 특징을 갖는 키보드 보안 드라이버의 상기 보안 드라이버 설치 모듈은,The security driver installation module of the keyboard security driver having the above characteristics,

상기 USB 허브 드라이버에 저장되어 있는 디바이스 객체들을 검색하고, 검색 된 디바이스 객체들로부터 장치 기술자들을 획득한 후, 해당 장치가 키보드 장치임이 확인되면 해당 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스에 등록시키는 보호 디바이스 등록부,A protected device registration unit for retrieving device objects stored in the USB hub driver, acquiring device descriptors from the found device objects, and registering the device object in the protected device list database when it is confirmed that the device is a keyboard device. ,

상기 USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_INTERNAL_DEVICE_CONTROL에 대한 호출 함수를 보안용 장치 제어 함수로 변경시키는 장치 제어 함수 설치부,Device control function installation unit for changing the call function for the IRP_MJ_INTERNAL_DEVICE_CONTROL in the IRP dispatch table of the USB hub driver to a device control function for security,

상기 USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_PNP에 대한 호출 함수를 보안용 디바이스 연결 해지 처리 함수로 변경시키는 디바이스 연결 해지 처리 함수 설치부를 구비한다. And a device connection release processing function installation unit for changing a call function for IRP_MJ_PNP in the IRP dispatch table of the USB hub driver to a device connection release processing function for security.

전술한 특징을 갖는 보안 드라이버 설치 모듈의 상기 보안용 장치 제어 함수는 The security device control function of the security driver installation module having the above-mentioned features

만약 IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어코드 및 파라메터 값을 확인하여 해당 IRP가 키보드 입력 데이터의 전송을 요청하는 URB로 판단되는 경우, 상기 완료 루틴(completion routine)의 호출 함수를 보안용 입력 데이터 처리 함수로 변경시키고,If IRP_MJ_INTERNAL_DEVICE_CONTROL checks the control code and parameter value and determines that IRP is a URB requesting the transmission of keyboard input data, the calling function of the completion routine is changed to a security input data processing function.

만약 IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어코드 및 파라메터 값을 확인하여 해당 IRP가 새로이 연결된 USB 장치에 대한 장치 기술자를 요청하는 URB로 판단되는 경우, 완료 루틴의 호출 함수를 새장치기술자 처리 함수로 변경하고, If IRP_MJ_INTERNAL_DEVICE_CONTROL checks the control code and parameter value and determines that IRP is a URB requesting a device descriptor for a newly connected USB device, the calling function of the completion routine is changed to a new device descriptor processing function.

변경전의 완료 루틴의 호출 함수 및 콘텍스트(context)에 대한 주소값을 별도의 장소에 저장시킨 후, 해당 IRP의 콘텍스트를 그 주소값으로 변경시키는 것이 바람직하다. 이때, 그 외의 장치 제어 코드나 URB 기능 코드일 경우에는 해당 IRP를 수정하지 않는다. It is preferable to store the address values for the calling function and context of the completion routine before the change in a separate place, and then change the context of the relevant IRP to the address values. At this time, in the case of other device control codes or URB function codes, the corresponding IRP is not modified.

상기 보안용 입력 데이터 처리 함수는 키보드로부터 URB를 통해 전달된 데이터를 복사하여 암호화하고, 기존 버퍼에 저장된 데이터를 삭제하고, 기저장된 기존의 IRP 완료 루틴과 콘텍스트로 IRP 정보를 복원한 후, 기존의 IRP 완료 루틴을 호출한다. The security input data processing function copies and encrypts the data transmitted through the URB from the keyboard, deletes the data stored in the existing buffer, restores the IRP information to the existing pre-stored IRP completion routine and context, and then Call the IRP completion routine.

상기 새장치기술자 처리 함수는 URB를 통해 전달된 새로운 장치의 장치 기술자를 장치 기술자 판독 함수를 이용하여 분석하고, 만약 분석 결과 해당 장치가 키보드 장치인 것으로 확인되는 경우 보호 디바이스 목록 데이터베이스에 해당 장치의 디바이스 객체를 추가한 후, 사전에 저장해 놓은 기존의 IRP 완료 루틴과 콘텍스트로 IRP 정보를 복원하고, 기존의 IRP완료 루틴을 호출한다. The new device descriptor processing function analyzes the device descriptor of the new device passed through the URB by using the device descriptor reading function, and if the analysis determines that the device is a keyboard device, the device of the device in the protected device list database. After adding the object, restore the IRP information to the previously saved IRP completion routine and context, and call the existing IRP completion routine.

상기 장치 기술자 판독 함수는 USB 장치 기술자(device descriptor)를 판독하고, 만약 해당 장치가 HID 클래스이며 키보드 프로토콜을 사용하는 것으로 확인되는 경우 해당 장치를 키보드 장치로 판단한다. The device descriptor read function reads a USB device descriptor and determines that the device is a keyboard device if it is determined that the device is a HID class and uses a keyboard protocol.

전술한 특징을 갖는 키보드 보안 드라이버의 상기 보안용 디바이스 연결 해지 처리 함수는 연결 해지된 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스로부터 삭제시키는 것이 바람직하다. Preferably, the security device disconnection processing function of the keyboard security driver having the above-mentioned feature deletes the disconnected device object from the protected device list database.

본 발명의 다른 특징에 따른 키보드 보안 방법은 USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수를 변경하여 키보드 입력 정보의 유출을 차단시키는 것으로서,Keyboard security method according to another aspect of the present invention is to block the leakage of keyboard input information by changing the call function of the IRP dispatch table of the USB hub driver,

(a) USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_INTERNAL_DEVICE_CONTROL에 대한 호출 함수를 보안용 장치 제어 함수로 변경시키는 단계,(a) changing the calling function for IRP_MJ_INTERNAL_DEVICE_CONTROL in the IRP dispatch table of the USB hub driver to the device control function for security;

(b) USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_PNP에 대한 호출 함수를 보안용 디바이스 연결 해지 처리 함수로 변경시키는 단계,(b) changing a call function for IRP_MJ_PNP in the IRP dispatch table of the USB hub driver to a device disconnect processing function for security;

(c) 입력 데이터를 보호할 디바이스 객체들을 상기 보호 디바이스 목록 데이터베이스에 등록시키는 단계,(c) registering device objects to protect input data in the protected device list database,

(d) USB 허브 드라이버의 IRP 디스패치 테이블의 내용이 변경되는지 여부를 지속적으로 감시하고, 만약 상기 IRP 디스패치 테이블의 내용이 변경되는 경우 상기 (a) 및 (b) 단계를 재실행하는 단계를 구비한다. (d) continuously monitoring whether the contents of the IRP dispatch table of the USB hub driver are changed, and if the contents of the IRP dispatch table are changed, repeating steps (a) and (b).

전술한 특징을 갖는 키보드 보안 방법의 상기 (c) 단계는 Step (c) of the keyboard security method having the features described above

(c1) 상기 USB 허브 드라이버에 저장되어 있는 디바이스 객체들을 검색하는 단계,(c1) searching for device objects stored in the USB hub driver;

(c2) 검색된 디바이스 객체들로부터 USB 장치 기술자를 획득하는 단계,(c2) obtaining a USB device descriptor from the retrieved device objects,

(c3) 상기 장치 기술자를 판독하여 키보드 장치를 나타내는 디바이스 객체임을 확인하는 단계,(c3) reading the device descriptor to confirm that it is a device object representing a keyboard device,

(c4) 상기 확인된 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스에 등록시키는 단계를 포함하는 것이 바람직하다. (c4) preferably registering the identified device object with the protected device list database.

전술한 특징을 갖는 키보드 보안 방법의 상기 (a) 단계의 상기 보안용 장치 제어 함수는 The security device control function of step (a) of the keyboard security method having the above-mentioned characteristics

IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드와 URB의 기능 코드(function code)를 확인하고, 만약 키보드 입력 데이터이거나 장치 기술자를 요청하는 경우 IRP의 완료 루틴(completion routine)의 호출 함수 및 콘텍스트(context)의 주소값을 저장시키는 단계,Check the control code of IRP_MJ_INTERNAL_DEVICE_CONTROL and the function code of the URB, and store the address of the calling function and context of the IRP completion routine if it is keyboard input data or requesting a device descriptor. step,

상기 완료 루틴의 호출 함수를 보안용 입력 데이터 처리 함수 또는 새장치 기술자 처리 함수로 변경시키는 단계, 및 Changing the calling function of the completion routine to a security input data processing function or a new device descriptor processing function, and

IRP_MJ_INTERNAL_DEVICE_CONTROL의 콘텍스트(context)를 상기 저장된 호출 함수 및 기존의 콘텍스트의 주소값을 저장한 메모리의 주소값으로 변경시키는 단계를 포함하고,Changing the context of IRP_MJ_INTERNAL_DEVICE_CONTROL to the address value of the memory where the stored call function and the address value of the existing context are stored;

상기 보안용 입력 데이터 처리 함수는 상기 IRP의 완료 루틴을 통해 수신된 키보드 입력 데이터를 암호화시켜 외부의 보안 통제 모듈로 전송시키고, 원래의 키보드 입력 데이터는 삭제시키는 것이 바람직하다. The security input data processing function encrypts the keyboard input data received through the completion routine of the IRP, transmits the encrypted keyboard input data to an external security control module, and deletes the original keyboard input data.

전술한 특징을 갖는 키보드 보안 방법의 상기 보안용 디바이스 연결 해지 처리 함수는 IRP_MJ_PNP의 연결 해지 요청이 발생한 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스로부터 삭제시키는 것이 바람직하다. Preferably, the security device connection release processing function of the keyboard security method having the above-mentioned feature deletes a device object in which a connection release request of IRP_MJ_PNP has occurred from the protected device list database.

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 따른 USB 키보드 보안 방법 및 상기 보안 방법이 적용된 보안 프로그램의 구성 및 동작을 구체적으로 설명한다. Hereinafter, a configuration and an operation of a USB keyboard security method and a security program to which the security method is applied according to a preferred embodiment of the present invention will be described in detail with reference to the accompanying drawings.

도 2는 본 발명의 바람직한 실시예에 따른 키보드 보안 방법이 적용된 키보드 보안 드라이버(20)가 설치되어 키보드 입력 데이터의 유출을 차단시키는 시스템 을 전체적으로 도시한 구성도이다. 2 is a block diagram showing the overall system of the keyboard security driver 20 to which the keyboard security method according to the preferred embodiment of the present invention is installed to block leakage of keyboard input data.

도 3은 본 발명의 바람직한 실시예에 따른 USB 키보드 보안 방법이 적용된 키보드 보안 드라이버(20)의 구성을 개략적으로 도시한 블록도이다. 3 is a block diagram schematically illustrating a configuration of a keyboard security driver 20 to which a USB keyboard security method is applied according to a preferred embodiment of the present invention.

도 3을 참조하면, 본 발명에 따른 키보드 보안 드라이버(20)는 보안 드라이버 설치 모듈(200), 설정 변경 감시 모듈(210), 보호 디바이스 목록 데이터베이스(230), 보안용 장치 제어 함수(240), 보안용 디바이스 연결 해지 처리 함수(250), 장치기술자 판독 함수 및 새장치기술자 처리 함수(270)를 포함한다. Referring to FIG. 3, the keyboard security driver 20 according to the present invention includes a security driver installation module 200, a configuration change monitoring module 210, a protection device list database 230, a device control function 240 for security, Security device disassociation processing function 250, device descriptor read function, and new device descriptor processing function 270.

도 4는 상기 보안 드라이버 설치 모듈(200)의 내부 구성을 개략적으로 도시한 블록도이다. 상기 보안 드라이버 설치 모듈(200)은, 도 4에 도시된 바와 같이, 보호 디바이스 등록부(202), 장치 제어 함수 설치부(204), 디바이스 연결 해지 처리 함수 설치부(206)를 구비한다. 4 is a block diagram schematically illustrating an internal configuration of the security driver installation module 200. As shown in FIG. 4, the security driver installation module 200 includes a protection device registration unit 202, a device control function installation unit 204, and a device connection termination processing function installation unit 206.

상기 보안 드라이버 설치 모듈(200)의 보호 디바이스 등록부(202)는 USB 허브 드라이버에 저장되어 있는 디바이스 객체들을 검색하고, 검색된 디바이스 객체들 중 키보드 장치를 나타내는 디바이스 객체를 찾고, 해당 객체를 상기 보호 디바이스 목록 데이터베이스(230)에 등록한다.The protected device registration unit 202 of the secure driver installation module 200 searches for device objects stored in the USB hub driver, finds a device object indicating a keyboard device among the found device objects, and lists the object as the protected device list. Register with database 230.

이때, 키보드 장치인지를 확인하기 위하여, "USBD_ParseConfigurationDescriptorEx" 함수의 "InterfaceClass" 파라메터에 "USB_DEVICE_CLASS_HUMAN_INTERFACE" 값을, "InterfaceProtocol" 파라메터에 "KeyboardInterface"(1) 값을 각각 넣고 실행함으로써, 해당 장치가 HID 클래스이고 키보드 프로토콜을 사용하는 키보드 장치인지 여부를 확인할 수 있게 된다. At this time, in order to check whether it is a keyboard device, insert the value of "USB_DEVICE_CLASS_HUMAN_INTERFACE" into the "InterfaceClass" parameter of the "USBD_ParseConfigurationDescriptorEx" function and the value of "KeyboardInterface" (1) into the "InterfaceProtocol" parameter. You can check whether the keyboard device uses the keyboard protocol.

상기 보안 드라이버 설치 모듈(200)의 장치 제어 함수 설치부(204)는 USB 허브 드라이버의 IRP 디스패치 테이블에 있어서 IRP가 IRP_MJ_INTERNAL_DEVICE_CONTROL인 경우에 호출되는 기존 처리 함수를 상기 보안용 장치 제어 함수(240)로 변경한다. 따라서, USB 허브 드라이버로 IRP_MJ_INTERNAL_DEVICE_CONTROL가 전달되는 경우, 상기 키보드 보안 드라이버에 포함된 상기 보안용 장치 제어 함수(240)가 호출되어 실행된다.The device control function installation unit 204 of the security driver installation module 200 changes the existing processing function called when the IRP is IRP_MJ_INTERNAL_DEVICE_CONTROL in the IRP dispatch table of the USB hub driver to the security device control function 240. do. Therefore, when IRP_MJ_INTERNAL_DEVICE_CONTROL is transmitted to the USB hub driver, the security device control function 240 included in the keyboard security driver is called and executed.

상기 보안 드라이버 설치 모듈(200)의 디바이스 연결 해지 처리 함수 설치부(206)는, USB 허브 드라이버의 IRP 디스패치 테이블에 있어서 IRP가 키보드 장치의 연결이 해제되었음을 알리는 IRP_MJ_PNP인 경우에 호출되는 함수를 상기 보안용 디바이스 연결 해지 처리 함수(250)로 변경한다. 따라서, USB 허브 드라이버로 "IRP_MJ_INTERNAL_DEVICE_CONTROL"인 IRP 가 전달되는 경우, 상기 키보드 보안 드라이버에 포함된 상기 디바이스 연결 해지 처리 함수(250)가 호출되어 실행된다. The device connection release processing function installation unit 206 of the security driver installation module 200 stores the function called when the IRP is IRP_MJ_PNP in the IRP dispatch table of the USB hub driver indicating that the keyboard device is disconnected. The device disconnection processing function 250. Therefore, when an IRP of "IRP_MJ_INTERNAL_DEVICE_CONTROL" is delivered to the USB hub driver, the device connection termination processing function 250 included in the keyboard security driver is called and executed.

상기 설정 변경 감시 모듈(210)은, 상기 보안 드라이버 설치 모듈의 동작이 완료된 후, 쓰레드(thread)를 생성하여 USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수들에 대한 주소가 변경되는지 여부를 지속적으로 감시한다. 만약 USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수들에 대한 주소가 변경된 것이 확인된 경우, 상기 설정 변경 감시 모듈(210)은 상기 보안 드라이버 설치 모듈을 재실행함으로써, 상기 USB 허브 드라이버의 IRP 디스패치 테이블의 IRP_MJ_INTERNAL_DEVICE_CONTROL 및 IRP_MJ_PNP에 대한 호출 함수들을 상기 보안용 장치 제어 함수(240) 및 상기 보안용 디바이스 연결 해지 처리 함수(250)로 다시 변경시킨다. After the operation of the security driver installation module is completed, the configuration change monitoring module 210 continuously creates a thread and continuously monitors whether addresses of call functions of the IRP dispatch table of the USB hub driver are changed. do. If it is confirmed that the address of the call functions of the IRP dispatch table of the USB hub driver has been changed, the configuration change monitoring module 210 re-executes the security driver installation module, thereby causing the IRP_MJ_INTERNAL_DEVICE_CONTROL of the IRP dispatch table of the USB hub driver. And call functions for IRP_MJ_PNP back to the security device control function 240 and the security device disconnect processing function 250.

상기 보호 디바이스 목록 데이터베이스(230)는 상기 키보드 보안 드라이버에 의해 입력데이터를 보호할 입출력 디바이스들에 대한 목록을 저장 및 관리한다. 상기 보호 디바이스 목록 데이터베이스는 상기 보안 드라이버 설치 모듈의 실행에 의해 설치 초기에 USB 허브 드라이버에 연결된 디바이스 객체들에 대한 정보를 등록하며, 상기 보안용 장치 제어 함수의 새장치기술자 처리 함수의 실행에 의해 초기 설치 이후에 추가적으로 USB 허브 드라이버에 연결되는 디바이스 객체들에 대한 정보를 등록하게 된다. 또한, 상기 보호 디바이스 목록 데이터베이스는 상기 보안용 디바이스 연결 해지 처리 함수(250)의 실행에 의해 연결이 해제된 해당 디바이스 객체를 삭제하게 된다. The protected device list database 230 stores and manages a list of input / output devices for protecting input data by the keyboard security driver. The protected device list database registers information about device objects connected to the USB hub driver at the beginning of installation by executing the secure driver installation module, and initializes by executing a new device descriptor processing function of the security device control function. After installation, you will additionally register information about device objects connected to the USB hub driver. In addition, the protected device list database deletes the corresponding device object disconnected by the execution of the security device connection termination processing function 250.

도 5는 본 발명에 따른 상기 보안용 장치 제어 함수(240)의 처리 과정을 설명하기 위하여 도시한 흐름도이다. 도 5를 참조하면, 상기 보안용 장치 제어 함수(240)는 상기 IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드 및 URB 기능 코드를 확인한다(단계 500).5 is a flowchart illustrating a process of the security device control function 240 according to the present invention. Referring to FIG. 5, the security device control function 240 checks the control code and the URB function code of the IRP_MJ_INTERNAL_DEVICE_CONTROL (step 500).

만약, 제어 코드 및 URB 기능 코드가 URB 데이터 전송을 요청하는 코드로 판단되는 경우(단계 510), 해당 디바이스 객체가 보호 디바이스 목록 데이터베이스에 있을 경우(단계 520), IRP_MJ_INTERNAL_DEVICE_CONTROL의 완료 루틴(completion routine)의 호출 함수 및 콘텍스트(context)에 저장된 주소값들을 저장시킨 후(단계 522), 상기 완료 루틴의 호출 함수를 보안용 입력 데이터 처리 함수(242)로 변경시키고(단계 524), 상기 콘텍스트에는 상기 저장된 완료 루틴의 호출 함수 및 콘 텍스트의 주소값으로 변경시킨다(단계 526). If the control code and the URB function code are determined to be a code for requesting URB data transmission (step 510), and if the corresponding device object is in the protected device list database (step 520), the completion routine of IRP_MJ_INTERNAL_DEVICE_CONTROL After storing address values stored in a calling function and context (step 522), the calling function of the completion routine is changed to a security input data processing function 242 (step 524), and the stored completion in the context. Change to the address value of the calling function and context of the routine (step 526).

여기서, 상기 IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드가 URB 데이터 전송 요청 코드인지 여부는, 현재 IRP 스택의 "Parameters.DeviceIoControlCode"값이 "IOCTL_INTERNAL_USB_SUBMIT_URB"이며, IRP 스택의 "Parameters.Others.Argument1"의 URB 구조체의 "UrbHeader.Function"값이 "URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER"인 경우, URB 데이터 전송 요청 코드라 판단한다. Here, whether the control code of the IRP_MJ_INTERNAL_DEVICE_CONTROL is a URB data transmission request code is "Parameters.DeviceIoControlCode" value of the current IRP stack "IOCTL_INTERNAL_USB_SUBMIT_URB", and the "UrbHeader." If the value of "Function" is "URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER", it is determined that it is a URB data transmission request code.

만약, 제어 코드 및 URB 기능 코드가 장치 정보를 요청하는 코드로 판단되는 경우(단계 530), IRP_MJ_INTERNAL_DEVICE_CONTROL의 완료 루틴(completion routine)의 호출 함수 및 콘텍스트(context)에 저장된 주소값들을 저장시킨 후(단계 532), 상기 완료 루틴의 호출 함수를 새장치기술자 처리 함수(270)로 변경시키고(단계 534), 상기 콘텍스트에는 상기 저장된 완료 루틴의 호출 함수 및 콘텍스트의 주소값으로 변경시킨다(단계 536).  If it is determined that the control code and the URB function code are the code for requesting device information (step 530), after storing the address values stored in the calling function and context of the completion routine of IRP_MJ_INTERNAL_DEVICE_CONTROL (step) 532), the call function of the completion routine is changed to a new device descriptor processing function 270 (step 534), and the context is changed to the address value of the call function and the context of the stored completion routine (step 536).

여기서, 상기 IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드가 장치 정보 요청 코드인지 여부는, URB 구조체의 기능코드 중 "UrbHeader.Function"값이 "URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE"인 경우, 장치 정보 요청 코드라 판단한다. Here, whether the control code of IRP_MJ_INTERNAL_DEVICE_CONTROL is a device information request code is determined as a device information request code when the value of "UrbHeader.Function" in the function code of the URB structure is "URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE".

이하, 도 6을 참조하여 상기 보안용 입력 데이터 처리 함수(242)를 설명한다. 보안용 장치 제어 함수에 의해 완료 루틴이 수정된 IRP와 URB가 URB 드라이버에 전달되고 USB 장치에서의 처리가 완료되면 완료 루틴(즉, 보안용 입력 데이터 처리 함수)이 실행된다. Hereinafter, the security input data processing function 242 will be described with reference to FIG. 6. The IRP and URB with the completion routine modified by the security device control function are passed to the URB driver and the completion routine (i.e. the security input data processing function) is executed when the processing on the USB device is completed.

먼저, 해당 디바이스 드라이버가 활성화되어 있는지 여부를 확인한다(단계 600). 만약, 해당 드라이버가 활성화되어 있는 경우, URB에 저장되어 있는 키보드 입력 데이터를 수신한 후, 수신된 키보드 입력 데이터를 암호화시킴과 동시에, 원래 수신된 키보드 입력 데이터는 삭제한다(단계 610). First, it is checked whether the corresponding device driver is activated (step 600). If the corresponding driver is activated, after receiving the keyboard input data stored in the URB, the received keyboard input data is encrypted and the original received keyboard input data is deleted (step 610).

다음, 상기 전달된 IRP의 콘텍스트 값을 이용하여 해당 IRP의 콘텍스트와 완료 루틴의 값을 기존의 콘텍스트 및 기존의 완료 루틴의 주소값으로 복원한 후(단계 620), 기존의 호출 함수들을 다시 호출하여 실행한 후(단계 630), 종료한다. Next, the context value of the IRP and the completion routine are restored to the existing context and the address value of the existing completion routine using the passed IRP context value (step 620), and the existing calling functions are called again. After execution (step 630), the process ends.

한편, 전술한 단계 610에 의해 암호화된 키보드 입력 데이터는 외부 응용 프로그램의 요청에 따라 외부로 전달시키게 된다. Meanwhile, the keyboard input data encrypted by the above-described step 610 is transmitted to the outside at the request of the external application program.

이하, 도 7을 참조하여 상기 새장치기술자 처리 함수(270)를 설명한다. 상기 보안용 장치 제어 함수(230)로 IRP_MJ_INTERNAL_DEVICE_CONTROL가 전달되는 경우, USB 장치의 장치 기술자를 요청하는 URB(USB Request Block)인지 여부를 확인한다. 새로운 USB 키보드 장치가 PC 등에 연결되는 경우에는 새 장치에 대한 USB 장치 기술자를 요청하는 IRP가 발생하여 상기 USB 허브 드라이버로 전송되고 보안용 장치 제어 함수에서는 그 IRP의 완료 루틴을 새 장치 기술자 처리 함수로 교체하게 된다. Hereinafter, the new device descriptor processing function 270 will be described with reference to FIG. 7. When IRP_MJ_INTERNAL_DEVICE_CONTROL is transmitted to the security device control function 230, it is checked whether or not it is a USB Request Block (URB) requesting a device descriptor of the USB device. When a new USB keyboard device is connected to a PC, etc., an IRP requesting a USB device descriptor for the new device is generated and sent to the USB hub driver, and the security device control function converts the completion routine of the IRP into a new device descriptor processing function. Will be replaced.

먼저, URB를 통해 전달된 새로운 장치의 장치 기술자를 장치 기술자 판독 함수를 이용하여 분석한다(단계 700). 상기 장치 기술자 판독 함수는 USB 장치로부터 장치 기술자(device descriptor)를 획득하고, 획득된 장치기술자를 이용하여 키보 드 장치인지 여부를 확인한다. First, the device descriptor of the new device passed through the URB is analyzed using the device descriptor read function (step 700). The device descriptor read function obtains a device descriptor from a USB device and checks whether the device is a keyboard device using the obtained device descriptor.

만약 키보드 장치인 것으로 확인되는 경우(단계 710), 보호 디바이스 목록 데이터베이스에 해당 장치의 디바이스 객체를 추가한 후(단계 720), 사전에 저장해 놓은 기존의 IRP 완료 루틴과 콘텍스트로 IRP 정보를 복원하고(단계 730), 복원된 기존의 IRP 완료 루틴을 호출한 후(단계 740), 종료한다. 이때, 해당 장치가 키보드 장치인지를 확인하기 위하여, "USBD_ParseConfigurationDescriptorEx" 함수의 "InterfaceClass" 파라메터에 "USB_DEVICE_CLASS_HUMAN_INTERFACE" 값을, "InterfaceProtocol" 파라메터에 "KeyboardInterface" 값을 각각 넣고 실행함으로써, 해당 장치가 HID 클래스이고 키보드 프로토콜을 사용하는 키보드 장치인지 여부를 확인할 수 있게 된다. If it is determined that it is a keyboard device (step 710), after adding the device object of the device to the protected device list database (step 720), the IRP information is restored to the previously stored IRP completion routine and context ( In step 730, the restored existing IRP completion routine is called (step 740). At this time, to check whether the device is a keyboard device, insert the "USB_DEVICE_CLASS_HUMAN_INTERFACE" value into the "InterfaceClass" parameter of the "USBD_ParseConfigurationDescriptorEx" function and the "KeyboardInterface" value into the "InterfaceProtocol" parameter. You can check whether the keyboard device uses the keyboard protocol.

상기 보안용 디바이스 연결 해지 처리 함수(250)는 IRP_MJ_PNP가 전달되는 경우 호출되는 함수로서, 연결 해제된 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스로부터 삭제시켜 해당 디바이스 객체에 대한 데이터 보호 기능을 해제하게 된다. 만약 현재 IRP 스택의 "MinorFunction"값이 "IRP_MN_REMOVE_DEVICE", "IRP_MN_SURPRISE_REMOVAL", "IRP_MN_QUERY_REMOVE_DEVICE" 중의 하나인 경우, 상기 디바이스 연결 해지 처리 함수는 해당 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스로부터 삭제시킨다. The security device connection termination processing function 250 is a function that is called when IRP_MJ_PNP is delivered and deletes the disconnected device object from the protected device list database to release the data protection function for the device object. If the "MinorFunction" value of the current IRP stack is one of "IRP_MN_REMOVE_DEVICE", "IRP_MN_SURPRISE_REMOVAL", "IRP_MN_QUERY_REMOVE_DEVICE", the device disconnect processing function deletes the device object from the protected device list database.

이상에서 본 발명에 대하여 그 바람직한 실시예를 중심으로 설명하였으나, 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 발명의 본질적인 특성을 벗어나지 않는 범위에서 이 상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 그리고, 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다. Although the present invention has been described above with reference to preferred embodiments thereof, this is merely an example and is not intended to limit the present invention, and those skilled in the art do not depart from the essential characteristics of the present invention. It will be appreciated that various modifications and applications are not possible in the scope. And differences relating to such modifications and applications should be construed as being included in the scope of the invention defined in the appended claims.

본 발명에 따른 키보드 보안 방법 및 키보드 보안 드라이버는 시스템의 가장 하위단인 USB 허브 드라이버 또는 USB 루트 허브 드라이버의 IRP 디스패치 테이블의 호출 함수들을 변경시킴으로써, 키보드 입력 데이터가 외부로 유출되는 것을 방지한다. The keyboard security method and keyboard security driver according to the present invention prevents the keyboard input data from leaking out by changing the calling functions of the IRP dispatch table of the USB hub driver or the USB root hub driver, which is the lowest level of the system.

따라서, 본 발명에 의하여 USB 허브 드라이버 또는 USB 루트 허브 드라이버의 키보드 입력 데이터를 가져와 기존의 키보드 정보 전달 경로를 통하지 않고 보안 통제 모듈을 통해 직접 키보드 입력 정보를 전달할 응용 프로그램인 ActiveX 컨트롤러로 전달하게 되므로 악의적인 정보 유출을 원천적으로 차단시킬 수 있게 된다. 그 결과, 본 발명에 의하여 USB 키보드를 사용하는 시스템에서의 USB 키보드로부터 입력되는 데이터를 안전하게 보호할 수 있게 된다. Therefore, the present invention takes the keyboard input data of the USB hub driver or the USB root hub driver and transfers the keyboard input data to the ActiveX controller which is an application program that will directly transfer the keyboard input information through the security control module without passing through the existing keyboard information transmission path. It is possible to prevent leakage of personal information at source. As a result, according to the present invention, it is possible to securely protect data input from the USB keyboard in the system using the USB keyboard.

Claims (13)

USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수를 변경하여 키보드 입력 정보의 유출을 차단시키는 키보드 보안 드라이버 프로그램은,Keyboard security driver program that changes the call function of the IRP dispatch table of the USB hub driver to prevent the leakage of keyboard input information. 입력 데이터를 보호할 디바이스 객체들에 대한 목록을 저장하는 보호 디바이스 목록 데이터베이스;A protected device list database that stores a list of device objects for protecting input data; USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수들을 보안용 호출 함수들로 변경시키고, 입력 데이터를 보호할 디바이스 객체들을 상기 보호 디바이스 목록 데이터베이스에 등록시키는 보안 드라이버 설치 모듈;A security driver installation module for changing the calling functions of the IRP dispatch table of the USB hub driver into the calling functions for security and registering device objects to protect the input data in the protected device list database; 상기 보안 드라이버 설치 모듈의 동작이 완료된 후, 상기 USB 허브 드라이버의 IRP 디스패치 테이블의 내용이 변경되는지 여부를 지속적으로 감시하고, 만약 상기 IRP 디스패치 테이블의 내용이 변경되는 경우 IRP 디스패치 테이블의 호출 함수를 상기 보안용 호출 함수들로 다시 변경시키는 설정 변경 감시 모듈;After the operation of the security driver installation module is completed, continuously monitoring whether the contents of the IRP dispatch table of the USB hub driver is changed, and if the contents of the IRP dispatch table are changed, the call function of the IRP dispatch table is recalled. A configuration change monitoring module for changing back to security calling functions; 을 구비하는 키보드 보안 드라이버 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체. A computer-readable recording medium having a keyboard security driver program recorded thereon. 제1항에 있어서, 상기 보안 드라이버 설치 모듈은The method of claim 1, wherein the security driver installation module 상기 USB 허브 드라이버에 저장되어 있는 디바이스 객체들을 검색하고, 검색된 디바이스 객체로부터 장치기술자를 획득한 후, 상기 장치기술자를 이용하여 키보드 장치임이 확인되는 경우, 해당 장치에 대한 디바이스 객체를 상기 보호 디바 이스 목록 데이터베이스에 등록시키는 보호 디바이스 등록부,Searching for device objects stored in the USB hub driver, acquiring a device descriptor from the found device object, and if it is determined that the device is a keyboard device using the device descriptor, the device object for the corresponding device is listed in the protected device list. A protection device register to register in a database, 상기 USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_INTERNAL_DEVICE_CONTROL에 대한 호출 함수를 보안용 장치 제어 함수로 변경시키는 장치 제어 함수 설치부,Device control function installation unit for changing the call function for the IRP_MJ_INTERNAL_DEVICE_CONTROL in the IRP dispatch table of the USB hub driver to a device control function for security, 상기 USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_PNP에 대한 호출 함수를 보안용 디바이스 연결 해지 처리 함수로 변경시키는 디바이스 연결 해지 처리 함수 설치부Device connection termination processing function installation unit for changing the call function for the IRP_MJ_PNP in the IRP dispatch table of the USB hub driver to the security device connection termination processing function 를 구비하는 것을 특징으로 하는 키보드 보안 드라이버 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체. And a computer-readable recording medium having a keyboard security driver program recorded thereon. 제2항에 있어서, 상기 보안용 장치 제어 함수는 3. The security device control function of claim 2, wherein IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드 및 파라메터 값을 확인하고, Check the control code and parameter values of IRP_MJ_INTERNAL_DEVICE_CONTROL, 만약 상기 제어코드 및 파라메터 값을 통해 키보드 입력 데이터를 요청하는 URB인 것으로 판단되는 경우, 변경 전의 기존의 완료 루틴(completion routine)의 호출 함수 및 콘텍스트(context)에 대한 주소값을 저장시키고, 완료 루틴(completion routine)의 호출 함수를 보안용 입력 데이터 처리 함수로 변경시키고, IRP_MJ_INTERNAL_DEVICE_CONTROL의 콘텍스트(context)를 상기 기존의 주소값이 저장된 메모리의 주소값으로 변경시키는 것을 특징으로 하는 키보드 보안 드라이버 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체. If it is determined that the URB requests the keyboard input data through the control code and the parameter value, the address value of the calling function and the context of the existing completion routine before the change is stored and the completion routine a keyboard security driver program recorded therein, wherein the call function of the complement routine is changed to a security input data processing function, and the context of IRP_MJ_INTERNAL_DEVICE_CONTROL is changed to an address value of a memory in which the existing address value is stored. Computer-readable recording media. 제3항에 있어서, 상기 보안용 입력 데이터 처리 함수는 URB를 통해 키보드로부터 전달된 입력 데이터를 복사하여 암호화하고, 기존의 버퍼에 저장된 입력 데이터는 삭제시키며, 기저장된 기존의 IRP 완료 루틴가 콘텍스트로 IRP 정보를 복원시킨 후, 기존의 IRP 완료 루틴을 호출하는 것을 특징으로 하는 키보드 보안 드라이버 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체.4. The security input data processing function of claim 3, wherein the security input data processing function copies and encrypts input data transmitted from the keyboard through URB, deletes the input data stored in the existing buffer, and saves the existing IRP completion routine in the context of the IRP. A computer-readable recording medium having a keyboard security driver program recorded thereon, after restoring information and calling an existing IRP completion routine. 제2항에 있어서, 상기 보안용 장치 제어 함수는 3. The security device control function of claim 2, wherein IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드 및 파라메터 값을 확인하고, Check the control code and parameter values of IRP_MJ_INTERNAL_DEVICE_CONTROL, 만약 상기 제어코드 및 파라메터 값을 통해 장치정보를 요청하는 URB인 것으로 판단되는 경우, 변경 전의 기존의 완료 루틴(completion routine)의 호출 함수 및 콘텍스트(context)에 대한 주소값을 저장시키고, 완료 루틴(completion routine)의 호출 함수를 새장치기술자 처리 함수로 변경시키고, IRP_MJ_INTERNAL_DEVICE_CONTROL의 콘텍스트(context)를 상기 기존의 주소값이 저장된 메모리의 주소값으로 변경시키는 것을 특징으로 하는 키보드 보안 드라이버 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체. If it is determined that the URB is requesting device information through the control code and the parameter value, the address value of the call function and context of the existing completion routine before the change is stored, and the completion routine ( change the calling function of the completion routine to a new device descriptor processing function and change the context of IRP_MJ_INTERNAL_DEVICE_CONTROL to the address of the memory where the existing address value is stored. Readable Recording Media. 제5항에 있어서, 상기 새장치기술자 처리 함수는 6. The method of claim 5, wherein the new device descriptor processing function is URB를 통해 전달된 새로운 장치의 장치 기술자를 분석하고, 만약 상기 분석결과 해당 장치가 키보드 장치인 것으로 확인되는 경우, 보호 디바이스 목록 데이터베이스에 해당 장치의 디바이스 객체를 추가하는 것을 특징으로 하는 키보드 보 안 드라이버 프로그램이 기록한 컴퓨터로 읽을 수 있는 기록 매체. Analyzing the device descriptor of the new device delivered through the URB, and if the analysis determines that the device is a keyboard device, the keyboard security driver, which adds the device object of the device to the protected device list database. Computer-readable recording media recorded by the program. 제2항에 있어서, 상기 보안용 디바이스 연결 해지 처리 함수는 연결 해지된 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스로부터 삭제시키는 것을 특징으로 하는 키보드 보안 드라이버 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체. The computer-readable recording medium of claim 2, wherein the security device disconnection processing function deletes the disconnected device object from the protected device list database. USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수를 변경하여 키보드 입력 정보의 유출을 차단시키는 키보드 보안 방법은,The keyboard security method that changes the call function of the USB hub driver's IRP dispatch table to prevent the leakage of keyboard input information, (a) USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_INTERNAL_DEVICE_CONTROL에 대한 호출 함수를 보안용 장치 제어 함수로 변경시키는 단계;(a) changing a call function for IRP_MJ_INTERNAL_DEVICE_CONTROL in the IRP dispatch table of the USB hub driver to a security device control function; (b) USB 허브 드라이버의 IRP 디스패치 테이블 중 키보드 연결 해지 요청 IRP에 대한 호출 함수들을 보안용 디바이스 연결 해지 처리 함수로 변경시키는 단계;(b) changing the calling functions for the keyboard disconnect request IRP in the IRP dispatch table of the USB hub driver to the security device disconnect processing function; (c) 입력 데이터를 보호할 디바이스 객체들을 상기 보호 디바이스 목록 데이터베이스에 등록시키는 단계;(c) registering device objects to protect input data in the protected device list database; (d) USB 허브 드라이버의 IRP 디스패치 테이블의 내용이 변경되는지 여부를 지속적으로 감시하고, 만약 상기 IRP 디스패치 테이블의 내용이 변경되는 경우 상기 (a) 및 (b) 단계를 재실행하는 단계;(d) continuously monitoring whether the contents of the IRP dispatch table of the USB hub driver are changed, and if the contents of the IRP dispatch table are changed, redoing the steps (a) and (b); 를 구비하여 키보드 입력 데이터가 외부로 유출되는 것을 방지하는 키보드 보안 방법. Keyboard security method for preventing the keyboard input data from leaking to the outside. 제8항에 있어서, 상기 (c) 단계는  The method of claim 8, wherein step (c) (c1) 상기 USB 허브 드라이버에 저장되어 있는 디바이스 객체들을 검색하는 단계,(c1) searching for device objects stored in the USB hub driver; (c2) 검색된 디바이스 객체로부터 USB 장치 기술자를 획득하는 단계,(c2) obtaining a USB device descriptor from the retrieved device object, (c3) 획득된 USB 장치 기술자를 판독하여 키보드 장치임을 나타내는 디바이스 객체를 확인하는 단계,(c3) reading the obtained USB device descriptor to identify a device object indicating that the device is a keyboard device, (c4) 상기 확인된 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스에 등록시키는 단계(c4) registering the identified device object in the protected device list database 를 포함하는 것을 특징으로 하는 키보드 입력 데이터가 외부로 유출되는 것을 방지하는 키보드 보안 방법. Keyboard security method for preventing the keyboard input data from leaking to the outside, comprising a. 제8항에 있어서, 상기 (a) 단계의 상기 보안용 장치 제어 함수는 9. The security device control function of claim 8, wherein (a1) IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드와 URB의 기능 코드를 확인하는 단계,(a1) checking the control code of IRP_MJ_INTERNAL_DEVICE_CONTROL and the function code of URB, (a2) 만약 상기 확인 결과 키보드 입력 데이터이거나 장치정보를 요청하는 경우, IRP의 완료 루틴(completion routine)의 호출 함수 및 콘텍스트(context)의 주소값을 저장하고, 상기 완료 루틴의 호출 함수를 보안용 입력 데이터 처리 함수 또는 새장치기술자 처리 함수로 변경시키는 단계, 및 (a2) If the check result indicates that the keyboard input data or device information is requested, the call function of the completion routine of the IRP and the address value of the context are stored, and the call function of the completion routine is secured. Changing to an input data processing function or a new device descriptor processing function, and (a3) IRP_MJ_INTERNAL_DEVICE_CONTROL의 콘텍스트(context)를 상기 저장된 호출 함수 및 기존의 콘텍스트의 주소값을 저장한 메모리의 주소값으로 변경시키는 단계를 포함하는 것을 특징으로 하는 키보드 입력 데이터가 외부로 유출되는 것을 방지하는 키보드 보안 방법. (a3) changing the context of IRP_MJ_INTERNAL_DEVICE_CONTROL to the address of the stored call function and the existing context to the address of the stored memory; preventing keyboard input data from leaking to the outside. Keyboard security method. 제10항에 있어서, 상기 보안용 입력 데이터 처리 함수는 상기 IRP의 완료 루틴을 통해 수신된 키보드 입력 데이터를 암호화시켜 외부의 보안 통제 모듈로 전송시키고, 원래의 키보드 입력 데이터는 삭제시키는 것을 특징으로 하는 키보드 입력 데이터가 외부로 유출되는 것을 방지하는 키보드 보안 방법.  The method of claim 10, wherein the security input data processing function encrypts the keyboard input data received through the completion routine of the IRP, transmits the encrypted keyboard input data to an external security control module, and deletes the original keyboard input data. Keyboard security method to prevent keyboard input data from leaking outside. 제8항에 있어서, 상기 보안용 디바이스 연결 해지 처리 함수는 IRP_MJ_PNP의 연결 해지 요청이 발생된 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스로부터 삭제시키는 것을 특징으로 하는 키보드 입력 데이터가 외부로 유출되는 것을 방지하는 키보드 보안 방법. The keyboard as claimed in claim 8, wherein the security device connection termination processing function deletes a device object from which a connection termination request of IRP_MJ_PNP is generated from the protected device list database. Security method. 제10항에 있어서, 상기 새장치기술자 처리 함수는 11. The method of claim 10, wherein the new device descriptor processing function is URB를 통해 전달된 새로운 장치의 장치 기술자를 분석하고, 만약 상기 분석결과 해당 장치가 키보드 장치인 것으로 확인되는 경우, 보호 디바이스 목록 데이터베이스에 해당 장치의 디바이스 객체를 추가하는 것을 특징으로 하는 키보드 입 력 데이터가 외부로 유출되는 것을 방지하는 키보드 보안 방법. Analyzing the device descriptor of the new device delivered through the URB, and if the analysis determines that the device is a keyboard device, the keyboard input data of the device is added to the protected device list database. How to secure your keyboard to prevent it from leaking outside.
KR1020060103248A 2006-10-24 2006-10-24 Method for keyboard security and storage medium recording keyboard security driver using the method KR100846123B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060103248A KR100846123B1 (en) 2006-10-24 2006-10-24 Method for keyboard security and storage medium recording keyboard security driver using the method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060103248A KR100846123B1 (en) 2006-10-24 2006-10-24 Method for keyboard security and storage medium recording keyboard security driver using the method

Publications (2)

Publication Number Publication Date
KR20080036699A true KR20080036699A (en) 2008-04-29
KR100846123B1 KR100846123B1 (en) 2008-07-15

Family

ID=39574963

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060103248A KR100846123B1 (en) 2006-10-24 2006-10-24 Method for keyboard security and storage medium recording keyboard security driver using the method

Country Status (1)

Country Link
KR (1) KR100846123B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100985076B1 (en) * 2008-04-16 2010-10-04 주식회사 안철수연구소 Apparatus and method for protecting data in usb devices

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6968462B2 (en) 2000-12-11 2005-11-22 International Business Machines Corporation Verifying physical universal serial bus keystrokes
EP1286242A1 (en) 2001-08-22 2003-02-26 Sonera SmartTrust, Ltd. System and method for protected data input of security data
US7243237B2 (en) * 2003-05-02 2007-07-10 Microsoft Corporation Secure communication with a keyboard or related device
JP4167604B2 (en) 2004-02-13 2008-10-15 Necフィールディング株式会社 Keyboard with mapping conversion function
KR100959638B1 (en) * 2004-03-09 2010-05-26 주식회사 하우리 Method for preventing key input from hacking, computer-readable storage medium recorded with program for preventing key input from hacking
KR100710032B1 (en) * 2005-02-23 2007-04-25 제이알소프트 주식회사 Method and system that can secure keyboard key stroke using secure input filter driver and keyboard secure input BHO of Internet Explorer in windows operating system
KR100734145B1 (en) * 2005-10-12 2007-07-03 주식회사 안철수연구소 Method of protecting hacking of a key input by using authorization of keyboard data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100985076B1 (en) * 2008-04-16 2010-10-04 주식회사 안철수연구소 Apparatus and method for protecting data in usb devices

Also Published As

Publication number Publication date
KR100846123B1 (en) 2008-07-15

Similar Documents

Publication Publication Date Title
US20200050765A1 (en) Methods and apparatus for identifying and removing malicious applications
AU2006235058B2 (en) System and method for foreign code detection
KR101759379B1 (en) Memory dump with expanded data and user privacy protection
CN101136049B (en) Information processing system, information processing method, information processing program, computer readable medium and computer data signal
US9804948B2 (en) System, method, and computer program product for simulating at least one of a virtual environment and a debugging environment to prevent unwanted code from executing
WO2019222261A1 (en) Cloud based just in time memory analysis for malware detection
US20050071668A1 (en) Method, apparatus and system for monitoring and verifying software during runtime
JP5832954B2 (en) Tag assignment device and tag assignment method
US11601443B2 (en) System and method for generating and storing forensics-specific metadata
WO2018233379A1 (en) Method and device for obtaining data plaintext, electronic terminal, and readable storage medium
US20140096260A1 (en) Systems and methods to provide secure storage
CN111800490A (en) Method and device for acquiring network behavior data and terminal equipment
KR100985076B1 (en) Apparatus and method for protecting data in usb devices
Huber et al. A flexible framework for mobile device forensics based on cold boot attacks
KR20170060815A (en) A Electronic Device And Method For Protecting The Kernel Space of the Memory
US8141153B1 (en) Method and apparatus for detecting executable software in an alternate data stream
de Assumpção et al. Forensic method for decrypting TPM-protected BitLocker volumes using Intel DCI
KR100846123B1 (en) Method for keyboard security and storage medium recording keyboard security driver using the method
JPWO2010032330A1 (en) Information processing apparatus and memory protection method thereof
US11899782B1 (en) Preserving DLL hooks
US8214896B2 (en) Method of securing USB keyboard
CN117938483A (en) Outgoing file protection method and device, electronic equipment and storage medium
KR20040042731A (en) File and registry monitoring method for host system
CN112182558A (en) Process protection method, marking method, device and equipment
JP2005032182A (en) Program, attack code extracting apparatus, and its method

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130708

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140708

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150708

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160708

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170707

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180712

Year of fee payment: 11