클립보드(Clipboard)는 동일한 어플리케이션 또는 서로 다른 어플리케이션에서 구동하는 파일 내 임의 데이터를 복사하거나 붙여넣기 할 때 데이터가 임시로 저장되는 메모리 공간이다. 이러한 클립보드를 이용한 데이터의 복사 및 추출은 마이크로소프트사의 윈도우즈나 애플의 매킨토시와 같은 운영체계에서 기본적으로 제공되는 기능이다. 클립보드를 이용한 데이터의 복사 및 추출 기능은 디지털 저작권 관리(Digital Rights Management : DRM)가 적용되는 시스템에서 데이터의 유출을 방지하기 위한 관리해야 하는 대상 중 하나이다. 예를 들어, DRM이 적용된 문서에 대해 사용자에게 허용된 권한을 넘어서는 임의의 데이터 이동, DRM 시스템 내부에서의 데이터 이동 등이 시도되면, DRM이 적용된 문서와 관련된 데이터의 이동을 차단할 필요가 있다.
도 1은 마이크로소프트사의 윈도우즈 시스템에서 클립보드에 정보를 저장하는 과정을 도시한 도면이다.
도 1을 참조하면, 클립보드에의 정보 저장은 어플리케이션, 시스템 및 전역 메모리의 상호 작용을 통해 이루어진다. 먼저 어플리케이션이 GlobalAlloc() 함수를 이용하여 시스템으로 전역 메모리의 할당을 요청하면(S100), 시스템은 Handle() 함수를 이용하여 어플리케이션에 이에 대한 핸들을 제공한다(S105). 다음으로 어플리케이션은 GlobalLock() 함수를 이용하여 시스템에 전역 메모리의 고정을 요청하고(S110), 시스템은 이에 응답하여 할당된 전역 메모리의 포인터를 반환한다(S115). 다음으로 어플리케이션은 반환된 포인터를 이용하여 할당된 전역 메모리에 데이터를 복사한다(S120). 다음으로 어플리케이션은 OpenClipboard(), EmptyClipboard(), SetClipboardData(), CloseClipboard() 등의 함수를 순차적으로 이용하여 시스템에 클립보드 데이터의 기록을 요청하며(S125 내지 S140), 최종적으로 GlobalUnlock() 함수를 이용하여 시스템에 전역 메모리의 해제를 요청한다(S145). 도 2에는 클립보드에 저장되는 데이터가 도시되어 있다.
도 3은 마이크로소프트사의 윈도우즈 시스템에서 클립보드로부터 데이터를 가져오는 과정을 도시한 도면이다.
도 3을 참조하면, 클립보드로부터 정보를 가져오는 동작은 IsClipboardFormatAvailable() 함수를 이용하여 현재의 클립보드에 어플리케이션에서 처리 가능한 클립보드 포맷이 존재하는지 여부를 확인하는 것으로부터 시작한다(S300). 다음으로 어플리케이션은 OpenClipboard() 함수를 이용하여 시스템에 클립보드 열기를 요청한다(S305). 이어서 어플리케이션은 GetClipboardData() 함수를 이용하여 시스템에 클립보드에 저장되어 있는 데이터의 제공을 요청하며(S310), 이에 응답하여 시스템은 시스템은 Handle() 함수를 이용하여 어플리케이션에 이에 대한 핸들을 제공한다(S315). 다음으로 어플리케이션은 GlobalLock() 함수를 이용하여 시스템에 전역 메모리의 고정을 요청하고(S320), 시스템은 이에 응답하여 할당된 전역 메모리의 포인터를 반환한다(S325). 다음으로 어플리케이션은 반환된 포인터를 이용하여 할당된 전역 메모리로부터 데이터를 독출한다(S330). 다음으로 어플리케이션은 GlobalUnlock() 함수를 이용하여 시스템에 전역 메모리의 해제를 요청하고(S335), CloseClipboard() 함수를 이용하여 시스템에 클립보드의 닫기를 요청한다(S340).
도 1 내지 도 3을 참조하여 설명한 바와 같이 클립보드에 대한 데이터의 저장 및 추출은 어플리케이션과 시스템 사이에서 클립보드와 관련된 API 함수를 통해 이루어지며, 이 과정에서 클립보드에 저장되어 있는 데이터가 유출될 가능성이 존재한다. 본 출원인은 이러한 클립보드 데이터의 유출을 방지하기 위해 클립보드에 저장될 데이터 또는 객체 중에서 DRM이 적용된 데이터 또는 객체를 암호화하여 클립보드에 저장하는 기법을 제시한 바 있으며, 이는 한국특허등록번호 제10-0928467호로 등록된 바 있다. 이러한 출원인의 특허발명은 다양한 객체 중에서 디지털 저작권 관리(Digital Rights Management : DRM)가 적용된 객체인 신뢰 객체에 의한 클립보드에의 데이터 저장 및 읽기시에는 데이터를 암호화 및 복호화함으로써 DRM이 적용되지 않은 객체인 비신뢰 객체에 의한 접근을 방지하는 구성을 가지고 있다. 이때 객체는 클립보드로부터 데이터를 추출하여 붙여 넣을 수 있는 동작을 수행하는 독립적인 대상으로서, 일차적으로 각각의 어플리케이션에 대응하는 프로세스를 의미하나, 각각의 프로세스에 의해 관리되는 문서, 서브 윈도우, 문서 내의 이미지/텍스트/동영상 등이 될 수 있다. 이하의 설명에서도 객체는 동일한 의미로 사용된다. 그러나 출원인의 특허발명은 비신뢰 객체로부터 클립보드에 저장되어 있는 암호화된 데이터에 대한 접근 자체를 차단하고 있지 아니하므로, 비신뢰 객체에 의한 클립보드 데이터의 요청시 비신뢰 객체에 암호화된 데이터를 제공하게 된다. 이 경우 비신뢰 객체에 따라 암호화된 데이터의 출력시 프로그램이 다운되거나 예기치않은 상황이 발생하는 문제가 존재한다.
도 1은 마이크로소프트사의 윈도우즈 시스템에서 클립보드에 정보를 저장하는 과정을 도시한 도면,
도 2는 클립보드에 저장되는 데이터를 도시한 도면,
도 3은 마이크로소프트사의 윈도우즈 시스템에서 클립보드로부터 데이터를 가져오는 과정을 도시한 도면,
도 4는 본 발명에 따른 DRM 환경에서의 객체, 클립보드 보호 시스템, 클립보드 관리 시스템 및 클립보드 사이의 관계를 도시한 도면,
도 5는 본 발명에 따른 클립보드 보호 시스템에 대한 바람직한 제1실시예의 구성을 도시한 도면,
도 6은 본 발명에 따른 클립보드 보호 시스템(400)에 의해 식별정보 변환 및 데이터 암호화가 적용된 이후에 클립보드(420)에 저장되는 데이터를 도시한 도면,
도 7은 본 발명에 따른 클립보드 보호 시스템(400)에 의해 클립보드(420)에 저장되는 보안 데이터와 키정보를 도시한 도면,
도 8은 본 발명에 따른 클립보드 보호 시스템(400)에 의해 클립보드(420)에 저장되는 보안 데이터, 키정보 및 부가 데이터를 도시한 도면,
도 9는 본 발명에 따른 클립보드 보호 방법에 있어서 데이터를 클립보드에 저장하는 과정을 도시한 도면,
도 10은 본 발명에 도 9에 도시된 데이터 식별정보의 변환 및 데이터의 암호화와 관련된 제1실시예의 수행과정을 도시한 도면,
도 11은 본 발명에 도 9에 도시된 데이터 식별정보의 변환 및 데이터의 암호화와 관련된 제2실시예의 수행과정을 도시한 도면,
도 12는 본 발명에 따른 클립보드 보호 방법에 있어서 클립보드에 저장되어 있는 데이터의 읽기 동작과 관련된 제1실시예의 수행과정을 도시한 도면, 그리고,
도 13은 본 발명에 따른 클립보드 보호 방법에 있어서 클립보드에 저장되어 있는 데이터의 읽기 동작과 관련된 제2실시예의 수행과정을 도시한 도면이다.
이하에서 첨부된 도면들을 참조하여 본 발명에 따른 DRM 환경에서의 클립보드 보호 시스템 및 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체의 바람직한 실시예에 대해 상세하게 설명한다.
도 4는 본 발명에 따른 DRM 환경에서의 객체, 클립보드 보호 시스템, 클립보드 관리 시스템 및 클립보드 사이의 관계의 구성을 도시한 도면이다.
도 4를 참조하면, 본 발명에 따른 클립보드 보호 시스템(400)은 신뢰 객체와 클립보드 관리 시스템(410) 사이에 위치하여 DRM이 적용되는 신뢰 객체로부터 입력되는 클립보드(420)에의 데이터 저장 및 읽기 동작을 수행한다. 클립보드 관리 시스템(410)은 운영시스템에서 기본적으로 제공하는 클립보드 기능을 수행하기 위한 구성요소로서, DRM이 적용되지 않은 비신뢰 객체 및 클립보드 보호 시스템(400)에 의한 클립보드 사용요청(즉, 클립보드에의 데이터 저장 요청 및 클립보드로부터의 데이터 읽기 요청)에 따른 동작을 수행한다. 본 발명에 따른 클립보드 보호 시스템(400)은 기본적으로 API 후킹 함수에 의해 구현된다. 나아가 본 발명에 따른 클립보드 보호 시스템(400)은 클립보드 보호 기능을 구현한 소프트웨어가 로딩된 컴퓨터와 같은 정보처리장치를 의미할 수 있다. 도 4에 도시된 시스템에 있어서 신뢰 객체와 비신뢰 객체의 구분은 DRM을 처리하는 DRM 모듈(미도시)에 의해 수행되며, 클립보드 보호 시스템(400)은 DRM모듈의 처리결과를 기초로 신뢰 객체와 비신뢰 객체를 식별한다.
도 4에 도시된 바와 같이 비신뢰 객체에 의한 클립보드 접근은 운영시스템이 제공하는 클립보드 관리 시스템(410)에 의해 수행되며, 신뢰 객체에 의한 클립보드 접근은 클립보드 보호 시스템(400)에 의해 수행된다. 만약 클립보드 보호 시스템(400)이 API 후킹 함수로 구현되면, 클립보드 보호 시스템(400)은 DRM 모듈의 구동시 또는 운영 시스템의 구동시 함께 구동된다. 또한 클립보드(420)에 접근하고자 하는 객체가 신뢰 객체인지 비신뢰 객체인지 여부에 대한 확인은 기본적으로 DRM 모듈에 의해 수행되나, 이러한 확인기능은 클립보드 보호 시스템(400)에 의해 수행될 수도 있다. 나아가 클립보드 보호 시스템(400)은 신뢰 객체에 의한 클립보드 접근시 클립보드(420)와 관련된 함수(특히, SetClipboardData()와 GetClipboardData() 함수)를 후킹하여 필요한 과정을 수행한 후 클립보드 관리 시스템(410)에 처리결과를 전달한다.
클립보드 관리 시스템(410)은 객체로부터 입력된 클립보드(420)에 데이터의 저장을 지시하는 함수(예를 들면, 윈도우즈 운영시스템에서 제공하는 SetClipboardData())에 포함되어 있는 데이터 식별정보 또는 클립보드 보호 시스템(400)으로부터 입력된 클립보드(420)에의 데이터 저장 함수에 포함되어 있는 데이터 식별정보에 연계시켜 클립보드(420)에 데이터를 저장한다. 이때 객체로부터 입력된 식별정보는 클립보드(420)에 저장되는 데이터에 대해 객체가 부여한 데이터 형식에 대한 식별자로서 운영 시스템에서 기본적으로 제공하는 CF_TEXT, CF_OEMTEXT, CF_UNICODETEXT 등과 같은 표준 클립보드 포맷(Standard Clipboard Format)이거나 사용자가 임의로 작성하여 등록한 사용자 등록 클립보드 포맷(Registered Clipboard Format)이다. 그리고 클립보드 보호 시스템(400)으로부터 입력된 식별정보는 클립보드 보호 시스템(400)이 객체로부터 입력된 클립보드(420)에의 데이터 저장 함수에 포함되어 있는 데이터 식별정보를 사용자 등록 클립보드 포맷으로 변환한 식별정보이다. 한편 클립보드 관리 시스템(410)은 객체 또는 클립보드 보호 시스템(400)으로부터 입력된 클립보드(420)로부터 데이터의 읽기를 지시하는 함수(예를 들면, 윈도우즈 운영 시스템에서 제공하는 IsClipboardDataAvailable()과 GetClipboardData())에 포함되어 있는 식별정보를 기초로 클립보드(420)로부터 읽기대상 데이터를 독출하여 객체 또는 클립보드 보호 시스템(400)에 제공한다.
도 5는 본 발명에 따른 클립보드 보호 시스템에 대한 바람직한 실시예의 구성을 도시한 도면이다.
도 5를 참조하면, 본 발명에 따른 클립보드 보호 시스템에 대한 바람직한 실시예(400)는 식별정보 관리부(510), 데이터 보호부(520) 및 제어부(530)로 구성된다.
식별정보 관리부(510)는 클립보드(420)에 저장될 보안 데이터에 고유하게 부여된 제1식별정보를 사전에 설정되어 있는 제2식별정보로 변경한다. 이때 제1식별정보는 운영 시스템에서 클립보드 데이터의 형식에 따라 기본적으로 제공하는 CF_TEXT, CF_OEMTEXT, CF_UNICODETEXT 등과 같은 표준 클립보드 포맷이거나 사용자가 임의로 작성하여 등록한 사용자 등록 클립보드 포맷이다. 식별정보 관리부(510)는 이와 같은 제1식별정보를 클립보드 보호 시스템(400)에서 고유하게 설정된 별도의 식별정보인 제2식별정보로 변환한다. 이때 클립보드 관리 시스템(410)이 제2식별정보를 인식하기 위해서는 제2식별정보는 사용자 등록 클립보드 포맷의 형태를 가져야 한다. 또한 식별정보 관리부(510)는 클립보드(420)에 기록되어 있는 데이터에 대한 읽기 요청이 입력되면, 읽기대상 데이터의 식별정보에 대응하는 제2식별정보를 출력한다. 한편 식별정보 관리부(510)는 제1식별정보와 제2식별정보 사이의 대응관계를 별도의 매핑 테이블에 기록하여 관리할 수 있다. 이는 클립보드(420)에 저장되는 데이터가 복수 개(즉, 보안 데이터와 키정보, 보안데이터와 로케일 데이터 등)인 경우에 각각의 데이터에 대응하는 제1식별정보와 제2식별정보를 구분하기 위함이다. 이와 같이 매핑 테이블을 생성하는 경우에 식별정보 관리부(510)는 제어부(530)로부터 입력된 제1식별정보에 대응하는 제2식별정보를 검색하여 제어부(530)에 제공하는 기능을 수행한다.
일예로, DRM이 적용된 마이크로소프트사의 워드 프로그램은 신뢰 객체에 해당된다. 만약 마이크로소프트사의 워드 프로그램이 실행되어 특정한 문서가 열린 상태에서 사용자가 문서 내의 특정한 텍스트에 대한 복사를 요청하면, 워드 프로그램은 클립보드 관리 시스템(410)과의 사이에서 도 1에 도시된 절차에 따라 해당 데이터를 클립보드(420)에 저장하는 동작을 수행한다. 이 과정에서 본 발명에 따른 클립보드 보호 시스템(400)은 워드 프로그램이 클립보드(420)에 데이터를 저장하기 위해 출력한 SetClipboardData() 함수를 후킹하여 식별정보의 변환 및 데이터를 암호화한 후 결과를 클립보드 관리 시스템(410)으로 출력한다. 이때 클립보드 보호 시스템(400)이 SetClipboardData() 함수의 변수로서 설정하는 값은 변환된 제2식별정보와 암호화된 데이터가 저장되어 있는 전역 메모리의 핸들이다. 그리고 워드 프로그램이 출력한 클립보드 관련 함수의 후킹은 워드 프로그램의 구동 또는 운영 시스템의 구동에 동기되어 동작하도록 설정된 후킹 함수에 의해 수행되거나 제어부(530)에 의해 수행될 수 있다. 일단 SetClipboardData() 함수가 후킹되면, 식별정보 관리부(510)는 SetClipboardData() 함수의 변수인 데이터 식별정보(예를 들면, 표준 클립보드 포맷인 CF_TEXT)를 고유하게 설정되어 있는 별도의 식별정보(예를 들면, 사용자 등록 클립보드 포맷인 DRM_CR_TEXT)로 변환한다.
한편 DRM이 적용된 어플리케이션인 마이크로소프트사의 워드 프로그램이 실행되어 특정한 문서가 열린 상태에서 사용자가 클립보드(420)에 저장되어 있는 데이터의 읽기를 요청하면, 워드 프로그램은 클립보드 관리 시스템(410)과의 사이에서 도 2에 도시된 절차에 따라 클립보드로부터 해당 데이터를 읽어오는 동작을 수행한다. 이 과정에서 본 발명에 따른 클립보드 보호 시스템(400)은 워드 프로그램이 클립보드(420)에 필요한 데이터가 존재하는지 여부를 확인하기 위해 출력한 IsClipboardData() 함수를 후킹한 후 클립보드 관리 시스템(410)에 동일한 함수를 출력한다. 만약 클립보드 관리 시스템(410)으로부터 해당 데이터가 존재한다는 응답이 입력되면, 클립보드 보호 시스템(400)은 워드 프로그램이 클립보드(420)로부터 데이터를 읽어 오기 위해 출력한 GetClipboardData() 함수를 후킹하지 않거나, 후킹한 후에 그대로 클립보드 관리 시스템(410)으로 출력한다. 이와 달리 클립보드 관리 시스템(410)으로부터 해당 데이터가 존재하지 않는다는 응답이 입력되면, 클립보드 보호 시스템(400)은 워드 프로그램이 클립보드(420)로부터 데이터를 읽어 오기 위해 출력한 GetClipboardData() 함수를 후킹한다. 이어서 식별정보 관리부(510)는 GetClipboardData() 함수의 변수인 식별정보를(예를 들면, 표준 클립보드 포맷인 CF_TEXT)를 고유하게 설정되어 있는 별도의 식별정보(예를 들면, 사용자 등록 클립보드 포맷인 DRM_CR_TEXT)로 변환한다.
데이터 보호부(520)는 클립보드(420)에 저장될 보안 데이터를 암호화하여 출력하고, 클립보드(420)로부터 독출된 암호화된 데이터를 복호하여 출력한다. 이러한 데이터 보호부(520)는 DRM 모듈(미도시)와 연계되어 동작한다. 즉, 데이터 보호부(520)가 데이터를 암호화하거나 복호화가기 위해 필요한 암호키는 DRM 모듈로부터 얻는다. 한편 암호키에 대한 정보는 클립보드(420)에 저장되는 데이터에 추가되어 클립보드(420)에 저장될 수 있다.
제어부(530)는 본 발명에 따른 클립보드 보호 시스템(400)의 전반적인 동작을 제어한다. 즉, 제어부(530)는 신뢰 객체에 의한 클립보드(420)에의 데이터 저장 요청에 관련된 API 함수(즉, SetClipboardData())와 클립보드(420)로부터의 데이터 읽기 요청에 관련된 함수(즉, IsClipboardDataAbailable()과 GetClipboardData())를 후킹하고, 식별정보 관리부(510)와 데이터 보호부(520)의 동작을 제어한다. 특히, 제어부(530)는 신뢰 객체에 의해 클립보드(420)로부터의 데이터 읽기 요청시 신뢰 객체가 출력한 IsClipboardData() 함수를 후킹한 후 클립보드 관리 시스템(410)에 그대로 전달하고, 클립보드 관리 시스템(410)으로부터의 응답 상태(즉, 해당 데이터의 존재 또는 비존재)에 따라 상이한 절차를 수행한다. 만약 클립보드 관리 시스템(410)으로부터 해당 데이터가 존재한다는 응답이 입력되면, 제어부(530)는 신뢰 객체가 클립보드(420)로부터 데이터를 읽어 오기 위해 출력한 GetClipboardData() 함수를 그대로 클립보드 관리 시스템(410)에 전달한다. 이와 달리 클립보드 관리 시스템(410)으로부터 해당 데이터가 존재하지 않는다는 응답이 입력되면, 제어부(530)는 식별정보 관리부(510)에 후킹한 GetClipboardData() 함수의 변수인 식별정보에 해당하는 제2식별정보의 제공을 요청한다. 그리고 식별정보 관리부(510)로부터 제공된 제2식별정보를 클립보드 관리 시스템(410)에 전달하여 클립보드(420)에 저장되어 있는 데이터의 독출을 요청한다. 도 6에는 본 발명에 따른 클립보드 보호 시스템(400)에 의해 식별정보 변환 및 데이터 암호화가 적용된 이후에 클립보드(420)에 저장되는 데이터가 도시되어 있다.
한편 본 발명에 따른 클립보드 보호 시스템(400)은 데이터의 보호를 위해 식별정보의 변환 및 데이터의 암호화를 수행하여 클립보드(420)에 저장하는 동작에 더해 암호화된 데이터의 복호화를 위해 별도의 키정보를 추가적으로 클립보드(420)에 저장할 수 있다. 이러한 키정보는 암호화 키 자체이거나 암호화 키를 획득할 수 있는 정보가 될 수 있다. 예를 들어, PKI 기반의 암호화가 적용될 경우에는 인증서의 식별명(Distinguished Name) 또는 인증서 아이디이고, 키 풀을 이용하는 경우에는 암호키의 풀 아이디이며, Diffe-Helman 및 이를 응용한 키 교환 방식의 암호화가 적용될 경우에는 키 생성 팩터이다. 따라서 클립보드 보호 시스템(400)은 DRM 모듈로부터 얻은 키정보에 대해 사전에 설정되어 있는 제2식별정보를 부여한 후 키정보를 클립보드(420)에 저장한다. 이러한 키정보의 획득은 별도의 키관리부(미도시)에 의해 수행되거나 데이터 보호부(530)에 의해 수행되며, 키정보의 저장은 데이터 보호부(530)에 의해 수행된다. 도 7에는 본 발명에 따른 클립보드 보호 시스템(400)에 의해 클립보드(420)에 저장되는 보안 데이터와 키정보가 도시되어 있다.
또한 본 발명에 따른 클립보드 보호 시스템(400)은 데이터의 보호를 위해 식별정보의 변환 및 데이터의 암호화를 수행하여 클립보드(420)에 저장하는 동작에 더해 포맷 변환된 부가적인 데이터를 클립보드(420)에 저장할 수 있다. 일반적으로 운영시스템은 시스템에서 사용되는 형식의 식별정보를 갖는 데이터가 입력되는 경우에 이에 더해 다른 형식의 식별정보를 갖는 데이터를 추가적으로 생성하여 클립보드(420)에 함께 저장한다. 예를 들어 CF_TEXT 형태의 데이터가 입력되면 클립보드 관리 시스템(410)은 CF_TEXT 정보를 기반으로 CF_LOCALE, CF_OEMTEXT 및 CF_UNICODETECT 형식의 데이터를 자동으로 생성하여 클립보드(420)에 저장한다. 그런데 보안 데이터를 암호화하면 이와 같은 자동 변환기능이 지원되지 않는다. 따라서 데이터의 보호기능을 유지하면서 운영시스템에서 제공하는 기본적인 변환기능을 구현하기 위해 클립보드 보호 시스템(400)은 암호화되기 전의 보안 데이터를 다른 형태의 데이터로 변환하고, 해당 데이터에 대해 사전에 설정되어 있는 제2식별정보를 부여한 후 암호화하여 클립보드(420)에 저장한다. 이러한 데이터의 변환 및 저장은 별도로 구비된 부가 데이터 생성부(미도시)에 의해 수행되거나 데이터 보호부(530)에 의해 수행된다. 도 8에는 본 발명에 따른 클립보드 보호 시스템(400)에 의해 클립보드(420)에 저장되는 보안 데이터, 키정보 및 부가 데이터가 도시되어 있다.
도 9는 본 발명에 따른 클립보드 보호 방법에 있어서 데이터를 클립보드에 저장하는 과정을 도시한 도면이다.
도 9를 참조하면, 어플리케이션으로부터 클립보드(410)에의 데이터 저장이 요청되면(S900), DRM 모듈은 데이터의 저장을 요청한 어플리케이션이 신뢰 객체인지 비신뢰 객체인지 확인한다(S910). 만약 해당 어플리케이션이 신뢰 객체로 확인되면, 클립보드 보호 시스템(400)은 데이터 식별정보의 변환 및 데이터의 암호화를 수행한다(S920). 그리고 클립보드 관리 시스템(410)은 식별정보 변환 및 데이터 암호화가 수행된 결과를 입력받아 클립보드(420)에 저장한다(S930). 이와 달리 해당 어플리케이션이 신뢰 객체로 확인되면, 클립보드 보호 시스템(400)을 거치지 않고 클립보드 관리 시스템(410)에 의해 곧바로 클립보드(420)에 데이터가 저장된다(S930).
도 10은 본 발명에 도 9에 도시된 데이터 식별정보의 변환 및 데이터의 암호화와 관련된 제1실시예의 수행과정을 도시한 도면이다. 도 10에 도시된 제1실시예는 신뢰 객체에 의한 모든 데이터에 대해 식별정보의 변환 및 데이터의 암호화를 수행하는 경우이다.
도 10을 참조하면, 클립보드에 저장될 데이터가 입력되면(S1000), 클립보드 보호 시스템(400)은 클립보드에 저장될 보안 데이터에 고유하게 부여된 제1식별정보(예를 들면, CF_TEXT)를 사전에 설정되어 있는 제2식별정보(예를 들면, DRM_CR_TEXT)로 변경한 후 제1식별정보와 제2식별정보의 대응관계가 기록된 매핑 테이블을 생성한다(S1010). 다음으로 클립보드 보호 시스템(400)은 보안 데이터에 대해 설정되어 있는 DRM 정보에 기초하여 DRM 모듈로부터 보안용 키를 획득한다(S1020). 다음으로 클립보드 보호 시스템(400)은 보안용 키에 의해 클립보드(420)에 저장될 보안 데이터를 암호화한다(S1030). 다음으로 클립보드 보호 시스템(400)은 제2식별정보와 암호화된 보안 데이터를 클립보드 관리 시스템(410)으로 전달하고, 클립보드 관리 시스템(410)은 전달받은 제2식별정보에 연계하여 암호화된 보안 데이터를 클립보드(420)에 기록한다(S1040).
도 11은 본 발명에 도 9에 도시된 데이터 식별정보의 변환 및 데이터의 암호화와 관련된 제2실시예의 수행과정을 도시한 도면이다. 도 10에 도시된 제2실시예는 신뢰 객체에 의한 데이터 중에서 보호가 필요한 보안 데이터에 대해서만 식별정보의 변환 및 데이터의 암호화를 수행하는 경우이다.
도 11을 참조하면, 클립보드(420)에 저장될 데이터가 입력되면(S1100), 클립보드 보호 시스템(400)은 해당 데이터가 보호가 요구되는 보안 데이터인지 확인한다(S1110). 일예로 마이크로소프트사의 워드 프로그램에 대해 DRM이 적용되는 경우에 워드 프로그램에 로딩된 문서 중에서 DRM이 적용된 문서와 DRM이 적용되지 않은 문서가 모두 존재할 수 있다. 이 경우 DRM이 적용된 문서는 보안 데이터로 분류되고, DRM이 적용되지 않은 문서는 비보안 데이터로 분류된다. 만약 입력된 데이터가 보안 데이터로 확인되면, 클립보드 보호 시스템(400)은 클립보드에 저장될 보안 데이터에 고유하게 부여된 제1식별정보(예를 들면, CF_TEXT)를 사전에 설정되어 있는 제2식별정보(예를 들면, DRM_CR_TEXT)로 변경한 후 제1식별정보와 제2식별정보의 대응관계가 기록된 매핑 테이블을 생성하여 관리한다(S1120). 다음으로 클립보드 보호 시스템(400)은 보안 데이터에 대해 설정되어 있는 DRM 정보에 기초하여 DRM 모듈로부터 보안용 키를 획득한다(S1130). 다음으로 클립보드 보호 시스템(400)은 보안용 키에 의해 클립보드(420)에 저장될 보안 데이터를 암호화한다(S1140). 다음으로 클립보드 보호 시스템(400)은 제2식별정보와 암호화된 보안 데이터를 클립보드 관리 시스템(410)으로 전달하고, 클립보드 관리 시스템(410)은 전달받은 제2식별정보에 연계하여 암호화된 보안 데이터를 클립보드(420)에 기록한다(S1150). 이와 달리 입력된 데이터가 비보안 데이터로 확인되면, 클립보드 보호 시스템(400)은 비보안 데이터의 식별정보와 비보안 데이터를 클립보드 관리 시스템(410)으로 전달한다. 그리고 클립보드 관리 시스템(410)은 전달받은 식별정보에 연계하여 평문의 비보안 데이터를 클립보드(420)에 기록한다(S1160).
도 12는 본 발명에 따른 클립보드 보호 방법에 있어서 클립보드에 저장되어 있는 데이터의 읽기 동작과 관련된 제1실시예의 수행과정을 도시한 도면이다.
도 12를 참조하면, 어플리케이션으로부터 클립보드에 저장되어 있는 데이터의 읽기 요청이 입력되면(S1200), DRM 모듈은 해당 어플리케이션이 신뢰 객체인지 여부를 확인한다(S1205). 만약 신뢰 객체로 확인되면, 클립보드 보호 시스템(400)은 클립보드 관리 시스템(410)에 읽기 요청된 읽기대상 데이터의 식별정보가 존재하는지를 확인한다(S1210). 이에 대해 클립보드 관리 시스템(410)으로부터 읽기 대상 데이터의 식별정보가 존재한다는 응답이 입력되면(S1215), 클립보드 보호 시스템(400)은 읽기대상 데이터의 식별정보를 클립보드 관리 시스템(410)에 전달하고, 클립보드 관리 시스템(410)은 클립보드(420)에 저장되어 있는 평문의 데이터를 어플리케이션에 제공한다(S1245). 이와 달리 클립보드 관리 시스템(410)으로부터 읽기 대상 데이터의 식별정보가 존재하지 않는다는 응답이 입력되면(S1215), 클립보드 보호 시스템(400)은 읽기 요청된 데이터의 식별정보를 제2식별정보로 변환한 후 읽기대상 데이터에 대응하는 제2식별정보가 존재하는지를 확인한다(S1220). 만약 읽기대상 데이터에 대응하는 제2식별정보가 존재하지 않으면(S1225), 클립보드 보호 시스템(400)은 어플리케이션에 "데이터 없음" 메시지를 출력한다(S1250). 이와 달리 읽기대상 데이터에 대응하는 제2식별정보가 존재하면(S1225), 클립보드 보호 시스템(400)은 클립보드 관리 시스템(410)에 제2식별정보를 전달하여 클립보드(400)로부터 제2식별정보에 대응하는 데이터의 독출을 요청하고, 클립보드 관리 시스템(410)으로부터 전달된 데이터를 복호화하여 어플리케이션에 제공한다(S1230).
한편 S1205단계에서 데이터의 읽기를 요청한 어플리케이션이 비신뢰 객체로 확인되면, 클립보드 보호 시스템(400)은 읽기대상 데이터의 식별정보를 클립보드 관리 시스템(410)에 전달하고, 클립보드 관리 시스템(410)은 읽기 대상 데이터에 대응하는 식별정보가 존재하는지 여부를 확인한다(S1235). 만약 읽기대상 데이터에 대응하는 식별정보가 존재하면(S1240), 클립보드 관리 시스템(410)은 클립보드(420)로부터 읽기대상 데이터를 독출하여 어플리케이션에 제공한다(S1245). 이와 달리 읽기대상 데이터의 식별정보가 존재하지 않으면(S1240), 클립보드 관리 시스템(410)은 어플리케이션에 "데이터 없음" 메시지를 출력한다(S1250).
도 13은 본 발명에 따른 클립보드 보호 방법에 있어서 클립보드에 저장되어 있는 데이터의 읽기 동작과 관련된 제2실시예의 수행과정을 도시한 도면이다.
도 13을 참조하면, 어플리케이션으로부터 클립보드(420)에 저장되어 있는 데이터의 읽기 요청이 입력되면(S1300), 클립보드 보호 시스템(400)은 클립보드 관리 시스템(410)에 읽기 요청된 읽기대상 데이터의 식별정보가 존재하는지 여부를 확인한다(S1305). 이에 응답하여 클립보드 관리 시스템(410)은 읽기대상 데이터에 대응하는 식별정보가 존재하는지를 확인한 결과를 클립보드 보호 시스템(400)으로 전달한다. 만약 읽기대상 데이터에 대응하는 식별정보가 존재하면(S1310), 클립보드 보호 시스템(400)은 읽기대상 데이터의 식별정보를 클립보드 관리 시스템(410)에 전달하여 데이터의 읽기를 요청하고, 클립보드 관리 시스템(410)은 클립보드(420)로부터 읽기대상 데이터를 독출하여 어플리케이션에 제공한다(S1340). 이와 달리 읽기대상 데이터에 대응하는 식별정보가 존재하지 않으면(S1310), 클립보드 보호 시스템(400)은 DRM모듈을 통해 해당 어플리케이션이 신뢰 객체인지 여부를 확인한다(S1315). 만약 비신뢰 객체로 확인되면, 클립보드 보호 시스템(400)은 어플리케이션에 "데이터 없음" 메시지를 출력한다(S1335). 이와 달리 신뢰 객체로 확인되면, 클립보드 보호 시스템(400)은 읽기 요청된 데이터의 식별정보를 제2식별정보로 변환한 후 읽기대상 데이터에 대응하는 제2식별정보가 존재하는지를 확인한다(S1320). 만약 읽기대상 데이터에 대응하는 제2식별정보가 존재하면(S1325), 클립보드 보호 시스템(400)은 클립보드 관리 시스템(410)에 제2식별정보를 전달하여 클립보드(400)로부터 제2식별정보에 대응하는 데이터의 독출을 요청하고, 클립보드 관리 시스템(410)으로부터 전달된 데이터를 복호화하여 어플리케이션에 제공한다(S1330). 이와 달리 읽기대상 데이터에 대응하는 제2식별정보가 존재하지 않으면(S1325), 클립보드 보호 시스템(400)은 어플리케이션에 "데이터 없음" 메시지를 출력한다(S1335).
이상에서 설명한 본 발명에 따른 클립보드 보호 시스템 및 방법은 신뢰 객체에 의한 클립보드에의 데이터 저장 요청시 데이터의 식별정보의 변환 및 데이터의 암호화를 수행한 후 클립보드에 저장한다. 그리고 비신뢰 객체의 데이터 읽기 요청시에는 기존의 클립보드 관리 시스템에 의해 데이터의 읽기 동작을 수행함으로써 보안 데이터에 대한 접근 자체를 차단할 수 있다. 이와 달리 신뢰 객체의 데이터 읽기 요청시에는 클립보드 관리 시스템이 관리하는 매핑 테이블과 클립보드 보호 시스템이 관리하는 매핑 테이블로부터 읽기 요청된 데이터의 식별정보와 변환된 식별정보를 모두 검색하여 데이터의 존재여부를 확인함으로써, 에러없이 데이터에 대한 읽기 동작을 수행할 수 있다. 한편 상술한 실시예는 객체의 종류(즉, 신뢰 객체와 비신뢰 객체)에 따라 상이한 동작을 수행하나, 이와 달리 신뢰 객체가 관리하는 하위 객체(예를 들면, 마이크로소프트사의 워드 프로그램에서 로딩된 문서들)들에 대해서도 본 발명이 적용될 수 있다. 이때 신뢰 객체 여부 및 하위 객체의 신뢰 여부(즉, DRM 적용여부)에 대한 확인과정을 순차적으로 또는 동시에 수행한 후 신뢰 객체의 하위 객체의 신뢰성이 인정되는 경우에 한하여 식별정보의 변환 및 데이터의 암호화를 수행하고, 신뢰 객체의 하위 객체에 의한 데이터의 읽기 요청인 경우에 한하여 클립보드 관리 시스템이 관리하는 매핑 테이블과 클립보드 보호 시스템이 관리하는 매핑 테이블로부터 읽기 요청된 데이터의 식별정보와 변환된 식별정보를 모두 검색하여 데이터의 존재여부를 확인한다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상에서 본 발명의 바람직한 실시예에 대해 도시하고 설명하였으나, 본 발명은 상술한 특정의 바람직한 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.