KR101146180B1 - apparatus for securing user information - Google Patents
apparatus for securing user information Download PDFInfo
- Publication number
- KR101146180B1 KR101146180B1 KR1020090029362A KR20090029362A KR101146180B1 KR 101146180 B1 KR101146180 B1 KR 101146180B1 KR 1020090029362 A KR1020090029362 A KR 1020090029362A KR 20090029362 A KR20090029362 A KR 20090029362A KR 101146180 B1 KR101146180 B1 KR 101146180B1
- Authority
- KR
- South Korea
- Prior art keywords
- virtual keyboard
- operating system
- message
- interface
- virtual
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6281—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
-
- 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
-
- 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/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
본 발명은 사용자정보 보안 기능을 갖는 컴퓨터 장치에 관한 것으로, 특히 운영체제와는 독립되는 사용자 인터페이스를 제공함으로써, 운영체제를 통한 해킹으로부터 사용자정보를 안전하게 지킬 수 있도록 한 사용자정보 보안 기능을 갖는 컴퓨터 장치에 관한 것이다.The present invention relates to a computer device having a user information security function, and more particularly, to a computer device having a user information security function to secure user information from hacking through the operating system by providing a user interface independent of the operating system. will be.
본 발명의 사용자정보 보안 기능을 갖는 컴퓨터 장치는 사용자 입력에 대하여 이벤트를 발생하는 사용자 입력 인터페이스; 이미지 데이터를 아날로그 신호로 변환하여 모니터로 출력하고, 비디오 오버레이를 수행하며 오버레이 영역에 표시되는 이미지를 상기 모니터에 출력시키는 비디오 인터페이스; 상기 사용자 입력 인터페이스의 이벤트를 접수하여 그에 상응하는 메시지를 발생하고, 상기 메시지의 처리 결과에 따른 화면이 상기 모니터에 출력되도록 상기 비디오 인터페이스를 제어하는 운영체제; 키들의 위치가 표시될 때마다 변하는 가상 키보드를 생성하는 가상 키보드 모듈; 및 상기 가상 키보드 모듈에 의해 생성되는 상기 가상 키보드의 표시에 대해서 상기 운영체제를 대신하여 상기 비디오 인터페이스를 제어하며, 상기 운영체제의 메시지를 후킹하고, 상기 후킹한 메시지가 상기 가상 키보드 모듈과 관련있는 경우에는 상기 운영체제를 대신하여 상기 후킹한 메시지를 상기 가상 키보드 모듈에 전달하며, 상기 가상 키보드 모듈에 의해 상기 후킹한 메시지에 따라 상기 가상 키보드의 키 입력박스 내에 해당 키보드 값을 표시하여 생성되는 가상 키보드의 표시에 대해서 상기 운영체제를 대신하여 상기 비디오 인터페이스를 제어하는 가상 인터페이스 모듈을 포함하여 이루어진다.A computer apparatus having a user information security function of the present invention includes a user input interface for generating an event for a user input; A video interface for converting image data into an analog signal and outputting the image signal to a monitor, performing a video overlay, and outputting an image displayed on an overlay area to the monitor; An operating system configured to receive an event of the user input interface, generate a corresponding message, and control the video interface to output a screen according to a processing result of the message to the monitor; A virtual keyboard module for generating a virtual keyboard that changes whenever the positions of the keys are displayed; And controlling the video interface on behalf of the operating system with respect to the display of the virtual keyboard generated by the virtual keyboard module, hooking a message of the operating system, and if the hooked message is associated with the virtual keyboard module. A display of a virtual keyboard generated by transferring the hooked message to the virtual keyboard module on behalf of the operating system and displaying a corresponding keyboard value in a key input box of the virtual keyboard according to the hooked message by the virtual keyboard module; It includes a virtual interface module for controlling the video interface on behalf of the operating system.
해킹, 보안, 운영체제, 가상 키보드, 랜덤, 오버레이, 후킹 Hacking, Security, Operating System, Virtual Keyboard, Random, Overlay, Hooking
Description
본 발명은 사용자정보 보안 기능을 갖는 컴퓨터 장치에 관한 것으로, 특히 운영체제와는 독립되는 사용자 인터페이스를 제공함으로써, 운영체제를 통한 해킹으로부터 사용자정보를 안전하게 지킬 수 있도록 한 사용자정보 보안 기능을 갖는 컴퓨터 장치에 관한 것이다.The present invention relates to a computer device having a user information security function, and more particularly, to a computer device having a user information security function to secure user information from hacking through the operating system by providing a user interface independent of the operating system. will be.
오늘날, 퍼스널 컴퓨터(PC)의 보급 확대 및 인터넷의 확산은 인터넷 사용의 대중화를 불러 왔다. 그리고, 최근 들어서는 ADSL 수준의 품질과 비용으로 정지 또는 저속 이동 중에도 고속 인터넷 접속할 수 있는 무선 인터넷 서비스인 '휴대인터넷'(WiBro 또는 WiMax)의 상용화는 인터넷의 이용 범위를 넓히는데 일조하고 있다. 즉, 온라인 상에서 구현되는 가상 세계는 언제 어디서나 각종 정보를 쉽고 빠르게 공유할 수 있는 하나의 거대한 정보의 바다가 되고 있다.Today, the proliferation of personal computers (PCs) and the spread of the Internet have led to the popularization of Internet use. In recent years, the commercialization of 'Wireless Internet' (WiBro or WiMax), a wireless Internet service that provides high-speed Internet access even during stationary or low-speed travel at an ADSL level of quality and cost, has helped to widen the range of use of the Internet. In other words, the virtual world implemented on-line becomes a huge sea of information that can easily and quickly share a variety of information anytime, anywhere.
이와 같은 인터넷의 대중화에 따라 각종 금융이나 상품 거래가 인터넷을 통해 활발하게 이루어지고 있다. 그러나, 그 이면을 보면 남의 컴퓨터 시스템에 침입하여 정보를 빼내 가는 해킹도 갈수록 지능화되어가고 있는 실정이다. 특히, 사용 자 정보를 빼내 가는 해킹은 그로 인한 전자 상거래의 질서가 파괴될 수 있다는 측면에서 가장 심각하다고 할 수 있다.According to such popularization of the Internet, various financial and product transactions are actively performed through the Internet. However, behind the scenes, hacking into other computer systems and extracting information is becoming increasingly intelligent. In particular, hacking to extract user information is the most serious in that the e-commerce order can be destroyed.
이에 따라, 컴퓨터에는 네트워크를 통한 외부로부터의 해킹을 방지하는 각종 보안 프로그램 예를 들어, 사용자가 키보드를 이용해 입력하는 중요 데이터를 암호화하는 키보드보안 프로그램이 설치되어 있다.Accordingly, the computer is provided with various security programs for preventing hacking from the outside through the network, for example, a keyboard security program for encrypting important data input by the user using the keyboard.
한편, 주지되어 있는 바와 같이, 운영체제는 응용 프로그램들이 컴퓨터 내의 하드웨어 즉, 메모리나 인터페이스(예, 키보드, 모니터, 랜카드 등)에 연결될 수 있도록 하는 것이다. 다시 말해, 컴퓨터에 설치되는 각종 응용 프로그램 즉, 보안 프로그램은 운영체제의 기반 하에 그 기능을 수행하는 것이다.On the other hand, as is well known, an operating system allows applications to be connected to hardware in a computer, i.e., memory or an interface (e.g., keyboard, monitor, LAN card, etc.). In other words, various applications installed on a computer, that is, a security program, perform their functions on the basis of an operating system.
그렇다면, 운영체제가 알고 있는 사용자 정보에 대한 액세스 권한이 해킹 프로그램에 주어진다면, 그 어떤 보안 프로그램에 의해서도 사용자의 정보를 안전하게 지킬 수 있다고는 보장할 수 없다.If so, if a hacking program is given access to user information known by the operating system, there is no guarantee that any security program can keep the user's information secure.
결국, 종래 보안 프로그램에 따르면, 키보드를 통해 입력되는 사용자 정보가 해킹 위험으로부터 자유롭지 못하다고 하는 문제점이 있었다. 물론, 마우스를 이용하여 사용자 정보를 간접적으로 입력할 수 있도록 한 가상 키보드 프로그램에 의해 사용자 정보가 보호될 수는 있다.After all, according to the conventional security program, there is a problem that the user information input through the keyboard is not free from the risk of hacking. Of course, the user information can be protected by a virtual keyboard program that allows the user to input the user information indirectly using a mouse.
그러나, 이러한 가상 키보드에 의한 인터페이스 화면도 운영체제에 의해 출력되는 것이기 때문에, 화면 캡처를 통한 해킹으로부터 결코 자유로울 수가 없다는 것이다.However, since the interface screen by the virtual keyboard is also output by the operating system, it can never be free from hacking through screen capture.
또한, 사용자가 가상 키보드를 이용하여 정보 입력을 한다 하더라도 사용자 가 마우스 버튼을 클릭한 위치는 운영체제의 해킹을 통해 얼마든지 가능하다. 그렇다고 한다면, 해킹된 위치 정보들을 조합하여 사용자가 입력한 정보를 유추해낼 수 있는 가능성이 있다.In addition, even if the user inputs information using the virtual keyboard, the user clicks the mouse button at any position through the hacking of the operating system. If so, there is a possibility to infer the information input by the user by combining the hacked location information.
본 발명은 전술한 문제점을 해결하기 위하여 안출된 것으로서, 운영체제로부터 독립하여 화면 출력을 수행할 수 있는 가상 인터페이스를 통해 사용자에게 가상 키보드를 제공하고 또한, 가상 키보드의 키들의 위치가 표시될 때마다 바뀌도록 함으로써, 외부의 시스템에서 운영체제를 통한 화면 및 마우스 해킹으로부터 사용자 정보가 안전할 수 있도록 한 사용자정보 보안 기능을 갖는 컴퓨터 장치를 제공하는데 그 목적이 있다.SUMMARY OF THE INVENTION The present invention has been made to solve the above-described problem, and provides a virtual keyboard to a user through a virtual interface capable of outputting the screen independently of the operating system, and changes each time the positions of the keys of the virtual keyboard are displayed. It is an object of the present invention to provide a computer device having a user information security function that allows user information to be safe from screen and mouse hacking through an operating system in an external system.
전술한 목적을 달성하기 위해 본 발명의 사용자정보 보안 기능을 갖는 컴퓨터 장치는 사용자 입력에 대하여 이벤트를 발생하는 사용자 입력 인터페이스; 이미지 데이터를 아날로그 신호로 변환하여 모니터로 출력하고, 비디오 오버레이를 수행하며 오버레이 영역에 표시되는 이미지를 상기 모니터에 출력시키는 비디오 인터페이스; 상기 사용자 입력 인터페이스의 이벤트를 접수하여 그에 상응하는 메시지를 발생하고, 상기 메시지의 처리 결과에 따른 화면이 상기 모니터에 출력되도록 상기 비디오 인터페이스를 제어하는 운영체제; 키들의 위치가 표시될 때마다 변하는 가상 키보드를 생성하는 가상 키보드 모듈; 및 상기 가상 키보드 모듈에 의해 생성되는 상기 가상 키보드의 표시에 대해서 상기 운영체제를 대신하여 상기 비디오 인터페이스를 제어하며, 상기 운영체제의 메시지를 후킹하고, 상기 후킹한 메시지가 상기 가상 키보드 모듈과 관련있는 경우에는 상기 운영체제를 대신하여 상기 후킹한 메시지를 상기 가상 키보드 모듈에 전달하며, 상기 가상 키보드 모듈에 의해 상기 후킹한 메시지에 따라 상기 가상 키보드의 키 입력박스 내에 해당 키보드 값을 표시하여 생성되는 가상 키보드의 표시에 대해서 상기 운영체제를 대신하여 상기 비디오 인터페이스를 제어하는 가상 인터페이스 모듈을 포함하여 이루어진다.In order to achieve the above object, a computer device having a user information security function of the present invention comprises: a user input interface for generating an event for a user input; A video interface for converting image data into an analog signal and outputting the image signal to a monitor, performing a video overlay, and outputting an image displayed on an overlay area to the monitor; An operating system configured to receive an event of the user input interface, generate a corresponding message, and control the video interface to output a screen according to a processing result of the message to the monitor; A virtual keyboard module for generating a virtual keyboard that changes whenever the positions of the keys are displayed; And controlling the video interface on behalf of the operating system for display of the virtual keyboard generated by the virtual keyboard module, hooking a message of the operating system, and if the hooked message is associated with the virtual keyboard module. Transfer the hooked message to the virtual keyboard module on behalf of the operating system, and display a corresponding keyboard value in a key input box of the virtual keyboard according to the hooked message by the virtual keyboard module And a virtual interface module for controlling the video interface on behalf of the operating system for the display of the generated virtual keyboard.
본 발명의 사용자정보 보안 기능을 갖는 컴퓨터 장치에 따르면, 가상 키보드의 키들의 위치를 표시될 때마다 변하게 하고 이러한 가상 키보드를 운영체제와는 독립적으로 비디오 인터페이스를 제어하여 표시함으로써, 화면이나 마우스 해킹으로부터 사용자 정보의 보안이 이루어지는 효과가 있다.According to the computer device having the user information security function of the present invention, the position of the keys of the virtual keyboard is changed every time it is displayed, and the virtual keyboard is controlled and displayed independently of the operating system, thereby displaying the user from screen or mouse hacking. The security of the information is effective.
이하에는 첨부한 도면을 참조하여 본 발명의 바람직한 실시예에 따라 사용자정보 보안 기능을 갖는 컴퓨터 장치에 대해서 상세하게 설명한다.Hereinafter, a computer device having a user information security function according to a preferred embodiment of the present invention with reference to the accompanying drawings will be described in detail.
우선, 본 발명에 따른 사용자정보 보안 방법은 데스크톱이나 노트북 컴퓨터에 의해 수행될 수 있는바, 공지되어 있는 컴퓨터의 기능 및 구성은 도 1을 참조로 하여 개략적으로 설명한다.First, the user information security method according to the present invention can be performed by a desktop or notebook computer, the function and configuration of a known computer will be schematically described with reference to FIG.
도 1은 본 발명의 일 실시예에 따른 사용자정보 보안 기능을 갖는 컴퓨터 장치의 블록 구성도이다.1 is a block diagram of a computer device having a user information security function according to an embodiment of the present invention.
도 1에 도시한 바와 같이, 본 발명의 사용자정보 보안 기능을 갖는 컴퓨터 장치(이하, '사용자 보안 장치')는 중앙처리유닛(CPU)(100), 시스템 버스(300), 주기억 유닛(main memory unit)(400), 주변장치(peripheral device), 및 주변장치와 중앙처리유닛(100)를 연결하는 여러 종류의 인터페이스를 포함하여 이루어질 수 있다.As shown in FIG. 1, a computer device having a user information security function of the present invention (hereinafter referred to as a 'user security device') includes a central processing unit (CPU) 100, a
전술한 구성에서, 주기억유닛(400)은 바이오스(BIOS)(412)가 저장되는 ROM(410) 및 운영체제(421), 각종 응용 프로그램 및 각종 데이터를 중앙처리유닛(100)에게 제공하고, 중앙처리유닛(100)에 의한 처리 결과를 보관하는 RAM(420)으로 구성될 수 있다. In the above-described configuration, the
주변장치는 출력유닛, 입력유닛, 보조기억유닛(secondary memory unit) 및 인터넷(544)과의 연결을 위한 네트워크 연결유닛(542)을 포함하여 이루어질 수 있다. 여기서, 출력유닛에는 모니터(600), 스피커(532) 및 프린터(534) 등이 대표적이고, 입력유닛에는 키보드(522), 마우스(524) 및 스캐너 등이 대표적이며, 보조기억유닛에는 하드디스크(510), 플로피디스크(514) 및 광디스크(518) 등이 대표적이며, 네트워크 연결유닛(542)에는 모뎀이나 랜카드가 대표적이다.The peripheral device may include an output unit, an input unit, a secondary memory unit, and a
여기서, 하드디스크(510)에는 운영체제(421), 운영체제(421)에 의해 화면 리소스를 할당받는 일반 응용 프로그램(422), 운영체제(421)와는 독립적으로 비디오 인터페이스(200)를 제어하는 가상 인터페이스 모듈(426) 및 운영체제(421)가 아닌 가상 인터페이스 모듈(426)에 의해 화면 리소스를 할당받는 가상 키보드 모듈(424)이 저장될 수 있다.Here, the
구체적으로, 본 발명의 특징인 가상 인터페이스 처리모듈(426)은 가상 키보드 모듈(424)의 수행에 따른 화면 출력에 있어서 운영체제(421)와는 별개로 비디오 인터페이스(200)를 제어하는, 또 하나의 화면 출력을 위한 운영체제가 되는 것이다.In detail, the virtual
또한, 운영체제(421)는 컴퓨터 시스템이 부팅되면서 하드디스크(510)에서 RAM(420)으로 로딩되어 기동되는 것이다. 예를 들어, 운영체제(421)는 그래픽유저 인터페이스(GUI)와 멀티태스킹 환경을 지원하는 윈도우즈가 될 수 있다.In addition, the
또한, 일반 응용 프로그램(422)이나 가상 키보드 모듈(424) 혹은 가상 인터페이스 모듈(426)은 실행 과정에서 RAM(420)에 로딩되어 동작되는 것이다.In addition, the
인터페이스는 모니터(600)와 연결되는 비디오 인터페이스(200), 하드디스크(510)와 연결되는 HDD 인터페이스(500), 자기디스크 드라이브(512)나 광디스크 드라이브(516)와 연결되는 드라이브 인터페이스(510), 키보드(522) 및 마우스(524)와 연결되는 입력 인터페이스(520), 스피커(532)나 프린터(534)와 연결되는 출력 인터페이스(530) 및 네트워크 연결유닛(542)과 연결되는 네트워크 인터페이스(540)를 포함하여 이루어질 수 있다.The interface may include a
종종, 그래픽 카드로 불리는 비디오 인터페이스(200)는 그래픽 처리 유닛(Graphic processor unit)(210), 비디오 메모리(220), 램댁(RAMDAC; Random Access Memory Digital to Analog Convert)(240) 및 모니터(600)에 연결된 출력 포트(230)를 포함하여 이루어질 수 있다.
여기서, 그래픽 처리 유닛(210)은 중앙처리유닛(100)의 그래픽 작업으로 인해 생기는 병목 현상을 해결하기 위한 그래픽 가속 기능을 하는 것으로서, 비디오 인터페이스(200)의 동작의 제어와 그래픽 데이터의 연산 처리를 담당한다.Here, the
또한, 그래픽 처리 유닛(210)은 상기한 그래픽 가속 기능을 이용하여 비디오 오버레이(video overlay; 이하 '오버레이'라고 한다)를 수행하게 된다. 여기서, 오버레이는 주지되어 있는 바와 같이, 여러 개의 이미지를 중첩하여 표시하는 것으로서 이미지를 분할한 후 이를 각각 모니터(600)에 출력하는 것을 의미한다.In addition, the
또한, 비디오 메모리(200)는 모니터(600)에 나타낼 영상 정보를 일시적으로 저장하는 프레임 버퍼 역할을 수행하는 것이다. 프레임 버퍼의 각 기억단위는 화면의 픽셀에 하나씩 대응하는 것이므로, 비디오 메모리(200) 용량이 클수록 해상도가 높아지게 된다.In addition, the
또한, 램댁(240)은 비디오 메모리(200)에 저장되어 있는 디지털 정보를 아날로그 정보로 변환하여 모니터(600)로 출력하는 것이다.In addition, the RAM DAC 240 converts digital information stored in the
다음으로, 본 발명의 특징적인 양상에 따른 가상 인터페이스 모듈(426)의 기능 및 구성에 대해 도 2 내지 도 4를 참조로 하여 상세하게 설명한다.Next, the function and configuration of the
도 2는 본 발명의 일 실시예에 따른 사용자정보 보안 장치에 의해 표시되는 화면을 보인 도면이다.2 is a view showing a screen displayed by the user information security device according to an embodiment of the present invention.
도 2에 도시한 바와 같이, 비디오 메모리(220)는 운영체제(421)나 일반 응용 프로그램(422)의 화면 표시를 위해 할당된 영역으로서 일반 화면 데이터(224)가 저장되는 일반 영역(222) 및 가상 키보드 모듈(424)의 화면 표시를 위해 할당된 영역으로서 가상 인터페이스 화면 데이터(228)가 저장되는 오버레이 영역(226)으로 구분될 수 있다.As shown in FIG. 2, the
비디오 인터페이스(200)는 운영체제(421)의 제어에 따라, 일반 영역(222)에 저장된 일반 화면 데이터(224) 이를 테면, 바탕 화면 데이터(612)와 일반 응용 프로그램 화면 데이터(614)를 모니터(600)로 제공하는 것이다.The
또한, 비디오 인터페이스(200)는 가상 인터페이스 모듈(426)의 제어에 따라, 모니터(600)의 화면 일부가 가상 키보드 모듈(424)의 화면으로 치환될 수 있도록 오버레이 영역(226)에 저장된 가상 인터페이스 화면 데이터(228)를 모니터(600)로 제공하는 것이다. 이에 따라, 모니터(600)에는 가상 인터페이스 모듈(426)에 의한 가상 인터페이스 화면(616)이 최상단에 표시될 수 있다.In addition, the
즉, 본 발명의 특징적인 양상에 따른 가상 인터페이스 모듈(426)은 비디오 메모리(220)의 오버레이 영역(226)을 이용하여 운영체제(421)와는 독립적으로 가상 인터페이스 화면(616)을 제공한다. 다시 말해, 비디오 메모리(220)의 오버레이 영역(226)은 가상 인터페이스 화면을 표시하기 위한 독립된 비디오 출력 채널로 사용되는 것이다. 여기서, 가상인터페이스 화면(616)은 가상 인터페이스 배경 이미지(616a), 데이터 입력을 위한 입력 박스(616b), 화면 제어를 위한 컨트롤 박스(616c) 및 가상 키보드 박스(616d) 등과 같은 화면 구성이 될 수 있다.That is, the
결국, 운영체제(421)는 가상 인터페이스 화면(616)으로 무엇이 출력되는지 알 수 없다. 다시 말해, 가상 키보드 모듈(424)은 운영체제(421)의 입장에서 보면, 비활성 상태로 동작하는 것이다. 따라서, 사용자가 프린트 스크린을 한다거나 외부 네트워크에서 운영체제(421)로 모니터(600)로 출력되는 화면을 요청하는 경우, 운영체제(421)는 일반 화면 데이터(612, 614)만을 제공해 줄 뿐이다.As a result, the
도 3은 본 발명의 일 실시예에 따른 사용자정보 보안 장치에 있어서 본 발명의 특징적인 양상에 따른 가상 인터페이스 모듈의 기능 및 구성을 설명하기 위한 블록 구성도이다.3 is a block diagram illustrating a function and configuration of a virtual interface module according to a characteristic aspect of the present invention in a user information security device according to an embodiment of the present invention.
도 3에 도시한 바와 같이, 일반 응용프로그램(422)의 수행에 따른 일반 화면 데이터(224)는 일반 영역(224)을 제어하는 비디오 드라이버(427)를 통하여 모니 터(600)로 출력된다. 보다 구체적으로 설명하자면, 먼저 일반 응용프로그램(422)은 모니터로 출력할 이미지 정보를 생성한다. 그러면, 운영체제(421) 이를 테면, 윈도우즈는 GDI(Graphics Device Interface)를 활용하여 이미지 정보를 DDI(Display Device interface)로 전달하게 된다. 이에, DDI는 우선순위에 따라 이미지 정보를 비디오 드라이버(427)로 전달하게 된다. 결국, 그래픽 처리 유닛(210)은 비디오 드라이버(427)로부터 받은 이미지 정보를 일반 영역(222)에 저장하게 된다.As shown in FIG. 3, the
반면, 도 3에 도시한 바와 같이, 가상 키보드 모듈(424)의 수행에 따른 가상 인터페이스 화면 데이터(228)는 오버레이 영역(226)을 제어하는 오버레이 드라이버(428)를 통하여 모니터(600)로 출력된다. 보다 구체적으로 설명하자면, 먼저 가상 키보드 모듈(424)은 모니터로 출력할 이미지 정보(가상 키보드)를 생성한다. 그러면, 가상 인터페이스 모듈(426)은 운영체제(421)를 통하지 않고 비디오 인터페이스(200)에 직접 제어할 수 있도록 한 응용 프로그램 인터페이스(application program interface; API)를 이용하여, 가상 키보드 모듈(424)로부터 받은 가상 키보드를 오버레이 드라이버(428)로 전달하게 된다. 결국, 그래픽 처리 유닛(210)은 오버레이 드라이버(428)로부터 받은 가상 키보드를 오버레이 영역(228)에 저장하게 된다. 여기서, 가상 인터페이스 모듈(426)은 비디오 인터페이스(200)를 직접 제어하고 비디오 인터페이스(200)의 그래픽 가속 기능을 사용할 수 있는 API로서, 이를 테면, DirectDraw, DirectShow, OpenGL 혹은 Glide SDK를 사용할 수 있다. 또한, 가상 키보드의 키들의 위치는 표시될 때마다 랜덤하게 변하게 된다.On the other hand, as shown in FIG. 3, the virtual
한편, 도 3에 도시한 바와 같이 본 발명의 가상 인터페이스 모듈(426)은 메 시지 처리모듈(426b) 및 비디오 인터페이스 제어모듈(426a)을 포함하여 이루어질 수 있다.Meanwhile, as shown in FIG. 3, the
운영체제(421)는 사용자 입력 인터페이스(520)나 네트워크 인터페이스(540) 혹은 그 밖의 다른 인터페이스에서 발생되는 이벤트를 접수하여 그에 상응하는 메시지를 발생하는 것이다.The
그러면, 메시지 처리모듈(426b)은 운영체제(421)에서 발생되는 메시지를 후킹(hooking)하고, 후킹한 메시지가 가상 키보드 모듈(424)과 관련되어 있는 경우에는 이를 가상 키보드 모듈(424)이나 비디오 인터페이스 제어모듈(426a)로 전달하고 반면, 가상 키보드 모듈(424)의 관련 메시지가 아닌 경우에는 이를 다시 운영체제(421)로 바이패스(bypass)하는 것이다.Then, the
또한, 가상 키보드 모듈(424)은 메시지 처리모듈(426b)로부터 전달받은 메시지에 따라 가상 키보드의 키 위치를 랜덤하게 생성하여 비디오 인터페이스 제어모듈(426b)에게 제공하는 것이다. 이에 따라, 가상 키보드는 표시될 때마다 키들의 위치가 변하게 된다. 여기서, 키 위치를 랜덤하게 하기 위한 랜덤 함수는 예를 들어 아래와 같다.In addition, the
unit MT19937;unit MT19937;
{$R-} {range checking off}{$ R-} {range checking off}
{$Q-} {overflow checking off}{$ Q-} {overflow checking off}
interfaceinterface
{ Period parameter }{Period parameter}
ConstConst
MT19937N=624; MT19937 N = 624;
TypeType
tMT19937StateArray = array [0..MT19937N-1] of longint; // the array for the state vector tMT19937StateArray = array [0..MT19937N-1] of longint; // the array for the state vector
procedure sgenrand_MT19937(seed: longint); // Initialization by seedprocedure sgenrand_MT19937 (seed: longint); // Initialization by seed
procedure lsgenrand_MT19937(const seed_array: tMT19937StateArray); // Initialization by array of seedsprocedure lsgenrand_MT19937 (const seed_array: tMT19937StateArray); // Initialization by array of seeds
procedure randomize_MT19937; // randomizationprocedure randomize_MT19937; // randomization
function randInt_MT19937(Range: longint):longint; // integer RANDOM with positive rangefunction randInt_MT19937 (Range: longint): longint; // integer RANDOM with positive range
function genrand_MT19937: longint; // random longint (full range);function genrand_MT19937: longint; // random longint (full range);
function randFloat_MT19937: Double; // float RANDOM on 0..1 intervalfunction rand Float_MT19937: Double; // float RANDOM on 0..1 interval
implementationimplementation
{ Period parameters }{Period parameters}
constconst
MT19937M=397; MT19937M = 397;
MT19937MATRIX_A =$9908b0df; // constant vector a MT19937MATRIX_A = $ 9908b0df; // constant vector a
MT19937UPPER_MASK=$80000000; // most significant w-r bits MT19937UPPER_MASK = $ 80000000; // most significant w-r bits
MT19937LOWER_MASK=$7fffffff; // least significant r bits MT19937LOWER_MASK = $ 7fffffff; // least significant r bits
{ Tempering parameters }{Tempering parameters}
TEMPERING_MASK_B=$9d2c5680; TEMPERING_MASK_B = $ 9d2c5680;
TEMPERING_MASK_C=$efc60000; TEMPERING_MASK_C = $ efc60000;
VARVAR
mt : tMT19937StateArray; mt: tMT19937StateArray;
mti: integer=MT19937N+1; // mti=MT19937N+1 means mt[] is not initialized mti: integer =
{ Initializing the array with a seed }{Initializing the array with a seed}
procedure sgenrand_MT19937(seed: longint);procedure sgenrand_MT19937 (seed: longint);
varvar
i: integer; i: integer;
beginbegin
for i := 0 to MT19937N-1 do begin for i: = 0 to MT19937N-1 do begin
mt[i] := seed and $ffff0000; mt [i]: = seed and $ ffff0000;
seed := 69069 * seed + 1; seed: = 69069 * seed + 1;
mt[i] := mt[i] or ((seed and $ffff0000) shr 16); mt [i]: = mt [i] or ((seed and $ ffff0000) shr 16);
seed := 69069 * seed + 1; seed: = 69069 * seed + 1;
end; end;
mti := MT19937N; mti: = MT19937N;
end;end;
{{
Initialization by "sgenrand_MT19937()" is an example. Theoretically, Initialization by "sgenrand_MT19937 ()" is an example. Theoretically,
there are 2^19937-1 possible states as an intial state. there are 2 ^ 19937-1 possible states as an intial state.
This function (lsgenrand_MT19937) allows to choose any of 2^19937-1 ones. This function (lsgenrand_MT19937) allows to choose any of 2 ^ 19937-1 ones.
Essential bits in "seed_array[]" is following 19937 bits: Essential bits in "seed_array []" is following 19937 bits:
(seed_array[0]&MT19937UPPER_MASK), seed_array[1], ..., (seed_array [0] & MT19937UPPER_MASK), seed_array [1], ...,
seed_array[MT19937-1]. seed_array [MT19937-1].
(seed_array[0]&MT19937LOWER_MASK) is discarded. (seed_array [0] & MT19937LOWER_MASK) is discarded.
Theoretically, Theoretically,
(seed_array[0]&MT19937UPPER_MASK), seed_array[1], ..., (seed_array [0] & MT19937UPPER_MASK), seed_array [1], ...,
seed_array[MT19937N-1] seed_array [MT19937N-1]
can take any values except all zeros. can take any values except all zeros.
}}
procedure lsgenrand_MT19937(const seed_array: tMT19937StateArray);procedure lsgenrand_MT19937 (const seed_array: tMT19937StateArray);
VARVAR
i: integer; i: integer;
beginbegin
for i := 0 to MT19937N-1 do mt[i] := seed_array[i]; for i: = 0 to MT19937N-1 do mt [i]: = seed_array [i];
mti := MT19937N; mti: = MT19937N;
end;end;
function genrand_MT19937: longint;function genrand_MT19937: longint;
constconst
mag01 : array [0..1] of longint =(0, MT19937MATRIX_A); mag01: array [0..1] of longint = (0, MT19937MATRIX_A);
varvar
y: longint; y: longint;
kk: integer; kk: integer;
beginbegin
if mti >= MT19937N { generate MT19937N longints at one time } if mti> = MT19937N {generate MT19937N longints at one time}
then begin then begin
if mti = (MT19937N+1) then // if sgenrand_MT19937() has not been called, if mti = (MT19937N + 1) then // if sgenrand_MT19937 () has not been called,
sgenrand_MT19937(4357); // default initial seed is used sgenrand_MT19937 (4357); // default initial seed is used
for kk:=0 to MT19937N-MT19937M-1 do begin for kk: = 0 to MT19937N-MT19937M-1 do begin
y := (mt[kk] and MT19937UPPER_MASK) or (mt[kk+1] and MT19937LOWER_MASK); y: = (mt [kk] and MT19937UPPER_MASK) or (mt [kk + 1] and MT19937LOWER_MASK);
mt[kk] := mt[kk+MT19937M] xor (y shr 1) xor mag01[y and $00000001]; mt [kk]: = mt [kk + MT19937M] xor (y shr 1) xor mag01 [y and $ 00000001];
end; end;
for kk:= MT19937N-MT19937M to MT19937N-2 do begin for kk: = MT19937N-MT19937M to MT19937N-2 do begin
y := (mt[kk] and MT19937UPPER_MASK) or (mt[kk+1] and MT19937LOWER_MASK); y: = (mt [kk] and MT19937UPPER_MASK) or (mt [kk + 1] and MT19937LOWER_MASK);
mt[kk] := mt[kk+(MT19937M-MT19937N)] xor (y shr 1) xor mag01[y and $00000001]; mt [kk]: = mt [kk + (MT19937M-MT19937N)] xor (y shr 1) xor mag01 [y and $ 00000001];
end; end;
y := (mt[MT19937N-1] and MT19937UPPER_MASK) or (mt[0] and MT19937LOWER_MASK); y: = (mt [MT19937N-1] and MT19937UPPER_MASK) or (mt [0] and MT19937LOWER_MASK);
mt[MT19937N-1] := mt[MT19937M-1] xor (y shr 1) xor mag01[y and $00000001]; mt [MT19937N-1]: = mt [MT19937M-1] xor (y shr 1) xor mag01 [y and $ 00000001];
mti := 0; mti: = 0;
end; end;
y := mt[mti]; inc(mti); y: = mt [mti]; inc (mti);
y := y xor (y shr 11); y: = y xor (y shr 11);
y := y xor (y shl 7) and TEMPERING_MASK_B; y: = y xor (y shl 7) and TEMPERING_MASK_B;
y := y xor (y shl 15) and TEMPERING_MASK_C; y: = y xor (y shl 15) and TEMPERING_MASK_C;
y := y xor (y shr 18); y: = y xor (y shr 18);
Result := y; Result: = y;
end;end;
{ Delphi interface }{Delphi interface}
procedure Randomize_MT19937;procedure Randomize_MT19937;
Var OldRandSeed: longint;Var OldRandSeed: longint;
beginbegin
OldRandSeed := System.randseed; // save system RandSeed value OldRandSeed: = System.randseed; // save system RandSeed value
System.randomize; // randseed value based on system time is generated System.randomize; // randseed value based on system time is generated
sgenrand_MT19937(System.randSeed); // initialize generator state array sgenrand_MT19937 (System.randSeed); // initialize generator state array
System.randseed := OldRandSeed; // restore system RandSeed System.randseed: = OldRandSeed; // restore system RandSeed
end;end;
// bug fixed 21.6.2000.// bug fixed 21.6.2000.
Function RandInt_MT19937(Range: longint):longint;Function RandInt_MT19937 (Range: longint): longint;
// EAX <- Range// EAX <-Range
// Result -> EAX// Result-> EAX
asmasm
PUSH EAX PUSH EAX
CALL genrand_MT19937 CALL genrand_MT19937
POP EDX POP EDX
MUL EDX MUL EDX
MOV EAX,EDX MOV EAX, EDX
end;end;
function RandFloat_MT19937: Double;function RandFloat_MT19937: Double;
const Minus32: double = -32.0;const Minus 32: double = -32.0;
asmasm
CALL genrand_MT19937 CALL genrand_MT19937
PUSH 0
PUSH EAX PUSH EAX
FLD Minus32 FLD Minus32
FILD qword ptr [ESP] FILD qword ptr [ESP]
ADD ESP,8 ADD ESP, 8
FSCALE FSCALE
FSTP ST(1) FSTP ST (1)
end;end;
end.end.
즉, 가상 키보드 모듈(424)은 위 랜덤 함수를 이용하여 가상 키보드를 생성하며, 그 프로그램 소스는 예를 들어 아래와 같다.That is, the
usesuses
MT19937; MT19937;
constconst
// 이미지 좌표 // image coordinates
arrImagePoint : array[0..9] of TPoint=( (x:15;y:73), (x:59;y:73), (x:103;y:73), arrImagePoint: array [0..9] of TPoint = ((x: 15; y: 73), (x: 59; y: 73), (x: 103; y: 73),
(x:15;y:110), (x:59;y:110), (x:103;y:110), (x: 15; y: 110), (x: 59; y: 110), (x: 103; y: 110),
(x:15;y:147), (x:59;y:147), (x:103;y:147), (x: 15; y: 147), (x: 59; y: 147), (x: 103; y: 147),
(x:59;y:184) (x: 59; y: 184)
); );
varvar
// 버튼 설정 플래그 // button setting flag
numFlag : array[0..9] of Boolean; numFlag: array [0..9] of Boolean;
// 숫자 버튼 컨트롤 ( 0 ~ 9 ) // number button control (0 ~ 9)
TBtnNum : array[0..9] of TOverImgButton; TBtnNum: array [0..9] of TOverImgButton;
// 초기화되지 않은 버튼의 위치 찾기// find the location of the uninitialized button
function zHanaBank_Main_GetRandIdx(idx:Integer) : Integer;function zHanaBank_Main_GetRandIdx (idx: Integer): Integer;
varvar
i : Integer; i: Integer;
beginbegin
if (numFlag[idx] = False) then begin if (numFlag [idx] = False) then begin
numFlag[idx] := True; numFlag [idx]: = True;
Result := idx; Result: = idx;
exit; exit;
end; end;
for i:=idx+1 to 9 do begin for i: = idx + 1 to 9 do begin
if (numFlag[i] = False) then begin if (numFlag [i] = False) then begin
numFlag[i] := True; numFlag [i]: = True;
Result := i; Result: = i;
exit; exit;
end; end;
end; end;
for i:=0 to idx-1 do begin for i: = 0 to idx-1 do begin
if (numFlag[i] = False) then begin if (numFlag [i] = False) then begin
numFlag[i] := True; numFlag [i]: = True;
Result := i; Result: = i;
exit; exit;
end; end;
end; end;
Result := 0; Result: = 0;
end;end;
--- 이부분이 0부터 9까지 숫자를 랜덤으로 처리 ------ This part randomly handles numbers from 0 to 9 ---
// 버튼 위치 설정// set button position
procedure zHanaBank_Main_NumRandomCreate();procedure zHanaBank_Main_NumRandomCreate ();
varvar
i : Integer; i: Integer;
randNum : Integer; randNum: Integer;
beginbegin
// 버튼 활성화 초기 값 설정 // Set button activation initial value
for i:=0 to 9 do begin for i: = 0 to 9 do begin
numFlag[i] := False; numFlag [i]: = False;
end; end;
// 랜덤값 초기화 // initialize random value
MT19937.randomize_MT19937; MT19937.randomize_MT19937;
for i:=0 to 9 do begin for i: = 0 to 9 do begin
// 0~9 사이의 랜덤값 가저오기 // get random value between 0 and 9
randNum := MT19937.randInt_MT19937(9); randNum: = MT19937.randInt_MT19937 (9);
// 중복되는 랜덤 값 체크 // check for duplicate random values
randNum := zHanaBank_Main_GetRandIdx(randNum); randNum: = zHanaBank_Main_GetRandIdx (randNum);
// 버튼 위치 설정 // set button position
TBtnNum[i].Position.X := arrImagePoint[randNum].X; TBtnNum [i] .Position.X: = arrImagePoint [randNum] .X;
TBtnNum[i].Position.Y := arrImagePoint[randNum].Y; TBtnNum [i] .Position.Y: = arrImagePoint [randNum] .Y;
end; end;
end;end;
또한, 비디오 인터페이스 제어모듈(426a)은 메시지 처리모듈(426b)의 처리 결과에 의거하여 오버레이 드라이버(428)를 제어하고, 가상 키보드 모듈(424)에서 생성된 가상 키보드를 비디오 인터페이스(200)로 제공하는 것이다.In addition, the video
도 4는 본 발명의 일 실시예에 따른 사용자정보 보안 방법을 개략적으로 설명하기 위한 블록 구성도인바, 설명의 주체는 가상 인터페이스 모듈(426)임을 밝혀둔다.4 is a block diagram for schematically illustrating a user information security method according to an exemplary embodiment of the present invention, and the subject of the description is the
도 4에 도시한 바와 같이, 먼저 단계 S100에서는 마우스(524) 등을 이용한 사용자의 가상 인터페이스 실행 명령(이벤트)에 의해 동작을 개시하게 된다.As shown in FIG. 4, in operation S100, an operation is started by a user's virtual interface execution command (event) using a
다음으로, 단계 S110에서는 비디오 인터페이스(200)가 오버레이를 지원하는지, 오버레이가 지원된다면 사용 가능한 오버레이 리소스가 남아 있는지를 판단한다.Next, in step S110, it is determined whether the
단계 S110에서의 판단 결과 오버레이의 생성이 가능하다면, 단계 S120으로 진행하여 오버레이를 생성한다. 오버레이를 생성하는 것은 예를 들어, DirectX의 DirectDraw나 DirectShow, OpenGL 등의 지원 라이브러리를 이용할 수 있다.If it is possible to generate the overlay as a result of the determination in step S110, the flow proceeds to step S120 to generate the overlay. Creating overlays can be done using DirectX's DirectDraw, DirectShow, or OpenGL support libraries, for example.
반면, 단계 S110에서의 판단 결과, 비디오 인터페이스(200)가 오버레이 기능을 지원하지 않거나 지원하더라도 오버레이 리소스가 남아있지 않다면, 운영체제(421)의 제어에 의해 오버레이 오류메시지가 출력되고 가상 인터페이스 모듈(426)의 동작이 종료된다(단계 S130 및 단계 S140).On the other hand, if it is determined in step S110 that the overlay resource is not left even if the
오버레이의 생성 이후, 단계 S150에서는 운영체제(421)의 전역 후킹을 설정한다. 예들 들어, 윈도우즈의 경우에는 API 이를 테면, DirectDraw를 이용하여 전역 후킹의 설정이 가능하다. 전역 후킹이 설정되면, 시스템에서 발생되는 모든 이벤트에 대한 메시지는 가상 인터페이스 모듈(426)에 의해 최우선으로 접수된다. 여기서, 유저모드(application) 단에서 전역 후킹을 하기 위한 프로그램 소스는 예를 들어 아래와 같다.After generation of the overlay, in step S150, global hooking of the
#include <windows.h>#include <windows.h>
#pragma data_seg(".kbdata")#pragma data_seg (". kbdata")
HINSTANCE hModule=NULL;HINSTANCE hModule = NULL;
HHOOK hKeyHook=NULL;HHOOK hKeyHook = NULL;
HWND hWndBeeper=NULL;HWND hWndBeeper = NULL;
#pragma data_seg()#pragma data_seg ()
#pragma comment (linker, "/SECTION:.kbdata,RWS")#pragma comment (linker, "/SECTION:.kbdata,RWS")
// KeyDown, KeyUp 이벤트 발생시 처리되는 후킹 프로시져// Hooking procedure handled when KeyDown, KeyUp event occurs
LRESULT CALLBACK KeyHookProc(int nCode, WPARAM wParam, LPARAM lParam)LRESULT CALLBACK KeyHookProc (int nCode, WPARAM wParam, LPARAM lParam)
{{
if(nCode == HC_ACTION) if (nCode == HC_ACTION)
{ {
////////////////////////////////////////////////////////////////////////
switch(wParam) switch (wParam)
{ {
case WM_SYSKEYDOWN: 키다운 이벤트인가? case WM_SYSKEYDOWN: Is this a keydown event?
case WM_SYSKEYUP: 키업 이벤트인가? case WM_SYSKEYUP: Is this a keyup event?
}}
/////////////////////////////////// /////////////////////////////////////
//윈도우 키 막기 // block window key
If(현재 블록킹상태인가?) { If (currently blocking?) {
가상인터페이스 처리를 위한 이벤트 전송 Send event for virtual interface processing
키입력정보가 윈도우 메시지 프로시져에게 가는 것을 차단 return FALSE Block keystrokes from reaching Windows message procedures return FALSE
} }
블록킹상태가 아니기 때문에 바로 윈도우 이벤트 처리 Window event handling immediately because it is not blocking
return CallNextHookEx(hKeyHook,nCode,wParam,lParam); // Next 이벤트 채인으로 정보 전달 return CallNextHookEx (hKeyHook, nCode, wParam, lParam); // pass information to next event chain
}}
extern "C" __declspec(dllexport) void InstallHook(HWND hWnd)extern "C" __declspec (dllexport) void InstallHook (HWND hWnd)
{{
hWndBeeper=hWnd; hWndBeeper = hWnd;
hKeyHook=SetWindowsHookEx((WH_KEYBOARD,KeyHookProc,hModule,NULL);//WH_KEYBOARD의 이벤트에 대하여 SetWindowsHookEx 함수로 후킹 설정hKeyHook = SetWindowsHookEx ((WH_KEYBOARD, KeyHookProc, hModule, NULL); // Set hooking with SetWindowsHookEx function for events of WH_KEYBOARD
}}
extern "C" __declspec(dllexport) void UninstallHook()extern "C" __declspec (dllexport) void UninstallHook ()
{{
UnhookWindowsHookEx(hKeyHook); UnhookWindowsHookEx (hKeyHook);
}}
BOOL WINAPI DllMain(HINSTANCE hInst, DWORD fdwReason, LPVOID lpRes)BOOL WINAPI DllMain (HINSTANCE hInst, DWORD fdwReason, LPVOID lpRes)
{{
switch (fdwReason) { switch (fdwReason) {
case DLL_PROCESS_ATTACH: case DLL_PROCESS_ATTACH:
hModule=hInst; //DII 파일의 최초 로딩시 DII Instance 핸들 저장 hModule = hInst; // store DII instance handle when first loading DII file
break; break;
case DLL_PROCESS_DETACH: case DLL_PROCESS_DETACH:
break; break;
} }
return TRUE; return TRUE;
}}
다음으로, 커널(kernel) 단의 전역 후킹 소스는 예를 들어 아래와 같다.Next, the global hooking source of the kernel stage is as follows.
#pragma PAGEDCODE#pragma PAGEDCODE
extern "C" extern "C"
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath){NTSTATUS DriverEntry (IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) {
for (int i = 0; i < arraysize(DriverObject->MajorFunction); ++i) for (int i = 0; i <arraysize (DriverObject-> MajorFunction); ++ i)
// sys 파일의 최초 로딩시 시스템처리 주요함수 설정 // Set main function of system processing at the first loading of sys file
DriverObject->MajorFunction[IRP_MJ_READ] = Ctrl2capDispatchRead; //DriverObject-> MajorFunction [IRP_MJ_READ] = Ctrl2capDispatchRead; //
return STATUS_SUCCESS; return STATUS_SUCCESS;
} // DriverEntry} // DriverEntry
NTSTATUS AddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT pdo){NTSTATUS AddDevice (IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT pdo) {
NTSTATUS status; NTSTATUS status;
PDEVICE_OBJECT fido; PDEVICE_OBJECT fido;
status = IoCreateDevice(DriverObject, sizeof(DEVICE_EXTENSION), NULL, status = IoCreateDevice (DriverObject, sizeof (DEVICE_EXTENSION), NULL,
GetDeviceTypeToUse(pdo), 0, FALSE, &fido); GetDeviceTypeToUse (pdo), 0, FALSE, &fido);
if (!NT_SUCCESS(status))if (! NT_SUCCESS (status))
{ // can't create device object {// can't create device object
return status; return status;
} // can't create device object } // can't create device object
PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION) fido->DeviceExtension; PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION) fido-> DeviceExtension;
\\Device\\KdbClass 아래 키보드 필터드라이버 위치 적용 // keyboard 필터 드라이버의 설정 Apply the keyboard filter driver location under \\ Device \\ KdbClass // Set the keyboard filter driver
return status; return status;
} // AddDevice} // AddDevice
// 하위 드라이버로부터 키보드 IRP 이벤트를 받음// Receive keyboard IRP event from subordinate driver
NTSTATUS ReadComplete(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp,IN PVOID Context){NTSTATUS ReadComplete (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context) {
PIO_STACK_LOCATION IrpSp; PIO_STACK_LOCATION IrpSp;
PKEYBOARD_INPUT_DATA KeyData; PKEYBOARD_INPUT_DATA KeyData;
// 넘어온 IRP를 구조체 정보로 저장 // save passed IRP as structure information
IrpSp = IoGetCurrentIrpStackLocation( Irp ); IrpSp = IoGetCurrentIrpStackLocation (Irp);
if( NT_SUCCESS( Irp->IoStatus.Status ) ) { if (NT_SUCCESS (Irp-> IoStatus.Status)) {
KeyData = (PKEYBOARD_INPUT_DATA)Irp->AssociatedIrp.SystemBuffer; KeyData = (PKEYBOARD_INPUT_DATA) Irp-> AssociatedIrp.SystemBuffer;
numKeys = Irp->IoStatus.Information / sizeof(KEYBOARD_INPUT_DATA); numKeys = Irp-> IoStatus.Information / sizeof (KEYBOARD_INPUT_DATA);
for( i = 0; i < numKeys; i++ ) { // KeyDown, KeyUp이벤트 발생시 처리되는 키이벤트 처리 함수 for (i = 0; i <numKeys; i ++) {// KeyDown, KeyEvent Handling Functions Handled When KeyUp Event Occurs
// KeyData[i].MakeCode -> 키입력 코드값 // KeyData [i] .MakeCode-> key input code value
// KeyData[i].Flags -> 키보드 업인가? 다운인가?// KeyData [i] .Flags-> Keyboard up? Is it down?
//윈도우 키 막기// block window key
If(현재 블록킹상태인가?) { If (currently blocking?) {
가상인터페이스 처리를 위한 이벤트 전송 Send event for virtual interface processing
키입력정보가 윈도우 메시지 프로시져에게 가는 것을 차단 Block keystrokes from reaching Windows message procedures
KeyData[i].MakeCode=00;KeyData [i]. MakeCode = 00;
} }
블록킹상태가 아니기 때문에 바로 Bypass Bypass because it is not blocking
} }
}}
if( Irp->PendingReturned ) { if (Irp-> PendingReturned) {
IoMarkIrpPending( Irp ); IoMarkIrpPending (Irp);
} }
return Irp->IoStatus.Status; return Irp-> IoStatus.Status;
}}
다시 도 4로 돌아가서, 이상과 같이 가상 인터페이스를 위한 초기화 과정이 완료되면, 단계 S160에서는 오버레이 기능을 이용하여 가상 인터페이스 화면(616)을 표시한다.4, when the initialization process for the virtual interface is completed as described above, the
이어서, 단계 S170에서는 운영체제(421)에서 메시지가 발생되는가를 판단한다.In operation S170, it is determined whether a message is generated by the
단계 S170에서의 판단 결과, 메시지가 접수되면 단계 S180으로 진행하여 현재 접수된 메시지가 가상 인터페이스 관련 메시지인가를 판단하는 필터링 과정을 수행한다.As a result of the determination in step S170, when the message is received, the process proceeds to step S180 to perform a filtering process for determining whether the currently received message is a virtual interface related message.
단계 S180에서의 판단 결과, 가상 인터페이스 관련 메시지로 판단되면 단계 S190으로 진행하여 가상 인터페이스 관련 메시지 처리를 수행한다. 그러나, 가상 인터페이스 관련 메시지가 아닌 경우에는 단계 S200으로 진행하여 활성화된 일반 응용 프로그램(422)으로 메시지를 전송한다.If it is determined in step S180 that the virtual interface related message is determined, the process proceeds to step S190 to perform a virtual interface related message processing. However, if the message is not related to the virtual interface, the flow proceeds to step S200 to transmit the message to the activated
단계 S190에서 메시지 처리모듈(426b)은 필터링된 메시지의 속성값을 가상 인터페이스 표시모듈(426a)로 제공한다. 비디오 인터페이스 제어모듈(426a)은 전달받은 메시지 속성값을 가상 인터페이스 화면(616)에 적절한 화면 표시가 이루어지도록 한다. 또한, 메시지 속성값은 가상 키보드 모듈(424)로도 전달되어 가상 키보드 모듈(424)의 본래의 프로그램 기능이 수행되도록 한다. 또한, 비디오 인터페이스 제어모듈(426a)은 가상 키보드 모듈(424)으로부터 제공받은 가상 키보드를 가상 인터페이스 화면(616)에 표시되도록 한다.In step S190, the
도 5는 본 발명의 일 실시예에 따른 사용자정보 보안 방법을 구체적으로 설명하기 위한 흐름도이며, 도 6 내지 도 10은 본 발명의 일 실시예에 따른 사용자정 보 보안 장치에 의해 표시되는 가상 인터페이스 화면을 보인 도면이다.5 is a flowchart illustrating a user information security method according to an embodiment of the present invention in detail, and FIGS. 6 to 10 are virtual interface screens displayed by a user information security device according to an embodiment of the present invention. Figure is shown.
도 5에 도시한 바와 같이, 단계 S310에서 네트워크 인터페이스(540)는 인터넷(544)을 통해 접수된 로그인 이벤트를 운영체제(421)로 전달하게 된다.As shown in FIG. 5, in operation S310, the
그러면, 운영체제(421)는 로그인 이벤트에 의거하여 가상 키보드 모듈(424)과 가상인터페이스모듈(426)을 실행한다(단계 S320 및 단계 S330).Then, the
이에 따라, 단계 S340에서 가상 키보드 모듈(424)은 운영체제(421)에 의해 동작을 개시하는 한편, 모니터를 출력할 로그인 이미지 정보를 생성한다.Accordingly, in operation S340, the
또한, 단계 S350에서 가상인터페이스모듈(426)은 오버레이 기능이 지원되는지를 확인하기 위해 비디오인터페이스(200)의 오버레이 영역(350)을 확인한다. 이어서, 단계 S360에서는 가상 인터페이스를 위한 오버레이를 생성할 수 있는지 판단한다.In operation S350, the
단계 S360에서의 판단 결과, 오버레이의 생성이 가능하지 않다면 단계 S370으로 진행하여 오류메시지를 운영체제(421)로 전달한다.As a result of the determination in step S360, if generation of the overlay is not possible, the process proceeds to step S370 to transmit an error message to the
반면, 단계 S360에서의 판단 결과, 오버레이의 생성이 가능하다면 단계 S380으로 진행하여 가상 키보드 모듈(424)에 의해 생성된 가상 키보드를 출력하도록 비디오 인터페이스(200)를 직접 제어한다. 이에 따라, 단계 S390에서 비디오 인터페이스(200)는 가상 키보드를 표시하게 되는데, 이를 테면 도 6 내지 도 10에 도시한 바와 같은 가상 키보드가 모니터(600)를 통해 표시될 것이다. 즉, 사용자는 가상인터페이스모듈(426)에 의해 제공되는 가상인터페이스를 통해 자신의 로그인 정보나 인터넷 뱅킹 정보 혹은 결제 정보를 마우스를 이용하여 입력하게 되는 것이다.On the other hand, if it is determined in step S360 that the overlay can be generated, the control proceeds to step S380 to directly control the
한편, 단계 S400에서 가상인터페이스모듈(426)은 전역 후킹을 설정한다. 이렇게 되면, 운영체제(421)에서 생성되는 메시지는 가상인터페이스모듈(426)에 최우선적으로 접수된다(단계 S410). 이에 따라, 단계 S420에서 가상인터페이스모듈(426)은 접수된 메시지가 가상 로그인에 관련되어 있는 것인지를 판단한다.Meanwhile, in step S400, the
단계 S420에서의 판단 결과, 가상 로그인 메시지가 아닌 경우에는 해당 메시지를 운영체제(421)에 전달한다(단계 S430).As a result of the determination in step S420, if the message is not a virtual login message, the message is transmitted to the operating system 421 (step S430).
반면에 단계 S420에서의 판단 결과, 가상 로그인 메시지인 경우에는 해당 메시지를 가상 키보드 모듈(424)에 전달한다(단계 S440). 그러면, 가상 키보드 모듈(424)은 전달받은 메시지를 처리하여 가상 키보드를 생성하고(단계 S450), 이를 가상인터페이스모듈(426)에 제공한다(단계 S460).On the other hand, if it is determined in step S420 that the virtual login message is transmitted to the virtual keyboard module 424 (step S440). Then, the
이에 따라, 단계 S470에서 가상인터페이스모듈(426)은 새로운 이미지 정보가 출력되도록 비디오 인터페이스(200)를 제어한다. 이에 따라, 단계 S390에서 비디오 인터페이스(200)는 오버레이 영역(226)에 새롭게 저장되는 이미지를 모니터(600)의 가상 인터페이스 화면(616)에 출력시킨다.Accordingly, in operation S470, the
예를 들어, 도 6 내지 도 9에 도시한 바와 같은 가상 키보드의 입력박스를 사용자가 마우스(524)를 이용하여 클릭하게 되면, 운영체제(421)는 이와 관련된 메시지를 생성하게 된다. 그러면, 메시지 처리모듈(426b)은 해당 메시지를 접수하여 비디오 인터페이스 제어모듈(426a)에게 통지한다. 이에 따라, 비디오 인터페이스 제어모듈(426a)은 입력박스에 텍스트 입력을 위한 커서를 표시하도록 비디오 인터페이스(200)를 제어하게 된다. 이 상태에서, 사용자가 다시 마우스(524)를 이용하 여 가상 키보드의 숫자나 문자 버튼을 클릭하게 될 것이다. 결국, 비디오 인터페이스 제어모듈(426a)은 입력박스 내에 해당 가상 키보드의 값이 표시되도록 비디오 인터페이스(200)를 제어하게 된다. 여기서, 오버레이 영역(226)에 저장되는 비디오 데이터는 모든 그래픽 카드에서 지원하는 YUV 포맷으로 변환하여 저장되는 것이 바람직하다.For example, when the user clicks on the input box of the virtual keyboard as shown in FIGS. 6 to 9 using the
한편, 이상의 실시예가 비디오 인터페이스(200)의 오버레이 영역(226)을 이용한 것이라면, 본 발명의 사용자정보 보안 장치는 비디오 인터페이스(200)의 미니 포트 기능을 이용하여서도 가상 인터페이스를 구현할 수 있다. 따라서, 아래에서는 첨부된 도 11 내지 도 13을 참조로 하여 미니포트 기능을 이용한 가상 인터페이스에 대해 상세하게 설명하는데, 이상의 실시예와 중복되는 내용은 생략함을 밝혀둔다.On the other hand, if the above embodiment uses the
도 11은 본 발명의 다른 실시예에 따른 사용자정보 보안 장치에 의해 표시되는 화면을 보인 도면이다.11 is a view showing a screen displayed by the user information security device according to another embodiment of the present invention.
도 11에 도시한 바와 같이, 본 발명의 가상 인터페이스를 구현하기 위한 다른 실시예에서는 모니터(600)의 화면 출력을 위해 두 개의 비디오 출력 채널을 이용한다. 두 개의 비디오 출력 채널은 예를 들어, 일반 비디오 포트와 비디오 미니 포트로 구성될 수 있다. 이와 같은 두 개의 비디오 출력 채널 이용한 방식에서는 가상 인터페이스 화면(616)을 표시하기 위해 비디오 메모리(200)의 일반 영역(222)을 사용한다. 단, 비디오 메모리(220)의 일반 영역(222)을 공통으로 사용하되 그 일부를 가상 인터페이스를 표시하기 위한 독립된 비디오 출력 채널로 사용한다.As shown in FIG. 11, another embodiment for implementing the virtual interface of the present invention uses two video output channels for outputting the screen of the
도 12는 본 발명의 다른 실시예에 따른 사용자정보 보안 장치에 있어서 본 발명의 특징적인 양상에 따른 가상 인터페이스 모듈의 기능 및 구성을 설명하기 위한 블록 구성도이다.12 is a block diagram illustrating a function and configuration of a virtual interface module according to a characteristic aspect of the present invention in a user information security device according to another embodiment of the present invention.
도 12에 도시한 바와 같이, 일반 응용프로그램(422)의 수행에 따른 일반 화면 데이터(224)는 일반 영역(224)을 제어하는 비디오 드라이버(427)를 통하여 모니터(600)로 출력된다.As shown in FIG. 12, the
반면, 가상 키보드 모듈(424)의 수행에 따른 가상 인터페이스 화면 데이터(228)는 미니 포트를 구동하는 미니포트 드라이버(429)에 의해 가상 인터페이스 화면(616)이 모니터(600)로 출력된다.On the other hand, the virtual
도 13은 본 발명의 다른 실시예에 따른 사용자정보 보안 방법을 개략적으로 설명하기 위한 흐름도인바, 설명의 주체는 가상 인터페이스 모듈(426)임을 밝혀둔다.FIG. 13 is a flowchart for schematically describing a method for securing user information according to another exemplary embodiment of the present invention, and the subject of the description is the
도 13에 도시한 바와 같이, 미니 포트 기능을 이용한 가상 인터페이스 처리 모듈(426)의 동작은 상술한 오버레이 기능을 이용한 경우와 동일한 동작 수순을 갖는다. 다만, 가상 인터페이스를 위한 초기화 과정이 조금 상이하다.As shown in FIG. 13, the operation of the virtual
즉, 도 13에 도시한 바와 같이, 먼저 단계 S100에서는 마우스(524) 등을 이용한 사용자의 가상 인터페이스 실행 명령(이벤트)에 의해 동작을 개시하게 된다.That is, as shown in Fig. 13, first in step S100, the operation is started by a user's virtual interface execution command (event) using the
다음으로, 단계 S110'에서는 비디오 인터페이스(200)가 미니포트를 지원하는지, 미니포트가 지원된다면 사용 가능한 리소스가 남아 있는지를 판단한다.Next, in step S110 ′, it is determined whether the
단계 S110'에서의 판단 결과 미니포트의 생성이 가능하다면, 단계 S120'으로 진행하여 미니포트를 생성한다. 미니 포트를 생성하는 것은 예를 들어, 윈도우 드라이버 개발 키트와 같은 개발 툴을 이용하여 제작하여 사용할 수 있다.If it is possible to generate the miniport as a result of the determination in step S110 ', the flow advances to step S120' to generate a miniport. Creating a miniport can be made and used using development tools such as, for example, the Windows Driver Development Kit.
반면, 단계 S110'에서의 판단 결과, 비디오 인터페이스(200)가 미니포트 기능을 지원하지 않거나 지원하더라도 미니포트를 사용하기 위한 리소스가 남아있지 않다면, 운영체제(421)의 제어에 의해 미니포트 오류메시지가 출력되고 가상 인터페이스 모듈(426)의 동작이 종료된다(단계 S130' 및 단계 S140).On the other hand, if it is determined in step S110 'that the
한편, 인터넷(544)은 주지되어 있는 바와 같이, 전 세계에 산재해 있는 TCP/IP(Transmission Control Protocol/ Internet Protocol)라는 통신규약에 기반이 된 컴퓨터망을 유/무선을 통해 연결하는 네트워크들의 네트워크를 가리키는 것이다. 여기서, 무선으로 인터넷에 접근하는 방식에는 휴대폰 등에 설치되는 무선 인터넷 플랫폼 이를 테면, WAP(Wireless Application Protocol)이나 WIPI(Wireless Internet Platform for Interoperability)을 기반으로 이동통신망을 통해 접근하는 방식이 있고 또한, 노트북 컴퓨터 등에 설치되는 무선 LAN카드를 이용하여 무선접속장치(access point; AP)를 통해 접근하는 무선인터넷과 ADSL(Asymmetric Digital Subscriber Line) 수준의 품질과 비용으로 정지 또는 저속 이동 중에도 고속 인터넷 접속할 수 있는 무선 인터넷 서비스인 와이브로(Wireless Broadband; WiBro) 일명, 휴대인터넷 등이 있다.Meanwhile, as is well known, the
본 발명의 사용자정보 보안 기능을 갖는 컴퓨터 장치는 전술한 실시 예에 국한되지 않고 본 발명의 기술 사상이 허용하는 범위에서 다양하게 변형하여 실시할 수가 있다.The computer device having the user information security function of the present invention is not limited to the above-described embodiment and can be modified in various ways within the scope of the technical idea of the present invention.
도 1은 본 발명의 일 실시예에 따른 사용자정보 보안 장치의 블록 구성도이다.1 is a block diagram of a user information security device according to an embodiment of the present invention.
도 2는 본 발명의 일 실시예에 따른 사용자정보 보안 장치에 의해 표시되는 화면을 보인 도면이다.2 is a view showing a screen displayed by the user information security device according to an embodiment of the present invention.
도 3은 본 발명의 일 실시예에 따른 사용자정보 보안 장치에 있어서 본 발명의 특징적인 양상에 따른 가상 인터페이스 모듈의 기능 및 구성을 설명하기 위한 블록 구성도이다.3 is a block diagram illustrating a function and configuration of a virtual interface module according to a characteristic aspect of the present invention in a user information security device according to an embodiment of the present invention.
도 4는 본 발명의 일 실시예에 따른 사용자정보 보안 방법을 개략적으로 설명하기 위한 블록 구성도이다.4 is a block diagram schematically illustrating a user information security method according to an embodiment of the present invention.
도 5는 본 발명의 일 실시예에 따른 사용자정보 보안 방법을 구체적으로 설명하기 위한 흐름도이다.5 is a flowchart illustrating a user information security method according to an embodiment of the present invention in detail.
도 6 내지 도 10은 본 발명의 일 실시예에 따른 사용자정보 보안 장치에 의해 표시되는 가상 인터페이스 화면을 보인 도면이다.6 to 10 are diagrams showing a virtual interface screen displayed by the user information security device according to an embodiment of the present invention.
도 11은 본 발명의 다른 실시예에 따른 사용자정보 보안 장치에 의해 표시되는 화면을 보인 도면이다.11 is a view showing a screen displayed by the user information security device according to another embodiment of the present invention.
도 12는 본 발명의 다른 실시예에 따른 사용자정보 보안 장치에 있어서 본 발명의 특징적인 양상에 따른 가상 인터페이스 모듈의 기능 및 구성을 설명하기 위한 블록 구성도이다.12 is a block diagram illustrating a function and configuration of a virtual interface module according to a characteristic aspect of the present invention in a user information security device according to another embodiment of the present invention.
도 13은 본 발명의 다른 실시예에 따른 사용자정보 보안 방법을 개략적으로 설명하기 위한 흐름도이다.13 is a flowchart schematically illustrating a method for securing user information according to another embodiment of the present invention.
*** 도면의 주요 부분에 대한 부호의 설명 ****** Explanation of symbols for the main parts of the drawing ***
100: 중앙처리유닛 200: 비디오 인터페이스100: central processing unit 200: video interface
300: 시스템 버스 400: 주기억 유닛300: system bus 400: main memory unit
421: 운영체제 424: 가상 키보드 모듈421: operating system 424: virtual keyboard module
426: 가상 인터페이스 모듈 426a: 비디오 인터페이스 제어모듈426:
426b: 메시지 처리모듈426b: message processing module
Claims (2)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090029362A KR101146180B1 (en) | 2009-04-06 | 2009-04-06 | apparatus for securing user information |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090029362A KR101146180B1 (en) | 2009-04-06 | 2009-04-06 | apparatus for securing user information |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100111013A KR20100111013A (en) | 2010-10-14 |
KR101146180B1 true KR101146180B1 (en) | 2012-05-29 |
Family
ID=43131395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090029362A KR101146180B1 (en) | 2009-04-06 | 2009-04-06 | apparatus for securing user information |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101146180B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10565368B2 (en) | 2015-07-21 | 2020-02-18 | Samsung Electronics Co., Ltd. | Electronic device and method of controlling same |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104049842A (en) * | 2014-05-28 | 2014-09-17 | 广州视睿电子科技有限公司 | Method and system of controlling virtual keyboard |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050212763A1 (en) * | 2004-03-26 | 2005-09-29 | Cannon Kabushiki Kaisha | Information processing apparatus and method |
KR20070024100A (en) * | 2005-08-26 | 2007-03-02 | 조배수 | Network security system by using image key input and its method |
KR20080113881A (en) * | 2007-06-26 | 2008-12-31 | 문창선 | System and method for providing virtual interface |
KR20100003876A (en) * | 2008-07-02 | 2010-01-12 | (주)비이소프트 | Apparatus and method for securing internet banking |
-
2009
- 2009-04-06 KR KR1020090029362A patent/KR101146180B1/en not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050212763A1 (en) * | 2004-03-26 | 2005-09-29 | Cannon Kabushiki Kaisha | Information processing apparatus and method |
KR20070024100A (en) * | 2005-08-26 | 2007-03-02 | 조배수 | Network security system by using image key input and its method |
KR20080113881A (en) * | 2007-06-26 | 2008-12-31 | 문창선 | System and method for providing virtual interface |
KR20100003876A (en) * | 2008-07-02 | 2010-01-12 | (주)비이소프트 | Apparatus and method for securing internet banking |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10565368B2 (en) | 2015-07-21 | 2020-02-18 | Samsung Electronics Co., Ltd. | Electronic device and method of controlling same |
Also Published As
Publication number | Publication date |
---|---|
KR20100111013A (en) | 2010-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11494010B2 (en) | Touch support for remoted applications | |
US8380937B2 (en) | System for preventing unauthorized acquisition of information and method thereof | |
US8117554B1 (en) | Seamless integration of non-native widgets and windows with dynamically scalable resolution into native operating system | |
US20090235177A1 (en) | Multi-monitor remote desktop environment user interface | |
US8924502B2 (en) | System, method and computer program product for updating a user session in a mach-derived system environment | |
KR101512010B1 (en) | Combining interfaces of shell applications and sub-applications | |
WO2022213832A1 (en) | Computer device, virtualization acceleration device, remote control method and storage medium | |
US8558839B1 (en) | Displaying critical system screens in a multiple graphics adapter environment | |
KR100917687B1 (en) | System and method for providing virtual interface | |
US20080215852A1 (en) | System and Device Architecture For Single-Chip Multi-Core Processor Having On-Board Display Aggregator and I/O Device Selector Control | |
JP2012079084A (en) | Remote desktop system and operation application migration system | |
US9286088B2 (en) | User interface for interaction with virtual machine | |
US11249771B2 (en) | Terminal input invocation | |
CN101326513A (en) | Alternative graphics pipe | |
KR101146180B1 (en) | apparatus for securing user information | |
EP1043649A2 (en) | Method and apparatus for dynamically configuring device using device code | |
US10637827B2 (en) | Security network system and data processing method therefor | |
KR100994990B1 (en) | apparatus and method for securing internet banking | |
GB2475132A (en) | Screen recording using keyboard video mouse functionality of chipset | |
KR100989895B1 (en) | apparatus and method for securing on-line payment | |
KR101057474B1 (en) | How to prevent user information leak by screen hack | |
KR100994989B1 (en) | apparatus and method for securing user information | |
US9830288B2 (en) | System and method for transmitting graphics rendered on a primary computer to a secondary computer | |
KR20090060005A (en) | Apparatus and method for sharing screen in monitors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
AMND | Amendment | ||
B601 | Maintenance of original decision after re-examination before a trial | ||
J301 | Trial decision |
Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20110629 Effective date: 20120120 |
|
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150506 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160502 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |