KR20170097211A - 신뢰할 수 없는 장치에서의 데이터 보안 - Google Patents

신뢰할 수 없는 장치에서의 데이터 보안 Download PDF

Info

Publication number
KR20170097211A
KR20170097211A KR1020177021555A KR20177021555A KR20170097211A KR 20170097211 A KR20170097211 A KR 20170097211A KR 1020177021555 A KR1020177021555 A KR 1020177021555A KR 20177021555 A KR20177021555 A KR 20177021555A KR 20170097211 A KR20170097211 A KR 20170097211A
Authority
KR
South Korea
Prior art keywords
command
queue
software
identify
user
Prior art date
Application number
KR1020177021555A
Other languages
English (en)
Inventor
로버트 스코트 차프만 3세
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 센테온 엘엘씨
Publication of KR20170097211A publication Critical patent/KR20170097211A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/032Protect output to user by software means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

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

Abstract

신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 일 예시적인 방법은, 제1 프로세스에 의해, 명령 큐 내의 명령을 식별하는 단계 - 상기 명령은 제2 프로세스로부터의 명령이고 보안 데이터에 대한 동작을 포함함 -; 상기 동작 및 사용자 자격 증명에 기초하여 상기 명령이 허용되는지를 결정하는 단계; 및 상기 명령이 허용되지 않는다는 결정에 응답하여, 상기 제1 프로세스에 의해, 상기 명령을 상기 명령 큐로부터 제거하는 단계를 포함한다.

Description

신뢰할 수 없는 장치에서의 데이터 보안
관련 출원의 참조
본 출원은 2015년 1월 2일자로 출원된, 발명의 명칭이 "신뢰할 수 없는 장치에서의 데이터 보안(Securing Data On Untrusted Devices)"인, 미국 특허 출원 제14/588,779호의 우선권을 주장하고, 그 전체 내용이 이에 의해 본원에 참조로 포함된다.
기술분야
본 개시는 일반적으로 데이터 보안에 관한 것으로, 더 구체적으로는 신뢰할 수 없는 장치에서 데이터를 보안하는 것에 관한 것이다.
랩톱, 태블릿 및 스마트폰과 같은 휴대용 전자 장치는 민감한 정보가 장치에 저장될 수 있는 환경에서 점점 더 많이 사용된다. 예를 들어, 사용자는 자신의 스마트폰에서 회사 이메일을 송수신할 수 있거나 예를 들어 원격 네트워크 연결을 통해 태블릿 장치에서 내부 회사 문서에 액세스, 편집, 및 저장할 수 있다. 또한, 사용자가 일반적으로 "bring your device" 또는 BYOD 정책으로 지칭되는 정책에 따라 직장에서 사용하기 위해 자신의 장치를 제공하는 것이 점점 더 일반화되고 있다. 그러나, 이러한 BYOD 정책에 따라 사용되는 장치들은, 전통적으로 회사 장치들을 사용자들에게 특정 보안 기능들을 활성화하여 제공한, 정보 기술(IT) 부서에 보안 위험을 나타낸다.
신뢰할 수 없는 장치에서 데이터를 보안하기 위한 다양한 예들이 설명된다. 하나의 예시적인 방법은 보안 데이터에 액세스하기 위한 소프트웨어 애플리케이션으로부터의 명령을 식별하는 단계; 상기 소프트웨어 애플리케이션 및 사용자 자격 증명에 기초하여 상기 명령이 허용되는지 여부를 결정하는 단계; 및 상기 명령이 허용되지 않는 것으로 결정한 것에 응답하여, 상기 명령을 명령 큐(command queue)로부터 제거하는 단계를 포함한다.
하나의 예시적인 장치는 비일시적 컴퓨터 판독 가능 매체; 상기 비일시적 컴퓨터 판독 가능 매체와 통신하는 프로세서를 포함하고, 상기 프로세서는: 제1 프로세스에 의해, 다른 프로세스들로부터의 명령들을 식별하기 위해 명령 큐를 모니터링하고 - 상기 명령들 중 적어도 하나의 명령은 보안 데이터에 대한 동작을 나타냄 -; 하나 이상의 액세스 규칙에 액세스하여 상기 적어도 하나의 명령이 허용되는지 여부를 결정하고; 상기 명령이 허용되지 않는다는 결정에 응답하여, 상기 명령을 상기 명령 큐로부터 제거하도록 구성된다.
하나의 예시적인 비일시적 컴퓨터 판독 가능 매체는 프로그램 코드를 포함하고, 상기 프로그램 코드는 프로세서에 의해 실행 가능한 모니터링 소프트웨어를 포함하고, 상기 모니터링 소프트웨어는 다른 프로세스들로부터의 명령들을 식별하기 위해 명령 큐를 모니터링하고; 보안 데이터에 대한 동작을 나타내는 명령을 식별하고; 상기 명령이 허용되는지 여부를 결정하기 위한 요청을 전송하고; 상기 명령이 허용되지 않음을 나타내는 상기 요청에 대한 응답에 응답하여, 상기 명령을 상기 명령 큐로부터 제거하도록 구성된다.
이러한 예시적인 예들은 이 개시의 범위를 제한하거나 한정하기 위해서가 아니라, 오히려 그것의 이해를 돕기 위한 예들을 제공하기 위해 언급된다. 예시적인 예들은 추가 설명을 제공하는 상세한 설명에서 논의된다. 다양한 예들에 의해 제공되는 이점들은 이 명세서를 검토함으로써 더 이해할 수 있다.
이 명세서에 통합되어 그 일부를 구성하는, 첨부 도면들은 하나 이상의 특정 예를 도시하고, 예에 대한 설명과 함께, 특정 예들의 원리들 및 구현들을 설명하는 역할을 한다.
도 1은 신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 예시적인 시스템을 도시한다.
도 2는 신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 예시적인 컴퓨팅 장치를 도시한다.
도 3은 신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 예시적인 시스템을 도시한다.
도 4 및 도 5는 신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 예시적인 방법을 도시한다.
도 6은 신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 예시적인 시스템을 도시한다.
도 7은 신뢰할 수 없는 장치들에서 데이터를 보안하기 위해 프로세스 ID들을 추적하기 위한 예시적인 데이터 구조를 도시한다.
본 명세서에서는 신뢰할 수 없는 장치들에서 데이터를 보안하는 상황에서 예들이 설명된다. 본 기술분야의 통상의 기술자라면 다음의 설명은 단지 예시적인 것이며 어떤 식으로든 제한하려는 것은 아님을 알 것이다. 이하에서는 첨부 도면들에 예시된 예들의 구현들이 상세히 언급될 것이다. 동일한 참조 지시자들은 도면들 및 다음의 설명의 전체에 걸쳐 동일한 또는 유사한 아이템들을 언급하기 위해 사용될 것이다.
명확성을 위해, 본 명세서에 설명된 예들의 일상적인 특징들 전부가 도시되고 설명되지는 않는다. 물론, 임의의 이러한 실제 구현을 개발함에 있어, 응용 및 비즈니스 관련 제약들의 준수와 같은, 개발자의 특정 목표를 달성하기 위해 수많은 구현 특정적인 결정이 이루어져야 한다는 것, 그리고 이러한 특정 목표는 구현마다 그리고 개발자마다 달라질 것이라는 것을 알 것이다.
신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 예시적인 방법
신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 방법의 하나의 예시적인 예에서, 사용자는 태블릿 컴퓨터를 사용하여 원격 회사 문서 서버에 저장된 워드 프로세싱 문서에 액세스한다. 태블릿은 문서를 다운로딩하여 이를 태블릿 내의 플래시 메모리 장치의 보안 파티션에 저장한다. 그 후 사용자는 태블릿에서 워드 프로세싱 애플리케이션을 실행하고, 메뉴를 사용하여 파일 "열기(open)" 명령을 실행하고, 파일 탐색 대화 상자 창을 사용하여 보안 파티션 내의 다운로딩된 문서를 탐색한다. 문서를 찾은 후, 사용자는 "확인(OK)" 버튼을 클릭하여 애플리케이션이 문서를 열도록 한다.
사용자가 "확인"을 클릭하면, 애플리케이션은 열릴 문서에 대한 파일 경로 이름 및 파일 이름을 포함하는 애플리케이션 프로그래밍 인터페이스("API")를 통해 운영 체제("OS")에 명령을 발행한다. 예를 들어, 애플리케이션은 OS.FileOpen이라는 운영 체제 API 명령을 실행하고 "z:\secure\docs\businessplan.doc"과 같은 파일에 대한 경로 이름 및 파일 이름을 파라미터로서 제공한다. API 명령은 OS로 하여금 파일을 열기 위해 실행될 명령 큐에 항목을 생성하게 한다. 이 경우, OS는 멀티태스킹 OS이고 이에 따라 OS 자체의 양태들을 포함한, 매우 다양한 상이한 스레드와 프로세스로부터 명령들을 수신한다. 따라서, OS는 수신된 명령들을 차후의 실행을 위해 명령 큐에 큐잉한다. 이 경우, OS는 수신된 파일 "열기" 명령과 경로 이름 및 파일 이름을 실행을 위해 명령 큐에 큐잉한다.
그러나, 이 예에서, 사용자의 태블릿은 보안 파티션 내에 있는 데이터에 대해 실행되려고 시도되는 명령들을 모니터링하는 소프트웨어 애플리케이션을 실행 중이다. 모니터링 소프트웨어는 OS의 명령 큐 내의 이벤트들을 모니터링하여 보안 파티션 내에 경로 이름들을 포함하는 임의의 명령들을 식별한다. 이 예에서, 모니터링 소프트웨어는 OS의 명령 큐 내에서 "z:\secure"를 포함하는 대상 경로 이름을 갖는 이벤트들을 체크한다. 따라서, OS가 경로 이름 "z:\secure\docs"를 갖는 "열기" 명령에 대한 큐에 대한 새로운 명령을 생성하면, 모니터링 소프트웨어는 대응하는 이벤트를 식별하고 대응하는 명령, 이 예에서 "열기"가 이 파일에 대한 소프트웨어 애플리케이션 및 이 파일에 대한 사용자에 대한 허용된 명령인지를 결정한다. 이 예에서, 사용자는 파일에 액세스할 수 있는 권한이 없으므로, 모니터링 소프트웨어는 대응하는 이벤트를 실행되기 전에 명령 큐로부터 삭제한다. 또한, 모니터링 소프트웨어는 시도된 명령이 허가되지 않았다는 통지를 생성하여 사용자에게 표시하고, 시도된 "열린" 명령, 문서의 경로 이름 및 파일 이름, 동작을 수행하려고 시도한 사용자, 명령이 실행이 허용되지 않은 것이라는, 시도의 결과를 나타내는 모니터링 소프트웨어의 감사 로그에 항목을 생성하여 저장한다.
사용자는 잘못된 문서를 선택했다는 것을 깨닫고, 두 번째 문서인 "doc2.doc"을 보안 파티션에 다운로딩한다. 그 후 사용자는 워드 프로세싱 애플리케이션을 사용하여 두 번째 문서를 열려고 시도한다. 워드 프로세싱 애플리케이션은 다시 OS의 API를 호출하고 경로 이름 및 파일 이름 "z:\secure\docs\doc2.doc"을 "열기" 명령에 전달한다. OS는 식별된 파일을 열기 위해 명령 큐에 항목을 생성한다. 다시 모니터링 소프트웨어는 보안 파티션에 대한 경로 이름 "z:\secure"에 기초하여 항목을 식별하고, 소프트웨어 애플리케이션 및 사용자가 이 문서를 열도록 허용되는지를 결정한다. 이 경우, 사용자는 워드 프로세싱 애플리케이션으로 파일을 열 권한이 있으므로, 모니터링 소프트웨어는 명령 큐로부터 항목을 삭제하지 않고, 따라서 OS가 명령을 실행할 수 있게 한다. 그 후 모니터링 소프트웨어는 문서를 여는 소프트웨어 애플리케이션의 인스턴스에 대한 프로세스 식별자("프로세스 ID")를 획득하고, 프로세스 ID, 문서에 관한 정보(예를 들어, 파일 이름 및 경로), 및 문서 및 사용자와 연관된 액세스 규칙들에 대한 참조를 포함하는 레코드를 데이터 구조에 저장한다. 또한, 모니터링 소프트웨어는 그의 감사 로그에 사용자의 이름, 파일 이름, 및 실행된 명령, 이 경우, "열기"를 포함하는 파일의 성공적인 열기를 나타내는 항목을 생성한다. 그 후 소프트웨어 애플리케이션이 문서를 열고 이를 사용자에게 제시한다.
그 후 사용자는 태블릿에 삽입된 이동식 플래시 메모리 장치에 문서를 저장하고 싶다고 결정하고, 따라서 워드 프로세싱 애플리케이션 내의 메뉴 시스템으로부터 "다른 이름으로 저장(save as)" 명령을 선택하고 이동식 플래시 메모리 장치를 "다른 이름으로 저장" 명령에 대한 대상으로 선택한다. 워드 프로세싱 애플리케이션은 OS.FileSaveAs API 함수를 호출하고 문서에 대한 대상 경로 이름 및 파일 이름을 제공하고, OS는 "다른 이름으로 저장" 명령에 대한 항목을 명령 큐에 생성한다.
이 경우, 모니터링 소프트웨어는 명령 큐에서 소프트웨어 애플리케이션 인스턴스의 프로세스 ID를 식별하고 프로세스 ID에 대응하는 명령을 분석함으로써 문서의 시도된 "다른 이름으로 저장"을 감지한다. 이 경우, 모니터링 소프트웨어는 데이터 구조를 분석하여 사용자 및 문서에 대한 대응하는 액세스 규칙들을 식별한다. 그 후 모니터링 소프트웨어는 액세스 규칙들에 액세스하여 사용자가 보안 위치 외부의 위치로 "다른 이름으로 저장" 작업을 수행할 충분한 권한이 있는지를 결정한다. 이 경우, 모니터링 소프트웨어는 사용자가 충분한 권한이 없다고 결정하고 "다른 이름으로 저장" 명령에 대응하는 항목을 명령 큐로부터 삭제한다. 전과 마찬가지로, 모니터링 소프트웨어는 시도된 작업이 허용되지 않는다는 통지를 생성하여 사용자에게 표시하고, 그의 감사 로그에 시도한 명령, 경로 이름 및 파일 이름, 및 사용자의 이름을 나타내는 항목을 생성한다.
이 예시적인 예에서, 모니터링 소프트웨어는 문서에 대한 허가되지 않은 액세스, 또는 보안 파티션으로부터의 보안 데이터의 허가되지 않은 이동을 허용할 수 있는 다른 유형의 명령들에 대해서도 모니터링할 수 있다. 예를 들어, 모니터링 소프트웨어는 "저장", "다른 이름으로 저장", "복사", "이동", "공유" 및 "이름 바꾸기"와 같은 파일 레벨 작업들, "인쇄", "잘라내기", "복사", "붙여넣기"와 같은 콘텐츠 레벨 작업들, 이메일 작업들(예를 들어, 이메일에 보안 파일 첨부)과 같은 다른 애플리케이션 특정적인 작업들뿐만 아니라, 스크린샷 또는 화면 기록 기능과 같은 다른 애플리케이션들 또는 운영 체제에 의해 실행될 수 있는 다른 작업들을 감지 및 방지할 수 있거나, "읽기 전용", "읽기/쓰기" 또는 다른 유형의 권한을 반영하도록 파일 권한들을 변경한다. 신뢰할 수 없는 장치들에서 데이터를 보안하는 예들은 개별 소프트웨어 애플리케이션들의 동작에 영향을 주는 애플리케이션 "래퍼(wrappers)"를 제공할 필요 없이 신뢰할 수 없는 장치들에서의 데이터 보안을 포함할 수 있다. 대신, 다양한 예들은 장치의 소프트웨어 애플리케이션들 및 운영 체제뿐만 아니라 사용자들 모두에게 보안 데이터에 대한 투명한 보안을 효과적으로 제공할 수 있다.
상기 예시적인 예는 상이한 소프트웨어 애플리케이션들의 사용에 대해 논의하였다; 그러나, 이 상세한 설명의 다른 부분들은 일반적인 용어 "프로세스"를 언급할 수 있다. 소프트웨어 애플리케이션들은 컴퓨팅 시스템상의 프로세스들로서 실행될 수 있다. 예를 들어, 워드 프로세싱 소프트웨어 애플리케이션이 시작될 때, 실행중인 워드 프로세싱 소프트웨어 애플리케이션은 프로세스라고 언급될 수 있다. 이러한 예에서, 명확성을 위해, 프로세스들은 "제1" 프로세스 및 "제2" 프로세스라고 언급될 수 있다. 라벨들 "제1" 및 "제2"(및 "제3" 등)는 시퀀스를 나타내기 위한 것이 아니라, 오히려 단지 상이한 프로세스들을 서로 구별하기 위한 것이다. 예를 들어, 멀티태스킹 운영 체제의 상황 내에서와 같이, 컴퓨팅 시스템에서 다수의 상이한 소프트웨어 애플리케이션이 실질적으로 동시에 실행중인 경우, 각각의 소프트웨어 애플리케이션은 별개의 프로세스일 수 있고 이러한 라벨들을 사용하여 언급될 수 있다. 예를 들어, 위에 논의된 모니터링 소프트웨어는 워드 프로세싱 소프트웨어 애플리케이션 프로세스와는 독립된 별개의 프로세스로서 실행되므로, 모니터링 소프트웨어는 또한 "제1 프로세스"라고 언급될 수 있고 워드 프로세싱 소프트웨어 애플리케이션은 또한 "제2 프로세스"라고 언급될 수 있다. 또한, 일부 프로세스들은 부분적으로 또는 서로 완전히 독립적으로 동작할 수 있는 하나 이상의 실행 "스레드"를 포함할 수 있다. 이러한 스레드들은 전형적으로 단일 프로세스의 일부이지만, 프로세스에 의해 수행되는 다른 작업들을 나타낼 수 있다. 전반적으로 프로세스 및 스레드라는 용어에 대한 언급은 일반적으로 이러한 개념들 또는 본 기술분야의 기술자에게 일반적으로 이해되는 개념들을 언급할 수 있다.
신뢰할 수 없는 장치들에서 데이터를 보안하는 다른 예들이 아래의 상세한 설명에서 제공된다.
이제 도 1을 참조하면, 도 1은 신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 예시적인 시스템(100)을 도시한다. 예시적인 시스템(100)은 네트워크(120)를 통해 문서 서버(130) 및 관리 서버(132)와 통신하는 휴대용 컴퓨팅 장치(110) 및 데스크톱 컴퓨터(112)를 포함한다. 문서 서버(130)는 데이터 저장소(140)와 통신하고 컴퓨팅 장치(110) 및 데스크톱 컴퓨터(112)가 이용할 수 있는 파일들을 유지하도록 구성된다. 관리 서버(132)는 장치들(110, 112)에 대한 액세스 정책들을 설정하고 제공하도록 구성된다. 네트워크(120)는 인터넷, 클라우드 기반 네트워크, 인트라넷, 근거리 네트워크, 무선 근거리 네트워크, 광역 네트워크, 마이크로파 네트워크, 위성 네트워크, 통합 서비스 디지털 네트워크, 셀룰러 네트워크, 및 이들 또는 다른 유형의 네트워크들의 조합들과 같은 임의의 적합한 네트워크일 수 있다.
컴퓨팅 장치(110) 및 데스크톱 컴퓨터(112) 각각은 각각의 장치(110, 112)에서 데이터를 보안하도록 구성된 모니터링 소프트웨어를 설치하였고 실행한다. 모니터링 소프트웨어는 서버(130)로부터 보안 데이터에 액세스하기 위한 구성 파라미터들 및 액세스 자격 증명들과 통신하고 이를 수신한다. 또한, 장치들(110, 112) 각각은 보안 데이터를 저장하기 위해 설정된 저장 위치를 갖도록 구성된다. 이 예시적인 시스템(100)에서, 장치들(110, 112) 각각은 보안 데이터를 저장하도록 설정된 파일 시스템 파티션을 갖는 컴퓨터 판독 가능 매체를 갖는다. 파일 시스템 파티션은 컴퓨터 판독 가능 매체에 대한 파티션 테이블에 별도로 설정되고 파일 시스템으로부터 독립적으로 마운팅되거나 마운팅 해제될 수 있도록 구성된다. 일부 예들에서, 보안 파티션은 상이한 물리적 매체 상에 상주할 수 있다.
서버(130)는 회사 문서 시스템과 같은 문서 리포지토리를 관리하도록 구성된다. 서버(130)는 권한 있는 사용자가 문서 리포지토리에 로그인하고 문서 리포지토리 내에 저장된 하나 이상의 문서에 액세스할 수 있게 한다. 문서 리포지토리 내의 문서들은 데이터 저장소(140)에 저장되고, 컴퓨팅 장치(110) 또는 데스크톱 컴퓨터(112)와 같은 장치들로부터 수신된 요청들에 응답하여 서버(130)에 의해 액세스될 수 있다.
관리 서버(132)는 문서 리포지토리의 권한 있는 사용자들에 대한 보안 정책 정보를 유지한다. 예를 들어, 관리 서버(132)는, 각각의 사용자에 대해 또는 하나 이상의 사용자 그룹에 대해, 사용자가 어떤 파일들에 액세스할 수 있는지 그리고 각각의 파일 또는 파일 그룹에 관하여 사용자가 어떤 동작들을 취하는 것이 허용되는지를 나타내는 구성 설정들을 유지한다. 관리 서버(132)는 문서 리포지토리에 연결하려고 시도할 때 각각의 장치의 보안 정책 정보를 감사하고, 관리 서버(132)는 필요한 경우 보안 정책 정보를 업데이트한다. 또한, 관리 서버(132)는 장치들(110, 112)상의 보안 저장 위치에 대한 보안 키 정보를 생성하는데, 이에 대해서는 이하에서 더 상세히 설명될 것이다.
이제 도 2를 참조하면, 도 2는 신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 예시적인 컴퓨팅 장치(200)를 도시한다. 도 2에 도시된 예시적인 컴퓨팅 장치(200)는 태블릿 장치이지만, 일부 예들에서, 컴퓨팅 장치(200)는 스마트폰, 데스크톱 컴퓨터, 랩톱 컴퓨터, 또는 다른 적합한 컴퓨팅 장치일 수 있다. 예시적인 컴퓨팅 장치(200)는 터치 감지 디스플레이(210), 전자 프로세서(230), 메모리(240), 저장 매체(250), 네트워크 인터페이스(260), 및 통신 버스(270)를 포함한다. 프로세서(230)는 메모리(240)에 액세스하여 메모리(240) 내에 저장된 프로그램 코드를 실행하고, 메모리(240)에 대해 데이터를 판독 및 기입하도록 구성된다. 프로세서(230)는 또한 저장 매체(250)에 액세스하여 메모리(240)에 데이터를 로딩하거나, 메모리로부터 저장 매체(250)로 데이터를 저장하도록 구성된다. 프로세서(230)는 또한 네트워크 인터페이스(260)를 사용하여 도 1에 도시된 네트워크(120)와 같은 하나 이상의 통신 네트워크에 액세스하고, 네트워크(들)에 연결된 다른 장치들과 통신하도록 구성된다.
저장 매체(250)는 하나 이상의 파일 시스템 및 하나 이상의 데이터 파일을 유지하도록 구성된다. 적합한 유형의 저장 매체의 예들은 이 상세한 설명에서 나중에 더 상세히 설명된다. 그러나, 이 예에서, 저장 매체(250)는 2개의 파일 시스템 파티션을 갖도록 구성된 플래시 메모리 장치를 포함한다. 하나의 파티션("주 파티션")은 장치(200)의 운영 체제 및 기타 데이터 파일들을 저장하도록 구성되고, 두 번째 파티션("보안 파티션")은 문서 리포지토리로부터 수신된 데이터 파일들을 저장하도록 구성된다.
이 예에서, 장치(200)는 처음에 부팅하고 주 파티션을 운영 체제의 파일 시스템의 일부로서 마운팅한다. 또한, 장치(200)가 부팅하는 동안, 그것은 모니터링 소프트웨어를 실행하는데, 이에 대해서는 이하에서 더 상세히 설명될 것이다. 장치(200)가 부팅되면, 그것은 운영 체제, 워드 프로세싱, 스프레드시트, 웹 브라우징, 및 기타 애플리케이션들과 같은 다양한 소프트웨어 애플리케이션들, 및 사용자 데이터 파일들을 포함하는 다양한 데이터 파일들을 저장하는 주 파티션을 사용하여 동작한다. 이 예에서, 모니터링 소프트웨어는 보안 파티션을 마운팅 및 마운팅 해제하도록 구성된다.
"마운팅(mount)"이라는 용어가 이 예에서 그리고 이 상세한 설명의 다른 곳에서 사용되지만, 이는 특정 운영 체제들 내에서 사용 가능한 "mount" 유틸리티의 사용을 언급하기 위한 것은 아니라는 점에 유의해야 한다. 대신, "마운팅"이라는 용어 및 "마운팅 해제(unmount)"라는 관련 용어는 이 명세서의 전체에 걸쳐 파일 시스템을 연결(attach)하거나 분리(detach)하는 프로세스에 대한 일반적인 용어들로서 사용된다. "마운팅", "연결", "마운팅 해제", 및 "분리"라는 용어들은 이 프로세스를 언급하기 위해 상호 교환 가능하게 사용될 수 있다.
이제 도 3을 참조하면, 도 3은 신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 시스템(300)에 대한 예시적인 아키텍처 다이어그램을 도시한다. 이 예에서, 다이어그램은 도 2에 도시된 컴퓨팅 장치(200)와 같은 예시적인 컴퓨팅 장치의 구성을 나타낸다. 이 예는 도 2의 컴퓨팅 장치(200)와 관련하여 설명되지만, 임의의 적합한 컴퓨팅 장치가 사용될 수 있다. 이 예에서, 소프트웨어 애플리케이션들(310, 312)은 보안 파티션(335)에 저장된 데이터 파일들에 액세스하고 조작하려고 시도한다.
시스템(300)은 컴퓨팅 장치 내에서 실행중인 신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 서브시스템(340)을 포함한다. 시스템(300)은 서브시스템(340)뿐만 아니라 하나 이상의 소프트웨어 애플리케이션(310, 312), 운영 체제(330), 및 보안 파티션(360)을 포함한다. 서브시스템(340)은 모니터링 소프트웨어(342), 액세스 규칙 데이터 저장소(344), 감사 로그(345), 보안 소프트웨어(346), 및 파일 동기화 소프트웨어(348)를 포함한다.
소프트웨어 애플리케이션들(310, 312)은 컴퓨팅 장치(200)에 의해 실행되고 컴퓨팅 장치(200)에 저장된 데이터 파일들에 액세스하도록 구성된다. 예를 들어, 소프트웨어 애플리케이션(310)이 워드 프로세싱 애플리케이션이면, 소프트웨어 애플리케이션(310)은 사용자가 컴퓨팅 장치상에 문서들을 작성, 수정, 및 저장할 수 있게 한다. 그렇게 하기 위해, 소프트웨어 애플리케이션(310)은 예를 들어 OS API 함수를 호출하여 저장 매체 상에 데이터 파일들을 작성, 수정 및 저장하기 위해, 운영 체제(330)와 상호 작용한다. 소프트웨어 애플리케이션(310)이 OS API 함수를 호출할 때, 함수는 운영 체제의 "실행" 블록(334)으로 도시된, 운영 체제에 의한 차후의 실행을 위해 OS의 명령 큐(332)에 명령을 삽입한다. 실행 블록(334)이 명령을 실행할 때, 그것은 저장 매체에 액세스하여 데이터 파일을 조작, 예를 들어 파일을 열거나 파일에 변경을 저장할 수 있다.
서브시스템(340)은 보안 파티션(360)에 대한 액세스를 관리하기 위해 운영 체제와 함께 동작한다. 이 예에서, 그리고 위에 논의된 바와 같이, 컴퓨팅 장치가 처음에 파워 온되거나 또는 다른 식으로 부팅될 때, 컴퓨팅 장치(200)는 운영 체제(330)를 시작하고 또한 모니터링 소프트웨어(342) 및 보안 소프트웨어(346)를 포함하는 서브시스템(340)을 시작한다. 이 예에서, 보안 소프트웨어(346)는 보안 파티션(360)(아직 존재하지 않으면)을 생성하도록 구성된다. 일 예에서, 보안 소프트웨어(346)는 보안 파티션(360)에 대한 저장 장치에 대한 파티션 테이블에 새로운 항목을 생성하고, 암호화된 파티션을 생성할 것이다.
보안 파티션(360)이 이미 존재하면, 보안 소프트웨어는 보안 파티션(360)에 액세스하고 마운팅하여 그것이 운영 체제(330)에 의해 액세스 가능하도록 할 것이다.
이 예의 논의들은 운영 체제를 언급했지만, 다른 예들은 운영 체제들 이외의 애플리케이션 환경들을 사용할 수 있다. 일 예는 기본 운영 체제의 최상위에서 실행되는 애플리케이션 서버 환경을 사용한다. 이러한 예에서, 모니터링 소프트웨어(342)는 대신에 운영 체제보다는 애플리케이션 서버 환경에 대한 명령 큐를 모니터링할 수 있다. 일부 예들에서, 모니터링 소프트웨어(342)는 애플리케이션 서버 환경에 대한 명령 큐 및 운영 체제에 대한 명령 큐를 모니터링할 수 있다.
컴퓨팅 시스템상에서 실행되는 하나 이상의 가상 머신과 같이, 실행 환경들의 추가 계층화 또는 실행 환경의 병렬 실행이 고려된다. 그러한 일 예에서, 각각의 가상 머신은 상이한 운영 체제 및 모니터링 소프트웨어를 실행할 수 있다. 일부 예들에서, 모니터링 소프트웨어는 기본 운영 체제 소프트웨어와의 가상 머신들 각각의 상호 작용을 모니터링할 수 있다.
이 예에서, 보안 파티션(360)은 컴퓨팅 장치(200) 내의 저장 매체(250)상에 설정된 전용 파티션이다. 보안 파티션(360)은 디스크 파티션 기능, 예를 들어 "fdisk"를 사용하여 저장 매체 상에 처음에 설정된다. 또한, 보안 시스템(346)은 고급 암호화 표준("AES") 또는 Twofish 메커니즘과 같은, 키 기반 암호화를 사용하여 보안 파티션을 암호화하도록 구성된다. 일부 예들에서, 동일한 데이터에 연속적으로 적용되는 AES, Twofish, 및 Serpent 메커니즘들과 같은, 다수의 암호화 메커니즘이 캐스케이드로 사용될 수 있다. 따라서, 데이터가 보안 파티션(360)에 저장될 때, 그것은 암호화된 포맷으로 저장된다. 나중에, 소프트웨어 애플리케이션이 암호화된 파일에 대한 액세스를 요청할 때, 파일의 암호 해독된 버전이 소프트웨어 애플리케이션에 제공된다.
보안 소프트웨어(346)는 보안 파티션(360)상의 암호화된 데이터에 대한 액세스를 규제하고, 액세스 규칙 데이터 저장소(344) 내의 규칙들을 유지 및 업데이트하도록 구성된다. 이 예에서, 장치(200)가 부팅된 후, 사용자는 사용자 이름 및 패스워드와 같은 자신의 자격 증명들을 보안 소프트웨어(346)에 제공하도록 요청 받는다. 일부 예들에서, 생성된 액세스 코드를 사용하는 2단계 인증(two-factor authentication)과 같은 다른 유형의 인증이 사용될 수 있다. 사용자가 허용 가능한 자격 증명들을 제공한 후에, 보안 소프트웨어(346)는 보안 파티션(360)을 마운팅한 다음 원격 서버(350)에 액세스하여 보안 파티션(360)상의 데이터에 액세스하기 위한 암호화 키들을 획득하려고 시도한다. 예를 들어, 컴퓨팅 장치(200)는 회사의 직원이 회사의 문서 리포지토리 내의 파일들에 액세스하는 데 사용하는 랩톱일 수 있다.
그 후 보안 소프트웨어(346)는 회사의 서버(350)에 액세스하여 암호화 키를 획득하려고 시도한다. 이 예에서, 보안 소프트웨어(346)가 회사의 서버(350)와 연결할 때, 보안 소프트웨어(346)는 서버(350)에 사용자의 액세스 자격 증명들을 제공한다. 그 후 서버(350)는 보안 소프트웨어(346)에 의해 사용될 암호화 키에 액세스하거나 생성한다. 일 예에서, 서버(350)는 504 비트 키를 생성하고, 그 키를 해싱하고, 해싱된 키를 컴퓨팅 장치(200)에 전송한다. 보안 소프트웨어(346)가 서버(350)에 액세스할 수 없는 경우, 그것은 자신이 현존하는 유효한 암호화 키를 가지고 있는지를 결정할 수 있다. 예를 들어, 암호화 키는 특정 기간, 예를 들어 48 시간 동안, 만료 전에 사용 가능할 수 있고, 그 때가 되면, 암호화 키는 보안 소프트웨어(346)에 의해 비활성화된다.
이 예에서, 보안 소프트웨어(346)는 암호화 키들을 비활성화하기 전에 최대 48 시간 동안 암호화 키들을 유지하도록 구성된다. 그러나 또한, 보안 소프트웨어는 또한 4 시간마다 서버(350)에 새로운 키를 요청하도록 구성된다. 새로운 키가 획득되면, 보안 파티션은 새로운 키를 사용하여 다시 암호화되고, 이는 결과적으로 이전 키를 무효화한다. 48 기간을 다시 시작하는 것 외에도, 4 시간마다 새로운 키를 사용하는 것의 효과는 그것이 권한 없는 엔티티에 의해 그의 이전 키를 손상 당한 장치를 다시 보안하는 데 도움이 될 수 있다는 점이다. 그러나 컴퓨팅 장치(200)가 서버(350)와 통신을 유지하는 한, 그리고 권한 있는 사용자가 보안 소프트웨어에 로그인되어 있는 한, 그것은 보안 파티션(360)에 저장된 (사용자에게 허가된) 데이터 파일들에 대한 무기한 액세스를 가질 것이다. 그러나, 컴퓨팅 장치(200)가 서버(350)로부터 분리되면, 사용자는 데이터 파일들에 대한 액세스를 잃기 전에 최대 48 시간 동안 보안 파티션에 계속 액세스할 수 있다. 이들 기간은 단지 예로서 제공되고 상이한 키 리프레시 및 키 만료 기간들이 설정될 수 있음은 명백할 것이다. 일부 예들에서, 상이한 유형의 파일들은 상이한 키 리프레시 또는 키 만료 기간들을 가질 수 있다. 예를 들어, 매우 민감한 문서들은 덜 민감한 문서보다 더 짧은 키 만료 기간을 가질 수 있다. 그리고 일부 예들에서, 각각의 문서는 자체의 연관된 키 리프레시 또는 만료 기간을 가질 수 있다.
또한, 보안 소프트웨어(346)는 사용자에 대한 임의의 업데이트된 액세스 규칙들을 체크하고, 임의의 것이 발견되면, 그것은 액세스 규칙들을 다운로딩하여 이들을 액세스 규칙 데이터 저장소(344)에 저장한다. 액세스 규칙들은 데이터 파일들에 대한 액세스를 규제하기 위해 정의될 수 있는 사용자 특정적인, 장치 특정적인, 파일 특정적인, 애플리케이션 특정적인, 또는 다른 유형의 규칙들을 포함할 수 있다. 예를 들어, 사용자는 회사의 파일 리포지토리 내에서 이용 가능한 특정 파일들에만 액세스할 수 있으므로, 사용자 규칙들의 세트는 사용자가 보안 파티션(360)에 저장된 데이터 파일을 열거나 다른 식으로 액세스할 권한이 있는지를 나타내는 정보를 포함할 수 있다. 따라서, 사용자가 데이터 파일을 열려고 시도할 때, 모니터링 소프트웨어(342)는 액세스 규칙들(344)을 체크하고, 사용자 및 데이터 파일과 연관된 규칙을 식별하고, 파일 "열기" 명령을 명령 큐로부터 삭제하는 것에 의해 그 명령이 실행되는 것을 방지한다. 이 예에서, 모니터링 소프트웨어(342)는 또한 허용되지 않은 명령 및 그 명령을 시도한 사용자, 시도의 시간 및 날짜, 파일 이름, 또는 경로와 같은 다른 관련 정보를 나타내기 위해 감사 로그(345)에 항목을 추가한다. 감사 로그(345)는 서버(350)에 전송될 수 있거나, 서버(350)에 의해 요청될 수 있다. 예를 들어, 감사 로그(345)는 매일 서버(350)에 전송될 수 있다. 일부 예들에서, 감사 로그(345)는 서버(350)에 저장될 수 있고, 컴퓨팅 장치(200)는 로그(345)에 입력을 위해 감사 로그 메시지들을 서버(350)에 전송할 수 있다.
일부 예들에서, 액세스 규칙들은 데이터 저장소 내의 레코드들로서 저장될 수 있다. 예를 들어, 액세스 규칙들에 대한 적합한 예시적인 레코드는 다음과 같은 정보를 포함할 수 있다:
Figure pct00001
이러한 액세스 규칙은 사용자 "jsmith" 및 디렉터리 "docs"의 보안 파티션("/secure") 내에 저장된 식별된 파일 "document.doc"과 관련이 있다. 이 예에서 규칙은 이 문서 및 이 사용자에 허용되는, "복사" 동작에 특정적이다. 따라서, 모니터링 소프트웨어가 "document.doc" 파일 및 "jsmith"와 연관된 프로세스 ID에 의해 시도되는 "복사" 동작을 감지하면, 시스템은 액세스 규칙들에 액세스하고, 사용자, 파일, 및 동작과 연관된 규칙을 찾고, 규칙에 따라 동작을 허용할지를 결정할 것이다.
상기 레코드는 예시적인 예로서 제공되고 그러한 레코드(또는 레코드들)의 모든 변형들을 나타내거나 상이한 양태들에 따라 레코드들 내에 저장될 정보의 포괄적인 또는 필요한 목록이도록 의도된 것은 아니다.
하나 이상의 레코드가 서버(350)로부터 획득될 수 있거나, 서버(350)로부터 획득된 정보에 기초하여 생성되어 컴퓨팅 장치(200)에 저장될 수 있다.
이 예에서, 서브시스템(340)은 또한 파일 동기화 소프트웨어(348)를 포함한다. 파일 동기화 소프트웨어(348)는 도 3에서 문서 저장소(352)로 도시된 문서 리포지토리(또는 리포지토리들)로부터 하나 이상의 데이터 파일을 검색하고, 변경된 또는 새로운 파일을 그 문서 리포지토리에 푸싱하도록 구성된다. 예를 들어 회사는 회사 문서 리포지토리를 유지 관리하여 사용자들이 새로운 문서들을 작성하고 리포지토리에 들어오고 나가는 문서들을 체크하여 그 문서들을 편집, 인쇄, 이메일, 또는 다른 방식으로 사용할 수 있게 할 수 있다. 사용자가 문서 리포지토리에서 사용 가능한 문서들에 원격으로 액세스할 수 있게 하기 위해, 회사는 예를 들어 가상 사설 네트워크("VPN")를 통해 문서 리포지토리로의 직접 액세스를 제공할 수 있다. 그러나, 본 개시의 예들에 따르면, 파일 동기화 소프트웨어(348)는 문서 저장소(352)로부터 문서들을 검색하고 문서들의 로컬 사본들을 컴퓨팅 장치상의 보안 파티션(360) 내에 저장할 수 있다. 또한, 파일 동기화 소프트웨어(348)는 새로운 또는 수정된 문서들을 문서 저장소(352)에 푸싱할 수 있다. 일부 예들에서, 파일 동기화 소프트웨어(348), 또는 서브시스템(340)의 다른 양태들은 또한 문서 저장소(352)에 관한 체크-인/체크-아웃 기능을 제공할 수 있고, 이는 사용자가 문서를 열고 편집하는 것을 가능하게 할 수 있다 - 다른 사용자가 동시에 동일한 문서를 열고 편집함이 없이 -.
파일 동기화 소프트웨어(348)는 문서 저장소(352)로부터 하나 이상의 문서 세트를 획득할 수 있다. 그 후 파일 동기화 소프트웨어(348)는 하나 이상의 문서 세트를 분석하여 보안 파티션에 존재하지 않는 문서들을 식별한다. 파일 동기화 소프트웨어(348)는 임의의 누락된 문서들을 식별한 후에, 누락된 문서들의 사본들을 획득하고 이들을 보안 파티션(360) 내에 저장한다. 일부 예들에서, 파일 동기화 소프트웨어(348)는 또한 보안 파티션(360)에 저장된 임의의 문서들이 문서 저장소(352)에 저장된 버전과 상이한지를 결정한다.
예를 들어, 파일 동기화 소프트웨어(348)는 보안 파티션상의 문서들 중 하나 이상의 문서의 해시 값들을 생성하고 문서 저장소(352) 내의 대응하는 문서와 비교할 수 있다. 보안 파티션상의 파일에 대한 해시 값이 문서 저장소(352) 내의 버전과 다르다면, 파일 동기화 소프트웨어(348)는 보안 파티션으로부터 문서의 사본을 문서 저장소(352)로 푸싱할지, 또는 문서 저장소(352)로부터 문서의 사본을 획득하고 보안 파티션(360)상의 사본을 대체할지를 결정한다. 그러한 결정을 하기 위해, 파일 동기화 소프트웨어(348)는 보안 파티션상의 파일의 가장 최근 수정의 날짜 또는 시간을 문서 저장소(352) 내의 파일의 가장 최근 수정의 날짜 또는 시간과 비교할 수 있다. 이어서 파일 동기화 소프트웨어(348)는 가장 최근에 수정된 버전을 다른 위치로 복사할 수 있다(예를 들어, 최근 수정된 버전을 보안 파티션으로부터 문서 저장소로 복사). 일부 예들에서, 위에 논의된 바와 같이, 파일 동기화 소프트웨어(348)(또는 서브시스템(340))는 문서 저장소(352)로부터의 문서들을 체크-아웃하도록 구성될 수 있다. 문서가 나중에 체크-인되면, 파일 동기화 소프트웨어(348)는 이어서 보안 파티션으로부터의 버전을 문서 저장소(352)로 복사하여 문서 저장소(352) 내의 그때 현존하는 사본을 대체할 수 있다.
그러나, 일부 예들에서, 서브시스템(340)은 문서 저장소(352)로부터의 문서들을 체크-아웃하지 못할 수 있다. 따라서, 컴퓨팅 장치(200)의 사용자가 보안 파티션(360)상의 문서의 사본을 편집하는 것과 동시에 또 다른 사용자가 문서 저장소 내의 동일한 문서의 사본을 편집하는 것이 가능하다. 그러한 경우에, 파일 동기화 소프트웨어(348)는 문서의 2개의 버전이 "포킹된(forked)" 것으로 결정할 수 있고, 따라서 파일 동기화 소프트웨어(348)는 보안 파티션(360)으로부터의 파일을 문서 저장소(352) 내의 새로운 문서로서 문서 저장소에 복사할 수 있다. "포킹(forking)"은 단순히 동일한 소스 문서로부터의 2개(또는 그 이상)의 상이한 문서의 생성을 언급한다. 일부 예들에서, 파일 동기화 소프트웨어(348) 또는 서브시스템(340)은 새로운 "포킹된" 문서가 원래의 문서와 관련되어 있다는 지시자를 저장할 수 있다.
이제 도 4를 참조하면, 도 4는 신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 예시적인 방법(400)을 도시한다. 도 4의 방법(400)은 도 2에 도시된 컴퓨팅 장치(200) 및 도 3에 도시된 예시적인 시스템(300)과 관련하여 논의될 것이다. 그러나, 예시적인 방법들은 그러한 컴퓨팅 장치(200) 또는 그러한 예시적인 시스템(300)으로 제한되지 않는다. 오히려, 임의의 적합한 장치 또는 시스템이 사용될 수 있다. 이 예에서, 방법(400)은 블록 410에서 시작한다.
블록 410에서, 보안 소프트웨어(346)는 보안 파티션(360)에 대한 암호화 키를 획득한다. 보안 파티션이 존재하지 않으면, 보안 소프트웨어(346)는 보안 파티션(360)으로서 사용될 새로운 파티션을 저장 매체(250)상에 생성한다. 일부 양태들에서, 암호화 키를 획득하기 위해, 보안 소프트웨어(346)는 알려진 키 서버들의 네트워크 어드레스들과 연관된 레코드들에 액세스하고 키 서버들 중 하나 이상의 키 서버에 암호화 키에 대한 요청을 전송한다. 일부 양태들에서, 보안 소프트웨어(346)는 암호화 키에 대한 특정 요청보다는, 컴퓨팅 장치(200)가 동작하고 있음을 나타내기 위해, "하트비트(heartbeat)" 또는 다른 메시지를 서버(350)와 같은 서버에 전송할 수 있다. 요청에 응답하여, 또는 컴퓨팅 장치(200)로부터 상이한 메시지 또는 데이터를 수신하는 것에 응답하여, 키 서버(또는 다른 서버)는 암호화 키를 생성하여 장치에 전송한다. 일부 양태들에서, 키 서버는 또한 암호화 키에 대한 TTL(time-to-live), 또는 만료 날짜 또는 시간을 나타내는 구성 정보를 제공한다. 일부 양태들에서, 컴퓨팅 장치(200)는 하나 이상의 암호화 키와 함께 사용하기 위한 TTL 파라미터들로 미리 구성될 수 있거나 또는 사용자 또는 관리자로부터 TTL 파라미터들을 획득할 수 있다.
일부 양태들에서, 다수의 사용자와 연관된 파일들은 사용자들 각각과 관련되고 전술한 바와 같이 리프레시될 수 있는 그들 자신의 암호화 키를 가질 수 있다. 예를 들어, 보안 소프트웨어(348)는 각각의 사용자에 대한 암호화 키들을 유지할 수 있고, 또한 하나 이상의 사용자 집단 또는 그룹에 대한 암호화 키들을 유지할 수 있다. 일부 예들에서, 그러한 집단들 또는 그룹들은 다수의 사용자가 동일한 파일 또는 파일들에 대한 액세스를 획득함에 따라 동적으로 결정될 수 있다. 예를 들어 둘 이상의 사용자가 동일한 파일에 액세스할 수 있다고 결정하는 것에 의해, 새로운 집단 또는 그룹이 설정될 때, 보안 소프트웨어(348)는 집단에 대한 암호화 키를 요청할 수 있고, 이하에서 더 상세히 논의될 바와 같이, 새로운 키에 대한 하나 이상의 타이머 또는 만료 시간을 별도로 유지할 수 있다.
일부 양태들에서, 서버(350)는 컴퓨팅 장치(200)에 암호화 키를 전송하기 전에, SHA-1, SHA-2 또는 SHA-3과 같은 암호화 해시 함수를 사용하여 암호화 키를 암호화한다.
암호화 키를 획득한 후에, 방법(400)은 블록 420으로 진행한다.
블록 420에서, 보안 소프트웨어(348)는 획득된 암호화 키를 사용하여 보안 파티션을 암호화한다. 이 예에서, 보안 소프트웨어(348)는 암호화 키를 사용하여 AES, TwoFish, 및 Serpent 메커니즘들을 포함하는 캐스케이딩 암호화 메커니즘을 사용하고 암호문 훔침(ciphertext stealing, "XTS") 방법으로 XEX(XOR-encrypt-XOR) 기반 조정 코드북 모드를 사용한다. 다른 예들에서, 암호화 키는 보안 파티션을 암호화하기 위해 다른 적합한 암호화 방식들과 함께 사용될 수 있다. 일부 예들에서, 컴퓨팅 장치(200)는 마이크로소프트의 암호화 파일 시스템(Encrypting File System)과 같은 하나 이상의 암호화된 파일 시스템을 지원하고 사용하도록 구성된 OS를 사용할 수 있다. 또한, 보안 파티션이 마운팅되지 않은 경우, 보안 소프트웨어(346)는 또한 보안 파티션을 컴퓨팅 장치의 파일 시스템에 마운팅할 수 있거나, 그것은 나중 시간까지 마운팅을 연기할 수 있다.
일부 예들에서, 보안 소프트웨어(346)는 상이한 암호화 키들을 사용하여 보안 파티션(360)의 상이한 부분들을 암호화하여 생성할 수 있다. 예를 들어, 다수의 상이한 사용자가 상이한 시간들에 컴퓨팅 장치에 액세스할 수 있는 경우, 보안 소프트웨어(346)는 암호화 키를 사용하여 활성 사용자의 파일들을 암호화할 수 있지만, 그 키를 사용하여 다른 사용자들의 파일을 암호화하지 않을 수 있다. 따라서, 각각의 사용자는 동시에 활성일 수 있는, 또는 서로 독립적으로 만료될 수 있는 자신의 암호화 키(또는 키들)를 가질 수 있고, 각각의 사용자의 파일들은 사용자 자신의 암호화 키를 사용하여 암호화될 수 있다.
예를 들어, 2명의 사용자가 컴퓨팅 장치(200)에 액세스할 수 있다. 컴퓨팅 장치(200)는 사용자가 파일들에 액세스하기 위해 보안 파티션(360)상의 상이한 하위 디렉터리 구조에 각각의 사용자를 배정할 수 있다. 제1 사용자가 컴퓨팅 장치(200)에 로그인할 때, 컴퓨팅 장치(200)는 암호화 키를 획득하고 새로운 암호화 키를 사용하여 제1 사용자의 파일들을 암호화하지만, 보안 파티션상의 다른 파일들은 처리하지 않는다. 제1 사용자가 작업함에 따라, 암호화 키는 전술한 바와 같이 주기적으로 리프레시될 수 있다. 나중에, 제1 사용자가 로그 오프할 때, 보안 소프트웨어(348)는 그것이 만료될 때까지 사용자의 암호화 키를 유지한다. 그 동안에, 제2 사용자가 로그인한다. 컴퓨팅 장치(200)는 제2 암호화 키를 획득하고 제2 사용자의 파일들을 암호화한다. 다시, 제2 사용자가 작업함에 따라, 암호화 키는 전술한 바와 같이 주기적으로 리프레시될 수 있다. 나중에, 제2 사용자가 로그 오프하고, 제1 사용자가 다시 로그인한다. 컴퓨팅 장치는 제1 사용자와 연관된 암호화 키가 여전히 유효한지를 결정한다. 유효하다면, 그것은 보안 파티션(360)상의 사용자의 파일들에 대한 액세스를 활성화한다. 그것이 유효하지 않으면, 보안 소프트웨어(346)는 새로운 암호화 키를 요청하고 새로운 암호화 키를 사용하여 사용자의 파일들을 암호화한다. 상이한 예들은 하나 이상의 사용자와 함께 그러한 암호화 방법론을 사용할 수 있다.
보안 파티션이 암호화된 후, 방법은 블록 430으로 진행한다.
블록 430에서, 파일 동기화 소프트웨어(348)는 보안 파티션에 저장된 파일들을 문서 저장소(352)에 저장된 파일들과 동기화시킨다. 이 예에서, 파일 동기화 소프트웨어(348)는 보안 파티션(360)과 문서 저장소(352) 간에 동기화시킬 파일들을 나타내는 레코드들을 유지한다. 예를 들어, 파일 동기화 소프트웨어(348)는 지난 30일(또는 다른 미리 설정된 또는 사용자가 구성 가능한 기간) 동안 사용자가 문서 저장소(352)에서 액세스한 모든 문서의 목록을 문서 저장소(352)로부터 검색하고 컴퓨팅 장치(200)상에서 사용자에 의해 생성된 임의의 새로운 문서들에 대한 항목들을 목록에 추가할 수 있다.
보안 파티션(360)과 문서 저장소(352) 간에 하나 이상의 파일을 동기화시키기 위해, 파일 동기화 소프트웨어(348)는 문서 저장소(352)에 저장되지 않은 보안 파티션(360)에 저장된 하나 이상의 파일을 식별하고 그 파일들 중 하나 이상의 파일을 문서 저장소(352)에 복사할 수 있다. 파일 동기화 소프트웨어(348)는 또한 보안 파티션(360) 내에 상주하지 않는 문서 저장소(352)에 저장된 하나 이상의 파일을 식별하고, 문서 저장소(352)로부터 그 파일들 중 하나 이상의 파일의 사본을 획득하여 이들을 보안 파티션(360)에 저장할 수 있다. 파일 동기화 소프트웨어(348)는 또한 보안 파티션(360)과 문서 저장소(352) 양쪽에 저장된 파일들의 버전들을 분석하고 파일의 상이한 버전이 각각의 위치에 언제 저장되었는지를 결정할 수 있다. 그 후 파일 동기화 소프트웨어(348)는 어떤 버전이 더 최근 것인지를 결정할 수 있고 이전 버전을 파일의 새로운 버전으로 덮어쓰기를 시도할 수 있다. 일부 예들에서, 파일 동기화 소프트웨어(348)는 파일의 이전 버전을 새로운 버전으로 덮어쓰지 않을 수 있지만, 대신에 두 버전을 유지하고 동기화시킬 수 있다. 예를 들어, 컴퓨팅 장치(200)의 사용자가 보안 파티션(360)에서 문서를 편집하는 경우, 파일 동기화 소프트웨어(348)는 편집된 문서를 문서 저장소(352)에 복사하고 그것이 이전 문서의 새로운 버전으로 저장될 것임을 나타낼 수 있다.
일부 예들에서, 파일 동기화 소프트웨어(348)는 단일 하위 디렉터리 또는 하위 디렉터리 그룹과 같은 보안 파티션의 일부만을 동기화시키도록 구성될 수 있다. 예를 들어, 컴퓨팅 장치(200)를 사용하는 각각의 사용자는 그들의 동기화된 파일들이 유지될 하위 디렉터리를 할당 및 배정받을 수 있다. 따라서, 파일 동기화 소프트웨어(348)는 컴퓨팅 장치(200)에 로그인된 사용자에 대한 파일들만을 동기화시킬 수 있다. 이러한 특징은 보안 파티션(360)을 문서 저장소(352)와 동기화시키기 위한 처리 및 대역폭 요건들을 감소시킬 수 있다.
보안 파티션의 동기화가 개시된 후에, 방법(400)은 블록 440으로 진행한다.
블록 440에서, 보안 소프트웨어(348)는 보안 파티션(360)에 대한 액세스를 활성화한다. 예를 들어, 보안 소프트웨어(348)는 보안 파티션(360)을 마운팅하여 액세스를 활성화할 수 있다. 일부 양태들에서, 보안 소프트웨어(348)는 보안 파티션(360) 내에 저장된 하나 이상의 파일에 대응하는 아이콘들 또는 다른 그래픽 요소들을 제공하는 그래픽 사용자 인터페이스를 제공할 수 있다. 일부 양태들에서, 보안 소프트웨어(348)는 보안 파티션(360)이 마운팅되면 그에 대한 액세스를 활성화하기 위해 임의의 긍정적인 조치들을 취할 필요가 없을 수 있다.
보안 소프트웨어(348)가 보안 파티션(360)에 대한 액세스를 활성화한 후에, 방법(400)은 블록 450으로 진행한다.
블록 450에서, 보안 소프트웨어(348)는 하나 이상의 암호화 키를 리프레시할지를 결정한다. 이 예에서, 보안 소프트웨어(348)는 암호화 키의 만료와 연관된 하나 이상의 기간을 식별한다. 예를 들어, 암호화 키는 그와 연관된 2개의 기간, 즉 리프레시 기간 및 만료 기간을 가질 수 있다. 보안 소프트웨어(348)는 키가 획득된 시간, 키가 처음으로 사용된 시간, 보안 파티션이 암호화된 시간, 또는 어떤 다른 시간에 기초할 수 있는, 암호화 키에 대한 시작 시간을 결정한다. 그 후 보안 소프트웨어(348)는 경과 시간을 결정하고 경과 시간을 2개의 기간과 비교한다. 기간이 경과하지도 않았고, 리프레시가 필요하지도 않은 경우, 방법은 블록 440으로 되돌아가고 사용자는 보안 파티션(360)에 계속 액세스할 수 있다. 리프레시 기간이 경과했거나 만료 기간이 경과한 경우, 방법(400)은 블록 450으로 진행하고, 이는 이하에서 더 상세히 설명된다. 어떤 경우에, 리프레시 타이머가 초과될 수 있지만, 보안 장치는 새로운 암호화 키를 획득할 수 없고, 따라서 보안 소프트웨어(348)는 또한 만료 시간을 체크할 수 있다. 만료 시간이 충족되면, 방법은 또한 블록 450으로 진행한다.
일부 예들에서, 키가 활성이었던 경과 시간을 결정하기보다는, 보안 소프트웨어(348)는 키에 대한 하나 이상의 만료 시간을 설정할 수 있다. 따라서, 보안 소프트웨어(348)는 현재 시간을 만료 시간(들)과 대조하여 키가 만료되었거나 리프레시될 필요가 있는지를 결정할 수 있다. 예를 들어, 보안 소프트웨어(348)는 키에 대해 2개의 만료 시간을 유지할 수 있다. 제1 만료 시간은 리프레시 시간이고 한편 제2 리프레시 시간은 만료 시간이다. 어느 하나의 시간이 충족되거나 초과되면, 방법(400)은 블록 460으로 진행한다. 일부 예들에서, 리프레시 시간은 만료 시간보다 이를 수 있다.
일부 예들에서, 보안 소프트웨어(348)는 암호화 키에 대해 단일 타이머만을 유지할 수 있고, 타이머가 경과했거나, 충족되었을 때, 방법(400)은 블록 450으로 진행한다. 또한, 일부 예들에서, 보안 소프트웨어(348)는 동일한 컴퓨팅 장치(200)를 사용하는 2명의 사용자를 가진 예에서 전술한 바와 같은, 다수의 암호화 키를 유지할 수 있다. 일부 그러한 예들에서, 보안 소프트웨어(348)는 각각의 암호화 키에 대해 별도의 리프레시 또는 만료 시간들 또는 타이머들을 유지할 수 있거나, 또는 모든 암호화 키에 대해 단일 시간/타이머를 유지할 수 있거나, 또는 이 둘의 조합일 수 있다. 예를 들어, 일 예에서, 보안 소프트웨어(348)는 각각의 암호화 키에 대해 개별 리프레시 시간들을 유지할 수 있지만, 모든 암호화 키가 만료되는 단일 만료 타이머를 유지할 수 있다.
위에 논의된 바와 같이, 다수의 사용자가 컴퓨팅 장치(200)에 액세스할 수 있다. 이러한 일 예에서, 보안 소프트웨어(348)는 각각의 사용자에 대해 상이한 암호화 키들을 유지한다. 제1 사용자가 컴퓨팅 장치에 로그인할 때, 보안 소프트웨어(348)는 제1 사용자와 연관된 암호화 키들만을 리프레시하려고 시도할 수 있지만, 보안 소프트웨어(348)는 여전히 상이한 사용자와 연관된 암호화 키가 만료될 수 있는지를 결정하기 위해 체크할 수 있고 따라서 방법(400)은 활성 사용자의 암호화 키가 리프레시될 필요가 없더라도 블록 460으로 진행할 수 있다. 이러한 일 예에서, 비활성 사용자(들)에 대한 암호화 키는 보안 파티션의 일부를 암호화하는 데에만 사용될 수 있으며, 따라서 비활성 사용자(들)의 암호화 키(들)가 만료되더라도, 활성 사용자의 암호화 키는 활성 상태로 유지되고 활성 사용자가 보안 파티션에 계속 액세스할 수 있게 할 수 있다.
보안 소프트웨어(348)가 암호화 키가 리프레시되어야 한다고 결정하면, 방법(400)은 블록 460으로 진행하고, 그렇지 않으면 방법(400)은 블록 440으로 되돌아간다.
블록 460에서, 보안 소프트웨어(348)는 새로운 암호화 키를 획득하기 위해 키 서버가 이용 가능한지를 결정한다. 이 예에서, 보안 소프트웨어(348)는 서버(350)와 통신하려고 시도한다. 보안 소프트웨어(348)가 서버(350)와 통신할 수 있는 경우, 방법(400)은 블록 410으로 되돌아가서 보안 소프트웨어가 전술한 바와 같이 새로운 암호화 키를 획득한다. 보안 소프트웨어(348)가 서버(350)와 통신할 수 없는 경우, 보안 소프트웨어(348)는 적합한 대체 서버 또는 백업 서버와 통신하려고 시도할 수 있다. 보안 소프트웨어(348)가 그러한 적합한 대체 또는 백업 서버와 통신할 수 있는 경우, 방법(400)은 블록 410으로 되돌아가서 보안 소프트웨어(348)가 전술한 바와 같이 새로운 암호화 키를 획득한다. 그러나, 보안 소프트웨어(348)가 적합한 서버와 통신할 수 없는 경우, 방법은 블록 470으로 진행한다.
블록 470에서, 보안 소프트웨어(348)는 암호화 키가 만료되었는지를 결정한다. 이 예에서, 보안 소프트웨어(348)는 암호화 키에 대한 만료 기간이 경과했는지를 결정한다. 위에 논의된 바와 같이, 보안 소프트웨어(348)는 암호화 키에 대한 리프레시 기간 및 만료 기간을 유지한다. 만료 기간이 경과하지 않은 경우, 방법은 블록 440으로 되돌아가지만; 만료 기간이 경과한 경우, 방법은 블록 472로 진행한다. 다른 예들에서, 많은 암호화 키들 중 하나만 만료될 수 있다. 예를 들어, 보안 소프트웨어(348)가 다수의 상이한 사용자에 대해 상이한 암호화 키들을 유지하고 활성 사용자에 대한 암호화 키들만을 리프레시하는 경우, 다른 사용자들에 대한 암호화 키들이 만료될 수 있는 동안 한 명의 사용자에 대한 암호화 키가 리프레시될 수 있다.
블록 472에서, 보안 소프트웨어(348)는 보안 파티션(360)에 대한 액세스를 비활성화한다. 이 예에서, 만료 기간은 암호화 키가 너무 오랫동안 사용되었음을 나타내고, 새로운 암호화 키가 획득되지 않았기 때문에, 보안 소프트웨어(348)는 보안 파티션(360)에 대한 액세스를 비활성화한다. 이 예에서, 보안 소프트웨어(348)는 임의의 열려 있는 파일들을 닫기 위한 것을 제외하고, 새로운 암호화 키가 획득될 때까지는 암호화 키에 대한 액세스를 비활성화함으로써, 그리고 보안 파티션(360)으로 향하는 모든 애플리케이션 명령을 거부함으로써 보안 파티션(360)에 대한 액세스를 비활성화한다. 일부 예들에서, 보안 소프트웨어(348)는 새로운 암호화 키가 획득될 때까지는 보안 파티션(360)에 대한 액세스를 방지하기 위해 보안 파티션(360)을 마운팅 해제할 수 있다. 또는, 일부 예들에서, 다수의 사용자들 각각이 상이한 암호화 키들을 가지고 있는 경우, 한 명의 사용자의 암호화 키가 만료되고, 한편 다른 사용자의 암호화 키는 리프레시된 상태로 유지될 수 있다. 이러한 일 예에서, 보안 소프트웨어(348)는 만료된 키와 연관된 보안 파티션(360) 내의 임의의 디렉터리들 또는 파일들에 대한 액세스를 비활성화한다. 또는, 파일이 다수의 사용자와 관련되는 경우, 보안 소프트웨어(348)는 예를 들어 파일과 연관된 사용자의 액세스 규칙을 비활성화함으로써 파일에 대한 액세스를 방지하면서 한 명의 사용자가 파일에 액세스하도록 허용할 수 있다. 액세스 규칙들은 도 5와 관련하여 이하에서 더 상세히 논의될 것이다.
보안 파티션(360)에 대한 액세스가 비활성화된 후에, 방법은 블록 460으로 되돌아가서 키 서버와 통신하려고 시도한다.
전술한 예시적인 방법(400)은 특정 시퀀스에 따라 진행하는 것으로 설명되었지만, 일부 양태들에서, 단계들의 시퀀스는 상이한 순서로 발생할 수 있거나, 또는 다수의 단계들이 동시에 발생할 수 있다. 따라서, 도 4 또는 도 4에 도시된 예시적인 방법(400)의 대응하는 설명을 검토할 때 단계들의 특정 순서화가 암시되어서는 안된다.
이제 도 5를 참조하면, 도 5는 신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 예시적인 방법(500)을 도시한다. 도 5의 방법(500)은 도 2에 도시된 컴퓨팅 장치(200) 및 도 3에 도시된 예시적인 시스템(300)과 관련하여 논의될 것이다. 그러나, 예시적인 방법들은 그러한 컴퓨팅 장치(200) 또는 그러한 예시적인 시스템(300)으로 제한되지 않는다. 오히려, 임의의 적합한 장치 또는 시스템이 사용될 수 있다. 이 예에서, 방법(500)은 블록 510에서 시작한다.
블록 510에서, 모니터링 소프트웨어(342)는 명령 큐(332)에 액세스한다. 이 예에서, 컴퓨팅 장치(200)는 다른 프로세스들(단일 또는 다중 스레드 프로세스들을 포함함)로서 실행되는, 다수의 애플리케이션이 정보를 표시하고, 파일들에 액세스하고, 컴퓨팅 장치(200)에 입력을 제공하는 것과 같은 다양한 기능을 수행하기 위해 OS에 의해 제공된 API 함수들에 액세스할 수 있게 하는 OS를 실행한다. 애플리케이션이 API 함수를 호출할 때, API 함수는 명령을 생성하고 이 명령을 실행을 위해 OS의 명령 큐에 삽입한다. 시간이 지남에 따라, OS는 큐 내의 명령들을 실행하고, 궁극적으로 새로 삽입된 명령에 도달하여 이를 실행한다.
도 3에 도시된 예에서, 모니터링 소프트웨어(342)는 명령 큐(332)에 액세스하고 큐(332) 내의 명령들에 액세스한다. 명령 큐(332)에 액세스하기 위해, 모니터링 소프트웨어(342)는 OS의 드라이버 레벨에서 프로세스로서 실행되고 따라서 그것은 명령 큐(332)를 모니터링할 충분한 액세스 권한을 제공받는다. 전형적으로, 명령 큐(332)는 사용자에 의해 실행되는 소프트웨어 애플리케이션이 명령 큐(332)에 액세스할 충분한 권한을 갖지 않는 방식으로 실행되지만, 일부 예들에서 특별한 액세스 권한이 요구되지 않는 경우, 모니터링 소프트웨어(342)는 추가 권한 없이 명령 큐(332)에 액세스할 수 있다. 다른 양태들에서, 모니터링 소프트웨어(342)는 충분한 액세스 권한을 가지고 동작하도록 특별히 구성되지 않을 수 있지만, 예를 들어 "sudo"와 같은 명령을 사용하여 슈퍼 사용자 권한을 모니터링 소프트웨어(342)에 제공함으로써, 충분한 액세스 권한을 부여하는 방식으로 실행될 수 있다. 모니터링 소프트웨어(342)가 명령 큐(332)에 액세스할 수 없는 경우, 모니터링 소프트웨어(342)는 보안 소프트웨어(348)에 메시지를 전송하거나 정보를 전달할 수 있고, 보안 소프트웨어(348)는 그 후 예를 들어 보안 파티션을 마운팅 해제하거나, 모든 암호화 키가 만료되게 함으로써, 보안 파티션(360)에 대한 액세스를 비활성화할 수 있다.
모니터링 소프트웨어(342)가 명령 큐에 액세스한 후에, 방법(500)은 블록 520으로 진행한다.
블록 520에서, 모니터링 소프트웨어(342)는 명령 큐(332) 내의 명령을 식별한다.
이제 도 6을 참조하면, 신뢰할 수 없는 장치에서 데이터를 보안하기 위한 예시적인 시스템이 도시되어 있다. 이 예에서, 모니터링 소프트웨어(342)는 모니터링 소프트웨어(342)가 액세스하고 있는 명령 큐(332) 내의 위치를 나타내기 위해 명령 큐(332)에 포인터(343)를 설정한다. 이 예에서, 명령 큐(332)는 큐이기 때문에, 명령들(610-616)은 하단(602)에서 상단(601)까지, 그들이 큐 내에 삽입되는 순서로 실행되고, 따라서 포인터(343)의 특정 위치에 대해, 모니터링 소프트웨어(342)는 새로운 명령들이 추가되는 명령 큐(332)의 상단(601)을 향한 단일 방향으로만 명령들에 액세스한다. 일부 양태들에서, 명령 큐는 상이한 구조들을 가질 수 있거나, 예를 들어 더 높은 우선 순위 명령들, 예를 들어, 인터럽트 핸들러로부터 발행되는 명령들을 수용하기 위해 다수의 명령 큐를 포함할 수 있거나, 큐 구조를 포함하지 않을 수 있다. 이러한 양태들에서, 명령 구조 내로의 액세스는 그것의 아키텍처에 따라 달라질 수 있지만, 그에 따라 모니터링될 수 있다.
이 예에서, 모니터링 소프트웨어(342)가 처음 시작될 때, 그것은 포인터(343)를 명령 큐(332)의 하단에 설정하고, 큐(332)에 명령이 있으면, 명령(610)을 분석한다. 또한, 그것이 처음 시작될 때, 모니터링 소프트웨어(342)는 보안 파티션(360)상에서 명령들을 수행하려고 시도하는 프로세스들을 추적하기 위한 데이터 구조를 설정한다. 데이터 구조는 모니터링 소프트웨어(342)가 명령 큐(332) 내의 명령이 허용되어야 하는지의 여부를 결정할 수 있게 하는 0 이상의 레코드를 포함한다. 명령을 식별하기 위해, 모니터링 소프트웨어(342)는 포인터(343)에 의해 지시된 명령을 판독하고 명령의 프로세스 ID를 식별한다. 그 후 모니터링 소프트웨어(342)는 프로세스 ID에 대해 그것의 데이터 구조를 검색한다. 프로세스 ID가 발견되면, 명령은 식별되고, 방법(500)은 블록 530으로 진행한다. 그러나, 일부 양태들에서, 모니터링 소프트웨어(342)는 또한 보안 소프트웨어(346) 또는 파일 동기화 소프트웨어(348)와 같은, 모니터링으로부터 면제되는(exempt) 프로세스 ID를 식별하는 레코드들을 유지할 수 있다. 면제된 프로세스 ID가 식별되면, 모니터링 소프트웨어(342)는 포인터(343)를 명령 큐(332) 내의 다음 명령, 예를 들어 명령(611)으로 이동시킨다. 또한, 일부 예들에서, 데이터 구조 내의 레코드들은 레코드가 면제된 프로세스 ID와 관련되어 있는지에 관한 지시자를 포함할 수 있다. 예를 들어, 파일 동기화 소프트웨어(348)는 특정 시간에 면제될 수 있지만, 다른 시간에는 비면제(non-exempt)될 수 있다. 예를 들어, 보안 소프트웨어(346)가 모든 암호화 키가 만료되었다고 결정하면, 그것은 모니터링 소프트웨어(342)가 파일 동기화 소프트웨어(348) 프로세스 ID의 상태를 그것이 비면제임을 나타내도록 변경하게 함으로써 파일 동기화를 방지할 수 있다.
모니터링 소프트웨어(342)가 그것의 데이터 구조에서 명령의 프로세스 ID에 대한 레코드를 찾지 못하면, 모니터링 소프트웨어(342)는 경로 이름과 같은 보안 파티션(360)과 연관된 데이터에 대해 명령을 검색한다. 예를 들어, 보안 파티션을 포함하는 경로 이름이 명령 내에 위치하는 경우, 모니터링 소프트웨어(342)는 명령을 식별하고 방법(500)은 블록 530으로 진행한다. 또한, 모니터링 소프트웨어(342)는 그것의 데이터 구조에 대한 새로운 레코드를 생성하고 프로세스 ID 및 액세스된 파일의 경로 및 파일 이름과 같은, 명령과 연관된 정보를 저장한다. 따라서, 차후의 명령들에 대해, 모니터링 소프트웨어(342)는 경로 또는 파일 이름을 검색하기보다는 프로세스 ID에 기초하여 레코드를 찾을 수 있다.
일부 양태들에서, 명령 큐(332) 내의 명령들은 스크린샷 명령과 같은, 보안 파티션과 직접 관련되지 않은 프로세스 ID와 관련될 수 있다. 이러한 명령은 보안 파티션 내의 데이터에 액세스하고 있는 프로세스 이외의 프로세스에 의해 발행될 수 있다. 예를 들어, 사용자가 보안 파티션에 저장된 문서의 일부를 보여주는 워드 프로세싱 프로그램 화면의 스크린샷을 취하려고 시도하면, 스크린샷 기능의 프로세스 ID는 워드 프로세싱 프로그램의 프로세스 ID와 상이할 수 있다. 그러나, 이러한 경우에, 스크린샷에 대한 명령 큐(332) 내의 명령은 전형적으로 스크린샷이 취해지고 있는 활성 창을 갖는 프로세스의 프로세스 ID를 포함할 것이다. 따라서, 모니터링 소프트웨어(342)는 또한 또 다른 프로세스 ID에 의해 참조되고 있는 프로세스 ID들에 대해 명령 큐(332) 내의 명령들을 검색할 수 있다. 모니터링 소프트웨어(342)가 스크린샷 프로세스 ID가 워드 프로세싱 프로그램에 대한 프로세스 ID를 참조한다는 것을 식별하면, 모니터링 소프트웨어(342)는 명령을 식별할 수 있다.
이 예에서, 모니터링 소프트웨어(342)는 사용자 또는 관리자 선호에 따라 구성될 수 있는, 사전 정의된 레이트로, 예를 들어 밀리초마다 명령 큐(332)에 액세스한다. 그러나, 일부 양태들에서, 다른 레이트들이 사용될 수 있거나, 다른 트리거들이 사용될 수 있다. 예를 들어, 새로운 애플리케이션의 시작이 모니터링 소프트웨어(342)가 명령 큐(332)에 액세스하도록 트리거할 수 있거나, 모니터링 소프트웨어(342)는 새로운 명령이 명령 큐(332)를 체크하기 위해 명령 큐(332)에 입력될 때마다 발생하는 인터럽트와 같은 이벤트를 설정할 수 있다.
이제 도 7을 참조하면, 도 7은 신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 프로세스 ID들을 추적하기 위한 예시적인 데이터 구조(700)를 도시한다. 데이터 구조(700)는 명령 큐 내의 명령들을 식별하는 데 사용될 수 있는 0 또는 그 이상의 레코드(710)를 저장하도록 구성된다. 이 예에서, 각각의 레코드는 프로세스 ID, 사용자 ID, 애플리케이션, 경로, 및 파일 이름에 대한 필드들을 포함한다. 프로세스 ID는 OS에 의해 실행중인 소프트웨어 애플리케이션의 인스턴스에 배정된 프로세스 ID이다. 일부 예들에서, 데이터 구조는 스레드 ID들을 추적할 수 있다. 사용자 ID는 프로세스를 "소유"하는 사용자와 연관된 식별자이다. 대부분의 OS들에서, 단 한 명의 사용자가 컴퓨팅 장치에 로그인된 경우에도, 프로세스들은 상이한 "사용자들"에 의해, 예를 들어 상이한 서비스들에 의해 또는 OS 자체에 의해 시작될 수 있으므로 상이한 사용자 ID들을 가질 수 있다. 이 예에서, 사용자 ID "103"은 사용자 "jsmith"에 대응하는 반면, 사용자 ID "100"은 OS에 대응한다. "애플리케이션" 필드는 프로세스 ID와 연관된 애플리케이션의 이름이다. "경로" 필드는 대응하는 프로세스 ID에 의해 액세스되고 있는 문서의 경로이고, "파일 이름" 필드는 대응하는 프로세스 ID에 의해 액세스되고 있는 문서의 이름이다. 이 예에서는, 모니터링 소프트웨어(342)에 의해 식별된 5개의 프로세스가 있고, 이중 4개는 사용자 ID "103"에 의해 시작되었고 하나는 OS(사용자 ID "100"을 가짐)에 의해 시작되었다. 따라서, 모니터링 소프트웨어(342)가 명령 큐(332) 내의 명령을 분석할 때, 그것은 데이터 구조(700)를 체크하여 명령이 보안 파티션과 관련되기 때문에 명령이 식별되어야 하는지를 결정할 수 있다.
이 예에서, 데이터 구조(700)는 레코드의 정렬되지 않은 링크된 목록으로서 저장되지만, 일부 예들에서는, 상이한 유형의 데이터 구조들이 사용될 수 있다. 예를 들어, 해시 테이블, 관계형 데이터베이스, 객체 데이터베이스, 정렬된 목록, 또는 다른 적합한 데이터 구조들이 사용될 수 있다.
모니터링 소프트웨어(342)가 보안 파티션과 연관된 데이터를 찾지 못하면, 모니터링 소프트웨어는 포인터(343)를 명령 큐(332) 내의 다음 명령으로 이동시킨다. 그 후 모니터링 소프트웨어는 다음 명령(611)이 식별되어야 하는지를 결정하기 위해 프로세스를 다시 반복한다.
모니터링 소프트웨어(342)가 명령을 식별한 후에, 방법(500)은 블록 530으로 진행한다. 방법(500)은 블록 530으로 진행할 수 있지만, 또한 다음 명령, 예를 들어, 명령(611)과 관련하여 블록 520에서 실질적으로 동시에 기능들을 수행할 수 있다는 점에 유의해야 한다. 예를 들어, 일부 예들에서, 모니터링 소프트웨어(342)는 모니터링 소프트웨어의 메인 스레드가 명령 큐 내의 다음 명령으로 이동하는 동안, 방법의 나머지 단계들 530, 540, 542, 550, 560을 수행하기 위해 새로운 스레드를 생성할 수 있다.
블록 530에서, 모니터링 소프트웨어(342)는 액세스 규칙들(344)에 액세스한다. 이 예에서, 액세스 규칙들(344)은 데이터베이스, 메모리 내 데이터 구조, 또는 액세스 규칙들(344)을 유지하기 위한 다른 적합한 구조일 수 있는, 데이터 저장소에 저장된다. 이 예에서, 모니터링 소프트웨어(342)는 먼저 식별된 명령과 연관된 경로 및 파일 이름을 식별한다. 예를 들어, 블록 520과 관련하여 위에 논의된 바와 같이, 모니터링 소프트웨어(342)는 보안 파티션(360)과 연관된 프로세스 ID들을 추적하는 데이터 구조를 유지한다. 모니터링 소프트웨어(342)는 프로세스 ID와 연관된 파일 이름에 액세스하여 이를 획득하고 파일 이름과 연관된 하나 이상의 액세스 규칙에 대한 액세스 규칙들을 검색한다. 일 예에서, 액세스 규칙들(344)은 관계형 데이터베이스에 저장되고, 모니터링 소프트웨어(342)는 레코드 내의 파일 이름이 모니터링 소프트웨어의 데이터 구조 내의 레코드로부터의 파일 이름과 일치하는 임의의 레코드들에 대한 검색 쿼리 언어("SQL") 쿼리를 생성한다.
다수의 레코드가 반환되면, 모니터링 소프트웨어(342)는 반환된 레코드들을 검색하여 식별된 명령과 연관된 사용자 ID와 관련되는 임의의 것을 식별한다. 예를 들어, 다수의 사용자가 동일한 파일에 대해 상이한 액세스 규칙들을 가질 수 있다. 따라서, 모니터링 소프트웨어(342)는 파일 및 사용자 모두에 대한 적절한 액세스 규칙을 식별해야 한다. 일부 예들에서는, 동일한 사용자에 대한 상이한 애플리케이션들에 대해 상이한 액세스 규칙들이 있을 수 있다. 이러한 일 경우에, 모니터링 소프트웨어(342)는 식별된 명령과 연관된 파일, 사용자, 및 애플리케이션과 연관된 레코드를 식별하기 위해 반환된 레코드들을 더 리파인(refine)할 수 있다. 일부 예들에서, 적용할 액세스 규칙을 식별하기 위해 다른 기준들이 사용될 수 있다.
일부 예들에서, 다수의 액세스 규칙이 명령에 동등하게 적용 가능한 경우가 발생할 수 있다. 이러한 일 예에서, 모니터링 소프트웨어(342)는 식별된 명령에 대해 가장 제한적인 규칙을 갖는 액세스 규칙을 사용한다. 예를 들어, 식별된 명령이 "인쇄" 명령이고 2개의 액세스 규칙이 모두 적용 가능하지만, 하나는 인쇄를 금지하는 반면 다른 하나는 인쇄를 허용하는 경우, 모니터링 소프트웨어(342)는 식별된 명령에 대한 액세스 규칙들을 비교할 것이고, 규칙들이 충돌하면, 명령을 금지하는 액세스 규칙을 선택할 것이다. 그러나, 일부 예들에서, 모니터링 소프트웨어(342)는 다수의 액세스 규칙의 상대적인 연령을 결정하고, 최근 액세스 규칙 변경을 반영할 수 있거나, 이전 규칙에 대한 예외를 나타낼 수 있는, 최신 액세스 규칙을 선택할 수 있다.
일부 예들에서, 관리자, 또는 다른 사용자는 모니터링 소프트웨어(342)가 2개 이상의 액세스 규칙 간의 충돌을 처리하는 방법을 구성할 수 있다. 예를 들어, 관리자는 수행될 명령에 기초하여 충돌 해결 규칙들을 설정할 수 있다. 일 예에서, 관리자는 "이동", "복사", "붙여넣기", "이름 바꾸기", "다른 이름으로 저장", "저장" 및 "이메일" 명령들에 대한 충돌들을 해결하여 가장 제한적인 액세스 규칙을 선택하도록 모니터링 소프트웨어(342)를 구성할 수 있는 반면, "열기" 및 "인쇄" 명령들은 최소 제한적인 액세스 규칙을 사용할 수 있다. 이러한 충돌 해결 기법은 사용자가 문서를 열고 보는 것은 허용하지만, 문서를 편집하거나 또는 다른 식으로 파일을 보안 파티션에서 이동시키는 것은 허용하지 않을 수 있다(즉, 이러한 충돌 해결 기법은 파일에 대한 일부 읽기 전용 액세스를 제공할 수 있다.
일부 양태들에서, 액세스 규칙들(344)은 디폴트 규칙들 및 사용자 특정적인 규칙들을 포함할 수 있다. 따라서, 명령에 대한 규칙들에 대한 검색은 항상 2개의 액세스 규칙, 즉 디폴트 규칙 및 사용자 특정적인 규칙을 반환할 수 있다. 이러한 경우에, 모니터링 소프트웨어(342)는 사용자 특정적인 규칙이 존재한다면 항상 사용자 특정적인 규칙을 사용할 수 있고, 그렇지 않으면 디폴트 규칙을 사용할 수 있다. 대안적으로, 파일에 대한 액세스 규칙이 발견되지 않으면, 모니터링 소프트웨어(342)는 디폴트 규칙이 존재하는 경우 디폴트 규칙을 검색하고 적용할 수 있거나, 또는 액세스 규칙이 발견되지 않으면 모든 명령을 단순히 거부할 수 있다.
일부 예들에서, 모니터링 소프트웨어(342)는 액세스 규칙들에 직접 액세스하지 않을 수 있지만, 대신에, 식별된 명령이 허용되는지를 결정하는 액세스 규칙 프로세스와 같은 다른 프로세스에 메시지를 전송할 수 있다. 예를 들어, 모니터링 소프트웨어(342)는 명령을 식별하고 명령의 적어도 일부를 포함하는 메시지를 제2 프로세스에 전송할 수 있다. 그 후 제2 프로세스는 메시지 수신에 응답하여, 액세스 규칙 데이터 저장소에 액세스하여 식별된 명령과 연관된 액세스 규칙을 식별한다.
모니터링 소프트웨어(342)가 식별된 명령과 연관된 액세스 규칙을 식별한 후에, 방법(500)은 블록 540으로 진행한다.
블록 540에서, 모니터링 소프트웨어(342)는 식별된 규칙이 식별된 명령이 수행되는 것을 허용하는지를 결정한다. 명령이 허용되는지를 결정하기 위해, 모니터링 소프트웨어(342)는 식별된 명령과 연관된 권한을 갖는 식별된 규칙 내의 필드를 식별한다. 예를 들어, 식별된 명령이 "열기" 명령이면, 모니터링 소프트웨어(342)는 "열기" 명령에 대한 권한에 대응하는 식별된 규칙 내의 필드를 식별한다. 이 예에서, 권한들을 갖는 필드들은 이진 값들을 갖는다 - 명령은 허용되거나 허용되지 않을 수 있다. 그러나, 일부 예들에서, 하나 이상의 필드는 상이한 종류의 값들을 가질 수 있다. 예를 들어, 필드는 특정 동작을 특정 횟수 허용할 수 있다(예를 들어, 사용자는 파일을 최대 5회 열도록 허용될 수 있다). 일부 예들에서, 액세스 규칙 필드는 명령이 필드에 저장된 날짜 또는 시간 전에(또는 그 날짜 또는 시간에) 수행될 수 있지만 그 날짜 또는 시간 후에는 허용되지 않도록 날짜 또는 시간을 포함할 수 있다. 더 추가적인 변형들도 가능할 수 있다.
위에 논의된 바와 같이, 모니터링 소프트웨어(342)가 명령이 허용되는지를 결정하기 위해 제2 프로세스와 통신하는 일부 예들에서, 제2 프로세스는 명령이 허용되는지 여부를 나타내는 응답을 생성하여 모니터링 소프트웨어(342)에 전송할 수 있다. 예를 들어, 제2 프로세스는 식별된 명령의 프로세스 ID를 포함할 수 있는, 모니터링 소프트웨어로부터 수신된 메시지에 대응하는 값을 포함하고, 명령이 허용되는지를 나타내는 값을 포함하는 응답 메시지를 생성할 수 있다. 그 후, 제2 프로세스는 응답 메시지를 모니터링 소프트웨어(342)에 전송할 수 있다.
모니터링 소프트웨어(342)가 식별된 명령이 허용된다고 결정하면, 방법은 블록 542로 진행한다.
블록 542에서, 모니터링 소프트웨어(342)는 식별된 명령에 관련하여 더 이상의 동작을 취하지 않는다. 이 예에서, 모니터링 소프트웨어(342)는 액세스 규칙들에 적어도 부분적으로 기초하여 식별된 명령이 허용된다고 결정하였고, 따라서, 명령이 OS에 의해 실행되는 것을 허용한다. 일부 예들에서, 모니터링 소프트웨어(342)는 식별된 명령이 감지된 것, 대응하는 규칙이 식별된 것, 및 식별된 명령이 허용된 것임을 나타내는 항목을 감사 로그(345)에 생성할 수 있다. 위에 논의된 일 예와 같은 일부 예들에서, 모니터링 소프트웨어(342)는 예를 들어 특정 명령이 문서상에서 수행될 수 있는 횟수와 연관된 값을 감소시키도록 액세스 규칙을 업데이트할 수 있다.
블록 542에서 임의의 처리가 완료된 후에, 방법(500)은 블록 520으로 되돌아가서 모니터링 소프트웨어가 다음 명령을 식별한다.
블록 540에서, 모니터링 소프트웨어(342)가 식별된 명령이 허용되지 않는다고 결정하면, 방법(500)은 블록 550으로 진행한다.
블록 550에서, 모니터링 소프트웨어(342)는 식별된 명령을 명령 큐(332)로부터 삭제한다. 이 예에서, 명령 큐(332)는 명령들이 삽입되는 원형 버퍼(circular buffer)를 사용하여 제공된다. 원형은 큐의 헤드(head)에 대한 그리고 큐의 테일(tail)에 대한 포인터를 포함하여 새로운 명령어들이 큐의 테일에 추가되고 실행될 명령들이 큐의 헤드로부터 취해지도록 한다. 새로운 명령이 큐에 추가될 때, 테일 포인터가 증가되고, 버퍼의 끝에 도달하면, 버퍼의 시작을 지시하도록 설정된다. 유사하게, 명령이 실행될 때, 헤드 포인터가 증가되고, 테일 포인터와 마찬가지로, 버퍼의 끝에 도달하면, 버퍼의 시작을 지시하도록 설정된다.
원형 버퍼로부터 명령을 삭제하기 위해, 모니터링 소프트웨어(342)는 OS가 원형 버퍼 내의 항목에 도달할 때 아무런 동작도 수행되지 않도록 명령 큐 내로 "무 조작(no operation)" 또는 유사 항목을 대체할 수 있거나, 또는 모니터링 소프트웨어(342)는 헤드 포인터가 명령에 도달할 때 명령이 실행되지 않도록 명령이 실행되었음을 나타내도록 식별된 명령 내의 값을 변경할 수 있다. 식별된 명령이 테일 포인터의 위치에 인접한 위치에 있다면, 모니터링 소프트웨어(342)는 테일 포인터를 단순히 이동시켜서 명령 큐에 삽입된 다음 명령이 허용되지 않은 명령을 덮어쓰도록 할 수 있다. 일부 예들에서, 모니터링 소프트웨어(342)는 "무 조작" 또는 유사 명령으로 명령을 덮어쓰고 테일 포인터를 이동시켜서 다음 명령이 "무 조작" 명령을 덮어쓰도록 할 수 있다. 이러한 양태는 새로운 명령이 허용되지 않은 명령을 덮어쓰기 전에 헤드 포인터가 테일 포인터에 도달하는 경우 잠재적인 경쟁 조건을 제거할 수 있다. 일부 예들에서, 허용되지 않은 명령이 헤드 포인터에 바로 인접하면, 모니터링 소프트웨어(342)는 허용되지 않은 명령을 건너뛰도록 헤드 포인터를 조정할 수 있다.
일부 예들에서, 명령 큐(332)는 링크된 목록 또는 이중 링크된 목록과 같은 상이한 데이터 구조를 사용할 수 있다. 이러한 일 예에서, 모니터링 소프트웨어(342)는 목록 내의 노드를 삭제하고, 삭제된 노드에 인접한 2개의 목록 노드 데이터 구조 내의 포인터들을 그 2개의 목록 노드 데이터 구조가 서로를 지시하도록 수정하여, 삭제된 노드를 우회할 수 있다. 일부 예들에서, 명령 큐(332)는 상이한 유형의 데이터 구조에 저장될 수 있고 적합한 삭제 전략이 그러한 예들에서 사용될 수 있다.
식별된 명령을 명령 큐(332)로부터 삭제하는 것 외에, 모니터링 소프트웨어(342)는 항목을 감사 로그(345)에 추가할 수도 있다. 예를 들어, 모니터링 소프트웨어(342)는 시간 및 날짜 스탬프, 사용자 이름, 파일 이름, 식별된 명령, 및 애플리케이션 이름을 갖는 항목을 추가할 수 있다.
일부 예들에서, 모니터링 소프트웨어(342)가 식별된 명령을 명령 큐(332)로부터 삭제한 후에, 방법(500)은 블록 520으로 되돌아가서 추가 명령들을 분석한다. 일부 예들에서, 위에 논의된 바와 같이, 모니터링 소프트웨어(342)는 식별된 명령이 허용되어야 하는지 여부를 결정하기 위해 스레드를 시작할 수 있다. 이러한 일 예에서, 식별된 명령을 명령 큐(332)로부터 삭제한 후에, 스레드는 종료될 수 있다. 일부 예들에서, 상기 방법은 블록 560으로 진행할 수 있다.
블록 560에서, 모니터링 소프트웨어(342)는 시도된 명령이 허용되지 않았다는 통지를 사용자에게 제공한다. 모니터링 소프트웨어(342)가 식별된 명령을 명령 큐(332)로부터 삭제할 때, 사용자에게 통지가 제공되지 않는 한, 명령은 단순히 실행되지 않고, 사용자는 그것이 버그 또는 어떤 다른 오류로 인한 것이 아님을 인식하지 못할 수 있다. 따라서, 일부 예들에서, 통지가 사용자에게 제공될 수 있다. 예를 들어, 모니터링 소프트웨어(342)는 사용자가 명령을 수행할 권한이 없음을 나타내는 메시지뿐만 아니라 허용되지 않은 명령을 나타내는 대화 상자를 생성하여 표시할 수 있다. 일부 예들에서, 명령이 허용되지 않아 실행되지 않았음을 나타내기 위해 청각, 시각, 촉각, 또는 다른 통지들이 사용자에게 제공될 수 있다.
모니터링 소프트웨어(342)가 통지를 제공한 후에, 방법(500)은 블록 520으로 되돌아가서 다음 명령을 식별한다. 일부 예들에서, 위에 논의된 바와 같이, 모니터링 소프트웨어(342)는 식별된 명령이 허용되어야 하는지 여부를 결정하기 위해 스레드를 시작할 수 있다. 이러한 일 예에서, 사용자에게 통지를 제공한 후에, 스레드는 종료될 수 있다.
일부 예들에서, 도 5의 방법(500)은 도 4의 예시적인 방법(400)과 병행하여 또는 이와 함께 수행될 수 있다. 도 4의 예시적인 방법(400)은, 위에 설명된 바와 같이, 보안 파티션(360)에 대한 액세스를 제공할 수 있는 반면, 도 5의 방법(500)은 보안 파티션(360) 내의 상이한 파일들에 대해 실행되는 명령들을 규제할 수 있다. 그러나, 도 5의 예시적인 방법(500)은 도 4와 독립적으로 수행될 수 있고, 도 4의 예시적인 방법(400)의 수행은 필수가 아니다. 또한, 도 4의 예시적인 방법(400)은 도 5의 예시적인 방법을 수행하지 않고 수행될 수 있다. 그러나, 두 방법(400, 500) 모두를 수행하는 것은 신뢰할 수 없는 장치들에서 데이터를 보안하기 위한 향상된 이점들을 제공할 수 있다.
본 명세서에서의 방법들 및 시스템들은 다양한 머신들에서 실행되는 소프트웨어의 관점에서 설명되지만, 이 방법들 및 시스템들은 특히 다양한 방법들을 실행하기 위한 필드 프로그래머블 게이트 어레이(FPGA)와 같은 특별히 구성된 하드웨어로서 구현될 수도 있다. 예를 들어, 디지털 전자 회로로, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어로, 또는 이들의 조합으로 예들이 구현될 수 있다. 일 예에서, 장치는 프로세서 또는 프로세서들을 포함할 수 있다. 프로세서는 프로세서에 결합된 랜덤 액세스 메모리("RAM")와 같은 컴퓨터 판독 가능 매체를 포함한다. 프로세서는 이미지 편집을 위해 하나 이상의 컴퓨터 프로그램을 실행하는 것과 같이, 메모리에 저장된 컴퓨터 실행 가능 프로그램 명령어들을 실행한다. 이러한 프로세서들은 마이크로프로세서, 디지털 신호 프로세서("DSP"), 주문형 집적 회로("ASIC"), 필드 프로그래머블 게이트 어레이("FPGA"), 및 상태 머신을 포함할 수 있다. 이러한 프로세서들은 프로그램 가능한 논리 제어기("PLC"), 프로그램 가능한 인터럽트 제어기("PIC"), 프로그램 가능한 논리 장치("PLD"), 프로그램 가능한 판독 전용 메모리("PROM"), 전기적으로 프로그램 가능한 판독 전용 메모리("EPROM" 또는 "EEPROM"), 또는 다른 유사 장치들과 같은 프로그램 가능한 전자 장치를 더 포함할 수 있다.
이러한 프로세서들은 명령어들을 저장할 수 있는 매체, 예를 들어 컴퓨터 판독 가능 저장 매체를 포함할 수 있거나 또는 이와 통신할 수 있고, 명령어들은 프로세서에 의해 실행될 때, 프로세서로 하여금, 프로세서에 의해 수행되거나, 지원되는, 본 명세서에 설명된 단계들을 수행하게 할 수 있다. 컴퓨터 판독 가능 매체의 예들은 웹 서버 내의 프로세서와 같은 프로세서에 컴퓨터 판독 가능 명령어들을 제공할 수 있는 전자, 광학, 자기, 또는 다른 저장 장치를 포함할 수 있지만, 이에 제한되는 것은 아니다. 매체의 다른 예들은 플로피 디스크, CD-ROM, 자기 디스크, 메모리 칩, ROM, RAM, ASIC, 구성된 프로세서, 모든 광학 매체, 모든 자기 테이프 또는 다른 자기 매체, 또는 컴퓨터 프로세서가 판독할 수 있는 임의의 다른 매체를 포함하지만, 이에 제한되는 것은 아니다. 설명된 프로세서 및 처리는 하나 이상의 구조로 이루어질 수 있고, 하나 이상의 구조를 통해 분산될 수 있다. 프로세서는 본 명세서에 설명된 방법들(또는 방법들의 부분들) 중 하나 이상을 수행하기 위한 코드를 포함할 수 있다.
일부 예들에 대한 전술한 설명은 예시 및 설명의 목적으로만 제공되었으며, 포괄적인 것으로, 또는 본 개시물을 개시된 정확한 형태들로 제한하는 것으로 의도되지 않는다. 본 개시의 사상 및 범위를 벗어나지 않으면서 본 기술분야의 기술자들에게는 그것의 수많은 수정들 및 개조들이 명백할 것이다.
본 명세서에서 예 또는 구현예에 대한 언급은 그 예와 관련하여 설명된 특정 특징, 구조, 동작, 또는 다른 특성이 본 개시의 적어도 하나의 구현예에 포함될 수 있음을 의미한다. 본 개시는 그와 같이 설명된 특정 예들 또는 구현예들로 제한되지 않는다. 본 명세서의 다양한 곳에서 "일 예에서", "예에서", "일 구현예에서" 또는 "구현예에서"라는 문구들, 또는 그의 변형 문구들의 출현은 반드시 동일한 예 또는 구현예를 언급하는 것은 아니다. 일 예 또는 구현예와 관련하여 이 명세서에 설명된 임의의 특정 특징, 구조, 동작, 또는 다른 특성은 임의의 다른 예 또는 구현예에 관련하여 설명된 다른 특징들, 구조들, 동작들, 또는 다른 특성들과 결합될 수 있다.

Claims (27)

  1. 방법으로서,
    제1 프로세스에 의해, 명령 큐(command queue) 내의 명령을 식별하는 단계 - 상기 명령은 제2 프로세스로부터의 명령이고 보안 데이터에 대한 동작(action)을 나타냄 -;
    상기 동작 및 사용자 자격 증명(user credential)에 기초하여 상기 명령이 허용되는지 여부를 결정하는 단계; 및
    상기 명령이 허용되지 않는다는 결정에 응답하여, 상기 제1 프로세스에 의해, 상기 명령을 상기 명령 큐로부터 제거하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 명령을 식별하는 단계는 보안 저장 위치와 연관된 상기 명령 큐 내의 항목(entry)을 식별하는 단계, 및 상기 항목에 기초하여 소프트웨어 애플리케이션을 식별하는 단계를 포함하는, 방법.
  3. 제2항에 있어서, 상기 항목을 식별하는 단계는 상기 보안 저장 위치에 대한 컴퓨터 판독 가능 매체 상의 경로 또는 상기 보안 데이터에 액세스하는 소프트웨어 애플리케이션의 프로세스 식별자를 식별하는 단계를 포함하는, 방법.
  4. 제2항에 있어서, 상기 보안 저장 위치는 컴퓨터 판독 가능 매체의 별도로 마운팅 가능한 파티션(separately-mountable partition)을 포함하는, 방법.
  5. 제1항에 있어서, 상기 보안 데이터는 보안 저장 위치 내에 저장된 데이터를 포함하고, 상기 명령을 식별하는 단계는 상기 보안 데이터에 액세스하는 프로세스의 프로세스 식별자와 연관된 상기 명령 큐 내의 항목을 식별하는 단계를 포함하는, 방법.
  6. 제1항에 있어서, 상기 명령 큐는 운영 체제 명령 큐를 포함하는, 방법.
  7. 제1항에 있어서, 상기 명령 큐는 애플리케이션 서버 명령 큐를 포함하는, 방법.
  8. 제1항에 있어서, 상기 명령 큐는 가상 머신 명령 큐를 포함하는, 방법.
  9. 제1항에 있어서, 상기 명령이 허용된다는 결정에 응답하여, 상기 명령을 상기 명령 큐로부터 제거하지 않는 단계를 더 포함하는, 방법.
  10. 제1항에 있어서, 상기 명령은 저장 명령, 다른 이름으로 저장 명령(save as command), 열기 명령, 이동 명령, 이름 바꾸기 명령, 인쇄 명령, 복사 명령, 잘라내기 명령, 붙여넣기 명령, 이메일 명령, 스크린샷 명령, 이름 바꾸기 명령, 또는 공유 명령 중 적어도 하나를 포함하는, 방법.
  11. 장치로서,
    비일시적 컴퓨터 판독 가능 매체; 및
    상기 비일시적 컴퓨터 판독 가능 매체와 통신하는 프로세서
    를 포함하고, 상기 프로세서는
    제1 프로세스에 의해, 다른 프로세스들로부터의 명령들을 식별하기 위해 명령 큐를 모니터링하고 - 상기 명령들 중 적어도 하나의 명령은 보안 데이터에 대한 동작을 나타냄 -;
    하나 이상의 액세스 규칙에 액세스하여 상기 적어도 하나의 명령이 허용되는지 여부를 결정하고;
    상기 명령이 허용되지 않는다는 결정에 응답하여, 상기 명령을 상기 명령 큐로부터 제거하도록 구성되는, 장치.
  12. 제11항에 있어서, 상기 프로세서는
    보안 저장 위치와 연관된 상기 명령 큐 내의 항목을 식별하고,
    상기 명령을 식별하기 위해, 상기 항목에 기초하여 소프트웨어 애플리케이션을 식별하도록 더 구성되는, 장치.
  13. 제12항에 있어서, 상기 프로세서는 상기 항목을 식별하기 위해 상기 보안 저장 위치에 대한 컴퓨터 판독 가능 매체 상의 경로를 식별하도록 더 구성되는, 장치.
  14. 제12항에 있어서, 상기 보안 저장 위치는 컴퓨터 판독 가능 매체의 별도로 마운팅 가능한 파티션을 포함하는, 장치.
  15. 제11항에 있어서, 상기 보안 데이터는 보안 저장 위치 내에 저장된 데이터를 포함하고, 상기 프로세서는 상기 명령을 식별하기 위해 상기 보안 데이터에 액세스하는 프로세스의 프로세스 식별자와 연관된 상기 명령 큐 내의 항목을 식별하도록 더 구성되는, 장치.
  16. 제11항에 있어서, 상기 명령 큐는 운영 체제 명령 큐를 포함하는, 장치.
  17. 제11항에 있어서, 상기 프로세서는 상기 명령이 허용되는 경우 상기 명령을 상기 명령 큐로부터 제거하지 않도록 더 구성되는, 장치.
  18. 제11항에 있어서, 상기 명령은 저장 명령, 다른 이름으로 저장 명령, 열기 명령, 이동 명령, 이름 바꾸기 명령, 인쇄 명령, 복사 명령, 잘라내기 명령, 붙여넣기 명령, 이메일 명령, 스크린샷 명령, 이름 바꾸기 명령, 또는 공유 명령 중 적어도 하나를 포함하는, 장치.
  19. 프로그램 코드를 포함하는 비일시적 컴퓨터 판독 가능 매체로서, 상기 프로그램 코드는 프로세서에 의해 실행 가능한 모니터링 소프트웨어를 포함하고, 상기 모니터링 소프트웨어는
    다른 프로세스들로부터의 명령들을 식별하기 위해 명령 큐를 모니터링하고;
    보안 데이터에 대한 동작을 나타내는 명령을 식별하고;
    상기 명령이 허용되는지 여부를 결정하기 위한 요청을 전송하고;
    상기 명령이 허용되지 않음을 나타내는 상기 요청에 대한 응답에 응답하여, 상기 명령을 상기 명령 큐로부터 제거하도록 구성되는, 비일시적 컴퓨터 판독 가능 매체.
  20. 제19항에 있어서, 상기 프로그램 코드는 프로세서에 의해 실행 가능한 액세스 규칙 소프트웨어에 대한 프로그램 코드를 더 포함하고, 상기 액세스 규칙 소프트웨어는
    액세스 규칙 데이터 저장소에 액세스하고 - 상기 액세스 규칙 데이터 저장소는 명령들 또는 사용자 자격 증명들과 연관된 하나 이상의 규칙을 저장하도록 구성됨 -;
    요청들을 수신하여 상기 요청들과 연관된 명령들이 허용되는지 여부를 결정하고;
    상기 각각의 요청 및 상기 하나 이상의 규칙에 기초하여 상기 명령들이 허용되는지 여부를 결정하고;
    상기 각각의 요청에 대한 응답 메시지를 전송하도록 구성되는, 비일시적 컴퓨터 판독 가능 매체.
  21. 제19항에 있어서, 상기 모니터링 소프트웨어는
    보안 저장 위치와 연관된 상기 명령 큐 내의 항목을 식별하고;
    상기 항목에 기초하여 상기 명령을 식별하도록 더 구성되는, 비일시적 컴퓨터 판독 가능 매체.
  22. 제21항에 있어서, 상기 모니터링 소프트웨어는 상기 명령을 식별하기 위해 상기 보안 저장 위치에 대한 컴퓨터 판독 가능 매체 상의 경로 또는 상기 보안 데이터에 액세스하는 소프트웨어 애플리케이션의 프로세스 식별자를 식별하도록 더 구성되는, 비일시적 컴퓨터 판독 가능 매체.
  23. 제21항에 있어서, 상기 보안 저장 위치는 컴퓨터 판독 가능 매체의 별도로 마운팅 가능한 파티션을 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  24. 제19항에 있어서, 상기 보안 데이터는 보안 저장 위치 내에 저장된 데이터를 포함하고, 상기 모니터링 소프트웨어는 상기 명령을 식별하기 위해 상기 보안 데이터에 액세스하는 프로세스의 프로세스 식별자와 연관된 상기 명령 큐 내의 항목을 식별하도록 더 구성되는, 비일시적 컴퓨터 판독 가능 매체.
  25. 제19항에 있어서, 상기 명령 큐는 운영 체제 명령 큐를 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  26. 제19항에 있어서, 상기 모니터링 소프트웨어는 상기 명령이 허용된다는 결정에 응답하여, 상기 명령을 상기 명령 큐로부터 제거하지 않도록 더 구성되는, 비일시적 컴퓨터 판독 가능 매체.
  27. 제19항에 있어서, 상기 명령은 저장 명령, 다른 이름으로 저장 명령, 열기 명령, 이동 명령, 이름 바꾸기 명령, 인쇄 명령, 복사 명령, 잘라내기 명령, 붙여넣기 명령, 이메일 명령, 스크린샷 명령, 이름 바꾸기 명령, 또는 공유 명령 중 적어도 하나를 포함하는, 비일시적 컴퓨터 판독 가능 매체.
KR1020177021555A 2015-01-02 2015-11-17 신뢰할 수 없는 장치에서의 데이터 보안 KR20170097211A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/588,779 US9659170B2 (en) 2015-01-02 2015-01-02 Securing data on untrusted devices
US14/588,779 2015-01-02
PCT/US2015/061097 WO2016109038A1 (en) 2015-01-02 2015-11-17 Securing data on untrusted devices

Publications (1)

Publication Number Publication Date
KR20170097211A true KR20170097211A (ko) 2017-08-25

Family

ID=54834909

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177021555A KR20170097211A (ko) 2015-01-02 2015-11-17 신뢰할 수 없는 장치에서의 데이터 보안

Country Status (7)

Country Link
US (3) US9659170B2 (ko)
EP (1) EP3241145A1 (ko)
JP (1) JP6263675B1 (ko)
KR (1) KR20170097211A (ko)
CN (1) CN107111724A (ko)
CA (1) CA2972019A1 (ko)
WO (1) WO2016109038A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9882713B1 (en) 2013-01-30 2018-01-30 vIPtela Inc. Method and system for key generation, distribution and management
US9467478B1 (en) 2013-12-18 2016-10-11 vIPtela Inc. Overlay management protocol for secure routing based on an overlay network
US9740860B2 (en) * 2015-02-26 2017-08-22 Kairos Social Solutions, Inc. Device, system, and method of preventing unauthorized recording of visual content displayed on an electronic device
WO2017011293A1 (en) 2015-07-10 2017-01-19 Senteon LLC Securing temporary data on untrusted devices
US9888014B2 (en) * 2015-09-29 2018-02-06 International Business Machines Corporation Enforcing security for sensitive data on database client hosts
US9980303B2 (en) 2015-12-18 2018-05-22 Cisco Technology, Inc. Establishing a private network using multi-uplink capable network devices
US10460119B2 (en) * 2016-02-26 2019-10-29 Intuit Inc. IDPS access-controlled and encrypted file system design
US10754968B2 (en) * 2016-06-10 2020-08-25 Digital 14 Llc Peer-to-peer security protocol apparatus, computer program, and method
US10572675B2 (en) * 2016-11-02 2020-02-25 Cisco Technology, Inc. Protecting and monitoring internal bus transactions
US11393046B1 (en) * 2017-01-17 2022-07-19 Intuit Inc. System and method for perpetual rekeying of various data columns with a frequency and encryption strength based on the sensitivity of the data columns
US10303895B1 (en) 2017-01-19 2019-05-28 Intuit Inc. System and method for perpetual rekeying of various data columns with respective encryption keys and on alternating bases
US9817675B1 (en) * 2017-01-31 2017-11-14 Hytrust, Inc. Methods and systems for attaching an encrypted data partition during the startup of an operating system
JP6789906B2 (ja) * 2017-09-20 2020-11-25 キオクシア株式会社 データ蓄積装置
US20220004657A1 (en) * 2018-11-15 2022-01-06 Trade Examination Technologies, Inc. Secure and accountable data access
JP7215181B2 (ja) * 2019-01-18 2023-01-31 日本電気株式会社 ファイルアクセス制御方法、コンピュータプログラム及びコンピュータ
CN110059499A (zh) * 2019-03-22 2019-07-26 华为技术有限公司 一种文件访问权限认证方法及电子设备
US11301263B2 (en) * 2019-10-30 2022-04-12 EMC IP Holding Company, LLC System and method for suspending and processing commands on a configuration object
CN111007736A (zh) * 2019-12-20 2020-04-14 阮振荣 一种智能家居系统
US20220004337A1 (en) * 2020-07-06 2022-01-06 Micron Technology, Inc. Command prioritization in a command queue
US20230205935A1 (en) * 2021-12-28 2023-06-29 Ati Technologies Ulc Software assisted acceleration in cryptographic queue processing

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5857201A (en) 1996-06-18 1999-01-05 Wright Strategies, Inc. Enterprise connectivity to handheld devices
US6708221B1 (en) 1996-12-13 2004-03-16 Visto Corporation System and method for globally and securely accessing unified information in a computer network
US6023708A (en) 1997-05-29 2000-02-08 Visto Corporation System and method for using a global translator to synchronize workspace elements across a network
US6085192A (en) 1997-04-11 2000-07-04 Roampage, Inc. System and method for securely synchronizing multiple copies of a workspace element in a network
US5961590A (en) 1997-04-11 1999-10-05 Roampage, Inc. System and method for synchronizing electronic mail between a client site and a central site
US6151606A (en) 1998-01-16 2000-11-21 Visto Corporation System and method for using a workspace data manager to access, manipulate and synchronize network data
JP4612416B2 (ja) * 2002-08-09 2011-01-12 ヴィスト・コーポレーション 危殆化した遠隔装置上のデータへのアクセスを防止するシステムおよび方法
US6970954B1 (en) 2003-03-27 2005-11-29 Logicube, Inc. System and method for intercepting and evaluating commands to determine if commands are harmful or benign and to emulate harmful commands
US7533370B2 (en) 2003-10-28 2009-05-12 Exent Technologies, Ltd. Security features in on-line and off-line delivery of applications
JP4342326B2 (ja) * 2004-01-26 2009-10-14 日本電信電話株式会社 データベース制御装置
US8266177B1 (en) 2004-03-16 2012-09-11 Symantec Corporation Empirical database access adjustment
US7970386B2 (en) 2005-06-03 2011-06-28 Good Technology, Inc. System and method for monitoring and maintaining a wireless device
US8627490B2 (en) 2005-12-29 2014-01-07 Nextlabs, Inc. Enforcing document control in an information management system
US7702322B1 (en) 2006-02-27 2010-04-20 Good Technology, Llc Method and system for distributing and updating software in wireless devices
EP1926037A1 (en) 2006-11-27 2008-05-28 Research In Motion Limited System and Method for Controlling Access to a Memory Device of an Electronic Device
US8621605B2 (en) 2007-10-09 2013-12-31 International Business Machines Corporation Method for reducing the time to diagnose the cause of unexpected changes to system files
US20090100529A1 (en) 2007-10-11 2009-04-16 Noam Livnat Device, system, and method of file-utilization management
US8566961B2 (en) * 2008-08-08 2013-10-22 Absolute Software Corporation Approaches for a location aware client
US20120226823A1 (en) 2008-10-12 2012-09-06 Confidela Ltd Document distribution system and method
US20100212010A1 (en) 2009-02-18 2010-08-19 Stringer John D Systems and methods that detect sensitive data leakages from applications
US20100275154A1 (en) 2009-04-23 2010-10-28 Noam Livnat System and Method For Securely Presenting Data
WO2011074168A1 (ja) * 2009-12-14 2011-06-23 パナソニック株式会社 情報処理装置
US10482254B2 (en) * 2010-07-14 2019-11-19 Intel Corporation Domain-authenticated control of platform resources
US8694738B2 (en) * 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US9935813B2 (en) 2011-12-20 2018-04-03 Blackberry Limited Virtual window screen rendering using application connectors
US9342329B2 (en) 2011-12-20 2016-05-17 Blackberry Limited Method and system for cross-operating systems execution of software applications
US9197408B2 (en) * 2013-05-10 2015-11-24 Sap Se Systems and methods for providing a secure data exchange
JP5702458B2 (ja) * 2013-12-27 2015-04-15 フェリカネットワークス株式会社 情報処理装置、プログラム、および情報処理システム

Also Published As

Publication number Publication date
CN107111724A (zh) 2017-08-29
WO2016109038A1 (en) 2016-07-07
US20160196442A1 (en) 2016-07-07
US9659170B2 (en) 2017-05-23
CA2972019A1 (en) 2016-07-07
US20180096138A1 (en) 2018-04-05
JP2018503910A (ja) 2018-02-08
US9536083B2 (en) 2017-01-03
JP6263675B1 (ja) 2018-01-17
EP3241145A1 (en) 2017-11-08
US20160196424A1 (en) 2016-07-07

Similar Documents

Publication Publication Date Title
US9536083B2 (en) Securing data on untrusted devices
US11057355B2 (en) Protecting documents using policies and encryption
US9760720B2 (en) Securing temporary data on untrusted devices
US10691719B2 (en) Cursor with last observed access state
US10268835B2 (en) Hosted application gateway architecture with multi-level security policy and rule promulgations
US8156538B2 (en) Distribution of information protection policies to client machines
US11695806B2 (en) Intercepting calls for encryption handling in persistent access multi-key systems
US9015858B2 (en) Graphical user interface for seamless secure private collaboration
GB2596422A (en) Systems and methods for providing access to a data file stored at a data storage system
US20110225373A1 (en) Computer system and method of data cache management
WO2014113136A1 (en) Seamless secure private collaboration across trust boundaries
US20190228177A1 (en) Hosted application gateway architecture with multi-level security policy and rule promulgations
US20170192764A1 (en) Automated application installation
US9607176B2 (en) Secure copy and paste of mobile app data
CA2910391C (en) Encryption solution for protecting file systems in multi-host clusters
US9467452B2 (en) Transferring services in a networked environment
EP2918039A1 (en) Seamless secure private collaboration across trust boundaries

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E601 Decision to refuse application