KR101057474B1 - How to prevent user information leak by screen hack - Google Patents

How to prevent user information leak by screen hack Download PDF

Info

Publication number
KR101057474B1
KR101057474B1 KR1020090057752A KR20090057752A KR101057474B1 KR 101057474 B1 KR101057474 B1 KR 101057474B1 KR 1020090057752 A KR1020090057752 A KR 1020090057752A KR 20090057752 A KR20090057752 A KR 20090057752A KR 101057474 B1 KR101057474 B1 KR 101057474B1
Authority
KR
South Korea
Prior art keywords
screen
user
edit box
virtual keyboard
virtual
Prior art date
Application number
KR1020090057752A
Other languages
Korean (ko)
Other versions
KR20110000314A (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 KR1020090057752A priority Critical patent/KR101057474B1/en
Publication of KR20110000314A publication Critical patent/KR20110000314A/en
Application granted granted Critical
Publication of KR101057474B1 publication Critical patent/KR101057474B1/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/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • 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]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Human Computer Interaction (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)
  • Storage Device Security (AREA)

Abstract

본 발명은 화면 해킹에 의한 사용자 정보 유출 방지 방법에 관한 것으로, 특히 운영체제와는 독립되는 사용자 인터페이스를 제공함으로써, 운영체제를 통한 화면 해킹으로부터 사용자정보를 안전하게 지킬 수 있도록 한 화면 해킹에 의한 사용자 정보 유출 방지 방법에 관한 것이다.The present invention relates to a method of preventing user information leakage by screen hacking, and in particular, by providing a user interface independent from the operating system, preventing user information leakage by screen hacking to securely protect user information from screen hacking through the operating system. It is about a method.

본 발명의 화면 해킹에 의한 사용자 정보 유출 방지 방법은 네트워크 접속 가능한 컴퓨터상에서 가상 인터페이스 모듈에 의해 수행되며, 브라우저에 의해 화면상에 표시되는 웹페이지의 에디트 박스(edit box)상에 커서가 위치하는지 여부를 판단하는 (a) 단계; 상기 판단 결과, 상기 커서가 상기 에디트 박스상에 위치한 경우에는 운영체제를 대신해 비디오 인터페이스를 제어하여 가짜 에디트 박스를 포함하는 가상 키보드를 화면상에 표시하는 (b) 단계; 사용자가 상기 가상 키보드를 통해 입력한 정보 대신 가짜 정보가 상기 가짜 에디트 박스를 통해 표시되도록 상기 브라우저를 제어하는 (c)단계; 및 사용자가 상기 가상 키보드를 통해 입력한 정보를 상기 웹사이트에 전송하도록 상기 브라우저를 제어하는 (d) 단계를 포함하여 이루어진다.The method for preventing user information leakage by screen hacking according to the present invention is performed by a virtual interface module on a network-accessible computer, and whether a cursor is positioned on an edit box of a web page displayed on a screen by a browser. (A) determining; (B) if the cursor is located on the edit box, controlling a video interface on behalf of an operating system to display a virtual keyboard including a fake edit box on a screen; (C) controlling the browser to display fake information through the fake edit box instead of information input by the user through the virtual keyboard; And (d) controlling the browser to transmit information input by the user through the virtual keyboard to the website.

브라우저, BHO, 화면 해킹, 보안, 운영체제, 가상 키보드, 오버레이, 후킹 Browser, BHO, Screen Hack, Security, Operating System, Virtual Keyboard, Overlay, Hooking

Description

화면 해킹에 의한 사용자 정보 유출 방지 방법{method for preventing user information from hacking}Method for preventing user information leakage by screen hacking {method for preventing user information from hacking}

본 발명은 화면 해킹에 의한 사용자 정보 유출 방지 방법에 관한 것으로, 특히 운영체제와는 독립되는 사용자 인터페이스를 제공함으로써, 운영체제를 통한 화면 해킹으로부터 사용자정보를 안전하게 지킬 수 있도록 한 화면 해킹에 의한 사용자 정보 유출 방지 방법에 관한 것이다.The present invention relates to a method of preventing user information leakage by screen hacking, and in particular, by providing a user interface independent from the operating system, preventing user information leakage by screen hacking to securely protect user information from screen hacking through the operating system. It is about a method.

오늘날, 퍼스널 컴퓨터(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.

본 발명은 전술한 문제점을 해결하기 위하여 안출된 것으로서, 사용자가 화면 캡처가 되지 않는 가상 키보드를 통해 웹 브라우저에 정보 입력을 할 수 있도록 함으로써, 운영체제를 통한 화면 해킹으로부터 사용자정보를 안전하게 지킬 수 있도록 한 화면 해킹에 의한 사용자 정보 유출 방지 방법을 제공하는데 그 목적이 있다.The present invention has been made to solve the above-described problems, by allowing the user to input information to the web browser through a virtual keyboard that does not capture the screen, thereby ensuring that the user information is safely protected from screen hacking through the operating system Its purpose is to provide a method for preventing user information leakage by screen hacking.

전술한 목적을 달성하기 위해 본 발명의 화면 해킹에 의한 사용자 정보 유출 방지 방법은 네트워크 접속 가능한 컴퓨터상에서 가상 인터페이스 모듈에 의해 수행되며, 브라우저에 의해 화면상에 표시되는 웹페이지의 에디트 박스(edit box)상에 커서가 위치하는지 여부를 판단하는 (a) 단계; 상기 판단 결과, 상기 커서가 상기 에디트 박스상에 위치한 경우에는 운영체제를 대신해 비디오 인터페이스를 제어하여 가짜 에디트 박스를 포함하는 가상 키보드를 화면상에 표시하는 (b) 단계; 사용자가 상기 가상 키보드를 통해 입력한 정보 대신 가짜 정보가 상기 가짜 에디트 박스를 통해 표시되도록 상기 브라우저를 제어하는 (c)단계;및 사용자가 상기 가상 키보드를 통해 입력한 정보를 상기 웹사이트에 전송하도록 상기 브라우저를 제어하는 (d) 단계를 포함하여 이루어진다.In order to achieve the above object, a method of preventing user information leakage by screen hacking according to the present invention is performed by a virtual interface module on a network-accessible computer, and is an edit box of a web page displayed on a screen by a browser. (A) determining whether a cursor is positioned on the image; (B) if the cursor is located on the edit box, controlling a video interface on behalf of an operating system to display a virtual keyboard including a fake edit box on a screen; (C) controlling the browser so that fake information is displayed through the fake edit box instead of information input by the user through the virtual keyboard; and transmitting information input by the user through the virtual keyboard to the website. (D) controlling the browser.

상기 (a) 단계는 브라우저에 의해 화면상에 표시되는 웹페이지에서 에디트 박스를 찾는 단계와, 상기 찾은 에디트 박스상에 커서가 위치하는지 여부를 판단하는 단계를 포함하여 이루어질 수 있다.The step (a) may include finding an edit box in a web page displayed on the screen by a browser, and determining whether a cursor is located on the found edit box.

상기 (b) 단계는 상기 판단 결과, 상기 커서가 상기 에디트 박스상에 위치한 경우에는 사용자에게 보안 입력의 실행 여부를 물어보기 위한 메시지 창을 표시하도록 상기 브라우저를 제어하는 단계와 사용자가 상기 메시지 창을 클릭하는 경우에는 운영체제를 대신해 비디오 인터페이스를 제어하여 가짜 에디트 박스를 포함하는 가상 키보드를 화면상에 표시하는 단계를 포함하여 이루어질 수 있다.In step (b), when the cursor is located on the edit box, the step (b) of controlling the browser to display a message window for asking the user whether to execute the security input and the user to open the message window. In the case of clicking, the method may include controlling the video interface on behalf of the operating system to display a virtual keyboard including a fake edit box on the screen.

상기 (d) 단계는 사용자가 상기 가상 키보드를 통해 입력한 정보를 암호화하는 단계와, 상기 암호화된 정보를 상기 웹사이트에 전송하도록 상기 브라우저를 제어하는 단계를 포함하여 이루어질 수 있다.The step (d) may include encrypting information input by the user through the virtual keyboard, and controlling the browser to transmit the encrypted information to the website.

본 발명의 화면 해킹에 의한 사용자 정보 유출 방지 방법은 상기 운영체제를 대신해 상기 비디오 인터페이스를 제어하여 사용자가 상기 가상 키보드를 통해 입력한 정보를 화면상에 표시된 상기 가짜 에디트 박스에 표시하는 단계를 더 포함하여 이루어질 수 있다.The method of preventing leakage of user information by screen hacking according to the present invention further includes the step of controlling the video interface on behalf of the operating system to display the information input by the user through the virtual keyboard on the fake edit box displayed on the screen. Can be done.

본 발명의 화면 해킹에 의한 사용자 정보 유출 방지 방법은 사용자가 상기 가상 키보드를 통해 입력한 정보 대신 가짜 정보가 상기 에디트 박스를 통해 표시되도록 상기 브라우저를 제어하는 단계를 더 포함하여 이루어질 수 있다.The method of preventing leakage of user information by screen hacking according to the present invention may further include controlling the browser such that fake information is displayed through the edit box instead of information input by the user through the virtual keyboard.

본 발명의 화면 해킹에 의한 사용자 정보 유출 방지 방법에 따르면, 운영체제와는 독립적으로 비디오 인터페이스를 제어하여 가상 인터페이스 화면을 출력하고 이러한 가상 인터페이스 화면을 이용하여 사용자로부터 정보 입력을 받음으로써, 외부에서 컴퓨터를 해킹한다 하여도 가상 인터페이스 화면은 모니터링할 수 없기 때문에 사용자 정보의 보안이 이루어지는 효과가 있다.According to the method of preventing user information leakage by the screen hacking of the present invention, by controlling the video interface independently of the operating system to output a virtual interface screen and receiving information input from the user by using the virtual interface screen, Even if hacked, since the virtual interface screen cannot be monitored, user information is secured.

이하에는 첨부한 도면을 참조하여 본 발명의 바람직한 실시예에 따라 화면 해킹에 의한 사용자 정보 유출 방지 방법에 대해서 상세하게 설명한다.Hereinafter, a method of preventing user information leakage by screen hacking according to a preferred embodiment of the present invention with reference to the accompanying drawings will be described in detail.

우선, 본 발명에 따른 화면 해킹에 의한 사용자 정보 유출 방지 방법은 데스크톱이나 노트북 컴퓨터에 의해 수행될 수 있는바, 공지되어 있는 컴퓨터의 기능 및 구성은 도 1을 참조로 하여 개략적으로 설명한다.First, a method for preventing user information leakage by screen hacking according to the present invention may be performed by a desktop or notebook computer, and the functions and configurations of known computers will be briefly described with reference to FIG. 1.

도 1은 본 발명에 따른 화면 해킹에 의한 사용자 정보 유출 방지 방법을 수행하는 컴퓨터 장치(이하, '사용자 정보 보안 장치'라 한다)의 블록 구성도이다.1 is a block diagram of a computer device (hereinafter referred to as a user information security device) that performs a method for preventing user information leakage by screen hacking according to the present invention.

도 1에 도시한 바와 같이, 본 발명의 일 실시예에 따른 사용자 정보 보안 장치는 중앙처리유닛(CPU)(100), 시스템 버스(300), 주기억 유닛(main memory unit)(400), 주변장치(peripheral device), 및 주변장치와 중앙처리유닛(100)를 연결하는 여러 종류의 인터페이스를 포함하여 이루어질 수 있다.As shown in FIG. 1, a user information security device according to an embodiment of the present invention may include a central processing unit (CPU) 100, a system bus 300, a main memory unit 400, and a peripheral device. (peripheral device), and various types of interfaces connecting the peripheral device and the central processing unit 100 can be made.

전술한 구성에서, 주기억유닛(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, a floppy disk 514 and an optical disk 518, and the like, 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, and the virtual interface module 426 are 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. 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. Can be.

결국, 운영체제(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 the present invention.

도 3에 도시한 바와 같이, 브라우저(422a)의 수행에 따른 일반 화면 데이터 즉, 브라우저가 웹사이트로부터 수신한 문서(224)는 일반 영역(222)을 제어하는 비디오 드라이버(427)를 통하여 모니터(600)로 출력된다. 보다 구체적으로 설명하자면, 먼저 브라우저(422a)는 모니터로 출력할 이미지 정보를 웹사이트로부터 다운로드한다. 그러면, 운영체제(421) 이를 테면, 윈도우즈는 GDI(Graphics Device Interface)를 활용하여 이미지 정보를 DDI(Display Device interface)로 전달하게 된다. 이에, DDI는 우선순위에 따라 이미지 정보를 비디오 드라이버(427)로 전달하게 된다. 결국, 그래픽 처리 유닛(210)은 비디오 드라이버(427)로부터 받은 이미지 정보를 일반 영역(222)에 저장하게 된다.As shown in FIG. 3, the general screen data according to the execution of the browser 422a, that is, the document 224 received by the browser from the website, is monitored through the video driver 427 that controls the general area 222. 600). More specifically, first, the browser 422a downloads image information to be output to the monitor from a website. 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 may change randomly every time they are displayed.

한편, 도 3에 도시한 바와 같이 본 발명의 가상 인터페이스 모듈(426)은 비디오 인터페이스 제어모듈(426a), 메시지 처리모듈(426b), 암호화 모듈(426c) 및 BHO(Browser Helper Object; 브라우저 도우미 객체) 모듈(426d)를 포함하여 이루어질 수 있다.Meanwhile, as shown in FIG. 3, the virtual interface module 426 of the present invention includes a video interface control module 426a, a message processing module 426b, an encryption module 426c, and a BHO (Browser Helper Object). Module 426d.

운영체제(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 is processed. If the message is transmitted to the interface control module 426a and is not a related message of the virtual keyboard module 424, it is bypassed back to the operating system 421.

가상 키보드 모듈(424)은 메시지 처리모듈(426b)로부터 전달받은 메시지에 따라 가상 키보드의 키 위치를 랜덤하게 생성하여 비디오 인터페이스 제어모듈(426a)에게 제공하는 것이다. 이에 따라, 가상 키보드는 표시될 때마다 키들의 위치가 변하게 된다. 여기서, 키 위치를 랜덤하게 하기 위한 랜덤 함수는 예를 들어 아래와 같다.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 426a. 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)로 제공하는 것이다.The video interface control module 426a controls the overlay driver 428 based on the processing result of the message processing module 426b, the virtual keyboard generated by the virtual keyboard module 424, and information input by the user through the virtual keyboard. To the video interface 200.

암호화 모듈(426c)는 사용자가 가상 키보드를 통해 입력한 정보를 암호화하는 것이다. 예컨대, 브라우저(422a)에게 문서를 제공한 웹사이트에 복호화모듈이 장착되어 있는 경우, 사용자의 입력 정보를 암호화한다.The encryption module 426c encrypts the information input by the user through the virtual keyboard. For example, when the decryption module is mounted on the web site providing the document to the browser 422a, the user's input information is encrypted.

BHO 모듈(426d)은 브라우저(422a)에 의해 화면상에 표시되는 웹사이트의 문서에서 에디트 박스(edit box)를 검색하고, 상기 검색된 에디트 박스상에 커서가 위치하는지 여부를 판단하며, 커서가 에디트 박스상에 위치한 경우 사용자에게 보안 입력의 실행 여부 즉, 가상키보드의 실행 여부를 물어보기 위한 메시지 창을 표시하는 기능을 수행한다. 주지되어 있는 바와 같이, BHO는 인터넷 익스플로러에 함수 기능이 포함되어 제공되는 플로그인 형태의 COM 개체로서, DLL(dynamic linking library) 모듈을 일컫는다.The BHO module 426d searches for an edit box in the document of the website displayed on the screen by the browser 422a, determines whether the cursor is positioned on the retrieved edit box, and the cursor is edited. If it is located on the box, it displays a message window to ask the user whether the security input is executed, that is, whether the virtual keyboard is executed. As is well known, the BHO is a plug-in type COM object provided with a function function in Internet Explorer, and refers to a DLL (dynamic linking library) module.

도 4는 본 발명의 일 실시예에 따른 화면 해킹에 의한 사용자 정보 유출 방지 방법을 개략적으로 설명하기 위한 흐름도인바, 설명의 주체는 가상 인터페이스 모듈(426)임을 밝혀 둔다.4 is a flowchart for schematically illustrating a method for preventing user information leakage by screen hacking according to an embodiment of the present invention, and the subject of the description is a virtual interface module 426.

다음으로, 단계 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 내지 도 11은 본 발명의 사용자 정보 보안 장치에 의해 표시되는 가상 인터페이스 화면을 보인 도면이다.5 is a flowchart illustrating a user information leakage prevention method by screen hacking according to an embodiment of the present invention in detail, Figures 6 to 11 is a virtual interface screen displayed by the user information security device of the present invention The figure 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 firstly received 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 내지 도 11에 도시한 바와 같은 가상 키보드의 입력박스를 사용자가 마우스(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 11 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 click the number or letter button of the virtual keyboard using the mouse 524. As a result, the video interface control module 426a controls the video interface 200 to display the value of the 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)의 미니 포트 기능을 이용하여서도 가상 인터페이스를 구현할 수 있다. 따라서, 아래에서는 첨부된 도 12 내지 도 14를 참조로 하여 미니포트 기능을 이용한 가상 인터페이스에 대해 상세하게 설명하는데, 이상의 실시예와 중복되는 내용은 생략함을 밝혀둔다.If the above embodiment uses the overlay area 226 of the video interface 200, the user information security device of the present invention may implement a virtual interface even using the miniport function of the video interface 200. Therefore, hereinafter, the virtual interface using the miniport function will be described in detail with reference to FIGS. 12 to 14.

도 12는 본 발명의 다른 실시예에 따른 사용자정보 보안 장치에 의해 표시되는 화면을 보인 도면이다.12 is a view showing a screen displayed by the user information security device according to another embodiment of the present invention.

도 12에 도시한 바와 같이, 본 발명의 가상 인터페이스를 구현하기 위한 다른 실시예에서는 모니터(600)의 화면 출력을 위해 두 개의 비디오 출력 채널을 이용한다. 두 개의 비디오 출력 채널은 예를 들어, 일반 비디오 포트와 비디오 미니 포트로 구성될 수 있다. 이와 같은 두 개의 비디오 출력 채널 이용한 방식에서는 가상 인터페이스 화면(616)을 표시하기 위해 비디오 메모리(200)의 일반 영역(222)을 사용한다. 단, 비디오 메모리(220)의 일반 영역(222)을 공통으로 사용하되 그 일부를 가상 인터페이스를 표시하기 위한 독립된 비디오 출력 채널로 사용한다.As shown in FIG. 12, 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.

도 13은 본 발명의 다른 실시예에 따른 사용자정보 보안 장치에 있어서 본 발명의 특징적인 양상에 따른 가상 인터페이스 모듈의 기능 및 구성을 설명하기 위 한 블록 구성도이다.13 is a block diagram illustrating a function and a 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에 도시한 바와 같이, 일반 응용프로그램(422)의 수행에 따른 일반 화면 데이터(224)는 일반 영역(224)을 제어하는 비디오 드라이버(427)를 통하여 모니터(600)로 출력된다.As illustrated in FIG. 13, the general screen data 224 according to the execution of the general application 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.

도 14는 본 발명의 다른 실시예에 따른 화면 해킹에 의한 사용자 정보 유출 방지 방법을 개략적으로 설명하기 위한 흐름도인바, 설명의 주체는 가상 인터페이스 모듈(426)임을 밝혀둔다.FIG. 14 is a flowchart for schematically describing a method for preventing user information leakage by screen hacking according to another embodiment of the present invention, and the subject of the description is a virtual interface module 426.

도 14에 도시한 바와 같이, 미니 포트 기능을 이용한 가상 인터페이스 처리 모듈(426)의 동작은 상술한 오버레이 기능을 이용한 경우와 동일한 동작 수순을 갖는다. 다만, 가상 인터페이스를 위한 초기화 과정이 조금 상이하다.As shown in FIG. 14, 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.

즉, 도 14에 도시한 바와 같이, 먼저 단계 S100에서는 마우스(524) 등을 이용한 사용자의 가상 인터페이스 실행 명령(이벤트)에 의해 동작을 개시하게 된다.That is, as shown in FIG. 14, in operation S100, an 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 is supported, whether the available resources remain.

단계 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).

도 15 내지 도 17은 본 발명의 또 다른 실시예에 따른 화면 해킹에 의한 사용자 정보 유출 방지 방법을 설명하기 위한 흐름도인바, 설명의 주체는 가상 인터페이스 모듈(426)임을 밝혀둔다. 또한, 도 18 내지 도 21은 본 발명의 사용자 정보 보안 장치에 의해 표시되는 웹 문서를 보인 도면이다.15 to 17 are flowcharts for describing a method for preventing user information leakage by screen hacking according to another embodiment of the present invention, and the subject of the description is the virtual interface module 426. 18 to 21 are diagrams showing web documents displayed by the user information security apparatus of the present invention.

먼저, 사용자가 브라우저(422a)를 실행하면 가상 인터페이스 모듈(426)이 하드디스크(510)에서 RAM(420)으로 로딩된다(단계 S301).First, when the user executes the browser 422a, the virtual interface module 426 is loaded from the hard disk 510 into the RAM 420 (step S301).

이에 따라, BHO 모듈(426d)은 브라우저에 의해 화면상에 표시되는 웹사이트 문서(웹페이지)에서 에디트 박스를 찾는다(단계 S303).Accordingly, the BHO module 426d finds the edit box in the website document (web page) displayed on the screen by the browser (step S303).

다음으로, 단계 S305에서는 에디트 박스상에 커서가 위치하는지 여부를 판단한다.Next, in step S305, it is determined whether or not the cursor is positioned on the edit box.

단계 S305에서의 판단 결과, 사용자 ID 및 비밀번호를 입력하기 위한 에디트 박스에 커서가 위치하는 경우에는 사용자에게 보안 입력의 실행 여부를 물어보기 위한 메시지 창을 도 18에 도시한 바와 같이, 에디트 박스 옆에 표시하도록 브라우저(422a)를 제어하게 된다(단계 S307).As a result of the determination in step S305, when the cursor is located in the edit box for inputting the user ID and password, a message window for asking the user whether to execute the security input is shown next to the edit box, as shown in FIG. The browser 422a is controlled to display (step S307).

다음으로, 단계 S309에서는 사용자가 보안입력 창을 클릭하는지 여부를 판단한다.Next, in step S309, it is determined whether the user clicks the security input window.

단계 S309에서의 판단 결과, 사용자가 보안입력 창을 클릭한 경우에는 사용자가 선택한 즉, 커서가 위치한 에디트 박스의 스크립트를 검사하여 아이디(ID)가 'BE_'로 시작하는지 여부를 판단한다(단계 S311). 여기서, 'BE_'는 가상 인터페이스 모듈(426)이 실제(진짜) 에디트 박스를 대신하여 표시되도록 만들어 놓은 가짜 에디트 박스를 나타냄을 의미하는 것이다. 즉, 단계 S311은 사용자가 선택한 에디트 박스가 원본인지 복사본인지를 판별하는 과정이다.As a result of the determination in step S309, when the user clicks the security input window, the script of the edit box selected by the user, that is, the cursor is located is examined to determine whether the ID starts with 'BE_' (step S311). ). Here, 'BE_' means that the virtual interface module 426 represents a fake edit box that is made to be displayed in place of the actual (real) edit box. That is, step S311 is a process of determining whether the edit box selected by the user is an original or a copy.

단계 S311에서의 판단 결과, 사용자가 선택한 에디트 박스의 ID가 'BE_'로 시작하지 않는 진짜 에디트 박스인 경우에는 진짜 에디트 박스의 스크립트에서 사용자가 기입해 놓은 정보를 가져온다(단계 S313). 물론, 사용자가 에디트 박스에 정보를 입력하지 않은 경우에는 가져올 정보는 없다.As a result of the determination in step S311, if the ID of the edit box selected by the user is a genuine edit box that does not start with 'BE_', the information written by the user is taken from the script of the genuine edit box (step S313). Of course, if the user does not enter information in the edit box, there is no information to import.

반면, 사용자가 선택한 에디트 박스가 가짜 에디트 박스인 경우에는 진짜 에디트 박스의 스크립트를 찾아, 사용자가 기입해 놓은 정보를 가져온다(단계 S315).On the other hand, if the edit box selected by the user is a fake edit box, the script of the real edit box is found and the information written by the user is retrieved (step S315).

다음으로, 단계 S317에서는 진짜 에디트 박스의 스크립트에 'AMHO(암호)_'가 있는지를 판단한다. 여기서, 'AMHO_'는 웹사이트와 암/복호화를 공유함을 즉, 가상 인터페이스 모듈(426)은 사용자가 입력한 정보를 암호화하고 웹사이트는 암호화된 정보를 복호화한다는 것을 의미한다.Next, in step S317, it is determined whether "AMHO (password) _" is present in the script of the real edit box. Here, 'AMHO_' means that encryption / decryption is shared with the website, that is, the virtual interface module 426 encrypts the information input by the user and the website decrypts the encrypted information.

단계 S317에서의 판단 결과, 진짜 에디트 박스에 'AMHO_'가 있는 경우에는 가져온 사용자 정보(암호화된 것임)를 삭제한(단계 S319) 다음, 단계 S321로 진행하여 도 19에 도시한 바와 같이, 가상 키보드를 표시한다. 여기서, 가상 키보드는, 가상 인터페이스 모듈(426)이 운영체제를 대신해 비디오 인터페이스를 제어하여 화 면상에 표시한 것이다.As a result of the determination in step S317, if the real edit box contains 'AMHO_', the imported user information (which is encrypted) is deleted (step S319), and the flow proceeds to step S321, as shown in FIG. Is displayed. Here, the virtual keyboard is the virtual interface module 426 controls the video interface on behalf of the operating system to display on the screen.

반면, 진짜 에디트 박스에 'AMHO_'가 없는 경우에는 단계 S323으로 진행하여 가져온 사용자 정보와 함께 가상 키보드를 표시한다. 즉, 가상 키보드의 입력 박스에 가져온 사용자 정보를 표시한다. 따라서, 사용자는 이전에 입력해 놓은 정보를 수정할 수 있다.On the other hand, if there is no 'AMHO_' in the real edit box, the process proceeds to step S323 to display the virtual keyboard with the imported user information. In other words, the imported user information is displayed in the input box of the virtual keyboard. Thus, the user can modify the previously entered information.

다음으로, 단계 S325에서는 사용자가 가상키보드를 통해 입력한 정보를 암호화한다.Next, in step S325, the user encrypts the information input through the virtual keyboard.

다음으로, 단계 S327에서는 웹사이트와 암/복호화를 공유하는지를 판단한다.Next, in step S327, it is determined whether encryption / decryption is shared with the website.

단계 S327에서의 판단 결과, 웹사이트와 암/복호화를 공유하는 경우에는 암호화된 사용자 정보를 진짜 에디트박스에 입력한다(단계 S329).As a result of the determination in step S327, in the case of sharing encryption / decryption with the website, the encrypted user information is input into the genuine edit box (step S329).

반면, 웹사이트와 암/복호화를 공유하지 않는 경우에는 암호화된 사용자 정보를 일반 텍스트로 복호화한 후 진짜 에디트박스에 입력한다(단계 S331).On the other hand, when the encryption / decryption is not shared with the website, the encrypted user information is decrypted in plain text and input into the real edit box (step S331).

다음으로, 단계 S333에서는 사용자가 선택한 에디트박스가 진짜 에디트 박스인지를 판단한다. 부연 설명하자면, 단계 S333은 사용자가 웹사이트에 접속하여 해당 에디트박스를 처음으로 선택한 것인지 아님, 그 이전에 이미 선택하였던 것인지를 판단하는 과정이다. 즉, 사용자가 해당 에디트박스를 이미 선택하였던 것이라고 한다면 브라우저는 진짜 대신 가짜 에디트 박스를 표시하고 있을 것이다.Next, in step S333, it is determined whether the edit box selected by the user is a real edit box. In detail, step S333 is a process of determining whether the user accesses the website for the first time or selects the edit box for the first time. In other words, if the user had already selected the edit box, the browser would display a fake edit box instead.

단계 S333에서의 판단 결과, 사용자가 선택한 에디트 박스가 진짜 에디트 박스인 경우에는 가짜 에디트 박스를 생성하여, 도 20에 도시한 바와 같이 예컨대 '입력'이라는 가짜 정보가 기재된 가짜 에디트 박스를 표시되도록 브라우저(422a)를 제어한다(단계 S335). 그런 다음, 단계 S337로 진행하여 사용자가 상기 가상 키보드를 통해 입력한 정보를 웹사이트에 전송하도록 브라우저(422a)를 제어한다. 그러면, 도 21에 도시한 바와 같이 해당 웹사이트에 로그인하게 된다.As a result of the determination in step S333, if the edit box selected by the user is a real edit box, a fake edit box is generated, and as shown in FIG. 20, for example, as shown in FIG. 422a) (step S335). Then, the flow advances to step S337 to control the browser 422a to transmit the information input by the user through the virtual keyboard to the website. Then, as shown in FIG. 21, the user logs in to the corresponding website.

반면, 사용자가 선택한 에디트 박스가 가짜 에디트 박스인 경우에는 즉, 이미 가짜가 만들어져 있는 경우에는 단계 S337로 진행하여 사용자가 상기 가상 키보드를 통해 입력한 정보를 웹사이트에 전송하도록 브라우저(422a)를 제어한다.On the other hand, if the edit box selected by the user is a fake edit box, that is, a fake has already been made, the process proceeds to step S337 to control the browser 422a to transmit the information input by the user through the virtual keyboard to the website. do.

이상으로, 도 15 내지 도 17을 참조로 하여 설명한 본 발명의 화면 해킹에 의한 사용자 정보 유출 방지 방법에 따르면, 사용자가 웹사이트 로그인, 인터넷 뱅킹 등을 위해 브라우저로 입력하는 사용자 정보들은 화면 해킹으로부터 안전하다. 또한, 해커는 사용자가 미리 설정해놓은 가짜 정보만을 해킹할 뿐이다.As described above, according to the method of preventing user information leakage by the screen hacking of the present invention described with reference to FIGS. Do. In addition, the hacker only hacks fake information preset by the user.

본 발명의 화면 해킹에 의한 사용자 정보 유출 방지 방법은 전술한 실시 예에 국한되지 않고 본 발명의 기술 사상이 허용하는 범위에서 다양하게 변형하여 실시할 수가 있다.The method for preventing user information leakage by screen hacking according to the present invention is not limited to the above-described embodiments, and various modifications can be made within the scope of the technical idea of the present invention.

도 1은 본 발명에 따른 화면 해킹에 의한 사용자 정보 유출 방지 방법을 수행하는 컴퓨터 장치의 블록 구성도이다.1 is a block diagram of a computer device performing a method of preventing user information leakage by screen hacking according to 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 the present invention.

도 4는 본 발명의 일 실시예에 따른 화면 해킹에 의한 사용자 정보 유출 방지 방법을 개략적으로 설명하기 위한 흐름도이다.4 is a flowchart illustrating a user information leakage prevention method by screen hacking according to an embodiment of the present invention.

도 5는 본 발명의 일 실시예에 따른 화면 해킹에 의한 사용자 정보 유출 방지 방법을 구체적으로 설명하기 위한 흐름도이다.5 is a flowchart illustrating a user information leakage prevention method by screen hacking according to an embodiment of the present invention in detail.

도 6 내지 도 11은 본 발명의 사용자 정보 보안 장치에 의해 표시되는 가상 인터페이스 화면을 보인 도면이다.6 to 11 are views showing a virtual interface screen displayed by the user information security device of the present invention.

도 12는 본 발명의 다른 실시예에 따른 사용자정보 보안 장치에 의해 표시되는 화면을 보인 도면이다.12 is a view showing a screen displayed by the user information security device according to another embodiment of the present invention.

도 13은 본 발명의 다른 실시예에 따른 사용자정보 보안 장치에 있어서 본 발명의 특징적인 양상에 따른 가상 인터페이스 모듈의 기능 및 구성을 설명하기 위한 블록 구성도이다.13 is a block diagram illustrating a function and a 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.

도 14는 본 발명의 다른 실시예에 따른 화면 해킹에 의한 사용자 정보 유출 방지 방법을 개략적으로 설명하기 위한 흐름도이다.14 is a flowchart schematically illustrating a method for preventing leakage of user information by screen hacking according to another embodiment of the present invention.

도 15 내지 도 17은 본 발명의 또 다른 실시예에 따른 화면 해킹에 의한 사용자 정보 유출 방지 방법을 설명하기 위한 흐름도이다.15 to 17 are flowcharts illustrating a method of preventing user information leakage by screen hacking according to another embodiment of the present invention.

도 18 내지 도 21은 본 발명의 사용자 정보 보안 장치에 의해 표시되는 웹 문서를 보인 도면이다.18 to 21 are diagrams showing web documents displayed by the user information security device 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: 메시지 처리모듈 426c: 암호화 모듈426b: message processing module 426c: encryption module

426d: BHO 모듈426d: BHO module

Claims (7)

네트워크 접속 가능한 컴퓨터상에서 가상 인터페이스 모듈에 의해 수행되며,Performed by a virtual interface module on a network accessible computer, 브라우저에 의해 화면상에 표시되는 웹페이지의 에디트 박스(edit box)상에 커서가 위치하는지 여부를 판단하는 (a) 단계;(A) determining whether a cursor is positioned on an edit box of a web page displayed on the screen by a browser; 상기 판단 결과, 상기 커서가 상기 에디트 박스상에 위치한 경우에는 운영체제를 대신해 비디오 인터페이스를 제어하여 가짜 에디트 박스를 포함하는 가상 키보드를 화면상에 표시하는 (b) 단계;(B) if the cursor is located on the edit box, controlling a video interface on behalf of an operating system to display a virtual keyboard including a fake edit box on a screen; 사용자가 상기 가상 키보드를 통해 입력한 정보 대신 가짜 정보가 상기 가짜 에디트 박스를 통해 표시되도록 상기 브라우저를 제어하는 (c)단계;및(C) controlling the browser to display fake information through the fake edit box instead of information input by the user through the virtual keyboard; and 사용자가 상기 가상 키보드를 통해 입력한 정보를 웹사이트에 전송하도록 상기 브라우저를 제어하는 (d) 단계를 포함하여 이루어진 화면 해킹에 의한 사용자 정보 유출 방지 방법.And (d) controlling the browser to transmit the information input by the user through the virtual keyboard to the website. 제 1 항에 있어서, 상기 (a) 단계는,The method of claim 1, wherein step (a) comprises: 브라우저에 의해 화면상에 표시되는 웹페이지에서 에디트 박스를 찾는 단계와,Finding the edit box in the web page displayed on the screen by the browser, 상기 찾은 에디트 박스상에 커서가 위치하는지 여부를 판단하는 단계를 포함하여 이루어지는 것임을 특징으로 하는 화면 해킹에 의한 사용자 정보 유출 방지 방법.And determining whether or not the cursor is located on the found edit box. 제 2 항에 있어서, 상기 (b) 단계는,The method of claim 2, wherein step (b) comprises: 상기 판단 결과, 상기 커서가 상기 에디트 박스상에 위치한 경우에는 사용자에게 보안 입력의 실행 여부를 물어보기 위한 메시지 창을 표시하도록 상기 브라우저를 제어하는 단계와,If the cursor is located on the edit box, controlling the browser to display a message window for asking a user whether to execute security input; 사용자가 상기 메시지 창을 클릭하는 경우에는 운영체제를 대신해 비디오 인터페이스를 제어하여 가짜 에디트 박스를 포함하는 가상 키보드를 화면상에 표시하는 단계를 포함하여 이루어지는 것임을 특징으로 하는 화면 해킹에 의한 사용자 정보 유출 방지 방법.If the user clicks on the message window, controlling the video interface on behalf of the operating system to display a virtual keyboard including a fake edit box on the screen comprising the step of preventing user information leakage by screen hacking, characterized in that . 제 3 항에 있어서, 상기 (d) 단계는,The method of claim 3, wherein step (d) 사용자가 상기 가상 키보드를 통해 입력한 정보를 암호화하는 단계와,Encrypting information input by the user through the virtual keyboard; 상기 암호화된 정보를 상기 웹사이트에 전송하도록 상기 브라우저를 제어하는 단계를 포함하여 이루어지는 것임을 특징으로 하는 화면 해킹에 의한 사용자 정보 유출 방지 방법.And controlling the browser to transmit the encrypted information to the web site. 제 3 항에 있어서, The method of claim 3, wherein 상기 운영체제를 대신해 상기 비디오 인터페이스를 제어하여 사용자가 상기 가상 키보드를 통해 입력한 정보를 화면상에 표시된 상기 가짜 에디트 박스에 표시하는 단계를 더 포함하여 이루어지는 것을 특징으로 하는 화면 해킹에 의한 사용자 정보 유출 방지 방법.And controlling the video interface on behalf of the operating system to display the information input by the user through the virtual keyboard on the fake edit box displayed on the screen. Way. 삭제delete 제 1 항 내지 제 5 항 중 어느 한 항의 화면 해킹에 의한 사용자 정보 유출 방지 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.A computer-readable medium having recorded thereon a program for executing the method for preventing user information leakage by screen hacking according to any one of claims 1 to 5.
KR1020090057752A 2009-06-26 2009-06-26 How to prevent user information leak by screen hack KR101057474B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090057752A KR101057474B1 (en) 2009-06-26 2009-06-26 How to prevent user information leak by screen hack

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090057752A KR101057474B1 (en) 2009-06-26 2009-06-26 How to prevent user information leak by screen hack

Publications (2)

Publication Number Publication Date
KR20110000314A KR20110000314A (en) 2011-01-03
KR101057474B1 true KR101057474B1 (en) 2011-08-17

Family

ID=43609183

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090057752A KR101057474B1 (en) 2009-06-26 2009-06-26 How to prevent user information leak by screen hack

Country Status (1)

Country Link
KR (1) KR101057474B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106873862A (en) 2016-08-23 2017-06-20 阿里巴巴集团控股有限公司 A kind of data inputting method and device

Citations (1)

* 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

Patent Citations (1)

* 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

Also Published As

Publication number Publication date
KR20110000314A (en) 2011-01-03

Similar Documents

Publication Publication Date Title
US8380937B2 (en) System for preventing unauthorized acquisition of information and method thereof
CN101228571B (en) Secure hardware desktop buffer composition
JP6347831B2 (en) Method, data processing program, computer program product, and data processing system for handling guest events in a system controlled by a hypervisor
US8176324B1 (en) Method and system for a secure virtual keyboard
AU2004214620B2 (en) Providing secure input and output to a trusted agent in a system with a high-assurance execution environment
US10552613B2 (en) Secure firmware devices and methods
US8863113B1 (en) Method and system for unattended installation of guest operating system
US9069869B1 (en) Storing on a client device data provided by a user to an online application
US8874931B2 (en) System and method for securing a user interface
JP2013178764A (en) Security-enhanced computer system and method
US20090019226A1 (en) Methods and systems for providing a level of access to a computing device
KR20080078820A (en) Device providing a secure work environment and utilizing a virtual interface
US20080178006A1 (en) Secure pin transmission
JP2005323362A (en) Method and system for improving security of electronic document in computer network
US20070016792A1 (en) Middleware sign-on
Latzo et al. Bmcleech: Introducing stealthy memory forensics to bmc
CN101458746B (en) Third party secured storage for web services and web applications
KR101057474B1 (en) How to prevent user information leak by screen hack
US8499359B1 (en) Data loss prevention using an ephemeral key
KR20090109640A (en) Apparatus and method for protecting data in usb devices
KR101146180B1 (en) apparatus for securing user information
US20110102442A1 (en) Recording Contents of Display Screens
US20070061790A1 (en) Partially compiled data security software
KR100989895B1 (en) apparatus and method for securing on-line payment
KR100994990B1 (en) apparatus and method for securing internet banking

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150804

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee