KR101146180B1 - apparatus for securing user information - Google Patents

apparatus for securing user information Download PDF

Info

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
Application number
KR1020090029362A
Other languages
Korean (ko)
Other versions
KR20100111013A (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 KR1020090029362A priority Critical patent/KR101146180B1/en
Publication of KR20100111013A publication Critical patent/KR20100111013A/en
Application granted granted Critical
Publication of KR101146180B1 publication Critical patent/KR101146180B1/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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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/6281Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital 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

사용자정보 보안 기능을 갖는 컴퓨터 장치{apparatus for securing user information}Computer device having a user information security function {apparatus for securing user information}

본 발명은 사용자정보 보안 기능을 갖는 컴퓨터 장치에 관한 것으로, 특히 운영체제와는 독립되는 사용자 인터페이스를 제공함으로써, 운영체제를 통한 해킹으로부터 사용자정보를 안전하게 지킬 수 있도록 한 사용자정보 보안 기능을 갖는 컴퓨터 장치에 관한 것이다.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 system bus 300, and a main memory unit (main memory unit). unit 400, a peripheral device, and various types of interfaces connecting the peripheral device and the central processing unit 100.

전술한 구성에서, 주기억유닛(400)은 바이오스(BIOS)(412)가 저장되는 ROM(410) 및 운영체제(421), 각종 응용 프로그램 및 각종 데이터를 중앙처리유닛(100)에게 제공하고, 중앙처리유닛(100)에 의한 처리 결과를 보관하는 RAM(420)으로 구성될 수 있다. In the above-described configuration, the main memory unit 400 provides the central processing unit 100 with the ROM 410 and the operating system 421 in which the BIOS 412 is stored, various application programs, and various data. It may be configured as a RAM 420 for storing the processing result by the unit 100.

주변장치는 출력유닛, 입력유닛, 보조기억유닛(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 network connection unit 542 for connection with the Internet 544. Here, a monitor 600, a speaker 532, a printer 534, etc. are representative for the output unit, and a keyboard 522, a mouse 524, a scanner, etc. are representative for the input unit, and a hard disk (for the auxiliary storage unit). 510, floppy disk 514, optical disk 518 and the like are representative, and the network connection unit 542 is a typical modem or LAN card.

여기서, 하드디스크(510)에는 운영체제(421), 운영체제(421)에 의해 화면 리소스를 할당받는 일반 응용 프로그램(422), 운영체제(421)와는 독립적으로 비디오 인터페이스(200)를 제어하는 가상 인터페이스 모듈(426) 및 운영체제(421)가 아닌 가상 인터페이스 모듈(426)에 의해 화면 리소스를 할당받는 가상 키보드 모듈(424)이 저장될 수 있다.Here, the hard disk 510 includes a virtual interface module that controls the video interface 200 independently of the operating system 421, the general application program 422 assigned with screen resources by the operating system 421, and the operating system 421 ( 426 and the virtual keyboard module 424 allocated to the screen resource by the virtual interface module 426 rather than the operating system 421 may be stored.

구체적으로, 본 발명의 특징인 가상 인터페이스 처리모듈(426)은 가상 키보드 모듈(424)의 수행에 따른 화면 출력에 있어서 운영체제(421)와는 별개로 비디오 인터페이스(200)를 제어하는, 또 하나의 화면 출력을 위한 운영체제가 되는 것이다.In detail, the virtual interface processing module 426, which is a feature of the present invention, controls another video interface 200 independently of the operating system 421 in outputting a screen according to the execution of the virtual keyboard module 424. To be the operating system for the output.

또한, 운영체제(421)는 컴퓨터 시스템이 부팅되면서 하드디스크(510)에서 RAM(420)으로 로딩되어 기동되는 것이다. 예를 들어, 운영체제(421)는 그래픽유저 인터페이스(GUI)와 멀티태스킹 환경을 지원하는 윈도우즈가 될 수 있다.In addition, the operating system 421 is loaded into the RAM 420 from the hard disk 510 and started as the computer system is booted. For example, the operating system 421 may be a Windows that supports a graphical user interface (GUI) and a multitasking environment.

또한, 일반 응용 프로그램(422)이나 가상 키보드 모듈(424) 혹은 가상 인터페이스 모듈(426)은 실행 과정에서 RAM(420)에 로딩되어 동작되는 것이다.In addition, the general application program 422, the virtual keyboard module 424, or the virtual interface module 426 may be loaded and operated in the RAM 420 during execution.

인터페이스는 모니터(600)와 연결되는 비디오 인터페이스(200), 하드디스크(510)와 연결되는 HDD 인터페이스(500), 자기디스크 드라이브(512)나 광디스크 드라이브(516)와 연결되는 드라이브 인터페이스(510), 키보드(522) 및 마우스(524)와 연결되는 입력 인터페이스(520), 스피커(532)나 프린터(534)와 연결되는 출력 인터페이스(530) 및 네트워크 연결유닛(542)과 연결되는 네트워크 인터페이스(540)를 포함하여 이루어질 수 있다.The interface may include a video interface 200 connected with the monitor 600, a HDD interface 500 connected with the hard disk 510, a drive interface 510 connected with the magnetic disk drive 512 or an optical disk drive 516, An input interface 520 connected to the keyboard 522 and a mouse 524, an output interface 530 connected to the speaker 532 or the printer 534, and a network interface 540 connected to the network connection unit 542. It may be made, including.

종종, 그래픽 카드로 불리는 비디오 인터페이스(200)는 그래픽 처리 유닛(Graphic processor unit)(210), 비디오 메모리(220), 램댁(RAMDAC; Random Access Memory Digital to Analog Convert)(240) 및 모니터(600)에 연결된 출력 포트(230)를 포함하여 이루어질 수 있다.Video interface 200, often referred to as a graphics card, includes a graphics processor unit 210, video memory 220, random access memory digital to analog convert (RAMDAC) 240, and monitor 600. It may include an output port 230 connected to.

여기서, 그래픽 처리 유닛(210)은 중앙처리유닛(100)의 그래픽 작업으로 인해 생기는 병목 현상을 해결하기 위한 그래픽 가속 기능을 하는 것으로서, 비디오 인터페이스(200)의 동작의 제어와 그래픽 데이터의 연산 처리를 담당한다.Here, the graphics processing unit 210 serves as a graphics acceleration function for solving the bottleneck caused by the graphics work of the central processing unit 100, and controls the operation of the video interface 200 and the processing of the graphic data. In charge.

또한, 그래픽 처리 유닛(210)은 상기한 그래픽 가속 기능을 이용하여 비디오 오버레이(video overlay; 이하 '오버레이'라고 한다)를 수행하게 된다. 여기서, 오버레이는 주지되어 있는 바와 같이, 여러 개의 이미지를 중첩하여 표시하는 것으로서 이미지를 분할한 후 이를 각각 모니터(600)에 출력하는 것을 의미한다.In addition, the graphic processing unit 210 performs a video overlay (hereinafter, referred to as an “overlay”) using the graphic acceleration function described above. Here, as is well known, the overlay means displaying a plurality of images by overlapping them, and splitting the images and outputting them to the monitor 600.

또한, 비디오 메모리(200)는 모니터(600)에 나타낼 영상 정보를 일시적으로 저장하는 프레임 버퍼 역할을 수행하는 것이다. 프레임 버퍼의 각 기억단위는 화면의 픽셀에 하나씩 대응하는 것이므로, 비디오 메모리(200) 용량이 클수록 해상도가 높아지게 된다.In addition, the video memory 200 serves as a frame buffer for temporarily storing image information to be displayed on the monitor 600. Since each storage unit of the frame buffer corresponds to one pixel on the screen, the larger the capacity of the video memory 200, the higher the resolution.

또한, 램댁(240)은 비디오 메모리(200)에 저장되어 있는 디지털 정보를 아날로그 정보로 변환하여 모니터(600)로 출력하는 것이다.In addition, the RAM DAC 240 converts digital information stored in the video memory 200 into analog information and outputs the analog information to the monitor 600.

다음으로, 본 발명의 특징적인 양상에 따른 가상 인터페이스 모듈(426)의 기능 및 구성에 대해 도 2 내지 도 4를 참조로 하여 상세하게 설명한다.Next, the function and configuration of the virtual interface module 426 according to the characteristic aspect of the present invention will be described in detail with reference to Figs.

도 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 video memory 220 is an area allocated for screen display of the operating system 421 or the general application program 422, and a general area 222 and a virtual area in which the general screen data 224 is stored. An area allocated for screen display of the keyboard module 424 may be divided into an overlay area 226 in which the virtual interface screen data 228 is stored.

비디오 인터페이스(200)는 운영체제(421)의 제어에 따라, 일반 영역(222)에 저장된 일반 화면 데이터(224) 이를 테면, 바탕 화면 데이터(612)와 일반 응용 프로그램 화면 데이터(614)를 모니터(600)로 제공하는 것이다.The video interface 200 monitors the general screen data 224 stored in the general area 222, such as the desktop data 612 and the general application screen data 614, under the control of the operating system 421. ) To provide.

또한, 비디오 인터페이스(200)는 가상 인터페이스 모듈(426)의 제어에 따라, 모니터(600)의 화면 일부가 가상 키보드 모듈(424)의 화면으로 치환될 수 있도록 오버레이 영역(226)에 저장된 가상 인터페이스 화면 데이터(228)를 모니터(600)로 제공하는 것이다. 이에 따라, 모니터(600)에는 가상 인터페이스 모듈(426)에 의한 가상 인터페이스 화면(616)이 최상단에 표시될 수 있다.In addition, the video interface 200 may control a virtual interface screen stored in the overlay area 226 so that a part of the screen of the monitor 600 may be replaced with the screen of the virtual keyboard module 424 under the control of the virtual interface module 426. The data 228 is provided to the monitor 600. Accordingly, the virtual interface screen 616 by the virtual interface module 426 may be displayed on the top of the monitor 600.

즉, 본 발명의 특징적인 양상에 따른 가상 인터페이스 모듈(426)은 비디오 메모리(220)의 오버레이 영역(226)을 이용하여 운영체제(421)와는 독립적으로 가상 인터페이스 화면(616)을 제공한다. 다시 말해, 비디오 메모리(220)의 오버레이 영역(226)은 가상 인터페이스 화면을 표시하기 위한 독립된 비디오 출력 채널로 사용되는 것이다. 여기서, 가상인터페이스 화면(616)은 가상 인터페이스 배경 이미지(616a), 데이터 입력을 위한 입력 박스(616b), 화면 제어를 위한 컨트롤 박스(616c) 및 가상 키보드 박스(616d) 등과 같은 화면 구성이 될 수 있다.That is, the virtual interface module 426 according to the characteristic aspect of the present invention provides the virtual interface screen 616 independently of the operating system 421 using the overlay area 226 of the video memory 220. In other words, the overlay area 226 of the video memory 220 is used as an independent video output channel for displaying the virtual interface screen. Here, the virtual interface screen 616 may be a screen configuration such as a virtual interface background image 616a, an input box 616b for data input, a control box 616c for screen control, and a virtual keyboard box 616d. have.

결국, 운영체제(421)는 가상 인터페이스 화면(616)으로 무엇이 출력되는지 알 수 없다. 다시 말해, 가상 키보드 모듈(424)은 운영체제(421)의 입장에서 보면, 비활성 상태로 동작하는 것이다. 따라서, 사용자가 프린트 스크린을 한다거나 외부 네트워크에서 운영체제(421)로 모니터(600)로 출력되는 화면을 요청하는 경우, 운영체제(421)는 일반 화면 데이터(612, 614)만을 제공해 줄 뿐이다.As a result, the operating system 421 may not know what is output on the virtual interface screen 616. In other words, the virtual keyboard module 424 operates in an inactive state from the standpoint of the operating system 421. Therefore, when a user performs a print screen or requests a screen output from the external network to the operating system 421 to the monitor 600, the operating system 421 only provides general screen data 612 and 614.

도 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 general screen data 224 according to the execution of the general application program 422 is output to the monitor 600 through the video driver 427 controlling the general area 224. More specifically, first, the general application program 422 generates image information to be output to the monitor. Then, the operating system 421, for example, Windows transfers the image information to the display device interface (DDI) by using a graphics device interface (GDI). Accordingly, the DDI transfers the image information to the video driver 427 according to the priority. As a result, the graphic processing unit 210 stores the image information received from the video driver 427 in the general area 222.

반면, 도 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 interface screen data 228 according to the execution of the virtual keyboard module 424 is output to the monitor 600 through the overlay driver 428 controlling the overlay area 226. . More specifically, first, the virtual keyboard module 424 generates image information (virtual keyboard) to be output to the monitor. Then, the virtual interface module 426 is received from the virtual keyboard module 424 by using an application program interface (API) that allows direct control to the video interface 200 without passing through the operating system 421. The virtual keyboard is passed to the overlay driver 428. As a result, the graphics processing unit 210 stores the virtual keyboard received from the overlay driver 428 in the overlay area 228. Here, the virtual interface module 426 is an API that can directly control the video interface 200 and use the graphic acceleration function of the video interface 200. For example, the virtual interface module 426 may use DirectDraw, DirectShow, OpenGL, or Glide SDK. In addition, the positions of the keys of the virtual keyboard change randomly every time they are displayed.

한편, 도 3에 도시한 바와 같이 본 발명의 가상 인터페이스 모듈(426)은 메 시지 처리모듈(426b) 및 비디오 인터페이스 제어모듈(426a)을 포함하여 이루어질 수 있다.Meanwhile, as shown in FIG. 3, the virtual interface module 426 of the present invention may include a message processing module 426b and a video interface control module 426a.

운영체제(421)는 사용자 입력 인터페이스(520)나 네트워크 인터페이스(540) 혹은 그 밖의 다른 인터페이스에서 발생되는 이벤트를 접수하여 그에 상응하는 메시지를 발생하는 것이다.The operating system 421 receives an event generated by the user input interface 520, the network interface 540, or another interface and generates a corresponding message.

그러면, 메시지 처리모듈(426b)은 운영체제(421)에서 발생되는 메시지를 후킹(hooking)하고, 후킹한 메시지가 가상 키보드 모듈(424)과 관련되어 있는 경우에는 이를 가상 키보드 모듈(424)이나 비디오 인터페이스 제어모듈(426a)로 전달하고 반면, 가상 키보드 모듈(424)의 관련 메시지가 아닌 경우에는 이를 다시 운영체제(421)로 바이패스(bypass)하는 것이다.Then, the message processing module 426b hooks a message generated by the operating system 421, and if the hooked message is related to the virtual keyboard module 424, the message processing module 426b or the video interface. On the other hand, if the message is not related to the virtual keyboard module 424, the controller 426a passes the control module 426a back to the operating system 421.

또한, 가상 키보드 모듈(424)은 메시지 처리모듈(426b)로부터 전달받은 메시지에 따라 가상 키보드의 키 위치를 랜덤하게 생성하여 비디오 인터페이스 제어모듈(426b)에게 제공하는 것이다. 이에 따라, 가상 키보드는 표시될 때마다 키들의 위치가 변하게 된다. 여기서, 키 위치를 랜덤하게 하기 위한 랜덤 함수는 예를 들어 아래와 같다.In addition, the virtual keyboard module 424 randomly generates the key positions of the virtual keyboard according to the message received from the message processing module 426b and provides them to the video interface control module 426b. Accordingly, the position of the keys changes every time the virtual keyboard is displayed. Here, a random function for randomizing the key position is as follows.

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 = MT19937N + 1; // mti = MT19937N + 1 means mt [] is not initialized

{ 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 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 virtual keyboard module 424 generates a virtual keyboard by using the random function, and the program source thereof is as follows, for example.

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 interface control module 426a controls the overlay driver 428 based on the processing result of the message processing module 426b and provides the virtual keyboard generated by the virtual keyboard module 424 to the video interface 200. It is.

도 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 virtual interface module 426.

도 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 mouse 524 or the like.

다음으로, 단계 S110에서는 비디오 인터페이스(200)가 오버레이를 지원하는지, 오버레이가 지원된다면 사용 가능한 오버레이 리소스가 남아 있는지를 판단한다.Next, in step S110, it is determined whether the video interface 200 supports the overlay or if the overlay resource is available, if the overlay is supported.

단계 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 video interface 200 does not support or support the overlay function, the overlay error message is output by the control of the operating system 421 and the virtual interface module 426 Is terminated (step S130 and step S140).

오버레이의 생성 이후, 단계 S150에서는 운영체제(421)의 전역 후킹을 설정한다. 예들 들어, 윈도우즈의 경우에는 API 이를 테면, DirectDraw를 이용하여 전역 후킹의 설정이 가능하다. 전역 후킹이 설정되면, 시스템에서 발생되는 모든 이벤트에 대한 메시지는 가상 인터페이스 모듈(426)에 의해 최우선으로 접수된다. 여기서, 유저모드(application) 단에서 전역 후킹을 하기 위한 프로그램 소스는 예를 들어 아래와 같다.After generation of the overlay, in step S150, global hooking of the operating system 421 is set. For example, in Windows, you can set up global hooking using APIs such as DirectDraw. Once global hooking is established, messages for all events occurring in the system are first and foremost received by the virtual interface module 426. Here, the program source for global hooking in the user mode (application) stage is as follows.

#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 virtual interface screen 616 is displayed using the overlay function in step S160.

이어서, 단계 S170에서는 운영체제(421)에서 메시지가 발생되는가를 판단한다.In operation S170, it is determined whether a message is generated by the operating system 421.

단계 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 general application program 422.

단계 S190에서 메시지 처리모듈(426b)은 필터링된 메시지의 속성값을 가상 인터페이스 표시모듈(426a)로 제공한다. 비디오 인터페이스 제어모듈(426a)은 전달받은 메시지 속성값을 가상 인터페이스 화면(616)에 적절한 화면 표시가 이루어지도록 한다. 또한, 메시지 속성값은 가상 키보드 모듈(424)로도 전달되어 가상 키보드 모듈(424)의 본래의 프로그램 기능이 수행되도록 한다. 또한, 비디오 인터페이스 제어모듈(426a)은 가상 키보드 모듈(424)으로부터 제공받은 가상 키보드를 가상 인터페이스 화면(616)에 표시되도록 한다.In step S190, the message processing module 426b provides the attribute value of the filtered message to the virtual interface display module 426a. The video interface control module 426a may display the received message attribute value on the virtual interface screen 616. The message attribute value is also passed to the virtual keyboard module 424 so that the original program function of the virtual keyboard module 424 is performed. In addition, the video interface control module 426a displays the virtual keyboard provided from the virtual keyboard module 424 on the virtual interface screen 616.

도 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 network interface 540 transmits a login event received through the Internet 544 to the operating system 421.

그러면, 운영체제(421)는 로그인 이벤트에 의거하여 가상 키보드 모듈(424)과 가상인터페이스모듈(426)을 실행한다(단계 S320 및 단계 S330).Then, the operating system 421 executes the virtual keyboard module 424 and the virtual interface module 426 based on the login event (steps S320 and S330).

이에 따라, 단계 S340에서 가상 키보드 모듈(424)은 운영체제(421)에 의해 동작을 개시하는 한편, 모니터를 출력할 로그인 이미지 정보를 생성한다.Accordingly, in operation S340, the virtual keyboard module 424 starts operation by the operating system 421 and generates login image information for outputting the monitor.

또한, 단계 S350에서 가상인터페이스모듈(426)은 오버레이 기능이 지원되는지를 확인하기 위해 비디오인터페이스(200)의 오버레이 영역(350)을 확인한다. 이어서, 단계 S360에서는 가상 인터페이스를 위한 오버레이를 생성할 수 있는지 판단한다.In operation S350, the virtual interface module 426 checks the overlay area 350 of the video interface 200 to confirm whether the overlay function is supported. In operation S360, it is determined whether an overlay for the virtual interface can be generated.

단계 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 operating system 421.

반면, 단계 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 video interface 200 to output the virtual keyboard generated by the virtual keyboard module 424. Accordingly, in operation S390, the video interface 200 displays the virtual keyboard. For example, the virtual keyboard as shown in FIGS. 6 to 10 will be displayed through the monitor 600. That is, the user inputs his or her login information, internet banking information, or payment information through a virtual interface provided by the virtual interface module 426 using a mouse.

한편, 단계 S400에서 가상인터페이스모듈(426)은 전역 후킹을 설정한다. 이렇게 되면, 운영체제(421)에서 생성되는 메시지는 가상인터페이스모듈(426)에 최우선적으로 접수된다(단계 S410). 이에 따라, 단계 S420에서 가상인터페이스모듈(426)은 접수된 메시지가 가상 로그인에 관련되어 있는 것인지를 판단한다.Meanwhile, in step S400, the virtual interface module 426 sets up global hooking. In this case, the message generated by the operating system 421 is first and foremost accepted by the virtual interface module 426 (step S410). Accordingly, in step S420, the virtual interface module 426 determines whether the received message is related to the virtual login.

단계 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 virtual keyboard module 424 processes the received message to generate a virtual keyboard (step S450), and provides it to the virtual interface module 426 (step S460).

이에 따라, 단계 S470에서 가상인터페이스모듈(426)은 새로운 이미지 정보가 출력되도록 비디오 인터페이스(200)를 제어한다. 이에 따라, 단계 S390에서 비디오 인터페이스(200)는 오버레이 영역(226)에 새롭게 저장되는 이미지를 모니터(600)의 가상 인터페이스 화면(616)에 출력시킨다.Accordingly, in operation S470, the virtual interface module 426 controls the video interface 200 to output new image information. Accordingly, in operation S390, the video interface 200 outputs the image newly stored in the overlay area 226 to the virtual interface screen 616 of the monitor 600.

예를 들어, 도 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 mouse 524, the operating system 421 generates a message related thereto. Then, the message processing module 426b receives the message and notifies the video interface control module 426a. Accordingly, the video interface control module 426a controls the video interface 200 to display a cursor for text input in the input box. In this state, the user will again use the mouse 524 to click a number or letter button on the virtual keyboard. As a result, the video interface control module 426a controls the video interface 200 to display the value of the corresponding virtual keyboard in the input box. In this case, the video data stored in the overlay area 226 is preferably converted into the YUV format supported by all graphic cards and stored.

한편, 이상의 실시예가 비디오 인터페이스(200)의 오버레이 영역(226)을 이용한 것이라면, 본 발명의 사용자정보 보안 장치는 비디오 인터페이스(200)의 미니 포트 기능을 이용하여서도 가상 인터페이스를 구현할 수 있다. 따라서, 아래에서는 첨부된 도 11 내지 도 13을 참조로 하여 미니포트 기능을 이용한 가상 인터페이스에 대해 상세하게 설명하는데, 이상의 실시예와 중복되는 내용은 생략함을 밝혀둔다.On the other hand, if the above embodiment uses the overlay area 226 of the video interface 200, the user information security device of the present invention can implement a virtual interface using the mini-port function of the video interface 200. Therefore, hereinafter, the virtual interface using the miniport function will be described in detail with reference to FIGS. 11 to 13, but it will be omitted.

도 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 monitor 600. The two video output channels may consist of, for example, a general video port and a video miniport. In such a method using two video output channels, the general area 222 of the video memory 200 is used to display the virtual interface screen 616. However, the general area 222 of the video memory 220 is used in common, but a part thereof is used as an independent video output channel for displaying a virtual interface.

도 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 general screen data 224 according to the execution of the general application program 422 is output to the monitor 600 through the video driver 427 controlling the general area 224.

반면, 가상 키보드 모듈(424)의 수행에 따른 가상 인터페이스 화면 데이터(228)는 미니 포트를 구동하는 미니포트 드라이버(429)에 의해 가상 인터페이스 화면(616)이 모니터(600)로 출력된다.On the other hand, the virtual interface screen data 228 according to the execution of the virtual keyboard module 424 outputs the virtual interface screen 616 to the monitor 600 by the miniport driver 429 driving the miniport.

도 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 virtual interface module 426.

도 13에 도시한 바와 같이, 미니 포트 기능을 이용한 가상 인터페이스 처리 모듈(426)의 동작은 상술한 오버레이 기능을 이용한 경우와 동일한 동작 수순을 갖는다. 다만, 가상 인터페이스를 위한 초기화 과정이 조금 상이하다.As shown in FIG. 13, the operation of the virtual interface processing module 426 using the miniport function has the same operation procedure as the case of using the above-described overlay function. However, the initialization process for the virtual interface is slightly different.

즉, 도 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 mouse 524 or the like.

다음으로, 단계 S110'에서는 비디오 인터페이스(200)가 미니포트를 지원하는지, 미니포트가 지원된다면 사용 가능한 리소스가 남아 있는지를 판단한다.Next, in step S110 ′, it is determined whether the video interface 200 supports the miniport, and if the miniport supports the available resources.

단계 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 video interface 200 does not support the miniport function or there is no resource for using the miniport, the miniport error message is controlled by the operating system 421. It outputs and the operation | movement of the virtual interface module 426 is complete | finished (step S130 'and step S140).

한편, 인터넷(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 Internet 544 is a network of networks that connect computer networks based on a communication protocol called TCP / IP (Transmission Control Protocol / Internet Protocol), which is scattered around the world, via wired / wireless networks. To indicate. Here, the method of accessing the Internet wirelessly includes a wireless Internet platform installed in a mobile phone, for example, a method of accessing through a mobile communication network based on a WAP (Wireless Application Protocol) or a WIPI (Wireless Internet Platform for Interoperability). A wireless LAN card installed in a computer, etc., provides high-speed Internet access even during stationary or low-speed travel at a quality and cost equivalent to the wireless Internet and ADSL (Asymmetric Digital Subscriber Line) access through a wireless access point (AP). Internet service such as WiBro (WiBro), a portable Internet, and the like.

본 발명의 사용자정보 보안 기능을 갖는 컴퓨터 장치는 전술한 실시 예에 국한되지 않고 본 발명의 기술 사상이 허용하는 범위에서 다양하게 변형하여 실시할 수가 있다.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: virtual interface module 426a: video interface control module

426b: 메시지 처리모듈426b: message processing module

Claims (2)

사용자 입력에 대하여 이벤트를 발생하는 사용자 입력 인터페이스;A user input interface for generating an event for the 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, In response to the hooked message by the virtual keyboard module, the hooked message is transferred to the virtual keyboard module, and the corresponding keyboard value is displayed in a key input box of the virtual keyboard. And a virtual interface module for controlling the video interface on behalf of the operating system. 컴퓨터를,Computer, 키들의 위치가 표시될 때마다 변하는 가상 키보드를 생성하기 위한 (a) 수단;(A) means for creating a virtual keyboard that changes each time the positions of the keys are displayed; 상기 컴퓨터의 운영체제의 메시지를 후킹하기 위한 (b) 수단;(B) means for hooking a message of an operating system of the computer; 상기 (b) 수단에 의해 후킹된 메시지가 상기 (a) 수단과 관련있는 경우에는 상기 운영체제를 대신하여 상기 후킹된 메시지를 상기 (a) 수단에 전달하기 위한 (c) 수단; 및(C) means for forwarding the hooked message to the (a) means on behalf of the operating system if the message hooked by the (b) means relates to the (a) means; And 상기 (a) 수단에 의해 생성되는 상기 가상 키보드 또는 상기 가상 키보드의 키입력박스 내에 해당 가상 키보드의 값이 표시된 가상 키보드의 표시에 대해서 상기 운영체제를 대신하여 상기 컴퓨터의 비디오 인터페이스를 제어하는 (d) 수단으로 기능시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.(D) controlling the video interface of the computer on behalf of the operating system with respect to the display of the virtual keyboard generated by the means (a) or the display of a virtual keyboard in which a value of the virtual keyboard is displayed in a key input box of the virtual keyboard; A computer readable medium having recorded thereon a program for functioning as a means.
KR1020090029362A 2009-04-06 2009-04-06 apparatus for securing user information KR101146180B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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