KR20090109702A - Method and apparatus for protecting input data of usb devices - Google Patents

Method and apparatus for protecting input data of usb devices Download PDF

Info

Publication number
KR20090109702A
KR20090109702A KR1020080035071A KR20080035071A KR20090109702A KR 20090109702 A KR20090109702 A KR 20090109702A KR 1020080035071 A KR1020080035071 A KR 1020080035071A KR 20080035071 A KR20080035071 A KR 20080035071A KR 20090109702 A KR20090109702 A KR 20090109702A
Authority
KR
South Korea
Prior art keywords
usb
irp
driver
input
input data
Prior art date
Application number
KR1020080035071A
Other languages
Korean (ko)
Other versions
KR100961148B1 (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 KR1020080035071A priority Critical patent/KR100961148B1/en
Publication of KR20090109702A publication Critical patent/KR20090109702A/en
Application granted granted Critical
Publication of KR100961148B1 publication Critical patent/KR100961148B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data

Abstract

PURPOSE: A method for protecting input data of a USB device and an apparatus thereof are provided to overcome the essential weakness of a hooking method. CONSTITUTION: A method for protecting input data of a USB device comprises the following steps of: generating and transmitting an input/output request packet(IRP) in a USB input data protective mode in a filter driver(105) to an IRP queue(400) of a lower USB bus driver; calling a cancellation routine for the IRP in the filter driver; and completing the data input and conversion of status information by generating a random key in the cancellation routine of the USB bus driver.

Description

USB 디바이스의 입력 데이터 보안 방법 및 장치{METHOD AND APPARATUS FOR PROTECTING INPUT DATA OF USB DEVICES}METHOD AND APPARATUS FOR PROTECTING INPUT DATA OF USB DEVICES}

본 발명은 컴퓨터 보안 시스템에 관한 것으로, 특히 USB(Universal Serial Port) 포트를 통해 통신되는 USB 키보드(keyboard)를 포함한 모든 USB 디바이스(device)들로부터 입력되는 데이터 보안을 위해 USB 디바이스 스택 상에서 임의의 랜덤 데이터를 생성하여 사용자가 입력한 데이터와 섞이게 한 후, 랜덤 데이터를 걸러주어 사용자가 입력한 데이터만을 추출할 수 있는 USB 디바이스의 입력 데이터 보안 방법 및 장치에 관한 것이다.The present invention relates to a computer security system, and in particular to any random on the USB device stack for data security input from all USB devices, including a USB keyboard communicated through a Universal Serial Port (USB) port. The present invention relates to a method and apparatus for input data security of a USB device capable of extracting only data input by a user by generating data and mixing the same with data input by a user.

최근 들어, 인터넷(internet)을 통한 뱅킹(banking) 또는 증권 업무 등의 금융거래와, 이메일(e-mail) 또는 기밀사항이 포함된 데이터의 통신이 증가하면서 타인이 인터넷 통신보안의 취약점을 이용해 악의적인 목적으로 개인정보 또는 비밀정보 등을 빼내는 경우가 빈번하게 발생되고 있다. In recent years, as financial transactions such as banking or securities operations over the Internet, and communication of data including e-mails or confidential information have increased, others have been using malicious vulnerabilities of internet communication security. For personal purposes, there are frequent cases of extracting personal information or secret information.

이와 같은 정보유출은 각종 스파이웨어(spy ware) 또는 해킹프로그램을 통 해 이루어지고 있으며, 이들 중 대부분은 키보드와 같은 입력장치를 통해 입력되는 데이터를 중간에서 별도로 획득한 후 약속된 이메일 주소나 웹사이트(web site) 주소로 해당 데이터를 전송시키는 방식으로 이루어지고 있다. Such information leakage is made through various spyware or hacking programs, and most of them are obtained through an input device such as a keyboard and separately obtained in the middle, and then an e-mail address or a website promised. This is done by sending the data to a web site address.

도 1은 종래 USB 디바이스 데이터를 위한 드라이버 계층 구조를 도시한 도면이다. 1 is a diagram illustrating a driver hierarchy for conventional USB device data.

도 1을 참조하면, 종래에는 USB 디바이스의 한 예로서 USB 키보드 장치의 입/출력을 제어/보호하기 위해 USB 키보드 구동을 위한 클라이언트 드라이버(112) 계층에 필터 드라이버(filter driver)(104)를 설치하거나 후킹(hooking) 방법을 통해 키보드 보안을 구현하는 것이 일반적이었다. Referring to FIG. 1, a filter driver 104 is installed in a client driver 112 layer for driving a USB keyboard to control / protect an input / output of a USB keyboard device as an example of a conventional USB device. It was common to implement keyboard security either by hooking or hooking.

즉, HID(Human Interface Device) USB 드라이버(106)에 low filter로 등록되어 올라오는 데이터(키 값)를 애플리케이션에 암호화해서 올려주는 방식이다. That is, the data (key value) registered by the low filter in the HID (Human Interface Device) USB driver 106 is uploaded to the application.

다만 이러한 클라이언트 드라이버(112) 레벨의 필터방식은 클라이언트 드라이버(112) 계층보다 하위 영역에서 동작하는 패킷 분석 툴이나 키로거(key logger)에 의해 데이터를 빼앗길 수 있다는 단점이 있다. However, the client driver 112 level filter method has a disadvantage in that data may be lost by a packet analysis tool or a key logger operating in a lower region than the client driver 112 layer.

이와 같이, 최근 들어서는, 악성 코드들이 클라이언트 드라이버(112) 계층보다 하위 영역에서 동작하는 방식이 많아짐에 따라, USB 디바이스들에 대한 보안에 있어서도, 클라이언트 드라이버(112) 계층보다 하위에서 동작하는 악성 코드들에 대응하기 위해 허브 드라이버(hub driver)(102)나 USB 버스 드라이버(bus driver)(100)의 완료 루틴을 후킹하는 기술을 통해 USB 디바이스들의 입/출력 데이터를 보호하는 프로그램이 개발되고 있다.As such, in recent years, as malicious codes operate in a lower area than the client driver 112 layer, malicious codes that operate lower than the client driver 112 layer also in security for USB devices. In order to cope with this, a program for protecting input / output data of USB devices has been developed through a technique of hooking a completion routine of a hub driver 102 or a USB bus driver 100.

상기한 바와 같이 동작하는 종래 기술에 의한 USB 디바이스의 입력 데이터 보안 방식에 있어서, 클라이언트 드라이버(112) 계층 보다 하위 계층인 단인 허브 드라이버(102)나 USB 버스 드라이버(100)를 후킹하는 기술은, 이들 영역에서 동작하는 악성 코드들에 대한 대응에는 효과적이라 할 수 있으나, 여러 회사의 보안제품들이 같은 계층을 후킹함으로써 발생하는 충돌 이슈(issue)와 언로드(unload)시 후킹한 함수를 복원시키는 과정에서 시스템 크래쉬(system crash)가 발생되는 경우가 빈번히 발생하였으며, 후킹 방식의 고질적인 문제인 나중에 후킹한 모듈이 우선권을 가지는 한계점 등을 해결해야 하는 과제 또한 많았다. In the input data security method of a USB device according to the prior art operating as described above, the technique of hooking the hub driver 102 or the USB bus driver 100, which is a lower layer than the client driver 112 layer, includes these techniques. Although it can be effective to cope with malicious codes operating in the area, it is a system in the process of restoring a crash issue caused by multiple companies' security products hooking the same layer and a function hooked when unloading. There have been frequent cases of system crash, and there are also many problems that have to be solved.

또한, 위와 같이 단순히 하위 계층인 허브 드라이버(102)나 USB 버스 드라이버(100)를 후킹하는 일반적으로 알려진 방법만으로는 점점 정교화 되고 있는 악성 코드로부터 USB 디바이스들의 데이터를 보다 안정적으로 보호하기가 어렵다는 문제점이 있었다. In addition, there is a problem that it is difficult to more stably protect data of USB devices from increasingly sophisticated malicious code by simply hooking the lower layer hub driver 102 or the USB bus driver 100 as described above. .

이에 본 발명은, 컴퓨터와 같은 디지털기기 상에 USB 방식으로 연결되는 디바이스들로부터 입력되는 데이터에 대한 보안을 수행할 수 있는 USB 디바이스의 입력 데이터 보안 방법 및 장치를 제공한다. Accordingly, the present invention provides a method and apparatus for input data security of a USB device capable of performing security on data input from devices connected in a USB manner on a digital device such as a computer.

또한 본 발명은, 컴퓨터와 같은 디지털기기 상에서 USB 키보드를 포함한 모든 USB 디바이스들로부터 입력되는 데이터의 보안을 위해 커널 영역의 USB 버스 드라이버 상에서 임의의 랜덤 데이터를 생성하여 사용자가 입력한 데이터와 섞이게 하고, 이후 사용자 영역의 필터드라이버 상에서 랜덤 데이터가 섞인 사용자 입력데이터에서 랜덤 키를 걸러주어 사용자가 입력한 데이터만을 추출할 수 있는 USB 디바이스의 입력 데이터 보안 방법 및 장치를 제공한다. In addition, the present invention, for the security of data input from all USB devices including a USB keyboard on a digital device such as a computer to generate random data on the USB bus driver in the kernel area to mix with the data entered by the user, Thereafter, the present invention provides a method and device for input data security of a USB device capable of extracting only data input by a user by filtering random keys from user input data mixed with random data on a filter driver in a user area.

또한 본 발명은, USB 키보드를 포함한 모든 USB 디바이스들로부터 입력되는 데이터의 보안을 위해 USB 버스 드라이버에서 필터 드라이버로부터 전달된 IRP에 대한 취소 루틴을 호출받은 경우, 임의의 랜덤 키를 입력된 입/출력 요청 패킷(I/O Request Packet : 이하 "IRP"라 함)에 입력한 후, 상태 변경을 수행하여 키보드 입력 데이터가 포함된 IRP와 섞이게 하고, 이후 필터 드라이버 상에서 랜덤 키를 포함하는 IRP를 필터링하여 사용자가 입력한 데이터만을 추출할 수 있는 USB 디바이스의 입력 데이터 보안 방법 및 장치를 제공한다.In addition, the present invention, if the cancellation routine for the IRP delivered from the filter driver in the USB bus driver for the security of data input from all the USB devices, including the USB keyboard, input any input / output random key After inputting in the I / O Request Packet (hereinafter referred to as "IRP"), the state change is performed to mix with the IRP including the keyboard input data, and then the IRP including the random key is filtered on the filter driver. Provided are a method and an apparatus for securing input data of a USB device capable of extracting only data input by a user.

본 발명의 일 실시예 방법은, (a) 필터드라이버에서 USB 입력 데이터 보호모드 시, 입출력 요청 패킷(IRP)을 생성하여 하위 USB 버스 드라이버로 전달하는 과정과, (b) 상기 필터드라이버에서 상기 IRP에 대한 취소 루틴을 호출하는 과정과, (c) 상기 USB 버스드라이버의 취소루틴에서 랜덤 키를 생성하여 상기 IRP에 데이터 입력 및 상태 정보의 변환 수행을 완료하고, 완료된 IRP를 상기 필터드라이버로 전달하는 과정과, (d) 상기 필터드라이버에서 전달받은 IRP들을 검사하여 실제 키보드 입력 데이터만을 추출하는 과정을 포함한다. According to an embodiment of the present invention, (a) in the filter driver, in the USB input data protection mode, generating an input / output request packet (IRP) and transferring it to a lower USB bus driver; and (b) the IRP in the filter driver. (C) generating a random key from the cancellation routine of the USB bus driver to complete data input and conversion of status information to the IRP, and delivering the completed IRP to the filter driver. And (d) extracting only actual keyboard input data by examining the IRPs delivered from the filter driver.

본 발명의 일 실시예 장치는, USB 입력 데이터 보호모드 시, 입출력 요청 패 킷(IRP)을 생성하여 하위 드라이버단으로 전달한 후, 상기 IRP를 취소시키며, 상기 하위 드라이버단으로부터 완료된 IRP를 전달받은 경우, 이에 대한 검사를 수행하여 랜덤 키인 경우 이를 폐기하고, 실제 입력 데이터인 경우 이를 암호화하여 애플리케이션으로 전달하는 필터드라이버와, 상기 필터드라이버로부터 상기 IRP를 전달받고, 취소루틴을 호출받은 경우 랜덤 키를 생성하여 상기 IRP에 입력하고, 상기 IRP의 상태정보 변환을 수행하여 완료된 IRP를 상기 필터드라이버로 전달하는 USB 버스 드라이버를 포함한다.In an embodiment of the present invention, in the USB input data protection mode, after generating an input / output request packet (IRP) and delivering it to a lower driver stage, canceling the IRP, and receiving the completed IRP from the lower driver stage. In response to this, a random key is discarded and a filter driver for encrypting the actual input data is transmitted to the application, and the IRP is received from the filter driver, and a random key is generated when a cancellation routine is called. And a USB bus driver for inputting the IRP and converting the IRP state information to transfer the completed IRP to the filter driver.

본 발명에 있어서, 개시되는 발명 중 대표적인 것에 의하여 얻어지는 효과를 간단히 설명하면 다음과 같다. In the present invention, the effects obtained by the representative ones of the disclosed inventions will be briefly described as follows.

본 발명은, 컴퓨터와 같은 디지털기기 상에 USB 키보드와 같은 USB 디바이스의 입력 데이터를 보호함에 있어서, USB 버스 드라이버 단에서의 랜덤 키 생성 방식을 이용함으로써, 종래 기술인 후킹 방식의 근본적인 약점을 극복할 수 있으며, USB 디바이스의 입력 데이터를 현존하는 키로거나 키보드 보안 기술을 적용한 제품보다 안전하게 보호할 수 있는 효과가 있다.The present invention, in protecting input data of a USB device such as a USB keyboard on a digital device such as a computer, by using a random key generation method at the USB bus driver stage, can overcome the fundamental weakness of the conventional hooking method. It also protects the input data of USB devices more securely than existing keys or keyboard security technology.

이하 첨부된 도면을 참조하여 본 발명의 동작 원리를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. Hereinafter, the operating principle of the present invention will be described in detail with reference to the accompanying drawings. In the following description of the present invention, when it is determined that a detailed description of a known function or configuration may unnecessarily obscure the subject matter of the present invention, the detailed description thereof will be omitted. Terms to be described later are terms defined in consideration of functions in the present invention, and may be changed according to intentions or customs of users or operators. Therefore, the definition should be made based on the contents throughout the specification.

본 발명은 컴퓨터와 같은 디지털기기 상에서 USB 키보드를 포함한 모든 USB 디바이스들로부터 입력되는 데이터의 보안을 위해 USB 버스 드라이버 상에서 임의의 랜덤 키를 생성하여 사용자가 입력한 데이터와 섞이게 하고, 이후 사용자 영역의 필터드라이버 상에서 랜덤 키가 섞인 사용자 입력데이터에서 랜덤 키를 걸러주어 사용자가 입력한 데이터만을 추출하는 것이다. The present invention generates a random random key on the USB bus driver and mixes it with the data input by the user in order to secure data input from all USB devices including a USB keyboard on a digital device such as a computer. It extracts only the data input by the user by filtering the random key from the user input data mixed with the random keys on the driver.

즉, USB 버스 드라이버에서 필터 드라이버로부터 전달된 IRP에 대한 취소 루틴을 호출받은 경우, 임의의 랜덤 키를 입력된 IRP에 입력한 후, 상태 변경을 수행하여 키보드 입력 데이터가 포함된 IRP와 섞이게 하고, 이후 필터 드라이버 상에서 랜덤 키를 포함하는 IRP를 필터링하여 사용자가 입력한 데이터만을 추출하는 것이다. That is, when the cancellation routine for the IRP transmitted from the filter driver is called by the USB bus driver, after entering a random random key into the input IRP, the state change is performed to mix with the IRP including the keyboard input data. After that, the filter driver extracts only the data input by the user by filtering the IRP including the random key.

한편, 이하 본 발명에서는 설명의 편의상 컴퓨팅 시스템과 같은 디지털기기와 USB 포트로 연결되어 사용되는 USB 디바이스들 중 USB 키보드에 대한 입력 데이터 보안 방법에 대해서 설명할 것이나, USB 마우스(mouse), USB 조이스틱, USB 숫자키패드 등과 같은 다양한 USB 디바이스들에 대해서도 동일하게 적용될 수 있음은 본 발명의 기술분야에서 통상의 지식을 가진 자에게 자명하다. Meanwhile, in the following description of the present invention, a method of securing input data for a USB keyboard among USB devices connected to a digital device such as a computing system and a USB port will be described. However, a USB mouse, a USB joystick, It will be apparent to those skilled in the art that the same applies to various USB devices such as a USB numeric keypad.

도 2는 본 발명의 바람직한 실시 예에 따른 USB 디바이스 데이터 보안을 위한 드라이버 계층 구조도로서, 특히, USB 디바이스들 중 USB 키보드에서 입력 데이터가 발생하여 처리되는 드라이버 계층 구조를 도시한 것이다. FIG. 2 is a diagram illustrating a driver hierarchy structure for USB device data security according to an exemplary embodiment of the present invention. In particular, FIG. 2 illustrates a driver hierarchy structure in which input data is generated and processed by a USB keyboard among USB devices.

도 2를 참조하면, USB 키보드 연결을 위한 드라이버 계층 구조는, 상위 애플리케이션 계층(210)과 클라이언트 드라이버(112) 계층인 키보드 클래스 드라이버(keyboard class driver)(110), 키보드 HID 드라이버(108), HID USB 드라이버(106), 필터 드라이버(filter driver)(104) 등을 포함하며, USB 키보드(200)로부터 입력된 데이터는 USB 버스 드라이버(100), USB 허브 드라이버(102), HID USB 드라이버(106), 키보드 HID 드라이버(108), 키보드 클래스 드라이버(110)를 거쳐 상위 애플리케이션 계층(210)으로 전달된다. Referring to FIG. 2, the driver hierarchy for the USB keyboard connection may include a keyboard class driver 110, a keyboard HID driver 108, and a HID, which are upper application layer 210 and client driver 112 layers. A USB driver 106, a filter driver 104, and the like, and data input from the USB keyboard 200 includes the USB bus driver 100, the USB hub driver 102, the HID USB driver 106, and the like. The keyboard is transmitted to the upper application layer 210 via the keyboard HID driver 108 and the keyboard class driver 110.

이하, USB 키보드 입력 데이터를 처리하기 위한 장치 및 각 드라이버 계층에서의 동작을 상세히 설명하기로 한다. 먼저, 루트 허브(root hub)(202)는 USB 키보드(200)를 물리적으로 연결할 수 있는 포트(port)를 포함하며, USB 호스트 콘트롤러(host controller)(204)에 연결된다. USB 호스트 콘트롤러(204)는 PCI 버스(bus)를 통해 호스트 PC에 연결된다. Hereinafter, an apparatus for processing USB keyboard input data and an operation in each driver layer will be described in detail. First, the root hub 202 includes a port for physically connecting the USB keyboard 200 and is connected to the USB host controller 204. The USB host controller 204 is connected to a host PC via a PCI bus.

클라이언트 드라이버(112)인 키보드 클래스 드라이버(110), 키보드 HID 드라이버(108)와 HID USB 드라이버(106)는 USB 키보드가 동작하기 위해 반드시 필요한 컴퓨터 운영 시스템(operating system)에서 제공하는 3가지 드라이버로, USB 키보드(200)로부터 입력되는 데이터를 상위 애플리케이션 계층(210)으로 전달하여 키보드 입력을 인식할 수 있도록 한다. The client driver 112, the keyboard class driver 110, the keyboard HID driver 108, and the HID USB driver 106 are three drivers provided by the computer operating system that are necessary for the USB keyboard to operate. Data input from the USB keyboard 200 is transferred to the upper application layer 210 to recognize the keyboard input.

필터 드라이버(104)는 클라이언트 드라이버(112)계층에 구현되는 것으로서, 일반적으로는 애플리케이션 계층(210)으로부터 USB 디바이스 데이터 전송을 위해 생성된 IRP에 USB 디바이스에 따라 USB 키보드, USB 마우스, USB 저장장치 등으로부터의 데이터 입력임을 인식할 수 있도록 IRP 포맷(format)을 변경한다. The filter driver 104 is implemented in the client driver 112 layer, and generally includes a USB keyboard, a USB mouse, a USB storage device, etc. according to the USB device in the IRP generated for transferring the USB device data from the application layer 210. Change the IRP format to recognize that the data is from.

다만, 애플리케이션 계층(210)의 요청을 받아 운영체제가 생성하여 필터 드라이버(104)로 전달되는 IRP의 포멧은, 운영체제 및 드라이버가 사용하는 필드가 고정되어 있으므로, 키보드 데이터 입력 외에 다른 부분은 변형 할 수 없다. 이에 IRP 생성이 가능한 IRP 생성 모듈을 필터 드라이버로 등록함으로써, 애플리케이션 계층(210)으로부터 내려오는 IRP는 임시 저장하고, 자체 생성된 IRP를 USB 버스 드라이버로 전달한다. However, since the field used by the operating system and the driver is fixed in the format of the IRP generated by the operating system after being received by the application layer 210 and transmitted to the filter driver 104, other parts besides keyboard data input may be modified. none. By registering the IRP generation module capable of generating IRP as a filter driver, the IRP coming down from the application layer 210 is temporarily stored, and the self-generated IRP is transferred to the USB bus driver.

이때, 생성되는 IRP의 여분공간에 본 IRP가 페이크(Fake) 입력데이터를 포함하고 있음을 나타낼 수 있도록 함으로써, 검사를 통하여 USB 버스 드라이버로부터 전달된 IRP 중 기본 키보드 입력 데이터가 포함된 IRP와 랜덤 키가 포함된 IRP의 구별을 가능하게 할 수 있다. At this time, the IRP and the random key including the basic keyboard input data among the IRPs transmitted from the USB bus driver through inspection can be indicated by allowing the generated IRP to indicate that the IRP includes fake input data. It may be possible to distinguish between the IRP included.

루트 허브(202)에는 USB 키보드(200), USB 마우스, USB 저장장치를 포함하는 다수의 USB 디바이스가 연결되며, USB 디바이스로부터 입/출력되는 데이터를 호스트 컨트롤러(204)로 인가한다. USB 버스 드라이버(100)는 호스트 컨트롤러(204)와 PCI 버스를 통해 연결되어 다수의 USB 디바이스로부터 입력된 데이터를 애플리케이션 계층(210)으로부터 전송된 IRP에 실어 애플리케이션 계층(210)으로 전송한다. The root hub 202 is connected to a plurality of USB devices including a USB keyboard 200, a USB mouse, and a USB storage device, and applies data input / output from the USB device to the host controller 204. The USB bus driver 100 is connected to the host controller 204 through a PCI bus to transfer data input from a plurality of USB devices to the application layer 210 by loading them on the IRP transmitted from the application layer 210.

도 3은 본 발명의 바람직한 실시 예에 따른 USB 버스 드라이버의 상세 내부 구성도로, USB 버스 드라이버(100)는 미니포트 드라이버(miniport driver)(302, 304, 306)와, USB 버스 클래스 드라이버(300)를 포함한다. Figure 3 is a detailed internal configuration of the USB bus driver according to an embodiment of the present invention, the USB bus driver 100 is a miniport driver (302, 304, 306), USB bus class driver 300 It includes.

통상 컴퓨터에서 USB 디바이스의 연결을 위해서는 UHCI(USB Host Controller Interface), OHCI(Open Host Controller Interface) 2개의 호스트 콘트롤러가 존재하며, 이들을 제어하는 드라이버는 uhci 타입, ohci 타입, ehci(enhanced host controller interface) 타입의 3종류가 한다. PCI 버스 드라이버(206)가 PCI 버스에 연결된 호스트 콘트롤러를 하나씩 찾을 때마다 FDO(Functional Device Object), PDO(Physical Device Object) 데이터 구조체를 만들게 된다. 미니포트 드라이버(302, 304, 306)는 하드웨어 특성화된 작업을 다루는 드라이버로, 호스트 콘트롤러의 타입에 따라 세 가지의 드라이버(usbuhci, usbohci, usbehci)로 구성되어 각 호스트 콘트롤러를 제어하며, USB 키보드(200)를 포함한 다양한 USB 디바이스로부터 데이터 값이 입력되는 경우 데이터가 입력되었음을 노티피케이션(notification)(307)을 통해 USB 버스 클래스 드라이버(300)로 알려주게 된다. In general, two host controllers exist for connecting a USB device from a computer to a USB host controller interface (UHCI) and an open host controller interface (OHCI). The drivers controlling them are uhci type, ohci type, and enhanced host controller interface (ehci). There are three types of types. Each time the PCI bus driver 206 finds one host controller connected to the PCI bus, it creates a functional device object (FDO) and a physical device object (PDO) data structure. The miniport driver 302, 304, 306 is a driver that handles hardware-characterized tasks. It consists of three drivers (usbuhci, usbohci, and usbehci) according to the type of host controller to control each host controller. When data values are input from various USB devices including 200, the USB bus class driver 300 is notified through the notification 307.

USB 버스 클래스 드라이버(300)는 사용자 영역의 애플리케이션 계층(210)으로부터 USB 입력 데이터를 요청하는 IRP(I/O Request Packet)를 수신하여 IRP 큐에 가지고 있다가, USB 데이터 입력이 들어오면 IRP의 특정 영역에 USB 데이터 값을 넣어서 완료시킨다. 이때, USB 버스 클래스 드라이버(300)는 OS 함수 중 하나인 입/출력 완성 요청 함수(이하 IoCompleteRequest라 한다.)를 호출하여 USB 데이터 입 력을 완료시키게 된다. The USB bus class driver 300 receives an IRP (I / O Request Packet) requesting USB input data from the application layer 210 of the user area and holds it in the IRP queue. Complete the USB data value in the field. At this time, the USB bus class driver 300 completes the USB data input by calling an input / output completion request function (hereinafter referred to as IoCompleteRequest) which is one of OS functions.

도 4는 본 발명의 바람직한 실시 예에 따른 IRP 프로세싱 방식을 도시한 블록도이다. 4 is a block diagram illustrating an IRP processing scheme according to a preferred embodiment of the present invention.

도 4를 참조하면, IRP 생성 모듈을 운영 체제 내에서 필터 드라이버(105)로 등록한다. 이후 USB 입력 데이터 보호가 필요한 시점에 필터 드라이버(105)로 등록된 IRP 생성 모듈을 통해 새로운 키보드 IRP1(404)을 생성하여 하위 드라이버로 전달하게 되며, 하위 드라이버단으로 전달된 키보드 IRP1(404)은 USB 버스 드라이버(100)의 IRP 큐(400)에 들어가게 되어 임시 저장된다. Referring to FIG. 4, the IRP generation module is registered as the filter driver 105 in the operating system. Thereafter, when USB input data protection is required, a new keyboard IRP1 404 is generated and transferred to the lower driver through the IRP generation module registered as the filter driver 105, and the keyboard IRP1 404 transferred to the lower driver stage is It enters the IRP queue 400 of the USB bus driver 100 and is temporarily stored.

여기서 IRP 큐(400)는 등록된 필터드라이버(105)로부터 생성된 키보드 IRP1(404)외에도, USB 키보드 및 기타 USB 디바이스들의 데이터를 입력받기 위해 애플리케이션 계층(210)으로부터 생성된 일반적인 IRP들도 함께 전달받게 된다. In addition to the keyboard IRP1 404 generated from the registered filter driver 105, the IRP queue 400 also transmits general IRPs generated from the application layer 210 to receive data of the USB keyboard and other USB devices. Will receive.

이후 필터 드라이버(105)에서는 해당 IRP1(404)을 취소하게 된다. 그 결과 USB 버스 드라이버(100)의 IRP 큐(400)에 보관되어 있는 IRP1(404)가 취소된다. 이에 운영체제는 필터 드라이버(105)를 통하여 IRP1(404)에 등록되어 있는 USB 버스 드라이버(100)의 취소 루틴부(Cancel Routine)(402)를 호출하게 된다. The filter driver 105 then cancels the IRP1 404. As a result, the IRP1 404 stored in the IRP queue 400 of the USB bus driver 100 is canceled. Accordingly, the operating system calls the cancel routine 402 of the USB bus driver 100 registered in the IRP1 404 through the filter driver 105.

일반적으로 이러한 취소루틴을 수행하는 것은 USB 디바이스가 컴퓨터 시스템에서 접속 해제된 경우이거나, USB 디바이스를 통해 입력된 데이터를 이용하여 애플리케이션을 수행하는 도중에 애플리케이션을 종료하는 경우가 될 수 있다. 다만, 일반적으로 USB 키보드를 제어하는 경우에는 이러한 취소루틴이 수행되는 경우가 거의 없으나, 위와 같이 입력 데이터에 대한 보호를 수행하는 강제적인 취소 명 령을 수행 가능하도록 한다. In general, performing such a cancellation routine may be when the USB device is disconnected from the computer system or when the application is terminated while executing the application using data input through the USB device. However, in general, when the USB keyboard is controlled, such a cancellation routine is rarely performed. However, the forced cancellation command for protecting the input data as described above can be performed.

다만, 일반적인 취소 루틴부는 입력데이터 오류 혹은 취소 루틴 호출에 따라 IRP 내의 상태 정보를 취소(cancelled)로 설정하고, 그 외 다른 데이터의 입력없이 이를 필터드라이버로 전달함으로써, 필터드라이버에서는 IRP의 취소 정보를 확인하게 된다. 그러나 현재 USB 입력 데이터 보호가 필요한 시점인 경우에는, 필터드라이버(105) 상에서 랜덤 키 생성모듈을 포함하는 취소 루틴부(402)를 호출하게 되며, 이에 취소 루틴부(402)에서는 랜덤키를 생성하여 취소 호출된 IRP에 생성한 랜덤 키값을 입력하고, IRP 내의 상태 정보를 성공(Success)로 설정하여 필터드라이버(105)로 전달하게 된다. However, the general cancellation routine sets the state information in the IRP to canceled in response to an input data error or a call to the cancellation routine, and passes it to the filter driver without inputting any other data. You will be confirmed. However, when the current USB input data protection is required, the cancellation routine unit 402 including the random key generation module is called on the filter driver 105. The cancellation routine unit 402 generates a random key. The random key value generated in the canceled IRP is inputted, and the state information in the IRP is set as success and transmitted to the filter driver 105.

즉, 취소 루틴부(402)를 통하여 기존의 취소 IRP에 대해 랜덤 키값을 입력하고, 상태정보를 성공으로 변환을 수행하여 상위 드라이버로 전달함으로써, 이를 악성코드들이 중간에 낚아 채더라도 이 값이 랜덤 키값인지, 실제 키보드 입력 값인지 알 수 없게 된다. 다만, 필터드라이버(105)에서는 전달받은 IRP의 필드 검사 시 특정 영역에 삽입된 페이크 정보를 통하여 구별이 가능하다. In other words, by entering a random key value for the existing cancellation IRP through the cancellation routine unit 402, converts the status information to success, and passes it to the upper driver, even if the malicious code is caught in the middle of the random value It is not known whether it is a key value or an actual keyboard input value. However, the filter driver 105 may distinguish the fake information through the fake information inserted in a specific region when checking the received IRP field.

도 5는 본 발명의 바람직한 실시 예에 따른 USB 버스 드라이버에서의 랜덤 키 생성 방식을 도시한 블록도이다. 5 is a block diagram illustrating a random key generation method in a USB bus driver according to an exemplary embodiment of the present invention.

도 5를 참조하면, 필터드라이버(105)로부터 USB 버스 드라이버(100)의 취소 루틴(402)이 호출될 때, 취소 루틴(402) 내에서 랜덤 키 값을 생성하고, 해당 IRP1(404)을 마치 사용자가 키보드를 눌러서 입력한 것처럼 키보드 데이터를 입력하여 데이터 입력 완료 요청을 수행한다. 구체적으로 IRP 큐(400)에 저장되는 IRP 는 0byte에 가까우나, 키보드로부터 입력데이터가 IRP에 입력되는 경우에는 일정한 바이트 용량을(예컨대, 8byte) 가지게 된다. 그러므로 취소 루틴(402)에서는 전달받은 IRP 상에 생성된 랜덤 키 값을 입력하고, 상태 변환을 수행함으로써, IRP는 키보드 입력 시와 같은 바이트 용량인, 8byte를 가지게 된다. 5, when the cancellation routine 402 of the USB bus driver 100 is called from the filter driver 105, a random key value is generated within the cancellation routine 402, and the corresponding IRP1 404 is finished. As the user presses the keyboard, the keyboard data is input to perform the data input completion request. Specifically, the IRP stored in the IRP queue 400 is close to 0 bytes, but when input data is input to the IRP from the keyboard, the IRP has a constant byte capacity (for example, 8 bytes). Therefore, the cancellation routine 402 inputs a random key value generated on the received IRP, and performs state transition, so that the IRP has 8 bytes, which is the same byte capacity as that of the keyboard input.

예를 들어, 보안이 필요한 시점에 입력할 비밀번호가 "KOREA"인 경우, 사용자가 실제 키보드에 입력하는 데이터는 기존대로 수행하면서, 실제 비밀번호가 입력되는 동안데, 취소 루틴(402)내에서는 계속적으로 랜덤키를 생성하여 실제 데이터 값과 함께 무작위적으로 필터드라이버(105)에 전달된다. 즉, 하나의 IRP에 하나의 키 값이 저장된다면, 필터드라이버(105)에는 K, O, R, E, A를 포함하는 각각의 IRP를 전달받는 동시에 다른 영문자 및 숫자 키 등이 포함된 IRP도 전달받게 된다. For example, if the password to be entered when security is required is "KOREA", the data entered by the user on the actual keyboard is performed while the actual password is input, while in the cancellation routine 402. A random key is generated and randomly transmitted to the filter driver 105 along with the actual data value. That is, if one key value is stored in one IRP, the filter driver 105 receives each IRP including K, O, R, E, A, and at the same time, the IRP including other alphabetic and numeric keys. You will be delivered.

이와 같이 생성된 랜덤 키가 IRP1(404)에 입력되는 경우는, 키보드 입력 데이터에 대한 보안이 필요한 경우로서, 이러한 입력데이터 보안이 필요한 시점에 필터 드라이버(105)에서 IRP1(404)을 생성하여 USB 버스 드라이버(100)로 전달하고, 전달된 IRP1(404)에 대한 취소 루틴(402)을 호출하게 된다. 여기서, 키보드 입력 데이터에 대한 보안이 필요한 경우는 인터넷 뱅킹 또는 특정 홈페이지 로그인 시에 비밀번호를 입력하는 등과 같이 사용자가 키보드를 통해 중요한 데이터를 입력하게 되는 시점에 애플리케이션 계층에서 이를 인식하여 필터드라이버(105) 상에서 IRP 생성 및 취소루틴(402) 호출을 수행하게 되며, 이러한 취소 루틴(402) 호출 및 IRP 포멧 변경은 입력데이터 보안이 필요한 시점 즉, 비밀번호 입력 시점에 기 설정된 횟수만큼(예컨대, 1초에 20번 내지 30번) 수행된다. When the random key generated as described above is input to the IRP1 404, the security of the keyboard input data is required. When the input data security is required, the filter driver 105 generates the IRP1 404 to generate the USB. It passes to the bus driver 100 and calls the cancellation routine 402 for the delivered IRP1 404. In this case, when the security of the keyboard input data is required, the filter driver 105 recognizes this in the application layer when the user inputs important data through the keyboard, such as inputting a password at the time of internet banking or a specific homepage login. The IRP generation and cancellation routine 402 call is executed on the screen, and the cancellation routine 402 call and the IRP format change are performed a predetermined number of times (for example, 20 per second) when input data security is required. To 30 times).

이에, USB 버스 클래스 드라이버(300)에 의해 호출된 IoCompleteRequest 함수(408)는 HID USB 드라이버(106), 필터 드라이버(104), 허브 드라이버(102)들이 각각 등록한 콜백 함수(call back function)(410)를 차례로 호출하여 IRP가 완료되었음을 알리게 된다. Accordingly, the IoCompleteRequest function 408 called by the USB bus class driver 300 is a call back function 410 registered by the HID USB driver 106, the filter driver 104, and the hub driver 102, respectively. In turn, you will be notified that the IRP is complete.

이후, 완료된 IRP1'(406)는 임의로 생성된 랜덤 키를 담고 있으며, 필터드라이버(105)에서 완료된 IRP들 중에서 랜덤 키가 포함된 IRP에 대한 검사를 통하여 랜덤 키가 입력된 IRP는 폐기하게 된다. 그리고 확인된 실제 키보드 입력 데이터가 포함된 IRP는 암호화하여 애플리케이션 계층(210)으로 전달하거나, 네트워크를 통해 필요한 다른 서버로 전송한다. Thereafter, the completed IRP1 '406 contains a randomly generated random key, and the IRP in which the random key is input is discarded by checking the IRP including the random key among the completed IRPs in the filter driver 105. The IRP including the confirmed actual keyboard input data is encrypted and transmitted to the application layer 210 or transmitted to another server through a network.

도 6은 본 발명의 바람직한 실시예에 따른 필터 드라이브 및 USB 버스 드라이버 단에서 키보드 데이터의 보안 수행 절차를 도시한 흐름도이다. FIG. 6 is a flowchart illustrating a procedure for performing security of keyboard data in a filter drive and a USB bus driver stage according to an exemplary embodiment of the present invention.

도 6을 참조하면, 예를 들어 컴퓨터를 이용하여 은행 서버로 뱅킹 서비스를 위한 사용자 아이디, 계좌번호, 비밀번호 등과 같이 사용자가 USB 키보드를 통해 중요한 데이터를 입력하게 되는 경우, 애플리케이션에서는 키보드로부터의 입력데이터를 보호해야 하는 시점으로 인식하게 된다. Referring to FIG. 6, when a user inputs important data through a USB keyboard such as a user ID, an account number, and a password for a banking service using a computer, the application may input data from the keyboard. It will be recognized as a time to protect.

예를 들어, 사용자가 비밀번호 입력을 위해 컴퓨터 애플리케이션 화면상 비밀번호 입력창에 커서를 위치시키는 경우 컴퓨터에 설치된 애플리케이션에서는 커서가 비밀번호 입력창에 위치됨을 인식하여 키보드 데이터의 보호 시점으로 인식하게 된다. For example, when a user places a cursor in a password input window on a computer application screen to input a password, an application installed in the computer recognizes that the cursor is located in the password input window and recognizes it as a protection point of keyboard data.

위와 같이, 키보드 입력데이터의 보호 시점을 인식하는 경우 필터드라이 버(104) 에서는 600단계에서 키보드 데이터 보호 모드로 설정되어, 이후 사용자에 의해 USB 키보드를 통해 입력되는 키보드 데이터를 보호하기 위한 단계별 동작을 수행하게 된다. As described above, when the protection time of the keyboard input data is recognized, the filter driver 104 is set to the keyboard data protection mode in step 600, and thereafter, a step-by-step operation for protecting the keyboard data input by the user through the USB keyboard is performed. Will perform.

물론 기본 설정을 키보드 데이터 보호 모드로 유지시키는 경우에는 키보드로부터 입력되는 모든 입력 데이터에 대한 보안 처리를 수행하는 것도 가능하다. Of course, if the default setting is kept in the keyboard data protection mode, it is also possible to perform security processing on all input data input from the keyboard.

이에 애플리케이션에서는 602단계에서 IRP 생성모듈인 필터 드라이버(105)를 구동하고, 취소루틴(402)내의 랜덤키 발생 모듈을 구동하는 것으로서, 구동된 필터 드라이버(105)에서는 604단계에서 새로운 키보드 IRP를 생성하여 하위 드라이브로 전달한다. 하위 드라이브 단으로 전달된 키보드 IRP는 USB 버스 드라이버(100)의 IRP 큐(400)에 전달된다. Accordingly, the application drives the filter driver 105, which is an IRP generation module, in step 602, and drives a random key generation module in the cancellation routine 402. The driven filter driver 105 generates a new keyboard IRP in step 604. To the lower drive. The keyboard IRP transferred to the lower drive stage is transferred to the IRP queue 400 of the USB bus driver 100.

이후, 필터 드라이버(105)에서는 606단계에서 하위 드라이버로 전달한 키보드 IRP를 취소하게 된다. 이때 운영체제는 해당 IRP에 등록되어 있는 USB 버스 드라이버(100)의 취소 루틴(Cancel Routine)(402)을 호출하게 된다. Thereafter, the filter driver 105 cancels the keyboard IRP transmitted to the lower driver in step 606. At this time, the operating system calls the cancel routine 402 of the USB bus driver 100 registered in the corresponding IRP.

610단계에서 USB 버스 드라이버(100)의 취소 루틴(402) 내에서는 랜덤 키를 생성하고, 이를 IRP에 키보드 입력데이터와 동일한 데이터 용량의 랜덤 키를 입력하며,  상태 정보를 성공으로의 변환을 수행한 후, 데이터 입력 완료 요청(IoComplete Request)을 수행한다. 이와 같이 취소루틴을 통해 랜덤키가 입력된 IRP, 기존 방식을 통해 실제 키보드 데이터가 입력된 IRP는 각각 데이터 입력 완료 요청을 통하여 키보드 데이터 입력 완료를 수행하고, In step 610, a random key is generated in the cancellation routine 402 of the USB bus driver 100, a random key having the same data capacity as the keyboard input data is input to the IRP, and the state information is converted into success. After that, a data input completion request is performed. In this way, the IRP with random key input through the cancellation routine and the IRP with actual keyboard data input through the conventional method respectively complete the keyboard data input through the data input completion request.

완료된 IRP는 필터드라이버(105)로 전달되고, 필터드라이버(105)는 612단계 에서 완료된 IRP들 중에서 랜덤 키가 포함된 IRP에 대한 검사를 수행하는 것으로서, 614단계에서 IRP에 입력된 데이터가 사용자가 입력된 키 인지를 검사하여 IRP에 입력된 데이터가 랜덤 키인 경우는 616단계로 진행하여 랜덤 키가 포함된 IRP를 폐기하게 된다. The completed IRP is transmitted to the filter driver 105, and the filter driver 105 performs a check on the IRP including the random key among the completed IRPs in step 612. In step 614, the data input to the IRP is input by the user. If the data input to the IRP is a random key by checking whether the key is input, the process proceeds to step 616 where the IRP including the random key is discarded.

이와 같은 방식으로 각각의 IRP에 대한 검사를 통하여 실제 사용자가 입력한 즉, 키보드를 통한 입력 데이터가 포함된 IRP인 경우, 618단계로 진행하여 키보드 입력 데이터를 암호화하여 애플리케이션 계층(210)으로 전달하거나, 네트워크를 통해 필요한 다른 서버로 전송한다. In this way, if the IRP is input by the actual user through the inspection of each IRP, that is, the input data through the keyboard, the flow proceeds to step 618 to encrypt the keyboard input data and deliver it to the application layer 210 or It then sends it over the network to other servers as needed.

이상 설명한 바와 같이, 본 발명은 모든 USB 디바이스들로부터 입력되는 데이터의 보안을 위해 USB 디바이스 스택상에서 임의의 랜덤 데이터를 생성하여 사용자가 입력한 데이터와 섞이게 하고, 이후 랜덤 데이터가 섞인 사용자 입력데이터에서 랜덤 키를 걸러주어 사용자가 입력한 데이터만을 추출한다. As described above, the present invention generates random data on the USB device stack and mixes it with the data input by the user for the security of data input from all the USB devices, and then randomly mixes the random data in the user input data. Filter the key to extract only the data entered by the user.

한편 본 발명의 상세한 설명에서는 구체적인 실시예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되지 않으며, 후술되는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.Meanwhile, in the detailed description of the present invention, specific embodiments have been described, but various modifications are possible without departing from the scope of the present invention. Therefore, the scope of the present invention should not be limited to the described embodiments, but should be defined not only by the scope of the following claims, but also by those equivalent to the scope of the claims.

도 1은 종래 USB 디바이스 데이터를 위한 드라이버 계층 구조도, 1 is a diagram illustrating a driver hierarchy for conventional USB device data;

도 2는 본 발명의 실시 예에 따른 USB 디바이스 데이터 보안을 위한 드라이버 계층 구조도, 2 is a diagram illustrating a driver hierarchy structure for USB device data security according to an embodiment of the present invention;

도 3은 본 발명의 바람직한 실시 예에 따른 USB 버스 드라이버의 내부 구조도, 3 is an internal structure diagram of a USB bus driver according to an embodiment of the present invention;

도 4는 본 발명의 바람직한 실시 예에 따른 IRP 프로세싱 방식을 도시한 블록도, 4 is a block diagram showing an IRP processing scheme according to a preferred embodiment of the present invention;

도 5는 본 발명의 바람직한 실시 예에 따른 USB 버스 드라이버에서의 랜덤 키 생성 방식을 도시한 블록도, 5 is a block diagram showing a random key generation method in a USB bus driver according to an embodiment of the present invention;

도 6은 본 발명의 바람직한 실시예에 따른 USB 디바이스 데이터의 보안절차를 도시한 흐름도.6 is a flowchart illustrating a security procedure for USB device data according to a preferred embodiment of the present invention.

<도면의 주요 부호에 대한 간략한 설명><Brief description of the major symbols in the drawings>

100 : USB 버스 드라이버       104, 105 : 필터 드라이버 100: USB bus driver 104, 105: Filter driver

106 : HID USB 드라이버       108 : 키보드 HID 드라이버 106: HID USB Driver 108: Keyboard HID Driver

110 : 키보드 클래스 드라이버   200 : USB 키보드 110: Keyboard Class Driver 200: USB Keyboard

202 : 루트 허브                204 : 호스트 콘트롤러 202: Root Hub 204: Host Controller

300 : USB 버스 클래스 드라이버 300: USB Bus Class Driver

302, 304, 306 : 미니포트 드라이버 302, 304, 306: Miniport Driver

404, 406 : IRP  404, 406: IRP

Claims (10)

(a) 필터드라이버에서 USB 입력 데이터 보호모드 시, 입출력 요청 패킷(IRP)을 생성하여 하위 USB 버스 드라이버의 IRP 큐(Queues)로 전달하는 과정과, (a) a process of generating an input / output request packet (IRP) and transferring it to the IRP queues of the lower USB bus driver in the USB driver data protection mode; (b) 상기 필터드라이버에서 상기 IRP에 대한 취소 루틴을 호출하는 과정과, (b) invoking a cancellation routine for the IRP in the filter driver; (c) 상기 USB 버스드라이버의 취소루틴에서 랜덤 키를 생성하여 상기 IRP에 데이터 입력 및 상태 정보의 변환 수행을 완료하고, 완료된 IRP를 상기 필터드라이버로 전달하는 과정과, (c) generating a random key from the cancellation routine of the USB bus driver to complete data input and conversion of state information to the IRP, and transferring the completed IRP to the filter driver; (d) 상기 필터드라이버에서 전달받은 IRP들을 검사하여 실제 키보드 입력 데이터만을 추출하는 과정 (d) process of extracting only actual keyboard input data by examining the IRPs received from the filter driver 을 포함하는 USB 디바이스의 입력 데이터 보안 방법. Input data security method of a USB device comprising a. 제 1항에 있어서, The method of claim 1, 상기 방법은, The method, USB 디바이스가 디지털기기 상에 접속된 상태에서 USB 입력 데이터 보호모드 시,  상기 디지털기기의 운영체제 내에 입출력 요청 패킷(IRP) 생성 모듈을 포함한 필터 드라이버를 등록하는 과정과, In the USB input data protection mode while the USB device is connected on the digital device, registering a filter driver including an input / output request packet (IRP) generation module in the operating system of the digital device; 포멧 내에 페이크(fake) 정보가 포함된 IRP를 생성하는 IRP 생성 모듈을 상기 필터드라이버로 등록하는 과정 Registering an IRP generation module for generating an IRP including fake information in a format as the filter driver 을 포함하는 것을 특징으로 하는 USB 디바이스의 입력 데이터 보안 방법. Input data security method of a USB device comprising a. 제 1항에 있어서, The method of claim 1, 상기 (c) 과정은, Step (c) is, 상기 필터드라이버로부터 취소 루틴이 호출된 경우, 랜덤 키를 생성하는 과정과, Generating a random key when a cancellation routine is called from the filter driver; 상기 생성된 랜덤 키를 상기 IRP에 입력한 후, 상기 IRP 내의 상태정보를 취소에서 성공으로 변환한 후, 상기 IRP 완료를 수행하는 과정 Inputting the generated random key to the IRP, converting state information in the IRP from cancellation to success, and then performing the IRP completion 을 포함하는 것을 특징으로 하는 USB 디바이스의 입력 데이터 보안 방법. Input data security method of a USB device comprising a. 제 1항에 있어서, The method of claim 1, 상기 USB 입력 데이터 보호모드는, The USB input data protection mode, 상기 필터드라이버에서 상기 컴퓨터상에 실행되는 애플리케이션 화면 중 데이터 입력창에 커서가 위치하는 경우 이를 인식하여 USB 데이터 보호모드를 수행하는 것을 특징으로 하는 USB 디바이스의 입력 데이터 보안 방법. And a USB data protection mode by recognizing when a cursor is located in a data input window among application screens executed on the computer in the filter driver. 제 1항에 있어서, The method of claim 1, 상기 USB 입력 데이터는, The USB input data is, USB 키보드, USB 마우스, USB 조이스틱, USB 숫자키패드를 포함하는 USB로 접속된 디바이스로부터 입력되는 데이터인 것을 특징으로 하는 USB 디바이스의 입력 데이터 보안 방법. And a data input from a USB connected device including a USB keyboard, a USB mouse, a USB joystick, and a USB numeric keypad. USB 입력 데이터 보호모드 시, 입출력 요청 패킷(IRP)을 생성하여 하위 드라이버단으로 전달한 후, 상기 IRP를 취소시키며, 상기 하위 드라이버단으로부터 완료된 IRP를 전달받은 경우, 이에 대한 검사를 수행하여 랜덤 키인 경우 이를 폐기하고, 실제 입력 데이터인 경우 이를 암호화하여 애플리케이션으로 전달하는 필터드라이버와, In the USB input data protection mode, after generating an input / output request packet (IRP) and delivering it to the lower driver stage, the IRP is canceled, and when the completed IRP is received from the lower driver stage, the check is performed to perform a random key. Filter driver that discards it and encrypts it if it is actual input data to the application, 상기 필터드라이버로부터 상기 IRP를 전달받고, 취소루틴을 호출받은 경우 랜덤 키를 생성하여 상기 IRP에 입력하고, 상기 IRP의 상태정보 변환을 수행하여 완료된 IRP를 상기 필터드라이버로 전달하는 USB 버스 드라이버 When the IRP is received from the filter driver and a cancellation routine is called, a USB bus driver generating a random key and inputting the IRP, converting the status information of the IRP, and delivering the completed IRP to the filter driver 를 포함하는 USB 디바이스의 입력 데이터 보안 장치. Input data security device of the USB device comprising a. 제 6항에 있어서, The method of claim 6, 상기 USB 버스 드라이버는, The USB bus driver, 상기 필터드라이버로부터 상기 IRP를 전달받아 저장하는 IRP 큐와, An IRP queue receiving and storing the IRP from the filter driver; 상기 필터드라이버로부터 취소 루틴이 호출된 경우, 랜덤키 생성모듈을 통하여 랜덤 키를 생성하고, 생성된 랜덤 키를 상기 IRP에 입력한 후, 상기 IRP 내의 상태정보를 취소에서 성공으로 변환하며, 입출력 완료 요청(IoCompleteRequest) 함수의 호출을 통하여 상기 랜덤 키가 입력된 IRP의 완료를 수행하는 취소 루틴부 When a cancellation routine is called from the filter driver, a random key is generated through a random key generation module, the generated random key is input to the IRP, and the state information in the IRP is converted from cancellation to success, and input / output completion Cancel routine for performing completion of the IRP inputted by the random key through a call to the request (IoCompleteRequest) function 를 포함하는 USB 디바이스의 입력 데이터 보안 장치. Input data security device of the USB device comprising a. 제 6항에 있어서, The method of claim 6, 상기 필터드라이버는, The filter driver, 포멧 내에 페이크(fake) 정보가 포함된 IRP를 생성하는 IRP 생성 모듈을 포함하는 것을 특징으로 하는 USB 디바이스의 입력 데이터 보안 장치. And an IRP generation module for generating an IRP including fake information in the format. 제 6항에 있어서, The method of claim 6, 상기 USB 입력 데이터 보호모드는, The USB input data protection mode, 상기 필터드라이버에서 상기 컴퓨터상에 실행되는 애플리케이션 화면 중 데이터 입력창에 커서가 위치하는 경우 이를 인식하여 USB 데이터 보호모드를 수행하는 것을 특징으로 하는 USB 디바이스의 입력 데이터 보안 장치. And a USB data protection mode by recognizing when a cursor is located in a data input window among application screens executed on the computer in the filter driver. 제 6항에 있어서, The method of claim 6, 상기 USB 입력 데이터는, The USB input data is, USB 키보드, USB 마우스, USB 조이스틱, USB 숫자키패드를 포함하는 USB로 접속된 디바이스로부터 입력되는 데이터인 것을 특징으로 하는 USB 디바이스의 입력 데이터 보안 장치.An input data security device of a USB device, characterized in that the data is input from a USB connected device including a USB keyboard, a USB mouse, a USB joystick, and a USB numeric keypad.
KR1020080035071A 2008-04-16 2008-04-16 Method and apparatus for protecting input data of usb devices KR100961148B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080035071A KR100961148B1 (en) 2008-04-16 2008-04-16 Method and apparatus for protecting input data of usb devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080035071A KR100961148B1 (en) 2008-04-16 2008-04-16 Method and apparatus for protecting input data of usb devices

Publications (2)

Publication Number Publication Date
KR20090109702A true KR20090109702A (en) 2009-10-21
KR100961148B1 KR100961148B1 (en) 2010-06-08

Family

ID=41537614

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080035071A KR100961148B1 (en) 2008-04-16 2008-04-16 Method and apparatus for protecting input data of usb devices

Country Status (1)

Country Link
KR (1) KR100961148B1 (en)

Also Published As

Publication number Publication date
KR100961148B1 (en) 2010-06-08

Similar Documents

Publication Publication Date Title
US11093604B2 (en) Personalized and cryptographically secure access control in trusted execution environment
US11188652B2 (en) Access management and credential protection
US8370899B2 (en) Disposable browser for commercial banking
EP2936369B1 (en) Verification of password using a keyboard with a secure password entry mode
JP6239788B2 (en) Fingerprint authentication method, apparatus, intelligent terminal, and computer storage medium
US8176324B1 (en) Method and system for a secure virtual keyboard
US9047486B2 (en) Method for virtualizing a personal working environment and device for the same
KR100861104B1 (en) Apparatus and method for preservation of usb keyboard
US20070199058A1 (en) Method of using a security token
EP2202662A1 (en) Portable security device protecting against keystroke loggers
EP2181394B1 (en) Method of protecting input/output packet of usb device and apparatus thereof
WO2004081792A1 (en) Method and apparatus for protecting secure credentials on an untrusted computer platform
MX2011002423A (en) Authorization of server operations.
US20130104220A1 (en) System and method for implementing a secure USB application device
CN106850503A (en) One kind is exempted to log in identity identifying method and device
CN107403152A (en) High-pass platform TrustZone fingerprint recognition realization method and systems
KR100985076B1 (en) Apparatus and method for protecting data in usb devices
JP2009517732A (en) Method and system for security of input data using USB keyboard
CN105678165A (en) Sandboxing keyboard system of mobile terminal and data transmitting method of sandboxing keyboard system
CN116192493A (en) Online banking safety protection method, system, medium, equipment and terminal
KR100961148B1 (en) Method and apparatus for protecting input data of usb devices
KR100537930B1 (en) Guarding method for input data by usb keyboard and guarding system
CN103297399A (en) Method and system for improving safety of intelligent secret key equipment
US8214896B2 (en) Method of securing USB keyboard
CN105141623A (en) Control method of electronic account, control system and mobile terminal

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130527

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140526

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150526

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160526

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170526

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180607

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190527

Year of fee payment: 10