상기의 목적을 달성하기 위한 본 발명은,
하드디스크 상에 데이터저장을 위한 물리적인 지정이 이루어지지 않아 상기 하드디스크를 논리적으로 운영하는 파일시스템모듈에 의해 모든 데이터저장이 가능한 반면, 운영체제는 하드디스크 상에 일정공간만큼 데이터가 지정된 것으로 인식하여 인가된 어플리케이션모듈에 의해서만 상기 공간에 데이터를 물리적으로 지정할 수 있도록 하드디스크를 가상으로 점유하는 용량가변식 VSD이미지파일모듈과;
상기 용량가변식 VSD이미지파일모듈 내의 보안파일을 처리하는 VSD드라이브와;
상기 용량가변식 VSD이미지파일모듈과 VSD드라이브 간의 데이터 입출력을 암복호화 처리하는 암복호화모듈과;
상기 VSD드라이브를 통해 운영체제가 별도의 디스크볼륨이 생성된 것으로 인식시켜 상기 용량가변식 VSD이미지파일모듈 내 보안파일로의 접근을 처리하는 VSD파일시스템모듈과;
상기 어플리케이션 모듈에 의한 상기 디스크드라이브 및 VSD드라이브 내 파일로의 접근 시, 해당 작업이 진행되는 공간이 상기 디스크드라이브인가 VSD드라이 브인가를 확인하고, 해당 파일로의 접근허가에 대한 어플리케이션 모듈의 인가여부를 판별하여 접근을 결정하는 접근통제장치;
가 포함된 저장공간의 운영효율성을 높인 가상 디스크를 이용한 응용 프로그램 별 접근 통제시스템이다.
상기의 목적을 달성하기 위하여 본 발명은,
하드디스크와, 디스크드라이브와, 파일시스템 모듈과, 어플리케이션 모듈과, 용량가변식 VSD이미지파일모듈과, VSD드라이브와, 암복호화모듈과, VSD파일시스템모듈과, 확장된 시스템 서비스 테이블과 확장된 서비스 테이블을 포함하는 접근통제장치로 된 접근 통제시스템을 통하여,
(a) 상기 어플리케이션 모듈이 선택적으로 인가되는 단계;
(b) 상기 어플리케이션 모듈에 의한 해당 파일로의 접근을 위해 운영체제로 함수가 호출되는 단계;
(c) 상기 운영체제에 의해 상기 함수가 상기 확장된 서비스 테이블로 제공되는 단계;
(d) 상기 확장된 서비스 테이블에서 상기 함수의 연산이 중지되도록 임의로 지정된 함수로 변경되는 단계;
(e) 상기 확장된 서비스 테이블에서 어플리케이션 모듈에 의한 상기 파일로의 접근공간이 상기 디스크드라이브인지 VSD드라이브인지가 확인되는 단계;
(f) 상기 (e)단계에서 디스크드라이브로 확인될 경우, 변경된 상기 함수가 연산이 가능하도록 복귀되어 상기 확장된 시스템 서비스 테이블로 제공되는 단계;
(g) 상기 (e)단계에서 VSD드라이브로 확인될 경우, 상기 어플리케이션 모듈의 접근이 인가된 것인가가 확인되는 단계;
(h) 상기 (g)단계에서 상기 어플리케이션 모듈이 인가된 것으로 확인될 경우, 변경된 상기 함수가 연산이 가능하도록 복귀되어 상기 확장된 시스템 서비스 테이블로 제공되는 단계;
(i) 상기 (g)단계에서 상기 어플리케이션 모듈이 비인가된 것으로 확인될 경우, 해당 함수의 연산이 중지되는 단계;
가 포함된 것을 특징으로 하는 가상 디스크를 이용한 응용 프로그램 별 접근 통제방법이다.
이하 본 발명을 첨부된 예시도면에 의거하여 상세히 설명한다.
도 1은 본 발명에 따른 접근 통제시스템의 구동관계를 도시한 블럭도인바, 이를 참조하여 설명한다.
본 발명에 따른 접근 통제시스템은, 내부 인가자의 접속 시 별도의 패스워드입력 또는 인증확인 절차와 같은 본인 확인과정없이도, 보안이 요구되는 데이터(이하 파일)에 대한 엑세스(여기서는 열기, 읽기, 쓰기 등의 작업수행을 위한 해당 파일에 대한 일렬의 연산처리 ; 이하 접근)가 가능한 응용 프로그램(이하 어플리케이션 모듈 ; A, A')을 선택적으로 인가시킴으로서, 인가된 어플리케이션모듈(A)에 의해서는 상기 파일에 대한 접근이 자유롭도록 하는 것이다.
한편, 하드디스크(서버급에서는 DB로 명명되지만, 여기서는 일반 PC의 하드디스크와 더불어 DB까지 포괄하는 상위 개념으로 통칭)를 물리적으로 분할하지 않고도 운영체제(OS)가 새로운 디스크드라이브가 생성된 것으로 인식하도록 하는 가상디스크(VD)를 설치하여, 인가된 어플리케이션 모듈(A ; 인가된 응용프로그램)과 비인가된 어플리케이션 모듈(A' ; 비인가된 응용프로그램)이 접근할 수 있는 디스크의 위치를 구분하였다. 상기 가상디스크(VD)에 대한 개념은 이하에서 보다 상세히 기술하겠다.
따라서, 도시된 바와 같이, 인가된 어플리케이션 모듈(A)은 보안이 요구되는 파일(이하 보안파일)만 저장된 상기 가상디스크(VD)로 접근하여 읽기 및 쓰기(R/W ; Read/Write)를 실행할 수 있는 반면, 비인가된 어플리케이션 모듈(A')의 경우에는 가상디스크(VD)에 저장된 보안파일에 대한 읽기 및 쓰기 모두 불가능하고(X), 가상디스크(VD) 이외의 일반디스크(ND)에 저장된 파일에 대해서는 읽기 및 쓰기를 실행할 수 있다.
한편, 인가된 어플리케이션 모듈(A)의 경우, 일반디스크(ND)에 저장된 파일에 대해 읽기는 가능하지만 쓰기는 실행할 수 없다. 이는 가상디스크(VD)에 저장되어 있는 보안파일이 외부로 유출되는 것을 막기 위함이다.
상기한 기능을 수행하기 위해 본 발명은 다음과 같은 구성을 이루고 있으며, 본 발명에 따른 접근 통제시스템의 구성에 대한 일실시예를 도시한 도 2를 통해 이를 좀더 상세히 기술한다.
본 발명에 따른 접근 통제시스템은, 하드디스크(10)와, 디스크드라이브(20) 와, 파일시스템 모듈(30)과, 어플리케이션 모듈(60)과, 용량가변식 VSD이미지파일모듈(41)과, VSD드라이브(42)와, 암복호화모듈(45)과, VSD파일시스템모듈(43)과, 접근통제장치(44)가 포함된 구조를 갖는다.
상기 하드디스크(10)는, 기본적으로 PC 또는 로컬 네트워크(LAN) 기반 하에 구동되는 각종 응용프로그램과 이 응용프로그램으로 처리되는 데이터들이 저장되며, 상기 데이터는 운영체제를 통해 파일형식으로 열람, 삭제 및 편집되어 관리된다. 해당 하드디스크(10)의 구체적인 물리적/화학적 구조 및 운영체제와의 작동관계에 있어서는 공지된 기술이므로 이에 대한 상세한 설명은 피하기로 한다.
상기 디스크 드라이브(20)는 하드디스크(20)와 운영체제(OS)를 매개한다. 필요에 따라 상기 하드디스크(20)를 분할해야할 때가 있다. 이때, 상기 디스크 드라이브(20)는 하드디스크(20)의 포맷을 통해 운영체제(OS)에서 인식하게 되는 하나이상의 디스크볼뮴을 포함하게 되며, 운영체제(OS)는 상기 디스크볼륨을 개별 디스크로 인식하여 관리하게 된다.
상기 디스크 드라이브(20) 또한 공지된 구성이므로 이에 대한 상세한 설명은 피하기로 한다.
상기 파일시스템 모듈(30)은, 상기 하드디스크(10)의 물리적 특성을 추상화하여 논리적인 저장단위(클러스터)로 정리하고 파일로의 접근을 처리하는 것으로, 디스크 포맷으로 형성된 디스크볼륨과 더불어 설치되며 이를 통해 운영체제(OS)가 디스크 드라이브(20)를 인식한다.
참고로, 상기 파일시스템 모듈(30)에는 마이크로소프트사에서 개발된 컴퓨터 운영체제(OS)인 윈도우즈(WINDOWS)의 FAT16, FAT32, NTFS와, 리눅스의 ext2, raiserFS, ext3 등이 있다. 본 발명에 따른 통제시스템의 일실시예는 상기 윈도우즈(WINDOWS)를 기반으로 하여 구현되므로, 파일시스템 모듈(30)로 FAT 시리즈, NTFS가 적용되었다. 그런데, 본 발명에서 상기 용량가변식 VSD이미지파일모듈(41)은 상기 가상디스크(VD)의 저장공간에 대하여 정형화된 것이 아닌 가변적으로 이루어지도록 되었으며, 이를 지원하는 파일시스템모듈(30)은 NTFS에 한하므로, 본 발명에 따른 통제시스템의 일실시예는 NTFS 기반에서만 구동될 수 있다 할 것이다. 그러나, 이는 수많은 실시예 중 하나에 불과하며 이하의 청구범위를 벗어나지 않는 한도 내에서 다양하게 변형실시될 수 있다.
상기 어플리케이션 모듈(60)은, 디스크볼륨에 저장된 파일을 불러와 구동시킬 수 있도록 된 일반적인 프로그램으로, 본 발명에서는 상기 가상디스크(VD)로의 접근여부를 인가받은 경우와 인가받지 못한 경우로 나뉘며, 이에 따라 보안파일에 대한 처리과정이 다르게 이루어진다.
어플리케이션 모듈(60)은 고유한 정보(프로그램 이름, 헤더, Check sum, 또는 인증서)를 통해 구분되며, 상기 접근통제장치(50)는 이 정보로서 실행되고 있는 어플리케이션 모듈(60)의 인가여부를 확인한다.
상기 용량가변식 VSD이미지파일모듈(41)은, 상기 파일시스템 모듈(30)을 통해 디스크볼륨 내에 별도의 파일을 생성시킴으로서 이루어지며, 상기 디스크볼륨과 같이 하드디스크(10) 상의 일정 공간을 파티션하여 상기 디스크볼륨 위에 또다른 가상 디스크볼륨을 형성시키는 것이다.
즉, 기존의 디스크분할과 같이 운영체제(OS)가 구현되기 전 하드디스크의 물리적인 분할을 통해 각각의 디스크볼륨을 형성하고 상기 디스크볼륨을 포함한 해당 디스크드라이브에 따라 운영체제(OS)에서 파일시스템 모듈을 설정하는 방식과는 달리, 본 발명에 따른 통제시스템은 운영체제(OS)를 통해 구현되어지고 있는 PC 및 로컬 네트워크(LAN) 상에서 사용자의 필요에 따라 하드디스크를 분할한 것과 같은 효과를 얻는 것이다.
그런데, 본 발명에 따른 용량가변식 VSD이미지파일모듈(41)은, 본원 출원인이 선출원한 바 있는 '가상 디스크를 이용한 응용 프로그램 별 접근 통제시스템과 그 통제방법(출원번호 ; 10-2004-0012380)'의 VSD이미지파일모듈과는 달리, 그 사용공간의 용량을 유동적으로 가변할 수 있다.
일례로, 종래 VSD이미지파일모듈의 경우 물리적인 전체용량이 40GB인 하드디스크에 보안파일을 별도로 관리하기 위한 10GB의 상기 VSD이미지파일모듈을 형성시키면, 보안이 필요하지 않은 일반파일은 남은 30GB에만 저장되며, 상기 VSD이미지파일모듈에 1GB짜리 보안파일만이 저장되어 9GB의 여유공간이 남는다고 하더라도 일반파일은 상기 하드디스크에서 30GB 이상 채울 수 없었다.
하지만, 본 발명에 따른 용량가변식 VSD이미지파일모듈(41)의 경우 물리적인 전체용량이 40GB인 하드디스크에 보안파일을 별도로 관리하기 위한 10GB의 상기 용량가변식 VSD이미지파일모듈(41)을 형성시키면, 실제로 10GB를 점유하고 있는 상기 용량가변식 VSD이미지파일모듈(41)에 1GB짜리 보안파일만이 저장되고 있다면, 일반파일은 최대 39GB까지 채울 수 있는 것이다.
이를 위해, 본 발명에서는 NTFS(NT file system) 기반에서 적용되는 스파스파일(Sparse File)이 응용되었다.
상기 스파스 파일이란, 임의로 거대 파일을 만들 필요가 있을 때 모든 바이트를 위한 디스크 공간을 지정하지 않고도 이를 가능하도록 하는 것이다.
즉, 42GB의 거대 파일을 만들어야 할 경우, 디스크의 42GB 공간을 모두 지정하지 않고 파일의 처음이 될 64KB와 마지막이 될 64KB에만 데이터를 쓴다. NTFS는 사용자가 데이터를 쓰는 파일 부분에만 물리적 디스크 공간을 할당하게 되며, 이를 통해 스파스 파일은 디스크에서 128KB의 공간만을 사용하게 된다. 그러나 다른 측면에서 볼 때 운영체제에서는 42GB의 파일인 것처럼 작동한다.
본 발명에 따른 용량가변식 VSD이미지파일모듈(41)은 상술된 스파스 파일이 응용되었으며, 상기 VSD드라이브(42)를 설명하면서 좀더 상세히 설명한다.
이때, 상기 VSD는 Virtual Secure Disk의 약자로, 여기서는 본 발명에서 보안파일을 저장하기 위해 형성시킨 가상디스크를 의미하며, 기존 하드디스크와의 구분을 위해 사용된다.
한편, 상기 용량가변식 VSD이미지파일모듈(41)에서의 '이미지'란, 실체하지는 않으면서 겉으로는 표현되어짐을 뜻하며, 여기서는 기존의 파일시스템모듈(30) 및 디스크드라이브(20)와 상기 가상디스크(VD)를 이루는 구성을 명명하기 위해 사용된다.
상기 VSD드라이브(42)는, 상기 용량가변식 VSD이미지파일모듈(41)의 드라이브로써 상기 디스크 드라이브(20)에 대응되는 구성이다. 즉, 용량가변식 VSD이미 지파일모듈(41)이 실질적으로는 일반파일(41')과 같은 파일의 개념으로 형성되었지만, 운영체제(OS) 상에서는 용량가변식 VSD이미지파일모듈(41)이 별도로 디스크분할된 디스크볼륨으로 인식되어야 하므로 이에 저장된 파일들을 처리하는 VSD드라이브(42)가 요구된다 하겠다.
상기 VSD드라이브(42)는 상기 용량가변식 VSD이미지파일모듈(41)의 형성을 위한 포맷과 더불어 설치되고, 이를 통해 인가된 어플리케이션 모듈(A)은 상기 용량가변식 VSD이미지파일모듈(41)에 위치한 보안파일로 접근하게 된다.
상기 VSD파일시스템모듈(43)은, 상기 용량가변식 VSD이미지파일모듈(41)과 VSD드라이브(42)의 생성으로 인해 운영체제(OS)에서는 새로운 디스크볼륨의 발생으로 인식되어 상기 용량가변식 VSD이미지파일모듈(41) 내 파일로의 접근을 처리하도록 설정된 것이다.
따라서, VSD파일시스템모듈(43)은 상기 파일시스템 모듈(30)에 대응되는 구성이다.
도 3은 본 발명에 따른 접근 통제시스템의 가상 디스크 설정과정을 도시한 블럭도인바 이를 참조하여 설명한다.
별도의 VSD설치프로그램(1)을 해당 PC 또는 로컬 네트워크(LAN) 상의 클라이언트 PC에 각각 인스톨하며, 상기 VSD설치프로그램(1)에 구성된 가상디스크볼륨생성수단(미도시됨)을 통해 상기 디스크볼륨 내 일정공간에 파일형식으로 공간을 점유하여 가상디스크볼륨을 생성시키고(2), VSD드라이브설정수단(미도시됨)을 통해 가상디스크볼륨에 해당하는 디바이스로 VSD드라이브(42)를 설정하는 한편, 상기 가 상디스크볼륨에 대한 정보(DISK_GEOMETRY 정보, 파티션 정보 등)를 수신받는다.(3)
일반적으로, 상기 VSD설치프로그램(1) 인스톨 시, 가상디스크볼륨에 대한 정보를 결정된 상태이므로, 이에 따라 가상디스크볼륨이 생성되며, 상기 VSD드라이브(42)는 이에 대한 정보를 입력받게 될 것이다.
계속해서, VSD드라이브(42)가 설정되면, 운영체제(OS)에서는 해당 가상디스크볼륨에 대한 정보를 요청하게 되고(4), 이에 대응하여 VSD드라이브(42)에서는 앞서 수신된 가상디스크볼륨 정보를 생성한 후, 운영체제(OS)에 전달한다(5). 또한, 상기 운영체제(OS)는 당해 정보를 받아 이에 대한 범위에 상응하는 VSD파일시스템모듈(43)을 설정하여 포맷하고, 새로운 디스크볼륨을 인식하게 된다.(6)
용량가변식 어플리케이션모듈(41)에 대한 특징을 살려 보다 구체적으로 설명한다.
물리적인 하드디스크(10)의 포맷을 통해 운영체제(OS)는 상기 하드디스크를 관리할 수 있는 논리적인 수단인 디스크드라이브(20)와 파일시스템모듈(30)을 설치하게 되고, 상기 운영체제(OS) 또는 어플리케이션모듈(A, A')은 이를 통해 하드디스크(10)에 데이터를 저장하거나 편집 및 검색을 하게 된다.
한편, 본 발명에 따른 접근통제시스템을 설치할 목적으로 상기 용량가변식 VSD이미지파일모듈(41)을 데이터파일(스파스 파일)의 형태로 상기 디스크드라이브(20) 및 파일시스템모듈(30)을 통해 하드디스크(10)에 저장시킨다. 이때, 상기 용량가변식 VSD이미지파일모듈(41)은 인가된 어플리케이션모듈(A)에서 별도의 디스크볼륨으로 인식되어 활용되므로, 상기 VSD드라이브(42)는 용량가변식 VSD이미지파일 모듈(41)에 대한 가상디스크볼륨을 운영체제(OS)에 전달한다.
이때, 상기 가상디스크볼륨 정보는 종래 VSD이미지파일모듈과 같이 하드디스크(10) 상에 실제로 지정된 일정한 크기가 아닌 가상의 크기로서, 실제 하드디스크(10) 상에는 스파스파일 형식으로 저장되어 상기 가상디스크볼륨 정보에 포함된 크기와는 다르게 된다. 한편, 상기 가상디스크볼륨 정보를 받은 운영체제(OS)는 이에 대한 범위에 상응하는 VSD파일시스템모듈(43)을 설정하여 포맷하고 새로운 디스크볼륨을 인식하게 된다.
따라서, 인가된 어플리케이션모듈(A)과 비인가된 어플리케이션모듈(A')에서의 각각의 파일저장 과정은 다음과 같이 이루어지게 된다.
인가된 어플리케이션모듈(A)의 실행으로 보안파일이 발생되면, 이 보안파일을 하드디스크(10)에 저장한다. 그런데, 인가된 어플리케이션모듈(A) 내에서는 도 7b에서와 같이 용량가변식 VSD이미지파일모듈(41)을 독립된 디스크볼륨으로 인식하므로, 사용자는 당해 디스크볼륨을 지정하여 상기 보안파일을 상기 용량가변식 VSD이미지파일모듈(41)의 범위 안에 저장할 수 있게 된다. 물론, 실제 하드디스크(10)는 상기 파일시스템모듈(30)에 의해 제어되므로, 독립된 디스크볼륨으로서의 상기 용량가변식 VSD이미지파일모듈(41)의 포맷범위 내에서 상기 보안파일이 하드디스크(10)의 해당 위치에 지정된다.
반면, 비인가된 어플리케이션모듈(A')의 실행으로 일반파일이 발생되면, 이 일반파일을 하드디스크(10)에 저장한다. 그런데, 비인가된 어플리케이션모듈(A') 내에서는 도 7a에서와 같이 상기 용량가변식 VSD이미지파일모듈(41)을 인식하지 못 하고 있으므로, 사용자는 상기 일반파일을 상기 용량가변식 VSD이미지파일모듈(41) 내에 위치시킬 수 없게 된다.
그런데, 전체 디스크용량이 40GB가 있다 하고 상기 용량가변식 VSD이미지파일모듈(41)이 이중 10GB를 차지한다고 가정할 때, 일반파일이 많이 저장되어 그 용량이 남은 30GB를 초과하게 되는 경우가 있다. 하지만 본 발명에 따른 접근통제시스템은 VSD드라이브(42)를 통해 운영체제(OS)에서 상기 용량가변식 VSD이미지파일모듈(41)을 10GB로 인식하고 있을 뿐, 하드디스크(10)에 물리적으로 상기 용량가변식 VSD이미지파일모듈(41)이 지정되어 있지 않으므로 상기 파일시스템모듈(30)은 하드디스크(10) 상에 잔여공간이 있는 것으로 보아 30GB 이상의 일반파일을 저장할 수 있게 된다.
상기 암복호화모듈(45)은, 상기 용량가변식 VSD이미지파일모듈(41)과 VSD드라이브(42) 간의 데이터 입출력을 암복호화 처리하는 것으로서, 만약 VSD드라이브(42)에서 입출력 데이터를 그대로 용량가변식 VSD이미지파일모듈(41)에 저장한다면 용량가변식 VSD이미지파일모듈(41)을 해당 파일시스템모듈(30) 포멧으로 처리하여 그 속에 있는 보안파일들에 대한 정보가 모두 유출될 수 있기 때문에 VSD드라이브(42)가 용량가변식 VSD이미지파일모듈(41)에 입출력을 수행할 때는 암복호화를 수행해야 된다. 즉, 상기 보안파일은 상기 용량가변식 VSD이미지파일모듈(41) 내에 암호화되어 있지 않기 때문에 정보의 위치를 알 수만 없을 뿐이며 정보는 그대로 들어있어 완전한 보안을 이룰 수 없다.
예를 들어, VSD드라이브(42)에 VSD파일시스템모듈(43)의 WRITE 명령이 전달 되면, WRITE할 데이터를 SECTOR 단위의 크기로 암호화를 수행한 후 용량가변식 VSD이미지파일모듈(41)에 기록하게 되고, READ 명령이 전달되면 용량가변식 VSD이미지파일모듈(41)에서 SECTOR 단위로 읽어서 복호화를 수행한 후 VSD파일시스템모듈(43)로 전달하게 된다.
이렇게 하면 용량가변식 VSD이미지파일모듈(41)이 유출된다 하더라도 파일의 내용이 암호화 되어 있으므로 용량가변식 VSD이미지파일모듈(41) 내의 보안파일이 공개될 수 없게 된다.
본 발명에서는 대칭키방식의 암복호화 방식을 채택하였으며, 대칭키방식에서도 특히 블록방식을 채용하였다. 이러한 블록방식은 디스크의 일섹터(512B) 단위로 블록화하여 암복호화가 수행되도록 된 것이다.
한편, 상기 보안파일(44)은 상기 용량가변식 VSD이미지파일모듈(41)에 저장되는 파일로, 보안이 요구되는 파일이라 하여 보안파일(44)로 명명된 것이다.
또한, 가상디스크라 함은 상기 용량가변식 VSD이미지파일모듈(41)과, VSD드라이브(42)를 아울러 명명된 것이다.
계속해서, 상기 접근통제장치(50)는, 상기 어플리케이션 모듈(60)에 의한 상기 디스크드라이브(20) 및 VSD드라이브(42) 내 저장파일로의 접근 시, 해당 작업이 진행되는 공간이 상기 디스크드라이브(20)인가 VSD드라이브(42)인가를 확인하고, 해당 파일로의 접근허가에 대한 어플리케이션 모듈(60)의 인가여부를 판별하여 접근을 결정하는 것이다.
일반적으로, 윈도우즈(WINDOWS ; 여기서는 NT 계열로 NT3.5, 4.0, 2000, XP 등이 있음)은 어플리케이션 모듈이 어떤 서비스를 요청 받았을 때 시스템 서비스 테이블(SST)을 통하여 서비스를 제공한다. 예를 들어, 어떤 어플리케이션 모듈이 파일을 오픈하거나 레지스트리 키를 오픈할 적에 그 어플리케이션 모듈은 CreateFile()이라는 Win32 API를 사용할 것이다. 이러한 API는 Kernel32.dll에 속해있는 가장 기본적인 함수로 구현되는데, 어플리케이션 모듈(A, A')로부터 CreateFile()(Kernel32.dll)이 호출되면, 운영체제(OS)는 NtCreateFile()(NTDLL.dll)을 거쳐 시스템 서비스 테이블(SST)로 ZwCreateFile()을 제공한다.
도 4a(종래 시스템 서비스 테이블의 구동관계를 도시한 블럭도)를 통해 보이는 바와같이, 어플리케이션 모듈(A, A')이 실행에 필요한 파일로의 접근을 위해 운영체제(OS)로 필요한 함수를 호출하면, 운영체제(OS)는 시스템 서비스 테이블(SST)에 해당 함수를 제공하여 디스크립터(D)를 통해 포인팅되도록 한다. 따라서, 어플리케이션 모듈(A, A')은 운영체제(OS) 하에 호환을 이루며 구현된다.
한편, 본 발명에 따른 접근 통제시스템은, 도 4b(본 발명에 따른 접근 통제시스템에서 적용되는 시스템 서비스 테이블의 구동관계를 도시한 블럭도)에 도시된 바와 같이, 기존의 시스템 서비스 테이블(SST)이 확장된 시스템 서비스 테이블(NSST)로 대체되고, 이에 확장된 서비스 테이블(NST)이 더 포함되면서 도 5(도 4b의 구성에 따라 응용 프로그램(어플리케이션 모듈)에 의한 해당 파일의 접근 허가여부가 진행되는 플로우를 도시한 예제)에 도시된 바에 따른 과정이 수행된다.
어플리케이션 모듈(A, A')이 실행에 필요한 파일로의 접근을 위해 운영체제 (OS)로 필요한 함수를 호출하면, 운영체제(OS)는 해당 함수를 상기 확장된 서비스 테이블(NST)로 제공하여 다음과 같은 연산이 수행되도록 한다.
우선 어플리케이션 모듈(A, A')에서, CreateFile()에 대한 함수를 호출하면, 운영체제(OS)는 NtCreateFile()(ntdll.dll)을 거쳐 확장된 서비스 테이블(NST)로 ZwCreateFile()을 제공한다. 이때, 상기 확장된 서비스 테이블(NST)은 ZwCreateFile()을 OnZwCreateFile()(해당 함수가 진행되지 못하도록 본 발명에서 임의로 설정한 함수)로 일단 변경한 후, 논리를 통해 상기 확장된 시스템 서비스 테이블(NSST)에서의 해당 함수에 대한 연산여부를 결정짓게 된다.
이때, 본 발명에 따른 실시예에서, 상기 OnZwCreateFile() 함수는 어플리케이션 모듈(A, A')이 해당 함수인 CreateFile()을 요청할 경우 상기 확장된 시스템 서비스 테이블(NSST)에 ZwCreateFile()가 곧바로 제공되면서 디스크립터(D)가 포인팅하지 못하도록, 해당 함수인 CreateFile()을 요청할 경우 다음 진행이 상기 확장된 서비스 테이블(NST)의 OnZwCreateFile()로 되도록 번지를 변경한 후, 상기 논리가 진행되도록 하여 상기 논리가 완성되기 전에는 디스크립터(D)에 의한 포인팅이 이루어지지 못하도록 하였다. 여기서 상기 임의로 생성된 OnZwCreateFile()라 함은 본 발명에서 상기 확장된 서비스 테이블(NST)이 더 설치되면서 종래 시스템 서비스 테이블(SST)에 있던 함수가 이미 변경/대체된 것이다.
한편, 상기 논리는 호출되는 상기 함수의 목적이 되는 파일의 위치가 가상디스크(VD)인가 일반디스크(ND)인가에 대한 확인과, 상기 함수를 호출하는 어플리케이션 모듈(A, A')의 인가여부 확인으로써, 예제를 통해 보인 바와 같이, 가상디스 크(VD)로 확인되면, 인가된 어플리케이션 모듈(A)인가를 확인하여 인가된 것일 경우, 상기 확장된 시스템 서비스 테이블(NSST)로 변경 이전의 함수인 ZwCreateFile()를 제공하고, 그렇지 않을 경우에는 해당 함수의 연산을 중지한다.(False) 또한, 앞 단계에서 일반디스크(ND)로 확인되면, 어플리케이션 모듈(A, A')의 인가여부 확인은 생략하고 상기 확장된 시스템 서비스 테이블(NSST)로 변경 이전의 함수인 ZwCreateFile()를 제공한다.
한편, 상기 디스크립터(D)는 상기 시스템 서비스 테이블(SST)이 아닌, 상기 확장된 시스템 서비스 테이블(NSST)로 포인팅 된다.
도 4b에서 시스템 서비스 테이블(SST)과 확장된 시스템 서비스 테이블(NSST)을 연결하고 있는 파선의 화살표는 상기 파일접근에 실질적으로 관여되는 상기 함수들 이외에 어플리케이션 모듈(A, A')의 구현에 필요한 다른 종류의 함수호출 시, 상기 확장된 서비스 테이블(NST)에서의 논리과정없이 해당 함수를 상기 확장된 시스템 서비스 테이블(NSST)에 곧바로 제공하여 함수의 연산을 진행시킬 수 있다.
이상, 상기 접근통제장치(50)는 상술된 과정을 통해 가상디스크(VD) 내에 존재하는 파일에 대한 보안기능을 수행하게 된다.
한편, 상술된 바와 같이, 함수에 의한 보안파일로의 접근이 인가된 어플리케이션 모듈(A) 이외에는 허용되지 않으므로, 본 발명에 따른 가상디스크(VD)는 비인가된 어플리케이션 모듈(A')에 의한 접근시도 시, 도 7a에서와 같이 드라이브 자체가 확인이 되지 않아 애초부터 불가할 뿐만아니라, 도 8(본 발명에 따른 접근 통제시스템의 가상 디스크가 파일로 인식되어지는 모습을 보이는 창)에서와 같이 상기 용량가변식 VSD이미지파일모듈(41)은 열 수 없는 파일형식으로 존재되어 비인가된 어플리케이션 모듈(A')으로는 그 접근이 불가능하게 된다.
도 9는 허가되지 않은 어플리케이션을 통한 가상 디스크로의 접근시 그 시도가 거부됨을 보이는 창으로, 비인가된 어플리케이션 모듈(A') 또는 운영체제(OS) 상에서 파일형식으로 존재하는 상기 용량가변식 VSD이미지파일모듈(41)에 대한 열기를 시도할 경우, 접근이 거부되고 있음을 보이고 있다.
이상, 본 발명에 따른 접근 통제시스템의 구성을 보았으며, 이하에서는 이를 통한 통제 방법에 대해 설명한다.
이하에서 기재되는 함수인 ReadFile() 및 WriteFile()은, 상기 CreateFile() 함수가 읽기모드 또는 쓰기모드로 전환/실행될 때 호출되는 함수로서, 본 발명에 따른 접근 통제시스템 하에서 보안파일에 대한 읽기 및 쓰기의 통제방법이 각각 명확히 구분되도록 각 모드별로 해당 함수를 구분하여 기술하였다.
참고로, 어플리케이션 모듈을 통해 임의의 파일로 접근하기 위해서는 파일 핸들러인 CreateFile()을 우선적으로 호출하게 되며, CreateFile() 호출에 의해 제공되는 ZwCreateFile()가 상기 ReadFile() 또는 WriteFile()를 각각 호출하면서 읽기모드 또는 쓰기모드로 실행되고, 이로인해 어플리케이션 모듈에서 해당 파일의 읽기 또는 쓰기가 진행된다.
상기 어플리케이션 모듈을 선택적으로 인가하는 단계(1);
가상디스크(VD)에 접근할 수 있는 어플리케이션 모듈(60)을 지정하여 인가하는 단계이다. 어플리케이션 모듈(60)의 인가방식에 대한 실시예는 상술된 바 있으므로 여기서는 그 설명을 생략하기로 한다.
상기 어플리케이션 모듈(60)이 해당 파일로의 접근을 위해 함수를 호출하는 단계(2);
도 6a(본 발명에 따른 접근 통제시스템에서 응용 프로그램을 통한 해당 파일의 읽기과정을 도시한 플로우차트)에서, 시작(어플리케이션 모듈의 디스크 읽기 시도) 부분에 해당하는 것으로, 어플리케이션 모듈(60)이 구현에 필요한 파일의 읽기를 요청하고 이를 위해 ReadFile() 함수를 호출하는 단계이다.
상기 함수를 변경하여 대기상태로 하는 단계(3);
상기 단계(2)가 진행되면, 상기 접근통제장치(50)에 포함된 확장된 서비스 테이블(NST)로 상기 함수가 제공되되, 확장된 서비스 테이블(NST)은 상기 ReadFile()함수를 OnZwReadFile()로 변경하여 어플리케이션 모듈(60)의 실행에 요구되는 논리를 진행한다.
상기 파일로의 접근공간이 상기 디스크드라이브인지 VSD드라이브인지를 확인하는 단계(4);
여기서는 가상디스크인지 여부를 확인하는 과정으로, 도 6a 상의 (S1)에 해당된다.
상기 단계(4)에서 디스크드라이브로 확인될 경우, 연산이 불가능하도록 변경된 함수를 원래의 함수로 복귀시켜 제공하는 단계(5);
상기 파일이 위치하는 공간이 디스크드라이브(20)로 확인되면, 상기 확장된 서비스 테이블(NST)은 OnZwReadFile() 함수의 변경 전 함수인 ZwReadFile()를 상기 확장된 시스템 서비스 테이블(NSST)로 제공하여 해당 함수의 연산을 속행하게 되고, 이로인해 해당 파일에 대한 읽기를 허용한다.(S4)
상기 단계(4)에서 VSD드라이브로 확인될 경우, 상기 어플리케이션 모듈의 접근이 인가된 것인가를 확인하는 단계(6);
반면, VSD드라이브(42)로 확인되면, 그 다음 논리로서 상기 어플리케이션 모듈(60)이 인가된 어플리케이션 모듈인지 여부를 확인한다.(S2)
상기 단계(6)에서 인가된 것으로 확인될 경우, 연산이 불가능하도록 변경된 함수를 원래의 함수로 복귀시켜 제공하는 단계(7);
상기 어플리케이션 모듈(60)이 인가된 어플리케이션 모듈으로 확인되면, 상기 확장된 서비스 테이블(NST)은 OnZwReadFile() 함수의 변경 전 함수인 ZwReadFile()를 상기 확장된 시스템 서비스 테이블(NSST)로 제공하여 해당 함수의 연산을 속행하게 되고, 이로인해 해당 파일에 대한 읽기를 허용한다.(S4)
상기 단계(6)에서 비인가된 것으로 확인될 경우, 해당 함수의 연산을 중지하는 단계(8);
반면, 어플리케이션 모듈이 비인가된 것으로 확인되면, 상기 확장된 시스템 서비스 테이블(NSST)에서의 해당함수에 대한 연산이 중지되어 읽기가 불허된다.(S3)
계속해서, 상기 함수가 WriteFile()일 경우에는 상기 단계(5)의 과정에 있어 서, 이하의 단계가 더 포함된다. 이는 도 6b(본 발명에 따른 접근 통제시스템에서 응용 프로그램을 통한 해당 파일의 쓰기과정을 도시한 플로우차트)와 더불어 설명한다. 이때, 상기 함수인 WriteFile()는 확장된 서비스 테이블(NST)에서 OnZwWriteFile() 변경된다.
상기 어플리케이션 모듈의 인가여부를 확인하는 단계(5-1);
디스크드라이브(20)로 확인된 상태에서, 해당 함수를 호출하는 어플리케이션 모듈(60)이 인가된 어플리케이션 모듈인지 여부를 확인한다.(S30)
상기 단계(5-1)에서 인가된 것으로 확인될 경우, 해당 함수의 연산을 중지하는 단계(5-2);
상기 단계(5-1)에서 인가된 어플리케이션 모듈으로 확인되면, 상기 확장된 서비스 테이블(NST)은 확장된 시스템 서비스 테이블(NSST)에서의 해당 함수에 대한 연산이 중지되어 쓰기가 불허된다.(S31)
상기 단계(5-2)에서 비인가된 것으로 확인될 경우, 연산이 불가능하도록 변경된 함수를 원래의 함수로 복귀시켜 제공하는 단계(5-3);
상기 단계(5-1)에서 비인가된 어플리케이션 모듈으로 확인되면, 상기 확장된 서비스 테이블(NST)은 OnZwWriteFile()의 변경 전 함수인 ZwWriteFile()로 복귀시켜 상기 확장된 시스템 서비스 테이블(NSST)로 제공하고, 이를 디스크립터(D)가 포인팅함으로서, 해당 함수의 연산을 통한 쓰기가 허용된다.(S40)
읽기 함수에 대한 통제 방법에 쓰기 함수에 대한 통제 방법의 상기 단계가 더 포함되어야 하는 이유는 상술한 바 있으므로 여기서는 생략하기로 한다.
한편, 상술한 바와 같이, 상기 용량가변식 VSD이미지파일모듈(41)은 기존 디스크볼륨에 파일형식으로 위치되고 있으므로, 용량가변식 VSD이미지파일모듈(41) 만을 카피하거나 잘라내기를 한 후 기존의 파일시스템모듈(30)을 통해 접근하여 유출시킬 수도 있으므로, 상기 암복호화모듈(45)을 통해 상기 용량가변식 VSD이미지파일모듈(41)과 VSD드라이브(42) 간의 데이터 입출력을 암복호화 하는 단계가 더 포함되어야 한다.