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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/83—Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring 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
Description
도 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
도 3은 본 발명의 바람직한 실시예에 따른 USB 키보드 보안 방법이 적용된 키보드 보안 드라이버(20)의 구성을 개략적으로 도시한 블록도이다. 3 is a block diagram schematically illustrating a configuration of a
도 3을 참조하면, 본 발명에 따른 키보드 보안 드라이버(20)는 보안 드라이버 설치 모듈(200), 설정 변경 감시 모듈(210), 보호 디바이스 목록 데이터베이스(230), 보안용 장치 제어 함수(240), 보안용 디바이스 연결 해지 처리 함수(250), 장치기술자 판독 함수 및 새장치기술자 처리 함수(270)를 포함한다. Referring to FIG. 3, the
도 4는 상기 보안 드라이버 설치 모듈(200)의 내부 구성을 개략적으로 도시한 블록도이다. 상기 보안 드라이버 설치 모듈(200)은, 도 4에 도시된 바와 같이, 보호 디바이스 등록부(202), 장치 제어 함수 설치부(204), 디바이스 연결 해지 처리 함수 설치부(206)를 구비한다. 4 is a block diagram schematically illustrating an internal configuration of the security
상기 보안 드라이버 설치 모듈(200)의 보호 디바이스 등록부(202)는 USB 허브 드라이버에 저장되어 있는 디바이스 객체들을 검색하고, 검색된 디바이스 객체들 중 키보드 장치를 나타내는 디바이스 객체를 찾고, 해당 객체를 상기 보호 디바이스 목록 데이터베이스(230)에 등록한다.The protected
이때, 키보드 장치인지를 확인하기 위하여, "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
상기 보안 드라이버 설치 모듈(200)의 디바이스 연결 해지 처리 함수 설치부(206)는, USB 허브 드라이버의 IRP 디스패치 테이블에 있어서 IRP가 키보드 장치의 연결이 해제되었음을 알리는 IRP_MJ_PNP인 경우에 호출되는 함수를 상기 보안용 디바이스 연결 해지 처리 함수(250)로 변경한다. 따라서, USB 허브 드라이버로 "IRP_MJ_INTERNAL_DEVICE_CONTROL"인 IRP 가 전달되는 경우, 상기 키보드 보안 드라이버에 포함된 상기 디바이스 연결 해지 처리 함수(250)가 호출되어 실행된다. The device connection release processing
상기 설정 변경 감시 모듈(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
상기 보호 디바이스 목록 데이터베이스(230)는 상기 키보드 보안 드라이버에 의해 입력데이터를 보호할 입출력 디바이스들에 대한 목록을 저장 및 관리한다. 상기 보호 디바이스 목록 데이터베이스는 상기 보안 드라이버 설치 모듈의 실행에 의해 설치 초기에 USB 허브 드라이버에 연결된 디바이스 객체들에 대한 정보를 등록하며, 상기 보안용 장치 제어 함수의 새장치기술자 처리 함수의 실행에 의해 초기 설치 이후에 추가적으로 USB 허브 드라이버에 연결되는 디바이스 객체들에 대한 정보를 등록하게 된다. 또한, 상기 보호 디바이스 목록 데이터베이스는 상기 보안용 디바이스 연결 해지 처리 함수(250)의 실행에 의해 연결이 해제된 해당 디바이스 객체를 삭제하게 된다. The protected
도 5는 본 발명에 따른 상기 보안용 장치 제어 함수(240)의 처리 과정을 설명하기 위하여 도시한 흐름도이다. 도 5를 참조하면, 상기 보안용 장치 제어 함수(240)는 상기 IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드 및 URB 기능 코드를 확인한다(단계 500).5 is a flowchart illustrating a process of the security
만약, 제어 코드 및 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
먼저, 해당 디바이스 드라이버가 활성화되어 있는지 여부를 확인한다(단계 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
먼저, 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
이상에서 본 발명에 대하여 그 바람직한 실시예를 중심으로 설명하였으나, 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 발명의 본질적인 특성을 벗어나지 않는 범위에서 이 상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 그리고, 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다. 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)
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)
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)
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 |
-
2006
- 2006-10-24 KR KR1020060103248A patent/KR100846123B1/en active IP Right Grant
Cited By (1)
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 |