Patent ID: 8214896

Claim:
A method of securing a Universal Serial Bus (USB) keyboard, comprising: (a) selecting device objects for the USB keyboard at a USB hub driver level and a host controller miniport driver level, wherein the selecting of a device object for the USB keyboard at the host controller miniport driver level comprises: (a-1′) replacing data processing function addresses of all host controller miniport drivers with a secure keyboard service routine address; (a-2′) storing an address of an IRP transferred to the host controller miniport driver level through the device object selected at the USB hub driver level; (a-3′) waiting until the IRP whose address is stored in step (a-2′) is transferred to a host controller miniport driver, and selecting the device object to which the IRP is transferred at the host controller miniport driver level; and (a-4′) restoring the data processing function addresses of all the host controller miniport drivers replaced in step (a-1′) except a data processin function of the host controller miniport driver connected with the device object selected in step (a-3′); (b) storing an address of an Input/Output Request Packet (IRP) for a key input of the USB keyboard among IRPs passing through a device object selected at the USB hub driver level; (c) registering a completion routine of a secure keyboard in an IRP having the stored address among IRPs passing through a device object selected at the host controller miniport driver level; (d) when a key input is made from the USB keyboard, calling the registered completion routine of a secure keyboard, obtaining key data recorded in a corresponding IRP, and determining whether or not the key data is a protection target; (e) when it is determined in step (d) that the key data is a protection target, encoding the key data and deleting the original protection-target key data among input key data; and (f) decoding the encoded protection-target key data and outputting the decoded protection-target key data at a position where a user wants to input the key data.