KR100549647B1 - 키보드 입력정보 보안방법 - Google Patents

키보드 입력정보 보안방법 Download PDF

Info

Publication number
KR100549647B1
KR100549647B1 KR1020050072699A KR20050072699A KR100549647B1 KR 100549647 B1 KR100549647 B1 KR 100549647B1 KR 1020050072699 A KR1020050072699 A KR 1020050072699A KR 20050072699 A KR20050072699 A KR 20050072699A KR 100549647 B1 KR100549647 B1 KR 100549647B1
Authority
KR
South Korea
Prior art keywords
keyboard
input information
keyboard input
security
processing function
Prior art date
Application number
KR1020050072699A
Other languages
English (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 KR1020050072699A priority Critical patent/KR100549647B1/ko
Application granted granted Critical
Publication of KR100549647B1 publication Critical patent/KR100549647B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/83Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 키보드로 입력되는 정보에 대한 제3자의 무단유출을 방지하는 보안방법에 관한 것이며, 보다 상세하게는 키보드 입력정보 처리 마지막 단계에서 응용프로그램의 메인함수를 치환하여 키보드 입력정보 메시지를 유출하는 문제를 해소할 수 있는 방법을 포함하는 것으로, 상기 키보드 보안드라이버가 암호화된 키보드 입력정보를 응용프로그램의 보안컨트롤러로 전달하는 단계; 상기 보안컨트롤러가 상기 암호화된 키보드 입력정보를 복호화하는 단계; 운영체제의 유저모드 내에서 상기 암호화된 키보드 입력정보가 정상처리되는 것으로 인식하도록, 상기 보안컨트롤러가 실제 키보드 입력정보를 대신할 더미형 문자정보를 생성한 후 운영체제로 전달하는 단계; 및 상기 더미형 문자정보가 운영체제의 정상적인 처리수행 후 상기 응용프로그램에 도착하면, 상기 보안컨트롤러에서 설정한 키 입력 이벤트 처리함수로 이동하여 복호화된 상기 키보드 입력정보를 출력하는 단계;를 포함하는 것이다.

Description

키보드 입력정보 보안방법{Keboard in-put information security method}
도 1은 본 발명에 따른 키보드 입력정보의 보안이 이루어지는 전체적인 모습을 도시한 블록도이고,
도 2는 응용프로그램 단에서 이루어지는 암호화된 키보드 입력정보의 복호화를 수행하는 모습을 도시한 블록도이고
도 3은 본 발명에 따른 디버그 예외처리에 의한 키보드 입력정보의 처리모습을 도시한 블록도이고,
도 4는 도 3에 도시된 시스템을 통해 이루어지는 키보드 입력정보 보안과정을 순차도시한 플로우차트이고,
도 5는 인터럽트 처리함수 저장주소를 정보침입도구 또는 키보드 보안드라이버가 교체하는 모습을 도시한 도면이고,
도 6은 정보침입도구가 인터럽트 처리함수의 저장주소를 변경하여 키보드 입력정보 발생 시 정보침입도구가 설치한 인터럽트 처리함수가 실행될 수 있도록 된 모습을 도시한 도면이고,
도 7은 본 발명에 따른 키보드 보안드라이버가 키보드 입력정보를 보안하기 위해 인터럽트 처리함수를 재 설치하는 모습을 도시한 도면이고,
도 8은 본 발명에 따른 보안방법에 따라 인터럽트 발생 이후의 처리모습을 도시한 도면이고,
도 9는 본 발명에 따른 인터럽트 처리함수 교체에 의한 키보드 입력정보의 무단유출을 차단하는 방법을 순차 도시한 플로우차트이고,
도 10은 본 발명에 따른 인터럽트 처리함수 교체에 의한 키보드 입력정보의 무단유출을 차단하는 방법의 다른 실시예를 보인 플로우차트이고,
도 11은 도 10에 따라 진행되는 키보드 보안의 처리과정을 개략적으로 도시한 도면이다.
본 발명은 키보드로 입력되는 정보에 대한 제3자의 무단유출을 방지하는 보안방법에 관한 것이며, 보다 상세하게는 키보드 입력정보 처리 마지막 단계에서 응용프로그램의 메인함수를 치환하여 키보드 입력정보 메시지를 유출하는 문제를 해소할 수 있는 방법을 포함하는 것이다.
키보드 하드웨어에서 키보드 버튼을 누르면(Key Press Event) 전기적 신호가 발생되어 메인보드에 설치된 8042 칩 셋(Chip Set)으로 신호가 전달된다. 이 때 키보드하드웨어 위에 키들은 모두 회로모양의 배선 교점(matrix) 위에 있기 때문에, 키가 눌러졌을 때 전류변화가 생기는 가로와 세로축의 라인을 조사하여 어느 키가 눌러졌는지 알아낼 수 있다.
8042 칩 셋을 제어하는 8042 키보드 컨트롤러는 중앙처리장치(CPU)로 키보드 입력정보를 전달하거나 중앙처리장치로부터 하드웨어 제어명령을 전달받기 위하여 사용하는 양방향의 키보드 입출력포트(IO port)에 키보드 스캔코드 형태의 키보드 입력정보를 기록하고, 중앙처리장치에게 인터럽트를 발생시킨다.
양방향의 키보드 입출력 포트는 60h와 64h로 구성되어 있으며, 포트 60h는 키보드 입력정보 및 하드웨어 제어명령을 처리하고, 포트 64h는 포트 60h에 대한 상태 및 명령을 내린다.
키보드 스캔코드는 키를 누르는 순간에 발생하는 메이크코드(Make Code)와 키에서 손을 떼는 순간에 발생하는 브레이크코드(Break Code)로 구성된다. 만약 키를 계속 누르고 있으면 화면에 연속해서 문자가 출력되는데 이것은 일정키가 눌러져 있을 때 메이크코드를 연속으로 출력하고 키에서 손을 떼는 순간 브레이크코드 1개만 출력함으로써 키 반복 과정을 끝내기 때문이다.
계속해서, 인터럽트(Interrupt)란 어떠한 프로세스를 수행하는 도중에 그 일을 잠시 멈추고 중앙처리장치의 업무처리를 위하여 중앙처리장치의 주의를 끄는 방법을 말한다. 물리적인 키보드 입력으로 인하여 발생한 전기적 신호를 전달받은 8042 키보드 컨트롤러는 8259 칩 셋을 제어하는 8259 인터럽트 컨트롤러에게 인터럽트 발생을 요청한다. 8259 인터럽트 컨트롤러는 중앙처리장치에게 해당 인터럽트가 발생했음을 알려주게 되며(Interrupt Request ; IRQ) 중앙처리장치는 해당 인터럽트 처리함수(Interrupt Handler)를 호출하기 위하여 메모리에 적재되어 있는 인터럽트 벡터 테이블을 읽어 발생한 인터럽트에 해당하는 주소값을 얻는다.
이 주소값은 인터럽트가 발생될 때 호출되는 함수가 저장된 주소값을 나타내 는 것으로서 하드웨어 장치가 중앙처리장치에게 어떠한 연산이나 일을 요구할 때 이 주소의 위치로 이동하여 인터럽트 처리함수를 수행하게 된다. 따라서 인터럽트 벡터 테이블에 기록되어 있는 인터럽트 처리함수가 키보드 하드웨어에 대한 연산을 처리하는 과정에서 볼 때 가장 먼저 수행되는 것이라 볼 수 있다.
일반적으로, 키보드 보안이 적용된 웹 페이지가 활성화될 경우 기존의 키보드 인터럽트 처리함수의 주소가 키보드 보안드라이버에서 정의한 인터럽트 처리함수의 주소로 교체된다. 또한, 정보침입도구(해킹프로그램)도 키보드 입력정보의 무단유출을 목적으로 키보드 보안 드라이버와 동일한 방식, 즉 인터럽트 처리함수의 주소를 정보침입도구에서 정의한 인터럽트 처리함수의 주소로 교체한 후 키보드 입력정보의 처리과정에서 필요한 정보를 빼낸다.(도 5 참조)
따라서, 키보드 보안드라이버에서는 키보드 인터럽트 처리함수의 변경된 주소를 정보침입도구가 교체하지 못하도록 0.05초 간격으로 검사하고, 만약 주소가 변경되었을 경우에는 실행을 중단하고 원래의 주소로 되돌리게 된다.
그러나 이와 같은 방법은 정보침입도구도 인터럽트 벡터테이블 내 인터럽트 처리함수의 주소를 주기적으로 변경하여 자신의 주소로 대체하는 기능을 갖고 있다. 결과적으로, 키보드 보안드라이버와 정보침입도구가 인터럽트 처리함수의 주소를 계속적으로 교체하는 상황이 발생하여 키보드 입력이 제대로 처리되지 못하게 되는 문제가 있었다.
한편, 키보드 입력정보인 키보드 스캔코드는 PS/2 방식의 키보드와 마우스 장치를 지원하는 드라이버인 i8042prt.sys(PS/2 Port Driver)에 입력되어 운영체제 에서 인식할 수 있는 시스템 스캔코드로 변형된다.
이상 기술한 바와 같이, 사용자가 키보드를 이용해 정보를 입력함에 있어 키보드 버튼의 물리적인 조작을 통해 발생된 전기적인 신호, 즉 키보드 스캔코드 값은 운영체제로 전달되기 전 키보드 입출력포트에 저장된다.
그런데, 상기 키보드 입출력포트는 키보드 스캔코드가 처리된 이후에도 해당 키보드 스캔코드의 흔적 데이터를 저장하게 된다. 따라서, 상기 흔적 데이터는 해킹 프로그램 등의 표적이 될 수 있으며, 이로인해 키보드 입력정보가 유출될 수 있었다.
이러한 문제를 해소하기 위해 키보드 입출력포트에 남는 키보드 입력정보를 삭제하는 기술이 제시되었다.
키보드 입력정보를 지우는 방법은 별도의 하드웨어 제어명령을 사용하여 키보드 입출력 포트를 제어한다. 키보드 입력정보를 전달받은 키보드 보안 드라이버에서는 키보드 하드웨어(10)에 일반적으로 정의된 제어명령(Enable Keyboard, F4h)을 키보드 입력포트(200 ; 60h, IN)에 송출시킨다. 제어명령을 받은 키보드 하드웨어(10)는 키보드를 활성화(enable, reset)시키고 키보드 출력포트(200 ; 60h, OUT)에 인지확인 메시지(acknowledge)를 송출한다. 이 과정에서 키보드 출력포트(200)에 남아 있는 흔적 정보는 다른 값으로 변경되어 키보드 입력정보가 지워지는 효과를 낳는다.(도 3 참조)
그러나, 이와 같은 보안방법에서도 키보드 보안 드라이버가 키보드 입출력포트 내 정보를 지우는 사이에 다른 정보침입도구가 출력포트의 내용을 가로채어 갈 수 있다는 보안 위험성이 있다. 또한 키보드 입력정보를 처리하기 위하여 운영체제 관점에서의 전체적인 키보드 입력정보 처리과정이 2번 수행되기 때문에 처리속도 지연이 발생할 수 있다.
계속해서, 상기 시스템 스캔코드 값은 여러 키보드 장치 사용을 가능하게 한 논리적 드라이버인 kbdclass.sys에서 운영체제에서 표준으로 사용하는 윈도우 메시지 형태로 변환되어 시스템 메시지 큐(system message queue)에 적재된다.
시스템 메시지 큐는 적재된 키보드 입력정보를 현재 활성화된 응용 프로그램(Focused Application)으로 전달하기 위하여 각각의 응용프로그램이 가지고 있는 쓰레드(Thread) 메시지 큐에 키보드 입력정보를 전달한다. 쓰레드는 독립적인 프로그램이 아니라 프로세스 내에서 일을 처리하기 위한 세부 실행단위로서 하나의 응용프로그램 내에서도 다수의 쓰레드를 가질 수도 있다.
각각의 응용프로그램은 메시지 루프를 돌며 키보드 입력정보가 확인되었을 경우 이를 처리하기 위한 함수(dispatcher)에게 값을 전달하여 아스키 코드(ASCII) 값으로 변환ㆍ처리한 후 쓰레드 메시지 큐에 있는 키보드 입력정보를 제거한다.
그런데, 상기 시스템 메시지 큐 및 쓰레드 메시지 큐를 경유하는 키보드 입력정보는 정보침입도구에 의해 무단 유출될 수 있다. 따라서, 종래에는 상기 키보드 입력정보를 암복호화하여 당해 키보드 입력정보가 유출되어도 무단유출자가 해당 정보를 확인할 수 없도록 하였다.
그러나, 응용프로그램으로 해당 키보드 입력정보가 제공되기 전 암호화된 키보드 입력정보는 다시 복호화되는데, 이때 정보침입도구의 응용프로그램 메인함수 치환을 통해 복호화된 키보드 입력정보가 무단유출될 수 있었다.
이에 본 발명은 상기와 같은 문제를 해소하기 위해 안출된 것으로, 키보드 입력정보 처리과정 중 정보침입도구에 의한 해킹을 통해 정보가 무단유출되는 것을 막고, 특히 암호화된 입력정보가 최종적으로 응용프로그램에 전송되기 전 복호화되면 정보침입도구가 응용프로그램의 메인함수를 치환하여 해당 키보드 입력정보를 무단유출하는 문제를 해소하는 것을 기술적 과제로 한다.
다른 기술적 과제는, 커널영역에서 인터럽트 처리함수의 주소를 변경하여 키보드 입력정보를 무단유출하는 문제를 해소하는 것이다.
다른 기술적 과제는, 커널영역에서 키보드 입출력포트와 중앙처리장치를 매개하는 레지스터 내 키보드 입력정보를 읽어 무단유출하는 문제를 해소하는 것이다.
상기의 기술적 과제를 이루기 위한 본 발명은,
상기 키보드 보안드라이버가 암호화된 키보드 입력정보를 응용프로그램의 보안컨트롤러로 전달하는 단계;
상기 보안컨트롤러가 상기 암호화된 키보드 입력정보를 복호화하는 단계;
운영체제의 유저모드 내에서 상기 암호화된 키보드 입력정보가 정상처리되는 것으로 인식하도록, 상기 보안컨트롤러가 실제 키보드 입력정보를 대신할 더미형 문자정보를 생성한 후 운영체제로 전달하는 단계; 및
상기 더미형 문자정보가 운영체제의 정상적인 처리수행 후 상기 응용프로그램에 도착하면, 상기 보안컨트롤러에서 설정한 키 입력 이벤트 처리함수로 이동하여 복호화된 상기 키보드 입력정보를 출력하는 단계;
를 포함하는 키보드 입력정보 보안방법이다.
상술한 바와 같은 본 발명에 따른 상기 키보드 입력정보 보안방법에 있어서,
상기 암호화된 키보드 입력정보는 문자키와 숫자키에 의한 입력정보에 한하고, 상기 더미형 문자정보는 문자키와 숫자키를 구분하여 생성되어지는 것이다.
상술한 바와 같은 본 발명에 따른 상기 키보드 입력정보 보안방법에 있어서,
레지스터로의 키보드 입력정보 전송 시 디버그 예외처리로서 레지스터 내 키보드 입력정보의 처리가 정지되는 단계;
상기 레지스터로 접근하는 프로그램의 인가 여부를 확인하는 단계; 및
접근 프로그램이 상기 인가된 프로그램일 경우 상기 레지스터에 저장된 키보드 입력정보를 정상 처리하고, 접근 프로그램이 비인가된 프로그램일 경우 상기 레지스터에 저장된 키보드 입력정보를 삭제하는 단계;
를 더 포함하는 것이다.
상술한 바와 같은 본 발명에 따른 상기 키보드 입력정보 보안방법에 있어서,
키보드 보안드라이버가 사용자의 키보드 조작으로 제공되는 인터럽트 처리함 수 주소의 인터럽트 처리함수를 명령어 단위로 분류하는 단계; 및
상기 주소의 인터럽트 처리함수 중 최초로 실행되는 인터럽트 처리함수가, 상기 키보드 보안드라이버가 다른 위치에 배치한 보안용 처리함수로 안내하여 상기 보안용 처리함수가 실행되도록 하는 보안용 JUMP 함수로 대체되고, 대체된 해당 인터럽트 처리함수는 키보드 보안드라이버가 설정한 임시 메모리에 위치되는 단계;
를 더 포함하는 것이다.
상술한 바와 같은 본 발명에 따른 상기 키보드 입력정보 보안방법에 있어서,
상기 임시 메모리에, 상기 보안용 JUMP 함수 다음에 위치한 차순위 인터럽트 처리함수로 안내하여 상기 차순위 인터럽트 처리함수가 실행되도록 하는 비보안용 JUMP 함수가 삽입되는 단계;
키보드 조작으로 발생하는 키보드 입력정보가 특수키 조작에 의한 것인지, 일반키 조작에 의한 것인지 여부를 확인하는 단계;
확인을 통해 해당 키보드 입력정보가 특수키 조작에 의한 것이면, 상기 키보드 보안드라이버가 해당 특수키에 의한 키보드 입력정보를 키보드 입출력포트로 재전송한 후 인터럽트가 재 발생되도록 하는 단계;
재 발생된 인터럽트로서 상기 특수키에 의한 키보드 입력정보를 재 처리할 경우, 상기 임시 메모리에 위치한 인터럽트 처리함수가 실행된 후, 상기 비보안용 JUMP 함수에 의해 상기 차순위 인터럽트 처리함수가 실행되는 단계;
를 더 포함하는 것이다.
일반적으로 키보드 입력정보 처리방법은 키보드 하드웨어의 종류와 운영체제의 종류에 따라 분류된다. 키보드 하드웨어 종류는 연결 방식에 따라 PS/2 방식과 USB(Universal Serial Bus) 방식으로 나뉘며, 운영체제는 윈도우즈 버전에 따라 Windows 9X(95, 98, ME) 계열과 Windows NT(2000, XP)로 나뉜다.
본 발명에 따른 실시예는 Window XP 운영체제에서 작동하는 PS/2 키보드 하드웨어를 기반으로 하고 있으나 이에 한정되지 않으며, 이하의 청구범위를 벗어나지 않는 한도 내에서 보다 다양하게 실시될 수 있을 것이다.
이하 본 발명을 첨부된 예시도면에 의거하여 상세히 설명한다.
도 1은 본 발명에 따른 키보드 입력정보의 보안이 이루어지는 전체적인 모습을 도시한 블록도이고, 도 2는 응용프로그램 단에서 이루어지는 암호화된 키보드 입력정보의 복호화를 수행하는 모습을 도시한 블록도인바, 이를 참조하여 설명한다.
도 1에 도시된 바와 같이, 키보드 하드웨어 조작으로 발생된 전기적 신호는 키보드 컨트롤러 및 키보드 입출력포트를 경유하면서 키보드 스캔코드로 변환된 후 키보드의 커널영역에서 유저모드로 전달된다. 유저모드에서는 상기 키보드 스캔코드가 운영체제에서 처리될 수 있는 시스템 스캔코드로 변환되어 상술한 바 있는 kbdclass.sys, 시스템 메시지 큐 및 스레드 메시지 큐를 순차 경유한 후 대상 응용프로그램으로 전달된다.
이러한 유저모드 내에서 처리되는 키보드 입력정보는 정보침입도구에 의해 무단유출될 수 있는 바, 종래에는 상기 키보드 입력정보를 암호화하여 별도 처리하였음은 종래기술을 소개하면서 이미 설명한 바 있다. 이에 본 발명에 따른 키보드 입력정보 보안방법에서는 유저영역에서 키보드 입력정보를 암호화하고 암호화된 키보드 입력정보의 복호화 시점을 대상 응용프로그램의 보안 컨트롤러에서 최종으로 이루어지도록 하여 복호화된 키보드 입력정보의 유출을 원천 봉쇄하도록 하였다.
이를 위해 본 발명에 따른 키보드 입력정보 보안방법은 키보드 입력정보가 유저모드 단계로 진입하면, 상기 키보드 보안드라이버가 상기 키보드 입력정보를 암호화하여 해당 응용프로그램으로 전송하고 상기 응용프로그램에 설치된 보안 컨트롤러는 암호화된 상기 키보드 입력정보의 복호화 내용에 따른 더미정보(더미형 문자정보)를 시스템 메시지 큐로 전송하여 일반적인 키보드 입력정보 처리과정을 따르게 한다.
상기 더미정보는 기존 운영체제가 상기 응용프로그램과 연동하여 실행됨에 있어, 키보드로부터 입력된 키보드 입력정보가 정상적으로 처리되는 것으로 인식되도록 한다.
도 2를 참조하여 본 발명을 좀더 구체적으로 설명한다.
키보드 입력정보의 암호화는 키보드 인터럽트를 처리하기 위한 루틴이 정의되어 있는 키보드 보안드라이버에서 키보드 입력정보를 암호화한다. 상기 키보드 보안드라이버를 통해 암호화된 키보드 입력정보는 암호화된 문자정보로서 상기 보안컨트롤러로 전달된다.
상기 보안컨트롤러는 암호화된 문자정보를 복호화하기 위한 복호화 수단을 포함한다. 이때, 암호화 및 복호화는 약속된 키 테이블을 근거로 이루어진다.
상기 복호화 수단을 통해 복호화된 키보드 입력정보는 일반키, 즉 보안 가치가 있는 문자키에 관한 것이므로, 상기 보안 컨트롤러에 포함된 더미정보 생성수단은 이를 확인하여 해당 더미정보를 생성한 후 이를 문자입력 이벤트와 함께 운영체제에 전달한다. 운영체제는 상기 더미정보를 키보드 조작에 의한 입력정보로 인식하여 정상적으로 이를 처리하며 결국에는 상기 운영프로그램으로 전송한다.
한편, 키보드 입력정보가 문자냐 아니면 숫자냐에 따라 더미정보를 다르게 생성한다. 즉, 상기 키보드 입력정보가 영문일 경우 'A'로 더미정보를 생성하고, 숫자일 경우 '1'로 더미정보를 생성한다는 것이다.
이는 키보드 입력정보를 출력하기 위하여 시스템적인 문자출력 기술을 별도로 개발하기보다는 안정적인 운영체제의 키보드 입력처리과정을 따르기 위함이며, 문자와 숫자('A' 또는 '1')를 구분하지 않을 경우 기존의 사용자가 웹 페이지 설정한 기존의 키 입력 이벤트 처리함수에 의하여 오작동이 발생할 수도 있기 때문이다. 일예로, 숫자 '3'을 입력한 경우 문자와 숫자의 구분없이 '*'을 더미정보로 보내게 되면, 숫자만 입력을 받는 입력창(Edit Control)에서는 값이 되돌려지게 되어 키보드 입력정보를 출력하지 못하게 된다.
계속해서, 응용프로그램으로 재 전달된 상기 더미형 문자정보는 응용프로그램의 일반적인 문자정보 처리수단을 통해 처리되고, 키보드 입력정보가 출력되기 전에 문자정보 치환수단에 의해 해당 더미정보는 이에 상응하는 복호화된 키보드 입력정보로 치환되어 최종 출력된다.
상기 치환과정은, 더미정보가 응용프로그램에 도착되면 보안컨트롤러에서 미리 설정한 키 입력 이벤트 처리함수로 이동한 후, 현재 오브젝트로부터 발생한 이벤트를 얻어 이벤트의 키 코드값을 복호화된 값으로 변경한다. 그 다음 복호화된 실제 키보드 입력정보를 출력하는 과정을 거치게 된다.
이때, 상기 응용프로그램은 인터넷 접속도구로서 인터넷 익스플로어(Internet Explorer)일 수 있으며, 상기 보안 컨트롤러는 임의의 단말기가 상기 인터넷 접속도구를 이용해 보안대상 웹서버로 접속할 경우, 상기 웹서버와 단말기 간의 통신이 정상적으로 수행될 수 있도록 하는 ActiveX와 같은 프로그램일 수 있다. 물론, 상기 보안 컨트롤러는 상기 단말기가 상기 웹서버와의 접속을 해제할 경우 그 작동을 정지하면서 본 발명의 따른 키보드 입력정보 보안방법의 수행을 중단하고 운영체제의 일반적인 과정에 따라 키보드 입력정보가 처리될 것이다.
계속해서, 본 발명에 따른 키보드 보안방법은 커널영역 중 키보드 입출력포트와 레지스터 사이에서 다음의 보안과정을 수행할 수도 있다.
도 1에 도시된 바와 같이, 키보드 입력정보 처리과정은 상술된 유저모드 이전의 커널영역에서 우선적으로 진행된다. 상기 커널모드는 운영체제에 의해 소프트웨어적으로 운영되는 유저모드가 하드웨어인 키보드의 입력정보를 수신ㆍ처리할 수 있도록 한다.
디버그 예외(Debug Exception)는 프로그램 실행도중에 발생하는 오류를 의미하며, 이와 같은 오류를 처리하여주고 비정상적으로 프로그램이 종료되는 것을 막 는 방법을 예외처리(Exception Handling)라고 한다. 디버그 예외처리를 위하여 디버그 예외처리 실행여부를 결정하고 디버그 예외처리의 대상과 범위를 정의한다.
디버그 예외처리 실행여부에 대한 결정과 디버그 예외처리 대상과 범위에 대한 설정은 특정한 컨트롤 레지스터(Control Register)와 디버그 레지스터(Debug Register)의 필드값을 조정함으로서 정의된다. 컨트롤 레지스터는 시스템 수준의 동작을 제어하는 필드(flag, data field)를 포함하는 레지스터로서 현재 실행중인 작업(task)의 성격이나 동작 환경을 결정하며 CR0 ~ CR4까지 있다. 디버그 예외처리에 대한 실행여부 결정은 'CR4 BIT 3 = SET'으로 설정함으로써 가능하게 된다.
한편, 디버그 예외처리의 대상과 범위의 설정은 디버그 예외를 발생시키는 지점의 주소(breakpoint)와 조건(condition) 등을 설정하는 디버그 레지스터의 필드값을 조정하여 정의하며 DR0 ~ DR7까지 있다. 여기서 의미하는 디버그 예외를 발생시키는 지점의 주소는 일반적으로 시스템 개발자가 현재 진행 중인 프로그램을 정지시키고 그 지점에서의 메모리나 입출력 포트의 상태를 파악하고자 하는 위치를 말한다.
표 1은 디버그 레지스터의 용도를 표시한 것이고, 그림 1은 디버그 레지스터의 구성을 보인다.
[표 1]
레지스터 이름 레지스터 목적
DR0 ~ DR3 Breakpoint Address Register
DR6 Debug Status Register
DR7 Debug Control Register
[그림 1]
Figure 112005043813480-pat00001
디버그 예외처리 대상은 DR0 ~ DR4에서 이루어지고 디버그 예외처리의 조건은 DR7 내에서 Read/Write 필드와 Length 필드를 조정하여 설정한다. Read/Write 필드는 예외처리 발생을 위한 행위조건을 정의하고 Length 필드는 예외처리가 발생하는 위치에서의 감시 범위를 설정한다.
표 2는 DR7 내 Read/Write 필드 정의를 표시한 것이고, 표 3은 DR7 내 Length 필드 정의를 표시한 것이다.
[표 2]
Figure 112005043813480-pat00002
[표 3]
Figure 112005043813480-pat00003
키보드 입출력 포트에 디버그 예외처리를 대상과 범위를 정의하기 위해서는 'DR2 = 00000060h(디버그 예외처리 대상을 키보드 포트 60h로 설정)', 'DR3 = 00000064h(디버그 예외처리 대상을 키보드 포트 64h로 설정)', 그리고 'DR7 = 220007F0h(Read/Write2 = 3, Length2 = 0, DR2에 명시된 대상 Read/Write 접근을 1byte 확인 :: Read/Write3 = 3, Length3 = 0, DR3에 명시된 대상에 Read/Write 접근을 1byte 확인)'로 설정한다. 여기에서 디버그 예외처리 대상을 키보드 입출력 포트 64h까지 지정한 이유는 60h에는 키보드 입력정보 뿐만 아니라 마우스 입출력 정보도 공유되어 저장되기 때문에 64h 내에 저장된 정보를 이용하여 해당 정보가 키보드 정보인지 마우스 정보인지를 확인하여야 하기 때문이다.
도 3은 본 발명에 따른 디버그 예외처리에 의한 키보드 입력정보의 처리모습을 도시한 블록도이고, 도 4는 도 3에 도시된 시스템을 통해 이루어지는 키보드 입력정보 보안과정을 순차도시한 플로우차트이다.
상술된 바와 같이, 키보드 하드웨어(10)를 통해 입력된 입력정보는 전기적 신호로서 키보드 컨트롤러(100)에 전송되고, 상기 키보드 컨트롤러(100)는 전기적인 신호형태의 키보드 입력정보를 스캔코드로 변환시켜 키보드 입출력포트(200)에 저장한다.(S10, S20)
한편, 키보드 컨트롤러(100)로 키보드 입력정보의 수신이 확인되면, 중앙처리장치(30)로부터 하드웨어 제어명령을 전달받기 위한 인터럽트를 발생한다.
상기 인터럽트 발생으로 중앙처리장치(30)는 입력된 키보드 입력정보 처리를 위한 처리함수(명령어)의 위치를 제공하는 인터럽트 디스크립터 테이블 주소를 확인하여 상기 키보드 입출력포트(200)에 저장된 키보드 입력정보로 접근한다.
한편, 상기 중앙처리장치(30)와 키보드 입출력포트(200) 간의 접근 매개는 레지스터(400)이므로, 중앙처리장치(30)는 제공된 처리함수에 따른 키보드 입력정보 처리를 위해 레지스터(400)로 접근하여 상기 키보드 입출력포트(200)로부터 전송되어 온 당해 키보드 입력정보를 읽는다.(S30)
이때, 본 발명에 따른 키보드 입력정보 보안방법에서는, 상기 레지스터(400) 에 키보드 입출력포트(200) 내 키보드 입력정보가 전송되면 디버그 예외처리가 진행되도록 하여 레지스터(400)로 전송되어 온 키보드 입출력포트(200)의 다음 단계처리를 정지시킨다.(S40) 즉, 레지스터(400) 내 저장된 키보드 입력정보를 읽거나 수정할 수 없도록 한다는 것이다.
본 발명에 따른 키보드 입력정보 보안방법에서 디버그 예외처리를 일으키는 방법은 앞서 기술한 바 있으므로 여기서는 생략하도록 한다. 한편, 상기 디버그 예외처리를 위한 셋팅은 컨트롤 레지스터와 디버그 레지스터에서 이루어지면서 키보드 입출력포트(200)를 통해 레지스터(400)로 전송되는 키보드 입력정보의 흐름을 확인하여 레지스터(400)로의 전송 시 디버그 예외가 일어날 수 있게 한다.
계속해서, 상기 디버그 예외처리를 통해 레지스터(400) 내에 저장된 키보드 입력정보의 처리가 정지된 후, 상기 키보드 보안드라이버는 해당 키보드 입력정보의 읽기를 시도하는 프로그램(20)의 인가 여부를 확인한다.(S50)
인가된 프로그램이란, 키보드 보안드라이버 또는 기본 운영체제(OS 등과 같은 지정된 프로그램 등이 될 것이고, 그 이외의 것은 비인가된 프로그램, 즉 해킹프로그램(정보침입도구)이 될 것이다.
여기에서 키보드 입출력 포트(200)에 접근한 프로그램이 인가된 프로그램인지 정보침입도구인지를 확인하는 방법은 기 설치된 키보드 보안드라이버에서 설정한 특정값(flag)을 기준으로 판단하게 되는데, 키보드 보안드라이버 자신이 키보드 입력정보가 저장된 레지스터(400)에 접근할 경우에만 특정값을 설정(Enable)하고, 그 외의 경우에는 특정값을 해지(Disable)한다.(S61, S62)
특정값을 갖지 않은 비 인가된 프로그램의 접근 시 레지스터(400)에 남아있는 키보드 입력정보를 읽지 못하게 하는 방법은 레지스터(400)에 저장된 키보드 입력정보를 변경함으로서 가능하다. 레지스터(400) 내 키보드 입력정보의 변경은 키보드 보안드라이버의 비 인가된 프로그램 접근 확인을 통해 디버그 예외로서 그 처리가 정지된 레지스터(400) 내 입력정보를 직접 삭제시킴으로서 이루어진다. 상기 디버그 예외처리는 레지스터(400)의 삭제 대상을 명확히 하고, 레지스터(400)로 입력정보가 전송되는 단계와 필요에 따라 해당 입력정보를 삭제시키는 단계 사이에 일어날 수 있는 입력정보의 무단유출을 원천봉쇄할 수 있게 한다.
계속해서, 비인가된 프로그램이 입력정보로 접근하는 것을 제한하는 방법은 레지스터(400)에 남아있는 해당 키보드 입력정보를 변경하는 것으로, 키보드 하드웨어(10)로부터 키보드 입출력포트(200) 단 사이에서 이루어지는 키보드 보안을 위한 종래 방법, 즉, 키보드 입출력포트(200)에 남아 있는 키보드 입력정보를 삭제하기 위해 인지확인 메세지(Acknowledgement ; FAh)를 키보드 하드웨어(10)로 송출하여 키보드 입출력포트(200)에 남아 있는 키보드 입력정보를 다른 값으로 변경하는 과정을 수행하지 않아도 된다.
또한, 중앙처리장치(30)와 레지스터(400) 간에 이루어지는 처리영역과, 키보드 하드웨어(10)와 키보드 입출력포트(200) 간에 이루어지는 처리영역에서의 처리속도를 비교하면, 후자의 처리영역은 그 처리속도가 전자에 비해 크게 떨어지므로, 종래 키보드 보안방법에 비해 그 처리속도 또한 크게 증가된다.
결과적으로, 본 발명에 따른 키보드 보안방법을 통해 키보드 하드웨어(10) 단에서 진행되는 키보드 정보입력 과정을 반복수행할 필요가 없고, 그 처리속도 또한 증가됨으로서, 전체적인 처리속도가 높아진다.
이외에도, 본 발명에 따른 키보드 보안방법에서는 레지스터로 접근하는 프로그램의 인가 여부를 확인하여 레지스터에 저장된 키보드 입력정보의 삭제유무를 결정하므로, 키보드를 통해 새로운 정보가 입력될 때마다 키보드 입출력포트 내 입력정보를 갱신하는 번거로움과 처리지연을 극복하여 보다 안정적이고 신속한 정보 입력과정을 수행할 수 있다.
한편, 디버그 예외처리를 위한 함수를 등록하는 방법은 인터럽트와 마찬가지로 인터럽트 벡터 테이블 내에 예외처리를 담당하는 함수의 주소를 변경함으로써 가능하다. 일반적으로 디버그 예외처리를 위한 인터럽트 번호는 1번(INT = 1)을 사용한다.
계속해서, 본 발명에 따른 키보드 보안방법은 커널영역 중 인터럽트 발생 후 해당 인터럽트 처리함수의 주소를 제공하는 과정에서 다음의 보안과정을 수행할 수도 있다.
도 5는 인터럽트 처리함수 저장주소를 정보침입도구 또는 키보드 보안드라이버가 교체하는 모습을 도시한 도면이고, 도 6은 정보침입도구가 인터럽트 처리함수의 저장주소를 변경하여 키보드 입력정보 발생 시 정보침입도구가 설치한 인터럽트 처리함수가 실행될 수 있도록 된 모습을 도시한 도면이다.
키보드 입력정보 발생 시 활성화되는 인터럽트의 처리과정과 이 처리과정에서 이루어지는 보안 또는 해킹 과정에 대해서는 이미 상술한 바 있다.
즉, 도 5를 참조하여 보면, 키보드를 통해 입력된 정보는 키보드 입출력포트를 통해 레지스터에 임시저장되고, 한편으로 인터럽트 컨트롤러는 인터럽트를 발생시켜 중앙처리장치로 키보드 입력정보가 발생했음을 알린다. 이때, 상기 인터럽트는 지정된 인터럽트 번호(INT 9h)로서 이에 연결되는 값인 인터럽트 처리함수 저장주소를 불러오게 되고, 해당 처리함수 저장주소를 통해 상기 키보드 입력정보를 처리할 수 있는 처리함수를 확인할 수 있게 된다.
한편, 도 6을 참조하여 보면, 도 5에 도시된 바와 같이 정보침입도구가 기존에 셋팅된 인터럽트 처리함수 저장주소를 정보침입도구가 임의로 설정한 인터럽트 처리함수의 저장주소로 변경함으로서, 키보드를 통한 입력정보 발생 시 해당 인터럽트 번호(INT 9h)에 대응하는 처리함수의 주소가 바뀐다. 결과적으로 키보드 입력정보가 발생되면 기존에 셋팅된 인터럽트 처리함수 저장주소인 '100h'가 아닌 정보침입도구가 임의로 설정한 인터럽트 처리함수 저장주소인 '200h'로 이동하여서 이곳에 설치된 처리함수를 실행한다.
본 발명은 인터럽트 처리함수 저장주소가 기존에 셋팅된 것인지, 다른 키보드 보안드라이버에 의해 재 셋팅된 것인지, 아니면 정보침입도구가 재 셋팅한 것인지에 관계없이, 셋팅된 현재의 인터럽트 처리함수 저장주소를 그대로 유지하면서도 실질적으로 실행되는 인터럽트 처리함수는 본 발명에 따른 키보드 보안드라이버가 설정한 것이 되도록 함으로서, 키보드 입력정보의 보안은 물론 정보침입도구와 키보드 보안드라이버 간에 인터럽트 처리함수 저장주소를 바꾸기 위해 지속적으로 실행되면서 키보드 입력정보 처리를 지연시키는 문제를 해소시킨다.
이를 위한 본 발명에 따른 보안방법은 다음과 같다.
도 7은 본 발명에 따른 키보드 보안드라이버가 키보드 입력정보를 보안하기 위해 인터럽트 처리함수를 재 설치하는 모습을 도시한 도면이고, 도 8은 본 발명에 따른 보안방법에 따라 인터럽트 발생 이후의 처리모습을 도시한 도면이고, 도 9는 본 발명에 따른 인터럽트 처리함수 교체에 의한 키보드 입력정보의 무단유출을 차단하는 방법을 순차 도시한 플로우차트 인바, 이를 참조하여 설명한다.
본 발명에 따른 보안방법은 다음과 같은 인터럽트 처리함수의 주소교체 차단방법을 통해 이루어진다.
S100 ; 키보드 입력정보 발생단계;
사용자는 키보드를 통해 정보를 입력하게 되며, 이렇게 입력되는 정보는 키보드 하드웨어(미 도시됨)를 통해 각각의 자판에 상응하는 전기신호로 변환되어 키보드 컨트롤러로 전송된다.
이렇게 전송된 키보드 입력정보는 전기신호는 컴퓨터에서 알 수 있는 코드인 스캔코드 형태로 변환되어 키보드 입출력포트에 임시 저장된다.
S200 ; 인터럽트 발생단계;
한편, 키보드 컨트롤러는 키보드 입력정보가 입력되면 인터럽트로서 중앙처리장치에 키보드 입력정보가 발생했음을 알린다. 일반적으로 상기 인터럽트에는 IRQ(Interupt Request)가 첨부되어서, 해당 인터럽트가 주변장치의 하나인 키보드 조작에 의한 발생 인터럽트임을 인식하도록 한다. 일반적으로, 키보드의 IRQ번호는 IRQ1이다.
S300 ; 인터럽트 처리함수 주소안내단계;
상기 인터럽트 발생단계에서 발생된 인터럽트를 중앙처리장치에서 확인하고, 이에 해당하는 인터럽트 처리함수의 저장주소를 안내한다.
안내된 상기 저장주소는 이미 존재하는 인터럽트 처리함수의 저장주소이며, 본 발명에 따른 키보드 보안드라이버는 상기 저장주소를 변경하지 않는다.
S400 ; 처리함수 분류단계;
키보드 보안드라이버는 상기 인터럽트 처리함수의 저장주소로 접근하여 해당 처리함수의 데이터를 분석한다. 상기 처리함수는 메모리에 바이너리(binery) 형태의 데이터로 스트링 되 적재되므로 키보드 보안드라이버는 해당 데이터를 분석하며 이를 명령어 단위로 분류한다.
이러한 분류단계는 상기 인터럽트 처리함수의 일부를 JUMP 함수를 교체하기 위해 반드시 요구되는 과정으로, 중앙처리장치의 연산과정이 충돌없이 원활히 이루어질 수 있도록 하기 위함이다. 이에 대한 보다 상세한 설명은 아래에서 재언급하도록 한다.
S500 ; JUMP 함수 교체단계;
인터럽트 처리함수 중 최초 처리함수를 JUMP 함수로 교체한다. 도 3에 도시된 바와 같이, 기존 처리함수 중 'A Command'와 'B Command'가 JUMP 함수로 교체되고 있다. 이는 상기 분류단계에서 각 처리함수 단위로 구분되므로 JUMP 함수로 교체될 처리함수가 그 크기에 따라 하나 또는 다수개가 될 수 있다. 이는 각 처리함수의 크기가 다르고 그 순서도 일정치 않은 한편, 상기 JUMP 함수는 일정한 크기로 제작되어서 JUMP 함수로 교체되는 처리함수의 내용이 매번 변할 수 있기 때문이다.
상기 처리함수는 순서대로 처리된다. 따라서, 인터럽트 처리함수의 저장주소가 안내하는 위치로 이동한 중앙처리장치는 최초 처리함수부터 실행하기 시작한다. 따라서, 본 발명에 따른 차단방법에서는 상기 JUMP 함수를 기존 처리함수의 최초 처리함수와 교체한다. 물론, 교체되는 기존 처리함수는 하나 또는 둘 이상이 될 수 있다.
계속해서, JUMP 함수가 차지하는 바이트가 기존 인터럽트 처리함수의 최상위 명령어가 차지하는 바이트보다 작을 경우에는 해당 명령어 하나만을 교체하고, 빈 공간을 의미없는 코드로 채운다. 반대로 JUMP 함수가 차지하는 바이트가 기존 인터럽트 처리함수의 최상위 명령어보다 클 경우에는 기존 인터럽트 처리함수에서 그 다음 명령어까지 포함한 크기로 비교하여 코드를 교체한다.
S600 ; 교체된 기존 처리함수의 임시저장단계;
JUMP 함수로 교체된 기존 처리함수는 임시 메모리(stub memory)에 저장된다. 이는 보안이 해제되면 기존 처리함수를 원 위치로 복귀시켜야 하기 때문이다. 이렇게 임시로 저장되는 기존 처리함수는 키보드 입력정보를 처리하는 과정에서는 실제로 실행되지는 않는다.
S810 ; 키보드 보안드라이버의 인터럽트 처리함수 실행단계;
도 8에 도시된 바와 같이, JUMP 함수는 실행될 처리함수를 키보드 보안드라이버가 설정한 처리함수로 안내한다. 즉, 상기 JUMP 300을 통해 인터럽트 처리함수 주소 200h에서 키보드 보안드라이버가 설정한 처리함수 주소 300h으로 처리함수 가 변경된다.
결과적으로, 키보드 입력정보는 그 처리를 위한 처리함수 주소가 누구에 의해 변경되더라도 최종적인 처리함수는 키보드 보안드라이버가 설정한 처리함수에 의하므로, 인터럽트 처리함수가 실행되면서 키보드 입력정보가 무단유출되는 문제를 해소한다.
S900 ; 보안해제 여부 확인단계;
사용자가 임의로 키보드 보안드라이버를 정지시키거나, 보안 대상인 웹페이지와의 접속을 끊을 경우 키보드 보안드라이버는 그 실행을 정지한다.
한편, 키보드 보안드라이버의 실행으로 인해 인터럽트 처리함수가 교체되면 이후 키보드 보안드라이버가 정지되지 않는 한 그 상태를 그대로 유지한다. 이는 정보침입도구가 인터럽트 처리함수의 저장주소가 변하지 않은 것으로 인식하므로 인터럽트 처리함수의 저장주소를 변경하기 위한 구동이 일어나지 않기 때문이다.
S1000 ; 원 처리함수 복귀단계;
보안이 해제되면 임시 메모리에 저장된 기존 처리함수는 원 위치로 복귀한다. 일반적으로, 기존 처리함수는 JUMP 함수의 적재위치에 덮어 씌워지는데, 상술한 바와 같이, JUMP 함수의 크기에 따라 기존 처리함수가 교체된 것이므로, 시스템 에러없이 기존 처리함수는 원 위치로 복귀될 수 있다.
도 10은 본 발명에 따른 인터럽트 처리함수 교체에 의한 키보드 입력정보의 무단유출을 차단하는 방법의 다른 실시예를 보인 플로우차트이고, 도 11은 도 10에 따라 진행되는 키보드 보안의 처리과정을 개략적으로 도시한 도면인바, 이를 참조 하여 설명한다.
키보드는 문자와 숫자는 물론 각종 부호를 표시하는 다수의 키로 이루어지며, 이외에도 함수키 또는 특수한 내용을 입력시킬 수 있는 특수키 등이 더 포함된다.
특수키는 문자키 또는 숫자키와 같이 사용자의 사상을 컴퓨터에 알리는 수단이 아닌 입력된 사상을 어떻게 처리할 것인지를 지시하는 명령키의 기능을 수행한다. 이러한 성질을 지닌 특수키는 상기 문자키 또는 숫자키로서 발생한 키보드 입력정보와는 중앙처리장치 차원에서 별도 처리되므로 이를 함께 처리한다는 것은 키보드를 통한 안정적인 정보 입력에 문제가 될 수 있다.
따라서, 본 발명에 따른 차단방법에서는 키보드를 통해 입력되는 정보의 내용, 즉, 해당 스캔코드가 특수키인지, 아니면 문자키 및 숫자키와 같은 일반키인지를 확인하여 그 처리방식을 달리하도록 한다.
당해 다른 실시예를 설명함에 있어 도 9를 통해 앞서 설명한 중복 내용은 이하에서는 생략하도록 한다.
S700 ; 임시저장된 처리함수의 차순위로 JUMP 함수를 삽입하는 단계;
상기 교체된 기존 처리함수의 임시저장단계(S60)를 통해 임시 메모리에 저장되는 기존 처리함수의 차순위로, 키보드 보안드라이버가 설정한 처리함수의 저장주소로 실행위치를 변경하는 JUMP 함수가 삽입된다.
즉, 도 11에 도시된 바와 같이, 200 h 주소를 갖는 처리함수에 키보드 보안드라이버의 처리함수로 실행위치를 변경하는 JUMP 함수가 삽입된 후, JUMP 함수 위 치에 있던 기존 처리함수는 임시 메모리로 이전되는데, 이전된 임시 메모리에도 상기 JUMP 함수의 차순위의 처리함수의 위치로 실행위치를 변경하는 JUMP 함수가 삽입되는 것이다.
도 11을 통해 제시된 실시예에는 200 h 주소를 갖는 처리함수에서 JUMP 함수의 차순위 주소는 204 h로서, 임시 메모리에 더 삽입된 JUMP 함수는 204 h로 실행위치가 변경되도록 하였다.
S800 ; 특수키/일반키 확인단계;
키보드 보안드라이버는 키보드 입출력포트에 저장되는 키보드 입력정보인 스캔코드를 확인하여 당해 입력정보가 특수키의 정보인지 일반키의 정보인지를 확인한다. 일반적으로 키보드를 구성하는 키들은 고유한 스캔코드를 가지므로 키보드 보안드라이버는 해당 스캔코드를 읽어 관련된 입력정보가 특수키의 조작을 통해 입력된 것인지 일반키 조작을 통해 입력된 것인지를 즉시 판단할 수 있다.
만일, 상기 확인단계(S600)에서 해당 입력정보가 일반키로 확인되면 앞서 상술한 과정을 통해 해당 입력정보를 처리한다.
상기 확인단계(S900)에서 해당 입력정보가 특수키로 확인되면 다음과 같은 과정으로 입력정보를 처리한다.
S820 ; 키보드 입출력포트로 특수키 스캔코드 재입력단계;
키보드 보안드라이버는 특수키를 통한 입력정보를 일반키를 통한 입력정보와는 달리 보안을 하지 않는 상태로 처리되도록 한다. 일반적으로 키보드 입력정보 중 보안대상은 사용자의 사상을 담는 일반키일 것이므로 명령키의 일종인 특수키를 통한 입력정보는 보안가치가 떨어지기 때문이다. 또한, 앞서 설명한 바와 같이, 특수키는 중앙처리장치의 처리를 위한 명령키로, 그 처리과정에 있어 보안을 목적으로 새로운 단계를 추가하면 중앙처리장치의 원활한 실행이 방해를 받을 수 있으므로, 보안없이 일반적인 처리과정을 거치도록 하는 것이 바람직하다.
이를 위해, 키보드 보안드라이버는 특수키의 스캔코드를 키보드 입출력포트인 60h로 보내고 하드웨어 제어명령을 키보드 입출력포트인 64h로 전송하여 키보드 컨트롤러가 새로운 키보드 입력정보가 입력된 것으로 인식되도록 한다. 결과적으로 인터럽트 컨트롤러는 키보드 조작에 의한 새로운 인터럽트를 발생시키고 앞서 기술한 과정에 따라 인터럽트 처리함수 저장주소를 제공받는다.
그런데, 당해 과정은 특수키/일반키 여부 확인 후 특수키임이 판명되면 곧바로 진행되는 것이므로, 키보드 보안드라이버는 상기 과정 이후 새롭게 발생된 인터럽트는 특수키를 통한 입력정보를 처리하기 위한 과정으로 인식하여 임시 메모리에 저장된 기존 인터럽트 처리함수가 실행되도록 한다.
상기 임시 메모리에 저장된 처리함수의 주소는 이미 키보드 보안드라이버 상에 기록된 상태이므로, 특수키 처리를 위해 키보드 입력과정을 재순환하는 경우 곧바로 상기 임시 메모리에 저장된 처리함수의 주소로 이동하여 처리된다.
S830 ; 교체된 처리함수 실행
특수키를 통한 키보드 입력정보는 기존 인터럽트 처리함수의 실행으로 처리된다. 한편, 상기 임시 메모리 내에 위치된 기존 인터럽트 처리함수도 순차적으로 실행되므로, 상기 기존 인터럽트 처리함수의 차순위에 삽입된 JUMP 함수를 통해 최 초 인터럽트 처리함수 주소로 그 실행위치가 변경되어 임시 메모리에 위치된 인터럽트 처리함수 이후의 나머지 인터럽트 처리함수를 순차 실행한다.
이러한 과정을 통해 본 발명에 따른 키보드 보안드라이버는 일반키과 특수키를 통한 각각의 입력정보를 원활히 처리할 수 있다.
이상 상기와 같은 본 발명에 따르면, 유저모드 단계에서 키보드 입력정보가 처리됨에 있어 정보침입도구에 의한 해당 입력정보의 무단유출 가능성을 최소화시켜 키보드를 통한 정보입력을 보다 안전하게 수행할 수 있다.
또한, 키보드를 통해 입력되는 정보의 처리속도가 빨라지게 됨은 물론, 디버그 예외처리로서 레지스터로 입력정보가 전송되는 즉시 다음 단계의 진행이 정지되므로 비인가된 프로그램(해킹 프로그램)에 의한 해당 입력정보의 무단 유출은 원천적으로 봉쇄되어 그 보안성을 높이는 효과가 있다.
또한, 키보드 입력정보 처리를 위한 인터럽트 처리함수의 주소를 정보침입도구와 키보드 보안드라이버가 수시로 변경하면서 키보드 입력정보 처리를 지연시키던 문제를 해소하는 한편, 인터럽트 처리함수가 저장된 주소 변경이 빈번하여도 이에 상관없이 키보드 입력정보의 무단유출을 최소화하는 효과가 있다.

Claims (5)

  1. 상기 키보드 보안드라이버가 암호화된 키보드 입력정보를 응용프로그램의 보안컨트롤러로 전달하는 단계;
    상기 보안컨트롤러가 상기 암호화된 키보드 입력정보를 복호화하는 단계;
    운영체제의 유저모드 내에서 상기 암호화된 키보드 입력정보가 정상처리되는 것으로 인식하도록, 상기 보안컨트롤러가 실제 키보드 입력정보를 대신할 더미형 문자정보를 생성한 후 운영체제로 전달하는 단계; 및
    상기 더미형 문자정보가 운영체제의 정상적인 처리수행 후 상기 응용프로그램에 도착하면, 상기 보안컨트롤러에서 설정한 키 입력 이벤트 처리함수로 이동하여 복호화된 상기 키보드 입력정보를 출력하는 단계;
    를 포함하는 것을 특징으로 하는 키보드 입력정보 보안방법.
  2. 제 1 항에 있어서,
    상기 암호화된 키보드 입력정보는 문자키와 숫자키에 의한 입력정보에 한하고, 상기 더미형 문자정보는 문자키와 숫자키를 구분하여 생성되어지는 것을 특징으로 하는 키보드 입력정보 보안방법.
  3. 제 1 항에 있어서,
    레지스터로의 키보드 입력정보 전송 시 디버그 예외처리로서 레지스터 내 키 보드 입력정보의 처리가 정지되는 단계;
    상기 레지스터로 접근하는 프로그램의 인가 여부를 확인하는 단계; 및
    접근 프로그램이 상기 인가된 프로그램일 경우 상기 레지스터에 저장된 키보드 입력정보를 정상 처리하고, 접근 프로그램이 비인가된 프로그램일 경우 상기 레지스터에 저장된 키보드 입력정보를 삭제하는 단계;
    를 더 포함하는 것을 특징으로 하는 키보드 입력정보 보안방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    키보드 보안드라이버가 사용자의 키보드 조작으로 제공되는 인터럽트 처리함수 주소의 인터럽트 처리함수를 명령어 단위로 분류하는 단계; 및
    상기 주소의 인터럽트 처리함수 중 최초로 실행되는 인터럽트 처리함수가, 상기 키보드 보안드라이버가 다른 위치에 배치한 보안용 처리함수로 안내하여 상기 보안용 처리함수가 실행되도록 하는 보안용 JUMP 함수로 대체되고, 대체된 해당 인터럽트 처리함수는 키보드 보안드라이버가 설정한 임시 메모리에 위치되는 단계;
    를 더 포함하는 것을 특징으로 하는 키보드 입력정보 보안방법.
  5. 제 4 항에 있어서,
    상기 임시 메모리에, 상기 보안용 JUMP 함수 다음에 위치한 차순위 인터럽트 처리함수로 안내하여 상기 차순위 인터럽트 처리함수가 실행되도록 하는 비보안용 JUMP 함수가 삽입되는 단계;
    키보드 조작으로 발생하는 키보드 입력정보가 특수키 조작에 의한 것인지, 일반키 조작에 의한 것인지 여부를 확인하는 단계;
    확인을 통해 해당 키보드 입력정보가 특수키 조작에 의한 것이면, 상기 키보드 보안드라이버가 해당 특수키에 의한 키보드 입력정보를 키보드 입출력포트로 재전송한 후 인터럽트가 재 발생되도록 하는 단계;
    재 발생된 인터럽트로서 상기 특수키에 의한 키보드 입력정보를 재 처리할 경우, 상기 임시 메모리에 위치한 인터럽트 처리함수가 실행된 후, 상기 비보안용 JUMP 함수에 의해 상기 차순위 인터럽트 처리함수가 실행되는 단계;
    를 더 포함하는 것을 특징으로 하는 키보드 입력정보 보안방법.
KR1020050072699A 2005-08-09 2005-08-09 키보드 입력정보 보안방법 KR100549647B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050072699A KR100549647B1 (ko) 2005-08-09 2005-08-09 키보드 입력정보 보안방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050072699A KR100549647B1 (ko) 2005-08-09 2005-08-09 키보드 입력정보 보안방법

Publications (1)

Publication Number Publication Date
KR100549647B1 true KR100549647B1 (ko) 2006-02-06

Family

ID=37178666

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050072699A KR100549647B1 (ko) 2005-08-09 2005-08-09 키보드 입력정보 보안방법

Country Status (1)

Country Link
KR (1) KR100549647B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008105596A1 (en) * 2007-02-27 2008-09-04 Hauri Inc Method of preventing input keystroke data from hacking
WO2009017378A2 (en) * 2007-07-31 2009-02-05 Ahnlab, Inc. Method for generating data of keyboard and apparatus thereof
KR100909891B1 (ko) 2007-10-02 2009-07-31 소프트캠프(주) 커널영역의 키보드 보안을 위한 입력정보 암호화 처리방법
KR100996856B1 (ko) * 2008-10-30 2010-11-26 주식회사 안철수연구소 키보드의 상태 레지스터를 이용한 키로거 탐지 및 방어방법, 장치 및 그 방법을 수행하는 프로그램이 기록된컴퓨터로 읽을 수 있는 기록매체
KR101006720B1 (ko) * 2008-07-04 2011-01-07 킹스정보통신(주) 웹 페이지에서의 비밀번호 보안방법 및 이를 실행하기 위한프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008105596A1 (en) * 2007-02-27 2008-09-04 Hauri Inc Method of preventing input keystroke data from hacking
WO2009017378A2 (en) * 2007-07-31 2009-02-05 Ahnlab, Inc. Method for generating data of keyboard and apparatus thereof
WO2009017378A3 (en) * 2007-07-31 2009-04-16 Ahnlab Inc Method for generating data of keyboard and apparatus thereof
KR100894970B1 (ko) 2007-07-31 2009-04-24 주식회사 안철수연구소 키보드 데이터 발생 방법
KR100909891B1 (ko) 2007-10-02 2009-07-31 소프트캠프(주) 커널영역의 키보드 보안을 위한 입력정보 암호화 처리방법
KR101006720B1 (ko) * 2008-07-04 2011-01-07 킹스정보통신(주) 웹 페이지에서의 비밀번호 보안방법 및 이를 실행하기 위한프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체
KR100996856B1 (ko) * 2008-10-30 2010-11-26 주식회사 안철수연구소 키보드의 상태 레지스터를 이용한 키로거 탐지 및 방어방법, 장치 및 그 방법을 수행하는 프로그램이 기록된컴퓨터로 읽을 수 있는 기록매체

Similar Documents

Publication Publication Date Title
JP5032663B2 (ja) キーボードコントローラの直接制御によるキーボード入力情報保安方法
US20170147515A1 (en) Anti-keylog editor
JP4451884B2 (ja) コンピュータ保安装置、コンピュータ保安方法、及び記録媒体
US6510521B1 (en) Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
CA1290070C (en) Implementing privilege on microprocessor systems for use in software asset protection
US8893280B2 (en) Sensitive data tracking using dynamic taint analysis
US5748888A (en) Method and apparatus for providing secure and private keyboard communications in computer systems
KR101006721B1 (ko) 키보드 입력정보 보안장치 및 그 방법
US20090307783A1 (en) Data processing device, method, program, integrated circuit, and program generating device
US8955150B2 (en) Apparatus and method for managing digital rights using virtualization technique
CN112639778A (zh) 指针认证及指针认证方案之间的动态切换
KR100549647B1 (ko) 키보드 입력정보 보안방법
US20080052709A1 (en) Method and system for protecting hard disk data in virtual context
US7523279B2 (en) Information processing apparatus for accessing memory spaces including a user memory space and a secure memory space
US8838996B2 (en) Non-transitory computer readable medium, program protection apparatus, and program protection method
KR102584506B1 (ko) 가상 기계들을 위한 상태 정보 보호
Evenchick Rustzone: Writing trusted applications in rust
KR101220014B1 (ko) 보안 임계적인 데이터 컨테이너를 제공하기 위한 방법 및컴퓨터 판독가능 매체
KR100589529B1 (ko) 디버그 예외처리에 의한 키보드 입력정보 보안방법
KR100549646B1 (ko) 인터럽트 처리함수 교체에 의한 키보드 입력정보의무단유출을 차단하는 방법
JP5549810B2 (ja) プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム
JP2002244757A (ja) 半導体回路
CN100465980C (zh) 通过进程行为的配伍禁忌提高操作系统安全性的方法
CN117786762A (zh) 一种bios下变量区防篡改系统及方法
KR20230020181A (ko) 정보 보호 기능을 구비한 한 대의 본체를 다수가 사용하는 컴퓨터 시스템 및 상기 시스템의 운영 방법

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
J204 Invalidation trial for patent
J301 Trial decision

Free format text: TRIAL DECISION FOR INVALIDATION REQUESTED 20060905

Effective date: 20070427

J2X1 Appeal (before the patent court)

Free format text: INVALIDATION

J2X2 Appeal (before the supreme court)

Free format text: APPEAL BEFORE THE SUPREME COURT FOR INVALIDATION

J302 Written judgement (patent court)

Free format text: JUDGMENT (PATENT COURT) FOR INVALIDATION REQUESTED 20070602

Effective date: 20080904

J303 Written judgement (supreme court)

Free format text: JUDGMENT (SUPREME COURT) FOR INVALIDATION REQUESTED 20081001

Effective date: 20081211

J301 Trial decision

Free format text: TRIAL DECISION FOR INVALIDATION REQUESTED 20081217

Effective date: 20090129

FPAY Annual fee payment

Payment date: 20121129

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140203

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150130

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170109

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20200106

Year of fee payment: 15