KR101699046B1 - 필터 드라이버 기반의 파일 보안 시스템 및 파일 보안 방법 - Google Patents

필터 드라이버 기반의 파일 보안 시스템 및 파일 보안 방법 Download PDF

Info

Publication number
KR101699046B1
KR101699046B1 KR1020140110883A KR20140110883A KR101699046B1 KR 101699046 B1 KR101699046 B1 KR 101699046B1 KR 1020140110883 A KR1020140110883 A KR 1020140110883A KR 20140110883 A KR20140110883 A KR 20140110883A KR 101699046 B1 KR101699046 B1 KR 101699046B1
Authority
KR
South Korea
Prior art keywords
file
irp
security
read
write
Prior art date
Application number
KR1020140110883A
Other languages
English (en)
Other versions
KR20160024265A (ko
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 KR1020140110883A priority Critical patent/KR101699046B1/ko
Publication of KR20160024265A publication Critical patent/KR20160024265A/ko
Application granted granted Critical
Publication of KR101699046B1 publication Critical patent/KR101699046B1/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

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)
  • Storage Device Security (AREA)

Abstract

본 발명은 필터 드라이버를 기반으로 파일의 보안성을 제공하는 파일 보안 시스템 및 파일 보안 방법을 개시한다. 본 발명에 따르는 파일 보안 시스템은, 커널 레벨에서 파일 I/O와 관련되어 발생된 생성 IRP를 필터링하고, 기존 파일의 헤더를 검사하여 암호화 여부를 확인하고 암호화된 파일의 헤더를 읽어들이는 생성 IRP부; 읽기 IRP를 필터링하고, 암호화된 파일에 대해 파일의 읽기 위치를 보안 영역만큼 이동시킨 위치로 설정하고, 읽어들인 암호화된 파일의 데이터를 복호 처리하는 읽기 IRP부; 및 쓰기 IRP를 필터링하고, 쓰기 대상의 데이터 영역 앞에 상기 보안 영역을 추가로 할당하고, 할당된 보안 영역에 파일의 보안 정보를 기록하고 보안 영역을 제외한 나머지 데이터 영역을 암호화 처리하는 쓰기 IRP부 포함한다. 본 발명에 따르면, 커널 레벨에서 파일에 보안 영역을 추가하고 데이터 영역을 암호화 및 복호화하여 파일의 보안 서비스를 제공한다.

Description

필터 드라이버 기반의 파일 보안 시스템 및 파일 보안 방법{File Security system based on filter driver and method thereof}
본 발명은 파일 보안에 관한 것으로서, 파일 시스템에 접근되는 각종 파일 처리 인스턴스에 대해 필터 드라이버에 기반하여 파일의 암호화 및 복호화를 처리하여 파일의 보안을 제공하는 파일 보안 시스템 및 파일 보안 방법에 관한 것이다.
파일 시스템은 기록 매체를 대상으로 파일의 읽기 및 쓰기를 관리한다. 파일 시스템 드라이버는 운영 체제에서 발생하는 파일의 Create, Open, Read, Write, Modify 등 파일과 폴더에 관련된 모든 동작을 수행하는 드라이버이다.
필터 드라이버는 특정 드라이버의 입출력을 감시하거나 지원되지 않는 기능들을 추가할 목적으로 작성된 드라이버이다. 예를 들면, 바이러스 체크, 파일 암복호화 같은 기능들을 추가하거나 특정 기능들을 필터링하기 위한 목적으로 사용될 수 있다.
필터 매니저(filter manager)는 Microsoft에서 제공하는 Legacy(NT형태) 파일 시스템의 필터 드라이버로서 미니 필터라는 각각의 인스턴스를 등록 및 해제해서 사용할 수 있도록 프로그램의 인터페이스와 라이브러리들을 제공해 준다.
필터 드라이버는 한 시스템 내에 다수 존재할 수 있으며, 필터 드라이버에 종속되는 미니 필터 드라이버는 고유한 고도(Altitude)를 가지지만 Legacy 필터 드라이버는 고도를 지정할 수 없는 문제점이 있다. 때문에, Microsoft에서는 Legacy 필터 드라이버가 가지고 있는 몇몇 문제점들로 인해 미니필터 드라이버의 사용을 권장하고 있다.
미니 필터 드라이버의 고도는 OS가 부팅 될 때 드라이버가 로드되는 순서이며, 다른 필터 드라이버와 충돌이 발생하지 않도록 드라이버 설치 시점에 지정해야 한다.
파일 보안을 위한 다양한 구현 방식들 중에서, 파일 시스템 드라이버의 상위에 필터 드라이버를 위치시킬 경우, 운영 체제상에서 발생하는 파일 입출력에 관련된 모든 동작들을 필터링하여 실시간 암호화/복호화를 진행할 수 있는 실익이 있다. 또한, 상기 필터 드라이버는 최상위의 어플리케이션 레벨과 최하위의 하드웨어 레벨의 기록 매체로 구성된 하드웨어 아키텍쳐 상에서 기록 매체에 가장 가까운 커널 레벨에 위치하여 암호화/복호화를 수행하여 제 3자로부터 파일의 보안을 유지할 수 있다.
한국등록특허 10-0868410(2008년 11월 5일 등록)
본 발명은 상기와 같은 종래 기술의 인식 하에 창출된 것으로서, 커널 레벨에서 파일 시스템에 요청되는 파일 I/O 팻킷을 필터링하여 보안 정책에 따라 암호화 및 복호화 처리하는 필터 드라이버 기반의 파일 보안 시스템 및 파일 보안 방법을 제공하는 것을 목적으로 한다.
본 발명의 다른 목적은, 어플리케이션과 파일 시스템 드라이버의 사이에서, 필터링된 팻킷에 대해 콜백 함수를 이용하여 캐시 메모리 및 기록 매체를 상대로 암호화 및 복호화를 판단하고 처리하는데 있다.
본 발명의 또 다른 목적은, 각각의 파일마다 파일 영역에 보안 정보가 저장되는 보안 영역을 별도로 추가하여 파일의 크기를 관리하면서 읽기 및 쓰기를 하는 데 있다.
본 발명의 또 다른 목적은, 파일의 닫기 이벤트가 발생하면, 캐시 메모리에 남아 있는 파일의 데이터를 삭제하여 파일의 보안을 유지하는데 있다.
상기 기술적 과제를 달성하기 위한 본 발명에 따른 필터 드라이버 기반의 파일 보안 시스템은, 응용 프로그램과 파일 시스템 드라이버 사이에서 파일 I/O(Input/Output)의 팻킷(IRP : I/O Request Packet)을 필터링 처리하는 파일 보안 시스템에 있어서, 응용 프로그램의 파일의 생성 또는 열기 이벤트에 의해 발생된 생성 IRP를 필터링하고, 열기 이벤트일 경우 기존 파일의 헤더를 검사하여 암호화 여부를 확인하고 암호화된 파일의 헤더를 읽어들이는 생성 IRP부; 응용 프로그램의 파일의 읽기 이벤트에 의해 발생된 읽기 IRP를 필터링하고, 암호화된 파일에 대해 파일의 읽기 위치를 보안 영역만큼 이동시킨 위치로 설정하고, 읽어들인 암호화된 파일의 데이터를 복호 처리하는 읽기 IRP부; 및 응용 프로그램의 파일의 쓰기 이벤트에 의해 발생된 쓰기 IRP를 필터링하고, 쓰기 대상의 데이터 영역 앞에 상기 보안 영역을 추가로 할당하고, 할당된 보안 영역에 파일의 보안 정보를 기록하고 상기 보안 영역을 제외한 나머지 데이터 영역을 암호화 처리하는 쓰기 IRP부를 포함한다.
본 발명에 있어서, 상기 필터링은 프리 콜백(pre callback) 함수 및 포스트 콜백(post callback) 함수를 통해 처리되고, 프리 콜백 함수가 응용 프로그램으로부터 발생된 파일 이벤트에 의해 파일 시스템 드라이버로 전달되는 팻킷을 수신하여 필터링의 처리 결과를 리턴하고, 파일 시스템 드라이버가 기록 매체를 상대로 파일 I/O 처리를 완료하고 처리 결과를 리턴하고, 포스트 콜백 함수가 파일 시스템 드라이버로부터 전달되는 팻킷을 수신하여 필터링의 처리 결과를 리턴한다.
본 발명의 제 1측면에 따르면, 상기 생성 IRP부는, 생성 프리 콜백 함수가 호출되어 생성 IRP를 수신하고, 수신된 생성 IRP의 IRQL(Interrupt ReQuest Level)이 APC_LEVEL 보다 높은 시스템 레벨이면 종료하는 처리; 파일 I/O의 대상이 폴더이면 종료하는 처리; 파일 I/O의 대상이 보안 정책에 설정된 경로가 아니면 종료하는 처리; 상기 생성 IRP의 요청 주체가 시스템 프로세스이면 종료하는 처리; 기존 파일일 경우 파일의 헤더를 검사하여 암호화 여부를 확인하고 암호화된 파일의 헤더를 읽어들이고, 암호화된 파일이 아니면 종료하는 처리; 및 새롭게 생성하는 파일일 경우 파일 권한에 쓰기 권한이 있으면 파일의 암호화 대상 플래그를 설정하는 처리를 수행한다.
여기서, 상기 생성 IRP부는, 생성 포스트 콜백 함수가 호출되어 생성 IRP를 수신하고, 수신된 생성 IRP으로부터 기록 매체에 대한 파일 I/O 처리의 결과 값을 확인하고, 정상 완료가 아닌 경우 종료하는 처리; 및 파일 오브젝트의 스트림 컨텍스트(stream context)가 존재하지 않으면 새로 생성하여 파일 보안의 식별 정보를 저장하는 처리를 수행한다.
본 발명의 제 2측면에 따르면, 상기 읽기 IRP부는, 읽기 프리 콜백 함수가 호출되어 읽기 IRP를 수신하고, 보안 정책에 의해 허용되는 암호화된 파일을 읽는 경우, 암호화된 파일에 대해 파일의 읽기 위치를 보안 영역만큼 이동시킨 위치로 설정하는 처리를 수행한다.
여기서, 상기 보안 정책은, 파일 오브젝트의 스트림 컨텍스트가 존재하지 않는 경우; 상기 스트림 컨텍스트로부터 암호화 파일이 아닌 것이 확인되는 경우; 상기 읽기 IRP의 요청 주체가 보안 정책이 허용하는 프로세스가 아닌 경우; 및 상기 읽기 IRP가 IRP_NOCACHE가 아닌 경우, 파일의 복호화 읽기를 불허하여 프리 콜백 함수가 종료된다.
또한, 상기 읽기 IRP부는, 읽기 포스트 콜백 함수가 호출되어 읽기 IRP를 수신하고, 수신된 읽기 IRP으로부터 기록 매체에 대한 파일 I/O 처리의 결과 값을 확인하고, 정상 완료가 아닌 경우 종료하는 처리; 및 읽어들인 파일의 상기 데이터 영역을 복호화하는 처리를 수행한다.
본 발명의 제 3측면에 따르면, 상기 쓰기 IRP부는, 쓰기 프리 콜백 함수가 호출되어 쓰기 IRP를 수신하고, 보안 정책이 파일을 암호화하여 쓰기를 허용하는 경우, 상기 쓰기 IRP가 CACHE IRP이고 쓰기 위치가 0이면, 쓰기 대상의 데이터 영역 앞에 상기 보안 영역을 추가로 할당하고, 파일 처리의 성공을 리턴하는 처리; 및 상기 쓰기 IRP가 NOCACHE IRP이고 쓰기 위치가 0이고 암호화 대상 시그니쳐가 존재하는 경우, 상기 보안 영역에 파일의 보안 정보를 기록하고, 상기 데이터 영역을 암호화하는 처리를 수행한다.
여기서, 상기 보안 정책은, 파일 오브젝트의 암호화 대상 플래그가 설정되지 않은 경우; 쓰기 IRP가 Fast I/O IRP인 경우; 상기 쓰기 IRP가 CACHE IRP이고, 쓰기 위치가 0이고, 암호화 대상 시그니쳐가 존재하지 않는 경우; 상기 스트림 컨텍스트로부터 암호화 파일이 아닌 것이 확인되는 경우; 및 상기 쓰기 IRP의 요청 주체가 보안 정책이 허용하는 프로세스가 아닌 경우, 파일의 암호화 쓰기를 불허하여 프리 콜백 함수가 종료된다.
또한, 상기 쓰기 IRP부는, 상기 포스트 콜백 함수가 호출되어 쓰기 IRP를 수신하고, 수신된 쓰기 IRP으로부터 기록 매체에 대한 파일 I/O 처리의 결과 값을 확인하고, 정상 완료가 아닌 경우 종료하는 처리; 상기 쓰기 IRP가 NOCACHE IRP이면 리턴하는 처리; 및 상기 쓰기 IRP가 CACHE IRP이면, 보안 영역 및 데이터 영역을 포함하는 크기로 파일의 끝을 저장하여 리턴하는 처리를 수행한다.
바람직하게, 파일 보안 시스템은, 응용 프로그램의 파일의 닫기 이벤트에 의해 발생된 닫기 IRP를 필터링하고, 파일을 닫고 파일의 I/O의 종료를 처리하는 닫기 IRP부를 더 포함한다.
여기서, 상기 닫기 IRP부는, 캐시 메모리의 파일 데이터를 삭제한다.
상기 기술적 과제를 달성하기 위한 본 발명에 따른 필터 드라이버 기반의 파일 보안 방법은, 파일 보안 시스템이 응용 프로그램과 파일 시스템 드라이버 사이에서 파일 I/O(Input/Output)의 팻킷(IRP : I/O Request Packet)을 필터링 처리하는 파일 보안 방법에 있어서, (a)필터링 처리에 의해 IRP를 수신하는 IRP 수신 단계; (b)상기 IRP가 생성 IRP이면, 응용 프로그램의 열기 이벤트일 경우 기존 파일의 헤더를 검사하여 암호화 여부를 확인하고 암호화된 파일의 헤더를 읽어들이는 생성 IRP 처리 단계; (c)상기 IRP가 읽기 IRP이면, 암호화된 파일에 대해 파일의 읽기 위치를 보안 영역만큼 이동시킨 위치로 설정하고, 읽어들인 암호화된 파일의 데이터를 복호 처리하는 읽기 IRP 처리 단계; 및 (d)상기 IRP가 쓰기 IRP이면, 쓰기 대상의 데이터 영역 앞에 상기 보안 영역을 추가로 할당하고, 할당된 보안 영역에 파일의 보안 정보를 기록하고 상기 보안 영역을 제외한 나머지 데이터 영역을 암호화 처리하는 쓰기 IRP 처리 단계를 포함한다.
본 발명의 일 측면에 따르면, 보안 정책에 따라 커널 레벨에서 IRP를 필터링하여 파일 I/O 처리를 통제하고, 보안 설정에 따라 기록 매체를 상대로 파일의 암호화 및 복호화하는 파일의 보안 서비스를 제공한다.
본 발명의 다른 측면에 따르면, 기록 매체에 대한 파일 I/O 처리의 전, 후로 콜백 함수를 이용하여 IRP의 필터링 처리를 수행하므로 제 3자의 파일 공격으로부터 파일의 보안성을 유지한다.
본 발명의 또 다른 측면에 따르면, 기록 매체의 파일에 보안 영역을 별도로 추가하여 데이터 영역을 보호하며, 상기 데이터 영역을 암호화하여 보안성을 향상시킨다.
또한, 파일의 닫기 이벤트가 발생하면, 캐시 메모리에 남아 있는 파일의 데이터의 흔적을 삭제하여 파일의 보안을 유지한다.
본 명세서에 첨부되는 다음의 도면들은 본 발명의 바람직한 실시예를 예시하는 것이며, 후술한 발명의 상세한 설명과 함께 본 발명의 기술사상을 더욱 이해시키는 역할을 하는 것이므로, 본 발명은 그러한 도면에 기재된 사항에만 한정되어 해석되지 않아야 한다.
도 1은 본 발명의 일 실시예에 따른 필터 드라이버 기반의 파일 보안 시스템 의 개략적 구성도이다.
도 2는 도 1의 파일 보안 드라이버의 개략적 내부 구조도이다.
도 3 및 도 4는 도 1의 파일 보안 드라이버가 파일의 보안 영역을 처리하는 예시도이다.
도 5는 도 1의 파일 보안 드라이버가 캐시 메모리를 삭제하는 예시도이다.
도 6은 본 발명의 일 실시예에 따른 필터 드라이버 기반의 파일 보안 방법의 개략적 순서도이다.
도 7 내지 9는 도 6의 파일 보안 방법의 상세 순서도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다. 이에 앞서, 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념을 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다.
따라서, 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고 본 발명의 기술적 사상에 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있음을 이해하여야 한다.
<1. 시스템 구성>
도 1은 본 발명의 일 실시예에 따른 필터 드라이버 기반의 파일 보안 시스템(1) 의 개략적 구성도이다.
본 발명의 일 실시예에 따른 필터 드라이버 기반의 파일 보안 시스템(1)은 상기 필터 드라이버에 해당하는 파일 보안 드라이버(5)를 포함한다.
어플리케이션(2)은 사용자 명령 또는 필요에 따라 파일 처리 이벤트를 발생시킨다. 파일 처리 이벤트는 대표적으로 파일 생성(open 또는 create), 파일 읽기(read), 파일 쓰기(write) 및 파일 닫기(close)를 포함한다.
여기서, 어플리케이션(2)은 파일의 액세스를 위해 파일 생성 및 파일 닫기의 이벤트를 수반한다. 어플리케이션(2)은 읽기 실행(예 : NtReadFile())을 위해 파일 읽기의 이벤트를 수반한다. 또한, 어플리케이션(2)은 쓰기 실행(예 : NtWriteFile())을 위해 파일 쓰기의 이벤트를 수반한다. 예를 들면, 어플리케이션(2)의 파일 처리에 의해 파일 생성 이벤트가 발생된 후 필요에 따라서 읽기 및 쓰기 이벤트가 발생되고, 파일 처리가 완료되면 닫기 이벤트가 발생된다. 어플리케이션(2)의 파일 처리에 의해 발생된 상기 이벤트는 커널 레벨의 OS에 의해 처리된다.
I/O(Input/Output) 매니저(3)는 커널 레벨에 위치하고, 어플리케이션 레벨에서 발생된 상기 이벤트와 관련되는 파일 I/O 요청을 수신한다. I/O 매니저(3)는 파일 I/O에 대해 각각 대응하는 IRP(Input/output Request Packet)를 생성하고, 생성된 IRP를 필터 드라이버가 로드된 순서에 따라 하위 필터 드라이버에 전달한다.
필터 매니저(4)는 MS(MicroSoft)에서 제공하는 Legacy(NT 형태) 파일 시스템의 필터 드라이버로서 미니 필터라는 각각의 인스턴스를 등록, 해제해서 사용할 수 있도록 프로그램 인터페이스와 라이브러리들을 제공한다. 필터 매니저(4)는 특정 드라이버와의 입출력을 감시하거나 지원되지 않는 기능들을 추가할 목적으로 작성된 필터 드라이버이다. 예를 들면 바이러스 체크, 파일 암복호화 같은 기능들을 추가하거나 특정 기능들을 필터링 하기 위한 목적으로 사용될 수 있다.
파일 보안 드라이버(5)는 미니 필터로 구현되어 필터 매니저(4)에 의해 관리되고, 이러한 필터 매니저 모델로 작성된 필터 드라이버를 미니 필터 드라이버라 한다.
여기서, 필터 매니저(4)에 해당하는 필터 드라이버는 한 시스템 내에 다수 존재할 수 있다. 필터 매니저(4)가 관리하는 미니 필터 드라이버는 고유한 고도(Altitude)를 가지지만 Legacy 필터 드라이버의 필터 매니저(4)는 고도를 지정할 수 없는 문제점이 있다. 때문에 MS에서는 Legacy 필터 드라이버가 가지고 있는 상기 문제점들로 인해 미니 필터 드라이버의 사용을 권장하고 있다. 미니 필터 드라이버의 고도는 운영체제가 부팅될 때 드라이버가 로드되는 순서이며, 다른 미니 필터 드라이버와 충돌이 발생하지 않도록 드라이버 설치 시점에 지정해야 한다. 즉, 지정된 고도의 순서에 따라서 드라이버의 실행 순서가 결정되기 때문에 실행의 충돌은 발생하지 않는다.
본 발명에 따른 파일 보안 드라이버(5)는 관리자에 의해 정의된 보안 정책을 적용받아 필터 매니저(4)로부터 전달받은 IRP를 분석하여 데이터의 암호화 및 복호화를 통해 파일의 보안성을 유지한다. 상기 보안 정책은 파일의 실행 주체, 실행 권한, 파일 경로 및 암호화 여부 등의 정보를 포함한다.
특히, 파일 보안 드라이버(5)는 어플리케이션 레벨이 아닌 커널 레벨에서 암호화 및 복호화를 수행하기 때문에 기록 매체(71)에 근접한 위치에서 파일의 보안성을 유지한다. 기록 매체(71)는 FAT, NTFS 및 RDR 등을 포함한다.
만약, 어플리케이션 레벨에서 파일의 암호화 및 복호화를 처리하는 경우, 기록 매체(71)로부터 멀어지며 제 3자가 중간에서 파일의 공격할 수 있는 여지가 있기 때문에 보안이 취약하다.
도 2는 도 1의 파일 보안 드라이버(5)의 개략적 내부 구조도이다. 그리고 도 3 내지 도 5는 파일 보안 드라이버(5)가 파일을 처리하는 예시도이다.
도 2를 참조하면, 어플리케이션(2)이 파일 처리의 명령을 실행할 경우, 파일 시스템 드라이버(FSD : File System Driver)(7)는 실행된 명령에 대응하여 OS 상에서 발생하는 파일 및 폴더의 모든 동작(예 : Create, Open, Read, Write, Modify, Close 등)을 수행한다. 파일 시스템 드라이버(7)는 기록 매체(71)의 동작을 제어하는 드라이버이다.
어플리케이션(2)의 레벨에서 파일 처리를 위해 ReadFile(), WriteFile()과 같은 함수가 호출되면, I/O 매니저(3)는 파일 처리의 요청을 수신한다. 그리고 I/O 매니저(3)는 수신된 요청에 따라 대응되는 IRP를 생성하여 필터 매니저(4)에 전달한다.
본 발명의 일 실시예에 따른 파일 보안 드라이버(5)는 생성 IRP를 필터링하여 파일의 헤더를 검사하는 생성 IRP부(51), 읽기 IRP를 필터링하여 파일을 읽고 복호화하는 읽기 IRP부(52), 쓰기 IRP를 필터링하여 파일을 복호화하여 쓰기 처리하는 쓰기 IRP부(53)를 포함하여 구성된다. 또한, 파일 보안 드라이버(5)는 닫기 IRP를 필터링하여 파일의 I/O 처리를 종료하는 닫기 IRP부(54)를 더 포함하여 구성된다.
파일 보안 드라이버(5)는 파일 시스템 드라이버(7)의 상위에 위치하는 미니 필터 드라이버로서, 파일 처리의 IRP를 필터링 처리하는 파일 시스템 필터 드라이버이다.
상기 필터링 처리는 I/O 매니저(1)가 생성한 각각의 IRP를 필터 매니저(4)를 통해 파일 보안 드라이버(5)가 수신하여 처리하는 것을 말한다. 그리고 파일 보안 드라이버(5)는 콜백(callback) 함수 호출을 기반으로 필터링 처리를 수행한다. 각각의 IRP마다 생성, 읽기, 쓰기, 닫기의 종류에 대응하는 고유한 콜백 함수가 존재한다.
상기 콜백 함수란 사용자가 임의로 호출하여 쓰는 함수가 아닌, OS가 발생시킨 특정한 이벤트나 메시지가 발생했을 때 OS에 의해 자동으로 호출되어 사용자에게 알려주는 함수를 뜻한다.
파일 보안 드라이버(5)는 각각의 IRP별로 프리 콜백(Pre-CallBack) 함수와 포스트 콜백(Post-CallBack) 함수를 정의한다. 프리 콜백 함수는 파일 시스템 드라이버(7)로 IRP가 전달되기 전 호출된다. 포스트 콜백 함수는 파일 시스템 드라이버(7)에서 처리된 데이터를 어플리케이션(2)으로 알리기 전에 호출된다. 즉, 파일 보안 드라이버(5)는 기록 매체(7)의 처리 전에 선행 처리로서 프리 콜백 함수를 실행하고, 기록 매체의 처리 후에 후행 처리로서 포스트 콜백 함수를 실행한다.
예를 들면, 프리 콜백 함수가 어플리케이션(2)으로부터 발생된 파일 이벤트에 의해 파일 시스템 드라이버(7)로 전달되는 IRP 팻킷을 수신하여 필터링의 처리를 완료하여 처리 결과를 리턴한다. 프리 콜백 함수의 처리 결과를 기반으로 파일 시스템 드라이버(7)가 기록 매체(71)를 상대로 파일 I/O 처리를 완료하고 처리 결과를 리턴한다. 파일 시스템 드라이버(7)의 처리 결과를 기반으로 포스트 콜백 함수가 파일 시스템 드라이버(7)로부터 전달되는 팻킷을 수신하여 필터링의 처리 결과를 리턴한다. 그러면, 포스트 콜백 함수의 처리 결과를 기반으로 어플리케이션(2)은 파일 처리의 결과를 수신한다.
IRP 콜백 함수 호출시 필터 드라이버는 IRQL(Interrupt ReQuest Level)을 확인하게 되는데 IRQL이란 CPU가 처리하는 작업의 중요도를 뜻하며, PASSIVE_ LEVEL( 0), APC_LEVEL(1), DISPATCH_LEVEL(2) 등이 있다. IRQL은 숫자가 높을수록 중요도가 높아지며, 중요도가 높아질수록 사용할 수 있는 함수도 제약이 생기기 때문에 파일 보안 드라이버(5)는 IRQL 레벨이 APC_LEVEL 보다 크면 시스템과 관련된 파일 I/O 처리로 판단하여 IRP 콜백 함수를 호출하지 않는다.
미니 필터 드라이버는 파일 오브젝트의 현재 정보를 저장하기 위한 컨텍스트(Context)를 제공하는데, 그 종류로는 Volume, Instance, Stream, StreamHandle, File 등의 컨텍스트가 있다. 컨텍스트는 사용자가 임의로 메모리를 할당하여 사용할 수 있으며, 파일 오브젝트를 삭제하거나 미니필터 드라이버가 OS에서 언로드(Unload)될 때, 디스크 볼륨에서 필터 드라이버가 해제될 때 컨텍스트가 삭제된다. 파일 보안 드라이버(5)는 Stream 컨텍스트와 Volume 컨텍스트를 사용하여 현재 파일의 상태를 저장한다.
IRP 종류에는 CACHE, NOCACHE, Fast I/O IRP가 있다. 윈도우 OS는 빠른 실행과 파일 접근을 위해 캐시 메모리를 사용하는데 CACHE IRP는 캐시된 메모리에 접근할 때 발생하는 IRP이다. 파일 보안 드라이버(5)는 이 CACHE IRP를 확인하면 파일이 암호화 대상인지 여부를 판단한다. NOCACHE IRP는 캐시 메모리를 거치지 않고 파일 시스템 드라이버(7)에 직접적으로 요청할 때 발생하는 IRP이다. 파일 보안 드라이버(5)는 이 NOCACHE IRP가 왔을 경우 암호화 및 복호화를 진행한다. Fast I/O는 파일 시스템 드라이버(7)를 거치지 않고 캐시 매니저(6)에 요청할 때 발생하는 IRP로 파일 보안 드라이버(5)에서는 사용하지 않는다.
이하, 상기 파일 보안 드라이버(5)의 구성 및 설명은 다음과 같다.
상기 생성 IRP부(51)는 Create IRP를 필터링 처리한다. Create IRP는 각각의 파일 마다 파일의 처리를 위해 첫번째로 발생하는 IRP이다. 예를 들어, 파일의 열기, 생성의 이벤트에 대응하여 생성 IRP가 발생한다.
여기서, 생성 IRP부(51)의 프리 콜백 함수의 필터링 처리는 다음과 같다. 생성 프리 콜백 함수가 호출되어 Create IRP를 수신하고, 수신된 생성 IRP의 IRQL(Interrupt ReQuest Level)이 상기 APC_LEVEL 보다 높은 시스템 레벨이면 함수의 실행을 종료한다. 파일 I/O의 대상이 폴더 또는 파일인지 확인하고, 폴더이면 종료한다. 파일 I/O의 대상이 보안 정책에 설정된 감시 경로가 아니면 종료한다. 상기 Create IRP의 요청 주체가 시스템 프로세스이면 종료한다.
나아가, 생성 프리 콜백 함수는 파일 I/O 처리의 대상이 기존 파일일 경우(예 : 파일 오픈), 파일의 헤더를 검사하여 암호화 여부를 확인하여 암호화된 파일의 보안 영역을 읽어들이고, 암호화된 파일이 아니면 종료한다. 다음으로, 파일 I/O 처리의 대상이 새롭게 생성하는 파일일 경우(예 : 파일 생성), IRP의 접근 권한에 FILE_WRITE_DATA 및 FILE_APPEND_DATA 권한이 포함되어 있으면, 파일의 암호화 대상 플래그를 설정한다. 물론, 암호화 대상 플래그가 설정된 파일은 암호화 및 복호화가 요구된다. 마지막으로, 파일의 선행 처리가 성공되었음을 나타내는 FLT_PREOP_SUCCESS_WITH_ CALLBACK을 리턴한다. 이후, 파일 시스템 드라이버(7)는 기록 매체(71)를 상대로 Create IRP에 대한 파일 처리를 수행한다. 파일 처리의 수행이 완료되면, 생성 포스트 콜백 함수가 호출된다.
한편, 생성 IRP부(51)의 생성 포스트 콜백 함수의 필터링 처리는 다음과 같다. 생성 포스트 콜백 함수가 호출되어 Create IRP를 수신하고, 수신된 Create IRP의 멤버 변수인 IoStatus가 성공에 해당하는 값(예 : ERROR_SUCCESS)이 아니라면, 함수의 실행을 종료한다. 물론, IoStatus는 파일 시스템 드라이버(7)가 기록 매체(71)에 대해 파일 I/O 처리를 수행한 결과 값이다. 파일 오브젝트의 Stream 컨텍스트가 존재하지 않으면 새로 생성하고, 생성된 컨텍스트의 멤버 변수들을 초기화한다. Create IRP에 속해 있는 멤버 변수인 Create Options에 FILE_DELETE_ON_CLOSE의 설정 유무를 확인하여 생성된 컨텍스트에 기록한다. 생성 프리 콜백 함수에서 파일 식별 및 보안 정보가 있다면 생성된 컨텍스트에 기록한다. 마지막으로, 포스트 콜백의 루틴이 정상 종료되었다는 것을 알리는 리턴 값인 FLT_POSTOP_FINISHED_PROCESSING을 리턴하여 다음 필터로 넘긴다. 이후, 생성 이벤트의 처리 결과는 어플리케이션(2)으로 전달된다.
상기 읽기 IRP부(52)는 Read IRP를 필터링 처리한다. Read IRP는 파일의 읽기 요청이 발생하는 경우 생성된다.
여기서, 읽기 IRP부(52)의 프리 콜백 함수의 필터링 처리는 다음과 같다. 읽기 프리 콜백 함수가 호출되어 Read IRP를 수신하고, 보안 정책에 의해 허용되는 암호화된 파일을 읽는 경우인지 판단한다. 보안 정책에 의해 파일 오브젝트의 Stream 컨텍스트가 존재하지 않는 경우 함수의 실행을 종료한다. Stream 컨텍스트는 Create IRP의 필터링 처리에서 이미 생성을 했는데, Stream 컨텍스트가 존재하지 않으면 보안 정책을 적용받는 파일이 아니다. 상기 Stream 컨텍스트로부터 암호화 파일이 아닌 것이 확인되는 경우, Read IRP의 요청 주체가 보안 정책이 허용하는 프로세스가 아닌 경우; 및 상기 Read IRP가 IRP_NOCACHE가 아닌 경우에 파일의 보안 정책에 따라 파일의 복호화 읽기를 불허하여 종료한다.
나아가, 읽기 프리 콜백 함수는 Read IRP가 IRP_NOCACHE이면, 암호화된 파일에 대해 파일의 읽기 위치를 보안 영역만큼 이동시킨 위치로 설정하는 처리를 수행한다. 본 발명에서는 파일 데이터에 대해 보안을 위해 별도의 보안 영역을 추가하여 상기 보안 정책이 적용된 보안 정보를 기록한다. 따라서, 파일의 읽기 요청이 발생하면, 보안 영역을 제외한 파일 데이터를 읽도록 읽기 위치의 제어가 요구된다.
도 3을 참조하면, 읽기 IRP부(52)는 기록 매체(71)로부터 읽어야 할 파일의 위치를 상기 보안 영역(31)의 시작 위치가 아닌 데이터 영역(32)의 시작 위치로 변경한다. 마지막으로, 파일의 선행 처리가 성공되었음을 나타내는 FLT_PREOP_SUCCESS_WITH_ CALLBACK을 리턴한다. 이후, 파일 시스템 드라이버(7)는 기록 매체(71)를 상대로 Read IRP에 대한 파일 처리를 수행한다. 그러면, 파일의 읽기 요청에 대해 파일 시스템 드라이버(7)는 기록 매체(71)로부터 데이터 영역(32)만 읽어들일 수 있다. 파일 처리의 수행이 완료되면, 읽기 포스트 콜백 함수가 호출된다.
한편, 읽기 IRP부(52)의 읽기 포스트 콜백 함수의 필터링 처리는 다음과 같다. 읽기 포스트 콜백 함수가 호출되어 Read IRP를 수신하고, 수신된 Read IRP의 멤버 변수인 IoStatus가 성공에 해당하는 값(예 : ERROR_SUCCESS)이 아니라면, 함수의 실행을 종료한다. Read IRP가 IRP_NOCACHE가 아닌 경우 함수의 실행을 종료한다. 기록 매체(71)로부터 읽어들인 데이터에 대해 암호화한 블록 사이즈(256Bytes)로 나누어 요청된 데이터의 길이만큼 복호화 처리를 한다. 함수 실행이 종료되면, 복호화 처리된 데이터는 캐시 매니저(6)를 통해 어플리케이션(2)으로 전달된다.
상기 쓰기 IRP부(53)는 Write IRP를 필터링 처리한다. Write IRP는 파일의 쓰기 요청이 발생하는 경우 생성된다.
여기서, 쓰기 IRP부(53)의 쓰기 프리 콜백 함수의 필터링 처리는 다음과 같다. 쓰기 프리 콜백 함수가 호출되어 Write IRP를 수신하고, 보안 정책에 의해 허용되는 암호화된 파일을 기록하는 경우인지 판단한다. 상기 보안 정책에 의해, 파일 오브젝트의 암호화 대상 플래그가 설정되지 않은 경우, Write IRP가 Fast I/O IRP인 경우, 상기 Write IRP가 CACHE IRP이고, 쓰기 위치가 0이고, 암호화 대상 시그니쳐가 존재하지 않는 경우, Stream 컨텍스트로부터 암호화 파일이 아닌 것이 확인되는 경우, 및 상기 Write IRP의 요청 주체가 보안 정책이 허용하는 프로세스가 아닌 경우는 파일의 암호화 쓰기를 불허하여 쓰기 프리 콜백 함수를 종료한다.
나아가, 쓰기 프리 콜백 함수는 보안 정책이 파일을 암호화하여 쓰기를 허용하는 경우, 다음의 필터링 처리를 수행한다. Write IRP가 CACHE IRP이고 쓰기 위치가 0이면, 쓰기 대상의 데이터 영역(32) 앞에 크기 256 byte의 상기 보안 영역(31)을 추가로 할당하고, 파일 처리의 성공을 리턴한다. 그러면, 캐시 메모리에 보안 영역(31)이 할당된 파일 데이터가 기록된다. 또한, 쓰기 IRP가 NOCACHE IRP이고 쓰기 위치가 0이고 암호화 대상 시그니쳐가 존재하는 경우, 상기 보안 영역(31)에 상기 보안 정책이 적용된 파일의 보안 정보 및 식별 정보를 기록하고, 상기 데이터 영역(32)을 암호화 처리하고 파일의 정상 종료를 리턴한다. 암호화 처리의 예를 들면, 실제 데이터를 256 Bytes씩 잘게 나누어 CBC(Cipher Block Chaining) 방식의 AES256 암호화 알고리즘을 사용하여 암호화 한다.
도 4를 참조하면, 쓰기 IRP부(53)는 기록 매체(71)에 기록할 파일에 대해 보안 영역(31)을 추가한다. 그리고 데이터 영역(32)은 암호화 처리한다. 이후, 파일 시스템 드라이버(7)는 기록 매체(71)를 상대로 Write IRP에 대한 파일 처리를 수행한다. 그러면, 파일의 쓰기 요청에 대해 파일 시스템 드라이버(7)는 기록 매체(71)에 보안 영역(31)을 포함하는 파일 데이터를 기록한다. 파일 처리의 수행이 완료되면, 쓰기 포스트 콜백 함수가 호출된다.
한편, 쓰기 IRP부(53)의 쓰기 포스트 콜백 함수의 필터링 처리는 다음과 같다. 쓰기 포스트 콜백 함수가 호출되어 Write IRP를 수신하고, 수신된 Write IRP의 멤버 변수인 IoStatus가 성공에 해당하는 값(예 : ERROR_SUCCESS)이 아니라면, 함수의 실행을 종료한다. Write IRP가 IRP_NOCACHE이면 종료한다. Write IRP가 CACHE IRP이면, 보안 영역(31) 및 데이터 영역(32)을 포함하는 크기로 파일의 끝을 저장하여 리턴한다.
상기 닫기 IRP부(54)는 Close IRP를 필터링 처리한다. Close IRP는 파일의 닫기 요청이 발생하는 경우 생성된다. 파일 처리의 시작에 발생하는 Create IRP에 대응하여 파일 처리의 마지막에 Close IRP가 발생한다. 닫기 IRP부(54)는 파일을 닫고 파일의 I/O의 종료를 처리한다.
도 5를 참조하면, 닫기 IRP(54)는 닫기 포스트 콜백 함수를 통해 파일 I/O의 정상 종료가 확인되면, 캐시 메모리(61)를 상대로 파일 데이터를 삭제하여 사용 흔적을 지운다.
<2. 방법 구성>
본 발명의 일 실시예에 따른 필터 드라이버 기반의 파일 보안 시스템 및 파일 보안 방법은 전술한 시스템(1)의 구축을 통하여 바람직하게 실현될 수 있다.
도 6은 본 발명의 일 실시예에 따른 필터 드라이버 기반의 파일 보안 방법의 개략적 순서도이다. 또한, 도 7 내지 도 9는 IRP 필터링 처리의 순서도이다.
도 6을 참조하면, 사용자는 어플리케이션(2)을 실행하여 파일 작업을 수행한다. 그러면, 어플리케이션(2)은 파일 처리와 관련된 생성, 읽기, 쓰기, 닫기, 삭제 등의 이벤트를 발생시킨다. 어플리케이션 레벨에서 발생된 파일 이벤트는 커널 레벨로 전달된다.
커널 레벨의 I/O 매니저(3)는 파일 이벤트를 감지하고(S10), 감지된 이벤트에 대응하는 IRP를 생성한다(S20). 파일 보안 드라이버(5)는 필터 매니저(4)를 통해 생성된 각각의 IRP를 수신하여 필터링 처리를 개시한다(S30). IRP는 Create IRP, Read IRP, Write IRP, Close IRP로 필터링된다.
파일 보안 드라이버(5)는 수신된 IRP의 종류에 따라 프리 콜백 함수를 실행하여 필터링 처리한다(S40). 프리 콜백 함수가 처리 결과를 리턴하여 함수의 실행이 종료되면, 파일 시스템 드라이버(7)는 기록 매체(71) 및 캐시 메모리 등을 상대로 파일 I/O 처리를 수행한다(S50). 파일 I/O 처리가 수행되면, 파일 보안 드라이버(5)는 포스트 콜백 함수를 실행하여 필터링 처리를 완료한다(S60).
여기서, Create IRP의 필터링 처리에 관한 상기 단계(S40) 내지 상기 단계(S60)의 처리는 다음과 같다.
생성 프리 콜백 함수가 호출되어 Create IRP를 수신하면, 필터링 처리를 통해 보안 정책이 적용되는 파일을 선별하고, 보안 정책이 적용되지 않는 파일이면 함수의 실행을 종료한다(S511).
구체적으로, 생성 프리 콜백 함수는 수신된 Create IRP의 IRQL이 APC_LEVEL 보다 높은 시스템 레벨일 경우, 파일 I/O의 대상이 폴더일 경우, 파일 I/O의 대상이 보안 정책에 설정된 경로가 아닌 경우, Create IRP의 요청 주체가 시스템 프로세스일 경우, 함수의 실행을 종료한다.
여기서, 생성 프리 콜백 함수는 파일이 이미 존재하는 경우, 상기 파일의 보안 영역에 해당하는 헤더를 읽고, 헤더 정보로부터 암호화 여부를 확인한다(S512). 읽은 파일이 암호화된 파일이 아닌 경우, 생성 프리 콜백 함수는 실행을 종료한다. 만약, 파일을 새롭게 생성하는 경우, 생성 프리 콜백 함수는 IRP의 파일 권한에 쓰기 권한이 있으면 파일의 암호화 대상 플래그를 설정한다(S513).
이후, 파일 시스템 드라이버(7)에 의해 파일 I/O 처리가 완료되고(S50). 생성 포스트 콜백 함수가 호출된다. 호출된 생성 포스트 콜백 함수는 생성 IRP를 수신하고, 수신된 생성 IRP으로부터 기록 매체(71)에 대한 파일 I/O 처리의 결과 값을 확인하고, 정상 완료가 아닌 경우 함수의 실행을 종료한다. 만약, 파일 오브젝트의 Stream 컨텍스트가 존재하지 않으면, 생성 포스트 콜백 함수는 Stream 컨텍스트를 새로 생성하고, 생성된 컨텍스트에 파일의 보안 정보 및 식별 정보 등을 저장한다(S514).
다음으로, Read IRP의 필터링 처리에 관한 상기 단계(S40) 내지 상기 단계(S60)의 처리는 다음과 같다.
읽기 프리 콜백 함수가 호출되어 Read IRP를 수신하면, 필터링 처리를 통해 보안 정책이 적용되는 파일을 선별하고, 보안 정책이 적용되지 않는 파일이면 함수의 실행을 종료한다(S521).
구체적으로, 읽기 프리 콜백 함수는, 파일 오브젝트의 Stream 컨텍스트가 존재하지 않는 경우, Stream 컨텍스트로부터 암호화 파일이 아닌 것이 확인되는 경우, Read IRP의 요청 주체가 보안 정책이 허용하는 프로세스가 아닌 경우 및 Read IRP가 IRP_NOCACHE가 아닌 경우 파일의 읽기를 불허하여 함수의 실행을 종료한다.
여기서, 읽기 프리 콜백 함수는 상기 보안 정책에 의해 허용되는 암호화된 파일을 읽는 경우, 상기 파일에 대해 파일의 읽기 위치를 보안 영역만큼 이동시킨 위치로 설정한다(S522). 즉, 파일의 읽기 위치는 데이터 영역의 시작 위치로 설정된다.
이후, 파일 시스템 드라이버(7)에 의해 파일 I/O 처리가 완료되어 데이터를 읽고(S50). 읽기 포스트 콜백 함수가 호출된다. 호출된 읽기 포스트 콜백 함수는 Read IRP를 수신하고, 수신된 Read IRP으로부터 기록 매체(71)에 대한 파일 I/O 처리의 결과 값을 확인하고, 정상 완료가 아닌 경우 함수의 실행을 종료한다. 파일의 데이터 읽기가 성공이면, 읽어들인 파일의 데이터 영역으로부터 읽어들인 데이터를 복호한다(S523).
다음으로, Write IRP의 필터링 처리에 관한 상기 단계(S40) 내지 상기 단계(S60)의 처리는 다음과 같다.
쓰기 프리 콜백 함수가 호출되어 Write IRP를 수신하면, 필터링 처리를 통해 보안 정책이 적용되는 파일을 선별하고, 보안 정책이 적용되지 않는 파일이면 함수의 실행을 종료한다(S531).
구체적으로, 쓰기 프리 콜백 함수는, 파일 오브젝트의 암호화 대상 플래그가 설정되지 않은 경우, Write IRP가 Fast I/O IRP인 경우, Write IRP가 CACHE IRP이고, 쓰기 위치가 0이고, 암호화 대상 시그니쳐가 존재하지 않는 경우, Stream 컨텍스트로부터 암호화 파일이 아닌 것으로 확인되는 경우; 및 Write IRP의 요청 주체가 보안 정책이 허용하는 프로세스가 아닌 경우 파일의 쓰기를 불허하여 함수의 실행을 종료한다.
여기서, 쓰기 프리 콜백 함수는 상기 보안 정책에 의해 파일의 암호화 및 쓰기가 허용되는 경우, Write IRP가 CACHE IRP이고 쓰기 위치가 0이면, 쓰기 대상의 데이터 영역(32) 앞에 보안 영역(31)을 추가로 할당하고, 파일 처리의 성공을 리턴한다(S532). 또한, Write IRP가 NOCACHE IRP이고 쓰기 위치가 0이고 암호화 대상 시그니쳐가 존재하는 경우, 상기 보안 영역(31)에 파일의 보안 정보를 기록하고, 데이터 영역을 암호화하는 처리한다(S533). 즉, 파일의 저장 크기는 보안 영역(31)만큼 증가한다.
이후, 파일 시스템 드라이버(7)에 의해 파일 I/O 처리가 완료되어 데이터가 저장되고(S50). 쓰기 포스트 콜백 함수가 호출된다. 호출된 쓰기 포스트 콜백 함수는 Write IRP를 수신하고, 수신된 Write IRP으로부터 기록 매체(71)에 대한 파일 I/O 처리의 결과 값을 확인하고, 정상 완료가 아닌 경우 함수의 실행을 종료한다. 한편, Write IRP가 CACHE IRP이면, 보안 영역(31) 및 데이터 영역(32)을 포함하는 크기로 파일의 끝을 저장하여 리턴한다(S534). 또한, 쓰기 IRP가 NOCACHE IRP이면 리턴한다(S535).
나아가, Close IRP의 필터링 처리는 파일을 닫고 파일의 I/O의 종료를 처리한다. 여기서, 닫기 포스트 콜백 함수는 파일의 닫기가 성공되면, 캐시 메모리로부터 파일 데이터를 삭제하여 데이터의 사용 흔적을 제거한다.
상술한 실시예에서, "~부"라는 용어는 필터 드라이버 기반의 파일 보안 시스템(1)의 하드웨어적 구분을 의미하는 용어로 사용된 것이 아니다. 따라서 복수의 구성부가 하나의 구성부로 통합될 수도 있고, 하나의 구성부가 복수의 구성부로 분할될 수도 있다. 또한, 구성부는 하드웨어 구성부를 의미할 수도 있지만, 소프트웨어의 구성부를 의미할 수도 있다. 따라서 본 발명은 "~부"라는 용어에 의해 특별히 한정되지 않음을 이해하여야 할 것이다.
본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 이것에 의해 한정되지 않으며 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 본 발명의 기술사상과 아래에 기재될 특허청구범위의 균등범위 내에서 다양한 수정 및 변형이 가능함은 물론이다.
1 : 시스템 2 : 어플리케이션
3 : I/O 매니저 4 : 필터 매니저
5 : 파일 보안 드라이버 6 : 캐시 매니저

Claims (25)

  1. 응용 프로그램과 파일 시스템 드라이버 사이에서 파일 I/O(Input/Output)의 팻킷(IRP : I/O Request Packet)을 필터링 처리하는 파일 보안 시스템에 있어서,
    응용 프로그램의 파일의 생성 또는 열기 이벤트에 의해 발생된 생성 IRP를 필터링하고, 열기 이벤트일 경우 기존 파일의 헤더를 검사하여 암호화 여부를 확인하고, 파일이 암호화된 것이 확인되면, 파일에 적용되는 보안 정책의 보안 정보가 기록되는 파일의 보안 영역을 읽어들이는 생성 IRP부;
    응용 프로그램의 파일의 읽기 이벤트에 의해 발생된 읽기 IRP를 필터링하고, 암호화된 파일을 읽어 복호화하는 것이 읽어들인 보안 영역으로부터 확인되면, 암호화된 파일에 대해 파일의 읽기 위치를 상기 보안 영역이 끝나는 위치인 데이터 영역의 시작 위치로 설정하고, 설정된 시작 위치에서 읽어들인 데이터 영역의 암호화된 데이터를 복호 처리하는 읽기 IRP부; 및
    응용 프로그램의 파일의 쓰기 이벤트에 의해 발생된 쓰기 IRP를 필터링하고, 파일을 암호화하여 쓰는 것이 읽어들인 보안 영역으로부터 확인되면, 쓰기 대상의 데이터 영역 앞에 상기 보안 영역을 추가로 할당하고, 할당된 보안 영역에 파일의 상기 보안 정보를 기록하고, 상기 보안 영역을 제외한 나머지 데이터 영역을 암호화 처리하여 기록하고, 보안 영역 및 데이터 영역을 포함하는 크기로 파일의 크기를 상기 보안 영역만큼 추가로 확장하여 저장하는 쓰기 IRP부
    를 포함하는 것을 특징으로 하는 파일 보안 시스템.
  2. 제 1항에 있어서,
    상기 필터링은 프리 콜백(pre callback) 함수 및 포스트 콜백(post callback) 함수를 통해 처리되고,
    프리 콜백 함수가 응용 프로그램으로부터 발생된 파일 이벤트에 의해 파일 시스템 드라이버로 전달되는 팻킷을 수신하여 필터링의 처리 결과를 리턴하고, 파일 시스템 드라이버가 기록 매체를 상대로 파일 I/O 처리를 완료하고 처리 결과를 리턴하고, 포스트 콜백 함수가 파일 시스템 드라이버로부터 전달되는 팻킷을 수신하여 필터링의 처리 결과를 리턴하는 것을 특징으로 하는 파일 보안 시스템.
  3. 제 2항에 있어서,
    상기 생성 IRP부는,
    생성 프리 콜백 함수가 호출되어 생성 IRP를 수신하고,
    수신된 생성 IRP의 IRQL(Interrupt ReQuest Level)이 APC_LEVEL 보다 높은 시스템 레벨이면 종료하는 처리;
    파일 I/O의 대상이 폴더이면 종료하는 처리;
    파일 I/O의 대상이 보안 정책에 설정된 경로가 아니면 종료하는 처리;
    상기 생성 IRP의 요청 주체가 시스템 프로세스이면 종료하는 처리;
    기존 파일일 경우 파일의 헤더를 검사하여 암호화 여부를 확인하고 암호화된 파일의 헤더를 읽어들이고, 암호화된 파일이 아니면 종료하는 처리; 및
    새롭게 생성하는 파일일 경우 파일 권한에 쓰기 권한이 있으면 파일의 암호화 대상 플래그를 설정하는 처리
    를 수행하는 것을 특징으로 하는 파일 보안 시스템.
  4. 제 2항에 있어서,
    상기 생성 IRP부는,
    생성 포스트 콜백 함수가 호출되어 생성 IRP를 수신하고,
    수신된 생성 IRP으로부터 기록 매체에 대한 파일 I/O 처리의 결과 값을 확인하고, 정상 완료가 아닌 경우 종료하는 처리; 및
    파일 오브젝트의 스트림 컨텍스트(stream context)가 존재하지 않으면 새로 생성하여 파일 보안의 식별 정보를 저장하는 처리
    를 수행하는 것을 특징으로 하는 파일 보안 시스템.
  5. 제 2항에 있어서,
    상기 읽기 IRP부는,
    읽기 프리 콜백 함수가 호출되어 읽기 IRP를 수신하고,
    보안 정책에 의해 허용되는 암호화된 파일을 읽는 경우,
    암호화된 파일에 대해 파일의 읽기 위치를 보안 영역만큼 이동시킨 위치로 설정하는 처리를 수행하는 것을 특징으로 하는 파일 보안 시스템.
  6. 제 5항에 있어서,
    상기 보안 정책은,
    파일 오브젝트의 스트림 컨텍스트가 존재하지 않는 경우;
    상기 스트림 컨텍스트로부터 암호화 파일이 아닌 것이 확인되는 경우;
    상기 읽기 IRP의 요청 주체가 보안 정책이 허용하는 프로세스가 아닌 경우; 및
    상기 읽기 IRP가 IRP_NOCACHE가 아닌 경우
    파일의 복호화 읽기를 불허하여 프리 콜백 함수가 종료되는 것을 특징으로 하는 파일 보안 시스템.
  7. 제 2항에 있어서,
    상기 읽기 IRP부는,
    읽기 포스트 콜백 함수가 호출되어 읽기 IRP를 수신하고,
    수신된 읽기 IRP으로부터 기록 매체에 대한 파일 I/O 처리의 결과 값을 확인하고, 정상 완료가 아닌 경우 종료하는 처리; 및
    읽어들인 파일의 상기 데이터 영역을 복호화하는 처리
    를 수행하는 것을 특징으로 하는 파일 보안 시스템.
  8. 제 2항에 있어서,
    상기 쓰기 IRP부는,
    쓰기 프리 콜백 함수가 호출되어 쓰기 IRP를 수신하고,
    보안 정책이 파일을 암호화하여 쓰기를 허용하는 경우,
    상기 쓰기 IRP가 CACHE IRP이고 쓰기 위치가 0이면, 쓰기 대상의 데이터 영역 앞에 상기 보안 영역을 추가로 할당하고, 파일 처리의 성공을 리턴하는 처리; 및
    상기 쓰기 IRP가 NOCACHE IRP이고 쓰기 위치가 0이고 암호화 대상 시그니쳐가 존재하는 경우, 상기 보안 영역에 파일의 보안 정보를 기록하고, 상기 데이터 영역을 암호화하는 처리
    를 수행하는 것을 특징으로 하는 파일 보안 시스템.
  9. 제 8항에 있어서,
    상기 보안 정책은,
    파일 오브젝트의 암호화 대상 플래그가 설정되지 않은 경우;
    쓰기 IRP가 Fast I/O IRP인 경우;
    상기 쓰기 IRP가 CACHE IRP이고, 쓰기 위치가 0이고, 암호화 대상 시그니쳐가 존재하지 않는 경우;
    파일 오브젝트의 스트림 컨텍스트로부터 암호화 파일이 아닌 것이 확인되는 경우; 및
    상기 쓰기 IRP의 요청 주체가 보안 정책이 허용하는 프로세스가 아닌 경우
    파일의 암호화 쓰기를 불허하여 프리 콜백 함수가 종료되는 것을 특징으로 하는 파일 보안 시스템.
  10. 제 2항에 있어서,
    상기 쓰기 IRP부는,
    상기 포스트 콜백 함수가 호출되어 쓰기 IRP를 수신하고,
    수신된 쓰기 IRP으로부터 기록 매체에 대한 파일 I/O 처리의 결과 값을 확인하고, 정상 완료가 아닌 경우 종료하는 처리;
    상기 쓰기 IRP가 NOCACHE IRP이면 리턴하는 처리; 및
    상기 쓰기 IRP가 CACHE IRP이면, 보안 영역 및 데이터 영역을 포함하는 크기로 파일의 끝을 저장하여 리턴하는 처리
    를 수행하는 것을 특징으로 하는 파일 보안 시스템.
  11. 제 2항에 있어서,
    응용 프로그램의 파일의 닫기 이벤트에 의해 발생된 닫기 IRP를 필터링하고, 파일을 닫고 파일의 I/O의 종료를 처리하는 닫기 IRP부를 더 포함하는 것을 특징으로 하는 파일 보안 시스템.
  12. 제 11항에 있어서,
    상기 닫기 IRP부는,
    캐시 메모리의 파일 데이터를 삭제하는 것을 특징으로 하는 파일 보안 시스템.
  13. 파일 보안 시스템이 응용 프로그램과 파일 시스템 드라이버 사이에서 파일 I/O(Input/Output)의 팻킷(IRP : I/O Request Packet)을 필터링 처리하는 파일 보안 방법에 있어서,
    (a)필터링 처리에 의해 IRP를 수신하는 IRP 수신 단계;
    (b)상기 IRP가 생성 IRP이면, 응용 프로그램의 열기 이벤트일 경우 기존 파일의 헤더를 검사하여 암호화 여부를 확인하고, 파일이 암호화된 것이 확인되면, 파일에 적용되는 보안 정책의 보안 정보가 기록되는 파일의 보안 영역을 읽어들이는 생성 IRP 처리 단계;
    (c)상기 IRP가 읽기 IRP이면, 암호화된 파일을 읽어 복호화하는 것이 읽어들인 보안 영역으로부터 확인될 경우, 암호화된 파일에 대해 파일의 읽기 위치를 상기 보안 영역이 끝나는 위치인 데이터 영역의 시작 위치로 설정하고, 설정된 시작 위치에서 읽어들인 데이터 영역의 암호화된 데이터를 복호 처리하는 읽기 IRP 처리 단계; 및
    (d)상기 IRP가 쓰기 IRP이면, 파일을 암호화하여 쓰는 것이 읽어들인 보안 영역으로부터 확인될 경우, 쓰기 대상의 데이터 영역 앞에 상기 보안 영역을 추가로 할당하고, 할당된 보안 영역에 파일의 보안 정보를 기록하고 상기 보안 영역을 제외한 나머지 데이터 영역을 암호화 처리하여 기록하고, 보안 영역 및 데이터 영역을 포함하는 크기로 파일의 크기를 상기 보안 영역만큼 추가로 확장하여 저장하는 쓰기 IRP 처리 단계
    를 포함하는 것을 특징으로 하는 파일 보안 방법.
  14. 제 13항에 있어서,
    상기 단계(a)는,
    I/O 매니저가 응용 프로그램의 파일 이벤트를 감지하고, 감지된 이벤트에 대응하는 각각의 IRP를 생성하면, 필터 매니저가 상기 필터링 처리를 수행하는 단계인 것을 특징으로 하는 파일 보안 방법.
  15. 제 13항에 있어서,
    상기 단계(b) 내지 단계(d)는,
    필터링 처리된 각각의 IRP에 대응되는 프리 콜백(pre callback) 함수 및 포스트 콜백(post callback) 함수를 통해 처리되는 단계로서,
    상기 프리 콜백 함수가 응용 프로그램으로부터 발생된 파일 이벤트에 의해 파일 시스템 드라이버로 전달되는 팻킷을 수신하여 필터링의 처리 결과를 리턴하고, 파일 시스템 드라이버가 기록 매체를 상대로 파일 I/O 처리를 완료하고 처리 결과를 리턴하고, 포스트 콜백 함수가 파일 시스템 드라이버로부터 전달되는 팻킷을 수신하여 필터링의 처리 결과를 리턴하는 것을 특징으로 하는 파일 보안 방법.
  16. 제 15항에 있어서,
    상기 단계(b)는,
    생성 프리 콜백 함수가 호출되어 생성 IRP를 수신하고,
    수신된 생성 IRP의 IRQL(Interrupt ReQuest Level)이 APC_LEVEL 보다 높은 시스템 레벨이면 종료하는 처리;
    파일 I/O의 대상이 폴더이면 종료하는 처리;
    파일 I/O의 대상이 보안 정책에 설정된 경로가 아니면 종료하는 처리;
    상기 생성 IRP의 요청 주체가 시스템 프로세스이면 종료하는 처리;
    기존 파일일 경우 파일의 헤더를 검사하여 암호화 여부를 확인하고 암호화된 파일의 헤더를 읽어들이고, 암호화된 파일이 아니면 종료하는 처리; 및
    새롭게 생성하는 파일일 경우 파일 권한에 쓰기 권한이 있으면 파일의 암호화 대상 플래그를 설정하는 처리
    를 수행하는 단계인 것을 특징으로 하는 파일 보안 방법.
  17. 제 15항에 있어서,
    상기 단계(b)는,
    생성 포스트 콜백 함수가 호출되어 생성 IRP를 수신하고,
    수신된 생성 IRP으로부터 기록 매체에 대한 파일 I/O 처리의 결과 값을 확인하고, 정상 완료가 아닌 경우 종료하는 처리; 및
    파일 오브젝트의 스트림 컨텍스트(stream context)가 존재하지 않으면 새로 생성하여 파일 보안의 식별 정보를 저장하는 처리
    를 수행하는 단계인 것을 특징으로 하는 파일 보안 방법.
  18. 제 15항에 있어서,
    상기 단계(c)는,
    읽기 프리 콜백 함수가 호출되어 읽기 IRP를 수신하고,
    보안 정책에 의해 허용되는 암호화된 파일을 읽는 경우, 암호화된 파일에 대해 파일의 읽기 위치를 보안 영역만큼 이동시킨 위치로 설정하는 처리를 수행하는 단계인 것을 특징으로 하는 파일 보안 방법.
  19. 제 18항에 있어서,
    상기 보안 정책은,
    파일 오브젝트의 스트림 컨텍스트가 존재하지 않는 경우;
    상기 스트림 컨텍스트로부터 암호화 파일이 아닌 것이 확인되는 경우;
    상기 읽기 IRP의 요청 주체가 보안 정책이 허용하는 프로세스가 아닌 경우; 및
    상기 읽기 IRP가 IRP_NOCACHE가 아닌 경우
    파일의 복호화 읽기를 불허하여 프리 콜백 함수가 종료되는 것을 특징으로 하는 파일 보안 방법.
  20. 제 15항에 있어서,
    상기 단계(c)는,
    읽기 포스트 콜백 함수가 호출되어 읽기 IRP를 수신하고,
    수신된 읽기 IRP으로부터 기록 매체에 대한 파일 I/O 처리의 결과 값을 확인하고, 정상 완료가 아닌 경우 종료하는 처리; 및
    읽어들인 파일의 상기 데이터 영역을 복호화하는 처리
    를 수행하는 것을 특징으로 하는 파일 보안 방법.
  21. 제 15항에 있어서,
    상기 단계(d)는,
    쓰기 프리 콜백 함수가 호출되어 쓰기 IRP를 수신하고,
    보안 정책이 파일을 암호화하여 쓰기를 허용하는 경우,
    상기 쓰기 IRP가 CACHE IRP이고 쓰기 위치가 0이면, 쓰기 대상의 데이터 영역 앞에 상기 보안 영역을 추가로 할당하고, 파일 처리의 성공을 리턴하는 처리; 및
    상기 쓰기 IRP가 NOCACHE IRP이고 쓰기 위치가 0이고 암호화 대상 시그니쳐가 존재하는 경우, 상기 보안 영역에 파일의 보안 정보를 기록하고, 상기 데이터 영역을 암호화하는 처리
    를 수행하는 단계인 것을 특징으로 하는 파일 보안 방법.
  22. 제 21항에 있어서,
    상기 보안 정책은,
    파일 오브젝트의 암호화 대상 플래그가 설정되지 않은 경우;
    쓰기 IRP가 Fast I/O IRP인 경우;
    상기 쓰기 IRP가 CACHE IRP이고, 쓰기 위치가 0이고, 암호화 대상 시그니쳐가 존재하지 않는 경우;
    파일 오브젝트의 스트림 컨텍스트로부터 암호화 파일이 아닌 것이 확인되는 경우; 및
    상기 쓰기 IRP의 요청 주체가 보안 정책이 허용하는 프로세스가 아닌 경우
    파일의 암호화 쓰기를 불허하여 프리 콜백 함수가 종료되는 것을 특징으로 하는 파일 보안 방법.
  23. 제 15항에 있어서,
    상기 단계(d)는,
    상기 포스트 콜백 함수가 호출되어 쓰기 IRP를 수신하고,
    수신된 쓰기 IRP으로부터 기록 매체에 대한 파일 I/O 처리의 결과 값을 확인하고, 정상 완료가 아닌 경우 종료하는 처리;
    상기 쓰기 IRP가 NOCACHE IRP이면 리턴하는 처리; 및
    상기 쓰기 IRP가 CACHE IRP이면, 보안 영역 및 데이터 영역을 포함하는 크기로 파일의 끝을 저장하여 리턴하는 처리
    를 수행하는 단계인 것을 특징으로 하는 파일 보안 방법.
  24. 제 15항에 있어서,
    (e)상기 IRP가 닫기 IRP이면, 파일을 닫고 파일의 I/O의 종료를 처리하는 닫기 IRP 단계를 더 포함하는 것을 특징으로 하는 파일 보안 방법.
  25. 제 24항에 있어서,
    상기 단계(e)는,
    캐시 메모리의 파일 데이터를 삭제하는 단계인 것을 특징으로 하는 파일 보안 방법.
KR1020140110883A 2014-08-25 2014-08-25 필터 드라이버 기반의 파일 보안 시스템 및 파일 보안 방법 KR101699046B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140110883A KR101699046B1 (ko) 2014-08-25 2014-08-25 필터 드라이버 기반의 파일 보안 시스템 및 파일 보안 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140110883A KR101699046B1 (ko) 2014-08-25 2014-08-25 필터 드라이버 기반의 파일 보안 시스템 및 파일 보안 방법

Publications (2)

Publication Number Publication Date
KR20160024265A KR20160024265A (ko) 2016-03-04
KR101699046B1 true KR101699046B1 (ko) 2017-01-23

Family

ID=55535949

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140110883A KR101699046B1 (ko) 2014-08-25 2014-08-25 필터 드라이버 기반의 파일 보안 시스템 및 파일 보안 방법

Country Status (1)

Country Link
KR (1) KR101699046B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101869743B1 (ko) * 2017-03-14 2018-07-20 주식회사 안랩 프로세스 보호 시스템 및 프로세스 보호 방법
KR102328597B1 (ko) * 2020-09-09 2021-11-18 주식회사 알파비트 암호화 기능을 수행하는 필터 모듈
CN114579313B (zh) * 2022-03-07 2024-09-27 中南大学 一种面向多安全域架构的安全域快速建立方法
CN118260749B (zh) * 2024-03-25 2024-09-27 中国人民解放军61660部队 一种高效拦截Windows PE文件装载的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100461940B1 (ko) 2002-01-12 2004-12-14 주식회사 코어트러스트 디지털 컨텐츠의 정보보호 방법 및 시스템
KR100561218B1 (ko) * 2004-12-24 2006-03-15 주식회사 잉카인터넷 외부 저장장치를 통한 정보 유출 방지시스템 및 그 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993603B2 (en) * 2002-12-09 2006-01-31 Microsoft Corporation Managed file system filter model and architecture
KR20110075059A (ko) * 2009-12-28 2011-07-06 이봉규 파일시스템의 확장속성을 이용한 파일 암복호화 방법과 응용프로그램별 실시간 파일암복호화 및 접근통제 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100461940B1 (ko) 2002-01-12 2004-12-14 주식회사 코어트러스트 디지털 컨텐츠의 정보보호 방법 및 시스템
KR100561218B1 (ko) * 2004-12-24 2006-03-15 주식회사 잉카인터넷 외부 저장장치를 통한 정보 유출 방지시스템 및 그 방법

Also Published As

Publication number Publication date
KR20160024265A (ko) 2016-03-04

Similar Documents

Publication Publication Date Title
US9881013B2 (en) Method and system for providing restricted access to a storage medium
US7536524B2 (en) Method and system for providing restricted access to a storage medium
US8234477B2 (en) Method and system for providing restricted access to a storage medium
US6378071B1 (en) File access system for efficiently accessing a file having encrypted data within a storage device
US8856521B2 (en) Methods and systems for performing secure operations on an encrypted file
US8024530B2 (en) Security erase of a delete file and of sectors not currently assigned to a file
KR101699046B1 (ko) 필터 드라이버 기반의 파일 보안 시스템 및 파일 보안 방법
US8307408B2 (en) System and method for file processing and file processing program
US20030221115A1 (en) Data protection system
KR20180016937A (ko) 피싱 또는 랜섬웨어 공격을 차단하는 방법 및 시스템
WO2007091652A1 (ja) 割符情報の管理方法および管理装置
JP2009098890A (ja) ファイルシステムおよびコンピュータが読み取り可能な記憶媒体
EP2849111B1 (en) OTP generation on portable medium
US8725780B2 (en) Methods and systems for rule-based worm enforcement
JP2014178784A (ja) 情報処理装置、情報処理システム及び情報処理プログラム
US20060085413A1 (en) Storage system and method of managing data stored in a storage system
CN115758420A (zh) 文件访问控制方法、装置、设备及介质
WO2017067513A1 (zh) 数据处理方法及存储网关
JP4653497B2 (ja) 携帯記憶装置
CN110321740B (zh) 一种存储设备的数据操作方法以及存储设备
JP5429906B2 (ja) 携帯端末、プログラム、及び制御方法。
CN111143879A (zh) 一种Android平台SD卡文件保护方法、终端设备及存储介质
JP5298546B2 (ja) 情報管理システム、ユーザ端末、情報管理方法および情報管理プログラム
KR100990973B1 (ko) 이동형 데이터 저장 장치의 로우 영역을 이용하여 보안 기능을 구현한 데이터 처리 장치
JP4376587B2 (ja) アクセス履歴記録装置及びアクセス制御装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200116

Year of fee payment: 4