KR102089826B1 - 사용자 모드에서의 샌드박스 내의 제한된 드라이버 플랫폼의 드라이버 구동 - Google Patents

사용자 모드에서의 샌드박스 내의 제한된 드라이버 플랫폼의 드라이버 구동 Download PDF

Info

Publication number
KR102089826B1
KR102089826B1 KR1020157036987A KR20157036987A KR102089826B1 KR 102089826 B1 KR102089826 B1 KR 102089826B1 KR 1020157036987 A KR1020157036987 A KR 1020157036987A KR 20157036987 A KR20157036987 A KR 20157036987A KR 102089826 B1 KR102089826 B1 KR 102089826B1
Authority
KR
South Korea
Prior art keywords
driver
platform
vpn
variant
security platform
Prior art date
Application number
KR1020157036987A
Other languages
English (en)
Other versions
KR20160015300A (ko
Inventor
제라르도 디아즈-쿠엘라
디라즈 칸트 굽타
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20160015300A publication Critical patent/KR20160015300A/ko
Application granted granted Critical
Publication of KR102089826B1 publication Critical patent/KR102089826B1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • 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
    • 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/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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Transfer Between Computers (AREA)
  • Small-Scale Networks (AREA)
  • Telephonic Communication Services (AREA)

Abstract

제한된 변형 드라이버 플랫폼이 여기에 설명된다. 하나 이상의 구현에서, 가상 사설 네트워크(VPN) 드라이버 및 다른 변형 드라이버에 대한 제한된 실행 환경을 인에이블시키는 플랫폼이 제공된다. 플랫폼은, 드라이버가 플랫폼에 등록할 수 있도록 하고 플랫폼에 의해 지원되는 기능을 수행하도록 인보크될 수 있는 인터페이스를 노출시키는 운영 체제 컴포넌트로서 구현될 수 있다. 제한된 실행 환경은 플랫폼을 통해 동작하는 변형 드라이버에 하나 이상의 제한을 둔다. 예를 들어, 실행은 사용자별로 그리고 샌드박스 내에서 사용자 모드에서 발생할 수 있다. 또한, 플랫폼은 상대적으로 낮은 권한을 갖는 백그라운드 프로세스로서 관련 드라이버를 구동시키게 한다. 또한, 플랫폼은 백그라운드 작업의 스케줄링에 의해 드라이버를 정지할 수 있고 드라이버의 동작을 제어할 수 있다. 따라서, 시스템에 대한 변형 드라이버의 노출이 플랫폼을 통해 제어되고 제한된다.

Description

사용자 모드에서의 샌드박스 내의 제한된 드라이버 플랫폼의 드라이버 구동{RESTRICTED DRIVER PLATFORM RUNS DRIVERS IN SANDBOX IN USER MODE}
현재, 가상 사설 네트워크(virtual private network; VPN) 드라이버와 같이, 하나의 형태에서 다른 형태로 기본 데이터의 변환을 실시하는 변형(transmogrifying) 드라이버는 시스템 전체 권한, 높은 우선도 및 민감 데이터에 대한 액세스를 가질 수 있으므로, 상당한 보안 위험을 초래할 수 있다. 일부 이러한 우려로 인해, 사용자는 자신들의 디바이스 상에 이러한 드라이버들 및 관련 소프트웨어를 설치하는 것을 꺼려할 수 있다. 예를 들어, 사용자들은 이러한 유형의 제품의 추정된 위험들로 인해 온라인 애플리케이션 스토어로부터 VPN 플러그인을 다운로드 및 설치하는 것을 싫어할 수 있다. 따라서, 이러한 변형 드라이버들을 포함하는 제품들의 상거래 및 분배가 방해될 수 있다.
제한된 변형 드라이버 플랫폼이 여기에 설명된다. 하나 이상의 구현에서, 가상 사설 네트워크(VPN) 드라이버 및 다른 변형 드라이버에 대한 제한된 실행 환경을 인에이블시키는 플랫폼이 제공된다. 플랫폼은, 드라이버가 플랫폼에 등록할 수 있도록 하고 플랫폼에 의해 지원되는 기능들을 수행하도록 인보크(invoke)될 수 있는 인터페이스를 노출시키는 운영 체제 컴포넌트로서 구현될 수 있다. 제한된 실행 환경은 플랫폼을 통해 동작하는 변형 드라이버에 하나 이상의 제한을 둔다. 예를 들어, 실행은 사용자별로 그리고 샌드박스(sandbox) 내에서 사용자 모드에서 발생할 수 있다. 또한, 플랫폼은 상대적으로 낮은 권한을 갖는 백그라운드 프로세스에서 관련 드라이버들이 구동될 수 있게 한다. 또한, 플랫폼은 백그라운드 작업의 스케줄링에 의해 드라이버를 정지할 수 있고 드라이버의 동작을 제어할 수 있다. 따라서, 시스템에 대한 변형 드라이버의 노출이 플랫폼을 통해 제어 및 제한된다.
이러한 개요는 상세한 설명에서 추가로 후술되는 개념의 단순화된 형태의 선택을 도입하기 위해 제공된다. 이러한 개요는 청구된 청구물의 핵심적인 특징 또는 본질적인 특징을 식별하도록 의도된 것이 아니며, 청구된 청구물의 범위를 결정하는 데 있어 도움으로 사용되는 것으로 의도된 것도 아니다.
상세한 설명이 첨부 도면을 참조하여 설명된다. 도면에서, 참조 번호의 가장 왼쪽 숫자(들)는 참조 번호가 처음 나타나는 도면을 식별한다. 설명 및 도면에서 상이한 예에서의 동일한 참조 번호의 사용은 유사하거나 동일한 항목을 나타낼 수 있다.
도 1은 제한된 변형 드라이버 플랫폼 기술의 하나 이상의 구현에 따른 환경의 예시이다.
도 2는 하나 이상의 구현에 따른 예시적인 시나리오의 예시이다.
도 3은 변형 드라이버의 실행을 위한 제한된 실행 환경을 채용하기 위한 예시적인 절차를 도시하는 흐름도이다.
도 4는 변형 드라이버의 동작이 제어되는 예시적인 절차를 도시하는 흐름도이다.
도 5는 변형 드라이버가 온라인 애플리케이션 스토어를 통해 분배되는 예시적인 절차를 도시하는 흐름도이다.
도 6은 하나 이상의 실시예에 따른 예시적인 컴퓨팅 시스템을 도시한다.
개요
부분적으로 가상 사설 네트워크(VPN) 드라이버 및 다른 변형 드라이버에 대한 보안 문제로 인해, 사용자는 각자의 디바이스 상에 변형 드라이버를 채용하는 제품을 설치하기를 꺼려할 수 있다. 따라서, 이러한 변형 드라이버들을 포함하는 제품의 상거래 및 분배가 방해될 수 있다.
제한된 변형 드라이버 플랫폼이 여기에 설명된다. 하나 이상의 구현에서, 가상 사설 네트워크(VPN) 드라이버 및 다른 변형 드라이버에 대해 제한된 실행 환경을 인에이블시키는 플랫폼이 제공된다. 플랫폼은, 드라이버가 플랫폼에 등록할 수 있도록 하고 플랫폼에 의해 지원되는 기능들을 수행하도록 인보크(invoke)될 수 있는 인터페이스를 노출시키는 운영 체제 컴포넌트로서 구현될 수 있다. 제한된 실행 환경은 플랫폼을 통해 동작하는 변형 드라이버에 하나 이상의 제한을 둔다. 예를 들어, 실행은 사용자별로 그리고 샌드박스 내에서 사용자 모드에서 발생할 수 있다. 또한, 플랫폼은 관련 드라이버를 비교적 낮은 권한을 갖는 백그라운드 프로세스로서 구동되게 한다. 또한, 플랫폼은 백그라운드 작업의 스케줄링에 의해 드라이버를 정지하고 드라이버의 동작을 제어할 수 있다. 따라서, 시스템에 대한 변형 드라이버의 노출이 플랫폼을 통해 제어 및 제한된다.
이하의 설명에서, 여기에 설명되는 기술을 채용할 수 있는 예시적인 동작 환경이 우선 설명된다. 다음으로, 예시적인 환경뿐만 아니라 다른 환경에서 구현될 수 있는 예시적인 상세 사항 및 기술이 설명된다. 결론적으로, 기술의 성능은 예시적인 환경에 한정되지 않으며, 예시적인 환경은 예시적인 기술의 성능에 한정되지 않는다. 마지막으로, 하나 이상의 실시예를 구현하기 위해 채용될 수 있는 예시적인 시스템 및 디바이스가 설명된다.
예시적인 동작 환경
도 1은 여기에 설명된 기술을 채용하도록 동작 가능한 예시적인 구현에서의 환경(100)의 예시이다. 예시된 환경(100)은 네트워크(104)를 통해 서비스 공급자(106)에 통신 가능하게 연결되는 클라이언트 디바이스(102)를 포함한다. 서비스 공급자(106)는 네트워크(104)를 통해 다양한 리소스(108)(예를 들어, 컨텐츠 및 서비스)가 클라이언트 디바이스(102) 및 다른 클라이언트에 대해 이용 가능해지도록 구성될 수 있다. 일반적으로, 서비스 공급자(106)에 의해 액세스 가능하게 된 리소스(108)는 하나 이상의 공급자에 의해 네트워크를 통해 통상적으로 이용 가능하게 된 임의의 적절한 조합의 서비스들 및/또는 컨텐츠를 포함할 수 있다. 서비스의 일부 예는, 검색 서비스, 이메일 서비스, 인스턴트 메시징 서비스, 온라인 생산 제품군 및 리소스에 대한 클라이언트의 액세스를 제어하는 인증 서비스를 포함하지만 이에 한정되지 않는다. 컨텐츠는 텍스트, 멀티미디어 스트림, 문서, 애플리케이션 파일, 사진, 오디오/비디오 파일 애니메이션, 이미지, 웹 페이지, 웹 애플리케이션, 디바이스 애플리케이션, 브라우저 또는 다른 클라이언트 애플리케이션에 의한 디스플레이를 위한 컨텐츠 등의 다양한 조합을 포함할 수 있다.
클라이언트 디바이스(102)와 서비스 공급자(106)는 하나 이상의 컴퓨팅 디바이스에 의해 구현될 수 있고 또한 하나 이상의 엔티티를 나타낼 수 있다. 컴퓨팅 디바이스는 다양한 방식으로 구성될 수 있다. 예를 들어, 컴퓨팅 디바이스는 데스크톱 컴퓨터, 이동국, 엔터테인먼트 기기, 디스플레이 디바이스에 통신 가능하게 연결된 셋톱 박스, 무선 전화, 게임 콘솔 등과 같이 네트워크를 통해 통신할 수 있는 컴퓨터로서 구성될 수 있다. 따라서, 컴퓨팅 디바이스는 실질적인 메모리 및 프로세서 리소스를 갖는 풀(full) 리소스 디바이스(예를 들어, 퍼스널 컴퓨터, 게임 콘솔)에서부터, 제한된 메모리 및/또는 프로세싱 리소스를 갖는 낮은 리소스의 디바이스(예를 들어, 통상적인 셋톱 박스, 핸드헬드 게임 콘솔)까지의 범위에 이를 수 있다. 또한, 단일 컴퓨팅 디바이스가 일부 예에서 도시되어 있지만, 컴퓨팅 디바이스는 서비스 공급자(106)에 의해 이용되는 복수의 서버와 같은 복수의 다른 디바이스를 나타낼 수 있다.
클라이언트 디바이스(102)는 운영 체제(110)를 포함하는 것으로 추가로 예시된다. 운영 체제(110)는 클라이언트 디바이스(102) 상에서 실행 가능한 애플리케이션(112)에 대해 기본 하드웨어의 기본 기능을 추상화하도록 구성된다. 예를 들어, 운영 체제(110)는, "어떻게" 이러한 기본 기능이 구현되는지를 알지 않고도 애플리케이션(112)이 기입될 수 있도록 프로세싱, 메모리, 네트워크, 및/또는 디스플레이 기능을 추상화할 수 있다. 예를 들어, 애플리케이션(112)은 어떻게 이러한 렌더링이 수행될 것인지 이해하지 않고도 디스플레이 디바이스에 의해 렌더링되고 디스플레이되는 데이터를 운영 체제(110)에 제공할 수 있다.
여기에 설명된 기술에 따르면, 클라이언트 디바이스(102)는 또한 변형 드라이버(114)의 동작에 제한을 부과하기 위해 다양한 방식으로 구성될 수 있는 드라이버 보안 플랫폼(116) 및 변형 드라이버(114)를 포함하는 것으로 예시된다. 변형 드라이버(114)는 여기에 설명되는 드라이버 보안 플랫폼(116)에 의해 관리되고 제어될 수 있는 다양한 종류의 애플리케이션 모듈, 플러그인, 및/또는 다른 제3자 프로그램을 나타낸다. 일반적으로, 변형 드라이버(114)는 한 형태에서 다른 형태로 기본 데이터의 변형을 실시한다. 변형 드라이버의 하나의 예시적인 유형은 VPN 클라이언트와 VPN 서버 사이의 VPN 보안 통신을 위한 전용 형태로 데이터 패킷을 변형하는(예를 들어, 캡슐화/캡슐화 해제) 가상 사설 네트워크(VPN) 드라이버이다. 다른 예는 데이터를 패킷화/패킷화 해제하는 네트워크 인터페이스 카드 드라이버, 멀웨어(malware)를 인식하고 처리하는 안티-바이러스 드라이버, 그래픽을 프로세싱/변환하는 그래픽 프로세싱 드라이버, 애플리케이션 데이터를 프린터에 대한 인쇄 가능한 포맷으로 변환하는 프린터 드라이버 등을 포함할 수 있지만, 이에 한정되는 것은 아니다. 여기에 설명된 기술은 또한 VPN 터널 및 다른 인터넷 프로토콜(IP) 터널, 데이터 파이프, 전송 스트림, 방화벽 등에 적용 가능하다.
통상적인 모델에서, 변형 드라이버(114)는 시스템 전체 권한, 높은 우선도 및 민감 데이터에 대한 액세스를 가질 수 있다. 일반적으로, 변형 드라이버는 운영 체제에 밀접하게 연결되고, 커널 모드에서 구동된다. 따라서, 변형 드라이버(114)는 커널 모드 드라이버, 시스템 드라이버 및/또는 클래스 드라이버를 포함할 수 있고/있거나 이로 칭해질 수 있다. 변형 드라이버(114)는 통상적으로 커널 모드에서 상승된 권한과 전체 시스템 액세스를 갖기 때문에, 이러한 종류의 드라이버는 상당한 보안 위험을 부과하고, 불법적인 목적으로 악의적인 패리티에 의해 채용되는 타겟/도구가 될 수 있다. 제한되지 않은 권한과 액세스로 자유롭게 동작하는 변형 드라이버(114)는 또한 프로세싱 리소스와 배터리 수명에 악영향을 줄 수 있다. 또한, 애플리케이션 스토어 또는 다른 온라인 채널을 통한 변형 드라이버의 분배는 적어도 부분적으로 방금 열거한 문제로 인해 방해될 수 있다.
그러나, 여기에 설명된 발명 원리에 따르면, 제한된 실행 환경은 상술한 문제를 완화시키는 제한된 방식으로 사용자 모드에서 변형 드라이버(114)의 실행을 인에이블시키도록 확립될 수 있다. 예를 들어, 상술 및 후술한 바와 같이 제한 실행 환경 내에서 변형 드라이버(114)를 제어함으로써, 시스템을 더욱 신뢰성 있게 만들고, 드라이버 동작의 리소스 소비를 감소시키고, 드라이버를 통한 시스템의 착취를 방지하고, 사용자별 설치를 가능하게 하고, 그에 따라 인터넷 채널을 통한 드라이버들의 분배가 실행 가능한 옵션이 되게 하는 데에 효과적인 드라이버의 동작에 보안성이 부과된다.
특히, 드라이버 보안 플랫폼(116)은 변형 드라이버(114)에 대한 제한된 실행 환경을 인스턴스화하는 클라이언트 디바이스(102)의 기능을 나타낸다. 드라이버 보안 플랫폼(116)에 의해 나타내어지는 기능은 다양한 방식으로 구현될 수 있다. 일부 구현에서, 드라이버 보안 플랫폼(116)은 운영 체제 컴포넌트로서 제공될 수 있지만, 나타낸 바와 같이, 드라이버 보안 플랫폼(116)은 또한 독립형 컴포넌트로서 구현될 수 있다. 도시된 바와 같이, 드라이버 보안 플랫폼(116)은 드라이버 관리자 모듈(118), 애플리케이션 컨테이너(120), 백그라운드 관리자(122) 및 플랫폼의 다양한 양태를 구현하는 이벤트 브로커(124)를 포함할 수 있거나 그렇지 않으면 이들로 구성될 수 있다.
드라이버 관리자 모듈(118)은 플랫폼과 연관된 변형 드라이버(114)를 인식하고 관리하는 플랫폼의 기능을 나타낸다. 드라이버 관리자 모듈(118)은 각각의 드라이버에 대해 확립된 애플리케이션 컨테이너(120) 또는 "샌드박스"를 통해 사용자별로 사용자 모드에서 변형 드라이버(114)의 실행을 제어할 수 있다. 애플리케이션 컨테이너(120)는 개별 드라이버에 대해 수행될 수 있는 제한된 작업 세트를 규정하고, 동작을 규정된 작업 세트로 제한한다. 애플리케이션 컨테이너(120)는 이중벽으로 된 샌드박스화된 격리를 추가로 제공하는데, 이중벽으로 된 샌드박스화된 격리란 컨테이너 내측으로부터 시스템 내로, 그리고 외부 엔티티로부터 컨테이너 내로 모두 액세스가 제한된다는 것을 의미한다. 이는 외부 엔티티가 애플리케이션 컨테이너 내의 샌드박스화된 드라이버를 통해, 제어를 하이재킹하고/하이재킹하거나 획득하지 못하도록 방지한다.
백그라운드 관리자(122)는 백그라운드 프로세스를 사용하여 애플리케이션 컨테이너(120)(및 관련 드라이버)를 관리하도록 동작 가능하다. 이것은 컨테이너에 대한 백그라운드 프로세스의 인스턴스화 및 백그라운드 프로세스에 대한 작업 스케줄링 처리를 포함할 수 있지만 이에 한정되지 않는다. 백그라운드 프로세스는 비교적 소수의 권한들 및 액세스 권리들을 전달하는 낮은 권한 토큰 또는 이에 필적하는 제어 데이터를 할당받을 수 있다. 즉, 드라이버 보안 플랫폼(116)은 동작의 자유도 및/또는 액세스를 제한하는 변형 드라이버(114)와 비교적 낮은 우선도를 연관시킨다. 백그라운드 관리자(122)는 또한 사용하지 않을 때 변형 드라이버(114)에 대한 백그라운드 프로세스의 정지를 유발할 수 있으며, 이는 사용자 및/또는 드라이버 보안 플랫폼(116)의 특정 지시 이외의 다른 작업을 변형 드라이버가 수행하는 능력을 추가로 제한한다. 예를 들어, 변형 드라이버(114)는 드라이버 또는 드라이버의 유형에 대해 특정적으로 규정된 작업 세트가 드라이버 관리자 모듈(118)의 지시로 수행되고 있을 때 외에는 정지될 수 있다.
백그라운드 관리자(122)는 나타낸 바와 같이 드라이버 보안 플랫폼(116)의 컴포넌트로서 구현될 수 있다. 대안적으로, 백그라운드 관리자(122)는 변형 드라이버(114)를 포함하는 백그라운드 프로세스를 사용하여 복수의 애플리케이션(112)의 동작을 관리 및 조정하도록 설계된 운영 체제(OS) 컴포넌트로서 구성될 수 있다. 이 접근법에서, 드라이버 보안 플랫폼(116)은 애플리케이션의 백그라운드 동작을 지원하기 위해 OS의 통합 기능을 이용하도록 백그라운드 관리자(122)와 상호 작용하도록 구성될 수 있다.
이벤트 브로커(124)는 변형 드라이버 및 대응하는 애플리케이션 컨테이너(120)에 대하여 인에이블되는 지정된 작업을 수행하기 위해 드라이버와 시스템 서비스 간의 상호 작용을 중개하기 위한 이벤트를 생성하는 기능을 나타낸다. 특히, 이벤트 브로커(124)는 백그라운드 관리자(122)에 의해 스케줄링되는 작업의 수행을 유발하는 이벤트를 생성하도록 동작할 수 있다. 일부 구현에서, 이는 시스템 애플리케이션 프로그래밍 인터페이스(API) 또는 다른 적절한 인터페이스와 같은 코드 엔트리 포인트에 대한 적절한 콜을 생성하는 것을 포함한다. 이벤트 브로커(124)는 또한 OS, 브라우저, VPN 클라이언트 애플리케이션 및/또는 다른 애플리케이션들과 연관된 디스플레이 스크린 및 UI과 같이, 컴퓨팅 디바이스에 의해 노출되는 사용자 인터페이스 요소와의 상호 작용을 중개하기 위한 이벤트를 생성하도록 구성될 수 있다. 설명된 방식으로 "샌드박스화된" 변형 드라이버는 UI 컴포넌트 및 요소의 직접적인 조작으로부터 제한될 수 있다. 따라서, 이벤트 브로커(124)는 과도한 보안 노출 없이 변형 드라이버(114)를 대신하여 UI 컴포넌트와의 상호 작용 및 조정을 인에이블시키는 대리자로서 동작할 수 있다.
도 1에 추가로 나타낸 바와 같이, 서비스 공급자(106)는 애플리케이션 스토어 서비스(126)에 대한 클라이언트 액세스를 관리 및 제공하도록 구성될 수 있다. 애플리케이션 스토어 서비스(126)는 네트워크(104)를 통해 클라이언트에게 서비스 공급자(106)에 의해 제공될 수 있는 리소스들(108) 중의 특정한 하나의 리소스를 나타낸다. 애플리케이션 스토어 서비스(126)는 애플리케이션을 브라우징, 선택, 구매 및/또는 다운로드하기 위해 온라인 애플리케이션 데이터베이스(예를 들어, 애플리케이션 시장)에 대한 사용자 액세스를 인에이블하도록 구성된다. 다양한 개발자로부터의 애플리케이션이 애플리케이션 스토어 서비스(126)를 통해 클라이언트에 대해 이용 가능하게 될 수 있다.
여기에 설명된 기술에 따르면, 애플리케이션 스토어 서비스(126)는 드라이버 보안 플랫폼(116)을 통해 제어되는 변형 드라이버(114)에 대한 분배 메커니즘으로서 선택될 수 있다. 이것은 드라이버 보안 플랫폼(116)을 통해 드라이버에 대해 인스턴스화된(instantiated) 제한된 실행 환경(들)을 사용하여 얻어지는 추가적인 보안 조치, 제한 및 성능 이득으로 인해 가능하게 된다. 하나의 접근법에서, 변형 드라이버(114)는 드라이버 보안 플랫폼(116)과 연관된 지정된, 알려진 포맷으로 애플리케이션 시장에의 포함을 위해 패키지화될 수 있다. 지정된 포맷으로 대응하는 변형 드라이버(114)를 포함하는 드라이버 패키지(128)는 애플리케이션 스토어 서비스(126)를 통해 이용 가능하게 될 수 있으며, 도 1에 나타낸 바와 같이 네트워크(104)를 통해 클라이언트 디바이스(102)에 의한 사용을 위해 다운로드될 수 있다. 하나의 접근법에서, 드라이버 패키지(128)는 애플리케이션 스토어 서비스(126)와 연관된 (.appx 또는 다른 필적하는 스토어 특정 또는 공급자 특정 포맷과 같은) 전용 포맷을 채용할 수 있다. 추가적으로 또는 대안적으로, 패키지는 드라이버 패키지(128)가 드라이버 보안 플랫폼(116)에 의해 지원되는 변형 드라이버를 포함한다고 인식하는 것을 용이하게 하기 위해 식별자, 키, 코드, 파일 확장자 또는 다른 적절한 식별 데이터를 포함하도록 구성될 수 있다.
설치 시에, 드라이버 보안 플랫폼(116)은 드라이버 관리자 모듈(118) 또는 다른 것에 의해, 패키지에 포함된 적절한 식별 데이터에 기초하여 드라이버 패키지(128) 및/또는 포맷이 드라이버 보안 플랫폼(116)과 연관된다는 것을 인식할 수 있다. 따라서, 인식된 포맷의 드라이버 패키지(128)의 설치에 응답하여, 드라이버 관리자 모듈(118)은 대응하는 변형 드라이버를 플랫폼에 등록하도록 동작할 수 있으며, 그에 의해 드라이버 보안 플랫폼(116)을 통해 인에이블된 드라이버에 대한 제한 및 추가적인 보안을 실시할 수 있다.
제한된 변형 드라이버 플랫폼의 이러한 양태 및 다른 양태에 관한 추가의 상세 사항이 도 2, 일반적으로 참조번호 200으로 도시된 예시적인 사용 시나리오와 관련하여 설명된다. 본 예에서, 애플리케이션 컨테이너(120) 또는 샌드박스는, 가상 사설 네트워크(VPN) 드라이버(202)를 포함하는 것으로 나타내어져 있지만, 여기에 언급된 다른 드라이버, 플러그 인 및 코드도 고려된다. 애플리케이션 컨테이너(120)는 포함된 드라이버에 대한 제한된 작업 세트를 인에이블시키도록 구성되며, 이 경우에는 VPN 드라이버(202)가 된다. 이러한 VPN 시나리오에서, 인에이블된 작업은 네트워크를 통해 VPN 서버와의 VPN 통신과 연관된 연결, 연결 해제, 캡슐화, 및/또는 캡슐화 해제 동작들로 제한될 수 있다. 다른 유형의 드라이버 및 코드가 액세스 및 성능 영향을 최소화하면서 그 핵심 기능을 지원하는 플랫폼에 의해 인에이블되는 대응하는 동작과 연관될 수 있다. 허용 가능한 작업 세트는 각 유형의 드라이버와 연관되고/연관되거나 개별 드라이버별로 연관될 수 있다. 언급한 바와 같이, 애플리케이션 컨테이너(120)는 플랫폼을 통해 드라이버에 대해 인에이블된 특정 작업 세트로 드라이버를 효과적으로 제한한다.
도 2는 또한 사용자 모드와 커널 모드 간에 다양한 컴포넌트의 구분을 나타낸다. 일반적으로, 컴퓨팅 디바이스의 프로세싱 시스템은 실행되는 코드의 유형에 따라 사용자 모드와 커널 모드 간에 스위칭할 수 있다. 통상적으로, 데스크톱 애플리케이션은 사용자 모드에서 구동되고 핵심 운영 체제 컴포넌트는 커널 모드에서 구동된다. 커널 모드에서 동작하는 드라이버/코드는 통상적인 메모리 할당을 공유할 수 있으며, 다른 드라이버/코드 또는 OS 리소스로부터 격리되지 않는다. 언급한 바와 같이, 변형 드라이버는 OS에 대한 실질적으로 제한되지 않은 액세스와 시스템 전체 충돌을 야기할 가능성을 갖는 커널 모드 드라이버들로서 통상적으로 구현된다. 하지만 여기에 설명된 기술에 따르면, 이 대신에, 변형 드라이버는 적절히 제한된 실행 환경을 통해 사용자 모드에서 실행될 수 있다.
특히, 애플리케이션 컨테이너(120) 및 애플리케이션 컨테이너(120) 내에 포함된 VPN 드라이버(202)는 도 2에서 사용자 모드에서 실행되는 것으로 도시된다. VPN 드라이버(202)는 드라이버 인터페이스(204)를 통해 커널(206)에 의해 제공되는 운영 체제(110)의 핵심 서비스 및 기능과 상호 작용할 수 있다. 커널(206)은 일반적으로 소프트웨어 컴포넌트에 의해 하드웨어의 동작을 용이하게 하기 위해 기본적인 하드웨어(208)의 소프트웨어 추상화를 구현한다. 드라이버 인터페이스(204)는, 커널(206)에 의해 나타내어지는 핵심 서비스 및 기능이 사용자 모드에서 실행되는 코드에 액세스 가능하게 해주는 운영 체제(110)와 연관된 하나 이상의 애플리케이션 프로그래밍 인터페이스(API) 또는 다른 적절한 인터페이스를 나타낼 수 있다.
특정 예에서, 코어 서비스 및 기능은 VPN 통신을 용이하게 하기 위해 적어도 VPN 서비스(210)를 포함한다. VPN 서비스(210)는 드라이버 인터페이스에 의해 지원되는 적절한 콜(call) 및 콜백(callback)을 통해 서비스를 인보크하도록 구성될 수 있는 VPN 드라이버(202)에 대한 인에이블된 작업 세트에 대응할 수 있다. 드라이버 인터페이스(204)는 도시된 바와 같이 애플리케이션 컨테이너(120) 내에 또는 독립형 컴포넌트로서 인스턴스화될 수 있다. 드라이버 인터페이스(204)에 의해 나타내어지는 기능은 또한 사용자 모드 컴포넌트와 커널 모드에서 동작하는 커널(206)의 대응하는 컴포넌트 간에 나눠질 수 있다. 드라이버 인터페이스(204)를 통한 상호 작용은 드라이버 관리자 모듈(118)을 통한 드라이버 보안 플랫폼을 통해, 또는 다른 방법을 통해 제어될 수 있다.
동작에서, 백그라운드 관리자(122)는 애플리케이션 컨테이너(120)에 대해 백그라운드 프로세스(211)를 설정할 수 있으며 백그라운드 프로세스(211)를 사용하여 VPN 드라이버(202)의 실행을 관리할 수 있다. 작업은 플랫폼의 지시로 스케줄링될 수 있다. 일반적으로, 이것은 사용자(예를 들어, 사용자의 선택이나 사용자의 동의)의 명시적인 지시로 발생하거나 또는 사용자 입력에 기초하여 확립된 프로파일에 따라 발생한다. 프로파일은 애플리케이션 컨테이너(120) 내의 VPN 드라이버(202)에 이용 가능한 작업 세트를 규정할 수 있고 그에 따라 연관된 권한 및 액세스 권리를 설정할 수 있다. 플랫폼은 그 후 애플리케이션 컨테이너(120)를 사용하여 프로파일에 의해 나타내어지는 제한을 실시하도록 동작한다. 예를 들어, 프로파일은, 특정 동작이 (예를 들어, 동작의 각 인스턴스에 대해) 수행될 때마다 사용자 동의가 취득되어야 한다는 것을 나타낼 수 있으며, 이 경우에 사용자 동의에 대한 통지 및 촉구가 특정 동작을 선택적으로 제어하기 위해 생성될 수 있다. 프로파일은 또한 각 인스턴스에 대한 동의의 추가적인 표시 없이 일부 선택된 동작이 자동으로 발생할 수 있게 하기 위한 글로벌 또는 디폴트 사용자 동의를 나타낼 수 있다. 사용자 동의가 없는 경우, 애플리케이션 컨테이너(120)는 드라이버가 제한된 작업을 수행하는 것을 방지하도록 동작한다. 즉, 제한된 실행 환경은 사용자의 동의에 의존하여 변형 드라이버의 동작을 선택적으로 인에이블시키도록 구성된다. 따라서, 사용자는 플랫폼을 통해 관리되는 변형 드라이버(114)에 대해 인에이블된 상호 작용의 범위에 걸친 궁극적인 제어를 제공받는다.
도 2는 이벤트 브로커(124)와 애플리케이션 컨테이너(120)의 상호 작용을 추가로 나타낸다. 특히, 이벤트 브로커(124)는 VPN 드라이버를 대신하여 백그라운드 관리자(122)를 통해 스케줄링된 작업의 수행을 유발시키는 VPN 이벤트(212) 및/또는 사용자 인터페이스 이벤트(214)를 생성하도록 동작할 수 있다. 예를 들어, VPN 이벤트(212)는 VPN 서비스(210)를 인보크하기 위해 드라이버 인터페이스(204)로 지향된 콜을 포함할 수 있다. 또한, 이벤트 브로커(124)는 운영 체제(110), 애플리케이션(112) 또는 다른 UI에 대한 UI 컴포넌트를 조작하기 위한 사용자 인터페이스 이벤트(214)를 생성할 수 있다. 이것은 적절한 상황에서 스케줄링된 작업에 대한 사용자 동의를 얻기 위한 통지의 출력을 포함할 수 있지만 이에 한정되는 것은 아니다.
이러한 방식으로, 제한된 실행 환경은 VPN 드라이버(202) 및/또는 커널 모드에서 통상적으로 실행되는 다른 변형 드라이버의 동작을 제어하도록 구현될 수 있다. 이러한 드라이버는 일반적으로, 도 2에 나타낸 바와 같이, 특정 형태로 입력 데이터(216)를 수용하고, 변형된 데이터(218)를 다른 형태로 생성하도록 데이터를 프로세싱한다. 예를 들어, 도 2의 VPN 드라이버(202)는 기업 서버에 대한 VPN 보안 통신을 위한 전용 포맷으로 데이터 패킷을 캡슐화하도록 동작할 수 있다. VPN 드라이버(202)는 또한 전용 포맷으로 기업 서버로부터 획득된 데이터 패킷을 클라이언트 디바이스(102)에 의해 소비 가능한 데이터로 캡슐화 해제하도록 구성될 수 있다. 다른 유형의 드라이버가 드라이버의 의도된 기능에 결합된 필적하는 데이터 변형을 수행하도록 구성된다. 예를 들어, 프린터 드라이버는 인쇄용으로 데이터를 변환하고, 네트워크 인터페이스 카드 드라이버는 데이터를 패킷화 및 패킷화 해제하도록 동작하며, 안티바이러스 드라이버는 파일을 스캔하고 알려진 시그너처들과 파일을 비교 등을 할 수 있다.
따라서, VPN 드라이버뿐만 아니라 다른 변형 드라이버에 대한 다양한 제한을 실시하도록 구성된 제한된 실행 환경을 인에이블시키는 드라이버 보안 플랫폼이 제공될 수 있다. 플랫폼은, 드라이버가 플랫폼에 등록할 수 있도록 하고 플랫폼에 의해 지원되고/지원되거나 인에이블된 작업을 수행하기 위해 인보크될 수 있도록 해주는 인터페이스를 노출시키는 운영 체제 컴포넌트로서 구현될 수 있다. 변형 드라이버는 사용자별로, 사용자 모드에서 플랫폼을 통해, 그리고 변형 드라이버의 권한 및 시스템 액세스를 제한하는 "샌드박스화된" 애플리케이션 컨테이너 내에서 실행될 수 있다.
예시적인 동작 환경의 상술한 설명을 고려하여, 이하 후술하는 예시적인 절차에 관하여 설명되는 제한된 변형 드라이버 플랫폼에 대한 기술에 대한 상세 사항을 고려한다.
예시적인 절차
본 섹션은 도 3 내지 도 5의 예시적인 절차를 참조하여 제한된 변형 드라이버 플랫폼에 대한 기술의 상세 사항을 설명한다. 후술하는 설명의 일부에서, 다양한 양태들이 구현될 수 있는 도 1의 예시적인 동작 환경에 대한 참조가 이루어질 수 있다. 후술하는 각 절차의 양태들은 하드웨어, 펌웨어, 소프트웨어, 또는 그 조합으로 구현될 수 있다. 절차는 하나 이상의 디바이스에 의해 수행되는 동작을 특정하는 블록 세트로서 도시되고, 반드시 각각의 블록들에 의해 동작을 수행하기 위해 도시된 순서로 한정되는 것은 아니다. 적어도 일부 구현에서, 절차는 드라이버 보안 플랫폼(116) 또는 이에 필적하는 기능을 포함하거나 이를 사용하는 도 1의 예시적인 클라이언트 디바이스(102)와 같은 적절하게 구성된 컴퓨팅 디바이스에 의해 수행될 수 있다.
도 3은 변형 드라이버의 실행을 위한 제한된 실행 환경을 채용하기 위한 예시적인 절차(300)를 도시하는 흐름도이다. 변형 드라이버는 드라이버 보안 플랫폼에 등록된다(블록 302). 예를 들어, 드라이버 관리자 모듈(118)은 지정된 포맷으로 패키지화된 드라이버를 인식하도록 구성될 수 있다. 예를 들어, 패키지는, 드라이버가 해당 플랫폼을 위해 설계되고 해당 플랫폼을 통해 제어될 것이라는 것을 드라이버 보안 플랫폼에게 나타내는 적절한 식별자를 포함할 수 있다. 따라서, 드라이버의 설치 시에, 드라이버 관리자 모듈(118)은 패키지 및/또는 식별자를 검출하고, 시스템을 통해 처리하기 위한 드라이버를 등록한다. 후속적으로, 드라이버의 동작은 대응하는 제한을 가지면서 드라이버 보안 플랫폼에 의해 관리된다.
제한된 실행 환경이 변형 드라이버에 대해 인스턴스화되고(블록 304) 변형 드라이버는 하나 이상의 작업을 수행하기 위해 인보크된다(블록 306). 그 후, 변형 드라이버가 작업을 수행하도록 제한된 실행 환경을 통해 실행된다(블록 308). 여기에서, 드라이버 관리자 모듈(118)은, 드라이버가 실행될 때 특정 드라이버에 대해 제한된 실행 환경을 확립할 수 있다. 제한된 실행 환경은 상술한 바와 같이 애플리케이션 컨테이너(120)(예를 들어, "샌드박스")를 포함할 수 있다. 제한된 실행 환경은 실행 중에 적용되는 변형 드라이버의 동작에 다양한 제한을 부과한다. 예를 들어, 제한된 실행 환경은 시스템 리소스에 대한 액세스를 제한하기 위해 대응하는 드라이버를 격리한다. 특히, 액세스는 드라이버의 기능과 연관된 작업의 지정된 세트로 제한될 수 있다. 드라이버는 작업을 수행하기 위해 시스템에 의해 인보크되고, 스스로 작업을 개시할 수 없을 수 있다. 예를 들어, 제한된 실행 환경은 드라이버가 스스로 객체(object)를 생성하는 것을 방지할 수 있다. 대신, 특정 작업에 대한 객체는 플랫폼에 의해 생성되고 드라이버에 의한 사용을 위해 제한된 실행 환경으로 전달된다.
또한, 드라이버는 백그라운드 작업으로서 제한된 실행 환경을 통해 실행될 수 있으며, 제한된 권한 및 액세스 권리를 전달하는 권한 토큰을 할당받을 수 있다. 제한된 실행 환경과 연관된 백그라운드 프로세스는 작업을 수행하기 위해 플랫폼 및/또는 사용자에 의한 특정 지시가 없을 때에 정지될 수 있다. 또한, 제한된 실행 환경은 드라이버의 변조 및/또는 하이재킹(hijacking)을 방지하기 위하여 변형 드라이버에 대한 드라이버 보안 플랫폼 액세스와 연관되지 않은 애플리케이션 및 다른 컴포넌트를 거부한다.
또한, 드라이버는 상술한 바와 같이 사용자 모드에서 실행되며 또한 사용자별로 설치될 수 있다. 따라서, 상이한 사용자들이 동일 클라이언트 디바이스 상의 사용을 위해 및/또는 동일 목적을 위해 상이한 드라이버들을 설치할 수 있다. 이것은 사용자 선호도에 따라 상이한 하드웨어 또는 상이한 소프트웨어 버전의 사용을 용이하게 할 수 있다. 드라이버가 사용자 모드에서 샌드박스화되므로, 하나의 드라이버의 설치 및 설치 해제는 다른 사용자의 경험에 영향을 미치지 않는다. 예를 들어, VPN 기술을 참조하면, 동일한 디바이스의 상이한 사용자들은 서로 악영향을 주지 않고 상이한 사업주들의 각 VPN 서버에 접속하기 위해 상이한 VPN 드라이버들을 채용할 수 있다.
또한, 설명된 기술을 사용하여 구현되는 드라이버는 불안정 또는 의도하지 않은 동작을 야기할 수 있는 잔여 파일, 데이터, 설정 및 속성을 남기지 않고 용이하고 완전하게 제거될 수 있다. 이것은, 제한된 실행 환경이 각각의 드라이버에 의한 배타적인 사용을 위한 스토리지의 개별화된 할당을 제공하기 때문에 가능하다. 드라이버는 여타의 곳에서 데이터 또는 설정을 기입하는 것에 대한 액세스를 갖지 않을 수 있다. 따라서, 드라이버 및 상태를 클리닝 업하는 것은 드라이버와 연관된 할당된 스토리지에 포함된 데이터를 삭제함으로써 용이하게 달성된다.
도 4는 변형 드라이버의 동작이 제어되는 예시적인 절차를 도시하는 흐름도이다. 변형 드라이버와 드라이버 보안 플랫폼과의 연관이 인식된다(블록 402). 예를 들어, 변형 드라이버는 상술한 바와 같이 드라이버 보안 플랫폼(116)에 등록될 수 있다. 드라이버의 동작은 제어되는 방식으로 드라이버 보안 플랫폼(116)을 통해 후속적으로 처리된다. 연관은 드라이버가 지정된 포맷이나 패키지로 구성된 것에 기초하여 설치 시에 확립될 수 있다. 언급한 바와 같이, .appx 포맷은 플랫폼과 드라이버를 연관시키는 데 사용될 수 있는 하나의 적절한 포맷이지만, 다른 파일 유형, 이름 및 식별 정보도 고려된다.
변형 드라이버에 대해 인에이블된 작업 세트가 확인된다(블록 404). 인에이블된 작업 세트는 특정 유형의 드라이버로서의 드라이버의 식별(예를 들어, VPN 대 프린터 대 안티바이러스 등) 및/또는 각각의 특정 드라이버의 개별 식별(예를 들어, 상이한 제조자들/공급자들과 연관된 동일 유형의 드라이버들 간의 구분)에 기초할 수 있다. 따라서, 플랫폼은 각각의 개별 드라이버에 대하여 및/또는 드라이버 유형에 기초하여 지정된 작업 세트를 지원 및 인에이블시킬 수 있다. 작업 세트는 운영 체제가 드라이버를 노출시키고 드라이버를 실행하도록 인에이블시키는 특정 콘트랙트(contract)일 수 있다. 따라서, 소정의 드라이버의 식별 시에, 플랫폼은 드라이버가 수행할 수 있는 작업의 종류를 알고, 이러한 작업을 인에이블시키며, 드라이버가 다른 작업을 수행하는 것을 방지할 수 있다.
특히, 인에이블되는 작업 세트로 변형 드라이버의 동작을 제한시키는 실행 환경이 확립된다(블록 406). 예를 들어, 제한된 실행 환경은 상술한 방식으로 확립될 수 있다. 제한된 실행 환경은 일정한 작업이나 콘트랙트를 인에이블시키지만, 이와 달리 드라이버 보안 플랫폼에 의한 수행을 드라이버가 명시적으로 인가받지 않은 작업을 드라이버가 수행하는 것을 방지하거나 또는 드라이버가 운영 체제 리소스에 액세스하는 것을 방지한다.
그 후, 변형 드라이버의 동작은, 인에이블된 작업 세트를 수행하도록 변형 드라이버를 인보크하는 것과, 드라이버 보안 플랫폼에 의한 인보크가 없을 때 변형 드라이버를 정지시키는 것을 포함하는 실행 환경을 통해 제어된다(블록 408). 다시, 제한된 실행 환경을 통해 실행되는 변형 드라이버는 스스로 작업을 개시할 수 있는 것이 아니라 플랫폼에 의해 인보크된다. 드라이버는 작업을 수행하도록 능동적으로 인보크되고 있지 않을 때 정지 상태로 유지될 수 있다. 이것은 작업을 인에이블시키기 위해 중지 해제되고 그 후 작업의 완료 시에 정지 상태로 복귀되는 백그라운드 프로세스(211)에 의해 발생할 수 있다. 따라서, 드라이버에 의해 수행된 작업은 플랫폼 및/또는 사용자의 지시로 발생한다. 드라이버는 일반적으로 플랫폼에 의해 드라이버에 대해 지정된 것과 다른 작업을 수행할 수 없다. 드라이버는 또한 플랫폼에 의한 호출이 없으면 동작할 수 없는데, 이것은 드라이버가 자유롭게 시스템 리소스 및 배터리 수명을 소비하는 것을 방지한다.
도 5는 변형 드라이버가 온라인 애플리케이션 스토어를 통해 분배되는 예시적인 절차를 도시하는 흐름도이다. 온라인 애플리케이션 스토어에 플러그인을 포함하기 위해 드라이버 보안 플랫폼에 의해 인식되는 애플리케이션 패키지 포맷이 규정된다(블록 502). 예를 들어, 변형 드라이버(114)와 제3 공급자로부터의 다른 코드와 같은 플러그인이 드라이버 보안 플랫폼(116)에 대해 규정된 지정된 포맷을 채용하는 드라이버 패키지(128)에서 인코딩될 수 있다. 개발자는 드라이버 보안 플랫폼(116)을 이용하기 위해 지정된 포맷을 사용할 수 있고, 그에 따라 플랫폼을 통해 개발자들 각자의 코드/드라이버를 처리하기 위한 플랫폼을 시그널링할 수 있다. 드라이버 패키지(128)는 .appx 포맷 또는 다른 지정된 포맷을 사용하여 애플리케이션 스토어 서비스(126)를 통해서와 같이 애플리케이션 시장에서의 포함을 용이하게 하도록 구성될 수 있다.
온라인 애플리케이션 스토어를 통해 플러그인을 다운로드하기 위한 액세스를 인에이블시킨다(블록 504). 그 후, 플러그인은, 클라이언트가 드라이버 보안 플랫폼에 플러그인을 등록하게 하고 플러그인의 동작을 제어하기 위해 제한된 실행 환경을 구현하는 데 효과적인 규정된 포맷으로 클라이언트에 분배된다(블록 506). 애플리케이션 시장에서의 제공물로서의 변형 드라이버(114)의 포함은 드라이버 보안 플랫폼(116)을 통해 획득 가능한 추가적인 보안 조치, 제한 및 성능 이득으로 인해 일부 시행 가능하며, 이는 사용자가 온라인 스토어로부터 이러한 드라이버를 다운로드 및 설치할 가능성을 더 높게 한다. 따라서, 지정된 포맷으로 대응하는 변형 드라이버(114)를 포함하는 드라이버 패키지(128)는 애플리케이션 스토어 서비스(126)를 통해 이용 가능하게 될 수 있다. 드라이버 패키지(128)는 드라이버 보안 플랫폼(116)에 의해 패키지의 인식을 용이하게 하기 위해 적절한 식별 데이터를 포함할 수 있다. 드라이버 보안 플랫폼(116)은 설치 시에 드라이버 패키지(128)를 인식하고 드라이버를 등록하기 위에 여기에 설명된 동작을 수행하고, 제한된 실행 환경을 생성하고, 드라이버에 있는 다양한 제한을 시행하는 것 등을 하도록 구성된다.
일부 예시적인 절차를 고려하여, 하나 이상의 실시예에 따라 다양한 양태를 구현하기 위해 예시적인 시스템 및 디바이스의 설명을 이하 고려한다.
예시적인 시스템 및 디바이스
도 6은 여기에 설명된 다양한 기술을 구현할 수 있는 하나 이상의 컴퓨팅 시스템 및/또는 디바이스를 나타내는 예시적인 컴퓨팅 디바이스(602)를 포함하는 예시적인 시스템(600)을 나타낸다. 컴퓨팅 디바이스(602)는 예를 들어, 서비스 공급자의 서버, 클라이언트와 연관된 디바이스(예를 들어, 클라이언트 디바이스), 온 칩 시스템, 및/또는 임의의 다른 적절한 컴퓨팅 디바이스 또는 컴퓨팅 시스템일 수 있다.
나타낸 바와 같이 예시적인 컴퓨팅 디바이스(602)는 프로세싱 시스템(604), 하나 이상의 컴퓨터 판독 가능 매체(606) 및 서로 통신 가능하게 연결되는 하나 이상의 I/O 인터페이스(608)를 포함한다. 도시되지는 않았지만, 컴퓨팅 디바이스(602)는 다양한 컴포넌트들을 서로 연결시키는 시스템 버스 또는 다른 데이터 및 커맨드 전송 시스템을 추가로 포함할 수 있다. 시스템 버스는 다양한 버스 아키텍처들 중 임의의 것을 이용하는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 범용 직렬 버스 및/또는 프로세서 또는 로컬 버스와 같은 상이한 버스 구조들 중 임의의 하나 또는 조합을 포함할 수 있다. 제어 또는 데이터 라인과 같은 다양한 다른 예도 고려된다.
프로세싱 시스템(604)은 하드웨어를 사용하여 하나 이상의 동작을 수행하는 기능을 나타낸다. 따라서, 프로세싱 시스템(604)은 프로세서, 기능 블록 등으로서 구성될 수 있는 하드웨어 요소(610)를 포함하는 것으로서 나타내어진다. 이것은 하나 이상의 반도체를 사용하여 형성된 애플리케이션 특정 집적 회로 또는 다른 로직 디바이스로서 하드웨어로의 구현을 포함할 수 있다. 하드웨어 요소들(610)은 이들이 형성되는 재료 또는 그 내부에서 채용되는 프로세싱 메커니즘에 의해 한정되지 않는다. 예를 들어, 프로세서는 반도체(들) 및/또는 트랜지스터(예를 들어, 전자 집적 회로(IC))로 이루어질 수 있다. 이러한 문맥에서, 프로세서로 실행가능한 명령어들은 전자적으로 실행가능한 명령어들일 수 있다.
컴퓨터 판독 가능 매체(606)는 메모리/스토리지(612)를 포함하는 것으로 나타내어진다. 메모리/스토리지(612)는 하나 이상의 컴퓨터 판독 가능 매체와 연관된 메모리/스토리지 용량을 나타낸다. 메모리/스토리지(612)는 (랜덤 액세스 메모리(RAM)와 같은) 휘발성 매체 및/또는 (판독 전용 메모리(ROM), 플래시 메모리, 광 디스크, 자기 디스크 등과 같은) 비휘발성 매체를 포함할 수 있다. 메모리/스토리지(612)는 고정형 매체(예를 들어, RAM, ROM, 고정형 하드 드라이브 등)뿐만 아니라, 탈착가능 매체(예를 들어, 플래시 메모리, 탈착가능 하드 디스크, 광 디스크 등)를 포함할 수 있다. 컴퓨터 판독 가능 매체(606)는 추가로 후술하는 바와 같이 다양한 다른 방법으로 구성될 수 있다.
입력/출력 인터페이스(들)(608)는 사용자가 커맨드 및 정보를 컴퓨팅 디바이스(602)에 입력할 수 있게 하고, 또한 정보가 다양한 입력/출력 디바이스를 사용하여 사용자 및/또는 다른 컴포넌트 또는 디바이스에 제시될 수 있게 하는 기능을 나타낸다. 입력 디바이스의 예는 키보드, 커서 제어 디바이스(예를 들어, 마우스), 음성 동작을 위한 마이크로폰, 스캐너, 터치 기능(예를 들어, 물리적 터치를 검출하도록 구성되는 용량성 센서 또는 다른 센서), (예를 들어, 제스처로서 터치를 포함하지 않는 움직임을 검출하기 위해 적외선 주파수와 같은 비가시성 파장 또는 가시성 파장을 채용할 수 있는) 카메라 등을 포함한다. 출력 디바이스의 예는 디스플레이 디바이스(예를 들어, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드, 촉각-반응 디바이스 등을 포함한다. 따라서, 컴퓨팅 디바이스(602)는 사용자 상호 작용을 지원하도록 추가로 후술하는 다양한 방식으로 구성될 수 있다.
다양한 기술들이 소프트웨어, 하드웨어 요소, 또는 프로그램 모듈의 일반적인 문맥에서 여기에 설명될 수 있다. 일반적으로, 이러한 모듈은 특정 작업을 수행하거나 특정 추상화 데이터 유형을 구현하는 루틴, 프로그램, 객체, 요소, 컴포넌트, 데이터 구조 등을 포함한다. 여기에서 사용되는 "모듈", "기능" 및 "컴포넌트"라는 용어는 일반적으로 소프트웨어, 펌웨어, 하드웨어 또는 그 조합을 나타낸다. 여기에 설명된 기술의 특징은 플랫폼 독립적인데, 이것은 기술이 다양한 프로세서를 갖는 다양한 상업용 컴퓨팅 플랫폼 상에서 구현될 수 있음을 의미한다.
설명된 모듈 및 기술들의 구현은 몇몇의 형태의 컴퓨터 판독 가능 매체 상에 저장되거나 또는 이를 통해 송신될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨팅 디바이스(602)에 의해 액세스될 수 있는 다양한 매체를 포함할 수 있다. 한정이 아닌 예로써, 컴퓨터 판독 가능 매체는 "컴퓨터 판독 가능 저장 매체" 및 "통신 매체"를 포함할 수 있다.
"컴퓨터 판독 가능 저장 매체"는 단순한 신호 송신, 반송파 또는 신호 자체와는 달리, 정보의 저장을 가능하게 하는 매체 및/또는 디바이스를 칭한다. 따라서, 컴퓨터 판독 가능 저장 매체는 신호 포함 매체 또는 신호 자체를 포함하지 않는다. 컴퓨터 판독 가능 저장 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 로직 요소/회로 또는 다른 데이터와 같은 정보의 저장에 적절한 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 탈착가능 및 탈착불가능 매체 및/또는 저장 디바이스와 같은 하드웨어를 포함한다. 컴퓨터 판독 가능 저장 매체의 예는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(DVD) 또는 다른 광학 스토리지, 하드 디스크, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스, 또는 다른 저장 디바이스, 유형 매체, 또는 원하는 정보를 저장하는데 적절하고 컴퓨터에 의해 액세스될 수 있는 제조 물품을 포함할 수 있지만, 이에 한정되는 것은 아니다.
"통신 매체"는 네트워크를 통해서와 같이, 컴퓨팅 디바이스(602)의 하드웨어에 명령어를 송신하도록 구성된 신호 포함 매체를 칭한다. 통신 매체는 통상적으로 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파, 데이터 신호 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호 내의 다른 데이터를 포함할 수 있다. 통신 매체는 또한 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내의 정보를 인코딩하는 방식으로 설정되거나 변화된 하나 이상의 특성을 갖는 신호를 의미한다. 한정이 아니라 예로써, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체와, 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다.
상술한 바와 같이, 하드웨어 요소(610) 및 컴퓨터 판독 가능 매체(606)는 여기에 설명되는 기술의 적어도 일부 양태를 구현하기 위해 일부 실시예에서 채용될 수 있는 하드웨어의 형태로 구현되는 명령어, 모듈, 프로그램가능 디바이스 로직 및/또는 고정 디바이스 로직을 나타낸다. 하드웨어 요소는 집적 회로 또는 온 칩 시스템의 컴포넌트들, 애플리케이션 특정 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 복합 프로그램 가능 로직 디바이스(CPLD), 및 실리콘 또는 다른 하드웨어 디바이스에서의 다른 구현을 포함할 수 있다. 이러한 맥락에서, 하드웨어 요소는 실행을 위한 명령어를 저장하는 데 이용되는 하드웨어 요소뿐만 아니라 하드웨어 디바이스, 예를 들어, 상술한 컴퓨터 판독 가능 매체에 의해 구현되는, 명령어, 모듈 및/또는 로직에 의해 규정되는 프로그램 작업을 수행하는 프로세싱 디바이스로서 동작할 수 있다.
상술한 조합은 또한 여기에 설명되는 다양한 기술 및 모듈을 구현하기 위해 채용될 수 있다. 따라서, 운영 체제(110), 애플리케이션(112), 드라이버 보안 플랫폼(116), 및 다른 프로그램 모듈을 포함하는 소프트웨어, 하드웨어 또는 프로그램 모듈은 컴퓨터 판독 가능 저장 매체의 소정의 형태로 및/또는 하나 이상의 하드웨어 요소(610)에 의해 구현되는 하나 이상의 명령어 및/또는 로직으로 구현될 수 있다. 컴퓨팅 디바이스(602)는 소프트웨어 및/또는 하드웨어 모듈에 대응하는 특정 명령어 및/또는 기능을 구현하도록 구성될 수 있다. 따라서, 소프트웨어로서 컴퓨팅 디바이스(602)에 의해 실행 가능한 모듈로서의 모듈의 구현은 적어도 일부 하드웨어로, 예를 들어 컴퓨터 판독 가능 매체 및/또는 프로세싱 시스템의 하드웨어 요소(610)의 사용을 통해 달성될 수 있다. 명령어 및/또는 기능은 여기에 설명된 기술, 모듈 및 예를 구현하기 위해 하나 이상의 제조 물품(예를 들어, 하나 이상의 컴퓨팅 디바이스(602) 및/또는 프로세싱 시스템(604))에 의해 실행 가능/동작 가능할 수 있다.
도 6에 추가로 나타낸 바와 같이, 예시적인 시스템(600)은 퍼스널 컴퓨터(PC), 텔레비전 디바이스 및/또는 모바일 디바이스 상에서 애플리케이션을 구동시키는 경우 끊김 없는 사용자 경험을 위한 유비쿼터스 환경을 가능하게 한다. 애플리케이션을 이용하고, 비디오 게임을 하고, 비디오 시청 등을 하면서 하나의 디바이스로부터 다음 디바이스로 천이할 때 서비스 및 애플리케이션은 공통적인 사용자 경험을 위해 이 세 개의 모든 환경들에서 실질적으로 유사하게 구동된다.
예시적인 시스템(600)에서, 복수의 디바이스가 중앙 컴퓨팅 디바이스를 통해 상호 접속된다. 중앙 컴퓨팅 디바이스는 복수의 디바이스에 대해 로컬일 수 있거나, 복수의 디바이스로부터 원격으로 위치될 수 있다. 일 실시예에서, 중앙 컴퓨팅 디바이스는 네트워크, 인터넷, 또는 다른 데이터 통신 링크를 통해 복수의 디바이스에 접속되는 하나 이상의 서버 컴퓨터의 클라우드일 수 있다.
일 실시예에서, 이 상호 접속 아키텍처는 복수의 디바이스의 사용자에게 공통적이고 끊김 없는 경험을 제공하기 위해 복수의 디바이스들에 걸쳐 전달되는 기능을 가능하게 한다. 복수의 디바이스 각각은 다른 물리적 요건 및 능력을 가질 수 있고, 중앙 컴퓨팅 디바이스는 해당 디바이스에 맞춤화되고 모든 디바이스에도 공통적인 경험을 디바이스에게 전달하는 것을 가능하게 하기 위한 플랫폼을 사용한다. 일 실시예에서, 타겟 디바이스들의 클래스가 생성되고 이러한 경험들은 디바이스들의 일반적 클래스에 맞춤화된다. 디바이스들의 클래스는 물리적 특성, 용도의 유형, 또는 디바이스들의 다른 공통적인 특성들에 의해 규정될 수 있다.
다양한 구현예에서, 컴퓨팅 디바이스(602)는 컴퓨터(614), 모바일(616), 텔레비전(618) 사용에서와 같이 다양한 상이한 구성을 상정할 수 있다. 이러한 구성의 각각은 일반적으로 상이한 구조물들 및 능력들을 가질 수 있는 디바이스들을 포함하며, 이에 따라 컴퓨팅 디바이스(602)는 하나 이상의 상이한 디바이스 클래스들에 따라 구성될 수 있다. 예를 들어, 컴퓨팅 디바이스(602)는 퍼스널 컴퓨터, 데스크톱 컴퓨터, 멀티-스크린 컴퓨터, 랩톱 컴퓨터, 노트북 등을 포함하는 디바이스의 컴퓨터(614) 클래스로서 구현될 수 있다.
컴퓨팅 디바이스(602)는 또한 모바일 폰, 휴대용 음악 플레이어, 휴대용 게이밍 디바이스, 태블릿 컴퓨터, 멀티 스크린 컴퓨터 등과 같은 모바일 디바이스를 포함하는 디바이스의 모바일(616) 클래스로서 구현될 수 있다. 컴퓨팅 디바이스(602)는 또한 평상시의 시청 환경에서 일반적으로 더 큰 스크린에 접속되거나 이를 갖는 디바이스를 포함하는 디바이스의 텔레비전(618) 클래스로서 구현될 수 있다. 이러한 디바이스는 텔레비전, 셋톱 박스, 게임 콘솔 등을 포함한다.
여기에서 설명된 기술은 컴퓨팅 디바이스(602)의 이러한 다양한 구성에 의해 지원될 수 있으며, 여기에 설명된 기술의 특정 예에 한정되지 않는다. 이것은 컴퓨팅 디바이스(602) 상의 드라이버 보안 플랫폼(116)의 포함을 통해 예시된다. 드라이버 보안 플랫폼(116) 및 다른 모듈의 기능은 또한 후술하는 바와 같이 플랫폼(622)을 통해 "클라우드"(620)를 통하는 것과 같이 분배 시스템의 사용을 통해 전부 또는 일부 구현될 수 있다.
클라우드(620)는 리소스(624)에 대한 플랫폼(622)을 포함하고/하거나 이를 나타낸다. 플랫폼(622)은 클라우드(620)의 하드웨어(예를 들어, 서버) 및 소프트웨어 리소스의 기본 기능을 추상화한다. 리소스(624)는 컴퓨팅 디바이스(602)로부터 떨어져 있는 서버 상에서 컴퓨터 프로세싱이 실행되면서 이용될 수 있는 애플리케이션 및/또는 데이터를 포함할 수 있다. 리소스(624)는 또한 셀룰러 또는 Wi-Fi 네트워크와 같은 인터넷 및/또는 가입자 네트워크를 통해 제공되는 서비스를 포함할 수 있다.
플랫폼(622)은 컴퓨팅 디바이스(602)를 다른 컴퓨팅 디바이스에 연결시키기 위해 리소스 및 기능을 추상화할 수 있다. 플랫폼(622)은 또한 플랫폼(622)을 통해 구현되는 리소스(624)에 대한 직면하는 수요에 대한 대응하는 스케일 레벨을 제공하기 위하여 리소스의 스케일을 추상화하는 역할을 할 수 있다. 따라서, 상호 접속된 디바이스 실시예에서, 여기에 설명된 기능의 구현은 시스템(600) 전체에 분산될 수 있다. 예를 들어, 기능이 컴퓨팅 디바이스(602) 상에서뿐만 아니라 클라우드(620)의 기능을 추상화하는 플랫폼(622)을 통해 부분적으로 구현될 수 있다.
결론
본 발명이 구조적 특징 및/또는 방법적인 동작에 특정한 언어로 설명되었지만, 첨부된 청구항에 규정된 본 발명은 기술된 특정의 특징 또는 동작에 반드시 한정되지는 않는 것으로 이해되어야 한다. 오히려, 특정의 특징 및 동작은 청구된 본 발명을 구현하는 예시적인 형태로서 개시된다.

Claims (20)

  1. 컴퓨팅 디바이스에 의해 구현되는 방법에 있어서,
    드라이버 보안 플랫폼과 연관된 지정된 포맷을 갖는 드라이버 패키지에 포함된 변형(transmogrifying) 드라이버를 획득하는 단계;
    상기 드라이버 패키지에 포함된 식별 데이터에 적어도 부분적으로 기초하여 설치시 상기 드라이버 패키지의 상기 지정된 포맷을 인식하는 단계;
    상기 인식에 응답하여, 상기 컴퓨팅 디바이스에 의해 구현되는 상기 드라이버 보안 플랫폼에 상기 변형 드라이버를 등록하는 단계;
    상기 드라이버 보안 플랫폼을 통해 상기 변형 드라이버에 대한 제한된 실행 환경을 인스턴스화(instantiate)하는 단계; 및
    상기 드라이버 보안 플랫폼의 지시(direction)로 하나 이상의 작업(task)을 수행하기 위해 상기 제한된 실행 환경 내에서 상기 변형 드라이버를 실행하는 단계
    를 포함하는 컴퓨팅 디바이스에 의해 구현되는 방법.
  2. 제1항에 있어서,
    상기 변형 드라이버는 사용자 모드에서 실행되는 것인 컴퓨팅 디바이스에 의해 구현되는 방법.
  3. 제1항에 있어서,
    상기 변형 드라이버는 사용자별로 실행되는 것인 컴퓨팅 디바이스에 의해 구현되는 방법.
  4. 제1항에 있어서,
    상기 제한된 실행 환경은, 시스템 리소스들에 대한 상기 변형 드라이버에 의한 액세스를 제한하기 위하여 상기 변형 드라이버를 격리하도록 구성되는 애플리케이션 컨테이너(application container)를 구축하는 것인 컴퓨팅 디바이스에 의해 구현되는 방법.
  5. 제4항에 있어서,
    상기 애플리케이션 컨테이너는 또한, 상기 드라이버 보안 플랫폼과 연관되지 않은 컴포넌트들에 의한 상기 변형 드라이버에 대한 액세스를 거부하도록 구성된 것인 컴퓨팅 디바이스에 의해 구현되는 방법.
  6. 제1항에 있어서,
    상기 제한된 실행 환경은, 작업의 스케줄링이 상기 드라이버 보안 플랫폼에 의해 처리되는 상기 변형 드라이버에 대한 백그라운드 프로세스를 포함한 것인 컴퓨팅 디바이스에 의해 구현되는 방법.
  7. 제1항에 있어서,
    상기 제한된 실행 환경은, 상기 드라이버 보안 플랫폼에 의해 작업을 수행하라는 상기 변형 드라이버의 명시적인 인보크(invocation)의 부재 시에 상기 변형 드라이버를 정지시키도록 구성된 것인 컴퓨팅 디바이스에 의해 구현되는 방법.
  8. 제1항에 있어서,
    상기 제한된 실행 환경은, 사용자 동의에 의존하여 상기 변형 드라이버의 동작들을 선택적으로 인에이블시키도록 구성된 것인 컴퓨팅 디바이스에 의해 구현되는 방법.
  9. 제1항에 있어서,
    상기 변형 드라이버를 획득하는 단계는 네트워크를 통해 서비스 공급자의 애플리케이션 스토어로부터 수행되는 것인 컴퓨팅 디바이스에 의해 구현되는 방법.
  10. 제1항에 있어서,
    상기 변형 드라이버는 데이터를 하나의 형태로부터 다른 형태로 변환시키도록 구성된 것인 컴퓨팅 디바이스에 의해 구현되는 방법.
  11. 제1항에 있어서,
    상기 드라이버 보안 플랫폼은 상기 컴퓨팅 디바이스를 위한 운영체제의 컴포넌트로서 구현된 것인 컴퓨팅 디바이스에 의해 구현되는 방법.
  12. 제1항에 있어서,
    상기 변형 드라이버는 네트워크를 통한 가상 사설 네트워크(virtual private network; VPN) 통신을 위해 패킷을 캡슐화(encapsulate) 및 캡슐화해제(decapsulate)하도록 구성된 VPN 드라이버를 포함한 것인 컴퓨팅 디바이스에 의해 구현되는 방법.
  13. 컴퓨팅 디바이스의 하나 이상의 컴포넌트에 의해 실행될 때, 동작들을 수행하도록 구성된 드라이버 보안 플랫폼을 구현하는 명령어들을 저장한 하나 이상의 컴퓨터 판독가능 저장 매체에 있어서, 상기 동작들은,
    드라이버 보안 플랫폼과 연관된 지정된 포맷을 갖는 드라이버 패키지에 포함된 변형 드라이버를 획득하는 동작;
    상기 드라이버 패키지에 포함된 식별 데이터에 적어도 부분적으로 기초하여 상기 드라이버 보안 플랫폼과의 상기 변형 드라이버의 연관성을 인식하는 동작;
    상기 인식에 응답하여, 상기 드라이버 보안 플랫폼을 통해 상기 변형 드라이버에 대해 인에이블된 작업들의 세트를 확인하는 동작;
    상기 드라이버 보안 플랫폼을 통해 인에이블된 상기 작업들의 세트로 상기 변형 드라이버의 동작을 제한하는 실행 환경을 구축하는 동작; 및
    상기 인에이블된 작업들의 세트로 상기 변형 드라이버의 동작을 제한하는 상기 실행 환경을 통해 상기 변형 드라이버의 동작을 제어하는 동작
    을 포함한 것인 하나 이상의 컴퓨터 판독가능 저장 매체.
  14. 제13항에 있어서,
    상기 변형 드라이버는 가상 사설 네트워크(VPN) 드라이버를 포함하고,
    상기 드라이버 보안 플랫폼을 통해 상기 VPN 드라이버에 대해 인에이블된 상기 작업들의 세트는, 네트워크를 통한 VPN 서버와의 VPN 통신과 연관된 연결, 연결해제, 캡슐화, 캡슐화해제 작업들로 제한되는 것인 하나 이상의 컴퓨터 판독가능 저장 매체.
  15. 제13항에 있어서,
    상기 변형 드라이버의 동작을 제어하는 동작은,
    인에이블된 상기 작업들의 세트를 수행하도록 상기 변형 드라이버를 인보크(invoke)하는 동작; 및
    작업들을 수행하라는 상기 플랫폼에 의한 지시의 부재시 상기 변형 드라이버를 정지시키는 동작
    을 포함한 것인 하나 이상의 컴퓨터 판독가능 저장 매체.
  16. 제13항에 있어서,
    상기 변형 드라이버의 동작을 제어하는 동작은, 상기 드라이버 보안 플랫폼에 의해 중개된(brokered) 백그라운드 작업들로서 상기 작업들의 세트를 스케줄링하는 동작을 포함한 것인 하나 이상의 컴퓨터 판독가능 저장 매체.
  17. 제13항에 있어서,
    상기 실행 환경은 샌드박스화된(sandboxed) 애플리케이션 컨테이너를 포함하고, 상기 샌드박스화된(sandboxed) 애플리케이션 컨테이너는, 사용자 모드에서 사용자별로 실행되고, 상기 인에이블된 작업들의 세트에 대한 것을 제외하고 시스템 액세스를 방지하도록 구성된 낮은 권한 토큰(low privilege token)을 할당받은 것인 하나 이상의 컴퓨터 판독가능 저장 매체.
  18. 컴퓨팅 시스템에 있어서,
    하나 이상의 프로세싱 컴포넌트; 및
    상기 하나 이상의 프로세싱 컴포넌트에 의해 실행될 때, 적어도 하나의 VPN 드라이버의 동작을 제한시키는 드라이버 보안 플랫폼을 구현하는 명령어들을 저장한 하나 이상의 컴퓨터 판독가능 저장 매체
    를 포함하고, 상기 드라이버 보안 플랫폼은 드라이버 관리자 모듈, 백그라운드 관리자, 및 이벤트 브로커를 포함하고,
    상기 드라이버 관리자 모듈은,
    서비스 공급자의 애플리케이션 스토어로부터 네트워크를 통해 상기 VPN 드라이버 - 상기 VPN 드라이버는 상기 드라이버 보안 플랫폼과 연관된 지정된 포맷을 갖는 드라이버 패키지에 포함됨 - 를 획득하고;
    상기 드라이버 패키지에 포함된 식별 데이터 - 상기 식별 데이터는 식별자, 코드, 또는 파일 확장자를 포함함 - 에 적어도 부분적으로 기초하여 설치시 상기 드라이버 패키지의 상기 지정된 포맷을 인식하며;
    상기 인식에 응답하여, 상기 VPN 드라이버를 포함하기 위한 애플리케이션 컨테이너를 구축하고,
    상기 애플리케이션 컨테이너는, 사용자 모드에서 사용자별로 실행되고, 상기 드라이버 보안 플랫폼에 의해 상기 VPN 드라이버에 대해 명시적으로 인에이블된 작업들의 정의된 세트에 대한 것을 제외하고 시스템 액세스를 방지하도록 구성된 낮은 권한 토큰을 할당받으며,
    상기 백그라운드 관리자는,
    상기 VPN 드라이버를 포함한 상기 애플리케이션 컨테이너를 위한 백그라운드 프로세스를 인스턴스화하고;
    상기 백그라운드 프로세스를 통해 상기 작업들의 정의된 세트의 스케줄링을 처리하고;
    상기 작업들의 정의된 세트가 상기 드라이버 관리자 모듈의 지시로 수행될 때 이외에는 상기 백그라운드 프로세스를 정지시키며,
    상기 이벤트 브로커는, 상기 백그라운드 관리자 모듈을 통해 스케줄링된 작업들을 수행하기 위해 상기 VPN 드라이버와 시스템 서비스들 간의 상호작용을 중개하기 위한 이벤트들을 발생시키는 것인 컴퓨팅 시스템.
  19. 제18항에 있어서,
    상기 이벤트 브로커에 의해 발생된 이벤트들은 상기 컴퓨팅 시스템을 통해 노출된 사용자 인터페이스(user interface; UI) 컴포넌트들과의 상호작용들을 중개하기 위한 UI 이벤트들을 포함한 것인, 컴퓨팅 시스템.
  20. 제18항에 있어서,
    상기 드라이버 보안 플랫폼에 의해 상기 VPN 드라이버에 대해 명시적으로 인에이블된 작업들의 정의된 세트는, 네트워크를 통한 VPN 서버와의 VPN 통신과 연관된 연결, 연결해제, 캡슐화, 캡슐화해제 작업들 중 하나 이상을 포함한 것인 컴퓨팅 시스템.
KR1020157036987A 2013-05-31 2013-09-20 사용자 모드에서의 샌드박스 내의 제한된 드라이버 플랫폼의 드라이버 구동 KR102089826B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/906,902 US9075985B2 (en) 2013-05-31 2013-05-31 Restricted transmogrifying driver platform
US13/906,902 2013-05-31
PCT/US2013/060753 WO2014193443A1 (en) 2013-05-31 2013-09-20 Restricted driver platform runs drivers in sandbox in user mode

Publications (2)

Publication Number Publication Date
KR20160015300A KR20160015300A (ko) 2016-02-12
KR102089826B1 true KR102089826B1 (ko) 2020-05-27

Family

ID=49293887

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157036987A KR102089826B1 (ko) 2013-05-31 2013-09-20 사용자 모드에서의 샌드박스 내의 제한된 드라이버 플랫폼의 드라이버 구동

Country Status (11)

Country Link
US (1) US9075985B2 (ko)
EP (1) EP3005208B1 (ko)
JP (1) JP6348173B2 (ko)
KR (1) KR102089826B1 (ko)
CN (1) CN105453097B (ko)
AU (1) AU2013390782B9 (ko)
BR (1) BR112015029296A2 (ko)
CA (1) CA2910252C (ko)
MX (1) MX352776B (ko)
RU (1) RU2646332C2 (ko)
WO (1) WO2014193443A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2525596B (en) 2014-04-28 2021-05-26 Arm Ip Ltd Access control and code scheduling
CN104092691A (zh) * 2014-07-15 2014-10-08 北京奇虎科技有限公司 免root权限的联网防火墙的实现方法及客户端
US10289853B2 (en) 2016-03-31 2019-05-14 Microsoft Technology Licensing, Llc Secure driver platform
US10282210B2 (en) * 2016-06-13 2019-05-07 Huawei Technologies Co., Ltd. System and method for virtual hardware control
US10375111B2 (en) * 2016-11-12 2019-08-06 Microsoft Technology Licensing, Llc Anonymous containers
US10445257B2 (en) * 2017-04-30 2019-10-15 Microsoft Technology Licensing, Llc Execution of subset of driver code in separate protection domain
CN107171894A (zh) * 2017-06-15 2017-09-15 北京奇虎科技有限公司 终端设备、分布式云端检测系统以及样本检测的方法
CN107402784B (zh) * 2017-07-07 2021-06-04 北京小米移动软件有限公司 应用管理方法及应用管理装置
CN108234526B (zh) * 2018-04-12 2020-06-26 厦门安胜网络科技有限公司 一种在沙箱中获取https数据的方法、装置、设备及可读介质
CN109657457B (zh) * 2018-12-27 2021-11-19 北京联创信安科技股份有限公司 一种面向业务环境的智能化内外双层沙箱管理系统
KR20210125330A (ko) 2020-04-08 2021-10-18 삼성전자주식회사 보안 데이터 처리 방법 및 이를 지원하는 전자 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999039254A2 (en) 1998-01-30 1999-08-05 3Com Corporation Providing low level hardware device driver from user mode under multi-tasking operating systems
US20060242270A1 (en) 2005-04-21 2006-10-26 Microsoft Corporation Isolation of user-mode device drivers
US20070088890A1 (en) 2004-11-10 2007-04-19 Microsoft Corporation System and method for interrupt handling

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7508532B2 (en) * 2003-05-20 2009-03-24 Microsoft Corporation Method and system for sandboxing printer drivers
US7457626B2 (en) * 2004-03-19 2008-11-25 Microsoft Corporation Virtual private network structure reuse for mobile computing devices
US7784065B2 (en) * 2005-02-07 2010-08-24 Microsoft Corporation Interface for consistent program interaction with auxiliary computing devices
US7603484B2 (en) * 2005-04-21 2009-10-13 Microsoft Corporation Protocol for communication with a user-mode device driver
US7581051B2 (en) 2005-05-16 2009-08-25 Microsoft Corporation Method for delivering interrupts to user mode drivers
US8659505B2 (en) * 2005-08-31 2014-02-25 Mircosoft Corporation Auxiliary display device driver interface
GB2430523B (en) * 2005-09-22 2010-02-17 Software 2000 Ltd Managing user permissions in a computer system
US8074231B2 (en) * 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US20070101342A1 (en) * 2005-10-31 2007-05-03 Microsoft Corporation Automated device driver management
US7941813B1 (en) 2006-02-17 2011-05-10 Parallels Holdings, Ltd. System and method for using virtual machine for driver installation sandbox
US8281387B2 (en) * 2006-06-30 2012-10-02 Intel Corporation Method and apparatus for supporting a virtual private network architecture on a partitioned platform
CN101478407B (zh) * 2008-01-03 2011-05-25 联想(北京)有限公司 在线安全登录的方法及装置
US8850409B2 (en) * 2008-05-21 2014-09-30 Optumsoft, Inc. Notification-based constraint set translation to imperative execution
US8429741B2 (en) 2008-08-29 2013-04-23 Google, Inc. Altered token sandboxing
US8381288B2 (en) 2008-09-30 2013-02-19 Intel Corporation Restricted component access to application memory
US9262628B2 (en) 2009-09-11 2016-02-16 Empire Technology Development Llc Operating system sandbox
US8775802B1 (en) * 2009-10-23 2014-07-08 Secure Vector Computer security system and method
US9015710B2 (en) * 2011-04-12 2015-04-21 Pivotal Software, Inc. Deployment system for multi-node applications
US20130067531A1 (en) * 2011-09-12 2013-03-14 Microsoft Corporation Access Brokering Based on Declarations and Consent

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999039254A2 (en) 1998-01-30 1999-08-05 3Com Corporation Providing low level hardware device driver from user mode under multi-tasking operating systems
US20070088890A1 (en) 2004-11-10 2007-04-19 Microsoft Corporation System and method for interrupt handling
US20060242270A1 (en) 2005-04-21 2006-10-26 Microsoft Corporation Isolation of user-mode device drivers

Also Published As

Publication number Publication date
CA2910252A1 (en) 2014-12-04
EP3005208B1 (en) 2019-01-02
CN105453097B (zh) 2018-05-29
AU2013390782B2 (en) 2019-06-20
CA2910252C (en) 2020-09-08
JP2016526226A (ja) 2016-09-01
MX2015016351A (es) 2016-04-13
WO2014193443A1 (en) 2014-12-04
RU2646332C2 (ru) 2018-03-02
AU2013390782A1 (en) 2015-11-12
JP6348173B2 (ja) 2018-06-27
EP3005208A1 (en) 2016-04-13
US9075985B2 (en) 2015-07-07
RU2015150949A (ru) 2017-06-01
CN105453097A (zh) 2016-03-30
US20140359706A1 (en) 2014-12-04
AU2013390782B9 (en) 2019-07-04
MX352776B (es) 2017-12-07
KR20160015300A (ko) 2016-02-12
BR112015029296A2 (pt) 2017-07-25

Similar Documents

Publication Publication Date Title
KR102089826B1 (ko) 사용자 모드에서의 샌드박스 내의 제한된 드라이버 플랫폼의 드라이버 구동
EP3568789B1 (en) Signature verification of field-programmable gate array programs
CN110199271B (zh) 用于现场可编程门阵列虚拟化的方法和设备
US9471288B2 (en) Compile based obfuscation
JP6397500B2 (ja) 仮想マシン・マネージャーによって支援される選択的コード完全性強制
TWI420338B (zh) 安全之瀏覽器基礎應用程式
US11048544B2 (en) Cloud resource credential provisioning for services running in virtual machines and containers
US20180096113A1 (en) Content Protection for a Screen Sharing Experience
US20190310882A1 (en) Multiple application instances in operating systems that utilize a single process for application execution
US10303462B2 (en) Windows support of a pluggable ecosystem for universal windows application stores
US20190266338A1 (en) Electronic device and control method therefor
US20180300160A1 (en) Host and Component Relationship between Applications
US11082491B2 (en) Propagating origin information for applications during application installation
Tögl et al. A path towards ubiquitous protection of media
Zamani et al. Android Basic Architecture including Operating System using their Application

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant