KR100557340B1 - 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치및 보안 방법 - Google Patents

보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치및 보안 방법 Download PDF

Info

Publication number
KR100557340B1
KR100557340B1 KR1020050019911A KR20050019911A KR100557340B1 KR 100557340 B1 KR100557340 B1 KR 100557340B1 KR 1020050019911 A KR1020050019911 A KR 1020050019911A KR 20050019911 A KR20050019911 A KR 20050019911A KR 100557340 B1 KR100557340 B1 KR 100557340B1
Authority
KR
South Korea
Prior art keywords
data
input device
interrupt
security
service routine
Prior art date
Application number
KR1020050019911A
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 KR1020050019911A priority Critical patent/KR100557340B1/ko
Application granted granted Critical
Publication of KR100557340B1 publication Critical patent/KR100557340B1/ko

Links

Images

Classifications

    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01FADDITIONAL WORK, SUCH AS EQUIPPING ROADS OR THE CONSTRUCTION OF PLATFORMS, HELICOPTER LANDING STAGES, SIGNS, SNOW FENCES, OR THE LIKE
    • E01F9/00Arrangement of road signs or traffic signals; Arrangements for enforcing caution
    • E01F9/50Road surface markings; Kerbs or road edgings, specially adapted for alerting road users
    • E01F9/553Low discrete bodies, e.g. marking blocks, studs or flexible vehicle-striking members
    • E01F9/565Low discrete bodies, e.g. marking blocks, studs or flexible vehicle-striking members having deflectable or displaceable parts
    • E01F9/573Self-righting, upright flexible or rockable markers, e.g. resilient flaps bending over
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01FADDITIONAL WORK, SUCH AS EQUIPPING ROADS OR THE CONSTRUCTION OF PLATFORMS, HELICOPTER LANDING STAGES, SIGNS, SNOW FENCES, OR THE LIKE
    • E01F9/00Arrangement of road signs or traffic signals; Arrangements for enforcing caution
    • E01F9/50Road surface markings; Kerbs or road edgings, specially adapted for alerting road users
    • E01F9/576Traffic lines
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B5/00Optical elements other than lenses
    • G02B5/12Reflex reflectors
    • G02B5/126Reflex reflectors including curved refracting surface
    • G02B5/128Reflex reflectors including curved refracting surface transparent spheres being embedded in matrix
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B29WORKING OF PLASTICS; WORKING OF SUBSTANCES IN A PLASTIC STATE IN GENERAL
    • B29KINDEXING SCHEME ASSOCIATED WITH SUBCLASSES B29B, B29C OR B29D, RELATING TO MOULDING MATERIALS OR TO MATERIALS FOR MOULDS, REINFORCEMENTS, FILLERS OR PREFORMED PARTS, e.g. INSERTS
    • B29K2995/00Properties of moulding materials, reinforcements, fillers, preformed parts or moulds
    • B29K2995/0018Properties of moulding materials, reinforcements, fillers, preformed parts or moulds having particular optical properties, e.g. fluorescent or phosphorescent
    • B29K2995/0035Fluorescent

Landscapes

  • Engineering & Computer Science (AREA)
  • Architecture (AREA)
  • Civil Engineering (AREA)
  • Structural Engineering (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Optics & Photonics (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 데이터 입력장치를 통해 인가되는 데이터가 운영체제에서 지원하는 운영체제 입력 디바이스 드라이버를 거치지 않고 바로 보안 입력 디바이스 드라이버를 통해 암호화되도록 하여 해킹 프로그램들이 데이터 입력장치를 통해 인가되는 데이터를 불법적으로 획득하는 것을 원천적으로 차단하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치 및 보안 방법을 개시한다.
데이터 입력장치, 보안 입력 디바이스 드라이버, 입력 인터럽트 서비스 루틴, 암호화

Description

보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치 및 보안 방법{Computer security Apparatus and method using security input device driver}
도 1은 본 발명의 바람직한 실시예에 따른 컴퓨터 보안 장치의 개략적인 구성도이다.
도 2는 본 발명의 컴퓨터 보안 장치가 정상적으로 동작되는지 여부를 사용자에게 알려주기 위한 수단의 일예인 트레이 아이콘을 도시한 그림이다.
도 3은 본 발명의 컴퓨터 보안 장치에 따라서, 데이터 입력장치를 통해 인가되는 데이터를 보호하는 방법을 설명하기 위한 흐름도이다.
도 4는 본 발명의 바람직한 실시예에 따른 컴퓨터 보안방법을 방법을 설명하기 위한 개념도이다.
도 5는 본 발명의 컴퓨터 보안 장치의 감시부가 인터럽트 디스크립터 테이블에 등록된 데이터 입력 수신부의 주소의 변경여부를 감시하는 방법을 설명하기 위한 흐름도이다.
도 6은 본 발명의 바람직한 실시예에 따라 보안 상태를 표시하는 화면의 일례를 도시한 도면이다.
도 7은 본 실시예의 컴퓨터 보안장치에 보안 인터럽트 서비스 루틴에 점프 바이너리 코드를 삽입하는 방법으로 보안성을 해치는 상황을 설명하기 위한 개념도이다.
도 8은 본 실시예의 컴퓨터 보안장치에 보안 인터럽트 서비스 루틴에 점프 바이너리 코드를 삽입하는 방법으로 보안성을 해치는 문제점을 해결하기 위한 과정을 설명하기 위한 흐름도이다.
도 9는 보안 인터럽트 서비스 루틴을 호출하기 전에 트랩 인터럽트 서비스 루틴으로 점프하는 방법으로 보안성을 해치는 상황을 설명하기 위한 개념도이다.
본 발명은 컴퓨터 보안에 관한 것으로서, 보다 상세하게는, 인터럽트 디스크립터 테이블에 등록된 운영체제(Operating System)의 입력 인터럽트 서비스 루틴을 보안 입력 인터럽트 서비스 루틴으로 교체하는 컴퓨터 보안 장치에서 발생하는 취약점을 보완할 수 있는 시스템과 방법을 제공하는 것이다. 이러한 구성을 통하여 해킹 프로그램에 의한 불법적인 입력 데이터 획득 및 전송을 효율적으로 차단할 수 있다.
최근 컴퓨터와 인터넷 등이 급속도로 발전함에 따라 인터넷 뱅킹이나 증권 HTS(Home Trading System)와 같은 중요 업무를 컴퓨터를 사용하여 이용할 수 있게 되었다. 그러나, 이를 악용하여 스파이 웨어(spyware)나 키스트로커 로거(key stroke logger)를 이용해 키보드와 같은 데이터 입력장치를 통해 입력되는 데이터를 별도로 모두 획득하여 기록한 후 이를 이메일 주소나 웹사이트 주소를 통해 외부로 보내 도용하는 사례들이 증가하고 있다.
이러한 악용 사례를 해결하고자 다양한 기술이 이용되고 있다. 일반적으로 PC에 바이러스 백신, 스파이웨어 제거 도구 또는 PC 방화벽 등을 이용하여 스파이웨어 등의 악성 프로그램을 탐지하고 제거하다. 그러나, 변형된 악성 프로그램들에 대해서는 그 프로그램을 획득하고 분석하여 제거하는 방법을 찾아내기 전까지는 도움이 되지 못한다.
이러한 문제점을 보안하기 위하여 악성 프로그램이 입력 데이터를 가로채지 못하도록 입력 데이터를 시스템에서 전달 받아 응용 프로그램에 안전하게 전달하는 방식이 소개되고 있다. 이와 같은 방식들이 소개된 문헌들을 소개하면 다음과 같다. 한국특허공개공보 2002-48313의 “키보드 해킹 방지 방법”, 한국등록특허공보 0378586의 “엑티브엑스 기반의 키보드 해킹 방지 방법 및 장치”, 한국특허공개공보 2004-92101의 “가상 키보드 데이터 전송을 이용한 키보드 해킹 방지 방법”, 한국특허공개공보 2004-66237의 “키 입력 도용 방지 방법”, 및 등록특허공보 0447777의 “키 스트록 데이터의 해킹 방지 방법 및 이를 기록한 컴퓨터로 읽을 수 있는 기록매체” 등이 있다.
상술한 선행문헌들 중 대표적인 것으로 한국특허 등록번호 제0378586이 있다. 이 특허에 개시된 내용은 윈도우 입력 메시지 정보를 가로채어 응용프로그램과 동일 레벨의 입력 데이터를 보호하는 기술을 개시하고 있다. 그러나, 이 기술을 이용하더라도 보안 디바이스 드라이버 보다 먼저 입력 데이터를 가로채는 필터 드라이버를 사용하거나 인터럽트 서비스 루틴과 같은 하위 단계에서 입력 데이터를 받게 되는 해킹 프로그램을 사용하게 되는 경우는 상술한 기술의 보안이 무력화되는 취약점을 가지고 있다.
이러한 문제점을 해결하기 위하여 한국특허공개공보 제2003-36276에는 “보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안시스템”을 개시하고 있다. 이 방식에 의하면, 데이터 입력장치를 통해 인가되는 데이터가 운영체제에서 지원하는 운영체제 입력 디바이스 드라이버를 거치지 않고 바로 보안 입력 디바이스 드라이버를 통해 암호화 되도록 하여 해킹 프로그램들이 데이터 입력장치를 통해 인가되는 데이터를 불법적으로 획득하는 것을 원천적으로 차단할 수 있도록 하고 있다.
그러나, 이와 같은 구성에 의해서도 여전히 보안에 취약점이 노출되고 있는 문제점이 있었다. 예를 들어, 보안 인터럽트 서비스 루틴을 등록하는 방법과 같은 방법으로 보안 인터럽트 서비스 루틴 주소를 인터럽트 디스크립터 테이블에 등록한 뒤에 불법 데이터 취득을 위한 인터럽트 서비스 루틴 주소로 등록하는 방법을 사용하는 경우, 이와 같은 기술은 무력화될 수 있다.
따라서, 한국특허공개공보 제2003-36276에 의한 기술을 적용하여 컴퓨터 보안장치를 구현한 경우, 효과적인 보안을 유지하기 위해서는 추가로 취약점을 보완할 수 있는 시스템이 절실히 요구되고 있는 실정이다.
따라서, 본 발명은 상술한 문제점을 해결하기 위해 안출된 것으로서, 본 발명의 목적은 데이터 입력장치를 통해 입력되는 데이터의 보호를 더욱 향상시키는 것이다.
본 발명의 다른 목적은 데이터가 운영체제 입력 디바이스 드라이버를 거치면서 해킹 프로그램에 의해 불법적으로 획득되어 외부로 유출되는 것을 원천적으로 차단하는데 있다.
본 발명의 또 다른 목적은 운영체제 입력 인터럽트 서비스 루틴 주소 영역에 보안 입력 인터럽트 서비스 루틴 주소를 저장하는 기본적인 방식에 추가하여 보안성을 더욱 향상시킬 수 있는 다양한 방식들을 제공하는 것이다.
상술한 문제점을 해결하기 위한 기술적 수단으로서, 본 발명의 제1 측면은 인터럽트를 담당하는 함수 주소의 목록을 저장하며, 운영체제에 의해 지원되는 운영체제 입력 인터럽트 서비스 루틴 주소 영역의 일부 대신에 보안 입력 인터럽트 서비스 루틴 주소를 저장하는 인터럽트 디스크립터 테이블; 데이터 입력장치에 의해 인터럽트 발생시, 상기 보안 입력 인터럽트 서비스 루틴 주소에 따라 보안 입력 인터럽트 서비스 루틴이 실행되어 상기 데이터 입력장치를 통해 데이터를 인가받고, 이를 암호화하는 보안 입력 디바이스 드라이버; 및 상기 보안 입력 디바 이스 드라이버에서 암호화된 데이터를 응용프로그램으로 전달하는 보안 입력부를 구비하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치에 있어서, 상기 보안 입력 디바이스 드라이버는 상기 보안 인터럽트 서브 루틴의 해시값과 바이너리 코드를 미리 저장해 두고, 현재 보안 인터럽트 서브 루틴의 해시값을 독출하여, 상기 독출된 해시값을 상기 저장된 해시값과 비교하고 동일한 지 판단하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치를 제공한다.
본 발명의 제2 측면은 인터럽트를 담당하는 함수 주소의 목록을 저장하며, 운영체제에 의해 지원되는 운영체제 입력 인터럽트 서비스 루틴 주소 영역의 일부 대신에 보안 입력 인터럽트 서비스 루틴 주소를 저장하는 인터럽트 디스크립터 테이블; 데이터 입력장치에 의해 인터럽트 발생시, 상기 보안 입력 인터럽트 서비스 루틴 주소에 따라 보안 입력 인터럽트 서비스 루틴이 실행되어 상기 데이터 입력장치를 통해 데이터를 인가받고, 이를 암호화하는 보안 입력 디바이스 드라이버; 및 상기 보안 입력 디바이스 드라이버에서 암호화된 데이터를 응용프로그램으로 전달하는 보안 입력부를 구비하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치에 있어서, 상기 보안 입력 디바이스 드라이버는 주기적으로 컨트롤 레지스터 CR4의 DE 플래그를 디스에이블시키고, 디버그 컨트롤 레지스터 DR7을 디스에이블 시키는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치를 제공한다.
본 발명의 제3 측면은 인터럽트를 담당하는 함수 주소의 목록을 저장하며, 운영체제에 의해 지원되는 운영체제 입력 인터럽트 서비스 루틴 주소 영역의 일부에 보안 입력 인터럽트 서비스 루틴 주소를 저장하는 인터럽트 디스크립터 테이블; 데이터 입력장치에 의해 인터럽트 발생시, 상기 보안 입력 인터럽트 서비스 루틴 주소에 따라 보안 입력 인터럽트 서비스 루틴이 실행되어 상기 데이터 입력장치를 통해 데이터를 인가받고, 이를 암호화하는 보안 입력 디바이스 드라이버; 및 상기 보안 입력 디바이스 드라이버에서 암호화된 데이터를 응용프로그램으로 전달하는 보안 입력부를 구비하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치에 있어서, 상기 보안 입력 디바이스 드라이버는 소정 주기의 시간에는 키보드 버퍼를 리셋하여 입출력 포트 통해 데이터를 읽지 못하게 하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치를 제공한다.
본 발명의 제4 측면은 데이터 입력장치에 의해 인터럽트가 발생되면, 인터럽트 디스크립터 테이블에 기등록된 보안 인터럽트 서비스 루틴인 데이터 입력 수신부의 주소를 참조하여 보안 입력 디바이스 드라이버를 구동시키는 단계; 상기 데이터 입력 수신부로부터 수신된 데이터를 암호화하여 전달하는 단계; 상기 암호화된 데이터를 응용 프로그램에게 전달하는 단계; 및 상기 보안 인터럽트 서브 루틴의 해시값과 바이너리 코드를 미리 저장해 두는 단계; 및 현재 보안 인터럽트 서브 루틴의 해시값을 독출하는 단계; 및 상기 독출된 해시값을 상기 저장된 해시값과 비교하고 동일한 지 판단하는 단계를 포함하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 방법을 제공한다.
본 발명의 제5 측면은 데이터 입력장치에 의해 인터럽트가 발생되면, 인터럽트 디스크립터 테이블에 기등록된 보안 인터럽트 서비스 루틴인 데이터 입력 수신부의 주소를 참조하여 보안 입력 디바이스 드라이버를 구동시키는 단계; 상기 데이터 입력 수신부로부터 수신된 데이터를 암호화하여 전달하는 단계; 상기 암호화된 데이터를 응용 프로그램에게 전달하는 단계; 및 주기적으로 컨트롤 레지스터 CR4의 DE 플래그를 디스에이블시키고, 디버그 컨트롤 레지스터 DR7을 디스에이블 시키는 단계를 포함하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 방법을 제공한다.
본 발명의 제6 측면은 데이터 입력장치에 의해 인터럽트가 발생되면, 인터럽트 디스크립터 테이블에 기등록된 보안 인터럽트 서비스 루틴인 데이터 입력 수신부의 주소를 참조하여 보안 입력 디바이스 드라이버를 구동시키는 단계; 상기 데이터 입력 수신부로부터 수신된 데이터를 암호화하여 전달하는 단계; 상기 암호화된 데이터를 응용 프로그램에게 전달하는 단계; 및 소정 주기의 시간에는 키보드 버퍼를 리셋하여 입출력 포트 통해 데이터를 읽지 못하게 하는 단계를 포함하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 방법을 제공한다.
본 발명의 제7 측면은 상술한 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 방법을 실행시키기 위한 프로그램을 기록한 기록매체를 제공한다. ‘기록매 체’라 함은 본 발명의 보안 방법을 적용하기 프로그램이 기록된 매체이면 특별히 한정하지 않은 의미이다. 예를 들어, 사용자에 의해 오프라인으로 각 컴퓨터에 설치되기 위한 CD, 플로피 디스켓, 메모리 스틱 등의 제품, 또는 인터넷 상으로 다운받을 수 있는 형태로 상기 프로그램을 저장하기 위한 웹서버, 데이터베이스 등을 예시할 수 있다. 또한, ‘실행시키기 위한 프로그램’ 이라 함은 공지의 압축방식으로 압축되어 있는 형태를 포함할 수 있음은 자명하다.
이하, 첨부한 도면들을 참조하여 본 발명의 바람직한 실시예에 따른 컴퓨터 보안장치를 상세히 설명한다. 그러나, 본 발명의 실시예들은 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 아래에서 상술하는 실시예들로 인해 한정되어지는 것으로 해석되어져서는 안된다. 본 발명의 실시예들은 당업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되어지는 것이다.
도 1은 본 발명의 바람직한 실시예에 따른 컴퓨터 보안 장치의 개략적인 구성도이다.
도 1의 컴퓨터 보안 장치(2)는 데이터 입력장치(210)로부터 입력되는 데이터를 보호하기 위한 장치로서, 도 1의 컴퓨터 보안 장치(2)는 인터럽트 디스크립터 테이블(Interrupt Descriptor Table; 220), 보안 입력 디바이스 드라이버(230), 및 보안 입력부(240)을 구비한다.
데이터 입력부(210)는 특별히 한정하지 않고 시스템 사용자로부터 데이터를 입력받는 사용자 인터페이스 장치 모두를 의미하는 총칭으로, 예를 들어, 키보드, 숫자 키패드, 마우스 또는 조이스틱 등이 가능하다. 바람직하게는 비교적 다량의 정보를 입력가능하고, PC 등에 널리 이용되는 키보드이다.
인터럽트 디스크립터 테이블(220)은 인터럽트를 담당하는 함수 주소의 목록을 저장하며, 운영체제에 의해 지원되는 운영체제 입력 인터럽트 서비스 루틴 주소 영역에 보안 입력 인터럽트 서비스 루틴 주소를 저장한다.
인터럽트 디스크립터 테이블(220)은 시스템의 운영체제에서 제공되는 영역으로 외부 인터럽트, 내부 인터럽트 및 예외 처리를 담당하는 함수 주소의 목록을 저장한다. 예를 들어, 인터럽트 디스크립터 테이블(220)은 256개의 인터럽트 서비스 루틴들을 할당된 메모리에서 하나의 8 바이트 어레이이다. 이 경우, 처음 32 엔트리들은 프로세서 예외처리를 담당하고, 다른 16개의 엔트리들은 하드웨어 인터럽트(외부 인터럽트)로 사용될 수 있고, 나머지들은 소프트 인터럽트(내부 인터럽트)에 사용되도록 구성가능하다. 인터럽트 디스크립터 테이블(220)의 어드레스는 “인터럽트 디스크립터 테이블 레지스터”라 불리는 프로세서 레지스터에 저장된다. 인터럽트 디스크립터 테이블과 인터럽트 디스크립터 테이블 레지스터(Interrupt Descriptor Table Register)의 관계에 대한 상세한 설명을 포함한 인터럽트 디스크립터 테이블에 대한 상세한 설명은 “IA-32 Intel Architecture Software Developer’s manual Volume 3, System Programming Guide”을 참조할 수 있고, 이 내용은 본 명세서에 병합된다(incorporated).
데이터 입력장치(210)를 통해 데이터가 입력되면 인터럽트가 발생하게 되고 해당 데이터 입력장치(210)에 대한 식별번호가 발생하게 된다. 이 번호를 인터럽트 벡터라 하며 운영체제는 이를 인덱스 삼아 인터럽트 디스크립터 테이블(220)에 저장된 인터럽트 서비스 루틴 주소를 찾아 목적에 맞게 만들어진 함수인 인터럽트 서비스 루틴을 실행하게 된다. 이 때, 인터럽트 디스크립터 테이블(220)에는 종래 운영체제에 의해 지원되는 입력 인터럽트 서비스 루틴 주소 대신에 보안 입력 디바이스 드라이버(230)에 의해 구동되는 보안 입력 인터럽트 서비스 루틴 주소가 등록되어 저장된다. 따라서, 데이터 입력장치(210)에 데이터가 입력되어 인터럽트가 발생하게 되면 보안 입력 인터럽트 서비스 루틴이 실행된다.
보안 입력 디바이스 드라이버(230)는 인터럽트 디스크립터 테이블(220)에 등록된 보안 입력 인터럽트 서비스 루틴 주소에 따라 데이터 입력장치(210)를 통해 데이터를 입력받아 이를 암호화하여 보안 입력부(240)로 전송한다. 인터럽트 디스크립터 테이블(220)에 운영체제 입력 디바이스 드라이버(13) 주소 대신에 보안 입력 디바이스 드라이버(230)의 주소를 등록시킨다. 따라서, 데이터 입력장치(210)에 의한 인터럽트가 발생되는 경우 운영체제에 의해 지원되는 운영체제 입력 인터럽트 서비스 루틴이 실행되지 않고 보안 입력 디바이스 드라이버(230)에 의해 지원되는 보안 입력 인터럽트 서비스 루틴이 실행된다.
인터럽트 디스크립터 테이블(220)에 데이터 입력 수신부(231)의 주소를 등록하는 방법은 특별히 한정하지 않고 다양한 방식이 가능하나, 바람직하게는, 인터럽트 디스크립터 테이블(220)내에서 데이터 입력장치(210) 주소의 인터럽트 벡터만큼 이동한 영역을 데이터 입력 수신부(231)의 주소로 교체하는 방식을 할 수 있다. 인터럽트 디스크립터 테이블(220)의 주소는 인터럽트 디스크립터 테이블 레지스터에 저장되어 있으며 각 데이터 입력장치(210)의 인터럽트 벡터는 예를 들어 Windows 2000 운영체제의 경우 HalGetInterruptVector와 같은 함수를 사용하여 키보드 및 마우스 인터렙터 벡터를 얻을 수 있다. 인터럽트 디스크립터 테이블 레지스터에서 얻어진 인터럽트 디스크립터 테이블(220)의 주소값에 입력 디바이스 벡터 만큼 이동한 영역이 보안 입력 인터럽트 서비스 루틴의 주소 영역이므로 해당 영역에 데이터 입력 수신부(231)의 주소를 등록하면 된다. 다음 예문은 Windows 2000에서 PS/2 Type의 운영체제 키보드 인터럽트 서비스 루틴을 보안 인터럽트 서비스 루틴으로 교체하는 루틴이 포함한 경우를 예시하고 있다.
HookInterrupt() { nSaveVecNo = HalGetInterruptVector( Isa, 0, 1, 1, &irql, &Affinity ); for ( nCpu = 0; nCpu < KeNumberProcessors; ++nCpu ) { pIdtBase = GetIDTBaseAddress(); IDT_SetVector( pIdtBase + ( nSaveVecNo & 0xff ), (DWORD)SecuKbdISR, &OriginalISR ); } } void IDT_SetVector( PNT_IDT p, DWORD SecuKbdISR, DWORD* pSaveOffset ) { *pSaveOffset = (DWORD)( ( ((DWORD)p->nHighOffset) << 16 ) + p->nLowOffset ); p->nLowOffset = (WORD) (SecuKbdISR & 0xffff ); p->nHighOffset = (WORD) ( ((DWORD) SecuKbdISR) >> 16 ); }
HookInterrupt() 함수는 인터럽트 디스크립터 테이블에서 키보드 인터럽트 서비스를 교체를 수행하는 함수이고, SecuKbdISR() 함수는 키보드 데이터를 보호하기 위한 보안 키보드 인터럽트 서비스 루틴이다.
HookInterrupt() 함수에서는 HalGetInterruptVector()함수로 운영체제에서 제공하는 IRQ 1번에 해당하는 키보드 인터럽트 벡터 값을 받아와 변수 nSaveVecNo에 저장한다. 각 프로세서는 별도의 인터럽트 디스크립터 테이블가 존재하기 때문에 프로세서 마다 인터럽트 디스크립터 테이블에 보안 인터럽트 서비스 루틴 주소를 등록한다. 해당 인터럽트의 KeNumberProcessors는 프로세서의 갯수를 나타내며, pIdtBase는 인터럽트 디스크립터 테이블 레지스터에 저장되어 있는 인터럽트 디스크립터 테이블의 주소를 갖는다. OriginalISR은 기존에 등록되어 있는 키보드 인터럽트 서비스의 주소를 저장할 저장소이며, MyKdbISR은 기존에 등록되어 있던 키보드 인터럽트 서비스 루틴을 대신 할 보안 키보드 인터럽트 서비스 루틴의 주소이다. IDT_SetVector() 함수는 인터럽트 디스크립터 테이블에 SecuKbdISR을 등록하고 기존에 설치 되어 있는 인터럽트 서비스 루틴 주소를 백업하는 기능을 한다.
void _declspec(naked) SecuKbdISR() { data = ReadData(); if ( Protection_mode ) { ClearBuffer(); StoreData( data ): } else { WriteKbdBuffer( data ); CallOriginalISR(); } }
키보드 인터럽트가 발생하면 SecuKbdISR() 함수가 호출된다. ReadData()에서는 60h 포트를 통해 키보드 버퍼에서 키보드 입력 데이터를 읽어온다. Protection_mode는 현재 키보드 입력 데이터를 보호 하기 위한 상태이면 Protection_mode는 ‘1’값을 갖고, 아니면 ‘0’값을 갖는다. Protection_mode가 ‘1’일 경우에는 키보드 버퍼를 리셋하여 60h 포트를 통해 데이터를 읽지 못하게 하는 역활을 하는 ClearBuffer함수를 사용하여 60h 포트를 0F4h(clears output buffer)나 0EE(echo, keyboard responds with EEh)같은 더미 데이터로 리셋한다. 이는 60h 포트에 더미 데이터를 보내어 키로거가 60h 포트를 반복적으로 읽어 입력 데이터를 확인하는 포트 스캐닝을 하더라도 데이터가 유출되지 되지 않게 하기 위한 방법이다. 이는 보안성을 강화하기 위한 방법으로 상세히 후술한다.
데이터를 응용프로그램으로 올려보내기 위해서는 StoreData함수를 이용하여 키보드 입력 데이터를 저장한다. Protection_mode가 ‘0’일 경우는 데이터를 보호하지 않고 WriteKbdBuffer함수에서는 키보드 output port에 키보드 입력 데이터를 다시 기입한다. 위 함수에서는 d2h(write keyboard buffer) 8048 키보드 명령어(keyboard command)를 사용하였다. 다음으로, CallOriginalISR() 함수를 이용하여 HookInterrupt()에서 저장해 뒀던 OriginalISR을 호출한다.
보안 입력부(240)는 보안 입력 디바이스 드라이버(230)에서 암호화된 데이터를 원래의 데이터로 복호화하여 응용 프로그램(250)에게 전달한다. 그리고, 보안 입력부(240)는 데이터가 복호화되면 복호화가 완료되었다는 상태를 디스플레이 해주며 도 2와 같은 트레이 아이콘을 이용하여 보안 시스템이 정상적으로 동작되는지 여부를 사용자에게 알려준다. 본 실시예에서는 보안 입력부(240)에서 상기 암호 화된 데이터를 원래의 데이터로 복호화하여 응용 프로그램(250)에게 전달하는 것으로 한정하여 설명하고 있으나, 실제 구현에 있어서는 응용프로그램(250)에서 복호화를 수행할 수도 있고, 암호화된 정보가 인터넷망을 통해서 전달되다가 특정 서버에서 복호화 되도록 구성할 수도 있다. 예를 들어, 이와 같은 경우를 구현함에 있어 응용 프로그램의 화면 상에 키 값을 보여줘야 하는 제한 조건을 만족하기 위하여 다양한 구현 방법이 존재할 수 있다. 한편, 이 경우 응용프로그램 화면 상에 키 값을 보여줘야 하는 경우 키 값이 패스워드의 경우 *를 출력하도록 구성할 수 있다.
다음으로, 보안 입력 디바이스 드라이버(230)를 보다 상세히 설명한다.
보안 입력 디바이스 드라이버(230)는 데이터 입력 수신부(231), 데이터 암호화부(232), 및 제어부(234)를 구비한다. 필요에 따라서는, 보안 입력 디바이스 드라이버(230)에 감시부(233)가 추가로 포함가능하다. 감시부(233)는 인터럽트 디스크립터 테이블(220)에 등록된 데이터 입력 수신부(231)의 주소가 변경되는지 여부를 감시한다. 감시부(233)의 기능, 역할은 상세히 후술한다.
데이터 입력 수신부(231)는 데이터 입력장치(210)에 의해 인터럽트가 발생했을 때 데이터 입력장치(210)를 통해 입력되는 데이터를 읽어와 데이터 암호화부(232)로 전송한다.
데이터 암호화부(232)는 데이터 입력 수신부(231)로부터 수신된 데이터를 암호화하여 보안 입력부(240)로 전송한다. 즉, 데이터 입력장치(210)를 통해 인가된 데이터는 운영체제 입력 디바이스 드라이버를 거치지 않고 바로 보안 입력 디바이스 드라이버(230)에서 암호화되어 보안 입력부(240)로 전송되므로 해킹 프로그램은 원본 입력 데이터를 얻지 못하거나 이미 데이터 암호화부(232)에서 암호화된 데이터를 얻게 된다. 바람직하게는, 암호화 방법은 미국 고급 암호 표준(AES)의 표준 알고리즘인 Rijndael 알고리즘을 이용한 128비트 암호화 방식을 사용한다. Rijndael 알고리즘은 보안성 및 처리속도, 메모리 활용능력에서 우수한 성능을 갖고 있다. 그러나, 이러한 알고리즘은 본 발명의 일실시에 불과하며, 종래 사용되고 있는 다른 우수한 암호화 알고리즘을 사용할 수도 있음은 자명하다.
제어부(234)는 감시부(233)와 데이터 암호화부(232)를 제어하도록 구성할 수있고, 보안 입력부(240)의 복호화부(242)를 제어할 수 있다. 실제 구현에 있어서는 보안 입력부(240) 내에 별도로 제어부(234)를 추가로 포함시키는 것도 가능함은 물론이다.
보안 입력부(240)는 보안 입력 디바이스 드라이버(230)에서 암호화된 데이터를 원래의 데이터로 복호화하는 복호화부(241) 및 복호화 사실을 알리고 보안 시스템이 정상적으로 동작하는지 여부를 디스플레이해주는 보안 상태 디스플레이부(242)를 구비한다. 보안 상태 디스플레이부(242)는 복호화부(241)에서 복호화된 데이터를 응용프로그램(250)으로 전달할 때 함께 동작되도록 구성되어 도 3과 같이 아이콘의 이미지를 변경하여 사용자에게 입력 데이터가 보호되고 있음을 알려준다. 도 2는 본 발명의 보안 장치가 정상적으로 동작되는지 여부를 사용자에게 알려주기 위한 수단의 일예인 트레이 아이콘을 도시한 그림이다. 이 때, 사용되는 아이콘 은 트레이 아이콘이거나 응용프로그램 내에 포함된 아이콘일 수도 있다.
이하, 도 3 및 도 4를 참조하여 본 발명의 실시예에 따른 컴퓨터 보안 장치의 동작을 개략적으로 설명한다. 도 3은 본 발명의 보안 장치에 따라서, 데이터 입력장치를 통해 인가되는 데이터를 보호하는 방법을 설명하기 위한 흐름도이다.
도 3을 참조하면, 응용프로그램(250)이 활성화된 후(S301), 데이터 입력장치(210)에 의해 인터럽트가 발생하게 되면(S303), 운영체제는 인터럽트 디스크립터 테이블(220)에 등록된 데이터 입력 수신부(231)의 주소를 참조하여 보안 입력 디바이스 드라이버(230)의 데이터 입력 수신부(231)를 구동시킨다(S305). 즉, 운영체제는 데이터 입력장치(210)에 의한 인터럽트가 발생하게 되면, 일반적인 운영체제 입력 디바이스 드라이버의 인터럽트 서비스 루틴을 실행시키지 않고 보안 인터럽트 서비스 루틴인 데이터 입력 수신부(231)를 실행시켜 데이터 입력장치(210)를 통해 인가되는 데이터를 수신한다.
다음으로, 데이터 암호화부(232)는 데이터 입력 수신부(231)로부터 수신된 데이터를 암호화하여(S307) 보안 입력부(240)로 전송한다. 보안 입력부(240)는 보안 입력 디바이스 드라이버(230)에서 암호화된 데이터를 원래의 데이터로 복호화하여 응용 프로그램(250)에게 전달한다(S307).
도 4는 본 발명의 바람직한 실시예에 따른 컴퓨터 보안방법을 방법을 설명하기 위한 개념도이다. 데이터 입력장치로부터 입력되는 데이터가 운영체제 입력 인터럽트 서비스 루틴에 의해 처리되지 않고 바로 데이터 보안을 위한 보안 입력 인 터럽트 서비스 루틴에 의해 처리되도록 한다. 즉, 본 컴퓨터 보안장치에 의하면, 운영체제 처리모듈에 의한 처리 이전에 데이터 보호 시스템이 먼저 동작하게 된다. 이러한 차이점으로 인해, 상위 단계에서 아무리 많은 해킹 프로그램이 설치되어 있다 하더라도 해킹 프로그램들이 데이터 입력장치를 통해 인가되는 데이터를 불법적으로 획득하는 것을 원천적으로 방지할 수 있게 된다.
다음으로, 본 실시예에 따른 컴퓨터 보안 장치에서 감시부(233)의 역할을 좀 더 상세히 설명한다. 감시부(도 1의 233)는 선택적인 구성요소로 보안성을 강화하기 위한 수단이다. 감시부(도 1의 233)는 인터럽트 디스크립터 테이블(220)에 등록된 데이터 입력 수신부(231)의 주소가 변경되는지를 감시하며, 보안 인터럽트 서비스 루틴의 무결성을 검사한다.
도 5는 도 1의 감시부(233)가 인터럽트 디스크립터 테이블(220)에 등록된 데이터 입력 수신부(231)의 주소의 변경여부를 감시하는 방법을 설명하기 위한 순서도이다.
감시부(233)는 데이터 입력 수신부(231)의 주소를 미리 저장(S401)한 후, 인터럽트 디스크립터 테이블(220)의 입력 인터럽트 서비스 루틴 영역에 저장된 주소값을 독출한다(단계 S402).
다음에, 감시부(233)는 기 저장된 데이터 입력 수신부(231)의 주소와 입력 인터럽트 서비스 루틴 주소를 비교한다(S403).
비교 결과, 두 주소값이 동일한 경우에는 S402 및 S403을 반복 수행한다. 그러나, 두 주소값이 서로 다른 경우에는 인터럽트 디스크립터 테이블(220)에 등록된 데이터 입력 수신부(231)의 주소가 해킹 프로그램 등에 의해 불법적으로 변경된 것이므로, 변경된 인터럽트 디스크립터 테이블(220)의 입력 인터럽트 서비스 루틴 영역의 주소를 데이터 입력 수신부(231)의 주소로 교체한다(S404).
그리고, 감시부(233)는 해당 사실을 제어부(234)로 통보한다. 그러면, 제어부(234)는 도 6과 같은 메시지 창을 화면에 현시하여 사용자에게 해당 사실을 알려준다(S405).
다음으로, 보안 인터럽트 서비스 루틴을 인터럽트 디스크립터 테이블에 등록하는 개념에 추가하여 보안성을 더욱 향상시킬 수 있는 방법들을 열거한다. 보안 인터럽트 서비스 루틴을 인터럽트 디스크립터 테이블에 등록하는 단계에서 존재하는 몇가지 취약점과 해결책을 살펴보면 다음과 같다.
첫번째, 보안 인터럽트 서비스 루틴을 등록하는 방법과 같은 방법으로 보안 인터럽트 서비스 루틴 주소를 인터럽트 디스크립터 테이블에 등록한 뒤에 불법 데이터 취득을 위한 인터럽트 서비스 루틴 주소로 등록하는 방법에 대한 대책이 필요하다. 즉, 악의적인 키스트로크 로거 프로그램이 키보드 데이터를 얻기 위해 인터럽트 디스크립터 테이블(도 1의 220)의 입력 인터럽트 서비스 루틴 영역에 등록되어 있는 데이터 입력 수신부(도 1의 231)의 주소를 변경하게 되면, 입력 데이터는 데이터 입력 수신부(도 1의 231)로 정상적으로 수신되지 못하고 키스크로크 로거 프로그램에 의해 변경된 다른 곳으로 전송된다.
이를 차단하기 위한 대책으로, 예를 들어 감시부(233)는 데이터 입력 수신부(231)의 주소를 계속적으로 감시하다가 만약 변경되면 그 사실을 제어부(234)로 전달한 후 변경된 입력 인터럽트 서비스 루틴 영역의 주소를 데이터 입력 수신부(231)의 주소로 다시 변경시키도록 구성할 수 있다. 이 경우, 상기 사실을 전달받은 제어부(234)는 메시지 창을 화면에 현시하여 사용자에게 해당 사실을 알려줄 수 도 있다.
둘째로, 보안 인터럽트 서비스 루틴에 점프 바이너리 코드를 삽입하는 방법으로 API 후킹(hooking)에도 쓰이는 기술이 있다. 좀 더 상세하게는 API 후킹 기술 중의 Code overwriting(코드 덮어쓰기) 방법 중 한 가지로, 이 방법의 개념은 원래 API 함수의 주소를 locate하고 이 함수의 처음 몇 바이트들을 JMP 지시를 갖는 것으로 대체하는 방식인데, 커스텀의 지원된 API 함수에 콜을 다른 방향으로 유도한다. 도 7은 본 실시예의 컴퓨터 보안장치에 보안 인터럽트 서비스 루틴에 점프 바이너리 코드를 삽입하는 방법으로 보안성을 해치는 상황을 설명하기 위한 개념도이다. 도 7을 참조하여 이 방법을 설명하면, 불법 데이터 취득을 목적으로 하는 함수 영역에 원하는 함수의 주소(730)로 점프하는 바이너리 코드(jmp;720)를 삽입하여 인터럽트 발생시 보안 인터럽트 서비스 루틴 보다 먼저 지정한 악의적인 인터럽트 서브 루틴 함수가 실행되어 데이터를 받아 저장한 뒤 보안 인터럽트 서비스 루틴로 점프시키는 방법이다.
도 8은 본 실시예의 컴퓨터 보안장치에 보안 인터럽트 서비스 루틴에 점프 바이너리 코드를 삽입하는 방법으로 보안성을 해치는 문제점을 해결하기 위한 과정을 설명하기 위한 흐름도이다. 도 8을 참조하여, 두번째 방식에 대한 대책을 설명한다. 먼저, 보안 인터럽트 서브 루틴의 해시값과 바이너리 코드를 미리 저장해 두고(S501), 현재 보안 인터럽트 서브 루틴의 해시값을 독출한다(S503). 그런 다음, 보안 인터럽트 서비스 루틴의 바이너리를 체크섬이나 해싱 알고리즘을 사용하여 데이터 무결성을 확인 할 수 있는 기능을 삽입한다. 즉, 점프코드가 삽입되어 있는지를 감시하기 위해, 독출된 해시값을 저장된 해시값과 비교하고 동일한 지 판단하여(S505), 동일하지 않은 경우 무결성이 깨지게 되었을 때 저장해 둔 보안 인터럽트 서비스 루틴 데이터를 종래의 코드로 복구 시키고(S507) 제어부(234)에 결과를 전달한다. 제어부(234)는 메시지 창을 화면에 현시하여 사용자에게 해당 사실을 알려줄 수 도 있다(S509).
셋째로, 도 9를 참조하여 보안 인터럽트 서비스 루틴을 호출하기 전에 트랩 인터럽트 서비스 루틴으로 점프하는 방법으로 보안성을 해치는 상황을 설명한다. 트랩 인터럽트 디스크립터 테이블에 키로거 인터럽트 서비스 루틴을 등록하고 CR4 DE 플래그를 인에이블시키고 DR7에서 DR0에 세팅한 포트 번호를 갖고 I/O 판독(read) 또는 기입(write)할 경우, 프로세서 인터럽트를 발생시킬 수 있도록 세팅하고, DR0 레지스터에 60h를 세팅한다. 따라서, 키보드를 입력하면 등록되어 있는 보안 인터럽트 서비스 루틴으로 호출 되고(①), 인터럽트 서비스 루틴에서는 예를 들어 (in al, 60h)와 같이 60h 포트로 입력 데이터를 읽으면, 포트를 감시하고 있 던 CPU는 인터럽트를 발생(②)시켜 트랩 인터럽트 디스크립터 테이블에 등록해 놓은 키로거 인터럽트 서비스 루틴으로 점프(③)를 한다. 키로거 인터럽트 서비스 루틴은 입력 데이터를 AL레지스터에서 데이터를 읽어들여 저장하고, 트랩 인터럽트 서비스 루틴 처리가 끝나면 점프했던 위치로 돌아가게 된다(④). 이에 대한 대책으로, 디버그 컨트롤 레지스터를 이용하여 트랩 인터럽트 서비스 루틴으로 점프하지 못하게 하도록 주기적으로 컨트롤 레지스터 CR4의 DE 플래그를 디스에이블(disable)시키고, 디버그 컨트롤 레지스터 DR7을 디스에이블(disable) 시키도록 구성할 수 있다.
넷째로, 포트스캔 방법으로 키보드나 마우스 I/O 입출력을 하는 60h 포트를 반복적으로 읽어 입력 데이터를 확인하는 방법인 포트 스캐닝을 이용한 데이터를 획득에 대한 대책이 필요하다. 전술한 바와 같이, Protection_mode는 현재 키보드 입력 데이터를 보호 하기 위한 상태이면 Protection_mode는 ‘1’값을 갖고, 아니면 ‘0’값을 갖는다. 따라서, 포토스캐닝을 이용한 데이트 획득에 대비하기 위해서, Protection_mode가 ‘1’일 경우에는 키보드 버퍼를 리셋하여 입출력 포트 60h 포트를 통해 데이터를 읽지 못하게 하는 역활을 하는 ClearBuffer함수를 사용하여 60h 포트를 0F4h(clears output buffer)나 0EE(echo, keyboard responds with EEh)같은 더미 데이터로 리셋하도록 구성할 수 있다.
한편, 본 발명의 보안 방법을 적용하기 프로그램이 기록한 저장매체는 CD, 플로피 디스켓, 메모리 스틱 등의 저장매체에 기록되어 상품으로 판매되어 사용자에 의해 오프라인으로 각 컴퓨터에 설치되고, 특정한 프로그램 또는 모든 프로그램을 이용하는 경우에 적용될 수 있고, 다른 방식으로는 인터넷을 통해 특정 사이트에 접속될 때 자동 또는 선택에 의해 파일 형태로 본 발명의 보안 방법을 적용하기 프로그램을 전송받아 이를 설치하고, 사용자가 익스플로러 같은 웹브라우저를 통해 사이트에 정보를 송신하기 위해 키보드 같은 데이터 입력장치를 통해 데이터를 입력하는 경우 상기 보안 방법이 적용된 프로그램이 수행되도록 할 수도 있다.
이상, 본 발명을 구체적인 실시예를 통하여 상세히 설명하였으나, 본 발명은 이에 한정되지 않고, 본 발명의 기술적 사상 내에서 당 분야의 통상의 지식을 가진 자에 의해 그 변형이나 개량이 가능함이 명백하다.
본 발명에 의하면, 컴퓨터 시스템에 설치된 해킹 툴이 컴퓨터 입력 장치로부터 입력되는 데이터를 가로채어 제 3자에게 전달되지 못하도록 안전하게 응용 프로그램에 전달되도록 하는 효과가 있다.
또한, 본 발명의 운영체제 입력 인터럽트 서비스 루틴 주소 영역에 보안 입력 인터럽트 서비스 루틴 주소를 저장하는 기본적인 원리에 추가하여 보안 인터럽트 서비스 루틴을 인터럽트 디스크립터 테이블에 등록하는 단계에서 존재하는 다양한 취약점들을 해결할 수 있는 효과가 있다.

Claims (7)

  1. 인터럽트를 담당하는 함수 주소의 목록을 저장하며, 운영체제에 의해 지원되는 운영체제 입력 인터럽트 서비스 루틴 주소 영역의 일부 대신에 보안 입력 인터럽트 서비스 루틴 주소를 저장하는 인터럽트 디스크립터 테이블;
    데이터 입력장치에 의해 인터럽트 발생시, 상기 보안 입력 인터럽트 서비스 루틴 주소에 따라 보안 입력 인터럽트 서비스 루틴이 실행되어 상기 데이터 입력장치를 통해 데이터를 인가받고, 이를 암호화하는 보안 입력 디바이스 드라이버; 및
    상기 보안 입력 디바이스 드라이버에서 암호화된 데이터를 응용프로그램으로 전달하는 보안 입력부를 구비하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치에 있어서,
    상기 보안 입력 디바이스 드라이버는 상기 보안 인터럽트 서비스 루틴의 해시값과 바이너리 코드를 미리 저장해 두고, 현재 보안 인터럽트 서비스 루틴의 해시값을 독출하여, 상기 독출된 해시값을 상기 저장된 해시값과 비교하고 동일한 지 판단하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치.
  2. 인터럽트를 담당하는 함수 주소의 목록을 저장하며, 운영체제에 의해 지원되는 운영체제 입력 인터럽트 서비스 루틴 주소 영역의 일부 대신에 보안 입력 인터럽트 서비스 루틴 주소를 저장하는 인터럽트 디스크립터 테이블;
    데이터 입력장치에 의해 인터럽트 발생시, 상기 보안 입력 인터럽트 서비스 루틴 주소에 따라 보안 입력 인터럽트 서비스 루틴이 실행되어 상기 데이터 입력장치를 통해 데이터를 인가받고, 이를 암호화하는 보안 입력 디바이스 드라이버; 및
    상기 보안 입력 디바이스 드라이버에서 암호화된 데이터를 응용프로그램으로 전달하는 보안 입력부를 구비하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치에 있어서,
    상기 보안 입력 디바이스 드라이버는 주기적으로 컨트롤 레지스터 CR4의 DE 플래그를 디스에이블시키고, 디버그 컨트롤 레지스터 DR7을 디스에이블 시키는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치.
  3. 인터럽트를 담당하는 함수 주소의 목록을 저장하며, 운영체제에 의해 지원되는 운영체제 입력 인터럽트 서비스 루틴 주소 영역의 일부에 보안 입력 인터럽트 서비스 루틴 주소를 저장하는 인터럽트 디스크립터 테이블;
    데이터 입력장치에 의해 인터럽트 발생시, 상기 보안 입력 인터럽트 서비스 루틴 주소에 따라 보안 입력 인터럽트 서비스 루틴이 실행되어 상기 데이터 입력장치를 통해 데이터를 인가받고, 이를 암호화하는 보안 입력 디바이스 드라이버; 및
    상기 보안 입력 디바이스 드라이버에서 암호화된 데이터를 응용프로그램으로 전달하는 보안 입력부를 구비하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치에 있어서,
    상기 보안 입력 디바이스 드라이버는 소정 주기의 시간에는 키보드 버퍼를 리셋하여 입출력 포트 통해 데이터를 읽지 못하게 하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치.
  4. 데이터 입력장치에 의해 인터럽트가 발생되면, 인터럽트 디스크립터 테이블에 기등록된 보안 인터럽트 서비스 루틴인 데이터 입력 수신부의 주소를 참조하여 보안 입력 디바이스 드라이버를 구동시키는 단계;
    상기 데이터 입력 수신부로부터 수신된 데이터를 암호화하여 전달하는 단계;
    상기 암호화된 데이터를 응용 프로그램에게 전달하는 단계; 및
    상기 보안 인터럽트 서비스 루틴의 해시값과 바이너리 코드를 미리 저장해 두는 단계; 및 현재 보안 인터럽트 서비스 루틴의 해시값을 독출하는 단계; 및 상기 독출된 해시값을 상기 저장된 해시값과 비교하고 동일한 지 판단하는 단계를 포함하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 방법.
  5. 데이터 입력장치에 의해 인터럽트가 발생되면, 인터럽트 디스크립터 테이블에 기등록된 보안 인터럽트 서비스 루틴인 데이터 입력 수신부의 주소를 참조하여 보안 입력 디바이스 드라이버를 구동시키는 단계;
    상기 데이터 입력 수신부로부터 수신된 데이터를 암호화하여 전달하는 단계;
    상기 암호화된 데이터를 응용 프로그램에게 전달하는 단계; 및
    주기적으로 컨트롤 레지스터 CR4의 DE 플래그를 디스에이블시키고, 디버그 컨트롤 레지스터 DR7을 디스에이블 시키는 단계를 포함하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 방법.
  6. 데이터 입력장치에 의해 인터럽트가 발생되면, 인터럽트 디스크립터 테이블에 등록된 주소에 의해 보안 인터럽트 서비스 루틴이 동작되는 단계;
    상기 데이터 입력 장치로부터 수신된 데이터를 암호화하여 전달하는 단계;
    상기 암호화된 데이터를 응용 프로그램에게 전달하는 단계; 및
    소정 주기의 시간에는 키보드 버퍼를 리셋하여 입출력 포트 통해 데이터를 읽지 못하게 하는 단계를 포함하는 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 방법.
  7. 제4 항 내지 제 6항 중 어느 한 항에 의한 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 방법을 실행시키기 위한 프로그램을 기록한 기록매체.
KR1020050019911A 2005-03-10 2005-03-10 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치및 보안 방법 KR100557340B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050019911A KR100557340B1 (ko) 2005-03-10 2005-03-10 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치및 보안 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050019911A KR100557340B1 (ko) 2005-03-10 2005-03-10 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치및 보안 방법

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020050105781A Division KR20060097548A (ko) 2005-11-07 2005-11-07 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치및 보안 방법

Publications (1)

Publication Number Publication Date
KR100557340B1 true KR100557340B1 (ko) 2006-03-03

Family

ID=37179329

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050019911A KR100557340B1 (ko) 2005-03-10 2005-03-10 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치및 보안 방법

Country Status (1)

Country Link
KR (1) KR100557340B1 (ko)

Similar Documents

Publication Publication Date Title
JP4451884B2 (ja) コンピュータ保安装置、コンピュータ保安方法、及び記録媒体
US9727709B2 (en) Support for secure objects in a computer system
KR101006721B1 (ko) 키보드 입력정보 보안장치 및 그 방법
JP5249399B2 (ja) 安全なメモリ区分を使用した安全な実行のための方法および装置
US20070266444A1 (en) Method and System for Securing Data Stored in a Storage Device
Boivie et al. SecureBlue++: CPU support for secure execution
CN103988467A (zh) 确保软件加密技术安全的加密系统和方法
EP1752855A1 (en) Information processing device, anti-tamper method, and anti-tamper program
KR100500465B1 (ko) 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 시스템 및 방법
US20050091516A1 (en) Secure attention instruction central processing unit and system architecture
Lee et al. Classification and analysis of security techniques for the user terminal area in the internet banking service
KR100557340B1 (ko) 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치및 보안 방법
KR20060097548A (ko) 보안 입력 디바이스 드라이버를 이용한 컴퓨터 보안 장치및 보안 방법
Zheng et al. TZ-KPM: Kernel protection mechanism on embedded devices on hardware-assisted isolated environment
Wang et al. CFHider: Protecting Control Flow Confidentiality With Intel SGX
JP5177206B2 (ja) ソフトウェアの改竄検出装置及び改竄検出方法
JP4728619B2 (ja) ソフトウェアの改竄検出装置、改竄防止装置、改竄検出方法及び改竄防止方法
EP2202661B1 (en) Apparatus and method for protecting asset in computer system
Parker Protecting Cryptographic Keys and Functions from Malware Attacks
Ahsan HARDWARE ASSITED SECURITY PLATFORM
WO2006059335A1 (en) Method and system for securing data stored in a storage device
Xu et al. Protecting Cryptographic Keys and Functions from Malware Attacks
Parker Protecting Cryptographic Secrets and Processes
KR20060083365A (ko) 해킹방지를 위한 인터럽트 관리방법 및 이를 기록한컴퓨터로 읽을 수 있는 기록매체

Legal Events

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

Payment date: 20130206

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140106

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150102

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20161201

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20181204

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20191205

Year of fee payment: 15